Jelajahi Sumber

Merge branch 'pre'

dzx 1 tahun lalu
induk
melakukan
eb33bf0a73

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

@@ -17,7 +17,6 @@ import com.xjrsoft.common.page.PageOutput;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.attendance.dto.AttendanceStatisticDto;
 import com.xjrsoft.module.attendance.dto.StudentDetailsDto;
-import com.xjrsoft.module.attendance.service.IAttendanceRuleCategoryService;
 import com.xjrsoft.module.attendance.vo.ClassStatisticsVo;
 import com.xjrsoft.module.attendance.vo.StudentStatisticsPageVo;
 import com.xjrsoft.module.attendance.vo.TimeRangeVo;
@@ -27,7 +26,6 @@ import com.xjrsoft.module.holiday.entity.HolidayDate;
 import com.xjrsoft.module.holiday.service.IHolidayDateService;
 import com.xjrsoft.module.organization.entity.User;
 import com.xjrsoft.module.organization.service.IUserService;
-import com.xjrsoft.module.outint.entity.CarOutInRecord;
 import com.xjrsoft.module.outint.entity.StudentOutInRecord;
 import com.xjrsoft.module.outint.service.IStudentOutInRecordService;
 import com.xjrsoft.module.outint.vo.StudentOutInRecordVo;
@@ -143,27 +141,20 @@ public class StudentStatisticsController {
                 record.setLeaveCount(leaveCount);
                 int actualCount = 0;
                 Set<Long> userIds = new HashSet<>();
+                Integer lateCount = 0, playTruantCount = 0;
                 for (StudentOutInRecordVo outInRecordVo : notStayMap.get(record.getId())) {
                     if(userIds.contains(outInRecordVo.getUserId())){
                         continue;
                     }
-                    actualCount ++;
-                    userIds.add(outInRecordVo.getUserId());
-                }
-                record.setActualCount(actualCount);
-
-                Integer lateCount = 0, playTruantCount = 0;
-                for (StudentOutInRecordVo outInRecord : notStayMap.get(record.getId())) {
-                    if(userIds.contains(outInRecord.getUserId())){
-                        continue;
-                    }
-                    if("迟到".equals(outInRecord.getAttendanceStatus())){
+                    if("迟到".equals(outInRecordVo.getAttendanceStatus())){
                         lateCount ++;
-                    }else if("旷课".equals(outInRecord.getAttendanceStatus())){
+                    }else if("旷课".equals(outInRecordVo.getAttendanceStatus())){
                         playTruantCount ++;
                     }
-                    userIds.add(outInRecord.getUserId());
+                    actualCount ++;
+                    userIds.add(outInRecordVo.getUserId());
                 }
+                record.setActualCount(actualCount);
                 record.setPlayTruantCount(playTruantCount);
                 record.setLateCount(lateCount);
 

+ 4 - 0
src/main/java/com/xjrsoft/module/attendance/controller/TeacherStatisticsController.java

@@ -12,6 +12,7 @@ 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.AttendanceUserRelation;
 import com.xjrsoft.module.attendance.service.IAttendanceRuleCategoryService;
 import com.xjrsoft.module.attendance.vo.AttendanceRuleDetailsUserVo;
 import com.xjrsoft.module.attendance.vo.TeacherStatisticsPageVo;
@@ -76,6 +77,8 @@ public class TeacherStatisticsController {
         MPJLambdaWrapper<User> queryUser = new MPJLambdaWrapper<>();
         queryUser.disableSubLogicDel().distinct()
                 .eq(ObjectUtil.isNotNull(dto.getDeptId()), UserDeptRelation::getDeptId, dto.getDeptId())
+                .eq(StrUtil.isNotEmpty(dto.getAttendanceMode()), AttendanceUserRelation::getAttendanceMode, dto.getAttendanceMode())
+                .like(StrUtil.isNotEmpty(dto.getCarNumber()), AttendanceUserRelation::getCarNumber, dto.getCarNumber())
                 .like(StrUtil.isNotEmpty(dto.getName()), User::getName, dto.getName())
                 .selectAs(User::getName, TeacherStatisticsPageVo::getTeacherName)
                 .selectAs(User::getId, TeacherStatisticsPageVo::getUserId)
@@ -83,6 +86,7 @@ public class TeacherStatisticsController {
                 .selectAs(Department::getName, TeacherStatisticsPageVo::getDeptName)
                 .innerJoin(BaseTeacher.class, BaseTeacher::getUserId, User::getId)
                 .innerJoin(UserDeptRelation.class, UserDeptRelation::getUserId, User::getId)
+                .leftJoin(AttendanceUserRelation.class, AttendanceUserRelation::getUserId, User::getId)
                 .leftJoin(Department.class, Department::getId, UserDeptRelation::getDeptId);
         IPage<TeacherStatisticsPageVo> voIPage = xjrUserService.selectJoinListPage(ConventPage.getPage(dto), TeacherStatisticsPageVo.class, queryUser);
 

+ 6 - 0
src/main/java/com/xjrsoft/module/attendance/dto/TeacherDetailsDto.java

@@ -23,4 +23,10 @@ public class TeacherDetailsDto extends PageInput {
 
     @ApiModelProperty("部门id")
     private Long deptId;
+
+    @ApiModelProperty("考勤方式")
+    private String attendanceMode;
+
+    @ApiModelProperty("车牌号")
+    private String carNumber;
 }

+ 7 - 4
src/main/java/com/xjrsoft/module/hikvision/util/DataUtil.java

@@ -406,12 +406,10 @@ public class DataUtil {
                 " WHERE t1.delete_mark = 0 AND t2.delete_mark = 0 AND t4.delete_mark = 0";
         List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql, String[].class);
         JsonArray paramArray = new JsonArray();
+        ApiUtil apiUtil = new ApiUtil();
         Map<Integer, String> clientMap = new HashMap<>();
         for(int i = 0; i < list.size(); i ++){
             Map<String, Object> objectMap = list.get(i);
-            if(tableData != null && tableData.containsKey(objectMap.get("id").toString())){
-                continue;
-            }
             JsonObject paramJson = new JsonObject();
             paramJson.addProperty("clientId", i);
             paramJson.addProperty("personId", objectMap.get("id").toString());
@@ -435,6 +433,11 @@ public class DataUtil {
                     break;
             }
             paramJson.addProperty("gender", gender);
+            if(tableData != null && tableData.containsKey(objectMap.get("id").toString())){
+                String apiPath = "/api/resource/v1/person/single/update";
+                apiUtil.doPost(apiPath, paramJson.toString(), null);
+                continue;
+            }
             paramArray.add(paramJson);
 
             clientMap.put(i, objectMap.get("id").toString());
@@ -443,7 +446,7 @@ public class DataUtil {
         String apiPath = "/api/resource/v1/person/batch/add";
         Map<String, String> idMap = new HashMap<>();
         JsonParser jsonParser = new JsonParser();
-        ApiUtil apiUtil = new ApiUtil();
+
         Map<String, String> header = new HashMap<>();
         header.put("tagId", "insert_teacher");
 

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

@@ -330,17 +330,17 @@ public class OutInRecordUtil {
                 }else{//进
                     if(recordTime.isBefore(amEndTime) && recordTime.isAfter(amStartTime)){
                         attendanceStatus = "迟到";
-                        if(recordTime.isAfter(amStartTime.plusMinutes(40))){
+                        if(recordTime.isAfter(amStartTime.plusMinutes(ruleDetails.getOverMinutes()))){
                             attendanceStatus = "旷课";
                         }
                     }else if(recordTime.isBefore(pmEndTime) && recordTime.isAfter(pmStartTime)){
                         attendanceStatus = "迟到";
-                        if(recordTime.isAfter(pmStartTime.plusMinutes(40))){
+                        if(recordTime.isAfter(pmStartTime.plusMinutes(ruleDetails.getOverMinutes()))){
                             attendanceStatus = "旷课";
                         }
                     }else if(recordTime.isBefore(eveningEndTime) && recordTime.isAfter(eveningStartTime)){
                         attendanceStatus = "迟到";
-                        if(recordTime.isAfter(eveningStartTime.plusMinutes(40))){
+                        if(recordTime.isAfter(eveningStartTime.plusMinutes(ruleDetails.getOverMinutes()))){
                             attendanceStatus = "旷课";
                         }
                     }else{

+ 3 - 3
src/main/resources/mapper/outin/StudentOutInRecordMapper.xml

@@ -15,7 +15,7 @@
         SELECT t1.class_id AS id,COUNT(t1.user_id) FROM student_out_in_record t1
         INNER JOIN base_student_school_roll t2 ON t1.user_id = t2.user_id
         WHERE t1.delete_mark = 0 AND t1.status = 0 AND t2.delete_mark = 0
-        AND t2.stduy_status = 'FB3001'
+        AND t2.stduy_status = 'FB3002'
         AND t1.record_time BETWEEN #{startTime} AND #{endTime}
         GROUP BY t1.class_id
     </select>
@@ -24,7 +24,7 @@
         SELECT t1.* FROM student_out_in_record t1
         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 t2.stduy_status = 'FB3002'
+        AND t2.stduy_status = 'FB3001'
         AND t1.record_time BETWEEN #{startTime} AND #{endTime}
         and DATE_FORMAT(t1.record_time, '%Y-%m-%d') not in (
             SELECT holiday_date.date FROM holiday_date WHERE STATUS IN (0, 2) AND delete_status = 0
@@ -35,7 +35,7 @@
         SELECT t1.* FROM student_out_in_record t1
         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 t2.stduy_status = 'FB3001'
+        AND t2.stduy_status = 'FB3002'
         AND t1.record_time BETWEEN #{startTime} AND #{endTime}
         and DATE_FORMAT(t1.record_time, '%Y-%m-%d') not in (
             SELECT holiday_date.date FROM holiday_date WHERE STATUS IN (0, 2) AND delete_status = 0