|
1
2
|
package com.huaheng.pc.receipt.receiptContainerDetail.service;
|
|
3
4
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
5
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
6
|
import com.huaheng.common.constant.QuantityConstant;
|
|
7
|
import com.huaheng.common.exception.service.ServiceException;
|
|
8
|
import com.huaheng.common.utils.StringUtils;
|
|
9
10
|
import com.huaheng.common.utils.security.ShiroUtils;
import com.huaheng.framework.web.domain.AjaxResult;
|
|
11
|
import com.huaheng.mobile.receipt.ReceiptBill;
|
|
12
|
import com.huaheng.pc.config.location.service.LocationService;
|
|
13
14
|
import com.huaheng.pc.config.material.domain.Material;
import com.huaheng.pc.config.material.service.MaterialService;
|
huhai
authored
|
15
16
17
18
|
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;
|
|
19
20
|
import com.huaheng.pc.receipt.receiptContainerDetail.domain.ReceiptContainerDetail;
import com.huaheng.pc.receipt.receiptContainerDetail.mapper.ReceiptContainerDetailMapper;
|
|
21
22
|
import com.huaheng.pc.receipt.receiptContainerHeader.domain.ReceiptContainerHeader;
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 org.springframework.stereotype.Service;
|
|
28
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
29
|
|
|
30
|
import javax.annotation.Resource;
|
|
31
|
import java.util.ArrayList;
|
|
32
33
|
import java.util.List;
import java.util.Map;
|
huhai
authored
|
34
35
36
37
38
39
40
41
42
43
|
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;
|
|
44
45
|
import java.util.List;
import java.util.Map;
|
|
46
47
48
|
@Service
public class ReceiptContainerDetailServiceImpl extends ServiceImpl<ReceiptContainerDetailMapper, ReceiptContainerDetail> implements ReceiptContainerDetailService{
|
|
49
50
51
52
|
@Resource
private ReceiptDetailService receiptDetailService;
@Resource
private ReceiptHeaderService receiptHeaderService;
|
|
53
54
|
@Resource
private ReceiptContainerHeaderService receiptContainerHeaderService;
|
|
55
56
|
@Resource
private MaterialService materialService;
|
|
57
58
|
@Resource
private LocationService locationService;
|
|
59
60
|
/**
* 根据入库单编码查询入库组盘明细
|
|
61
62
|
* @param receiptCode 入库单编码
* @return AjaxResult
|
|
63
|
*/
|
|
64
65
66
67
68
69
70
71
72
73
|
@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);
}
|
|
74
75
76
77
78
79
80
81
82
83
|
/**
* 撤销入库组盘明细
* @param idList
* @return
*/
@Override
public Boolean detailRemove(List<Integer> idList) {
for (Integer id : idList){
ReceiptContainerDetail receiptContainerDetail = this.getById(id);
//如果已生成任务不允许撤销
|
|
84
|
if (receiptContainerDetail.getStatus() < QuantityConstant.RECEIPT_CONTAINER_TASK){
|
|
85
86
|
//回滚入库单明细收货数量
ReceiptDetail receiptDetail = receiptDetailService.getById(receiptContainerDetail.getReceiptDetailId());
|
|
87
|
receiptDetail.setOpenQty(receiptDetail.getOpenQty().subtract(receiptContainerDetail.getQty()));
|
|
88
|
|
|
89
90
91
|
//如果为临时容器,则删除
receiptContainerDetail.getContainerCode();
|
|
92
93
94
95
96
97
98
|
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){
|
|
99
100
|
String locationCode = receiptContainerDetail.getLocationCode();
if(StringUtils.isNotEmpty(locationCode)) {
|
|
101
|
locationService.updateStatus(locationCode, QuantityConstant.STATUS_LOCATION_EMPTY);
|
|
102
|
}
|
|
103
104
105
106
|
if (!receiptContainerHeaderService.removeById(receiptContainerDetail.getReceiptContainerId())){
throw new ServiceException("删除入库组盘头失败");
}
}
|
|
107
|
|
|
108
109
110
111
|
//查询入库头表
LambdaQueryWrapper<ReceiptContainerDetail> containerDetailLambda = Wrappers.lambdaQuery();
containerDetailLambda.eq(ReceiptContainerDetail::getReceiptId, receiptContainerDetail.getReceiptId());
List<ReceiptContainerDetail> containerDetailList = this.list(containerDetailLambda);
|
|
112
113
|
|
|
114
|
//如果入库组盘没有该入库单的组盘信息,回滚入库单状态
|
|
115
|
if (containerDetailList.size() == 0){
|
|
116
117
|
ReceiptHeader receiptHeader = new ReceiptHeader();
receiptHeader.setId(receiptContainerDetail.getReceiptId());
|
|
118
119
|
receiptHeader.setFirstStatus(QuantityConstant.RECEIPT_HEADER_RECEIVING);
receiptHeader.setLastStatus(QuantityConstant.RECEIPT_HEADER_RECEIVING);
|
|
120
121
122
123
124
125
126
127
128
129
130
131
|
receiptHeader.setLastUpdatedBy(ShiroUtils.getLoginName());
if (!receiptHeaderService.updateById(receiptHeader)){ throw new ServiceException("回滚头表状态失败"); }
}
} else {
throw new SecurityException("已生成任务,不允许取消");
}
}
return true;
}
|
|
132
|
|
|
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
|
// /**
// * 移动端收货
// *
// * @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);
// }
/**保存到组盘详细*/
|
|
148
|
@Override
|
|
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
|
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());
record.setQty(receiptBill.getQty());
|
|
176
|
record.setContainerCode(receiptBills.get(0).getReceiptContainerCode());
|
|
177
178
179
180
|
if(receiptBill.getWeight() != null) {
record.setWeight(receiptBill.getWeight());
}
record.setCreatedBy(ShiroUtils.getLoginName());
|
|
181
|
record.setLastUpdatedBy(ShiroUtils.getLoginName());
|
|
182
183
184
185
186
187
188
189
190
191
192
193
194
|
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;
|
|
195
|
}
|
|
196
|
}
|