feat(wms): 新增多个SAP接口及相关数据结构
- 新增了多个SAP接口方法,包括生产领料单查询、生成领料出库、补料单查询等 - 新增了多个相关的请求和响应对象,如Zwm3a03QO、Zwm3a07VO等 - 优化了部分现有接口的实现
This commit is contained in:
parent
39c77df87d
commit
90e4490a07
|
|
@ -163,7 +163,7 @@ public class CenterOutboundControllerService {
|
|||
.setCreateTime(LocalDateTime.now())
|
||||
.setCreateUserName(UserUtil.getUserName())
|
||||
.setCreateUserId(UserUtil.getUserId())
|
||||
.setWorkstation(request.getRkpfWempf());
|
||||
.setWorkstation(request.getWempf());
|
||||
|
||||
List<WmsCenterOutboundItem> wmsCenterOutboundItems = new ArrayList<>();
|
||||
List<WmsCenterOutboundScan> wmsCenterOutboundScans = new ArrayList<>();
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* 成本中心领料查询接口
|
||||
* <p>
|
||||
* 根据预留单号(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 执行物料出库操作。
|
||||
* <p>
|
||||
* 该方法首先校验请求参数中的物料明细是否为空,然后构造调用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<String, Object> buildMb115TList1Map(C_MaterialOutboundItemQO item, BigDecimal erFmg, String charg) {
|
||||
Map<String, Object> map = new HashMap<>(8); // 预设容量避免频繁扩容
|
||||
|
|
@ -688,8 +703,455 @@ public class SapService {
|
|||
return map;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生产领料单查询接口
|
||||
* <p>
|
||||
* 该方法用于调用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<String, Object> parameters = new HashMap<>();
|
||||
parameters.put("I_WERKS", query.getI_werks());
|
||||
|
||||
Map<String, List<Map<String, Object>>> tables = new HashMap<>();
|
||||
|
||||
// 构造工序参数表 I_ARBPL
|
||||
if (CollectionUtil.isNotEmpty(query.getArbpl())) {
|
||||
List<Map<String, Object>> 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<Map<String, Object>> 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<Map<String, Object>> 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;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 生成领料出库接口
|
||||
* <p>
|
||||
* 该方法用于调用 SAP 的 RFC 函数 ZWM3A10,执行领料出库操作。首先校验输入参数,
|
||||
* 然后构造函数所需的输入参数和表数据,调用 SAP 接口,并处理返回结果。
|
||||
* </p>
|
||||
*
|
||||
* @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<String, Object> parameters = new HashMap<>();
|
||||
parameters.put("AUFNR", query.getAufnr());
|
||||
|
||||
// 将构造好的表数据放入输入参数中
|
||||
Map<String, List<Map<String, Object>>> tables = new HashMap<>();
|
||||
|
||||
// 构造 INPUT1 表数据:包含物料相关明细信息
|
||||
if (CollectionUtil.isNotEmpty(query.getInput1())) {
|
||||
List<Map<String, Object>> 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<Map<String, Object>> 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<Zwm3a04VO> zwm3a04(Zwm3a04QO query) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成补料单接口
|
||||
* <p>
|
||||
* 该方法用于调用 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<String, Object> parameters = new HashMap<>();
|
||||
parameters.put("I_WERKS", query.getI_werks());
|
||||
|
||||
Map<String, List<Map<String, Object>>> tables = new HashMap<>();
|
||||
|
||||
// 封装工序列表参数
|
||||
if (CollectionUtil.isNotEmpty(query.getI_arbpl())) {
|
||||
List<Map<String, Object>> 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<Map<String, Object>> 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;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 生产退料单查询接口
|
||||
* <p>
|
||||
* 该方法用于调用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<String, Object> parameters = new HashMap<>();
|
||||
parameters.put("I_WERKS", query.getI_werks());
|
||||
|
||||
Map<String, List<Map<String, Object>>> tables = new HashMap<>();
|
||||
|
||||
// 构造工序列表参数
|
||||
if (CollectionUtil.isNotEmpty(query.getI_arbpl())) {
|
||||
List<Map<String, Object>> 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<Map<String, Object>> 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;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 生产退料单出库接口
|
||||
* <p>
|
||||
* 该方法用于调用 SAP 的 RFC 函数 ZWM3A11,执行生产退料单的出库操作。
|
||||
* 输入参数包括订单号、物料明细等信息,并根据 SAP 返回结果构造返回对象。
|
||||
* </p>
|
||||
*
|
||||
* @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<String, Object> parameters = new HashMap<>();
|
||||
parameters.put("AUFNR", query.getAufnr());
|
||||
|
||||
// 将构造好的表数据放入输入参数中
|
||||
Map<String, List<Map<String, Object>>> tables = new HashMap<>();
|
||||
if (CollectionUtil.isNotEmpty(query.getInput1())) {
|
||||
List<Map<String, Object>> 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<Map<String, Object>> 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<String, Object> 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<String, String> 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) {
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ public class C_MaterialOutboundDTO {
|
|||
//物料凭证年度
|
||||
private String eMJahr;
|
||||
|
||||
|
||||
//中心退库的物料详情信息
|
||||
// private C_MaterialOutboundQO requestQO;
|
||||
// private C_MaterialOutboundQO requestQO;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,6 +10,10 @@ import java.util.List;
|
|||
public class C_MaterialOutboundQO {
|
||||
//预留号
|
||||
private String resbRsNum;
|
||||
// 预留单退料详情信息
|
||||
|
||||
//工位信息
|
||||
private String wempf;
|
||||
|
||||
// 领料单详情信息
|
||||
private List<C_MaterialOutboundItemQO> items;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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<Zwm3a04Input1QO> input1;
|
||||
}
|
||||
|
|
@ -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<String> arbpl;
|
||||
|
||||
/**
|
||||
* 订单号 多个订单号
|
||||
* */
|
||||
private List<String> aufnr;
|
||||
|
||||
/**
|
||||
* 库存地点 多个
|
||||
* */
|
||||
private List<String> lgort;
|
||||
|
||||
}
|
||||
|
|
@ -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<String> i_aufnr;
|
||||
|
||||
// {"ARBPL":"工作中心"}
|
||||
private List<String> i_arbpl;
|
||||
}
|
||||
|
|
@ -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<String> i_aufnr;
|
||||
|
||||
// {"ARBPL":"工作中心"}
|
||||
private List<String> i_arbpl;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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<Zwm3a10Input1QO> input1;
|
||||
|
||||
/**
|
||||
* 领料明细的序列号
|
||||
*/
|
||||
private List<Zwm3a10Input2QO> input2;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
package com.nflg.wms.common.pojo.qo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class Zwm3a11Input2QO {
|
||||
//序列号
|
||||
private String sernr;
|
||||
//预留/相关需求的项目编号
|
||||
private String rspos;
|
||||
}
|
||||
|
|
@ -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<Zwm3a11Input1QO> input1;
|
||||
|
||||
//序列号
|
||||
private List<Zwm3a11Input2QO> input2;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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<Zwm3a03ItemVO> items;
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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<Zwm3a07ItemVO> items;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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<Zwm3a08ItemVO> items;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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<Zwm3a09ItemVO> items;
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
Loading…
Reference in New Issue