From f72dd902d364419b9522b48d005e9501d0df250d Mon Sep 17 00:00:00 2001
From: cl <1442464845@qq.com>
Date: 星期三, 08 四月 2026 09:12:38 +0800
Subject: [PATCH] 批量新增修改
---
rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsErpServiceImpl.java | 111 +++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 102 insertions(+), 9 deletions(-)
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsErpServiceImpl.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsErpServiceImpl.java
index 7b1a0d0..cab0e10 100644
--- a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsErpServiceImpl.java
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsErpServiceImpl.java
@@ -26,6 +26,9 @@
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springframework.web.client.RestTemplate;
import java.util.*;
@@ -128,10 +131,9 @@
* 浠� 8.3 鏂囨。瀛楁涓轰富锛岃浆鍙戠珛搴撴椂鏄犲皠涓烘湇鍔$ SyncOrderParams 瀛楁銆�
*/
@Override
+ @Transactional(rollbackFor = Exception.class)
public CommonResponse addOrUpdateOrder(ErpOpParams params) {
- if (Objects.isNull(params.getOrderNo()) || params.getOrderNo().isEmpty()) {
- throw new CoolException("璁㈠崟鍙蜂笉鑳戒负绌猴紒锛�");
- }
+ assertValidForSync(params);
if (Integer.valueOf(3).equals(params.getOperateType())) {
log.info("order/add 鏀跺埌 operateType=3锛岃蛋缁熶竴鍙栨秷閫昏緫锛� {}", params.getOrderNo());
return doCancel(params);
@@ -146,13 +148,86 @@
return r;
}
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public CommonResponse addOrUpdateOrders(List<ErpOpParams> paramsList) {
+ if (paramsList == null || paramsList.isEmpty()) {
+ throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+ List<Map<String, Object>> errorRows = new ArrayList<>();
+ for (ErpOpParams params : paramsList) {
+ String orderNo = params != null ? params.getOrderNo() : null;
+ try {
+ addOrUpdateOrder(params);
+ } catch (CoolException e) {
+ Map<String, Object> row = new LinkedHashMap<>();
+ row.put("orderNo", orderNo);
+ row.put("msg", e.getMessage());
+ errorRows.add(row);
+ log.warn("order/addAll 鍗曟潯澶辫触 orderNo={} : {}", orderNo, e.getMessage());
+ } catch (Exception e) {
+ Map<String, Object> row = new LinkedHashMap<>();
+ row.put("orderNo", orderNo);
+ row.put("msg", e.getMessage() != null ? e.getMessage() : "璇锋眰寮傚父");
+ errorRows.add(row);
+ log.warn("order/addAll 鍗曟潯寮傚父 orderNo={}", orderNo, e);
+ }
+ }
+ if (!errorRows.isEmpty()) {
+ if (TransactionSynchronizationManager.isActualTransactionActive()) {
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ }
+ Map<String, Object> data = new LinkedHashMap<>();
+ data.put("result", ResultData.FAIL);
+ data.put("failCount", errorRows.size());
+ data.put("items", errorRows);
+ CommonResponse r = new CommonResponse();
+ r.setCode(500);
+ r.setMsg("鍏� " + errorRows.size() + " 鏉″け璐ワ紝鏈湴浜嬪姟宸插洖婊氾紝璇﹁ data.items");
+ r.setData(data);
+ return r;
+ }
+ CommonResponse r = new CommonResponse();
+ r.setCode(200);
+ r.setMsg("鎿嶄綔鎴愬姛");
+ r.setData(ResultData.success());
+ return r;
+ }
+
+ /** 涓庡崟鏉� addOrUpdateOrder 鍏ュ彛涓�鑷达細涓嶉�氳繃鍒欐姏 CoolException */
+ private void assertValidForSync(ErpOpParams params) {
+ String e = validateForSync(params);
+ if (e != null) {
+ throw new CoolException(e);
+ }
+ }
+
+ /** 涓庡崟鏉′笅鍙戠浉鍚岀殑鍏ュ弬鏍¢獙锛涢�氳繃杩斿洖 null */
+ private String validateForSync(ErpOpParams params) {
+ if (params == null) {
+ return "鍗曟嵁鍙傛暟涓嶈兘涓虹┖锛侊紒";
+ }
+ if (Objects.isNull(params.getOrderNo()) || params.getOrderNo().isEmpty()) {
+ return "璁㈠崟鍙蜂笉鑳戒负绌猴紒锛�";
+ }
+ if (!Integer.valueOf(3).equals(params.getOperateType())) {
+ if (params.getOrderInternalCode() == null || params.getOrderInternalCode().trim().isEmpty()) {
+ return "鍗曟嵁鍐呯爜涓嶈兘涓虹┖锛侊紒";
+ }
+ }
+ return null;
+ }
+
/** 8.3 鍙傛暟杞负绔嬪簱 SyncOrderParams 缁撴瀯锛坥rderNo/type/wkType/anfme/arrTime/orderItems 绛夛級 */
private Map<String, Object> toServerOrderMap(ErpOpParams params) {
Map<String, Object> m = new HashMap<>();
m.put("orderNo", params.getOrderNo());
+ m.put("orderInternalCode", params.getOrderInternalCode());
+ m.put("stationId", params.getStationId());
m.put("wkType", params.getWkType());
m.put("type", params.getOrderType() != null ? String.valueOf(params.getOrderType()) : null);
m.put("orderId", params.getOrderId());
+ m.put("operateType", params.getOperateType());
double anfmeSum = 0;
if (params.getOrderItems() != null) {
List<Map<String, Object>> items = params.getOrderItems().stream()
@@ -167,9 +242,12 @@
}
m.put("anfme", anfmeSum);
if (params.getBusinessTime() != null) {
- m.put("arrTime", new Date(params.getBusinessTime() * 1000));
+ m.put("arrTime", params.getBusinessTime());
} else if (params.getCreateTime() != null) {
- m.put("arrTime", new Date(params.getCreateTime() * 1000));
+ m.put("arrTime", params.getCreateTime());
+ }
+ if (params.getCreateTime() != null) {
+ m.put("createTime", params.getCreateTime());
}
return m;
}
@@ -184,6 +262,10 @@
m.put("model", item.getModel());
m.put("unit", item.getUnit());
m.put("batch", item.getBatch());
+ m.put("planNo", item.getPlanNo());
+ m.put("palletId", item.getPalletId());
+ m.put("targetWareHouseId", item.getTargetWareHouseId());
+ m.put("sourceWareHouseId", item.getSourceWareHouseId());
return m;
}
@@ -202,6 +284,7 @@
* 鍙栨秷璁㈠崟/鍙栨秷鍗曟嵁銆備笌 /order/add锛坥perateType=3锛夊叡鐢ㄥ悓涓�濂楀彇娑堥�昏緫锛岃浆鍙戠珛搴� sync/orders/delete銆�
*/
@Override
+ @Transactional(rollbackFor = Exception.class)
public CommonResponse orderCancel(ErpOpParams params) {
if (Objects.isNull(params.getOrderNo()) || params.getOrderNo().isEmpty()) {
throw new CoolException("璁㈠崟鍙蜂笉鑳戒负绌猴紒锛�");
@@ -212,15 +295,25 @@
/** 缁熶竴鍙栨秷閫昏緫锛�/order/add(operateType=3) 涓� /order/cancel銆�/order/del 鍧囪蛋姝ゆ柟娉曪紱8.3.3 data 浠呭惈 result */
private CommonResponse doCancel(ErpOpParams params) {
log.info("鍙栨秷鍗曟嵁锛岃姹傚弬鏁帮細 {}", JSONObject.toJSONString(params));
+ // Map<String, Object> one = new HashMap<>();
+ // one.put("orderNo", params.getOrderNo());
+ // one.put("orderItems", params.getOrderItems() != null ? params.getOrderItems().stream()
+ // .map(this::toServerOrderItemMap)
+ // .collect(Collectors.toList()) : Collections.emptyList());
+ // Map<String, Object> res = wmsServerFeignClient.orderDel(Collections.singletonList(one));
+ Map<String, Object> res = wmsServerFeignClient.orderDel(Collections.singletonList(toCancelOrderMap(params)));
+ CommonResponse r = mapToCommonResponse(res);
+ r.setData(ResultData.success());
+ return r;
+ }
+
+ private Map<String, Object> toCancelOrderMap(ErpOpParams params) {
Map<String, Object> one = new HashMap<>();
one.put("orderNo", params.getOrderNo());
one.put("orderItems", params.getOrderItems() != null ? params.getOrderItems().stream()
.map(this::toServerOrderItemMap)
.collect(Collectors.toList()) : Collections.emptyList());
- Map<String, Object> res = wmsServerFeignClient.orderDel(Collections.singletonList(one));
- CommonResponse r = mapToCommonResponse(res);
- r.setData(ResultData.success());
- return r;
+ return one;
}
/**
--
Gitblit v1.9.1