diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/CenterOutboundControllerService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/CenterOutboundControllerService.java index 4a9c6c65..0cc5c700 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/CenterOutboundControllerService.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/CenterOutboundControllerService.java @@ -163,7 +163,7 @@ public class CenterOutboundControllerService { .setCreateTime(LocalDateTime.now()) .setCreateUserName(UserUtil.getUserName()) .setCreateUserId(UserUtil.getUserId()) - .setWorkstation(request.getRkpfWempf()); + .setWorkstation(request.getWempf()); List wmsCenterOutboundItems = new ArrayList<>(); List wmsCenterOutboundScans = new ArrayList<>(); 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 135ddb97..734397d1 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 @@ -3,6 +3,7 @@ package com.nflg.wms.admin.service; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSON; import com.nflg.wms.admin.pojo.dto.SAPMaterialInfoInOrderDTO; import com.nflg.wms.admin.pojo.dto.ZIM003105DTO; import com.nflg.wms.admin.pojo.dto.ZIM003DTO; @@ -11,10 +12,13 @@ import com.nflg.wms.common.constant.STATE; import com.nflg.wms.common.exception.NflgException; import com.nflg.wms.common.pojo.dto.*; import com.nflg.wms.common.pojo.qo.*; +import com.nflg.wms.common.pojo.qo.Zwm3a07QO; +import com.nflg.wms.common.pojo.vo.*; import com.nflg.wms.common.util.UserUtil; import com.nflg.wms.common.util.VUtil; import com.sap.conn.jco.*; import jakarta.annotation.Resource; +import jdk.jshell.execution.Util; import lombok.extern.slf4j.Slf4j; import org.slf4j.MDC; import org.springframework.stereotype.Component; @@ -554,7 +558,7 @@ public class SapService { return map; } - /** + /** * 成本中心领料查询接口 *

* 根据预留单号(resebRsNum)调用SAP的RFC函数ZWM00_MB026,查询对应的成本中心领料信息, @@ -563,7 +567,6 @@ public class SapService { * @param resebRsNum 预留单号,不能为空 * @return C_MaterialOutboundQueryDTO 领料查询结果数据传输对象,包含主信息和明细列表 */ - //成本中心领料查询 public C_MaterialOutboundQueryDTO zwm00_MB026(String resebRsNum) { // 参数校验 VUtil.trueThrowBusinessError(resebRsNum == null || resebRsNum.isEmpty()).throwMessage("请求参数不能为空"); @@ -605,6 +608,17 @@ public class SapService { } + /** + * 成本中心预留出库过账接口 + * 调用SAP RFC函数 ZWM00_MB115 执行物料出库操作。 + *

+ * 该方法首先校验请求参数中的物料明细是否为空,然后构造调用SAP所需的输入参数和表结构, + * 包括 T_LIST1 和 T_LIST2。根据是否存在扫码信息决定数据填充方式。 + * 最后调用SAP函数并处理返回结果,构造并返回出库凭证信息。 + * + * @param request 物料出库请求对象,包含预留号、用户信息及物料明细列表 + * @return C_MaterialOutboundDTO 出库操作成功后返回的物料凭证信息,包括物料凭证号(MBLNR)和年度(MJAHR) + */ public C_MaterialOutboundDTO ZWM00_MB115(C_MaterialOutboundQO request) { VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(request.getItems())).throwMessage("物料明细不能为空"); @@ -666,6 +680,7 @@ public class SapService { return result; } + // 提取构造 T_LIST1 表项的方法 private Map buildMb115TList1Map(C_MaterialOutboundItemQO item, BigDecimal erFmg, String charg) { Map map = new HashMap<>(8); // 预设容量避免频繁扩容 @@ -688,8 +703,455 @@ public class SapService { return map; } + /** + * 生产领料单查询接口 + *

+ * 该方法用于调用SAP的RFC函数ZWM3A07,根据传入的查询条件获取生产领料单信息。 + * 查询条件包括工厂代码、工序、生产订单号和库存地点等。 + * 返回结果包含主表信息和明细项列表。 + * + * @param query 查询参数对象,包含工厂代码(必填)、工序列表、生产订单号列表、库存地点列表等 + * @return Zwm3a07VO 包含查询结果的VO对象,包括主表字段和明细项列表 + */ + //生产领料单查询接口 + public Zwm3a07VO zwm3a07(Zwm3a07QO query) { + VUtil.trueThrowBusinessError(Objects.isNull(query)).throwMessage("查询内容不可以为空"); + VUtil.trueThrowBusinessError(query.getI_werks().isEmpty()).throwMessage("工厂代码不可以为空"); + + // 构造函数调用所需的输入参数 + Map parameters = new HashMap<>(); + parameters.put("I_WERKS", query.getI_werks()); + + Map>> tables = new HashMap<>(); + + // 构造工序参数表 I_ARBPL + if (CollectionUtil.isNotEmpty(query.getArbpl())) { + List> t_list1 = new ArrayList<>(); + query.getArbpl().forEach(arbpl -> { + t_list1.add(Map.of("ARBPL", arbpl)); + }); + tables.put("I_ARBPL", t_list1); + } + + // 构造生产订单号参数表 I_AUFNR + if (CollectionUtil.isNotEmpty(query.getAufnr())) { + List> t_list2 = new ArrayList<>(); + query.getAufnr().forEach(aufnr -> { + t_list2.add(Map.of("AUFNR", aufnr)); + }); + tables.put("I_AUFNR", t_list2); + } + + // 构造库存地点参数表 I_LGORT + if (CollectionUtil.isNotEmpty(query.getLgort())) { + List> t_list3 = new ArrayList<>(); + query.getLgort().forEach(lgort -> { + t_list3.add(Map.of("LGORT", lgort)); + }); + tables.put("I_LGORT", t_list3); + } + + // 调用SAP RFC函数 ZWM3A07 + JCoFunction function = exec("ZWM3A07", parameters, tables); + + // 获取输出表 OUTPUT1 并解析数据 + JCoTable tOut = function.getTableParameterList().getTable("OUTPUT1"); + log.info("SAP返回: {}", tOut); + Zwm3a07VO result = new Zwm3a07VO(); + + if (tOut.getNumRows() > 0) { + for (int i = 0; i < tOut.getNumRows(); i++) { + tOut.setRow(i); + + // 设置主表字段(仅第一行设置一次) + if (i == 0) { + result.setAufnr(tOut.getString("AUFNR")) + .setRsnum(tOut.getString("RSNUM")) + .setPlnbez(tOut.getString("PLNBEZ")) + .setMaktx(tOut.getString("MAKTX")) + .setVornr(tOut.getString("VORNR")) + .setSernr(tOut.getString("SERNR")) + .setJtsn(tOut.getString("JTSN")) + .setCusn(tOut.getString("CUSN")) + .setKtext(tOut.getString("KTEXT")) + .setDwerk(tOut.getString("DWERK")) + .setName(tOut.getString("NAME")); + } + + // 构造并填充明细项 + Zwm3a07ItemVO item = new Zwm3a07ItemVO(); + item.setQlsl(tOut.getString("QLSL")) + .setSqsl(tOut.getString("SQSL")) + .setMatnr(tOut.getString("MATNR")) + .setBdter(tOut.getString("BDTER")) + .setRspos(tOut.getString("RSPOS")) + .setSqsl2(tOut.getString("SQSL2")) + .setSqsl3(tOut.getString("SQSL3")) + .setEnmng(tOut.getString("ENMNG")) + .setBdmng(tOut.getString("BDMNG")) + .setLabst(tOut.getString("LABST")) + .setKcqls(tOut.getString("KCQLS")) + .setLgort2(tOut.getString("LGORT2")) + .setMeins(tOut.getString("MEINS")) + .setLgpbe(tOut.getString("LGPBE")) + .setInsme(tOut.getString("INSME")) + .setRsnum2(tOut.getString("RSNUM2")) + .setMaktx2(tOut.getString("MAKTX2")) + .setEkgrp(tOut.getString("EKGRP")) + .setDispo(tOut.getString("DISPO")); + + result.getItems().add(item); + } + } + + log.debug("数据:{}", JSONUtil.toJsonStr(result)); + return result; + } + + + /** + * 生成领料出库接口 + *

+ * 该方法用于调用 SAP 的 RFC 函数 ZWM3A10,执行领料出库操作。首先校验输入参数, + * 然后构造函数所需的输入参数和表数据,调用 SAP 接口,并处理返回结果。 + *

+ * + * @param query 查询参数对象,包含领料出库所需的信息,如订单号、物料明细等。 + * 不能为空,且至少包含一个物料明细项。 + * @return Zwm3a10VO 返回结果对象,包含生成的物料凭证号(MAT_DOC)和凭证年度(DOC_YEAR) + */ + //生成领料出库接口 + public Zwm3a10VO zwm3A10(Zwm3a10QO query) { + VUtil.trueThrowBusinessError(Objects.isNull(query)).throwMessage("查询内容不可以为空"); + VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(query.getInput1())).throwMessage("物料明细不能为空"); + + // 构造函数调用所需的输入参数 + Map parameters = new HashMap<>(); + parameters.put("AUFNR", query.getAufnr()); + + // 将构造好的表数据放入输入参数中 + Map>> tables = new HashMap<>(); + + // 构造 INPUT1 表数据:包含物料相关明细信息 + if (CollectionUtil.isNotEmpty(query.getInput1())) { + List> t_list1 = new ArrayList<>(); + query.getInput1().forEach(input -> { + t_list1.add(Map.of("RSPOS", input.getRspos())); + t_list1.add(Map.of("MATNR", input.getMatnr())); + t_list1.add(Map.of("MAKTX", input.getMaktx())); + t_list1.add(Map.of("WERKS", input.getWerks())); + t_list1.add(Map.of("LGORT", input.getLgort())); + t_list1.add(Map.of("MENGE", input.getMenge())); + t_list1.add(Map.of("MENGE_T", input.getMengeT())); + t_list1.add(Map.of("MEINS", input.getMeins())); + t_list1.add(Map.of("CHARG", input.getCharg())); + }); + tables.put("INPUT1", t_list1); + } + + // 构造 INPUT2 表数据:包含序列号相关信息 + if (CollectionUtil.isNotEmpty(query.getInput2())) { + List> t_list2 = new ArrayList<>(); + query.getInput2().forEach(input -> { + t_list2.add(Map.of("SERNR", input.getSernr())); + t_list2.add(Map.of("RSPOS", input.getRspos())); + }); + tables.put("INPUT2", t_list2); + } + + // 调用 SAP RFC 函数 ZWM00_MB112 + JCoFunction function = exec("ZWM3A10", parameters, tables); + + // 处理返回表 T_RETURN,判断执行是否成功 + JCoTable returnTable = function.getTableParameterList().getTable("OUTPUT2"); + VUtil.trueThrowBusinessError(returnTable.getNumRows() <= 0).throwMessage("获取Type信息有误"); + returnTable.setRow(0); + VUtil.trueThrowBusinessError(!StrUtil.equals(returnTable.getString("TYPE"), "S")) + .throwMessage(returnTable.getString("MESSAGE")); + log.info("SAP返回: {}", returnTable); + + // 获取导出参数,构造返回结果对象 + JCoParameterList exportParam = function.getExportParameterList(); + VUtil.trueThrowBusinessError(Objects.isNull(exportParam)).throwMessage("无法获取到有效的物料凭证信息"); + Zwm3a10VO result = new Zwm3a10VO() + .setMat_doc(exportParam.getString("MAT_DOC")) + .setDocYear(exportParam.getString("DOC_YEAR")); + log.info("SAP返回物料凭证信息: MBLNR={}, MJAHR={}", result.getMat_doc(), result.getDocYear()); + return result; + } + + + //委外订单发料查询接口 + public Zwm3a03VO zwm3a03(Zwm3a03QO query) { + return null; + } + + //委外订单发料出库接口 + public List zwm3a04(Zwm3a04QO query) { + return null; + } + + /** + * 生成补料单接口 + *

+ * 该方法用于调用 SAP 的 RFC 函数 ZWM3A08,根据传入的查询条件获取补料单数据。 + * 查询参数包括工厂代码、工序列表和生产订单号列表等。 + * + * @param query 查询参数对象,包含工厂代码(I_WERKS)、工序列表(I_ARBPL)和订单号列表(I_AUFNR)等字段 + * @return 返回封装后的补料单结果对象 Zwm3a08VO,包含主信息及明细项列表 + */ + public Zwm3a08VO zwm3a08(Zwm3a08QO query) { + // 校验查询参数是否为空 + VUtil.trueThrowBusinessError(Objects.isNull(query)).throwMessage("查询内容不可以为空"); + // 校验工厂代码是否为空 + VUtil.trueThrowBusinessError(query.getI_werks().isEmpty()).throwMessage("工厂代码不可以为空"); + + // 构造函数调用所需的输入参数 + Map parameters = new HashMap<>(); + parameters.put("I_WERKS", query.getI_werks()); + + Map>> tables = new HashMap<>(); + + // 封装工序列表参数 + if (CollectionUtil.isNotEmpty(query.getI_arbpl())) { + List> t_list1 = new ArrayList<>(); + query.getI_arbpl().forEach(arbpl -> { + t_list1.add(Map.of("ARBPL", arbpl)); + }); + tables.put("I_ARBPL", t_list1); + } + + // 封装订单号列表参数 + if (CollectionUtil.isNotEmpty(query.getI_aufnr())) { + List> t_list2 = new ArrayList<>(); + query.getI_aufnr().forEach(aufnr -> { + t_list2.add(Map.of("AUFNR", aufnr)); + }); + tables.put("I_AUFNR", t_list2); + } + + // 调用 SAP RFC 函数 + JCoFunction function = exec("ZWM3A08", parameters, tables); + + // 获取输出表 OUTPUT1 数据 + JCoTable tOut = function.getTableParameterList().getTable("OUTPUT1"); + log.info("SAP返回: {}", tOut); + + // 构造并填充返回结果对象 + Zwm3a08VO result = new Zwm3a08VO(); + if (tOut.getNumRows() > 0) { + for (int i = 0; i < tOut.getNumRows(); i++) { + tOut.setRow(i); + if (i == 0) { + result.setAufnr(tOut.getString("AUFNR")) + .setRsnum(tOut.getString("RSNUM")) + .setPlnbez(tOut.getString("PLNBEZ")) + .setMaktx(tOut.getString("MAKTX")) + .setVornr(tOut.getString("VORNR")) + .setSernr(tOut.getString("SERNR")) + .setJtsn(tOut.getString("JTSN")) + .setCusn(tOut.getString("CUSN")) + .setKtext(tOut.getString("KTEXT")) + .setDwerk(tOut.getString("DWERK")) + .setName(tOut.getString("NAME")); + } + Zwm3a08ItemVO item = new Zwm3a08ItemVO(); + item.setQlsl(tOut.getString("QLSL")) + .setSqsl(tOut.getString("SQSL")) + .setMatnr(tOut.getString("MATNR")) + .setBdter(tOut.getString("BDTER")) + .setRspos(tOut.getString("RSPOS")) + .setSqsl2(tOut.getString("SQSL2")) + .setSqsl3(tOut.getString("SQSL3")) + .setEnmng(tOut.getString("ENMNG")) + .setBdmng(tOut.getString("BDMNG")) + .setLabst(tOut.getString("LABST")) + .setKcqls(tOut.getString("KCQLS")) + .setLgort2(tOut.getString("LGORT2")) + .setMeins(tOut.getString("MEINS")) + .setLgpbe(tOut.getString("LGPBE")) + .setInsme(tOut.getString("INSME")) + .setRsnum2(tOut.getString("RSNUM2")) + .setMaktx2(tOut.getString("MAKTX2")) + .setEkgrp(tOut.getString("EKGRP")) + .setDispo(tOut.getString("DISPO")); + result.getItems().add(item); + } + + } + log.debug("数据:{}", JSONUtil.toJsonStr(result)); + return result; + } + + + /** + * 生产退料单查询接口 + *

+ * 该方法用于调用SAP的RFC函数ZWM3A09,根据传入的查询条件获取生产退料单信息。 + * 查询条件包括工厂代码、工序列表和订单号列表等。 + * 返回结果包含主表信息和明细项列表。 + * + * @param query 查询参数对象,包含以下必填字段: + * - I_WERKS:工厂代码(不能为空) + * - I_ARBPL:工序列表(可选) + * - I_AUFNR:订单号列表(可选) + * @return Zwm3a09VO 查询结果对象,包含主表字段和明细项列表 + */ + public Zwm3a09VO zwm3a09(Zwm3a09QO query) { + VUtil.trueThrowBusinessError(Objects.isNull(query)).throwMessage("查询内容不可以为空"); + VUtil.trueThrowBusinessError(query.getI_werks().isEmpty()).throwMessage("工厂代码不可以为空"); + + // 构造函数调用所需的输入参数 + Map parameters = new HashMap<>(); + parameters.put("I_WERKS", query.getI_werks()); + + Map>> tables = new HashMap<>(); + + // 构造工序列表参数 + if (CollectionUtil.isNotEmpty(query.getI_arbpl())) { + List> t_list1 = new ArrayList<>(); + query.getI_arbpl().forEach(arbpl -> { + t_list1.add(Map.of("ARBPL", arbpl)); + }); + tables.put("I_ARBPL", t_list1); + } + + // 构造订单号列表参数 + if (CollectionUtil.isNotEmpty(query.getI_aufnr())) { + List> t_list2 = new ArrayList<>(); + query.getI_aufnr().forEach(aufnr -> { + t_list2.add(Map.of("AUFNR", aufnr)); + }); + tables.put("I_AUFNR", t_list2); + } + + // 调用SAP RFC函数 + JCoFunction function = exec("ZWM3A09", parameters, tables); + + // 处理返回的OUTPUT1表数据 + JCoTable tOut = function.getTableParameterList().getTable("OUTPUT1"); + log.info("SAP返回: {}", tOut); + + Zwm3a09VO result = new Zwm3a09VO(); + + if (tOut.getNumRows() > 0) { + for (int i = 0; i < tOut.getNumRows(); i++) { + tOut.setRow(i); + + // 设置主表字段(仅第一行设置一次) + if (i == 0) { + result.setAufnr(tOut.getString("AUFNR")) + .setRsnum(tOut.getString("RSNUM")) + .setPlnbez(tOut.getString("PLNBEZ")) + .setMaktx(tOut.getString("MAKTX")) + .setVornr(tOut.getString("VORNR")) + .setSernr(tOut.getString("SERNR")) + .setJtsn(tOut.getString("JTSN")) + .setCusn(tOut.getString("CUSN")) + .setKtext(tOut.getString("KTEXT")) + .setDwerk(tOut.getString("DWERK")) + .setName(tOut.getString("NAME")); + } + + // 构造并填充明细项 + Zwm3a09ItemVO item = new Zwm3a09ItemVO(); + item.setQlsl(tOut.getString("QLSL")) + .setSqsl(tOut.getString("SQSL")) + .setMatnr(tOut.getString("MATNR")) + .setBdter(tOut.getString("BDTER")) + .setRspos(tOut.getString("RSPOS")) + .setSqsl2(tOut.getString("SQSL2")) + .setSqsl3(tOut.getString("SQSL3")) + .setEnmng(tOut.getString("ENMNG")) + .setBdmng(tOut.getString("BDMNG")) + .setLabst(tOut.getString("LABST")) + .setKcqls(tOut.getString("KCQLS")) + .setLgort2(tOut.getString("LGORT2")) + .setMeins(tOut.getString("MEINS")) + .setLgpbe(tOut.getString("LGPBE")) + .setInsme(tOut.getString("INSME")) + .setRsnum2(tOut.getString("RSNUM2")) + .setMaktx2(tOut.getString("MAKTX2")) + .setEkgrp(tOut.getString("EKGRP")) + .setDispo(tOut.getString("DISPO")); + + result.getItems().add(item); + } + } + + log.debug("数据:{}", JSONUtil.toJsonStr(result)); + return result; + } + + + /** + * 生产退料单出库接口 + *

+ * 该方法用于调用 SAP 的 RFC 函数 ZWM3A11,执行生产退料单的出库操作。 + * 输入参数包括订单号、物料明细等信息,并根据 SAP 返回结果构造返回对象。 + *

+ * + * @param query 查询参数对象,包含订单号(AUFNR)及物料明细列表(INPUT1 和 INPUT2) + * @return Zwm3a11VO 包含物料凭证号(MAT_DOC)和凭证年度(DOC_YEAR)的结果对象 + */ + //生产退料单出库接口 + public Zwm3a11VO zwm3a11(Zwm3a11QO query) { + VUtil.trueThrowBusinessError(Objects.isNull(query)).throwMessage("查询内容不可以为空"); + VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(query.getInput1())).throwMessage("物料明细不能为空"); + + // 构造函数调用所需的输入参数 + Map parameters = new HashMap<>(); + parameters.put("AUFNR", query.getAufnr()); + + // 将构造好的表数据放入输入参数中 + Map>> tables = new HashMap<>(); + if (CollectionUtil.isNotEmpty(query.getInput1())) { + List> t_list1 = new ArrayList<>(); + query.getInput1().forEach(input -> { + t_list1.add(Map.of("RSPOS", input.getRspos())); + t_list1.add(Map.of("MATNR", input.getMatnr())); + t_list1.add(Map.of("MAKTX", input.getMaktx())); + t_list1.add(Map.of("WERKS", input.getWerks())); + t_list1.add(Map.of("LGORT", input.getLgort())); + t_list1.add(Map.of("MENGE", input.getMenge())); + t_list1.add(Map.of("MENGE_T", input.getMengeT())); + t_list1.add(Map.of("MEINS", input.getMeins())); + t_list1.add(Map.of("CHARG", input.getCharg())); + }); + tables.put("INPUT1", t_list1); + } + + if (CollectionUtil.isNotEmpty(query.getInput2())) { + List> t_list2 = new ArrayList<>(); + query.getInput2().forEach(input -> { + t_list2.add(Map.of("SERNR", input.getSernr())); + t_list2.add(Map.of("RSPOS", input.getRspos())); + }); + tables.put("INPUT2", t_list2); + } + + // 调用 SAP RFC 函数 ZWM00_MB112 + JCoFunction function = exec("ZWM3A11", parameters, tables); + + // 处理返回表 T_RETURN,判断执行是否成功 + JCoTable returnTable = function.getTableParameterList().getTable("OUTPUT2"); + VUtil.trueThrowBusinessError(returnTable.getNumRows() <= 0).throwMessage("获取Type信息有误"); + returnTable.setRow(0); + VUtil.trueThrowBusinessError(!StrUtil.equals(returnTable.getString("TYPE"), "S")) + .throwMessage(returnTable.getString("MESSAGE")); + log.info("SAP返回: {}", returnTable); + + // 获取导出参数,构造返回结果对象 + JCoParameterList exportParam = function.getExportParameterList(); + VUtil.trueThrowBusinessError(Objects.isNull(exportParam)).throwMessage("无法获取到有效的物料凭证信息"); + Zwm3a11VO result = new Zwm3a11VO() + .setMat_doc(exportParam.getString("MAT_DOC")) + .setDocYear(exportParam.getString("DOC_YEAR")); + log.info("SAP返回物料凭证信息: MBLNR={}, MJAHR={}", result.getMat_doc(), result.getDocYear()); + return result; + } + - //成本中心领料 private JCoTable execReturnTable(String functionName, Map parameters) { return execReturnTable(functionName, parameters, null, "T_OUT"); } @@ -758,6 +1220,18 @@ public class SapService { } } + public void printMetaJson(String functionName) { + try { + functionName = functionName.toUpperCase(); + JCoFunction function = repository.getFunction(functionName); + VUtil.trueThrowBusinessError(Objects.isNull(function)).throwMessage("方法" + functionName + "不存在"); + printMeta(function); + } catch (Exception e) { + log.error("打印方法参数信息异常", e); + } + } + + private void printMeta(JCoFunction function) { log.trace("-------------------------------------------------------"); log.trace("SAP {} 方法参数信息", function.getName()); @@ -792,10 +1266,14 @@ public class SapService { private void printJCoTable(JCoTable table) { log.trace("Table结构"); JCoRecordFieldIterator iterator = table.getRecordFieldIterator(); + Map map = new HashMap<>(); while (iterator.hasNextField()) { JCoRecordField field = iterator.nextRecordField(); log.trace("名称:{},类型:{},描述:{}", field.getName(), field.getTypeAsString(), field.getDescription()); + map.put(field.getName(), field.getDescription()); } + String json = JSON.toJSONString(map); + log.trace("{}", json); } private void printStructure(JCoStructure structure) { diff --git a/nflg-wms-admin/src/test/java/com/nflg/wms/admin/SapMetaPrintTest.java b/nflg-wms-admin/src/test/java/com/nflg/wms/admin/SapMetaPrintTest.java index 13c5fac3..38d03615 100644 --- a/nflg-wms-admin/src/test/java/com/nflg/wms/admin/SapMetaPrintTest.java +++ b/nflg-wms-admin/src/test/java/com/nflg/wms/admin/SapMetaPrintTest.java @@ -51,6 +51,54 @@ public class SapMetaPrintTest { { sapService.printMeta("ZWM00_MB115"); } + + @Test + public void ZWM3A03() + { + sapService.printMeta("ZWM3A03"); + } + + @Test + public void ZWM3A04() + { + sapService.printMeta("ZWM3A04"); + } + + + @Test + public void ZWM3A07() + { + sapService.printMeta("ZWM3A07"); + } + + @Test + public void ZWM3A10() + { + sapService.printMeta("ZWM3A10"); + } + + + + @Test + public void ZWM3A08() + { + sapService.printMeta("ZWM3A08"); + } + + + + @Test + public void ZWM3A09() + { + sapService.printMeta("ZWM3A09"); + } + + @Test + public void ZWM3A11() + { + sapService.printMeta("ZWM3A11"); + } + } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/C_MaterialOutboundDTO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/C_MaterialOutboundDTO.java index 38fb0b83..727ba3b0 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/C_MaterialOutboundDTO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/C_MaterialOutboundDTO.java @@ -16,6 +16,7 @@ public class C_MaterialOutboundDTO { //物料凭证年度 private String eMJahr; + //中心退库的物料详情信息 - // private C_MaterialOutboundQO requestQO; + // private C_MaterialOutboundQO requestQO; } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/C_MaterialOutboundQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/C_MaterialOutboundQO.java index 95215593..fc193606 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/C_MaterialOutboundQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/C_MaterialOutboundQO.java @@ -10,6 +10,10 @@ import java.util.List; public class C_MaterialOutboundQO { //预留号 private String resbRsNum; - // 预留单退料详情信息 + + //工位信息 + private String wempf; + + // 领料单详情信息 private List items; } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/Zwm3a03QO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/Zwm3a03QO.java new file mode 100644 index 00000000..0f27acd3 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/Zwm3a03QO.java @@ -0,0 +1,15 @@ +package com.nflg.wms.common.pojo.qo; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class Zwm3a03QO { + /** + * 采购凭证号 + */ + private String i_ebeln; + + +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/Zwm3a04Input1QO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/Zwm3a04Input1QO.java new file mode 100644 index 00000000..bb632b3c --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/Zwm3a04Input1QO.java @@ -0,0 +1,37 @@ +package com.nflg.wms.common.pojo.qo; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class Zwm3a04Input1QO { + //采购订单日期 + private String bedat; + //公司代码 + private String bukrs; + //:物料号 + private String matnr; + // + private String lifnr; + //需求量 + private String bdmng; + //工厂 + private String werks; + //批号 + private String charg; + //库存地点 + private String lgort; + //物料描述(短文本) + private String maktx; + //采购凭证号 + private String ebeln; + //基本计量单位 + private String meins; + //本次提货 + private String menge; + //工厂名称 + private String name1; + //已提货数量 + private String enmng; +} \ No newline at end of file diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/Zwm3a04QO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/Zwm3a04QO.java new file mode 100644 index 00000000..28b06dca --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/Zwm3a04QO.java @@ -0,0 +1,19 @@ +package com.nflg.wms.common.pojo.qo; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.List; + +@Data +@Accessors(chain = true) +public class Zwm3a04QO { + //采购凭证号 + private String i_ebeln; + + // :A 发料 B 退料 + private String i_type; + + //物料明细 + private List input1; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/Zwm3a07QO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/Zwm3a07QO.java new file mode 100644 index 00000000..0c24257d --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/Zwm3a07QO.java @@ -0,0 +1,31 @@ +package com.nflg.wms.common.pojo.qo; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.List; + +@Data +@Accessors(chain = true) +public class Zwm3a07QO { + /** + * 工厂 + * */ + private String i_werks; + + /** + * 工作中心表,可多个工作中心 + * */ + private List arbpl; + + /** + * 订单号 多个订单号 + * */ + private List aufnr; + + /** + * 库存地点 多个 + * */ + private List lgort; + +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/Zwm3a08QO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/Zwm3a08QO.java new file mode 100644 index 00000000..e14926ed --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/Zwm3a08QO.java @@ -0,0 +1,19 @@ +package com.nflg.wms.common.pojo.qo; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.List; + +@Data +@Accessors(chain = true) +public class Zwm3a08QO { + //工厂 + private String i_werks; + + // {"AUFNR":"订单号"} + private List i_aufnr; + + // {"ARBPL":"工作中心"} + private List i_arbpl; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/Zwm3a09QO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/Zwm3a09QO.java new file mode 100644 index 00000000..d907059f --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/Zwm3a09QO.java @@ -0,0 +1,19 @@ +package com.nflg.wms.common.pojo.qo; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.List; + +@Data +@Accessors(chain = true) +public class Zwm3a09QO { + //工厂 + private String i_werks; + + // {"AUFNR":"订单号"} + private List i_aufnr; + + // {"ARBPL":"工作中心"} + private List i_arbpl; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/Zwm3a10Input1QO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/Zwm3a10Input1QO.java new file mode 100644 index 00000000..f26f09a2 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/Zwm3a10Input1QO.java @@ -0,0 +1,18 @@ +package com.nflg.wms.common.pojo.qo; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class Zwm3a10Input1QO { + private String werks; + private String charg; + private String lgort; + private String maktx; + private String mengeT; + private String meins; + private String matnr; + private String menge; + private String rspos; +} \ No newline at end of file diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/Zwm3a10Input2QO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/Zwm3a10Input2QO.java new file mode 100644 index 00000000..0331ffdf --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/Zwm3a10Input2QO.java @@ -0,0 +1,11 @@ +package com.nflg.wms.common.pojo.qo; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class Zwm3a10Input2QO { + private String sernr; + private String rspos; +} \ No newline at end of file diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/Zwm3a10QO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/Zwm3a10QO.java new file mode 100644 index 00000000..6e55a91c --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/Zwm3a10QO.java @@ -0,0 +1,26 @@ +package com.nflg.wms.common.pojo.qo; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.List; + +@Data +@Accessors(chain = true) +public class Zwm3a10QO { + + /** + * 订单号 + */ + private String aufnr; + + /** + * 领料的明细 + */ + private List input1; + + /** + * 领料明细的序列号 + */ + private List input2; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/Zwm3a11Input1QO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/Zwm3a11Input1QO.java new file mode 100644 index 00000000..a5968c16 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/Zwm3a11Input1QO.java @@ -0,0 +1,27 @@ +package com.nflg.wms.common.pojo.qo; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class Zwm3a11Input1QO { + //工厂 + private String werks; + //批号 + private String charg; + //库存地点 + private String lgort; + //物料描述(短文本) + private String maktx; + //退货数量 + private String mengeT; + //基本计量单位 + private String meins; + //物料号 + private String matnr; + //数量 + private String menge; + //预留/相关需求的项目编号 + private String rspos; +} \ No newline at end of file diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/Zwm3a11Input2QO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/Zwm3a11Input2QO.java new file mode 100644 index 00000000..8fca834a --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/Zwm3a11Input2QO.java @@ -0,0 +1,11 @@ +package com.nflg.wms.common.pojo.qo; + +import lombok.Data; + +@Data +public class Zwm3a11Input2QO { + //序列号 + private String sernr; + //预留/相关需求的项目编号 + private String rspos; +} \ No newline at end of file diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/Zwm3a11QO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/Zwm3a11QO.java new file mode 100644 index 00000000..dc237d9f --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/Zwm3a11QO.java @@ -0,0 +1,19 @@ +package com.nflg.wms.common.pojo.qo; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.List; + +@Data +@Accessors(chain = true) +public class Zwm3a11QO { + //订单号 + private String aufnr; + + //明细物料 + private List input1; + + //序列号 + private List input2; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a03ItemVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a03ItemVO.java new file mode 100644 index 00000000..1e7ee64a --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a03ItemVO.java @@ -0,0 +1,31 @@ +package com.nflg.wms.common.pojo.vo; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class Zwm3a03ItemVO { + //物料号 + private String matnr; + //预留/相关需求的项目编号 + private String rspos; + //需求量 + private String bdmng; + //工厂 + private String werks; + //批号 + private String charg; + //库存地点 + private String lgort; + //物料描述(短文本) + private String maktx; + //基本计量单位 + private String meins; + //预留/相关需求的编号 + private String rsnum; + //待提货数量 + private String menge; + //已提货数量 + private String enmng; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a03VO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a03VO.java new file mode 100644 index 00000000..81802a43 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a03VO.java @@ -0,0 +1,40 @@ +package com.nflg.wms.common.pojo.vo; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.List; + +@Data +@Accessors(chain = true) +public class Zwm3a03VO { + + //采购凭证号 + private String ebeln; + //公司代码 + private String bukrs; + + //供应商或债权人的帐号 + private String lifnr; + + //供应商或债权人的名称 + private String name1; + + //采购凭证的项目编号 + private String ebelp; + + //采购订单日期 + private String bedat; + + //高层次组装的物料号 + private String baugr; + + //物料凭证编号 + private String mat_doc; + + //物料凭证年度 + private String docYear; + + // 领料详情 + private List items; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a04VO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a04VO.java new file mode 100644 index 00000000..8295dff1 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a04VO.java @@ -0,0 +1,21 @@ +package com.nflg.wms.common.pojo.vo; + + +import com.nflg.wms.common.pojo.qo.Zwm3a04QO; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.List; + +@Data +@Accessors(chain = true) +public class Zwm3a04VO { + + //物料凭证编号 + private String mat_doc; + + //物料凭证年度 + private String docYear; + + +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a07ItemVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a07ItemVO.java new file mode 100644 index 00000000..4072560b --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a07ItemVO.java @@ -0,0 +1,47 @@ +package com.nflg.wms.common.pojo.vo; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class Zwm3a07ItemVO { + //缺料数量 + private String qlsl; + //申请数量 + private String sqsl; + //领料物料号 + private String matnr; + //组件的需求日期 + private String bdter; + //预留/相关需求的项目编号 + private String rspos; + //其它预留 + private String sqsl2; + //预留数量 + private String sqsl3; + //提货数 + private String enmng; + //需求量 + private String bdmng; + //非限制使用的估价的库存 + private String labst; + //库存缺料量 + private String kcqls; + //库存地点 + private String lgort2; + // 基本计量单位 + private String meins; + //库存仓位 + private String lgpbe; + //质量检验中的库存 + private String insme; + //预留/相关需求的编号 + private String rsnum2; + //物料描述(短文本) + private String maktx2; + //采购组 + private String ekgrp; + //MRP 控制者(物料计划人) + private String dispo; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a07VO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a07VO.java new file mode 100644 index 00000000..0c19d5c0 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a07VO.java @@ -0,0 +1,36 @@ +package com.nflg.wms.common.pojo.vo; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.List; + +@Data +@Accessors(chain = true) +public class Zwm3a07VO { + //订单号 + private String aufnr; + //预留/相关需求的编号 + private String rsnum; + //物料号 + private String plnbez; + //物料描述(短文本) + private String maktx; + //操作/活动编号 + private String vornr; + //序列号 + private String sernr; + //机台 + private String jtsn; + //客户 + private String cusn; + //领料部门 + private String ktext; + //工厂 + private String dwerk; + //工厂名称 + private String name; + + //领料详细 + private List items; +} \ No newline at end of file diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a08ItemVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a08ItemVO.java new file mode 100644 index 00000000..14d62c7d --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a08ItemVO.java @@ -0,0 +1,47 @@ +package com.nflg.wms.common.pojo.vo; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class Zwm3a08ItemVO { + //缺料数量 + private String qlsl; + //申请数量 + private String sqsl; + //领料物料号 + private String matnr; + //组件的需求日期 + private String bdter; + //预留/相关需求的项目编号 + private String rspos; + //其它预留 + private String sqsl2; + //预留数量 + private String sqsl3; + //提货数 + private String enmng; + //需求量 + private String bdmng; + //非限制使用的估价的库存 + private String labst; + //库存缺料量 + private String kcqls; + //库存地点 + private String lgort2; + // 基本计量单位 + private String meins; + //库存仓位 + private String lgpbe; + //质量检验中的库存 + private String insme; + //预留/相关需求的编号 + private String rsnum2; + //物料描述(短文本) + private String maktx2; + //采购组 + private String ekgrp; + //MRP 控制者(物料计划人) + private String dispo; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a08VO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a08VO.java new file mode 100644 index 00000000..6433237c --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a08VO.java @@ -0,0 +1,36 @@ +package com.nflg.wms.common.pojo.vo; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.List; + +@Data +@Accessors(chain = true) +public class Zwm3a08VO { + //订单号 + private String aufnr; + //预留/相关需求的编号 + private String rsnum; + //物料号 + private String plnbez; + //物料描述(短文本) + private String maktx; + //操作/活动编号 + private String vornr; + //序列号 + private String sernr; + //机台 + private String jtsn; + //客户 + private String cusn; + //领料部门 + private String ktext; + //工厂 + private String dwerk; + //工厂名称 + private String name; + + //领料详细 + private List items; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a09ItemVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a09ItemVO.java new file mode 100644 index 00000000..d83d127b --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a09ItemVO.java @@ -0,0 +1,47 @@ +package com.nflg.wms.common.pojo.vo; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class Zwm3a09ItemVO { + //缺料数量 + private String qlsl; + //申请数量 + private String sqsl; + //领料物料号 + private String matnr; + //组件的需求日期 + private String bdter; + //预留/相关需求的项目编号 + private String rspos; + //其它预留 + private String sqsl2; + //预留数量 + private String sqsl3; + //提货数 + private String enmng; + //需求量 + private String bdmng; + //非限制使用的估价的库存 + private String labst; + //库存缺料量 + private String kcqls; + //库存地点 + private String lgort2; + // 基本计量单位 + private String meins; + //库存仓位 + private String lgpbe; + //质量检验中的库存 + private String insme; + //预留/相关需求的编号 + private String rsnum2; + //物料描述(短文本) + private String maktx2; + //采购组 + private String ekgrp; + //MRP 控制者(物料计划人) + private String dispo; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a09VO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a09VO.java new file mode 100644 index 00000000..0a5354be --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a09VO.java @@ -0,0 +1,36 @@ +package com.nflg.wms.common.pojo.vo; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.List; + +@Data +@Accessors(chain = true) +public class Zwm3a09VO { + //订单号 + private String aufnr; + //预留/相关需求的编号 + private String rsnum; + //物料号 + private String plnbez; + //物料描述(短文本) + private String maktx; + //操作/活动编号 + private String vornr; + //序列号 + private String sernr; + //机台 + private String jtsn; + //客户 + private String cusn; + //领料部门 + private String ktext; + //工厂 + private String dwerk; + //工厂名称 + private String name; + + //领料详细 + private List items; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a10VO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a10VO.java new file mode 100644 index 00000000..c8c9b1a2 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a10VO.java @@ -0,0 +1,15 @@ +package com.nflg.wms.common.pojo.vo; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class Zwm3a10VO { + //物料凭证编号 + private String mat_doc; + + //物料凭证年度 + private String docYear; + +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a11VO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a11VO.java new file mode 100644 index 00000000..faaa1797 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/Zwm3a11VO.java @@ -0,0 +1,14 @@ +package com.nflg.wms.common.pojo.vo; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class Zwm3a11VO { + //物料凭证编号 + private String mat_doc; + + //物料凭证年度 + private String docYear; +}