Przeglądaj źródła

优化打卡范围功能

Your Name 3 lat temu
rodzic
commit
51eea50ccb

+ 11 - 0
java110-bean/src/main/java/com/java110/dto/attendanceClasses/AttendanceClassesDto.java

@@ -30,6 +30,9 @@ public class AttendanceClassesDto extends PageDto implements Serializable {
     private String classesId;
     private String leaveOffset;
     private String lateOffset;
+
+    private String maxLastOffset;
+
     private String clockTypeValue;
     private String classesObjName;
     private List<AttendanceClassesAttrDto> attrs;
@@ -173,4 +176,12 @@ public class AttendanceClassesDto extends PageDto implements Serializable {
     public void setClassesObjIds(String[] classesObjIds) {
         this.classesObjIds = classesObjIds;
     }
+
+    public String getMaxLastOffset() {
+        return maxLastOffset;
+    }
+
+    public void setMaxLastOffset(String maxLastOffset) {
+        this.maxLastOffset = maxLastOffset;
+    }
 }

+ 10 - 0
java110-bean/src/main/java/com/java110/po/attendanceClasses/AttendanceClassesPo.java

@@ -17,6 +17,8 @@ public class AttendanceClassesPo implements Serializable {
     private String clockTypeValue;
     private String classesObjName;
 
+    private String maxLastOffset;
+
     private String statusCd = "0";
 
     public String getTimeOffset() {
@@ -122,4 +124,12 @@ public class AttendanceClassesPo implements Serializable {
     public void setStatusCd(String statusCd) {
         this.statusCd = statusCd;
     }
+
+    public String getMaxLastOffset() {
+        return maxLastOffset;
+    }
+
+    public void setMaxLastOffset(String maxLastOffset) {
+        this.maxLastOffset = maxLastOffset;
+    }
 }

+ 12 - 3
java110-db/src/main/resources/mapper/common/AttendanceClassesServiceDaoImplMapper.xml

@@ -7,10 +7,10 @@
     <insert id="saveBusinessAttendanceClassesInfo" parameterType="Map">
         insert into business_attendance_classes(time_offset, clock_count, classes_obj_type, store_id, clock_type,
                                                 classes_obj_id, classes_name, classes_id, operate,
-                                                leave_offset, late_offset, b_id, clock_type_value)
+                                                leave_offset, late_offset, b_id, clock_type_value,max_last_offset)
         values (#{timeOffset}, #{clockCount}, #{classesObjType}, #{storeId}, #{clockType}},
                 #{classesName}, #{classesId}, #{operate},
-                #{leaveOffset}, #{lateOffset}, #{bId}, #{clockTypeValue})
+                #{leaveOffset}, #{lateOffset}, #{bId}, #{clockTypeValue},#{maxLastOffset})
     </insert>
 
     <!-- 查询考勤班次信息(Business) add by wuxw 2018-07-03 -->
@@ -119,7 +119,7 @@
         clockCount,t.store_id,t.store_id
         storeId,t.clock_type,t.clock_type clockType,t.classes_name,t.classes_name classesName,t.classes_id,t.classes_id
         classesId,t.leave_offset,t.leave_offset leaveOffset,t.late_offset,t.late_offset lateOffset,t.b_id,t.b_id
-        bId,t.clock_type_value,t.clock_type_value clockTypeValue,
+        bId,t.clock_type_value,t.clock_type_value clockTypeValue,t.max_last_offset maxLastOffset
         td.name clockTypeName
         from attendance_classes t
         left join t_dict td on t.clock_type = td.status_cd and td.table_name = 'attendance_classes'
@@ -154,6 +154,9 @@
         <if test="lateOffset !=null and lateOffset != ''">
             and t.late_offset= #{lateOffset}
         </if>
+        <if test="maxLastOffset !=null and maxLastOffset != ''">
+            and t.max_last_offset= #{maxLastOffset}
+        </if>
         <if test="bId !=null and bId != ''">
             and t.b_id= #{bId}
         </if>
@@ -195,6 +198,9 @@
         <if test="lateOffset !=null and lateOffset != ''">
             , t.late_offset= #{lateOffset}
         </if>
+        <if test="maxLastOffset !=null and maxLastOffset != ''">
+            , t.max_last_offset= #{maxLastOffset}
+        </if>
         <if test="clockTypeValue !=null and clockTypeValue != ''">
             , t.clock_type_value= #{clockTypeValue}
         </if>
@@ -241,6 +247,9 @@
         <if test="lateOffset !=null and lateOffset != ''">
             and t.late_offset= #{lateOffset}
         </if>
+        <if test="maxLastOffset !=null and maxLastOffset != ''">
+            and t.max_last_offset= #{maxLastOffset}
+        </if>
         <if test="bId !=null and bId != ''">
             and t.b_id= #{bId}
         </if>

+ 17 - 7
java110-db/src/main/resources/mapper/common/AttendanceClassesV1ServiceDaoImplMapper.xml

@@ -8,9 +8,9 @@
     <!-- 保存申请钥匙信息 add by wuxw 2018-07-03 -->
     <insert id="saveAttendanceClassesInfo" parameterType="Map">
         insert into attendance_classes(
-        time_offset,clock_count,store_id,clock_type,classes_name,classes_id,leave_offset,late_offset,clock_type_value
+        time_offset,clock_count,store_id,clock_type,classes_name,classes_id,leave_offset,late_offset,clock_type_value,max_last_offset
         ) values (
-        #{timeOffset},#{clockCount},#{storeId},#{clockType},#{classesName},#{classesId},#{leaveOffset},#{lateOffset},#{clockTypeValue}
+        #{timeOffset},#{clockCount},#{storeId},#{clockType},#{classesName},#{classesId},#{leaveOffset},#{lateOffset},#{clockTypeValue},#{maxLastOffset}
         )
     </insert>
 
@@ -21,7 +21,8 @@
         timeOffset,t.clock_count,t.clock_count clockCount,t.status_cd,t.status_cd statusCd,t.store_id,t.store_id storeId,t.clock_type,t.clock_type
         clockType,t.classes_name,t.classes_name
         classesName,t.classes_id,t.classes_id classesId,t.leave_offset,t.leave_offset
-        leaveOffset,t.late_offset,t.late_offset lateOffset,t.clock_type_value,t.clock_type_value clockTypeValue
+        leaveOffset,t.late_offset,t.late_offset lateOffset,t.clock_type_value,t.clock_type_value clockTypeValue,
+        t.max_last_offset maxLastOffset
         from attendance_classes t
         where 1 =1
 
@@ -31,7 +32,9 @@
         <if test="clockCount !=null and clockCount != ''">
             and t.clock_count= #{clockCount}
         </if>
-
+        <if test="maxLastOffset !=null and maxLastOffset != ''">
+            and t.max_last_offset= #{maxLastOffset}
+        </if>
         <if test="statusCd !=null and statusCd != ''">
             and t.status_cd= #{statusCd}
         </if>
@@ -79,9 +82,7 @@
             , t.clock_count= #{clockCount}
         </if>
 
-        <if test="storeId !=null and storeId != ''">
-            , t.store_id= #{storeId}
-        </if>
+
         <if test="clockType !=null and clockType != ''">
             , t.clock_type= #{clockType}
         </if>
@@ -95,6 +96,9 @@
         <if test="lateOffset !=null and lateOffset != ''">
             , t.late_offset= #{lateOffset}
         </if>
+        <if test="maxLastOffset !=null and maxLastOffset != ''">
+            , t.max_last_offset= #{maxLastOffset}
+        </if>
         <if test="clockTypeValue !=null and clockTypeValue != ''">
             , t.clock_type_value= #{clockTypeValue}
         </if>
@@ -102,6 +106,9 @@
         <if test="classesId !=null and classesId != ''">
             and t.classes_id= #{classesId}
         </if>
+        <if test="storeId !=null and storeId != ''">
+            and t.store_id= #{storeId}
+        </if>
 
     </update>
 
@@ -137,6 +144,9 @@
         <if test="leaveOffset !=null and leaveOffset != ''">
             and t.leave_offset= #{leaveOffset}
         </if>
+        <if test="maxLastOffset !=null and maxLastOffset != ''">
+            and t.max_last_offset= #{maxLastOffset}
+        </if>
         <if test="lateOffset !=null and lateOffset != ''">
             and t.late_offset= #{lateOffset}
         </if>

+ 1 - 1
service-common/src/main/java/com/java110/common/cmd/attendanceClasses/CheckInCmd.java

@@ -185,7 +185,7 @@ public class CheckInCmd extends Cmd {
         List<AttendanceClassesTaskDetailDto> attendanceClassesTaskDetailDtos = attendanceClassesTaskDetailInnerServiceSMOImpl.queryAttendanceClassesTaskDetails(attendanceClassesTaskDetailDto);
 
         if (attendanceClassesTaskDetailDtos == null || attendanceClassesTaskDetailDtos.size() < 1) {
-            context.setResponseEntity(ResultVo.error("不是考勤范围内"));
+            context.setResponseEntity(ResultVo.error("未到时间"));
             return;
         }
 

+ 16 - 6
service-job/src/main/java/com/java110/job/task/attendance/GeneratorAttendanceTaskTemplate.java

@@ -175,7 +175,7 @@ public class GeneratorAttendanceTaskTemplate extends TaskSystemQuartz {
         UserDto userDto = new UserDto();
         userDto.setUserId(tmpAttendanceClassesStaffDto.getStaffId());
         List<UserDto> userDtos = userV1InnerServiceSMOImpl.queryUsers(userDto);
-        Assert.listOnlyOne(userDtos,"员工不存在");
+        Assert.listOnlyOne(userDtos, "员工不存在");
 
 
         AttendanceClassesTaskPo attendanceClassesTaskPo = new AttendanceClassesTaskPo();
@@ -194,9 +194,14 @@ public class GeneratorAttendanceTaskTemplate extends TaskSystemQuartz {
         if (flag < 1) {
             throw new IllegalArgumentException("保存考勤任务失败");
         }
-
-        for (ScheduleClassesTimeDto tmpScheduleClassesTimeDto : times) {
-            doGeneratorStaffAttendanceTime(tmpStoreDto, tmpAttendanceClassesDto, tmpAttendanceClassesStaffDto, 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);
         }
 
     }
@@ -210,7 +215,7 @@ public class GeneratorAttendanceTaskTemplate extends TaskSystemQuartz {
      * @param tmpScheduleClassesTimeDto
      */
     private void doGeneratorStaffAttendanceTime(StoreDto tmpStoreDto, AttendanceClassesDto tmpAttendanceClassesDto, AttendanceClassesStaffDto tmpAttendanceClassesStaffDto,
-                                                ScheduleClassesTimeDto tmpScheduleClassesTimeDto, AttendanceClassesTaskPo attendanceClassesTaskPo) {
+                                                ScheduleClassesTimeDto tmpScheduleClassesTimeDto, AttendanceClassesTaskPo attendanceClassesTaskPo, boolean islast) {
 
         String curDate = DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_B);
 
@@ -227,6 +232,7 @@ public class GeneratorAttendanceTaskTemplate extends TaskSystemQuartz {
         Date valueDate = DateUtil.getDateFromStringA(value);
 
         int timeOffset = Integer.parseInt(tmpAttendanceClassesDto.getTimeOffset());
+        int maxLastOffset = Integer.parseInt(tmpAttendanceClassesDto.getMaxLastOffset());
 
         AttendanceClassesTaskDetailPo attendanceClassesTaskDetailPo = new AttendanceClassesTaskDetailPo();
         attendanceClassesTaskDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId("12"));
@@ -269,7 +275,11 @@ public class GeneratorAttendanceTaskTemplate extends TaskSystemQuartz {
         attendanceClassesTaskDetailPo.setLeaveValue(DateUtil.getFormatTimeString(calendar.getTime(), DateUtil.DATE_FORMATE_STRING_A));
         calendar = Calendar.getInstance();
         calendar.setTime(valueDate);
-        calendar.add(Calendar.MINUTE, timeOffset);
+        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());