夏文涛 6 ヶ月 前
コミット
896b7d0450

+ 11 - 0
src/main/java/com/template/api/SmartUserControllerAPI.java

@@ -39,6 +39,17 @@ public interface SmartUserControllerAPI {
     CommonResult changeDepartment(@Validated @RequestBody changeDepartmentRequest cdr, BindingResult bindingResult);
 
     /**
+     * 批量更新希沃id
+     *
+     * @param excelFile excel文件
+     * @return
+     */
+    @PostMapping(value = "importXwno")
+    @ApiOperation(value = "批量更新希沃id", notes = "批量更新希沃id", httpMethod = "POST")
+    CommonResult importXwno(@RequestParam("file") MultipartFile excelFile) throws IOException;
+
+
+    /**
      * 导入用户的百胜编号
      *
      * @param excelFile excel文件

+ 3 - 11
src/main/java/com/template/common/utils/TimeExchange2.java

@@ -615,18 +615,10 @@ public class TimeExchange2 {
 
 
     public static void main(String[] args) throws ParseException {
-        char a = 'A';
-        char b = 'B';
-        int result = b -a;
-
-        String s = "ZY";
-        int ans = 0;
-        for(int i=0;i<s.length();i++) {
-            int num = s.charAt(i) - 'A' + 1;
-            ans = ans * 26 + num;
-        }
+        //2022-3月份 53
+
+        //目前已有35条
 
-        logger.info(String.valueOf(ans));
     }
 
 }

+ 86 - 16
src/main/java/com/template/controller/ScheduleController.java

@@ -84,42 +84,73 @@ public class ScheduleController {
     //0 0 22 * * ?
     @Async
     @Scheduled(cron = "0 0 */1 * * ?")//一个小时
-    //@Scheduled(cron = "0 */1 * * * ?")//1分钟
+    //@Scheduled(cron = "0 */10 * * * ?")//10分钟
     @Transactional(rollbackFor = {Exception.class})
     public void autoDispatch() throws Exception {
 
+        logger.info("1");
         Date dateNow = new Date();
+        logger.info("2");
         String getDate = TimeExchange.getDate();
         try {
             if (scheduleConfig.getIsOpen().equals("1")) {
-
+                logger.info("3");
                 List<SmartAttendance> attendances = new ArrayList<>();
                 List<Integer> deleteAttendances = new ArrayList<>();
-                List<SmartUser> students = smartUserService.queryStudentDatas();
-
+                //判断当前月份是九月前还是九月后 九月前就不包括本年
+                List<String> gradeNames = new ArrayList<>();
+                Integer nowMonth = Integer.valueOf(TimeExchange.getNowMonth());
+                if (nowMonth.intValue() >= 9) {
+                    Integer yearNow = Integer.valueOf(TimeExchange.getYear());
+                    gradeNames.add(yearNow + "级");
+                    gradeNames.add((yearNow.intValue() - 1) + "级");
+                    gradeNames.add((yearNow.intValue() - 2) + "级");
+                } else {
+                    Integer yearNow = Integer.valueOf(TimeExchange.getYear());
+                    gradeNames.add((yearNow.intValue() - 1) + "级");
+                    gradeNames.add((yearNow.intValue() - 2) + "级");
+                    gradeNames.add((yearNow.intValue() - 3) + "级");
+                }
+                logger.info("4");
+                List<Integer> gradeIs = new ArrayList<>();
+                List<String> gradeIds = new ArrayList<>();
+                List<SmartGrade> grades = smartGradeService.getSmartGrades(gradeNames);
+                logger.info("5");
+                for (SmartGrade data : grades) {
+                    gradeIds.add(data.getId()+"");
+                    gradeIs.add(data.getId());
+                }
+                List<SmartUser> students = smartUserService.queryStudentsByGrade(gradeIds);
+                logger.info("6");
 //            SmartUser studentData = smartUserService.getSmartById(1088);
 //            students.add(studentData);
 
                 //循环班级的classUid
-                List<SmartClass> classes = smartClassService.getSmartClasss();
-                List<SmartGrade> grades = smartGradeService.list(null);
+                List<SmartClass> classes = smartClassService.getSmartClasssByGrade(gradeIs);
+                logger.info("7");
 
 //            SmartClass classData = smartClassService.getSmartClassById(204);
 //            classes.add(classData);
 
                 //当天已存在的考勤数据 判断是否重复使用
                 List<SmartAttendance> attendanceList = smartAttendanceService.queryAttendancesNoleave(TimeExchange.getStartOfDayStr(dateNow), TimeExchange.getEndOfDayStr(dateNow));
-
+                logger.info("8");
                 for (SmartClass data : classes) {
+                    logger.info("循环1");
                     Optional<SmartGrade> oGrade = grades.stream().filter(e -> e.getId().equals(data.getGradeId())).findFirst();
+                    logger.info("循环2");
                     //region 获取考勤事件ID
                     //初始化客户端
                     SeewoClient seewoClient = new DefaultSeewoClient(new Account(seewoConfig.getAppId(), seewoConfig.getAppSecret()));
+                    logger.info("循环3");
                     AttendanceRuleListEventByClazzParam param = new AttendanceRuleListEventByClazzParam();
+                    logger.info("循环4");
                     //响应体,MimeType为 application/json
                     AttendanceRuleListEventByClazzParam.RequestBody requestBody = AttendanceRuleListEventByClazzParam.RequestBody.builder()
                             .build();
+                    logger.info("循环5");
                     param.setRequestBody(requestBody);
+                    logger.info("循环6");
                     //query
                     AttendanceRuleListEventByClazzParam.Query query = AttendanceRuleListEventByClazzParam.Query.builder()
                             .appId(seewoConfig.getAppId())
@@ -129,8 +160,11 @@ public class ScheduleController {
                             .page(1)
                             .pageSize(20)
                             .build();
+                    logger.info("循环7");
                     requestBody.setQuery(query);
+                    logger.info("循环8");
                     AttendanceRuleListEventByClazzRequest request = new AttendanceRuleListEventByClazzRequest(param);
+                    logger.info("循环9");
                     // 该接口需要数据权限,请将授权资源id替换至下方,请妥善保管好授权资源id,避免泄露
                     // permissionId位置: 控制台 -> 应用详情 -> 我申请的 -> 已通过的接口 -> 调用范围 -> 审批信息 中查看授权资源的「学校id」或「区域id」
                     request.setPermissionId("");
@@ -142,16 +176,19 @@ public class ScheduleController {
 
                     //考勤事件ID
                     List<AttendanceRuleListEventByClazzResult.DataItem> eventItems = new ArrayList<>();
-
+                    logger.info("循环10");
                     if (result != null && result.getResponseBody().getCode().equals("000000")) {
+                        logger.info("循环11");
                         if (result.getResponseBody().getData() != null) {
+                            logger.info("循环12");
                             eventItems = result.getResponseBody().getData();
+                            logger.info("循环13");
                         }
                     }
                     //endregion
 
                     for (AttendanceRuleListEventByClazzResult.DataItem eventId : eventItems) {
-
+                        logger.info("循环14");
                         //判断考勤是否开始 用考勤事件的开始时间和当前时间判断 考勤规则开始生效了才拉取
                         Date eventStartTime = TimeExchange.StringToDate((getDate + " " + eventId.getAttendStartTime() + ":00"), "yyyy-MM-dd HH:mm:ss");
                         Date nowDate = dateNow;
@@ -159,16 +196,20 @@ public class ScheduleController {
                             continue;
                         }
 
+                        logger.info("循环15");
                         /**
                          * 定时获取考勤
                          */
                         //初始化客户端
                         //SeewoClient seewoClient = new DefaultSeewoClient(new Account(seewoConfig.getAppId(), seewoConfig.getAppSecret()));
                         AttendanceServiceListAttendClassRecordsParam kParam = new AttendanceServiceListAttendClassRecordsParam();
+                        logger.info("循环16");
                         //响应体,MimeType为 application/json
                         AttendanceServiceListAttendClassRecordsParam.RequestBody kRequestBody = AttendanceServiceListAttendClassRecordsParam.RequestBody.builder()
                                 .build();
+                        logger.info("循环17");
                         kParam.setRequestBody(kRequestBody);
+                        logger.info("循环18");
                         //query
                         AttendanceServiceListAttendClassRecordsParam.Query kQuery = AttendanceServiceListAttendClassRecordsParam.Query.builder()
                                 .eventId(eventId.getRuleId())//考勤事件ID 固定写死
@@ -179,57 +220,84 @@ public class ScheduleController {
                                 .schoolUid(seewoConfig.getSchoolId())//学校uid
                                 .attendType(1)//考勤类型 时间考勤(默认):1  课程考勤:2
                                 .build();
+                        logger.info("循环19");
                         kRequestBody.setQuery(kQuery);
+                        logger.info("循环20");
                         kParam.setRequestBody(kRequestBody);
+                        logger.info("循环21");
                         AttendanceServiceListAttendClassRecordsRequest kRequest = new AttendanceServiceListAttendClassRecordsRequest(kParam);
-                        logger.info("入参:" + kRequest);
+                        logger.info("入参1:" + kRequest);
                         //如果想要调用沙箱环境,请通过设置 request 对象的 serverUrl 属性,如:
                         //request.setServerUrl("https://openapi.test.seewo.com")
                         //执行请求,如果想获取到com.seewo.open.sdk.HttpResponse对象,请调用 seewoClient.execute 方法
                         AttendanceServiceListAttendClassRecordsResult kResult = seewoClient.invoke(kRequest);
-                        logger.info("出参:" + kResult);
+                        logger.info("出参1:" + kResult);
 
                         if (kResult != null && kResult.getResponseBody().getCode().equals("000000")) {
+                            logger.info("循环22");
                             List<AttendanceServiceListAttendClassRecordsResult.RecordsItem> items = kResult.getResponseBody().getData().getRecords();
+                            logger.info("循环23");
                             if (students != null && students.size() > 0 && items != null && items.size() > 0) {
-
+                                logger.info("循环24");
                                 List<String> uids = items.stream().map(AttendanceServiceListAttendClassRecordsResult.RecordsItem::getUserUid).distinct().collect(Collectors.toList());
+                                logger.info("循环25");
                                 for (String uid : uids) {
+                                    logger.info("uid"+uid);
+                                    if(!org.springframework.util.StringUtils.hasText(uid)){
+                                        logger.info("循环25.5");
+                                        continue;
+                                    }
+                                    logger.info("循环26");
                                     Optional<SmartUser> student = students.stream().filter(e -> e.getXwStudentUid().equals(uid)).findFirst();
+                                    logger.info("循环27");
                                     if (student != null && student.isPresent()) {
+                                        logger.info("循环28");
                                         List<SmartAttendance> oldAttends = attendanceList.stream().filter(e -> e.getUserId().equals(student.get().getId())
                                                 && e.getRuleId() != null && e.getRuleId().equals(eventId.getRuleId())).collect(Collectors.toList());
+                                        logger.info("循环29");
                                         List<AttendanceServiceListAttendClassRecordsResult.RecordsItem> newAttends = items.stream().filter(e -> e.getUserUid().equals(student.get().getXwStudentUid())).collect(Collectors.toList());
+                                        logger.info("循环30");
                                         if (newAttends != null && newAttends.size() > 0) {
                                             int i = 0;
                                             for (AttendanceServiceListAttendClassRecordsResult.RecordsItem newAttend : newAttends) {
-
+                                                logger.info("循环31");
                                                 if (oldAttends.size() > i) {
+                                                    logger.info("循环32");
                                                     SmartAttendance oldData = new SmartAttendance();
+                                                    logger.info("循环33");
                                                     oldData = oldAttends.get(i);
+                                                    logger.info("循环34");
                                                     if (newAttend.getStatus().intValue() != 6) {
+                                                        logger.info("循环35");
                                                         boolean isUpdate = false;
                                                         Date AttendTime = StringUtils.hasText(newAttend.getAttendTime()) ? TimeExchange.StringToDate((getDate + " " + newAttend.getAttendTime()), "yyyy-MM-dd HH:mm:ss") : TimeExchange.StringToDate((getDate + " " + eventId.getAttendEndTime() + ":00"), "yyyy-MM-dd HH:mm:ss");
+                                                        logger.info("循环36");
                                                         if (oldData.getAttendTime().compareTo(AttendTime) != 0) {
                                                             oldData.setAttendTime(AttendTime);
                                                             isUpdate = true;
                                                         }
+                                                        logger.info("循环37");
                                                         if (newAttend.getStatus().intValue() != oldData.getStatus()) {
                                                             oldData.setStatus(newAttend.getStatus());
                                                             isUpdate = true;
                                                         }
+                                                        logger.info("循环38");
                                                         if (!eventId.getRuleId().equals(oldData.getRuleId())) {
                                                             oldData.setRuleId(eventId.getRuleId());
                                                             isUpdate = true;
                                                         }
+                                                        logger.info("循环39");
                                                         if (isUpdate) {
                                                             attendances.add(oldData);
                                                         }
-                                                    }else{
+                                                        logger.info("循环40");
+                                                    } else {
                                                         deleteAttendances.add(oldData.getId());
                                                     }
                                                 } else {
+                                                    logger.info("循环41");
                                                     if (newAttend.getStatus().intValue() != 6) {//请假数据不通过考勤接口拿 因为考勤给的请假数据没有请假原因和请假时长
+                                                        logger.info("循环42");
                                                         SmartAttendance attendance = new SmartAttendance();
                                                         attendance.setUserId(student.get().getId());
                                                         attendance.setUserUid(newAttend.getUserUid());
@@ -237,10 +305,12 @@ public class ScheduleController {
                                                         attendance.setClassUid(kResult.getResponseBody().getData().getClassUid());
                                                         attendance.setXwUserName(newAttend.getUserName());
                                                         attendance.setXwStudentCode(newAttend.getStudentCode());
-                                                        attendance.setAttendTime(StringUtils.hasText(newAttend.getAttendTime()) ? TimeExchange.StringToDate((getDate+ " " + newAttend.getAttendTime()), "yyyy-MM-dd HH:mm:ss") : TimeExchange.StringToDate((getDate + " " + eventId.getAttendEndTime() + ":00"), "yyyy-MM-dd HH:mm:ss"));
+                                                        attendance.setAttendTime(StringUtils.hasText(newAttend.getAttendTime()) ? TimeExchange.StringToDate((getDate + " " + newAttend.getAttendTime()), "yyyy-MM-dd HH:mm:ss") : TimeExchange.StringToDate((getDate + " " + eventId.getAttendEndTime() + ":00"), "yyyy-MM-dd HH:mm:ss"));
                                                         attendance.setStatus(newAttend.getStatus());
                                                         attendance.setRuleId(eventId.getRuleId());
+                                                        logger.info("循环43");
                                                         attendances.add(attendance);
+                                                        logger.info("循环44");
                                                     }
                                                 }
                                                 i++;
@@ -257,7 +327,7 @@ public class ScheduleController {
                 if (attendances.size() > 0) {
                     smartAttendanceService.saveOrUpdateBatch(attendances);
                 }
-                if(deleteAttendances.size() > 0){
+                if (deleteAttendances.size() > 0) {
                     smartAttendanceService.deleteDatasByids(deleteAttendances);
                 }
             }

+ 8 - 7
src/main/java/com/template/controller/SmartAttendanceController.java

@@ -122,7 +122,6 @@ public class SmartAttendanceController implements SmartAttendanceControllerAPI {
     /**
      * 每一小时获取请假信息
      * 2024-11-12 每五分钟
-     *
      */
     //每小时:0 0 0/1 * * ?
     //每五分钟:0 */5 * * * ?
@@ -240,6 +239,8 @@ public class SmartAttendanceController implements SmartAttendanceControllerAPI {
                     if (user != null && user.isPresent()) {
                         attendance.setUserId(user.get().getId());
                         attendance.setClassId(user.get().getSchoolClass());
+                    } else {
+                        System.out.println("不存在用户userID" + attendance.getXwuid() + attendance.getXwUserName());
                     }
                 }
             }
@@ -275,7 +276,7 @@ public class SmartAttendanceController implements SmartAttendanceControllerAPI {
                     try {
                         pushBs(askForLeaveRequest);
                     } catch (Exception e) {
-                        logger.error("请假id为:"+smartAttendance.getId()+"上传失败");
+                        logger.error("请假id为:" + smartAttendance.getId() + "上传失败");
                     }
 
                 }
@@ -594,7 +595,7 @@ public class SmartAttendanceController implements SmartAttendanceControllerAPI {
             pushBs(askForLeaveRequest);
         } catch (Exception e) {
             e.printStackTrace();
-            logger.error("请假id为:"+smartAttendance.getId()+"上传失败");
+            logger.error("请假id为:" + smartAttendance.getId() + "上传失败");
         }
 
         smartAttendance.setIfVerification(1);
@@ -670,8 +671,8 @@ public class SmartAttendanceController implements SmartAttendanceControllerAPI {
     @Override
     @DESRespondSecret(validated = true)
     @PassToken
-    public CommonResult askForLeaveScreenPage(int currentPage, int pageCount, String keyWord, String ifVerification,Integer gradeId,Integer classId) {
-        PageUtils<AskForLeaveScreenVo> result = smartAttendanceService.askForLeaveScreenPage(currentPage, pageCount, keyWord, ifVerification,gradeId,classId);
+    public CommonResult askForLeaveScreenPage(int currentPage, int pageCount, String keyWord, String ifVerification, Integer gradeId, Integer classId) {
+        PageUtils<AskForLeaveScreenVo> result = smartAttendanceService.askForLeaveScreenPage(currentPage, pageCount, keyWord, ifVerification, gradeId, classId);
 
         return CommonResult.ok(result);
     }
@@ -731,11 +732,11 @@ public class SmartAttendanceController implements SmartAttendanceControllerAPI {
     public CommonResult classHistoricalAttendance(String dateTime, int currentPage, int pageCount, String className) {
 
 //        获取未毕业的班级
-        List<Integer> grades=smartUserService.getNotGraduateGrade();
+        List<Integer> grades = smartUserService.getNotGraduateGrade();
 
         LambdaQueryWrapper<SmartClass> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(ObjectUtils.isNotEmpty(className), SmartClass::getName, className)
-                .in(SmartClass::getGradeId,grades);
+                .in(SmartClass::getGradeId, grades);
         IPage<SmartClass> page = smartClassService.page(new Page<>(currentPage, pageCount), wrapper);
 
 

+ 125 - 51
src/main/java/com/template/controller/SmartUserController.java

@@ -150,13 +150,13 @@ public class SmartUserController implements SmartUserControllerAPI {
         List<SmartDepartment> departments = smartDepartmentService.list(null);
         for (SmartUser user : users) {
             String[] affs = user.getAffiliate().split(",");
-            if(affs != null && affs.length > 0){
+            if (affs != null && affs.length > 0) {
                 Integer first = Integer.valueOf(affs[0]);
                 Optional<SmartUser> osu = StudentUsers.stream().filter(e -> e.getId().intValue() == first.intValue()).findFirst();
-                if(osu != null && osu.isPresent()){
+                if (osu != null && osu.isPresent()) {
                     Optional<SmartClass> osc = sc.stream().filter(e -> e.getId().intValue() == osu.get().getSchoolClass().intValue()).findFirst();
                     Optional<SmartDepartment> od = departments.stream().filter(e -> e.getName().equals(osc.get().getName().contains("2021") ? (osc.get().getName() + "家长") : (osc.get().getName().replace("年级", "") + "家长"))).findFirst();
-                    if(od != null && od.isPresent()) {
+                    if (od != null && od.isPresent()) {
                         user.setDepartmentId(od.get().getId());
                     }
                 }
@@ -560,6 +560,40 @@ public class SmartUserController implements SmartUserControllerAPI {
 
         return result ? CommonResult.ok("移动成功") : CommonResult.fail("移动失败");
     }
+
+    @Override
+    @PassToken
+    public CommonResult importXwno(MultipartFile excelFile) throws IOException {
+        List<SmartUser> result = new ArrayList<>();
+
+        if (excelFile.isEmpty() || excelFile.getSize() == 0) {
+            return CommonResult.fail("压缩包中的excel文件不能为空");
+        }
+
+        String ContentType = excelFile.getContentType();
+        InputStream inputStream = excelFile.getInputStream();
+        if (ContentType.equals(eFileType.Xlsx.getValue())) {
+            CommonResult<List<SmartUser>> resultData = readXwXlsx(inputStream);
+            if (!resultData.isSuccess()) {
+                return resultData;
+            }
+            result = resultData.getData();
+        }
+
+        List<String> gradeIds = new ArrayList<>();
+        gradeIds.add("17");
+        List<SmartUser> users = smartUserService.queryStudentsByGrade(gradeIds);
+        for (SmartUser user : users) {
+            Optional<SmartUser> oUser = result.stream().filter(e -> e.getCardNo().equals(user.getCardNo())).findFirst();
+            if (oUser != null && oUser.isPresent()) {
+                user.setXwStudentUid(oUser.get().getXwStudentUid());
+            }
+        }
+
+        smartUserService.updateUserBatchById(users);
+
+        return CommonResult.ok("操作成功");
+    }
     //endregion
 
     //region 批量新增用户
@@ -965,7 +999,7 @@ public class SmartUserController implements SmartUserControllerAPI {
                     }
 
                     for (SmartUser teacher : teacherDatas) {
-                        if (ObjectUtils.isNotEmpty(teacher.getDuties()) &&  teacher.getDuties().intValue() == eDuties.ClassTeacher.getValue()) {
+                        if (ObjectUtils.isNotEmpty(teacher.getDuties()) && teacher.getDuties().intValue() == eDuties.ClassTeacher.getValue()) {
 
                             Optional<SmartClass> oClass = classDatas.stream().filter(e -> e.getId().equals(teacher.getSchoolClass())).findFirst();
                             if (oClass != null && oClass.isPresent()) {
@@ -1088,6 +1122,48 @@ public class SmartUserController implements SmartUserControllerAPI {
 
     //region 批量新增Xlsx文件读取方法
 
+    //region xw
+    private CommonResult<List<SmartUser>> readXwXlsx(InputStream inputStream) throws IOException {
+        List<String> idCards = new ArrayList<>();
+        List<String> cardNos = new ArrayList<>();
+        List<SmartUser> result = new ArrayList<>();
+        XSSFWorkbook sheets = new XSSFWorkbook(inputStream);
+
+
+        //读取第一张sheet
+        XSSFSheet sheetAt = sheets.getSheetAt(0);
+        DataFormatter dataFormatter = new DataFormatter();
+        try {
+            for (int rowNum = 0; rowNum < sheetAt.getLastRowNum() + 1; rowNum++) {
+                XSSFRow row = sheetAt.getRow(rowNum);
+
+                if (row != null) {
+                    //使用了getStringCellValue()方法来获取值,POI会判断单元格的类型,如果非字符串类型就会抛出上面的异常。
+                    //所以先使用setCellType()方法先将该单元格的类型设置为STRING
+                    //然后poi会根据字符串读取它
+                    //标题 校验
+                    if (rowNum == 0) {
+                    } else {
+                        String xw = dataFormatter.formatCellValue(row.getCell(0));//xwID
+                        if (ObjectUtils.isEmpty(xw)) {
+                            return CommonResult.fail("第" + (rowNum) + "条数据的学号不能为空");
+                        }
+                        String cardNo = dataFormatter.formatCellValue(row.getCell(4));//xwID
+                        SmartUser user = new SmartUser();
+                        user.setCardNo(cardNo);
+                        user.setXwStudentUid(xw);
+                        result.add(user);
+                    }
+                }
+            }
+        } catch (Exception e) {
+            return CommonResult.fail("请按模板格式导入数据");
+        }
+
+        return CommonResult.ok(result);
+    }
+    //endregion
+
     /**
      * Xlsx文件读取方法
      *
@@ -1338,7 +1414,7 @@ public class SmartUserController implements SmartUserControllerAPI {
                             }
 
                             user.setIsCancel(eLogOff.Unlogout.getValue());
-                            String xwid = dataFormatter.formatCellValue(row.getCell(18));//希沃id
+                            String xwid = dataFormatter.formatCellValue(row.getCell(17));//希沃id
                             if (!ObjectUtils.isEmpty(xwid)) {
                                 user.setXwStudentUid(xwid);
                             }
@@ -1814,7 +1890,7 @@ public class SmartUserController implements SmartUserControllerAPI {
                             }
 
                             user.setIsCancel(eLogOff.Unlogout.getValue());
-                            String xwid = dataFormatter.formatCellValue(row.getCell(18));//希沃id
+                            String xwid = dataFormatter.formatCellValue(row.getCell(17));//希沃id
                             if (!ObjectUtils.isEmpty(xwid)) {
                                 user.setXwStudentUid(xwid);
                             }
@@ -2211,13 +2287,13 @@ public class SmartUserController implements SmartUserControllerAPI {
                                 .build();
 
 
-                        List<SmartUser> parentDatas = updateParents.stream().filter(e -> e.getIdentityId().intValue() == eIdentityStatu.Parent.getValue() && (","+e.getAffiliate()+",").contains(","+student.getId()+",")).collect(Collectors.toList());
+                        List<SmartUser> parentDatas = updateParents.stream().filter(e -> e.getIdentityId().intValue() == eIdentityStatu.Parent.getValue() && ("," + e.getAffiliate() + ",").contains("," + student.getId() + ",")).collect(Collectors.toList());
                         List<ParentServiceBatchSaveOrUpdateParentsParam.ParentsItem> parents = new ArrayList<>();
 
                         for (SmartUser parent : parentDatas) {
                             int i = 0;
                             Optional<SmartFamilyIndex> oIndexData = indexs.stream().filter(e -> e.getStudentNo().equals(student.getCardNo()) && e.getParentPhone().equals(parent.getPhone())).findFirst();
-                            if(oIndexData != null && oIndexData.isPresent()){
+                            if (oIndexData != null && oIndexData.isPresent()) {
                                 i = oIndexData.get().getIndexData();
                             }
                             ParentServiceBatchSaveOrUpdateParentsParam.ParentsItem data = ParentServiceBatchSaveOrUpdateParentsParam.ParentsItem.builder()
@@ -3950,7 +4026,6 @@ public class SmartUserController implements SmartUserControllerAPI {
                             }
 
 
-
                             String name = dataFormatter.formatCellValue(row.getCell(4));//姓名
                             if (ObjectUtils.isEmpty(name)) {
                                 return CommonResult.fail("第" + (rowNum) + "条数据的姓名不能为空");
@@ -4009,7 +4084,7 @@ public class SmartUserController implements SmartUserControllerAPI {
                                 continue;
                             }
 
-                            return CommonResult.fail(name+"是新生");
+                            return CommonResult.fail(name + "是新生");
                         }
 
                     }
@@ -4237,7 +4312,7 @@ public class SmartUserController implements SmartUserControllerAPI {
                                 continue;
                             }
 
-                            return CommonResult.fail(name+"是新生");
+                            return CommonResult.fail(name + "是新生");
                         }
 
                     }
@@ -4518,7 +4593,7 @@ public class SmartUserController implements SmartUserControllerAPI {
             }
             //endregion
 
-        } else if (isur.getIdentityId().intValue() == eIdentityStatu.Teacher.getValue() || isur.getIdentityId().intValue() == 18 || isur.getIdentityId().intValue() == 19 || isur.getIdentityId().intValue() == 20 || isur.getIdentityId().intValue() == 14 ) {//老师
+        } else if (isur.getIdentityId().intValue() == eIdentityStatu.Teacher.getValue() || isur.getIdentityId().intValue() == 18 || isur.getIdentityId().intValue() == 19 || isur.getIdentityId().intValue() == 20 || isur.getIdentityId().intValue() == 14) {//老师
 
             //region 老师参数必填判断:职称、手机号
             if (isur.getTitle() == null) {
@@ -4657,7 +4732,7 @@ public class SmartUserController implements SmartUserControllerAPI {
                         set.setUserId(su.getId());
                         set.setTermId(semester.getId());
                         set.setTerm(semester.getName());
-                        if (ObjectUtils.isNotEmpty(su.getDuties()) &&  su.getDuties().intValue() == eDuties.ClassTeacher.getValue()) {//班主任才有年级和班级
+                        if (ObjectUtils.isNotEmpty(su.getDuties()) && su.getDuties().intValue() == eDuties.ClassTeacher.getValue()) {//班主任才有年级和班级
                             set.setGradeId(su.getGrade() == null || su.getGrade() == "" ? null : Integer.valueOf(su.getGrade()));
                             if (gradeData != null) {
                                 set.setGradeName(gradeData.getName());
@@ -4926,7 +5001,7 @@ public class SmartUserController implements SmartUserControllerAPI {
         String oldAffiliate = su.getAffiliate();
         Integer oldSchoolClass = su.getOldSchoolClass();
         if (ObjectUtils.isEmpty(oldSchoolClass)) {
-           oldSchoolClass = su.getSchoolClass();
+            oldSchoolClass = su.getSchoolClass();
         }
 
         String oldStaffNo = su.getBsStaffCode();
@@ -5018,7 +5093,7 @@ public class SmartUserController implements SmartUserControllerAPI {
                     //endregion
 
                 } else if (oldIdentity.intValue() == eIdentityStatu.Teacher.getValue()) {
-                    if(oldSchoolClass != null){
+                    if (oldSchoolClass != null) {
                         //获取班级Uid
                         SmartClass classData = smartClassService.getSmartClassById(oldSchoolClass);
                         if (classData == null) {
@@ -5169,7 +5244,7 @@ public class SmartUserController implements SmartUserControllerAPI {
                     }
                     //endregion
                 } else if (oldIdentity.intValue() == eIdentityStatu.Teacher.getValue()) {
-                    if(oldSchoolClass != null){
+                    if (oldSchoolClass != null) {
                         //获取班级Uid
                         SmartClass oldClassData = smartClassService.getSmartClassById(oldSchoolClass);
                         if (oldClassData == null) {
@@ -5254,7 +5329,7 @@ public class SmartUserController implements SmartUserControllerAPI {
 
             }
 
-        } else if (usur.getIdentityId().intValue() == eIdentityStatu.Teacher.getValue() || usur.getIdentityId().intValue() == 18 || usur.getIdentityId().intValue() == 19 || usur.getIdentityId().intValue() == 20 || usur.getIdentityId().intValue() == 14 ) {//教师
+        } else if (usur.getIdentityId().intValue() == eIdentityStatu.Teacher.getValue() || usur.getIdentityId().intValue() == 18 || usur.getIdentityId().intValue() == 19 || usur.getIdentityId().intValue() == 20 || usur.getIdentityId().intValue() == 14) {//教师
             if (!changeIdentity) {
                 //region 希沃更新教师数据
                 if (useXw == 1) {
@@ -5429,7 +5504,7 @@ public class SmartUserController implements SmartUserControllerAPI {
                     CommonResult<String> insertBsTeacher;
                     if (ObjectUtils.isNotEmpty(su.getBsStaffCode())) {
                         insertBsTeacher = updateBsTeacher(su, departmentNo, startTime, endTime);
-                    }else {
+                    } else {
                         insertBsTeacher = bsInsertTeacher(su, departmentNo, startTime, endTime);
                     }
 
@@ -5485,7 +5560,7 @@ public class SmartUserController implements SmartUserControllerAPI {
             List<SmartEvaluateTeacher> updateTeachers = new ArrayList<>();
             SmartClass classData = null;
             SmartGrade gradeData = null;
-            if (ObjectUtils.isNotEmpty(su.getDuties()) &&  su.getDuties().intValue() == eDuties.ClassTeacher.getValue()) {
+            if (ObjectUtils.isNotEmpty(su.getDuties()) && su.getDuties().intValue() == eDuties.ClassTeacher.getValue()) {
                 classData = smartClassService.getSmartClassById(su.getSchoolClass());
                 gradeData = smartGradeService.querySmartGradeById(Integer.valueOf(su.getGrade()));
             }
@@ -5493,7 +5568,7 @@ public class SmartUserController implements SmartUserControllerAPI {
                 for (SmartSemester semester : semesters) {
                     Optional<SmartEvaluateTeacher> oTeacher = eTeachers.stream().filter(e -> e.getTermId().equals(semester.getId())).findFirst();
                     if (oTeacher != null && oTeacher.isPresent()) {
-                        if (ObjectUtils.isNotEmpty(su.getDuties()) &&  su.getDuties().intValue() == eDuties.ClassTeacher.getValue()) {
+                        if (ObjectUtils.isNotEmpty(su.getDuties()) && su.getDuties().intValue() == eDuties.ClassTeacher.getValue()) {
                             oTeacher.get().setGradeId(gradeData.getId());
                             oTeacher.get().setGradeName(gradeData.getName());
                             oTeacher.get().setClassId(classData.getId());
@@ -5768,7 +5843,7 @@ public class SmartUserController implements SmartUserControllerAPI {
         }
 
         if (!result.getResponseBody().getCode().equals("000000")) {
-            return CommonResult.fail("希沃平台:" +su.getName()+""+ result.getResponseBody().getMessage());
+            return CommonResult.fail("希沃平台:" + su.getName() + "" + result.getResponseBody().getMessage());
         }
 
         return CommonResult.ok("更新成功");
@@ -6332,8 +6407,8 @@ public class SmartUserController implements SmartUserControllerAPI {
     public CommonResult bsEUpdateStudent(SmartUser su, String bsClassNo, String startDate, String endDate) throws
             Exception {
 
-        if(su.getName().equals("欧阳丹")){
-String sds = "";
+        if (su.getName().equals("欧阳丹")) {
+            String sds = "";
         }
         //region 更新百胜学生信息
         String appId = controlConfig.getAppId();
@@ -6376,7 +6451,7 @@ String sds = "";
     //region 百胜更新学生信息 给设置时间组接口用的
     public CommonResult bsTUpdateStudent(SmartUser su, String bsClassNo, String startDate, String endDate) throws
             Exception {
-        if(su.getName().equals("辛语涵")){
+        if (su.getName().equals("辛语涵")) {
             String sdsd = "";
         }
         //region 更新百胜学生信息
@@ -6686,7 +6761,7 @@ String sds = "";
     @Override
     @DESRespondSecret(validated = true)
     public CommonResult queryPageSmartUser(int currentPage, int pageCount, Integer departmentId, String
-            name,Integer ifGraduate, String userhead) {
+            name, Integer ifGraduate, String userhead) {
         //region 角色判断
         String userID = AesUtils.decrypt(userhead);
         SmartUser operateData = smartUserService.getSmartById(Integer.valueOf(userID));
@@ -6744,7 +6819,7 @@ String sds = "";
 
         PageUtils<UserVo> result = null;
         if (authDepartments != null && authDepartments.size() > 0) {
-            result = smartUserService.querySmartUserPages(currentPage, pageCount, authDepartments, name,ifGraduate);
+            result = smartUserService.querySmartUserPages(currentPage, pageCount, authDepartments, name, ifGraduate);
         } else {
             IPage<UserVo> userData = new Page<>();
             result = new PageUtils<UserVo>(userData);
@@ -6849,13 +6924,13 @@ String sds = "";
                     data.setManageSchoolClassIds(classIds);
 
 
-                    LambdaQueryWrapper<SmartClass> wrapper=new LambdaQueryWrapper<>();
-                    wrapper.in(SmartClass::getId,classIds);
+                    LambdaQueryWrapper<SmartClass> wrapper = new LambdaQueryWrapper<>();
+                    wrapper.in(SmartClass::getId, classIds);
                     List<SmartClass> list = smartClassService.list(wrapper);
 
                     ArrayList<ManageClassGroupVo> vos = new ArrayList<>();
                     for (Integer gradeId : gradeIds) {
-                        List<SmartClass> smartClasses=list.stream().filter(e->e.getGradeId().equals(gradeId)).collect(Collectors.toList());
+                        List<SmartClass> smartClasses = list.stream().filter(e -> e.getGradeId().equals(gradeId)).collect(Collectors.toList());
 
                         ManageClassGroupVo vo = new ManageClassGroupVo();
                         vo.setId(gradeId);
@@ -6866,7 +6941,6 @@ String sds = "";
                 }
 
 
-
             }
         }
 
@@ -7640,7 +7714,7 @@ String sds = "";
     @Override
     @PassToken
     @DESRespondSecret(validated = true)
-    public CommonResult appSaveClass(AppSaveClassDto dto) throws Exception{
+    public CommonResult appSaveClass(AppSaveClassDto dto) throws Exception {
         Integer schoolClass = dto.getSchoolClass();
 //        Integer departmentId = dto.getDepartmentId();
         List<Integer> ids = dto.getIds();
@@ -7648,9 +7722,9 @@ String sds = "";
         //SeewoClient seewoClient = new DefaultSeewoClient(new Account(seewoConfig.getAppId(), seewoConfig.getAppSecret()));
 
 //        通过班级找学生部门
-        LambdaQueryWrapper<SmartUser> wrapper=new LambdaQueryWrapper<>();
-        wrapper.eq(SmartUser::getSchoolClass,schoolClass)
-                .eq(SmartUser::getIdentityId,2);
+        LambdaQueryWrapper<SmartUser> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(SmartUser::getSchoolClass, schoolClass)
+                .eq(SmartUser::getIdentityId, 2);
         List<SmartUser> list = smartUserService.list(wrapper);
         if (ObjectUtils.isEmpty(list)) {
             return CommonResult.fail("请先加入学生后在选择添加未分组学生");
@@ -7815,7 +7889,7 @@ String sds = "";
                         }
                         //endregion
                     } else if (oldIdentity.intValue() == eIdentityStatu.Teacher.getValue()) {
-                        if(oldSchoolClass != null){
+                        if (oldSchoolClass != null) {
                             //获取班级Uid
                             SmartClass oldClassData = smartClassService.getSmartClassById(oldSchoolClass);
                             if (oldClassData == null) {
@@ -7903,7 +7977,7 @@ String sds = "";
             }
 
             int result = smartUserService.updateSmartUser(su);
-            if (result<=0) {
+            if (result <= 0) {
                 return CommonResult.fail("添加失败");
             }
 //        修改需同步到海康平台
@@ -7927,11 +8001,11 @@ String sds = "";
     @Override
     @PassToken
     @DESRespondSecret(validated = true)
-    public CommonResult appListClass(String keyWord){
-        LambdaQueryWrapper<SmartUser> wrapper=new LambdaQueryWrapper<>();
-        wrapper.eq(SmartUser::getDepartmentId,286)
-                        .eq(SmartUser::getIdentityId,2)
-                .like(ObjectUtils.isNotEmpty(keyWord),SmartUser::getName,keyWord);
+    public CommonResult appListClass(String keyWord) {
+        LambdaQueryWrapper<SmartUser> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(SmartUser::getDepartmentId, 286)
+                .eq(SmartUser::getIdentityId, 2)
+                .like(ObjectUtils.isNotEmpty(keyWord), SmartUser::getName, keyWord);
         List<SmartUser> list = smartUserService.list(wrapper);
         return CommonResult.ok(list);
     }
@@ -7940,7 +8014,7 @@ String sds = "";
     @PassToken
     @DESRespondSecret(validated = true)
     public CommonResult manageClassGroup() {
-        LambdaQueryWrapper<SmartGrade> wrapper=new LambdaQueryWrapper<>();
+        LambdaQueryWrapper<SmartGrade> wrapper = new LambdaQueryWrapper<>();
         wrapper.orderByAsc(SmartGrade::getGradeNo);
         List<SmartGrade> gradeList = smartGradeService.list(wrapper);
         List<SmartClass> smartClassList = smartClassService.list(new LambdaQueryWrapper<SmartClass>().orderByAsc(SmartClass::getClassNo));
@@ -7948,7 +8022,7 @@ String sds = "";
         for (SmartGrade smartGrade : gradeList) {
             ManageClassGroupVo vo = new ManageClassGroupVo();
             Integer id = smartGrade.getId();
-            List<SmartClass> smartClasses=smartClassList.stream().filter(e->e.getGradeId().equals(id)).collect(Collectors.toList());
+            List<SmartClass> smartClasses = smartClassList.stream().filter(e -> e.getGradeId().equals(id)).collect(Collectors.toList());
             vo.setId(id);
             vo.setName(smartGrade.getName());
             vo.setChildren(smartClasses);
@@ -7967,8 +8041,8 @@ String sds = "";
         }
         String manageGrade = byId.getManageGrade();
         String manageSchoolClass = byId.getManageSchoolClass();
-        List<SmartGrade> grades=smartGradeService.getManageGrade(manageGrade);
-        List<SmartClass> classes=smartClassService.getManageClass(manageSchoolClass);
+        List<SmartGrade> grades = smartGradeService.getManageGrade(manageGrade);
+        List<SmartClass> classes = smartClassService.getManageClass(manageSchoolClass);
         ArrayList<ManageClassVo> vos = new ArrayList<>();
         for (SmartGrade grade : grades) {
             String gradeName = grade.getName();
@@ -7980,7 +8054,7 @@ String sds = "";
                 ManageClassVo vo = new ManageClassVo();
                 vo.setGradeId(gradeId);
                 vo.setClassId(classId);
-                vo.setName(gradeName+"/"+className);
+                vo.setName(gradeName + "/" + className);
                 vos.add(vo);
             }
         }
@@ -8090,7 +8164,7 @@ String sds = "";
 
                 String name = sure != null ? sure.getName() : null;
                 Integer ifGraduate = sure != null ? sure.getIfGraduate() : null;
-                List<SmartUser> users = smartUserService.querySmartUsers(authDepartments, name,ifGraduate);
+                List<SmartUser> users = smartUserService.querySmartUsers(authDepartments, name, ifGraduate);
 
                 List<String> affiliates = new ArrayList<>();
                 List<String> affiliateStr = users.stream().map(SmartUser::getAffiliate).distinct().collect(Collectors.toList());
@@ -8353,7 +8427,7 @@ String sds = "";
                     if (gauageStrs.contains("是否毕业")) {
                         if (ObjectUtils.isEmpty(user.getIfGraduate())) {
                             dataRow.createCell(valueIndex).setCellValue("在校");//是否毕业
-                        }else{
+                        } else {
                             dataRow.createCell(valueIndex).setCellValue("毕业");//是否毕业
                         }
                         valueIndex++;
@@ -9040,7 +9114,7 @@ String sds = "";
 
     //region 获取班级下的学生
     @Override
-    public CommonResult queryClassUser(int userId, String keyWord,Integer classId) {
+    public CommonResult queryClassUser(int userId, String keyWord, Integer classId) {
         SmartUser userData = smartUserService.getSmartById(userId);
         if (userData == null) {
             return CommonResult.fail("未查到用户信息,获取失败");
@@ -9071,7 +9145,7 @@ String sds = "";
         String departmentName2;
         if (classData.getName().contains("临时")) {
             departmentName2 = classData.getName().replace("班级", "");
-        }else {
+        } else {
             departmentName2 = classData.getName().replace("年级", "") + "学生";
         }
 
@@ -9274,7 +9348,7 @@ String sds = "";
                 }
                 break;
             case 9:
-                if(currentDate.getMonthValue() > 9){
+                if (currentDate.getMonthValue() > 9) {
                     endYear = endYear + 1;
                 }
                 break;

+ 3 - 3
src/main/resources/application-prod.yml

@@ -35,9 +35,9 @@ spring:
         max-wait: 60000s
 mybatis-plus:
   mapper-locations: classpath:/mapper/template/*.xml
-#  configuration:
+  configuration:
     #开启sql打印
-#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
     #    #关闭sql打印
 #    log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl
   global-config:
@@ -88,7 +88,7 @@ tencentcloud:
 #1:开启
 #0:关闭
 schedule:
-  isOpen: 0
+  isOpen: 1
 
 ding:
   #钉钉配置

+ 1 - 0
src/main/resources/mapper/template/SmartUserMapper.xml

@@ -68,6 +68,7 @@
         <if test="ifGraduate != null and ifGraduate == 0">
             and if_graduate is null
         </if>
+        order by department_id
     </select>
 
     <select id="querySmartUserNoAuthPages" resultType="com.template.model.vo.UserVo" resultMap="smartUserPageMap">