From a27f1b573fc5cf9a3b78e2eacb56e44310f83456 Mon Sep 17 00:00:00 2001 From: zhangherong <571457620@qq.com> Date: 星期三, 27 八月 2025 12:17:01 +0800 Subject: [PATCH] art: 添加入库逻辑,SAP订单同步参数动态配置 --- src/main/java/org/jeecg/modules/wms/service/impl/MESWebServiceSoapImpl.java | 84 ++++++++++++++++++++++++++++++++++++++++- 1 files changed, 81 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/jeecg/modules/wms/service/impl/MESWebServiceSoapImpl.java b/src/main/java/org/jeecg/modules/wms/service/impl/MESWebServiceSoapImpl.java index b3a7987..8e69a64 100644 --- a/src/main/java/org/jeecg/modules/wms/service/impl/MESWebServiceSoapImpl.java +++ b/src/main/java/org/jeecg/modules/wms/service/impl/MESWebServiceSoapImpl.java @@ -1,12 +1,24 @@ package org.jeecg.modules.wms.service.impl; +import cn.hutool.core.collection.CollectionUtil; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.jeecg.common.aspect.annotation.ApiLog; import org.jeecg.common.constant.ApiLogCategoryEnum; +import org.jeecg.modules.base.entity.LineSideWarehouse; +import org.jeecg.modules.base.service.ILineSideWarehouseService; +import org.jeecg.modules.lsw.entity.LswMaterialInbound; +import org.jeecg.modules.lsw.service.ILswMaterialInboundService; +import org.jeecg.modules.mes.entity.MesMaterialTransferRequest; +import org.jeecg.modules.mes.enums.MaterialTransferRequestStatus; +import org.jeecg.modules.mes.service.IMesMaterialTransferRequestService; import org.jeecg.modules.wms.dto.WSResponse; import org.jeecg.modules.wms.request.ReceiveWMSScanItemList; +import org.jeecg.modules.wms.request.WMSWebServiceSendItem; import org.jeecg.modules.wms.service.MESWebServiceSoap; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.jws.WebMethod; import javax.jws.WebParam; @@ -14,6 +26,7 @@ import javax.jws.WebService; import javax.xml.ws.RequestWrapper; import javax.xml.ws.ResponseWrapper; +import java.math.BigDecimal; @Slf4j @@ -21,17 +34,82 @@ @WebService(name = "MESWebServiceSoap", targetNamespace = "http://xhj008.server.webservice.com", endpointInterface = "org.jeecg.modules.wms.service.MESWebServiceSoap") public class MESWebServiceSoapImpl implements MESWebServiceSoap { + @Autowired + private IMesMaterialTransferRequestService materialTransferRequestService; + @Autowired + private ILineSideWarehouseService lineSideWarehouseService; + @Autowired + private ILswMaterialInboundService materialInboundService; + @Override + @Transactional(rollbackFor = Exception.class) @WebMethod(operationName = "ReceiveWMSScanItemList", action = "http://xhj008.server.webservice.com/ReceiveWMSScanItemList") @RequestWrapper(localName = "ReceiveWMSScanItemList", targetNamespace = "http://xhj008.server.webservice.com/", className = "ReceiveWMSScanItemList") @ResponseWrapper(localName = "ReceiveWMSScanItemListResponse", targetNamespace = "http://xhj008.server.webservice.com/", className = "ReceiveWMSScanItemListResponse") @WebResult(name = "ReceiveWMSScanItemListResult", targetNamespace = "http://xhj008.server.webservice.com/") @ApiLog(apiName = "鎺ユ敹WMS鐨勭Щ搴撲俊鎭�(ReceiveWMSScanItemList(MES)", apiCategory = ApiLogCategoryEnum.WMS) public WSResponse receiveWMSScanItemList(@WebParam(name = "ReceiveWMSScanItemList", targetNamespace = "http://xhj008.server.webservice.com/") ReceiveWMSScanItemList request) { - log.error("11111111111"); WSResponse response = new WSResponse(); - response.setErrorCode("-1"); - response.setErrorDesc("鎴戞椂缁撴灉闆�"); + if (request == null || CollectionUtil.isEmpty(request.getWmsWebServiceSendItemList())) { + response.setErrorCode("N"); + response.setErrorDesc("浼犲叆鐨勫弬鏁颁负绌猴紒"); + return response; + } + String errorCode = "N"; + int errorCount = 0; + int successCount = 0; + StringBuilder errorMsg = new StringBuilder(); + for (WMSWebServiceSendItem item : request.getWmsWebServiceSendItemList()) { + if (StringUtils.isNotBlank(item.getReservationOrder())) { + //鐗╂枡鎷夊姩鍥炶皟 + MesMaterialTransferRequest transferRequest = materialTransferRequestService.queryByReservationCode(item.getReservationOrder()); + if (transferRequest == null) { + errorCount++; + errorMsg.append("鏍规嵁棰勭暀鍙穂").append(item.getReservationOrder()).append("]鏈壘鍒扮墿鏂欐媺鍔ㄥ崟锛�"); + continue; + } + LineSideWarehouse warehouse = lineSideWarehouseService.getById(transferRequest.getTargetWarehouseId()); + if(warehouse == null || !warehouse.getWarehouseCode().equals(item.getDestSection())) { + errorCount++; + errorMsg.append("绾胯竟搴揫").append(item.getDestSection()).append("]鏈壘鍒帮紒"); + continue; + } + if(!transferRequest.getMaterialNumber().equals(item.getSkuCode())) { + errorCount++; + errorMsg.append("鐗╂枡缂栧彿[").append(item.getSkuCode()).append("]涓嶅尮閰嶏紒"); + continue; + } + if(StringUtils.isBlank(item.getTrackLot())) { + errorCount++; + errorMsg.append("鎵规鍙穂").append(item.getTrackLot()).append("]涓嶈兘涓虹┖锛�"); + continue; + } + transferRequest.setRequestStatus(MaterialTransferRequestStatus.CHECKED_IN.name()); + //璁$畻瀹為檯鎷夊姩鏁伴噺 + BigDecimal actualQuantity = transferRequest.getActualQuantity() == null ? item.getQuantity() : transferRequest.getActualQuantity().add(item.getQuantity()); + transferRequest.setActualQuantity(actualQuantity); + + //娣诲姞鍏ュ簱淇℃伅 + LswMaterialInbound inbound = new LswMaterialInbound(); + inbound.setWarehouseId(transferRequest.getTargetWarehouseId()); + inbound.setReceiver("WMS"); + inbound.setMaterialNumber(transferRequest.getMaterialNumber()); + inbound.setMaterialName(transferRequest.getMaterialName()); + inbound.setBatchNumber(item.getTrackLot()); + inbound.setQuantity(item.getQuantity()); + inbound.setFactoryId(warehouse.getFactoryId()); + boolean b = materialInboundService.inboundMaterial(inbound); + if(!b) { + errorCount++; + errorMsg.append("棰勭暀鍙穂").append(item.getReservationOrder()).append("]鍏ュ簱澶辫触锛�"); + continue; + } + //鏇存柊鐗╂枡鎷夊姩鍗� + materialTransferRequestService.updateById(transferRequest); + } else if (StringUtils.isNotBlank(item.getAlign())) { + //绉诲簱鍗曞洖璋� + } + } return response; } } -- Gitblit v1.9.3