diff --git a/bonus-modules/bonus-job/src/main/java/com/bonus/job/task/ThreeTableOneRosterTask.java b/bonus-modules/bonus-job/src/main/java/com/bonus/job/task/ThreeTableOneRosterTask.java index f0ab7bd..5f5e0d8 100644 --- a/bonus-modules/bonus-job/src/main/java/com/bonus/job/task/ThreeTableOneRosterTask.java +++ b/bonus-modules/bonus-job/src/main/java/com/bonus/job/task/ThreeTableOneRosterTask.java @@ -81,7 +81,9 @@ public class ThreeTableOneRosterTask { listPro.forEach(mapBeanVo -> { //每个工程去循环生成 //1.花名册 + logger.error("工资册:月份-》{},开始时间-》{},结束时间-》{},工程编号-》{}",lastMonth.toString(),startTime,endTime,mapBeanVo.getId()); List listRoster = mapper.getWorkerRosterData(lastMonth.toString(),startTime,endTime,mapBeanVo.getId()); + logger.error("工资册:工程编号-》{},条数-》{}",mapBeanVo.getId(),listRoster.size()); //2.农民工实名制工资信息报审表 List 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 batch = listRosterAll.subList(i, Math.min(i + batchSize, listRosterAll.size())); + // MyBatis 批量插入 + mapper.insertWorkerPay(batch); + } //获取整合数据 List 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 batch = listRosterAll.subList(i, Math.min(i + batchSize, listRosterAll.size())); + // MyBatis 批量插入 + mapper.insertWorkerPay(batch); + } //获取整合数据 List 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()); } }