Browse Source

资料进度

huangjn 3 years ago
parent
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));
         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 standingBookNotAmount, Integer standingBookEndAmount,
                                             Integer processNotSubmitAmount, Integer processNotTaskAmount,
                                             Integer processNotSubmitAmount, Integer processNotTaskAmount,
                                             Integer processAwaitAmount, Integer processApprovalAmount,
                                             Integer processAwaitAmount, Integer processApprovalAmount,
@@ -44,7 +44,7 @@ public class MaterialProgressVO {
                                             Integer evaluationAwaitAmount, Integer evaluationApprovalAmount,
                                             Integer evaluationAwaitAmount, Integer evaluationApprovalAmount,
                                             Integer completionNotSubmitAmount, Integer completionNotTaskAmount,
                                             Integer completionNotSubmitAmount, Integer completionNotTaskAmount,
                                             Integer completionAwaitAmount, Integer completionApprovalAmount, Boolean hasChildren){
                                             Integer completionAwaitAmount, Integer completionApprovalAmount, Boolean hasChildren){
-        this.treeMaterialProgressList.add(new TreeMaterialProgress(title, id,
+        this.treeMaterialProgressList.add(new TreeMaterialProgress(title, id, primaKeyId, contractId,
                 standingBookNotAmount, standingBookEndAmount,
                 standingBookNotAmount, standingBookEndAmount,
                 processNotSubmitAmount, processNotTaskAmount,
                 processNotSubmitAmount, processNotTaskAmount,
                 processAwaitAmount, processApprovalAmount,
                 processAwaitAmount, processApprovalAmount,
@@ -62,6 +62,10 @@ public class MaterialProgressVO {
         private String title;
         private String title;
         @ApiModelProperty("节点ID(非唯一键)")
         @ApiModelProperty("节点ID(非唯一键)")
         private String id;
         private String id;
+        @ApiModelProperty("节点primaKeyId(唯一键)")
+        private String primaKeyId;
+        @ApiModelProperty("合同段ID")
+        private String contractId;
 
 
         @ApiModelProperty("施工台账未开始数量")
         @ApiModelProperty("施工台账未开始数量")
         private Integer standingBookNotAmount;
         private Integer standingBookNotAmount;
@@ -107,7 +111,7 @@ public class MaterialProgressVO {
         @ApiModelProperty("是否有下级")
         @ApiModelProperty("是否有下级")
         private Boolean hasChildren;
         private Boolean hasChildren;
 
 
-        public TreeMaterialProgress(String title, String id,
+        public TreeMaterialProgress(String title, String id, String primaKeyId, String contractId,
                                     Integer standingBookNotAmount, Integer standingBookEndAmount,
                                     Integer standingBookNotAmount, Integer standingBookEndAmount,
                                     Integer processNotSubmitAmount, Integer processNotTaskAmount,
                                     Integer processNotSubmitAmount, Integer processNotTaskAmount,
                                     Integer processAwaitAmount, Integer processApprovalAmount,
                                     Integer processAwaitAmount, Integer processApprovalAmount,
@@ -119,6 +123,8 @@ public class MaterialProgressVO {
                                     Integer completionAwaitAmount, Integer completionApprovalAmount, Boolean hasChildren){
                                     Integer completionAwaitAmount, Integer completionApprovalAmount, Boolean hasChildren){
             this.title = title;
             this.title = title;
             this.id = id;
             this.id = id;
+            this.primaKeyId = primaKeyId;
+            this.contractId = contractId;
             this.standingBookNotAmount = standingBookNotAmount;
             this.standingBookNotAmount = standingBookNotAmount;
             this.standingBookEndAmount = standingBookEndAmount;
             this.standingBookEndAmount = standingBookEndAmount;
             this.processNotSubmitAmount = processNotSubmitAmount;
             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";
     String API_PREFIX = "/api/manager/contract";
 
 
+    @PostMapping(API_PREFIX + "/getProcessContractByJLContractId")
+    List<String> getProcessContractByJLContractId(@RequestParam String contractId);
+
     /**
     /**
      * 根据ID获取合同段信息
      * 根据ID获取合同段信息
      * @param id 合同段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.MaterialProgressVO;
 import org.springblade.business.vo.QueryProcessDataVO;
 import org.springblade.business.vo.QueryProcessDataVO;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.api.R;
+import org.springblade.manager.entity.ContractInfo;
 import org.springblade.manager.entity.WbsTreeContract;
 import org.springblade.manager.entity.WbsTreeContract;
+import org.springblade.manager.feign.ContractClient;
 import org.springblade.manager.feign.WbsTreeContractClient;
 import org.springblade.manager.feign.WbsTreeContractClient;
 import org.springblade.manager.vo.WbsTreeContractTreeVOS;
 import org.springblade.manager.vo.WbsTreeContractTreeVOS;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
@@ -57,6 +59,8 @@ public class MaterialProgressController extends BladeController {
 
 
     private final IImageClassificationFileService imageClassificationFileService;
     private final IImageClassificationFileService imageClassificationFileService;
 
 
+    private final ContractClient contractClient;
+
     /**
     /**
      * 资料进度
      * 资料进度
      */
      */
@@ -64,77 +68,99 @@ public class MaterialProgressController extends BladeController {
     @ApiOperationSupport(order = 4)
     @ApiOperationSupport(order = 4)
     @ApiOperation(value = "资料进度")
     @ApiOperation(value = "资料进度")
     public R<MaterialProgressVO> queryContractTreeMaterialProgress(@RequestParam String contractId, @RequestParam String parentId){
     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 SaveUserInfoByProjectMapper saveUserInfoByProjectMapper;
     private final SaveUserInfoByProjectServiceImpl saveUserInfoByProject;
     private final SaveUserInfoByProjectServiceImpl saveUserInfoByProject;
 
 
+    @Override
+    public List<String> getProcessContractByJLContractId(String contractId) {
+        return this.contractInfoService.getProcessContractByJLContractId(contractId);
+    }
+
     @Override
     @Override
     public ContractInfo getContractById(Long id) {
     public ContractInfo getContractById(Long id) {
         return this.contractInfoService.getById(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="wbsType" property="wbsType"/>
         <result column="partition_code" property="partitionCode"/>
         <result column="partition_code" property="partitionCode"/>
         <result column="old_id" property="oldId"/>
         <result column="old_id" property="oldId"/>
+        <result column="contractIdRelation" property="contractIdRelation"/>
     </resultMap>
     </resultMap>
 
 
     <resultMap id="treeNodeResultMap2" type="org.springblade.manager.vo.WbsTreeContractVO">
     <resultMap id="treeNodeResultMap2" type="org.springblade.manager.vo.WbsTreeContractVO">
@@ -223,7 +224,8 @@
         id AS "value",
         id AS "value",
         id AS "key",
         id AS "key",
         partition_code,
         partition_code,
-        old_id
+        old_id,
+        contract_id AS contractIdRelation
         FROM
         FROM
         m_wbs_tree_contract
         m_wbs_tree_contract
         WHERE
         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> {
 public interface IContractInfoService extends BaseService<ContractInfo> {
 
 
+    List<String> getProcessContractByJLContractId(String contractId);
+
     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);

+ 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;
 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.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -68,6 +70,16 @@ public class ContractInfoServiceImpl
     private final WbsTreeContractMapper wbsTreeContractMapper;
     private final WbsTreeContractMapper wbsTreeContractMapper;
     private final WbsTreeContractServiceImpl wbsTreeContractService;
     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
     @Override
     public List<ContractInfo> selectContractByProjectIds(List<Long> ids) {
     public List<ContractInfo> selectContractByProjectIds(List<Long> ids) {
         return this.baseMapper.selectContractByProjectIds(ids);
         return this.baseMapper.selectContractByProjectIds(ids);