Browse Source

修复了一些BUG

liuyc 3 years ago
parent
commit
aad65dde04

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ProjectInfoController.java

@@ -239,7 +239,7 @@ public class ProjectInfoController extends BladeController {
             case "2":
                 return R.success("关联wbs树成功");
             default:
-                return R.success("关联wbs树失败");
+                return R.fail("关联wbs树失败");
         }
 
     }

+ 47 - 33
blade-service/blade-manager/src/main/java/org/springblade/manager/excel/WbsExcelBatchUtil.java

@@ -7,8 +7,10 @@ import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.ss.util.CellRangeAddress;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springblade.core.log.exception.ServiceException;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.sql.rowset.serial.SerialException;
 import java.io.*;
 import java.util.*;
 
@@ -42,6 +44,7 @@ public class WbsExcelBatchUtil {
 
     /**
      * List<Map>去重
+     *
      * @param list
      * @param mapKey
      * @return
@@ -67,6 +70,7 @@ public class WbsExcelBatchUtil {
 
     /**
      * 读取excel数据
+     *
      * @param path
      */
     public ArrayList<Map<String, String>> readExcelToObj(String path) throws IOException {
@@ -87,53 +91,58 @@ public class WbsExcelBatchUtil {
 
     /**
      * 读取excel文件
+     *
      * @param wb
      * @param sheetIndex    sheet页下标:从0开始
      * @param startReadLine 开始读取的行:从0开始
      * @param tailLine      去除最后读取的行
      */
     private ArrayList<Map<String, String>> readExcel(Workbook wb, int sheetIndex, int startReadLine, int tailLine) {
-        Sheet sheet = wb.getSheetAt(sheetIndex);
-        Row row = null;
         ArrayList<Map<String, String>> result = new ArrayList<Map<String, String>>();
-        for (int i = startReadLine; i < sheet.getLastRowNum() - tailLine + 1; i++) {
-
-            row = sheet.getRow(i);
-            Map<String, String> map = new HashMap<String, String>();
-            for (Cell c : row) {
-                String returnStr = "";
-                boolean isMerge = isMergedRegion(sheet, i, c.getColumnIndex());
-                //判断是否具有合并单元格
-                if (isMerge) {
-                    String rs = getMergedRegionValue(sheet, row.getRowNum(), c.getColumnIndex());
-                    returnStr = rs;
-                } else {
-                    c.setCellType(CellType.STRING);
-                    returnStr = c.getRichStringCellValue().getString();
-                }
-                if (c.getColumnIndex() == 1) {
-                    map.put("表名", returnStr);
-                } else if (c.getColumnIndex() == 2) {
-                    map.put("字段名", returnStr);
-                } else if (c.getColumnIndex() == 3) {
-                    map.put("数据类型", returnStr);
-                } else if (c.getColumnIndex() == 5) {
-                    map.put("允许偏差范围", returnStr);
-                } else if (c.getColumnIndex() == 6) {
-                    map.put("计算公式、方法或数值", returnStr);
-                } else if (c.getColumnIndex() == 7) {
-                    map.put("表类型", returnStr);
-                } else if (c.getColumnIndex() == 9) {
-                    map.put("备注", returnStr);
+        try {
+            Sheet sheet = wb.getSheetAt(sheetIndex);
+            Row row = null;
+            for (int i = startReadLine; i < sheet.getLastRowNum() - tailLine + 1; i++) {
+                row = sheet.getRow(i);
+                Map<String, String> map = new HashMap<String, String>();
+                for (Cell c : row) {
+                    String returnStr = "";
+                    boolean isMerge = isMergedRegion(sheet, i, c.getColumnIndex());
+                    //判断是否具有合并单元格
+                    if (isMerge) {
+                        String rs = getMergedRegionValue(sheet, row.getRowNum(), c.getColumnIndex());
+                        returnStr = rs;
+                    } else {
+                        c.setCellType(CellType.STRING);
+                        returnStr = c.getRichStringCellValue().getString();
+                    }
+                    if (c.getColumnIndex() == 1) {
+                        map.put("表名", returnStr);
+                    } else if (c.getColumnIndex() == 2) {
+                        map.put("字段名", returnStr);
+                    } else if (c.getColumnIndex() == 3) {
+                        map.put("数据类型", returnStr);
+                    } else if (c.getColumnIndex() == 5) {
+                        map.put("允许偏差范围", returnStr);
+                    } else if (c.getColumnIndex() == 6) {
+                        map.put("计算公式、方法或数值", returnStr);
+                    } else if (c.getColumnIndex() == 7) {
+                        map.put("表类型", returnStr);
+                    } else if (c.getColumnIndex() == 9) {
+                        map.put("备注", returnStr);
+                    }
                 }
+                result.add(map);
             }
-            result.add(map);
+            return result;
+        } catch (Exception e) {
+            throw new ServiceException("操作失败,请上传正确模板内容");
         }
-        return result;
     }
 
     /**
      * 获取合并单元格的值
+     *
      * @param sheet
      * @param row
      * @param column
@@ -160,6 +169,7 @@ public class WbsExcelBatchUtil {
 
     /**
      * 判断合并了行
+     *
      * @param sheet
      * @param row
      * @param column
@@ -184,6 +194,7 @@ public class WbsExcelBatchUtil {
 
     /**
      * 判断指定的单元格是否是合并单元格
+     *
      * @param sheet
      * @param row    行下标
      * @param column 列下标
@@ -218,6 +229,7 @@ public class WbsExcelBatchUtil {
 
     /**
      * 合并单元格
+     *
      * @param sheet
      * @param firstRow 开始行
      * @param lastRow  结束行
@@ -230,6 +242,7 @@ public class WbsExcelBatchUtil {
 
     /**
      * 获取单元格的值
+     *
      * @param cell
      * @return
      */
@@ -308,6 +321,7 @@ public class WbsExcelBatchUtil {
 
     /**
      * 获取path路径
+     *
      * @param file
      * @return
      * @throws IOException

+ 13 - 37
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml

@@ -521,46 +521,22 @@
     </select>
 
     <select id="selectNodeAndTable" resultType="org.springblade.manager.entity.WbsTreePrivate">
-       SELECT
-            p_key_id,
-            id,
-            wbs_id,
-            wbs_type,
-            project_id,
-            tenant_id,
-            parent_id,
-            ancestors,
-            dept_category,
-            dept_name,
-            full_name,
-            sort,
-            remark,
-            type,
-            table_type,
-            create_time,
-            create_user,
-            create_dept,
-            update_user,
-            update_time,
-            status,
-            is_deleted,
-            unique_code,
-            partition_code,
-            is_expernode,
-            is_concrete,
-            table_owner,
-            major_data_type,
-            init_table_name,
-            is_link_table,
-            excel_id,
-            is_exist_form
+       SELECT p_key_id,id,wbs_id,wbs_type,project_id,tenant_id,parent_id,ancestors,dept_category,dept_name,full_name,sort,remark,type,
+               table_type,create_time,create_user, create_dept,update_user,update_time,status,is_deleted,unique_code,partition_code,is_expernode,
+               is_concrete,table_owner,major_data_type,init_table_name,is_link_table,excel_id,is_exist_form
         FROM m_wbs_tree_private
-        WHERE id = #{id}
+        WHERE (id = #{id}
+        AND type = 1
+        AND project_id = #{referencePrivateWbsProjectId}
+        AND wbs_id =  #{wbsId}
+        AND STATUS = 1
+        AND is_deleted = 0)
+        OR (
+        parent_id = #{id}
+        AND type = 2
         AND project_id = #{referencePrivateWbsProjectId}
         AND wbs_id = #{wbsId}
         AND STATUS = 1
-        AND is_deleted = 0
-        OR (parent_id = #{id} and type = 2)
+        AND is_deleted = 0)
     </select>
-
 </mapper>

+ 133 - 61
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -176,7 +176,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
             wbsTree.setAncestors(ancestors);
             wbsTree.setType(2);
             wbsTree.setIsDeleted(BladeConstant.DB_NOT_DELETED);
-            maps.stream().forEach(map->{
+            maps.stream().forEach(map -> {
                 String deptName = map.get("表名");
                 wbsTree.setDeptName(deptName);
                 wbsTree.setTableType(getTableType(map.get("表类型")));
@@ -203,7 +203,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                 String tableName = i.getTableName();
                 String initTableName = i.getInitTableName();
                 final int[] keyNumb = {0};
-                result2.stream().forEach(map->{
+                result2.stream().forEach(map -> {
                     if (tableName.equals(map.get("表名"))) {
                         keyNumb[0]++;
                         WbsFormElement wbsFormElement = new WbsFormElement();
@@ -228,7 +228,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
             return true;
         } catch (
                 IOException | ClassNotFoundException e) {
-            e.printStackTrace();
+            throw new ServiceException("操作失败,请上传正确模板内容");
         } finally {
             File file2 = new File(canonicalPath);
             if (file2.isFile() && file2.exists()) {
@@ -236,7 +236,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                 System.gc();
             }
         }
-        return false;
     }
 
 
@@ -531,13 +530,17 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
     @Transactional(rollbackFor = Exception.class)
     public String submitWbsTreeInProject(WbsTreeContractDTO pawDTO) {
         String wbsTreeIds = pawDTO.getWbsTreeIds();
+        /*if (StringUtils.isEmpty(wbsTreeIds)) {
+            throw new ServiceException("未选择需要分配的wbs树");
+        }*/
         String[] ids = wbsTreeIds.split(",");
         List<String> idList = Arrays.asList(ids);
         List<String> idList1 = idList.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList());
         List<String> idList2 = new ArrayList<>();
         int deletedStatus = 0;
+
+        //当前公有引用
         if (pawDTO.getReferenceType().equals("public")) {
-            //当前公有引用
             List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
                     .eq(WbsTreePrivate::getWbsId, pawDTO.getWbsId())
                     .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
@@ -545,10 +548,11 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
             );
             wbsTreePrivates.stream().forEach(wbsTreePrivate -> {
                 idList2.add(String.valueOf(wbsTreePrivate.getId()));
-
             });
-        } else if (pawDTO.getReferenceType().equals("private")) {
-            //私有引用
+        }
+
+        //私有引用
+        else if (pawDTO.getReferenceType().equals("private")) {
             List<WbsTreePrivate> wbsTreePrivates2 = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
                     .eq(WbsTreePrivate::getWbsId, pawDTO.getPrimaryKeyId())
                     .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
@@ -559,58 +563,121 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
             });
             deletedStatus = 1;
         }
-        List<String> diffrent = WbsTreeContractServiceImpl.getDiffrent(idList1, idList2);
-        if (diffrent.size() == 0) {
+
+        List<String> diffRent = WbsTreeContractServiceImpl.getDiffrent(idList1, idList2);
+
+        //元素表同步
+        if (diffRent.size() == 0) {
             List<String> tableId1 = new ArrayList<>();
             List<String> tableId2 = new ArrayList<>();
-            //公有树是否新增元素表,同步到私有
-            List<WbsTree> allNodeList = findAllNodeList(wbsTreeIds);
-            List<WbsTree> wbsTreeListAll = new ArrayList<>();
-            allNodeList.stream().forEach(wbsTree -> {
-                List<WbsTree> wbsTreeList = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
-                        .eq(WbsTree::getWbsId, pawDTO.getWbsId())
-                        .eq(WbsTree::getType, 2)
-                        .eq(WbsTree::getParentId, wbsTree.getId())
-                );
-                wbsTreeListAll.addAll(wbsTreeList);
-            });
-            wbsTreeListAll.stream().forEach(wbsTree -> {
-                tableId1.add(String.valueOf(wbsTree.getId()));
-            });
 
-            //获取项目私有树下所有的元素表
-            List<WbsTreePrivate> wbsTreePrivates1 = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                    .eq(WbsTreePrivate::getWbsId, pawDTO.getWbsId())
-                    .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
-                    .eq(WbsTreePrivate::getType, 2)
-            );
-            wbsTreePrivates1.stream().forEach(wbsTreePrivate -> {
-                tableId2.add(String.valueOf(wbsTreePrivate.getId()));
-            });
-            List<String> diffrent1 = WbsTreeContractServiceImpl.getDiffrent(tableId1, tableId2);
-            if (diffrent1.size() == 0) {
-                throw new ServiceException("未进行任何操作");
-            } else {
-                if (tableId1.size() > tableId2.size()) {
-                    //同步元素表
-                    diffrent1.stream().forEach(tableId -> {
-                        WbsTree wbsTree = wbsTreeMapper.selectById(tableId);
-                        Long snowId1 = SnowFlakeUtil.getId();
-                        wbsTreePrivateMapper.insertCombination1(snowId1, wbsTree, pawDTO.getWbsType(), pawDTO.getProjectId());
+            if (pawDTO.getReferenceType().equals("public")) {
+                //公有同步新增元素表
+                //获取公有wbs树新增的元素表
+                List<WbsTree> allNodeList = findAllNodeList(wbsTreeIds);
+                List<WbsTree> wbsTreeListAll = new ArrayList<>();
+                if (allNodeList != null) {
+                    allNodeList.stream().forEach(wbsTree -> {
+                        List<WbsTree> wbsTreeList = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
+                                .eq(WbsTree::getWbsId, pawDTO.getWbsId())
+                                .eq(WbsTree::getType, 2)
+                                .eq(WbsTree::getParentId, wbsTree.getId())
+                        );
+                        wbsTreeListAll.addAll(wbsTreeList);
                     });
-                    return "1";
                 }
-                //同步删除 TODO
+                wbsTreeListAll.stream().forEach(wbsTree -> {
+                    tableId1.add(String.valueOf(wbsTree.getId()));
+                });
+                //获取项目私有wbs树下当前所有的元素表
+                List<WbsTreePrivate> wbsTreePrivates1 = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
+                        .eq(WbsTreePrivate::getWbsId, pawDTO.getWbsId())
+                        .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
+                        .eq(WbsTreePrivate::getType, 2)
+                );
+                wbsTreePrivates1.stream().forEach(wbsTreePrivate -> {
+                    tableId2.add(String.valueOf(wbsTreePrivate.getId()));
+                });
+                List<String> diffRent1 = WbsTreeContractServiceImpl.getDiffrent(tableId1, tableId2);
+                if (diffRent1.size() == 0) {
+                    //当wbsTreeIds == "" 时 1.在第一次新增未选择wbs树时  2.同步新增的元素表时
+                    throw new ServiceException("请选择需要关联的树或未检测到所对应新增的元素表");
+                } else {
+                    if (tableId1.size() > tableId2.size()) {
+                        //公有同步元素表
+                        diffRent1.stream().forEach(tableId -> {
+                            WbsTree wbsTree = wbsTreeMapper.selectById(tableId);
+                            Long snowId1 = SnowFlakeUtil.getId();
+                            wbsTreePrivateMapper.insertCombination1(snowId1, wbsTree, pawDTO.getWbsType(), pawDTO.getProjectId());
+                        });
+                        return "1";
+                    }
+                    //TODO删除
+                }
+            } else if (pawDTO.getReferenceType().equals("private")) {
+                //私有同步新增元素表
+                //获取所私有引用项目的新增的元素表 根据primaryKeyId获取对象信息
+                WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda()
+                        .eq(WbsTreePrivate::getPKeyId, pawDTO.getPrimaryKeyId()));
+                //获取所私有引用项目的wbs树的全部表单
+                List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
+                        .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
+                        .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
+                        .eq(WbsTreePrivate::getType, 2)
+                );
+                wbsTreePrivates.stream().forEach(wbsTreePrivate1 -> {
+                    tableId1.add(String.valueOf(wbsTreePrivate1.getId()));
+                });
+                //获取当前项目私有wbs树下当前所有的元素表
+                List<WbsTreePrivate> wbsTreePrivates1 = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
+                        .eq(WbsTreePrivate::getWbsId, pawDTO.getPrimaryKeyId())
+                        .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
+                        .eq(WbsTreePrivate::getType, 2)
+                );
+                wbsTreePrivates1.stream().forEach(wbsTreePrivate2 -> {
+                    tableId2.add(String.valueOf(wbsTreePrivate2.getId()));
+                });
+
+                List<String> diffRent1 = WbsTreeContractServiceImpl.getDiffrent(tableId1, tableId2);
+
+                if (diffRent1.size() == 0) {
+                    throw new ServiceException("未检测到引用的私有wbs树下有新增的元素表");
+                } else {
+                    if (tableId1.size() > tableId2.size()) {
+                        //私有同步元素表
+                        List<WbsTreePrivate> lists = new ArrayList<>();
+                        diffRent1.stream().forEach(tableId -> {
+                            List<WbsTreePrivate> wbsTreePrivates3 = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
+                                    .eq(WbsTreePrivate::getId, tableId)
+                                    .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
+                                    .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
+                                    .eq(WbsTreePrivate::getType, 2)
+                            );
+                            lists.addAll(wbsTreePrivates3);
+                        });
+                        lists.stream().forEach(list -> {
+                            list.setPKeyId(SnowFlakeUtil.getId());
+                            list.setWbsId(pawDTO.getPrimaryKeyId());
+                            list.setProjectId(pawDTO.getProjectId());
+                        });
+                        wbsTreePrivateService.saveBatch(lists, 10000);
+                        return "1";
+                    }
+                    //TODO删除
+                }
+
             }
-        } else {
-            //新增
+        }
+
+        //新增
+        else {
             if (idList1.size() > idList2.size()) {
                 List<WbsTreePrivate> insertData = new ArrayList<>();  //数据初始化节点-引用公有
                 List<WbsTreePrivate> insertData2 = new ArrayList<>();  //数据初始化节点-引用私有
                 if (pawDTO.getReferenceType().equals("public")) {
                     //公有
                     List<List<WbsTree>> wbsTrees = new ArrayList<>();
-                    diffrent.stream().forEach(id -> {
+                    diffRent.stream().forEach(id -> {
                         //查询所有公共节点 表单
                         List<WbsTree> trees = baseMapper.selectNodeAndTable(Long.valueOf(id));
                         wbsTrees.add(trees);
@@ -621,12 +688,10 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                             insertData.add(wbsTreePrivate2);
                         });
                     });
-                    projectInfoMapper.updateTemplateIdById(pawDTO.getProjectId(), pawDTO.getWbsId(), "public");
-
                 } else if (pawDTO.getReferenceType().equals("private")) {
                     //私有
                     List<List<WbsTreePrivate>> wbsTreesPrivate = new ArrayList<>();
-                    diffrent.stream().forEach(id -> {
+                    diffRent.stream().forEach(id -> {
                         //查询所有私有节点 表单
                         List<WbsTreePrivate> wbsTreePrivate = wbsTreePrivateMapper.selectNodeAndTable(id, pawDTO.getWbsId(), pawDTO.getReferencePrivateWbsProjectId());
                         wbsTreesPrivate.add(wbsTreePrivate);
@@ -637,22 +702,25 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                             insertData2.add(wbsTreePrivate2);
                         });
                     });
-                    projectInfoMapper.updateTemplateIdById(pawDTO.getProjectId(), pawDTO.getPrimaryKeyId(), "private");
                 }
                 if (pawDTO.getReferenceType().equals("public")) {
                     wbsTreePrivateService.saveBatch(insertData, 10000);
+                    projectInfoMapper.updateTemplateIdById(pawDTO.getProjectId(), pawDTO.getWbsId(), "public");
                 } else if (pawDTO.getReferenceType().equals("private")) {
                     wbsTreePrivateService.saveBatch(insertData2, 10000);
+                    projectInfoMapper.updateTemplateIdById(pawDTO.getProjectId(), pawDTO.getPrimaryKeyId(), "private");
                 }
-            } else {
-                //删除节点 表单
+            }
+
+            //删除节点 表单
+            else {
                 ArrayList<Long> ids1 = new ArrayList<>();
                 ArrayList<Long> ids2 = new ArrayList<>();
-                diffrent.stream().forEach(id -> {
+                diffRent.stream().forEach(id -> {
                     ids1.add(Long.valueOf(id));
                 });
                 if (deletedStatus == 1) {
-                    diffrent.stream().forEach(id -> {
+                    diffRent.stream().forEach(id -> {
                         ids2.add(Long.valueOf(id));
                     });
                 }
@@ -669,12 +737,16 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
     }
 
     public List<WbsTree> findAllNodeList(String wbsTreeIds) {
-        String[] ids = wbsTreeIds.split(",");
-        List<Long> idList = new ArrayList<>();
-        for (String id : ids) {
-            idList.add(Long.valueOf(id));
+        if (StringUtils.isNotEmpty(wbsTreeIds)) {
+            String[] ids = wbsTreeIds.split(",");
+            List<Long> idList = new ArrayList<>();
+            for (String id : ids) {
+                idList.add(Long.valueOf(id));
+            }
+            return baseMapper.selectBatchIds(idList);
+        } else {
+            return null;
         }
-        return baseMapper.selectBatchIds(idList);
     }
 
     private WbsTreePrivate getWbsTreePrivate1(WbsTree wbsTree, WbsTreeContractDTO pawDTO) {

+ 15 - 13
blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java

@@ -136,7 +136,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
             }
         }
         if (Func.isNotEmpty(user.getPassword())) {
-            //设置明文
+            //明文
             user.setPlaintextPassword(user.getPassword());
             //加密
             user.setPassword(DigestUtil.encrypt(user.getPassword()));
@@ -149,11 +149,10 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
         if (user.getProjectAndUserList().size() <= 0) {
             throw new ServiceException("请关联项目合同段用户类型信息");
         }
-
         StringBuffer stringBuffer = new StringBuffer();
         Set<String> set = new TreeSet<>();
         List<SaveUserInfoByProjectDTO> projectAndUserList = user.getProjectAndUserList();
-        user.getProjectAndUserList().forEach(i -> {
+        projectAndUserList.stream().forEach(i -> {
             String roleId = i.getRoleId();
             set.add(roleId);
         });
@@ -165,18 +164,21 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
         user.setName(user.getRealName());
         boolean b1 = save(user);
         if (b1) {
-            //比较
-            if (checkContractId(user.getProjectAndUserList())) {
-                throw new ServiceException("一个合同段只允许分配一个用户类型信息,请重新选择");
+            //绑定用户与部门关系
+            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;
             }
-            //新增用户绑定项目合同段
-            user.getProjectAndUserList().forEach((i) -> {
-                i.setUserId(String.valueOf(user.getId()));
-            });
-            contractClient.saveUserInfoByProjectThree(user.getProjectAndUserList());
-            return true;
         }
-
         throw new ServiceException("操作失败");
     }