Bläddra i källkod

报表插入修改

HULEI 1 månad sedan
förälder
incheckning
18a908dbbc

+ 32 - 27
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/controller/contractApproveController.java

@@ -2522,11 +2522,6 @@ public class contractApproveController {
     @Mapping(value = "com.awspaas.user.apps.donenow_ctt.insertPumaDataByQuarter")
     public ResponseObject insertPumaDataByQuarter(UserContext uc) {
         try {
-            ProcessInstance processInstance = SDK.getProcessAPI().createProcessInstance(
-                    "obj_516c3984931b4153b18f5445a2ed30d0",
-                    uc.getUID(),
-                    "彪马客户对账单-季度"
-            );
             String querySql = "SELECT item_quarter, " +
                     "sum(onetime_dollars) as onetime_dollars, " +
                     "sum(tube_dollars) as tube_dollars, " +
@@ -2538,8 +2533,7 @@ public class contractApproveController {
                     "sum(vats_service_dollars) as vats_service_dollars, " +
                     "sum(product_dollars) as product_dollars, " +
                     "sum(adsl_dollars) as adsl_dollars, " +
-                    "sum(total_dollars) as total_dollars, " +
-                    "sum(VATS_SERVICE_DOLLARS) as VATS_SERVICE_DOLLARS " +
+                    "sum(total_dollars) as total_dollars " +
                     "FROM VIEW_EU_DNV_RPT_MONTH_PUMA " +
                     "GROUP BY item_quarter";
 
@@ -2549,20 +2543,41 @@ public class contractApproveController {
             }
 
             List<String> detailIds = new ArrayList<>();
-            List<String> duplicateQuarters = new ArrayList<>();
+            String userName = uc.getUserName();
+
             for (RowMap data : queryResult) {
-                String itemQuarter = data.get("item_quarter").toString();
-                String checkDuplicateSql = "SELECT COUNT(1) FROM BO_EU_DNRPT_MONTH_PUMA WHERE ITEM_QUARTER = ?";
-                int count = DBSql.getInt(checkDuplicateSql, new Object[]{itemQuarter});
-                if (count > 0) {
-                    duplicateQuarters.add(itemQuarter);
+                // 保留: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)
+                if (oldBoRow != null) {
+                    // 从查询结果中提取真实的bindId(流程ID)
+                    processId = oldBoRow.get("bindId").toString();
+                }
 
-                String dateRange = convertQuarterToDateRange(itemQuarter);
+                // 核心步骤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);
                 BigDecimal totalDollars = convertToBigDecimal(data.get("total_dollars"));
-                String requestAmountCn = convertNumberToChinese(totalDollars); // 转大写
+                String requestAmountCn = convertNumberToChinese(totalDollars);
 
                 BO detailBO = new BO();
                 detailBO.setBindId(processInstance.getId());
@@ -2580,27 +2595,17 @@ public class contractApproveController {
                 detailBO.set("PRODUCT_DOLLARS", convertToBigDecimal(data.get("product_dollars")));
                 detailBO.set("ADSL_DOLLARS", convertToBigDecimal(data.get("adsl_dollars")));
                 detailBO.set("TOTAL_DOLLARS", totalDollars);
-                detailBO.set("VATS_SERVICE_DOLLARS", convertToBigDecimal(data.get("VATS_SERVICE_DOLLARS")));
                 detailBO.set("REQUEST_AMOUNT_CN", requestAmountCn);
 
                 SDK.getBOAPI().createDataBO("BO_EU_DNRPT_MONTH_PUMA", detailBO, uc);
                 detailIds.add(detailBO.getId());
             }
 
+            // 构建返回结果
             Map<String, Object> result = new HashMap<>();
             result.put("isCreated", true);
             result.put("insertCount", detailIds.size());
-            result.put("duplicateCount", duplicateQuarters.size());
-            result.put("duplicateQuarters", duplicateQuarters);
-            result.put("detailRecordIds", detailIds);
-
-            String message;
-            if (!duplicateQuarters.isEmpty()) {
-                message = String.format("成功创建 %d 条季度汇总明细记录,跳过 %d 条重复季度数据(重复季度:%s)",
-                        detailIds.size(), duplicateQuarters.size(), String.join(",", duplicateQuarters));
-            } else {
-                message = String.format("成功创建 %d 条季度汇总明细记录", detailIds.size());
-            }
+            String message = String.format("成功创建 %d 条季度汇总明细记录(已同步删除关联流程数据)", detailIds.size());
             result.put("message", message);
 
             ResponseObject responseObject = ResponseObject.newOkResponse();

+ 14 - 4
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/event/contractFormBeforeSave.java

@@ -44,11 +44,21 @@ public class contractFormBeforeSave extends InterruptListener {
                 LocalDate START_DATE = getLocalDate(formData.get("START_DATE"));//合同开始日期
                 LocalDate END_DATE = getLocalDate(formData.get("END_DATE"));//合同结束日期
 
-                //修改了合同开始日期
                 if (START_DATE != null && ORG_START_DATE != null && START_DATE.isEqual(ORG_START_DATE) == false) {
-                    //已审批服务周期,则不能修改合同开始时间
-                    if (DBSql.getInt("SELECT count(1) FROM BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD WHERE APPROVE_AND_POST_USER_ID IS NOT NULL AND LENGTH(APPROVE_AND_POST_USER_ID)>1 AND APPROVE_AND_POST_DATE IS NOT NULL AND CONTRACT_ID=? ", new Object[]{orgData.getId()}) > 0) {
-                        throw new BPMNError("500", "已审批服务周期,则不能修改合同开始时间");
+                    String sql = "SELECT count(1) FROM BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD " +
+                            "WHERE APPROVE_AND_POST_USER_ID IS NOT NULL " +
+                            "AND LENGTH(APPROVE_AND_POST_USER_ID)>1 " +
+                            "AND APPROVE_AND_POST_DATE IS NOT NULL " +
+                            "AND CONTRACT_ID=? " +
+                            "AND PERIOD_END_DATE > ?";
+
+                    String endDateStr = END_DATE.format(DateTimeFormatter.ISO_LOCAL_DATE);
+                    Object[] params = new Object[]{orgData.getId(), endDateStr};
+
+                    int count = DBSql.getInt(sql, params);
+
+                    if (count > 0) {
+                        throw new BPMNError("500", "已审批服务周期,且存在周期结束日期大于合同新结束日期,不能修改合同开始时间");
                     }
                 }
 

+ 19 - 7
com.awspaas.user.apps.donenow_ivt/src/com/awspaas/user/apps/donenow_ivt/controller/caiController.java

@@ -23,28 +23,40 @@ public class caiController {
             return ResponseObject.newErrResponse("订单ID不能为空");
         }
 
-        String sql = "select COST_TOTAL, ORDER_ID from bo_eu_dnivt_order_product where ORDER_ID = ?";
+        // 关键1:SQL不写别名,直接返回原始字段名(plan_amount、ORDER_ID)
+        String sql = "select plan_amount, ORDER_ID from BO_EU_DNIVT_ORDER_PAYMENT_PLAN where ORDER_ID = ?";
         List<RowMap> rowMaps = DBSql.getMaps(sql, new Object[]{orderId});
-        System.out.println("采购项查询结果数量:" + (rowMaps != null ? rowMaps.size() : 0));
+        System.out.println("付款计划查询结果数量:" + (rowMaps != null ? rowMaps.size() : 0));
 
         List<Map<String, Object>> resultList = new ArrayList<>();
         if (rowMaps != null && !rowMaps.isEmpty()) {
             for (RowMap row : rowMaps) {
                 Map<String, Object> orderItem = new HashMap<>();
-                orderItem.put("COST_TOTAL", row.getDouble("COST_TOTAL"));
+
+                // 关键2:返回原始字段名plan_amount(和数据库一致)
+                Object planAmountObj = row.get("plan_amount");
+                Double planAmount = 0.0;
+                if (planAmountObj instanceof java.math.BigDecimal) {
+                    planAmount = ((java.math.BigDecimal) planAmountObj).doubleValue();
+                } else if (planAmountObj instanceof Number) {
+                    planAmount = ((Number) planAmountObj).doubleValue();
+                }
+
+                // 直接用原始字段名作为key返回
+                orderItem.put("plan_amount", planAmount);
                 orderItem.put("ORDER_ID", row.getString("ORDER_ID"));
                 resultList.add(orderItem);
-                System.out.println("已添加采购项数据:" + orderItem);
+                System.out.println("已添加付款计划数据:" + orderItem);
             }
         } else {
             ResponseObject responseObject = ResponseObject.newOkResponse();
-            responseObject.put("message", "未找到ORDER_ID为【" + orderId + "】的采购项,可尝试检查订单ID或新建");
+            responseObject.put("message", "未找到ORDER_ID为【" + orderId + "】的付款计划,可尝试检查订单ID或新建");
             responseObject.setData(Collections.emptyList());
-            System.out.println("未查询到采购项数据,ORDER_ID:" + orderId);
+            System.out.println("未查询到付款计划数据,ORDER_ID:" + orderId);
             return responseObject;
         }
 
-        System.out.println("采购项查询最终结果总数:" + resultList.size());
+        System.out.println("付款计划查询最终结果总数:" + resultList.size());
 
         ResponseObject responseObject = ResponseObject.newOkResponse();
         responseObject.setData(resultList);