Răsfoiți Sursa

用户新增时优化

chenr 1 lună în urmă
părinte
comite
73acd0b85a

+ 83 - 34
blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java

@@ -192,43 +192,92 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
             throw new ServiceException(StringUtil.format("当前用户 [{}] 已存在!", user.getAccount()));
         }
             //获取Role信息
-//        if (user.getProjectAndUserList().size() <= 0) {
-//            throw new ServiceException("请关联项目合同段用户类型信息");
-//        }
-//        StringBuffer stringBuffer = new StringBuffer();
-//        Set<String> set = new TreeSet<>();
-//        List<SaveUserInfoByProjectDTO> projectAndUserList = user.getProjectAndUserList();
-//        projectAndUserList.forEach(i -> {
-//            String roleId = i.getRoleId();
-//            set.add(roleId);
-//        });
-//        for (String s : set) {
-//            stringBuffer.append(s).append(",");
-//        }
-//        user.setRoleId(String.valueOf(stringBuffer.deleteCharAt(stringBuffer.length() - 1)));
+        if (user.getProjectAndUserList().size() <= 0) {
+            throw new ServiceException("请关联项目合同段用户类型信息");
+        }
+        StringBuffer stringBuffer = new StringBuffer();
+        Set<String> set = new TreeSet<>();
+        List<SaveUserInfoByProjectDTO> projectAndUserList = user.getProjectAndUserList();
+            projectAndUserList.forEach(i -> {
+                String roleId = i.getRoleId();
+                set.add(roleId);
+            });
+            for (String s : set) {
+                stringBuffer.append(s).append(",");
+            }
+            user.setRoleId(String.valueOf(stringBuffer.deleteCharAt(stringBuffer.length() - 1)));
+
        //user.setUserType(1); //用户平台-WEB
         user.setName(user.getRealName());
         boolean b1 = save(user);
-        boolean b = submitUserDept(user);
-        return b1;
-//
-//        if (b1) {
-//            //绑定用户与部门关系
-//             boolean b = submitUserDept(user);
-//            if (b) {
-//                //比较
-//                if (checkContractId(user.getProjectAndUserList())) {
-//                    throw new ServiceException("一个合同段只允许分配一个用户类型信息,请重新选择");
-//                }
-//                //新增用户绑定项目合同段
-//                user.getProjectAndUserList().forEach((i) -> {
-//                    i.setUserId(String.valueOf(user.getId()));
-//                });
-//                contractClient.saveUserInfoByProjectThree(user.getProjectAndUserList());
-//                return true;
-//            }
-//        }
-//        throw new ServiceException("操作失败");
+        if (b1) {
+            //绑定用户与部门关系
+             boolean b = submitUserDept(user);
+            if (b) {
+                //比较
+                if (checkContractId(user.getProjectAndUserList())) {
+                    throw new ServiceException("一个合同段只允许分配一个用户类型信息,请重新选择");
+                }
+                //新增用户绑定项目合同段
+                user.getProjectAndUserList().forEach((i) -> {
+                    i.setUserId(String.valueOf(user.getId()));
+                    ContractInfo contractInfo = contractClient.getContractById(Long.valueOf(i.getContractId()));
+                    //监理、业主、中西试验室合同段新增
+                    if (contractInfo!=null&&(contractInfo.getContractType() == 2 || contractInfo.getContractType() == 3 || contractInfo.getContractType() == 4)) {
+                        //同步到对应关联的施工合同段中
+                        String sql = "select * from m_contract_relation_jlyz where contract_id_jlyz = " + contractInfo.getId();
+                        List<String> record_SG = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(ContractRelationJlyz.class)).stream().map(ContractRelationJlyz::getContractIdSg).collect(Collectors.toList()).stream().map(String::valueOf).collect(Collectors.toList());
+                        if (record_SG.size() > 0) {
+                            for (String sgId : record_SG) {
+                                //当前施工合同段所有用户角色信息
+                                String sql2 = "select * from m_project_assignment_user where contract_id = " + sgId + " and post_id is null and status = 1 and is_deleted = 0";
+                                List<SaveUserInfoByProjectDTO> userRoleInfoSG = jdbcTemplate.query(sql2, new BeanPropertyRowMapper<>(SaveUserInfoByProjectDTO.class));
+
+                                //去重
+                                List<SaveUserInfoByProjectDTO> lists = BeanUtil.copyProperties(user.getProjectAndUserList(), SaveUserInfoByProjectDTO.class);
+                                if (lists.size() > 0) {
+                                    Iterator<SaveUserInfoByProjectDTO> iterator = lists.iterator();
+                                    while (iterator.hasNext()) {
+                                        SaveUserInfoByProjectDTO jl = iterator.next();
+                                        for (SaveUserInfoByProjectDTO sg : userRoleInfoSG) {
+                                            if (sg.getUserId().equals(jl.getUserId())) {
+                                                //如果监理合同段与施工合同段中有相同的用户信息,就移除,一个用户只能存在一个合同段中
+                                                iterator.remove();
+                                            }
+                                        }
+                                    }
+                                }
+
+                                //重构入参
+                                List<SaveUserInfoByProjectDTO> addList = new ArrayList<>();
+                                for (SaveUserInfoByProjectDTO jl : lists) {
+                                    SaveUserInfoByProjectDTO newObj = BeanUtil.copyProperties(jl, SaveUserInfoByProjectDTO.class);
+                                    assert newObj != null;
+                                    newObj.setId(SnowFlakeUtil.getId());
+                                    newObj.setContractId(sgId);
+                                    newObj.setStatus(1);
+                                    if (ObjectUtil.isNotEmpty(SecureUtil.getUser())) {
+                                        newObj.setCreateUser(SecureUtil.getUser().getUserId());
+                                        newObj.setCreateDept(Long.parseLong(SecureUtil.getUser().getDeptId().split(",")[0]));
+                                    }
+                                    newObj.setCreateTime(new Date());
+                                    newObj.setIsRecordJlId(contractInfo.getId()); //从监理合同段关联的数据,用于删除关联时同步删除用户信息
+                                    addList.add(newObj);
+                                }
+
+                                //保存监理数据时,同步到对应关联的施工合同段中去
+                                if (addList.size() > 0) {
+                                    contractClient.saveUserInfoByProjectThree(addList);
+                                }
+                            }
+                        }
+                    }
+                });
+                contractClient.saveUserInfoByProjectThree(user.getProjectAndUserList());
+                return true;
+            }
+        }
+        throw new ServiceException("操作失败");
     }
 
     /**