客商erp更新优化

This commit is contained in:
liss
2025-11-19 16:45:36 +08:00
parent d325ceb06a
commit 8b187a6ff8
3 changed files with 82 additions and 33 deletions

View File

@@ -25,7 +25,7 @@ public interface ErrorCodeConstants {
ErrorCode BUSINESS_RULE_NOT_EXISTS = new ErrorCode(1_027_100_001, "规则模型不存在"); ErrorCode BUSINESS_RULE_NOT_EXISTS = new ErrorCode(1_027_100_001, "规则模型不存在");
ErrorCode BUSINESS_ALGORITHM_NOT_EXISTS = new ErrorCode(1_027_100_002, "算法模型不存在"); ErrorCode BUSINESS_ALGORITHM_NOT_EXISTS = new ErrorCode(1_027_100_002, "算法模型不存在");
ErrorCode BUSINESS_DIMENSION_NOT_EXISTS = new ErrorCode(1_027_200_001, "经营指标维度不存在"); ErrorCode BUSINESS_DIMENSION_NOT_EXISTS = new ErrorCode(1_027_200_001, "经营指标维度不存在");
ErrorCode BUSINESS_INDICATOR_NOT_EXISTS = new ErrorCode(1_027_200_002, "经营指标不存在"); ErrorCode BUSINESS_INDICATOR_NOT_EXISTS = new ErrorCode(1_027_200_002, "经营指标不存在");
ErrorCode BUSINESS_DICTIONARY_TYPE_NOT_EXISTS = new ErrorCode(1_027_200_003, "业务字典类型不存在"); ErrorCode BUSINESS_DICTIONARY_TYPE_NOT_EXISTS = new ErrorCode(1_027_200_003, "业务字典类型不存在");

View File

@@ -119,44 +119,93 @@ public class ErpCustomerServiceImpl implements ErpCustomerService {
initialize(key); initialize(key);
} }
//循环近五年日期, //循环近五年日期,
JSONArray dataArrayALL = new JSONArray(); // JSONArray dataArrayALL = new JSONArray();
LocalDate endDate = LocalDate.now(); // LocalDate endDate = LocalDate.now();
LocalDate startDate = endDate.minusYears(5); // LocalDate startDate = endDate.minusYears(5);
for (LocalDate date = startDate; !date.isAfter(endDate); date = date.plusDays(1)) { // for (LocalDate date = startDate; !date.isAfter(endDate); date = date.plusDays(1)) {
// 构建req参数 // 构建req参数
Map<String, Object> req = new HashMap<>(); Map<String, Object> req = new HashMap<>();
List<Map<String, String>> datumList = new ArrayList<>(); List<Map<String, String>> datumList = new ArrayList<>();
Map<String, String> datumEntry = new HashMap<>(); Map<String, String> datumEntry = new HashMap<>();
// 构建datum参数数组 // 构建datum参数数组
datumEntry.put("sign", "I"); datumEntry.put("sign", "I");
datumEntry.put("option", "EQ"); datumEntry.put("option", "EQ");
// 把每次循环的日期,放在这里 // 把每次循环的日期,放在这里
datumEntry.put("low", date.toString()); datumEntry.put("low", LocalDate.now().toString());
datumList.add(datumEntry); datumList.add(datumEntry);
req.put(funcnrEnum.getDatekey(), datumList); req.put(funcnrEnum.getDatekey(), datumList);
// 1. 调用ERP接口获取数据 // 1. 调用ERP接口获取数据
for (OftenEnum.ModeTypeEnum type : OftenEnum.ModeTypeEnum.values()) { HashMap<String, Object> dataFromERP = erpConfig.fetchDataFromERP(funcnr, req);
req.put("MODE", type.modetype); JSONArray dataArray = (JSONArray) dataFromERP.get("E_RESP");
HashMap<String, Object> dataFromERP = erpConfig.fetchDataFromERP(funcnr, req); // if (dataArray == null || dataArray.isEmpty()) {
JSONArray dataArray = (JSONArray) dataFromERP.get(funcnrEnum.getDatakey()); // continue;
if (dataArray == null || dataArray.isEmpty()) { // }
continue; // dataArrayALL.addAll(dataArray);
} // }
dataArrayALL.addAll(dataArray); if (dataArray.isEmpty()) {
}
}
if (dataArrayALL.isEmpty()) {
return; return;
} }
// 2. 处理数据,区分新增和更新 // 2. 处理数据,区分新增和更新
ProcessingResult result = processData(dataArrayALL, funcnrEnum); ProcessingResult result = processData(dataArray, funcnrEnum);
// 3. 批量保存数据 // 3. 批量保存数据
saveData(result); saveData(result);
} }
// @Override
// @Transactional
// @XxlJob("getErpCustomerTask")
// public void callErpRfcInterface() {
// OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.客商信息;
// String funcnr = funcnrEnum.getFuncnr();
//
// String key = "erp" + funcnrEnum.getFuncnr();
// List<String> allnumbers = myRedisConfig.getRedisCache(key);
// List<String> numbers = null;
// if (allnumbers != null) {
// //取前100的数据
// numbers = allnumbers.stream().limit(100).collect(Collectors.toList());
// JSONArray dataArrayALL = new JSONArray();
// //循环近五年日期,
// for (String number : numbers) {
// // 构建req参数
// Map<String, Object> req = new HashMap<>();
// List<Map<String, String>> datumList = new ArrayList<>();
// Map<String, String> datumEntry = new HashMap<>();
// // 构建datum参数数组
// datumEntry.put("sign", "I");
// datumEntry.put("option", "EQ");
// // 把每次循环的日期,放在这里
// datumEntry.put("low", number);
// datumList.add(datumEntry);
// req.put("PARTNER", datumList);
//
// // 1. 调用ERP接口获取数据
// for (OftenEnum.ModeTypeEnum type : OftenEnum.ModeTypeEnum.values()) {
// req.put("MODE", type.modetype);
// HashMap<String, Object> dataFromERP = erpConfig.fetchDataFromERP(funcnr, req);
// JSONArray dataArray = (JSONArray) dataFromERP.get("E_RESP");
// if (dataArray == null || dataArray.isEmpty()) {
// continue;
// }
// dataArrayALL.addAll(dataArray);
// }
// }
// if (dataArrayALL.isEmpty()) {
// return;
// }
//
// // 2. 处理数据,区分新增和更新
// ProcessingResult result = processData(dataArrayALL, funcnrEnum);
//
// // 3. 批量保存数据
// saveData(result);
// }
// }
/** /**
* 处理数据,区分新增和更新 * 处理数据,区分新增和更新
*/ */
@@ -171,7 +220,7 @@ public class ErpCustomerServiceImpl implements ErpCustomerService {
for (int i = 0; i < dataArray.size(); i++) { for (int i = 0; i < dataArray.size(); i++) {
JSONObject dataJson = dataArray.getJSONObject(i); JSONObject dataJson = dataArray.getJSONObject(i);
if (dataJson != null) { if (dataJson != null) {
String number = dataJson.getString(funcnr.getDatakey()); String number = dataJson.getString("PARTNER");
if (number != null) { if (number != null) {
number = number.trim(); number = number.trim();
} }
@@ -191,7 +240,7 @@ public class ErpCustomerServiceImpl implements ErpCustomerService {
} }
DO.setIsGiveback(dataJson.getString("XDELE")); DO.setIsGiveback(dataJson.getString("XDELE"));
DO.setIsProvisional(dataJson.getString("XBLCK")); DO.setIsProvisional(dataJson.getString("XBLCK"));
DO.setTaxNumber(dataJson.getString("TAXNO")); DO.setTaxNumber(dataJson.getString("TAXNUM"));
if (comnumbers.contains(number)) { if (comnumbers.contains(number)) {
// 更新 // 更新
@@ -217,7 +266,7 @@ public class ErpCustomerServiceImpl implements ErpCustomerService {
if (!result.toUpdate.isEmpty()) { if (!result.toUpdate.isEmpty()) {
erpCustomerMapper.updateBatchByNumber(result.toUpdate); erpCustomerMapper.updateBatchByNumber(result.toUpdate);
} }
myRedisConfig.updateRedisCache(result.key, result.allnumbers); // myRedisConfig.updateRedisCache(result.key, result.allnumbers);
} }
/** /**

View File

@@ -23,7 +23,7 @@
<if test="item.isProvisional != null">IS_PRVS = #{item.isProvisional},</if> <if test="item.isProvisional != null">IS_PRVS = #{item.isProvisional},</if>
<if test="item.taxNumber != null">TAX_NUM = #{item.taxNumber},</if> <if test="item.taxNumber != null">TAX_NUM = #{item.taxNumber},</if>
</set> </set>
WHERE NUM = #{item.downCenterNumber} WHERE NUM = #{item.number}
</foreach> </foreach>
</update> </update>
</mapper> </mapper>