WaiguanShipmentController.java
7 KB
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
package com.huaheng.api.wcs.controller;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import com.alibaba.fastjson.JSONException;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.huaheng.api.wcs.domain.WaiguanShipmentDomain;
import com.huaheng.api.wcs.service.WaiguanShipmentService;
import com.huaheng.common.constant.QuantityConstant;
import com.huaheng.common.exception.service.ServiceException;
import com.huaheng.common.utils.StringUtils;
import com.huaheng.common.utils.security.ShiroUtils;
import com.huaheng.framework.aspectj.lang.annotation.ApiLogger;
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;
import com.huaheng.mobile.receipt.ReceiptBill;
import com.huaheng.pc.config.container.domain.Container;
import com.huaheng.pc.config.container.service.ContainerService;
import com.huaheng.pc.config.zone.domain.Zone;
import com.huaheng.pc.config.zone.service.ZoneService;
import com.huaheng.pc.receipt.receiptContainerHeader.domain.ReceiptContainerView;
import com.huaheng.pc.receipt.receiptContainerHeader.service.ReceiptContainerHeaderService;
import com.huaheng.pc.receipt.receiptDetail.service.ReceiptDetailService;
import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader;
import com.huaheng.pc.receipt.receiptHeader.service.ReceiptHeaderService;
import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
/**
* 重入处理接口
* wcs向wms传递数据
* @author ricard
* @date 2019/10/11
*/
@RestController
@RequestMapping("/API/WMS/v2")
public class WaiguanShipmentController extends BaseController {
@Resource
private WaiguanShipmentService waiguanShipmentService;
@Resource
private ContainerService containerService;
@Resource
private TaskHeaderService taskHeaderService;
@Resource
private ReceiptContainerHeaderService receiptContainerHeaderService;
@Resource
private ReceiptHeaderService receiptHeaderService;
@Resource
private ReceiptDetailService receiptDetailService;
@Resource
private ZoneService zoneService;
/**
* 外观仓通过托盘请求出库信息
* @param
* @return
*/
@Log(title = "wcs外观仓通过托盘请求出库信息", action = BusinessType.INSERT)
@PostMapping("/getTaskByContainerCode")
@ApiOperation("wcs外观仓通过托盘请求出库信息")
@ResponseBody
@ApiLogger(apiName = "wcs外观仓通过托盘请求出库信息", from = "WCS")
public AjaxResult getTaskByContainerCode(@RequestBody WaiguanShipmentDomain waiguanShipmentDomain) {
AjaxResult ajaxResult = handleMultiProcess(new MultiProcessListener() {
@Override
public AjaxResult doProcess() {
return waiguanShipmentService.getTaskByContainerCode(waiguanShipmentDomain);
}
});
return ajaxResult;
}
@PostMapping("/quickReceiptByF")
@ApiOperation("外观仓收货保存")
@Log(title = "外观仓收货保存", action = BusinessType.OTHER)
@Transactional(rollbackFor = Exception.class)
@ApiLogger(apiName = "外观仓收货保存", from = "WCS")
public AjaxResult quickReceiptByF(@RequestBody @ApiParam(value = "收货单") List<ReceiptBill> receiptBills) throws Exception {
if (receiptBills == null || receiptBills.size() <= 0) {
throw new JSONException("没有收货信息");
}
if (StringUtils.isNull(receiptBills.get(0).getArea())) {
throw new JSONException("area信息没有");
}
Zone zone = zoneService.getZoneByArea(receiptBills.get(0).getArea().toString());
if (zone == null) {
throw new JSONException("没有找到对应的库区area=" + receiptBills.get(0).getArea());
}
String zoneCode = zone.getCode();
// 设置wcs固定登录缓存,调用公共组盘接口
ShiroUtils.setUserByWcsZone("WCS", QuantityConstant.WAREHOUSECODE, zoneCode);
String containerCode = receiptBills.get(0).getContainerCode();
String locationCode = receiptBills.get(0).getLocationCode();
String companyCode = QuantityConstant.COMPANYCODE;
String receiptDetailId = receiptBills.get(0).getReceiptDetailId();
LambdaQueryWrapper<Container> containerQueryWrapper = Wrappers.lambdaQuery();
containerQueryWrapper.eq(Container::getCode, containerCode);
Container container = containerService.getOne(containerQueryWrapper);
if (container == null) {
throw new JSONException("不存在这个托盘");
}
//pda入库增加托盘任务校验
List<TaskHeader> unfinishTask = taskHeaderService.getUnCompleteTaskList().stream().filter((t) -> {
return t.getContainerCode().equals(container.getCode());
}).collect(Collectors.toList());
if (unfinishTask.size() > 0) {
TaskHeader t = unfinishTask.get(0);
String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(t.getCreated());
throw new ServiceException(container.getCode() + "托盘已经有未完成的任务,请不要重复下发\n该托盘任务创建于:" + time);
}
if (locationCode != null && locationCode.equals(container.getLocationCode())) {
} else {
ReceiptContainerView record = new ReceiptContainerView();
record.setContainerCode(containerCode);
record.setLocationCode(locationCode);
record.setTaskType((short)100);
record.setCompanyCode(receiptBills.get(0).getCompanyCode());
receiptContainerHeaderService.checkContainer(record);
if (locationCode != null) {
receiptContainerHeaderService.mobileCheckLocationCode(record);
}
int receiptHeaderId = receiptHeaderService.createHeader(companyCode, ShiroUtils.getZoneCode());
ReceiptHeader receiptHeader = receiptHeaderService.getById(receiptHeaderId);
List<Integer> receiptDetailIds = receiptDetailService.insertTodayReceiptDetail(receiptHeaderId, receiptBills, true, companyCode);
if (receiptDetailIds != null && receiptDetailIds.size() > 0) {
AjaxResult ajaxResult = receiptContainerHeaderService.createReceiptContainer(receiptDetailIds, receiptBills.get(0));
if (ajaxResult.hasErr()) {
return ajaxResult;
}
} else {
return AjaxResult.error("插入入库明细表单失败");
}
}
return AjaxResult.success("收货成功");
}
}