Parcourir la source

解决项目分配人员BUG

liuyc il y a 3 ans
Parent
commit
18c5bddfd9

+ 43 - 23
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ContractInfoController.java

@@ -240,7 +240,7 @@ public class ContractInfoController extends BladeController {
 
 
     /**
-     * 项目分配用户批量保存-项目分配维护人员
+     * 保存-项目分配维护人员
      */
     @PostMapping("/saveUserInfoByProject")
     @ApiOperationSupport(order = 12)
@@ -248,11 +248,15 @@ public class ContractInfoController extends BladeController {
     public R saveUserInfoByProject(@RequestBody List<SaveUserInfoByProjectDTO> list) {
         if (list.size() > 0) {
             list.forEach((lists) -> {
+                //设置postId字段,置空roleId,表示为维护角色
+                lists.setPostId(lists.getRoleId());
+                lists.setRoleId(null);
+
                 Long row = saveUserInfoByProjectMapper.selectCount(
                         Wrappers.<SaveUserInfoByProjectDTO>query().lambda().
                                 eq(SaveUserInfoByProjectDTO::getProjectId, lists.getProjectId()).
                                 eq(SaveUserInfoByProjectDTO::getContractId, lists.getContractId()).
-                                eq(SaveUserInfoByProjectDTO::getRoleId, lists.getRoleId()).
+                                eq(SaveUserInfoByProjectDTO::getPostId, lists.getPostId()).
                                 eq(SaveUserInfoByProjectDTO::getUserId, lists.getUserId()));
                 if (row > 0L) {
                     throw new ServiceException("当前用户角色已存在该合同段,请重新选择");
@@ -265,36 +269,38 @@ public class ContractInfoController extends BladeController {
                         Long row2 = saveUserInfoByProjectMapper.selectCount(
                                 Wrappers.<SaveUserInfoByProjectDTO>query().lambda().
                                         eq(SaveUserInfoByProjectDTO::getProjectId, lists.getProjectId()).
-                                        eq(SaveUserInfoByProjectDTO::getRoleId, lists.getRoleId()).
+                                        eq(SaveUserInfoByProjectDTO::getPostId, lists.getPostId()).
                                         eq(SaveUserInfoByProjectDTO::getUserId, lists.getUserId()));
                         if (row2 > 0L) {
                             throw new ServiceException("当前用户已存在,请重新选择");
                         }
-                        Long id = SnowFlakeUtil.getId();
-                        lists.setId(id);
+                        lists.setId(SnowFlakeUtil.getId());
                         lists.setStatus(1);
                         saveUserInfoByProjectService.save(lists);
+
                     } else {
                         contractInfos.forEach(contractInfo -> {
                             Long row1 = saveUserInfoByProjectMapper.selectCount(
                                     Wrappers.<SaveUserInfoByProjectDTO>query().lambda().
                                             eq(SaveUserInfoByProjectDTO::getProjectId, lists.getProjectId()).
                                             eq(SaveUserInfoByProjectDTO::getContractId, contractInfo.getId()).
-                                            eq(SaveUserInfoByProjectDTO::getRoleId, lists.getRoleId()).
+                                            eq(SaveUserInfoByProjectDTO::getPostId, lists.getPostId()).
                                             eq(SaveUserInfoByProjectDTO::getUserId, lists.getUserId()));
                             if (row1 > 0L) {
                                 throw new ServiceException("当前用户角色已在合同段下存在,请重新选择");
                             }
-                            Long id = SnowFlakeUtil.getId();
-                            lists.setId(id);
+                            lists.setId(SnowFlakeUtil.getId());
                             lists.setStatus(1);
                             lists.setContractId(String.valueOf(contractInfo.getId()));
                             saveUserInfoByProjectService.save(lists);
                         });
                     }
+
                 } else {
                     //单合同段
-                    saveUserInfoByProjectService.saveBatch(list);
+                    lists.setId(SnowFlakeUtil.getId());
+                    lists.setStatus(1);
+                    saveUserInfoByProjectService.save(lists);
                 }
             });
             return R.success("保存成功");
@@ -328,7 +334,9 @@ public class ContractInfoController extends BladeController {
                         Wrappers.<SaveUserInfoByProjectDTO>query().lambda().
                                 eq(SaveUserInfoByProjectDTO::getProjectId, lists.getProjectId()).
                                 eq(SaveUserInfoByProjectDTO::getContractId, lists.getContractId()).
-                                eq(SaveUserInfoByProjectDTO::getUserId, lists.getUserId()));
+                                eq(SaveUserInfoByProjectDTO::getUserId, lists.getUserId()).
+                                isNull(SaveUserInfoByProjectDTO::getPostId).
+                                isNotNull(SaveUserInfoByProjectDTO::getRoleId));
                 if (row > 0L) {
                     throw new ServiceException("当前用户类型已存在合同段,请重新选择项目合同段添加");
                 }
@@ -345,28 +353,40 @@ public class ContractInfoController extends BladeController {
 
 
     /**
-     * 项目分配用户逻辑删除
+     * 项目分配用户删除
      */
     @PostMapping("/removeUsersByIds")
     @ApiOperationSupport(order = 14)
-    @ApiOperation(value = "项目分配用户逻辑删除", notes = "传入当前列表用户的ids")
+    @ApiOperation(value = "项目分配用户删除", notes = "传入当前列表用户的ids")
     @Transactional(rollbackFor = Exception.class)
     public R removeUsersByIds(@ApiParam(value = "ids", required = true) @RequestParam String ids) {
         if (StringUtils.isEmpty(ids)) {
             throw new ServiceException("请选择要删除的用户");
         }
-        if (Func.toLongList(ids).size() > 1) {
-            //全部删除
-            List<Long> idsList = Func.toLongList(ids);
-            return R.status(saveUserInfoByProjectService.deleteBatchByIdsList(idsList));
+        //查询当前角色信息是否存在
+        List<Long> idsListTemp = Func.toLongList(ids);
+        String roleIdTemp = "";
+        for (Long idTemp : idsListTemp) {
+            SaveUserInfoByProjectDTO saveUserInfoByProjectDTO = saveUserInfoByProjectMapper.selectOne(Wrappers.<SaveUserInfoByProjectDTO>query().lambda().eq(SaveUserInfoByProjectDTO::getId, idTemp));
+            roleIdTemp = saveUserInfoByProjectDTO.getRoleId();
+        }
+        if (StringUtils.isEmpty(roleIdTemp)) {
+            //roleId = null 表示为运营维护人员角色分配 - 物理删除
+            return R.status(saveUserInfoByProjectService.deleteByIdsPhysical(idsListTemp));
         } else {
-            //单删除
-            SaveUserInfoByProjectDTO saveUserInfoByProjectDTO = saveUserInfoByProjectMapper.selectById(ids);
-            String userId = saveUserInfoByProjectDTO.getUserId();
-            String roleId = saveUserInfoByProjectDTO.getRoleId();
-            //删除用户RoleId
-            iUserClient.updateUserRoleIdTwo(userId, roleId);
-            return R.status(saveUserInfoByProjectService.deleteLogic(Func.toLongList(ids)));
+            //roleId != null 表示合同段人员角色分配
+            if (idsListTemp.size() > 1) {
+                //全部删除
+                return R.status(saveUserInfoByProjectService.deleteBatchByIdsList(idsListTemp));
+            } else {
+                //单删除
+                SaveUserInfoByProjectDTO saveUserInfoByProjectDTO = saveUserInfoByProjectMapper.selectById(ids);
+                String userId = saveUserInfoByProjectDTO.getUserId();
+                String roleId = saveUserInfoByProjectDTO.getRoleId();
+                //删除用户RoleId
+                iUserClient.updateUserRoleIdTwo(userId, roleId);
+                return R.status(saveUserInfoByProjectService.deleteByIdsPhysical(idsListTemp));
+            }
         }
     }
 

+ 2 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ContractInfoMapper.xml

@@ -178,7 +178,7 @@
         mpau.id,
         u.`name`,
         u.account,
-        (select dict_value from blade_dict_biz where id = mpau.role_id) as postName,
+        (select dict_value from blade_dict_biz where id = mpau.post_id) as postName,
         (select contract_name from m_contract_info where id = mpau.contract_id) as contractName,
         u.`password`,
         u.`phone`
@@ -190,7 +190,7 @@
         mpau.is_deleted = 0
         AND mpau.`status` = 1
         AND mpau.project_id = #{Values.pId}
-        AND mpau.role_id = #{Values.rId}
+        AND mpau.post_id = #{Values.rId}
         <if test="Values.cId != null and Values.cId != '' ">
             AND mpau.contract_id = #{Values.cId}
         </if>

+ 2 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/SaveUserInfoByProjectMapper.java

@@ -23,4 +23,6 @@ public interface SaveUserInfoByProjectMapper extends BaseMapper<SaveUserInfoByPr
 
     int deleteByCondition(String projectId, String userId);
 
+    int deleteByIdsPhysical(@Param("idsList") List<Long> idsList);
+
 }

+ 8 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/SaveUserInfoByProjectMapper.xml

@@ -47,6 +47,14 @@
           AND user_id = #{userId}
     </delete>
 
+    <delete id="deleteByIdsPhysical">
+        DELETE FROM m_project_assignment_user
+        WHERE id in
+        <foreach collection="idsList" item="idsList" open="(" close=")" separator=",">
+            #{idsList}
+        </foreach>
+    </delete>
+
     <select id="findMaintenanceUser" resultMap="queryUserMap">
         select bu.id,
                bu.name,

+ 3 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/SaveUserInfoByProjectService.java

@@ -20,4 +20,7 @@ public interface SaveUserInfoByProjectService extends BaseService<SaveUserInfoBy
     boolean deleteBatchByIdsList(List<Long> idsList);
 
     boolean removeUserProjectInfoAndRoleById(String id);
+
+    boolean deleteByIdsPhysical(List<Long> idsListTemp);
+
 }

+ 15 - 11
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/SaveUserInfoByProjectServiceImpl.java

@@ -57,9 +57,6 @@ public class SaveUserInfoByProjectServiceImpl
     @Override
     @Transactional(rollbackFor = Exception.class) //Todo
     public boolean deleteBatchByIdsList(List<Long> idsList) {
-        //删除项目合同段关联用户信息
-        int row = baseMapper.deleteBatchIds(idsList);
-
         //获取该idsList信息
         List<SaveUserInfoByProjectDTO> list = baseMapper.selectByIds(idsList);
 
@@ -76,6 +73,9 @@ public class SaveUserInfoByProjectServiceImpl
 
         boolean b = iUserClient.updateUserRoleIdThree(userIds, roleIds);
 
+        //物理删除项目合同段关联用户信息
+        int row = baseMapper.deleteByIdsPhysical(idsList);
+
         if (!b || row <= 0) {
             throw new ServiceException("操作异常,请重新尝试");
         }
@@ -93,6 +93,8 @@ public class SaveUserInfoByProjectServiceImpl
         //获取当前用户所绑定的所有项目角色信息
         List<SaveUserInfoByProjectDTO> list1 = baseMapper.selectList(Wrappers.<SaveUserInfoByProjectDTO>query().lambda()
                 .eq(SaveUserInfoByProjectDTO::getUserId, userId)
+                .isNull(SaveUserInfoByProjectDTO::getPostId)
+                .isNotNull(SaveUserInfoByProjectDTO::getRoleId)
         );
 
         //获取当前用户其他项目信息List
@@ -107,28 +109,30 @@ public class SaveUserInfoByProjectServiceImpl
         List<String> saveRoleIdListReally = new ArrayList<>();
         for (String s : roleIdListAllOther) {
             for (String s1 : roleIdListCurrent) {
-                if (s1.equals(s)) {
+                if (s.equals(s1)) {
                     saveRoleIdListReally.add(s);
                 }
             }
         }
         roleIdListAllOther.addAll(saveRoleIdListReally);
+        //去重
         List<String> resultRoleIds = roleIdListAllOther.stream().distinct().collect(Collectors.toList());
 
-        //逻辑删除 关系表中对应的项目信息数据
-        /*int row = baseMapper.delete(Wrappers.<SaveUserInfoByProjectDTO>update().lambda()
-                .eq(SaveUserInfoByProjectDTO::getProjectId, projectId)
-                .eq(SaveUserInfoByProjectDTO::getUserId, userId)
-        );*/
         //物理删除
-        int row = baseMapper.deleteByCondition(projectId,userId);
+        int row = baseMapper.deleteByCondition(projectId, userId);
 
-        //删除用户roleId
+        //修改用户roleId
         boolean result = this.updateUserRoleIdFour(resultRoleIds, userId);
+
         return row > 0 && result;
 
     }
 
+    @Override
+    public boolean deleteByIdsPhysical(List<Long> idsListTemp) {
+        return baseMapper.deleteByIdsPhysical(idsListTemp) > 0;
+    }
+
     private boolean updateUserRoleIdFour(List<String> saveRoleIdListReally, String userId) {
         String roleIds = StringUtils.join(saveRoleIdListReally, ",");
         int row = baseMapper.updateUserRoleIdById(roleIds, userId);

+ 11 - 7
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsFormElementServiceImpl.java

@@ -294,8 +294,8 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
 
     @Override
     public List<WbsFormElementDTO2> findWbsTreeTableSameLevel(String parentId) {
-        List<WbsFormElementDTO2> trees = baseMapper.selectWbsTreeTableListByParentId(parentId);
-        return trees;
+        return baseMapper.selectWbsTreeTableListByParentId(parentId);
+
     }
 
     @Override
@@ -320,15 +320,17 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
     @Override
     public void importElement2(List<WbsFormElementBatchExcel> data, Boolean isCovered, String tableId) {
         //TODO
+
     }
 
     @Override
     public WbsFormElement searchElementDetailByTableElementKey(String fId, String tableElementKey) {
         String[] s = tableElementKey.split("_");
-        WbsTree wbsTree = baseMapper.selectElementInTableByFid(fId);
+        /*WbsTree wbsTree = baseMapper.selectElementInTableByFid(fId);*/
         return baseMapper.selectOne(Wrappers.<WbsFormElement>query().lambda()
                 .eq(WbsFormElement::getFId, fId)
                 .eq(WbsFormElement::getEName, s[1]));
+
     }
 
     @Override
@@ -365,6 +367,7 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
 
         //同步
         return syncDataFiled(wbsFormElementVO2.getInitTableName(), listData);
+
     }
 
     @Override
@@ -434,20 +437,21 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
         return wbsTreeMapper.cancelRelation(id);
     }
 
-    private R saveFormElement(FormElementDTO2 formElementDTO) {
+    private boolean saveFormElement(FormElementDTO2 formElementDTO) {
         String deptName = formElementDTO.getDeptName();
         if (deptName.length() > 100 || deptName.length() < 1) {
             throw new ServiceException("表名长度错误,输入范围1-100个字符长度");
         }
         if (formElementDTO.getElementList().size() <= 0) {
-            return R.fail("操作失败,请先添加表单元素");
+            throw new ServiceException("操作失败,请先添加表单元素");
         }
         for (WbsFormElement wbsFormElement : formElementDTO.getElementList()) {
             if (StringUtils.isEmpty(wbsFormElement.getEName()) ||
                     StringUtils.isEmpty(String.valueOf(wbsFormElement.getEType()))) {
-                return R.fail("操作失败,请完整填写元素名称与类型参数");
+                throw new ServiceException("操作失败,请完整填写元素名称与类型参数");
             }
         }
+
         //初始化
         Long id = SnowFlakeUtil.getId();
         String newTableName = "m_" + DateUtil.time() + "_" + id;
@@ -475,7 +479,7 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
         Boolean b3 = this.initTable(list, newTableName);
 
         if (b1 && b2 && b3) {
-            return R.data(formElementDTO, "新增表单、元素、初始化实体表成功");
+            return true;
         } else {
             throw new ServiceException("操作失败");
         }