liuyc vor 3 Jahren
Ursprung
Commit
d5f60b9d4c
15 geänderte Dateien mit 158 neuen und 39 gelöschten Zeilen
  1. 1 1
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/WbsInfoDTO.java
  2. 0 1
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/WbsInfo.java
  3. 12 1
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/TreeNodeVO.java
  4. 15 24
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsInfoController.java
  5. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsInfoMapper.java
  6. 12 8
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsInfoMapper.xml
  7. 4 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeMapper.java
  8. 26 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeMapper.xml
  9. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml
  10. 5 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsInfoService.java
  11. 5 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeService.java
  12. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeServiceImpl.java
  13. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsFormElementServiceImpl.java
  14. 53 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsInfoServiceImpl.java
  15. 19 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

+ 1 - 1
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/WbsInfoDTO.java

@@ -42,7 +42,7 @@ public class WbsInfoDTO extends WbsInfo {
 	/**
 	 * wsb属性
 	 */
-	@ApiModelProperty(value = "wbs类型")
+	@ApiModelProperty(value = "wbs划分类型")
 	private Integer wbsType;
 
 	/**

+ 0 - 1
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/WbsInfo.java

@@ -45,5 +45,4 @@ public class WbsInfo extends BaseEntity {
 		private Integer wbsType;
 
 
-
 }

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

@@ -2,6 +2,7 @@ package org.springblade.manager.vo;
 
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.models.auth.In;
 import org.springblade.core.tool.node.BaseNode;
 import org.springblade.core.tool.node.TreeNode;
 
@@ -27,9 +28,19 @@ public class TreeNodeVO extends BaseNode<TreeNode> {
 
     private Integer wbsType;
 
+    private Integer deptCategory;
+
     public TreeNodeVO() {
     }
 
+    public Integer getDeptCategory() {
+        return deptCategory;
+    }
+
+    public void setDeptCategory(Integer deptCategory) {
+        this.deptCategory = deptCategory;
+    }
+
     public Integer getWbsType() {
         return wbsType;
     }
@@ -79,7 +90,7 @@ public class TreeNodeVO extends BaseNode<TreeNode> {
     }
 
     public String toString() {
-        return "TreeNode(wbsType=" + this.getWbsType() + ", primaryKeyId=" + this.getPrimaryKeyId() + ", type=" + this.getType() + ", title=" + this.getTitle() + ", key=" + this.getKey() + ", value=" + this.getValue() + ")";
+        return "TreeNode(deptCategory=" + this.getDeptCategory() + ",wbsType=" + this.getWbsType() + ", primaryKeyId=" + this.getPrimaryKeyId() + ", type=" + this.getType() + ", title=" + this.getTitle() + ", key=" + this.getKey() + ", value=" + this.getValue() + ")";
     }
 
     public boolean equals(final Object o) {

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

@@ -64,9 +64,9 @@ public class WbsInfoController extends BladeController {
     @ApiOperationSupport(order = 1)
     @ApiOperation(value = "详情", notes = "传入id")
     @ApiImplicitParam(name = "id", value = "id", required = true)
-    public R<WbsInfoVO> detail(WbsInfoDTO wbsInfo) {
-        WbsInfo detail = wbsInfoService.getOne(Condition.getQueryWrapper(wbsInfo));
-        return R.data(WbsInfoWrapper.build().entityVO(detail));
+    public R<WbsInfo> detail(WbsInfoDTO wbsInfo) {
+        WbsInfo detail = wbsInfoService.findById(wbsInfo.getId());
+        return R.data(detail);
     }
 
     /**
@@ -118,34 +118,21 @@ public class WbsInfoController extends BladeController {
     }
 
     /**
-     * 新增wbs动态库信息
+     * 新增或者修改wbs动态库信息
      */
     @PostMapping("/submit")
     @ApiOperationSupport(order = 6)
-    @ApiOperation(value = "新增", notes = "传入wbsInfo")
+    @ApiOperation(value = "新增或修改", notes = "传入wbsInfo")
     @ApiImplicitParam(value = "id", name = "id", required = true)
     @Transactional(rollbackFor = Exception.class)
     public R submit(@Valid @RequestBody WbsInfoDTO wbsInfo) {
-        boolean result1 = wbsInfoService.saveOrUpdate(wbsInfo);
-        if (result1) {
-            Long wbsId = wbsInfo.getId();
-            String nodeName = wbsInfo.getWbsName();
-            //初始化wbs动态库树的根节点
-            WbsTree wbsTree = new WbsTree();
-            wbsTree.setWbsId(String.valueOf(wbsId));
-            wbsTree.setTenantId(AuthUtil.getTenantId());
-            wbsTree.setParentId(0L);
-            wbsTree.setAncestors("0");
-            wbsTree.setDeptCategory(1);
-            wbsTree.setDeptName(nodeName);
-            wbsTree.setFullName(nodeName);
-            wbsTree.setType(1);
-            boolean result2 = wbsTreeService.save(wbsTree);
-            if (result2) {
-                return R.data(wbsInfo, "操作成功");
-            }
+        boolean b = wbsInfoService.submit(wbsInfo);
+        if (b) {
+            return R.success("成功");
         }
-        return R.fail("操作失败");
+        return R.fail("失败");
+
+
     }
 
 
@@ -156,6 +143,10 @@ public class WbsInfoController extends BladeController {
     @ApiOperationSupport(order = 7)
     @ApiOperation(value = "逻辑删除", notes = "传入ids")
     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.status(wbsInfoService.deleteLogic(Func.toLongList(ids)));
     }
 

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

@@ -42,4 +42,6 @@ public interface WbsInfoMapper extends BaseMapper<WbsInfo> {
 	List<WbsInfo> selectWbsInfoPage(IPage page, WbsInfo wbsInfo);
 
     List<WbsInfo> selectAll(Integer type);
+
+    WbsInfo selectById2(Long id);
 }

+ 12 - 8
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsInfoMapper.xml

@@ -23,24 +23,28 @@
     </resultMap>
 
     <select id="selectWbsInfoPage" resultMap="wbsInfoResultMap">
-        select * from m_wbs_info where is_deleted = 0 and status = 1
+        select * from m_wbs_info where is_deleted = 0
     </select>
     <select id="selectAll" resultMap="resultMap2">
         SELECT
-            id,
-            wbs_name,
-            wbs_type,
-            `STATUS`
+        id,
+        wbs_name,
+        wbs_type,
+        `STATUS`
         FROM
-            m_wbs_info
+        m_wbs_info
         WHERE
-            is_deleted = 0
+        is_deleted = 0
         AND `STATUS` = 1
         <if test="type != null and type != ''">
             AND wbs_type = #{type}
         </if>
         GROUP BY
-            wbs_name
+        wbs_name
+    </select>
+    <select id="selectById2" resultType="org.springblade.manager.entity.WbsInfo">
+        SELECT * FROM m_wbs_info
+        WHERE id = #{id}
     </select>
 
 </mapper>

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

@@ -103,7 +103,7 @@ public interface WbsTreeMapper extends BaseMapper<WbsTree> {
 
     Integer insertWbsTreePrivate(@Param("projectId") String projectId, @Param("wbsTree") WbsTree wbsTree);
 
-    Boolean insertWbsTreeContract(@Param("projectId")String projectId,@Param("contractId") String contractId,@Param("wbsTree")  WbsTree wbsTree);
+    Boolean insertWbsTreeContract(@Param("projectId") String projectId, @Param("contractId") String contractId, @Param("wbsTree") WbsTree wbsTree);
 
     Integer selectRepeatByProjectId(String projectId);
 
@@ -113,4 +113,7 @@ public interface WbsTreeMapper extends BaseMapper<WbsTree> {
 
     int deleteBatchProjectNodeId(Long projectNodeId);
 
+    WbsTree selectByWbsId(Long id);
+
+    int updateByCondition(@Param("id") Long id, @Param("wbsName") String wbsName, @Param("status") Integer status);
 }

+ 26 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeMapper.xml

@@ -41,6 +41,7 @@
         <result column="key" property="key"/>
         <result column="has_children" property="hasChildren"/>
         <result column="type" property="type"/>
+        <result column="deptCategory" property="deptCategory"/>
     </resultMap>
 
     <resultMap id="selectByNodeTableMap" type="org.springblade.manager.vo.WbsNodeTableVO">
@@ -112,6 +113,21 @@
         create table ${tableName} as select * from m_wbs_tree WHERE 1=2
     </update>
 
+    <update id="updateByCondition">
+        UPDATE m_wbs_tree
+        <trim prefix="set" suffixOverrides=",">
+            <if test="wbsName != null and wbsName != '' ">
+                `dept_name` = #{wbsName},
+            </if>
+            <if test="status != null and status != '' ">
+                `status` = #{status}
+            </if>
+        </trim>
+        WHERE wbs_id = #{id}
+        AND parent_id = 0
+        AND is_deleted = 0
+    </update>
+
     <delete id="deleteBatchProjectNodeId">
         delete from m_wbs_tree where project_node_id = #{projectNodeId} and id &lt;&gt; #{projectNodeId}
     </delete>
@@ -140,6 +156,7 @@
     <select id="lazyTree" resultMap="treeNodeResultMap">
         SELECT
         dept.type AS "type",
+        dept.dept_category AS "deptCategory",
         dept.table_type,
         dept.id,
         dept.parent_id,
@@ -225,5 +242,14 @@
             AND parent_id = #{tableParentId}
     </select>
 
+    <select id="selectByWbsId" resultType="org.springblade.manager.entity.WbsTree">
+        SELECT * FROM m_wbs_tree
+        WHERE wbs_id = #{id}
+        AND status = 1
+        AND is_deleted = 0
+        AND parent_id = 0
+        AND type = 1
+    </select>
+
 
 </mapper>

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

@@ -53,6 +53,7 @@
         <result column="type" property="type"/>
         <result column="wbsType" property="wbsType"/>
         <result column="primaryKeyId" property="primaryKeyId"/>
+        <result column="deptCategory" property="deptCategory"/>
     </resultMap>
     <insert id="insertCombination1">
         INSERT INTO m_wbs_tree_private(
@@ -149,6 +150,7 @@
         dept.id,
         dept.parent_id,
         dept.dept_name AS title,
+        dept.dept_category AS "deptCategory",
         dept.id AS "value",
         dept.id AS "key",
         (

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

@@ -19,6 +19,7 @@ package org.springblade.manager.service;
 
 import org.springblade.core.mp.base.BaseService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.manager.dto.WbsInfoDTO;
 import org.springblade.manager.entity.WbsInfo;
 import org.springblade.manager.vo.WbsInfoVO;
 
@@ -42,4 +43,8 @@ public interface IWbsInfoService extends BaseService<WbsInfo> {
 	IPage<WbsInfo> selectWbsInfoPage(IPage<WbsInfo> page, WbsInfo wbsInfo);
 
     List<WbsInfo> findByWbsType(String type);
+
+    boolean submit(WbsInfoDTO wbsInfo);
+
+    WbsInfo findById(Long id);
 }

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

@@ -97,4 +97,9 @@ public interface IWbsTreeService extends BaseService<WbsTree> {
     R saveFormElement(FormElementDTO formElementDTO);
 
     int deleteBatchByProjectNodeId(Long projectNodeId);
+
+    WbsTree selectGenNodeByWbsId(Long id);
+
+    List<WbsTree> findByWbsTreeNode(String ids);
+
 }

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

@@ -46,7 +46,7 @@ public class ArchiveTreeServiceImpl
 
     @Override
     public boolean submit(ArchiveTreeDTO archiveTreeDTO) {
-        //TODO 条件判断有误,当parentid=0时,Ancestors会为null
+        //TODO 条件判断有误,当parentId=0时,Ancestors为null
         if (Func.isEmpty(archiveTreeDTO.getParentId())) {
             archiveTreeDTO.setTenantId(AuthUtil.getTenantId());
             archiveTreeDTO.setParentId(BladeConstant.TOP_PARENT_ID);

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

@@ -233,7 +233,7 @@ public class WbsFormElementServiceImpl extends BaseServiceImpl<WbsFormElementMap
         //删除前判断是否存在该key
         int row = baseMapper.judgeFiled(eKey, tableName);
         if (row > 0) {
-            //同步删除实体表字段 TODO 删除前判断实体表是否关联数据
+            //同步删除实体表字段
             baseMapper.deleteTableFiled(eKey, tableName);
         }
         return true;

+ 53 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsInfoServiceImpl.java

@@ -17,6 +17,12 @@
 package org.springblade.manager.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import lombok.AllArgsConstructor;
+import oracle.sql.BfileDBAccess;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.manager.dto.WbsInfoDTO;
+import org.springblade.manager.entity.WbsTree;
 import org.springblade.manager.mapper.WbsInfoMapper;
 import org.springblade.manager.service.IWbsInfoService;
 import org.springblade.core.mp.base.BaseServiceImpl;
@@ -24,6 +30,7 @@ import org.springblade.manager.entity.WbsInfo;
 import org.springblade.manager.vo.WbsInfoVO;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -34,8 +41,11 @@ import java.util.List;
  * @since 2022-04-25
  */
 @Service
+@AllArgsConstructor
 public class WbsInfoServiceImpl extends BaseServiceImpl<WbsInfoMapper, WbsInfo> implements IWbsInfoService {
 
+    private final WbsTreeServiceImpl wbsTreeService;
+
     @Override
     public IPage<WbsInfo> selectWbsInfoPage(IPage<WbsInfo> page, WbsInfo wbsInfo) {
         return page.setRecords(baseMapper.selectWbsInfoPage(page, wbsInfo));
@@ -48,4 +58,47 @@ public class WbsInfoServiceImpl extends BaseServiceImpl<WbsInfoMapper, WbsInfo>
         return baseMapper.selectList(queryWrapper);
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean submit(WbsInfoDTO wbsInfo) {
+        //先查找树下是否有根节点
+        WbsTree wbsTree1 = wbsTreeService.selectGenNodeByWbsId(wbsInfo.getId());
+        if (wbsTree1 != null) {
+            //修改WbsInfo树信息
+            baseMapper.updateById(wbsInfo);
+            //修改WbsTree表的根节点
+            int row = wbsTreeService.updateByCondition(wbsInfo.getId(), wbsInfo.getWbsName(), wbsInfo.getStatus());
+            if (row > 0) {
+                return true;
+            }
+        } else {
+            //新增wbs树
+            int row = baseMapper.insert(wbsInfo);
+            if (row > 0) {
+                Long wbsId = wbsInfo.getId();
+                String nodeName = wbsInfo.getWbsName();
+                //初始化wbs树的根节点
+                WbsTree wbsTree = new WbsTree();
+                wbsTree.setWbsId(String.valueOf(wbsId));
+                wbsTree.setTenantId(AuthUtil.getTenantId());
+                wbsTree.setParentId(0L);
+                wbsTree.setAncestors("0");
+                wbsTree.setDeptCategory(1);
+                wbsTree.setDeptName(nodeName);
+                wbsTree.setFullName(nodeName);
+                wbsTree.setType(1);
+                boolean result2 = wbsTreeService.save(wbsTree);
+                if (result2) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    @Override
+    public WbsInfo findById(Long id) {
+        return baseMapper.selectById2(id);
+    }
+
 }

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

@@ -110,6 +110,9 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
             String ancestors = parent.getAncestors() + StringPool.COMMA + dept.getParentId();
             dept.setAncestors(ancestors);
         }
+        if (dept.getMajorDataType() == null) {
+            dept.setMajorDataType(0);
+        }
         dept.setStatus(1);
         dept.setIsDeleted(BladeConstant.DB_NOT_DELETED);
         return saveOrUpdate(dept);
@@ -241,7 +244,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         queryWrapper.eq("dept_category", wbsTreeZi.getDeptCategory());
         queryWrapper.eq("project_node_id", wbsTreeZi.getProjectNodeId());
         queryWrapper.ne("ancestors", wbsTreeZi.getAncestors());
-        //todo
         WbsTree wbsTrees = baseMapper.selectOne(queryWrapper);
         //去重
         if (wbsTrees == null) {
@@ -264,6 +266,18 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         return baseMapper.deleteBatchProjectNodeId(projectNodeId);
     }
 
+    @Override
+    public WbsTree selectGenNodeByWbsId(Long id) {
+        return baseMapper.selectByWbsId(id);
+    }
+
+    @Override
+    public List<WbsTree> findByWbsTreeNode(String ids) {
+        QueryWrapper<WbsTree> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("wbs_id", ids);
+        return baseMapper.selectList(queryWrapper);
+    }
+
 
     private boolean updateData(String ancestors, Long id) {
         Integer row = baseMapper.updateById2(ancestors, id);
@@ -524,4 +538,8 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
     }
 
 
+    public int updateByCondition(Long id, String wbsName, Integer status) {
+        int row = baseMapper.updateByCondition(id, wbsName, status);
+        return row;
+    }
 }