三表一册生成修改

This commit is contained in:
方亮 2026-01-04 15:16:36 +08:00
parent cf7b9087f9
commit 5da3559551
1 changed files with 22 additions and 4 deletions

View File

@ -81,7 +81,9 @@ public class ThreeTableOneRosterTask {
listPro.forEach(mapBeanVo -> {
//每个工程去循环生成
//1.花名册
logger.error("工资册:月份-》{},开始时间-》{},结束时间-》{},工程编号-》{}",lastMonth.toString(),startTime,endTime,mapBeanVo.getId());
List<ThreeTableOneRosterPo> listRoster = mapper.getWorkerRosterData(lastMonth.toString(),startTime,endTime,mapBeanVo.getId());
logger.error("工资册:工程编号-》{},条数-》{}",mapBeanVo.getId(),listRoster.size());
//2.农民工实名制工资信息报审表
List<ThreeTableOneRosterPo> listApply = mapper.getWorkerApplyData(lastMonth.toString(),mapBeanVo.getId());
//3.考勤明细表
@ -147,14 +149,24 @@ public class ThreeTableOneRosterTask {
});
listRosterAll.addAll(listRoster);
});
logger.error("数据:总条数-》{}",listRosterAll.size());
if(!listRosterAll.isEmpty()){
//插入数据
if(isExist){
logger.error("二次生成删除旧数据:月份-》{}",lastMonth.toString());
mapper.deleteWorkerPay(lastMonth.toString(),"");
}
mapper.insertWorkerPay(listRosterAll);
logger.error("数据插入详情表:条数-》{}",listRosterAll.size());
// 数据量过大时可以使用批量插入来提高性能
int batchSize = 1200;
for (int i = 0; i < listRosterAll.size(); i += batchSize) {
List<ThreeTableOneRosterPo> batch = listRosterAll.subList(i, Math.min(i + batchSize, listRosterAll.size()));
// MyBatis 批量插入
mapper.insertWorkerPay(batch);
}
//获取整合数据
List<AttProMonthPo> listRosterMonthAll = mapper.getProMonthData(lastMonth.toString());
logger.error("查询详情表整合数据,插入主表:条数-》{}",listRosterMonthAll.size());
for (AttProMonthPo attProMonthPo : listRosterMonthAll) {
Integer id =mapper.getProMonthDataByTable(attProMonthPo);
if(id!=null && id>0){
@ -184,7 +196,7 @@ public class ThreeTableOneRosterTask {
}
}catch (Exception e){
logger.error("人员入场更新表失败{}",e.getMessage());
logger.error("三表一册生成{}",e.getMessage());
}
}
@ -285,7 +297,13 @@ public class ThreeTableOneRosterTask {
if(isExist){
mapper.deleteWorkerPay(month, String.valueOf(proId));
}
mapper.insertWorkerPay(listRosterAll);
// 数据量过大时可以使用批量插入来提高性能
int batchSize = 1200;
for (int i = 0; i < listRosterAll.size(); i += batchSize) {
List<ThreeTableOneRosterPo> batch = listRosterAll.subList(i, Math.min(i + batchSize, listRosterAll.size()));
// MyBatis 批量插入
mapper.insertWorkerPay(batch);
}
//获取整合数据
List<AttProMonthPo> listRosterMonthAll = mapper.getProMonthData(month);
for (AttProMonthPo attProMonthPo : listRosterMonthAll) {
@ -300,7 +318,7 @@ public class ThreeTableOneRosterTask {
}
}
}catch (Exception e){
logger.error("人员入场更新表失败{}",e.getMessage());
logger.error("三表一册更新手动{}",e.getMessage());
}
}