QualityUpdateReceiptService.java
7.27 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
package com.huaheng.api.quality.service;
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.BusinessException;
import com.huaheng.common.utils.StringUtils;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.framework.web.service.ConfigService;
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.SrmDetail;
import com.huaheng.pc.srm.service.SrmDetailService;
import org.apache.xpath.operations.Bool;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.List;
@Service
public class QualityUpdateReceiptService {
@Resource
private ReceiptHeaderService receiptHeaderService;
@Resource
private ReceiptDetailService receiptDetailService;
@Resource
private SrmDetailService srmDetailService;
/**
* 更改入库单状态,
* 1. 有不合格品则更改入库单详情数量,
* 2. srm的要更改srm表的不合格数量,创建验退单通知t100和srm
* @return
*/
@Transactional
public AjaxResult updateReceiptStatus(QualityModel qualityModel){
QualityHeader qualityHeader=qualityModel.getQualityHeader();
if(StringUtils.isNull(qualityHeader)){
return AjaxResult.error("参数错误");
}
Integer sourceId=qualityHeader.getSourceId();
String type=qualityHeader.getType();
if(StringUtils.isNull(sourceId)){
return AjaxResult.error("来源单号为空");
}
ReceiptHeader receiptHeader=receiptHeaderService.getById(sourceId);
if(receiptHeader==null){
return AjaxResult.error("来源单号:"+sourceId+"查找单据不存在");
}
if(type.equals(QuantityConstant.QUALITY_TYPE_MES)){
//直接更改入库单状态
receiptHeader.setFirstStatus(QuantityConstant.RECEIPT_HEADER_POOL);
receiptHeader.setLastStatus(QuantityConstant.RECEIPT_HEADER_POOL);
receiptHeaderService.updateById(receiptHeader);
return AjaxResult.success("操作成功!");
}
Boolean yantuiTag=false;
List<QualityDetail> qualityDetails=qualityModel.getQualityDetails();
for(QualityDetail qualityDetail:qualityDetails){
BigDecimal qty=qualityDetail.getQty();
BigDecimal qualityfiedQty=qualityDetail.getQualityfiedQty();
BigDecimal unqty=qualityDetail.getUnqualityfiedQty();
Integer detailId=qualityDetail.getDetailId();
if(detailId==null){
throw new BusinessException("参数错误");
}
ReceiptDetail receiptDetail=receiptDetailService.getById(detailId);
if(receiptDetail==null){
throw new BusinessException("来源单号详情:"+detailId+"查找单据不存在");
}
BigDecimal qty1=receiptDetail.getQty();
ReceiptDetail receiptDetail1=new ReceiptDetail();
receiptDetail1.setId(receiptDetail.getId());
receiptDetail1.setPreQty(qty1);
receiptDetail1.setUnqualityfiedQty(unqty);
receiptDetail1.setQcCheck("2");
if(unqty.compareTo(new BigDecimal(0))>0){
receiptDetail1.setQty(qty.subtract(unqty));
yantuiTag=true;
}
if(receiptDetail1.getQty().compareTo(new BigDecimal(0))==0){
//明细数量为0时,则修改明细状态为过账
receiptDetail1.setProcessStamp(QuantityConstant.RECEIPT_HEADER_POSTING.toString());
}
if(!receiptDetailService.updateById(receiptDetail1)){
throw new BusinessException("更新入库单详情数量失败");
}
if(type.equals(QuantityConstant.QUALITY_TYPE_SRM)){
//更改srm表质检结果
SrmDetail srmDetail=srmDetailService.getById(receiptDetail.getSrmDetailId());
if(srmDetail==null){
throw new BusinessException("来源srm单号详情:"+detailId+"查找单据不存在");
}
SrmDetail srmDetail1=new SrmDetail();
srmDetail1.setId(srmDetail.getId());
srmDetail1.setQualifiedQty(qualityfiedQty);
srmDetail1.setUnqualifiedQty(unqty);
srmDetail1.setCheckCode(2);
if(!srmDetailService.updateById(srmDetail1)){
throw new BusinessException("更新srm表质检结果失败");
}
}
}
//直接更改入库单状态
if(yantuiTag){
receiptHeader.setYantuiStatus(1);
}
receiptHeader.setFirstStatus(QuantityConstant.RECEIPT_HEADER_POOL);
receiptHeader.setLastStatus(QuantityConstant.RECEIPT_HEADER_POOL);
receiptHeaderService.updateById(receiptHeader);
//如果该入库单所有都不合格,则删除单据
AjaxResult ajaxResult=this.updateReceiptStatus(sourceId);
if(ajaxResult.hasErr()){
throw new BusinessException("更新入库单状态失败");
}
return AjaxResult.success("操作成功!");
}
@Transactional
public AjaxResult updateReceiptStatus(Integer receiptId){
List<ReceiptDetail> receiptDetails=receiptDetailService.findByReceiptId(receiptId);
Boolean checkflag=true;
for(ReceiptDetail receiptDetail:receiptDetails){
if(receiptDetail.getQty().compareTo(new BigDecimal(0))>0){
checkflag=false;
break;
}
}
if(checkflag){
//如果明细数量都为0,则回传完t100验退单删除单子,入库单状态改为回传完
ReceiptHeader receiptHeader=new ReceiptHeader();
receiptHeader.setId(receiptId);
receiptHeader.setFirstStatus(QuantityConstant.RECEIPT_HEADER_RETURN);
receiptHeader.setLastStatus(QuantityConstant.RECEIPT_HEADER_RETURN);
receiptHeader.setYantuiStatus(1);
if(!receiptHeaderService.updateById(receiptHeader)){
throw new BusinessException("更新入库单状态失败");
}
// AjaxResult ajaxResult=receiptHeaderService.deleteHeaderHistory(receiptId);
// if(ajaxResult.hasErr()){
// throw new BusinessException("删除入库单失败");
// }
}else{
ReceiptHeader receiptHeader=new ReceiptHeader();
receiptHeader.setId(receiptId);
receiptHeader.setFirstStatus(QuantityConstant.RECEIPT_HEADER_POOL);
receiptHeader.setLastStatus(QuantityConstant.RECEIPT_HEADER_POOL);
if(!receiptHeaderService.updateById(receiptHeader)){
throw new BusinessException("更新入库单状态失败");
}
}
return AjaxResult.success("操作成功!");
}
}