|
1
2
|
package com.huaheng.pc.receipt.receiving.controller;
|
|
3
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
4
|
import com.huaheng.common.support.Convert;
|
|
5
|
import com.huaheng.common.utils.Wrappers;
|
|
6
|
import com.huaheng.common.constant.QuantityConstant;
|
|
7
8
9
|
import com.huaheng.common.exception.service.ServiceException;
import com.huaheng.common.utils.StringUtils;
import com.huaheng.common.utils.security.ShiroUtils;
|
|
10
11
12
13
|
import com.huaheng.framework.aspectj.lang.annotation.Log;
import com.huaheng.framework.aspectj.lang.constant.BusinessType;
import com.huaheng.framework.web.controller.BaseController;
import com.huaheng.framework.web.domain.AjaxResult;
|
|
14
15
16
17
|
import com.huaheng.pc.config.container.domain.Container;
import com.huaheng.pc.config.container.service.ContainerService;
import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail;
import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService;
|
|
18
|
import com.huaheng.pc.monitor.job.task.RyTask;
|
|
19
|
import com.huaheng.pc.receipt.receiptContainerDetail.service.ReceiptContainerDetailService;
|
|
20
|
import com.huaheng.pc.receipt.receiptContainerHeader.domain.ReceiptContainerHeader;
|
|
21
|
import com.huaheng.pc.receipt.receiptContainerHeader.domain.ReceiptContainerView;
|
|
22
|
import com.huaheng.pc.receipt.receiptContainerHeader.service.ReceiptContainerHeaderService;
|
|
23
24
25
26
|
import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail;
import com.huaheng.pc.receipt.receiptDetail.service.ReceiptDetailService;
import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader;
import com.huaheng.pc.receipt.receiptHeader.service.ReceiptHeaderService;
|
|
27
|
import com.huaheng.pc.receipt.receiving.domain.ReceivingDamain;
|
|
28
|
import com.huaheng.pc.receipt.receiving.service.ReceivingService;
|
|
29
30
31
|
import com.huaheng.pc.shipment.shipmentContainerHeader.domain.ShipmentContainerHeader;
import com.huaheng.pc.shipment.shipmentContainerHeader.service.ShipmentContainerHeaderService;
import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
|
|
32
|
import com.huaheng.pc.task.taskHeader.service.ReceiptTaskService;
|
|
33
|
import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
|
|
34
35
36
|
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
|
37
38
|
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
|
|
39
|
import org.springframework.stereotype.Controller;
|
|
40
|
import org.springframework.ui.ModelMap;
|
|
41
42
43
44
45
46
|
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
|
|
47
|
import java.math.BigDecimal;
|
|
48
|
import java.util.ArrayList;
|
|
49
|
import java.util.Arrays;
|
|
50
51
|
import java.util.List;
import java.util.Map;
|
|
52
53
54
55
56
57
58
59
60
61
62
63
|
/**
* @author mahua
* @ClassName ReceivingController
* @projectName huaheng
* @description: 入库组盘
* @date 2019/8/31 15:51
*/
@Controller
@RequestMapping("/receipt/receiving")
public class ReceivingController extends BaseController {
|
|
64
65
|
private static final Logger logger = LoggerFactory.getLogger(ReceivingController.class);
|
|
66
67
68
69
70
71
72
73
|
private String prefix = "receipt/receiving";
@Resource
private ReceivingService receivingService;
@Resource
private ReceiptContainerDetailService receiptContainerDetailService;
@Resource
private ReceiptContainerHeaderService receiptContainerHeaderService;
|
|
74
75
76
77
78
79
80
81
|
@Resource
private ReceiptDetailService receiptDetailService;
@Resource
private ReceiptHeaderService receiptHeaderService;
@Resource
private ContainerService containerService;
@Resource
private InventoryDetailService inventoryDetailService;
|
|
82
83
84
85
|
@Resource
private TaskHeaderService taskHeaderService;
@Resource
private ShipmentContainerHeaderService shipmentContainerHeaderService;
|
|
86
87
|
@Resource
private ReceiptTaskService receiptTaskService;
|
|
88
89
90
91
|
@RequiresPermissions("receipt:receiving:view")
@GetMapping()
public String receiving() {
|
|
92
93
94
|
if(ShiroUtils.getWarehouseCode().equals(QuantityConstant.WAREHOUSE_KS)){
return prefix + "/receiving-new";
}
|
|
95
96
97
98
99
100
101
102
103
|
return prefix + "/receiving";
}
/**
* 获取订单明细
*/
@ResponseBody
@PostMapping("/scanBill")
@RequiresPermissions("receipt:receiving:receiving")
|
|
104
|
@Log(title = "入库-获取订单明细", operating ="PC端扫描收货单号", action = BusinessType.OTHER)
|
|
105
106
107
108
109
110
|
public AjaxResult scanBill(String code) {
AjaxResult result = receivingService.scanReceiptCode(code);
return result;
}
/**
|
|
111
112
113
114
115
116
117
118
119
120
121
122
|
* 获取订单明细
*/
@ResponseBody
@PostMapping("/scanReferCodeBill")
@RequiresPermissions("receipt:receiving:add")
@Log(title = "入库-入库单", operating ="PC端扫描收货单号", action = BusinessType.OTHER)
public AjaxResult scanReferCodeBill(String code) {
AjaxResult result = receivingService.scanReferCodeBill(code);
return result;
}
/**
|
|
123
124
125
126
127
|
* 获取收货信息
*/
@ResponseBody
@PostMapping("/getReceiptInfoByBill")
@RequiresPermissions("receipt:receiving:receiving")
|
|
128
|
@Log(title = "入库-获取收货信息", operating ="获取收货信息", action = BusinessType.OTHER)
|
|
129
130
131
132
133
|
public AjaxResult getReceiptInfoByBill(String code) {
AjaxResult result = receiptContainerDetailService.getReceiptInfoByBill(code);
return result;
}
|
|
134
135
136
137
138
139
140
141
142
143
144
145
|
/**
* 获取收货信息
*/
@ResponseBody
@PostMapping("/getReceiptInfoByBillKS")
@RequiresPermissions("receipt:receiving:receiving")
@Log(title = "入库-获取收货信息", operating ="获取收货信息", action = BusinessType.OTHER)
public AjaxResult getReceiptInfoByBillKS(String code,Integer id) {
AjaxResult result = receiptContainerDetailService.getReceiptInfoByBillKS(code,id);
return result;
}
|
|
146
147
148
149
150
151
152
153
154
155
156
157
|
/**
* 获取收货信息
*/
@ResponseBody
@PostMapping("/getReceiptInfoByReferBillKS")
@RequiresPermissions("receipt:receiving:receiving")
@Log(title = "入库-获取收货信息", operating ="获取收货信息", action = BusinessType.OTHER)
public AjaxResult getReceiptInfoByReferBillKS(String code,Integer id) {
AjaxResult result = receiptContainerDetailService.getReceiptInfoByReferBillKS(code,id);
return result;
}
|
|
158
159
160
161
162
163
164
165
|
@ResponseBody
@PostMapping("/getSelectSomething")
public AjaxResult getSelectSomething(String materialCode,String companyCode,String uWarehouseCode) {
AjaxResult result = receiptContainerDetailService.getSelectSomething(materialCode,companyCode,uWarehouseCode);
return result;
}
|
|
166
167
|
@GetMapping("/add")
|
|
168
169
170
|
public String add(Long detailId, String containerCode, ModelMap modelMap) {
modelMap.put("containerCode", containerCode);
modelMap.put("receiptDetails", receiptDetailService.getById(detailId));
|
|
171
172
173
174
175
176
177
178
179
180
|
return prefix + "/add";
}
/**
* 保存收货
*/
@ApiOperation(value="保存收货 ", notes="保存收货 ", httpMethod = "POST")
@ResponseBody
@PostMapping("/save")
@RequiresPermissions("receipt:receiving:receiving")
|
|
181
|
@Log(title = "入库-保存收货", operating ="PC端保存收货", action = BusinessType.OTHER)
|
|
182
|
public AjaxResult save(ReceiptContainerView receivingDamain){
|
|
183
|
if(receivingDamain.getQty().compareTo(new BigDecimal(0)) <=0) {
|
|
184
185
|
return AjaxResult.error("配盘数量必须大于0");
}
|
|
186
187
188
189
|
AjaxResult ajaxResult = handleMultiProcess(new MultiProcessListener() {
@Override
public AjaxResult doProcess() {
|
|
190
|
AjaxResult ajaxResult = receiptContainerHeaderService.saveContainer(receivingDamain);
|
|
191
|
if(ajaxResult!=null&&!ajaxResult.hasErr()){
|
|
192
|
//创建任务
|
|
193
|
LambdaQueryWrapper<ReceiptContainerHeader> lambdaQueryWrapper= Wrappers.lambdaQuery();
|
|
194
|
lambdaQueryWrapper.eq(ReceiptContainerHeader::getContainerCode,receivingDamain.getContainerCode());
|
|
195
|
lambdaQueryWrapper.le(ReceiptContainerHeader::getStatus,10);
|
|
196
197
198
199
200
201
202
203
204
205
206
|
List<ReceiptContainerHeader> receiptContainerHeaders=receiptContainerHeaderService.list(lambdaQueryWrapper);
for(ReceiptContainerHeader item:receiptContainerHeaders) {
String ids = item.getId().toString();
Integer[] idArray = Convert.toIntArray(ids);
List<Integer> islist= Arrays.asList(idArray);
try {
AjaxResult ajaxResult1=receiptTaskService.createReceiptTask(islist);
} catch (Exception e) {
e.printStackTrace();
logger.error("receipt/receiving/save:idArray="+idArray+"msg:"+e.getMessage());
}
|
|
207
|
}
|
|
208
|
}
|
|
209
210
211
|
return ajaxResult;
}
});
|
|
212
|
return ajaxResult;
|
|
213
|
}
|
|
214
215
216
217
218
219
220
221
222
|
/**
* 获取库存信息
*/
@ResponseBody
@PostMapping("/getInventoryInfo")
@RequiresPermissions("receipt:receiving:add")
@Log(title = "入库-入库单", operating ="获取库存信息", action = BusinessType.OTHER)
|
|
223
|
public AjaxResult getInventoryInfo(String code,Integer id) throws Exception {
|
|
224
225
226
227
228
|
//找到主单的账套和仓库
LambdaQueryWrapper<ReceiptHeader> lambdaQueryWrapper= Wrappers.lambdaQuery();
lambdaQueryWrapper.eq(ReceiptHeader::getCode,code)
.eq(ReceiptHeader::getWarehouseCode, ShiroUtils.getWarehouseCode());
ReceiptHeader receiptHeader=receiptHeaderService.getOne(lambdaQueryWrapper);
|
|
229
|
if(receiptHeader == null) {
|
|
230
231
232
233
234
235
236
237
238
|
throw new ServiceException("找不到主单");
}
//找到子单物料
LambdaQueryWrapper<ReceiptDetail> lambdaQuery=Wrappers.lambdaQuery();
lambdaQuery.eq(ReceiptDetail::getReceiptCode,code)
.eq(ReceiptDetail::getWarehouseCode, ShiroUtils.getWarehouseCode())
.eq(ReceiptDetail::getId,id);
ReceiptDetail receiptDetail=receiptDetailService.getOne(lambdaQuery);
|
|
239
|
if(receiptDetail == null) {
|
|
240
241
242
|
throw new ServiceException("找不到子单");
}
|
|
243
|
//排除有任务的托盘
|
|
244
245
246
247
248
249
250
251
252
253
|
// List<TaskHeader> unCompleteTaskList = taskHeaderService.getUnCompleteTaskList();
// List<ShipmentContainerHeader> shipmentContainerHeaderList =
// shipmentContainerHeaderService.getUnCompleteCombineList();
// List<String> containerList = new ArrayList<>();
// if(unCompleteTaskList != null && unCompleteTaskList.size() > 0) {
// for(TaskHeader taskHeader : unCompleteTaskList) {
// String containerCode = taskHeader.getContainerCode();
// containerList.add(containerCode);
// }
// }
|
|
254
|
|
|
255
|
//排除有出库组盘的托盘
|
|
256
257
258
259
260
261
262
263
|
// if(shipmentContainerHeaderList != null && shipmentContainerHeaderList.size() > 0) {
// for(ShipmentContainerHeader shipmentContainerHeader : shipmentContainerHeaderList) {
// String containerCode = shipmentContainerHeader.getContainerCode();
// if(!containerList.contains(containerCode)) {
// containerList.add(containerCode);
// }
// }
// }
|
|
264
|
|
|
265
266
267
268
269
270
271
272
|
//本物料库存
LambdaQueryWrapper<InventoryDetail> inventoryDetailLambda = Wrappers.lambdaQuery();
inventoryDetailLambda.eq(InventoryDetail::getWarehouseCode,ShiroUtils.getWarehouseCode())
.eq(InventoryDetail::getCompanyCode,receiptHeader.getCompanyCode())
.eq(InventoryDetail::getMaterialCode,receiptDetail.getMaterialCode())
.eq((StringUtils.isNotEmpty(receiptDetail.getProjectNo())),InventoryDetail::getProjectNo,
receiptDetail.getProjectNo());
List<InventoryDetail> inventoryList = inventoryDetailService.list(inventoryDetailLambda);
|
|
273
|
List<InventoryDetail> removeInventoryList = new ArrayList<>();
|
|
274
275
276
277
278
|
//空容器
LambdaQueryWrapper<Container> container=Wrappers.lambdaQuery();
container.eq(Container::getWarehouseCode,ShiroUtils.getWarehouseCode())
.eq(Container::getCompanyCode,receiptHeader.getCompanyCode())
|
|
279
|
.eq(Container::getStatus, QuantityConstant.STATUS_CONTAINER_EMPTY);
|
|
280
281
282
|
List<Container> emptyContainerList=containerService.list(container);
List<Container> removeEmptyContainerList = new ArrayList<>();
|
|
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
|
// for(String containerCode : containerList) {
// if(inventoryList != null && inventoryList.size() > 0) {
// for (InventoryDetail inventoryDetail : inventoryList) {
// if (inventoryDetail.getContainerCode().equals(containerCode)) {
// removeInventoryList.add(inventoryDetail);
// }
// }
// }
// if(emptyContainerList != null && emptyContainerList.size() > 0) {
// for (Container container1 : emptyContainerList) {
// if (container1.getCode().equals(containerCode)) {
// removeEmptyContainerList.add(container1);
// }
// }
// }
// }
|
|
299
300
|
inventoryList.removeAll(removeInventoryList);
emptyContainerList.removeAll(removeEmptyContainerList);
|
|
301
302
303
|
Map map=new ModelMap();
map.put("inventoryList",inventoryList);
|
|
304
|
map.put("containerList",emptyContainerList);
|
|
305
306
|
return AjaxResult.success(map);
}
|
|
307
308
309
310
311
312
313
314
315
316
317
318
319
|
/**
* 批量收货
*/
@ResponseBody
@PostMapping("/saveAll")
@RequiresPermissions("receipt:receiving:add")
@Log(title = "入库-入库单", operating ="PC端保存收货", action = BusinessType.OTHER)
public synchronized AjaxResult saveAll(String ids,String receiptContainerCode) throws Exception {
final List<String> list = Arrays.asList(ids.split(","));
for(String i:list){
final ReceiptDetail receiptDetail = receiptDetailService.getById(Integer.valueOf(i));
ReceiptContainerView receiptContainerView=new ReceiptContainerView();
|
|
320
|
receiptContainerView.setReceiptCode(receiptDetail.getReceiptCode());
|
|
321
322
323
324
325
326
327
328
|
receiptContainerView.setQty(receiptDetail.getQty());
receiptContainerView.setContainerCode(receiptContainerCode);
receiptContainerView.setReceiptDetailId(Integer.valueOf(i));
save(receiptContainerView);
}
return AjaxResult.success();
}
|
|
329
|
}
|