修改定时任务返回
This commit is contained in:
@@ -93,7 +93,7 @@ public ResponseEntity<String> pushDataToErp(ErpSubmitReqDTO reqDTO) {
|
||||
JSONObject requestBody = new JSONObject();
|
||||
requestBody.put("uuid", UUID.randomUUID().toString());
|
||||
requestBody.put("sapsys", sapsys);
|
||||
requestBody.put("srcsys", reqDTO.getSrcsys());
|
||||
requestBody.put("srcsys", "DSC");
|
||||
requestBody.put("funcnr", reqDTO.getFuncnr());
|
||||
requestBody.put("bskey", reqDTO.getBskey());
|
||||
requestBody.put("usrid", reqDTO.getUsrid());
|
||||
|
||||
@@ -104,7 +104,8 @@ public class ErpAssetController {
|
||||
@PostMapping("/getErpAssetTask")
|
||||
@Operation(summary = "定时获得erp更新资产卡片")
|
||||
@PreAuthorize("@ss.hasPermission('sply:erp-asset:create')")
|
||||
public void getErpCompanyTask() {
|
||||
public CommonResult<Boolean> getErpCompanyTask() {
|
||||
erpAssetService.callErpRfcInterface();
|
||||
return success(true);
|
||||
}
|
||||
}
|
||||
@@ -104,8 +104,9 @@ public class ErpBomController {
|
||||
@PostMapping("/getErpBomTask")
|
||||
@Operation(summary = "定时获得erp更新物料清单(BOM)")
|
||||
@PreAuthorize("@ss.hasPermission('sply:erp-bom:create')")
|
||||
public void getErpBomTask() {
|
||||
erpBomService.callErpRfcInterface();
|
||||
public CommonResult<Boolean> getErpBomTask() {
|
||||
erpBomService.callErpRfcInterface();
|
||||
return CommonResult.success(true);
|
||||
}
|
||||
|
||||
@PostMapping("/submitDataToErp")
|
||||
|
||||
@@ -104,8 +104,9 @@ public class ErpCompanyController {
|
||||
@PostMapping("/getErpCompanyTask")
|
||||
@Operation(summary = "定时获得erp更新公司")
|
||||
@PreAuthorize("@ss.hasPermission('sply:erp-company:create')")
|
||||
public void getErpCompanyTask() {
|
||||
public CommonResult<Boolean> getErpCompanyTask() {
|
||||
erpCompanyService.callErpRfcInterface();
|
||||
return success(true);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -104,7 +104,8 @@ public class ErpContractController {
|
||||
@PostMapping("/getErpContractTask")
|
||||
@Operation(summary = "定时获得erp更新合同")
|
||||
@PreAuthorize("@ss.hasPermission('sply:erp-contract:create')")
|
||||
public void getErpContractTask() {
|
||||
public CommonResult<Boolean> getErpContractTask() {
|
||||
erpContractService.callErpRfcInterface();
|
||||
return success(true);
|
||||
}
|
||||
}
|
||||
@@ -104,8 +104,9 @@ public class ErpCostcenterController {
|
||||
@PostMapping("/getErpCostcenterTask")
|
||||
@Operation(summary = "定时获得erp更新成本中心")
|
||||
@PreAuthorize("@ss.hasPermission('sply:erp-costcenter:create')")
|
||||
public void getErpCostcenterTask() {
|
||||
public CommonResult<Boolean> getErpCostcenterTask() {
|
||||
erpCostcenterService.callErpRfcInterface();
|
||||
return success(true);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -104,7 +104,8 @@ public class ErpCustomerController {
|
||||
@PostMapping("/getErpCustomerTask")
|
||||
@Operation(summary = "定时获得erp更新客商主数据")
|
||||
@PreAuthorize("@ss.hasPermission('sply:erp-customer:create')")
|
||||
public void getErpCustomerTask() {
|
||||
public CommonResult<Boolean> getErpCustomerTask() {
|
||||
erpCustomerService.callErpRfcInterface();
|
||||
return success(true);
|
||||
}
|
||||
}
|
||||
@@ -104,8 +104,9 @@ public class ErpFactoryController {
|
||||
@PostMapping("/getErpFactoryTask")
|
||||
@Operation(summary = "定时获得erp工厂数据")
|
||||
@PreAuthorize("@ss.hasPermission('sply:erp-factory:create')")
|
||||
public void getErpFactoryTask() {
|
||||
public CommonResult<Boolean> getErpFactoryTask() {
|
||||
erpFactoryService.callErpRfcInterface();
|
||||
return success(true);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -104,8 +104,9 @@ public class ErpInternalOrderController {
|
||||
@PostMapping("/getErpInternalOrderTask")
|
||||
@Operation(summary = "定时获得erp更新内部订单数据")
|
||||
@PreAuthorize("@ss.hasPermission('sply:erp-internal-order:create')")
|
||||
public void getErpInternalOrderTask() {
|
||||
public CommonResult<Boolean> getErpInternalOrderTask() {
|
||||
erpInternalOrderService.callErpRfcInterface();
|
||||
return success(true);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -104,8 +104,9 @@ public class ErpMaterialController {
|
||||
@PostMapping("/getErpMaterialTask")
|
||||
@Operation(summary = "定时获得erp更新物料")
|
||||
@PreAuthorize("@ss.hasPermission('sply:erp-material:create')")
|
||||
public void getErpMaterialTask() {
|
||||
public CommonResult<Boolean> getErpMaterialTask() {
|
||||
erpMaterialService.callErpRfcInterface();
|
||||
return success(true);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -104,8 +104,9 @@ public class ErpProcessController {
|
||||
@PostMapping("/getErpProcessTask")
|
||||
@Operation(summary = "定时获得erp更新工艺路线")
|
||||
@PreAuthorize("@ss.hasPermission('sply:erp-process:create')")
|
||||
public void getErpProcessTask() {
|
||||
public CommonResult<Boolean> getErpProcessTask() {
|
||||
erpProcessService.callErpRfcInterface();
|
||||
return success(true);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -104,8 +104,9 @@ public class ErpProductiveOrderController {
|
||||
@PostMapping("/getErpProductiveOrderTask")
|
||||
@Operation(summary = "定时获得erp更新生产订单")
|
||||
@PreAuthorize("@ss.hasPermission('sply:erp-productive-order:create')")
|
||||
public void getErpProductiveOrderTask() {
|
||||
public CommonResult<Boolean> getErpProductiveOrderTask() {
|
||||
erpProductiveOrderService.callErpRfcInterface();
|
||||
return success(true);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -104,8 +104,9 @@ public class ErpProductiveVersionController {
|
||||
@PostMapping("/getErpProductiveVersionTask")
|
||||
@Operation(summary = "定时获得erp更新生产版本")
|
||||
@PreAuthorize("@ss.hasPermission('sply:erp-productive-version:create')")
|
||||
public void getErpProductiveVersionTask() {
|
||||
public CommonResult<Boolean> getErpProductiveVersionTask() {
|
||||
erpProductiveVersionService.callErpRfcInterface();
|
||||
return success(true);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -104,8 +104,9 @@ public class ErpPurchaseOrganizationController {
|
||||
@PostMapping("/getErpPurchaseOrganizationTask")
|
||||
@Operation(summary = "定时获得erp更新采购组织")
|
||||
@PreAuthorize("@ss.hasPermission('sply:erp-purchase-organization:create')")
|
||||
public void getErpPurchaseOrganizationTask() {
|
||||
public CommonResult<Boolean> getErpPurchaseOrganizationTask() {
|
||||
erpPurchaseOrganizationService.callErpRfcInterface();
|
||||
return success(true);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -104,8 +104,9 @@ public class ErpSalesOrganizationController {
|
||||
@PostMapping("/getErpSalesOrganizationTask")
|
||||
@Operation(summary = "定时获得erp更新销售组织")
|
||||
@PreAuthorize("@ss.hasPermission('sply:erp-sales-organization:create')")
|
||||
public void getErpSalesOrganizationTask() {
|
||||
public CommonResult<Boolean> getErpSalesOrganizationTask() {
|
||||
erpSalesOrganizationService.callErpRfcInterface();
|
||||
return success(true);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -104,8 +104,9 @@ public class ErpWarehouseController {
|
||||
@PostMapping("/getErpWarehouseTask")
|
||||
@Operation(summary = "定时获得erp更新库位")
|
||||
@PreAuthorize("@ss.hasPermission('sply:erp-warehouse:create')")
|
||||
public void getErpWarehouseTask() {
|
||||
public CommonResult<Boolean> getErpWarehouseTask() {
|
||||
erpWarehouseService.callErpRfcInterface();
|
||||
return success(true);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -126,7 +126,7 @@ public class ErpBomServiceImpl implements ErpBomService {
|
||||
String factKey = "erpMap" + OftenEnum.FuncnrEnum.工厂信息.getFuncnr();
|
||||
Map<String, Long> redisCache = erpConfig.getRedisCacheMap(factKey);
|
||||
if (CollUtil.isEmpty(redisCache)) {
|
||||
return;
|
||||
throw exception(ERP_BOM_NOT_EXISTS);
|
||||
}
|
||||
for (String factoryNumber : redisCache.keySet()) {
|
||||
req.put("WERKS", factoryNumber);
|
||||
@@ -158,74 +158,86 @@ public class ErpBomServiceImpl implements ErpBomService {
|
||||
Map<String, Long> numbers = erpConfig.getRedisCacheMap(key);
|
||||
List<ErpBomDO> toUpdate = new ArrayList<>();
|
||||
|
||||
List<String> allnumbers = new ArrayList<>();
|
||||
List<ErpBomDetailDO> erpBomDetailDOList = new ArrayList<>();
|
||||
Map<String, Long> addnumbers = new HashMap<>();
|
||||
List<String> dataArrayNumbers = new ArrayList<>();
|
||||
|
||||
for (int i = 0; i < dataArray.size(); i++) {
|
||||
JSONObject dataJson = dataArray.getJSONObject(i);
|
||||
if (dataJson != null) {
|
||||
ErpBomDO DO = new ErpBomDO();
|
||||
DO.setFactoryNumber(dataJson.getString("WERKS"));
|
||||
DO.setUpMaterial(dataJson.getString("MATNR"));
|
||||
DO.setUseItem(dataJson.getString("STLAL"));
|
||||
// DO.set(dataJson.getString("STLAN"));数据库无这个字段
|
||||
DO.setMaterialDescription(dataJson.getString("MAKTX"));
|
||||
DO.setQuantity(dataJson.getBigDecimal("BMENG"));
|
||||
DO.setUnit(dataJson.getString("BMEIN"));
|
||||
String number = DO.getFactoryNumber() + "-" + DO.getUpMaterial() + "-" + DO.getUseItem();
|
||||
if (numbers.get(number) != null) {
|
||||
// 更新
|
||||
DO.setId(numbers.get(number));
|
||||
toUpdate.add(DO);
|
||||
} else {
|
||||
// 为了避免数据重复,先将主表数据插入数据库,再获取主表ID,再插入子表数据
|
||||
erpBomMapper.insert(DO);
|
||||
addnumbers.put(number, DO.getId());
|
||||
}
|
||||
ErpBomDO bomDO = new ErpBomDO();
|
||||
bomDO.setFactoryNumber(dataJson.getString("WERKS"));
|
||||
bomDO.setUpMaterial(dataJson.getString("MATNR"));
|
||||
bomDO.setUseItem(dataJson.getString("STLAL"));
|
||||
bomDO.setMaterialDescription(dataJson.getString("MAKTX"));
|
||||
bomDO.setQuantity(dataJson.getBigDecimal("BMENG"));
|
||||
bomDO.setUnit(dataJson.getString("BMEIN"));
|
||||
|
||||
String number = bomDO.getFactoryNumber() + "-" + bomDO.getUpMaterial() + "-" + bomDO.getUseItem();
|
||||
dataArrayNumbers.add(number);
|
||||
|
||||
if (numbers.containsKey(number)) {
|
||||
// 更新
|
||||
bomDO.setId(numbers.get(number));
|
||||
toUpdate.add(bomDO);
|
||||
} else {
|
||||
// 新增
|
||||
erpBomMapper.insert(bomDO);
|
||||
addnumbers.put(number, bomDO.getId());
|
||||
}
|
||||
|
||||
JSONArray dataJsonItem = dataJson.getJSONArray("ITEM");
|
||||
if (dataJsonItem != null) {
|
||||
if (dataJsonItem != null && !dataJsonItem.isEmpty()) {
|
||||
for (int j = 0; j < dataJsonItem.size(); j++) {
|
||||
JSONObject dataJsonItemJson = dataJsonItem.getJSONObject(j);
|
||||
JSONObject itemJson = dataJsonItem.getJSONObject(j);
|
||||
ErpBomDetailDO detailDO = new ErpBomDetailDO();
|
||||
detailDO.setBomId(String.valueOf(DO.getId()));
|
||||
detailDO.setErpBomId(dataJsonItemJson.getString("STVKN"));
|
||||
detailDO.setChildMaterialNumber(dataJsonItemJson.getString("IDNRK"));
|
||||
detailDO.setChildMaterialDescription(dataJsonItemJson.getString("OJTXP"));
|
||||
detailDO.setCategory(dataJsonItemJson.getString("POSTP"));
|
||||
detailDO.setQuantity(dataJsonItemJson.getBigDecimal("MENGE"));
|
||||
detailDO.setUnit(dataJsonItemJson.getString("MEINS"));
|
||||
detailDO.setIdentificationType(dataJsonItemJson.getString("WLCAT"));
|
||||
detailDO.setBomId(String.valueOf(bomDO.getId()));
|
||||
detailDO.setErpBomId(itemJson.getString("STVKN"));
|
||||
detailDO.setChildMaterialNumber(itemJson.getString("IDNRK"));
|
||||
detailDO.setChildMaterialDescription(itemJson.getString("OJTXP"));
|
||||
detailDO.setCategory(itemJson.getString("POSTP"));
|
||||
detailDO.setQuantity(itemJson.getBigDecimal("MENGE"));
|
||||
detailDO.setUnit(itemJson.getString("MEINS"));
|
||||
detailDO.setIdentificationType(itemJson.getString("WLCAT"));
|
||||
erpBomDetailDOList.add(detailDO);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 过滤出numbers中有,但dataArray中KOSTL没有的记录,即为需要删除的数据
|
||||
Map<String, Long> deleteNumbers = new HashMap<>();
|
||||
// 识别需要删除的数据
|
||||
List<String> deleteNumbers = new ArrayList<>();
|
||||
for (String number : numbers.keySet()) {
|
||||
if (!dataArrayNumbers.contains(number)) {
|
||||
deleteNumbers.put(number, numbers.get(number));
|
||||
deleteNumbers.add(number);
|
||||
}
|
||||
}
|
||||
|
||||
return new ProcessingResult(toUpdate, erpBomDetailDOList, key, allnumbers);
|
||||
return new ProcessingResult(toUpdate, key, addnumbers, deleteNumbers, erpBomDetailDOList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量保存数据
|
||||
*/
|
||||
private void saveData(ProcessingResult result) {
|
||||
// 批量新增和更新
|
||||
// 批量更新
|
||||
if (!result.toUpdate.isEmpty()) {
|
||||
erpBomMapper.updateBatch(result.toUpdate);
|
||||
}
|
||||
|
||||
// 保存或更新BOM详情
|
||||
if (!result.erpBomDetailDOList.isEmpty()) {
|
||||
bomDetailService.saveOrUpdateErpBomDetail(result.erpBomDetailDOList);
|
||||
}
|
||||
|
||||
// 更新Redis缓存
|
||||
if (!result.addnumbers.isEmpty()) {
|
||||
erpConfig.addRedisCacheMap(result.key, result.addnumbers);
|
||||
}
|
||||
|
||||
if (!result.deleteNumbers.isEmpty()) {
|
||||
erpConfig.deleteRedisCacheMap(result.key, result.deleteNumbers);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -233,24 +245,27 @@ public class ErpBomServiceImpl implements ErpBomService {
|
||||
*/
|
||||
private static class ProcessingResult {
|
||||
private final List<ErpBomDO> toUpdate;
|
||||
private final List<ErpBomDetailDO> erpBomDetailDOList;
|
||||
private final String key;
|
||||
private final List<String> allnumbers;
|
||||
private final Map<String, Long> addnumbers;
|
||||
private final List<String> deleteNumbers;
|
||||
private final List<ErpBomDetailDO> erpBomDetailDOList;
|
||||
|
||||
public ProcessingResult(List<ErpBomDO> toUpdate, List<ErpBomDetailDO> erpBomDetailDOList, String key, List<String> allnumbers) {
|
||||
public ProcessingResult(List<ErpBomDO> toUpdate, String key, Map<String, Long> addnumbers,
|
||||
List<String> deleteNumbers, List<ErpBomDetailDO> erpBomDetailDOList) {
|
||||
this.toUpdate = toUpdate;
|
||||
this.erpBomDetailDOList = erpBomDetailDOList;
|
||||
this.key = key;
|
||||
this.allnumbers = allnumbers;
|
||||
this.addnumbers = addnumbers;
|
||||
this.deleteNumbers = deleteNumbers;
|
||||
this.erpBomDetailDOList = erpBomDetailDOList;
|
||||
}
|
||||
}
|
||||
|
||||
private void initializeMap(String key) {
|
||||
List<ErpBomDO> assets = erpBomMapper.selectList(new LambdaQueryWrapperX<ErpBomDO>());
|
||||
List<ErpBomDO> bomList = erpBomMapper.selectList(new LambdaQueryWrapperX<ErpBomDO>());
|
||||
Map<String, Long> existingNumbers = new HashMap<>();
|
||||
for (ErpBomDO asset : assets) {
|
||||
String mapKey = asset.getFactoryNumber() + "-" + asset.getUpMaterial() + "-" + asset.getUseItem();
|
||||
existingNumbers.put(mapKey, asset.getId());
|
||||
for (ErpBomDO bom : bomList) {
|
||||
String mapKey = bom.getFactoryNumber() + "-" + bom.getUpMaterial() + "-" + bom.getUseItem();
|
||||
existingNumbers.put(mapKey, bom.getId());
|
||||
}
|
||||
erpConfig.addRedisCacheMap(key, existingNumbers);
|
||||
}
|
||||
@@ -259,7 +274,6 @@ public class ErpBomServiceImpl implements ErpBomService {
|
||||
@Override
|
||||
public void submitDataToErp() {
|
||||
ErpSubmitReqDTO reqDTO = new ErpSubmitReqDTO();
|
||||
reqDTO.setSrcsys("MOM");
|
||||
reqDTO.setFuncnr("061");
|
||||
reqDTO.setBskey("POTEST011");
|
||||
reqDTO.setUsrid("cuibin");
|
||||
|
||||
Reference in New Issue
Block a user