浏览代码

修正了领导驾驶舱合同额与收款额取值的日期范围,新增数据源连接datax_web数据库用于查询数据同步日志

lw 1 年之前
父节点
当前提交
1d24dff1d2
共有 15 个文件被更改,包括 279 次插入463 次删除
  1. 5 0
      jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml
  2. 0 8
      module_kzks/src/main/java/org/jeecg/modules/Index/controller/IndexController.java
  3. 0 2
      module_kzks/src/main/java/org/jeecg/modules/Index/service/IndexService.java
  4. 30 245
      module_kzks/src/main/java/org/jeecg/modules/Index/service/impl/IndexServiceImpl.java
  5. 9 0
      module_kzks/src/main/java/org/jeecg/modules/costModelProductPrice/service/IKzksCostModelProductPriceService.java
  6. 189 0
      module_kzks/src/main/java/org/jeecg/modules/costModelProductPrice/service/impl/KzksCostModelProductPriceServiceImpl.java
  7. 7 0
      module_kzks/src/main/java/org/jeecg/modules/dataSourceSwitch/config/DataSourceConfig.java
  8. 4 0
      module_kzks/src/main/java/org/jeecg/modules/dataSourceSwitch/datasource/DynamicDataSourceContextHolder.java
  9. 2 1
      module_kzks/src/main/java/org/jeecg/modules/dataSourceSwitch/enums/DataSourceType.java
  10. 1 0
      module_kzks/src/main/java/org/jeecg/modules/dataSourceSwitch/service/impl/SwitchDataSourceServiceImpl.java
  11. 5 2
      module_kzks/src/main/java/org/jeecg/modules/projectCostHuiji/controller/ProjectCostHuijiController.java
  12. 2 0
      module_kzks/src/main/java/org/jeecg/modules/projectCostHuiji/mapper/ProjectCostHuijiMapper.java
  13. 3 8
      module_kzks/src/main/java/org/jeecg/modules/projectCostHuiji/service/IProjectCostHuijiService.java
  14. 2 177
      module_kzks/src/main/java/org/jeecg/modules/projectCostHuiji/service/impl/ProjectCostHuijiServiceImpl.java
  15. 20 20
      module_kzks/src/main/java/org/jeecg/modules/xmcbDetail/mapper/xml/ComContractInfoExchangeMapper.xml

+ 5 - 0
jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml

@@ -143,6 +143,11 @@ spring:
           username: root
           password: 302201
           driver-class-name: com.mysql.cj.jdbc.Driver
+        datax: # 第三个数据源
+          url: jdbc:mysql://152.136.206.27:3306/datax_web?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
+          username: itdm-boot
+          password: itdm-boot@2023
+          driver-class-name: com.mysql.cj.jdbc.Driver
 #          url: jdbc:mysql://localhost:3306/look?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
 #          username: root
 #          password: root

+ 0 - 8
module_kzks/src/main/java/org/jeecg/modules/Index/controller/IndexController.java

@@ -96,14 +96,6 @@ public class IndexController {
         return Result.ok(result);
     }
 
-
-    @ApiOperation(value = "计算合同数量", notes = "计算合同数量")
-    @GetMapping("getTotalContract")
-    public Result<IndexTotalVo> getTotalContract(HttpServletRequest request) {
-        IndexTotalVo reslut = indexService.getTotalContractNum(request);
-        return Result.ok(reslut);
-    }
-
     @ApiOperation(value = "计算已收款", notes = "计算已收款")
     @GetMapping("getTotalReceived")
     public Result<IndexTotalVo> getTotalReceived(HttpServletRequest request,List<String> departNameList) {

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

@@ -15,8 +15,6 @@ import java.util.List;
 public interface IndexService {
     IndexTotalVo getTotalIncome(HttpServletRequest request,List<String> departNameList);
 
-    IndexTotalVo getTotalContractNum(HttpServletRequest request);
-
     IndexTotalVo getTotalReceived(HttpServletRequest request,List<String> departNameList);
 
     ContractChartInfoVo getContractAmountInfo(HttpServletRequest request, IndexInfoParamDto indexInfoParamDto,List<String> departNameList);

+ 30 - 245
module_kzks/src/main/java/org/jeecg/modules/Index/service/impl/IndexServiceImpl.java

@@ -138,7 +138,6 @@ public class IndexServiceImpl implements IndexService {
             if (departNameList != null && !departNameList.isEmpty()) {
                 departNames = departNameList;
             } else {
-                //departNames = sysDepartMapper.getSysUserOfDepartNameList(sysUser.getId());
                 String[] deptIds = sysUser.getDepartIds().split(",");
                 departNames = sysDepartMapper.getDepNameByIds(deptIds);
             }
@@ -171,15 +170,14 @@ public class IndexServiceImpl implements IndexService {
             }
         }
 
+        //当年合同额,例:>= 2023-01-01 00:00:00   < 2024-01-01 00:00:00
         Calendar instance = Calendar.getInstance();
         setZeroMonth(instance);
         instance.add(Calendar.MONTH, 1);
-        instance.add(Calendar.DAY_OF_MONTH, 1);
-        Date currentYearEndDate = instance.getTime(); //加一天
+        Date currentYearEndDate = instance.getTime();
         setZeroYear(instance);
         Date currentYearBeginDate = instance.getTime();
 
-
         String finalRole = role;
         CompletableFuture<BigDecimal> currentYearTotalFuture = CompletableFuture.supplyAsync(() -> {
             //根据年份和当前部门对应的任务号查询,部门当前年的年收入
@@ -193,14 +191,13 @@ public class IndexServiceImpl implements IndexService {
             return currentYearTotal;
         });
 
+        //去年合同额,例:>= 2022-01-01 00:00:00   < 2023-01-01 00:00:00
         instance.setTime(new Date());
         instance.add(Calendar.YEAR, -1);
-        //去年的今日
         setZeroMonth(instance);
         instance.add(Calendar.MONTH, 1);
-        instance.add(Calendar.DAY_OF_MONTH, 1);
+        //去年的今日
         Date LastTqEndDate = instance.getTime();
-
         setZeroYear(instance);
         Date LastYearBeginDate = instance.getTime();
 
@@ -216,17 +213,14 @@ public class IndexServiceImpl implements IndexService {
             return lastYearTqTotal;
         });
 
-/*        instance.setTime(new Date());
-        Date currentMothEndDate = instance.getTime();
-        setZeroMonth(instance);
-        Date currentMothBginDate = instance.getTime();*/
+        //当月合同额,例:>= 2023-12-01 00:00:00   < 2024-01-01 00:00:00
         instance.setTime(new Date());
         setZeroMonth(instance);
         Date currentMothBginDate = instance.getTime();
         instance.add(Calendar.MONTH, 1);
-        instance.add(Calendar.DATE, 1);
         Date currentMothEndDate = instance.getTime();
 
+
         CompletableFuture<BigDecimal> currentMonthTotalFuture = CompletableFuture.supplyAsync(() -> {
             BigDecimal currentMonthTotal = null;
             if (AuthMark.DEPT_LEADER.equals(finalRole)) {
@@ -238,12 +232,9 @@ public class IndexServiceImpl implements IndexService {
             return currentMonthTotal;
         });
 
-
+        //上月同期已收款,例:>= 2023-11-01 00:00:00   < 2023-12-01 00:00:00
         instance.setTime(new Date());
-        instance.add(Calendar.MONTH, -1);
         setZeroMonth(instance);
-        instance.add(Calendar.MONTH, 1);
-        instance.add(Calendar.DAY_OF_MONTH, 1);
         Date LastMothTqEndDate = instance.getTime();
         setZeroMonth(instance);
         Date LastMothTqBeginDate = instance.getTime();
@@ -260,12 +251,11 @@ public class IndexServiceImpl implements IndexService {
             return lastMothTqTotal;
         });
 
-
+        //去年当月同期已收款,例:>= 2022-12-01 00:00:00   < 2023-01-01 00:00:00
         instance.setTime(new Date());
         instance.add(Calendar.YEAR, -1);
         setZeroMonth(instance);
         instance.add(Calendar.MONTH, 1);
-        instance.add(Calendar.DAY_OF_MONTH, 1);
         Date lastYearMonthTqEndDate = instance.getTime();
         setZeroMonth(instance);
         Date lastYearMonthTqBeginDate = instance.getTime();
@@ -336,219 +326,14 @@ public class IndexServiceImpl implements IndexService {
         return incomeDataInfoVO;
     }
 
-
-    /*合同数量一层*/
+    /*已收款一层*/
     @Override
-    public IndexTotalVo getTotalContractNum(HttpServletRequest request) {
-        //首页合同数量渲染对象
-        BigDecimal initValue = BigDecimal.valueOf(0);
-        IndexTotalVo totalContractNumInfoVO = new IndexTotalVo();
-        totalContractNumInfoVO.setYearTotal(initValue);
-        totalContractNumInfoVO.setYearTq(initValue);
-        totalContractNumInfoVO.setYearTb(initValue);
-        totalContractNumInfoVO.setMonthTotal(initValue);
-        totalContractNumInfoVO.setMonthHb(initValue);
-        totalContractNumInfoVO.setMonthTb(initValue);
-
+    public IndexTotalVo getTotalReceived(HttpServletRequest request, List<String> departNameList) {
         String userNameByToken = JwtUtil.getUserNameByToken(request);
         LoginUser sysUser = sysBaseApi.getUserByName(userNameByToken);
-
         String role = commonMethod.getRole(userNameByToken);
-
-        String depart = null;
-        ArrayList<String> tasknoList = new ArrayList<>();
-
-        if (AuthMark.DEPT_LEADER.equals(role)) {
-            String[] deptIds = sysUser.getDepartIds().split(",");
-            List<String> departNames = sysDepartMapper.getDepNameByIds(deptIds);
-            if (departNames.isEmpty()) return totalContractNumInfoVO;
-
-            StringBuilder stringBuilder = new StringBuilder();
-            for (String departName : departNames) {
-                stringBuilder.append(departName).append("|");
-            }
-            depart = stringBuilder.toString();
-            IndexTotalVo cacheObject = (IndexTotalVo) redisUtil.get(CacheKey.CONTRACT_DATA_REDIS_KEY + ":" + depart + ":" + role);
-            if (ObjectUtils.isNotEmpty(cacheObject)) {
-                totalContractNumInfoVO = cacheObject;
-                return totalContractNumInfoVO;
-            }
-
-            List<String> ZrbmTasknoList = projectCostMapper.queryZrbmTasknoListbydepartNames(departNames);
-            List<String> XdbmTasknoList = projectCostMapper.queryXdbmTasknoListbydepartNames(departNames);
-            tasknoList.addAll(ZrbmTasknoList);
-            tasknoList.addAll(XdbmTasknoList);
-            if (tasknoList.isEmpty()) return totalContractNumInfoVO;
-        }
-        if (depart == null) {
-            depart = "Boss";
-            IndexTotalVo cacheObject = (IndexTotalVo) redisUtil.get(CacheKey.CONTRACT_DATA_REDIS_KEY + ":" + depart + ":" + role);
-            if (ObjectUtils.isNotEmpty(cacheObject)) {
-                totalContractNumInfoVO = cacheObject;
-                return totalContractNumInfoVO;
-            }
-        }
-
-        Calendar instance = Calendar.getInstance();
-        setZeroMonth(instance);
-        instance.add(Calendar.MONTH, 1);
-        instance.add(Calendar.DAY_OF_MONTH, 1);
-        Date currentYearEndDate = instance.getTime();
-        setZeroYear(instance);
-        Date currentYearBeginDate = instance.getTime();
-
-
-        CompletableFuture<BigDecimal> currentYearTotalFuture = CompletableFuture.supplyAsync(() -> {
-            BigDecimal currentYearTotal = null;
-            if (AuthMark.DEPT_LEADER.equals(role)) {
-                //根据年份和当前部门对应的任务号查询,部门当前年的年收入
-                currentYearTotal = exchangeMapper.getContractNumYearTotalByTasknoListAndByQsrqRange(tasknoList, currentYearBeginDate, currentYearEndDate);
-            } else if (AuthMark.BOSS.equals(role)) {
-                currentYearTotal = exchangeMapper.getContractNumYearTotalByTasknoListAndByQsrqRangeIfBoss(tasknoList, currentYearBeginDate, currentYearEndDate);
-            }
-            if (ObjectUtils.isEmpty(currentYearTotal)) currentYearTotal = BigDecimal.valueOf(0);
-            return currentYearTotal;
-        });
-
-        instance.setTime(new Date());
-        instance.add(Calendar.YEAR, -1);
-        setZeroMonth(instance);
-        instance.add(Calendar.MONTH, 1);
-        instance.add(Calendar.DAY_OF_MONTH, 1);
-        //去年的今日
-        Date LastTqEndDate = instance.getTime();
-        setZeroYear(instance);
-        Date LastYearBeginDate = instance.getTime();
-
-        //根据年份和当前部门对应的任务号查询,部门去年同期年收入
-        CompletableFuture<BigDecimal> lastYearTqTotalFuture = CompletableFuture.supplyAsync(() -> {
-            BigDecimal lastYearTqTotal = null;
-            if (AuthMark.DEPT_LEADER.equals(role)) {
-                lastYearTqTotal = exchangeMapper.getContractNumYearTotalByTasknoListAndByQsrqRange(tasknoList, LastYearBeginDate, LastTqEndDate);
-            } else if (AuthMark.BOSS.equals(role)) {
-                lastYearTqTotal = exchangeMapper.getContractNumYearTotalByTasknoListAndByQsrqRangeIfBoss(tasknoList, LastYearBeginDate, LastTqEndDate);
-            }
-            if (ObjectUtils.isEmpty(lastYearTqTotal)) lastYearTqTotal = BigDecimal.valueOf(0);
-            return lastYearTqTotal;
-        });
-
-        instance.setTime(new Date());
-        setZeroMonth(instance);
-        Date currentMothBginDate = instance.getTime();
-        instance.add(Calendar.MONTH, 1);
-        instance.add(Calendar.DATE, 1);
-        Date currentMothEndDate = instance.getTime();
-
-        CompletableFuture<BigDecimal> currentMonthTotalFuture = CompletableFuture.supplyAsync(() -> {
-            BigDecimal currentMonthTotal = null;
-            if (AuthMark.DEPT_LEADER.equals(role)) {
-                currentMonthTotal = exchangeMapper.getContractNumYearTotalByTasknoListAndByQsrqRange(tasknoList, currentMothBginDate, currentMothEndDate);
-            } else if (AuthMark.BOSS.equals(role)) {
-                currentMonthTotal = exchangeMapper.getContractNumYearTotalByTasknoListAndByQsrqRangeIfBoss(tasknoList, currentMothBginDate, currentMothEndDate);
-            }
-            if (ObjectUtils.isEmpty(currentMonthTotal)) currentMonthTotal = BigDecimal.valueOf(0);
-            return currentMonthTotal;
-        });
-
-
-        instance.setTime(new Date());
-        instance.add(Calendar.MONTH, -1);
-        setZeroMonth(instance);
-        instance.add(Calendar.MONTH, 1);
-        instance.add(Calendar.DAY_OF_MONTH, 1);
-        Date LastMothTqEndDate = instance.getTime();
-        setZeroMonth(instance);
-        Date LastMothTqBeginDate = instance.getTime();
-
-
-        CompletableFuture<BigDecimal> lastMothTqTotalFuture = CompletableFuture.supplyAsync(() -> {
-            BigDecimal lastMothTqTotal = null;
-            if (AuthMark.DEPT_LEADER.equals(role)) {
-                lastMothTqTotal = exchangeMapper.getContractNumYearTotalByTasknoListAndByQsrqRange(tasknoList, LastMothTqBeginDate, LastMothTqEndDate);
-            } else if (AuthMark.BOSS.equals(role)) {
-                lastMothTqTotal = exchangeMapper.getContractNumYearTotalByTasknoListAndByQsrqRangeIfBoss(tasknoList, LastMothTqBeginDate, LastMothTqEndDate);
-            }
-            if (ObjectUtils.isEmpty(lastMothTqTotal)) lastMothTqTotal = BigDecimal.valueOf(0);
-            return lastMothTqTotal;
-        });
-
-
-        instance.setTime(new Date());
-        instance.add(Calendar.YEAR, -1);
-        setZeroMonth(instance);
-        instance.add(Calendar.MONTH, 1);
-        instance.add(Calendar.DAY_OF_MONTH, 1);
-        Date lastYearMonthTqEndDate = instance.getTime();
-        setZeroMonth(instance);
-        Date lastYearMonthTqBeginDate = instance.getTime();
-
-        CompletableFuture<BigDecimal> lastYearMonthTqTotalFuture = CompletableFuture.supplyAsync(() -> {
-            BigDecimal lastYearMonthTqTotal = null;
-            if (AuthMark.DEPT_LEADER.equals(role)) {
-                lastYearMonthTqTotal = exchangeMapper.getContractNumYearTotalByTasknoListAndByQsrqRange(tasknoList, lastYearMonthTqBeginDate, lastYearMonthTqEndDate);
-            } else if (AuthMark.BOSS.equals(role)) {
-                lastYearMonthTqTotal = exchangeMapper.getContractNumYearTotalByTasknoListAndByQsrqRangeIfBoss(tasknoList, lastYearMonthTqBeginDate, lastYearMonthTqEndDate);
-            }
-            if (ObjectUtils.isEmpty(lastYearMonthTqTotal)) lastYearMonthTqTotal = BigDecimal.valueOf(0);
-            return lastYearMonthTqTotal;
-        });
-
-        CompletableFuture<Void> future = CompletableFuture.allOf(currentYearTotalFuture, lastYearTqTotalFuture, currentMonthTotalFuture, lastMothTqTotalFuture, lastYearMonthTqTotalFuture);
-        future.join();
-        BigDecimal currentYearTotal = currentYearTotalFuture.join();
-        BigDecimal lastYearTqTotal = lastYearTqTotalFuture.join();
-        BigDecimal currentMonthTotal = currentMonthTotalFuture.join();
-        BigDecimal lastMothTqTotal = lastMothTqTotalFuture.join();
-        BigDecimal lastYearMonthTqTotal = lastYearMonthTqTotalFuture.join();
-
-        totalContractNumInfoVO.setYearTotal(currentYearTotal.setScale(2, RoundingMode.HALF_UP));
-        totalContractNumInfoVO.setYearTq(lastYearTqTotal.setScale(2, RoundingMode.HALF_UP));
-        totalContractNumInfoVO.setMonthTotal(currentMonthTotal.setScale(2, RoundingMode.HALF_UP));
-
-
-        CompletableFuture<BigDecimal> yearTbFuture = CompletableFuture.supplyAsync(() -> {
-            //去年同比
-            BigDecimal YearDifference = currentYearTotal.subtract(lastYearTqTotal);
-            BigDecimal incomeYearTb = BigDecimal.valueOf(1);
-            if (lastYearTqTotal.compareTo(BigDecimal.valueOf(0)) != 0)
-                incomeYearTb = YearDifference.divide(lastYearTqTotal, 2, RoundingMode.HALF_UP);
-            return incomeYearTb;
-        });
-
-        CompletableFuture<BigDecimal> mothHbFuture = CompletableFuture.supplyAsync(() -> {
-            BigDecimal MothDifference = currentMonthTotal.subtract(lastMothTqTotal);
-            BigDecimal incomeMothHb = BigDecimal.valueOf(1);
-            if (lastMothTqTotal.compareTo(BigDecimal.valueOf(0)) != 0)
-                incomeMothHb = MothDifference.divide(lastMothTqTotal, 2, RoundingMode.HALF_UP);
-            return incomeMothHb;
-        });
-
-        CompletableFuture<BigDecimal> yearMothTbFuture = CompletableFuture.supplyAsync(() -> {
-            BigDecimal yearMothDifference = currentMonthTotal.subtract(lastYearMonthTqTotal);
-            BigDecimal incomeYearMothTb = BigDecimal.valueOf(1);
-            if (lastYearMonthTqTotal.compareTo(BigDecimal.valueOf(0)) != 0)
-                incomeYearMothTb = yearMothDifference.divide(lastYearMonthTqTotal, 2, RoundingMode.HALF_UP);
-            return incomeYearMothTb;
-        });
-
-        CompletableFuture<Void> future1 = CompletableFuture.allOf(yearTbFuture, mothHbFuture, yearMothTbFuture);
-        future1.join();
-        BigDecimal yearTb = yearTbFuture.join();
-        BigDecimal mothHb = mothHbFuture.join();
-        BigDecimal yearMothTb = yearMothTbFuture.join();
-        totalContractNumInfoVO.setYearTb(yearTb.setScale(2, RoundingMode.HALF_UP));
-        totalContractNumInfoVO.setMonthTb(yearMothTb.setScale(2, RoundingMode.HALF_UP));
-        totalContractNumInfoVO.setMonthHb(mothHb.setScale(2, RoundingMode.HALF_UP));
-
-        redisUtil.set(CacheKey.CONTRACT_DATA_REDIS_KEY + ":" + depart + ":" + role, totalContractNumInfoVO, 1000L * 60 * 60 * 10);
-
-        return totalContractNumInfoVO;
-    }
-
-
-    /*已收款一层*/
-    @Override
-    public IndexTotalVo getTotalReceived(HttpServletRequest request, List<String> departNameList) {
+        if (departNameList != null && !departNameList.isEmpty() && AuthMark.BOSS.equals(role))
+            role = AuthMark.DEPT_LEADER;
         //首页已收款渲染对象
         BigDecimal initValue = BigDecimal.valueOf(0);
         IndexTotalVo indexTotalVo = new IndexTotalVo();
@@ -558,12 +343,10 @@ public class IndexServiceImpl implements IndexService {
         indexTotalVo.setMonthTotal(initValue);
         indexTotalVo.setMonthHb(initValue);
         indexTotalVo.setMonthTb(initValue);
+        //sl添加,计算利润额使用
+        indexTotalVo.setMonthTq(initValue);
+        indexTotalVo.setMonthLast(initValue);
 
-        String userNameByToken = JwtUtil.getUserNameByToken(request);
-        LoginUser sysUser = sysBaseApi.getUserByName(userNameByToken);
-        String role = commonMethod.getRole(userNameByToken);
-        if (departNameList != null && !departNameList.isEmpty() && AuthMark.BOSS.equals(role))
-            role = AuthMark.DEPT_LEADER;
         String depart = null;
         ArrayList<String> tasknoList = new ArrayList<>();
 
@@ -604,15 +387,14 @@ public class IndexServiceImpl implements IndexService {
             }
         }
 
+        //当年已收款,例:>= 2023-01-01 00:00:00   < 2024-01-01 00:00:00
         Calendar instance = Calendar.getInstance();
         setZeroMonth(instance);
         instance.add(Calendar.MONTH, 1);
-        instance.add(Calendar.DAY_OF_MONTH, 1);
         Date currentYearEndDate = instance.getTime();
         setZeroYear(instance);
         Date currentYearBeginDate = instance.getTime();
 
-
         String finalRole = role;
         CompletableFuture<BigDecimal> currentYearTotalFuture = CompletableFuture.supplyAsync(() -> {
 
@@ -626,11 +408,11 @@ public class IndexServiceImpl implements IndexService {
             return currentYearTotal;
         });
 
+        //去年已收款,例:>= 2022-01-01 00:00:00   < 2023-01-01 00:00:00
         instance.setTime(new Date());
         instance.add(Calendar.YEAR, -1);
         setZeroMonth(instance);
         instance.add(Calendar.MONTH, 1);
-        instance.add(Calendar.DAY_OF_MONTH, 1);
         //去年的今日
         Date LastTqEndDate = instance.getTime();
         setZeroYear(instance);
@@ -647,11 +429,11 @@ public class IndexServiceImpl implements IndexService {
             return lastYearTqTotal;
         });
 
+        //当月已收款,例:>= 2023-12-01 00:00:00   < 2024-01-01 00:00:00
         instance.setTime(new Date());
         setZeroMonth(instance);
         Date currentMothBginDate = instance.getTime();
         instance.add(Calendar.MONTH, 1);
-        instance.add(Calendar.DATE, 1);
         Date currentMothEndDate = instance.getTime();
 
         CompletableFuture<BigDecimal> currentMonthTotalFuture = CompletableFuture.supplyAsync(() -> {
@@ -665,12 +447,9 @@ public class IndexServiceImpl implements IndexService {
             return currentMonthTotal;
         });
 
-
+        //上月同期已收款,例:>= 2023-11-01 00:00:00   < 2023-12-01 00:00:00
         instance.setTime(new Date());
-        instance.add(Calendar.MONTH, -1);
         setZeroMonth(instance);
-        instance.add(Calendar.MONTH, 1);
-        instance.add(Calendar.DAY_OF_MONTH, 1);
         Date LastMothTqEndDate = instance.getTime();
         setZeroMonth(instance);
         Date LastMothTqBeginDate = instance.getTime();
@@ -687,12 +466,11 @@ public class IndexServiceImpl implements IndexService {
             return lastMothTqTotal;
         });
 
-
+        //去年当月同期已收款,例:>= 2022-12-01 00:00:00   < 2023-01-01 00:00:00
         instance.setTime(new Date());
         instance.add(Calendar.YEAR, -1);
         setZeroMonth(instance);
         instance.add(Calendar.MONTH, 1);
-        instance.add(Calendar.DAY_OF_MONTH, 1);
         Date lastYearMonthTqEndDate = instance.getTime();
         setZeroMonth(instance);
         Date lastYearMonthTqBeginDate = instance.getTime();
@@ -719,10 +497,12 @@ public class IndexServiceImpl implements IndexService {
         indexTotalVo.setYearTotal(currentYearTotal.setScale(2, RoundingMode.HALF_UP));
         indexTotalVo.setYearTq(lastYearTqTotal.setScale(2, RoundingMode.HALF_UP));
         indexTotalVo.setMonthTotal(currentMonthTotal.setScale(2, RoundingMode.HALF_UP));
-
+        //sl添加,计算利润额使用
+        indexTotalVo.setMonthTq(lastYearMonthTqTotal);
+        indexTotalVo.setMonthLast(lastMothTqTotal);
 
         CompletableFuture<BigDecimal> yearTbFuture = CompletableFuture.supplyAsync(() -> {
-            //去年同比
+            //同比
             BigDecimal YearDifference = currentYearTotal.subtract(lastYearTqTotal);
             BigDecimal incomeYearTb = BigDecimal.valueOf(1);
             if (lastYearTqTotal.compareTo(BigDecimal.valueOf(0)) != 0)
@@ -730,6 +510,7 @@ public class IndexServiceImpl implements IndexService {
             return incomeYearTb;
         });
 
+            //环比
         CompletableFuture<BigDecimal> mothHbFuture = CompletableFuture.supplyAsync(() -> {
             BigDecimal MothDifference = currentMonthTotal.subtract(lastMothTqTotal);
             BigDecimal incomeMothHb = BigDecimal.valueOf(1);
@@ -737,7 +518,7 @@ public class IndexServiceImpl implements IndexService {
                 incomeMothHb = MothDifference.divide(lastMothTqTotal, 2, RoundingMode.HALF_UP);
             return incomeMothHb;
         });
-
+            //同期
         CompletableFuture<BigDecimal> yearMothTbFuture = CompletableFuture.supplyAsync(() -> {
             BigDecimal yearMothDifference = currentMonthTotal.subtract(lastYearMonthTqTotal);
             BigDecimal incomeYearMothTb = BigDecimal.valueOf(1);
@@ -761,20 +542,24 @@ public class IndexServiceImpl implements IndexService {
     }
 
     public void setZeroYear(Calendar instance) {
+        instance.add(Calendar.DAY_OF_MONTH,-1);
         instance.set(Calendar.MONTH, 0);
         instance.set(Calendar.DAY_OF_MONTH, 0);
         instance.set(Calendar.HOUR_OF_DAY, 0);
         instance.set(Calendar.MINUTE, 0);
         instance.set(Calendar.SECOND, 0);
         instance.set(Calendar.MILLISECOND, 0);
+        instance.add(Calendar.DAY_OF_MONTH,1);
     }
 
     public void setZeroMonth(Calendar instance) {
+        instance.add(Calendar.DAY_OF_MONTH,-1);
         instance.set(Calendar.DAY_OF_MONTH, 0);
         instance.set(Calendar.HOUR_OF_DAY, 0);
         instance.set(Calendar.MINUTE, 0);
         instance.set(Calendar.SECOND, 0);
         instance.set(Calendar.MILLISECOND, 0);
+        instance.add(Calendar.DAY_OF_MONTH,1);
     }
 
     /*合同额和合同数量二层图表*/

+ 9 - 0
module_kzks/src/main/java/org/jeecg/modules/costModelProductPrice/service/IKzksCostModelProductPriceService.java

@@ -29,4 +29,13 @@ public interface IKzksCostModelProductPriceService extends IService<KzksCostMode
     *   date: 2023/10/24
     */
     public int updateStatusByTasknos(String ids);
+
+    /**
+     * author: dzc
+     * version: 1.0
+     * des: 将选中的任务号加入到产品价格库中(添加到成本模型中) (将汇集表中的status改为4)
+     * date: 2023/10/24
+     */
+
+    Boolean insertIntoCostModel(List<ProjectCostHuiji> projectCostHuijis);
 }

+ 189 - 0
module_kzks/src/main/java/org/jeecg/modules/costModelProductPrice/service/impl/KzksCostModelProductPriceServiceImpl.java

@@ -1,17 +1,23 @@
 package org.jeecg.modules.costModelProductPrice.service.impl;
 
+import org.apache.commons.lang3.ObjectUtils;
 import org.jeecg.modules.costModelProductPrice.entity.KzksCostModelProductPrice;
 import org.jeecg.modules.costModelProductPrice.mapper.KzksCostModelProductPriceMapper;
 import org.jeecg.modules.costModelProductPrice.service.IKzksCostModelProductPriceService;
 import org.jeecg.modules.projectCostHuiji.entity.ProjectCostHuiji;
 import org.jeecg.modules.projectCostHuiji.mapper.ProjectCostHuijiMapper;
+import org.jeecg.modules.projectCostHuiji.service.IProjectCostHuijiService;
+import org.jeecg.modules.projectCostHuiji.service.impl.ProjectCostHuijiServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
+import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Optional;
 
 /**
  * @Description: kzks_cost_model_product_price
@@ -30,6 +36,9 @@ public class KzksCostModelProductPriceServiceImpl extends ServiceImpl<KzksCostMo
     @SuppressWarnings("all")
     private ProjectCostHuijiMapper projectCostHuijiMapper;
 
+    @Autowired
+    private IProjectCostHuijiService projectCostHuijiService;
+
     /**
      *   author: dzc
      *   version: 1.0
@@ -55,4 +64,184 @@ public class KzksCostModelProductPriceServiceImpl extends ServiceImpl<KzksCostMo
         int i = projectCostHuijiMapper.updateStatus2(tasknoList);
         return i;
     }
+
+    /**
+     * author: dzc
+     * version: 1.0
+     * des: 将选中的任务号加入到产品价格库中(添加到成本模型中) (将汇集表中的status改为4)
+     * date: 2023/10/24
+     */
+
+    @Override
+    public Boolean insertIntoCostModel(List<ProjectCostHuiji> projectCostHuijis) {
+        ArrayList<String> tasknoList = new ArrayList<>();
+        ArrayList<KzksCostModelProductPrice> productPriceList = new ArrayList<>();
+        /** 1、遍历对象集合,将任务号放入集合中 */
+        for (ProjectCostHuiji projectCostHuiji : projectCostHuijis) {
+            tasknoList.add(projectCostHuiji.getTaskno());
+            BigDecimal yzsl = BigDecimal.valueOf(0);
+            if (projectCostHuiji.getYzsl() != 0) {
+                yzsl = BigDecimal.valueOf(projectCostHuiji.getYzsl()); // 研制数量
+            }
+
+
+            // 单台 -- 预估价
+            BigDecimal oneEstimationcoat = BigDecimal.valueOf(0);
+            // 单台 -- 合同分配额
+            BigDecimal oneContractfpe = BigDecimal.valueOf(0);
+            // 单台 -- 已收款
+            BigDecimal oneTaskmoney = BigDecimal.valueOf(0);
+            // 单台 -- 总成本
+            BigDecimal oneZcb = BigDecimal.valueOf(0);
+            // 单台 -- 材料费
+            BigDecimal oneClf = BigDecimal.valueOf(0);
+            // 单台 -- 事务费
+            BigDecimal oneSwf = BigDecimal.valueOf(0);
+            // 单台 -- 外协费
+            BigDecimal oneWxf = BigDecimal.valueOf(0);
+            // 单台 -- 专用费
+            BigDecimal oneZyf = BigDecimal.valueOf(0);
+            // 单台 -- 燃料动力费
+            BigDecimal oneRldlf = BigDecimal.valueOf(0);
+            // 单台 -- 固定资产折旧费
+            BigDecimal oneGdzczj = BigDecimal.valueOf(0);
+            // 单台 -- 工资及劳务费
+            BigDecimal oneGzjlwf = BigDecimal.valueOf(0);
+            // 单台 -- 管理费
+            BigDecimal oneGlf = BigDecimal.valueOf(0);
+            // 单台 -- 装机成本
+            BigDecimal oneZjcb = BigDecimal.valueOf(0);
+            // 单台 -- 内部试验
+            BigDecimal oneLbsy = BigDecimal.valueOf(0);
+            // 单台 -- 工时
+            BigDecimal oneWorkhour = BigDecimal.valueOf(0);
+            // 单台 -- 设计工时
+            BigDecimal oneSjgs = BigDecimal.valueOf(0);
+            // 单台 -- 生产工时
+            BigDecimal oneScgs = BigDecimal.valueOf(0);
+
+            projectCostHuiji.setEstimationcoat(Optional.ofNullable(projectCostHuiji.getEstimationcoat()).orElse(BigDecimal.ZERO));
+            projectCostHuiji.setContractfpe(Optional.ofNullable(projectCostHuiji.getContractfpe()).orElse(BigDecimal.ZERO));
+            projectCostHuiji.setTaskmoney(Optional.ofNullable(projectCostHuiji.getTaskmoney()).orElse(BigDecimal.ZERO));
+            projectCostHuiji.setClf(Optional.ofNullable(projectCostHuiji.getClf()).orElse(BigDecimal.ZERO));
+            projectCostHuiji.setZcb(Optional.ofNullable(projectCostHuiji.getZcb()).orElse(BigDecimal.ZERO));
+            projectCostHuiji.setSwf(Optional.ofNullable(projectCostHuiji.getSwf()).orElse(BigDecimal.ZERO));
+            projectCostHuiji.setWxf(Optional.ofNullable(projectCostHuiji.getWxf()).orElse(BigDecimal.ZERO));
+            projectCostHuiji.setZyf(Optional.ofNullable(projectCostHuiji.getZyf()).orElse(BigDecimal.ZERO));
+            projectCostHuiji.setRldlf(Optional.ofNullable(projectCostHuiji.getRldlf()).orElse(BigDecimal.ZERO));
+            projectCostHuiji.setGdzczj(Optional.ofNullable(projectCostHuiji.getGdzczj()).orElse(BigDecimal.ZERO));
+            projectCostHuiji.setGzjlwf(Optional.ofNullable(projectCostHuiji.getGzjlwf()).orElse(BigDecimal.ZERO));
+            projectCostHuiji.setGlf(Optional.ofNullable(projectCostHuiji.getGlf()).orElse(BigDecimal.ZERO));
+            projectCostHuiji.setZjcb(Optional.ofNullable(projectCostHuiji.getZjcb()).orElse(BigDecimal.ZERO));
+            projectCostHuiji.setLbsy(Optional.ofNullable(projectCostHuiji.getLbsy()).orElse(BigDecimal.ZERO));
+            projectCostHuiji.setWorkhour(Optional.ofNullable(projectCostHuiji.getWorkhour()).orElse(BigDecimal.ZERO));
+            projectCostHuiji.setSjgs(Optional.ofNullable(projectCostHuiji.getSjgs()).orElse(BigDecimal.ZERO));
+            projectCostHuiji.setScgs(Optional.ofNullable(projectCostHuiji.getScgs()).orElse(BigDecimal.ZERO));
+
+
+            if (yzsl.compareTo(BigDecimal.ZERO) != 0) {
+                // 单台 -- 预估价
+                oneEstimationcoat = projectCostHuiji.getEstimationcoat().divide(yzsl, 5, BigDecimal.ROUND_HALF_UP);
+                // 单台 -- 合同分配额
+                oneContractfpe = projectCostHuiji.getContractfpe().divide(yzsl, 5, BigDecimal.ROUND_HALF_UP);
+                // 单台 -- 已收款
+                oneTaskmoney = projectCostHuiji.getTaskmoney().divide(yzsl, 5, BigDecimal.ROUND_HALF_UP);
+                // 单台 -- 总成本
+                oneZcb = projectCostHuiji.getZcb().divide(yzsl, 5, BigDecimal.ROUND_HALF_UP);
+                // 单台 -- 材料费
+                oneClf = projectCostHuiji.getClf().divide(yzsl, 5, BigDecimal.ROUND_HALF_UP);
+                // 单台 -- 事务费
+                oneSwf = projectCostHuiji.getSwf().divide(yzsl, 5, BigDecimal.ROUND_HALF_UP);
+                // 单台 -- 外协费
+                oneWxf = projectCostHuiji.getWxf().divide(yzsl, 5, BigDecimal.ROUND_HALF_UP);
+                // 单台 -- 专用费
+                oneZyf = projectCostHuiji.getZyf().divide(yzsl, 5, BigDecimal.ROUND_HALF_UP);
+                // 单台 -- 燃料动力费
+                oneRldlf = projectCostHuiji.getRldlf().divide(yzsl, 5, BigDecimal.ROUND_HALF_UP);
+                // 单台 -- 固定资产折旧费
+                oneGdzczj = projectCostHuiji.getGdzczj().divide(yzsl, 5, BigDecimal.ROUND_HALF_UP);
+                // 单台 -- 工资及劳务费
+                oneGzjlwf = projectCostHuiji.getGzjlwf().divide(yzsl, 5, BigDecimal.ROUND_HALF_UP);
+                // 单台 -- 管理费
+                oneGlf = projectCostHuiji.getGlf().divide(yzsl, 5, BigDecimal.ROUND_HALF_UP);
+                // 单台 -- 装机成本
+                oneZjcb = projectCostHuiji.getZjcb().divide(yzsl, 5, BigDecimal.ROUND_HALF_UP);
+                // 单台 -- 内部试验
+                oneLbsy = projectCostHuiji.getLbsy().divide(yzsl, 5, BigDecimal.ROUND_HALF_UP);
+                // 单台 -- 工时
+                oneWorkhour = projectCostHuiji.getWorkhour().divide(yzsl, 5, BigDecimal.ROUND_HALF_UP);
+                // 单台 -- 设计工时
+                oneSjgs = projectCostHuiji.getSjgs().divide(yzsl, 5, BigDecimal.ROUND_HALF_UP);
+                // 单台 -- 生产工时
+                oneScgs = projectCostHuiji.getScgs().divide(yzsl, 5, BigDecimal.ROUND_HALF_UP);
+            }
+
+            KzksCostModelProductPrice productPrice = new KzksCostModelProductPrice();
+            productPrice.setTaskno(projectCostHuiji.getTaskno());
+            if (projectCostHuiji.getTaskname() != null) productPrice.setTaskname(projectCostHuiji.getTaskname());
+            if (projectCostHuiji.getXhname() != null) productPrice.setXhname(projectCostHuiji.getXhname());
+            if (productPrice.getJhwcsj() != null) productPrice.setJhwcsj(productPrice.getJhwcsj());
+            if (projectCostHuiji.getYzjdname() != null) productPrice.setYzjdname(projectCostHuiji.getYzjdname());
+            if (projectCostHuiji.getProcesspercent() != null && !ObjectUtils.isEmpty(projectCostHuiji.getProcesspercent())) {
+                productPrice.setProcesspercent(projectCostHuiji.getProcesspercent());
+            } else {
+                productPrice.setProcesspercent("0");
+            }
+            if (projectCostHuiji.getCostPercent() != null && !ObjectUtils.isEmpty(projectCostHuiji.getCostPercent())) {
+                productPrice.setCostPercent(projectCostHuiji.getCostPercent());
+            } else {
+                productPrice.setCostPercent("0");
+            }
+            productPrice.setYzsl(projectCostHuiji.getYzsl());
+            productPrice.setOneIncome(projectCostHuiji.getOneIncome());
+            productPrice.setOneCost(projectCostHuiji.getOneCost());
+            productPrice.setOneProfit(projectCostHuiji.getOneProfit());
+            productPrice.setLre(projectCostHuiji.getLre());
+            productPrice.setLrl(projectCostHuiji.getLrl());
+            productPrice.setEstimationcoat(oneEstimationcoat);
+            productPrice.setContractfpe(oneContractfpe);
+            productPrice.setTaskmoney(oneTaskmoney);
+            productPrice.setZcb(oneZcb);
+            productPrice.setClf(oneClf);
+            productPrice.setZyf(oneZyf);
+            productPrice.setSwf(oneSwf);
+            productPrice.setWxf(oneWxf);
+            productPrice.setRldlf(oneRldlf);
+            productPrice.setGdzczj(oneGdzczj);
+            productPrice.setGzjlwf(oneGzjlwf);
+            productPrice.setGlf(oneGlf);
+            productPrice.setZjcb(oneZjcb);
+            productPrice.setLbsy(oneLbsy);
+            productPrice.setWorkhour(oneWorkhour);
+            if (projectCostHuiji.getZrbm() != null) productPrice.setZrbm(projectCostHuiji.getZrbm());
+            if (projectCostHuiji.getJycsid() != null) productPrice.setJycsid(projectCostHuiji.getJycsid());
+            if (projectCostHuiji.getJycs() != null) productPrice.setJycs(projectCostHuiji.getJycs());
+            if (projectCostHuiji.getHxzxid() != null) productPrice.setHxzxid(projectCostHuiji.getHxzxid());
+            if (projectCostHuiji.getHxzxname() != null) productPrice.setHxzxname(projectCostHuiji.getHxzxname());
+            if (projectCostHuiji.getTasktype() != null) productPrice.setTasktype(projectCostHuiji.getTasktype());
+            if (projectCostHuiji.getAuditprice() != null) productPrice.setAuditprice(projectCostHuiji.getAuditprice());
+            if (projectCostHuiji.getIflag() != null) productPrice.setIflag(projectCostHuiji.getIflag());
+            if (projectCostHuiji.getBrief() != null) productPrice.setBrief(projectCostHuiji.getBrief());
+            if (projectCostHuiji.getReftaskno() != null) productPrice.setReftaskno(projectCostHuiji.getReftaskno());
+            if (projectCostHuiji.getPccode() != null) productPrice.setPccode(projectCostHuiji.getPccode());
+            if (projectCostHuiji.getBccode() != null) productPrice.setBccode(projectCostHuiji.getBccode());
+            if (projectCostHuiji.getBlcode() != null) productPrice.setBlcode(projectCostHuiji.getBlcode());
+            if (projectCostHuiji.getBusinessManName() != null)
+                productPrice.setBusinessManName(projectCostHuiji.getBusinessManName());
+            if (projectCostHuiji.getYwfzrname() != null) productPrice.setYwfzrname(projectCostHuiji.getYwfzrname());
+            productPrice.setSjgs(oneSjgs);
+            productPrice.setScgs(oneScgs);
+            String status = Optional.ofNullable(projectCostHuiji.getHjstatus()).orElse("0");
+            productPrice.setStatus(status);
+            productPriceList.add(productPrice);
+        }
+        /** 2、修改指定任务号的status为4 */
+        int i1 = projectCostHuijiService.updateStatus1(tasknoList);
+        /** 3、将对象的集合插入到成本模型表中 */
+        int i2 = productPriceMapper.insertBatchIntoKzksCostModelProductPrice(productPriceList);
+        if (i1 > 0 && i2 > 0) {
+            return true;
+        }
+        return false;
+    }
 }

+ 7 - 0
module_kzks/src/main/java/org/jeecg/modules/dataSourceSwitch/config/DataSourceConfig.java

@@ -29,5 +29,12 @@ public class DataSourceConfig {
         DruidDataSource build = DruidDataSourceBuilder.create().build();
         return build;
     }
+
+    @Bean(name = "datax")
+    @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.datax")
+    public DataSource dataSource3(){
+        DruidDataSource build = DruidDataSourceBuilder.create().build();
+        return build;
+    }
 }
 

+ 4 - 0
module_kzks/src/main/java/org/jeecg/modules/dataSourceSwitch/datasource/DynamicDataSourceContextHolder.java

@@ -26,6 +26,9 @@ public class DynamicDataSourceContextHolder extends AbstractRoutingDataSource
     @Resource
     private DataSource slave;
 
+    @Resource
+    private DataSource datax;
+
     public static final Logger log = LoggerFactory.getLogger(DynamicDataSourceContextHolder.class);
 
     /**
@@ -80,6 +83,7 @@ public class DynamicDataSourceContextHolder extends AbstractRoutingDataSource
         Map<Object,Object> targetDataSource = new ConcurrentHashMap<>();
         targetDataSource.put(DataSourceType.MASTER.name(),master);
         targetDataSource.put(DataSourceType.SLAVE.name(),slave);
+        targetDataSource.put(DataSourceType.DATA_X.name(),datax);
         super.setTargetDataSources(targetDataSource);
         super.setDefaultTargetDataSource(master);
         super.afterPropertiesSet();

+ 2 - 1
module_kzks/src/main/java/org/jeecg/modules/dataSourceSwitch/enums/DataSourceType.java

@@ -14,6 +14,7 @@ public enum DataSourceType {
     /**
      * 从库
      */
-    SLAVE
+    SLAVE,
 
+    DATA_X
 }

+ 1 - 0
module_kzks/src/main/java/org/jeecg/modules/dataSourceSwitch/service/impl/SwitchDataSourceServiceImpl.java

@@ -40,6 +40,7 @@ public class SwitchDataSourceServiceImpl extends ServiceImpl<SwitchDataSourceMap
         }else {
             DataSourceMark.MARK = 0;
         }
+
         switchDataSourceMapper.updateSwitchDataSource(type);
         redisCacheMethod.removeAllRedisCache();
     }

+ 5 - 2
module_kzks/src/main/java/org/jeecg/modules/projectCostHuiji/controller/ProjectCostHuijiController.java

@@ -1,6 +1,5 @@
 package org.jeecg.modules.projectCostHuiji.controller;
 
-import ch.qos.logback.core.util.TimeUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -21,6 +20,7 @@ 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;
@@ -86,6 +86,9 @@ public class ProjectCostHuijiController extends JeecgController<ProjectCostHuiji
     @Autowired
     private SysDepartMapper sysDepartMapper;
 
+    @Autowired
+    private IKzksCostModelProductPriceService costModelProductPriceService;
+
     @ApiOperation(value = "111111111111")
     @GetMapping(value = "/children1")
     public List<ProjectCostVO> children1(String taskno) {
@@ -636,7 +639,7 @@ public class ProjectCostHuijiController extends JeecgController<ProjectCostHuiji
     public Result<String> insertIntoCostModel(@RequestBody List<ProjectCostHuiji> projectCostHuijis) {
         redisUtil.removeAll(CacheKey.PROJECT_COST_HUIJI);
         redisUtil.removeAll(CacheKey.PROJECT_COST);
-        Boolean b = projectCostHuijiService.insertIntoCostModel(projectCostHuijis);
+        Boolean b = costModelProductPriceService.insertIntoCostModel(projectCostHuijis);
         if (b) {
             return Result.OK("加入成功!");
         }

+ 2 - 0
module_kzks/src/main/java/org/jeecg/modules/projectCostHuiji/mapper/ProjectCostHuijiMapper.java

@@ -1,6 +1,7 @@
 package org.jeecg.modules.projectCostHuiji.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.jeecg.modules.projectCost.entity.ProjectCost;
 import org.jeecg.modules.projectCostHuiji.entity.ProjectCostHuiji;
@@ -13,6 +14,7 @@ import java.util.List;
  * @Date:   2023-08-15
  * @Version: V1.0
  */
+@Mapper
 public interface ProjectCostHuijiMapper extends BaseMapper<ProjectCostHuiji> {
 
     /**

+ 3 - 8
module_kzks/src/main/java/org/jeecg/modules/projectCostHuiji/service/IProjectCostHuijiService.java

@@ -8,6 +8,7 @@ import org.jeecg.modules.projectCost.entity.ProjectCost;
 import org.jeecg.modules.projectCostHuiji.entity.ProjectCostHuiji;
 import org.jeecg.modules.projectCostHuiji.entity.ProjectCostHuijiCompare;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -45,13 +46,7 @@ public interface IProjectCostHuijiService extends IService<ProjectCostHuiji> {
 
     ProjectCostHuiji costHJSumByProjectCostByTaskList(List<String> taskList);
 
-    /**
-    *   author: dzc
-    *   version: 1.0
-    *   des: 将选中的任务号加入到产品价格库中(添加到成本模型中) (并将汇集表中的status改为4)
-    *   date: 2023/10/24
-    */
-    public Boolean insertIntoCostModel(List<ProjectCostHuiji> projectCostHuijis);
-
     ProjectCostHuiji costHJSumIsStaff(ProjectCostHuiji finalProjectCostHuiji, String realname);
+
+    int updateStatus1(ArrayList<String> tasknoList);
 }

+ 2 - 177
module_kzks/src/main/java/org/jeecg/modules/projectCostHuiji/service/impl/ProjectCostHuijiServiceImpl.java

@@ -141,183 +141,8 @@ public class ProjectCostHuijiServiceImpl extends ServiceImpl<ProjectCostHuijiMap
         return huijiMapper.costHJSumByProjectCostByTaskList(taskList);
     }
 
-    /**
-     * author: dzc
-     * version: 1.0
-     * des: 将选中的任务号加入到产品价格库中(添加到成本模型中) (将汇集表中的status改为4)
-     * date: 2023/10/24
-     */
     @Override
-    public Boolean insertIntoCostModel(List<ProjectCostHuiji> projectCostHuijis) {
-        ArrayList<String> tasknoList = new ArrayList<>();
-        ArrayList<KzksCostModelProductPrice> productPriceList = new ArrayList<>();
-        /** 1、遍历对象集合,将任务号放入集合中 */
-        for (ProjectCostHuiji projectCostHuiji : projectCostHuijis) {
-            tasknoList.add(projectCostHuiji.getTaskno());
-            BigDecimal yzsl = BigDecimal.valueOf(0);
-            if (projectCostHuiji.getYzsl() != 0) {
-                yzsl = BigDecimal.valueOf(projectCostHuiji.getYzsl()); // 研制数量
-            }
-
-
-            // 单台 -- 预估价
-            BigDecimal oneEstimationcoat = BigDecimal.valueOf(0);
-            // 单台 -- 合同分配额
-            BigDecimal oneContractfpe = BigDecimal.valueOf(0);
-            // 单台 -- 已收款
-            BigDecimal oneTaskmoney = BigDecimal.valueOf(0);
-            // 单台 -- 总成本
-            BigDecimal oneZcb = BigDecimal.valueOf(0);
-            // 单台 -- 材料费
-            BigDecimal oneClf = BigDecimal.valueOf(0);
-            // 单台 -- 事务费
-            BigDecimal oneSwf = BigDecimal.valueOf(0);
-            // 单台 -- 外协费
-            BigDecimal oneWxf = BigDecimal.valueOf(0);
-            // 单台 -- 专用费
-            BigDecimal oneZyf = BigDecimal.valueOf(0);
-            // 单台 -- 燃料动力费
-            BigDecimal oneRldlf = BigDecimal.valueOf(0);
-            // 单台 -- 固定资产折旧费
-            BigDecimal oneGdzczj = BigDecimal.valueOf(0);
-            // 单台 -- 工资及劳务费
-            BigDecimal oneGzjlwf = BigDecimal.valueOf(0);
-            // 单台 -- 管理费
-            BigDecimal oneGlf = BigDecimal.valueOf(0);
-            // 单台 -- 装机成本
-            BigDecimal oneZjcb = BigDecimal.valueOf(0);
-            // 单台 -- 内部试验
-            BigDecimal oneLbsy = BigDecimal.valueOf(0);
-            // 单台 -- 工时
-            BigDecimal oneWorkhour = BigDecimal.valueOf(0);
-            // 单台 -- 设计工时
-            BigDecimal oneSjgs = BigDecimal.valueOf(0);
-            // 单台 -- 生产工时
-            BigDecimal oneScgs = BigDecimal.valueOf(0);
-
-            projectCostHuiji.setEstimationcoat(Optional.ofNullable(projectCostHuiji.getEstimationcoat()).orElse(BigDecimal.ZERO));
-            projectCostHuiji.setContractfpe(Optional.ofNullable(projectCostHuiji.getContractfpe()).orElse(BigDecimal.ZERO));
-            projectCostHuiji.setTaskmoney(Optional.ofNullable(projectCostHuiji.getTaskmoney()).orElse(BigDecimal.ZERO));
-            projectCostHuiji.setClf(Optional.ofNullable(projectCostHuiji.getClf()).orElse(BigDecimal.ZERO));
-            projectCostHuiji.setZcb(Optional.ofNullable(projectCostHuiji.getZcb()).orElse(BigDecimal.ZERO));
-            projectCostHuiji.setSwf(Optional.ofNullable(projectCostHuiji.getSwf()).orElse(BigDecimal.ZERO));
-            projectCostHuiji.setWxf(Optional.ofNullable(projectCostHuiji.getWxf()).orElse(BigDecimal.ZERO));
-            projectCostHuiji.setZyf(Optional.ofNullable(projectCostHuiji.getZyf()).orElse(BigDecimal.ZERO));
-            projectCostHuiji.setRldlf(Optional.ofNullable(projectCostHuiji.getRldlf()).orElse(BigDecimal.ZERO));
-            projectCostHuiji.setGdzczj(Optional.ofNullable(projectCostHuiji.getGdzczj()).orElse(BigDecimal.ZERO));
-            projectCostHuiji.setGzjlwf(Optional.ofNullable(projectCostHuiji.getGzjlwf()).orElse(BigDecimal.ZERO));
-            projectCostHuiji.setGlf(Optional.ofNullable(projectCostHuiji.getGlf()).orElse(BigDecimal.ZERO));
-            projectCostHuiji.setZjcb(Optional.ofNullable(projectCostHuiji.getZjcb()).orElse(BigDecimal.ZERO));
-            projectCostHuiji.setLbsy(Optional.ofNullable(projectCostHuiji.getLbsy()).orElse(BigDecimal.ZERO));
-            projectCostHuiji.setWorkhour(Optional.ofNullable(projectCostHuiji.getWorkhour()).orElse(BigDecimal.ZERO));
-            projectCostHuiji.setSjgs(Optional.ofNullable(projectCostHuiji.getSjgs()).orElse(BigDecimal.ZERO));
-            projectCostHuiji.setScgs(Optional.ofNullable(projectCostHuiji.getScgs()).orElse(BigDecimal.ZERO));
-
-
-            if (yzsl.compareTo(BigDecimal.ZERO) != 0) {
-                // 单台 -- 预估价
-                oneEstimationcoat = projectCostHuiji.getEstimationcoat().divide(yzsl, 5, BigDecimal.ROUND_HALF_UP);
-                // 单台 -- 合同分配额
-                oneContractfpe = projectCostHuiji.getContractfpe().divide(yzsl, 5, BigDecimal.ROUND_HALF_UP);
-                // 单台 -- 已收款
-                oneTaskmoney = projectCostHuiji.getTaskmoney().divide(yzsl, 5, BigDecimal.ROUND_HALF_UP);
-                // 单台 -- 总成本
-                oneZcb = projectCostHuiji.getZcb().divide(yzsl, 5, BigDecimal.ROUND_HALF_UP);
-                // 单台 -- 材料费
-                oneClf = projectCostHuiji.getClf().divide(yzsl, 5, BigDecimal.ROUND_HALF_UP);
-                // 单台 -- 事务费
-                oneSwf = projectCostHuiji.getSwf().divide(yzsl, 5, BigDecimal.ROUND_HALF_UP);
-                // 单台 -- 外协费
-                oneWxf = projectCostHuiji.getWxf().divide(yzsl, 5, BigDecimal.ROUND_HALF_UP);
-                // 单台 -- 专用费
-                oneZyf = projectCostHuiji.getZyf().divide(yzsl, 5, BigDecimal.ROUND_HALF_UP);
-                // 单台 -- 燃料动力费
-                oneRldlf = projectCostHuiji.getRldlf().divide(yzsl, 5, BigDecimal.ROUND_HALF_UP);
-                // 单台 -- 固定资产折旧费
-                oneGdzczj = projectCostHuiji.getGdzczj().divide(yzsl, 5, BigDecimal.ROUND_HALF_UP);
-                // 单台 -- 工资及劳务费
-                oneGzjlwf = projectCostHuiji.getGzjlwf().divide(yzsl, 5, BigDecimal.ROUND_HALF_UP);
-                // 单台 -- 管理费
-                oneGlf = projectCostHuiji.getGlf().divide(yzsl, 5, BigDecimal.ROUND_HALF_UP);
-                // 单台 -- 装机成本
-                oneZjcb = projectCostHuiji.getZjcb().divide(yzsl, 5, BigDecimal.ROUND_HALF_UP);
-                // 单台 -- 内部试验
-                oneLbsy = projectCostHuiji.getLbsy().divide(yzsl, 5, BigDecimal.ROUND_HALF_UP);
-                // 单台 -- 工时
-                oneWorkhour = projectCostHuiji.getWorkhour().divide(yzsl, 5, BigDecimal.ROUND_HALF_UP);
-                // 单台 -- 设计工时
-                oneSjgs = projectCostHuiji.getSjgs().divide(yzsl, 5, BigDecimal.ROUND_HALF_UP);
-                // 单台 -- 生产工时
-                oneScgs = projectCostHuiji.getScgs().divide(yzsl, 5, BigDecimal.ROUND_HALF_UP);
-            }
-
-            KzksCostModelProductPrice productPrice = new KzksCostModelProductPrice();
-            productPrice.setTaskno(projectCostHuiji.getTaskno());
-            if (projectCostHuiji.getTaskname() != null) productPrice.setTaskname(projectCostHuiji.getTaskname());
-            if (projectCostHuiji.getXhname() != null) productPrice.setXhname(projectCostHuiji.getXhname());
-            if (productPrice.getJhwcsj() != null) productPrice.setJhwcsj(productPrice.getJhwcsj());
-            if (projectCostHuiji.getYzjdname() != null) productPrice.setYzjdname(projectCostHuiji.getYzjdname());
-            if (projectCostHuiji.getProcesspercent() != null && !ObjectUtils.isEmpty(projectCostHuiji.getProcesspercent())) {
-                productPrice.setProcesspercent(projectCostHuiji.getProcesspercent());
-            } else {
-                productPrice.setProcesspercent("0");
-            }
-            if (projectCostHuiji.getCostPercent() != null && !ObjectUtils.isEmpty(projectCostHuiji.getCostPercent())) {
-                productPrice.setCostPercent(projectCostHuiji.getCostPercent());
-            } else {
-                productPrice.setCostPercent("0");
-            }
-            productPrice.setYzsl(projectCostHuiji.getYzsl());
-            productPrice.setOneIncome(projectCostHuiji.getOneIncome());
-            productPrice.setOneCost(projectCostHuiji.getOneCost());
-            productPrice.setOneProfit(projectCostHuiji.getOneProfit());
-            productPrice.setLre(projectCostHuiji.getLre());
-            productPrice.setLrl(projectCostHuiji.getLrl());
-            productPrice.setEstimationcoat(oneEstimationcoat);
-            productPrice.setContractfpe(oneContractfpe);
-            productPrice.setTaskmoney(oneTaskmoney);
-            productPrice.setZcb(oneZcb);
-            productPrice.setClf(oneClf);
-            productPrice.setZyf(oneZyf);
-            productPrice.setSwf(oneSwf);
-            productPrice.setWxf(oneWxf);
-            productPrice.setRldlf(oneRldlf);
-            productPrice.setGdzczj(oneGdzczj);
-            productPrice.setGzjlwf(oneGzjlwf);
-            productPrice.setGlf(oneGlf);
-            productPrice.setZjcb(oneZjcb);
-            productPrice.setLbsy(oneLbsy);
-            productPrice.setWorkhour(oneWorkhour);
-            if (projectCostHuiji.getZrbm() != null) productPrice.setZrbm(projectCostHuiji.getZrbm());
-            if (projectCostHuiji.getJycsid() != null) productPrice.setJycsid(projectCostHuiji.getJycsid());
-            if (projectCostHuiji.getJycs() != null) productPrice.setJycs(projectCostHuiji.getJycs());
-            if (projectCostHuiji.getHxzxid() != null) productPrice.setHxzxid(projectCostHuiji.getHxzxid());
-            if (projectCostHuiji.getHxzxname() != null) productPrice.setHxzxname(projectCostHuiji.getHxzxname());
-            if (projectCostHuiji.getTasktype() != null) productPrice.setTasktype(projectCostHuiji.getTasktype());
-            if (projectCostHuiji.getAuditprice() != null) productPrice.setAuditprice(projectCostHuiji.getAuditprice());
-            if (projectCostHuiji.getIflag() != null) productPrice.setIflag(projectCostHuiji.getIflag());
-            if (projectCostHuiji.getBrief() != null) productPrice.setBrief(projectCostHuiji.getBrief());
-            if (projectCostHuiji.getReftaskno() != null) productPrice.setReftaskno(projectCostHuiji.getReftaskno());
-            if (projectCostHuiji.getPccode() != null) productPrice.setPccode(projectCostHuiji.getPccode());
-            if (projectCostHuiji.getBccode() != null) productPrice.setBccode(projectCostHuiji.getBccode());
-            if (projectCostHuiji.getBlcode() != null) productPrice.setBlcode(projectCostHuiji.getBlcode());
-            if (projectCostHuiji.getBusinessManName() != null)
-                productPrice.setBusinessManName(projectCostHuiji.getBusinessManName());
-            if (projectCostHuiji.getYwfzrname() != null) productPrice.setYwfzrname(projectCostHuiji.getYwfzrname());
-            productPrice.setSjgs(oneSjgs);
-            productPrice.setScgs(oneScgs);
-            String status = Optional.ofNullable(projectCostHuiji.getHjstatus()).orElse("0");
-            productPrice.setStatus(status);
-            productPriceList.add(productPrice);
-        }
-        /** 2、修改指定任务号的status为4 */
-        int i1 = huijiMapper.updateStatus1(tasknoList);
-        /** 3、将对象的集合插入到成本模型表中 */
-        int i2 = productPriceMapper.insertBatchIntoKzksCostModelProductPrice(productPriceList);
-        if (i1 > 0 && i2 > 0) {
-            return true;
-        }
-        return false;
+    public int updateStatus1(ArrayList<String> tasknoList) {
+        return huijiMapper.updateStatus1(tasknoList);
     }
-
 }

+ 20 - 20
module_kzks/src/main/java/org/jeecg/modules/xmcbDetail/mapper/xml/ComContractInfoExchangeMapper.xml

@@ -5,8 +5,8 @@
     <select id="getIncomeYearTotalByTasknoListAndByQsrqRange" resultType="java.math.BigDecimal">
         select sum(a.htfpe)
         from (select rwbh,htfpe,qsrq from com_contract_info_exchange where sjly = 20) a
-        where a.qsrq > #{beginDate}
-        and a.qsrq <![CDATA[ <= ]]> #{endDate}
+        where a.qsrq <![CDATA[ >= ]]> #{beginDate}
+        and a.qsrq &lt; #{endDate}
         and a.rwbh in
         <foreach item='item' index='index' collection='tasknoList' open='(' separator=',' close=')'>
             #{item}
@@ -16,16 +16,16 @@
     <select id="getIncomeYearTotalByTasknoListAndByQsrqRangeIfBoss" resultType="java.math.BigDecimal">
         select sum(a.htfpe)
         from (select htfpe, qsrq from com_contract_info_exchange where sjly = 20) a
-        where a.qsrq > #{beginDate}
-                  and a.qsrq <![CDATA[ <= ]]> #{endDate}
+        where a.qsrq <![CDATA[ >= ]]> #{beginDate}
+                  and a.qsrq &lt; #{endDate}
     </select>
 
 
     <select id="getContractNumYearTotalByTasknoListAndByQsrqRange" resultType="java.math.BigDecimal">
         select count(distinct(a.htbh))
         from (select rwbh,qsrq,htbh from com_contract_info_exchange where sjly = 20) a
-        where a.qsrq > #{beginDate}
-        and  a.qsrq <![CDATA[ <= ]]> #{endDate}
+        where a.qsrq <![CDATA[ >= ]]> #{beginDate}
+        and  a.qsrq &lt; #{endDate}
         and a.htbh is not null
         and a.rwbh in
         <foreach item='item' index='index' collection='tasknoList' open='(' separator=',' close=')'>
@@ -36,16 +36,16 @@
     <select id="getContractNumYearTotalByTasknoListAndByQsrqRangeIfBoss" resultType="java.math.BigDecimal">
         select count(distinct(a.htbh))
         from (select qsrq,htbh from com_contract_info_exchange where sjly = 20) a
-        where a.qsrq > #{beginDate}
-            and a.qsrq <![CDATA[ <= ]]> #{endDate}
+        where a.qsrq <![CDATA[ >= ]]> #{beginDate}
+            and a.qsrq &lt; #{endDate}
           and a.htbh is not null
     </select>
 
     <select id="getReceivedYearTotalByTasknoListAndByQsrqRange" resultType="java.math.BigDecimal">
         select sum(a.rwskje)
         from (select rwbh,dkhpdqrq,rwskje from com_contract_info_exchange where sjly = 40) a
-        where a.dkhpdqrq > #{beginDate}
-        and a.dkhpdqrq <![CDATA[ <= ]]> #{endDate}
+        where a.dkhpdqrq <![CDATA[ >= ]]> #{beginDate}
+        and a.dkhpdqrq &lt; #{endDate}
         and a.rwbh in
         <foreach item='item' index='index' collection='tasknoList' open='(' separator=',' close=')'>
             #{item}
@@ -55,8 +55,8 @@
     <select id="getReceivedYearTotalByTasknoListAndByQsrqRangeIfBoss" resultType="java.math.BigDecimal">
         select sum(a.rwskje)
         from (select dkhpdqrq, rwskje from com_contract_info_exchange where sjly = 40) a
-        where a.dkhpdqrq > #{beginDate}
-                  and a.dkhpdqrq <![CDATA[ <= ]]> #{endDate}
+        where a.dkhpdqrq  <![CDATA[ >= ]]> #{beginDate}
+                  and a.dkhpdqrq &lt; #{endDate}
     </select>
 
 
@@ -70,8 +70,8 @@
         "-",
         LPAD( MONTH (qsrq), 2, "0" )) AS date
         from (select rwbh,htfpe,qsrq,htbh from com_contract_info_exchange where sjly = 20) a
-        where a.qsrq > #{beginDate}
-        and a.qsrq <![CDATA[ <= ]]> #{endDate}
+        where a.qsrq <![CDATA[ >= ]]> #{beginDate}
+        and a.qsrq &lt; #{endDate}
         and a.rwbh in
         <foreach item='item' index='index' collection='tasknoList' open='(' separator=',' close=')'>
             #{item}
@@ -90,8 +90,8 @@
         "-",
         LPAD( MONTH (qsrq), 2, "0" )) AS date
         from (select rwbh,htfpe,qsrq,htbh from com_contract_info_exchange where sjly = 20) a
-        where a.qsrq > #{beginDate}
-        and a.qsrq <![CDATA[ <= ]]> #{endDate}
+        where a.qsrq <![CDATA[ >= ]]> #{beginDate}
+        and a.qsrq &lt; #{endDate}
         GROUP BY YEAR(qsrq),MONTH (qsrq)
     </select>
 
@@ -102,8 +102,8 @@
         DISTINCT (htbh)) AS contractTotal,
         YEAR (qsrq) AS Date
         from (select rwbh,htfpe,qsrq,htbh from com_contract_info_exchange where sjly = 20) a
-        where a.qsrq > #{beginDate}
-        and a.qsrq <![CDATA[ <= ]]> #{endDate}
+        where a.qsrq <![CDATA[ >= ]]> #{beginDate}
+        and a.qsrq &lt; #{endDate}
         and a.rwbh in
         <foreach item='item' index='index' collection='tasknoList' open='(' separator=',' close=')'>
             #{item}
@@ -119,8 +119,8 @@
         DISTINCT (htbh)) AS contractTotal,
         YEAR (qsrq) AS Date
         from (select rwbh,htfpe,qsrq,htbh from com_contract_info_exchange where sjly = 20) a
-        where a.qsrq > #{beginDate}
-        and a.qsrq <![CDATA[ <= ]]> #{endDate}
+        where a.qsrq <![CDATA[ >= ]]> #{beginDate}
+        and a.qsrq &lt; #{endDate}
         GROUP BY YEAR(qsrq)
     </select>