Explorar o código

质检wbs树统计修改

lvy hai 1 semana
pai
achega
b85fe00b90

+ 3 - 1
blade-service/blade-business/src/main/java/org/springblade/business/mapper/WbsTreeContractStatisticsMapper.java

@@ -6,6 +6,8 @@ import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.Update;
 import org.springblade.business.entity.WbsTreeContractStatistics;
 
+import java.util.Collection;
+
 public interface WbsTreeContractStatisticsMapper extends BaseMapper<WbsTreeContractStatistics> {
 
     WbsTreeContractStatistics getByIdOnLock(Long id);
@@ -17,5 +19,5 @@ public interface WbsTreeContractStatisticsMapper extends BaseMapper<WbsTreeContr
     @Update("update wbs_tree_contract_statistics set is_deleted = 0 where id = #{pKeyId}")
     Boolean updateDeleteStatus(Long pKeyId);
 
-    Boolean updateLeafNum(String ids);
+    Boolean updateLeafNum(Collection<Long> ids);
 }

+ 6 - 1
blade-service/blade-business/src/main/java/org/springblade/business/mapper/WbsTreeContractStatisticsMapper.xml

@@ -28,7 +28,12 @@
     <update id="updateLeafNum">
         UPDATE m_wbs_tree_contract_statistics a INNER JOIN (
                 select  b.id, COUNT(c.id) AS leaf_num, sum(c.fill_num) as fill_num, sum(c.approve_num) as approve_num, sum(c.complete_num) as complete_num, sum(c.jl_fill_num) as jl_fill_num, sum(c.jl_approve_num) as jl_approve_num, sum(c.jl_complete_num) as jl_complete_num
-                FROM m_wbs_tree_contract_statistics b INNER JOIN m_wbs_tree_contract_statistics c  ON c.contract_id = b.contract_id AND c.is_leaf = 1 AND c.is_deleted = 0  AND c.status = 1 AND c.ancestors LIKE CONCAT(b.ancestors, ',', b.id, '%') WHERE b.id IN (#{ids}) GROUP BY b.id
+                FROM m_wbs_tree_contract_statistics b INNER JOIN m_wbs_tree_contract_statistics c  ON c.contract_id = b.contract_id AND c.is_leaf = 1 AND c.is_deleted = 0  AND c.status = 1 AND c.ancestors LIKE CONCAT(b.ancestors, ',', b.id, '%')
+                WHERE b.id IN (
+                    <foreach collection="ids" item="item" separator=",">
+                        #{item}
+                    </foreach>
+                    ) GROUP BY b.id
             ) AS t ON a.id = t.id
         SET a.leaf_num = t.leaf_num, a.fill_num = t.fill_num,a.approve_num = t.approve_num, a.complete_num = t.complete_num, a.jl_fill_num =t.jl_fill_num, a.jl_approve_num = t.jl_approve_num, a.jl_complete_num = t.jl_complete_num;
     </update>

+ 23 - 9
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/WbsTreeContractStatisticsServiceImpl.java

@@ -40,7 +40,11 @@ public class WbsTreeContractStatisticsServiceImpl extends ServiceImpl<WbsTreeCon
 
     @Override
     public Boolean updateInformationNumber(Long wbsId, Integer classify, Long contractId) {
-        InformationQuery query = getInformationQueryByWbsId(wbsId, classify, contractId);
+        WbsTreeContract wbsTreeContract = getWbsTreeContractByPKeyId(wbsId);
+        if (wbsTreeContract == null || wbsTreeContract.getIsDeleted() == 1) {
+            return false;
+        }
+        InformationQuery query = getInformationQueryByWbsId(wbsId, classify, Long.parseLong(wbsTreeContract.getContractId()));
         if (query == null || query.getStatus() == null) {
             return false;
         }
@@ -165,19 +169,21 @@ public class WbsTreeContractStatisticsServiceImpl extends ServiceImpl<WbsTreeCon
         createWbsTreeContractStatisticsChildren(wbsTreeContract, wbsTreeContractStatistics, parentList);
         parentList.add(wbsTreeContractStatistics);
         saveBatch(parentList);
-        Set<String> ancestors = new HashSet<>();
+        Set<Long> ancestors = new HashSet<>();
         for (WbsTreeContractStatistics statistics : parentList) {
-            if (statistics.getIsLeaf() != 1 && statistics.getAncestors() != null) {
+            if (statistics.getAncestors() != null) {
                 String[] split = statistics.getAncestors().split(",");
                 for (String s : split) {
-                    if (!StringUtil.isNumeric(s)) {
+                    if (!StringUtil.isNumeric(s) && s.equals("0")) {
                         continue;
                     }
-                    ancestors.add(s);
+                    ancestors.add(Long.parseLong(s));
                 }
             }
         }
-        this.baseMapper.updateLeafNum(String.join(",", ancestors));
+        if (!ancestors.isEmpty()) {
+            this.baseMapper.updateLeafNum(ancestors);
+        }
         return true;
     }
 
@@ -192,7 +198,7 @@ public class WbsTreeContractStatisticsServiceImpl extends ServiceImpl<WbsTreeCon
             return transactionTemplate.execute(status -> {
                 this.baseMapper.updateDeleteStatus(id);
                 if (statistics.getIsLeaf() == 1) {
-                    this.baseMapper.updateLeafNum(statistics.getAncestors());
+                    this.updateLeafNum(statistics.getAncestors());
                 }
                 return true;
             });
@@ -208,14 +214,22 @@ public class WbsTreeContractStatisticsServiceImpl extends ServiceImpl<WbsTreeCon
                 return transactionTemplate.execute( status -> {
                     this.update(Wrappers.<WbsTreeContractStatistics>lambdaUpdate().set(WbsTreeContractStatistics::getIsDeleted, 1).in(WbsTreeContractStatistics::getId, ids));
                     // 2 更新父节点的子节点数
-                    this.baseMapper.updateLeafNum(statistics.getAncestors());
-                    return true;
+                    return updateLeafNum(statistics.getAncestors());
                 });
             }
         }
         return true;
     }
 
+    public Boolean updateLeafNum(String ids) {
+        if (ids != null && !ids.isEmpty()) {
+            String[] split = ids.split(",");
+            Set<Long> ids1 = Arrays.stream(split).filter(StringUtil::isNumeric).map(Long::parseLong).filter(id -> id > 0).collect(Collectors.toSet());
+            return this.baseMapper.updateLeafNum(ids1);
+        }
+        return true;
+    }
+
     public void createWbsTreeContractStatisticsParent(WbsTreeContract wbsTreeContract, WbsTreeContractStatistics wbsTreeContractStatistics, List<WbsTreeContractStatistics> wbsTreeContractStatisticsList) {
         if (wbsTreeContract.getParentId() == null || wbsTreeContract.getParentId() <= 0) {
             wbsTreeContractStatistics.setParentId(0L);