浏览代码

修改时增加验证逻辑

dzx 1 年之前
父节点
当前提交
7c92f3cbff

+ 1 - 2
src/main/java/com/xjrsoft/module/attendance/controller/AttendanceRuleCategoryController.java

@@ -75,8 +75,7 @@ public class AttendanceRuleCategoryController {
     @ApiOperation(value = "新增考勤规则")
     @SaCheckPermission("attendancerulecategory:add")
     public RT<Boolean> add(@Valid @RequestBody AddAttendanceRuleCategoryDto dto){
-        AttendanceRuleCategory attendanceRuleCategory = BeanUtil.toBean(dto, AttendanceRuleCategory.class);
-        boolean isSuccess = attendanceRuleCategoryService.add(attendanceRuleCategory);
+        boolean isSuccess = attendanceRuleCategoryService.add(dto);
         return RT.ok(isSuccess);
     }
 

+ 5 - 0
src/main/java/com/xjrsoft/module/attendance/mapper/AttendanceRuleCategoryMapper.java

@@ -1,8 +1,12 @@
 package com.xjrsoft.module.attendance.mapper;
 
 import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.attendance.dto.AddAttendanceRuleCategoryDto;
 import com.xjrsoft.module.attendance.entity.AttendanceRuleCategory;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
 * @title: 考勤规则
@@ -13,4 +17,5 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface AttendanceRuleCategoryMapper extends MPJBaseMapper<AttendanceRuleCategory> {
 
+    Integer getExistCount(@Param("dto") AddAttendanceRuleCategoryDto dto);
 }

+ 3 - 2
src/main/java/com/xjrsoft/module/attendance/service/IAttendanceRuleCategoryService.java

@@ -1,6 +1,7 @@
 package com.xjrsoft.module.attendance.service;
 
 import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.attendance.dto.AddAttendanceRuleCategoryDto;
 import com.xjrsoft.module.attendance.entity.AttendanceRuleCategory;
 
 import java.util.List;
@@ -16,10 +17,10 @@ public interface IAttendanceRuleCategoryService extends MPJBaseService<Attendanc
     /**
     * 新增
     *
-    * @param attendanceRuleCategory
+    * @param dto
     * @return
     */
-    Boolean add(AttendanceRuleCategory attendanceRuleCategory);
+    Boolean add(AddAttendanceRuleCategoryDto dto);
 
     /**
     * 更新

+ 15 - 23
src/main/java/com/xjrsoft/module/attendance/service/impl/AttendanceRuleCategoryServiceImpl.java

@@ -1,6 +1,7 @@
 package com.xjrsoft.module.attendance.service.impl;
 
 import cn.dev33.satoken.stp.StpUtil;
+import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.yulichang.base.MPJBaseServiceImpl;
@@ -8,6 +9,7 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.xjrsoft.common.enums.DeleteMark;
 import com.xjrsoft.common.exception.MyException;
 import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.module.attendance.dto.AddAttendanceRuleCategoryDto;
 import com.xjrsoft.module.attendance.entity.AttendanceRuleCategory;
 import com.xjrsoft.module.attendance.entity.AttendanceRuleDetails;
 import com.xjrsoft.module.attendance.entity.AttendanceUserRelation;
@@ -49,25 +51,15 @@ public class AttendanceRuleCategoryServiceImpl extends MPJBaseServiceImpl<Attend
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Boolean add(AttendanceRuleCategory attendanceRuleCategory) {
-        attendanceRuleCategory.setCreateDate(new Date());
-        categoryMapper.insert(attendanceRuleCategory);
-        for (AttendanceRuleDetails attendanceRuleDetails : attendanceRuleCategory.getAttendanceRuleDetailsList()) {
-            attendanceRuleDetails.setAttendanceRuleCategoryId(attendanceRuleCategory.getId());
-            detailsMapper.insert(attendanceRuleDetails);
-        }
+    public Boolean add(AddAttendanceRuleCategoryDto dto) {
+        AttendanceRuleCategory attendanceRuleCategory = BeanUtil.toBean(dto, AttendanceRuleCategory.class);
+
         List<XjrUser> insertList = new ArrayList<>();
         if(attendanceRuleCategory.getRoleId() != null && attendanceRuleCategory.getRoleId() == 2){
             if(attendanceRuleCategory.getAttendanceRange() == 1){
                 //首先判断是否已经存在一个全体教职工的考勤规则
-                Long count = categoryMapper.selectCount(
-                    new QueryWrapper<AttendanceRuleCategory>()
-                    .lambda()
-                    .eq(AttendanceRuleCategory::getRoleId, attendanceRuleCategory.getRoleId())
-                    .eq(AttendanceRuleCategory::getAttendanceRange, attendanceRuleCategory.getAttendanceRange())
-                    .eq(AttendanceRuleCategory::getDeleteMark, DeleteMark.NODELETE.getCode())
-                );
-                if(count > 0){
+                Integer existCount = categoryMapper.getExistCount(dto);
+                if(existCount > 0){
                     throw new MyException("已存在一个全体教职工的考勤规则,无法添加");
                 }
                 List<XjrUser> userList = xjrUserService.list(
@@ -126,14 +118,8 @@ public class AttendanceRuleCategoryServiceImpl extends MPJBaseServiceImpl<Attend
         }else if(attendanceRuleCategory.getRoleId() != null && attendanceRuleCategory.getRoleId() == 3){//学生
             if(attendanceRuleCategory.getAttendanceRange() == 1){
                 //首先判断是否已经存在一个全体学生的考勤规则
-                Long count = categoryMapper.selectCount(
-                    new QueryWrapper<AttendanceRuleCategory>()
-                    .lambda()
-                    .eq(AttendanceRuleCategory::getRoleId, attendanceRuleCategory.getRoleId())
-                    .eq(AttendanceRuleCategory::getAttendanceRange, attendanceRuleCategory.getAttendanceRange())
-                    .eq(AttendanceRuleCategory::getDeleteMark, DeleteMark.NODELETE.getCode())
-                );
-                if(count > 0){
+                Integer existCount = categoryMapper.getExistCount(dto);
+                if(existCount > 0){
                     throw new MyException("已存在一个全体学生的考勤规则,无法添加");
                 }
                 List<XjrUser> userList = xjrUserService.list(
@@ -189,6 +175,12 @@ public class AttendanceRuleCategoryServiceImpl extends MPJBaseServiceImpl<Attend
                 insertList.addAll(userList);
             }
         }
+        attendanceRuleCategory.setCreateDate(new Date());
+        categoryMapper.insert(attendanceRuleCategory);
+        for (AttendanceRuleDetails attendanceRuleDetails : attendanceRuleCategory.getAttendanceRuleDetailsList()) {
+            attendanceRuleDetails.setAttendanceRuleCategoryId(attendanceRuleCategory.getId());
+            detailsMapper.insert(attendanceRuleDetails);
+        }
         for (XjrUser user : insertList) {
             AttendanceUserRelation relation = new AttendanceUserRelation();
             relation.setCreateDate(new Date());

+ 61 - 0
src/main/java/com/xjrsoft/module/hikvision/util/DataUtil.java

@@ -0,0 +1,61 @@
+package com.xjrsoft.module.hikvision.util;
+
+import cn.hutool.db.Db;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.xjrsoft.module.base.entity.BaseClass;
+import com.xjrsoft.module.schedule.util.ScheduleUtil;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author dzx
+ * @date 2024/5/10
+ */
+public class DataUtil {
+
+    public Map<Long, String> insertDepartment(Db db, String tableName, Map<Long, String> gradeMap,
+                                         Map<Long, String> teacherMap, String semesterSerialNo, Map<Long, String> ids, Map<Long, String> classroomMap) throws Exception {
+        String sql = "SELECT * FROM " + tableName + " WHERE delete_mark = 0 and is_graduate = 1";
+        List<BaseClass> dataList = db.query(sql, BaseClass.class);
+
+        Map<Long, String> idMap = new HashMap<>();
+        JsonParser jsonParser = new JsonParser();
+        for (BaseClass baseClass : dataList) {
+            String url  = ScheduleUtil.apiUrl + "class/create";
+            JsonObject paramJson = new JsonObject();
+            paramJson.addProperty("teacherSerialNo", teacherMap.get(baseClass.getTeacherId()));
+            paramJson.addProperty("name", baseClass.getName());
+
+            paramJson.addProperty("semesterSerialNo", semesterSerialNo);
+            paramJson.addProperty("eduYearSerialNo", gradeMap.get(baseClass.getGradeId()));
+            paramJson.addProperty("extendId", baseClass.getId());
+            paramJson.addProperty("classRoomSerialNo", classroomMap.get(baseClass.getClassroomId()));
+            if(ids != null && ids.get(baseClass.getId()) != null){
+                url  = ScheduleUtil.apiUrl + "class/update";
+                paramJson.addProperty("serialNo", ids.get(baseClass.getId()));
+                long timestamp = System.currentTimeMillis();
+                //生成签名
+                String sign = ScheduleUtil.createSign(timestamp);
+                String result = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
+                continue;
+            }
+
+            //获取时间戳
+            long timestamp = System.currentTimeMillis();
+            //生成签名
+            String sign = ScheduleUtil.createSign(timestamp);
+            String result = ScheduleUtil.doPost(url, paramJson.toString(), sign, timestamp);
+            if(result == null){
+                continue;
+            }
+            JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
+            idMap.put(baseClass.getId(), resultJson.get("data").getAsString());
+        }
+        //插入记录表
+//        insertRecord(db, tableName, idMap);
+        return idMap;
+    }
+}

+ 13 - 0
src/main/resources/mapper/attendance/AttendanceRuleCategoryMapper.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xjrsoft.module.attendance.mapper.AttendanceRuleCategoryMapper">
+    <select id="getExistCount" parameterType="com.xjrsoft.module.attendance.dto.AddAttendanceRuleCategoryDto" resultType="java.lang.Integer">
+        SELECT * FROM attendance_rule_category WHERE delete_mark = 0
+        AND role_id = #{dto.roleId} AND attendance_range = #{dto.attendanceRange}
+        AND (( #{dto.startDate} BETWEEN start_date AND end_date) OR ( #{dto.endDate} BETWEEN start_date AND end_date))
+    </select>
+
+
+</mapper>