|
1
2
3
4
5
6
7
8
|
package com.huaheng.api.general.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.huaheng.api.general.domain.BarCodeDomain;
import com.huaheng.api.wcs.service.taskInfo.TaskInfoService;
import com.huaheng.common.constant.QuantityConstant;
|
|
9
|
import com.huaheng.common.constant.Res;
|
|
10
|
import com.huaheng.common.exception.BusinessException;
|
|
11
|
import com.huaheng.common.exception.service.ServiceException;
|
|
12
|
import com.huaheng.common.utils.DateUtils;
|
|
13
|
import com.huaheng.common.utils.spring.SpringUtils;
|
|
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.pc.barcode.barcodeDetail.domain.BarCodeDetail;
import com.huaheng.pc.barcode.barcodeDetail.service.BarCodeDetailService;
import com.huaheng.pc.barcode.barcodeHeader.domain.BarCodeHeader;
import com.huaheng.pc.barcode.barcodeHeader.service.BarCodeHeaderService;
import com.huaheng.pc.config.material.domain.Material;
import com.huaheng.pc.config.material.service.MaterialService;
import com.huaheng.pc.config.station.domain.Station;
import com.huaheng.pc.task.taskDetail.domain.TaskDetail;
import com.huaheng.pc.task.taskDetail.service.TaskDetailService;
import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
import com.huaheng.pc.task.taskHeader.service.ReceiptTaskService;
import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
|
|
31
|
import java.math.BigDecimal;
|
|
32
|
import java.util.Date;
|
|
33
|
import java.util.List;
|
|
34
|
import java.util.ResourceBundle;
|
|
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
@Component
@Transactional
public class BarCodeApiService {
@Resource
private BarCodeHeaderService barCodeHeaderService;
@Resource
private MaterialService materialService;
@Resource
private BarCodeDetailService barCodeDetailService;
@Resource
private TaskHeaderService taskHeaderService;
@Resource
private TaskDetailService taskDetailService;
@Resource
private TaskInfoService taskInfoService;
@Resource
private ReceiptTaskService receiptTaskService;
|
|
54
55
|
@Transactional(rollbackFor = Exception.class)
public AjaxResult checkBarCode(BarCodeDomain barCodeDomain) {
|
|
56
57
58
|
BarCodeHeader barCodeHeader = barCodeDomain.getBarCodeHeader();
String barCodeHeaderCode = barCodeHeader.getCode();
if(barCodeHeaderCode == null){
|
|
59
|
return AjaxResult.error("主码不存在");
|
|
60
61
62
|
}
barCodeHeader.setBarCodeHeaderCode(barCodeHeaderCode);
|
|
63
64
65
|
if (barCodeHeader.getFbillno()==null && barCodeHeader.getFbillno()=="") {
return AjaxResult.error("生产订单号为空");
}
|
|
66
67
68
69
70
|
LambdaQueryWrapper<BarCodeHeader> barCodeHeaderLambdaQueryWrapper = Wrappers.lambdaQuery();
barCodeHeaderLambdaQueryWrapper.eq(BarCodeHeader::getBarCodeHeaderCode,barCodeHeader.getBarCodeHeaderCode());
List<BarCodeHeader> barCodeHeaderList = barCodeHeaderService.list(barCodeHeaderLambdaQueryWrapper);
if(barCodeHeaderList.size()>0){
|
|
71
|
return AjaxResult.error("主码重复"+barCodeHeader.getBarCodeHeaderCode());
|
|
72
73
74
75
76
77
78
|
}
List<BarCodeDetail> barCodeDetailList = barCodeDomain.getBarCodeDetails();
for (BarCodeDetail barCodeDetail : barCodeDetailList) {
String barCodeDetailReceiptCode = barCodeDetail.getCode();
if(barCodeDetailReceiptCode == null){
|
|
79
|
return AjaxResult.error("子条码不存在 "+barCodeDetailReceiptCode);
|
|
80
81
82
83
|
}
barCodeDetail.setReceiptCode(barCodeDetailReceiptCode);
String materialCode = barCodeDetail.getMaterialCode();
if(materialCode == null){
|
|
84
|
return AjaxResult.error("物料编码不存在 "+materialCode);
|
|
85
86
|
}
|
|
87
|
BigDecimal qty = barCodeDetail.getQty();
|
|
88
89
90
91
92
93
94
95
96
97
|
if(qty == null){
return AjaxResult.error("数量不存在 qty");
}
String sn = barCodeDetail.getSn();
}
return AjaxResult.success();
}
|
|
98
|
@Transactional(rollbackFor = Exception.class)
|
|
99
|
public AjaxResult addBarCodeApi(BarCodeDomain barCodeDomain){
|
|
100
101
|
boolean result = false;
BarCodeHeader header = barCodeDomain.getBarCodeHeader();
|
|
102
|
String materialBatch = header.getMaterialBatch();
|
|
103
104
105
|
String barCodeHeaderCode = header.getCode();
String fbillno = header.getFbillno();
if(barCodeHeaderCode == null || "".equals(barCodeHeaderCode)){
|
|
106
|
return AjaxResult.error("没有主条码");
|
|
107
|
}
|
|
108
109
110
|
if(header.getFbillno() == null || "".equals(header.getFbillno())){
return AjaxResult.error("没有生产订单编号");
}
|
|
111
|
String code = barCodeHeaderService.createCode("BZXXRK");
|
|
112
|
|
|
113
114
115
116
117
118
119
|
// BarCodeHeader barCodeHeader = barCodeHeaderService.getOne(new LambdaQueryWrapper<BarCodeHeader>()
// .eq(BarCodeHeader::getBarCodeHeaderCode,barCodeHeaderCode)
// .eq(BarCodeHeader::getFbillno,fbillno));
// if(barCodeHeader != null){
// return AjaxResult.error("包装信息头错误:主条码重复【"+barCodeHeaderCode+"】。");
// }
BarCodeHeader barCodeHeader = new BarCodeHeader();
|
|
120
|
barCodeHeader.setLocked(QuantityConstant.BARCODEHEADER_LOCKED_DEFAULT);
|
|
121
|
barCodeHeader.setCode(code);
|
|
122
|
barCodeHeader.setMaterialBatch(materialBatch);
|
|
123
124
125
126
127
128
129
130
131
132
133
134
|
barCodeHeader.setReceiptType("BZXXRK");
barCodeHeader.setWarehouseCode(QuantityConstant.DEFAULT_WAREHOUSE);
barCodeHeader.setCompanyCode(QuantityConstant.DEFAULT_COMPANYCODE);
barCodeHeader.setFbillno(fbillno);
barCodeHeader.setCreatedBy(QuantityConstant.PLATFORM_MES);
barCodeHeader.setBarCodeHeaderCode(barCodeHeaderCode);
barCodeHeader.setReceiptNote(header.getReceiptNote());
barCodeHeader.setTotalQty(BigDecimal.ZERO);
barCodeHeader.setTotalLines(0);
barCodeHeader.setTotalWeight(BigDecimal.ZERO);
result = barCodeHeaderService.save(barCodeHeader);
if(!result){
|
|
135
|
throw new ServiceException("包装头信息创建失败");
|
|
136
|
}
|
|
137
138
139
140
141
142
143
|
List<BarCodeDetail> barCodeDetails = barCodeDomain.getBarCodeDetails();
BigDecimal totalQty = BigDecimal.ZERO;
BigDecimal totalWeight = BigDecimal.ZERO;
int totalLines = barCodeDetails.size();
for (BarCodeDetail detail : barCodeDetails) {
BarCodeDetail barCodeDetail = new BarCodeDetail();
|
|
144
|
detail = addAttr(detail.getCode(),detail);
|
|
145
146
|
barCodeDetail.setWarehouseCode(QuantityConstant.DEFAULT_WAREHOUSE);
barCodeDetail.setCompanyCode(QuantityConstant.DEFAULT_COMPANYCODE);
|
|
147
|
barCodeDetail.setReceiptId(barCodeHeader.getId());
|
|
148
|
barCodeDetail.setCode(detail.getCode());
|
|
149
|
barCodeDetail.setReceiptCode(barCodeHeader.getCode());
|
|
150
151
152
|
String materialCode = detail.getMaterialCode();
String materialUnit = detail.getMaterialUnit();
BigDecimal qty = detail.getQty();
|
|
153
|
BigDecimal weight = detail.getWeight();
|
|
154
|
BarCodeHeader oneBarCodeHeader = barCodeHeaderService.getOne(new LambdaQueryWrapper<BarCodeHeader>().eq(BarCodeHeader::getId, barCodeHeader.getId()));
|
|
155
|
if(weight.compareTo(BigDecimal.ZERO) == 0){
|
|
156
|
oneBarCodeHeader.setProType("1");//重量为0,就是装配
|
|
157
|
}else {
|
|
158
|
oneBarCodeHeader.setProType("2");//有重量就是拆解
|
|
159
|
}
|
|
160
|
barCodeHeaderService.updateById(oneBarCodeHeader);
|
|
161
162
|
if (detail.getCode()==null&&"".equals(detail.getCode())) { //没有字条码,属于拆解中的散装,只有重量没有数量,重量赋值给数量
|
|
163
|
qty=weight;
|
|
164
|
}
|
|
165
166
|
totalQty.add(qty);
totalWeight.add(weight);
|
|
167
|
Material material = materialService.getOne(new LambdaQueryWrapper<Material>().eq(Material::getCode,materialCode));
|
|
168
|
if(material == null){
|
|
169
170
|
result=false;
throw new ServiceException("没有该物料编码:"+barCodeDetail.getMaterialCode());
|
|
171
172
173
174
175
|
}
barCodeDetail.setMaterialCode(material.getCode());
barCodeDetail.setMaterialName(material.getName());
barCodeDetail.setMaterialSpec(material.getSpec());
barCodeDetail.setMaterialUnit(material.getUnit());
|
|
176
|
barCodeDetail.setTotalQty(qty);
|
|
177
|
barCodeDetail.setSn(detail.getSn());
|
|
178
|
barCodeDetail.setWeight(weight);
|
|
179
180
181
182
|
barCodeDetail.setConstitute(detail.getConstitute());
barCodeDetail.setProductType(detail.getProductType());
barCodeDetail.setBatteryModel(detail.getBatteryModel());
barCodeDetail.setWarehouseInTime(detail.getWarehouseInTime());
|
|
183
184
|
result = barCodeDetailService.save(barCodeDetail);
if(!result){
|
|
185
|
result=false;
|
|
186
|
throw new ServiceException("包装子信息创建失败");
|
|
187
188
|
}
}
|
|
189
190
191
192
193
194
195
|
barCodeHeader.setTotalQty(barCodeHeader.getTotalQty().add(totalQty));
barCodeHeader.setTotalWeight(barCodeHeader.getTotalWeight().add(totalWeight));
barCodeHeader.setTotalLines(totalLines);
result = barCodeHeaderService.updateById(barCodeHeader);
if(!result){
throw new ServiceException("更新包装入库头信息失败。");
}
|
|
196
|
return AjaxResult.toAjax(result);
|
|
197
198
|
}
|
|
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
|
private BarCodeDetail addAttr(String barCode,BarCodeDetail detail){
String productType = barCode.substring(3,4);
String batteryType = barCode.substring(4,5);
String productDate = barCode.substring(7,10);
String year = productDate.substring(0, 1);
String month = productDate.substring(1, 2);
String day = productDate.substring(2, 3);
String type = barCode.substring(17,19);
String days = Res.string().dateKey(day);
String years = Res.string().yearKey(year);
Date inTime = DateUtils.dateTime("yyyy-MM-dd", years + "-" + month + "-" + days);
detail.setConstitute(Res.string().batteryKey(type));
detail.setProductType(productType);
detail.setBatteryModel(Res.string().batteryKey(batteryType));
detail.setWarehouseInTime(inTime);
return detail;
}
|
|
218
|
}
|