QualityUpdateReceiptService.java
5.95 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
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 referCode=qualityHeader.getReferCode();
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("操作成功!");
}
List<QualityDetail> qualityDetails=qualityModel.getQualityDetails();
for(QualityDetail qualityDetail:qualityDetails){
BigDecimal qty=qualityDetail.getQty();
BigDecimal qualityfiedQty=qualityDetail.getQualityfiedQty();
BigDecimal unqty=qualityDetail.getUnqualifiedQty();
Integer detailId=qualityDetail.getDetailId();
ReceiptDetail receiptDetail=receiptDetailService.getById(detailId);
if(receiptDetail==null){
return AjaxResult.error("来源单号详情:"+detailId+"查找单据不存在");
}
ReceiptDetail receiptDetail1=new ReceiptDetail();
receiptDetail1.setId(receiptDetail.getId());
BigDecimal resultqty=qty;
if(unqty.compareTo(new BigDecimal(0))>0){
receiptDetail1.setQty(qty.subtract(unqty));
}
receiptDetail1.setUserDef7(receiptDetail.getQty().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){
return AjaxResult.error("来源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表质检结果失败");
}
}
}
//如果该入库单所有都不合格,则删除单据
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){
//删除入库单
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("操作成功!");
}
}