huangjn преди 3 години
родител
ревизия
8d70a52653
променени са 17 файла, в които са добавени 659 реда и са изтрити 40 реда
  1. 206 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/MaterialProgressVO.java
  2. 2 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/QueryProcessDataVO.java
  3. 12 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/WbsTreeContractClient.java
  4. 12 2
      blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java
  5. 360 0
      blade-service/blade-business/src/main/java/org/springblade/business/controller/MaterialProgressController.java
  6. 0 36
      blade-service/blade-business/src/main/java/org/springblade/business/controller/UserOpinionGoodController.java
  7. 2 0
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/ImageClassificationFileMapper.java
  8. 4 0
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/ImageClassificationFileMapper.xml
  9. 3 0
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/InformationQueryMapper.xml
  10. 2 0
      blade-service/blade-business/src/main/java/org/springblade/business/service/IImageClassificationFileService.java
  11. 5 0
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/ImageClassificationFileServiceImpl.java
  12. 26 1
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java
  13. 13 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/feign/WbsTreeContractClientImpl.java
  14. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.java
  15. 3 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml
  16. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeContractService.java
  17. 5 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

+ 206 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/MaterialProgressVO.java

@@ -0,0 +1,206 @@
+package org.springblade.business.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+public class MaterialProgressVO {
+
+    @ApiModelProperty("内业资料进度")
+    private List<ProcessMaterial> processMaterialList = new ArrayList<>();
+
+    @ApiModelProperty("报表资料审批统计")
+    private List<ProcessMaterialStatus> processMaterialStatusList = new ArrayList<>();
+
+    @ApiModelProperty("声像媒体资料统计")
+    private List<ContractImageClassification> contractImageClassificationList = new ArrayList<>();
+
+    @ApiModelProperty("WBS进度")
+    private List<TreeMaterialProgress> treeMaterialProgressList = new ArrayList<>();
+
+    public void setProcessMaterialList(String title, Integer amount, Long successAmount){
+        this.processMaterialList.add(new ProcessMaterial(title, amount, successAmount));
+    }
+
+    public void setProcessMaterialStatusList(String title, Integer submitAmount, Integer awaitAmount, Integer approvalAmount){
+        this.processMaterialStatusList.add(new ProcessMaterialStatus(title, submitAmount, awaitAmount, approvalAmount));
+    }
+
+    public void setContractImageClassificationList(Integer amount, Integer imageAmount, Integer videoAmount){
+        this.contractImageClassificationList.add(new ContractImageClassification(amount, imageAmount, videoAmount));
+    }
+
+    public void setTreeMaterialProgressList(String title, String id,
+                                            Integer standingBookNotAmount, Integer standingBookEndAmount,
+                                            Integer processNotSubmitAmount, Integer processNotTaskAmount,
+                                            Integer processAwaitAmount, Integer processApprovalAmount,
+                                            Integer workStartNotSubmitAmount, Integer workStartNotTaskAmount,
+                                            Integer workStartAwaitAmount, Integer workStartApprovalAmount,
+                                            Integer evaluationNotSubmitAmount, Integer evaluationNotTaskAmount,
+                                            Integer evaluationAwaitAmount, Integer evaluationApprovalAmount,
+                                            Integer completionNotSubmitAmount, Integer completionNotTaskAmount,
+                                            Integer completionAwaitAmount, Integer completionApprovalAmount, Boolean hasChildren){
+        this.treeMaterialProgressList.add(new TreeMaterialProgress(title, id,
+                standingBookNotAmount, standingBookEndAmount,
+                processNotSubmitAmount, processNotTaskAmount,
+                processAwaitAmount, processApprovalAmount,
+                workStartNotSubmitAmount, workStartNotTaskAmount,
+                workStartAwaitAmount, workStartApprovalAmount,
+                evaluationNotSubmitAmount, evaluationNotTaskAmount,
+                evaluationAwaitAmount, evaluationApprovalAmount,
+                completionNotSubmitAmount, completionNotTaskAmount,
+                completionAwaitAmount, completionApprovalAmount, hasChildren));
+    }
+
+    @Data
+    public static class TreeMaterialProgress {
+        @ApiModelProperty("节点名称")
+        private String title;
+        @ApiModelProperty("节点ID(非唯一键)")
+        private String id;
+
+        @ApiModelProperty("施工台账未开始数量")
+        private Integer standingBookNotAmount;
+        @ApiModelProperty("施工台账已完成数量")
+        private Integer standingBookEndAmount;
+
+        @ApiModelProperty("工序资料未填报数量")
+        private Integer processNotSubmitAmount;
+        @ApiModelProperty("工序资料未上报数量")
+        private Integer processNotTaskAmount;
+        @ApiModelProperty("工序资料待审批数量")
+        private Integer processAwaitAmount;
+        @ApiModelProperty("工序资料已审批数量")
+        private Integer processApprovalAmount;
+
+        @ApiModelProperty("开工报告未填报数量")
+        private Integer workStartNotSubmitAmount;
+        @ApiModelProperty("开工报告未上报数量")
+        private Integer workStartNotTaskAmount;
+        @ApiModelProperty("开工报告待审批数量")
+        private Integer workStartAwaitAmount;
+        @ApiModelProperty("开工报告已审批数量")
+        private Integer workStartApprovalAmount;
+
+        @ApiModelProperty("质量评定未填报数量")
+        private Integer evaluationNotSubmitAmount;
+        @ApiModelProperty("质量评定未上报数量")
+        private Integer evaluationNotTaskAmount;
+        @ApiModelProperty("质量评定待审批数量")
+        private Integer evaluationAwaitAmount;
+        @ApiModelProperty("质量评定已审批数量")
+        private Integer evaluationApprovalAmount;
+
+        @ApiModelProperty("中间交工未填报数量")
+        private Integer completionNotSubmitAmount;
+        @ApiModelProperty("中间交工未上报数量")
+        private Integer completionNotTaskAmount;
+        @ApiModelProperty("中间交工待审批数量")
+        private Integer completionAwaitAmount;
+        @ApiModelProperty("中间交工已审批数量")
+        private Integer completionApprovalAmount;
+
+        @ApiModelProperty("是否有下级")
+        private Boolean hasChildren;
+
+        public TreeMaterialProgress(String title, String id,
+                                    Integer standingBookNotAmount, Integer standingBookEndAmount,
+                                    Integer processNotSubmitAmount, Integer processNotTaskAmount,
+                                    Integer processAwaitAmount, Integer processApprovalAmount,
+                                    Integer workStartNotSubmitAmount, Integer workStartNotTaskAmount,
+                                    Integer workStartAwaitAmount, Integer workStartApprovalAmount,
+                                    Integer evaluationNotSubmitAmount, Integer evaluationNotTaskAmount,
+                                    Integer evaluationAwaitAmount, Integer evaluationApprovalAmount,
+                                    Integer completionNotSubmitAmount, Integer completionNotTaskAmount,
+                                    Integer completionAwaitAmount, Integer completionApprovalAmount, Boolean hasChildren){
+            this.title = title;
+            this.id = id;
+            this.standingBookNotAmount = standingBookNotAmount;
+            this.standingBookEndAmount = standingBookEndAmount;
+            this.processNotSubmitAmount = processNotSubmitAmount;
+            this.processNotTaskAmount = processNotTaskAmount;
+            this.processAwaitAmount = processAwaitAmount;
+            this.processApprovalAmount = processApprovalAmount;
+            this.workStartNotSubmitAmount = workStartNotSubmitAmount;
+            this.workStartNotTaskAmount = workStartNotTaskAmount;
+            this.workStartAwaitAmount = workStartAwaitAmount;
+            this.workStartApprovalAmount = workStartApprovalAmount;
+            this.evaluationNotSubmitAmount = evaluationNotSubmitAmount;
+            this.evaluationNotTaskAmount = evaluationNotTaskAmount;
+            this.evaluationAwaitAmount = evaluationAwaitAmount;
+            this.evaluationApprovalAmount = evaluationApprovalAmount;
+            this.completionNotSubmitAmount = completionNotSubmitAmount;
+            this.completionNotTaskAmount = completionNotTaskAmount;
+            this.completionAwaitAmount = completionAwaitAmount;
+            this.completionApprovalAmount = completionApprovalAmount;
+            this.hasChildren = hasChildren;
+        }
+
+    }
+
+    @Data
+    public static class ContractImageClassification {
+        @ApiModelProperty("总数")
+        private Integer amount;
+        @ApiModelProperty("图片数量")
+        private Integer imageAmount;
+        @ApiModelProperty("视频数量")
+        private Integer videoAmount;
+
+        public ContractImageClassification(Integer amount, Integer imageAmount, Integer videoAmount){
+            this.amount = amount;
+            this.imageAmount = imageAmount;
+            this.videoAmount = videoAmount;
+        }
+
+    }
+
+    @Data
+    public static class ProcessMaterialStatus {
+        @ApiModelProperty("标题")
+        private String title;
+        @ApiModelProperty("已填报数量")
+        private Integer submitAmount;
+        @ApiModelProperty("待审批数量")
+        private Integer awaitAmount;
+        @ApiModelProperty("已审批数量")
+        private Integer approvalAmount;
+
+        public ProcessMaterialStatus(String title, Integer submitAmount, Integer awaitAmount, Integer approvalAmount){
+            this.title = title;
+            this.submitAmount = submitAmount;
+            this.awaitAmount = awaitAmount;
+            this.approvalAmount = approvalAmount;
+        }
+
+    }
+
+    @Data
+    public static class ProcessMaterial {
+        @ApiModelProperty("标题")
+        private String title;
+        @ApiModelProperty("总数(应填数)")
+        private Integer amount;
+        @ApiModelProperty("已填数")
+        private Long successAmount;
+        @ApiModelProperty("完成率")
+        private BigDecimal ratio;
+
+        public ProcessMaterial(String title, Integer amount, Long successAmount){
+            this.title = title;
+            this.amount = amount;
+            this.successAmount = successAmount;
+            if(successAmount != 0L && amount > 0){
+                this.ratio = new BigDecimal(successAmount.toString()).divide(new BigDecimal(amount.toString()), 0, BigDecimal.ROUND_HALF_UP);
+            } else {
+                this.ratio = new BigDecimal("0");
+            }
+        }
+
+    }
+
+}

+ 2 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/QueryProcessDataVO.java

@@ -15,4 +15,6 @@ public class QueryProcessDataVO {
 
     private Integer status;
 
+    private Integer majorDataType;
+
 }

+ 12 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/WbsTreeContractClient.java

@@ -21,6 +21,18 @@ public interface WbsTreeContractClient {
      */
     String API_PREFIX = "/api/manager/WbsTreeContract";
 
+    /**
+     * 根据节点主键和分类查询对应的pdf信息
+     */
+    @GetMapping(API_PREFIX + "/queryProcessSubmitBusinessData")
+    List<WbsTreeContract> queryProcessSubmitBusinessDataByPrimaKeyIdAndClassify(@RequestParam String primaKeyId, @RequestParam String classify);
+
+    /**
+     * 查询填报节点
+     */
+    @PostMapping(API_PREFIX + "/queryContractSubmitWbsTreeByContractId")
+    List<WbsTreeContract> queryContractSubmitWbsTreeByContractId(@RequestParam String contractId);
+
     @PostMapping(API_PREFIX + "/queryChildByParentId")
     List<WbsTreeContract> queryChildByParentId(@RequestBody WbsTreeContract treeNode, @RequestParam String queryTable);
 

+ 12 - 2
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -654,7 +654,7 @@ public class InformationWriteQueryController extends BladeController {
 
 	/**
 	 * 删除节点
-	 * @param ids 节点的primaryKeyId
+	 * @param ids 节点的primaryKeyId(只有一个值)
 	 * @return 删除结果
 	 */
 	@PostMapping("/removeContractTreeNode")
@@ -662,8 +662,18 @@ public class InformationWriteQueryController extends BladeController {
 	@ApiOperation(value = "删除节点")
 	@ApiImplicitParam(name = "ids", value = "节点的primaryKeyId")
 	public R<Boolean> removeContractTreeNode(@RequestParam String ids){
+		//根据传入的节点,将其所有子节点删除
+		WbsTreeContract removeNode = this.wbsTreeContractClient.getContractWbsTreeByPrimaryKeyId(Long.parseLong(ids));
+		//查询所有子节点
+		List<WbsTreeContract> removeNodeList = this.wbsTreeContractClient.queryCurrentNodeAllChild(Long.parseLong(removeNode.getContractId()), removeNode.getId());
+		//获取pKeyId
+		List<Long> removeList = removeNodeList.stream().map(WbsTreeContract::getPKeyId).distinct().collect(Collectors.toList());
+		//拼接
+		ids = ids + "," + String.join(",", JSONArray.parseArray(JSONObject.toJSONString(removeList), String.class));
+
 		//保存操作记录
 		this.operationLogClient.saveUserOperationLog(4, "资料管理", "工序资料", ids);
+
 		return R.data(this.wbsTreeContractClient.removeContractTreeNode(ids));
 	}
 
@@ -1021,7 +1031,7 @@ public class InformationWriteQueryController extends BladeController {
 			//获取当前父节点下所有工序节点及填报资料
 			List<QueryProcessDataVO> queryDataResult;
 			if(new Integer("2").equals(contractInfo.getContractType())){
-				queryDataResult = this.informationQueryService.queryProcessDataByParentIdAndContractId(parentId, 2, contractIdRelation);
+				queryDataResult = this.informationQueryService.queryProcessDataByParentIdAndContractId(parentId, 1, contractIdRelation);
 			} else {
 				queryDataResult = this.informationQueryService.queryProcessDataByParentIdAndContractId(parentId, 1, contractId);
 			}

+ 360 - 0
blade-service/blade-business/src/main/java/org/springblade/business/controller/MaterialProgressController.java

@@ -0,0 +1,360 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.business.controller;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.apache.commons.lang.StringUtils;
+import org.springblade.business.entity.InformationQuery;
+import org.springblade.business.service.IImageClassificationFileService;
+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.WbsTreeContract;
+import org.springblade.manager.feign.WbsTreeContractClient;
+import org.springblade.manager.vo.WbsTreeContractTreeVOS;
+import org.springframework.web.bind.annotation.*;
+import org.springblade.core.boot.ctrl.BladeController;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * 点赞记录表 控制器
+ *
+ * @author BladeX
+ * @since 2022-06-21
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/materialProgress")
+@Api(value = "资料进度", tags = "资料进度接口")
+public class MaterialProgressController extends BladeController {
+
+    private final WbsTreeContractClient wbsTreeContractClient;
+
+    private final IInformationQueryService informationQueryService;
+
+    private final IImageClassificationFileService imageClassificationFileService;
+
+    /**
+     * 资料进度
+     */
+    @PostMapping("/queryContractTreeMaterialProgress")
+    @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();
+                    }
+                }
+
+                WbsTreeContract nodes = new WbsTreeContract();
+                nodes.setId(Long.parseLong(node.getId()));
+                nodes.setContractId(contractId);
+                nodes.setWbsType(node.getWbsType());
+
+                //检查是否还有下级
+                List<WbsTreeContract> childList = this.wbsTreeContractClient.queryChildByParentId(nodes, "");
+
+                //设置参数
+                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(reVO);
+
+        }
+
+        return R.data(300, null, "未找到数据");
+    }
+
+    /**
+     * 参数 + 1
+     */
+    private void addInteger(QueryProcessDataVO vo, AtomicInteger notSubmit, AtomicInteger notTask, AtomicInteger await, AtomicInteger approval){
+        if(vo.getStatus() != null){
+            switch (vo.getStatus()){
+                case 1:
+                    await.getAndIncrement();
+                    break;
+                case 2:
+                    approval.getAndIncrement();
+                    break;
+                default:
+                    notTask.getAndIncrement();
+            }
+        } else {
+            notSubmit.getAndIncrement();
+        }
+    }
+
+    /**
+     * 声像媒体资料统计
+     */
+    @PostMapping("/queryImageClassification")
+    @ApiOperationSupport(order = 3)
+    @ApiOperation(value = "声像媒体资料统计")
+    public R<MaterialProgressVO> queryImageClassification(@RequestParam String contractId){
+        List<Integer> fileTypes = this.imageClassificationFileService.queryCurrentContractImageFileType(contractId);
+        if(fileTypes != null && fileTypes.size() > 0){
+            //判断数量
+            AtomicInteger imageAmount = new AtomicInteger();
+            AtomicInteger videoAmount = new AtomicInteger();
+            fileTypes.forEach(type -> {
+                switch (type) {
+                    case 1:
+                        videoAmount.getAndIncrement();
+                        break;
+                    case 2:
+                        imageAmount.getAndIncrement();
+                        break;
+                }
+            });
+            //设置返回参数
+            MaterialProgressVO reVO = new MaterialProgressVO();
+            reVO.setContractImageClassificationList(fileTypes.size(), imageAmount.get(), videoAmount.get());
+
+            return R.data(reVO);
+        }
+        return R.data(300, null, "未找到数据");
+    }
+
+    /**
+     * 报表资料审批统计
+     */
+    @PostMapping("/queryMaterialProgressStatus")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "报表资料审批统计")
+    public R<MaterialProgressVO> queryMaterialProgressStatus(@RequestParam String contractId){
+        //找到可填写的
+        List<WbsTreeContract> submitNodeList = this.wbsTreeContractClient.queryContractSubmitWbsTreeByContractId(contractId);
+        if(submitNodeList != null && submitNodeList.size() > 0){
+            //汇总四个填报类型的总数
+            List<String> process = new ArrayList<>(), workStartReports = new ArrayList<>(), evaluation = new ArrayList<>(), completion = new ArrayList<>();
+            //类型分组
+            this.checkType(submitNodeList, process, workStartReports, evaluation, completion);
+
+            //工序资料
+            List<InformationQuery> processSubmitList = null;
+            if(process.size() > 0){
+                processSubmitList = this.informationQueryService.list(Wrappers.<InformationQuery>lambdaQuery().in(InformationQuery::getWbsId, process));
+            }
+            //开工报告
+            List<InformationQuery> workStartReportsSubmitList = null;
+            if(workStartReports.size() > 0){
+                workStartReportsSubmitList = this.informationQueryService.list(Wrappers.<InformationQuery>lambdaQuery().in(InformationQuery::getWbsId, workStartReports));
+            }
+            //质量评定
+            List<InformationQuery> evaluationSubmitList = null;
+            if(evaluation.size() > 0){
+                evaluationSubmitList = this.informationQueryService.list(Wrappers.<InformationQuery>lambdaQuery().in(InformationQuery::getWbsId, evaluation));
+            }
+            //中间交工
+            List<InformationQuery> completionSubmitList = null;
+            if(completion.size() > 0){
+                completionSubmitList = this.informationQueryService.list(Wrappers.<InformationQuery>lambdaQuery().in(InformationQuery::getWbsId, completion));
+            }
+
+            //设置参数返回
+            MaterialProgressVO reVO = new MaterialProgressVO();
+
+            //处理工序资料
+            if(processSubmitList != null && processSubmitList.size() > 0){
+                this.setParameter(reVO, processSubmitList);
+            } else {
+                reVO.setProcessMaterialStatusList("工序资料", 0, 0 ,0);
+            }
+            //处理开工报告
+            if(workStartReportsSubmitList != null && workStartReportsSubmitList.size() > 0){
+                this.setParameter(reVO, workStartReportsSubmitList);
+            } else {
+                reVO.setProcessMaterialStatusList("开工报告", 0, 0 ,0);
+            }
+            //处理评定资料
+            if(evaluationSubmitList != null && evaluationSubmitList.size() > 0){
+                this.setParameter(reVO, evaluationSubmitList);
+            } else {
+                reVO.setProcessMaterialStatusList("评定资料", 0, 0 ,0);
+            }
+            //处理中间交工
+            if(completionSubmitList != null && completionSubmitList.size() > 0){
+                this.setParameter(reVO, completionSubmitList);
+            } else {
+                reVO.setProcessMaterialStatusList("中间交工", 0, 0 ,0);
+            }
+
+            return R.data(reVO);
+        }
+        return R.data(300, null, "未找到数据");
+    }
+
+    /**
+     * 查询内业资料进度
+     */
+    @PostMapping("/queryMaterialProgress")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation(value = "查询内业资料进度")
+    public R<MaterialProgressVO> queryMaterialProgress(@RequestParam String contractId){
+        //找到可填写的
+        List<WbsTreeContract> submitNodeList = this.wbsTreeContractClient.queryContractSubmitWbsTreeByContractId(contractId);
+        if(submitNodeList != null && submitNodeList.size() > 0){
+            //汇总四个填报类型的总数
+            List<String> process = new ArrayList<>(), workStartReports = new ArrayList<>(), evaluation = new ArrayList<>(), completion = new ArrayList<>();
+            //类型分组
+            this.checkType(submitNodeList, process, workStartReports, evaluation, completion);
+
+            //根据四个集合获取对应的资料
+            //工序资料
+            long processAmount = 0L;
+            if(process.size() > 0){
+                processAmount = this.informationQueryService.count(Wrappers.<InformationQuery>lambdaQuery().in(InformationQuery::getWbsId, process));
+            }
+            //开工报告
+            long workStartReportsAmount = 0L;
+            if(workStartReports.size() > 0){
+                workStartReportsAmount = this.informationQueryService.count(Wrappers.<InformationQuery>lambdaQuery().in(InformationQuery::getWbsId, workStartReports));
+            }
+            //质量评定
+            long evaluationAmount = 0L;
+            if(evaluation.size() > 0){
+                evaluationAmount = this.informationQueryService.count(Wrappers.<InformationQuery>lambdaQuery().in(InformationQuery::getWbsId, evaluation));
+            }
+            //中间交工
+            long completionAmount = 0L;
+            if(completion.size() > 0){
+                completionAmount = this.informationQueryService.count(Wrappers.<InformationQuery>lambdaQuery().in(InformationQuery::getWbsId, completion));
+            }
+
+            //设置返回
+            MaterialProgressVO reVO = new MaterialProgressVO();
+            reVO.setProcessMaterialList("开工报告", workStartReports.size(), workStartReportsAmount);
+            reVO.setProcessMaterialList("工序资料", process.size(), processAmount);
+            reVO.setProcessMaterialList("评定资料", evaluation.size(), evaluationAmount);
+            reVO.setProcessMaterialList("中间交工", completion.size(), completionAmount);
+
+            return R.data(reVO);
+        }
+
+        return R.data(300, null, "未找到数据");
+    }
+
+    /**
+     * 设置参数
+     */
+    private void setParameter(MaterialProgressVO reVO, List<InformationQuery> list){
+        //待审批
+        AtomicInteger await = new AtomicInteger();
+        //已审批
+        AtomicInteger approval = new AtomicInteger();
+        list.forEach(vo -> {
+            switch (vo.getStatus()){
+                case 1:
+                    await.getAndIncrement();
+                    break;
+                case 2:
+                    approval.getAndIncrement();
+                    break;
+
+            }
+        });
+        reVO.setProcessMaterialStatusList("工序资料", list.size(), await.get(), approval.get());
+    }
+
+    /**
+     * 类型分组
+     */
+    private void checkType(List<WbsTreeContract> submitNodeList, List<String> process, List<String> workStartReports, List<String> evaluation, List<String> completion){
+        submitNodeList.forEach(contract -> {
+            switch (contract.getMajorDataType()){
+                case 1:
+                    //开工报告
+                    workStartReports.add(contract.getPKeyId().toString());
+                    break;
+                case 2:
+                    //质量评定
+                    evaluation.add(contract.getPKeyId().toString());
+                    break;
+                case 3:
+                    //中间交工
+                    completion.add(contract.getPKeyId().toString());
+                    break;
+                case 4:
+                    //工序资料
+                    process.add(contract.getPKeyId().toString());
+                    break;
+                default:
+                    break;
+            }
+        });
+    }
+
+}

+ 0 - 36
blade-service/blade-business/src/main/java/org/springblade/business/controller/UserOpinionGoodController.java

@@ -1,36 +0,0 @@
-/*
- *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
- *
- *  Redistribution and use in source and binary forms, with or without
- *  modification, are permitted provided that the following conditions are met:
- *
- *  Redistributions of source code must retain the above copyright notice,
- *  this list of conditions and the following disclaimer.
- *  Redistributions in binary form must reproduce the above copyright
- *  notice, this list of conditions and the following disclaimer in the
- *  documentation and/or other materials provided with the distribution.
- *  Neither the name of the dreamlu.net developer nor the names of its
- *  contributors may be used to endorse or promote products derived from
- *  this software without specific prior written permission.
- *  Author: Chill 庄骞 (smallchill@163.com)
- */
-package org.springblade.business.controller;
-
-import io.swagger.annotations.Api;
-import lombok.AllArgsConstructor;
-import org.springframework.web.bind.annotation.*;
-import org.springblade.core.boot.ctrl.BladeController;
-
-/**
- * 点赞记录表 控制器
- *
- * @author BladeX
- * @since 2022-06-21
- */
-@RestController
-@AllArgsConstructor
-@RequestMapping("/userOpinionGood")
-@Api(value = "点赞记录表", tags = "点赞记录表接口")
-public class UserOpinionGoodController extends BladeController {
-	
-}

+ 2 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ImageClassificationFileMapper.java

@@ -31,6 +31,8 @@ import org.apache.ibatis.annotations.Param;
  */
 public interface ImageClassificationFileMapper extends BaseMapper<ImageClassificationFile> {
 
+	List<Integer> queryCurrentContractImageFileType(@Param("contractId") String contractId);
+
 	/**
 	 * 获取当前分类、项目、合同段下的所有文件数量
 	 * @param projectId 项目ID

+ 4 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ImageClassificationFileMapper.xml

@@ -32,6 +32,10 @@
         <result column="marge_pdf_url" property="margePdfUrl"/>
     </resultMap>
 
+    <select id="queryCurrentContractImageFileType" resultType="java.lang.Integer">
+        select `type` from u_image_classification_file where contract_id = #{contractId} and is_deleted = 0
+    </select>
+
     <select id="queryCurrentClassifyAllFileCount" resultType="java.lang.Integer">
         select count(id) from u_image_classification_file where is_deleted = 0 and classify_id = #{classifyId} and contract_id = #{contractId}
         <if test="projectId != null and projectId != ''">

+ 3 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/InformationQueryMapper.xml

@@ -36,6 +36,7 @@
         <result column="ancestors" property="ancestors"/>
         <result column="informationQueryId" property="informationQueryId"/>
         <result column="status" property="status"/>
+        <result column="major_data_type" property="majorDataType"/>
     </resultMap>
 
     <resultMap id="intResultMap" type="java.lang.Integer"/>
@@ -45,6 +46,7 @@
             wtc.id AS treeId,
             wtc.p_key_id,
             wtc.ancestors,
+            wtc.major_data_type,
             uiq.id AS informationQueryId,
             uiq.status
         FROM
@@ -54,6 +56,7 @@
             wtc.wbs_type = 1
         AND wtc.type = 1
         AND wtc.dept_category = 6
+        AND wtc.major_data_type != 5
         AND wtc.ancestors like concat('%',#{parentId},'%')
         AND wtc.contract_id = #{contractId}
         AND wtc.is_deleted = 0

+ 2 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/IImageClassificationFileService.java

@@ -15,6 +15,8 @@ import java.util.List;
  */
 public interface IImageClassificationFileService extends BaseService<ImageClassificationFile> {
 
+	List<Integer> queryCurrentContractImageFileType(String contractId);
+
 	/**
 	 * 获取当前分类、项目、合同段下的所有文件数量
 	 * @param projectId 项目ID

+ 5 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/ImageClassificationFileServiceImpl.java

@@ -41,6 +41,11 @@ import java.util.*;
 @Service
 public class ImageClassificationFileServiceImpl extends BaseServiceImpl<ImageClassificationFileMapper, ImageClassificationFile> implements IImageClassificationFileService {
 
+	@Override
+	public List<Integer> queryCurrentContractImageFileType(String contractId) {
+		return this.baseMapper.queryCurrentContractImageFileType(contractId);
+	}
+
 	@Override
 	public Integer queryCurrentClassifyAllFileCount(String projectId, String contractId, Long classifyId) {
 		return this.baseMapper.queryCurrentClassifyAllFileCount(projectId, contractId, classifyId);

+ 26 - 1
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java

@@ -30,6 +30,8 @@ import org.springblade.flow.core.feign.NewFlowClient;
 import org.springblade.flow.core.utils.FlowUtil;
 import org.springblade.flow.core.utils.TaskUtil;
 import org.springblade.flow.core.vo.FlowProcessVO;
+import org.springblade.manager.entity.WbsTreeContract;
+import org.springblade.manager.feign.WbsTreeContractClient;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
@@ -65,6 +67,8 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
 
     private final IContractLogService contractLogService;
 
+    private final WbsTreeContractClient wbsTreeContractClient;
+
     @Override
     public List<TaskParallel> queryApprovalUser(String formDataIds) {
         //返回结果
@@ -91,7 +95,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
         switch (taskApprovalVO.getApprovalType()){
             case 1:
                 //填报数据
-                return null;
+                return this.queryProcessSubmitBusinessData(taskApprovalVO.getFormDataId());
             case 2:
                 //工程文件
                 return this.queryArchiveFileBusinessData(taskApprovalVO.getFormDataId());
@@ -100,6 +104,27 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
         }
     }
 
+    /**
+     * 查询填报数据
+     */
+    private TaskApprovalVO queryProcessSubmitBusinessData(String formDataId){
+        InformationQuery query = this.informationQueryService.getById(formDataId);
+        if(query != null){
+            //查询对应的数据
+            List<WbsTreeContract> tableData = this.wbsTreeContractClient.queryProcessSubmitBusinessDataByPrimaKeyIdAndClassify(query.getWbsId().toString(), query.getClassify().toString());
+            if(tableData != null && tableData.size() > 0){
+                //转换数据
+                TaskApprovalVO vo = new TaskApprovalVO();
+                for(WbsTreeContract node : tableData){
+                    vo.setApprovalFileList(node.getDeptName(), node.getPdfUrl());
+                }
+                return vo;
+            }
+        }
+
+        return null;
+    }
+
     /**
      * 查询工程文件
      */

+ 13 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/WbsTreeContractClientImpl.java

@@ -31,13 +31,25 @@ public class WbsTreeContractClientImpl implements WbsTreeContractClient {
 
     private final IDictBizClient dictBizClient;
 
+    @Override
+    public List<WbsTreeContract> queryProcessSubmitBusinessDataByPrimaKeyIdAndClassify(String primaKeyId, String classify) {
+        WbsTreeContract keyNode = this.wbsTreeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getPKeyId, primaKeyId));
+        return this.wbsTreeContractService.list(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getParentId, keyNode.getId()).eq(WbsTreeContract::getType, 2)
+                .in(WbsTreeContract::getTableType, "1".equals(classify) ? Arrays.asList("1,2,3".split(",")) : Arrays.asList("4,5,6".split(","))));
+    }
+
+    @Override
+    public List<WbsTreeContract> queryContractSubmitWbsTreeByContractId(String contractId) {
+        return this.wbsTreeContractService.queryContractSubmitWbsTreeByContractId(contractId);
+    }
+
     @Override
     public List<WbsTreeContract> queryChildByParentId(WbsTreeContract treeNode, String queryTable) {
         if ("queryTable".equals(queryTable)) {
             //查询表格
             return this.wbsTreeContractService.list(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getParentId, treeNode.getId()).eq(WbsTreeContract::getContractId, treeNode.getContractId()).eq(WbsTreeContract::getType, "2").eq(WbsTreeContract::getWbsType, "2"));
         } else {
-            return this.wbsTreeContractService.list(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getParentId, treeNode.getId()).eq(WbsTreeContract::getContractId, treeNode.getContractId()).eq(WbsTreeContract::getType, 1).eq(WbsTreeContract::getWbsType, treeNode.getWbsType()));
+            return this.wbsTreeContractService.list(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getParentId, treeNode.getId()).eq(WbsTreeContract::getContractId, treeNode.getContractId()).eq(WbsTreeContract::getType, "1").eq(WbsTreeContract::getWbsType, treeNode.getWbsType()));
         }
     }
 

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

@@ -11,6 +11,8 @@ import java.util.List;
 
 public interface WbsTreeContractMapper extends BaseMapper<WbsTreeContract> {
 
+    List<WbsTreeContract> queryContractSubmitWbsTreeByContractId(@Param("contractId")String contractId);
+
     List<WbsTreeContract> queryCurrentContractLogList(@Param("contractId") String contractId);
 
     List<WbsTreeContractVO> selectAll();

+ 3 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml

@@ -540,5 +540,8 @@
         WHERE contract_id_sg = #{contractId}
     </select>
 
+    <select id="queryContractSubmitWbsTreeByContractId" resultMap="ResultMap">
+        select p_key_id, contract_id, major_data_type from m_wbs_tree_contract where is_deleted = 0 and dept_category = 6 and contract_id = #{contractId}
+    </select>
 
 </mapper>

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

@@ -12,6 +12,8 @@ import java.util.List;
 
 public interface IWbsTreeContractService extends BaseService<WbsTreeContract> {
 
+    List<WbsTreeContract> queryContractSubmitWbsTreeByContractId(String contractId);
+
     boolean submitWbsTreeInContract(WbsTreeContractDTO wbsTreeContractDTO);
 
     List<WbsTreeContract> findWbsTreeContract(String ids);

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

@@ -41,6 +41,11 @@ public class WbsTreeContractServiceImpl
     private final ConstructionLedgerFeignClient constructionLedgerFeign;
     private final WbsTreePrivateMapper wbsTreePrivateMapper;
 
+    @Override
+    public List<WbsTreeContract> queryContractSubmitWbsTreeByContractId(String contractId) {
+        return this.baseMapper.queryContractSubmitWbsTreeByContractId(contractId);
+    }
+
     /**
      * 合同段wbs树保存
      */