private boolean checkBaseMaterial(StringBuilder sb, String goodsId, BaseMaterial mac) {
boolean isOk = false;
if (mac == null || !BasicConstant.ENABLE_Y.equals(mac.getEnable())) {
sb.append(String.format("物品[%s]在XMS中不合法 ", goodsId));
isOk = true;
}
return isOk;
}public void setTransferSysToSave(Transfersys transfersys) {
if (null == transfersys.getGoodsType()) {
transfersys.setGoodsType(EnumGoodsType.GOODS.getId());
}
if (null == transfersys.getGoodsStatus()) {
transfersys.setGoodsStatus(EnumGoodsStatus.GOOD.getId());
}
transfersys.setIsPos(BasicConstant.ENABLE_Y);
// 设置机构信息并校验
Integer serviceType = transfersys.getServiceType();
String xmsOrgId = getXmsOrgId(transfersys);
checkOrg(serviceType, xmsOrgId);
// 设置物品信息并校验
StringBuilder sb = new StringBuilder();
for (TransfersysItem item : transfersys.getItemList()) {
String goodsId = item.getMacno();
Integer quantity = item.getAppQuantity();
BaseMaterial mac = basicService.getMaterial(goodsId);
if (checkItemQuantity(sb, goodsId, quantity) ||
checkBaseMaterial(sb, goodsId, mac)) {
continue;
}
item.setVerifyQuantity(quantity);
item.setMacname(mac.getMacname());
}
String errMsg = sb.toString();
if (StringUtils.isNotEmpty(errMsg)) {
throw new BusinessException(errMsg);
}
transfersys.setUpdatePerson(transfersys.getCreatePerson());
// 设置状态、标题等信息
Org org = orgService.getById(xmsOrgId);
String title = basicService.getOrgName(org.getId()) + "-" + transfersys.getServiceTypeDesc() + "-" +
transfersys.getGoodsTypeDesc() + "-" + transfersys.getGoodsStatusDesc() + "-"
+ DateUtil.date2str(new Date());
transfersys.setTitle(title);
transfersys.setStatus(EnumTransfersysStatus.TO_BE_AUDIT.getId());
if (TransfersysUtil.isReceive(transfersys.getServiceType())) { // 收货
transfersys.setToOrgid(org.getId());
transfersys.setToAddress(org.getName());
} else { // 发货
transfersys.setFromOrgid(org.getId());
transfersys.setFromAddress(org.getName());
}
if (TransfersysUtil.isMiHome(org.getType())) { // 是否米家
transfersys.setPssXmsBizType(EnumPssXmsBizType.MIHOME);
} else {
transfersys.setPssXmsBizType(EnumPssXmsBizType.OTHER);
}
}@Override
public Response<TransferSysCreateDTO> create(TransferSysCreateRequest request) {
if (request == null || request.getTransfersys() == null) {
return Response.getResult(X5GateWayExceptionCode.COMMON_PARAM_ERROR, "req empty");
}
log.info("TransferSysGateWayDubboService.create 入参:{}", JsonUtils.writeValueQuite(request));
Transfersys transfersys = request.getTransfersys();
TransferSysCreateDTO transferSysCreateDTO = new TransferSysCreateDTO();
if (StringUtils.isNotBlank(transfersys.getId()) &&
TransfersysUtil.isWmsServiceType(transfersys.getServiceType())) {
ApiLog apiLog = apiLogService.findByParams(ImmutableMap.of("method", transfersys.getId()));
if (null == apiLog) {
return Response.getResult(X5GateWayExceptionCode.COMMON_PARAM_ERROR, "id not exists");
}
String result = StringUtils.EMPTY;
try {
result = pssProxy.noticeCreatePssBatch(apiLog.getRequest(), apiLog.getIp());
} catch (Exception e) {
log.error("noticeCreatePssBatch 创建失败:", e);
return Response.getResult(X5GateWayExceptionCode.COMMON_UNEXPECTED_ERROR, e.getMessage());
}
transferSysCreateDTO.setBizId(transfersys.getId());
Response<TransferSysCreateDTO> res = Response.getSuccess(transferSysCreateDTO);
res.setMessage(result);
return res;
}
//oms单号幂等
try (LockService redisLock = new LockService("mal_oms_lock_" + transfersys.getWfReturnId() + "_" + transfersys.getId())) {
if (TransfersysUtil.isOmsServiceType(transfersys.getServiceType()) &&
StringUtils.isNotEmpty(transfersys.getWfReturnId())) {
if (!redisLock.tryLock(TimeUnit.MINUTES.toSeconds(CommonConstants.ONE_INT))) {
throw new BusinessException("系统处理中,请稍后处理");
}
Transfersys omsTransfersys =
transfersysManager.findByWfreturnIdFromMaster(transfersys.getWfReturnId(),
transfersys.getServiceType());
if (Objects.nonNull(omsTransfersys)) {
transferSysCreateDTO.setBizId(omsTransfersys.getId());
return Response.getSuccess(transferSysCreateDTO);
}
}
Response<String> response = checkSpmToXms(transfersys);
if (Boolean.FALSE.equals(Response.isSuccess(response))) {
return Response.getResult(X5GateWayExceptionCode.COMMON_PARAM_ERROR, response.getMessage());
}
transferSyGateWayManage.setTransferSysToSave(transfersys);
transferSysCreateDTO.setBizId(transfersysDubboService.createAndApproval(transfersys));
} catch (Exception e) {
log.error("setTransferSysToSave 创建失败:", e);
return Response.getResult(X5GateWayExceptionCode.COMMON_UNEXPECTED_ERROR, e.getMessage());
}
Response<TransferSysCreateDTO> res = Response.getSuccess(transferSysCreateDTO);
res.setMessage("create transfersys success");
return res;
}@Override
public Response<TransferSysCreateDTO> create(TransferSysCreateRequest request) {
if (request == null || request.getTransfersys() == null) {
return Response.getResult(X5GateWayExceptionCode.COMMON_PARAM_ERROR, "req empty");
}
log.info("TransferSysGateWayDubboService.create 入参:{}", JsonUtils.writeValueQuite(request));
Transfersys transfersys = request.getTransfersys();
TransferSysCreateDTO transferSysCreateDTO = new TransferSysCreateDTO();
if (StringUtils.isNotBlank(transfersys.getId()) &&
TransfersysUtil.isWmsServiceType(transfersys.getServiceType())) {
ApiLog apiLog = apiLogService.findByParams(ImmutableMap.of("method", transfersys.getId()));
if (null == apiLog) {
return Response.getResult(X5GateWayExceptionCode.COMMON_PARAM_ERROR, "id not exists");
}
String result = StringUtils.EMPTY;
try {
result = pssProxy.noticeCreatePssBatch(apiLog.getRequest(), apiLog.getIp());
} catch (Exception e) {
log.error("noticeCreatePssBatch 创建失败:", e);
return Response.getResult(X5GateWayExceptionCode.COMMON_UNEXPECTED_ERROR, e.getMessage());
}
transferSysCreateDTO.setBizId(transfersys.getId());
Response<TransferSysCreateDTO> res = Response.getSuccess(transferSysCreateDTO);
res.setMessage(result);
return res;
}
//oms单号幂等
try (LockService redisLock = new LockService("mal_oms_lock_" + transfersys.getWfReturnId() + "_" + transfersys.getId())) {
if (TransfersysUtil.isOmsServiceType(transfersys.getServiceType()) &&
StringUtils.isNotEmpty(transfersys.getWfReturnId())) {
if (!redisLock.tryLock(TimeUnit.MINUTES.toSeconds(CommonConstants.ONE_INT))) {
throw new BusinessException("系统处理中,请稍后处理");
}
Transfersys omsTransfersys =
transfersysManager.findByWfreturnIdFromMaster(transfersys.getWfReturnId(),
transfersys.getServiceType());
if (Objects.nonNull(omsTransfersys)) {
transferSysCreateDTO.setBizId(omsTransfersys.getId());
return Response.getSuccess(transferSysCreateDTO);
}
}
Response<String> response = checkSpmToXms(transfersys);
if (Boolean.FALSE.equals(Response.isSuccess(response))) {
return Response.getResult(X5GateWayExceptionCode.COMMON_PARAM_ERROR, response.getMessage());
}
transferSyGateWayManage.setTransferSysToSave(transfersys);
transferSysCreateDTO.setBizId(transfersysDubboService.createAndApproval(transfersys));
} catch (Exception e) {
log.error("setTransferSysToSave 创建失败:", e);
return Response.getResult(X5GateWayExceptionCode.COMMON_UNEXPECTED_ERROR, e.getMessage());
}
Response<TransferSysCreateDTO> res = Response.getSuccess(transferSysCreateDTO);
res.setMessage("create transfersys success");
return res;
}@Override
public Response<TransferSysCreateDTO> create(TransferSysCreateRequest request) {
if (request == null || request.getTransfersys() == null) {
return Response.getResult(X5GateWayExceptionCode.COMMON_PARAM_ERROR, "req empty");
}
log.info("TransferSysGateWayDubboService.create 入参:{}", JsonUtils.writeValueQuite(request));
Transfersys transfersys = request.getTransfersys();
TransferSysCreateDTO transferSysCreateDTO = new TransferSysCreateDTO();
if (StringUtils.isNotBlank(transfersys.getId()) &&
TransfersysUtil.isWmsServiceType(transfersys.getServiceType())) {
ApiLog apiLog = apiLogService.findByParams(ImmutableMap.of("method", transfersys.getId()));
if (null == apiLog) {
return Response.getResult(X5GateWayExceptionCode.COMMON_PARAM_ERROR, "id not exists");
}
String result = StringUtils.EMPTY;
try {
result = pssProxy.noticeCreatePssBatch(apiLog.getRequest(), apiLog.getIp());
} catch (Exception e) {
log.error("noticeCreatePssBatch 创建失败:", e);
return Response.getResult(X5GateWayExceptionCode.COMMON_UNEXPECTED_ERROR, e.getMessage());
}
transferSysCreateDTO.setBizId(transfersys.getId());
Response<TransferSysCreateDTO> res = Response.getSuccess(transferSysCreateDTO);
res.setMessage(result);
return res;
}
//oms单号幂等
try (LockService redisLock = new LockService("mal_oms_lock_" + transfersys.getWfReturnId() + "_" + transfersys.getId())) {
if (TransfersysUtil.isOmsServiceType(transfersys.getServiceType()) &&
StringUtils.isNotEmpty(transfersys.getWfReturnId())) {
if (!redisLock.tryLock(TimeUnit.MINUTES.toSeconds(CommonConstants.ONE_INT))) {
throw new BusinessException("系统处理中,请稍后处理");
}
Transfersys omsTransfersys =
transfersysManager.findByWfreturnIdFromMaster(transfersys.getWfReturnId(),
transfersys.getServiceType());
if (Objects.nonNull(omsTransfersys)) {
transferSysCreateDTO.setBizId(omsTransfersys.getId());
return Response.getSuccess(transferSysCreateDTO);
}
}
Response<String> response = checkSpmToXms(transfersys);
if (Boolean.FALSE.equals(Response.isSuccess(response))) {
return Response.getResult(X5GateWayExceptionCode.COMMON_PARAM_ERROR, response.getMessage());
}
transferSyGateWayManage.setTransferSysToSave(transfersys);
transferSysCreateDTO.setBizId(transfersysDubboService.createAndApproval(transfersys));
} catch (Exception e) {
log.error("setTransferSysToSave 创建失败:", e);
return Response.getResult(X5GateWayExceptionCode.COMMON_UNEXPECTED_ERROR, e.getMessage());
}
Response<TransferSysCreateDTO> res = Response.getSuccess(transferSysCreateDTO);
res.setMessage("create transfersys success");
return res;
}@Override
public Response<TransferSysCreateDTO> create(TransferSysCreateRequest request) {
if (request == null || request.getTransfersys() == null) {
return Response.getResult(X5GateWayExceptionCode.COMMON_PARAM_ERROR, "req empty");
}
log.info("TransferSysGateWayDubboService.create 入参:{}", JsonUtils.writeValueQuite(request));
Transfersys transfersys = request.getTransfersys();
TransferSysCreateDTO transferSysCreateDTO = new TransferSysCreateDTO();
if (StringUtils.isNotBlank(transfersys.getId()) &&
TransfersysUtil.isWmsServiceType(transfersys.getServiceType())) {
ApiLog apiLog = apiLogService.findByParams(ImmutableMap.of("method", transfersys.getId()));
if (null == apiLog) {
return Response.getResult(X5GateWayExceptionCode.COMMON_PARAM_ERROR, "id not exists");
}
String result = StringUtils.EMPTY;
try {
result = pssProxy.noticeCreatePssBatch(apiLog.getRequest(), apiLog.getIp());
} catch (Exception e) {
log.error("noticeCreatePssBatch 创建失败:", e);
return Response.getResult(X5GateWayExceptionCode.COMMON_UNEXPECTED_ERROR, e.getMessage());
}
transferSysCreateDTO.setBizId(transfersys.getId());
Response<TransferSysCreateDTO> res = Response.getSuccess(transferSysCreateDTO);
res.setMessage(result);
return res;
}
//oms单号幂等
try (LockService redisLock = new LockService("mal_oms_lock_" + transfersys.getWfReturnId() + "_" + transfersys.getId())) {
if (TransfersysUtil.isOmsServiceType(transfersys.getServiceType()) &&
StringUtils.isNotEmpty(transfersys.getWfReturnId())) {
if (!redisLock.tryLock(TimeUnit.MINUTES.toSeconds(CommonConstants.ONE_INT))) {
throw new BusinessException("系统处理中,请稍后处理");
}
Transfersys omsTransfersys =
transfersysManager.findByWfreturnIdFromMaster(transfersys.getWfReturnId(),
transfersys.getServiceType());
if (Objects.nonNull(omsTransfersys)) {
transferSysCreateDTO.setBizId(omsTransfersys.getId());
return Response.getSuccess(transferSysCreateDTO);
}
}
Response<String> response = checkSpmToXms(transfersys);
if (Boolean.FALSE.equals(Response.isSuccess(response))) {
return Response.getResult(X5GateWayExceptionCode.COMMON_PARAM_ERROR, response.getMessage());
}
transferSyGateWayManage.setTransferSysToSave(transfersys);
transferSysCreateDTO.setBizId(transfersysDubboService.createAndApproval(transfersys));
} catch (Exception e) {
log.error("setTransferSysToSave 创建失败:", e);
return Response.getResult(X5GateWayExceptionCode.COMMON_UNEXPECTED_ERROR, e.getMessage());
}
Response<TransferSysCreateDTO> res = Response.getSuccess(transferSysCreateDTO);
res.setMessage("create transfersys success");
return res;
}
物料编号无效异常 在 TransferSysGateWayManage.setTransferSysToSave 中,物品 63232 在 XMS 系统中校验不合法(如未注册、状态异常等),这个ERROR日志,这个问题如何解决属于业务错误(预期内错误)