dzx преди 1 година
родител
ревизия
003f0c3a4c

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

@@ -2,13 +2,18 @@ package com.xjrsoft.module.attendance.controller;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonParser;
 import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.page.PageOutput;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.attendance.dto.AddAttendanceRuleCategoryDto;
+import com.xjrsoft.module.attendance.dto.AddAttendanceUserRelationDto;
 import com.xjrsoft.module.attendance.dto.AttendanceRuleCategoryPageDto;
 import com.xjrsoft.module.attendance.dto.UpdateAttendanceRuleCategoryDto;
 import com.xjrsoft.module.attendance.entity.AttendanceRuleCategory;
@@ -28,6 +33,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -67,7 +73,19 @@ public class AttendanceRuleCategoryController {
         if (attendanceRuleCategory == null) {
            return RT.error("找不到此数据!");
         }
-        return RT.ok(BeanUtil.toBean(attendanceRuleCategory, AttendanceRuleCategoryVo.class));
+        AttendanceRuleCategoryVo categoryVo = BeanUtil.toBean(attendanceRuleCategory, AttendanceRuleCategoryVo.class);
+        if(attendanceRuleCategory.getUserRelation() != null && !"".equals(attendanceRuleCategory.getUserRelation())){
+            JsonParser parser = new JsonParser();
+            JsonArray asJsonArray = parser.parse(attendanceRuleCategory.getUserRelation()).getAsJsonArray();
+            List<AddAttendanceUserRelationDto> attendanceUserRelationList = new ArrayList<>();
+            for (JsonElement jsonElement : asJsonArray) {
+                AddAttendanceUserRelationDto relationDto = JSONUtil.toBean(jsonElement.getAsJsonObject().toString(), AddAttendanceUserRelationDto.class);
+                attendanceUserRelationList.add(relationDto);
+            }
+            categoryVo.setAttendanceUserRelationList(attendanceUserRelationList);
+        }
+
+        return RT.ok(categoryVo);
     }
 
 

+ 1 - 3
src/main/java/com/xjrsoft/module/attendance/entity/AttendanceRuleCategory.java

@@ -124,9 +124,7 @@ public class AttendanceRuleCategory implements Serializable {
     * attendanceUserRelation
     */
     @ApiModelProperty("attendanceUserRelation子表")
-    @TableField(exist = false)
-    @EntityMapping(thisField = "id", joinField = "attendanceRuleCategoryId")
-    private List<AttendanceUserRelation> attendanceUserRelationList;
+    private String userRelation;
 
     @ApiModelProperty("非考勤周期是否允许进出(1:是 0:否)")
     private Integer notCycleIsInOut;

+ 33 - 29
src/main/java/com/xjrsoft/module/attendance/service/impl/AttendanceRuleCategoryServiceImpl.java

@@ -10,6 +10,7 @@ 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.dto.AddAttendanceUserRelationDto;
 import com.xjrsoft.module.attendance.dto.UpdateAttendanceRuleCategoryDto;
 import com.xjrsoft.module.attendance.entity.AttendanceRuleCategory;
 import com.xjrsoft.module.attendance.entity.AttendanceRuleDetails;
@@ -24,6 +25,7 @@ import com.xjrsoft.module.student.entity.BaseStudent;
 import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll;
 import com.xjrsoft.module.teacher.entity.BaseTeacher;
 import com.xjrsoft.module.teacher.entity.XjrUser;
+import com.yomahub.liteflow.util.JsonUtil;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -54,6 +56,7 @@ public class AttendanceRuleCategoryServiceImpl extends MPJBaseServiceImpl<Attend
     @Transactional(rollbackFor = Exception.class)
     public Boolean add(AddAttendanceRuleCategoryDto dto) {
         AttendanceRuleCategory attendanceRuleCategory = BeanUtil.toBean(dto, AttendanceRuleCategory.class);
+        attendanceRuleCategory.setUserRelation(JsonUtil.toJsonString(dto.getAttendanceUserRelationList()));
 
         List<XjrUser> insertList = new ArrayList<>();
         if(attendanceRuleCategory.getRoleId() != null && attendanceRuleCategory.getRoleId() == 2){
@@ -74,13 +77,13 @@ public class AttendanceRuleCategoryServiceImpl extends MPJBaseServiceImpl<Attend
                 insertList.addAll(userList);
             }else if(attendanceRuleCategory.getAttendanceRange() == 2){
                 List<Long> deptIds = new ArrayList<>();
-                for (AttendanceUserRelation relation : attendanceRuleCategory.getAttendanceUserRelationList()) {
+                for (AddAttendanceUserRelationDto relation : dto.getAttendanceUserRelationList()) {
                     if(relation.getDeptId() != null){
                         deptIds.add(relation.getDeptId());
                     }
                 }
                 List<Long> userIds = new ArrayList<>();
-                for (AttendanceUserRelation relation : attendanceRuleCategory.getAttendanceUserRelationList()) {
+                for (AddAttendanceUserRelationDto relation : dto.getAttendanceUserRelationList()) {
                     if(relation.getUserId() != null){
                         userIds.add(relation.getUserId());
                     }
@@ -95,27 +98,27 @@ public class AttendanceRuleCategoryServiceImpl extends MPJBaseServiceImpl<Attend
                     .eq(BaseTeacher::getDeleteMark, DeleteMark.NODELETE.getCode())
                     .eq(XjrUser::getDeleteMark, DeleteMark.NODELETE.getCode())
                     .in(!deptIds.isEmpty(), UserDeptRelation::getDeptId, deptIds)
-                    .in(!userIds.isEmpty(), XjrUser::getId, userIds)
+                    .in(!userIds.isEmpty(), XjrUser::getId, userIds).or()
                 );
                 //查询这部分人中是否已经有人有规则了
                 List<Long> relationUserIds = userList.stream().map(XjrUser::getId).collect(Collectors.toList());
                 List<XjrUser> relations = xjrUserService.list(
-                    new MPJLambdaWrapper<XjrUser>()
+                    new MPJLambdaWrapper<XjrUser>().distinct()
                     .select(XjrUser::getId)
                     .select(XjrUser.class, x -> VoToColumnUtil.fieldsToColumns(XjrUser.class).contains(x.getProperty()))
                     .leftJoin(AttendanceUserRelation.class, AttendanceUserRelation::getUserId, XjrUser::getId)
                     .eq(AttendanceUserRelation::getDeleteMark, DeleteMark.NODELETE.getCode())
-                    .in(AttendanceUserRelation::getUserId, relationUserIds)
+                    .in(!relationUserIds.isEmpty(), AttendanceUserRelation::getUserId, relationUserIds)
                 );
-                String peopleName = "";
-                for (int i = 0; i < relations.size(); i ++){
-                    if(i > 0){
-                        peopleName += ",";
-                    }
-                    peopleName += relations.get(i).getName();
-                }
+//                String peopleName = "";
+//                for (int i = 0; i < relations.size(); i ++){
+//                    if(i > 0){
+//                        peopleName += ",";
+//                    }
+//                    peopleName += relations.get(i).getName();
+//                }
                 if(!relations.isEmpty()){
-                    throw new MyException("以下教职工:【" + peopleName + "】已绑定考勤规则,无法添加");
+                    throw new MyException("指定教职工中已有绑定考勤规则,无法添加");
                 }
                 insertList.addAll(userList);
             }
@@ -137,13 +140,13 @@ public class AttendanceRuleCategoryServiceImpl extends MPJBaseServiceImpl<Attend
                 insertList.addAll(userList);
             }else if(attendanceRuleCategory.getAttendanceRange() == 2){
                 List<Long> classIds = new ArrayList<>();
-                for (AttendanceUserRelation relation : attendanceRuleCategory.getAttendanceUserRelationList()) {
+                for (AddAttendanceUserRelationDto relation : dto.getAttendanceUserRelationList()) {
                     if(relation.getClassId() != null){
                         classIds.add(relation.getClassId());
                     }
                 }
                 List<Long> userIds = new ArrayList<>();
-                for (AttendanceUserRelation relation : attendanceRuleCategory.getAttendanceUserRelationList()) {
+                for (AddAttendanceUserRelationDto relation : dto.getAttendanceUserRelationList()) {
                     if(relation.getUserId() != null){
                         userIds.add(relation.getUserId());
                     }
@@ -162,22 +165,22 @@ public class AttendanceRuleCategoryServiceImpl extends MPJBaseServiceImpl<Attend
                 //查询这部分人中是否已经有人有规则了
                 List<Long> relationUserIds = userList.stream().map(XjrUser::getId).collect(Collectors.toList());
                 List<XjrUser> relations = xjrUserService.list(
-                    new MPJLambdaWrapper<XjrUser>()
+                    new MPJLambdaWrapper<XjrUser>().distinct()
                     .select(XjrUser::getId)
                     .select(XjrUser.class, x -> VoToColumnUtil.fieldsToColumns(XjrUser.class).contains(x.getProperty()))
                     .leftJoin(AttendanceUserRelation.class, AttendanceUserRelation::getUserId, XjrUser::getId)
                     .eq(AttendanceUserRelation::getDeleteMark, DeleteMark.NODELETE.getCode())
-                    .in(AttendanceUserRelation::getUserId, relationUserIds)
+                    .in(!relationUserIds.isEmpty(), AttendanceUserRelation::getUserId, relationUserIds)
                 );
-                String peopleName = "";
-                for (int i = 0; i < relations.size(); i ++){
-                    if(i > 0){
-                        peopleName += ",";
-                    }
-                    peopleName += relations.get(i).getName();
-                }
+//                String peopleName = "";
+//                for (int i = 0; i < relations.size(); i ++){
+//                    if(i > 0){
+//                        peopleName += ",";
+//                    }
+//                    peopleName += relations.get(i).getName();
+//                }
                 if(!relations.isEmpty()){
-                    throw new MyException("以下学生:【" + peopleName + "】已绑定考勤规则,无法添加");
+                    throw new MyException("已有学生绑定考勤规则,无法添加");
                 }
                 insertList.addAll(userList);
             }
@@ -204,6 +207,7 @@ public class AttendanceRuleCategoryServiceImpl extends MPJBaseServiceImpl<Attend
     @Transactional(rollbackFor = Exception.class)
     public Boolean update(UpdateAttendanceRuleCategoryDto dto) {
         AttendanceRuleCategory attendanceRuleCategory = BeanUtil.toBean(dto, AttendanceRuleCategory.class);
+        attendanceRuleCategory.setUserRelation(JsonUtil.toJsonString(dto.getAttendanceUserRelationList()));
         if(attendanceRuleCategory.getAttendanceRange() == 1){
             Integer count = categoryMapper.getExistCountNEId(dto);
             if(count > 0){
@@ -259,13 +263,13 @@ public class AttendanceRuleCategoryServiceImpl extends MPJBaseServiceImpl<Attend
                 insertList.addAll(userList);
             }else if(attendanceRuleCategory.getAttendanceRange() == 2){
                 List<Long> deptIds = new ArrayList<>();
-                for (AttendanceUserRelation relation : attendanceRuleCategory.getAttendanceUserRelationList()) {
+                for (AddAttendanceUserRelationDto relation : dto.getAttendanceUserRelationList()) {
                     if(relation.getDeptId() != null){
                         deptIds.add(relation.getDeptId());
                     }
                 }
                 List<Long> userIds = new ArrayList<>();
-                for (AttendanceUserRelation relation : attendanceRuleCategory.getAttendanceUserRelationList()) {
+                for (AddAttendanceUserRelationDto relation : dto.getAttendanceUserRelationList()) {
                     if(relation.getUserId() != null){
                         userIds.add(relation.getUserId());
                     }
@@ -326,13 +330,13 @@ public class AttendanceRuleCategoryServiceImpl extends MPJBaseServiceImpl<Attend
                 insertList.addAll(userList);
             }else if(attendanceRuleCategory.getAttendanceRange() == 2){
                 List<Long> classIds = new ArrayList<>();
-                for (AttendanceUserRelation relation : attendanceRuleCategory.getAttendanceUserRelationList()) {
+                for (AddAttendanceUserRelationDto relation : dto.getAttendanceUserRelationList()) {
                     if(relation.getClassId() != null){
                         classIds.add(relation.getClassId());
                     }
                 }
                 List<Long> userIds = new ArrayList<>();
-                for (AttendanceUserRelation relation : attendanceRuleCategory.getAttendanceUserRelationList()) {
+                for (AddAttendanceUserRelationDto relation : dto.getAttendanceUserRelationList()) {
                     if(relation.getUserId() != null){
                         userIds.add(relation.getUserId());
                     }

+ 5 - 0
src/main/java/com/xjrsoft/module/attendance/vo/AttendanceRuleCategoryVo.java

@@ -1,5 +1,6 @@
 package com.xjrsoft.module.attendance.vo;
 
+import com.xjrsoft.module.attendance.dto.AddAttendanceUserRelationDto;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -71,4 +72,8 @@ public class AttendanceRuleCategoryVo {
     @ApiModelProperty("非考勤周期是否允许进出(1:是 0:否)")
     private Integer notCycleIsInOut;
 
+
+    @ApiModelProperty("attendanceUserRelation子表")
+    private List<AddAttendanceUserRelationDto> attendanceUserRelationList;
+
 }

+ 11 - 1
src/main/resources/mapper/teacher/XjrUserMapper.xml

@@ -13,7 +13,7 @@
         order by t.id;
     </select>
 
-    <select id="getTeacherDeptInfo" parameterType="com.xjrsoft.module.concat.dto.ConcatTreeDto" resultType="com.xjrsoft.module.concat.vo.ConcatTreeVo">
+    <select id="getTeacherDeptInfo" parameterType="com.xjrsoft.module.concat.dto.ConcatTreeDto" resultType="com.xjrsoft.module.teacher.entity.XjrUser">
         SELECT t1.id, t1.name,t1.mobile,t2.dept_id as parent_id,t1.gender FROM xjr_user t1
         INNER JOIN xjr_user_dept_relation t2 ON t1.id = t2.user_id
         inner join xjr_department t4 on t2.dept_id = t4.id
@@ -26,4 +26,14 @@
             and t1.mobile like concat('%', #{dto.mobile}, '%')
         </if>
     </select>
+
+    <select id="getAttendanceTeacherUser" parameterType="com.xjrsoft.module.attendance.dto.AddAttendanceRuleCategoryDto" resultType="com.xjrsoft.module.concat.vo.ConcatTreeVo">
+        SELECT t.id, t.user_name, t.name, t.code, t.nick_name, t.password, t.gender, t.mobile, t.avatar, t.email, t.address,
+        t.longitude, t.latitude, t.sort_code, t.remark, t.credential_type, t.credential_number, t.create_user_id, t.create_date,
+        t.modify_user_id, t.modify_date, t.delete_mark, t.enabled_mark, t.open_id, t.union_id, t.sign_folder_id, t.sign_password FROM xjr_user t
+        LEFT JOIN base_teacher t1 ON (t1.user_id = t.id)
+        LEFT JOIN xjr_user_dept_relation t2 ON (t2.user_id = t.id) WHERE t.delete_mark = 0 AND t1.delete_mark = 0
+        AND t1.delete_mark = 0
+        <if test="dto."></if>
+    </select>
 </mapper>