2 Commit-ok efef57a7f6 ... bf1b932e63

Szerző SHA1 Üzenet Dátum
  HULEI bf1b932e63 Merge branch 'master' of http://210.51.45.41:3000/itcat_admin/aws_donenow 2 hete
  HULEI 7963ecc144 生成服务周期的时候插入月表多加一个不含税字段 2 hete

+ 28 - 10
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/controller/contractApproveController.java

@@ -2690,6 +2690,32 @@ public class contractApproveController {
     @Mapping(value = "com.awspaas.user.apps.donenow_ctt.insertPumaDataByQuarter")
     public ResponseObject insertPumaDataByQuarter(UserContext uc) {
         try {
+            // 1. 获取BO_EU_DNV_RPT_MONTH_PUMA能查到的所有有效季度
+            String queryValidQuartersSql = "SELECT DISTINCT item_quarter FROM BO_EU_DNV_RPT_MONTH_PUMA";
+            List<RowMap> validQuarterRows = DBSql.getMaps(queryValidQuartersSql);
+            Set<String> validQuarterSet = new HashSet<>();
+            for (RowMap row : validQuarterRows) {
+                Object quarterObj = row.get("item_quarter");
+                if (quarterObj != null) {
+                    validQuarterSet.add(quarterObj.toString());
+                }
+            }
+            String userName = uc.getUserName();
+
+            // 2. 查询目标表中所有旧季度,筛选出「不在白名单」的冗余季度并删除对应流程
+            if (!validQuarterSet.isEmpty()) {
+                String queryAllOldQuartersSql = "SELECT item_quarter, bindId FROM BO_EU_DNRPT_MONTH_PUMA";
+                List<RowMap> allOldQuarterRows = DBSql.getMaps(queryAllOldQuartersSql);
+                for (RowMap oldRow : allOldQuarterRows) {
+                    String oldQuarter = oldRow.get("item_quarter") == null ? null : oldRow.get("item_quarter").toString();
+                    String oldBindId = oldRow.get("bindId") == null ? null : oldRow.get("bindId").toString();
+                    // 判定冗余:现在查不到(不在白名单)+ 之前存在(有quarter)+ 有流程ID(bindId)
+                    if (StringUtils.isNotBlank(oldQuarter) && !validQuarterSet.contains(oldQuarter) && StringUtils.isNotBlank(oldBindId)) {
+                        SDK.getProcessAPI().deleteById(oldBindId, userName);
+                    }
+                }
+            }
+
             String querySql = "SELECT item_quarter, " +
                     "sum(onetime_dollars) as onetime_dollars, " +
                     "sum(tube_dollars) as tube_dollars, " +
@@ -2711,39 +2737,32 @@ public class contractApproveController {
             }
 
             List<String> detailIds = new ArrayList<>();
-            String userName = uc.getUserName();
 
             for (RowMap data : queryResult) {
-                // 保留:item_quarter 非空校验
                 Object itemQuarterObj = data.get("item_quarter");
                 if (itemQuarterObj == null) {
                     continue;
                 }
                 String itemQuarter = itemQuarterObj.toString();
 
-                // 核心步骤1:先通过SQL查询(SELECT)获取对应季度旧BO的 bindId(真实流程ID)
-                // 无eq筛选,直接用原生SQL查询,精准获取该季度对应的bindId
                 String selectBindIdSql = "SELECT bindId FROM BO_EU_DNRPT_MONTH_PUMA WHERE ITEM_QUARTER = ?";
                 RowMap oldBoRow = DBSql.getMap(selectBindIdSql, new Object[]{itemQuarter});
-                String processId = null; // 初始化流程ID(bindId)
+                String processId = null;
                 if (oldBoRow != null) {
-                    // 从查询结果中提取真实的bindId(流程ID)
                     processId = oldBoRow.get("bindId").toString();
                 }
 
-                // 核心步骤2:仅调用你需要的 SDK.getProcessAPI().deleteById(),删除旧流程(同步process表)
                 if (StringUtils.isNotBlank(processId)) {
                     SDK.getProcessAPI().deleteById(processId, userName);
                 }
 
-                // 保留:创建新流程实例和新BO(原有逻辑,无多余修改)
                 ProcessInstance processInstance = SDK.getProcessAPI().createProcessInstance(
                         "obj_516c3984931b4153b18f5445a2ed30d0",
                         uc.getUID(),
                         "彪马客户对账单-季度" + itemQuarter
                 );
 
-                String dateRange = convertQuarterToDateRange(itemQuarter);
+                    String dateRange = convertQuarterToDateRange(itemQuarter);
                 BigDecimal totalDollars = convertToBigDecimal(data.get("total_dollars"));
                 String requestAmountCn = convertNumberToChinese(totalDollars);
 
@@ -2769,7 +2788,6 @@ public class contractApproveController {
                 detailIds.add(detailBO.getId());
             }
 
-            // 构建返回结果
             Map<String, Object> result = new HashMap<>();
             result.put("isCreated", true);
             result.put("insertCount", detailIds.size());

+ 9 - 2
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/job/ServicePeriodMonthJob.java

@@ -32,7 +32,7 @@ public class ServicePeriodMonthJob implements Job {
      */
     @Override
     public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
-        List<RowMap> servicePeriodlist = DBSql.getMaps("SELECT c.*,b.UNIT_PRICE_MONTH,b.UNIT_PRICE,b.TOTAL_PRICE,b.QUANTITY AS SERVICE_QUANTITY,b.PARTYA_UNIT_PRICE_MONTH,b.PERIOD_TYPE FROM BO_EU_DNCTT_CONTRACT a JOIN bo_eu_dnctt_contract_service b ON b.CONTRACT_ID=a.ID JOIN bo_eu_dnctt_contract_service_period c ON c.CONTRACT_SERVICE_ID=b.ID  WHERE a.NAME LIKE '历峰%' AND a.CLOSED=0 AND ((b.CALC_METHOD_1STPERIOD IS NOT NULL AND b.CALC_METHOD_1STPERIOD>0) OR b.PERIOD_TYPE=609)  ORDER BY c.CONTRACT_SERVICE_ID,c.PERIOD_BEGIN_DATE");
+        List<RowMap> servicePeriodlist = DBSql.getMaps("SELECT c.*,b.UNIT_PRICE_MONTH,b.UNIT_PRICE,b.TOTAL_PRICE,b.QUANTITY AS SERVICE_QUANTITY,b.PARTYA_UNIT_PRICE_MONTH,b.PARTYA_UNIT_PRICE_MONTH_NOTAX,b.PERIOD_TYPE FROM BO_EU_DNCTT_CONTRACT a JOIN bo_eu_dnctt_contract_service b ON b.CONTRACT_ID=a.ID JOIN bo_eu_dnctt_contract_service_period c ON c.CONTRACT_SERVICE_ID=b.ID  WHERE a.NAME LIKE '历峰%' AND a.CLOSED=0 AND ((b.CALC_METHOD_1STPERIOD IS NOT NULL AND b.CALC_METHOD_1STPERIOD>0) OR b.PERIOD_TYPE=609)  ORDER BY c.CONTRACT_SERVICE_ID,c.PERIOD_BEGIN_DATE");
 
         //AND b.SERVICE_NAME='网络线路' AND b.CALC_METHOD_1STPERIOD='4599'
 
@@ -47,7 +47,9 @@ public class ServicePeriodMonthJob implements Job {
             double QUANTITY = servicePeriod.getDouble("QUANTITY");
 
             double PARTYA_UNIT_PRICE_MONTH = servicePeriod.getDouble("PARTYA_UNIT_PRICE_MONTH");//三方含税单位价格
+            double PARTYA_UNIT_PRICE_MONTH1 = servicePeriod.getDouble("PARTYA_UNIT_PRICE_MONTH_NOTAX");//三方不含税单位价格
             PARTYA_UNIT_PRICE_MONTH = PARTYA_UNIT_PRICE_MONTH * QUANTITY;
+            PARTYA_UNIT_PRICE_MONTH1 = PARTYA_UNIT_PRICE_MONTH1 * QUANTITY;
 
             String PERIOD_TYPE = servicePeriod.getString("PERIOD_TYPE");
             //一次性
@@ -62,6 +64,7 @@ public class ServicePeriodMonthJob implements Job {
                 itemBO.set("PERIOD_END_DATE", servicePeriod.get("PERIOD_END_DATE"));
                 itemBO.set("PERIOD_PRICE", servicePeriod.get("PERIOD_PRICE"));
                 itemBO.set("PARTYA_PRICE_MONTH", PARTYA_UNIT_PRICE_MONTH);
+                itemBO.set("PARTYA_UNIT_PRICE_MONTH_NOTAX", PARTYA_UNIT_PRICE_MONTH1);
                 SDK.getBOAPI().createDataBO("BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD_MONTH", itemBO, null);
                 continue;
             }
@@ -101,7 +104,11 @@ public class ServicePeriodMonthJob implements Job {
                     itemBO.set("PARTYA_PRICE_MONTH", PARTYA_UNIT_PRICE_MONTH * rated);
                 else
                     itemBO.set("PARTYA_PRICE_MONTH", 0-PARTYA_UNIT_PRICE_MONTH * rated);
-
+                double monthNotaxPrice = PARTYA_UNIT_PRICE_MONTH1 * rated;
+                if (unit_PRICE < 0) {
+                    monthNotaxPrice = 0 - monthNotaxPrice;
+                }
+                itemBO.set("PARTYA_UNIT_PRICE_MONTH_NOTAX", monthNotaxPrice);
                 SDK.getBOAPI().createDataBO("BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD_MONTH", itemBO, null);
             }
         }