新火炬后端单体项目初始化代码
zhangherong
17 小时以前 99af0223ae0858c69d1b75106d5f8bb0ab14b129
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
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.LswMaterial;
import org.jeecg.modules.lsw.entity.LswMaterialInbound;
import org.jeecg.modules.lsw.entity.LswMaterialInventory;
import org.jeecg.modules.lsw.entity.LswMaterialOutbound;
import org.jeecg.modules.lsw.service.ILswMaterialInboundService;
import org.jeecg.modules.lsw.service.ILswMaterialInventoryService;
import org.jeecg.modules.lsw.service.ILswMaterialOutboundService;
import org.jeecg.modules.lsw.service.ILswMaterialService;
import org.jeecg.modules.mes.entity.MesMaterialTransferRequest;
import org.jeecg.modules.mes.entity.MesTransferOrderPrint;
import org.jeecg.modules.mes.enums.MaterialTransferRequestStatus;
import org.jeecg.modules.mes.enums.TransferOrderStatusEnum;
import org.jeecg.modules.mes.service.IMesMaterialTransferRequestService;
import org.jeecg.modules.mes.service.IMesTransferOrderPrintService;
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;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.xml.ws.RequestWrapper;
import javax.xml.ws.ResponseWrapper;
import java.math.BigDecimal;
 
 
@Slf4j
@Service
@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;
    @Autowired
    private IMesTransferOrderPrintService transferOrderPrintService;
    @Autowired
    private ILswMaterialOutboundService materialOutboundService;
    @Autowired
    private ILswMaterialInventoryService materialInventoryService;
    @Autowired
    private ILswMaterialService materialService;
 
    @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) {
        WSResponse response = new WSResponse();
        if (request == null || CollectionUtil.isEmpty(request.getWmsWebServiceSendItemList())) {
            response.setErrorCode("N");
            response.setErrorDesc("传入的参数为空!");
            return response;
        }
        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("]未找到物料拉动单!\n");
                    continue;
                }
                LineSideWarehouse warehouse = lineSideWarehouseService.getById(transferRequest.getTargetWarehouseId());
                if (warehouse == null || !warehouse.getWarehouseCode().equals(item.getDestSection())) {
                    errorCount++;
                    errorMsg.append("线边库[").append(item.getDestSection()).append("]未找到!\n");
                    continue;
                }
                if (!transferRequest.getMaterialNumber().equals(item.getSkuCode())) {
                    errorCount++;
                    errorMsg.append("物料编号[").append(item.getSkuCode()).append("]不匹配!\n");
                    continue;
                }
                if (StringUtils.isBlank(item.getTrackLot())) {
                    errorCount++;
                    errorMsg.append("批次号[").append(item.getTrackLot()).append("]不能为空!\n");
                    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("]入库失败!\n");
                    continue;
                }
                //更新物料拉动单
                materialTransferRequestService.updateById(transferRequest);
                successCount++;
            } else if (StringUtils.isNotBlank(item.getAlign())) {
                //移库单回调
                MesTransferOrderPrint transferOrder = transferOrderPrintService.queryByOrderCode(item.getAlign());
                if (transferOrder == null) {
                    errorCount++;
                    errorMsg.append("移库单[").append(item.getAlign()).append("]不存在!\n");
                    continue;
                }
                LswMaterialInventory inventory = materialInventoryService.getById(item.getMesStockID());
                if (inventory == null) {
                    errorCount++;
                    errorMsg.append("库存信息[").append(item.getMesStockID()).append("]不存在!\n");
                    continue;
                }
                LswMaterial material = materialService.queryByMaterialNumber(item.getSkuCode());
                if(material == null) {
                    errorCount++;
                    errorMsg.append("物料编号[").append(item.getSkuCode()).append("]不存在!\n");
                    continue;
                }
                LineSideWarehouse warehouse = lineSideWarehouseService.getById(transferOrder.getOriginalWarehouseId());
                if (warehouse == null || !warehouse.getWarehouseCode().equals(item.getDestSection())) {
                    errorCount++;
                    errorMsg.append("线边库[").append(item.getDestSection()).append("]未找到!\n");
                    continue;
                }
                //移库单更改
                transferOrder.setOrderStatus(TransferOrderStatusEnum.COMPLETED.name());
                //成品出库
                LswMaterialOutbound outbound = new LswMaterialOutbound();
                outbound.setBatchNumber(inventory.getBatchNumber());
                outbound.setQuantity(item.getQuantity());
                outbound.setMaterialNumber(material.getMaterialNumber());
                outbound.setMaterialName(material.getMaterialName());
                outbound.setInventoryId(inventory.getId());
                outbound.setWarehouseId(transferOrder.getOriginalWarehouseId());
                outbound.setFactoryId(warehouse.getFactoryId());
                outbound.setOutboundStaff("WMS");
                boolean b = materialOutboundService.outboundMaterial(outbound);
                if (!b) {
                    errorCount++;
                    errorMsg.append("移库单[").append(item.getAlign()).append("]出库失败!\n");
                    continue;
                }
                transferOrderPrintService.updateById(transferOrder);
                successCount++;
            }
        }
        //处理返回结果
        if (errorCount > 0) {
            response.setErrorCode("N");
            if (successCount > 0) {
                String msg = "成功执行" + successCount + "条,失败" + errorCount + "条!\n";
                errorMsg.insert(0, msg);
            } else {
                String msg = "失败" + errorCount + "条!\n";
                errorMsg.insert(0, msg);
            }
            response.setErrorDesc(errorMsg.toString());
        } else {
            response.setErrorCode("Y");
            String msg = "成功执行" + successCount + "条!\n";
            response.setErrorDesc(msg);
        }
        return response;
    }
}