diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TestController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TestController.java index bbd1cc0a..8104d107 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TestController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TestController.java @@ -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 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 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 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(); } } \ No newline at end of file