Blame view

src/main/java/com/huaheng/pc/task/taskHeader/service/BackInvokeService.java 12.2 KB
1
2
package com.huaheng.pc.task.taskHeader.service;
3
4
5
import com.huaheng.common.constant.QuantityConstant;
import com.huaheng.common.utils.StringUtils;
import com.huaheng.pc.receipt.receiptContainerDetail.service.ReceiptContainerDetailService;
tongzhonghao authored
6
7
import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail;
import com.huaheng.pc.receipt.receiptDetail.service.ReceiptDetailService;
8
9
10
import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader;
import com.huaheng.pc.receipt.receiptHeader.service.ReceiptHeaderService;
import com.huaheng.pc.shipment.shipmentContainerDetail.service.ShipmentContainerDetailService;
tongzhonghao authored
11
12
import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail;
import com.huaheng.pc.shipment.shipmentDetail.service.ShipmentDetailService;
13
14
import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader;
import com.huaheng.pc.shipment.shipmentHeader.service.ShipmentHeaderService;
tongzhonghao authored
15
16
import com.huaheng.pc.task.taskDetail.domain.TaskDetail;
import com.huaheng.pc.task.taskDetail.service.TaskDetailService;
17
import com.huaheng.pc.task.taskHeader.domain.TaskBackDomain;
18
19
20
21
import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
tongzhonghao authored
22
23
import java.math.BigDecimal;
import java.util.HashMap;
24
import java.util.List;
tongzhonghao authored
25
26
import java.util.Map;
import java.util.stream.Collectors;
27
28
29
30
31
32
33

@Service
public class BackInvokeService {

    @Resource
    private BackQueue backQueue;
    @Resource
34
35
    private BackQueueOneTask backQueueOneTask;
    @Resource
36
    private TaskHeaderService taskHeaderService;
37
    @Resource
tongzhonghao authored
38
39
    private TaskDetailService taskDetailService;
    @Resource
40
41
42
43
    private ReceiptContainerDetailService receiptContainerDetailService;
    @Resource
    private ReceiptHeaderService receiptHeaderService;
    @Resource
tongzhonghao authored
44
45
    private ReceiptDetailService receiptDetailService;
    @Resource
46
47
48
    private ShipmentContainerDetailService shipmentContainerDetailService;
    @Resource
    private ShipmentHeaderService shipmentHeaderService;
tongzhonghao authored
49
50
    @Resource
    private ShipmentDetailService shipmentDetailService;
51
52
53
54
    public void invokeBack(int taskId){
        new Thread(()->{
            backQueue.receiveBack(taskId, new CallBack() {
                @Override
55
                    public void back(TaskBackDomain domain) {
tongzhonghao authored
56
57
58
59
60
61
62
                    TaskHeader taskHeader = taskHeaderService.getById(taskId);
                    taskHeader.setBackQty(taskHeader.getBackQty()+1);
                    taskHeader.setBackInfo(domain.getMsg());
                    taskHeader.setIsReturn(domain.getBackNum());
                    taskHeaderService.updateById(taskHeader);
                    List<TaskDetail> taskDetails = taskDetailService.findByTaskId(taskId);
                    List<String> billCodes = taskDetails.stream().map(TaskDetail::getBillCode).collect(Collectors.toList());
tongzhonghao authored
63
tongzhonghao authored
64
65
66
67
                    if(StringUtils.isNotNull(domain.getType())){
                        if(domain.getType()==1){
                            //获取所有入库单
                            List<ReceiptHeader> receiptHeaders = receiptHeaderService.listByCodes(billCodes, taskHeader.getWarehouseCode());
周鸿 authored
68
                            lable1:for (ReceiptHeader receiptHeader : receiptHeaders) {
tongzhonghao authored
69
70
                                List<ReceiptDetail> details = receiptDetailService.findByReceiptId(receiptHeader.getId());
                                int isFlag = 0;
周鸿 authored
71
                                lable2:for (ReceiptDetail detail : details) {
tongzhonghao authored
72
                                    isFlag = isComplete(detail.getQty(),detail.getTaskQty(),detail.getBackQty());
73
                                    if(isFlag == 0){
周鸿 authored
74
                                        break lable2;
75
                                    }
tongzhonghao authored
76
77
                                }
                                String s = domain.getMsgMaps().get(receiptHeader.getCode());
周鸿 authored
78
                                if(StringUtils.isEmpty(receiptHeader.getBackMsg())){
tongzhonghao authored
79
80
                                    receiptHeader.setBackMsg(s);
                                }else{
81
82
83
                                    if(!receiptHeader.getBackMsg().contains(s)){
                                        receiptHeader.setBackMsg(receiptHeader.getBackMsg()+","+s);
                                    }
tongzhonghao authored
84
85
                                }
                                if(domain.getIsSuc()){
86
                                    receiptHeader.setFirstStatus(QuantityConstant.RECEIPT_HEADER_RETURN);
tongzhonghao authored
87
                                    if(isFlag==1){
88
                                        receiptHeader.setLastStatus(QuantityConstant.RECEIPT_HEADER_RETURN);
tongzhonghao authored
89
90
                                    }
                                }
tongzhonghao authored
91
92
93
94
95
                                receiptHeaderService.updateById(receiptHeader);
                            }
                        }else if(domain.getType()==2){
                            //获取所有入库单
                            List<ShipmentHeader> shipmentHeaders = shipmentHeaderService.listByCodes(billCodes, taskHeader.getWarehouseCode());
周鸿 authored
96
                            lable1:for (ShipmentHeader shipmentHeader : shipmentHeaders) {
tongzhonghao authored
97
98
                                List<ShipmentDetail> details = shipmentDetailService.getListByShipmentHeaderId(shipmentHeader.getId(),shipmentHeader.getWarehouseCode());
                                int isFlag = 0;
周鸿 authored
99
                                lable2:for (ShipmentDetail detail : details) {
tongzhonghao authored
100
101
                                    // 判断总数量 和 收货数量 是否一致
                                    isFlag = isComplete(detail.getQty(),detail.getTaskQty(),detail.getBackQty());
102
                                    if(isFlag == 0){
周鸿 authored
103
                                        break lable2;
104
                                    }
tongzhonghao authored
105
106
                                }
                                String msg = domain.getMsgMaps().get(shipmentHeader.getCode());
周鸿 authored
107
                                if(StringUtils.isEmpty(shipmentHeader.getBackMsg())){
tongzhonghao authored
108
109
                                    shipmentHeader.setBackMsg(msg);
                                }else{
110
111
112
                                    if(!shipmentHeader.getBackMsg().contains(msg)){
                                        shipmentHeader.setBackMsg(shipmentHeader.getBackMsg()+","+msg);
                                    }
tongzhonghao authored
113
114
                                }
                                if(domain.getIsSuc()){
115
116
117
118
119
                                    shipmentHeader.setFirstStatus(QuantityConstant.SHIPMENT_HEADER_RETURN);
                                    if(isFlag==1){
                                        shipmentHeader.setLastStatus(QuantityConstant.SHIPMENT_HEADER_RETURN);
                                    }
                                }
tongzhonghao authored
120
                                shipmentHeaderService.updateById(shipmentHeader);
121
122
                            }
                        }
123
124
125
126
127
                    }
                }
            });
        },"async-thread").start();
    }
tongzhonghao authored
128
129

    private int isComplete(BigDecimal qty,BigDecimal taskQty,BigDecimal backQty){
130
        int num = 0;
tongzhonghao authored
131
132
133
134
135
        // 判断总数量 和 收货数量 是否一致
        if(qty.compareTo(taskQty) != 0){
            return 0;
        }
        if(backQty.compareTo(qty)==0){
136
            num = 1;
tongzhonghao authored
137
138
139
        }else{
            //判断 回传数量和总数量
            if(qty.compareTo(backQty) == 0){
140
                num = 1;
tongzhonghao authored
141
142
143
144
            }else{
                return 0;
            }
        }
145
        return num;
tongzhonghao authored
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
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224

    public void invokeBackByTask(int taskId){
        new Thread(()->{
            backQueueOneTask.receiveBack(taskId, new CallBack() {
                @Override
                public void back(TaskBackDomain domain) {
                    TaskHeader taskHeader = taskHeaderService.getById(taskId);
                    taskHeader.setBackQty(taskHeader.getBackQty()+1);
                    taskHeader.setBackInfo(domain.getMsg());
                    taskHeader.setIsReturn(domain.getBackNum());
                    taskHeaderService.updateById(taskHeader);
                    List<TaskDetail> taskDetails = taskDetailService.findByTaskId(taskId);
                    List<String> billCodes = taskDetails.stream().map(TaskDetail::getBillCode).collect(Collectors.toList());

                    if(StringUtils.isNotNull(domain.getType())){
                        if(domain.getType()==1){
                            //获取所有入库单
                            List<ReceiptHeader> receiptHeaders = receiptHeaderService.listByCodes(billCodes, taskHeader.getWarehouseCode());
                            lable1:for (ReceiptHeader receiptHeader : receiptHeaders) {
                                List<ReceiptDetail> details = receiptDetailService.findByReceiptId(receiptHeader.getId());
                                int isFlag = 0;
                                lable2:for (ReceiptDetail detail : details) {
                                    isFlag = isComplete(detail.getQty(),detail.getTaskQty(),detail.getBackQty());
                                    if(isFlag == 0){
                                        break lable2;
                                    }
                                }
                                String s = domain.getMsgMaps().get(receiptHeader.getCode());
                                if(StringUtils.isEmpty(receiptHeader.getBackMsg())){
                                    receiptHeader.setBackMsg(s);
                                }else{
                                    if(!receiptHeader.getBackMsg().contains(s)){
                                        receiptHeader.setBackMsg(receiptHeader.getBackMsg()+","+s);
                                    }
                                }
                                if(domain.getIsSuc()){
                                    receiptHeader.setFirstStatus(QuantityConstant.RECEIPT_HEADER_RETURN);
                                    if(isFlag==1){
                                        receiptHeader.setLastStatus(QuantityConstant.RECEIPT_HEADER_RETURN);
                                    }
                                }
                                receiptHeaderService.updateById(receiptHeader);
                            }
                        }else if(domain.getType()==2){
                            //获取所有入库单
                            List<ShipmentHeader> shipmentHeaders = shipmentHeaderService.listByCodes(billCodes, taskHeader.getWarehouseCode());
                            lable1:for (ShipmentHeader shipmentHeader : shipmentHeaders) {
                                List<ShipmentDetail> details = shipmentDetailService.getListByShipmentHeaderId(shipmentHeader.getId(),shipmentHeader.getWarehouseCode());
                                int isFlag = 0;
                                lable2:for (ShipmentDetail detail : details) {
                                    // 判断总数量 和 收货数量 是否一致
                                    isFlag = isComplete(detail.getQty(),detail.getTaskQty(),detail.getBackQty());
                                    if(isFlag == 0){
                                        break lable2;
                                    }
                                }
                                String msg = domain.getMsgMaps().get(shipmentHeader.getCode());
                                if(StringUtils.isEmpty(shipmentHeader.getBackMsg())){
                                    shipmentHeader.setBackMsg(msg);
                                }else{
                                    if(!shipmentHeader.getBackMsg().contains(msg)){
                                        shipmentHeader.setBackMsg(shipmentHeader.getBackMsg()+","+msg);
                                    }
                                }
                                if(domain.getIsSuc()){
                                    shipmentHeader.setFirstStatus(QuantityConstant.SHIPMENT_HEADER_RETURN);
                                    if(isFlag==1){
                                        shipmentHeader.setLastStatus(QuantityConstant.SHIPMENT_HEADER_RETURN);
                                    }
                                }
                                shipmentHeaderService.updateById(shipmentHeader);
                            }
                        }
                    }
                }
            });
        },"async-thread").start();
    }
225
}