Browse Source

Merge remote-tracking branch 'origin/master'

huangjn 3 years ago
parent
commit
71a8935067
18 changed files with 463 additions and 345 deletions
  1. 28 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/ExcelInWbsTreeAndElementDTO.java
  2. 7 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ContractInfoController.java
  3. 9 5
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ProjectInfoController.java
  4. 18 7
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsFormElementController.java
  5. 47 33
      blade-service/blade-manager/src/main/java/org/springblade/manager/excel/WbsExcelBatchUtil.java
  6. 99 3
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml
  7. 42 205
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml
  8. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsFormElementService.java
  9. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/SaveUserInfoByProjectService.java
  10. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ContractInfoServiceImpl.java
  11. 6 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ProjectInfoServiceImpl.java
  12. 7 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/SaveUserInfoByProjectServiceImpl.java
  13. 5 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsFormElementServiceImpl.java
  14. 30 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java
  15. 137 67
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java
  16. 2 2
      blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java
  17. 1 1
      blade-service/blade-user/src/main/java/org/springblade/system/user/service/IUserService.java
  18. 20 16
      blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java

+ 28 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/ExcelInWbsTreeAndElementDTO.java

@@ -0,0 +1,28 @@
+package org.springblade.manager.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class ExcelInWbsTreeAndElementDTO implements Serializable {
+
+    /**
+     * 节点Id
+     */
+    private String id;
+
+    /**
+     * 表id
+     */
+    private String deptName;
+
+    /**
+     * 实体表名
+     */
+    private String initTableName;
+
+    /**
+     * 元素List
+     */
+}

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

@@ -193,6 +193,12 @@ public class ContractInfoController extends BladeController {
         if (wbsTreeContracts.size() > 0) {
             return R.fail("合同段存在关联的WBS树,删除失败");
         }
+        List<SaveUserInfoByProjectDTO> list = saveUserInfoByProjectMapper.selectList(Wrappers.<SaveUserInfoByProjectDTO>query().lambda()
+                .eq(SaveUserInfoByProjectDTO::getContractId, ids)
+        );
+        if (list.size() > 0) {
+            return R.fail("当前合同段存在关联用户,删除失败");
+        }
         return R.status(contractInfoService.deleteLogic(Func.toLongList(ids)));
     }
 
@@ -219,7 +225,7 @@ public class ContractInfoController extends BladeController {
     @GetMapping("/findUserList")
     @ApiOperationSupport(order = 11)
     @ApiOperation(value = "", notes = "")
-    public R<List<User>> findUserList(){
+    public R<List<User>> findUserList() {
         List<User> user = contractInfoService.findUserList();
         if (user.size() > 0) {
             return R.data(user);

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

@@ -17,6 +17,7 @@
 package org.springblade.manager.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import io.swagger.annotations.*;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
@@ -31,16 +32,14 @@ import org.springblade.manager.dto.SaveUserInfoByProjectDTO;
 import org.springblade.manager.dto.WbsTreeContractDTO;
 import org.springblade.manager.dto.ProjectInfoDTO;
 import org.springblade.manager.entity.ContractInfo;
+import org.springblade.manager.entity.SaveUserInfoByProject;
 import org.springblade.manager.entity.WbsTreePrivate;
-import org.springblade.manager.service.IContractInfoService;
-import org.springblade.manager.service.IWbsTreePrivateService;
-import org.springblade.manager.service.IWbsTreeService;
+import org.springblade.manager.service.*;
 import org.springblade.manager.vo.*;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springblade.manager.entity.ProjectInfo;
 import org.springblade.manager.wrapper.ProjectInfoWrapper;
-import org.springblade.manager.service.IProjectInfoService;
 import org.springblade.core.boot.ctrl.BladeController;
 
 import java.util.List;
@@ -61,6 +60,7 @@ public class ProjectInfoController extends BladeController {
     private final IWbsTreeService wbsTreeService;
     private final IWbsTreePrivateService wbsTreePrivateService;
     private final IContractInfoService iContractInfoService;
+    private final SaveUserInfoByProjectService saveUserInfoByProjectService;
 
     /**
      * 详情
@@ -174,6 +174,10 @@ public class ProjectInfoController extends BladeController {
         if (wbsTreePrivates.size() > 0) {
             return R.fail("当前项目存在WBS私有树,删除失败");
         }
+        List<SaveUserInfoByProjectDTO> list = saveUserInfoByProjectService.selectList(ids);
+        if (list.size() > 0) {
+            return R.fail("当前项目被用户关联中,删除失败");
+        }
         return R.status(projectInfoService.deleteLogic(Func.toLongList(ids)));
     }
 
@@ -239,7 +243,7 @@ public class ProjectInfoController extends BladeController {
             case "2":
                 return R.success("关联wbs树成功");
             default:
-                return R.success("关联wbs树失败");
+                return R.fail("关联wbs树失败");
         }
 
     }

+ 18 - 7
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsFormElementController.java

@@ -164,28 +164,28 @@ public class WbsFormElementController extends BladeController {
         for (WbsFormElementExcel wbsFE : list) {
             if (("字符串").equals(wbsFE.getElementType()) || ("string").equals(wbsFE.getElementType())) {
                 wbsFE.setElementType("1");
-                wbsFE.setElementLength("1000");
+                wbsFE.setElementLength("255");
             } else if (("整数").equals(wbsFE.getElementType()) || ("bigint").equals(wbsFE.getElementType())) {
                 wbsFE.setElementType("2");
-                wbsFE.setElementLength("255");
+                wbsFE.setElementLength("20");
             } else if (("小数").equals(wbsFE.getElementType()) || ("decimal").equals(wbsFE.getElementType())) {
                 wbsFE.setElementType("3");
-                wbsFE.setElementLength("65");
+                wbsFE.setElementLength("20");
             } else if (("日期").equals(wbsFE.getElementType()) || ("datetime").equals(wbsFE.getElementType())) {
                 wbsFE.setElementType("4");
                 wbsFE.setElementLength("0");
             } else if (("数值").equals(wbsFE.getElementType())) {
                 wbsFE.setElementType("3");
-                wbsFE.setElementLength("65");
+                wbsFE.setElementLength("20");
             } else if (("签名").equals(wbsFE.getElementType())) {
                 wbsFE.setElementType("1");
-                wbsFE.setElementLength("1000");
+                wbsFE.setElementLength("255");
             } else if (("文件").equals(wbsFE.getElementType())) {
                 wbsFE.setElementType("1");
-                wbsFE.setElementLength("1000");
+                wbsFE.setElementLength("255");
             } else {
                 wbsFE.setElementType("1");
-                wbsFE.setElementLength("1000");
+                wbsFE.setElementLength("255");
             }
         }
         return R.data(list, "操作成功");
@@ -225,5 +225,16 @@ public class WbsFormElementController extends BladeController {
         return R.data(detail);
     }*/
 
+    /**
+     * 提交清表关联公有Wbs树并创建元素
+     */
+    @ApiOperationSupport(order = 10)
+    @ApiOperation(value = "提交清表关联公有Wbs树并创建元素", notes = "节点id、表名、元素DTO")
+    @RequestMapping(value = "/submitExcelRelationWbsTreeAndElement", method = RequestMethod.POST)
+    public R submitExcelRelationWbsTreeAndElement(String fId, String tableElementKey) {
+        boolean b = wbsFormElementService.submitExcelRelationWbsTreeAndElement(fId, tableElementKey);
+        return R.status(b);
+    }
+
 
 }

+ 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

+ 99 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml

@@ -152,7 +152,39 @@
 
     <select id="selectByCondition" resultType="org.springblade.manager.entity.WbsTreeContract">
         SELECT
-            *
+            id,
+            p_key_id,
+            wbs_id,
+            wbs_type,
+            project_id,
+            contract_id,
+            contract_type,
+            contract_id_relation,
+            tenant_id,
+            parent_id,
+            dept_category,
+            type,
+            dept_name,
+            full_name,
+            table_type,
+            sort,
+            ancestors,
+            remark,
+            unique_code,
+            partition_code,
+            is_expernode,
+            is_concrete,
+            table_owner,
+            major_data_type,
+            init_table_name,
+            is_link_table,
+            create_user,
+            create_dept,
+            create_time,
+            update_user,
+            update_time,
+            STATUS,
+            is_deleted
         FROM
             m_wbs_tree_contract
         WHERE
@@ -166,7 +198,39 @@
 
     <select id="selectByCondition2" resultType="org.springblade.manager.entity.WbsTreeContract">
         SELECT
-            *
+            id,
+            p_key_id,
+            wbs_id,
+            wbs_type,
+            project_id,
+            contract_id,
+            contract_type,
+            contract_id_relation,
+            tenant_id,
+            parent_id,
+            dept_category,
+            type,
+            dept_name,
+            full_name,
+            table_type,
+            sort,
+            ancestors,
+            remark,
+            unique_code,
+            partition_code,
+            is_expernode,
+            is_concrete,
+            table_owner,
+            major_data_type,
+            init_table_name,
+            is_link_table,
+            create_user,
+            create_dept,
+            create_time,
+            update_user,
+            update_time,
+            STATUS,
+            is_deleted
         FROM
             m_wbs_tree_contract
         WHERE
@@ -179,7 +243,39 @@
 
     <select id="findAllNodeList2" resultType="org.springblade.manager.entity.WbsTreeContract">
         SELECT
-            *
+            id,
+            p_key_id,
+            wbs_id,
+            wbs_type,
+            project_id,
+            contract_id,
+            contract_type,
+            contract_id_relation,
+            tenant_id,
+            parent_id,
+            dept_category,
+            type,
+            dept_name,
+            full_name,
+            table_type,
+            sort,
+            ancestors,
+            remark,
+            unique_code,
+            partition_code,
+            is_expernode,
+            is_concrete,
+            table_owner,
+            major_data_type,
+            init_table_name,
+            is_link_table,
+            create_user,
+            create_dept,
+            create_time,
+            update_user,
+            update_time,
+            STATUS,
+            is_deleted
         FROM
             m_wbs_tree_contract
         WHERE

+ 42 - 205
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml

@@ -255,47 +255,24 @@
     </select>
 
     <select id="selectByCondition" 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
-        FROM
-            m_wbs_tree_private
+        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
-             project_id = #{projectId}
-            AND wbs_id = #{wbsId}
-            AND STATUS = 1
-            AND is_deleted = 0
-            AND id = #{id} OR (parent_id = #{id} and type = 2)
+        ( id = #{id}
+        AND type = 1
+        AND project_id = #{projectId}
+        AND wbs_id =  #{wbsId}
+        AND STATUS = 1
+        AND is_deleted = 0 )
+        OR
+        ( parent_id = #{id}
+        AND type = 2
+        AND project_id = #{projectId}
+        AND wbs_id = #{wbsId}
+        AND STATUS = 1
+        AND is_deleted = 0 )
     </select>
 
     <select id="selectByCondition2" resultType="org.springblade.manager.entity.WbsTreePrivate">
@@ -314,38 +291,9 @@
 
     <select id="selectIsTable" resultType="org.springblade.manager.entity.WbsTree">
         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
+             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
@@ -379,38 +327,9 @@
     </select>
     <select id="getByCondition" 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
+             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 project_id = #{projectId}
         AND id = #{parentId}
@@ -421,38 +340,9 @@
     </select>
     <select id="getByPKeyId" 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
+             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 p_key_id = #{pKeyId}
     </select>
@@ -473,38 +363,9 @@
     </select>
     <select id="selectByPKeyId" 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
+             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 p_key_id = #{referenceWbsTemplateId}
     </select>
 
@@ -521,46 +382,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>

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

@@ -72,4 +72,6 @@ public interface IWbsFormElementService extends BaseService<WbsFormElement> {
 
     boolean submitBatch(WbsFormElementVO2 wbsFormElementVO2);
 
+    boolean submitExcelRelationWbsTreeAndElement(String fId, String tableElementKey);
+
 }

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

@@ -2,6 +2,7 @@ package org.springblade.manager.service;
 
 import org.springblade.core.mp.base.BaseService;
 import org.springblade.manager.dto.SaveUserInfoByProjectDTO;
+import org.springblade.manager.entity.SaveUserInfoByProject;
 import org.springblade.system.user.entity.User;
 
 import java.util.List;
@@ -15,4 +16,5 @@ public interface SaveUserInfoByProjectService extends BaseService<SaveUserInfoBy
 
     List<SaveUserInfoByProjectDTO> queryProjectBusinessUser(Long projectId, Long contractId);
 
+    List<SaveUserInfoByProjectDTO> selectList(String ids);
 }

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ContractInfoServiceImpl.java

@@ -337,7 +337,7 @@ public class ContractInfoServiceImpl
                 }
                 return true;
             } catch (IOException e) {
-                e.printStackTrace();
+                throw new ServiceException("施工台账初始化失败");
             }
         }
         return false;

+ 6 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ProjectInfoServiceImpl.java

@@ -95,11 +95,15 @@ public class ProjectInfoServiceImpl extends BaseServiceImpl<ProjectInfoMapper, P
         ProjectInfo projectInfo = baseMapper.selectById(id);
         if ("public".equals(referenceWbsTemplateType) && referenceWbsTemplateId != (-1)) {
             WbsInfo wbsInfo = wbsInfoMapper.selectById(referenceWbsTemplateId);
-            projectInfoVO2.setWbsType(wbsInfo.getWbsType());
+            if (wbsInfo != null) {
+                projectInfoVO2.setWbsType(wbsInfo.getWbsType());
+            }
             projectInfoVO2.setProjectInfo(projectInfo);
         } else if (("private").equals(referenceWbsTemplateType) && referenceWbsTemplateId != (-1)) {
             WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.selectByPKeyId(referenceWbsTemplateId);
-            projectInfoVO2.setWbsType(Integer.valueOf(wbsTreePrivate.getWbsType()));
+            if (wbsTreePrivate != null) {
+                projectInfoVO2.setWbsType(Integer.valueOf(wbsTreePrivate.getWbsType()));
+            }
             projectInfoVO2.setProjectInfo(projectInfo);
         } else {
             projectInfoVO2.setProjectInfo(projectInfo);

+ 7 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/SaveUserInfoByProjectServiceImpl.java

@@ -1,8 +1,10 @@
 package org.springblade.manager.service.impl;
 
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.manager.dto.SaveUserInfoByProjectDTO;
+import org.springblade.manager.entity.SaveUserInfoByProject;
 import org.springblade.manager.mapper.SaveUserInfoByProjectMapper;
 import org.springblade.manager.service.SaveUserInfoByProjectService;
 import org.springblade.system.user.entity.User;
@@ -35,4 +37,9 @@ public class SaveUserInfoByProjectServiceImpl
     public List<SaveUserInfoByProjectDTO> queryProjectBusinessUser(Long projectId, Long contractId) {
         return this.baseMapper.queryProjectBusinessUser(projectId, contractId);
     }
+
+    @Override
+    public List<SaveUserInfoByProjectDTO> selectList(String ids) {
+        return baseMapper.selectList(Wrappers.<SaveUserInfoByProjectDTO>query().lambda().eq(SaveUserInfoByProjectDTO::getProjectId,ids));
+    }
 }

+ 5 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsFormElementServiceImpl.java

@@ -342,6 +342,11 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
         return syncDataFiled(wbsFormElementVO2.getInitTableName(), listData);
     }
 
+    @Override
+    public boolean submitExcelRelationWbsTreeAndElement(String fId, String tableElementKey) {
+        return false;
+    }
+
     public boolean syncDataFiled(String initTableName, List<WbsFormElement> listData) {
         for (WbsFormElement listDatum : listData) {
             String initTableFiledType = getInitTableFiledType(listDatum.getEType());

+ 30 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

@@ -15,6 +15,7 @@ import org.springblade.core.tool.node.ForestNodeMerger;
 import org.springblade.core.tool.utils.StringPool;
 import org.springblade.manager.dto.WbsTreeContractDTO;
 import org.springblade.manager.entity.WbsInfo;
+import org.springblade.manager.entity.WbsTree;
 import org.springblade.manager.entity.WbsTreeContract;
 import org.springblade.manager.entity.WbsTreePrivate;
 import org.springblade.manager.mapper.WbsInfoMapper;
@@ -65,7 +66,34 @@ public class WbsTreeContractServiceImpl
         }
         List<String> diffRent = getDiffrent(idList1, idList2);
         if (diffRent.size() == 0) {
-            throw new ServiceException("未进行任何操作");
+            WbsInfo wbsInfo = wbsInfoMapper.selectById(pawDTO.getWbsId());
+            Integer wbsType = wbsInfo.getWbsType();
+            //同步项目wbs树新增的元素表
+            List<String> idsList1 = new ArrayList<>();
+            //获取私有wbs树下所有元素表
+            List<WbsTreePrivate> wbsTreePrivateList = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
+                    .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
+                    .eq(WbsTreePrivate::getWbsId, pawDTO.getWbsId())
+                    .eq(WbsTreePrivate::getType, 2)
+            );
+            wbsTreePrivateList.stream().forEach(id -> {
+                idsList1.add(String.valueOf(id.getId()));
+            });
+            //获取所有wbsTreePrivate新增的表单id
+            List<String> diffRent1 = getDiffrent(idsList1, idList2);
+            if (diffRent1.size() > 0) {
+                List<WbsTreeContract> wbsTreeContracts = new ArrayList<>();
+                //初始化
+                wbsTreePrivateList.stream().forEach(wbsTreePrivate -> {
+                    diffRent1.stream().forEach(id -> {
+                        if (Long.parseLong(id) == (wbsTreePrivate.getId())) {
+                            WbsTreeContract wbsTreeContract = getWbsTreePrivate(wbsTreePrivate, pawDTO, wbsType);
+                            wbsTreeContracts.add(wbsTreeContract);
+                        }
+                    });
+                });
+                this.saveBatch(wbsTreeContracts, 10000);
+            }
         } else {
             if (idList1.size() > idList2.size()) {
                 WbsInfo wbsInfo = wbsInfoMapper.selectById(pawDTO.getWbsId());
@@ -104,8 +132,8 @@ public class WbsTreeContractServiceImpl
                 });
                 baseMapper.deleteBatch(ids1, pawDTO.getWbsId(), pawDTO.getProjectId(), pawDTO.getContractId());
             }
-            return true;
         }
+        return true;
     }
 
     private WbsTreeContract getWbsTreePrivate(WbsTreePrivate wbsTree, WbsTreeContractDTO pawDTO, Integer wbsType) {

+ 137 - 67
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;
     }
 
 
@@ -295,12 +294,11 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
             case "字符串":
             case "签名":
             case "文件":
-                return 1000;
-            case "整数":
                 return 255;
-            case "数":
+            case "整数":
             case "数值":
-                return 65;
+            case "小数":
+                return 20;
             case "日期":
             default:
                 return 0;
@@ -386,8 +384,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
             ArrayList<Map<String, String>> result = excelUtil.readExcelToObj(canonicalPath);
             return importExcel(result, wbsTreeFu, wbsTree1);
         } catch (Exception e) {
-            String message = e.getMessage();
-            throw new ServiceException("导入失败,message{}" + message);
+            throw new ServiceException("导入失败,请确认模板是否正确");
         } finally {
             File file2 = new File(canonicalPath);
             if (file2.isFile() && file2.exists()) {
@@ -531,13 +528,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 +546,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 +561,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 +686,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 +700,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 +735,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) {

+ 2 - 2
blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java

@@ -241,8 +241,8 @@ public class UserController {
     @ApiOperation(value = "修改密码", notes = "传入密码")
     public R updatePassword(BladeUser user, @ApiParam(value = "旧密码", required = true) @RequestParam String oldPassword,
                             @ApiParam(value = "新密码", required = true) @RequestParam String newPassword,
-                            @ApiParam(value = "新密码", required = true) @RequestParam String newPassword1) {
-        boolean temp = userService.updatePassword(user.getUserId(), oldPassword, newPassword, newPassword1);
+                            @ApiParam(value = "新密码", required = true) @RequestParam String newPassword1, String plaintextPassword) {
+        boolean temp = userService.updatePassword(user.getUserId(), oldPassword, newPassword, newPassword1, plaintextPassword);
         return R.status(temp);
     }
 

+ 1 - 1
blade-service/blade-user/src/main/java/org/springblade/system/user/service/IUserService.java

@@ -172,7 +172,7 @@ public interface IUserService extends BaseService<User> {
      * @param newPassword1
      * @return
      */
-    boolean updatePassword(Long userId, String oldPassword, String newPassword, String newPassword1);
+    boolean updatePassword(Long userId, String oldPassword, String newPassword, String newPassword1,String plaintextPassword);
 
     /**
      * 删除用户

+ 20 - 16
blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java

@@ -18,6 +18,7 @@ package org.springblade.system.user.service.impl;
 
 
 import cn.hutool.crypto.SecureUtil;
+import cn.hutool.crypto.digest.MD5;
 import com.alibaba.nacos.common.utils.MD5Utils;
 import com.alibaba.nacos.common.utils.StringUtils;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
@@ -60,6 +61,7 @@ import org.springblade.system.user.vo.UserVO;
 import org.springblade.system.user.wrapper.UserWrapper;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import sun.security.rsa.RSASignature;
 
 import java.util.*;
 
@@ -136,7 +138,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 +151,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 +166,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("操作失败");
     }
 
@@ -224,7 +228,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
             throw new ServiceException(StringUtil.format("当前用户 [{}] 已存在!", user.getAccount()));
         }
         user.setName(user.getRealName());
-        return updateUserInfo(user);
+        return updateUserInfo(user) && submitUserDept(user);
     }
 
 
@@ -392,7 +396,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
     }
 
     @Override
-    public boolean updatePassword(Long userId, String oldPassword, String newPassword, String newPassword1) {
+    public boolean updatePassword(Long userId, String oldPassword, String newPassword, String newPassword1, String plaintextPassword) {
         User user = getById(userId);
         if (!newPassword.equals(newPassword1)) {
             throw new ServiceException("请输入正确的确认密码!");
@@ -401,8 +405,8 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
             throw new ServiceException("原密码不正确!");
         }
         return this.update(Wrappers.<User>update().lambda()
+                .set(User::getPlaintextPassword, plaintextPassword)
                 .set(User::getPassword, DigestUtil.hex(newPassword))
-                .set(User::getPlaintextPassword, newPassword)
                 .eq(User::getId, userId));
     }