diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/SapService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/SapService.java index abc39f01..b06a3e79 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/SapService.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/SapService.java @@ -8,18 +8,17 @@ import com.nflg.wms.admin.pojo.dto.ZIM003105DTO; import com.nflg.wms.admin.pojo.dto.ZIM003DTO; import com.nflg.wms.common.constant.STATE; import com.nflg.wms.common.exception.NflgException; -import com.nflg.wms.common.pojo.dto.C_MaterialReturnDTO; -import com.nflg.wms.common.pojo.dto.C_MaterialReturnQueryDTO; -import com.nflg.wms.common.pojo.dto.SAPOrderDTO; -import com.nflg.wms.common.pojo.dto.SAPSyncFromDTO; +import com.nflg.wms.common.pojo.dto.*; import com.nflg.wms.common.pojo.qo.C_MaterialReturnItemQO; import com.nflg.wms.common.pojo.qo.C_MaterialReturnQO; +import com.nflg.wms.common.pojo.qo.ScanCodeQO; import com.nflg.wms.common.util.VUtil; import com.sap.conn.jco.*; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; +import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; @@ -299,21 +298,50 @@ public class SapService { } // 成本中心退库确认 - private C_MaterialReturnDTO zwm00_MB112(C_MaterialReturnQO request) { + private C_MaterialReturnDTO zwm00_MB112(C_MaterialReturnQO request) throws JCoException { Map parameters = new HashMap<>(); parameters.put("I_RSNUM", request.getResbRsNum()); parameters.put("I_USNAM", request.getResbRsNum()); - List items = request.getItems(); -// -// / /Map> summary = items.stream() -// / / .collect(Collectors.groupingBy( -// / / C_MaterialReturnItemQO::getResbRspos, -// / / -// / / Collectors.groupingBy( -// / / C_MaterialReturnItemQO::getResbMatnr, -// / /Collectors.summingDouble(item -> Double.parseDouble(item.getMsebErfmg())) -// / / ) -// / / )); + List t_list1 = new ArrayList<>(); + List t_list2 = new ArrayList<>(); + for (C_MaterialReturnItemQO item : request.getItems()) { + if (CollectionUtil.isNotEmpty(item.getScanCodes())) { + List scanCodeList = item.getScanCodes(); + //合并批次数量 + Map batchSummary = scanCodeList.stream() + .collect(Collectors.groupingBy( + ScanCodeQO::getBatchNumber, + Collectors.reducing(BigDecimal.ZERO, ScanCodeQO::getCodeNum, BigDecimal::add) + )); + for (Map.Entry entry : batchSummary.entrySet()) { + t_list1.add(new C_MaterialReturnItemDTO() + .setMatnr(item.getResbMatnr()) + .setRspos(item.getResbRspos()) + .setLgort(item.getResbLgort()) + .setMeins(item.getResbMeins()) + .setWerks(item.getResbWerks()) + .setCharg(entry.getKey()) + .setErfmg(String.valueOf(entry.getValue())) + + ); + } + for (ScanCodeQO scanCode : scanCodeList) { + t_list2.add(new C_MaterialReturnSerialItemDTO() + .setRspos(item.getResbRspos()) + .setSernr(scanCode.getSerialNumber()) + .setFlag("X") + ); + } + } + } + parameters.put("T_LIST1", t_list1); + parameters.put("T_LIST2", t_list2); + + JCoFunction function = exec("ZWM00_MB112", parameters, null); + JCoTable tOut = function.getTableParameterList().getTable("T_OUT"); + log.info("SAP返回: {}", tOut); + + return null; } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/C_MaterialReturnDTO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/C_MaterialReturnDTO.java index f3576e8a..73422bd3 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/C_MaterialReturnDTO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/C_MaterialReturnDTO.java @@ -1,5 +1,6 @@ package com.nflg.wms.common.pojo.dto; +import com.nflg.wms.common.pojo.qo.C_MaterialReturnQO; import lombok.Data; import lombok.experimental.Accessors; @@ -11,4 +12,7 @@ public class C_MaterialReturnDTO { //物料凭证年度 private String eMJahr; + + //中心退库的物料详情信息 + private C_MaterialReturnQO requestQO; } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/C_MaterialReturnItemDTO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/C_MaterialReturnItemDTO.java new file mode 100644 index 00000000..7f1a2465 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/C_MaterialReturnItemDTO.java @@ -0,0 +1,31 @@ +package com.nflg.wms.common.pojo.dto; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; + +@Data +@Accessors(chain = true) +public class C_MaterialReturnItemDTO { + //预留项目号 + private String rspos; + + // 物料号 + private String matnr; + + //库存地点 + private String lgort; + + // 工厂 + private String werks; + + // 退库数量 + private String erfmg; + + //单位 + private String meins; + + // 批次 + private String charg; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/C_MaterialReturnSerialItemDTO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/C_MaterialReturnSerialItemDTO.java new file mode 100644 index 00000000..daf923f4 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/C_MaterialReturnSerialItemDTO.java @@ -0,0 +1,17 @@ +package com.nflg.wms.common.pojo.dto; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class C_MaterialReturnSerialItemDTO { + //预留项目号 + private String rspos; + + //序列号 + private String sernr; + + //X 表示合格产品,空表示不合格产品 + private String flag; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/C_MaterialReturnItemQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/C_MaterialReturnItemQO.java index edb912e9..eb878ce2 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/C_MaterialReturnItemQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/C_MaterialReturnItemQO.java @@ -5,6 +5,7 @@ import lombok.Data; import lombok.experimental.Accessors; import java.math.BigDecimal; +import java.util.List; @Data @Accessors(chain = true) @@ -16,9 +17,6 @@ public class C_MaterialReturnItemQO { // 物料号 private String resbMatnr; - //实退数量 - private BigDecimal msebErfmg; - //库存地点 private String resbLgort; @@ -28,15 +26,6 @@ public class C_MaterialReturnItemQO { // 单位 private String resbMeins; - // 批次 - /** - * 批次号 - */ - private String batchNumber; - - /** - * 序列号,多个序列号使用;号隔开 - */ - private String serialNumber; - + //扫码信息 + private List scanCodes; } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/ScanCodeQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/ScanCodeQO.java new file mode 100644 index 00000000..fe73a9df --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/ScanCodeQO.java @@ -0,0 +1,38 @@ +package com.nflg.wms.common.pojo.qo; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; + +@Data +@Accessors(chain = true) +public class ScanCodeQO { + + /** + * 二维码编号 + */ + private String codeId; + + /** + * 数量 + */ + @NotNull + private BigDecimal codeNum; + + /** + * 批次号 + */ + private String batchNumber; + + /** + * 序列号 + */ + private String serialNumber; + + /** + * 二维码内容 + */ + private String codeContent; +}