定时同步原材料入库、原材料出库、原材料退库、成品入库和成品出库事务问题解决
master
xs 4 months ago
parent 29db8fdfed
commit a25c247ac1

@ -19,6 +19,7 @@ import org.springframework.web.bind.annotation.*;
import reactor.core.publisher.Flux;
import java.util.List;
import java.util.Map;
/**
* Api Controller,Module使
@ -246,7 +247,12 @@ public class WmsApiController extends BaseController {
*/
@PostMapping(("/synchronizeInventoryInformationToERP"))
public AjaxResult synchronizeInventoryInformationToERP() {
return toAjax(wmsErpScheduledTaskService.synchronizeInventoryInformationToERP());
int result = 0;
Map<Long, List<WmsRawInstock>> purchaseOrderIdMap = wmsErpScheduledTaskService.synchronizeInventoryInformationToERP();
for (Long purchaseOrderId : purchaseOrderIdMap.keySet()) {
wmsErpScheduledTaskService.syncInventoryInformation(purchaseOrderIdMap, purchaseOrderId, result);
}
return toAjax(1);
}
/**
@ -256,7 +262,17 @@ public class WmsApiController extends BaseController {
*/
@PostMapping(("/synchronizeRawMaterialDeliveryInformationToERP"))
public AjaxResult synchronizeRawMaterialDeliveryInformationToERP() {
return toAjax(wmsErpScheduledTaskService.synchronizeRawMaterialDeliveryInformationToERP());
Map<Long, List<WmsRawOutstockDetail>> otherMaterialIdMap = wmsErpScheduledTaskService.synchronizeOtherMaterialDeliveryInformationToERP();
for (Long materialId : otherMaterialIdMap.keySet()) {
wmsErpScheduledTaskService.syncOutstockInformation(otherMaterialIdMap, materialId, "");
}
Map<Long, List<WmsRawOutstockDetail>> returnMaterialIdMap = wmsErpScheduledTaskService.synchronizeReturnMaterialDeliveryInformationToERP();
for (Long materialId : returnMaterialIdMap.keySet()) {
wmsErpScheduledTaskService.syncOutstockInformation(returnMaterialIdMap, materialId, WmsConstants.WMS_RAW_OUTSTOCK_TASK_TYPE_RETURN_OUTSTOCK);
}
return toAjax(1);
}
@ -267,7 +283,12 @@ public class WmsApiController extends BaseController {
*/
@PostMapping(("/synchronizeRawReturnInformationToERP"))
public AjaxResult synchronizeRawReturnInformationToERP() {
return toAjax(wmsErpScheduledTaskService.synchronizeRawReturnInformationToERP());
Map<Long, List<WmsRawReturnDetail>> purchaseOrderIdMap = wmsErpScheduledTaskService.synchronizeRawReturnInformationToERP();
int result= 0;
for (Long purchaseOrderId : purchaseOrderIdMap.keySet()) {
wmsErpScheduledTaskService.syncRawReturnInformation(purchaseOrderIdMap, purchaseOrderId, result);
}
return toAjax(1);
}
/**
@ -278,7 +299,12 @@ public class WmsApiController extends BaseController {
*/
@PostMapping(("/synchronizeProductInstockInformationToERP/{days}"))
public AjaxResult synchronizeProductInstockInformationToERP(@PathVariable Integer days) {
return toAjax(wmsErpScheduledTaskService.synchronizeProductInstockInformationToERP(days));
Map<Long, List<WmsProductInstock>> productIdMap = wmsErpScheduledTaskService.synchronizeProductInstockInformationToERP(days);
int result = 0;
for (Long productId : productIdMap.keySet()) {
wmsErpScheduledTaskService.syncProductInstockInformation(productIdMap, productId, result);
}
return toAjax(1);
}
/**
@ -289,7 +315,12 @@ public class WmsApiController extends BaseController {
*/
@PostMapping(("/synchronizeProductOutstockInformationToERP/{days}"))
public AjaxResult synchronizeProductOutstockInformationToERP(@PathVariable Integer days) {
return toAjax(wmsErpScheduledTaskService.synchronizeProductOutstockInformationToERP(days));
Map<Long, List<WmsProductOutstock>> productIdMap = wmsErpScheduledTaskService.synchronizeProductOutstockInformationToERP(days);
int result = 0;
for (Long productId : productIdMap.keySet()) {
wmsErpScheduledTaskService.syncProductOutstockInformation(productIdMap, productId, result);
}
return toAjax(1);
}

@ -1,6 +1,10 @@
package com.hw.wms.service;
import com.hw.wms.domain.*;
import java.util.List;
import java.util.Map;
/**
* erpService
@ -14,33 +18,54 @@ public interface IWmsErpScheduledTaskService {
* ERP
* @return
*/
int synchronizeInventoryInformationToERP();
Map<Long, List<WmsRawInstock>> synchronizeInventoryInformationToERP();
public void syncInventoryInformation(Map<Long, List<WmsRawInstock>> purchaseOrderIdMap, Long purchaseOrderId, int result);
/**
* ERP
*
* @return
*/
int synchronizeRawMaterialDeliveryInformationToERP();
public Map<Long, List<WmsRawOutstockDetail>> synchronizeOtherMaterialDeliveryInformationToERP();
/**
* 退ERP
*
* @return
*/
public Map<Long, List<WmsRawOutstockDetail>> synchronizeReturnMaterialDeliveryInformationToERP();
public int syncOutstockInformation(Map<Long, List<WmsRawOutstockDetail>> materialIdMap, Long materialId, String taskType);
/**
* 退ERP
*
* @return
*/
public int synchronizeRawReturnInformationToERP();
public Map<Long, List<WmsRawReturnDetail>> synchronizeRawReturnInformationToERP();
public void syncRawReturnInformation(Map<Long, List<WmsRawReturnDetail>> purchaseOrderIdMap, Long purchaseOrderId, int result);
/**
* ERP
* @param days days
* @return
*/
int synchronizeProductInstockInformationToERP(Integer days);
Map<Long, List<WmsProductInstock>> synchronizeProductInstockInformationToERP(Integer days);
public void syncProductInstockInformation(Map<Long, List<WmsProductInstock>> productIdMap, Long productId, int result);
/**
* ERP
* @param days days
* @return
*/
int synchronizeProductOutstockInformationToERP(Integer days);
Map<Long, List<WmsProductOutstock>> synchronizeProductOutstockInformationToERP(Integer days);
public void syncProductOutstockInformation(Map<Long, List<WmsProductOutstock>> productIdMap, Long productId, int result);
}

@ -65,6 +65,7 @@ public class WmsErpScheduledTaskServiceImpl implements IWmsErpScheduledTaskServi
@Autowired
private WmsConfig wmsConfig;
public int i=0;
//仓库编码
// private String FStockId = "CK050";
@ -74,20 +75,18 @@ public class WmsErpScheduledTaskServiceImpl implements IWmsErpScheduledTaskServi
* @return
*/
@Override
@Transactional
public int synchronizeInventoryInformationToERP() {
// @Transactional
public Map<Long, List<WmsRawInstock>> synchronizeInventoryInformationToERP() {
WmsRawInstock wmsRawInstock = new WmsRawInstock();
int result = 0;
List<WmsRawInstock> inStockList = wmsRawInstockMapper.selectWmsRawInstockERPNotSynchronized(wmsRawInstock);
Map<Long, List<WmsRawInstock>> purchaseOrderIdMap = inStockList.stream().collect(Collectors.groupingBy(WmsRawInstock::getPurchaseOrderId));
for (Long purchaseOrderId : purchaseOrderIdMap.keySet()) {
syncInventoryInformation(purchaseOrderIdMap, purchaseOrderId, result);
}
return result;
return purchaseOrderIdMap;
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
@Transactional(rollbackFor = Exception.class)
@Override
public void syncInventoryInformation(Map<Long, List<WmsRawInstock>> purchaseOrderIdMap, Long purchaseOrderId, int result) {
R<MesPurchaseOrder> purchaseOrderData = remoteMesService.selectPurchaseOrderJoinSupplierProjectByOrderId(purchaseOrderId, SecurityConstants.INNER);
MesPurchaseOrder mesPurchaseOrder = null;
@ -116,7 +115,7 @@ public class WmsErpScheduledTaskServiceImpl implements IWmsErpScheduledTaskServi
String specificationParameter = instock.getSpecificationParameter();
if(StringUtils.isEmpty(specificationParameter)){
specificationParameter = instock.getMaterialSpec();
specificationParameter = instock.getMaterialSpec();
}
if(StringUtils.isEmpty(specificationParameter)){
@ -143,11 +142,11 @@ public class WmsErpScheduledTaskServiceImpl implements IWmsErpScheduledTaskServi
log.info("synchronizeInventoryInformationToERP同步原材料入库成功:" + paramsResult.toString());
} else {
log.error("synchronizeInventoryInformationToERP同步原材料入库失败:" + paramsResult.toString());
throw new RuntimeException("同步原材料入库失败" + paramsResult.toString());
throw new ServiceException("同步原材料入库失败" + paramsResult.toString());
}
} catch (Exception e) {
log.error("同步原材料入库失败" + e.getMessage());
throw new RuntimeException("同步原材料入库失败" + e.getMessage());
throw new ServiceException("同步原材料入库失败" + e.getMessage());
}
}
@ -158,8 +157,7 @@ public class WmsErpScheduledTaskServiceImpl implements IWmsErpScheduledTaskServi
* @return
*/
@Override
@Transactional
public int synchronizeRawMaterialDeliveryInformationToERP() {
public Map<Long, List<WmsRawOutstockDetail>> synchronizeOtherMaterialDeliveryInformationToERP() {
int result = 0;
//领料
WmsRawOutstockDetail otherRawOutstockDetail = new WmsRawOutstockDetail();
@ -167,22 +165,102 @@ public class WmsErpScheduledTaskServiceImpl implements IWmsErpScheduledTaskServi
+ "," + WmsConstants.WMS_RAW_OUTSTOCK_TASK_TYPE_AUTO_OUTSTOCK + "," + WmsConstants.WMS_RAW_OUTSTOCK_TASK_TYPE_OTHER);
List<WmsRawOutstockDetail> otherRawOutstockDetailList = wmsRawOutstockDetailMapper.selectWmsRawOutstockDetailERPNotSynchronized(otherRawOutstockDetail);
Map<Long, List<WmsRawOutstockDetail>> otherMaterialIdMap = otherRawOutstockDetailList.stream().collect(Collectors.groupingBy(WmsRawOutstockDetail::getMaterialId));
for (Long materialId : otherMaterialIdMap.keySet()) {
result += syncOutstockInformation(otherMaterialIdMap, materialId, "");
}
return otherMaterialIdMap;
}
/**
* 退ERP
*
* @return
*/
@Override
public Map<Long, List<WmsRawOutstockDetail>> synchronizeReturnMaterialDeliveryInformationToERP() {
int result = 0;
//退货出库
WmsRawOutstockDetail returnRawOutstockDetail = new WmsRawOutstockDetail();
returnRawOutstockDetail.setTaskType(WmsConstants.WMS_RAW_OUTSTOCK_TASK_TYPE_RETURN_OUTSTOCK);
List<WmsRawOutstockDetail> returnRawOutstockDetailList = wmsRawOutstockDetailMapper.selectWmsRawOutstockDetailERPNotSynchronized(returnRawOutstockDetail);
Map<Long, List<WmsRawOutstockDetail>> returnMaterialIdMap = returnRawOutstockDetailList.stream().collect(Collectors.groupingBy(WmsRawOutstockDetail::getMaterialId));
for (Long materialId : returnMaterialIdMap.keySet()) {
result += syncOutstockInformation(returnMaterialIdMap, materialId, WmsConstants.WMS_RAW_OUTSTOCK_TASK_TYPE_RETURN_OUTSTOCK);
return returnMaterialIdMap;
}
@Transactional(rollbackFor = Exception.class)
@Override
public int syncOutstockInformation(Map<Long, List<WmsRawOutstockDetail>> materialIdMap, Long materialId, String taskType) {
int result = 0;
List<WmsRawOutstockDetail> wmsRawOutstockDetailList = materialIdMap.get(materialId);
JSONObject data = new JSONObject();
double FRealQty = wmsRawOutstockDetailList.stream().mapToDouble(item -> item.getOutstockAmount().subtract(item.getErpAmount()).doubleValue()).sum();
WmsRawOutstockDetail outstockDetail = wmsRawOutstockDetailList.get(0);
for (WmsRawOutstockDetail wmsRawOutstockDetail : wmsRawOutstockDetailList) {
if (wmsRawOutstockDetail.getPlanAmount().equals(wmsRawOutstockDetail.getOutstockAmount())) {
wmsRawOutstockDetail.setErpStatus("1");//同步ERP状态(0:失败,1成功,2同步中)
} else {
wmsRawOutstockDetail.setErpStatus("2");//同步ERP状态(0:失败,1成功,2同步中)
}
wmsRawOutstockDetail.setErpAmount(wmsRawOutstockDetail.getOutstockAmount());
wmsRawOutstockDetail.setUpdateDate(DateUtils.getNowDate());
wmsRawOutstockDetailMapper.updateWmsRawOutstockDetail(wmsRawOutstockDetail);
}
if (StringUtils.isNotEmpty(taskType) && taskType.equals(WmsConstants.WMS_RAW_OUTSTOCK_TASK_TYPE_RETURN_OUTSTOCK)) {
data.put("FTONDCombo", "售后服务");
} else {
data.put("FTONDCombo", "一般领料");
}
// model.put("F_TOND_Combo", "一般领料"); //领料类型(必填项)
String fdate = DateUtils.getTime();
if (outstockDetail.getOutstockTime() != null) {
fdate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, outstockDetail.getOutstockTime());
}
String barcodeSpec = outstockDetail.getBarcodeSpec();
String materialSpec = outstockDetail.getMaterialSpec();
if(StringUtils.isEmpty(barcodeSpec)){
if(StringUtils.isNotEmpty(materialSpec)){
barcodeSpec = materialSpec;
}else{
barcodeSpec = "无";
}
}
data.put("FDate", fdate);
data.put("FMaterialId", outstockDetail.getMaterialCode());
data.put("FAuxPropId", barcodeSpec);
data.put("FUnitID", outstockDetail.getUnitCode());
data.put("FQty", FRealQty);
data.put("FPrice", outstockDetail.getPrice());
data.put("FStockId", wmsConfig.getfStockId());
String params = data.toJSONString();
try {
R<AjaxResult> paramsResult = remoteJindieService.saveOtherOutStorage(params, SecurityConstants.INNER);
String paramsResultData = paramsResult.getMsg();
JSONObject jsonObject = JSONObject.parseObject(paramsResultData);
Boolean isSuccess = (Boolean) jsonObject.get("IsSuccess");
if (isSuccess) {
result++;
log.info("synchronizeRawMaterialDeliveryInformationToERP成功:" + paramsResult.toString());
} else {
log.error("synchronizeRawMaterialDeliveryInformationToERP失败:" + paramsResult.toString());
throw new ServiceException("synchronizeRawMaterialDeliveryInformationToERP失败:" + paramsResult.toString());
}
return result;
} catch (Exception e) {
log.error("synchronizeRawMaterialDeliveryInformationToERP失败:" + e.getMessage());
throw new ServiceException("synchronizeRawMaterialDeliveryInformationToERP失败:" + e.getMessage());
}
return result;
}
/**
* 退ERP
*
@ -190,20 +268,18 @@ public class WmsErpScheduledTaskServiceImpl implements IWmsErpScheduledTaskServi
*/
@Override
@Transactional
public int synchronizeRawReturnInformationToERP() {
public Map<Long, List<WmsRawReturnDetail>> synchronizeRawReturnInformationToERP() {
WmsRawReturnDetail wmsRawReturnDetail = new WmsRawReturnDetail();
int result = 0;
List<WmsRawReturnDetail> returnDetailList = wmsRawReturnDetailMapper.selectWmsRawReturnDetailERPNotSynchronized(wmsRawReturnDetail);
Map<Long, List<WmsRawReturnDetail>> purchaseOrderIdMap = returnDetailList.stream().collect(Collectors.groupingBy(WmsRawReturnDetail::getPurchaseOrderId));
for (Long purchaseOrderId : purchaseOrderIdMap.keySet()) {
syncRawReturnInformation(purchaseOrderIdMap, purchaseOrderId, result);
}
return result;
return purchaseOrderIdMap;
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
@Transactional(rollbackFor = Exception.class)
@Override
public void syncRawReturnInformation(Map<Long, List<WmsRawReturnDetail>> purchaseOrderIdMap, Long purchaseOrderId, int result) {
R<MesPurchaseOrder> purchaseOrderData = remoteMesService.selectPurchaseOrderJoinSupplierProjectByOrderId(purchaseOrderId, SecurityConstants.INNER);
MesPurchaseOrder mesPurchaseOrder = null;
@ -267,74 +343,7 @@ public class WmsErpScheduledTaskServiceImpl implements IWmsErpScheduledTaskServi
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
public int syncOutstockInformation(Map<Long, List<WmsRawOutstockDetail>> materialIdMap, Long materialId, String taskType) {
int result = 0;
List<WmsRawOutstockDetail> wmsRawOutstockDetailList = materialIdMap.get(materialId);
JSONObject data = new JSONObject();
double FRealQty = wmsRawOutstockDetailList.stream().mapToDouble(item -> item.getOutstockAmount().subtract(item.getErpAmount()).doubleValue()).sum();
WmsRawOutstockDetail outstockDetail = wmsRawOutstockDetailList.get(0);
for (WmsRawOutstockDetail wmsRawOutstockDetail : wmsRawOutstockDetailList) {
if (wmsRawOutstockDetail.getPlanAmount().equals(wmsRawOutstockDetail.getOutstockAmount())) {
wmsRawOutstockDetail.setErpStatus("1");//同步ERP状态(0:失败,1成功,2同步中)
} else {
wmsRawOutstockDetail.setErpStatus("2");//同步ERP状态(0:失败,1成功,2同步中)
}
wmsRawOutstockDetail.setErpAmount(wmsRawOutstockDetail.getOutstockAmount());
wmsRawOutstockDetail.setUpdateDate(DateUtils.getNowDate());
wmsRawOutstockDetailMapper.updateWmsRawOutstockDetail(wmsRawOutstockDetail);
}
if (StringUtils.isNotEmpty(taskType) && taskType.equals(WmsConstants.WMS_RAW_OUTSTOCK_TASK_TYPE_RETURN_OUTSTOCK)) {
data.put("FTONDCombo", "售后服务");
} else {
data.put("FTONDCombo", "一般领料");
}
// model.put("F_TOND_Combo", "一般领料"); //领料类型(必填项)
String fdate = DateUtils.getTime();
if (outstockDetail.getOutstockTime() != null) {
fdate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, outstockDetail.getOutstockTime());
}
String barcodeSpec = outstockDetail.getBarcodeSpec();
String materialSpec = outstockDetail.getMaterialSpec();
if(StringUtils.isEmpty(barcodeSpec)){
if(StringUtils.isNotEmpty(materialSpec)){
barcodeSpec = materialSpec;
}else{
barcodeSpec = "无";
}
}
data.put("FDate", fdate);
data.put("FMaterialId", outstockDetail.getMaterialCode());
data.put("FAuxPropId", barcodeSpec);
data.put("FUnitID", outstockDetail.getUnitCode());
data.put("FQty", FRealQty);
data.put("FPrice", outstockDetail.getPrice());
data.put("FStockId", wmsConfig.getfStockId());
String params = data.toJSONString();
try {
R<AjaxResult> paramsResult = remoteJindieService.saveOtherOutStorage(params, SecurityConstants.INNER);
String paramsResultData = paramsResult.getMsg();
JSONObject jsonObject = JSONObject.parseObject(paramsResultData);
Boolean isSuccess = (Boolean) jsonObject.get("IsSuccess");
if (isSuccess) {
result++;
log.info("synchronizeRawMaterialDeliveryInformationToERP成功:" + paramsResult.toString());
} else {
log.error("synchronizeRawMaterialDeliveryInformationToERP失败:" + paramsResult.toString());
throw new RuntimeException("synchronizeRawMaterialDeliveryInformationToERP失败:" + paramsResult.toString());
}
return result;
} catch (Exception e) {
log.error("synchronizeRawMaterialDeliveryInformationToERP失败:" + e.getMessage());
throw new RuntimeException("synchronizeRawMaterialDeliveryInformationToERP失败:" + e.getMessage());
}
}
/**
* ERP
@ -343,8 +352,7 @@ public class WmsErpScheduledTaskServiceImpl implements IWmsErpScheduledTaskServi
* @return
*/
@Override
@Transactional
public int synchronizeProductInstockInformationToERP(Integer days) {
public Map<Long, List<WmsProductInstock>> synchronizeProductInstockInformationToERP(Integer days) {
int result = 0;
WmsProductInstock wmsProductInstock = new WmsProductInstock();
HashMap<String, Object> paramMap = new HashMap<>();
@ -354,13 +362,12 @@ public class WmsErpScheduledTaskServiceImpl implements IWmsErpScheduledTaskServi
wmsProductInstock.setParams(paramMap);
List<WmsProductInstock> productInstockList = wmsProductInstockMapper.selectWmsProductInstockERPNotSynchronized(wmsProductInstock);
Map<Long, List<WmsProductInstock>> productIdMap = productInstockList.stream().collect(Collectors.groupingBy(WmsProductInstock::getProductId));
for (Long productId : productIdMap.keySet()) {
syncProductInstockInformation(productIdMap, productId, result);
}
return result;
return productIdMap;
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
@Transactional(rollbackFor = Exception.class)
@Override
public void syncProductInstockInformation(Map<Long, List<WmsProductInstock>> productIdMap, Long productId, int result) {
List<WmsProductInstock> wmsProductInstockList = productIdMap.get(productId);
JSONObject data = new JSONObject();
@ -402,12 +409,12 @@ public class WmsErpScheduledTaskServiceImpl implements IWmsErpScheduledTaskServi
log.info("synchronizeProductInstockInformationToERP成功:" + paramsResult.toString());
} else {
log.error("synchronizeProductInstockInformationToERP失败:" + paramsResult.toString());
throw new RuntimeException("synchronizeProductInstockInformationToERP失败:" + paramsResult.toString());
throw new ServiceException("synchronizeProductInstockInformationToERP失败:" + paramsResult.toString());
}
} catch (Exception e) {
log.error("synchronizeProductInstockInformationToERP失败:" + e.getMessage());
throw new RuntimeException("synchronizeProductInstockInformationToERP失败:" + e.getMessage());
throw new ServiceException("synchronizeProductInstockInformationToERP失败:" + e.getMessage());
}
}
@ -418,8 +425,7 @@ public class WmsErpScheduledTaskServiceImpl implements IWmsErpScheduledTaskServi
* @return
*/
@Override
@Transactional
public int synchronizeProductOutstockInformationToERP(Integer days) {
public Map<Long, List<WmsProductOutstock>> synchronizeProductOutstockInformationToERP(Integer days) {
int result = 0;
WmsProductOutstock wmsProductOutstock = new WmsProductOutstock();
HashMap<String, Object> paramMap = new HashMap<>();
@ -429,13 +435,12 @@ public class WmsErpScheduledTaskServiceImpl implements IWmsErpScheduledTaskServi
wmsProductOutstock.setParams(paramMap);
List<WmsProductOutstock> productOutstockList = wmsProductOutstockMapper.selectWmsProductOutstockERPNotSynchronized(wmsProductOutstock);
Map<Long, List<WmsProductOutstock>> productIdMap = productOutstockList.stream().collect(Collectors.groupingBy(WmsProductOutstock::getProductId));
for (Long productId : productIdMap.keySet()) {
syncProductOutstockInformation(productIdMap, productId, result);
}
return result;
return productIdMap;
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
@Transactional(rollbackFor = Exception.class)
@Override
public void syncProductOutstockInformation(Map<Long, List<WmsProductOutstock>> productIdMap, Long productId, int result) {
List<WmsProductOutstock> wmsProductOutstockList = productIdMap.get(productId);
JSONObject data = new JSONObject();
@ -479,12 +484,12 @@ public class WmsErpScheduledTaskServiceImpl implements IWmsErpScheduledTaskServi
log.info("synchronizeProductOutstockInformationToERP成功:" + paramsResult.toString());
} else {
log.error("synchronizeProductOutstockInformationToERP失败:" + paramsResult.toString());
throw new RuntimeException("synchronizeProductOutstockInformationToERP失败:" + paramsResult.toString());
throw new ServiceException("synchronizeProductOutstockInformationToERP失败:" + paramsResult.toString());
}
} catch (Exception e) {
log.error("synchronizeProductOutstockInformationToERP失败:" + e.getMessage());
throw new RuntimeException("synchronizeProductOutstockInformationToERP失败:" + e.getMessage());
throw new ServiceException("synchronizeProductOutstockInformationToERP失败:" + e.getMessage());
}
}

Loading…
Cancel
Save