Ver código fonte

2023-2-20 批量卡号修改

chaiyunlong 2 anos atrás
pai
commit
e339e228d5

+ 25 - 4
zd-modules/zd-modules-system/src/main/java/com/zd/system/controller/SysStudentController.java

@@ -34,10 +34,7 @@ import org.springframework.web.multipart.MultipartFile;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.time.LocalDate;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
@@ -383,4 +380,28 @@ public class SysStudentController extends BaseController {
         return AjaxResult.success(collect);
 
     }
+
+    @PreAuthorize(hasPermi = PerPrefix.SYSTEM_USER_STUDENT+ PerFun.CHECK)
+    @PostMapping("/batchSelect/{ids}")
+    public AjaxResult batchSelect(SysUser user,@PathVariable(value = "ids",required = false) Long... ids){
+        if(ids!=null&&ids.length>0)
+        {
+            user = new SysUser();
+            user.setIds(Arrays.asList(ids));
+        }
+        user.setUserType(USER_TYPE);
+        List<SysUser> list = sysStudentService.selectUserList(user);
+        Optional.ofNullable(list).orElseGet(Collections::emptyList)
+                .stream()
+                .forEach(a->{
+                    a.setCardNum(DESUtils.decrypt(a.getCardNumSimple()));
+                });
+        return AjaxResult.success(list);
+    }
+
+    @PreAuthorize(hasPermi = PerPrefix.SYSTEM_USER_STUDENT+ PerFun.CHECK)
+    @PutMapping({"/updateCardNum"})
+    public AjaxResult updateCardNum(@RequestBody List<SysUser> userList) {
+        return AjaxResult.success(sysTeacherService.updateCardNum(userList));
+    }
 }

+ 24 - 0
zd-modules/zd-modules-system/src/main/java/com/zd/system/controller/SysTeacherController.java

@@ -306,4 +306,28 @@ public class SysTeacherController extends BaseController {
         }
         return ajax;
     }
+
+    @PreAuthorize(hasPermi = PerPrefix.SYSTEM_USER_TEACHER+ PerFun.CHECK)
+    @PostMapping({"/batchSelect/{ids}"})
+    public AjaxResult batchSelect(SysUser user,@PathVariable(value = "ids",required = false) Long... ids) {
+        if(ids!=null&&ids.length>0)
+        {
+            user = new SysUser();
+            user.setIds(Arrays.asList(ids));
+        }
+        user.setUserType(USER_TYPE);
+        List<SysUser> list = sysTeacherService.selectUserList(user);
+        Optional.ofNullable(list).orElseGet(Collections::emptyList)
+                .stream()
+                .forEach(a->{
+                    a.setCardNum(DESUtils.decrypt(a.getCardNumSimple()));
+                });
+        return AjaxResult.success(list);
+    }
+
+    @PreAuthorize(hasPermi = PerPrefix.SYSTEM_USER_TEACHER+ PerFun.CHECK)
+    @PutMapping({"/updateCardNum"})
+    public AjaxResult updateCardNum(@RequestBody List<SysUser> userList) {
+        return AjaxResult.success(sysTeacherService.updateCardNum(userList));
+    }
 }

+ 8 - 0
zd-modules/zd-modules-system/src/main/java/com/zd/system/mapper/SysUserMapper.java

@@ -168,6 +168,14 @@ public interface SysUserMapper {
      * @return
      */
     public List<String> queryPhoneByIds(Long... ids);
+
+    /**
+     * 根据ID查询电话号码
+     * @param cardNums
+     * @return
+     */
+    public List<SysUser> queryCardNumByIds(String[] cardNums);
+
     /**
      * 查询人数通过部门ID
      *

+ 8 - 0
zd-modules/zd-modules-system/src/main/java/com/zd/system/service/ISysTeacherService.java

@@ -318,4 +318,12 @@ public interface ISysTeacherService {
      * @return 结果
      */
     int editUserByDept(List <SysUser> userList);
+
+
+    /**
+     * 修改用户信息
+     * @param userList 用户信息列表
+     * @return 结果
+     */
+    Map <String, Object> updateCardNum(List<SysUser> userList);
 }

+ 50 - 0
zd-modules/zd-modules-system/src/main/java/com/zd/system/service/impl/SysTeacherServiceImpl.java

@@ -30,6 +30,8 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.concurrent.atomic.LongAdder;
+import java.util.function.Consumer;
 
 /**
  * 用户 业务层处理
@@ -432,6 +434,54 @@ public class SysTeacherServiceImpl implements ISysTeacherService {
         return 1;
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Map <String, Object> updateCardNum(List <SysUser> userList) {
+        LongAdder count = new LongAdder();
+        String[] cardNums = new String[userList.size()];
+        //todo 将所有的卡号转换成加密后的卡号
+        Optional.ofNullable(userList).orElseGet(Collections::emptyList)
+                .stream()
+                .forEach(a->{
+                    //处理卡号加密
+                    passCardNum(a,0);
+                    cardNums[count.intValue()] = a.getCardNumSimple();
+                    count.increment();
+                });
+        //todo 将所有的加密后卡号,查询校验是否有除自己以外的卡号重复
+        List<SysUser> resutUserList = userMapper.queryCardNumByIds(cardNums);
+
+        List<String> repeatList = new ArrayList <>();
+
+        Consumer<SysUser> consumer = a->Optional.ofNullable(userList).orElseGet(Collections::emptyList)
+                .stream()
+                .filter(b->b.getCardNumSimple().equals(a.getCardNumSimple())&&b.getUserId().longValue()!=a.getUserId().longValue())
+                .forEach(b->{
+                    repeatList.add(DESUtils.decrypt(a.getCardNumSimple()));
+                });
+
+        Optional.ofNullable(resutUserList).orElseGet(Collections::emptyList)
+                .stream()
+                .forEach(a->{
+                    consumer.accept(a);
+                });
+
+        Map<String,Object> allMap = new HashMap <>();
+        if(repeatList.size()>0){
+            allMap.put("repeatCard",-1);
+            allMap.put("repeatList",repeatList);
+        }else{
+            //todo 批量修改卡号
+            Optional.ofNullable(userList).orElseGet(Collections::emptyList)
+                    .stream()
+                    .forEach(a->{
+                        userMapper.updateTeacherUser(a);
+                    });
+            allMap.put("repeatCard",0);
+        }
+
+        return allMap;
+    }
 
 
     /**

+ 18 - 1
zd-modules/zd-modules-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -107,7 +107,7 @@
         u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
         u.major_id, u.grade, u.tutor_user_id, u.position, p.post_name as positionName,
         u.nature,(select sc.class_name from sys_class sc where sc.id = u.grade) gradeName,
-        u.card_num,u.wechat_id,u.nationality,u.addr,u.work_status,
+        u.card_num,u.card_num_simple,u.wechat_id,u.nationality,u.addr,u.work_status,
         u.date_birth,d.dept_name, d.leader,u.department,
         u.education, u.user_type,sm.`major_name` major,
         ut.nick_name tutorUserName,u.is_check,date_format(u.create_time, '%Y-%m-%d') createTimeStr
@@ -133,6 +133,14 @@
         <if test="cardNum != null and cardNum != ''">
             AND u.card_num = #{cardNum}
         </if>
+        <if test="cardNumSimple != null and cardNumSimple != ''">
+            <if test="cardNumSimple == 1">
+                AND u.card_num_simple is not null
+            </if>
+            <if test="cardNumSimple == 0">
+                AND u.card_num_simple is null
+            </if>
+        </if>
         <if test="userType != null and userType != ''">
             AND u.user_type = #{userType}
         </if>
@@ -660,6 +668,15 @@
         </foreach>
         and length(phonenumber)=11
     </select>
+
+    <select id="queryCardNumByIds" resultType="com.zd.model.entity.SysUser">
+        select  * from sys_user
+        where card_num_simple in
+        <foreach collection="array" item="cardNums" open="(" separator="," close=")">
+            #{cardNums}
+        </foreach>
+    </select>
+
     <select id="queryCountByDeptIds" resultType="com.zd.model.entity.TotalByID">
 
         select dept_id as id, count(dept_id ) as total from sys_user