Просмотр исходного кода

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/TreeNodeVO.java
huangjn 3 лет назад
Родитель
Сommit
061d42efae
15 измененных файлов с 324 добавлено и 6 удалено
  1. 35 1
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/TreeNodeVO.java
  2. 27 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsFormElementVO2.java
  3. 51 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreeContractTreeVO2.java
  4. 28 3
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ContractInfoController.java
  5. 13 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsFormElementController.java
  6. 3 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsFormElementMapper.java
  7. 3 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsFormElementMapper.xml
  8. 4 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.java
  9. 50 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml
  10. 1 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IContractInfoService.java
  11. 5 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsFormElementService.java
  12. 7 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeContractService.java
  13. 5 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ContractInfoServiceImpl.java
  14. 79 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsFormElementServiceImpl.java
  15. 13 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

+ 35 - 1
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/TreeNodeVO.java

@@ -36,9 +36,39 @@ public class TreeNodeVO extends BaseNode<TreeNode> {
 
     private String partitionCode;
 
+    private String contractType;
+
+    private String contractId;
+
+    private String contractIdRelation;
+
     public TreeNodeVO() {
     }
 
+    public String getContractIdRelation() {
+        return contractIdRelation;
+    }
+
+    public void setContractIdRelation(String contractIdRelation) {
+        this.contractIdRelation = contractIdRelation;
+    }
+
+    public String getContractId() {
+        return contractId;
+    }
+
+    public void setContractId(String contractId) {
+        this.contractId = contractId;
+    }
+
+    public String getContractType() {
+        return contractType;
+    }
+
+    public void setContractType(String contractType) {
+        this.contractType = contractType;
+    }
+
     public String getTenantId() {
         return tenantId;
     }
@@ -120,7 +150,11 @@ public class TreeNodeVO extends BaseNode<TreeNode> {
     }
 
     public String toString() {
-        return "TreeNode(deptCategory=" + this.getDeptCategory() + ",tenantId" + this.getTenantId() + ",isExistForm" + this.getIsExistForm() + ",wbsType=" + this.getWbsType() + ", primaryKeyId=" + this.getPrimaryKeyId() + ", type=" + this.getType() + ", title=" + this.getTitle() + ", key=" + this.getKey() + ", value=" + this.getValue() + ")";
+        return "TreeNode(deptCategory=" + this.getDeptCategory() + ",tenantId" + this.getTenantId() + ",contractType" + this.getContractType()
+                + ",contractId" + this.getContractId()
+                + ",contractIdRelation" + this.getContractIdRelation()
+                + ",isExistForm" + this.getIsExistForm() + ",wbsType=" + this.getWbsType() + ", primaryKeyId=" + this.getPrimaryKeyId()
+                + ", type=" + this.getType() + ", title=" + this.getTitle() + ", key=" + this.getKey() + ", value=" + this.getValue() + ")";
     }
 
     public boolean equals(final Object o) {

+ 27 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsFormElementVO2.java

@@ -0,0 +1,27 @@
+package org.springblade.manager.vo;
+
+import lombok.Data;
+import org.springblade.manager.entity.WbsFormElement;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class WbsFormElementVO2 implements Serializable {
+
+    /**
+     * 实体表名
+     */
+    private String initTableName;
+
+    /**
+     * 主键
+     */
+    private String id;
+
+    /**
+     * 元素集合
+     */
+    private List<WbsFormElement> listData;
+
+}

+ 51 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreeContractTreeVO2.java

@@ -0,0 +1,51 @@
+package org.springblade.manager.vo;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import org.springblade.core.tool.node.INode;
+import org.springblade.manager.entity.WbsTreeContract;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class WbsTreeContractTreeVO2 extends WbsTreeContract implements INode<WbsTreeContractTreeVO2> {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键Id
+     */
+    private Long pKeyId;
+
+    /**
+     * 主键ID
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
+    /**
+     * 父节点ID
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long parentId;
+
+    /**
+     * 子孙节点
+     */
+    @JsonInclude(JsonInclude.Include.NON_EMPTY)
+    private List<WbsTreeContractTreeVO2> children;
+
+    /**
+     * 是否有子孙节点
+     */
+    @JsonInclude(JsonInclude.Include.NON_EMPTY)
+    private Boolean hasChildren;
+
+    @Override
+    public List<WbsTreeContractTreeVO2> getChildren() {
+        if (this.children == null) {
+            this.children = new ArrayList<>();
+        }
+        return this.children;
+    }
+}

+ 28 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ContractInfoController.java

@@ -180,7 +180,7 @@ public class ContractInfoController extends BladeController {
     public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
         List<WbsTreeContract> wbsTreeContracts = wbsTreeContractService.findWbsTreeContract(ids);
         if (wbsTreeContracts.size() > 0) {
-            return R.fail("合同段存在WBS树,删除失败");
+            return R.fail("合同段存在关联的WBS树,删除失败");
         }
         return R.status(contractInfoService.deleteLogic(Func.toLongList(ids)));
     }
@@ -347,7 +347,7 @@ public class ContractInfoController extends BladeController {
         if (StringUtils.isEmpty(ids)) {
             throw new ServiceException("请选择要删除的数据");
         } else if (Func.toLongList(ids).size() > 1) {
-            //TODO 未考虑批量删除
+            // TODO 未设定批量删除
             throw new ServiceException("功能未开放");
         }
         //用户关联信息
@@ -424,6 +424,31 @@ public class ContractInfoController extends BladeController {
         }
         return R.fail(200, "未查询到信息");
     }
-    
+
+
+    /**
+     * 懒加载合同wbs节点树形结构
+     */
+    @GetMapping("/lazy-tree")
+    @ApiOperationSupport(order = 19)
+    @ApiOperation(value = "懒加载合同段wbs节点树形结构", notes = "传入wbsId,parentId,请求头token")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "parentId", value = "父级parentId = primaryKeyId , 根节点=0", required = true),
+            @ApiImplicitParam(name = "contractId", value = "合同段id", required = true),
+            @ApiImplicitParam(name = "contractIdRelation", value = "合同段关联id,监理、业主合同树懒加载子级必传")
+    })
+    public R<List<WbsTreeContractTreeVO>> lazyTree(Long parentId, String contractId, String contractIdRelation) {
+        ContractInfo contractInfo = contractInfoService.selectById(contractId);
+        if (contractInfo == null) {
+            throw new ServiceException("合同段类型不存在");
+        }
+        List<WbsTreeContractTreeVO> tree = wbsTreeContractService.lazyTreeTwo(contractIdRelation, parentId, contractInfo.getContractType(), contractId);
+        if (tree != null && tree.size() > 0) {
+            return R.data(tree);
+        }
+
+        return R.fail(200, "未查询到信息");
+
+    }
 
 }

+ 13 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsFormElementController.java

@@ -36,6 +36,7 @@ import org.springblade.manager.entity.WbsFormElement;
 import org.springblade.manager.entity.WbsTree;
 import org.springblade.manager.excel.*;
 import org.springblade.manager.vo.WbsFormElementVO;
+import org.springblade.manager.vo.WbsFormElementVO2;
 import org.springblade.manager.vo.WbsTreeVO;
 import org.springblade.manager.wrapper.WbsFormElementWrapper;
 import org.springblade.manager.wrapper.WbsTreeWrapper;
@@ -113,6 +114,18 @@ public class WbsFormElementController extends BladeController {
         return R.status(wbsFormElementService.saveOrUpdate(wbsFormElement));
     }
 
+    /**
+     * 批量新增wbs元素 同步实体表
+     */
+    @PostMapping("/submitBatch")
+    @ApiOperationSupport(order = 3)
+    @ApiOperation(value = "批量新增wbs元素", notes = "传入wbsFormElementList")
+    public R submitBatch(@RequestBody WbsFormElementVO2 wbsFormElementVO2) {
+        boolean b = wbsFormElementService.submitBatch(wbsFormElementVO2);
+        return R.status(b);
+    }
+
+
     /**
      * 删除 wbs表单元素 同步删除实体表字段
      */

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

@@ -63,4 +63,7 @@ public interface WbsFormElementMapper extends BaseMapper<WbsFormElement> {
     WbsFormElementVO selectDetailById(Long id);
 
     WbsTree selectElementInTableByFid(String fId);
+
+    void addTableFiled(String initTableName, String eKey, String initTableFiledType, Integer elementLength);
+
 }

+ 3 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsFormElementMapper.xml

@@ -22,6 +22,9 @@
         <result column="remark" property="remark"/>
     </resultMap>
 
+    <update id="addTableFiled">
+        alter table ${initTableName} add ${eKey} ${initTableFiledType}(${elementLength})
+    </update>
 
     <update id="createTable">
         create table ${newTableName} (

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

@@ -5,6 +5,8 @@ import org.apache.ibatis.annotations.Param;
 import org.springblade.manager.entity.WbsTree;
 import org.springblade.manager.entity.WbsTreeContract;
 import org.springblade.manager.entity.WbsTreePrivate;
+import org.springblade.manager.vo.WbsTreeContractTreeVO;
+import org.springblade.manager.vo.WbsTreeContractTreeVO2;
 import org.springblade.manager.vo.WbsTreeContractVO;
 import org.springblade.manager.vo.WbsTreeContractVO2;
 
@@ -62,4 +64,6 @@ public interface WbsTreeContractMapper extends BaseMapper<WbsTreeContract> {
     void updateByCondition2(Long contractId, String contractIdRelation);
 
     WbsTreeContract selectCondition(Long getContractId, Long id, String getContractIdRelation, Integer contractType);
+
+    List<WbsTreeContractTreeVO> lazyTreeTwo(String contractIdRelation, Long parentId, Integer contractType, String contractId);
 }

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

@@ -47,6 +47,24 @@
         <result column="contract_id" property="contractId"/>
     </resultMap>
 
+    <resultMap id="treeNodeResultMap" type="org.springblade.manager.vo.TreeNodeVO">
+        <id column="id" property="id"/>
+        <result column="parent_id" property="parentId"/>
+        <result column="fullName" property="title"/>
+        <result column="has_children" property="hasChildren"/>
+        <result column="type" property="type"/>
+        <result column="deptCategory" property="deptCategory"/>
+        <result column="wbsType" property="wbsType"/>
+        <result column="contractType" property="contractType"/>
+        <result column="contractId" property="contractId"/>
+        <result column="primaryKeyId" property="primaryKeyId"/>
+        <result column="tenantId" property="tenantId"/>
+        <result column="key" property="key"/>
+        <result column="value" property="value"/>
+        <result column="contractIdRelation" property="contractIdRelation"/>
+    </resultMap>
+
+
     <insert id="insertWbsTreeContract1">
         INSERT INTO m_wbs_tree_contract(
         p_key_id,id,wbs_id,wbs_type,project_id,contract_id,contract_type,tenant_id,parent_id,ancestors,dept_category,dept_name,full_name,sort,remark,`type`,
@@ -259,4 +277,36 @@
         AND contract_type = #{contractType}
     </select>
 
+    <select id="lazyTreeTwo" resultMap="treeNodeResultMap">
+        SELECT
+        dept.type AS "type",
+        dept.wbs_type AS "wbsType",
+        dept.contract_type AS "contractType",
+        dept.contract_id AS "contractId",
+        dept.p_key_id AS "id",
+        dept.dept_category AS "deptCategory",
+        dept.id AS "primaryKeyId",
+        dept.id AS "value",
+        dept.id AS "key" ,
+        dept.parent_id,
+        dept.full_name AS "fullName",
+        dept.tenant_id AS "tenantId",
+        dept.contract_id_relation AS "contractIdRelation",
+        (SELECT CASE WHEN count(1) > 0 THEN 1 ELSE 0 END FROM m_wbs_tree_contract WHERE parent_id = dept.id and
+        is_deleted = 0 ) AS "has_children"
+        FROM
+        m_wbs_tree_contract dept
+        WHERE
+        dept.is_deleted = 0
+        <if test="contractIdRelation != null and contractIdRelation != ''">
+            AND contract_id_relation = #{contractIdRelation}
+        </if>
+        AND dept.contract_id = #{contractId}
+        AND dept.contract_type = #{contractType}
+        AND parent_id = #{parentId}
+        AND dept.type = 1
+        AND status = 1
+        ORDER BY dept.sort
+    </select>
+
 </mapper>

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

@@ -70,5 +70,6 @@ public interface IContractInfoService extends BaseService<ContractInfo> {
 
     List<ContractInfo> findContractInProject(String ids);
 
+    ContractInfo selectById(String contractId);
 
 }

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

@@ -27,6 +27,7 @@ import org.springblade.manager.entity.WbsFormElement;
 import org.springblade.manager.excel.WbsFormElementBatchExcel;
 import org.springblade.manager.excel.WbsFormElementExcel;
 import org.springblade.manager.vo.WbsFormElementVO;
+import org.springblade.manager.vo.WbsFormElementVO2;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
@@ -67,4 +68,8 @@ public interface IWbsFormElementService extends BaseService<WbsFormElement> {
 
     WbsFormElement searchElementDetailByTableElementKey(String fId,String tableElementKey);
 
+    boolean syncDataFiled(String initTableName, List<WbsFormElement> listData);
+
+    boolean submitBatch(WbsFormElementVO2 wbsFormElementVO2);
+
 }

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

@@ -4,6 +4,10 @@ import org.springblade.core.mp.base.BaseService;
 import org.springblade.manager.dto.WbsTreeContractDTO;
 import org.springblade.manager.entity.WbsTree;
 import org.springblade.manager.entity.WbsTreeContract;
+import org.springblade.manager.vo.WbsTreeContractTreeVO;
+import org.springblade.manager.vo.WbsTreeContractTreeVO2;
+import org.springblade.manager.vo.WbsTreeContractVO2;
+import org.springblade.manager.vo.WbsTreeVO;
 
 import java.util.List;
 
@@ -15,4 +19,7 @@ public interface IWbsTreeContractService extends BaseService<WbsTreeContract> {
     List<WbsTreeContract> findWbsTreeContract(String ids);
 
     List<WbsTreeContract> queryCurrentContractLogList(String contractId);
+
+    List<WbsTreeContractTreeVO> lazyTreeTwo(String contractIdRelation, Long parentId, Integer contractType, String contractId);
+
 }

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

@@ -375,4 +375,9 @@ public class ContractInfoServiceImpl
     public List<ContractInfo> findContractInProject(String ids) {
         return baseMapper.selectList(Wrappers.<ContractInfo>query().lambda().eq(ContractInfo::getPId, ids));
     }
+
+    @Override
+    public ContractInfo selectById(String contractId) {
+        return baseMapper.selectById(contractId);
+    }
 }

+ 79 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsFormElementServiceImpl.java

@@ -32,6 +32,7 @@ import org.springblade.manager.excel.WbsFormElementExcel;
 import org.springblade.manager.mapper.WbsFormElementMapper;
 import org.springblade.manager.service.IWbsFormElementService;
 import org.springblade.manager.vo.WbsFormElementVO;
+import org.springblade.manager.vo.WbsFormElementVO2;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -117,14 +118,13 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
      */
     private String judgeDataType(Integer type) {
         switch (type) {
-            case 1:
-                return "varchar";
             case 2:
                 return "bigint";
             case 3:
                 return "decimal";
             case 4:
                 return "datetime";
+            case 1:
             default:
                 return "varchar";
         }
@@ -310,5 +310,82 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
                 .eq(WbsFormElement::getEName, s[1]));
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean submitBatch(WbsFormElementVO2 wbsFormElementVO2) {
+        //获取当前表所有元素
+        List<WbsFormElement> wbsFormElements = baseMapper.selectList(Wrappers.<WbsFormElement>query().lambda()
+                .eq(WbsFormElement::getFId, wbsFormElementVO2.getId()));
+        List<String> eKeys = new ArrayList<>();
+        wbsFormElements.forEach(id -> {
+            String eKey1 = id.getEKey();
+            eKeys.add(eKey1);
+        });
+        int id;
+        if (eKeys.size() == 0) {
+            id = 0;
+        } else {
+            id = Integer.parseInt(eKeys.get(eKeys.size() - 1).split("_")[1]);
+        }
+        //新增元素
+        List<WbsFormElement> listData = wbsFormElementVO2.getListData();
+        for (WbsFormElement listDatum : listData) {
+            id++;
+            listDatum.setFId(wbsFormElementVO2.getId());
+            String initTableFiledType = getInitTableFiledType(listDatum.getEType());
+            Integer elementLength = getElementLength(initTableFiledType);
+            listDatum.setELength(elementLength);
+            listDatum.setEKey("key_" + id);
+        }
+        this.saveBatch(listData);
+        //同步
+        return syncDataFiled(wbsFormElementVO2.getInitTableName(), listData);
+    }
+
+    public boolean syncDataFiled(String initTableName, List<WbsFormElement> listData) {
+        for (WbsFormElement listDatum : listData) {
+            String initTableFiledType = getInitTableFiledType(listDatum.getEType());
+            Integer elementLength = getElementLength(initTableFiledType);
+            String eKey = listDatum.getEKey();
+            baseMapper.addTableFiled(initTableName, eKey, initTableFiledType, elementLength);
+        }
+        return true;
+    }
+
+
+    private String getInitTableFiledType(Integer type) {
+        switch (type) {
+            case 2:
+                return "bigint"; //整数
+            case 3:
+                return "decimal"; //小数
+            case 4:
+                return "datetime"; //日期
+            case 5:
+                return "decimal";  //数值
+            case 6:
+                return "varchar"; //签名
+            case 7:
+                return "varchar"; //文件
+            case 1:
+            default:
+                return "varchar"; //字符串
+        }
+    }
+
+    private Integer getElementLength(String type) {
+        switch (type) {
+            case "varchar":
+                return 1000;
+            case "bigint":
+                return 255;
+            case "decimal":
+                return 65;
+            case "datetime":
+            default:
+                return 0;
+        }
+    }
+
 
 }

+ 13 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

@@ -10,6 +10,9 @@ 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.core.secure.utils.AuthUtil;
+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.WbsTreeContract;
@@ -18,6 +21,10 @@ import org.springblade.manager.mapper.WbsInfoMapper;
 import org.springblade.manager.mapper.WbsTreeContractMapper;
 import org.springblade.manager.mapper.WbsTreePrivateMapper;
 import org.springblade.manager.service.IWbsTreeContractService;
+import org.springblade.manager.vo.WbsTreeContractTreeVO;
+import org.springblade.manager.vo.WbsTreeContractTreeVO2;
+import org.springblade.manager.vo.WbsTreeContractVO2;
+import org.springblade.manager.vo.WbsTreeVO;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -42,6 +49,7 @@ public class WbsTreeContractServiceImpl
 
     /**
      * 合同段wbs树保存
+     *
      * @param pawDTO
      * @return
      */
@@ -151,4 +159,9 @@ public class WbsTreeContractServiceImpl
     public List<WbsTreeContract> queryCurrentContractLogList(String contractId) {
         return this.baseMapper.queryCurrentContractLogList(contractId);
     }
+
+    @Override
+    public List<WbsTreeContractTreeVO> lazyTreeTwo(String contractIdRelation, Long parentId, Integer contractType, String contractId) {
+        return ForestNodeMerger.merge(baseMapper.lazyTreeTwo(contractIdRelation, parentId, contractType, contractId));
+    }
 }