|
1
2
|
package com.huaheng.pc.receipt.receiptContainerDetail.service;
|
|
3
4
|
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
|
|
5
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
6
|
import com.huaheng.common.utils.Wrappers;
|
|
7
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
8
|
import com.huaheng.common.constant.QuantityConstant;
|
|
9
|
import com.huaheng.common.exception.service.ServiceException;
|
|
10
|
import com.huaheng.common.utils.StringUtils;
|
|
11
|
import com.huaheng.common.utils.http.HttpUtils;
|
|
12
13
|
import com.huaheng.common.utils.security.ShiroUtils;
import com.huaheng.framework.web.domain.AjaxResult;
|
|
14
|
import com.huaheng.mobile.receipt.ReceiptBill;
|
|
15
16
|
import com.huaheng.pc.config.address.domain.Address;
import com.huaheng.pc.config.address.service.AddressService;
|
|
17
|
import com.huaheng.pc.config.location.service.LocationService;
|
|
18
19
|
import com.huaheng.pc.config.material.domain.Material;
import com.huaheng.pc.config.material.service.MaterialService;
|
huhai
authored
|
20
21
22
23
|
import com.huaheng.common.constant.QuantityConstant;
import com.huaheng.common.exception.service.ServiceException;
import com.huaheng.common.utils.security.ShiroUtils;
import com.huaheng.framework.web.domain.AjaxResult;
|
|
24
25
|
import com.huaheng.pc.receipt.receiptContainerDetail.domain.ReceiptContainerDetail;
import com.huaheng.pc.receipt.receiptContainerDetail.mapper.ReceiptContainerDetailMapper;
|
|
26
|
import com.huaheng.pc.receipt.receiptContainerHeader.domain.ReceiptContainerHeader;
|
|
27
|
import com.huaheng.pc.receipt.receiptContainerHeader.domain.ReceiptContainerView;
|
|
28
|
import com.huaheng.pc.receipt.receiptContainerHeader.service.ReceiptContainerHeaderService;
|
|
29
30
31
32
|
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;
|
|
33
|
import org.springframework.stereotype.Service;
|
|
34
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
35
|
|
|
36
|
import javax.annotation.Resource;
|
|
37
|
import java.util.ArrayList;
|
|
38
39
|
import java.util.List;
import java.util.Map;
|
huhai
authored
|
40
41
42
43
44
45
46
47
48
49
|
import com.huaheng.pc.receipt.receiptContainerHeader.domain.ReceiptContainerHeader;
import com.huaheng.pc.receipt.receiptContainerHeader.service.ReceiptContainerHeaderService;
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;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
|
|
50
51
|
import java.util.List;
import java.util.Map;
|
|
52
53
54
|
@Service
public class ReceiptContainerDetailServiceImpl extends ServiceImpl<ReceiptContainerDetailMapper, ReceiptContainerDetail> implements ReceiptContainerDetailService{
|
|
55
56
57
58
|
@Resource
private ReceiptDetailService receiptDetailService;
@Resource
private ReceiptHeaderService receiptHeaderService;
|
|
59
60
|
@Resource
private ReceiptContainerHeaderService receiptContainerHeaderService;
|
|
61
62
|
@Resource
private MaterialService materialService;
|
|
63
64
|
@Resource
private LocationService locationService;
|
|
65
66
|
@Resource
private AddressService addressService;
|
|
67
68
|
@Resource
private ReceiptContainerDetailMapper receiptContainerDetailMapper;
|
|
69
70
|
/**
* 根据入库单编码查询入库组盘明细
|
|
71
72
|
* @param receiptCode 入库单编码
* @return AjaxResult
|
|
73
|
*/
|
|
74
75
76
77
78
79
80
81
82
83
|
@Override
public AjaxResult<List<Map<String, Object>>> getReceiptInfoByBill(String receiptCode) {
LambdaQueryWrapper<ReceiptContainerDetail> lambdaQueryWrapper = Wrappers.lambdaQuery();
lambdaQueryWrapper.eq(ReceiptContainerDetail::getReceiptCode, receiptCode)
.eq(ReceiptContainerDetail::getWarehouseCode, ShiroUtils.getWarehouseCode());
List<Map<String, Object>> detail = this.listMaps(lambdaQueryWrapper);
return AjaxResult.success(detail);
}
|
|
84
85
86
87
88
89
90
91
92
93
|
/**
* 撤销入库组盘明细
* @param idList
* @return
*/
@Override
public Boolean detailRemove(List<Integer> idList) {
for (Integer id : idList){
ReceiptContainerDetail receiptContainerDetail = this.getById(id);
//如果已生成任务不允许撤销
|
|
94
|
if (receiptContainerDetail.getStatus() < QuantityConstant.RECEIPT_CONTAINER_TASK){
|
|
95
96
|
//回滚入库单明细收货数量
ReceiptDetail receiptDetail = receiptDetailService.getById(receiptContainerDetail.getReceiptDetailId());
|
|
97
|
receiptDetail.setTaskQty(receiptDetail.getTaskQty().subtract(receiptContainerDetail.getQty()));
|
|
98
|
|
|
99
100
101
|
//如果为临时容器,则删除
receiptContainerDetail.getContainerCode();
|
|
102
103
104
105
106
107
108
|
if (!receiptDetailService.updateById(receiptDetail)){throw new SecurityException("回滚入库单明细失败");}
//删除组盘明细
if (!this.removeById(id)){ throw new ServiceException("回滚入库组盘失败");}
LambdaQueryWrapper<ReceiptContainerDetail> lambdaQueryWrapper = Wrappers.lambdaQuery();
lambdaQueryWrapper.eq(ReceiptContainerDetail::getReceiptContainerId, receiptContainerDetail.getReceiptContainerId());
List<ReceiptContainerDetail> list = this.list(lambdaQueryWrapper);
if (list.size() == 0){
|
|
109
110
|
String locationCode = receiptContainerDetail.getLocationCode();
if(StringUtils.isNotEmpty(locationCode)) {
|
|
111
|
locationService.updateStatus(locationCode, QuantityConstant.STATUS_LOCATION_EMPTY);
|
|
112
|
}
|
|
113
114
115
116
|
if (!receiptContainerHeaderService.removeById(receiptContainerDetail.getReceiptContainerId())){
throw new ServiceException("删除入库组盘头失败");
}
}
|
|
117
|
|
|
118
119
120
121
|
//查询入库头表
LambdaQueryWrapper<ReceiptContainerDetail> containerDetailLambda = Wrappers.lambdaQuery();
containerDetailLambda.eq(ReceiptContainerDetail::getReceiptId, receiptContainerDetail.getReceiptId());
List<ReceiptContainerDetail> containerDetailList = this.list(containerDetailLambda);
|
|
122
123
|
|
|
124
|
//如果入库组盘没有该入库单的组盘信息,回滚入库单状态
|
|
125
|
if (containerDetailList.size() == 0){
|
|
126
127
|
ReceiptHeader receiptHeader = new ReceiptHeader();
receiptHeader.setId(receiptContainerDetail.getReceiptId());
|
|
128
129
|
receiptHeader.setFirstStatus(QuantityConstant.RECEIPT_HEADER_RECEIVING);
receiptHeader.setLastStatus(QuantityConstant.RECEIPT_HEADER_RECEIVING);
|
|
130
131
132
133
134
135
136
137
138
139
140
141
|
receiptHeader.setLastUpdatedBy(ShiroUtils.getLoginName());
if (!receiptHeaderService.updateById(receiptHeader)){ throw new ServiceException("回滚头表状态失败"); }
}
} else {
throw new SecurityException("已生成任务,不允许取消");
}
}
return true;
}
|
|
142
|
|
|
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
|
// /**
// * 移动端收货
// *
// * @param code
// * @return
// */
// @Override
// public AjaxResult scanReceiptCode(String code) {
// LambdaQueryWrapper<ReceiptDetail> lambdaQueryWrapper = Wrappers.lambdaQuery();
// lambdaQueryWrapper.eq(ReceiptDetail::getReceiptCode, code);
// List<ReceiptDetail> receiptContainerDetails = list(lambdaQueryWrapper);
// return AjaxResult.success(receiptContainerDetails);
// }
/**保存到组盘详细*/
|
|
158
|
@Override
|
|
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
|
public List<Integer> insertTodayReceiptcContainerDetail(int headerId, int receiptId, List<Integer> receiptDetailId, List<ReceiptBill> receiptBills) {
List<Integer> mReceiptContainerIds = new ArrayList<>();
ReceiptHeader receiptHeader = receiptHeaderService.getById(receiptId);
if(receiptHeader == null) {
throw new ServiceException("没有找到入库单表头!");
}
for(int i=0; i<receiptBills.size(); i++) {
ReceiptBill receiptBill = receiptBills.get(i);
Material condition2 = new Material();
condition2.setCode(receiptBill.getMaterialCode());
condition2.setWarehouseCode(ShiroUtils.getWarehouseCode());
condition2.setDeleted(false);
condition2.setEnable(true);
LambdaQueryWrapper<Material> lambdaQueryWrapper = Wrappers.lambdaQuery();
lambdaQueryWrapper.eq(Material::getCode, receiptBill.getMaterialCode())
.eq(Material::getWarehouseCode, ShiroUtils.getWarehouseCode());
Material material = materialService.getOne(lambdaQueryWrapper);
ReceiptContainerDetail record = new ReceiptContainerDetail();
record.setReceiptContainerId(headerId);
record.setReceiptCode(receiptHeader.getCode());
record.setReceiptId(receiptId);
record.setReceiptDetailId(receiptDetailId.get(i));
record.setMaterialCode(receiptBill.getMaterialCode());
record.setMaterialName(material.getName());
record.setMaterialSpec(material.getSpec());
|
|
185
|
record.setInventorySts("good");
|
|
186
|
record.setQty(receiptBill.getQty());
|
|
187
|
record.setContainerCode(receiptBills.get(0).getReceiptContainerCode());
|
|
188
189
190
191
|
if(receiptBill.getWeight() != null) {
record.setWeight(receiptBill.getWeight());
}
record.setCreatedBy(ShiroUtils.getLoginName());
|
|
192
|
record.setLastUpdatedBy(ShiroUtils.getLoginName());
|
|
193
194
195
196
197
198
199
200
201
202
203
204
205
|
LambdaQueryWrapper<ReceiptContainerDetail> detailyWrapper = Wrappers.lambdaQuery();
detailyWrapper.eq(ReceiptContainerDetail::getReceiptContainerId, headerId)
.eq(ReceiptContainerDetail::getReceiptCode, receiptHeader.getCode());
ReceiptContainerDetail receiptContainerDetail = getOne(detailyWrapper);
if(receiptContainerDetail == null) {
save(record);
mReceiptContainerIds.add(record.getId());
} else {
mReceiptContainerIds.add(receiptContainerDetail.getId());
}
}
return mReceiptContainerIds;
|
|
206
|
}
|
|
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
|
@Override
public void autoSendMmsByReceiptContainer(ReceiptContainerDetail receiptContainerDetail){
//调用mms更改采购状态
Address address = addressService.getAddressByUrl(QuantityConstant.ADDRESS_MMS,receiptContainerDetail.getWarehouseCode());
try{
String url=address.getUrl();
JSONObject json=new JSONObject();
json.put("code",receiptContainerDetail.getReceiptCode().trim());
json.put("materialCode",receiptContainerDetail.getMaterialCode().trim());
json.put("status","2");
json.put("inQty",receiptContainerDetail.getQty());
String workNo=receiptDetailService.getWorkNo(receiptContainerDetail.getReceiptDetailId());
json.put("workNo",workNo);
String JsonParam = JSON.toJSONString(json);
String result2 = HttpUtils.bodypost(url, JsonParam,receiptContainerDetail.getWarehouseCode());
if(result2!=null){
receiptContainerDetail.setSyncMms(2);
}else{
receiptContainerDetail.setSyncMmsNum(receiptContainerDetail.getSyncMmsNum()+1);
}
this.updateById(receiptContainerDetail);
}catch(Exception e) {
e.printStackTrace();
}
}
|
|
233
234
235
236
237
238
239
240
|
@Override
public List<ReceiptContainerDetail> getReceiptContainerDetailByHeaderId(int receiptContainerHeaderId){
//查询入库组盘明细
LambdaQueryWrapper<ReceiptContainerDetail> containerDetailLambda = Wrappers.lambdaQuery();
containerDetailLambda.eq(ReceiptContainerDetail::getReceiptContainerId, receiptContainerHeaderId);
List<ReceiptContainerDetail> list = this.list(containerDetailLambda);
return list;
}
|
|
241
242
243
244
245
246
247
248
|
@Override
public ReceiptContainerDetail selectFirstEntity(ReceiptContainerDetail domain){
LambdaQueryWrapper<ReceiptContainerDetail> containerDetailLambda = Wrappers.lambdaQuery();
containerDetailLambda.eq(StringUtils.isNotNull(domain.getReceiptContainerId()),ReceiptContainerDetail::getReceiptContainerId, domain.getReceiptContainerId());
containerDetailLambda.eq(StringUtils.isNotNull(domain.getReceiptDetailId()),ReceiptContainerDetail::getReceiptDetailId, domain.getReceiptDetailId());
containerDetailLambda.last("limit 1");
return this.getOne(containerDetailLambda);
}
|
|
249
250
251
252
253
|
@Override
public List<ReceiptContainerView> selectOfView(ReceiptContainerView receiptContainerView) {
return receiptContainerDetailMapper.selectOfView(receiptContainerView);
}
|
|
254
|
}
|