Kaynağa Gözat

Merge branch 'master' of https://e.coding.net/chuanghaikeji/smartCampus/backend_code

夏文涛 1 yıl önce
ebeveyn
işleme
4debf99dfe

+ 115 - 5
src/main/java/com/template/controller/SmartAttendanceController.java

@@ -248,7 +248,35 @@ public class SmartAttendanceController implements SmartAttendanceControllerAPI {
                 }
                 }
             }
             }
 
 
+
             boolean insertResult = smartAttendanceService.insertAttendanceBatch(attendanceArrayList);
             boolean insertResult = smartAttendanceService.insertAttendanceBatch(attendanceArrayList);
+
+            //            不需要审核则直接推送到百胜
+            if (IfVerification == 1) {
+                DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+                for (SmartAttendance smartAttendance : attendanceArrayList) {
+                    askForLeaveRequest askForLeaveRequest = new askForLeaveRequest();
+                    askForLeaveRequest.setId(smartAttendance.getUserId());
+                    askForLeaveRequest.setReason(smartAttendance.getReason());
+
+                    Date startTime = smartAttendance.getStartTime();
+                    LocalDateTime startDateTime = LocalDateTime.ofInstant(startTime.toInstant(), ZoneId.systemDefault());
+                    String start = startDateTime.format(dateTimeFormatter);
+                    askForLeaveRequest.setStartTime(start);
+
+                    Date endTime = smartAttendance.getEndTime();
+                    LocalDateTime endDateTime = LocalDateTime.ofInstant(endTime.toInstant(), ZoneId.systemDefault());
+                    String end = endDateTime.format(dateTimeFormatter);
+                    askForLeaveRequest.setEndTime(end);
+                    try {
+                        pushBs(askForLeaveRequest);
+                    } catch (Exception e) {
+                        logger.error("请假id为:"+smartAttendance.getId()+"上传失败");
+                    }
+
+                }
+            }
+
             if (!insertResult) {
             if (!insertResult) {
                 return CommonResult.fail("请假数据获取失败");
                 return CommonResult.fail("请假数据获取失败");
             }
             }
@@ -257,6 +285,66 @@ public class SmartAttendanceController implements SmartAttendanceControllerAPI {
         return CommonResult.ok("操作成功");
         return CommonResult.ok("操作成功");
     }
     }
 
 
+
+    /**
+     * 请假数据上传到百胜
+     *
+     * @param request
+     * @throws Exception
+     */
+    public void pushBs(askForLeaveRequest request) throws Exception {
+        SmartStudentVo student = smartUserService.querySmartStudentById(request.getId());
+        if (student == null) {
+            logger.error("不存在:" + request.getId() + " 学生");
+            throw new RuntimeException("不存在:" + request.getId() + " 学生");
+        }
+
+        if (student.getIdentityId().intValue() != eIdentityStatu.Student.getValue()) {
+            logger.error("前用户身份不是学生," + request.getId() + "无法请假!");
+            throw new RuntimeException("前用户身份不是学生," + request.getId() + "无法请假!");
+        }
+
+        String reason = request.getReason() == null ? "学生请假" : request.getReason();
+
+        //region 学生请假
+        String appId = controlConfig.getAppId();
+        String schoolno = controlConfig.getSchoolCode();
+        String timestamp = TimeExchange.DateNowTimeStamo();
+        String appSecret = controlConfig.getAppSecret();
+        String url = controlConfig.getUrl() + "student/addleavebill";
+
+        JSONObject jsonobject = new JSONObject();
+        jsonobject.put("appid", appId);
+        String str = "{\"student_no\":\"" + student.getBsStudentNo() + "\",\"grade_no\":\"" + student.getBsGradeNo() + "\",\"classtab_no\":\"" + student.getBsClassNo() + "\",\"leavebill_content\":\"" + reason + "\",\"leavebill_begindate\":\"" + request.getStartTime() + "\",\"leavebill_enddate\":\"" + request.getEndTime() + "\",\"leavebill_remark\":\"" + "" + "\"}";
+        String aesStr = URLEncoder.encode(AesTestOne.encrypt(str, controlConfig.getAppSecret()), "UTF-8");
+        jsonobject.put("data", aesStr);
+        jsonobject.put("schoolno", schoolno);
+        jsonobject.put("timestamp", timestamp);
+
+        String md5Str = "appid=" + appId + "&data={\"student_no\":\"" + student.getBsStudentNo() + "\",\"grade_no\":\"" + student.getBsGradeNo() + "\",\"classtab_no\":\"" + student.getBsClassNo() + "\",\"leavebill_content\":\"" + reason + "\",\"leavebill_begindate\":\"" + request.getStartTime() + "\",\"leavebill_enddate\":\"" + request.getEndTime() + "\",\"leavebill_remark\":\"" + "" + "\"}" + "&schoolno=" + schoolno + "&timestamp=" + timestamp + "&key=" + appSecret;
+        String sign = CommonUtil.MD5(md5Str);
+        //sign签名
+        jsonobject.put("sign", sign);
+
+        //返回的结果中 code为1表示成功
+        String bsResult = RequestUtils.httpPost(url, jsonobject.toJSONString());
+
+        ObjectMapper objectMapper = new ObjectMapper();
+        BsLeaveVo leave = objectMapper.readValue(bsResult, BsLeaveVo.class);
+
+        if (!bsResult.contains("添加成功")) {
+            logger.error(request.getId() + ":添加失败");
+            throw new RuntimeException(request.getId() + ":添加失败");
+        }
+
+        // URL解码
+        String decodedUrl = URLDecoder.decode(leave.getData(), "UTF-8");
+
+        BsLeaveNoVo leaveNo = objectMapper.readValue(decrypt(decodedUrl, controlConfig.getAppSecret()), BsLeaveNoVo.class);
+        logger.info("成功:" + leaveNo.getLeavebill_no());
+    }
+
+
     @Override
     @Override
     @DESRespondSecret(validated = true)
     @DESRespondSecret(validated = true)
     public CommonResult queryAttendanceList(String date, int classId) {
     public CommonResult queryAttendanceList(String date, int classId) {
@@ -408,6 +496,7 @@ public class SmartAttendanceController implements SmartAttendanceControllerAPI {
 
 
     }
     }
 
 
+
     @Override
     @Override
     public CommonResult historicalAttendance(int userId, String dateTime) {
     public CommonResult historicalAttendance(int userId, String dateTime) {
 
 
@@ -477,12 +566,33 @@ public class SmartAttendanceController implements SmartAttendanceControllerAPI {
     @DESRespondSecret(validated = true)
     @DESRespondSecret(validated = true)
     @PassToken
     @PassToken
     public CommonResult verification(String id) {
     public CommonResult verification(String id) {
-        SmartAttendance attendance = smartAttendanceService.getById(id);
-        if (ObjectUtils.isEmpty(attendance)) {
+        SmartAttendance smartAttendance = smartAttendanceService.getById(id);
+        if (ObjectUtils.isEmpty(smartAttendance)) {
             return CommonResult.fail("该id不存在");
             return CommonResult.fail("该id不存在");
         }
         }
-        attendance.setIfVerification(1);
-        boolean update = smartAttendanceService.updateById(attendance);
+
+        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        askForLeaveRequest askForLeaveRequest = new askForLeaveRequest();
+        askForLeaveRequest.setId(smartAttendance.getUserId());
+        askForLeaveRequest.setReason(smartAttendance.getReason());
+
+        Date startTime = smartAttendance.getStartTime();
+        LocalDateTime startDateTime = LocalDateTime.ofInstant(startTime.toInstant(), ZoneId.systemDefault());
+        String start = startDateTime.format(dateTimeFormatter);
+        askForLeaveRequest.setStartTime(start);
+
+        Date endTime = smartAttendance.getEndTime();
+        LocalDateTime endDateTime = LocalDateTime.ofInstant(endTime.toInstant(), ZoneId.systemDefault());
+        String end = endDateTime.format(dateTimeFormatter);
+        askForLeaveRequest.setEndTime(end);
+        try {
+            pushBs(askForLeaveRequest);
+        } catch (Exception e) {
+            logger.error("请假id为:"+smartAttendance.getId()+"上传失败");
+        }
+
+        smartAttendance.setIfVerification(1);
+        boolean update = smartAttendanceService.updateById(smartAttendance);
         if (update) {
         if (update) {
             return CommonResult.ok();
             return CommonResult.ok();
         }
         }
@@ -687,7 +797,7 @@ public class SmartAttendanceController implements SmartAttendanceControllerAPI {
         LocalDateTime endTime = startTime.plusDays(1);
         LocalDateTime endTime = startTime.plusDays(1);
 
 
 //        获取单人单日的请假数据
 //        获取单人单日的请假数据
-        List<AckDetailVo> ackVos= smartAttendanceService.ackDetail(userId,startTime,endTime);
+        List<AckDetailVo> ackVos = smartAttendanceService.ackDetail(userId, startTime, endTime);
 
 
         return CommonResult.ok(ackVos);
         return CommonResult.ok(ackVos);
     }
     }