|
|
@@ -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());
|