change - 采购申请单多物料上传ERP逻辑优化
parent
8a643eb67a
commit
cf5583f3b6
@ -1,84 +0,0 @@
|
|||||||
package com.hw.wms.service.impl;
|
|
||||||
|
|
||||||
import com.alibaba.fastjson2.JSONObject;
|
|
||||||
import com.hw.common.core.constant.SecurityConstants;
|
|
||||||
import com.hw.common.core.domain.R;
|
|
||||||
import com.hw.common.core.utils.DateUtils;
|
|
||||||
import com.hw.common.core.web.domain.AjaxResult;
|
|
||||||
import com.hw.jindie.api.RemoteJindieService;
|
|
||||||
import com.hw.wms.domain.WmsRawInstock;
|
|
||||||
import com.hw.wms.mapper.WmsRawInstockMapper;
|
|
||||||
import com.hw.wms.service.IWmsErpScheduledTaskService;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* erp定时任务Service业务层处理
|
|
||||||
*
|
|
||||||
* @author Yinq
|
|
||||||
* @date 2024-07-25
|
|
||||||
*/
|
|
||||||
@Service
|
|
||||||
public class IWmsErpScheduledTaskServiceImpl implements IWmsErpScheduledTaskService {
|
|
||||||
|
|
||||||
private static final Logger log = LoggerFactory.getLogger(IWmsErpScheduledTaskServiceImpl.class);
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private WmsRawInstockMapper wmsRawInstockMapper;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private RemoteJindieService remoteJindieService;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 定时同步入库信息给ERP
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public int synchronizeInventoryInformationToERP() {
|
|
||||||
//仓库编码
|
|
||||||
String FStockId = "CK050";
|
|
||||||
WmsRawInstock wmsRawInstock = new WmsRawInstock();
|
|
||||||
int result = 0;
|
|
||||||
List<WmsRawInstock> inStockList = wmsRawInstockMapper.selectWmsRawInstockERPNotSynchronized(wmsRawInstock);
|
|
||||||
Map<Long, List<WmsRawInstock>> materialIdMap = inStockList.stream().collect(Collectors.groupingBy(WmsRawInstock::getMaterialId));
|
|
||||||
for (Long materialId : materialIdMap.keySet()) {
|
|
||||||
List<WmsRawInstock> wmsRawInstockList = materialIdMap.get(materialId);
|
|
||||||
JSONObject data = new JSONObject();
|
|
||||||
double FRealQty = wmsRawInstockList.stream().mapToDouble(item -> item.getInstockAmount().subtract(item.getErpAmount()).doubleValue()).sum();
|
|
||||||
WmsRawInstock instock = wmsRawInstockList.get(0);
|
|
||||||
data.put("FDate", DateUtils.getTime());
|
|
||||||
data.put("FMaterialId", instock.getMaterialCode());
|
|
||||||
data.put("FAuxPropId", instock.getSpecificationParameter());
|
|
||||||
data.put("FSrcBillNo", instock.getPoNo());
|
|
||||||
data.put("FUnitID", instock.getUnitCode());
|
|
||||||
data.put("FRealQty", FRealQty);
|
|
||||||
data.put("FStockId", FStockId);
|
|
||||||
String params = data.toJSONString();
|
|
||||||
R<AjaxResult> paramsResult = remoteJindieService.savePurchaseStorage(params, SecurityConstants.INNER);
|
|
||||||
String paramsResultData = paramsResult.getMsg();
|
|
||||||
JSONObject jsonObject = JSONObject.parseObject(paramsResultData);
|
|
||||||
Boolean isSuccess = (Boolean) jsonObject.get("IsSuccess");
|
|
||||||
if (isSuccess) {
|
|
||||||
result++;
|
|
||||||
for (WmsRawInstock rawInstock : wmsRawInstockList) {
|
|
||||||
rawInstock.setErpStatus("1");//同步ERP状态(0:失败,1成功)
|
|
||||||
rawInstock.setErpAmount(rawInstock.getInstockAmount());
|
|
||||||
rawInstock.setUpdateDate(DateUtils.getNowDate());
|
|
||||||
wmsRawInstockMapper.updateWmsRawInstock(rawInstock);
|
|
||||||
}
|
|
||||||
log.info("synchronizeInventoryInformationToERP成功:" + paramsResult.toString());
|
|
||||||
} else {
|
|
||||||
log.error("synchronizeInventoryInformationToERP失败:" + paramsResult.toString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -0,0 +1,92 @@
|
|||||||
|
package com.hw.wms.service.impl;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
|
import com.hw.common.core.constant.SecurityConstants;
|
||||||
|
import com.hw.common.core.domain.R;
|
||||||
|
import com.hw.common.core.utils.DateUtils;
|
||||||
|
import com.hw.common.core.web.domain.AjaxResult;
|
||||||
|
import com.hw.jindie.api.RemoteJindieService;
|
||||||
|
import com.hw.wms.domain.WmsRawInstock;
|
||||||
|
import com.hw.wms.mapper.WmsRawInstockMapper;
|
||||||
|
import com.hw.wms.service.IWmsErpScheduledTaskService;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Propagation;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* erp定时任务Service业务层处理
|
||||||
|
*
|
||||||
|
* @author Yinq
|
||||||
|
* @date 2024-07-25
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class WmsErpScheduledTaskServiceImpl implements IWmsErpScheduledTaskService {
|
||||||
|
|
||||||
|
private static final Logger log = LoggerFactory.getLogger(WmsErpScheduledTaskServiceImpl.class);
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private WmsRawInstockMapper wmsRawInstockMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RemoteJindieService remoteJindieService;
|
||||||
|
|
||||||
|
//仓库编码
|
||||||
|
private String FStockId = "CK050";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 定时同步入库信息给ERP
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int synchronizeInventoryInformationToERP() {
|
||||||
|
WmsRawInstock wmsRawInstock = new WmsRawInstock();
|
||||||
|
int result = 0;
|
||||||
|
List<WmsRawInstock> inStockList = wmsRawInstockMapper.selectWmsRawInstockERPNotSynchronized(wmsRawInstock);
|
||||||
|
Map<Long, List<WmsRawInstock>> materialIdMap = inStockList.stream().collect(Collectors.groupingBy(WmsRawInstock::getMaterialId));
|
||||||
|
for (Long materialId : materialIdMap.keySet()) {
|
||||||
|
syncInventoryInformation(materialIdMap, materialId, result);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||||
|
void syncInventoryInformation(Map<Long, List<WmsRawInstock>> materialIdMap, Long materialId, int result) {
|
||||||
|
List<WmsRawInstock> wmsRawInstockList = materialIdMap.get(materialId);
|
||||||
|
JSONObject data = new JSONObject();
|
||||||
|
double FRealQty = wmsRawInstockList.stream().mapToDouble(item -> item.getInstockAmount().subtract(item.getErpAmount()).doubleValue()).sum();
|
||||||
|
WmsRawInstock instock = wmsRawInstockList.get(0);
|
||||||
|
for (WmsRawInstock rawInstock : wmsRawInstockList) {
|
||||||
|
rawInstock.setErpStatus("1");//同步ERP状态(0:失败,1成功)
|
||||||
|
rawInstock.setErpAmount(rawInstock.getInstockAmount());
|
||||||
|
rawInstock.setUpdateDate(DateUtils.getNowDate());
|
||||||
|
wmsRawInstockMapper.updateWmsRawInstock(rawInstock);
|
||||||
|
}
|
||||||
|
data.put("FDate", DateUtils.getTime());
|
||||||
|
data.put("FMaterialId", instock.getMaterialCode());
|
||||||
|
data.put("FAuxPropId", instock.getSpecificationParameter());
|
||||||
|
data.put("FSrcBillNo", instock.getPoNo());
|
||||||
|
data.put("FUnitID", instock.getUnitCode());
|
||||||
|
data.put("FRealQty", FRealQty);
|
||||||
|
data.put("FStockId", FStockId);
|
||||||
|
String params = data.toJSONString();
|
||||||
|
R<AjaxResult> paramsResult = remoteJindieService.savePurchaseStorage(params, SecurityConstants.INNER);
|
||||||
|
String paramsResultData = paramsResult.getMsg();
|
||||||
|
JSONObject jsonObject = JSONObject.parseObject(paramsResultData);
|
||||||
|
Boolean isSuccess = (Boolean) jsonObject.get("IsSuccess");
|
||||||
|
if (isSuccess) {
|
||||||
|
result++;
|
||||||
|
log.info("synchronizeInventoryInformationToERP成功:" + paramsResult.toString());
|
||||||
|
} else {
|
||||||
|
log.error("synchronizeInventoryInformationToERP失败:" + paramsResult.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue