feat(srm): 添加质检入库功能并优化SAP集成
- 在NoScanItemVO中新增储位编号字段 - 将SAP入库接口从ZWM3A17升级到ZWM3A18质检入库接口 - 重构SAP数据传输对象结构以支持质检入库流程 - 添加合格数量和不合格数量分别处理逻辑 - 集成序列号管理功能并在SAP调用中标记启用 - 优化物料凭证回写逻辑以支持质检场景 - 更新日志记录以反映质检入库操作状态
This commit is contained in:
parent
0f29c9489c
commit
b65ef39eb7
|
|
@ -49,6 +49,11 @@ public class NoScanItemVO {
|
|||
*/
|
||||
private String batchNo;
|
||||
|
||||
/**
|
||||
* 储位编号
|
||||
*/
|
||||
private String binNo;
|
||||
|
||||
/**
|
||||
* 是否需要扫码
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
||||
// 检查并更新收货单完成状态
|
||||
|
|
|
|||
Loading…
Reference in New Issue