feat(srm): 添加质检入库功能并优化SAP集成

- 在NoScanItemVO中新增储位编号字段
- 将SAP入库接口从ZWM3A17升级到ZWM3A18质检入库接口
- 重构SAP数据传输对象结构以支持质检入库流程
- 添加合格数量和不合格数量分别处理逻辑
- 集成序列号管理功能并在SAP调用中标记启用
- 优化物料凭证回写逻辑以支持质检场景
- 更新日志记录以反映质检入库操作状态
This commit is contained in:
曹鹏飞 2026-06-12 14:12:15 +08:00
parent 0f29c9489c
commit b65ef39eb7
2 changed files with 34 additions and 21 deletions

View File

@ -49,6 +49,11 @@ public class NoScanItemVO {
*/
private String batchNo;
/**
* 储位编号
*/
private String binNo;
/**
* 是否需要扫码
*/

View File

@ -13,9 +13,9 @@ import com.nflg.wms.common.pojo.qo.SRMOrderReceiveQO;
import com.nflg.wms.common.pojo.qo.SRMQualityInspectionResult;
import com.nflg.wms.repository.entity.*;
import com.nflg.wms.repository.service.*;
import com.nflg.wms.srm.receive.pojo.dto.ZWM3A17DTO;
import com.nflg.wms.srm.receive.pojo.dto.ZWM3A17Item1DTO;
import com.nflg.wms.srm.receive.pojo.dto.ZWM3A17Item2DTO;
import com.nflg.wms.srm.receive.pojo.dto.ZWM3A18DTO;
import com.nflg.wms.srm.receive.pojo.dto.ZWM3A18Item1DTO;
import com.nflg.wms.srm.receive.service.SapService;
import com.nflg.wms.starter.BaseController;
import jakarta.annotation.Resource;
@ -219,40 +219,48 @@ public class SRMController extends BaseController {
List<InventoryInDTO> inventories = new ArrayList<>();
inventories.add(inventoryDTO);
// 构建SAP入库数据
ZWM3A17DTO zwm3A17DTO = new ZWM3A17DTO()
// 构建SAP质检入库数据
ZWM3A18DTO zwm3A18DTO = new ZWM3A18DTO()
.setEbeln(data.getPoNum())
.setUsnam("SRM");
zwm3A17DTO.getItem1().add(new ZWM3A17Item1DTO()
.setEBELP(data.getPoLineNumber())
.setMATNR(data.getItemCode())
.setERFMG(data.getQualifiedQty())
.setMEINS(data.getUnit())
.setCHARG(Objects.isNull(data.getMaterialBatch()) ? "" : data.getMaterialBatch())
.setWERKS(data.getFactory())
.setLGORT(data.getReceivedWarehouse())
.setKZKRI(""));
.setUsnam("SRM")
.setMblnr(receiveItem.getMaterialDoc())
.setMjahr(receiveItem.getMaterialDocYear());
List<ZWM3A18Item1DTO> item1List = new ArrayList<>();
item1List.add(new ZWM3A18Item1DTO()
.setErfmg(data.getQualifiedQty().add(data.getUnqualifiedQty()))
.setErfmg1(data.getQualifiedQty())
.setErfmg2(data.getUnqualifiedQty())
.setEbelp(data.getPoLineNumber())
.setMatnr(data.getItemCode())
.setMeins(data.getUnit())
.setCharg(Objects.isNull(data.getMaterialBatch()) ? "" : data.getMaterialBatch())
.setLgort(data.getReceivedWarehouse())
.setSgtxt("")
.setWerks(data.getFactory()));
zwm3A18DTO.setItem1(item1List);
List<ZWM3A17Item2DTO> item2List = new ArrayList<>();
if (StrUtil.isNotBlank(data.getSerialNum())) {
zwm3A17DTO.getItem2().add(new ZWM3A17Item2DTO()
item2List.add(new ZWM3A17Item2DTO()
.setEBELP(data.getPoLineNumber())
.setFLAG("")
.setFLAG("X")
.setSERNR(data.getSerialNum()));
}
zwm3A18DTO.setItem2(item2List);
// 执行库存入库
log.info("开始本地库存入库, 数量: {}", data.getQualifiedQty());
inventoryService.in(inventories);
// 推送到SAP
log.info("开始推送SAP入库, PO: {}, 物料: {}", data.getPoNum(), data.getItemCode());
Pair<Pair<String, String>, Pair<String, String>> returnDto = sapService.zwm3a17(zwm3A17DTO);
log.info("SAP入库返回, 物料凭证: {}, 年份: {}", returnDto.getKey().getKey(), returnDto.getValue().getValue());
log.info("开始推送SAP质检入库, PO: {}, 物料: {}", data.getPoNum(), data.getItemCode());
Pair<String, String> returnDto = sapService.zwm3a18(zwm3A18DTO);
log.info("SAP质检入库返回, 物料凭证: {}, 年份: {}", returnDto.getKey(), returnDto.getValue());
// 更新收货明细的物料凭证和入库数量
qcReceiveItemService.lambdaUpdate()
.eq(WmsQcReceiveItem::getId, receiveItem.getId())
.set(WmsQcReceiveItem::getInQty, data.getQualifiedQty())
.set(WmsQcReceiveItem::getMaterialDoc, returnDto.getKey().getKey())
.set(WmsQcReceiveItem::getMaterialDocYear, returnDto.getValue().getValue())
.set(WmsQcReceiveItem::getMaterialDoc, returnDto.getKey())
.set(WmsQcReceiveItem::getMaterialDocYear, returnDto.getValue())
.update();
// 检查并更新收货单完成状态