From d516e38fd44e186f393bbb05c4e7ca34b323b609 Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期二, 16 五月 2023 18:50:52 +0800
Subject: [PATCH] optimize report

---
 service-job/src/main/java/com/java110/job/task/attendance/GeneratorAttendanceTaskTemplate.java |   88 +++++++++++++++++++++++++++----------------
 1 files changed, 55 insertions(+), 33 deletions(-)

diff --git a/service-job/src/main/java/com/java110/job/task/attendance/GeneratorAttendanceTaskTemplate.java b/service-job/src/main/java/com/java110/job/task/attendance/GeneratorAttendanceTaskTemplate.java
index 9400edf..87db3f2 100644
--- a/service-job/src/main/java/com/java110/job/task/attendance/GeneratorAttendanceTaskTemplate.java
+++ b/service-job/src/main/java/com/java110/job/task/attendance/GeneratorAttendanceTaskTemplate.java
@@ -4,9 +4,9 @@
 import com.java110.dto.attendanceClasses.AttendanceClassesDto;
 import com.java110.dto.attendanceClasses.AttendanceClassesTaskDetailDto;
 import com.java110.dto.attendanceClasses.AttendanceClassesTaskDto;
-import com.java110.dto.org.OrgStaffRelDto;
-import com.java110.dto.scheduleClassesStaff.ScheduleClassesStaffDto;
-import com.java110.dto.scheduleClassesTime.ScheduleClassesTimeDto;
+import com.java110.dto.attendanceClasses.AttendanceClassesStaffDto;
+import com.java110.dto.scheduleClasses.ScheduleClassesStaffDto;
+import com.java110.dto.scheduleClasses.ScheduleClassesTimeDto;
 import com.java110.dto.store.StoreDto;
 import com.java110.dto.task.TaskDto;
 import com.java110.dto.user.UserDto;
@@ -16,6 +16,7 @@
 import com.java110.intf.store.IOrgStaffRelV1InnerServiceSMO;
 import com.java110.intf.store.IScheduleClassesStaffV1InnerServiceSMO;
 import com.java110.intf.store.IStoreV1InnerServiceSMO;
+import com.java110.intf.user.IAttendanceClassesStaffV1InnerServiceSMO;
 import com.java110.intf.user.IUserV1InnerServiceSMO;
 import com.java110.job.quartz.TaskSystemQuartz;
 import com.java110.po.attendanceClassesTask.AttendanceClassesTaskPo;
@@ -40,6 +41,9 @@
 
     @Autowired
     private IAttendanceClassesInnerServiceSMO attendanceClassesInnerServiceSMOImpl;
+
+    @Autowired
+    private IAttendanceClassesStaffV1InnerServiceSMO attendanceClassesStaffV1InnerServiceSMOImpl;
 
     @Autowired
     private IAttendanceClassesTaskInnerServiceSMO attendanceClassesTaskInnerServiceSMOImpl;
@@ -111,19 +115,19 @@
 
         //鏌ヨ缁勭粐 鍏宠仈鐨勫憳宸�
 
-        OrgStaffRelDto orgStaffRelDto = new OrgStaffRelDto();
-        orgStaffRelDto.setOrgId(tmpAttendanceClassesDto.getClassesObjId());
-        orgStaffRelDto.setStoreId(tmpStoreDto.getStoreId());
-        List<OrgStaffRelDto> orgStaffRelDtos = orgStaffRelV1InnerServiceSMOImpl.queryOrgStaffRels(orgStaffRelDto);
-        if (orgStaffRelDtos == null || orgStaffRelDtos.size() < 1) {
+        AttendanceClassesStaffDto attendanceClassesStaffDto = new AttendanceClassesStaffDto();
+        attendanceClassesStaffDto.setClassesId(tmpAttendanceClassesDto.getClassesId());
+        attendanceClassesStaffDto.setStoreId(tmpStoreDto.getStoreId());
+        List<AttendanceClassesStaffDto> attendanceClassesStaffs = attendanceClassesStaffV1InnerServiceSMOImpl.queryAttendanceClassesStaffs(attendanceClassesStaffDto);
+        if (attendanceClassesStaffs == null || attendanceClassesStaffs.size() < 1) {
             return;
         }
 
-        for (OrgStaffRelDto tmpOrgStaffRelDto : orgStaffRelDtos) {
+        for (AttendanceClassesStaffDto tmpAttendanceClassesStaffDto : attendanceClassesStaffs) {
             try {
-                doGeneratorStaffAttendance(tmpStoreDto, tmpAttendanceClassesDto, tmpOrgStaffRelDto);
+                doGeneratorStaffAttendance(tmpStoreDto, tmpAttendanceClassesDto, tmpAttendanceClassesStaffDto);
             } catch (Exception e) {
-                logger.error("鍛樺伐鐢熸垚鑰冨嫟浠诲姟澶辫触" + tmpOrgStaffRelDto.getStaffId(), e);
+                logger.error("鍛樺伐鐢熸垚鑰冨嫟浠诲姟澶辫触" + tmpAttendanceClassesStaffDto.getStaffId(), e);
             }
         }
     }
@@ -133,12 +137,12 @@
      *
      * @param tmpStoreDto
      * @param tmpAttendanceClassesDto
-     * @param tmpOrgStaffRelDto
+     * @param tmpAttendanceClassesStaffDto
      */
-    private void doGeneratorStaffAttendance(StoreDto tmpStoreDto, AttendanceClassesDto tmpAttendanceClassesDto, OrgStaffRelDto tmpOrgStaffRelDto) {
+    private void doGeneratorStaffAttendance(StoreDto tmpStoreDto, AttendanceClassesDto tmpAttendanceClassesDto, AttendanceClassesStaffDto tmpAttendanceClassesStaffDto) {
 
         ScheduleClassesStaffDto scheduleClassesStaffDto = new ScheduleClassesStaffDto();
-        scheduleClassesStaffDto.setStaffId(tmpOrgStaffRelDto.getStaffId());
+        scheduleClassesStaffDto.setStaffId(tmpAttendanceClassesStaffDto.getStaffId());
         scheduleClassesStaffDto.setToday(new Date());
         scheduleClassesStaffDto = scheduleClassesStaffV1InnerServiceSMOImpl.staffIsWork(scheduleClassesStaffDto);
 
@@ -155,7 +159,7 @@
         int day = calendar.get(Calendar.DAY_OF_MONTH);
 
         AttendanceClassesTaskDto attendanceClassesTaskDto = new AttendanceClassesTaskDto();
-        attendanceClassesTaskDto.setStaffId(tmpOrgStaffRelDto.getStaffId());
+        attendanceClassesTaskDto.setStaffId(tmpAttendanceClassesStaffDto.getStaffId());
         attendanceClassesTaskDto.setClassId(tmpAttendanceClassesDto.getClassesId());
         attendanceClassesTaskDto.setTaskYear(year + "");
         attendanceClassesTaskDto.setTaskMonth(month + "");
@@ -168,13 +172,13 @@
         }
 
         UserDto userDto = new UserDto();
-        userDto.setUserId(tmpOrgStaffRelDto.getStaffId());
+        userDto.setUserId(tmpAttendanceClassesStaffDto.getStaffId());
         List<UserDto> userDtos = userV1InnerServiceSMOImpl.queryUsers(userDto);
-        Assert.listOnlyOne(userDtos,"鍛樺伐涓嶅瓨鍦�");
+        Assert.listOnlyOne(userDtos, "鍛樺伐涓嶅瓨鍦�");
 
 
         AttendanceClassesTaskPo attendanceClassesTaskPo = new AttendanceClassesTaskPo();
-        attendanceClassesTaskPo.setStaffId(tmpOrgStaffRelDto.getStaffId());
+        attendanceClassesTaskPo.setStaffId(tmpAttendanceClassesStaffDto.getStaffId());
         attendanceClassesTaskPo.setClassId(tmpAttendanceClassesDto.getClassesId());
         attendanceClassesTaskPo.setTaskYear(year + "");
         attendanceClassesTaskPo.setTaskMonth(month + "");
@@ -189,9 +193,14 @@
         if (flag < 1) {
             throw new IllegalArgumentException("淇濆瓨鑰冨嫟浠诲姟澶辫触");
         }
-
-        for (ScheduleClassesTimeDto tmpScheduleClassesTimeDto : times) {
-            doGeneratorStaffAttendanceTime(tmpStoreDto, tmpAttendanceClassesDto, tmpOrgStaffRelDto, tmpScheduleClassesTimeDto, attendanceClassesTaskPo);
+        ScheduleClassesTimeDto tmpScheduleClassesTimeDto = null;
+        boolean isLast = false;
+        for (int timeIndex = 0; timeIndex < times.size(); timeIndex++) {
+            tmpScheduleClassesTimeDto = times.get(timeIndex);
+            if (timeIndex == (times.size() - 1)) {
+                isLast = true;
+            }
+            doGeneratorStaffAttendanceTime(tmpStoreDto, tmpAttendanceClassesDto, tmpAttendanceClassesStaffDto, tmpScheduleClassesTimeDto, attendanceClassesTaskPo, isLast);
         }
 
     }
@@ -201,11 +210,11 @@
      *
      * @param tmpStoreDto
      * @param tmpAttendanceClassesDto
-     * @param tmpOrgStaffRelDto
+     * @param tmpAttendanceClassesStaffDto
      * @param tmpScheduleClassesTimeDto
      */
-    private void doGeneratorStaffAttendanceTime(StoreDto tmpStoreDto, AttendanceClassesDto tmpAttendanceClassesDto, OrgStaffRelDto tmpOrgStaffRelDto,
-                                                ScheduleClassesTimeDto tmpScheduleClassesTimeDto, AttendanceClassesTaskPo attendanceClassesTaskPo) {
+    private void doGeneratorStaffAttendanceTime(StoreDto tmpStoreDto, AttendanceClassesDto tmpAttendanceClassesDto, AttendanceClassesStaffDto tmpAttendanceClassesStaffDto,
+                                                ScheduleClassesTimeDto tmpScheduleClassesTimeDto, AttendanceClassesTaskPo attendanceClassesTaskPo, boolean islast) {
 
         String curDate = DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_B);
 
@@ -219,23 +228,24 @@
         //alter table attendance_classes_task_detail add COLUMN late_value varchar(12) not null comment '姝e父鎴栬�呮棭閫�鏃堕棿锛宻pec_cd 1001 鏄繜鍒� 2002 鏄甯告椂闂�';
 
         String value = curDate + " " + startTimeStr + ":00";
-        Date valueDate = DateUtil.getDateFromStringA(value);
+        Date startValueDate = DateUtil.getDateFromStringA(value);
 
         int timeOffset = Integer.parseInt(tmpAttendanceClassesDto.getTimeOffset());
+        int maxLastOffset = Integer.parseInt(tmpAttendanceClassesDto.getMaxLastOffset());
 
         AttendanceClassesTaskDetailPo attendanceClassesTaskDetailPo = new AttendanceClassesTaskDetailPo();
         attendanceClassesTaskDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId("12"));
         attendanceClassesTaskDetailPo.setTaskId(attendanceClassesTaskPo.getTaskId());
         attendanceClassesTaskDetailPo.setSpecCd(AttendanceClassesTaskDetailDto.SPEC_CD_START);
-        attendanceClassesTaskDetailPo.setValue(curDate + " " + startTimeStr + ":00");
+        attendanceClassesTaskDetailPo.setValue(value);
         Calendar calendar = Calendar.getInstance();
-        calendar.setTime(valueDate);
+        calendar.setTime(startValueDate);
         calendar.add(Calendar.MINUTE, timeOffset * -1);
         attendanceClassesTaskDetailPo.setLeaveValue(DateUtil.getFormatTimeString(calendar.getTime(), DateUtil.DATE_FORMATE_STRING_A));
 
         int lateOffset = Integer.parseInt(tmpAttendanceClassesDto.getLateOffset());
         calendar = Calendar.getInstance();
-        calendar.setTime(valueDate);
+        calendar.setTime(startValueDate);
         calendar.add(Calendar.MINUTE, lateOffset);
         attendanceClassesTaskDetailPo.setLateValue(DateUtil.getFormatTimeString(calendar.getTime(), DateUtil.DATE_FORMATE_STRING_A));
         attendanceClassesTaskDetailPo.setState(AttendanceClassesTaskDetailDto.STATE_WAIT);
@@ -248,7 +258,15 @@
         }
 
         value = curDate + " " + endTimeStr + ":00";
-        valueDate = DateUtil.getDateFromStringA(value);
+        Date endValueDate = DateUtil.getDateFromStringA(value);
+
+        if (endValueDate.getTime() < startValueDate.getTime()) {
+            Calendar endDateCal = Calendar.getInstance();
+            endDateCal.setTime(endValueDate);
+            endDateCal.add(Calendar.DAY_OF_MONTH, 1);
+            endValueDate = endDateCal.getTime();
+            value = DateUtil.getFormatTimeString(endValueDate, DateUtil.DATE_FORMATE_STRING_A);
+        }
 
         int leaveOffset = Integer.parseInt(tmpAttendanceClassesDto.getLeaveOffset());
 
@@ -256,15 +274,19 @@
         attendanceClassesTaskDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId("12"));
         attendanceClassesTaskDetailPo.setTaskId(attendanceClassesTaskPo.getTaskId());
         attendanceClassesTaskDetailPo.setSpecCd(AttendanceClassesTaskDetailDto.SPEC_CD_END);
-        attendanceClassesTaskDetailPo.setValue(curDate + " " + endTimeStr + ":00");
+        attendanceClassesTaskDetailPo.setValue(value);
 
         calendar = Calendar.getInstance();
-        calendar.setTime(valueDate);
+        calendar.setTime(endValueDate);
         calendar.add(Calendar.MINUTE, leaveOffset * -1);
         attendanceClassesTaskDetailPo.setLeaveValue(DateUtil.getFormatTimeString(calendar.getTime(), DateUtil.DATE_FORMATE_STRING_A));
         calendar = Calendar.getInstance();
-        calendar.setTime(valueDate);
-        calendar.add(Calendar.MINUTE, timeOffset);
+        calendar.setTime(endValueDate);
+        if (!islast) {
+            calendar.add(Calendar.MINUTE, timeOffset);
+        } else {
+            calendar.add(Calendar.MINUTE, maxLastOffset);
+        }
         attendanceClassesTaskDetailPo.setLateValue(DateUtil.getFormatTimeString(calendar.getTime(), DateUtil.DATE_FORMATE_STRING_A));
         attendanceClassesTaskDetailPo.setState(AttendanceClassesTaskDetailDto.STATE_WAIT);
         attendanceClassesTaskDetailPo.setStoreId(tmpStoreDto.getStoreId());

--
Gitblit v1.8.0