change - WMS定时同步原材料入库信息给ERP循环执行,取消事务

master
yinq 1 month ago
parent 164975af1e
commit d393650adc

@ -250,9 +250,18 @@ public class WmsApiController extends BaseController {
// @Log(title = "同步原材料入库信息", businessType = BusinessType.INSERT) // @Log(title = "同步原材料入库信息", businessType = BusinessType.INSERT)
public R<AjaxResult> synchronizeInventoryInformationToERP() { public R<AjaxResult> synchronizeInventoryInformationToERP() {
int result = 0; int result = 0;
StringBuilder errorBuffer = new StringBuilder();
Map<Long, List<WmsRawInstock>> purchaseOrderIdMap = wmsErpScheduledTaskService.synchronizeInventoryInformationToERP(); Map<Long, List<WmsRawInstock>> purchaseOrderIdMap = wmsErpScheduledTaskService.synchronizeInventoryInformationToERP();
for (Long purchaseOrderId : purchaseOrderIdMap.keySet()) { for (Long purchaseOrderId : purchaseOrderIdMap.keySet()) {
wmsErpScheduledTaskService.syncInventoryInformation(purchaseOrderIdMap, purchaseOrderId, result); try {
wmsErpScheduledTaskService.syncInventoryInformation(purchaseOrderIdMap, purchaseOrderId, result);
} catch (Exception e) {
result++;
errorBuffer.append(result).append(e.getMessage()).append("||");
}
}
if (errorBuffer.length() > 0) {
return R.fail(errorBuffer.toString());
} }
return R.ok(); return R.ok();
} }

@ -88,4 +88,12 @@ public interface IWmsRawInstockService
* @param wmsRawInstockContinueVo * @param wmsRawInstockContinueVo
*/ */
public int continueRawInstock(WmsRawInstockContinueVo wmsRawInstockContinueVo); public int continueRawInstock(WmsRawInstockContinueVo wmsRawInstockContinueVo);
/**
* WMS
* 使REQUIRES_NEW使
*
* @param wmsRawInstockList
*/
public void updateWmsRawInStockWithoutRollback(List<WmsRawInstock> wmsRawInstockList);
} }

@ -18,11 +18,11 @@ import com.hw.wms.config.WmsConfig;
import com.hw.wms.domain.*; import com.hw.wms.domain.*;
import com.hw.wms.mapper.*; import com.hw.wms.mapper.*;
import com.hw.wms.service.IWmsErpScheduledTaskService; import com.hw.wms.service.IWmsErpScheduledTaskService;
import com.hw.wms.service.IWmsRawInstockService;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ -68,6 +68,9 @@ public class WmsErpScheduledTaskServiceImpl implements IWmsErpScheduledTaskServi
@Autowired @Autowired
private WmsConfig wmsConfig; private WmsConfig wmsConfig;
@Autowired
private IWmsRawInstockService wmsRawInstockService;
public int i=0; public int i=0;
//仓库编码 //仓库编码
// private String FStockId = "CK050"; // private String FStockId = "CK050";
@ -88,7 +91,7 @@ public class WmsErpScheduledTaskServiceImpl implements IWmsErpScheduledTaskServi
return purchaseOrderIdMap; return purchaseOrderIdMap;
} }
@Transactional(rollbackFor = Exception.class) // @Transactional(rollbackFor = Exception.class)
@Override @Override
public void syncInventoryInformation(Map<Long, List<WmsRawInstock>> purchaseOrderIdMap, Long purchaseOrderId, int result) { public void syncInventoryInformation(Map<Long, List<WmsRawInstock>> purchaseOrderIdMap, Long purchaseOrderId, int result) {
R<MesPurchaseOrder> purchaseOrderData = remoteMesService.selectPurchaseOrderJoinSupplierProjectByOrderId(purchaseOrderId, SecurityConstants.INNER); R<MesPurchaseOrder> purchaseOrderData = remoteMesService.selectPurchaseOrderJoinSupplierProjectByOrderId(purchaseOrderId, SecurityConstants.INNER);
@ -154,34 +157,17 @@ public class WmsErpScheduledTaskServiceImpl implements IWmsErpScheduledTaskServi
result++; result++;
log.info("synchronizeInventoryInformationToERP同步原材料入库成功:" + paramsResulJson); log.info("synchronizeInventoryInformationToERP同步原材料入库成功:" + paramsResulJson);
} else { } else {
updateWmsRawInStockWithoutRollback(wmsRawInstockList); wmsRawInstockService.updateWmsRawInStockWithoutRollback(wmsRawInstockList);
log.error("synchronizeInventoryInformationToERP同步原材料入库失败:" + paramsResulJson); log.error("synchronizeInventoryInformationToERP同步原材料入库失败:" + paramsResulJson);
throw new ServiceException("同步原材料入库失败" + paramsResulJson); throw new ServiceException("同步原材料入库失败" + paramsResulJson);
} }
} catch (Exception e) { } catch (Exception e) {
updateWmsRawInStockWithoutRollback(wmsRawInstockList); wmsRawInstockService.updateWmsRawInStockWithoutRollback(wmsRawInstockList);
log.error("同步原材料入库失败:" + e); log.error("同步原材料入库失败:" + e);
throw new ServiceException("同步原材料入库失败::" + e); throw new ServiceException("同步原材料入库失败::" + e);
} }
} }
/**
* WMS
* 使REQUIRES_NEW使
*
* @param wmsRawInstockList
*/
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void updateWmsRawInStockWithoutRollback(List<WmsRawInstock> wmsRawInstockList) {
for (WmsRawInstock rawInstock : wmsRawInstockList) {
rawInstock.setErpStatus("0");//同步ERP状态(0:失败,1成功)
rawInstock.setErpAmount(rawInstock.getInstockAmount());
rawInstock.setUpdateDate(DateUtils.getNowDate());
wmsRawInstockMapper.updateWmsRawInstock(rawInstock);
log.info("updateWmsRawInStockWithoutRollback原材料入库单失败状态:" + rawInstock.getRawInstockId());
}
}
/** /**
* ERP * ERP
* *

@ -3,14 +3,13 @@ package com.hw.wms.service.impl;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
import com.hw.common.core.constant.MesConstants; import com.hw.common.core.constant.MesConstants;
import com.hw.common.core.constant.SecurityConstants; import com.hw.common.core.constant.SecurityConstants;
import com.hw.common.core.constant.WmsConstants; import com.hw.common.core.constant.WmsConstants;
import com.hw.common.core.domain.R; import com.hw.common.core.domain.R;
import com.hw.common.core.exception.ServiceException; import com.hw.common.core.exception.ServiceException;
import com.hw.common.core.utils.StringUtils; import com.hw.common.core.utils.DateUtils;
import com.hw.common.core.utils.uuid.Seq; import com.hw.common.core.utils.uuid.Seq;
import com.hw.common.security.utils.SecurityUtils; import com.hw.common.security.utils.SecurityUtils;
import com.hw.mes.api.RemoteMesService; import com.hw.mes.api.RemoteMesService;
@ -23,6 +22,8 @@ import com.hw.wms.domain.vo.*;
import com.hw.wms.mapper.WmsBaseLocationMapper; import com.hw.wms.mapper.WmsBaseLocationMapper;
import com.hw.wms.mapper.WmsRawOutstockMapper; import com.hw.wms.mapper.WmsRawOutstockMapper;
import com.hw.wms.mapper.WmsRawStockMapper; import com.hw.wms.mapper.WmsRawStockMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity; import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
@ -30,6 +31,7 @@ import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import com.hw.wms.mapper.WmsRawInstockMapper; import com.hw.wms.mapper.WmsRawInstockMapper;
import com.hw.wms.domain.WmsRawInstock; import com.hw.wms.domain.WmsRawInstock;
@ -46,6 +48,9 @@ import javax.annotation.Resource;
*/ */
@Service @Service
public class WmsRawInstockServiceImpl implements IWmsRawInstockService { public class WmsRawInstockServiceImpl implements IWmsRawInstockService {
private static final Logger log = LoggerFactory.getLogger(WmsRawInstockServiceImpl.class);
@Autowired @Autowired
private WmsRawInstockMapper wmsRawInstockMapper; private WmsRawInstockMapper wmsRawInstockMapper;
@ -426,4 +431,21 @@ public class WmsRawInstockServiceImpl implements IWmsRawInstockService {
} }
/**
* WMS
* 使REQUIRES_NEW使
*
* @param wmsRawInstockList
*/
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void updateWmsRawInStockWithoutRollback(List<WmsRawInstock> wmsRawInstockList) {
for (WmsRawInstock rawInstock : wmsRawInstockList) {
rawInstock.setErpStatus("0");//同步ERP状态(0:失败,1成功)
rawInstock.setErpAmount(new BigDecimal(0));
rawInstock.setUpdateDate(DateUtils.getNowDate());
wmsRawInstockMapper.updateWmsRawInstock(rawInstock);
log.info("updateWmsRawInStockWithoutRollback原材料入库单失败状态:" + rawInstock.getRawInstockId());
}
}
} }

Loading…
Cancel
Save