ソースを参照

Merge remote-tracking branch 'origin/master'

liuyc 2 年 前
コミット
8079211212

+ 10 - 0
blade-service/blade-control/src/main/java/org/springblade/control/controller/ProjectCostBudgetController.java

@@ -189,4 +189,14 @@ public class ProjectCostBudgetController {
         return R.data(budgetService.getUnitType());
     }
 
+    /**
+     * 成本测算-统计一行金额
+     */
+    @PostMapping("/saveCountMoney")
+    @ApiOperationSupport(order = 14)
+    @ApiOperation(value = "成本测算-统计一行金额",notes = "传入需要统计的那一行对象")
+    public R<ProjectCostBudget> saveCountMoney(@RequestBody ProjectCostBudget budget){
+        return R.data(budgetService.saveCountMoney(budget));
+    }
+
 }

+ 2 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/IProjectCostBudgetService.java

@@ -75,4 +75,6 @@ public interface IProjectCostBudgetService extends BaseService<ProjectCostBudget
     List<DictInfo> getCostType();
 
     List<DictInfo> getUnitType();
+
+    ProjectCostBudget saveCountMoney(ProjectCostBudget budget);
 }

+ 1 - 1
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/AnnualBudgetServiceImpl.java

@@ -106,7 +106,7 @@ public class AnnualBudgetServiceImpl extends BaseServiceImpl<AnnualBudgetMapper,
         //总经营预算
         dto.setTotalBudget(disburseTotal);
         //年度合同指标
-        dto.setAnnualContractTarget(contractTotal);
+        dto.setAnnualContractTarget(planReturnedTotal);
         //年度利润指标
         dto.setAnnualProfitTarget(planReturnedTotal.subtract(disburseTotal));
         //人工成本

+ 16 - 1
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ProjectCostBudgetServiceImpl.java

@@ -70,6 +70,9 @@ public class ProjectCostBudgetServiceImpl extends BaseServiceImpl<ProjectCostBud
                 if (l.getProjectProcess() == null){
                     throw new ServiceException("请选择项目环节");
                 }
+                if (l.getApprove() != null && (l.getApprove() == 1 || l.getApprove() == 2)){
+                    return;
+                }
               l.setProjectId(dto.getProjectId());
               l.setUnitType(1);
               countMoney(l);
@@ -88,6 +91,9 @@ public class ProjectCostBudgetServiceImpl extends BaseServiceImpl<ProjectCostBud
                 if (l.getProjectProcess() == null){
                     throw new ServiceException("请选择项目环节");
                 }
+                if (l.getApprove() != null && (l.getApprove() == 1 || l.getApprove() == 2)){
+                    return;
+                }
                 l.setProjectId(dto.getProjectId());
                 l.setUnitType(2);
                 countMoney(l);
@@ -106,6 +112,9 @@ public class ProjectCostBudgetServiceImpl extends BaseServiceImpl<ProjectCostBud
                 if (l.getProjectProcess() == null){
                     throw new ServiceException("请选择项目环节");
                 }
+                if (l.getApprove() != null && (l.getApprove() == 1 || l.getApprove() == 2)){
+                    return;
+                }
                 l.setProjectId(dto.getProjectId());
                 l.setUnitType(3);
                 countMoney(l);
@@ -763,6 +772,12 @@ public class ProjectCostBudgetServiceImpl extends BaseServiceImpl<ProjectCostBud
         return unitType;
     }
 
+    @Override
+    public ProjectCostBudget saveCountMoney(ProjectCostBudget budget) {
+        countMoney(budget);
+        return budget;
+    }
+
     /**
      * 统计一行的几个总金额
      */
@@ -770,7 +785,7 @@ public class ProjectCostBudgetServiceImpl extends BaseServiceImpl<ProjectCostBud
         BigDecimal postMoney;
         if (budget.getPostType() != null && budget.getPostType() > 0){
             Double money = baseMapper.getPostMoney(budget.getPostType());
-            postMoney = new BigDecimal(money);
+            postMoney = new BigDecimal(money+"");
         }else {
             postMoney = new BigDecimal("0");
         }

+ 11 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractServiceImpl.java

@@ -1046,6 +1046,9 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 	 * @return
 	 */
 	public Integer writeBusinessData(Long keyId, Long contractId, String formDataId) {
+
+		WbsTreeContract wbsTreeContract = wbsTreeContractClient.getContractWbsTreeByPrimaryKeyId(keyId);
+
 		// 这里省略了具体实现,可根据业务需求编写相应的逻辑
 		List<ArchiveTreeContract> associatedNodes = archiveTreeContractSync.getWbsAssociatedNodes(contractId.toString());
 		if (associatedNodes == null || associatedNodes.size() == 0) {
@@ -1053,6 +1056,14 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 		}
 
 		for (ArchiveTreeContract associatedNode:associatedNodes) {
+
+			//匹配 开工报告 2 工序资料 3 质量评定 4 中间交工, 只保存到对应的节点
+			if (wbsTreeContract.getMajorDataType() != null ) {
+				if (!associatedNode.getMajorDataType().contains(wbsTreeContract.getMajorDataType().toString())) {
+					continue;
+				}
+			}
+
 			Long attachId = associatedNode.getId();
 
 			Integer level = null;

+ 120 - 16
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractSyncImpl.java

@@ -239,12 +239,7 @@ public class ArchiveTreeContractSyncImpl {
     public void  syncBusinessData(Long projectId,Long contractId) {
 
         //检查是否有配置关联质检的节点
-        Integer level = 5;
-        List<ArchiveTreeContract> associatedNodes = getWbsAssociatedNodes(contractId.toString());
-        if (associatedNodes == null || associatedNodes.size() == 0) {
-            return;
-        }
-        level = Integer.valueOf(associatedNodes.get(0).getDisplayHierarchy());
+
 
 
         //新增的文件题名
@@ -270,7 +265,7 @@ public class ArchiveTreeContractSyncImpl {
         List<ArchiveFile>  archiveFiles = getArchiveFiles(contractId);
 
         //获取该合同段下的wbs节点
-        List<ArchiveTreeContract> archiveTreeContracts = getArchiveTreeContractsWbs(contractId);
+//        List<ArchiveTreeContract> archiveTreeContracts = getArchiveTreeContractsWbs(contractId);
 
         //wbs的keyId到 归档文件的映射
         Map<Long,ArchiveFile> archiveKeyIdMap = new LinkedHashMap<>();
@@ -281,10 +276,10 @@ public class ArchiveTreeContractSyncImpl {
         }
 
         //wbs的keyId到 归档树的映射
-        Map<Long,Long> archiveTreeContractIdMap = new LinkedHashMap<>();
-        for (ArchiveTreeContract ar :archiveTreeContracts) {
-            archiveTreeContractIdMap.put(ar.getExtKeyId(),ar.getId());
-        }
+//        Map<Long,Long> archiveTreeContractIdMap = new LinkedHashMap<>();
+//        for (ArchiveTreeContract ar :archiveTreeContracts) {
+//            archiveTreeContractIdMap.put(ar.getExtKeyId(),ar.getId());
+//        }
 
         //获取合同段wbs划分树,用来组织树
         List<WbsTreeContractVO6> wbsTrees = contractInfoService.tree8(lWbsId.toString(), projectId.toString(), contractId.toString());
@@ -309,12 +304,120 @@ public class ArchiveTreeContractSyncImpl {
             wbsTreeKeyToIdMap.put(wbsTreeContractVO6.getPKeyId(),wbsTreeContractVO6.getId());
         }
 
+        Integer level = 5;
+        List<ArchiveTreeContract> associatedNodes = getWbsAssociatedNodes(contractId.toString());
+        if (associatedNodes == null || associatedNodes.size() == 0) {
+            return;
+        }
+
+        //遍历所有的关联节点
+        for (ArchiveTreeContract node :associatedNodes) {
+            Integer nodeLevel  = Integer.valueOf(associatedNodes.get(0).getDisplayHierarchy());
+
+            //获取该合同段下的wbs节点
+            List<ArchiveTreeContract> archiveTreeContracts = getArchiveTreeContractsWbs(contractId,node.getId());
+
+            //wbs的keyId到 归档树的映射
+            Map<Long,Long> archiveTreeContractIdMap = new LinkedHashMap<>();
+            for (ArchiveTreeContract ar :archiveTreeContracts) {
+                archiveTreeContractIdMap.put(ar.getExtKeyId(),ar.getId());
+            }
+
+            syncNode(informationQueryList,wbsTreeContractVO6Map,wbsTreeKeyToSortMap,wbsTreeKeyToIdMap,
+                    archiveKeyIdMap,archiveTreeContractIdMap,
+                    nodeLevel,node.getMajorDataType(),contractIndfo);
+        }
+//        level = Integer.valueOf(associatedNodes.get(0).getDisplayHierarchy());
+//
+//
+//        //遍历,所有已归档文件
+//        for (InformationQuery info: informationQueryList) {
+//
+//            if (info.getWbsId() != null) {
+//                ArchiveFile archiveFile = archiveKeyIdMap.get(info.getWbsId());
+//                Integer sort = wbsTreeKeyToSortMap.get(info.getWbsId());
+//
+//                //归档文件里没有则新增
+//                if ( archiveFile == null) {
+//                    if (sort!= null) {
+//                        info.setSort(sort);
+//                    }
+//                    newInformationQueryList.add(info);
+//                }//文件不同,则说明重签过,需要更新,顺序不同也更新
+//                else if (!archiveFile.getPdfFileUrl().equals(info.getEVisaPdfUrl())
+//                || (sort!= null && sort != archiveFile.getSort()) ) {
+//
+//                    //需要更新的
+//                    //todo 后续需增加判断已组件或者锁定的不要更新?
+//                    archiveFile.setPdfFileUrl(info.getEVisaPdfUrl());
+//                    archiveFile.setEVisaFile(info.getEVisaPdfUrl());
+//                    archiveFile.setFilePage(info.getEVisaPdfPage());
+//                    archiveFile.setFileSize(info.getEVisaPdfSize());
+//                    archiveFile.setSort(sort);
+//                    updateArchiveFiles.add(archiveFile);
+//                }
+//            }
+//        }
+//
+//        for (InformationQuery info: newInformationQueryList) {
+//
+//            Long keyId = info.getWbsId();
+//            //通过keyid 获取id
+//            Long id = wbsTreeKeyToIdMap.get(keyId);
+//            if (id == null) {
+//                continue;
+//            }
+//            //向上找到符合条件的level
+//            Long levelKeyId = findPKeyIdByNodeType(wbsTreeContractVO6Map,id,level);
+//
+//            //根据map获取到对应的归档树节点nodeid
+//            Long nodeId = archiveTreeContractIdMap.get(levelKeyId);
+//            //生成新增的归档文件
+//            ArchiveFile archiveFile = getArchiveFile(info,nodeId,info.getWbsId(),contractIndfo.archivesUnit());
+//            newArchiveFiles.add(archiveFile);
+//        }
+//
+//        //刷新文件
+//        handleAddandUpdateFiles(newArchiveFiles,updateArchiveFiles);
+    }
+
+
+    void syncNode(List<InformationQuery> informationQueryList,
+                  Map<Long,WbsTreeContractVO6> wbsTreeContractVO6Map,
+                  Map<Long,Integer> wbsTreeKeyToSortMap,
+                  Map<Long,Long> wbsTreeKeyToIdMap,
+                  Map<Long,ArchiveFile> archiveKeyIdMap,
+                  Map<Long,Long> archiveTreeContractIdMap,
+                  Integer level,
+                  String majarDataType,
+                  ContractInfo contractIndfo) {
+
+        //新增的文件题名
+        List<InformationQuery> newInformationQueryList = new ArrayList<>();
+
+        //新增的文件
+        List<ArchiveFile> newArchiveFiles = new ArrayList<>();
+        //更新的文件
+        List<ArchiveFile> updateArchiveFiles = new ArrayList<>();
+
         //遍历,所有已归档文件
         for (InformationQuery info: informationQueryList) {
+            Long keyId = info.getWbsId();
+            if (keyId != null) {
+                Long id = wbsTreeKeyToIdMap.get(keyId);
+
+
+                ArchiveFile archiveFile = archiveKeyIdMap.get(keyId);
+                Integer sort = wbsTreeKeyToSortMap.get(keyId);
+
+                //业内类型不匹配则不处理
+                WbsTreeContractVO6 treeContractVO6 = wbsTreeContractVO6Map.get(id);
+                if (treeContractVO6.getMajorDataType()!= null) {
+                    if (!majarDataType.contains(treeContractVO6.getMajorDataType().toString())) {
+                        continue;
+                    }
+                }
 
-            if (info.getWbsId() != null) {
-                ArchiveFile archiveFile = archiveKeyIdMap.get(info.getWbsId());
-                Integer sort = wbsTreeKeyToSortMap.get(info.getWbsId());
 
                 //归档文件里没有则新增
                 if ( archiveFile == null) {
@@ -324,7 +427,7 @@ public class ArchiveTreeContractSyncImpl {
                     newInformationQueryList.add(info);
                 }//文件不同,则说明重签过,需要更新,顺序不同也更新
                 else if (!archiveFile.getPdfFileUrl().equals(info.getEVisaPdfUrl())
-                || (sort!= null && sort != archiveFile.getSort()) ) {
+                        || (sort!= null && sort != archiveFile.getSort()) ) {
 
                     //需要更新的
                     //todo 后续需增加判断已组件或者锁定的不要更新?
@@ -399,10 +502,11 @@ public class ArchiveTreeContractSyncImpl {
         return archiveFiles;
     }
 
-    public List<ArchiveTreeContract>  getArchiveTreeContractsWbs(Long contractId) {
+    public List<ArchiveTreeContract>  getArchiveTreeContractsWbs(Long contractId,Long attachId) {
 
         List<ArchiveTreeContract> archiveTreeContracts = 	archiveTreeContractMapper.selectList(Wrappers.<ArchiveTreeContract>query().lambda()
                 .eq(ArchiveTreeContract::getContractId, contractId)
+                .eq(ArchiveTreeContract::getExtAttachId, attachId)
                 .eq(ArchiveTreeContract::getExtType, 2));
         return archiveTreeContracts;