Browse Source

Merge remote-tracking branch 'origin/master' into master

yangyj 3 years ago
parent
commit
b3d4ab67ff
26 changed files with 447 additions and 199 deletions
  1. 120 86
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ContractInfo.java
  2. 6 1
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsFormElementVO.java
  3. 39 24
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ContractInfoController.java
  4. 24 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsInfoController.java
  5. 35 10
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeController.java
  6. 51 12
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreePrivateController.java
  7. 2 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/excel/WbsExcelUtil.java
  8. 2 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ContractInfoMapper.java
  9. 6 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ContractInfoMapper.xml
  10. 1 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.java
  11. 0 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml
  12. 5 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeMapper.java
  13. 12 3
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeMapper.xml
  14. 3 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.java
  15. 15 4
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml
  16. 9 8
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IContractInfoService.java
  17. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeContractService.java
  18. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreePrivateService.java
  19. 6 5
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeService.java
  20. 5 3
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ContractInfoServiceImpl.java
  21. 8 5
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java
  22. 5 8
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java
  23. 85 14
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java
  24. 0 2
      blade-service/blade-system/src/main/java/org/springblade/system/controller/RoleController.java
  25. 1 0
      blade-service/blade-system/src/main/java/org/springblade/system/mapper/RoleMapper.xml
  26. 4 4
      blade-service/blade-system/src/main/java/org/springblade/system/service/impl/RoleServiceImpl.java

+ 120 - 86
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ContractInfo.java

@@ -37,95 +37,129 @@ import lombok.EqualsAndHashCode;
 @EqualsAndHashCode(callSuper = true)
 public class ContractInfo extends BaseEntity {
 
-	private static final long serialVersionUID = 1L;
+    private static final long serialVersionUID = 1L;
 
-	/**
-	 * 项目id
-	 */
-	@ApiModelProperty(value = "项目id")
-	private String pId;
+    /**
+     * 项目id
+     */
+    @ApiModelProperty(value = "项目id")
+    private String pId;
 
-	/**
-	 * 合同段名称
-	 */
-	@ApiModelProperty(value = "合同段名称")
-	private String contractName;
-	/**
-	 * 合同段类型
-	 */
-	@ApiModelProperty(value = "合同段类型")
-	private Integer contractType;
-	/**
-	 * 合同段编号
-	 */
-	@ApiModelProperty(value = "合同段编号")
-	private String contractNumber;
-	/**
-	 * 业主单位名称
-	 */
-	@ApiModelProperty(value = "业主单位名称")
-	private String contractorUnitName;
-	/**
-	 * 施工单位名称
-	 */
-	@ApiModelProperty(value = "施工单位名称")
-	private String constructionUnitName;
-	/**
-	 * 监理单位名称
-	 */
-	@ApiModelProperty(value = "监理单位名称")
-	private String supervisionUnitName;
-	/**
-	 * 参与方进场时间
-	 */
-	@ApiModelProperty(value = "参与方进场时间")
-	private String contractorJoinTime;
-	/**
-	 * 计划开工时间
-	 */
-	@ApiModelProperty(value = "计划开工时间")
-	private LocalDateTime planStartTime;
-	/**
-	 * 计划完工时间
-	 */
-	@ApiModelProperty(value = "计划完工时间")
-	private LocalDateTime planEndTime;
-	/**
-	 * 实际开工时间
-	 */
-	@ApiModelProperty(value = "实际开工时间")
-	private LocalDateTime actualStartTime;
-	/**
-	 * 实际完工时间
-	 */
-	@ApiModelProperty(value = "实际完工时间")
-	private LocalDateTime actualEndTime;
-	/**
-	 * 开工令文件
-	 */
-	@ApiModelProperty(value = "开工令文件")
-	private String startFileUrl;
-	/**
-	 * 合同段总金额
-	 */
-	@ApiModelProperty(value = "合同段总金额")
-	private BigDecimal contractAmount;
-	/**
-	 * 合同段工程位置
-	 */
-	@ApiModelProperty(value = "合同段工程位置")
-	private String projectPlace;
-	/**
-	 * 起始桩号
-	 */
-	@ApiModelProperty(value = "起始桩号")
-	private String startStation;
-	/**
-	 * 结束桩号
-	 */
-	@ApiModelProperty(value = "结束桩号")
-	private String endStation;
+    /**
+     * 合同段名称
+     */
+    @ApiModelProperty(value = "合同段名称")
+    private String contractName;
+    /**
+     * 合同段类型
+     */
+    @ApiModelProperty(value = "合同段类型")
+    private Integer contractType;
+    /**
+     * 合同段编号
+     */
+    @ApiModelProperty(value = "合同段编号")
+    private String contractNumber;
+    /**
+     * 业主单位名称
+     */
+    @ApiModelProperty(value = "业主单位名称")
+    private String contractorUnitName;
+    /**
+     * 施工单位名称
+     */
+    @ApiModelProperty(value = "施工单位名称")
+    private String constructionUnitName;
+    /**
+     * 监理单位名称
+     */
+    @ApiModelProperty(value = "监理单位名称")
+    private String supervisionUnitName;
+    /**
+     * 实验室名称
+     */
+    @ApiModelProperty(value = "实验室名称")
+    private String laboratoryName;
+    /**
+     * 参与方进场时间
+     */
+    @ApiModelProperty(value = "参与方进场时间")
+    private String contractorJoinTime;
+    /**
+     * 计划开工时间
+     */
+    @ApiModelProperty(value = "计划开工时间")
+    private LocalDateTime planStartTime;
+    /**
+     * 计划完工时间
+     */
+    @ApiModelProperty(value = "计划完工时间")
+    private LocalDateTime planEndTime;
+    /**
+     * 实际开工时间
+     */
+    @ApiModelProperty(value = "实际开工时间")
+    private LocalDateTime actualStartTime;
+    /**
+     * 实际完工时间
+     */
+    @ApiModelProperty(value = "实际完工时间")
+    private LocalDateTime actualEndTime;
+    /**
+     * 开工令文件
+     */
+    @ApiModelProperty(value = "开工令文件")
+    private String startFileUrl;
+    /**
+     * 合同段总金额
+     */
+    @ApiModelProperty(value = "合同段总金额")
+    private BigDecimal contractAmount;
+    /**
+     * 合同段工程位置
+     */
+    @ApiModelProperty(value = "合同段工程位置")
+    private String projectPlace;
+    /**
+     * 起始桩号
+     */
+    @ApiModelProperty(value = "起始桩号")
+    private String startStation;
+    /**
+     * 结束桩号
+     */
+    @ApiModelProperty(value = "结束桩号")
+    private String endStation;
 
+    /**
+     * 立卷人
+     */
+    @ApiModelProperty(value = "filer")
+    private String filer;
+
+    /**
+     * 审核人
+     */
+    @ApiModelProperty(value = "reviewer")
+    private String reviewer;
+
+    /**
+     * 档案前缀
+     */
+    @ApiModelProperty(value = "prefix")
+    private String prefix;
+
+    /**
+     * 保管期限
+     */
+    @ApiModelProperty(value = "storagePeriod")
+    private Integer storagePeriod;
+
+    /**
+     * 保管密级
+     */
+    @ApiModelProperty(value = "securityLevel")
+    private Integer securityLevel;
 
 
 }

+ 6 - 1
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsFormElementVO.java

@@ -30,6 +30,11 @@ import org.springblade.manager.entity.WbsFormElement;
 @Data
 @EqualsAndHashCode(callSuper = true)
 public class WbsFormElementVO extends WbsFormElement {
-	private static final long serialVersionUID = 1L;
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 公式key
+     */
+    private String tableElementKey;
 
 }

+ 39 - 24
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ContractInfoController.java

@@ -19,6 +19,7 @@ package org.springblade.manager.controller;
 import com.alibaba.nacos.common.utils.MD5Utils;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import io.swagger.annotations.*;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
@@ -26,9 +27,11 @@ import lombok.AllArgsConstructor;
 import javax.validation.Valid;
 
 import org.apache.commons.lang.StringUtils;
+import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
+import org.springblade.core.mp.utils.PageUtil;
 import org.springblade.core.secure.BladeUser;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
@@ -214,13 +217,10 @@ public class ContractInfoController extends BladeController {
      */
     @PostMapping("/findUserListByCondition")
     @ApiOperationSupport(order = 10)
-    @ApiOperation(value = "查询当前项目角色下的运维用户列表", notes = "传入项目id、角色id、合同id(非必传)")
-    public R<List<User>> findUserListByCondition(@RequestBody FindAllUserByConditionDTO values) {
-        List<User> users = contractInfoService.findUserListByCondition(values);
-        if (users.size() > 0) {
-            return R.data(users);
-        }
-        return R.data(users, "未查询到数据");
+    @ApiOperation(value = "查询当前项目角色下的运维用户列表", notes = "传入项目id、角色id、合同id(非必传)、size每页数量、current当前页")
+    public R<IPage<User>> findUserListByCondition(@RequestBody FindAllUserByConditionDTO values, Query query) {
+        IPage<User> users = contractInfoService.findUserListByCondition(Condition.getPage(query), values);
+        return R.data(users);
     }
 
 
@@ -244,14 +244,36 @@ public class ContractInfoController extends BladeController {
      */
     @PostMapping("/saveUserInfoByProject")
     @ApiOperationSupport(order = 12)
-    @ApiOperation(value = "保存当前用户与合同段关联信息", notes = "传入项目id、合同id、角色id、岗位id、用户id List集合")
+    @ApiOperation(value = "保存-项目分配维护人员", notes = "传入项目id、合同id、岗位id、用户id List集合")
     public R saveUserInfoByProject(@RequestBody List<SaveUserInfoByProjectDTO> list) {
-        //list.stream().forEach(System.out::print);
         if (list.size() > 0) {
-            boolean result = saveUserInfoByProject.saveBatch(list);
-            if (result) {
-                return R.success("保存成功");
-            }
+            list.forEach((lists) -> {
+                //判重
+                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::getUserId, lists.getUserId()));
+                if (row > 0L) {
+                    throw new ServiceException(StringUtil.format("当前用户岗位已存在该合同段,请重新选择"));
+                }
+                if (StringUtils.isEmpty(lists.getContractId())) {
+                    //新增到全部合同段
+                    List<ContractInfo> contractInfos = contractInfoService.selectContractInfoPageByPid(lists.getProjectId());
+                    contractInfos.forEach(contractInfo -> {
+                        Long id = SnowFlakeUtil.getId();
+                        lists.setId(id);
+                        lists.setStatus(1);
+                        lists.setContractId(String.valueOf(contractInfo.getId()));
+                        saveUserInfoByProject.save(lists);
+                    });
+                } else {
+                    //新增单个合同段
+                    saveUserInfoByProject.saveBatch(list);
+                }
+            });
+            return R.success("保存成功");
         }
         return R.fail("保存失败");
     }
@@ -317,18 +339,11 @@ public class ContractInfoController extends BladeController {
     @ApiOperationSupport(order = 16)
     @ApiOperation(value = "分配合同段wbs节点树保存或修改", notes = "传入ids,wbsId,项目id,合同段id")
     public R submitWbsTreeInContract(@RequestBody WbsTreeContractDTO wbsTreeContractDTO) {
-        String s = wbsTreeContractService.submitWbsTreeInContract(wbsTreeContractDTO);
-        switch (s) {
-            case "1":
-                return R.success("请选择需要关联的节点");
-            case "2":
-                return R.success("未进行任何操作");
-            case "3":
-                return R.success("关联合同段树成功");
-            default:
-                return R.success("关联合同段树失败");
+        boolean b = wbsTreeContractService.submitWbsTreeInContract(wbsTreeContractDTO);
+        if (b) {
+            return R.success("关联合同段树成功");
         }
-
+        return R.fail("关联合同段树失败");
     }
 
     /**

+ 24 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsInfoController.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.manager.controller;
 
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import io.swagger.annotations.*;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
@@ -30,6 +31,9 @@ import org.springblade.core.tool.utils.Func;
 import org.springblade.manager.dto.WbsInfoDTO;
 import org.springblade.manager.entity.WbsInfo;
 import org.springblade.manager.entity.WbsTree;
+import org.springblade.manager.entity.WbsTreePrivate;
+import org.springblade.manager.mapper.WbsTreePrivateMapper;
+import org.springblade.manager.service.IWbsTreePrivateService;
 import org.springblade.manager.service.IWbsTreeService;
 import org.springblade.manager.vo.WbsInfoVO;
 import org.springframework.transaction.annotation.Transactional;
@@ -56,6 +60,7 @@ public class WbsInfoController extends BladeController {
 
     private final IWbsInfoService wbsInfoService;
     private final IWbsTreeService wbsTreeService;
+    private final WbsTreePrivateMapper wbsTreePrivateMapper;
 
     /**
      * 详情
@@ -142,12 +147,29 @@ public class WbsInfoController extends BladeController {
     @PostMapping("/remove")
     @ApiOperationSupport(order = 7)
     @ApiOperation(value = "逻辑删除", notes = "传入ids")
+    @Transactional(rollbackFor = Exception.class)
     public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
         List<WbsTree> list = wbsTreeService.findByWbsTreeNode(ids);
         if (list.size() > 0) {
-            return R.fail("请先删除Wbs树下的节点");
+            return R.fail("当前模板根节点下有子节点,删除失败");
+        }
+        List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query()
+                .lambda()
+                .eq(WbsTreePrivate::getWbsId, ids)
+                .eq(WbsTreePrivate::getStatus, 1)
+                .eq(WbsTreePrivate::getIsDeleted, 0));
+        if (wbsTreePrivates.size() > 0) {
+            return R.fail("当前模板已被项目引用,删除失败");
+        }
+        boolean b = wbsInfoService.deleteLogic(Func.toLongList(ids));
+        if (b) {
+            //删除wbsTree根节点
+            int row = wbsTreeService.deleteLogicByWbsId(ids);
+            if (row > 0) {
+                return R.success("删除成功");
+            }
         }
-        return R.status(wbsInfoService.deleteLogic(Func.toLongList(ids)));
+        return R.fail("删除失败");
     }
 
     /**

+ 35 - 10
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeController.java

@@ -18,6 +18,7 @@ package org.springblade.manager.controller;
 
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import io.swagger.annotations.*;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
@@ -37,9 +38,12 @@ import org.springblade.manager.dto.WbsTreeDTO;
 import org.springblade.manager.dto.WbsTreeDTO2;
 import org.springblade.manager.entity.WbsFormElement;
 import org.springblade.manager.entity.WbsTree;
+import org.springblade.manager.entity.WbsTreePrivate;
 import org.springblade.manager.excel.WbsExcelUtil;
 import org.springblade.manager.excel.WbsTreeExcel;
+import org.springblade.manager.mapper.WbsTreePrivateMapper;
 import org.springblade.manager.service.IWbsFormElementService;
+import org.springblade.manager.vo.WbsFormElementVO;
 import org.springblade.manager.vo.WbsNodeTableVO;
 import org.springblade.manager.vo.WbsTreeVO;
 import org.springblade.system.cache.DictCache;
@@ -74,6 +78,7 @@ public class WbsTreeController extends BladeController {
 
     private final IWbsTreeService wbsTreeService;
     private final IWbsFormElementService wbsFormElementService;
+    private final WbsTreePrivateMapper wbsTreePrivateMapper;
 
     /**
      * 详情
@@ -152,9 +157,22 @@ public class WbsTreeController extends BladeController {
      */
     @PostMapping("/remove")
     @ApiOperationSupport(order = 5)
-    @ApiOperation(value = "逻辑删除", notes = "传入ids")
-    public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
-        return R.status(wbsTreeService.deleteLogic(Func.toLongList(ids)));
+    @ApiOperation(value = "逻辑删除", notes = "传入节点id")
+    public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String id) {
+        //是否存在子节点、表单
+        List<WbsTree> wbsTreeList = wbsTreeService.selectByWbsId(id);
+        if (wbsTreeList.size() > 0) {
+            return R.fail("当前节点下存在子节点或表单,删除失败");
+        }
+        //是否引用
+        List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
+                .eq(WbsTreePrivate::getStatus, 1)
+                .eq(WbsTreePrivate::getId, id)
+        );
+        if (wbsTreePrivates.size() > 0) {
+            return R.fail("当前节点已被项目引用,删除失败");
+        }
+        return R.status(wbsTreeService.deleteLogic(Func.toLongList(id)));
     }
 
 
@@ -181,10 +199,17 @@ public class WbsTreeController extends BladeController {
     @ApiImplicitParam(name = "id", value = "表单id", required = true)
     public R removeTableById(@RequestParam("id") String id) {
         if (StringUtils.isNotEmpty(id)) {
-            // 先查询表单下是否有元素,有元素则无法删除
-            List<WbsFormElement> wbsFormElements = wbsTreeService.selectFormElements(id);
+            //否有元素
+            List<WbsFormElementVO> wbsFormElements = wbsTreeService.selectFormElements(id);
             if (wbsFormElements.size() > 0) {
-                return R.fail("删除失败,请先移除表单中的元素!");
+                return R.fail("删除失败,请先移除表单中的元素");
+            }
+            //是否引用
+            List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
+                    .eq(WbsTreePrivate::getStatus, 1)
+                    .eq(WbsTreePrivate::getId, id));
+            if (wbsTreePrivates.size() > 0) {
+                return R.fail("该表单已被项目引用,删除失败");
             }
             //删除表单
             boolean restul = wbsTreeService.removeTableById(id);
@@ -202,11 +227,11 @@ public class WbsTreeController extends BladeController {
     @ApiOperationSupport(order = 8)
     @ApiOperation(value = "根据表单id查询所有元素", notes = "传入表单id")
     @ApiImplicitParam(name = "id", value = "表单id", required = true)
-    public R<List<WbsFormElement>> selectFormElements(@RequestParam("id") String id) {
-        List<WbsFormElement> wbsFormElements = null;
+    public R<List<WbsFormElementVO>> selectFormElements(@RequestParam("id") String id) {
+        List<WbsFormElementVO> wbsFormElements = null;
         if (StringUtils.isNotEmpty(id)) {
             wbsFormElements = wbsTreeService.selectFormElements(id);
-            if (wbsFormElements.size() > 0 && !"".equals(wbsFormElements)) {
+            if (wbsFormElements.size() > 0) {
                 return R.data(wbsFormElements);
             }
         }
@@ -278,7 +303,7 @@ public class WbsTreeController extends BladeController {
         Long parentId = wbsTreeFu.getParentId();
         WbsTree wbsTree1 = wbsTreeService.getById(parentId);
         if (wbsTree1.getProjectNodeId().equals(parentId)) {
-            /*覆盖*/
+            //覆盖
             wbsTreeService.deleteBatchByProjectNodeId(wbsTree1.getProjectNodeId());
             String result = wbsTreeService.importWbsTree(excelFile, wbsTreeFu, wbsTree1);
             if (result.equals("1")) {

+ 51 - 12
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreePrivateController.java

@@ -1,10 +1,8 @@
 package org.springblade.manager.controller;
 
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.*;
 import lombok.AllArgsConstructor;
 import org.springblade.core.boot.ctrl.BladeController;
 import org.springblade.core.cache.utils.CacheUtil;
@@ -16,7 +14,10 @@ import org.springblade.core.tool.utils.Func;
 import org.springblade.manager.dto.WbsTreeDTO2;
 import org.springblade.manager.dto.WbsTreePrivateDTO2;
 import org.springblade.manager.entity.WbsTree;
+import org.springblade.manager.entity.WbsTreeContract;
 import org.springblade.manager.entity.WbsTreePrivate;
+import org.springblade.manager.mapper.WbsTreeContractMapper;
+import org.springblade.manager.mapper.WbsTreePrivateMapper;
 import org.springblade.manager.service.IWbsTreePrivateService;
 import org.springblade.manager.vo.WbsNodeTableVO;
 import org.springblade.manager.vo.WbsTreePrivateVO;
@@ -40,12 +41,50 @@ import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
 public class WbsTreePrivateController extends BladeController {
 
     private final IWbsTreePrivateService wbsTreePrivateService;
+    private final WbsTreeContractMapper wbsTreeContractMapper;
+    private final WbsTreePrivateMapper wbsTreePrivateMapper;
+
+    /**
+     * 私有库节点逻辑删除
+     */
+    @PostMapping("/remove")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation(value = "私有库节点逻辑删除", notes = "传入节点pKeyId")
+    public R remove(@ApiParam(value = "主键id", required = true) @RequestParam String pKeyId) {
+        //是否存在子节点、表单
+        WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda()
+                .eq(WbsTreePrivate::getPKeyId, pKeyId)
+                .eq(WbsTreePrivate::getStatus, 1));
+        List<WbsTreePrivate> wbsTreePrivate1 = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
+                .eq(WbsTreePrivate::getParentId, wbsTreePrivate.getId())
+                .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
+                .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
+                .eq(WbsTreePrivate::getStatus, 1));
+        if (wbsTreePrivate1.size() > 0) {
+            return R.fail("当前节点下存在子节点或表单,删除失败");
+        }
+        //是否被合同段引用
+        List<WbsTreeContract> wbsTreeContracts = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
+                .eq(WbsTreeContract::getStatus, 1)
+                .eq(WbsTreeContract::getId, wbsTreePrivate.getId())
+                .eq(WbsTreeContract::getProjectId, wbsTreePrivate.getProjectId())
+                .eq(WbsTreeContract::getWbsId, wbsTreePrivate.getWbsId())
+        );
+        if (wbsTreeContracts.size() > 0) {
+            return R.fail("当前节点已被项目合同段引用,删除失败");
+        }
+        if (wbsTreePrivateService.deleteLogicBypKeyId(pKeyId) > 0) {
+            return R.success("删除成功");
+        }
+        return R.fail("删除失败");
+    }
+
 
     /**
      * wbs私有库新增节点接口 同步合同段wbs库
      */
     @PostMapping("/submit")
-    @ApiOperationSupport(order = 1)
+    @ApiOperationSupport(order = 2)
     @ApiOperation(value = "新增或修改节点", notes = "WbsTreePrivate")
     public R submit(@Valid @RequestBody WbsTreePrivate wbsTreePrivate) {
         if (wbsTreePrivateService.submit(wbsTreePrivate)) {
@@ -61,7 +100,7 @@ public class WbsTreePrivateController extends BladeController {
      * 查询当前节点下所有表单(根据节点ID查询当前表单)
      */
     @GetMapping("/findNodeTableByCondition")
-    @ApiOperationSupport(order = 2)
+    @ApiOperationSupport(order = 3)
     @ApiOperation(value = "查询当前节点下所有元素表", notes = "传入父节点id、wbsId、projectId")
     public R<List<WbsNodeTableVO>> findNodeTableByCondition(@RequestParam("parentId") String parentId,
                                                             @RequestParam("wbsId") String wbsId,
@@ -75,7 +114,7 @@ public class WbsTreePrivateController extends BladeController {
 
 
     @GetMapping("/removeTableByCondition")
-    @ApiOperationSupport(order = 3)
+    @ApiOperationSupport(order = 4)
     @ApiOperation(value = "删除节点下的元素表", notes = "传入表单id、wbsId、projectId")
     public R removeTableByCondition(@RequestParam("id") String id,
                                     @RequestParam("wbsId") String wbsId,
@@ -93,7 +132,7 @@ public class WbsTreePrivateController extends BladeController {
      * wbs私有树懒加载获取项目私有节点树形结构
      */
     @GetMapping("/lazy-tree")
-    @ApiOperationSupport(order = 2)
+    @ApiOperationSupport(order = 5)
     @ApiOperation(value = "项目级懒加载节点树形结构", notes = "传入wbsId,parentId,,项目id,请求头token")
     @ApiImplicitParams(value = {
             @ApiImplicitParam(name = "wbsId", value = "wbsId", required = true),
@@ -113,7 +152,7 @@ public class WbsTreePrivateController extends BladeController {
      */
 
     @GetMapping("/detail")
-    @ApiOperationSupport(order = 1)
+    @ApiOperationSupport(order = 6)
     @ApiOperation(value = "详情", notes = "传入主键id,wbsId,项目id,请求头token")
     @ApiImplicitParams(value = {
             @ApiImplicitParam(name = "id", value = "节点id", required = true),
@@ -132,7 +171,7 @@ public class WbsTreePrivateController extends BladeController {
     /**
      * 查询当前节点所有同级节点
      */
-    @ApiOperationSupport(order = 14)
+    @ApiOperationSupport(order = 7)
     @ApiOperation(value = "查询当前节点所有同级节点", notes = "传入项目id、当前节点parentId")
     @RequestMapping(value = "/findWbsTreePrivateSameLevel", method = RequestMethod.GET)
     public R<List<WbsTreePrivateDTO2>> findWbsTreePrivateSameLevel(@RequestParam("projectId") String projectId,
@@ -145,7 +184,7 @@ public class WbsTreePrivateController extends BladeController {
     /**
      * wbs树节点手动排序
      */
-    @ApiOperationSupport(order = 15)
+    @ApiOperationSupport(order = 8)
     @ApiOperation(value = "wbs私有树节点手动排序", notes = "WbsTreeDTO2集合,pKeyId=节点pKeyId")
     @RequestMapping(value = "/wbsTreePrivateSort", method = RequestMethod.POST)
     public R wbsTreePrivateSort(@RequestBody List<WbsTreePrivateDTO2> wbsTreeDTO) {
@@ -157,7 +196,7 @@ public class WbsTreePrivateController extends BladeController {
     /**
      * wbs树节点下表单手动排序
      */
-    @ApiOperationSupport(order = 15)
+    @ApiOperationSupport(order = 9)
     @ApiOperation(value = "wbs私有树表单手动排序", notes = "WbsTreeDTO2集合,pKeyId=表单pKeyId")
     @RequestMapping(value = "/wbsTreePrivateTableSort", method = RequestMethod.POST)
     public R wbsTreePrivateTableSort(@RequestBody List<WbsTreePrivateDTO2> wbsTreeDTO) {

+ 2 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/excel/WbsExcelUtil.java

@@ -14,14 +14,14 @@ import java.io.*;
 import java.util.*;
 
 public class WbsExcelUtil {
-    public static void main(String[] args) throws IOException {
+    /*public static void main(String[] args) throws IOException {
         WbsExcelUtil excelUtil = new WbsExcelUtil();
         //读取excel数据
         ArrayList<Map<String, String>> result = excelUtil.readExcelToObj("D:\\Download\\WBS划分模板1.xls");
         for (Map<String, String> map : result) {
             System.out.println("输出:" + map);
         }
-    }
+    }*/
 
     /**
      * 读取excel数据

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

@@ -35,7 +35,7 @@ import java.util.List;
  */
 public interface ContractInfoMapper extends BaseMapper<ContractInfo> {
 
-    List<ContractInfo> selectContractByProjectIds(@Param("ids")List<Long> ids);
+    List<ContractInfo> selectContractByProjectIds(@Param("ids") List<Long> ids);
 
     /**
      * 自定义分页
@@ -54,7 +54,7 @@ public interface ContractInfoMapper extends BaseMapper<ContractInfo> {
 
     List<User> findAllUserByCondition(@Param("Values") FindAllUserByConditionDTO values);
 
-    List<User> findUserListByCondition(@Param("Values") FindAllUserByConditionDTO values);
+    List<User> findUserListByCondition(IPage page, @Param("Values") FindAllUserByConditionDTO values);
 
     List<User> findUserInfoByCondition(@Param("rId") String rId,
                                        @Param("pId") String pId,

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

@@ -21,6 +21,7 @@
         <result column="contractor_unit_name" property="contractorUnitName"/>
         <result column="construction_unit_name" property="constructionUnitName"/>
         <result column="supervision_unit_name" property="supervisionUnitName"/>
+        <result column="laboratory_name" property="laboratoryName"/>
         <result column="contractor_join_time" property="contractorJoinTime"/>
         <result column="plan_start_time" property="planStartTime"/>
         <result column="plan_end_time" property="planEndTime"/>
@@ -32,6 +33,11 @@
         <result column="project_place" property="projectPlace"/>
         <result column="start_station" property="startStation"/>
         <result column="end_station" property="endStation"/>
+        <result column="filer" property="filer"/>
+        <result column="reviewer" property="reviewer"/>
+        <result column="prefix" property="prefix"/>
+        <result column="security_level" property="securityLevel"/>
+        <result column="storage_period" property="storagePeriod"/>
 
     </resultMap>
     <!-- 通用查询映射结果 -->

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.java

@@ -53,4 +53,5 @@ public interface WbsTreeContractMapper extends BaseMapper<WbsTreeContract> {
                            @Param("contractId") Long contractId,
                            @Param("pKeyId") Long pKeyId,
                            @Param("wbsType") Integer wbsType);
+
 }

+ 0 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml

@@ -144,7 +144,6 @@
             AND contract_id = #{contractId}
             AND wbs_id = #{wbsId}
             AND STATUS = 1
-            AND is_deleted = 1
     </select>
 
     <select id="findAllNodeList2" resultType="org.springblade.manager.entity.WbsTreeContract">

+ 5 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeMapper.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.manager.mapper;
 
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Param;
@@ -23,6 +24,7 @@ import org.springblade.manager.dto.WbsTreeDTO2;
 import org.springblade.manager.entity.WbsFormElement;
 import org.springblade.manager.entity.WbsTree;
 import org.springblade.manager.vo.SaveUserInfoByProjectVO;
+import org.springblade.manager.vo.WbsFormElementVO;
 import org.springblade.manager.vo.WbsNodeTableVO;
 import org.springblade.manager.vo.WbsTreeVO;
 
@@ -84,7 +86,7 @@ public interface WbsTreeMapper extends BaseMapper<WbsTree> {
     /**
      * 表单元素
      */
-    List<WbsFormElement> selectFormElements(@Param("id") String id);
+    List<WbsFormElementVO> selectFormElements(@Param("id") String id);
 
 
     /**
@@ -124,4 +126,6 @@ public interface WbsTreeMapper extends BaseMapper<WbsTree> {
     List<WbsTreeDTO2> selectWbsTreeListByParentId(String parentId);
 
     void updateSortById(String id, Integer sort);
+
+    int deleteLogicByWbsId(String ids);
 }

+ 12 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeMapper.xml

@@ -42,6 +42,7 @@
         <result column="has_children" property="hasChildren"/>
         <result column="type" property="type"/>
         <result column="deptCategory" property="deptCategory"/>
+        <result column="wbsType" property="wbsType"/>
     </resultMap>
 
     <resultMap id="selectByNodeTableMap" type="org.springblade.manager.vo.WbsNodeTableVO">
@@ -55,7 +56,7 @@
         <result column="sort" property="sort"/>
     </resultMap>
 
-    <resultMap id="wbsFormElementMap" type="org.springblade.manager.entity.WbsFormElement">
+    <resultMap id="wbsFormElementMap" type="org.springblade.manager.vo.WbsFormElementVO">
         <id column="id" property="id"/>
         <result column="fId" property="fId"/>
         <result column="e_key" property="eKey"/>
@@ -64,6 +65,7 @@
         <result column="e_length" property="eLength"/>
         <result column="e_allow_deviation" property="eAllowDeviation"/>
         <result column="e_inspection_method" property="eInspectionMethod"/>
+        <result column="tableElementKey" property="tableElementKey"/>
     </resultMap>
 
     <insert id="addFormElement" parameterType="org.springblade.manager.dto.WbsFormElementDTO">
@@ -142,12 +144,18 @@
         delete from m_wbs_tree where project_node_id = #{projectNodeId} and id &lt;&gt; #{projectNodeId}
     </delete>
 
+    <update id="deleteLogicByWbsId">
+        update m_wbs_tree set is_deleted = 1 where wbs_id = #{ids} and status = 1
+    </update>
+
     <select id="selectWbsTreePage" resultMap="wbsTreeResultMap">
         select * from m_wbs_tree where is_deleted = 0
     </select>
 
     <select id="tree" resultMap="treeNodeResultMap">
-        select id, parent_id, dept_name as title,type as "type", id as "value", id as "key" from m_wbs_tree where
+        select id, parent_id, dept_name as title,type as "type", id as "value", id as "key",
+        (select wbs_type from m_wbs_info where id = #{wbsId}) as "wbsType"
+        from m_wbs_tree where
         is_deleted = 0
         and status = 1
         <if test="wbsId!=null and wbsId!=''">
@@ -221,7 +229,8 @@
 
     <select id="selectFormElements" resultMap="wbsFormElementMap">
         SELECT
-            w.f_id as fId,w.e_key,w.id,w.e_name,e_type,e_length,e_allow_deviation,e_Inspection_method
+            w.f_id as fId,w.e_key,w.id,w.e_name,e_type,e_length,e_allow_deviation,e_Inspection_method,
+            (select CONCAT(dept_name,'_',w.e_name) from m_wbs_tree where id = #{id}) AS "tableElementKey"
         FROM
             m_wbs_form_element w
         WHERE

+ 3 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.java

@@ -19,7 +19,7 @@ import java.util.List;
  * @since 2022-05-24
  */
 public interface WbsTreePrivateMapper extends BaseMapper<WbsTreePrivate> {
-    List<WbsTreePrivate> selectAll();
+    List<WbsTreePrivate> selectAll(Integer wbsType);
 
     /**
      * 获取树形节点
@@ -78,4 +78,6 @@ public interface WbsTreePrivateMapper extends BaseMapper<WbsTreePrivate> {
     void updateSortById(Long pKeyId, Integer sort);
 
     void updateSortById2(Long pKeyId, Integer sort);
+
+    int updateIsDeletedByPKeyId(String pKeyId);
 }

+ 15 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml

@@ -158,6 +158,14 @@
         AND is_deleted = 0
     </update>
 
+    <update id="updateIsDeletedByPKeyId">
+        UPDATE m_wbs_tree_private
+        SET is_deleted = 1
+        WHERE p_key_id = #{pKeyId}
+        AND status = 1
+        AND is_deleted = 0
+    </update>
+
 
     <select id="lazyTree" resultMap="treeNodeResultMap">
         SELECT
@@ -201,13 +209,16 @@
         wtp.project_id,
         ( SELECT project_name FROM m_project_info pi WHERE wtp.project_id = pi.id ) AS project_name
         FROM
-            m_wbs_tree_private AS wtp
+        m_wbs_tree_private AS wtp
         WHERE
-            is_deleted = 0
+        is_deleted = 0
         AND STATUS = 1
         AND parent_id = 0
-            GROUP BY
-            project_id
+        <if test="wbsType != null and wbsType != ''">
+            AND wbs_type = #{wbsType}
+        </if>
+        GROUP BY
+        project_id
     </select>
 
     <select id="tree" resultMap="treeNodeResultMap">

+ 9 - 8
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IContractInfoService.java

@@ -37,23 +37,23 @@ import java.util.List;
  */
 public interface IContractInfoService extends BaseService<ContractInfo> {
 
-	List<ContractInfo> selectContractByProjectIds(List<Long> ids);
+    List<ContractInfo> selectContractByProjectIds(List<Long> ids);
 
-	IPage<ContractInfoVO> selectContractInfoPage(IPage<ContractInfoVO> page, ContractInfoVO contractInfo);
+    IPage<ContractInfoVO> selectContractInfoPage(IPage<ContractInfoVO> page, ContractInfoVO contractInfo);
 
-	List<ContractInfo> selectContractInfoPageByPid(String pid);
+    List<ContractInfo> selectContractInfoPageByPid(String pid);
 
     List<CRolePostVO> findJobByRoleId(String id);
 
-	List<User> findAllUserByCondition(FindAllUserByConditionDTO values);
+    List<User> findAllUserByCondition(FindAllUserByConditionDTO values);
 
-	List<User> findUserListByCondition(FindAllUserByConditionDTO values);
+    IPage<User> findUserListByCondition(IPage<User> page, FindAllUserByConditionDTO values);
 
-	List<User> findUserInfoByCondition(String rId ,String pId,String userName);
+    List<User> findUserInfoByCondition(String rId, String pId, String userName);
 
-	List<User> findUserByName(String name);
+    List<User> findUserByName(String name);
 
-    Boolean updatePasswordByUserId(String userId,String password);
+    Boolean updatePasswordByUserId(String userId, String password);
 
     String selectStartFileId(String startFileUrl);
 
@@ -67,4 +67,5 @@ public interface IContractInfoService extends BaseService<ContractInfo> {
 
     boolean saveAndUpdateContract(ContractInfoVO contractInfo);
 
+
 }

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

@@ -8,6 +8,6 @@ import org.springblade.manager.entity.WbsTreeContract;
 
 public interface IWbsTreeContractService extends BaseService<WbsTreeContract> {
 
-    String submitWbsTreeInContract(WbsTreeContractDTO wbsTreeContractDTO);
+    boolean submitWbsTreeInContract(WbsTreeContractDTO wbsTreeContractDTO);
 
 }

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

@@ -32,4 +32,6 @@ public interface IWbsTreePrivateService extends BaseService<WbsTreePrivate> {
 
     boolean wbsTreePrivateTableSort(List<WbsTreePrivateDTO2> wbsTreeDTO);
 
+    int deleteLogicBypKeyId(String pKeyId);
+
 }

+ 6 - 5
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeService.java

@@ -24,10 +24,7 @@ import org.springblade.manager.dto.WbsTreeContractDTO;
 import org.springblade.manager.dto.WbsTreeDTO2;
 import org.springblade.manager.entity.WbsFormElement;
 import org.springblade.manager.entity.WbsTree;
-import org.springblade.manager.vo.SaveUserInfoByProjectVO;
-import org.springblade.manager.vo.WbsNodeTableVO;
-import org.springblade.manager.vo.WbsTreeAllListVO;
-import org.springblade.manager.vo.WbsTreeVO;
+import org.springblade.manager.vo.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
@@ -88,7 +85,7 @@ public interface IWbsTreeService extends BaseService<WbsTree> {
     /**
      * 表单元素列表
      */
-    List<WbsFormElement> selectFormElements(String id);
+    List<WbsFormElementVO> selectFormElements(String id);
 
     String importWbsTree(MultipartFile excelFile, WbsTree wbsTreeFu, WbsTree wbsTree1) throws IOException;
 
@@ -109,4 +106,8 @@ public interface IWbsTreeService extends BaseService<WbsTree> {
     List<WbsTreeDTO2> findWbsTreeSameLevel(String parentId);
 
     boolean wbsTreeSort(List<WbsTreeDTO2> wbsTreeList);
+
+    int deleteLogicByWbsId(String ids);
+
+    List<WbsTree> selectByWbsId(String id);
 }

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

@@ -84,8 +84,9 @@ public class ContractInfoServiceImpl
     }
 
     @Override
-    public List<User> findUserListByCondition(FindAllUserByConditionDTO values) {
-        return contractInfoMapper.findUserListByCondition(values);
+    public IPage<User> findUserListByCondition(IPage<User> page, FindAllUserByConditionDTO values) {
+        List<User> userListByCondition = contractInfoMapper.findUserListByCondition(page, values);
+        return page.setRecords(userListByCondition);
     }
 
     @Override
@@ -130,8 +131,9 @@ public class ContractInfoServiceImpl
 
     /**
      * 对客户端接口
+     *
      * @param contractId 合同段ID
-     * @param wbsType 需要查询的节点类型
+     * @param wbsType    需要查询的节点类型
      * @return 合同段自身的划分树
      */
     @Override

+ 8 - 5
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

@@ -6,6 +6,7 @@ import org.apache.commons.lang.StringUtils;
 import org.springblade.business.entity.ConstructionLedger;
 import org.springblade.business.feign.ConstructionLedgerFeign;
 import org.springblade.common.utils.SnowFlakeUtil;
+import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.log.logger.BladeLogger;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.manager.dto.WbsTreeContractDTO;
@@ -35,10 +36,10 @@ public class WbsTreeContractServiceImpl
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public String submitWbsTreeInContract(WbsTreeContractDTO pawDTO) {
+    public boolean submitWbsTreeInContract(WbsTreeContractDTO pawDTO) {
         String wbsTreeIds = pawDTO.getWbsTreeIds();
         /*if (StringUtils.isEmpty(wbsTreeIds)) {
-            return "1";
+            throw new ServiceException("请选择需要关联的节点");
         }*/
         String[] ids = wbsTreeIds.split(",");
         List<String> idList1 = Arrays.asList(ids);
@@ -53,12 +54,12 @@ public class WbsTreeContractServiceImpl
         //比较项目wbs私有树与合同段wbs树是否相同,相同则不修改,不同则修改
         List<String> diffrent = getDiffrent(idList1, idList2);
         if (diffrent.size() == 0) {//相同
-            return "2";
+            throw new ServiceException("未进行任何操作");
         } else {
             if (idList1.size() > idList2.size()) {
                 WbsInfo wbsInfo = wbsInfoMapper.selectById(pawDTO.getWbsId());
                 for (String id : diffrent) {
-                    //合同段wbs节点库存在该节点且为删除状态,那么修改is_deleted=0,否则新增
+                    //合同段wbs节点库存在,修改is_deleted=0,否则新增
                     WbsTreeContract wbsTreeContract = baseMapper.selectByCondition2(id, pawDTO.getProjectId(), pawDTO.getContractId(), pawDTO.getWbsId());
                     if (wbsTreeContract != null) {
                         baseMapper.updateByCondition(id, pawDTO.getProjectId(), pawDTO.getContractId(), pawDTO.getWbsId());
@@ -68,6 +69,7 @@ public class WbsTreeContractServiceImpl
                         Integer wbsType = wbsInfo.getWbsType();
                         Long snowId = SnowFlakeUtil.getId();
                         if (wbsTreePrivate != null) {
+                            //新增
                             baseMapper.insertWbsTreeContract1(snowId, wbsType, pawDTO.getContractId(), wbsTreePrivate);
                             WbsTreePrivate wbsTreePrivateParent = baseMapper.selectParent(wbsTreePrivate.getProjectId(), wbsTreePrivate.getWbsId(), wbsTreePrivate.getParentId());
                             //初始化施工台账
@@ -83,13 +85,14 @@ public class WbsTreeContractServiceImpl
                         }
                     }
                 }
+                return true;
             } else { //逻辑删除当前多余的合同段树节点
                 for (String id : diffrent) {
                     baseMapper.deleteByCondition(id, pawDTO.getWbsId(), pawDTO.getProjectId(), pawDTO.getContractId());
                 }
+                return true;
             }
         }
-        return "3";
     }
 
     public static List<String> getDiffrent(List<String> list1, List<String> list2) {

+ 5 - 8
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -1,23 +1,15 @@
 package org.springblade.manager.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
-import org.apache.commons.lang.StringUtils;
 import org.springblade.common.utils.SnowFlakeUtil;
-import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.secure.utils.AuthUtil;
-import org.springblade.core.tool.constant.BladeConstant;
 import org.springblade.core.tool.node.ForestNodeMerger;
-import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.StringPool;
-import org.springblade.manager.dto.WbsTreeDTO2;
 import org.springblade.manager.dto.WbsTreePrivateDTO2;
 import org.springblade.manager.entity.ContractInfo;
 import org.springblade.manager.entity.WbsInfo;
-import org.springblade.manager.entity.WbsTree;
 import org.springblade.manager.entity.WbsTreePrivate;
 
 import org.springblade.manager.mapper.ContractInfoMapper;
@@ -143,6 +135,11 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
         return true;
     }
 
+    @Override
+    public int deleteLogicBypKeyId(String pKeyId) {
+        return baseMapper.updateIsDeletedByPKeyId(pKeyId);
+    }
+
 
     public List<WbsTreePrivate> findAllNodeList(String wbsTreeIds, String projectId, String wbsId) {
         String[] ids = wbsTreeIds.split(",");

+ 85 - 14
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -17,6 +17,7 @@
 package org.springblade.manager.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
 import net.sourceforge.pinyin4j.PinyinHelper;
@@ -37,7 +38,6 @@ import org.springblade.core.tool.utils.DateUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.StringPool;
 import org.springblade.manager.dto.FormElementDTO;
-import org.springblade.manager.dto.WbsFormElementDTO;
 import org.springblade.manager.dto.WbsTreeContractDTO;
 import org.springblade.manager.dto.WbsTreeDTO2;
 import org.springblade.manager.entity.*;
@@ -46,10 +46,7 @@ import org.springblade.manager.mapper.*;
 import org.springblade.manager.service.IWbsFormElementService;
 import org.springblade.manager.service.IWbsTreeService;
 import org.springblade.core.mp.base.BaseServiceImpl;
-import org.springblade.manager.vo.SaveUserInfoByProjectVO;
-import org.springblade.manager.vo.WbsNodeTableVO;
-import org.springblade.manager.vo.WbsTreeAllListVO;
-import org.springblade.manager.vo.WbsTreeVO;
+import org.springblade.manager.vo.*;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springframework.transaction.annotation.Transactional;
@@ -161,8 +158,8 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
     }
 
     @Override
-    public List<WbsFormElement> selectFormElements(String id) {
-        List<WbsFormElement> wbsFormElements = wbsTreeMapper.selectFormElements(id);
+    public List<WbsFormElementVO> selectFormElements(String id) {
+        List<WbsFormElementVO> wbsFormElements = wbsTreeMapper.selectFormElements(id);
         return wbsFormElements;
     }
 
@@ -276,9 +273,11 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
 
     @Override
     public List<WbsTree> findByWbsTreeNode(String ids) {
-        QueryWrapper<WbsTree> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("wbs_id", ids);
-        return baseMapper.selectList(queryWrapper);
+        return baseMapper.selectList(Wrappers.<WbsTree>query().lambda()
+                .eq(WbsTree::getWbsId, ids)
+                .ne(WbsTree::getParentId, 0)
+                .eq(WbsTree::getStatus, 1)
+                .eq(WbsTree::getIsDeleted, 0));
     }
 
     @Override
@@ -305,6 +304,19 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         return true;
     }
 
+    @Override
+    public int deleteLogicByWbsId(String ids) {
+        return baseMapper.deleteLogicByWbsId(ids);
+    }
+
+    @Override
+    public List<WbsTree> selectByWbsId(String id) {
+        return baseMapper.selectList(Wrappers.<WbsTree>query().lambda()
+                .eq(WbsTree::getParentId, id)
+                .eq(WbsTree::getStatus, 1)
+        );
+    }
+
 
     private boolean updateData(String ancestors, Long id) {
         Integer row = baseMapper.updateById2(ancestors, id);
@@ -478,7 +490,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         List<WbsInfo> wbsInfos = wbsInfoMapper.selectAll(type);
         wbsTreeAllListVO.setWbsInfos(wbsInfos);
         //查询项目私有树 默认type=1质检
-        List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateMapper.selectAll();
+        List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateMapper.selectAll(type);
         wbsTreeAllListVO.setWbsTreePrivates(wbsTreePrivates);
         return wbsTreeAllListVO;
     }
@@ -500,9 +512,23 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         if (StringUtils.isEmpty(filedName) || StringUtils.isEmpty(filedType) || StringUtils.isEmpty(filedLength)) {
             return R.fail("操作失败,请完整填写元素参数");
         }
+
+        String deptName = formElementDTO.getDeptName();
+        if (deptName.length() > 50 || deptName.length() < 1) {
+            throw new ServiceException("表名长度错误,输入范围1-50个字符长度");
+        }
+        if (deptName.contains(".")) {
+            deptName = deptName.replace(".", "");
+        }
+        if (deptName.contains(" ")) {
+            deptName = deptName.replace(" ", "");
+        }
+        if (deptName.contains("_")) {
+            deptName = deptName.replace("_", "");
+        }
         //初始化表名
-        String realName = getPinyin(formElementDTO.getDeptName(), "");
-        String newTableName = "m_wbs_form_" + DateUtil.time() + "_" + realName;
+        String realName = getFirstSpell(deptName);
+        String newTableName = "m_wbs_f" + DateUtil.time().substring(8, 14) + "_" + realName;
         formElementDTO.setInitTableName(newTableName);
 
         //创建元素表
@@ -510,6 +536,15 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         List<WbsFormElement> elementList = formElementDTO.getElementList();
         int i = 1;
         for (WbsFormElement wbsFormElement : elementList) {
+            if (wbsFormElement.getEType() == 1 && (wbsFormElement.getELength() > 1000 || wbsFormElement.getELength() < 10)) {
+                throw new ServiceException("请输入正确的字符串长度,范围为10-1000");
+            }
+            if (wbsFormElement.getEType() == 2 && (wbsFormElement.getELength() > 255 || wbsFormElement.getELength() < 10)) {
+                throw new ServiceException("请输入正确的整数长度,范围为10-255");
+            }
+            if (wbsFormElement.getEType() == 3 && (wbsFormElement.getELength() > 65 || wbsFormElement.getELength() < 10)) {
+                throw new ServiceException("请输入正确的小数长度,范围为10-65");
+            }
             //当前元素表中元素对应实体表唯一key值、fId
             wbsFormElement.setEKey("key_" + i++);
             wbsFormElement.setFId(String.valueOf(formElementDTO.getId()));
@@ -524,11 +559,47 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         if (b1 && b2 && b3) {
             return R.data(formElementDTO, "新增表单、元素、初始化实体表成功");
         } else {
-            throw new RuntimeException("操作失败");
+            throw new ServiceException("操作失败");
         }
     }
 
 
+    /**
+     * 获取汉字串拼音首字母,英文字符不变
+     *
+     * @param chinese 汉字串
+     * @return 汉语拼音首字母
+     */
+    public static String getFirstSpell(String chinese) {
+        StringBuffer pybf = new StringBuffer();
+        char[] arr = chinese.toCharArray();
+        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
+        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
+        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
+        for (int i = 0; i < arr.length; i++) {
+            if (arr[i] > 128) {
+                try {
+                    String[] temp = PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat);
+                    if (temp != null) {
+                        pybf.append(temp[0].charAt(0));
+                    }
+                } catch (BadHanyuPinyinOutputFormatCombination e) {
+                    e.printStackTrace();
+                }
+            } else {
+                pybf.append(arr[i]);
+            }
+        }
+        return pybf.toString().replaceAll("\\W", "").trim();
+    }
+
+    /**
+     * 汉字转拼音,英文字符不变
+     *
+     * @param text
+     * @param separator
+     * @return
+     */
     public static String getPinyin(String text, String separator) {
         //text 文本, separator 转换后添加的分隔符
         char[] chars = text.toCharArray();

+ 0 - 2
blade-service/blade-system/src/main/java/org/springblade/system/controller/RoleController.java

@@ -139,8 +139,6 @@ public class RoleController extends BladeController {
     @ApiOperationSupport(order = 6)
     @ApiOperation(value = "删除", notes = "传入ids")
     public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
-        CacheUtil.clear(SYS_CACHE);
-        CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
         return R.status(roleService.removeRole(ids));
     }
 

+ 1 - 0
blade-service/blade-system/src/main/java/org/springblade/system/mapper/RoleMapper.xml

@@ -22,6 +22,7 @@
     <insert id="bindRoleAndPost">
         insert into m_role_post (r_id,p_id) values (#{rId},#{pId})
     </insert>
+
     <delete id="deleteRoleAndPostByRid">
         delete from m_role_post where r_id = #{rId}
     </delete>

+ 4 - 4
blade-service/blade-system/src/main/java/org/springblade/system/service/impl/RoleServiceImpl.java

@@ -260,12 +260,12 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
         if (cnt > 0L) {
             throw new ServiceException("请先删除子节点!");
         }
+        boolean b = removeByIds(Func.toLongList(ids));
         //删除角色与岗位关联
-        Boolean aBoolean = removeRoleAndPostByRid(ids);
-        if (aBoolean) {
-            return removeByIds(Func.toLongList(ids));
+        if (b) {
+            removeRoleAndPostByRid(ids);
         }
-        return false;
+        return true;
     }
 
     private Boolean removeRoleAndPostByRid(String ids) {