feat(test): 添加补偿 ZWM3A18 功能

- 引入 ZWM3A18DTO、ZWM3A18Item1DTO、ZWM3A17Item2DTO 数据传输对象
- 注入 IWmsSrmQualityInspectionService 和 IWmsQcReceiveItemService 服务
- 移除未使用的 ILanguageService 和注释掉的代码
- 实现 compensateZwm3a18 接口,支持通过单号进行补偿操作
- 集成 SAP 服务调用 zwm3a18 方法完成物料凭证处理
- 添加序列号处理逻辑,根据检验结果设置标识
- 更新质量检验记录的入库状态和相关凭证信息
This commit is contained in:
曹鹏飞 2026-06-18 15:37:58 +08:00
parent 3be482f52a
commit bef4bbd18e
1 changed files with 74 additions and 27 deletions

View File

@ -1,22 +1,36 @@
package com.nflg.wms.admin.controller;
import cn.hutool.core.lang.Pair;
import cn.hutool.core.util.StrUtil;
import com.nflg.wms.admin.pojo.dto.ZWM3A17Item2DTO;
import com.nflg.wms.admin.pojo.dto.ZWM3A18DTO;
import com.nflg.wms.admin.pojo.dto.ZWM3A18Item1DTO;
import com.nflg.wms.admin.service.BasdeSerialNumberControllerService;
import com.nflg.wms.admin.service.SapService;
import com.nflg.wms.common.pojo.ApiResult;
import com.nflg.wms.common.pojo.dto.LdapDepartmentDTO;
import com.nflg.wms.common.pojo.dto.LdapUserDTO;
import com.nflg.wms.common.util.UserUtil;
import com.nflg.wms.common.util.VUtil;
import com.nflg.wms.repository.entity.WmsQcReceiveItem;
import com.nflg.wms.repository.entity.WmsSrmQualityInspection;
import com.nflg.wms.repository.service.ILanguageService;
import com.nflg.wms.repository.service.IWmsQcReceiveItemService;
import com.nflg.wms.repository.service.IWmsSrmQualityInspectionService;
import com.nflg.wms.starter.BaseController;
import com.sap.conn.jco.JCoException;
import jakarta.annotation.Resource;
import jakarta.validation.metadata.ValidateUnwrappedValue;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
/**
* 测试
@ -25,37 +39,17 @@ import java.util.List;
@RequestMapping("/test")
public class TestController extends BaseController {
@Resource
private ILanguageService languageService;
@Resource
private BasdeSerialNumberControllerService basdeSerialNumberControllerService;
// @Resource
// private LdapService ldapService;
@Resource
private SapService sapService;
@GetMapping("/add")
public void add() throws JCoException {
// try {
sapService.zwm00_MB017("1309976");
// }
// catch (Exception e)
// {
//
// }
@Resource
private IWmsSrmQualityInspectionService wmsSrmQualityInspectionService;
// Language language = new Language()
// .setCode("test1")
// .setName("测试1")
// .setValue("aaa")
// .setIco("")
// .setZone("");
// languageService.save(language);
}
@Resource
private IWmsQcReceiveItemService wmsQcReceiveItemService;
/**
* 同步AD部门列表
@ -75,13 +69,66 @@ public class TestController extends BaseController {
@GetMapping("/ad/string")
public ApiResult<String> getString() {
String ids=basdeSerialNumberControllerService.generateSerialNumber(0);
String ids = basdeSerialNumberControllerService.generateSerialNumber(0);
return ApiResult.success(ids);
}
@GetMapping("/businessError")
public void testThrowBusinessError() throws Exception {
int a=0;
Integer b =100/a;
int a = 0;
Integer b = 100 / a;
}
/**
* 补偿 zwm3a18
*/
@GetMapping("compensateZwm3a18")
public ApiResult<Void> compensateZwm3a18(@RequestParam String no) {
WmsSrmQualityInspection srmQualityInspection = wmsSrmQualityInspectionService.lambdaQuery()
.eq(WmsSrmQualityInspection::getInspectionNum, no)
.one();
VUtil.trueThrowBusinessError(Objects.isNull(srmQualityInspection)).throwMessage("该单号不存在");
VUtil.trueThrowBusinessError(Boolean.TRUE.equals(srmQualityInspection.getIsIn())).throwMessage("该单号已入库,无需补偿");
// 入库单行物料凭证取自入库单
WmsQcReceiveItem wmsQcReceiveItem = wmsQcReceiveItemService.getById(srmQualityInspection.getReceiveId());
VUtil.trueThrowBusinessError(Objects.isNull(wmsQcReceiveItem)).throwMessage("未找到对应的入库单行");
// 组装SAP表头信息参照 NormalQMController.confirm ZWM3A18DTO 的构建逻辑
ZWM3A18DTO dto = new ZWM3A18DTO()
.setEbeln(srmQualityInspection.getPoNum())
.setUsnam(UserUtil.getUserName())
.setMblnr(wmsQcReceiveItem.getMaterialDoc())
.setMjahr(wmsQcReceiveItem.getMaterialDocYear())
.setItem1(new ArrayList<>())
.setItem2(new ArrayList<>());
// 组装SAP行项目信息参照 NormalQMController.set3A18DTOS
dto.getItem1().add(new ZWM3A18Item1DTO()
.setErfmg(srmQualityInspection.getInspectionQty())
.setErfmg1(srmQualityInspection.getQualifiedQty())
.setErfmg2(srmQualityInspection.getUnqualifiedQty())
.setEbelp(srmQualityInspection.getPoLineNumber())
.setMatnr(srmQualityInspection.getItemCode())
.setMeins(srmQualityInspection.getUnit())
.setCharg(srmQualityInspection.getMaterialBatch())
.setLgort(srmQualityInspection.getReceivedWarehouse())
.setSgtxt("")
.setWerks(srmQualityInspection.getFactory()));
if (StrUtil.isNotBlank(srmQualityInspection.getSerialNum())) {
String flag = "合格".equals(srmQualityInspection.getInspectionResult()) ? "X" : "";
dto.getItem2().add(new ZWM3A17Item2DTO()
.setEBELP(srmQualityInspection.getPoLineNumber())
.setSERNR(srmQualityInspection.getSerialNum())
.setFLAG(flag));
}
Pair<String, String> zwm3a18 = sapService.zwm3a18(dto);
srmQualityInspection.setIsIn(true);
srmQualityInspection.setInTime(LocalDateTime.now());
srmQualityInspection.setMaterialDoc105(zwm3a18.getKey());
srmQualityInspection.setMaterialDocYear105(zwm3a18.getValue());
wmsSrmQualityInspectionService.updateById(srmQualityInspection);
return ApiResult.success();
}
}