Merge branch 'develop' into dev_zhangke

This commit is contained in:
zhangke 2025-10-21 09:46:25 +08:00
commit d0d74ef354
6 changed files with 87 additions and 9 deletions

View File

@ -10,9 +10,7 @@ import com.nflg.wms.admin.pojo.dto.SAPMaterialInfoInOrderDTO;
import com.nflg.wms.admin.pojo.dto.ZWM3A17DTO; import com.nflg.wms.admin.pojo.dto.ZWM3A17DTO;
import com.nflg.wms.admin.pojo.dto.ZWM3A18DTO; import com.nflg.wms.admin.pojo.dto.ZWM3A18DTO;
import com.nflg.wms.admin.util.JCoUtil; import com.nflg.wms.admin.util.JCoUtil;
import com.nflg.wms.common.constant.Constant; import com.nflg.wms.common.exception.SAPException;
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.dto.*;
import com.nflg.wms.common.pojo.qo.*; import com.nflg.wms.common.pojo.qo.*;
import com.nflg.wms.common.pojo.vo.*; import com.nflg.wms.common.pojo.vo.*;
@ -22,11 +20,11 @@ import com.nflg.wms.common.util.VUtil;
import com.sap.conn.jco.*; import com.sap.conn.jco.*;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.slf4j.MDC;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
@Slf4j @Slf4j
@Component @Component
@ -1029,8 +1027,24 @@ public class SapService {
parameters.put("S_DATE", DateTimeUtil.format(query.getStartDate(), "yyyyMMdd")); parameters.put("S_DATE", DateTimeUtil.format(query.getStartDate(), "yyyyMMdd"));
parameters.put("E_DATE", DateTimeUtil.format(query.getEndDate(), "yyyyMMdd")); parameters.put("E_DATE", DateTimeUtil.format(query.getEndDate(), "yyyyMMdd"));
Map<String, List<Map<String, Object>>> tables = new HashMap<>();
if (CollectionUtil.isNotEmpty(query.getKostl())) {
tables.put("S_KOSTL", query.getKostl().stream().map(kostl -> {
Map<String, Object> map = new HashMap<>();
map.put("KOSTL", kostl);
return map;
}).collect(Collectors.toList()));
}
if (CollectionUtil.isNotEmpty(query.getRsnum())) {
tables.put("S_RSNUM", query.getRsnum().stream().map(rsnum -> {
Map<String, Object> map = new HashMap<>();
map.put("RSNUM", rsnum);
return map;
}).collect(Collectors.toList()));
}
// 调用 SAP RFC 函数 ZWM00_MB112 // 调用 SAP RFC 函数 ZWM00_MB112
JCoFunction function = exec("ZWM3A13", parameters, null); JCoFunction function = exec("ZWM3A13", parameters, tables);
// 处理返回表 T_RETURN判断执行是否成功 // 处理返回表 T_RETURN判断执行是否成功
JCoParameterList exportParam = function.getExportParameterList(); JCoParameterList exportParam = function.getExportParameterList();
@ -1063,8 +1077,25 @@ public class SapService {
parameters.put("I_WERKS", query.getWerks()); parameters.put("I_WERKS", query.getWerks());
parameters.put("S_DATE", DateTimeUtil.format(query.getStartDate(), "yyyyMMdd")); parameters.put("S_DATE", DateTimeUtil.format(query.getStartDate(), "yyyyMMdd"));
parameters.put("E_DATE", DateTimeUtil.format(query.getEndDate(), "yyyyMMdd")); parameters.put("E_DATE", DateTimeUtil.format(query.getEndDate(), "yyyyMMdd"));
Map<String, List<Map<String, Object>>> tables = new HashMap<>();
if (CollectionUtil.isNotEmpty(query.getKostl())) {
tables.put("S_KOSTL", query.getKostl().stream().map(kostl -> {
Map<String, Object> map = new HashMap<>();
map.put("KOSTL", kostl);
return map;
}).collect(Collectors.toList()));
}
if (CollectionUtil.isNotEmpty(query.getRsnum())) {
tables.put("S_RSNUM", query.getRsnum().stream().map(rsnum -> {
Map<String, Object> map = new HashMap<>();
map.put("RSNUM", rsnum);
return map;
}).collect(Collectors.toList()));
}
// 调用 SAP RFC 函数 ZWM00_MB112 // 调用 SAP RFC 函数 ZWM00_MB112
JCoFunction function = exec("ZWM3A14", parameters, null); JCoFunction function = exec("ZWM3A14", parameters, tables);
// 处理返回表 T_RETURN判断执行是否成功 // 处理返回表 T_RETURN判断执行是否成功
JCoParameterList exportParam = function.getExportParameterList(); JCoParameterList exportParam = function.getExportParameterList();
VUtil.trueThrowBusinessError(Objects.isNull(exportParam)).throwMessage("无法获取到有效的物料凭证信息"); VUtil.trueThrowBusinessError(Objects.isNull(exportParam)).throwMessage("无法获取到有效的物料凭证信息");
@ -1123,7 +1154,7 @@ public class SapService {
JCoTable returnTable = function.getTableParameterList().getTable("T_RETURN"); JCoTable returnTable = function.getTableParameterList().getTable("T_RETURN");
log.info("SAP返回: {}", returnTable); log.info("SAP返回: {}", returnTable);
returnTable.setRow(0); returnTable.setRow(0);
throw new NflgException(STATE.BusinessError, "SAP错误" + returnTable.getString("MESSAGE")); throw new SAPException(returnTable.getString("MESSAGE"));
} }
} }
@ -1336,7 +1367,7 @@ public class SapService {
return function; return function;
} catch (JCoException e) { } catch (JCoException e) {
log.error("SAP调用异常", e); log.error("SAP调用异常", e);
throw new NflgException(STATE.BusinessError, "SAP调用异常:" + MDC.get(Constant.TRACE_ID)); throw new SAPException(e.getMessage());
} }
} }

View File

@ -25,7 +25,8 @@ public enum STATE {
BusinessError(115, "业务异常"), BusinessError(115, "业务异常"),
RequestMethodError(116, "请求方式错误"), RequestMethodError(116, "请求方式错误"),
InconsistentDataError(117, "需要用户确认"), InconsistentDataError(117, "需要用户确认"),
NoOrderData(118, "订单不存在"); NoOrderData(118, "订单不存在"),
SAPErr(119, "SAP错误");
@Getter @Getter
private final Integer state; private final Integer state;

View File

@ -0,0 +1,17 @@
package com.nflg.wms.common.exception;
import com.nflg.wms.common.constant.STATE;
import lombok.Data;
@Data
public class SAPException extends RuntimeException {
public final STATE state;
private final String msg;
public SAPException(String msg) {
super(msg);
this.state = STATE.SAPErr;
this.msg = msg;
}
}

View File

@ -6,6 +6,7 @@ import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.List;
import java.util.Objects; import java.util.Objects;
@Data @Data
@ -65,4 +66,14 @@ public class DepartmentMaterialRequisitionQO {
} }
return endDate; return endDate;
} }
/**
* 预留/相关需求的编号
*/
private List<String> rsnum;
/**
* 成本中心
*/
private List<String> kostl;
} }

View File

@ -4,6 +4,7 @@ import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.List;
import java.util.Objects; import java.util.Objects;
@Data @Data
@ -32,4 +33,14 @@ public class DepartmentMaterialReturnSlipQO {
} }
return endDate; return endDate;
} }
/**
* 预留/相关需求的编号
*/
private List<String> rsnum;
/**
* 成本中心
*/
private List<String> kostl;
} }

View File

@ -5,6 +5,7 @@ import cn.hutool.core.util.StrUtil;
import com.nflg.wms.common.constant.Constant; import com.nflg.wms.common.constant.Constant;
import com.nflg.wms.common.constant.STATE; import com.nflg.wms.common.constant.STATE;
import com.nflg.wms.common.exception.NflgException; import com.nflg.wms.common.exception.NflgException;
import com.nflg.wms.common.exception.SAPException;
import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.ApiResult;
import jakarta.validation.ConstraintViolation; import jakarta.validation.ConstraintViolation;
import jakarta.validation.ConstraintViolationException; import jakarta.validation.ConstraintViolationException;
@ -74,4 +75,10 @@ public class GlobalRestControllerAdvice {
log.error("请求的地址无效: ", ex); log.error("请求的地址无效: ", ex);
return ApiResult.error(STATE.BusinessError, "请求的地址无效:" + ex.getResourcePath()); return ApiResult.error(STATE.BusinessError, "请求的地址无效:" + ex.getResourcePath());
} }
@ExceptionHandler(SAPException.class)
public ApiResult<Void> handleSAPException(SAPException ex) {
log.error("SAP错误: ", ex);
return ApiResult.error(ex.getState(), "SAP错误:" + ex.getMessage());
}
} }