ソースを参照

考勤模块调整

dzx 1 年間 前
コミット
ccc0468ce1

+ 6 - 2
src/main/java/com/xjrsoft/module/attendance/controller/StudentStatisticsController.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.xjrsoft.common.enums.ArchivesStatusEnum;
+import com.xjrsoft.common.enums.StudyStatusEnum;
 import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.page.PageOutput;
@@ -148,8 +149,8 @@ public class StudentStatisticsController {
 
                 //计算出勤率
                 BigDecimal divide = BigDecimal.ZERO;
-                if(record.getStudentCount() != null && record.getStudentCount() != 0){
-                    divide = BigDecimal.valueOf(record.getActualCount()).divide(BigDecimal.valueOf(record.getStudentCount()), 4, RoundingMode.HALF_UP);
+                if(record.getNotStayCount() != null && record.getNotStayCount() != 0){
+                    divide = BigDecimal.valueOf(record.getActualCount()).divide(BigDecimal.valueOf(record.getNotStayCount()), 4, RoundingMode.HALF_UP);
                 }
                 record.setAttendanceRate(divide.doubleValue() + "");
             }
@@ -236,6 +237,9 @@ public class StudentStatisticsController {
                         record.setStatus("缺勤");
                     }
                 }
+                if(StudyStatusEnum.InResidence.getValue().equals(record.getStduyStatusCn())){
+                    record.setStatus("不考勤");
+                }
             }
         }
         PageOutput<StudentStatisticsPageVo> pageOutput = ConventPage.getPageOutput(voIPage, StudentStatisticsPageVo.class);

+ 23 - 1
src/main/java/com/xjrsoft/module/attendance/controller/TeacherStatisticsController.java

@@ -11,7 +11,9 @@ import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.page.PageOutput;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.attendance.dto.TeacherDetailsDto;
+import com.xjrsoft.module.attendance.entity.AttendanceMessageSet;
 import com.xjrsoft.module.attendance.service.IAttendanceRuleCategoryService;
+import com.xjrsoft.module.attendance.vo.AttendanceMessageSetPageVo;
 import com.xjrsoft.module.attendance.vo.AttendanceRuleDetailsUserVo;
 import com.xjrsoft.module.attendance.vo.TeacherStatisticsPageVo;
 import com.xjrsoft.module.holiday.entity.HolidayDate;
@@ -20,8 +22,11 @@ import com.xjrsoft.module.organization.entity.Department;
 import com.xjrsoft.module.organization.entity.User;
 import com.xjrsoft.module.organization.entity.UserDeptRelation;
 import com.xjrsoft.module.organization.service.IUserService;
+import com.xjrsoft.module.outint.entity.CarOutInRecord;
 import com.xjrsoft.module.outint.entity.TeacherOutInRecord;
+import com.xjrsoft.module.outint.service.ICarOutInRecordService;
 import com.xjrsoft.module.outint.service.ITeacherOutInRecordService;
+import com.xjrsoft.module.personnel.entity.CarMessageApply;
 import com.xjrsoft.module.teacher.entity.BaseTeacher;
 import com.xjrsoft.module.teacher.entity.WfHeadTeacherLeave;
 import com.xjrsoft.module.teacher.entity.WfTeacherleave;
@@ -62,6 +67,7 @@ public class TeacherStatisticsController {
     private final IHolidayDateService holidayDateService;
     private final IWfHeadTeacherLeaveService headTeacherLeaveService;
     private final IAttendanceRuleCategoryService attendanceRuleCategoryService;
+    private final ICarOutInRecordService carOutInRecordService;
 
     @GetMapping(value = "/teacher-details")
     @ApiOperation(value="教师考勤")
@@ -176,11 +182,27 @@ public class TeacherStatisticsController {
                         record.setRecordTime(outInRecord.getRecordTime());
                         record.setStatus(outInRecord.getAttendanceStatus());
                     }
+                }else{
+                    //查询该教师是否通过车辆进入
+                    List<CarOutInRecord> list = carOutInRecordService.list(
+                            new MPJLambdaWrapper<CarOutInRecord>()
+                                    .select(CarMessageApply.class, x -> VoToColumnUtil.fieldsToColumns(CarMessageApply.class).contains(x.getProperty()))
+                                    .leftJoin(CarMessageApply.class, CarMessageApply::getId, CarOutInRecord::getCarMessageApplyId)
+                                    .between(CarOutInRecord::getRecordTime, startTime, endTime)
+                                    .orderByAsc(CarOutInRecord::getRecordTime)
+                    );
+                    if(!list.isEmpty()){
+                        CarOutInRecord outInRecord = list.get(0);
+                        if(outInRecord != null){
+                            record.setRecordTime(outInRecord.getRecordTime());
+                            record.setStatus(outInRecord.getAttendanceStatus());
+                        }
+                    }
                 }
+
                 if(record.getStatus() == null){
                     record.setStatus("缺勤");
                 }
-
             }
         }
         PageOutput<TeacherStatisticsPageVo> pageOutput = ConventPage.getPageOutput(voIPage, TeacherStatisticsPageVo.class);

+ 3 - 3
src/main/java/com/xjrsoft/module/hikvision/util/OutInRecordUtil.java

@@ -149,7 +149,7 @@ public class OutInRecordUtil {
             if (personId == null) continue;
 
             int statusInt = item.get("inAndOutType").getAsInt();
-            int status = -1;
+            int status = 1;
             switch (statusInt){
                 case 0:
                     status = 1;
@@ -367,7 +367,7 @@ public class OutInRecordUtil {
             String eventId = item.get("eventId").isJsonNull() ? null : item.get("eventId").getAsString();
             String deviceDesc = item.get("deviceDesc").isJsonNull() ? null : item.get("deviceDesc").getAsString();
 
-            int status = -1;
+            int status = 1;
             for (JsonElement e : doorEventsResponse){
                 JsonObject ele = e.getAsJsonObject();
                 if (ele.get("eventId") == item.get("eventId")){
@@ -525,7 +525,7 @@ public class OutInRecordUtil {
                 String happenTime = eventObject.get("happenTime").getAsString();
                 String extEventPictureURL = dataObject.get("ExtEventPictureURL").getAsString();
                 int statusInt = dataObject.get("ExtEventInOut").getAsInt();
-                int status = statusInt;
+                int status = 1;
                 switch (statusInt){
                     case 0:
                         status = 1;

+ 5 - 1
src/main/java/com/xjrsoft/module/outint/entity/CarOutInRecord.java

@@ -10,6 +10,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.time.LocalDateTime;
 import java.util.Date;
 
 
@@ -78,7 +79,7 @@ public class CarOutInRecord implements Serializable {
     * 记录时间
     */
     @ApiModelProperty("记录时间")
-    private String recordTime;
+    private LocalDateTime recordTime;
     /**
     * 人脸照片
     */
@@ -130,4 +131,7 @@ public class CarOutInRecord implements Serializable {
      */
     @ApiModelProperty("姓名")
     private String name;
+
+    @ApiModelProperty("车辆id(car_message_apply),固定车辆使用")
+    private Long carMessageApplyId;
 }

+ 1 - 0
src/main/resources/mapper/outin/StudentOutInRecordMapper.xml

@@ -39,5 +39,6 @@
         INNER JOIN base_student_school_roll t2 ON t1.user_id = t2.user_id
         WHERE t1.delete_mark = 0 AND t2.delete_mark = 0
         AND t1.record_time BETWEEN #{startTime} AND #{endTime}
+        order by t1.record_time
     </select>
 </mapper>