测试url,sply改为erp

This commit is contained in:
liss
2025-09-24 10:02:03 +08:00
parent 4b629100de
commit efab6957a3
26 changed files with 120 additions and 64 deletions

View File

@@ -30,7 +30,7 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - ERP资产卡片") @Tag(name = "管理后台 - ERP资产卡片")
@RestController @RestController
@RequestMapping("/sply/erp-asset") @RequestMapping("/erp/erp-asset")
@Validated @Validated
public class ErpAssetController { public class ErpAssetController {

View File

@@ -30,7 +30,7 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - ERP物料清单(BOM)") @Tag(name = "管理后台 - ERP物料清单(BOM)")
@RestController @RestController
@RequestMapping("/sply/erp-bom") @RequestMapping("/erp/erp-bom")
@Validated @Validated
public class ErpBomController { public class ErpBomController {

View File

@@ -30,7 +30,7 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - ERP物料清单(BOM)明细") @Tag(name = "管理后台 - ERP物料清单(BOM)明细")
@RestController @RestController
@RequestMapping("/sply/erp-bom-detail") @RequestMapping("/erp/erp-bom-detail")
@Validated @Validated
public class ErpBomDetailController { public class ErpBomDetailController {

View File

@@ -30,7 +30,7 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - ERP公司") @Tag(name = "管理后台 - ERP公司")
@RestController @RestController
@RequestMapping("/sply/erp-company") @RequestMapping("/erp/erp-company")
@Validated @Validated
public class ErpCompanyController { public class ErpCompanyController {

View File

@@ -30,7 +30,7 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - ERP成本中心") @Tag(name = "管理后台 - ERP成本中心")
@RestController @RestController
@RequestMapping("/sply/erp-costcenter") @RequestMapping("/erp/erp-costcenter")
@Validated @Validated
public class ErpCostcenterController { public class ErpCostcenterController {

View File

@@ -30,7 +30,7 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - ERP客商信息") @Tag(name = "管理后台 - ERP客商信息")
@RestController @RestController
@RequestMapping("/sply/erp-customer") @RequestMapping("/erp/erp-customer")
@Validated @Validated
public class ErpCustomerController { public class ErpCustomerController {

View File

@@ -30,7 +30,7 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - ERP工厂") @Tag(name = "管理后台 - ERP工厂")
@RestController @RestController
@RequestMapping("/sply/erp-factory") @RequestMapping("/erp/erp-factory")
@Validated @Validated
public class ErpFactoryController { public class ErpFactoryController {

View File

@@ -30,7 +30,7 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - ERP内部订单") @Tag(name = "管理后台 - ERP内部订单")
@RestController @RestController
@RequestMapping("/sply/erp-internal-order") @RequestMapping("/erp/erp-internal-order")
@Validated @Validated
public class ErpInternalOrderController { public class ErpInternalOrderController {

View File

@@ -30,7 +30,7 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - ERP物料信息") @Tag(name = "管理后台 - ERP物料信息")
@RestController @RestController
@RequestMapping("/sply/erp-material") @RequestMapping("/erp/erp-material")
@Validated @Validated
public class ErpMaterialController { public class ErpMaterialController {

View File

@@ -30,7 +30,7 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - ERP工艺路线") @Tag(name = "管理后台 - ERP工艺路线")
@RestController @RestController
@RequestMapping("/sply/erp-process") @RequestMapping("/erp/erp-process")
@Validated @Validated
public class ErpProcessController { public class ErpProcessController {

View File

@@ -30,7 +30,7 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - ERP工艺路线明细") @Tag(name = "管理后台 - ERP工艺路线明细")
@RestController @RestController
@RequestMapping("/sply/erp-process-detail") @RequestMapping("/erp/erp-process-detail")
@Validated @Validated
public class ErpProcessDetailController { public class ErpProcessDetailController {

View File

@@ -30,7 +30,7 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - ERP生产订单") @Tag(name = "管理后台 - ERP生产订单")
@RestController @RestController
@RequestMapping("/sply/erp-productive-order") @RequestMapping("/erp/erp-productive-order")
@Validated @Validated
public class ErpProductiveOrderController { public class ErpProductiveOrderController {

View File

@@ -30,7 +30,7 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - ERP生产版本") @Tag(name = "管理后台 - ERP生产版本")
@RestController @RestController
@RequestMapping("/sply/erp-productive-version") @RequestMapping("/erp/erp-productive-version")
@Validated @Validated
public class ErpProductiveVersionController { public class ErpProductiveVersionController {

View File

@@ -30,7 +30,7 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - ERP采购组织") @Tag(name = "管理后台 - ERP采购组织")
@RestController @RestController
@RequestMapping("/sply/erp-purchase-organization") @RequestMapping("/erp/erp-purchase-organization")
@Validated @Validated
public class ErpPurchaseOrganizationController { public class ErpPurchaseOrganizationController {

View File

@@ -30,7 +30,7 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - ERP销售组织") @Tag(name = "管理后台 - ERP销售组织")
@RestController @RestController
@RequestMapping("/sply/erp-sales-organization") @RequestMapping("/erp/erp-sales-organization")
@Validated @Validated
public class ErpSalesOrganizationController { public class ErpSalesOrganizationController {

View File

@@ -30,7 +30,7 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - ERP库位") @Tag(name = "管理后台 - ERP库位")
@RestController @RestController
@RequestMapping("/sply/erp-warehouse") @RequestMapping("/erp/erp-warehouse")
@Validated @Validated
public class ErpWarehouseController { public class ErpWarehouseController {

View File

@@ -20,7 +20,7 @@ public class ErpBomDetailPageReqVO extends PageParam {
private String childMaterialNumber; private String childMaterialNumber;
@Schema(description = "子项物料描述") @Schema(description = "子项物料描述")
private BigDecimal childMaterialDescription; private String childMaterialDescription;
@Schema(description = "子项类别") @Schema(description = "子项类别")
private String category; private String category;

View File

@@ -30,7 +30,7 @@ public class ErpBomDetailRespVO {
@Schema(description = "子项物料描述", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "子项物料描述", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("子项物料描述") @ExcelProperty("子项物料描述")
private BigDecimal childMaterialDescription; private String childMaterialDescription;
@Schema(description = "子项类别", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "子项类别", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("子项类别") @ExcelProperty("子项类别")

View File

@@ -28,7 +28,7 @@ public class ErpBomDetailSaveReqVO {
@Schema(description = "子项物料描述", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "子项物料描述", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "子项物料描述不能为空") @NotNull(message = "子项物料描述不能为空")
private BigDecimal childMaterialDescription; private String childMaterialDescription;
@Schema(description = "子项类别", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "子项类别", requiredMode = Schema.RequiredMode.REQUIRED)
@NotEmpty(message = "子项类别不能为空") @NotEmpty(message = "子项类别不能为空")

View File

@@ -60,8 +60,4 @@ public class ErpBomDO {
*/ */
@TableField("UNT") @TableField("UNT")
private String unit; private String unit;
@TableField(fill = FieldFill.INSERT)
private List<ErpBomDetailDO> erpBomDetailDOList;
} }

View File

@@ -49,7 +49,7 @@ public class ErpBomDetailDO {
* 子项物料描述 * 子项物料描述
*/ */
@TableField("CHD_MTRL_DSP") @TableField("CHD_MTRL_DSP")
private BigDecimal childMaterialDescription; private String childMaterialDescription;
/** /**
* 子项类别 * 子项类别
*/ */

View File

@@ -26,4 +26,5 @@ public interface ErpBomMapper extends BaseMapperX<ErpBomDO> {
.orderByDesc(ErpBomDO::getId)); .orderByDesc(ErpBomDO::getId));
} }
Long insertGetId(ErpBomDO aDo);
} }

View File

@@ -61,4 +61,5 @@ public interface ErpBomDetailService {
*/ */
PageResult<ErpBomDetailDO> getErpBomDetailPage(ErpBomDetailPageReqVO pageReqVO); PageResult<ErpBomDetailDO> getErpBomDetailPage(ErpBomDetailPageReqVO pageReqVO);
void saveOrUpdateErpBomDetail(List<ErpBomDetailDO> updateReqVO);
} }

View File

@@ -3,16 +3,23 @@ package com.zt.plat.module.erp.service.erp;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.pojo.PageResult;
import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.framework.common.util.object.BeanUtils;
import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.zt.plat.module.erp.common.conf.ErpConfig;
import com.zt.plat.module.erp.common.enums.OftenEnum;
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBomDetailPageReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBomDetailPageReqVO;
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBomDetailRespVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBomDetailRespVO;
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBomDetailSaveReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBomDetailSaveReqVO;
import com.zt.plat.module.erp.dal.dataobject.erp.ErpBomDO;
import com.zt.plat.module.erp.dal.dataobject.erp.ErpBomDetailDO; import com.zt.plat.module.erp.dal.dataobject.erp.ErpBomDetailDO;
import com.zt.plat.module.erp.dal.mysql.erp.ErpBomDetailMapper; import com.zt.plat.module.erp.dal.mysql.erp.ErpBomDetailMapper;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.zt.plat.module.erp.enums.ErrorCodeConstants.ERP_BOM_DETAIL_NOT_EXISTS; import static com.zt.plat.module.erp.enums.ErrorCodeConstants.ERP_BOM_DETAIL_NOT_EXISTS;
@@ -29,6 +36,9 @@ public class ErpBomDetailServiceImpl implements ErpBomDetailService {
@Resource @Resource
private ErpBomDetailMapper erpBomDetailMapper; private ErpBomDetailMapper erpBomDetailMapper;
@Resource
private ErpConfig erpConfig;
@Override @Override
public ErpBomDetailRespVO createErpBomDetail(ErpBomDetailSaveReqVO createReqVO) { public ErpBomDetailRespVO createErpBomDetail(ErpBomDetailSaveReqVO createReqVO) {
// 插入 // 插入
@@ -86,4 +96,35 @@ public class ErpBomDetailServiceImpl implements ErpBomDetailService {
return erpBomDetailMapper.selectPage(pageReqVO); return erpBomDetailMapper.selectPage(pageReqVO);
} }
@Override
public void saveOrUpdateErpBomDetail(List<ErpBomDetailDO> updateReqVO) {
String key = "erpMap" + OftenEnum.FuncnrEnum.BOM清单.getFuncnr()+ "Detail";
if (erpConfig.getRedisCacheMap(key).isEmpty()) {
initializeMap(key);
}
List<ErpBomDetailDO> toUpdate = new ArrayList<>();
List<ErpBomDetailDO> toInsert = new ArrayList<>();
Map<String, Long> existingNumbers = erpConfig.getRedisCacheMap(key);
// for (ErpBomDetailDO updateReqVO : updateReqVO){
// String mapKey = updateReqVO.getBomId() + "-" + updateReqVO.getErpBomId();
// if (existingNumbers.get(mapKey)!=null) {
//
// updateReqVO.setId(existingNumbers.get(mapKey));
// }
// }
// erpBomDetailMapper.saveOrUpdateErpBomDetail(updateReqVO);
}
private void initializeMap(String key) {
List<ErpBomDetailDO> assets = erpBomDetailMapper.selectList(new LambdaQueryWrapperX<ErpBomDetailDO>());
Map<String, Long> existingNumbers = new HashMap<>();
for (ErpBomDetailDO asset : assets) {
String mapKey = asset.getBomId() + "-" + asset.getErpBomId();
existingNumbers.put(mapKey, asset.getId());
}
erpConfig.addRedisCacheMap(key, existingNumbers);
}
} }

View File

@@ -3,6 +3,7 @@ package com.zt.plat.module.erp.service.erp;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.pojo.PageResult;
import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.framework.common.util.object.BeanUtils;
import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.zt.plat.module.erp.api.ErpExternalApi; import com.zt.plat.module.erp.api.ErpExternalApi;
import com.zt.plat.module.erp.api.dto.ErpSubmitReqDTO; import com.zt.plat.module.erp.api.dto.ErpSubmitReqDTO;
import com.zt.plat.module.erp.common.conf.ErpConfig; import com.zt.plat.module.erp.common.conf.ErpConfig;
@@ -10,6 +11,7 @@ import com.zt.plat.module.erp.common.enums.OftenEnum;
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBomPageReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBomPageReqVO;
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBomRespVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBomRespVO;
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBomSaveReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBomSaveReqVO;
import com.zt.plat.module.erp.dal.dataobject.erp.ErpAssetDO;
import com.zt.plat.module.erp.dal.dataobject.erp.ErpBomDO; import com.zt.plat.module.erp.dal.dataobject.erp.ErpBomDO;
import com.zt.plat.module.erp.dal.dataobject.erp.ErpBomDO; import com.zt.plat.module.erp.dal.dataobject.erp.ErpBomDO;
import com.zt.plat.module.erp.dal.dataobject.erp.ErpBomDetailDO; import com.zt.plat.module.erp.dal.dataobject.erp.ErpBomDetailDO;
@@ -48,6 +50,9 @@ public class ErpBomServiceImpl implements ErpBomService {
@Resource @Resource
public ErpExternalApi erpExternalApi; public ErpExternalApi erpExternalApi;
@Resource
private ErpBomDetailServiceImpl bomDetailService;
@Override @Override
public ErpBomRespVO createErpBom(ErpBomSaveReqVO createReqVO) { public ErpBomRespVO createErpBom(ErpBomSaveReqVO createReqVO) {
// 插入 // 插入
@@ -112,13 +117,18 @@ public class ErpBomServiceImpl implements ErpBomService {
try { try {
OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.BOM清单; OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.BOM清单;
String funcnr = funcnrEnum.getFuncnr(); String funcnr = funcnrEnum.getFuncnr();
String key = "erpMap" + funcnr;
if (erpConfig.getRedisCacheMap(key).isEmpty()) {
initializeMap(key);
}
Map<String, Object> req = new HashMap<>(); Map<String, Object> req = new HashMap<>();
JSONArray dataArrayALL = new JSONArray(); JSONArray dataArrayALL = new JSONArray();
List<String> redisCache = erpConfig.getRedisCache(OftenEnum.FuncnrEnum.工厂信息.getFuncnr()); String factKey = "erpMap" + OftenEnum.FuncnrEnum.工厂信息.getFuncnr();
Map<String, Long> redisCache = erpConfig.getRedisCacheMap(factKey);
if (CollUtil.isEmpty(redisCache)) { if (CollUtil.isEmpty(redisCache)) {
return; return;
} }
for (String factoryNumber : redisCache) { for (String factoryNumber : redisCache.keySet()) {
req.put("WERKS", factoryNumber); req.put("WERKS", factoryNumber);
// 1. 调用ERP接口获取数据 // 1. 调用ERP接口获取数据
JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req); JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req);
@@ -143,14 +153,13 @@ public class ErpBomServiceImpl implements ErpBomService {
/** /**
* 处理数据,区分新增和更新 * 处理数据,区分新增和更新
*/ */
private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) { private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnrEnum) {
String key = "erp" + funcnr.getFuncnr(); String key = "erpMap" + funcnrEnum.getFuncnr();
Map<String, Long> numbers = erpConfig.getRedisCacheMap(key); Map<String, Long> numbers = erpConfig.getRedisCacheMap(key);
Map<String, Long> numberDetails = erpConfig.getRedisCacheMap(key+"details");
List<ErpBomDO> toUpdate = new ArrayList<>(); List<ErpBomDO> toUpdate = new ArrayList<>();
List<ErpBomDO> toInsert = new ArrayList<>();
List<String> allnumbers = new ArrayList<>(); List<String> allnumbers = new ArrayList<>();
List<ErpBomDetailDO> erpBomDetailDOList = new ArrayList<>();
for (int i = 0; i < dataArray.size(); i++) { for (int i = 0; i < dataArray.size(); i++) {
JSONObject dataJson = dataArray.getJSONObject(i); JSONObject dataJson = dataArray.getJSONObject(i);
if (dataJson != null) { if (dataJson != null) {
@@ -162,42 +171,37 @@ public class ErpBomServiceImpl implements ErpBomService {
DO.setMaterialDescription(dataJson.getString("MAKTX")); DO.setMaterialDescription(dataJson.getString("MAKTX"));
DO.setQuantity(dataJson.getBigDecimal("BMENG")); DO.setQuantity(dataJson.getBigDecimal("BMENG"));
DO.setUnit(dataJson.getString("BMEIN")); DO.setUnit(dataJson.getString("BMEIN"));
String number =DO.getUpMaterial()+"-"+DO.getUseItem()+"-"+DO.getFactoryNumber(); String number = DO.getFactoryNumber() + "-" + DO.getUpMaterial() + "-" + DO.getUseItem();
if (numbers.get(number) != null) { if (numbers.get(number) != null) {
// 更新 // 更新
DO.setId(numbers.get(number)); DO.setId(numbers.get(number));
toUpdate.add(DO); toUpdate.add(DO);
} else { } else {
// 新增 // 为了避免数据重复先将主表数据插入数据库再获取主表ID再插入子表数据
toInsert.add(DO); erpBomMapper.insert(DO);
numbers.put(number, DO.getId());
} }
JSONArray dataJsonItem = dataJson.getJSONArray("ITEM"); JSONArray dataJsonItem = dataJson.getJSONArray("ITEM");
if (dataJsonItem != null) { if (dataJsonItem != null) {
List<ErpBomDetailDO> erpBomDetailDOList =new ArrayList<>();
for (int j = 0; j < dataJsonItem.size(); j++) { for (int j = 0; j < dataJsonItem.size(); j++) {
JSONObject dataJsonItemJson = dataJsonItem.getJSONObject(j); JSONObject dataJsonItemJson = dataJsonItem.getJSONObject(j);
ErpBomDetailDO detailDO = new ErpBomDetailDO(); ErpBomDetailDO detailDO = new ErpBomDetailDO();
String numberDel = number+dataJsonItemJson.getString("STVKN"); detailDO.setBomId(String.valueOf(DO.getId()));
if (numberDetails.get( numberDel) != null){
detailDO.setId(Long.valueOf(numberDetails.get( numberDel)));
}
detailDO.setBomId(String.valueOf(numbers.get(number)));
detailDO.setErpBomId(dataJsonItemJson.getString("STVKN")); detailDO.setErpBomId(dataJsonItemJson.getString("STVKN"));
detailDO.setErpBomId(dataJsonItemJson.getString("IDNRK")); detailDO.setChildMaterialNumber(dataJsonItemJson.getString("IDNRK"));
detailDO.setErpBomId(dataJsonItemJson.getString("OJTXP")); detailDO.setChildMaterialDescription(dataJsonItemJson.getString("OJTXP"));
detailDO.setErpBomId(dataJsonItemJson.getString("POSTP")); detailDO.setCategory(dataJsonItemJson.getString("POSTP"));
detailDO.setErpBomId(dataJsonItemJson.getString("MENGE")); detailDO.setQuantity(dataJsonItemJson.getBigDecimal("MENGE"));
detailDO.setErpBomId(dataJsonItemJson.getString("MEINS")); detailDO.setUnit(dataJsonItemJson.getString("MEINS"));
detailDO.setErpBomId(dataJsonItemJson.getString("WLCAT")); detailDO.setIdentificationType(dataJsonItemJson.getString("WLCAT"));
erpBomDetailDOList.add(detailDO); erpBomDetailDOList.add(detailDO);
} }
DO.setErpBomDetailDOList(erpBomDetailDOList);
} }
} }
} }
return new ProcessingResult(toUpdate, toInsert, key, allnumbers); return new ProcessingResult(toUpdate, erpBomDetailDOList,key, allnumbers);
} }
/** /**
@@ -205,13 +209,12 @@ public class ErpBomServiceImpl implements ErpBomService {
*/ */
private void saveData(ProcessingResult result) { private void saveData(ProcessingResult result) {
// 批量新增和更新 // 批量新增和更新
if (!result.toInsert.isEmpty()) {
erpBomMapper.insertBatch(result.toInsert);
}
if (!result.toUpdate.isEmpty()) { if (!result.toUpdate.isEmpty()) {
erpBomMapper.updateBatch(result.toUpdate); erpBomMapper.updateBatch(result.toUpdate);
} }
erpConfig.updateRedisCache(result.key, result.allnumbers); if (!result.erpBomDetailDOList.isEmpty()) {
bomDetailService.saveOrUpdateErpBomDetail(result.erpBomDetailDOList);
}
} }
/** /**
@@ -219,18 +222,28 @@ public class ErpBomServiceImpl implements ErpBomService {
*/ */
private static class ProcessingResult { private static class ProcessingResult {
private final List<ErpBomDO> toUpdate; private final List<ErpBomDO> toUpdate;
private final List<ErpBomDO> toInsert; private final List<ErpBomDetailDO> erpBomDetailDOList;
private final String key; private final String key;
private final List<String> allnumbers; private final List<String> allnumbers;
public ProcessingResult(List<ErpBomDO> toUpdate, List<ErpBomDO> toInsert, String key, List<String> allnumbers) { public ProcessingResult(List<ErpBomDO> toUpdate, List<ErpBomDetailDO> erpBomDetailDOList, String key, List<String> allnumbers) {
this.toUpdate = toUpdate; this.toUpdate = toUpdate;
this.toInsert = toInsert; this.erpBomDetailDOList = erpBomDetailDOList;
this.key = key; this.key = key;
this.allnumbers = allnumbers; this.allnumbers = allnumbers;
} }
} }
private void initializeMap(String key) {
List<ErpBomDO> assets = 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());
}
erpConfig.addRedisCacheMap(key, existingNumbers);
}
@Override @Override
public void submitDataToErp() { public void submitDataToErp() {

View File

@@ -9,6 +9,10 @@
文档可见https://www.iocoder.cn/MyBatis/x-plugins/ 文档可见https://www.iocoder.cn/MyBatis/x-plugins/
--> -->
<insert id="insertGetId">
</insert>
<update id="updateBatch"> <update id="updateBatch">
<foreach collection="toUpdate" item="item" separator=";"> <foreach collection="toUpdate" item="item" separator=";">
UPDATE sply_erp_fact UPDATE sply_erp_fact