QualityService.java
7.57 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
159
160
161
162
163
164
165
166
167
package com.huaheng.api.quality.service;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.huaheng.api.quality.domain.QualityDetail;
import com.huaheng.api.quality.domain.QualityHeader;
import com.huaheng.api.quality.domain.QualityModel;
import com.huaheng.common.constant.QuantityConstant;
import com.huaheng.common.exception.service.ServiceException;
import com.huaheng.common.utils.StringUtils;
import com.huaheng.common.utils.http.OkHttpUtils;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.framework.web.domain.ResultErp;
import com.huaheng.framework.web.service.ConfigService;
import com.huaheng.pc.config.address.domain.Address;
import com.huaheng.pc.config.address.service.AddressService;
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 com.huaheng.pc.srm.domain.SrmHeader;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
@Service
public class QualityService {
@Resource
private ReceiptHeaderService receiptHeaderService;
@Resource
private ReceiptDetailService receiptDetailService;
@Resource
private ConfigService configService;
@Resource
private AddressService addressService;
public String getQualityAddress(){
LambdaQueryWrapper<Address> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Address::getParam, "quality");
queryWrapper.last("limit 1");
Address address = addressService.getOne(queryWrapper);
if(address==null){
throw new ServiceException("请配置质检地址");
}
return address.getUrl();
}
/**
* 入库单质检状态生成质检单
* @return
*/
@Transactional
//srm和t100和mes传过来生成的入库单,当入库单有明细需要质检时,QualityStatus为1、FirstStatus状态为0,不能操作入库
public AjaxResult createQualityByReceipt(){
//入库单receiptHeader为采购单类型的单子,状态为0
LambdaQueryWrapper<ReceiptHeader> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(ReceiptHeader::getReceiptType, QuantityConstant.PURCHASE_R, QuantityConstant.PURCHASER_R,QuantityConstant.MES_RECEIPT_TYPE_SI);
// queryWrapper.eq(ReceiptHeader::getFirstStatus, QuantityConstant.RECEIPT_HEADER_CHECK);
queryWrapper.eq(ReceiptHeader::getQualityStatus, 1);
List<ReceiptHeader> receiptHeaders = receiptHeaderService.list(queryWrapper);
String urlpre=this.getQualityAddress();
String token=configService.getKey("quality_token",QuantityConstant.WAREHOUSE_CS);
if(StringUtils.isEmpty( token)){
throw new ServiceException("请配置质检token");
}
//遍历每个入库单,创建质检单
String url=urlpre+"/api/quality/createQuality";
for (ReceiptHeader receiptHeader : receiptHeaders) {
String receiptType=receiptHeader.getReceiptType();
if(receiptType.equals(QuantityConstant.PURCHASE_R)||receiptType.equals(QuantityConstant.PURCHASER_R)){
if(!receiptHeader.getFirstStatus().equals(QuantityConstant.RECEIPT_HEADER_CHECK)){
ReceiptHeader receiptHeader1=new ReceiptHeader();
receiptHeader1.setQualityStatus(2);
receiptHeader1.setId(receiptHeader.getId());
receiptHeaderService.updateById(receiptHeader1);
continue;
}
}
QualityModel qualityModel = createQualityByReceipt(receiptHeader);
if(qualityModel==null){
continue;
}
//对接质检系统api
String JsonParam = JSON.toJSONString(qualityModel);
String result = OkHttpUtils.bodypostToken(url, JsonParam, receiptHeader.getWarehouseCode(),"质检单生成",token);
if(result==null){
continue;
}
ResultErp resultErp = JSON.parseObject(result, ResultErp.class);
if(resultErp.isSuccess()){
ReceiptHeader receiptHeader1=new ReceiptHeader();
receiptHeader1.setQualityStatus(2);
receiptHeader1.setId(receiptHeader.getId());
receiptHeaderService.updateById(receiptHeader1);
}
}
return AjaxResult.success();
}
public QualityModel createQualityByReceipt(ReceiptHeader receiptHeader){
QualityModel qualityModel = new QualityModel();
//创建质检单主表
QualityHeader qualityHeader = new QualityHeader();
String receipType=receiptHeader.getReceiptType();
switch (receipType){
case QuantityConstant.PURCHASE_R:
qualityHeader.setType(QuantityConstant.QUALITY_TYPE_T100);
break;
case QuantityConstant.PURCHASER_R:
qualityHeader.setType(QuantityConstant.QUALITY_TYPE_SRM);
break;
case QuantityConstant.SI_R:
qualityHeader.setType(QuantityConstant.QUALITY_TYPE_MES);
break;
default:
return null;
}
qualityHeader.setWarehouseCode(receiptHeader.getWarehouseCode());
qualityHeader.setCompanyCode(receiptHeader.getCompanyCode());
qualityHeader.setSourceCode(receiptHeader.getCode());
qualityHeader.setSourceId(receiptHeader.getId());
qualityHeader.setReferCode(receiptHeader.getReferCode());
//保存明细表
LambdaQueryWrapper<ReceiptDetail> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ReceiptDetail::getReceiptId, receiptHeader.getId());
queryWrapper.eq(ReceiptDetail::getQcCheck, 0);
List<ReceiptDetail> receiptDetails = receiptDetailService.list(queryWrapper);
List<QualityDetail> qualityDetails = new ArrayList<>();
for (ReceiptDetail receiptDetail : receiptDetails) {
QualityDetail qualityDetail= createQualityDetailByReceiptDetail(receiptDetail, qualityHeader);
qualityDetails.add(qualityDetail);
}
if(qualityDetails.size()==0){
return null;
}
qualityModel.setQualityHeader(qualityHeader);
qualityModel.setQualityDetails(qualityDetails);
return qualityModel;
}
//根据入库单明细创建质检单明细
private QualityDetail createQualityDetailByReceiptDetail(ReceiptDetail receiptDetail, QualityHeader qualityHeader){
QualityDetail qualityDetail = new QualityDetail();
qualityDetail.setLot(receiptDetail.getLot());
qualityDetail.setProject(receiptDetail.getMoCode());
qualityDetail.setReferLineNum(Integer.valueOf(receiptDetail.getReferLineNum()));
qualityDetail.setBatch(receiptDetail.getBatch());
qualityDetail.setMaterialCode(receiptDetail.getMaterialCode());
qualityDetail.setMaterialSpec(receiptDetail.getMaterialSpec());
qualityDetail.setMaterialName(receiptDetail.getMaterialName());
qualityDetail.setMaterialUnit(receiptDetail.getMaterialUnit());
qualityDetail.setQty(receiptDetail.getQty());
qualityDetail.setReferCode(receiptDetail.getReferCode());
qualityDetail.setPurchaseCode(receiptDetail.getPurchaseCode());
return qualityDetail;
}
}