Parcourir la source

项目成本查询不再拼接预算

lw il y a 1 an
Parent
commit
fefc4f6a5f
15 fichiers modifiés avec 718 ajouts et 562 suppressions
  1. 9 13
      module_kzks/src/main/java/org/jeecg/modules/Index/controller/IndexController.java
  2. 2 1
      module_kzks/src/main/java/org/jeecg/modules/Index/service/IndexService.java
  3. 6 2
      module_kzks/src/main/java/org/jeecg/modules/Index/service/impl/IndexServiceImpl.java
  4. 3 3
      module_kzks/src/main/java/org/jeecg/modules/projectCost/entity/ProjectCostSumVo.java
  5. 23 144
      module_kzks/src/main/java/org/jeecg/modules/projectCostHuiji/controller/ProjectCostHuijiController.java
  6. 650 0
      module_kzks/src/main/java/org/jeecg/modules/projectCostHuiji/controller/ProjectCostHuijiControllerBak.java
  7. 1 1
      module_kzks/src/main/java/org/jeecg/modules/projectCostHuiji/convert/ProjectCostHuijiCustomConvert.java
  8. 4 4
      module_kzks/src/main/java/org/jeecg/modules/projectCostHuiji/convert/impl/ProjectCostHuijiConverCustomImpl.java
  9. 11 0
      module_kzks/src/main/java/org/jeecg/modules/projectCostHuiji/entity/ProjectCostHuiji.java
  10. 0 20
      module_kzks/src/main/java/org/jeecg/modules/projectCostHuiji/entity/ProjectCostHuijiVo.java
  11. 5 5
      module_kzks/src/main/java/org/jeecg/modules/projectCostHuiji/mapper/xml/ProjectCostHuijiMapper.xml
  12. 2 2
      module_kzks/src/main/java/org/jeecg/modules/projectCostHuiji/vo/ProjectCostHuijiSumVO.java
  13. 0 10
      module_kzks/src/main/java/org/jeecg/modules/projectPushList/controller/ProjectPushListController.java
  14. 0 4
      module_kzks/src/main/java/org/jeecg/modules/projectPushList/service/IProjectPushListService.java
  15. 2 353
      module_kzks/src/main/java/org/jeecg/modules/projectPushList/service/impl/ProjectPushListServiceImpl.java

+ 9 - 13
module_kzks/src/main/java/org/jeecg/modules/Index/controller/IndexController.java

@@ -65,24 +65,20 @@ public class IndexController {
                 // 合同额
                 return indexService.getTotalIncome(request,departNameList);
             });
-            CompletableFuture<IndexTotalVo> skeFuture = CompletableFuture.supplyAsync(() -> {
-                // 收款额
-                return indexService.getTotalReceived(request,departNameList);
-            });
-            CompletableFuture<IndexTotalVo> lreFuture = CompletableFuture.supplyAsync(() -> {
+            CompletableFuture<Map<String,IndexTotalVo>> lreFuture = CompletableFuture.supplyAsync(() -> {
                 // 利润额
                 return indexService.getLreByRole(request,departNameList);
             });
-            CompletableFuture<IndexTotalVo> zceFuture = CompletableFuture.supplyAsync(() -> {
-                // 支出额
-                return indexZcbService.getZhiChuTotalList(request,departNameList).get(0);
-            });
-            CompletableFuture<Void> allFutures = CompletableFuture.allOf(hteFuture, skeFuture, lreFuture, zceFuture);
+            CompletableFuture<Void> allFutures = CompletableFuture.allOf(hteFuture, lreFuture);
             allFutures.join();
+            Map<String, IndexTotalVo> resultMap = lreFuture.join();
+            IndexTotalVo ysk = resultMap.get("ysk");
+            IndexTotalVo zce = resultMap.get("zce");
+            IndexTotalVo lre = resultMap.get("lre");
             dataMap.put("hte", hteFuture.join());
-            dataMap.put("ske", skeFuture.join());
-            dataMap.put("lre", lreFuture.join());
-            dataMap.put("zce", zceFuture.join());
+            dataMap.put("ske", ysk);
+            dataMap.put("lre", lre);
+            dataMap.put("zce", zce);
         }
 
         if (ObjectUtils.isEmpty(role)) {

+ 2 - 1
module_kzks/src/main/java/org/jeecg/modules/Index/service/IndexService.java

@@ -8,6 +8,7 @@ import org.jeecg.modules.Index.entity.vo.*;
 import javax.servlet.http.HttpServletRequest;
 import java.math.BigDecimal;
 import java.util.List;
+import java.util.Map;
 
 public interface IndexService {
     IndexTotalVo getTotalIncome(HttpServletRequest request,List<String> departNameList);
@@ -78,7 +79,7 @@ public interface IndexService {
      *
      * @return
      */
-    public IndexTotalVo getLreByRole(HttpServletRequest request,List<String> departNameList);
+    public Map<String,IndexTotalVo> getLreByRole(HttpServletRequest request, List<String> departNameList);
     /**
      * 首页二层 利润额
      * 通过登录的用户找到角色,根据角色来判断部门,根据部门和实际完成时间选择任务列表,根据任务列表计算利润额

+ 6 - 2
module_kzks/src/main/java/org/jeecg/modules/Index/service/impl/IndexServiceImpl.java

@@ -2397,7 +2397,7 @@ public class IndexServiceImpl implements IndexService {
      *
      * @return
      */
-    public IndexTotalVo getLreByRole(HttpServletRequest request, List<String> departNameList) {
+    public Map<String, IndexTotalVo> getLreByRole(HttpServletRequest request, List<String> departNameList) {
         //初始化
         IndexTotalVo lrIndexTotalVo = indexTotalVoInit();
 
@@ -2473,7 +2473,11 @@ public class IndexServiceImpl implements IndexService {
         lrIndexTotalVo.setMonthTb(lrMonthTb);//月同比
         lrIndexTotalVo.setMonthHb(lrMonthHb);//月环比
 
-        return lrIndexTotalVo;
+        Map<String, IndexTotalVo> resultMap = new HashMap<>();
+        resultMap.put("ysk",yskindexTotalVo);
+        resultMap.put("zce",zceindexTotalVo);
+        resultMap.put("lre",lrIndexTotalVo);
+        return resultMap;
 
         /*
         //初始化

+ 3 - 3
module_kzks/src/main/java/org/jeecg/modules/projectCost/entity/ProjectCostSumVo.java

@@ -3,12 +3,12 @@ package org.jeecg.modules.projectCost.entity;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import lombok.Data;
 import org.jeecg.modules.projectCost.vo.ProjectCostVO;
-import org.jeecg.modules.projectCostHuiji.entity.ProjectCostHuijiVo;
+import org.jeecg.modules.projectCostHuiji.entity.ProjectCostHuiji;
 
 @Data
 public class ProjectCostSumVo {
 
-    private ProjectCostHuijiVo projectCostHuijiSum;
+    private ProjectCostHuiji projectCostHuijiSum;
 
-    private IPage<ProjectCostVO> pageList;
+    private IPage<ProjectCost> pageList;
 }

+ 23 - 144
module_kzks/src/main/java/org/jeecg/modules/projectCostHuiji/controller/ProjectCostHuijiController.java

@@ -30,7 +30,6 @@ import org.jeecg.modules.projectCostHuiji.convert.impl.ProjectCostHuijiConverCus
 import org.jeecg.modules.projectCostHuiji.convert.ProjectCostHuijiConvert;
 import org.jeecg.modules.projectCostHuiji.entity.ProjectCostHuiji;
 import org.jeecg.modules.projectCostHuiji.entity.ProjectCostHuijiCompare;
-import org.jeecg.modules.projectCostHuiji.entity.ProjectCostHuijiVo;
 import org.jeecg.modules.projectCostHuiji.service.IProjectCostHuijiService;
 import org.jeecg.modules.projectCostHuiji.vo.ProjectCostHuijiListVO;
 import org.jeecg.modules.projectCostHuiji.vo.ProjectCostHuijiSumVO;
@@ -107,10 +106,6 @@ public class ProjectCostHuijiController extends JeecgController<ProjectCostHuiji
     //sl修改添加每台的对比
     @ApiOperation(value = "项目成本汇集——对比", notes = "项目成本汇集——对比")
     @GetMapping(value = "/compareList")
-//    public List<ProjectCostHuiji> compareList(String ids) {
-//        List<ProjectCostHuiji> list = projectCostHuijiService.compareListByIds(Arrays.asList(ids.split(",")));
-//        return list;
-//    }
     public ProjectCostHuijiCompare compareList(String ids) {
         return projectCostHuijiService.compareListByIds(Arrays.asList(ids.split(",")));
 
@@ -134,7 +129,7 @@ public class ProjectCostHuijiController extends JeecgController<ProjectCostHuiji
                                         HttpServletRequest req) {
         LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         String role = commonMethod.getRole(sysUser.getUsername());
-        //if (AuthMark.BOSS.equals(role)) role = AuthMark.DEPT_LEADER;
+        // if (AuthMark.BOSS.equals(role)) role = AuthMark.DEPT_LEADER;
         ProjectCostHuijiSumVO sumVO = new ProjectCostHuijiSumVO();
         ProjectCostHuiji huiji1 = new ProjectCostHuiji();
 
@@ -146,23 +141,23 @@ public class ProjectCostHuijiController extends JeecgController<ProjectCostHuiji
         String superQueryParams = Arrays.toString(req.getParameterMap().get("superQueryParams"));
         String superQueryParamsMd5 = Md5Util.md5Encode(superQueryParams, "utf-8");
         if (projectCostHuiji == null) projectCostHuiji = new ProjectCostHuiji();
-        boolean hasTaskno = projectCostHuiji.getTaskno() != null && !projectCostHuiji.getTaskno().isEmpty() ;
+        boolean hasTaskno = projectCostHuiji.getTaskno() != null && !projectCostHuiji.getTaskno().isEmpty();
 
         boolean isStaff;
         if (AuthMark.STAFF.equals(role)) {
             LoginUser finalSysUser = sysUser;
             queryWrapper.lambda().and(i -> {
-                i.eq(StringUtils.isNotBlank(finalSysUser.getRealname()),ProjectCostHuiji::getBusinessManName, finalSysUser.getRealname()).or()
-                        .eq(StringUtils.isNotBlank(finalSysUser.getRealname()),ProjectCostHuiji::getYwfzrname, finalSysUser.getRealname());
+                i.eq(StringUtils.isNotBlank(finalSysUser.getRealname()), ProjectCostHuiji::getBusinessManName, finalSysUser.getRealname()).or()
+                        .eq(StringUtils.isNotBlank(finalSysUser.getRealname()), ProjectCostHuiji::getYwfzrname, finalSysUser.getRealname());
             });
             isStaff = true;
         } else {
             isStaff = false;
         }
 
-        boolean tips;
+        boolean isLeader;
         if (AuthMark.DEPT_LEADER.equals(role)) {
-            tips = true;
+            isLeader = true;
             String[] deptIds = sysUser.getDepartIds().split(",");
             departNames = sysDepartMapper.getDepNameByIds(deptIds);
             if (departNames.isEmpty()) return Result.ok();
@@ -178,7 +173,7 @@ public class ProjectCostHuijiController extends JeecgController<ProjectCostHuiji
             projectCostHuiji.setDeptNames(departNames);
             sysUser = new LoginUser();
         } else {
-            tips = false;
+            isLeader = false;
         }
 
         if (AuthMark.BOSS.equals(role)) {
@@ -190,7 +185,7 @@ public class ProjectCostHuijiController extends JeecgController<ProjectCostHuiji
         queryWrapper.lambda().like(StringUtils.isNotBlank(projectCostHuiji.getTaskno()), ProjectCostHuiji::getTaskno, projectCostHuiji.getTaskno());
         queryWrapper.lambda().like(StringUtils.isNotBlank(projectCostHuiji.getTaskname()), ProjectCostHuiji::getTaskname, projectCostHuiji.getTaskname());
 
-        boolean flag = !superQueryParams.equals("null") && !"[%5B%5D]".equals(superQueryParams) || returnFlag(projectCostHuiji);
+        boolean isSeniorQuery = !superQueryParams.equals("null") && !"[%5B%5D]".equals(superQueryParams) || returnFlag(projectCostHuiji);
         String ObjectMd5 = Md5Util.md5Encode(projectCostHuiji.toString(), "utf-8");
         ProjectCostHuijiSumVO cacheResultOne = (ProjectCostHuijiSumVO) redisUtil.get(CacheKey.PROJECT_COST_HUIJI + ":" + role + ":" + departNames + ":" + sysUser.getRealname() + ":" + ObjectMd5 + ":" + superQueryParamsMd5 + ":" + pageNo + "&" + pageSize);
         ProjectCostSumVo cacheResultTwo = (ProjectCostSumVo) redisUtil.get(CacheKey.PROJECT_COST + ":" + role + ":" + departNames + ":" + sysUser.getRealname() + ":" + ObjectMd5 + ":" + superQueryParamsMd5 + ":" + pageNo + "&" + pageSize);
@@ -199,7 +194,7 @@ public class ProjectCostHuijiController extends JeecgController<ProjectCostHuiji
 
 
         List<String> taskNos;
-        if (flag) {
+        if (isSeniorQuery) {
             List<ProjectCostHuiji> resultList = projectCostHuijiService.selectList(queryWrapper);
             taskNos = resultList.stream().map(ProjectCostHuiji::getTaskno).collect(Collectors.toList());
         } else {
@@ -209,105 +204,45 @@ public class ProjectCostHuijiController extends JeecgController<ProjectCostHuiji
         ProjectCostHuiji finalProjectCostHuiji = projectCostHuiji;
         LoginUser finalSysUser = sysUser;
         CompletableFuture<ProjectCostHuiji> huijiFuture = CompletableFuture.supplyAsync(() -> {
-            if (tips && !flag) {
+            if (isLeader && !isSeniorQuery) {
                 ProjectCostHuiji huiji = new ProjectCostHuiji();
                 huiji.setDeptNames(finalProjectCostHuiji.getDeptNames());
                 return projectCostHuijiService.costHJSum(huiji);
             }
-            if (!flag && isStaff){
-                return  projectCostHuijiService.costHJSumIsStaff(finalProjectCostHuiji,finalSysUser.getRealname());
+            if (isStaff && !isSeniorQuery) {
+                return projectCostHuijiService.costHJSumIsStaff(finalProjectCostHuiji, finalSysUser.getRealname());
             }
-            if (!flag)
+            if (!isSeniorQuery)
                 return projectCostHuijiService.costHJSum(finalProjectCostHuiji);//汇集总和
             if (taskNos.isEmpty())
                 return initProjectCostHuiji();
             return projectCostHuijiService.costHJSumByTaskNoList(taskNos);
         });
 
-        //当前任务号集合是查询的汇集表,一定是主任务的任务号集合,所以根据主任务号,查询子级任务号
-        if (!taskNos.isEmpty()) {
-            List<String> taskNoListByRefTaskNo = costService.getTaskNoListByRefTaskNo(taskNos);
-            taskNos.addAll(taskNoListByRefTaskNo);
-        }
-
-        CompletableFuture<KzksProjectCostYs> ysFuture = CompletableFuture.supplyAsync(() -> {
-            if (!flag)
-                return costYsService.selectSumClys();
-            if (taskNos.isEmpty())
-                return new KzksProjectCostYs();
-            return costYsService.selectSumClysByTaskNos(taskNos);
-        });
 
         Page<ProjectCostHuiji> page = new Page<>(pageNo, pageSize);
         CompletableFuture<Page<ProjectCostHuiji>> pageFuture = CompletableFuture.supplyAsync(() -> {
             return projectCostHuijiService.costHuijPage(page, queryWrapper);
         });
 
-        CompletableFuture<Void> future1 = CompletableFuture.allOf(huijiFuture, pageFuture, ysFuture);
+        CompletableFuture<Void> future1 = CompletableFuture.allOf(huijiFuture, pageFuture);
         future1.join();
         ProjectCostHuiji huiji = huijiFuture.join();
         Page<ProjectCostHuiji> pageList = pageFuture.join();
-        KzksProjectCostYs ys = ysFuture.join();
-        if (ys == null) ys = new KzksProjectCostYs();
-        if (ObjectUtils.isEmpty(ys.getClys())) ys.setClys(BigDecimal.valueOf(0));
-        if (ObjectUtils.isEmpty(ys.getWxys())) ys.setWxys(BigDecimal.valueOf(0));
-        if (pageList != null && !pageList.getRecords().isEmpty()) {//costYsService
 
+        if (pageList != null && !pageList.getRecords().isEmpty()) {//costYsService
             List<ProjectCostHuijiListVO> collect = pageList.getRecords().stream().map(i -> {
                 List<ProjectCostVO> children1 = costService.costListByTaskNoMain(i.getTaskno()); //主任务及批产的主任务
                 List<ProjectCostVO> children2 = costService.costListByTaskNoSub(i.getTaskno()); //子任务及批产的子任务
                 List<ProjectCostVO> children = new ArrayList<>();
-
-                CompletableFuture<List<ProjectCostVO>> children3Future = CompletableFuture.supplyAsync(() -> {
-                    return children1.stream().map(this::apply).collect(Collectors.toList());
-                });
-
-                CompletableFuture<List<ProjectCostVO>> children4Future = CompletableFuture.supplyAsync(() -> {
-                    return children2.stream().map(this::apply).collect(Collectors.toList());
-                });
-
-                CompletableFuture<Void> future = CompletableFuture.allOf(children3Future, children4Future);
-                future.join();
-
-                List<ProjectCostVO> children3 = children3Future.join();
-                List<ProjectCostVO> children4 = children4Future.join();
-                children.addAll(children3);
-                children.addAll(children4);
-                BigDecimal wxysSum = BigDecimal.valueOf(0);
-                BigDecimal clysSum = BigDecimal.valueOf(0);
-
-                CompletableFuture<BigDecimal> wxysFuture = CompletableFuture.supplyAsync(() -> {
-                    return children.stream().filter(o -> {
-                        return ObjectUtils.isEmpty(o.getStatus()) || (!"1".equals(o.getStatus()));
-                    }).map(ProjectCostVO::getWxys).filter(ObjectUtils::isNotEmpty).reduce(BigDecimal.ZERO, BigDecimal::add);
-                });
-
-                CompletableFuture<BigDecimal> clysFuture = CompletableFuture.supplyAsync(() -> {
-                    return children.stream().filter(o -> {
-                        return ObjectUtils.isEmpty(o.getStatus()) || (!"1".equals(o.getStatus()));
-                    }).map(ProjectCostVO::getClys).filter(ObjectUtils::isNotEmpty).reduce(BigDecimal.ZERO, BigDecimal::add);
-                });
-
-                CompletableFuture<Void> future2 = CompletableFuture.allOf(wxysFuture, clysFuture);
-                future2.join();
-                wxysSum = wxysFuture.join();
-                clysSum = clysFuture.join();
-
-                return projectCostHuijiConverCustom.toHuijiListVOAndYs(i, children, 1, wxysSum, clysSum);
+                children.addAll(children1);
+                children.addAll(children2);
+                return projectCostHuijiConverCustom.toHuijiListVOAndYs(i, children, 1);
             }).collect(Collectors.toList());
-
             IPage<ProjectCostHuijiListVO> pageList1 = ProjectCostHuijiConvert.INSTANCE.toHuijiListVOPage(pageList, collect);
-
-            ProjectCostHuijiVo resultHuiJiVo = new ProjectCostHuijiVo();
-            if (ObjectUtils.isEmpty(huiji)) huiji = new ProjectCostHuiji();
-            BeanUtils.copyProperties(huiji, resultHuiJiVo);
-            resultHuiJiVo.setClys(ys.getClys());
-            resultHuiJiVo.setWxys(ys.getWxys());
-
-            if (pageList1.getRecords().isEmpty()) resultHuiJiVo = new ProjectCostHuijiVo();
-            sumVO.setProjectCostHuijiSum(resultHuiJiVo);
+            if (pageList.getRecords().isEmpty()) huiji = new ProjectCostHuiji();
+            sumVO.setProjectCostHuiji(huiji);
             sumVO.setPageList(pageList1);
-
             redisUtil.set(CacheKey.PROJECT_COST_HUIJI + ":" + role + ":" + departNames + ":" + sysUser.getRealname() + ":" + ObjectMd5 + ":" + superQueryParamsMd5 + ":" + pageNo + "&" + pageSize, sumVO, 1000L * 60 * 60 * 10);
             return Result.OK(sumVO);
         } else {
@@ -378,10 +313,6 @@ public class ProjectCostHuijiController extends JeecgController<ProjectCostHuiji
                 return projectCostHuiji1;
             });
 
-            CompletableFuture<KzksProjectCostYs> kzksProjectCostYsCompletableFuture = CompletableFuture.supplyAsync(() -> {
-                if (taskList.isEmpty()) return new KzksProjectCostYs();
-                return costYsService.selectSumClysByTaskNos(taskList);
-            });
 
             CompletableFuture<Integer> yzslCompletableFuture = CompletableFuture.supplyAsync(() -> {
                 if (taskList.isEmpty()) return 0;
@@ -389,33 +320,9 @@ public class ProjectCostHuijiController extends JeecgController<ProjectCostHuiji
             });
 
 
-            CompletableFuture<ArrayList<ProjectCostVO>> arrayListCompletableFuture = CompletableFuture.supplyAsync(() -> {
-                ArrayList<ProjectCostVO> projectCostVOS = new ArrayList<>();
-
-                for (ProjectCost record : projectCosts.getRecords()) {
-                    ProjectCostVO projectCostVO = new ProjectCostVO();
-                    BeanUtils.copyProperties(record, projectCostVO);
-                    KzksProjectCostYs kzksProjectCostYs = costYsService.selectYSByTaskno(record.getTaskno());
-
-                    BigDecimal clys = BigDecimal.valueOf(0);
-                    BigDecimal wxys = BigDecimal.valueOf(0);
-
-                    if (ObjectUtils.isNotEmpty(kzksProjectCostYs)) {
-                        if (ObjectUtils.isNotEmpty(kzksProjectCostYs.getClys())) clys = kzksProjectCostYs.getClys();
-                        if (ObjectUtils.isNotEmpty(kzksProjectCostYs.getWxys())) wxys = kzksProjectCostYs.getWxys();
-                    }
-                    projectCostVO.setClys(clys.setScale(2, RoundingMode.HALF_UP));
-                    projectCostVO.setWxys(wxys.setScale(2, RoundingMode.HALF_UP));
-                    projectCostVOS.add(projectCostVO);
-                }
-                return projectCostVOS;
-            });
-
-            CompletableFuture<Void> future2 = CompletableFuture.allOf(projectCostHuijiCompletableFuture, kzksProjectCostYsCompletableFuture, arrayListCompletableFuture, yzslCompletableFuture);
+            CompletableFuture<Void> future2 = CompletableFuture.allOf(projectCostHuijiCompletableFuture, yzslCompletableFuture);
             future2.join();
             ProjectCostHuiji projectCostHuiji1 = projectCostHuijiCompletableFuture.join();
-            KzksProjectCostYs huijiYs = kzksProjectCostYsCompletableFuture.join();
-            ArrayList<ProjectCostVO> projectCostVOS = arrayListCompletableFuture.join();
             Integer yzslSum = yzslCompletableFuture.join();
             projectCostHuiji1.setYzsl(yzslSum);
 
@@ -433,45 +340,17 @@ public class ProjectCostHuijiController extends JeecgController<ProjectCostHuiji
             }
             projectCostHuiji1.setLrl(lrl);
 
-            ProjectCostHuijiVo resultHuiJiVo = new ProjectCostHuijiVo();
             if (ObjectUtils.isEmpty(projectCostHuiji1)) projectCostHuiji1 = new ProjectCostHuiji();
-            BeanUtils.copyProperties(projectCostHuiji1, resultHuiJiVo);
-            BigDecimal clys = BigDecimal.ZERO;
-            BigDecimal wxys = BigDecimal.ZERO;
-            if (huijiYs != null) {
-                if (huijiYs.getClys() != null) clys = huijiYs.getClys();
-                if (huijiYs.getWxys() != null) wxys = huijiYs.getWxys();
-            }
-            resultHuiJiVo.setClys(clys);
-            resultHuiJiVo.setWxys(wxys);
 
             ProjectCostSumVo projectCostSumVo = new ProjectCostSumVo();
-            Page<ProjectCostVO> projectCostListVOPage = ProjectCostHuijiConvert.INSTANCE.toProjectCostListVOPage(projectCosts, projectCostVOS);
-            if (projectCostListVOPage.getRecords().isEmpty()) resultHuiJiVo = new ProjectCostHuijiVo();
-            projectCostSumVo.setProjectCostHuijiSum(resultHuiJiVo);
-            projectCostSumVo.setPageList(projectCostListVOPage);
+            projectCostSumVo.setProjectCostHuijiSum(projectCostHuiji1);
+            projectCostSumVo.setPageList(projectCosts);
 
             redisUtil.set(CacheKey.PROJECT_COST + ":" + role + ":" + departNames + ":" + sysUser.getRealname() + ":" + ObjectMd5 + ":" + superQueryParamsMd5 + ":" + pageNo + "&" + pageSize, projectCostSumVo, 1000L * 60 * 60 * 10);
             return Result.OK(projectCostSumVo);
         }
     }
 
-    private ProjectCostVO apply(ProjectCostVO x) {
-        KzksProjectCostYs ys = costYsService.selectYSByTaskno(x.getTaskno());
-        if (ys != null) {
-            if (ys.getClys() != null) {
-                x.setClys(ys.getClys());
-            } else {
-                x.setClys(BigDecimal.valueOf(0));
-            }
-            if (ys.getWxys() != null) {
-                x.setWxys(ys.getWxys());
-            } else {
-                x.setWxys(BigDecimal.valueOf(0));
-            }
-        }
-        return x;
-    }
 
     private ProjectCostHuiji initProjectCostHuiji() {
         ProjectCostHuiji huiji = new ProjectCostHuiji();

+ 650 - 0
module_kzks/src/main/java/org/jeecg/modules/projectCostHuiji/controller/ProjectCostHuijiControllerBak.java

@@ -0,0 +1,650 @@
+/*
+package org.jeecg.modules.projectCostHuiji.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.Md5Util;
+import org.jeecg.common.util.RedisUtil;
+import org.jeecg.modules.Index.util.AuthMark;
+import org.jeecg.modules.Index.util.CacheKey;
+import org.jeecg.modules.Index.util.CommonMethod;
+import org.jeecg.modules.costModelProductPrice.service.IKzksCostModelProductPriceService;
+import org.jeecg.modules.mesInfoInstallationcost.service.IMesInfoInstallationcostService;
+import org.jeecg.modules.projectCost.entity.ProjectCost;
+import org.jeecg.modules.projectCost.entity.ProjectCostSumVo;
+import org.jeecg.modules.projectCost.service.IProjectCostService;
+import org.jeecg.modules.projectCost.vo.ProjectCostVO;
+import org.jeecg.modules.projectCostHuiji.convert.impl.ProjectCostHuijiConverCustomImpl;
+import org.jeecg.modules.projectCostHuiji.convert.ProjectCostHuijiConvert;
+import org.jeecg.modules.projectCostHuiji.entity.ProjectCostHuiji;
+import org.jeecg.modules.projectCostHuiji.entity.ProjectCostHuijiCompare;
+import org.jeecg.modules.projectCostHuiji.entity.ProjectCostHuijiVo;
+import org.jeecg.modules.projectCostHuiji.service.IProjectCostHuijiService;
+import org.jeecg.modules.projectCostHuiji.vo.ProjectCostHuijiListVO;
+import org.jeecg.modules.projectCostHuiji.vo.ProjectCostHuijiSumVO;
+import org.jeecg.modules.projectCostYs.entity.KzksProjectCostYs;
+import org.jeecg.modules.projectCostYs.service.IKzksProjectCostYsService;
+import org.jeecg.modules.system.mapper.SysDepartMapper;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.*;
+import java.util.concurrent.*;
+import java.util.stream.Collectors;
+
+*/
+/**
+ * @Description: 项目成本汇集表
+ * @Author: jeecg-boot
+ * @Date: 2023-08-15
+ * @Version: V1.0
+ *//*
+
+@Api(tags = "项目成本汇集表")
+@RestController
+@RequestMapping("/projectCostHuiji/projectCostHuiji")
+@Slf4j
+public class ProjectCostHuijiController extends JeecgController<ProjectCostHuiji, IProjectCostHuijiService> {
+    @Autowired
+    @SuppressWarnings("all")
+    private IProjectCostHuijiService projectCostHuijiService;
+    @Autowired
+    @SuppressWarnings("all")
+    private IProjectCostService costService;
+    @Autowired
+    @SuppressWarnings("all")
+    private IMesInfoInstallationcostService mesInfoInstallationcostService;
+    @Autowired
+    @SuppressWarnings("all")
+    private IKzksProjectCostYsService costYsService;
+
+    @Autowired
+    private RedisUtil redisUtil;
+
+    @Autowired
+    private ProjectCostHuijiConverCustomImpl projectCostHuijiConverCustom;
+
+    @Autowired
+    private CommonMethod commonMethod;
+
+    @Autowired
+    private SysDepartMapper sysDepartMapper;
+
+    @Autowired
+    private IKzksCostModelProductPriceService costModelProductPriceService;
+
+    @ApiOperation(value = "111111111111")
+    @GetMapping(value = "/children1")
+    public List<ProjectCostVO> children1(String taskno) {
+        return costService.costListByTaskNoMain(taskno); //主任务及批产的主任务
+    }
+
+    @ApiOperation(value = "22222222222222")
+    @GetMapping(value = "/children2")
+    public List<ProjectCostVO> children2(String taskno) {
+        return costService.costListByTaskNoSub(taskno); //主任务及批产的主任务
+    }
+
+    */
+/**
+     * 项目成本汇集——对比
+     *//*
+
+    //sl修改添加每台的对比
+    @ApiOperation(value = "项目成本汇集——对比", notes = "项目成本汇集——对比")
+    @GetMapping(value = "/compareList")
+//    public List<ProjectCostHuiji> compareList(String ids) {
+//        List<ProjectCostHuiji> list = projectCostHuijiService.compareListByIds(Arrays.asList(ids.split(",")));
+//        return list;
+//    }
+    public ProjectCostHuijiCompare compareList(String ids) {
+        return projectCostHuijiService.compareListByIds(Arrays.asList(ids.split(",")));
+
+    }
+
+    */
+/**
+     * 分页列表查询
+     *
+     * @param projectCostHuiji
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     *//*
+
+    //@AutoLog(value = "项目成本汇集表-分页列表查询")
+    @ApiOperation(value = "项目成本汇集——分页查询——汇总+两级(一级汇集、二级主任务及主批产任务及子任务及子批产任务)", notes = "项目成本汇集——分页查询——两级(一级汇集、二级主任务及子任务)")
+    @GetMapping(value = "/list")
+    public Result<Object> queryPageList(ProjectCostHuiji projectCostHuiji,
+                                        @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                        @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                        HttpServletRequest req) {
+        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        String role = commonMethod.getRole(sysUser.getUsername());
+        //if (AuthMark.BOSS.equals(role)) role = AuthMark.DEPT_LEADER;
+        ProjectCostHuijiSumVO sumVO = new ProjectCostHuijiSumVO();
+        ProjectCostHuiji huiji1 = new ProjectCostHuiji();
+
+        QueryWrapper<ProjectCostHuiji> queryWrapper = QueryGenerator.initQueryWrapper(huiji1, req.getParameterMap());
+        List<String> departNames = new ArrayList<>();
+
+        //高级查询参数不等于"null"并且有查询条件("[%5B%5D]" 高级查询无查询条件) 则返回true,获取满足查询条件的任务号
+        //普通查询有查询条件则returnFlag()返回true,判断条件是ProjectCostHuiji对象有任意属性不为null
+        String superQueryParams = Arrays.toString(req.getParameterMap().get("superQueryParams"));
+        String superQueryParamsMd5 = Md5Util.md5Encode(superQueryParams, "utf-8");
+        if (projectCostHuiji == null) projectCostHuiji = new ProjectCostHuiji();
+        boolean hasTaskno = projectCostHuiji.getTaskno() != null && !projectCostHuiji.getTaskno().isEmpty() ;
+
+        boolean isStaff;
+        if (AuthMark.STAFF.equals(role)) {
+            LoginUser finalSysUser = sysUser;
+            queryWrapper.lambda().and(i -> {
+                i.eq(StringUtils.isNotBlank(finalSysUser.getRealname()),ProjectCostHuiji::getBusinessManName, finalSysUser.getRealname()).or()
+                        .eq(StringUtils.isNotBlank(finalSysUser.getRealname()),ProjectCostHuiji::getYwfzrname, finalSysUser.getRealname());
+            });
+            isStaff = true;
+        } else {
+            isStaff = false;
+        }
+
+        boolean tips;
+        if (AuthMark.DEPT_LEADER.equals(role)) {
+            tips = true;
+            String[] deptIds = sysUser.getDepartIds().split(",");
+            departNames = sysDepartMapper.getDepNameByIds(deptIds);
+            if (departNames.isEmpty()) return Result.ok();
+            List<String> finalDepartNames = departNames;
+            if (!hasTaskno) {
+                queryWrapper.lambda().and(i -> {
+                    for (String departName : finalDepartNames) {
+                        i.or().like(StringUtils.isNotBlank(departName), ProjectCostHuiji::getJycs, departName)
+                                .or().like(StringUtils.isNotBlank(departName), ProjectCostHuiji::getZrbm, departName);
+                    }
+                });
+            }
+            projectCostHuiji.setDeptNames(departNames);
+            sysUser = new LoginUser();
+        } else {
+            tips = false;
+        }
+
+        if (AuthMark.BOSS.equals(role)) {
+            queryWrapper.lambda().like(StringUtils.isNotBlank(projectCostHuiji.getJycs()), ProjectCostHuiji::getJycs, projectCostHuiji.getJycs())
+                    .or().like(StringUtils.isNotBlank(projectCostHuiji.getZrbm()), ProjectCostHuiji::getZrbm, projectCostHuiji.getZrbm());
+            sysUser = new LoginUser();
+        }
+
+        queryWrapper.lambda().like(StringUtils.isNotBlank(projectCostHuiji.getTaskno()), ProjectCostHuiji::getTaskno, projectCostHuiji.getTaskno());
+        queryWrapper.lambda().like(StringUtils.isNotBlank(projectCostHuiji.getTaskname()), ProjectCostHuiji::getTaskname, projectCostHuiji.getTaskname());
+
+        boolean flag = !superQueryParams.equals("null") && !"[%5B%5D]".equals(superQueryParams) || returnFlag(projectCostHuiji);
+        String ObjectMd5 = Md5Util.md5Encode(projectCostHuiji.toString(), "utf-8");
+        ProjectCostHuijiSumVO cacheResultOne = (ProjectCostHuijiSumVO) redisUtil.get(CacheKey.PROJECT_COST_HUIJI + ":" + role + ":" + departNames + ":" + sysUser.getRealname() + ":" + ObjectMd5 + ":" + superQueryParamsMd5 + ":" + pageNo + "&" + pageSize);
+        ProjectCostSumVo cacheResultTwo = (ProjectCostSumVo) redisUtil.get(CacheKey.PROJECT_COST + ":" + role + ":" + departNames + ":" + sysUser.getRealname() + ":" + ObjectMd5 + ":" + superQueryParamsMd5 + ":" + pageNo + "&" + pageSize);
+        if (cacheResultOne != null) return Result.ok(cacheResultOne);
+        if (cacheResultTwo != null) return Result.ok(cacheResultTwo);
+
+
+        List<String> taskNos;
+        if (flag) {
+            List<ProjectCostHuiji> resultList = projectCostHuijiService.selectList(queryWrapper);
+            taskNos = resultList.stream().map(ProjectCostHuiji::getTaskno).collect(Collectors.toList());
+        } else {
+            taskNos = new ArrayList<>();
+        }
+
+        ProjectCostHuiji finalProjectCostHuiji = projectCostHuiji;
+        LoginUser finalSysUser = sysUser;
+        CompletableFuture<ProjectCostHuiji> huijiFuture = CompletableFuture.supplyAsync(() -> {
+            if (tips && !flag) {
+                ProjectCostHuiji huiji = new ProjectCostHuiji();
+                huiji.setDeptNames(finalProjectCostHuiji.getDeptNames());
+                return projectCostHuijiService.costHJSum(huiji);
+            }
+            if (!flag && isStaff){
+                return  projectCostHuijiService.costHJSumIsStaff(finalProjectCostHuiji,finalSysUser.getRealname());
+            }
+            if (!flag)
+                return projectCostHuijiService.costHJSum(finalProjectCostHuiji);//汇集总和
+            if (taskNos.isEmpty())
+                return initProjectCostHuiji();
+            return projectCostHuijiService.costHJSumByTaskNoList(taskNos);
+        });
+
+        //当前任务号集合是查询的汇集表,一定是主任务的任务号集合,所以根据主任务号,查询子级任务号
+        if (!taskNos.isEmpty()) {
+            List<String> taskNoListByRefTaskNo = costService.getTaskNoListByRefTaskNo(taskNos);
+            taskNos.addAll(taskNoListByRefTaskNo);
+        }
+
+        CompletableFuture<KzksProjectCostYs> ysFuture = CompletableFuture.supplyAsync(() -> {
+            if (!flag)
+                return costYsService.selectSumClys();
+            if (taskNos.isEmpty())
+                return new KzksProjectCostYs();
+            return costYsService.selectSumClysByTaskNos(taskNos);
+        });
+
+        Page<ProjectCostHuiji> page = new Page<>(pageNo, pageSize);
+        CompletableFuture<Page<ProjectCostHuiji>> pageFuture = CompletableFuture.supplyAsync(() -> {
+            return projectCostHuijiService.costHuijPage(page, queryWrapper);
+        });
+
+        CompletableFuture<Void> future1 = CompletableFuture.allOf(huijiFuture, pageFuture, ysFuture);
+        future1.join();
+        ProjectCostHuiji huiji = huijiFuture.join();
+        Page<ProjectCostHuiji> pageList = pageFuture.join();
+        KzksProjectCostYs ys = ysFuture.join();
+        if (ys == null) ys = new KzksProjectCostYs();
+        if (ObjectUtils.isEmpty(ys.getClys())) ys.setClys(BigDecimal.valueOf(0));
+        if (ObjectUtils.isEmpty(ys.getWxys())) ys.setWxys(BigDecimal.valueOf(0));
+        if (pageList != null && !pageList.getRecords().isEmpty()) {//costYsService
+
+            List<ProjectCostHuijiListVO> collect = pageList.getRecords().stream().map(i -> {
+                List<ProjectCostVO> children1 = costService.costListByTaskNoMain(i.getTaskno()); //主任务及批产的主任务
+                List<ProjectCostVO> children2 = costService.costListByTaskNoSub(i.getTaskno()); //子任务及批产的子任务
+                List<ProjectCostVO> children = new ArrayList<>();
+
+                CompletableFuture<List<ProjectCostVO>> children3Future = CompletableFuture.supplyAsync(() -> {
+                    return children1.stream().map(this::apply).collect(Collectors.toList());
+                });
+
+                CompletableFuture<List<ProjectCostVO>> children4Future = CompletableFuture.supplyAsync(() -> {
+                    return children2.stream().map(this::apply).collect(Collectors.toList());
+                });
+
+                CompletableFuture<Void> future = CompletableFuture.allOf(children3Future, children4Future);
+                future.join();
+
+                List<ProjectCostVO> children3 = children3Future.join();
+                List<ProjectCostVO> children4 = children4Future.join();
+                children.addAll(children3);
+                children.addAll(children4);
+                BigDecimal wxysSum = BigDecimal.valueOf(0);
+                BigDecimal clysSum = BigDecimal.valueOf(0);
+
+                CompletableFuture<BigDecimal> wxysFuture = CompletableFuture.supplyAsync(() -> {
+                    return children.stream().filter(o -> {
+                        return ObjectUtils.isEmpty(o.getStatus()) || (!"1".equals(o.getStatus()));
+                    }).map(ProjectCostVO::getWxys).filter(ObjectUtils::isNotEmpty).reduce(BigDecimal.ZERO, BigDecimal::add);
+                });
+
+                CompletableFuture<BigDecimal> clysFuture = CompletableFuture.supplyAsync(() -> {
+                    return children.stream().filter(o -> {
+                        return ObjectUtils.isEmpty(o.getStatus()) || (!"1".equals(o.getStatus()));
+                    }).map(ProjectCostVO::getClys).filter(ObjectUtils::isNotEmpty).reduce(BigDecimal.ZERO, BigDecimal::add);
+                });
+
+                CompletableFuture<Void> future2 = CompletableFuture.allOf(wxysFuture, clysFuture);
+                future2.join();
+                wxysSum = wxysFuture.join();
+                clysSum = clysFuture.join();
+
+                return projectCostHuijiConverCustom.toHuijiListVOAndYs(i, children, 1, wxysSum, clysSum);
+            }).collect(Collectors.toList());
+
+            IPage<ProjectCostHuijiListVO> pageList1 = ProjectCostHuijiConvert.INSTANCE.toHuijiListVOPage(pageList, collect);
+
+            ProjectCostHuijiVo resultHuiJiVo = new ProjectCostHuijiVo();
+            if (ObjectUtils.isEmpty(huiji)) huiji = new ProjectCostHuiji();
+            BeanUtils.copyProperties(huiji, resultHuiJiVo);
+            resultHuiJiVo.setClys(ys.getClys());
+            resultHuiJiVo.setWxys(ys.getWxys());
+
+            if (pageList1.getRecords().isEmpty()) resultHuiJiVo = new ProjectCostHuijiVo();
+            sumVO.setProjectCostHuijiSum(resultHuiJiVo);
+            sumVO.setPageList(pageList1);
+
+            redisUtil.set(CacheKey.PROJECT_COST_HUIJI + ":" + role + ":" + departNames + ":" + sysUser.getRealname() + ":" + ObjectMd5 + ":" + superQueryParamsMd5 + ":" + pageNo + "&" + pageSize, sumVO, 1000L * 60 * 60 * 10);
+            return Result.OK(sumVO);
+        } else {
+            ProjectCost projectCost = new ProjectCost();
+            BeanUtils.copyProperties(projectCostHuiji, projectCost);
+
+            ProjectCost projectCost1 = new ProjectCost();
+
+            QueryWrapper<ProjectCost> query = QueryGenerator.initQueryWrapper(projectCost1, req.getParameterMap());
+            query.lambda().like(StringUtils.isNotBlank(projectCost.getTaskno()), ProjectCost::getTaskno, projectCost.getTaskno());
+            query.lambda().like(StringUtils.isNotBlank(projectCost.getTaskname()), ProjectCost::getTaskname, projectCost.getTaskname());
+
+            if (AuthMark.STAFF.equals(role)) {
+                LoginUser finalSysUser1 = sysUser;
+                query.lambda().and(i -> {
+                    i.eq(ProjectCost::getBusinessManName, finalSysUser1.getRealname()).or()
+                            .eq(ProjectCost::getYwfzrname, finalSysUser1.getRealname());
+                });
+            }
+
+            if (AuthMark.DEPT_LEADER.equals(role)) {
+                List<String> finalDepartNames1 = departNames;
+                if (!hasTaskno) {
+                    query.lambda().and(i -> {
+                        for (String departName : finalDepartNames1) {
+                            i.or().like(StringUtils.isNotBlank(departName), ProjectCost::getClys, departName)
+                                    .or().like(StringUtils.isNotBlank(departName), ProjectCost::getZrbm, departName);
+                        }
+                    });
+                }
+                projectCost.setDeptNames(departNames);
+                sysUser = new LoginUser();
+            }
+
+            if (AuthMark.BOSS.equals(role)) {
+                query.lambda().like(StringUtils.isNotBlank(projectCost.getJycs()), ProjectCost::getJycs, projectCost.getJycs())
+                        .or().like(StringUtils.isNotBlank(projectCost.getZrbm()), ProjectCost::getZrbm, projectCost.getZrbm());
+                sysUser = new LoginUser();
+            }
+
+            QueryWrapper<ProjectCost> clone = query.clone();
+            //根据条件分页查询任务
+            CompletableFuture<Page<ProjectCost>> pageCompletableFuture = CompletableFuture.supplyAsync(() -> {
+                Page<ProjectCost> page1 = new Page<ProjectCost>(pageNo, pageSize);
+                return costService.getCostListPage(page1, query);
+            });
+
+            //根据条件查询所有满足条件的任务号
+            CompletableFuture<List<String>> listCompletableFuture = CompletableFuture.supplyAsync(() -> {
+                List<ProjectCost> costs = costService.projectCostlist(clone);
+                return costs.stream().map(ProjectCost::getTaskno).collect(Collectors.toList());
+            });
+
+            CompletableFuture<Void> future = CompletableFuture.allOf(pageCompletableFuture, listCompletableFuture);
+            future.join();
+            Page<ProjectCost> projectCosts = pageCompletableFuture.join();
+            List<String> taskList = listCompletableFuture.join();
+
+            CompletableFuture<ProjectCostHuiji> projectCostHuijiCompletableFuture = CompletableFuture.supplyAsync(() -> {
+                //如果是普通查询就走这个方法
+                ProjectCostHuiji projectCostHuiji1;  //筛选合计
+                if (taskList.isEmpty()) {
+                    projectCostHuiji1 = initProjectCostHuiji();
+                } else {
+                    projectCostHuiji1 = projectCostHuijiService.costHJSumByProjectCostByTaskList(taskList);
+                }
+                if (projectCostHuiji1 == null) projectCostHuiji1 = initProjectCostHuiji();
+                return projectCostHuiji1;
+            });
+
+            CompletableFuture<KzksProjectCostYs> kzksProjectCostYsCompletableFuture = CompletableFuture.supplyAsync(() -> {
+                if (taskList.isEmpty()) return new KzksProjectCostYs();
+                return costYsService.selectSumClysByTaskNos(taskList);
+            });
+
+            CompletableFuture<Integer> yzslCompletableFuture = CompletableFuture.supplyAsync(() -> {
+                if (taskList.isEmpty()) return 0;
+                return costService.getYzslSumByTaskNos(taskList);
+            });
+
+
+            CompletableFuture<ArrayList<ProjectCostVO>> arrayListCompletableFuture = CompletableFuture.supplyAsync(() -> {
+                ArrayList<ProjectCostVO> projectCostVOS = new ArrayList<>();
+
+                for (ProjectCost record : projectCosts.getRecords()) {
+                    ProjectCostVO projectCostVO = new ProjectCostVO();
+                    BeanUtils.copyProperties(record, projectCostVO);
+                    KzksProjectCostYs kzksProjectCostYs = costYsService.selectYSByTaskno(record.getTaskno());
+
+                    BigDecimal clys = BigDecimal.valueOf(0);
+                    BigDecimal wxys = BigDecimal.valueOf(0);
+
+                    if (ObjectUtils.isNotEmpty(kzksProjectCostYs)) {
+                        if (ObjectUtils.isNotEmpty(kzksProjectCostYs.getClys())) clys = kzksProjectCostYs.getClys();
+                        if (ObjectUtils.isNotEmpty(kzksProjectCostYs.getWxys())) wxys = kzksProjectCostYs.getWxys();
+                    }
+                    projectCostVO.setClys(clys.setScale(2, RoundingMode.HALF_UP));
+                    projectCostVO.setWxys(wxys.setScale(2, RoundingMode.HALF_UP));
+                    projectCostVOS.add(projectCostVO);
+                }
+                return projectCostVOS;
+            });
+
+            CompletableFuture<Void> future2 = CompletableFuture.allOf(projectCostHuijiCompletableFuture, kzksProjectCostYsCompletableFuture, arrayListCompletableFuture, yzslCompletableFuture);
+            future2.join();
+            ProjectCostHuiji projectCostHuiji1 = projectCostHuijiCompletableFuture.join();
+            KzksProjectCostYs huijiYs = kzksProjectCostYsCompletableFuture.join();
+            ArrayList<ProjectCostVO> projectCostVOS = arrayListCompletableFuture.join();
+            Integer yzslSum = yzslCompletableFuture.join();
+            projectCostHuiji1.setYzsl(yzslSum);
+
+            BigDecimal contractfpe = projectCostHuiji1.getContractfpe();//合同分配额
+            BigDecimal estimationcoat = projectCostHuiji1.getEstimationcoat();//预估价
+            BigDecimal lre = projectCostHuiji1.getLre(); //利润额
+            BigDecimal cpt = BigDecimal.ZERO; //固定比较值
+            BigDecimal lrl = BigDecimal.ZERO; //利润率
+            if (lre.compareTo(cpt) != 0) {
+                if (contractfpe.compareTo(cpt) != 0) {
+                    lrl = lre.divide(contractfpe, 2, RoundingMode.HALF_UP);
+                } else if (estimationcoat.compareTo(cpt) != 0) {
+                    lrl = lre.divide(estimationcoat, 2, RoundingMode.HALF_UP);
+                }
+            }
+            projectCostHuiji1.setLrl(lrl);
+
+            ProjectCostHuijiVo resultHuiJiVo = new ProjectCostHuijiVo();
+            if (ObjectUtils.isEmpty(projectCostHuiji1)) projectCostHuiji1 = new ProjectCostHuiji();
+            BeanUtils.copyProperties(projectCostHuiji1, resultHuiJiVo);
+            BigDecimal clys = BigDecimal.ZERO;
+            BigDecimal wxys = BigDecimal.ZERO;
+            if (huijiYs != null) {
+                if (huijiYs.getClys() != null) clys = huijiYs.getClys();
+                if (huijiYs.getWxys() != null) wxys = huijiYs.getWxys();
+            }
+            resultHuiJiVo.setClys(clys);
+            resultHuiJiVo.setWxys(wxys);
+
+            ProjectCostSumVo projectCostSumVo = new ProjectCostSumVo();
+            Page<ProjectCostVO> projectCostListVOPage = ProjectCostHuijiConvert.INSTANCE.toProjectCostListVOPage(projectCosts, projectCostVOS);
+            if (projectCostListVOPage.getRecords().isEmpty()) resultHuiJiVo = new ProjectCostHuijiVo();
+            projectCostSumVo.setProjectCostHuijiSum(resultHuiJiVo);
+            projectCostSumVo.setPageList(projectCostListVOPage);
+
+            redisUtil.set(CacheKey.PROJECT_COST + ":" + role + ":" + departNames + ":" + sysUser.getRealname() + ":" + ObjectMd5 + ":" + superQueryParamsMd5 + ":" + pageNo + "&" + pageSize, projectCostSumVo, 1000L * 60 * 60 * 10);
+            return Result.OK(projectCostSumVo);
+        }
+    }
+
+    private ProjectCostVO apply(ProjectCostVO x) {
+        KzksProjectCostYs ys = costYsService.selectYSByTaskno(x.getTaskno());
+        if (ys != null) {
+            if (ys.getClys() != null) {
+                x.setClys(ys.getClys());
+            } else {
+                x.setClys(BigDecimal.valueOf(0));
+            }
+            if (ys.getWxys() != null) {
+                x.setWxys(ys.getWxys());
+            } else {
+                x.setWxys(BigDecimal.valueOf(0));
+            }
+        }
+        return x;
+    }
+
+    private ProjectCostHuiji initProjectCostHuiji() {
+        ProjectCostHuiji huiji = new ProjectCostHuiji();
+        huiji.setContractfpe(BigDecimal.ZERO);
+        huiji.setEstimationcoat(BigDecimal.ZERO);
+        huiji.setZcb(BigDecimal.ZERO);
+        huiji.setYzsl(0);
+        huiji.setLre(BigDecimal.ZERO);
+        huiji.setLrl(BigDecimal.ZERO);
+        huiji.setClf(BigDecimal.ZERO);
+        huiji.setZyf(BigDecimal.ZERO);
+        huiji.setSwf(BigDecimal.ZERO);
+        huiji.setWxf(BigDecimal.ZERO);
+        huiji.setGdzczj(BigDecimal.ZERO);
+        huiji.setGlf(BigDecimal.ZERO);
+        huiji.setRldlf(BigDecimal.ZERO);
+        huiji.setWorkhour(BigDecimal.ZERO);
+        huiji.setScgs(BigDecimal.ZERO);
+        huiji.setSjgs(BigDecimal.ZERO);
+        return huiji;
+    }
+
+    private boolean returnFlag(ProjectCostHuiji projectCostHuiji) {
+        JSONObject json = (JSONObject) JSONObject.toJSON(projectCostHuiji);
+        for (Map.Entry<String, Object> entry : json.entrySet()) {
+            if (entry.getValue() != null) return true;
+        }
+        return false;
+    }
+
+    */
+/**
+     * 添加
+     *
+     * @param projectCostHuiji
+     * @return
+     *//*
+
+    @AutoLog(value = "项目成本汇集表-添加")
+    @ApiOperation(value = "项目成本汇集表-添加", notes = "项目成本汇集表-添加")
+    //@RequiresPermissions("org.jeecg.modules:kzks_project_cost_huiji:add")
+    @PostMapping(value = "/add")
+    public Result<String> add(@RequestBody ProjectCostHuiji projectCostHuiji) {
+        projectCostHuijiService.save(projectCostHuiji);
+        return Result.OK("添加成功!");
+    }
+
+    */
+/**
+     * 编辑
+     *
+     * @param projectCostHuiji
+     * @return
+     *//*
+
+    @AutoLog(value = "项目成本汇集表-编辑")
+    @ApiOperation(value = "项目成本汇集表-编辑", notes = "项目成本汇集表-编辑")
+    //@RequiresPermissions("org.jeecg.modules:kzks_project_cost_huiji:edit")
+    @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
+    public Result<String> edit(@RequestBody ProjectCostHuiji projectCostHuiji) {
+        projectCostHuijiService.updateById(projectCostHuiji);
+        return Result.OK("编辑成功!");
+    }
+
+    */
+/**
+     * 通过id删除
+     *
+     * @param id
+     * @return
+     *//*
+
+    @AutoLog(value = "项目成本汇集表-通过id删除")
+    @ApiOperation(value = "项目成本汇集表-通过id删除", notes = "项目成本汇集表-通过id删除")
+    //@RequiresPermissions("org.jeecg.modules:kzks_project_cost_huiji:delete")
+    @DeleteMapping(value = "/delete")
+    public Result<String> delete(@RequestParam(name = "id", required = true) String id) {
+        projectCostHuijiService.removeById(id);
+        return Result.OK("删除成功!");
+    }
+
+    */
+/**
+     * 批量删除
+     *
+     * @param ids
+     * @return
+     *//*
+
+    @AutoLog(value = "项目成本汇集表-批量删除")
+    @ApiOperation(value = "项目成本汇集表-批量删除", notes = "项目成本汇集表-批量删除")
+    //@RequiresPermissions("org.jeecg.modules:kzks_project_cost_huiji:deleteBatch")
+    @DeleteMapping(value = "/deleteBatch")
+    public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
+        this.projectCostHuijiService.removeByIds(Arrays.asList(ids.split(",")));
+        return Result.OK("批量删除成功!");
+    }
+
+    */
+/**
+     * 通过id查询
+     *
+     * @param id
+     * @return
+     *//*
+
+    //@AutoLog(value = "项目成本汇集表-通过id查询")
+    @ApiOperation(value = "项目成本汇集表-通过id查询", notes = "项目成本汇集表-通过id查询")
+    @GetMapping(value = "/queryById")
+    public Result<ProjectCostHuiji> queryById(@RequestParam(name = "id", required = true) String id) {
+        ProjectCostHuiji projectCostHuiji = projectCostHuijiService.getById(id);
+        if (projectCostHuiji == null) {
+            return Result.error("未找到对应数据");
+        }
+        return Result.OK(projectCostHuiji);
+    }
+
+    */
+/**
+     * 导出excel
+     *
+     * @param request
+     * @param projectCostHuiji
+     *//*
+
+    //@RequiresPermissions("org.jeecg.modules:kzks_project_cost_huiji:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, ProjectCostHuiji projectCostHuiji) {
+        return super.exportXls(request, projectCostHuiji, ProjectCostHuiji.class, "项目成本汇集表");
+    }
+
+    */
+/**
+     * 通过excel导入数据
+     *
+     * @param request
+     * @param response
+     * @return
+     *//*
+
+    //@RequiresPermissions("kzks_project_cost_huiji:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, ProjectCostHuiji.class);
+    }
+
+    */
+/**
+     * author: dzc
+     * version: 1.0
+     * des: 将选中的任务号加入到成本模型中 (将汇集表中的status改为4)
+     * date: 2023/10/24
+     *//*
+
+    @AutoLog(value = "项目成本汇集表-添加到成本模型中")
+    @ApiOperation(value = "项目成本汇集表-添加到成本模型中", notes = "项目成本汇集表-添加到成本模型中")
+    @PostMapping(value = "/insertIntoCostModel")
+    public Result<String> insertIntoCostModel(@RequestBody List<ProjectCostHuiji> projectCostHuijis) {
+        redisUtil.removeAll(CacheKey.PROJECT_COST_HUIJI);
+        redisUtil.removeAll(CacheKey.PROJECT_COST);
+        Boolean b = costModelProductPriceService.insertIntoCostModel(projectCostHuijis);
+        if (b) {
+            return Result.OK("加入成功!");
+        }
+        return Result.OK("加入失败!");
+    }
+
+}
+*/

+ 1 - 1
module_kzks/src/main/java/org/jeecg/modules/projectCostHuiji/convert/ProjectCostHuijiCustomConvert.java

@@ -21,7 +21,7 @@ public interface ProjectCostHuijiCustomConvert {
 
     ProjectCostHuijiListVO toHuijiListVO(ProjectCostHuiji huiji, List<ProjectCostVO> children, Integer ji);
 
-    ProjectCostHuijiListVO toHuijiListVOAndYs(ProjectCostHuiji huiji, List<ProjectCostVO> children, Integer ji, BigDecimal wxysSum, BigDecimal clysSum);
+    ProjectCostHuijiListVO toHuijiListVOAndYs(ProjectCostHuiji huiji, List<ProjectCostVO> children, Integer ji);
 
     @Mapping(target ="records",source ="results" )
     Page<ProjectCostHuijiListVO> toHuijiListVOPage(Page<ProjectCostHuiji> page, List<ProjectCostHuijiListVO> results);

+ 4 - 4
module_kzks/src/main/java/org/jeecg/modules/projectCostHuiji/convert/impl/ProjectCostHuijiConverCustomImpl.java

@@ -81,8 +81,8 @@ public class ProjectCostHuijiConverCustomImpl implements ProjectCostHuijiCustomC
     }
 
     @Override
-    public ProjectCostHuijiListVO toHuijiListVOAndYs(ProjectCostHuiji huiji, List<ProjectCostVO> children, Integer ji, BigDecimal wxysSum, BigDecimal clysSum) {
-        if ( huiji == null && children == null && ji == null && wxysSum == null && clysSum == null ) {
+    public ProjectCostHuijiListVO toHuijiListVOAndYs(ProjectCostHuiji huiji, List<ProjectCostVO> children,Integer ji) {
+        if ( huiji == null && children == null) {
             return null;
         }
 
@@ -134,8 +134,8 @@ public class ProjectCostHuijiConverCustomImpl implements ProjectCostHuijiCustomC
             projectCostHuijiListVO.setBusinessManName( huiji.getBusinessManName() );
             projectCostHuijiListVO.setSjgs( huiji.getSjgs() );
             projectCostHuijiListVO.setScgs( huiji.getScgs() );
-            projectCostHuijiListVO.setWxys(wxysSum);
-            projectCostHuijiListVO.setClys(clysSum);
+            projectCostHuijiListVO.setWxys(huiji.getWxys());
+            projectCostHuijiListVO.setClys(huiji.getClys());
             projectCostHuijiListVO.setHjstatus(huiji.getHjstatus());
             projectCostHuijiListVO.setYwfzrname(huiji.getYwfzrname());
         }

+ 11 - 0
module_kzks/src/main/java/org/jeecg/modules/projectCostHuiji/entity/ProjectCostHuiji.java

@@ -38,12 +38,14 @@ public class ProjectCostHuiji implements Serializable, Cloneable {
      */
     @Excel(name = "任务号/来自科研任务", width = 15)
     @ApiModelProperty(value = "任务号/来自科研任务")
+    @TableField("taskno")
     private java.lang.String taskno;
     /**
      * 任务名称/来自科研任务
      */
     @Excel(name = "任务名称/来自科研任务", width = 15)
     @ApiModelProperty(value = "任务名称/来自科研任务")
+    @TableField("taskname")
     private java.lang.String taskname;
     /**
      * 型号/来自科研报工
@@ -310,6 +312,15 @@ public class ProjectCostHuiji implements Serializable, Cloneable {
     @ApiModelProperty(value = "主管设计师/来自科研任务")
     private java.lang.String ywfzrname;
 
+    /**设计工时*/
+    @Excel(name = "材料预算", width = 15)
+    @ApiModelProperty(value = "材料预算")
+    private java.math.BigDecimal clys;
+    /**生产工时*/
+    @Excel(name = "外协预算", width = 15)
+    @ApiModelProperty(value = "外协预算")
+    private java.math.BigDecimal wxys;
+
     @TableField(exist = false)
     private List<String> deptNames;
     @Override

+ 0 - 20
module_kzks/src/main/java/org/jeecg/modules/projectCostHuiji/entity/ProjectCostHuijiVo.java

@@ -1,20 +0,0 @@
-package org.jeecg.modules.projectCostHuiji.entity;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import org.jeecgframework.poi.excel.annotation.Excel;
-
-import java.io.Serializable;
-
-@Data
-public class ProjectCostHuijiVo extends ProjectCostHuiji  implements Serializable {
-
-    /**设计工时*/
-    @Excel(name = "材料预算", width = 15)
-    @ApiModelProperty(value = "材料预算")
-    private java.math.BigDecimal clys;
-    /**生产工时*/
-    @Excel(name = "外协预算", width = 15)
-    @ApiModelProperty(value = "外协预算")
-    private java.math.BigDecimal wxys;
-}

+ 5 - 5
module_kzks/src/main/java/org/jeecg/modules/projectCostHuiji/mapper/xml/ProjectCostHuijiMapper.xml

@@ -17,7 +17,7 @@
         sum(TaskMoney) as TaskMoney,sum(zcb) as zcb,sum(clf) as clf,sum(zyf) as zyf,sum(swf) as swf,
         sum(wxf) as wxf,sum(rldlf) as rldlf,sum(gdzczj) as gdzczj,sum(gzjlwf) as gzjlwf,sum(glf) as glf,
         sum(zjcb) as zjcb,sum(lbsy ) as lbsy,sum(workhour) as workhour,sum(sjgs) as sjgs,
-        sum(scgs) as scgs
+        sum(scgs) as scgs,sum(clys) as clys,sum(wxys) as wxys
         from kzks_project_cost_huiji
         <where>
             <if test="taskno != null  and taskno != ''">and taskno = #{taskno}</if>
@@ -43,7 +43,7 @@
         sum(TaskMoney) as TaskMoney,sum(zcb) as zcb,sum(clf) as clf,sum(zyf) as zyf,sum(swf) as swf,
         sum(wxf) as wxf,sum(rldlf) as rldlf,sum(gdzczj) as gdzczj,sum(gzjlwf) as gzjlwf,sum(glf) as glf,
         sum(zjcb) as zjcb,sum(lbsy ) as lbsy,sum(workhour) as workhour,sum(sjgs) as sjgs,
-        sum(scgs) as scgs
+        sum(scgs) as scgs,sum(clys) as clys,sum(wxys) as wxys
         from kzks_project_cost
         <where>
             <if test="taskno != null  and taskno != ''">and taskno = #{taskno}</if>
@@ -69,7 +69,7 @@
         sum(TaskMoney) as TaskMoney,sum(zcb) as zcb,sum(clf) as clf,sum(zyf) as zyf,sum(swf) as swf,
         sum(wxf) as wxf,sum(rldlf) as rldlf,sum(gdzczj) as gdzczj,sum(gzjlwf) as gzjlwf,sum(glf) as glf,
         sum(zjcb) as zjcb,sum(lbsy ) as lbsy,sum(workhour) as workhour,sum(sjgs) as sjgs,
-        sum(scgs) as scgs
+        sum(scgs) as scgs,sum(clys) as clys,sum(wxys) as wxys
         from kzks_project_cost_huiji
         where taskno in
         <foreach collection="taskNos" index="index" item="taskNo" open="(" separator="," close=")">
@@ -82,7 +82,7 @@
         sum(TaskMoney) as TaskMoney,sum(zcb) as zcb,sum(clf) as clf,sum(zyf) as zyf,sum(swf) as swf,
         sum(wxf) as wxf,sum(rldlf) as rldlf,sum(gdzczj) as gdzczj,sum(gzjlwf) as gzjlwf,sum(glf) as glf,
         sum(zjcb) as zjcb,sum(lbsy ) as lbsy,sum(workhour) as workhour,sum(sjgs) as sjgs,
-        sum(scgs) as scgs
+        sum(scgs) as scgs,sum(clys) as clys,sum(wxys) as wxys
         from kzks_project_cost
         where taskno in
         <foreach collection="taskList" index="index" item="taskno" open="(" separator="," close=")">
@@ -95,7 +95,7 @@
         sum(TaskMoney) as TaskMoney,sum(zcb) as zcb,sum(clf) as clf,sum(zyf) as zyf,sum(swf) as swf,
         sum(wxf) as wxf,sum(rldlf) as rldlf,sum(gdzczj) as gdzczj,sum(gzjlwf) as gzjlwf,sum(glf) as glf,
         sum(zjcb) as zjcb,sum(lbsy ) as lbsy,sum(workhour) as workhour,sum(sjgs) as sjgs,
-        sum(scgs) as scgs
+        sum(scgs) as scgs,sum(clys) as clys,sum(wxys) as wxys
         from kzks_project_cost_huiji
         <where>
             <if test="huiji.taskno != null  and huiji.taskno != ''">and taskno = #{huiji.taskno}</if>

+ 2 - 2
module_kzks/src/main/java/org/jeecg/modules/projectCostHuiji/vo/ProjectCostHuijiSumVO.java

@@ -2,12 +2,12 @@ package org.jeecg.modules.projectCostHuiji.vo;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import lombok.Data;
-import org.jeecg.modules.projectCostHuiji.entity.ProjectCostHuijiVo;
+import org.jeecg.modules.projectCostHuiji.entity.ProjectCostHuiji;
 
 @Data
 public class ProjectCostHuijiSumVO {
 
-    private ProjectCostHuijiVo projectCostHuijiSum;
+    private ProjectCostHuiji projectCostHuiji;
     private IPage<ProjectCostHuijiListVO> pageList;
 
 }

+ 0 - 10
module_kzks/src/main/java/org/jeecg/modules/projectPushList/controller/ProjectPushListController.java

@@ -57,16 +57,6 @@ public class ProjectPushListController extends JeecgController<ProjectPushList,
 	@Autowired
 	private CommonMethod commonMethod;
 
-	/**
-	 *   项目成本——查找并更新推送
-	 */
-	@AutoLog(value = "项目成本——查找并更新推送")
-	@ApiOperation(value="项目成本——查找并更新推送", notes="项目成本——查找并更新推送")
-	@PostMapping(value = "/addAll")
-	public Result<String> addAll() throws ExecutionException, InterruptedException {
-		return projectPushListService.addAll();
-	}
-
 
 	/**
 	 * 分页列表查询

+ 0 - 4
module_kzks/src/main/java/org/jeecg/modules/projectPushList/service/IProjectPushListService.java

@@ -15,10 +15,6 @@ import java.util.concurrent.ExecutionException;
  * @Version: V1.0
  */
 public interface IProjectPushListService extends IService<ProjectPushList> {
-
-    /**项目成本——查找并更新推送*/
-    public Result<String> addAll() throws ExecutionException, InterruptedException;
-
     /**清空推送列表*/
     public void truncateTable();
 

+ 2 - 353
module_kzks/src/main/java/org/jeecg/modules/projectPushList/service/impl/ProjectPushListServiceImpl.java

@@ -3,6 +3,7 @@ package org.jeecg.modules.projectPushList.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.dataSourceSwitch.annotation.TargetDataSource;
 import org.jeecg.modules.dataSourceSwitch.annotation.UseMasterDataSource;
 import org.jeecg.modules.kyTaskInfo.entity.KyTaskInfo;
 import org.jeecg.modules.kyTaskInfo.service.IKyTaskInfoService;
@@ -40,7 +41,7 @@ import static com.fasterxml.jackson.databind.type.LogicalType.Collection;
  * @Version: V1.0
  */
 @Service
-@UseMasterDataSource
+@TargetDataSource
 public class ProjectPushListServiceImpl extends ServiceImpl<ProjectPushListMapper, ProjectPushList> implements IProjectPushListService {
 
     @Autowired
@@ -49,356 +50,6 @@ public class ProjectPushListServiceImpl extends ServiceImpl<ProjectPushListMappe
     @Autowired
     @SuppressWarnings("all")
     private ProjectPushListMapper pushListMapper;
-    @Autowired
-    private IProjectPushSetService projectPushSetService;
-    @Autowired
-    private IProjectCostService costService;
-    @Autowired
-    private IKyTaskInfoService kyTaskInfoService;
-    @Autowired
-    private ISysUserService sysUserService;
-    @Autowired
-    private ISysDepartService departService;
-
-
-    /**项目成本——查找并更新推送*/
-    public Result<String> addAll() throws ExecutionException, InterruptedException {
-        try {
-            new Thread(() -> {
-                this.truncateTable();//清空原来的数据
-                QueryWrapper<ProjectPushSet> queryWrapper = new QueryWrapper<>();
-                List<ProjectPushSet> list2 = projectPushSetService.list(queryWrapper);
-                CompletableFuture<Void> t1 = CompletableFuture.runAsync(() -> {
-                    // 0材料费
-                    QueryWrapper<ProjectPushSet> queryWrapper1 = new QueryWrapper<>();
-                    queryWrapper1.eq("cost_type", "0");// 0材料费
-                    List<ProjectPushSet> list = projectPushSetService.list(queryWrapper1);
-                    List<ProjectPushList> pushList = new ArrayList<>();//所有的推送列表
-                    if (list != null && !list.isEmpty()) {
-                        QueryWrapper<ProjectCost> projectCostQueryWrapper;
-                        for (ProjectPushSet set : list) {
-                            String stage = set.getStage();
-                            projectCostQueryWrapper = new QueryWrapper<>();
-                            projectCostQueryWrapper.eq("clf", BigDecimal.ZERO);
-                            projectCostQueryWrapper.ge("processPercent", stage);//
-                            List<ProjectCost> projectCostList1 = costService.projectCostlist(projectCostQueryWrapper);
-
-                            List<String> roleIds = Arrays.asList(set.getPushTo().split(","));
-                            List<UserNameIDVO> userNameIdList = this.userNamesByRoleIds(roleIds);
-
-                            for (ProjectCost cost : projectCostList1) {
-                                for (UserNameIDVO vo : userNameIdList) {
-                                    //根据用户id查其所属部门的部门编码
-                                    List<String> sysOrgCodeList = this.selectDeptCodeByUserId(vo.getUserId());
-                                    String sysOrgCodes = sysOrgCodeList.stream().collect(Collectors.joining(","));
-
-                                    //判断是否为组批任务、是组批前还是组批后的任务
-                                    String remark = null;
-                                    if (cost.getPccode() != null && Objects.equals(cost.getStatus(), "1"))
-                                        remark = "(组批之后)";//组批之后
-                                    else if (cost.getPccode() != null && Objects.equals(cost.getStatus(), "0"))
-                                        remark = "(组批之前)";//组批之前
-                                    if (remark == null) remark = "";
-                                    //组推送对象
-                                    ProjectPushList push = ProjectPushListConvert.INSTANCE.toProjectPushList(
-                                            cost.getTaskno(), cost.getTaskname(), set.getId(), vo.getUsername(), set.getContent() + remark, sysOrgCodes, 0, "0");
-                                    pushList.add(push);
-
-                                    if (pushList.size() >= 10000) {
-                                        this.saveBatch(pushList);
-                                        pushList.clear();
-                                    }
-                                }
-                            }
-                        }
-                    }
-                });
-
-
-                CompletableFuture<Void> t2 = CompletableFuture.runAsync(() -> {
-                    // 1外协费
-                    QueryWrapper<ProjectPushSet> queryWrapper1 = new QueryWrapper<>();
-                    queryWrapper1.eq("cost_type", "1");// 1外协费
-                    List<ProjectPushSet> list = projectPushSetService.list(queryWrapper1);
-                    List<ProjectPushList> pushList = new ArrayList<>();//所有的推送列表
-                    if (list != null && !list.isEmpty()) {
-                        QueryWrapper<ProjectCost> projectCostQueryWrapper;
-                        for (ProjectPushSet set : list) {
-                            String stage = set.getStage();
-                            projectCostQueryWrapper = new QueryWrapper<>();
-                            projectCostQueryWrapper.eq("wxf", BigDecimal.ZERO);
-                            projectCostQueryWrapper.ge("processPercent", stage);
-                            List<ProjectCost> projectCostList1 = costService.projectCostlist(projectCostQueryWrapper);
-
-                            List<String> roleIds = Arrays.asList(set.getPushTo().split(","));
-                            List<UserNameIDVO> userNameIdList = this.userNamesByRoleIds(roleIds);
-
-                            for (ProjectCost cost : projectCostList1) {
-                                for (UserNameIDVO vo : userNameIdList) {
-                                    //根据用户id查其所属部门的部门编码
-                                    List<String> sysOrgCodeList = this.selectDeptCodeByUserId(vo.getUserId());
-                                    String sysOrgCodes = sysOrgCodeList.stream().collect(Collectors.joining(","));
-
-                                    //判断是否为组批任务、是组批前还是组批后的任务
-                                    String remark = null;
-                                    if (cost.getPccode() != null && Objects.equals(cost.getStatus(), "1"))
-                                        remark = "(组批之后)";//组批之后
-                                    else if (cost.getPccode() != null && Objects.equals(cost.getStatus(), "0"))
-                                        remark = "(组批之前)";//组批之前
-                                    if (remark == null) remark = "";
-                                    //组推送对象
-                                    ProjectPushList push = ProjectPushListConvert.INSTANCE.toProjectPushList(
-                                            cost.getTaskno(), cost.getTaskname(), set.getId(), vo.getUsername(), set.getContent() + remark, sysOrgCodes, 0, "1");
-                                    pushList.add(push);
-
-                                    if (pushList.size() >= 10000) {
-                                        this.saveBatch(pushList);
-                                        pushList.clear();
-                                    }
-                                }
-                            }
-                        }
-                    }
-                });
-
-
-                CompletableFuture<Void> t3 = CompletableFuture.runAsync(() -> {
-                    // 2人工费(工资及劳务费)
-                    QueryWrapper<ProjectPushSet> queryWrapper1 = new QueryWrapper<>();
-                    queryWrapper1.eq("cost_type", "2");// 2人工费
-                    List<ProjectPushSet> list = projectPushSetService.list(queryWrapper1);
-                    List<ProjectPushList> pushList = new ArrayList<>();//所有的推送列表
-                    if (list != null && !list.isEmpty()) {
-                        QueryWrapper<ProjectCost> projectCostQueryWrapper;
-                        for (ProjectPushSet set : list) {
-                            String stage = set.getStage();
-                            projectCostQueryWrapper = new QueryWrapper<>();
-                            projectCostQueryWrapper.eq("gzjlwf", BigDecimal.ZERO);
-                            projectCostQueryWrapper.ge("processPercent", stage);
-                            List<ProjectCost> projectCostList1 = costService.projectCostlist(projectCostQueryWrapper);
-
-                            List<String> roleIds = Arrays.asList(set.getPushTo().split(","));
-                            List<UserNameIDVO> userNameIdList = this.userNamesByRoleIds(roleIds);
-
-                            for (ProjectCost cost : projectCostList1) {
-                                for (UserNameIDVO vo : userNameIdList) {
-                                    //根据用户id查其所属部门的部门编码
-                                    List<String> sysOrgCodeList = this.selectDeptCodeByUserId(vo.getUserId());
-                                    String sysOrgCodes = sysOrgCodeList.stream().collect(Collectors.joining(","));
-
-                                    //判断是否为组批任务、是组批前还是组批后的任务
-                                    String remark = null;
-                                    if (cost.getPccode() != null && Objects.equals(cost.getStatus(), "1"))
-                                        remark = "(组批之后)";//组批之后
-                                    else if (cost.getPccode() != null && Objects.equals(cost.getStatus(), "0"))
-                                        remark = "(组批之前)";//组批之前
-                                    if (remark == null) remark = "";
-                                    //组推送对象
-                                    ProjectPushList push = ProjectPushListConvert.INSTANCE.toProjectPushList(
-                                            cost.getTaskno(), cost.getTaskname(), set.getId(), vo.getUsername(), set.getContent() + remark, sysOrgCodes, 0, "2");
-                                    pushList.add(push);
-
-                                    if (pushList.size() >= 10000) {
-                                        this.saveBatch(pushList);
-                                        pushList.clear();
-                                    }
-                                }
-                            }
-                        }
-                    }
-                });
-
-
-                CompletableFuture<Void> t4 = CompletableFuture.runAsync(() -> {
-                    // 3外协预算超限
-                    QueryWrapper<ProjectPushSet> queryWrapper1 = new QueryWrapper<>();
-                    queryWrapper1 = new QueryWrapper<>();
-                    queryWrapper1.eq("cost_type", "3");// 3外协预算超限
-                    List<ProjectPushSet> list = projectPushSetService.list(queryWrapper1);
-                    List<ProjectPushList> pushList = new ArrayList<>();//所有的推送列表
-                    if (list != null && !list.isEmpty()) {
-                        QueryWrapper<ProjectCost> projectCostQueryWrapper;
-                        for (ProjectPushSet set : list) {
-                            List<ProjectCost> projectCostList1 = costService.selectProjectCostListWhereWxysGtWxf();
-
-                            List<String> roleIds = Arrays.asList(set.getPushTo().split(","));
-                            List<UserNameIDVO> userNameIdList = this.userNamesByRoleIds(roleIds);
-
-                            for (ProjectCost cost : projectCostList1) {
-                                for (UserNameIDVO vo : userNameIdList) {
-                                    //根据用户id查其所属部门的部门编码
-                                    List<String> sysOrgCodeList = this.selectDeptCodeByUserId(vo.getUserId());
-                                    String sysOrgCodes = String.join(",", sysOrgCodeList);
-
-                                    //判断是否为组批任务、是组批前还是组批后的任务
-                                    String remark = null;
-                                    if (cost.getPccode() != null && Objects.equals(cost.getStatus(), "1"))
-                                        remark = "(组批之后)";//组批之后
-                                    else if (cost.getPccode() != null && Objects.equals(cost.getStatus(), "0"))
-                                        remark = "(组批之前)";//组批之前
-                                    if (remark == null) remark = "";
-                                    //组推送对象
-                                    ProjectPushList push = ProjectPushListConvert.INSTANCE.toProjectPushList(
-                                            cost.getTaskno(), cost.getTaskname(), set.getId(), vo.getUsername(), set.getContent() + remark, sysOrgCodes, 0, "3");
-                                    pushList.add(push);
-                                    if (pushList.size() >= 10000) {
-                                        this.saveBatch(pushList);
-                                        pushList.clear();
-                                    }
-                                }
-                            }
-                        }
-                    }
-                });
-
-
-                CompletableFuture<Void> t5 = CompletableFuture.runAsync(() -> {
-                    // 4材料预算超限
-                    QueryWrapper<ProjectPushSet> queryWrapper1 = new QueryWrapper<>();
-                    queryWrapper1 = new QueryWrapper<>();
-                    queryWrapper1.eq("cost_type", "4");// 4材料预算超限
-                    List<ProjectPushSet> list = projectPushSetService.list(queryWrapper1);
-                    List<ProjectPushList> pushList = new ArrayList<>();//所有的推送列表
-                    if (list != null && !list.isEmpty()) {
-                        QueryWrapper<ProjectCost> projectCostQueryWrapper;
-                        for (ProjectPushSet set : list) {
-                            List<ProjectCost> projectCostList1 = costService.selectProjectCostListWhereClysGtCLf();
-
-                            List<String> roleIds = Arrays.asList(set.getPushTo().split(","));
-                            List<UserNameIDVO> userNameIdList = this.userNamesByRoleIds(roleIds);
-
-                            for (ProjectCost cost : projectCostList1) {
-                                for (UserNameIDVO vo : userNameIdList) {
-                                    //根据用户id查其所属部门的部门编码
-                                    List<String> sysOrgCodeList = this.selectDeptCodeByUserId(vo.getUserId());
-                                    String sysOrgCodes = sysOrgCodeList.stream().collect(Collectors.joining(","));
-
-                                    //判断是否为组批任务、是组批前还是组批后的任务
-                                    String remark = null;
-                                    if (cost.getPccode() != null && Objects.equals(cost.getStatus(), "1"))
-                                        remark = "(组批之后)";//组批之后
-                                    else if (cost.getPccode() != null && Objects.equals(cost.getStatus(), "0"))
-                                        remark = "(组批之前)";//组批之前
-                                    if (remark == null) remark = "";
-                                    //组推送对象
-                                    ProjectPushList push = ProjectPushListConvert.INSTANCE.toProjectPushList(
-                                            cost.getTaskno(), cost.getTaskname(), set.getId(), vo.getUsername(), set.getContent() + remark, sysOrgCodes, 1, "4");
-                                    pushList.add(push);
-                                    if (pushList.size() >= 10000) {
-                                        this.saveBatch(pushList);
-                                        pushList.clear();
-                                    }
-                                }
-                            }
-                        }
-                    }
-                });
-
-                CompletableFuture<Void> t6 = CompletableFuture.runAsync(() -> {
-                    //5合同额
-                    String stage = "100";
-                    QueryWrapper<ProjectCost> projectCostQueryWrapper = new QueryWrapper<>();
-                    projectCostQueryWrapper.eq("contractfpe", BigDecimal.ZERO);
-                    projectCostQueryWrapper.eq("processPercent", stage);
-
-                    List<ProjectCost> projectCostList1 = costService.projectCostlist(projectCostQueryWrapper);
-                    List<ProjectPushList> pushList = new ArrayList<>();//所有的推送列表
-                    for (ProjectCost cost : projectCostList1) {
-                        String taskno = cost.getTaskno();
-                        String orgcode = null;
-                        String username = null;
-                        if (taskno != null) {
-                            KyTaskInfo kyTaskInfo = kyTaskInfoService.getKyTaskInfoByTaskno(taskno);
-                            if (kyTaskInfo != null) {
-                                if (kyTaskInfo.getJycsid() != null) {//下达部门id
-                                    SysDepart sysDepart = departService.getById(kyTaskInfo.getJycsid());
-                                    if (sysDepart != null) orgcode = sysDepart.getOrgCode();
-                                }
-                                if (kyTaskInfo.getBusinessmanname() != null) {
-                                    QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
-                                    wrapper.eq("realname", kyTaskInfo.getBusinessmanname());
-                                    SysUser user = sysUserService.getOne(wrapper);
-                                    if (user != null) username = user.getUsername();
-                                }
-                            }
-                        }
-
-                        //判断是否为组批任务、是组批前还是组批后的任务
-                        String remark = null;
-                        if (cost.getPccode() != null && Objects.equals(cost.getStatus(), "1")) remark = "(组批之后)";//组批之后
-                        else if (cost.getPccode() != null && Objects.equals(cost.getStatus(), "0"))
-                            remark = "(组批之前)";//组批之前
-                        if (remark == null) remark = "";
-                        ProjectPushList push = ProjectPushListConvert.INSTANCE.toProjectPushList(
-                                cost.getTaskno(), cost.getTaskname(), "", username, "请及时处理合同额" + remark, orgcode, 0, "5");
-                        pushList.add(push);
-                        if (pushList.size() >= 10000) {
-                            this.saveBatch(pushList);
-                            pushList.clear();
-                        }
-                    }
-                });
-
-
-                CompletableFuture<Void> t7 = CompletableFuture.runAsync(() -> {
-                    //6收款额
-                    String stage = "100";
-                    QueryWrapper<ProjectCost> projectCostQueryWrapper = new QueryWrapper<>();
-                    projectCostQueryWrapper.eq("TaskMoney", BigDecimal.ZERO);
-                    projectCostQueryWrapper.eq("processPercent", stage);
-                    List<ProjectCost> projectCostList2 = costService.projectCostlist(projectCostQueryWrapper);
-                    List<ProjectPushList> pushList = new ArrayList<>();//所有的推送列表
-                    for (ProjectCost cost : projectCostList2) {
-                        String taskno = cost.getTaskno();
-                        String orgcode = null;
-                        String username = null;
-                        if (taskno != null) {
-                            KyTaskInfo kyTaskInfo = kyTaskInfoService.getKyTaskInfoByTaskno(taskno);
-                            if (kyTaskInfo != null) {
-                                if (kyTaskInfo.getJycsid() != null) {//下达部门id
-                                    SysDepart sysDepart = departService.getById(kyTaskInfo.getJycsid());
-                                    if (sysDepart != null) orgcode = sysDepart.getOrgCode();
-                                }
-                                if (kyTaskInfo.getBusinessmanname() != null) {
-                                    QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
-                                    wrapper.eq("realname", kyTaskInfo.getBusinessmanname());
-                                    SysUser user = sysUserService.getOne(wrapper);
-                                    if (user != null) username = user.getUsername();
-                                }
-                            }
-                        }
-
-                        //判断是否为组批任务、是组批前还是组批后的任务
-                        String remark = null;
-                        if (cost.getPccode() != null && Objects.equals(cost.getStatus(), "1")) remark = "(组批之后)";//组批之后
-                        else if (cost.getPccode() != null && Objects.equals(cost.getStatus(), "0"))
-                            remark = "(组批之前)";//组批之前
-                        if (remark == null) remark = "";
-                        ProjectPushList push = ProjectPushListConvert.INSTANCE.toProjectPushList(
-                                cost.getTaskno(), cost.getTaskname(), "", username, "请及时处理已收款" + remark, orgcode, 0, "6");
-                        pushList.add(push);
-                        if (pushList.size() >= 10000) {
-                            this.saveBatch(pushList);
-                            pushList.clear();
-                        }
-                    }
-                });
-
-                CompletableFuture<Void> future = CompletableFuture.allOf(t1, t2, t3, t4, t5, t6, t7);
-                try {
-                    future.get();
-                } catch (InterruptedException e) {
-                } catch (ExecutionException e) {
-                    e.printStackTrace();
-                }
-            }).start();
-        }catch (Exception e){
-            e.printStackTrace();
-            return Result.ok("推送失败");
-        }
-        return Result.ok("推送成功");
-    }
-
 
     /**清空推送列表*/
     public void truncateTable(){
@@ -420,8 +71,6 @@ public class ProjectPushListServiceImpl extends ServiceImpl<ProjectPushListMappe
         QueryWrapper<ProjectPushSet> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("cost_type",0);
         List<ProjectPushSet> setList = setMapper.selectList(queryWrapper);
-
-
         List<ProjectPushList> pushListList = new ArrayList<>();
         return pushListList;
     }