Эх сурвалжийг харах

Merge remote-tracking branch 'origin/master' into master

yangyj 2 жил өмнө
parent
commit
e04f45fea0
36 өөрчлөгдсөн 382 нэмэгдсэн , 77 устгасан
  1. 17 0
      blade-common/src/main/java/org/springblade/common/utils/CommonUtil.java
  2. 2 0
      blade-common/src/main/java/org/springblade/common/utils/FileUtils.java
  3. 2 5
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/entity/ProjectCostBudget.java
  4. 39 4
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/AllProjectStatsVO.java
  5. 3 0
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/ContractReturnedInfoVO.java
  6. 13 0
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/ProjectProcessVO.java
  7. 6 0
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java
  8. 2 1
      blade-service/blade-archive/src/main/java/org/springblade/archive/utils/FileUtils.java
  9. 13 5
      blade-service/blade-control/src/main/java/org/springblade/control/controller/AnnualBudgetController.java
  10. 18 4
      blade-service/blade-control/src/main/java/org/springblade/control/controller/ContractInfoController.java
  11. 21 12
      blade-service/blade-control/src/main/java/org/springblade/control/controller/ContractReturnedInfoController.java
  12. 7 3
      blade-service/blade-control/src/main/java/org/springblade/control/controller/DepartmentMonthPlanController.java
  13. 3 3
      blade-service/blade-control/src/main/java/org/springblade/control/controller/DepartmentPlanLogController.java
  14. 2 1
      blade-service/blade-control/src/main/java/org/springblade/control/controller/PlanInformController.java
  15. 10 6
      blade-service/blade-control/src/main/java/org/springblade/control/controller/ProjectCostBudgetController.java
  16. 13 7
      blade-service/blade-control/src/main/java/org/springblade/control/controller/ProjectCostBudgetStatsController.java
  17. 31 5
      blade-service/blade-control/src/main/java/org/springblade/control/controller/ProjectInfoController.java
  18. 20 1
      blade-service/blade-control/src/main/java/org/springblade/control/controller/ProjectProcessController.java
  19. 2 0
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/ContractInfoMapper.java
  20. 8 6
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/ContractInfoMapper.xml
  21. 1 0
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/ContractReturnedInfoMapper.xml
  22. 2 0
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/ProjectCostBudgetMapper.java
  23. 3 0
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/ProjectCostBudgetMapper.xml
  24. 6 0
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/ProjectInfoMapper.java
  25. 20 1
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/ProjectInfoMapper.xml
  26. 2 0
      blade-service/blade-control/src/main/java/org/springblade/control/service/IContractInfoService.java
  27. 2 0
      blade-service/blade-control/src/main/java/org/springblade/control/service/IProjectCostBudgetService.java
  28. 4 0
      blade-service/blade-control/src/main/java/org/springblade/control/service/IProjectInfoService.java
  29. 3 0
      blade-service/blade-control/src/main/java/org/springblade/control/service/IProjectProcessService.java
  30. 8 0
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ContractInfoServiceImpl.java
  31. 4 1
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ContractReturnedInfoServiceImpl.java
  32. 9 2
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ProjectCostBudgetServiceImpl.java
  33. 49 8
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ProjectInfoServiceImpl.java
  34. 8 0
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ProjectProcessServiceImpl.java
  35. 2 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ArchiveTreeContractController.java
  36. 27 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractServiceImpl.java

+ 17 - 0
blade-common/src/main/java/org/springblade/common/utils/CommonUtil.java

@@ -112,6 +112,7 @@ public class CommonUtil {
      */
     public static InputStream getOSSInputStream(String urlStr) throws Exception {
         //获取OSS文件流
+        urlStr = replaceOssUrl(urlStr);
         URL imageUrl = new URL(urlStr);
         try {
             HttpURLConnection conn = (HttpURLConnection) imageUrl.openConnection();
@@ -127,6 +128,7 @@ public class CommonUtil {
      */
     public static InputStream getOSSInputStreamTow(String urlStr) throws Exception {
         //获取OSS文件流
+        urlStr = replaceOssUrl(urlStr);
         URL imageUrl = new URL(urlStr);
         HttpURLConnection conn = null;
         try {
@@ -490,4 +492,19 @@ public class CommonUtil {
         return "";
     }
 
+    public static String replaceOssUrl(String url) {
+        String osName = System.getProperty("os.name");
+        if (osName != null && osName.toLowerCase().contains("linux")) {
+            // 如果当前操作系统是Linux系统
+            Map<String, String> envMap = System.getenv();
+            if (!envMap.containsKey("linuxtesttest")) {
+                // 如果当前环境变量不包含linuxtesttest,则替换URL中的oss路径
+                url = url.replace("oss-cn-hangzhou.aliyuncs.com", "oss-cn-hangzhou-internal.aliyuncs.com");
+            }
+        }
+        //后续删除
+        System.out.println("replaceOssUrl " + url);
+        return url;
+    }
+
 }

+ 2 - 0
blade-common/src/main/java/org/springblade/common/utils/FileUtils.java

@@ -44,6 +44,7 @@ public class FileUtils {
         List<FileSize> reData = new ArrayList<>();
         if (fileList != null) {
             for (String fileUrl : fileList) {
+                fileUrl = CommonUtil.replaceOssUrl(fileUrl);
                 FileSize file = new FileSize();
                 file.setFileUrl(fileUrl);
                 try {
@@ -66,6 +67,7 @@ public class FileUtils {
         if (fileList != null) {
             for (String fileUrl : fileList) {
                 try {
+                    fileUrl = CommonUtil.replaceOssUrl(fileUrl);
                     URLConnection openConnection = new URL(fileUrl).openConnection();
                     count += openConnection.getContentLength();
 

+ 2 - 5
blade-service-api/blade-control-api/src/main/java/org/springblade/control/entity/ProjectCostBudget.java

@@ -35,26 +35,21 @@ public class ProjectCostBudget extends BaseEntity {
     private Long deptId;
 
     @ApiModelProperty(value = "费用类型")
-    @JsonSerialize(nullsUsing = NullSerializer.class)
     private Integer costType;
 
     @ApiModelProperty(value = "项目环节")
-    @JsonSerialize(nullsUsing = NullSerializer.class)
     private Long projectProcess;
 
     @ApiModelProperty(value = "预算类型")
-    @JsonSerialize(nullsUsing = NullSerializer.class)
     private Integer budgetType;
 
     @ApiModelProperty(value = "任务类型")
-    @JsonSerialize(nullsUsing = NullSerializer.class)
     private Integer taskDetail;
 
     @ApiModelProperty(value = "预计天数")
     private BigDecimal budgetDays;
 
     @ApiModelProperty(value = "岗位类型")
-    @JsonSerialize(nullsUsing = NullSerializer.class)
     private Integer postType;
 
     @ApiModelProperty(value = "投入人员数量")
@@ -97,6 +92,7 @@ public class ProjectCostBudget extends BaseEntity {
     private String planTarget;
 
     @ApiModelProperty(value = "任务人")
+    @JsonSerialize(nullsUsing = NullSerializer.class)
     private Long taskUser;
 
     @DateTimeFormat(
@@ -121,6 +117,7 @@ public class ProjectCostBudget extends BaseEntity {
     private BigDecimal planDays;
 
     @ApiModelProperty(value = "关联回款")
+    @JsonSerialize(nullsUsing = NullSerializer.class)
     private Long contractReturnedId;
 
     @ApiModelProperty(value = "父id")

+ 39 - 4
blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/AllProjectStatsVO.java

@@ -3,6 +3,8 @@ package org.springblade.control.vo;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.math.BigDecimal;
+
 /**
  * @Param
  * @Author wangwl
@@ -11,15 +13,48 @@ import lombok.Data;
 @Data
 public class AllProjectStatsVO {
     @ApiModelProperty(value = "总合同额")
-    private String allContractMoney;
+    private BigDecimal allContractMoney;
 
     @ApiModelProperty(value = "总测算成本")
-    private String allProjectCost;
+    private BigDecimal allProjectCost;
 
     @ApiModelProperty(value = "总实际支出")
-    private String allPracticalDisburse;
+    private BigDecimal allPracticalDisburse;
 
     @ApiModelProperty(value = "总回款")
-    private String allReturned;
+    private BigDecimal allReturned;
+
+    @ApiModelProperty(value = "项目名称")
+    private String projectName;
+
+    @ApiModelProperty(value = "合同金额")
+    private BigDecimal contractMoney;
+
+    @ApiModelProperty(value = "预算成本")
+    private BigDecimal budgetCost;
+
+    @ApiModelProperty(value = "实际已支出成本呢")
+    private BigDecimal practicalPayCost;
+
+    @ApiModelProperty(value = "实际已回款")
+    private BigDecimal ReturnedMoney;
+
+    @ApiModelProperty(value = "未回款")
+    private BigDecimal unreturnedMoney;
+
+    @ApiModelProperty(value = "费用分类")
+    private Integer costType;
+
+    @ApiModelProperty(value = "费用分类值")
+    private String costTypeValue;
+
+    @ApiModelProperty(value = "实际费用")
+    private BigDecimal practicalCost;
+
+    @ApiModelProperty(value = "总计")
+    private BigDecimal total;
+
+    @ApiModelProperty(value = "项目id")
+    private Long projectId;
 
 }

+ 3 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/ContractReturnedInfoVO.java

@@ -25,5 +25,8 @@ public class ContractReturnedInfoVO extends ContractReturnedInfo {
     @ApiModelProperty(value = "催款执行人名称")
     private String reminderUserName;
 
+    @ApiModelProperty(value = "是否超时,1没有,2超时")
+    private String isTimeOut;
+
 
 }

+ 13 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/ProjectProcessVO.java

@@ -16,4 +16,17 @@ import org.springblade.control.entity.ProjectProcess;
 public class ProjectProcessVO extends ProjectProcess {
     @ApiModelProperty(value = "进程状态值")
     private String statusValue;
+
+    @ApiModelProperty(value = "是否参与")
+    private String isParticipate;
+
+    @ApiModelProperty(value = "成本支出")
+    private String costIncome;
+
+    @ApiModelProperty(value = "时间成本")
+    private String timeCost;
+
+    @ApiModelProperty(value = "人员投入")
+    private String staffTotal;
+
 }

+ 6 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -1882,6 +1882,12 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 			try{
 				//将项目未锁定案卷拆卷
 				log.info("[自动组卷]{}","开始对未锁定案卷拆卷。projectId:"+projectId+"-contractId:"+contractId+"-nodeId:"+nodeId);
+
+				//todo 有项目上传几百G文件,点组卷会产生大量费用,等改完文件下载走内网再打开此开关。
+//				if (true) {
+//					return;
+//				}
+
 				splitArchvies(projectId,contractId,nodeId);
 				//设置完成度10%
 				contractClient.updateIsArchivesAutoById(contractId,10);

+ 2 - 1
blade-service/blade-archive/src/main/java/org/springblade/archive/utils/FileUtils.java

@@ -457,7 +457,8 @@ public class FileUtils {
                         url = prefix + URLEncoder.encode(suffix, "UTF-8");
                     }
                     long s = System.currentTimeMillis();
-                    PdfReader pdfReader = new PdfReader(url);
+                    String newurl = CommonUtil.replaceOssUrl(url);
+                    PdfReader pdfReader = new PdfReader(newurl);
                     long e = System.currentTimeMillis();
                     log.info("读取pdf耗时:"+(e-s));
                     s = System.currentTimeMillis();

+ 13 - 5
blade-service/blade-control/src/main/java/org/springblade/control/controller/AnnualBudgetController.java

@@ -1,5 +1,6 @@
 package org.springblade.control.controller;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
@@ -9,13 +10,20 @@ import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springblade.control.dto.AnnualBudgetDTO;
 import org.springblade.control.dto.ControlProjectInfoDTO;
+import org.springblade.control.entity.AnnualBudget;
 import org.springblade.control.entity.DepartmentMonthPlan;
 import org.springblade.control.service.IAnnualBudgetService;
 import org.springblade.control.service.IDepartmentMonthPlanService;
+import org.springblade.control.vo.AnnualBudgetVO;
+import org.springblade.control.vo.AnnualBudgetVO2;
+import org.springblade.control.vo.ControlProjectInfoVO;
+import org.springblade.control.vo.DictInfoVO;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
+
 /**
  * @Param
  * @Author wangwl
@@ -45,7 +53,7 @@ public class AnnualBudgetController {
     @GetMapping("/getAnnualBudget")
     @ApiOperationSupport(order = 2)
     @ApiOperation(value = "获取单个年度经营预算")
-    public R getAnnualBudget(Long id) {
+    public R<AnnualBudgetVO> getAnnualBudget(Long id) {
         return R.data(budgetService.getAnnualBudget(id));
     }
 
@@ -82,7 +90,7 @@ public class AnnualBudgetController {
             @ApiImplicitParam(name = "current", value = "当前页", required = true),
             @ApiImplicitParam(name = "size", value = "每页的数量", required = true),
     })
-    public R page(Query query) {
+    public R<IPage<AnnualBudget>> page(Query query) {
         return R.data(budgetService.page(new Page<>(query.getCurrent(), query.getSize())));
     }
 
@@ -92,7 +100,7 @@ public class AnnualBudgetController {
     @GetMapping("/preview")
     @ApiOperationSupport(order = 6)
     @ApiOperation(value = "查询预览")
-    public R preview(Long id) {
+    public R<AnnualBudgetVO2> preview(Long id) {
         return R.data(budgetService.preview(id));
     }
 
@@ -102,7 +110,7 @@ public class AnnualBudgetController {
     @GetMapping("/getProjectList")
     @ApiOperationSupport(order = 5)
     @ApiOperation(value = "获取项目列表")
-    public R getProjectList() {
+    public R<List<ControlProjectInfoVO>> getProjectList() {
         return R.data(budgetService.getProjectList());
     }
 
@@ -112,7 +120,7 @@ public class AnnualBudgetController {
     @GetMapping("/getSecondSubject")
     @ApiOperationSupport(order = 5)
     @ApiOperation(value = "获取二级科目")
-    public R getSecondSubject() {
+    public R<List<DictInfoVO>> getSecondSubject() {
         return R.data(budgetService.getSecondSubject());
     }
 

+ 18 - 4
blade-service/blade-control/src/main/java/org/springblade/control/controller/ContractInfoController.java

@@ -9,6 +9,8 @@ import lombok.AllArgsConstructor;
 import org.springblade.control.dto.ControlContractInfoDTO;
 import org.springblade.control.dto.ControlProjectInfoDTO;
 import org.springblade.control.entity.ControlContractInfo;
+import org.springblade.control.entity.ControlProjectInfo;
+import org.springblade.control.entity.DictInfo;
 import org.springblade.control.service.IContractInfoService;
 import org.springblade.control.service.IProjectInfoService;
 import org.springblade.control.vo.ControlContractInfoVO;
@@ -16,6 +18,8 @@ import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
+
 /**
  * @Param
  * @Author wangwl
@@ -73,7 +77,7 @@ public class ContractInfoController {
     @ApiImplicitParams({
             @ApiImplicitParam(name = "id", value = "合同id", required = true),
     })
-    public R getContractInfoById(Long id) {
+    public R<ControlContractInfoVO> getContractInfoById(Long id) {
         return R.data(contractInfoService.getContractInfoById(id));
     }
 
@@ -83,17 +87,27 @@ public class ContractInfoController {
     @GetMapping("/getPage")
     @ApiOperationSupport(order = 3)
     @ApiOperation(value = "合同列表,分页查询")
-    public R getPage(ControlContractInfoDTO dto,Query query) {
+    public R<List<ControlContractInfoVO>> getPage(ControlContractInfoDTO dto, Query query) {
         return R.data(contractInfoService.getPage(dto,query));
     }
 
+    /**
+     * 合同列表,回款更新
+     */
+    @GetMapping("/getList")
+    @ApiOperationSupport(order = 3)
+    @ApiOperation(value = "合同列表,回款更新")
+    public R<List<ControlContractInfo>> getList() {
+        return R.data(contractInfoService.getList());
+    }
+
     /**
      * 获取合同类型字典
      */
     @GetMapping("/getContractTypeDict")
     @ApiOperationSupport(order = 2)
     @ApiOperation(value = "获取合同类型字典")
-    public R getContractTypeDict() {
+    public R<List<DictInfo>> getContractTypeDict() {
         return R.data(contractInfoService.getContractTypeDict());
     }
 
@@ -103,7 +117,7 @@ public class ContractInfoController {
     @GetMapping("getNoConnectionProject")
     @ApiOperationSupport(order = 2)
     @ApiOperation(value = "获取未被关联的项目")
-    public R getNoConnectionProject(Integer type){
+    public R<List<ControlProjectInfo>> getNoConnectionProject(Integer type){
         return R.data(contractInfoService.getNoConnectionProject(type));
     }
 

+ 21 - 12
blade-service/blade-control/src/main/java/org/springblade/control/controller/ContractReturnedInfoController.java

@@ -2,13 +2,17 @@ package org.springblade.control.controller;
 
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springblade.control.dto.ContractReturnedInfoDTO;
+import org.springblade.control.dto.ControlContractInfoDTO;
 import org.springblade.control.entity.ContractReturnedInfo;
 import org.springblade.control.entity.ControlContractInfo;
 import org.springblade.control.service.IContractInfoService;
 import org.springblade.control.service.IContractReturnedInfoService;
+import org.springblade.control.vo.ContractReturnedInfoVO;
 import org.springblade.core.tool.api.R;
 import org.springframework.web.bind.annotation.*;
 
@@ -27,16 +31,21 @@ public class ContractReturnedInfoController {
 
     private final IContractReturnedInfoService contractReturnedInfoService;
 
-//    /**
-//     * 批量新增或修改回款信息
-//     */
-//    @PostMapping("/saveOrUpdateBatchReturned")
-//    @ApiOperationSupport(order = 1)
-//    @ApiOperation(value = "批量新增或修改回款信息")
-//    public R saveOrUpdateBatchReturned(@RequestBody ContractReturnedInfoDTO dto) {
-//        contractReturnedInfoService.saveOrUpdateBatchReturned(dto);
-//        return R.success("保存成功");
-//    }
+    /**
+     * 批量新增或修改回款信息
+     */
+    @PostMapping("/saveOrUpdateBatchReturned")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation(value = "批量新增或修改回款信息")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "合同id", required = true),
+            @ApiImplicitParam(name = "projectId", value = "项目id", required = true),
+            @ApiImplicitParam(name = "list", value = "合同回款集合", required = false),
+    })
+    public R saveOrUpdateBatchReturned(@RequestBody ControlContractInfoDTO dto) {
+        contractReturnedInfoService.saveOrUpdateBatchReturned(dto);
+        return R.success("保存成功");
+    }
 
     /**
      * 根据合同ID获取合同回款列表
@@ -44,7 +53,7 @@ public class ContractReturnedInfoController {
     @GetMapping("/getListByContractId")
     @ApiOperationSupport(order = 2)
     @ApiOperation(value = "根据合同ID获取合同回款列表")
-    public R getListByContractId(Long contractId){
+    public R<List<ContractReturnedInfoVO>> getListByContractId(Long contractId){
         return R.data(contractReturnedInfoService.getListByContractId(contractId));
     }
 
@@ -54,7 +63,7 @@ public class ContractReturnedInfoController {
     @GetMapping("/getListByProjectId")
     @ApiOperationSupport(order = 2)
     @ApiOperation(value = "根据项目ID获取合同回款列表")
-    public R getListByProjectId(Long projectId){
+    public R<List<ContractReturnedInfoVO>> getListByProjectId(Long projectId){
         return R.data(contractReturnedInfoService.getListByProjectId(projectId));
     }
 }

+ 7 - 3
blade-service/blade-control/src/main/java/org/springblade/control/controller/DepartmentMonthPlanController.java

@@ -11,10 +11,14 @@ import org.springblade.control.dto.ProjectCostBudgetDTO;
 import org.springblade.control.entity.DepartmentMonthPlan;
 import org.springblade.control.entity.ProjectReimbursement;
 import org.springblade.control.service.IDepartmentMonthPlanService;
+import org.springblade.control.vo.DepartmentMonthPlanVO;
+import org.springblade.control.vo.ProjectCostBudgetVO;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
+
 /**
  * @Param
  * @Author wangwl
@@ -35,7 +39,7 @@ public class DepartmentMonthPlanController {
     @GetMapping("/getPage")
     @ApiOperationSupport(order = 3)
     @ApiOperation(value = "部门月计划分页")
-    public R getPage(ControlContractInfoDTO dto, Query query) {
+    public R<List<DepartmentMonthPlanVO>> getPage(ControlContractInfoDTO dto, Query query) {
         return R.data(planService.getPage(dto,query));
     }
 
@@ -45,7 +49,7 @@ public class DepartmentMonthPlanController {
     @PostMapping("/addDepartmentPlan")
     @ApiOperationSupport(order = 2)
     @ApiOperation(value = "新增部门月计划")
-    public R addDepartmentPlan(@RequestBody DepartmentMonthPlan plan) {
+    public R<List<ProjectCostBudgetVO>> addDepartmentPlan(@RequestBody DepartmentMonthPlan plan) {
         return R.data(planService.addDepartmentPlan(plan));
     }
 
@@ -59,7 +63,7 @@ public class DepartmentMonthPlanController {
             @ApiImplicitParam(name = "departmentType", value = "部门名称", required = true),
             @ApiImplicitParam(name = "planDate", value = "计划日期", required = true),
     })
-    public R getDepartmentPlan(@RequestBody DepartmentMonthPlan plan) {
+    public R<List<ProjectCostBudgetVO>> getDepartmentPlan(@RequestBody DepartmentMonthPlan plan) {
         return R.data(planService.getDepartmentPlan(plan));
     }
 

+ 3 - 3
blade-service/blade-control/src/main/java/org/springblade/control/controller/DepartmentPlanLogController.java

@@ -49,7 +49,7 @@ public class DepartmentPlanLogController {
     @ApiImplicitParams({
             @ApiImplicitParam(name = "id", value = "计划的id", required = true),
     })
-    public R getPlanInPause(Long id) {
+    public R<DepartmentPlanLog> getPlanInPause(Long id) {
         return R.data(logService.getPlanInPause(id));
     }
 
@@ -74,7 +74,7 @@ public class DepartmentPlanLogController {
     @ApiImplicitParams({
             @ApiImplicitParam(name = "id", value = "计划的id", required = true),
     })
-    public R getPlanInOpen(Long id) {
+    public R<DepartmentPlanLog> getPlanInOpen(Long id) {
         return R.data(logService.getPlanInOpen(id));
     }
 
@@ -95,7 +95,7 @@ public class DepartmentPlanLogController {
     @PostMapping("/updateOpenTime")
     @ApiOperationSupport(order = 2)
     @ApiOperation(value = "修改开启计划时间")
-    public R updateOpenTime(@RequestBody DepartmentPlanLog log) {
+    public R<DepartmentPlanLog> updateOpenTime(@RequestBody DepartmentPlanLog log) {
         return R.data(logService.updateOpenTime(log));
     }
 

+ 2 - 1
blade-service/blade-control/src/main/java/org/springblade/control/controller/PlanInformController.java

@@ -9,6 +9,7 @@ import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springblade.control.dto.AnnualBudgetDTO;
 import org.springblade.control.dto.LogHistoryInfoDTO;
+import org.springblade.control.entity.PlanInform;
 import org.springblade.control.service.IAnnualBudgetService;
 import org.springblade.control.service.IPlanInformService;
 import org.springblade.control.vo.LogHistoryInfoVO;
@@ -39,7 +40,7 @@ public class PlanInformController {
     @GetMapping("/getUserInform")
     @ApiOperationSupport(order = 1)
     @ApiOperation(value = "获取用户计划通知", notes = "获取用户计划通知")
-    public R getUserInform() {
+    public R<List<PlanInform>> getUserInform() {
         return R.data(informService.getUserInform());
     }
 }

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

@@ -10,13 +10,17 @@ import org.springblade.control.dto.ControlProjectInfoDTO;
 import org.springblade.control.dto.ProjectCostBudgetDTO;
 import org.springblade.control.entity.ProjectCostBudget;
 import org.springblade.control.service.IProjectCostBudgetService;
+import org.springblade.control.vo.ControlProjectInfoVO;
 import org.springblade.control.vo.ProjectCostBudgetVO;
+import org.springblade.control.vo.ProjectCostBudgetVO3;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springframework.format.annotation.DateTimeFormat;
 import org.springframework.web.bind.annotation.*;
 
 import java.time.LocalDate;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @Param
@@ -40,7 +44,7 @@ public class ProjectCostBudgetController {
     @ApiImplicitParams({
             @ApiImplicitParam(name = "queryValue", value = "搜索值", required = false),
     })
-    public R page(ControlProjectInfoDTO dto, Query query){
+    public R<ControlProjectInfoVO> page(ControlProjectInfoDTO dto, Query query){
         return R.data(budgetService.page(dto,query));
     }
 
@@ -53,7 +57,7 @@ public class ProjectCostBudgetController {
     @ApiImplicitParams({
             @ApiImplicitParam(name = "id", value = "项目id", required = true),
     })
-    public R getPlanByProjectId(Long id){
+    public R<ProjectCostBudgetVO> getPlanByProjectId(Long id){
         return R.data(budgetService.getPlanByProjectId(id));
     }
 
@@ -106,7 +110,7 @@ public class ProjectCostBudgetController {
     @GetMapping("/planOverview")
     @ApiOperationSupport(order = 7)
     @ApiOperation(value = "门户普通权限总计划统计")
-    public R planOverview(){
+    public R<ProjectCostBudgetVO3> planOverview(){
         return R.data(budgetService.planOverview());
     }
 
@@ -116,7 +120,7 @@ public class ProjectCostBudgetController {
     @GetMapping("/postponePlan")
     @ApiOperationSupport(order = 8)
     @ApiOperation(value = "门户普通权限预警")
-    public R postponePlan(){
+    public R<List<ProjectCostBudgetVO3>> postponePlan(){
         return R.data(budgetService.postponePlan());
     }
 
@@ -126,7 +130,7 @@ public class ProjectCostBudgetController {
     @GetMapping("/MonthPlanOverview")
     @ApiOperationSupport(order = 9)
     @ApiOperation(value = "门户普通权限单月计划统计")
-    public R MonthPlanOverview(String planDate){
+    public R<ProjectCostBudgetVO3> MonthPlanOverview(String planDate){
         return R.data(budgetService.MonthPlanOverview(planDate));
     }
 
@@ -136,7 +140,7 @@ public class ProjectCostBudgetController {
     @GetMapping("/MonthOfYearPlanOverview")
     @ApiOperationSupport(order = 10)
     @ApiOperation(value = "门户普通权限计划统计图")
-    public R MonthOfYearPlanOverview(){
+    public R<List<Map<String,List<Integer>>>> MonthOfYearPlanOverview(){
         return R.data(budgetService.MonthOfYearPlanOverview());
     }
 

+ 13 - 7
blade-service/blade-control/src/main/java/org/springblade/control/controller/ProjectCostBudgetStatsController.java

@@ -8,13 +8,19 @@ import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springblade.control.dto.ProjectCostBudgetDTO;
 import org.springblade.control.dto.ProjectCostBudgetStatsDTO;
+import org.springblade.control.entity.ControlProjectInfo;
+import org.springblade.control.entity.DictInfo;
 import org.springblade.control.entity.ProjectCostBudget;
+import org.springblade.control.entity.ProjectProcess;
 import org.springblade.control.service.IProjectCostBudgetService;
 import org.springblade.control.service.IProjectCostBudgetStatsService;
+import org.springblade.control.vo.ProjectCostBudgetStatsVO;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
+
 /**
  * @Param
  * @Author wangwl
@@ -51,7 +57,7 @@ public class ProjectCostBudgetStatsController {
     @ApiImplicitParams({
             @ApiImplicitParam(name = "id", value = "成本预算统计id", required = true),
     })
-    public R getBudgetStatsById(Long id) {
+    public R<ProjectCostBudgetStatsVO> getBudgetStatsById(Long id) {
         return R.data(budgetStatsService.getBudgetStatsById(id));
     }
 
@@ -78,7 +84,7 @@ public class ProjectCostBudgetStatsController {
     @ApiImplicitParams({
             @ApiImplicitParam(name = "queryValue", value = "搜索值", required = false),
     })
-    public R page(String queryValue, Query query){
+    public R<List<ProjectCostBudgetStatsVO>> page(String queryValue, Query query){
         return R.data(budgetStatsService.page(queryValue,query));
     }
 
@@ -93,7 +99,7 @@ public class ProjectCostBudgetStatsController {
             @ApiImplicitParam(name = "costType", value = "费用类型", required = false),
             @ApiImplicitParam(name = "unitType", value = "单位类型1施工2监理3建设", required = false),
     })
-    public R budgetList(ProjectCostBudget costBudget) {
+    public R<ProjectCostBudgetStatsVO> budgetList(ProjectCostBudget costBudget) {
         return R.data(budgetStatsService.budgetList(costBudget));
     }
 
@@ -103,7 +109,7 @@ public class ProjectCostBudgetStatsController {
     @GetMapping("/getProjectList")
     @ApiOperationSupport(order = 1)
     @ApiOperation(value = "获取未做预算的项目列表")
-    public R getProjectList(Integer type) {
+    public R<List<ControlProjectInfo>> getProjectList(Integer type) {
         return R.data(budgetStatsService.getProjectList(type));
     }
 
@@ -113,7 +119,7 @@ public class ProjectCostBudgetStatsController {
     @GetMapping("/getCostTypeDict")
     @ApiOperationSupport(order = 1)
     @ApiOperation(value = "获取费用分类")
-    public R getCostTypeDict() {
+    public R<List<DictInfo>> getCostTypeDict() {
         return R.data(budgetStatsService.getCostTypeDict());
     }
 
@@ -123,7 +129,7 @@ public class ProjectCostBudgetStatsController {
     @GetMapping("/getProcessList")
     @ApiOperationSupport(order = 1)
     @ApiOperation(value = "获取项目环节")
-    public R getProcessList(Long projectId) {
+    public R<List<ProjectProcess>> getProcessList(Long projectId) {
         return R.data(budgetStatsService.getProcessList(projectId));
     }
 
@@ -133,7 +139,7 @@ public class ProjectCostBudgetStatsController {
     @GetMapping("/getPostDict")
     @ApiOperationSupport(order = 1)
     @ApiOperation(value = "获取岗位字典")
-    public R getPostDict() {
+    public R<List<DictInfo>> getPostDict() {
         return R.data(budgetStatsService.getPostDict());
     }
 

+ 31 - 5
blade-service/blade-control/src/main/java/org/springblade/control/controller/ProjectInfoController.java

@@ -1,5 +1,6 @@
 package org.springblade.control.controller;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
@@ -9,11 +10,16 @@ import lombok.AllArgsConstructor;
 import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.control.dto.ControlProjectInfoDTO;
 import org.springblade.control.entity.ControlProjectInfo;
+import org.springblade.control.entity.DictInfo;
 import org.springblade.control.service.IProjectInfoService;
+import org.springblade.control.vo.AllProjectStatsVO;
+import org.springblade.control.vo.ControlProjectInfoVO;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
+
 /**
  * @Param
  * @Author wangwl
@@ -36,7 +42,7 @@ public class ProjectInfoController {
             @ApiImplicitParam(name = "current", value = "当前页", required = true),
             @ApiImplicitParam(name = "size", value = "每页的数量", required = true),
     })
-    public R page(ControlProjectInfoDTO dto, Query query) {
+    public R<IPage<ControlProjectInfoVO>> page(ControlProjectInfoDTO dto, Query query) {
         return R.data(projectInfoService.page(dto, query));
     }
 
@@ -85,7 +91,7 @@ public class ProjectInfoController {
     @ApiImplicitParams({
             @ApiImplicitParam(name = "id", value = "项目id", required = true),
     })
-    public R getProjectInfoById(Long id) {
+    public R<ControlProjectInfoVO> getProjectInfoById(Long id) {
         return R.data(projectInfoService.getProjectInfoById(id));
     }
 
@@ -95,7 +101,7 @@ public class ProjectInfoController {
     @GetMapping("/getProjectTypeDict")
     @ApiOperationSupport(order = 2)
     @ApiOperation(value = "获取项目类型字典")
-    public R getProjectTypeDict() {
+    public R<List<DictInfo>> getProjectTypeDict() {
         return R.data(projectInfoService.getProjectTypeDict());
     }
 
@@ -105,7 +111,7 @@ public class ProjectInfoController {
     @GetMapping("/getProjectServerTypeDict")
     @ApiOperationSupport(order = 2)
     @ApiOperation(value = "获取项目服务类型字典")
-    public R getProjectServerTypeDict() {
+    public R<List<DictInfo>> getProjectServerTypeDict() {
         return R.data(projectInfoService.getProjectServerTypeDict());
     }
 
@@ -115,8 +121,28 @@ public class ProjectInfoController {
     @GetMapping("/allProjectStats")
     @ApiOperationSupport(order = 2)
     @ApiOperation(value = "项目统计总金额成本")
-    public R allProjectStats() {
+    public R<AllProjectStatsVO> allProjectStats() {
         return R.data(projectInfoService.allProjectStats());
     }
 
+    /**
+     * 项目统计列表统计
+     */
+    @GetMapping("/ProjectListStats")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "项目统计列表统计")
+    public R<List<AllProjectStatsVO>> ProjectListStats() {
+        return R.data(projectInfoService.ProjectListStats());
+    }
+
+    /**
+     * 项目统计费用分类
+     */
+    @GetMapping("/ProjectCostTypeStats")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "项目统计费用分类")
+    public R<List<AllProjectStatsVO>> ProjectCostTypeStats(Long id) {
+        return R.data(projectInfoService.ProjectCostTypeStats(id));
+    }
+
 }

+ 20 - 1
blade-service/blade-control/src/main/java/org/springblade/control/controller/ProjectProcessController.java

@@ -4,14 +4,19 @@ package org.springblade.control.controller;
 import cn.hutool.core.util.ReUtil;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springblade.control.service.IProjectProcessService;
+import org.springblade.control.vo.ProjectProcessVO;
 import org.springblade.core.tool.api.R;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
+
 /**
  * @Param
  * @Author wangwl
@@ -27,7 +32,21 @@ public class ProjectProcessController {
     @GetMapping("/getBaseProcess")
     @ApiOperationSupport(order = 2)
     @ApiOperation(value = "新增项目获取项目流程")
-    public R getBaseProcess() {
+    public R<List<ProjectProcessVO>> getBaseProcess() {
         return R.data(processService.getBaseProcess());
     }
+
+    /**
+     * 项目统计-环节费用
+     */
+    @GetMapping("/projectLinkCost")
+    @ApiOperationSupport(order = 10)
+    @ApiOperation(value = "项目统计-环节费用")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "projectId", value = "项目id", required = true),
+            @ApiImplicitParam(name = "costType", value = "费用分类", required = true),
+    })
+    public R<List<ProjectProcessVO>> projectLinkCost(Long projectId,Integer costType) {
+        return R.data(processService.processService(projectId, costType));
+    }
 }

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

@@ -30,4 +30,6 @@ public interface ContractInfoMapper extends BaseMapper<ControlContractInfo> {
     List<ControlContractInfoVO> getPage(IPage page,@Param("dto") ControlContractInfoDTO dto);
 
     List<ControlProjectInfo> getNoConnectionProject2();
+
+    List<ControlContractInfo> getList();
 }

+ 8 - 6
blade-service/blade-control/src/main/java/org/springblade/control/mapper/ContractInfoMapper.xml

@@ -19,14 +19,16 @@
         FROM c_control_contract_info ci WHERE ci.id = #{id}
     </select>
     <select id="getPage" resultType="org.springblade.control.vo.ControlContractInfoVO">
-        SELECT
-            ci.*,
-            (select dict_name  from c_dict_info WHERE code = 'contract_type' AND dict_value= ci.contract_type) as contractTypeValue,
-            IFNULL((select SUM(practical_returned_money) from c_contract_returned_info WHERE contract_id = ci.id),0)  as returnedMoney,
-            (ci.contract_money - IFNULL((select SUM(practical_returned_money) from c_contract_returned_info WHERE contract_id = ci.id),0)) as unreturnedMoney
-        FROM c_control_contract_info ci
+        select ci.* , ( select dict_name from c_dict_info where code = 'contract_type' and dict_value = ci.contract_type ) as contractTypeValue,
+        IFNULL(( select sum(practical_returned_money) from c_contract_returned_info where contract_id = ci.id ), 0) as returnedMoney ,
+        (IFNULL(( select sum(cri.should_returned_money) from c_contract_returned_info cri where cri.should_returned_time &lt; NOW()  and cri.contract_id = ci.id and cri.is_deleted=0), 0) -
+        IFNULL(( select sum(cri.practical_returned_money) from c_contract_returned_info cri where cri.contract_id = ci.id and cri.is_deleted=0), 0)) as unreturnedMoney
+        from c_control_contract_info ci where ci.is_deleted = 0
     </select>
     <select id="getNoConnectionProject2" resultType="org.springblade.control.entity.ControlProjectInfo">
         select pi.id,pi.name from c_control_project_info pi WHERE pi.is_deleted = 0
     </select>
+    <select id="getList" resultType="org.springblade.control.entity.ControlContractInfo">
+        select * from c_control_contract_info WHERE is_deleted = 0
+    </select>
 </mapper>

+ 1 - 0
blade-service/blade-control/src/main/java/org/springblade/control/mapper/ContractReturnedInfoMapper.xml

@@ -10,6 +10,7 @@
     <select id="getListByContractId" resultType="org.springblade.control.vo.ContractReturnedInfoVO">
         select
             ri.*,
+        (IF(ri.practical_returned_time is null,IF (ri.should_returned_time &lt; NOW(),2,1),1)) as 'isTimeOut',
             (select name from blade_user WHERE id = ri.reminder_user) as reminderUserName
         from c_contract_returned_info ri where ri.contract_id = #{contractId}
     </select>

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

@@ -49,4 +49,6 @@ public interface ProjectCostBudgetMapper extends BaseMapper<ProjectCostBudget> {
     List<ProjectCostBudget> MonthOfYearPlanOverview(@Param("user") Long user,@Param("year") int year);
 
     Integer getPostMoney(@Param("type") Integer postType);
+
+    List<ProjectCostBudget> getAllBudgetByProjectId(@Param("id") Long id);
 }

+ 3 - 0
blade-service/blade-control/src/main/java/org/springblade/control/mapper/ProjectCostBudgetMapper.xml

@@ -118,6 +118,9 @@
         select dict_value
         from c_dict_info where `type` = 3 and code = #{type}
     </select>
+    <select id="getAllBudgetByProjectId" resultType="org.springblade.control.entity.ProjectCostBudget">
+        select * from c_project_cost_budget pcb WHERE  pcb.is_deleted =0 and pcb.project_id = #{id} and pcb.parent_id = 0
+    </select>
 
 
 </mapper>

+ 6 - 0
blade-service/blade-control/src/main/java/org/springblade/control/mapper/ProjectInfoMapper.java

@@ -29,4 +29,10 @@ public interface ProjectInfoMapper extends BaseMapper<ControlProjectInfo> {
     Long selectProjectCount();
 
     AllProjectStatsVO allProjectStats();
+
+    List<AllProjectStatsVO> ProjectListStats();
+
+    List<DictInfo> getCostTypeDict();
+
+    ControlProjectInfo getById(@Param("id") Long id);
 }

+ 20 - 1
blade-service/blade-control/src/main/java/org/springblade/control/mapper/ProjectInfoMapper.xml

@@ -54,7 +54,26 @@
         select count(1) from c_control_project_info
     </select>
     <select id="allProjectStats" resultType="org.springblade.control.vo.AllProjectStatsVO">
-
+        select
+            (select sum(cci.contract_money)  from c_control_contract_info cci WHERE cci.is_deleted = 0) as allContractMoney,
+            (select SUM(cbs.project_cost_total)  from c_project_cost_budget_stats cbs WHERE cbs.is_deleted = 0) as allProjectCost,
+            (select SUM(cri.practical_returned_money)  from c_contract_returned_info cri WHERE cri.is_deleted = 0) as allReturned
+    </select>
+    <select id="ProjectListStats" resultType="org.springblade.control.vo.AllProjectStatsVO">
+        select
+            cpi.name as 'projectName',
+            cci.contract_money  as 'contractMoney',
+                (select cbs.project_cost_total from c_project_cost_budget_stats cbs WHERE cpi.id = cbs.project_id  and cbs.is_deleted = 0) as 'budgetCost',
+                (select SUM(cri.practical_returned_money)  from c_contract_returned_info cri WHERE cpi.id = cri.project_id and cri.is_deleted = 0) as 'ReturnedMoney',
+                (cci.contract_money - IFNULL((select SUM(cri.practical_returned_money) from c_contract_returned_info cri WHERE cri.contract_id = cci.id and cri.is_deleted = 0),0)) as 'unreturnedMoney'
+        from c_control_project_info cpi left join c_control_contract_info cci on cpi.id = cci.project_id and cci.is_deleted = 0
+        WHERE cpi.is_deleted = 0
+    </select>
+    <select id="getCostTypeDict" resultType="org.springblade.control.entity.DictInfo">
+        select * from c_dict_info WHERE code = 'cost_type' order by sort
+    </select>
+    <select id="getById" resultType="org.springblade.control.entity.ControlProjectInfo">
+        select * from c_control_project_info where id = #{id}
     </select>
 
 

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

@@ -35,4 +35,6 @@ public interface IContractInfoService extends BaseService<ControlContractInfo> {
     ControlContractInfoVO getContractInfoById(Long id);
 
     List<ControlContractInfoVO> getPage(ControlContractInfoDTO dto,Query query);
+
+    List<ControlContractInfo> getList();
 }

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

@@ -52,4 +52,6 @@ public interface IProjectCostBudgetService extends BaseService<ProjectCostBudget
     List<ProjectCostBudgetVO3> postponePlan();
 
     List<Map<String,List<Integer>>> MonthOfYearPlanOverview();
+
+    List<ProjectCostBudget> getAllBudgetByProjectId(Long id);
 }

+ 4 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/IProjectInfoService.java

@@ -33,4 +33,8 @@ public interface IProjectInfoService extends BaseService<ControlProjectInfo> {
     List<DictInfo> getProjectServerTypeDict();
 
     AllProjectStatsVO allProjectStats();
+
+    List<AllProjectStatsVO> ProjectListStats();
+
+    List<AllProjectStatsVO> ProjectCostTypeStats(Long id);
 }

+ 3 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/IProjectProcessService.java

@@ -22,4 +22,7 @@ public interface IProjectProcessService extends BaseService<ProjectProcess> {
     List<ProjectProcessVO> getBaseProcess();
 
     List<ProjectProcessVO> getProjectProcess(Long id);
+
+    List<ProjectProcessVO> processService(Long projectId, Integer costType);
+
 }

+ 8 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ContractInfoServiceImpl.java

@@ -124,4 +124,12 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
         IPage<ControlContractInfoVO> page = new Page<>(query.getCurrent(),query.getSize());
         return baseMapper.getPage(page,dto);
     }
+
+    /**
+     * 合同列表,回款更新
+     */
+    @Override
+    public List<ControlContractInfo> getList() {
+        return baseMapper.getList();
+    }
 }

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

@@ -42,7 +42,10 @@ public class ContractReturnedInfoServiceImpl extends BaseServiceImpl<ContractRet
         baseMapper.deleteOldInfo(dto.getId());
         List<ContractReturnedInfo> list = dto.getList();
         if (list != null && list.size() >0) {
-            list.stream().forEach(l->l.setProjectId(dto.getProjectId()));
+            for (ContractReturnedInfo info : list) {
+                info.setProjectId(dto.getProjectId());
+                info.setContractId(dto.getId());
+            }
             this.saveOrUpdateBatch(list);
         }
     }

+ 9 - 2
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ProjectCostBudgetServiceImpl.java

@@ -43,7 +43,9 @@ import java.util.stream.Collectors;
 @AllArgsConstructor
 public class ProjectCostBudgetServiceImpl extends BaseServiceImpl<ProjectCostBudgetMapper, ProjectCostBudget> implements IProjectCostBudgetService {
 
-    private final IProjectInfoService projectInfoService;
+//    private final IProjectInfoService projectInfoService;
+
+    private final ProjectInfoMapper infoMapper;
 
     private final ProjectCostBudgetMapper budgetMapper;
     /**
@@ -133,7 +135,7 @@ public class ProjectCostBudgetServiceImpl extends BaseServiceImpl<ProjectCostBud
     @Override
     public ProjectCostBudgetVO getPlanByProjectId(Long id) {
         //获取项目信息
-        ControlProjectInfo projectInfo = projectInfoService.getById(id);
+        ControlProjectInfo projectInfo = infoMapper.getById(id);
         ProjectCostBudgetVO vo = new ProjectCostBudgetVO();
         vo.setProjectName(projectInfo.getName());
         vo.setProjectId(id);
@@ -378,6 +380,11 @@ public class ProjectCostBudgetServiceImpl extends BaseServiceImpl<ProjectCostBud
         }
     }
 
+    @Override
+    public List<ProjectCostBudget> getAllBudgetByProjectId(Long id) {
+        return baseMapper.getAllBudgetByProjectId(id);
+    }
+
     /**
      * 统计一行的几个总金额
      */

+ 49 - 8
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ProjectInfoServiceImpl.java

@@ -6,15 +6,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.AllArgsConstructor;
 import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.control.dto.ControlProjectInfoDTO;
-import org.springblade.control.entity.ControlContractInfo;
-import org.springblade.control.entity.ControlProjectInfo;
-import org.springblade.control.entity.DictInfo;
-import org.springblade.control.entity.ProjectCostBudgetStats;
+import org.springblade.control.entity.*;
 import org.springblade.control.mapper.ProjectInfoMapper;
-import org.springblade.control.service.IContractInfoService;
-import org.springblade.control.service.IProjectCostBudgetStatsService;
-import org.springblade.control.service.IProjectInfoService;
-import org.springblade.control.service.IProjectProcessService;
+import org.springblade.control.service.*;
 import org.springblade.control.vo.AllProjectStatsVO;
 import org.springblade.control.vo.ControlProjectInfoVO;
 import org.springblade.core.log.exception.ServiceException;
@@ -22,10 +16,16 @@ import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.mp.support.Query;
 import org.springblade.system.entity.DictBiz;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @Param
@@ -38,6 +38,7 @@ public class ProjectInfoServiceImpl extends BaseServiceImpl<ProjectInfoMapper, C
     private final ProjectInfoMapper infoMapper;
     private final IProjectProcessService processService;
     private final IContractInfoService contractInfoService;
+    private final IProjectCostBudgetService budgetService;
 
     /**
      * 自定义分页
@@ -145,5 +146,45 @@ public class ProjectInfoServiceImpl extends BaseServiceImpl<ProjectInfoMapper, C
         return baseMapper.allProjectStats();
     }
 
+    /**
+     * 项目统计列表统计
+     */
+    @Override
+    public List<AllProjectStatsVO> ProjectListStats() {
+        return baseMapper.ProjectListStats();
+    }
+
+    /**
+     * 项目统计费用分类
+     */
+    @Override
+    public List<AllProjectStatsVO> ProjectCostTypeStats(Long id) {
+        List<AllProjectStatsVO> list = new ArrayList<>();
+        //获取费用字典
+        List<DictInfo> costTypeDict = baseMapper.getCostTypeDict();
+        //获取项目所有预算
+        List<ProjectCostBudget> budgets = budgetService.getAllBudgetByProjectId(id);
+        if (budgets != null && budgets.size() > 0){
+            Map<Integer, List<ProjectCostBudget>> budgetMap = budgets.parallelStream()
+                    .collect(Collectors.groupingBy(ProjectCostBudget::getCostType));
+            for (int i = 1; i <= 6; i++) {
+                AllProjectStatsVO vo = new AllProjectStatsVO();
+                vo.setCostType(i);
+                vo.setCostTypeValue(costTypeDict.get(i-1).getDictName());
+                List<ProjectCostBudget> costBudgets = budgetMap.get(i-1);
+                BigDecimal bigDecimal = new BigDecimal(0);
+                if (costBudgets != null && costBudgets.size() > 0){
+                    for (ProjectCostBudget budget : costBudgets) {
+                        bigDecimal = bigDecimal.add(budget.getBudgetCountMoney());
+                    }
+                }
+                vo.setBudgetCost(bigDecimal);
+                list.add(vo);
+            }
+            return list;
+        }
+        return null;
+    }
+
 
 }

+ 8 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ProjectProcessServiceImpl.java

@@ -103,4 +103,12 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessMap
         });
         return list;
     }
+
+    /**
+     * 项目统计-环节费用
+     */
+    @Override
+    public List<ProjectProcessVO> processService(Long projectId, Integer costType) {
+        return null;
+    }
 }

+ 2 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ArchiveTreeContractController.java

@@ -166,13 +166,13 @@ public class ArchiveTreeContractController extends BladeController {
             ar.setArchiveNameSuffix(archiveTreeContract.getArchiveNameSuffix());
         }
 
-        if(ar.getArchiveAutoType()!=null && ar.getArchiveAutoType()!=2){
+        if(ar.getArchiveAutoType()==null || ar.getArchiveAutoType()!=2){
             ar.setArchiveAutoType(archiveTreeContract.getArchiveAutoType());
         }
 
         boolean b = archiveTreeContractService.updateById(ar);
         //更新下级节点为同一规则
-        if(ar.getArchiveAutoType()!=null && ar.getArchiveAutoType()!=2){
+        if(ar.getArchiveAutoType()==null || ar.getArchiveAutoType()!=2){
             archiveTreeContractService.updateAllSonNodeIdsForArchiveAutoRule(ar);
         }
 

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

@@ -72,6 +72,8 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 	private final ArchiveTreeContractSyncImpl archiveTreeContractSync;
 
 
+
+
 	@Override
 	public IPage<ArchiveTreeContractVO> selectArchiveTreeContractPage(IPage<ArchiveTreeContractVO> page, ArchiveTreeContractVO archiveTreeContract) {
 		return page.setRecords(baseMapper.selectArchiveTreeContractPage(page, archiveTreeContract));
@@ -1009,4 +1011,29 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 	}
 
 
+	public Integer writeBusinessData(Long wbsId, Long contractId) {
+		// 这里省略了具体实现,可根据业务需求编写相应的逻辑
+
+		List<ArchiveTreeContract> associatedNodes = getWbsAssociatedNodes(contractId.toString());
+		if (associatedNodes == null || associatedNodes.size() == 0) {
+			return 1;
+		}
+
+		for (ArchiveTreeContract associatedNode:associatedNodes) {
+
+
+
+		}
+
+
+		try {
+			// 写入成功,返回0
+			return 0;
+		} catch (Exception e) {
+			// 写入失败,返回1
+			return 1;
+		}
+	}
+
+
 }