Commit 3190ded1 authored by hongguangwu's avatar hongguangwu

1.7.21-0申报

parent ae16107d
...@@ -65,13 +65,30 @@ public interface TSalaryZeroMapper extends BaseMapper<TSalaryZero> { ...@@ -65,13 +65,30 @@ public interface TSalaryZeroMapper extends BaseMapper<TSalaryZero> {
**/ **/
void createSalaryZeroYear(@Param("tableName") String tableName); void createSalaryZeroYear(@Param("tableName") String tableName);
// 自动创建每月的0申报视图(1月创建含去年12月的计税月份)(2月更新成当年的上月的计税月份) // 0:自动清理临时表
void createOrUpdateViewSalaryZeroYear(@Param("viewYearName") String viewYearName, @Param("tableNameOrLastTable") String tableNameOrLastTable); void clearTempZeroYear();
// 自动创建每日的0申报视图(1月创建含去年12月的计税月份)(2月更新成当年的上月的计税月份) // 1:自动创建临时表(1月创建含去年12月的计税月份)(2月更新成当年的上月的计税月份)
void createOrUpdateViewSalaryZeroDay(@Param("viewDayName") String viewDayName, @Param("tableName") String tableName, @Param("tableNameOrLastTable") String tableNameOrLastTable); void createTempZeroYearView(@Param("viewYearName") String viewYearName);
void createTempZeroYear(@Param("viewYearName") String viewYearName);
// 2:更新减除费用与计税月
void updateTempZeroYear(@Param("tableNameOrLastTable") String tableNameOrLastTable);
// 3:复制到0申报表
void insertIntoSalaryZeroYear(@Param("tableName") String tableName);
// 0:自动清理临时表Day
void clearTempZeroDay();
// 1:自动创建临时表(1月创建含去年12月的计税月份)(2月更新成当年的上月的计税月份)
void createTempZeroDayView(@Param("viewDayName") String viewDayName);
void createTempZeroDay(@Param("viewDayName") String viewDayName);
// 2.1:将已存在月度表的数据清理掉
void deleteCurTempZeroDay();
// 2.2:将已存在报账的数据更新掉
void updateTempZeroDayDelete();
// 2.3:更新减除费用与计税月
void updateTempZeroDay(@Param("tableNameOrLastTable") String tableNameOrLastTable);
// 3:复制到0申报表
void insertIntoSalaryZeroDay(@Param("tableName") String tableName);
// 每月1号生成当月0申报表
void insertIntoSalaryZeroYear(@Param("tableName") String tableName, @Param("viewYearName") String viewYearName);
// 每天23点生成当天0申报表 // 每天23点生成当天0申报表
void insertIntoSalaryZeroNowDay(@Param("tableName") String tableName, @Param("viewDayName") String viewDayName); void insertIntoSalaryZeroNowDay(@Param("tableName") String tableName, @Param("viewDayName") String viewDayName);
......
...@@ -592,32 +592,20 @@ public class TSalaryZeroServiceImpl extends ServiceImpl<TSalaryZeroMapper, TSala ...@@ -592,32 +592,20 @@ public class TSalaryZeroServiceImpl extends ServiceImpl<TSalaryZeroMapper, TSala
tableNameOrLastTable = SalaryConstants.TABLE_NAME_PRE + lastYear; tableNameOrLastTable = SalaryConstants.TABLE_NAME_PRE + lastYear;
// 创建0申报表 // 创建0申报表
baseMapper.createSalaryZeroYear(tableName); baseMapper.createSalaryZeroYear(tableName);
// 1:核心逻辑:自动创建每月的0申报视图(1月创建含去年12月的计税月份)(2月更新成当年的上月的计税月份)
baseMapper.createOrUpdateViewSalaryZeroYear(viewYearName, tableNameOrLastTable);
} else if (month == CommonConstants.TWO_INT) {
// 1:核心逻辑:自动创建每月的0申报视图(1月创建含去年12月的计税月份)(2月更新成当年的上月的计税月份)
baseMapper.createOrUpdateViewSalaryZeroYear(viewYearName, tableNameOrLastTable);
} }
try { TSalaryZeroSearchVo searchVo = new TSalaryZeroSearchVo();
TSalaryZeroSearchVo searchVo = new TSalaryZeroSearchVo(); searchVo.setSettleMonth(DateUtil.addMonth(0));
searchVo.setSettleMonth(DateUtil.addMonth(0)); long count = baseMapper.getTSalaryZeroCount(tableName, searchVo);
long count = baseMapper.getTSalaryZeroCount(tableName, searchVo); if (count == CommonConstants.ZERO_INT) {
if (count == CommonConstants.ZERO_INT) { // 0:自动清理临时表
// 2:核心生成数据:生成月度数据 baseMapper.clearTempZeroYear();
baseMapper.insertIntoSalaryZeroYear(tableName, viewYearName); // 1:核心逻辑:自动创建临时表(1月创建含去年12月的计税月份)(其他月更新成当年的上月的计税月份)
} baseMapper.createTempZeroYearView(viewYearName);
} catch (Exception e) { baseMapper.createTempZeroYear(viewYearName);
// 保险机制,假如没有生成表与视图,则生成一份再生成数据 // 2:更新减除费用与计税月
baseMapper.createSalaryZeroYear(tableName); baseMapper.updateTempZeroYear(tableNameOrLastTable);
// 1:核心逻辑:自动创建每月的0申报视图(1月创建含去年12月的计税月份)(2月更新成当年的上月的计税月份) // 3:同步到目标表
baseMapper.createOrUpdateViewSalaryZeroYear(viewYearName, tableNameOrLastTable); baseMapper.insertIntoSalaryZeroYear(tableName);
// 2:核心生成数据:生成月度数据
TSalaryZeroSearchVo searchVo = new TSalaryZeroSearchVo();
searchVo.setSettleMonth(DateUtil.addMonth(0));
long count = baseMapper.getTSalaryZeroCount(tableName, searchVo);
if (count == CommonConstants.ZERO_INT) {
baseMapper.insertIntoSalaryZeroYear(tableName, viewYearName);
}
} }
} }
...@@ -636,24 +624,25 @@ public class TSalaryZeroServiceImpl extends ServiceImpl<TSalaryZeroMapper, TSala ...@@ -636,24 +624,25 @@ public class TSalaryZeroServiceImpl extends ServiceImpl<TSalaryZeroMapper, TSala
if (month == CommonConstants.ONE_INT) { if (month == CommonConstants.ONE_INT) {
int lastYear = year - 1; int lastYear = year - 1;
tableNameOrLastTable = SalaryConstants.TABLE_NAME_PRE + lastYear; tableNameOrLastTable = SalaryConstants.TABLE_NAME_PRE + lastYear;
} if (day == CommonConstants.ONE_INT) {
if (day == CommonConstants.ONE_INT) {
if (month == CommonConstants.ONE_INT) {
baseMapper.createSalaryZeroYear(tableName); baseMapper.createSalaryZeroYear(tableName);
} }
// 1:核心逻辑
baseMapper.createOrUpdateViewSalaryZeroDay(viewDayName, tableName, tableNameOrLastTable);
}
// 2:核心生成数据(今天的数据)
try {
baseMapper.insertIntoSalaryZeroNowDay(tableName, viewDayName);
} catch (Exception e) {
// 保险机制,假如没有生成表与视图,则生成一份再生成数据
baseMapper.createSalaryZeroYear(tableName);
// 1:核心逻辑
baseMapper.createOrUpdateViewSalaryZeroDay(viewDayName, tableName, tableNameOrLastTable);
baseMapper.insertIntoSalaryZeroNowDay(tableName, viewDayName);
} }
// 0:自动清理临时表
baseMapper.clearTempZeroDay();
// 1:核心逻辑:自动创建临时表(1月创建含去年12月的计税月份)(其他月更新成当年的上月的计税月份)
baseMapper.createTempZeroDayView(viewDayName);
baseMapper.createTempZeroDay(viewDayName);
// 2.1:将已存在的数据清理掉
baseMapper.deleteCurTempZeroDay();
// 2.2:将已存在报账的数据更新掉
baseMapper.updateTempZeroDayDelete();
// 2.3:更新减除费用与计税月
baseMapper.updateTempZeroDay(tableNameOrLastTable);
// 3:同步到目标表
baseMapper.insertIntoSalaryZeroDay(tableName);
} }
......
...@@ -240,11 +240,23 @@ ...@@ -240,11 +240,23 @@
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='薪资0申报表' ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='薪资0申报表'
</update> </update>
<!-- 自动创建每月的0申报视图(1月创建含去年12月的计税月份)(2月更新成当年的上月的计税月份) --> <update id="clearTempZeroYear" statementType="STATEMENT">
<update id="createOrUpdateViewSalaryZeroYear" statementType="STATEMENT"> TRUNCATE t_salary_zero_tmp
</update>
<update id="clearTempZeroDay" statementType="STATEMENT">
TRUNCATE t_salary_zero_day_tmp
</update>
<update id="deleteCurTempZeroDay" statementType="STATEMENT">
DELETE d
FROM t_salary_zero_day_tmp d
INNER JOIN t_salary_zero_tmp t
ON t.EMP_IDCARD = d.EMP_IDCARD
AND t.INVOICE_TITLE = d.INVOICE_TITLE
</update>
<!-- 自动创建临时表(1月创建含去年12月的计税月份)(2月更新成当年的上月的计税月份) (不含减除费用与)-->
<update id="createTempZeroYearView" statementType="STATEMENT">
CREATE OR REPLACE VIEW ${viewYearName} AS CREATE OR REPLACE VIEW ${viewYearName} AS
select * FROM ( SELECT
SELECT
REPLACE(UUID(),'-','') ID, REPLACE(UUID(),'-','') ID,
ep.EMP_NAME, ep.EMP_NAME,
ep.EMP_IDCARD, ep.EMP_IDCARD,
...@@ -254,8 +266,8 @@ ...@@ -254,8 +266,8 @@
ep.DEPT_NO, ep.DEPT_NO,
DATE_FORMAT(now(),'%Y%m') as SETTLE_MONTH, DATE_FORMAT(now(),'%Y%m') as SETTLE_MONTH,
d.INVOICE_TITLE_SALARY as INVOICE_TITLE, -- 需要根据项目关联的实际封面抬头调整 d.INVOICE_TITLE_SALARY as INVOICE_TITLE, -- 需要根据项目关联的实际封面抬头调整
if(DATE_FORMAT(now(),'%m')='01',5000,ifnull(a.COST_REDUCTION,ifnull(z.COST_REDUCTION,0)) + 5000) as COST_REDUCTION, 0 as COST_REDUCTION,
ifnull(a.TAX_MONTH,ifnull(z.TAX_MONTH,DATE_FORMAT(now(),'%Y%m'))) as TAX_MONTH, '200001' as TAX_MONTH,
'1' as DATA_SOURCE, -- 1:项目 '1' as DATA_SOURCE, -- 1:项目
NULL as IMPORTER_NAME, NULL as IMPORTER_NAME,
0 as DELETE_FLAG, 0 as DELETE_FLAG,
...@@ -263,10 +275,9 @@ ...@@ -263,10 +275,9 @@
FROM mvp_archives.t_employee_project ep FROM mvp_archives.t_employee_project ep
left join mvp_archives.t_employee_info e on e.EMP_IDCARD=ep.EMP_IDCARD left join mvp_archives.t_employee_info e on e.EMP_IDCARD=ep.EMP_IDCARD
left join mvp_archives.t_settle_domain d on d.id=ep.DEPT_ID left join mvp_archives.t_settle_domain d on d.id=ep.DEPT_ID
LEFT JOIN mvp_salary.t_salary_account a on a.EMP_IDCARD = ep.EMP_IDCARD and a.DELETE_FLAG = 0 and a.INVOICE_TITLE=d.INVOICE_TITLE_SALARY and a.SETTLEMENT_MONTH = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y%m') WHERE ep.PROJECT_STATUS =0 -- 0草稿、1已审核
LEFT JOIN ${tableNameOrLastTable} z on z.EMP_IDCARD = ep.EMP_IDCARD and z.DELETE_FLAG = 0 and z.INVOICE_TITLE=d.INVOICE_TITLE_SALARY and z.SETTLE_MONTH = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y%m') AND ep.DELETE_FLAG = '0' and d.INVOICE_TITLE_SALARY is not null and d.INVOICE_TITLE_SALARY != ''
WHERE ep.PROJECT_STATUS IN (0, 1) -- 0草稿、1已审核 GROUP BY ep.EMP_IDCARD,d.INVOICE_TITLE_SALARY
AND ep.DELETE_FLAG = '0' AND ep.PROJECT_STATUS = 0 and d.INVOICE_TITLE_SALARY is not null and d.INVOICE_TITLE_SALARY != ''
union ALL union ALL
SELECT REPLACE(UUID(),'-','') ID,id.EMP_NAME, SELECT REPLACE(UUID(),'-','') ID,id.EMP_NAME,
id.EMP_IDCARD_NO as EMP_IDCARD, id.EMP_IDCARD_NO as EMP_IDCARD,
...@@ -276,16 +287,14 @@ ...@@ -276,16 +287,14 @@
id.DEPT_NO, id.DEPT_NO,
DATE_FORMAT(now(),'%Y%m') as SETTLE_MONTH, DATE_FORMAT(now(),'%Y%m') as SETTLE_MONTH,
d.INVOICE_TITLE_SALARY as INVOICE_TITLE, -- 需要根据项目关联的实际封面抬头调整 d.INVOICE_TITLE_SALARY as INVOICE_TITLE, -- 需要根据项目关联的实际封面抬头调整
if(DATE_FORMAT(now(),'%m')='01',5000,ifnull(a.COST_REDUCTION,ifnull(z.COST_REDUCTION,0)) + 5000) as COST_REDUCTION, 0 as COST_REDUCTION,
ifnull(a.TAX_MONTH,ifnull(z.TAX_MONTH,DATE_FORMAT(now(),'%Y%m'))) as TAX_MONTH, '200001' as TAX_MONTH,
'2' as DATA_SOURCE, -- 2:商险 '2' as DATA_SOURCE, -- 2:商险
NULL as IMPORTER_NAME, NULL as IMPORTER_NAME,
0 as DELETE_FLAG, 0 as DELETE_FLAG,
NOW() as CREATE_TIME NOW() as CREATE_TIME
FROM mvp_insurances.t_insurance_detail id FROM mvp_insurances.t_insurance_detail id
left join mvp_archives.t_settle_domain d on d.id=id.DEPT_ID left join mvp_archives.t_settle_domain d on d.id=id.DEPT_ID
LEFT JOIN mvp_salary.t_salary_account a on a.EMP_IDCARD = id.EMP_IDCARD_NO and a.DELETE_FLAG = 0 and a.INVOICE_TITLE=d.INVOICE_TITLE_SALARY and a.SETTLEMENT_MONTH = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y%m')
LEFT JOIN ${tableNameOrLastTable} z on z.EMP_IDCARD = id.EMP_IDCARD_NO and z.DELETE_FLAG = 0 and z.INVOICE_TITLE=d.INVOICE_TITLE_SALARY and z.SETTLE_MONTH = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y%m')
WHERE id.BUY_HANDLE_STATUS = 3 -- 已投保 WHERE id.BUY_HANDLE_STATUS = 3 -- 已投保
AND id.IS_EFFECT = 0 -- 有效 AND id.IS_EFFECT = 0 -- 有效
AND id.IS_OVERDUE = 0 -- 未过期 AND id.IS_OVERDUE = 0 -- 未过期
...@@ -294,20 +303,24 @@ ...@@ -294,20 +303,24 @@
AND NOT EXISTS ( AND NOT EXISTS (
SELECT 1 SELECT 1
FROM mvp_archives.t_employee_project ep2 FROM mvp_archives.t_employee_project ep2
WHERE ep2.EMP_IDCARD = id.EMP_IDCARD_NO left join mvp_archives.t_settle_domain d2 on d2.id=ep2.DEPT_ID
AND ep2.PROJECT_STATUS IN (0, 1) AND ep2.DELETE_FLAG = '0' WHERE ep2.EMP_IDCARD = id.EMP_IDCARD_NO and d2.INVOICE_TITLE_SALARY=d.INVOICE_TITLE_SALARY
AND ep2.PROJECT_STATUS = 0 AND ep2.PROJECT_STATUS =0 AND ep2.DELETE_FLAG = '0'
) )
) a GROUP BY id.EMP_IDCARD_NO,d.INVOICE_TITLE_SALARY
GROUP BY a.EMP_IDCARD,a.INVOICE_TITLE </update>
<!-- 自动创建临时表(1月创建含去年12月的计税月份)(2月更新成当年的上月的计税月份) (不含减除费用与)-->
<update id="createTempZeroYear" statementType="STATEMENT">
insert into t_salary_zero_tmp ( select * FROM ${viewYearName} )
</update> </update>
<!-- 自动创建每日的0申报视图(1月创建含去年12月的计税月份)(2月更新成当年的上月的计税月份) --> <!-- 自动创建临时表(1月创建含去年12月的计税月份)(2月更新成当年的上月的计税月份) (不含减除费用与)-->
<update id="createOrUpdateViewSalaryZeroDay" statementType="STATEMENT"> <update id="createTempZeroDayView" statementType="STATEMENT">
CREATE OR REPLACE VIEW ${viewDayName} AS CREATE OR REPLACE VIEW ${viewDayName} AS
select * FROM ( SELECT
SELECT REPLACE(UUID(),'-','') ID,
REPLACE(UUID(),'-','') ID,ep.EMP_NAME, ep.EMP_NAME,
ep.EMP_IDCARD, ep.EMP_IDCARD,
if(length(e.EMP_PHONE)=11,e.EMP_PHONE,null) EMP_PHONE, if(length(e.EMP_PHONE)=11,e.EMP_PHONE,null) EMP_PHONE,
ep.DEPT_ID, ep.DEPT_ID,
...@@ -315,23 +328,21 @@ ...@@ -315,23 +328,21 @@
ep.DEPT_NO, ep.DEPT_NO,
DATE_FORMAT(now(),'%Y%m') as SETTLE_MONTH, DATE_FORMAT(now(),'%Y%m') as SETTLE_MONTH,
d.INVOICE_TITLE_SALARY as INVOICE_TITLE, -- 需要根据项目关联的实际封面抬头调整 d.INVOICE_TITLE_SALARY as INVOICE_TITLE, -- 需要根据项目关联的实际封面抬头调整
if(DATE_FORMAT(now(),'%m')='01',5000,ifnull(a.COST_REDUCTION,ifnull(z.COST_REDUCTION,0)) + 5000) as COST_REDUCTION, 0 as COST_REDUCTION,
ifnull(a.TAX_MONTH,ifnull(z.TAX_MONTH,DATE_FORMAT(now(),'%Y%m'))) as TAX_MONTH, '200001' as TAX_MONTH,
'1' as DATA_SOURCE, -- 1:项目 '1' as DATA_SOURCE, -- 1:项目
NULL as IMPORTER_NAME, NULL as IMPORTER_NAME,
if(ac.id is not null,2,0) as DELETE_FLAG, 0 as DELETE_FLAG,
NOW() as CREATE_TIME NOW() as CREATE_TIME
FROM mvp_archives.t_employee_project ep FROM mvp_archives.t_employee_project ep
left join mvp_archives.t_employee_info e on e.EMP_IDCARD=ep.EMP_IDCARD left join mvp_archives.t_employee_info e on e.EMP_IDCARD=ep.EMP_IDCARD
left join mvp_archives.t_settle_domain d on d.id=ep.DEPT_ID left join mvp_archives.t_settle_domain d on d.id=ep.DEPT_ID
LEFT JOIN mvp_salary.t_salary_account a on a.EMP_IDCARD = ep.EMP_IDCARD and a.DELETE_FLAG = 0 and a.INVOICE_TITLE=d.INVOICE_TITLE_SALARY and a.SETTLEMENT_MONTH = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y%m') WHERE ep.PROJECT_STATUS =0 -- 0草稿、1已审核
LEFT JOIN ${tableNameOrLastTable} z on z.EMP_IDCARD = ep.EMP_IDCARD and z.DELETE_FLAG = 0 and z.INVOICE_TITLE=d.INVOICE_TITLE_SALARY and z.SETTLE_MONTH = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y%m') AND ep.DELETE_FLAG = '0' and d.INVOICE_TITLE_SALARY is not null and d.INVOICE_TITLE_SALARY != ''
LEFT JOIN mvp_salary.t_salary_account ac on ac.EMP_IDCARD = ep.EMP_IDCARD and ac.DELETE_FLAG = 0 and ac.INVOICE_TITLE=d.INVOICE_TITLE_SALARY and ac.SETTLEMENT_MONTH = DATE_FORMAT(now(),'%Y%m') AND DATE_FORMAT(ep.UPDATE_TIME,'%Y%m%d') = DATE_FORMAT(NOW(), '%Y%m%d')
LEFT JOIN ${tableName} zc on zc.EMP_IDCARD = ep.EMP_IDCARD and zc.DELETE_FLAG in (0,2) and zc.INVOICE_TITLE=d.INVOICE_TITLE_SALARY and zc.SETTLE_MONTH = DATE_FORMAT(now(),'%Y%m')
WHERE ep.PROJECT_STATUS IN (0, 1) -- 0草稿、1已审核
AND ep.DELETE_FLAG = '0' AND ep.PROJECT_STATUS = 0 GROUP BY ep.EMP_IDCARD,d.INVOICE_TITLE_SALARY
AND DATE_FORMAT(ep.UPDATE_TIME,'%Y%m%d') = DATE_FORMAT(NOW(), '%Y%m%d')
AND zc.id is null and d.INVOICE_TITLE_SALARY is not null and d.INVOICE_TITLE_SALARY != ''
union ALL union ALL
SELECT REPLACE(UUID(),'-','') ID,id.EMP_NAME, SELECT REPLACE(UUID(),'-','') ID,id.EMP_NAME,
id.EMP_IDCARD_NO as EMP_IDCARD, id.EMP_IDCARD_NO as EMP_IDCARD,
...@@ -341,18 +352,14 @@ ...@@ -341,18 +352,14 @@
id.DEPT_NO, id.DEPT_NO,
DATE_FORMAT(now(),'%Y%m') as SETTLE_MONTH, DATE_FORMAT(now(),'%Y%m') as SETTLE_MONTH,
d.INVOICE_TITLE_SALARY as INVOICE_TITLE, -- 需要根据项目关联的实际封面抬头调整 d.INVOICE_TITLE_SALARY as INVOICE_TITLE, -- 需要根据项目关联的实际封面抬头调整
if(DATE_FORMAT(now(),'%m')='01',5000,ifnull(a.COST_REDUCTION,ifnull(z.COST_REDUCTION,0)) + 5000) as COST_REDUCTION, 0 as COST_REDUCTION,
ifnull(a.TAX_MONTH,ifnull(z.TAX_MONTH,DATE_FORMAT(now(),'%Y%m'))) as TAX_MONTH, '200001' as TAX_MONTH,
'2' as DATA_SOURCE, -- 2:商险 '2' as DATA_SOURCE, -- 2:商险
NULL as IMPORTER_NAME, NULL as IMPORTER_NAME,
if(ac.id is not null,2,0) as DELETE_FLAG, 0 as DELETE_FLAG,
NOW() as CREATE_TIME NOW() as CREATE_TIME
FROM mvp_insurances.t_insurance_detail id FROM mvp_insurances.t_insurance_detail id
left join mvp_archives.t_settle_domain d on d.id=id.DEPT_ID left join mvp_archives.t_settle_domain d on d.id=id.DEPT_ID
LEFT JOIN mvp_salary.t_salary_account a on a.EMP_IDCARD = id.EMP_IDCARD_NO and a.DELETE_FLAG = 0 and a.INVOICE_TITLE=d.INVOICE_TITLE_SALARY and a.SETTLEMENT_MONTH = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y%m')
LEFT JOIN ${tableNameOrLastTable} z on z.EMP_IDCARD = id.EMP_IDCARD_NO and z.DELETE_FLAG = 0 and z.INVOICE_TITLE=d.INVOICE_TITLE_SALARY and z.SETTLE_MONTH = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y%m')
LEFT JOIN mvp_salary.t_salary_account ac on ac.EMP_IDCARD = id.EMP_IDCARD_NO and ac.DELETE_FLAG = 0 and ac.INVOICE_TITLE=d.INVOICE_TITLE_SALARY and ac.SETTLEMENT_MONTH = DATE_FORMAT(now(),'%Y%m')
LEFT JOIN ${tableName} zc on zc.EMP_IDCARD = id.EMP_IDCARD_NO and zc.DELETE_FLAG in (0,2) and zc.INVOICE_TITLE=d.INVOICE_TITLE_SALARY and zc.SETTLE_MONTH = DATE_FORMAT(now(),'%Y%m')
WHERE id.BUY_HANDLE_STATUS = 3 -- 已投保 WHERE id.BUY_HANDLE_STATUS = 3 -- 已投保
AND id.IS_EFFECT = 0 -- 有效 AND id.IS_EFFECT = 0 -- 有效
AND id.IS_OVERDUE = 0 -- 未过期 AND id.IS_OVERDUE = 0 -- 未过期
...@@ -361,19 +368,53 @@ ...@@ -361,19 +368,53 @@
AND NOT EXISTS ( AND NOT EXISTS (
SELECT 1 SELECT 1
FROM mvp_archives.t_employee_project ep2 FROM mvp_archives.t_employee_project ep2
WHERE ep2.EMP_IDCARD = id.EMP_IDCARD_NO left join mvp_archives.t_settle_domain d2 on d2.id=ep2.DEPT_ID
AND ep2.PROJECT_STATUS IN (0, 1) AND ep2.DELETE_FLAG = '0' WHERE ep2.EMP_IDCARD = id.EMP_IDCARD_NO and d2.INVOICE_TITLE_SALARY=d.INVOICE_TITLE_SALARY
AND ep2.PROJECT_STATUS = 0 AND ep2.PROJECT_STATUS =0 AND ep2.DELETE_FLAG = '0'
) )
AND zc.id is null AND DATE_FORMAT(id.UPDATE_TIME,'%Y%m%d') = DATE_FORMAT(NOW(), '%Y%m%d')
AND DATE_FORMAT(id.UPDATE_TIME,'%Y%m%d') = DATE_FORMAT(NOW(), '%Y%m%d') GROUP BY id.EMP_IDCARD_NO,d.INVOICE_TITLE_SALARY
) a </update>
GROUP BY a.EMP_IDCARD,a.INVOICE_TITLE
<!-- 自动创建临时表(1月创建含去年12月的计税月份)(2月更新成当年的上月的计税月份) (不含减除费用与)-->
<update id="createTempZeroDay" statementType="STATEMENT">
insert into t_salary_zero_day_tmp ( select * FROM ${viewDayName} )
</update>
<!-- 自动创建临时表(1月创建含去年12月的计税月份)(2月更新成当年的上月的计税月份) (不含减除费用与)-->
<update id="updateTempZeroYear" statementType="STATEMENT">
update t_salary_zero_tmp t
LEFT JOIN mvp_salary.t_salary_account a on a.EMP_IDCARD = t.EMP_IDCARD and a.DELETE_FLAG = 0 and a.INVOICE_TITLE=t.INVOICE_TITLE and a.SETTLEMENT_MONTH = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y%m')
LEFT JOIN ${tableNameOrLastTable} z on z.EMP_IDCARD = t.EMP_IDCARD and z.DELETE_FLAG = 0 and z.INVOICE_TITLE=t.INVOICE_TITLE and z.SETTLE_MONTH = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y%m')
set t.COST_REDUCTION=if(DATE_FORMAT(now(),'%m')='01',5000,ifnull(a.COST_REDUCTION,ifnull(z.COST_REDUCTION,0)) + 5000)
,t.TAX_MONTH =ifnull(a.TAX_MONTH,ifnull(z.TAX_MONTH,DATE_FORMAT(now(),'%Y%m')))
</update>
<!-- 自动创建临时表(1月创建含去年12月的计税月份)(2月更新成当年的上月的计税月份) (不含减除费用与)-->
<update id="updateTempZeroDay" statementType="STATEMENT">
update t_salary_zero_day_tmp t
LEFT JOIN mvp_salary.t_salary_account a on a.EMP_IDCARD = t.EMP_IDCARD and a.DELETE_FLAG = 0 and a.INVOICE_TITLE=t.INVOICE_TITLE and a.SETTLEMENT_MONTH = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y%m')
LEFT JOIN ${tableNameOrLastTable} z on z.EMP_IDCARD = t.EMP_IDCARD and z.DELETE_FLAG = 0 and z.INVOICE_TITLE=t.INVOICE_TITLE and z.SETTLE_MONTH = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y%m')
set t.COST_REDUCTION=if(DATE_FORMAT(now(),'%m')='01',5000,ifnull(a.COST_REDUCTION,ifnull(z.COST_REDUCTION,0)) + 5000)
,t.TAX_MONTH =ifnull(a.TAX_MONTH,ifnull(z.TAX_MONTH,DATE_FORMAT(now(),'%Y%m')))
</update>
<update id="updateTempZeroDayDelete" statementType="STATEMENT">
update t_salary_zero_day_tmp t
LEFT JOIN mvp_salary.t_salary_account ac on ac.EMP_IDCARD = t.EMP_IDCARD and ac.DELETE_FLAG = 0 and ac.INVOICE_TITLE=t.INVOICE_TITLE and ac.SETTLEMENT_MONTH = DATE_FORMAT(now(),'%Y%m')
set t.DELETE_FLAG=2 where ac.id is not null
</update> </update>
<!-- 插入0申报表 --> <!-- 插入0申报表 -->
<insert id="insertIntoSalaryZeroYear"> <insert id="insertIntoSalaryZeroYear">
insert into ${tableName} ( select * FROM ${viewYearName} ) insert into ${tableName}
select * from t_salary_zero_tmp
</insert>
<!-- 插入0申报表 -->
<insert id="insertIntoSalaryZeroDay">
insert into ${tableName}
select * from t_salary_zero_day_tmp
</insert> </insert>
<!-- 插入0申报表 --> <!-- 插入0申报表 -->
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment