Browse Source

资料进度

huangjn 3 năm trước cách đây
mục cha
commit
883f2570f9

+ 9 - 3
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/MaterialProgressVO.java

@@ -34,7 +34,7 @@ public class MaterialProgressVO {
         this.contractImageClassificationList.add(new ContractImageClassification(amount, imageAmount, videoAmount));
     }
 
-    public void setTreeMaterialProgressList(String title, String id,
+    public void setTreeMaterialProgressList(String title, String id, String primaKeyId, String contractId,
                                             Integer standingBookNotAmount, Integer standingBookEndAmount,
                                             Integer processNotSubmitAmount, Integer processNotTaskAmount,
                                             Integer processAwaitAmount, Integer processApprovalAmount,
@@ -44,7 +44,7 @@ public class MaterialProgressVO {
                                             Integer evaluationAwaitAmount, Integer evaluationApprovalAmount,
                                             Integer completionNotSubmitAmount, Integer completionNotTaskAmount,
                                             Integer completionAwaitAmount, Integer completionApprovalAmount, Boolean hasChildren){
-        this.treeMaterialProgressList.add(new TreeMaterialProgress(title, id,
+        this.treeMaterialProgressList.add(new TreeMaterialProgress(title, id, primaKeyId, contractId,
                 standingBookNotAmount, standingBookEndAmount,
                 processNotSubmitAmount, processNotTaskAmount,
                 processAwaitAmount, processApprovalAmount,
@@ -62,6 +62,10 @@ public class MaterialProgressVO {
         private String title;
         @ApiModelProperty("节点ID(非唯一键)")
         private String id;
+        @ApiModelProperty("节点primaKeyId(唯一键)")
+        private String primaKeyId;
+        @ApiModelProperty("合同段ID")
+        private String contractId;
 
         @ApiModelProperty("施工台账未开始数量")
         private Integer standingBookNotAmount;
@@ -107,7 +111,7 @@ public class MaterialProgressVO {
         @ApiModelProperty("是否有下级")
         private Boolean hasChildren;
 
-        public TreeMaterialProgress(String title, String id,
+        public TreeMaterialProgress(String title, String id, String primaKeyId, String contractId,
                                     Integer standingBookNotAmount, Integer standingBookEndAmount,
                                     Integer processNotSubmitAmount, Integer processNotTaskAmount,
                                     Integer processAwaitAmount, Integer processApprovalAmount,
@@ -119,6 +123,8 @@ public class MaterialProgressVO {
                                     Integer completionAwaitAmount, Integer completionApprovalAmount, Boolean hasChildren){
             this.title = title;
             this.id = id;
+            this.primaKeyId = primaKeyId;
+            this.contractId = contractId;
             this.standingBookNotAmount = standingBookNotAmount;
             this.standingBookEndAmount = standingBookEndAmount;
             this.processNotSubmitAmount = processNotSubmitAmount;

+ 3 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/ContractClient.java

@@ -23,6 +23,9 @@ public interface ContractClient {
      */
     String API_PREFIX = "/api/manager/contract";
 
+    @PostMapping(API_PREFIX + "/getProcessContractByJLContractId")
+    List<String> getProcessContractByJLContractId(@RequestParam String contractId);
+
     /**
      * 根据ID获取合同段信息
      * @param id 合同段ID

+ 90 - 64
blade-service/blade-business/src/main/java/org/springblade/business/controller/MaterialProgressController.java

@@ -28,7 +28,9 @@ import org.springblade.business.service.IInformationQueryService;
 import org.springblade.business.vo.MaterialProgressVO;
 import org.springblade.business.vo.QueryProcessDataVO;
 import org.springblade.core.tool.api.R;
+import org.springblade.manager.entity.ContractInfo;
 import org.springblade.manager.entity.WbsTreeContract;
+import org.springblade.manager.feign.ContractClient;
 import org.springblade.manager.feign.WbsTreeContractClient;
 import org.springblade.manager.vo.WbsTreeContractTreeVOS;
 import org.springframework.web.bind.annotation.*;
@@ -57,6 +59,8 @@ public class MaterialProgressController extends BladeController {
 
     private final IImageClassificationFileService imageClassificationFileService;
 
+    private final ContractClient contractClient;
+
     /**
      * 资料进度
      */
@@ -64,77 +68,99 @@ public class MaterialProgressController extends BladeController {
     @ApiOperationSupport(order = 4)
     @ApiOperation(value = "资料进度")
     public R<MaterialProgressVO> queryContractTreeMaterialProgress(@RequestParam String contractId, @RequestParam String parentId){
-        //找到根节点
-        List<WbsTreeContractTreeVOS> nodeResult = this.wbsTreeContractClient.queryContractWbsTreeByContractIdAndType(contractId, 1, StringUtils.isNotEmpty(parentId) ? parentId : "0");
-        if(nodeResult != null && nodeResult.size() > 0){
-            //设置返回参数
-            MaterialProgressVO reVO = new MaterialProgressVO();
-
-            //找到当前节点下的所有填报节点
-            List<QueryProcessDataVO> queryDataResult = this.informationQueryService.queryProcessDataByParentIdAndContractId(parentId, 1, contractId);
-
-            nodeResult.forEach(node -> {
-                //施工台账
-                int standingBookNotAmount = 0, standingBookEndAmount = 0;
-                //工序资料
-                AtomicInteger processNotSubmitAmount = new AtomicInteger(), processNotTaskAmount = new AtomicInteger(), processAwaitAmount = new AtomicInteger(), processApprovalAmount = new AtomicInteger();
-                //开工报告
-                AtomicInteger workStartNotSubmitAmount = new AtomicInteger(), workStartNotTaskAmount = new AtomicInteger(), workStartAwaitAmount = new AtomicInteger(), workStartApprovalAmount = new AtomicInteger();
-                //质量评定
-                AtomicInteger evaluationNotSubmitAmount = new AtomicInteger(), evaluationNotTaskAmount = new AtomicInteger(), evaluationAwaitAmount = new AtomicInteger(), evaluationApprovalAmount = new AtomicInteger();
-                //中间交工
-                AtomicInteger completionNotSubmitAmount = new AtomicInteger(), completionNotTaskAmount = new AtomicInteger(), completionAwaitAmount = new AtomicInteger(), completionApprovalAmount = new AtomicInteger();
-
-                //使用迭代器,减少之后的循环次数
-                Iterator<QueryProcessDataVO> iterator = queryDataResult.iterator();
-                while (iterator.hasNext()){
-                    QueryProcessDataVO query = iterator.next();
-                    if(query.getAncestors().contains(node.getId()) || query.getAncestors().startsWith(node.getParentId() + ",") || query.getTreeId().equals(node.getId())){
-                        switch (query.getMajorDataType()){
-                            case 1:
-                                //开工报告
-                                this.addInteger(query, workStartNotSubmitAmount, workStartNotTaskAmount, workStartAwaitAmount, workStartApprovalAmount);
-                                break;
-                            case 2:
-                                //质量评定
-                                this.addInteger(query, evaluationNotSubmitAmount, evaluationNotTaskAmount, evaluationAwaitAmount, evaluationApprovalAmount);
-                                break;
-                            case 3:
-                                //中间交工
-                                this.addInteger(query, completionNotSubmitAmount, completionNotTaskAmount, completionAwaitAmount, completionApprovalAmount);
-                                break;
-                            case 4:
-                                //工序资料
-                                this.addInteger(query, processNotSubmitAmount, processNotTaskAmount, processAwaitAmount, processApprovalAmount);
-                                break;
-                            default:
-                                break;
-                        }
-                        iterator.remove();
-                    }
+        //设置返回对象
+        MaterialProgressVO reVO = new MaterialProgressVO();
+
+        //获取合同段信息
+        ContractInfo contract = this.contractClient.getContractById(Long.parseLong(contractId));
+        if(new Integer("2").equals(contract.getContractType())){
+            //监理合同段,获取其关联的施工合同段ID
+            List<String> sgContractIds = this.contractClient.getProcessContractByJLContractId(contractId);
+            for(String sgContractId : sgContractIds){
+                //找到根节点
+                List<WbsTreeContractTreeVOS> nodeResult = this.wbsTreeContractClient.queryContractWbsTreeByContractIdAndType(sgContractId, 1, StringUtils.isNotEmpty(parentId) ? parentId : "0");
+                if(nodeResult != null && nodeResult.size() > 0){
+                    //找到当前节点下的所有填报节点
+                    List<QueryProcessDataVO> queryDataResult = this.informationQueryService.queryProcessDataByParentIdAndContractId(nodeResult.get(0).getId(), 1, sgContractId);
+                    //统计
+                    this.countAmount(nodeResult, queryDataResult, sgContractId, reVO);
                 }
+            }
+            return R.data(reVO);
+        } else {
+            //找到根节点
+            List<WbsTreeContractTreeVOS> nodeResult = this.wbsTreeContractClient.queryContractWbsTreeByContractIdAndType(contractId, 1, StringUtils.isNotEmpty(parentId) ? parentId : "0");
+            if(nodeResult != null && nodeResult.size() > 0){
 
-                WbsTreeContract nodes = new WbsTreeContract();
-                nodes.setId(Long.parseLong(node.getId()));
-                nodes.setContractId(contractId);
-                nodes.setWbsType(node.getWbsType());
+                //找到当前节点下的所有填报节点
+                List<QueryProcessDataVO> queryDataResult = this.informationQueryService.queryProcessDataByParentIdAndContractId(parentId, 1, contractId);
+                //统计
+                this.countAmount(nodeResult, queryDataResult, contractId, reVO);
 
-                //检查是否还有下级
-                List<WbsTreeContract> childList = this.wbsTreeContractClient.queryChildByParentId(nodes, "");
+                return R.data(reVO);
 
-                //设置参数
-                reVO.setTreeMaterialProgressList(node.getTitle(), node.getId(), standingBookNotAmount, standingBookEndAmount,
-                        processNotSubmitAmount.get(), processNotTaskAmount.get(), processAwaitAmount.get(), processApprovalAmount.get(),
-                        workStartNotSubmitAmount.get(), workStartNotTaskAmount.get(), workStartAwaitAmount.get(), workStartApprovalAmount.get(),
-                        evaluationNotSubmitAmount.get(), evaluationNotTaskAmount.get(), evaluationAwaitAmount.get(), evaluationApprovalAmount.get(),
-                        completionNotSubmitAmount.get(), completionNotTaskAmount.get(), completionAwaitAmount.get(), completionApprovalAmount.get(), childList != null && childList.size() > 0);
-            });
+            }
+        }
+        return R.data(300, null, "未找到数据");
+    }
 
-            return R.data(reVO);
+    private void countAmount(List<WbsTreeContractTreeVOS> nodeResult, List<QueryProcessDataVO> queryDataResult, String contractId, MaterialProgressVO reVO){
+        nodeResult.forEach(node -> {
+            //施工台账
+            int standingBookNotAmount = 0, standingBookEndAmount = 0;
+            //工序资料
+            AtomicInteger processNotSubmitAmount = new AtomicInteger(), processNotTaskAmount = new AtomicInteger(), processAwaitAmount = new AtomicInteger(), processApprovalAmount = new AtomicInteger();
+            //开工报告
+            AtomicInteger workStartNotSubmitAmount = new AtomicInteger(), workStartNotTaskAmount = new AtomicInteger(), workStartAwaitAmount = new AtomicInteger(), workStartApprovalAmount = new AtomicInteger();
+            //质量评定
+            AtomicInteger evaluationNotSubmitAmount = new AtomicInteger(), evaluationNotTaskAmount = new AtomicInteger(), evaluationAwaitAmount = new AtomicInteger(), evaluationApprovalAmount = new AtomicInteger();
+            //中间交工
+            AtomicInteger completionNotSubmitAmount = new AtomicInteger(), completionNotTaskAmount = new AtomicInteger(), completionAwaitAmount = new AtomicInteger(), completionApprovalAmount = new AtomicInteger();
+
+            //使用迭代器,减少之后的循环次数
+            Iterator<QueryProcessDataVO> iterator = queryDataResult.iterator();
+            while (iterator.hasNext()){
+                QueryProcessDataVO query = iterator.next();
+                if(query.getAncestors().contains(node.getId()) || query.getAncestors().startsWith(node.getParentId() + ",") || query.getTreeId().equals(node.getId())){
+                    switch (query.getMajorDataType()){
+                        case 1:
+                            //开工报告
+                            this.addInteger(query, workStartNotSubmitAmount, workStartNotTaskAmount, workStartAwaitAmount, workStartApprovalAmount);
+                            break;
+                        case 2:
+                            //质量评定
+                            this.addInteger(query, evaluationNotSubmitAmount, evaluationNotTaskAmount, evaluationAwaitAmount, evaluationApprovalAmount);
+                            break;
+                        case 3:
+                            //中间交工
+                            this.addInteger(query, completionNotSubmitAmount, completionNotTaskAmount, completionAwaitAmount, completionApprovalAmount);
+                            break;
+                        case 4:
+                            //工序资料
+                            this.addInteger(query, processNotSubmitAmount, processNotTaskAmount, processAwaitAmount, processApprovalAmount);
+                            break;
+                        default:
+                            break;
+                    }
+                    iterator.remove();
+                }
+            }
 
-        }
+            WbsTreeContract nodes = new WbsTreeContract();
+            nodes.setId(Long.parseLong(node.getId()));
+            nodes.setContractId(contractId);
+            nodes.setWbsType(node.getWbsType());
 
-        return R.data(300, null, "未找到数据");
+            //检查是否还有下级
+            List<WbsTreeContract> childList = this.wbsTreeContractClient.queryChildByParentId(nodes, "");
+
+            //设置参数
+            reVO.setTreeMaterialProgressList(node.getTitle(), node.getId(), node.getPrimaryKeyId(), contractId, standingBookNotAmount, standingBookEndAmount,
+                    processNotSubmitAmount.get(), processNotTaskAmount.get(), processAwaitAmount.get(), processApprovalAmount.get(),
+                    workStartNotSubmitAmount.get(), workStartNotTaskAmount.get(), workStartAwaitAmount.get(), workStartApprovalAmount.get(),
+                    evaluationNotSubmitAmount.get(), evaluationNotTaskAmount.get(), evaluationAwaitAmount.get(), evaluationApprovalAmount.get(),
+                    completionNotSubmitAmount.get(), completionNotTaskAmount.get(), completionAwaitAmount.get(), completionApprovalAmount.get(), childList != null && childList.size() > 0);
+        });
     }
 
     /**

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

@@ -23,6 +23,11 @@ public class ContractClientImpl implements ContractClient {
     private final SaveUserInfoByProjectMapper saveUserInfoByProjectMapper;
     private final SaveUserInfoByProjectServiceImpl saveUserInfoByProject;
 
+    @Override
+    public List<String> getProcessContractByJLContractId(String contractId) {
+        return this.contractInfoService.getProcessContractByJLContractId(contractId);
+    }
+
     @Override
     public ContractInfo getContractById(Long id) {
         return this.contractInfoService.getById(id);

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

@@ -61,6 +61,7 @@
         <result column="wbsType" property="wbsType"/>
         <result column="partition_code" property="partitionCode"/>
         <result column="old_id" property="oldId"/>
+        <result column="contractIdRelation" property="contractIdRelation"/>
     </resultMap>
 
     <resultMap id="treeNodeResultMap2" type="org.springblade.manager.vo.WbsTreeContractVO">
@@ -223,7 +224,8 @@
         id AS "value",
         id AS "key",
         partition_code,
-        old_id
+        old_id,
+        contract_id AS contractIdRelation
         FROM
         m_wbs_tree_contract
         WHERE

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

@@ -37,6 +37,8 @@ import java.util.List;
  */
 public interface IContractInfoService extends BaseService<ContractInfo> {
 
+    List<String> getProcessContractByJLContractId(String contractId);
+
     List<ContractInfo> selectContractByProjectIds(List<Long> ids);
 
     IPage<ContractInfoVO> selectContractInfoPage(IPage<ContractInfoVO> page, ContractInfoVO contractInfo);

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

@@ -16,6 +16,8 @@
  */
 package org.springblade.manager.service.impl;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -68,6 +70,16 @@ public class ContractInfoServiceImpl
     private final WbsTreeContractMapper wbsTreeContractMapper;
     private final WbsTreeContractServiceImpl wbsTreeContractService;
 
+    @Override
+    public List<String> getProcessContractByJLContractId(String contractId) {
+        List<ContractRelationJlyz> relationJlyzs = baseMapper.selectByContractRelationJlyz(Long.parseLong(contractId));
+        if(relationJlyzs != null && relationJlyzs.size() > 0){
+            List<Long> SGContractIds = relationJlyzs.stream().map(ContractRelationJlyz::getId).distinct().collect(Collectors.toList());
+            return JSONArray.parseArray(JSONObject.toJSONString(SGContractIds), String.class);
+        }
+        return null;
+    }
+
     @Override
     public List<ContractInfo> selectContractByProjectIds(List<Long> ids) {
         return this.baseMapper.selectContractByProjectIds(ids);