Bladeren bron

判断处理完成

wuxw 3 jaren geleden
bovenliggende
commit
a29d230ff4

+ 10 - 0
java110-bean/src/main/java/com/java110/dto/scheduleClassesStaff/ScheduleClassesStaffDto.java

@@ -31,6 +31,8 @@ public class ScheduleClassesStaffDto extends PageDto implements Serializable {
 
     private long staffCount;
 
+    private String curDate;
+
     List<ScheduleClassesDayDto> days;
 
 
@@ -143,4 +145,12 @@ public class ScheduleClassesStaffDto extends PageDto implements Serializable {
     public void setStaffNameLike(String staffNameLike) {
         this.staffNameLike = staffNameLike;
     }
+
+    public String getCurDate() {
+        return curDate;
+    }
+
+    public void setCurDate(String curDate) {
+        this.curDate = curDate;
+    }
 }

+ 3 - 0
java110-interface/src/main/java/com/java110/intf/store/IScheduleClassesStaffV1InnerServiceSMO.java

@@ -82,4 +82,7 @@ public interface IScheduleClassesStaffV1InnerServiceSMO {
     @RequestMapping(value = "/staffIsWork", method = RequestMethod.POST)
     ScheduleClassesStaffDto staffIsWork(@RequestBody ScheduleClassesStaffDto scheduleClassesStaffDto);
 
+    @RequestMapping(value = "/computeStaffCurMonthWorkday", method = RequestMethod.POST)
+    ScheduleClassesStaffDto computeStaffCurMonthWorkday(@RequestBody ScheduleClassesStaffDto scheduleClassesStaffDto);
+
 }

+ 7 - 176
service-store/src/main/java/com/java110/store/cmd/scheduleClasses/StaffMonthScheduleClassesCmd.java

@@ -88,193 +88,24 @@ public class StaffMonthScheduleClassesCmd extends Cmd {
         int count = scheduleClassesStaffV1InnerServiceSMOImpl.queryScheduleClassesStaffsCount(scheduleClassesStaffDto);
 
         List<ScheduleClassesStaffDto> scheduleClassesStaffDtos = null;
+        List<ScheduleClassesStaffDto> tmpScheduleClassesStaffDtos =  new ArrayList<>();
+        ScheduleClassesStaffDto tmpScheduleClassesStaffDto = null;
 
         if (count > 0) {
             scheduleClassesStaffDtos = scheduleClassesStaffV1InnerServiceSMOImpl.queryScheduleClassesStaffs(scheduleClassesStaffDto);
-            for (ScheduleClassesStaffDto tmpScheduleClassesStaffDto : scheduleClassesStaffDtos) {
-                computeStaffCurMonthWorkday(tmpScheduleClassesStaffDto, reqJson);
+            for (ScheduleClassesStaffDto scheduleClassesStaffDto1 : scheduleClassesStaffDtos) {
+                scheduleClassesStaffDto1.setCurDate(reqJson.getString("curDate"));
+                tmpScheduleClassesStaffDto = scheduleClassesStaffV1InnerServiceSMOImpl.computeStaffCurMonthWorkday(scheduleClassesStaffDto1);
+                tmpScheduleClassesStaffDtos.add(tmpScheduleClassesStaffDto);
             }
-        } else {
-            scheduleClassesStaffDtos = new ArrayList<>();
         }
 
-        ResultVo resultVo = new ResultVo((int) Math.ceil((double) count / (double) reqJson.getInteger("row")), count, scheduleClassesStaffDtos);
+        ResultVo resultVo = new ResultVo((int) Math.ceil((double) count / (double) reqJson.getInteger("row")), count, tmpScheduleClassesStaffDtos);
 
         ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK);
 
         cmdDataFlowContext.setResponseEntity(responseEntity);
     }
 
-    /**
-     * 计算 员工 排班情况
-     *
-     * @param scheduleClassesStaffDto
-     * @param reqJson
-     */
-    private void computeStaffCurMonthWorkday(ScheduleClassesStaffDto scheduleClassesStaffDto, JSONObject reqJson) {
-
-        ScheduleClassesDto scheduleClassesDto = new ScheduleClassesDto();
-        scheduleClassesDto.setScheduleId(scheduleClassesStaffDto.getScheduleId());
-        List<ScheduleClassesDto> scheduleClassesDtos = scheduleClassesV1InnerServiceSMOImpl.queryScheduleClassess(scheduleClassesDto);
-        //这里 如果没有员工排班 那么就认为 员工一直在上班
-        if (scheduleClassesDtos == null || scheduleClassesDtos.size() < 1) {
-            return;
-        }
-
-        ScheduleClassesDayDto scheduleClassesDayDto = new ScheduleClassesDayDto();
-        scheduleClassesDayDto.setScheduleId(scheduleClassesDtos.get(0).getScheduleId());
-        List<ScheduleClassesDayDto> scheduleClassesDayDtos = scheduleClassesDayV1InnerServiceSMOImpl.queryScheduleClassesDays(scheduleClassesDayDto);
-
-        //设置问题 ,这里默认反馈在线
-        if (scheduleClassesDayDtos == null || scheduleClassesDayDtos.size() < 1) {
-            return;
-        }
-
-        String curMonth = reqJson.getString("curDate");
-        String curMonthDay = curMonth + "-01";
-
-        Calendar calendar = Calendar.getInstance();
-        calendar.setTime(DateUtil.getDateFromStringB(curMonthDay));
-        int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
-
-        if (ScheduleClassesDto.SCHEDULE_TYPE_DAY.equals(scheduleClassesDtos.get(0).getScheduleType())) {
-            doDay(scheduleClassesStaffDto, scheduleClassesDtos.get(0), scheduleClassesDayDtos, curMonth, maxDay);
-        } else if (ScheduleClassesDto.SCHEDULE_TYPE_WEEK.equals(scheduleClassesDtos.get(0).getScheduleType())) {
-            doWeek(scheduleClassesStaffDto, scheduleClassesDtos.get(0), scheduleClassesDayDtos, curMonth, maxDay);
-        } else if (ScheduleClassesDto.SCHEDULE_TYPE_MONTH.equals(scheduleClassesDtos.get(0).getScheduleType())) {
-            doMonth(scheduleClassesStaffDto, scheduleClassesDtos.get(0), scheduleClassesDayDtos, curMonth, maxDay);
-        }
-
-
-
-    }
-
-    private void doDay(ScheduleClassesStaffDto scheduleClassesStaffDto,
-                       ScheduleClassesDto scheduleClassesDto,
-                       List<ScheduleClassesDayDto> scheduleClassesDayDtos,
-                       String curMonth, int maxDay) {
-        List<ScheduleClassesDayDto> days = new ArrayList<>();
-        ScheduleClassesDayDto scDay = null;
-        ScheduleClassesDayDto tmpScheduleClassesDayDto = null;
-        int curDay = 1;
-        for (int day = 1; day <= maxDay; day++) {
-            scDay = new ScheduleClassesDayDto();
-            String today = curMonth + "-"+day;
-
-            int scheduleCycle = Integer.parseInt(scheduleClassesDto.getScheduleCycle());
-
-            int allDay = DateUtil.daysBetween(scheduleClassesDto.getComputeTime(), today)+1;
-            curDay = allDay % scheduleCycle;
-//
-//            if (curDay == 0 && day == 1) {
-//                curDay = 1;
-//            }
-//            if (curDay == 0 && day > 1) {
-//                curDay = scheduleCycle;
-//            }
-            if (curDay == 0) {
-                curDay = scheduleCycle;
-            }
-
-
-
-            scDay.setDay(day+"");
-            //计算 排班
-            for(ScheduleClassesDayDto scheduleClassesDayDto1 : scheduleClassesDayDtos){
-                if((curDay+"").equals(scheduleClassesDayDto1.getDay())){
-                    tmpScheduleClassesDayDto = scheduleClassesDayDto1;
-                }
-            }
-            if(tmpScheduleClassesDayDto != null ){
-                scDay.setWorkday(tmpScheduleClassesDayDto.getWorkday());
-                scDay.setTimes(tmpScheduleClassesDayDto.getTimes());
-            }
-            days.add(scDay);
-
-        }
-
-        scheduleClassesStaffDto.setDays(days);
-    }
-
-    private void doWeek(ScheduleClassesStaffDto scheduleClassesStaffDto,
-                       ScheduleClassesDto scheduleClassesDto,
-                       List<ScheduleClassesDayDto> scheduleClassesDayDtos,
-                       String curMonth, int maxDay) {
-        List<ScheduleClassesDayDto> days = new ArrayList<>();
-        ScheduleClassesDayDto scDay = null;
-        ScheduleClassesDayDto tmpScheduleClassesDayDto = null;
-        int curDay = 1;
-        for (int day = 1; day <= maxDay; day++) {
-            scDay = new ScheduleClassesDayDto();
-            Calendar today = Calendar.getInstance();
-            today.setTime(DateUtil.getDateFromStringB(curMonth + "-"+day));
-            int week = today.get(Calendar.WEEK_OF_MONTH);
-            curDay = today.get(Calendar.DAY_OF_WEEK);
-
-            //一周第一天是否为星期天
-            boolean isFirstSunday = (today.getFirstDayOfWeek() == Calendar.SUNDAY);
-            //获取周几
-            //若一周第一天为星期天,则-1
-            if (isFirstSunday) {
-                curDay = curDay - 1;
-                if (curDay == 0) {
-                    curDay = 7;
-                }
-            }
-
-            scDay.setDay(day+"");
-            //计算 排班
-            for(ScheduleClassesDayDto scheduleClassesDayDto1 : scheduleClassesDayDtos){
-                if((curDay+"").equals(scheduleClassesDayDto1.getDay()) && (week+"").equals(scheduleClassesDayDto1.getWeekFlag())){
-                    tmpScheduleClassesDayDto = scheduleClassesDayDto1;
-                }
-            }
-            if(tmpScheduleClassesDayDto == null){ // 没有设置周
-                for(ScheduleClassesDayDto scheduleClassesDayDto1 : scheduleClassesDayDtos){
-                    if((curDay+"").equals(scheduleClassesDayDto1.getDay())){
-                        tmpScheduleClassesDayDto = scheduleClassesDayDto1;
-                    }
-                }
-            }
-            if(tmpScheduleClassesDayDto != null ){
-                scDay.setWorkday(tmpScheduleClassesDayDto.getWorkday());
-                scDay.setTimes(tmpScheduleClassesDayDto.getTimes());
-            }
-            days.add(scDay);
-
-        }
-
-        scheduleClassesStaffDto.setDays(days);
-    }
-
-
-    private void doMonth(ScheduleClassesStaffDto scheduleClassesStaffDto,
-                        ScheduleClassesDto scheduleClassesDto,
-                        List<ScheduleClassesDayDto> scheduleClassesDayDtos,
-                        String curMonth, int maxDay) {
-        List<ScheduleClassesDayDto> days = new ArrayList<>();
-        ScheduleClassesDayDto scDay = null;
-        ScheduleClassesDayDto tmpScheduleClassesDayDto = null;
-        int curDay = 1;
-        for (int day = 1; day <= maxDay; day++) {
-            scDay = new ScheduleClassesDayDto();
-            curDay = day;
-            scDay.setDay(day+"");
-            //计算 排班
-            for(ScheduleClassesDayDto scheduleClassesDayDto1 : scheduleClassesDayDtos){
-                if((curDay+"").equals(scheduleClassesDayDto1.getDay())){
-                    tmpScheduleClassesDayDto = scheduleClassesDayDto1;
-                }
-            }
-            if(tmpScheduleClassesDayDto != null ){
-                scDay.setWorkday(tmpScheduleClassesDayDto.getWorkday());
-                scDay.setTimes(tmpScheduleClassesDayDto.getTimes());
-            }
-            days.add(scDay);
-        }
-
-        scheduleClassesStaffDto.setDays(days);
-    }
-
 
 }

+ 168 - 1
service-store/src/main/java/com/java110/store/smo/impl/ScheduleClassesStaffV1InnerServiceSMOImpl.java

@@ -163,12 +163,14 @@ public class ScheduleClassesStaffV1InnerServiceSMOImpl extends BaseServiceSMO im
         return scheduleClassesStaffDto;
     }
 
+
+
     /**
      * 员工是否上班 按月 排班
      * @param scheduleClassesDto
      * @param scheduleClassesStaffDto
      */
-    private void staffIsWorkMonth(ScheduleClassesDto scheduleClassesDto, ScheduleClassesStaffDto scheduleClassesStaffDto) {
+    private void staffIsWorkMonth( ScheduleClassesDto scheduleClassesDto, ScheduleClassesStaffDto scheduleClassesStaffDto) {
         Calendar today = Calendar.getInstance();
         today.setTime(scheduleClassesStaffDto.getToday());
         int day = today.get(Calendar.DAY_OF_MONTH);
@@ -322,4 +324,169 @@ public class ScheduleClassesStaffV1InnerServiceSMOImpl extends BaseServiceSMO im
         }
         scheduleClassesStaffDto.setWork(false);
     }
+
+    @Override
+    public ScheduleClassesStaffDto computeStaffCurMonthWorkday(@RequestBody ScheduleClassesStaffDto scheduleClassesStaffDto) {
+        ScheduleClassesDto scheduleClassesDto = new ScheduleClassesDto();
+        scheduleClassesDto.setScheduleId(scheduleClassesStaffDto.getScheduleId());
+        List<ScheduleClassesDto> scheduleClassesDtos = scheduleClassesV1InnerServiceSMOImpl.queryScheduleClassess(scheduleClassesDto);
+        //这里 如果没有员工排班 那么就认为 员工一直在上班
+        if (scheduleClassesDtos == null || scheduleClassesDtos.size() < 1) {
+            return scheduleClassesStaffDto;
+        }
+
+        ScheduleClassesDayDto scheduleClassesDayDto = new ScheduleClassesDayDto();
+        scheduleClassesDayDto.setScheduleId(scheduleClassesDtos.get(0).getScheduleId());
+        List<ScheduleClassesDayDto> scheduleClassesDayDtos = scheduleClassesDayV1InnerServiceSMOImpl.queryScheduleClassesDays(scheduleClassesDayDto);
+
+        //设置问题 ,这里默认反馈在线
+        if (scheduleClassesDayDtos == null || scheduleClassesDayDtos.size() < 1) {
+            return scheduleClassesStaffDto;
+        }
+
+        String curMonth = scheduleClassesStaffDto.getCurDate();;
+        String curMonthDay = curMonth + "-01";
+
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(DateUtil.getDateFromStringB(curMonthDay));
+        int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
+
+        if (ScheduleClassesDto.SCHEDULE_TYPE_DAY.equals(scheduleClassesDtos.get(0).getScheduleType())) {
+            doDay(scheduleClassesStaffDto, scheduleClassesDtos.get(0), scheduleClassesDayDtos, curMonth, maxDay);
+        } else if (ScheduleClassesDto.SCHEDULE_TYPE_WEEK.equals(scheduleClassesDtos.get(0).getScheduleType())) {
+            doWeek(scheduleClassesStaffDto, scheduleClassesDtos.get(0), scheduleClassesDayDtos, curMonth, maxDay);
+        } else if (ScheduleClassesDto.SCHEDULE_TYPE_MONTH.equals(scheduleClassesDtos.get(0).getScheduleType())) {
+            doMonth(scheduleClassesStaffDto, scheduleClassesDtos.get(0), scheduleClassesDayDtos, curMonth, maxDay);
+        }
+
+        return scheduleClassesStaffDto;
+
+    }
+
+    private void doDay(ScheduleClassesStaffDto scheduleClassesStaffDto,
+                       ScheduleClassesDto scheduleClassesDto,
+                       List<ScheduleClassesDayDto> scheduleClassesDayDtos,
+                       String curMonth, int maxDay) {
+        List<ScheduleClassesDayDto> days = new ArrayList<>();
+        ScheduleClassesDayDto scDay = null;
+        ScheduleClassesDayDto tmpScheduleClassesDayDto = null;
+        int curDay = 1;
+        for (int day = 1; day <= maxDay; day++) {
+            scDay = new ScheduleClassesDayDto();
+            String today = curMonth + "-"+day;
+
+            int scheduleCycle = Integer.parseInt(scheduleClassesDto.getScheduleCycle());
+
+            int allDay = DateUtil.daysBetween(scheduleClassesDto.getComputeTime(), today)+1;
+            curDay = allDay % scheduleCycle;
+//
+//            if (curDay == 0 && day == 1) {
+//                curDay = 1;
+//            }
+//            if (curDay == 0 && day > 1) {
+//                curDay = scheduleCycle;
+//            }
+            if (curDay == 0) {
+                curDay = scheduleCycle;
+            }
+
+
+
+            scDay.setDay(day+"");
+            //计算 排班
+            for(ScheduleClassesDayDto scheduleClassesDayDto1 : scheduleClassesDayDtos){
+                if((curDay+"").equals(scheduleClassesDayDto1.getDay())){
+                    tmpScheduleClassesDayDto = scheduleClassesDayDto1;
+                }
+            }
+            if(tmpScheduleClassesDayDto != null ){
+                scDay.setWorkday(tmpScheduleClassesDayDto.getWorkday());
+                scDay.setTimes(tmpScheduleClassesDayDto.getTimes());
+            }
+            days.add(scDay);
+
+        }
+
+        scheduleClassesStaffDto.setDays(days);
+    }
+
+    private void doWeek(ScheduleClassesStaffDto scheduleClassesStaffDto,
+                        ScheduleClassesDto scheduleClassesDto,
+                        List<ScheduleClassesDayDto> scheduleClassesDayDtos,
+                        String curMonth, int maxDay) {
+        List<ScheduleClassesDayDto> days = new ArrayList<>();
+        ScheduleClassesDayDto scDay = null;
+        ScheduleClassesDayDto tmpScheduleClassesDayDto = null;
+        int curDay = 1;
+        for (int day = 1; day <= maxDay; day++) {
+            scDay = new ScheduleClassesDayDto();
+            Calendar today = Calendar.getInstance();
+            today.setTime(DateUtil.getDateFromStringB(curMonth + "-"+day));
+            int week = today.get(Calendar.WEEK_OF_MONTH);
+            curDay = today.get(Calendar.DAY_OF_WEEK);
+
+            //一周第一天是否为星期天
+            boolean isFirstSunday = (today.getFirstDayOfWeek() == Calendar.SUNDAY);
+            //获取周几
+            //若一周第一天为星期天,则-1
+            if (isFirstSunday) {
+                curDay = curDay - 1;
+                if (curDay == 0) {
+                    curDay = 7;
+                }
+            }
+
+            scDay.setDay(day+"");
+            //计算 排班
+            for(ScheduleClassesDayDto scheduleClassesDayDto1 : scheduleClassesDayDtos){
+                if((curDay+"").equals(scheduleClassesDayDto1.getDay()) && (week+"").equals(scheduleClassesDayDto1.getWeekFlag())){
+                    tmpScheduleClassesDayDto = scheduleClassesDayDto1;
+                }
+            }
+            if(tmpScheduleClassesDayDto == null){ // 没有设置周
+                for(ScheduleClassesDayDto scheduleClassesDayDto1 : scheduleClassesDayDtos){
+                    if((curDay+"").equals(scheduleClassesDayDto1.getDay())){
+                        tmpScheduleClassesDayDto = scheduleClassesDayDto1;
+                    }
+                }
+            }
+            if(tmpScheduleClassesDayDto != null ){
+                scDay.setWorkday(tmpScheduleClassesDayDto.getWorkday());
+                scDay.setTimes(tmpScheduleClassesDayDto.getTimes());
+            }
+            days.add(scDay);
+
+        }
+
+        scheduleClassesStaffDto.setDays(days);
+    }
+
+
+    private void doMonth(ScheduleClassesStaffDto scheduleClassesStaffDto,
+                         ScheduleClassesDto scheduleClassesDto,
+                         List<ScheduleClassesDayDto> scheduleClassesDayDtos,
+                         String curMonth, int maxDay) {
+        List<ScheduleClassesDayDto> days = new ArrayList<>();
+        ScheduleClassesDayDto scDay = null;
+        ScheduleClassesDayDto tmpScheduleClassesDayDto = null;
+        int curDay = 1;
+        for (int day = 1; day <= maxDay; day++) {
+            scDay = new ScheduleClassesDayDto();
+            curDay = day;
+            scDay.setDay(day+"");
+            //计算 排班
+            for(ScheduleClassesDayDto scheduleClassesDayDto1 : scheduleClassesDayDtos){
+                if((curDay+"").equals(scheduleClassesDayDto1.getDay())){
+                    tmpScheduleClassesDayDto = scheduleClassesDayDto1;
+                }
+            }
+            if(tmpScheduleClassesDayDto != null ){
+                scDay.setWorkday(tmpScheduleClassesDayDto.getWorkday());
+                scDay.setTimes(tmpScheduleClassesDayDto.getTimes());
+            }
+            days.add(scDay);
+        }
+
+        scheduleClassesStaffDto.setDays(days);
+    }
 }