cefaf074808876a08d91decdf12a5c74a9dfa5f9.svn-base
5.04 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
package com.phxl.modules.goods.service.invoiceback;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.phxl.common.utils.BaseException;
import com.phxl.common.utils.IdUtil;
import com.phxl.modules.goods.dao.invoiceback.SuInvoiceBackDao;
import com.phxl.modules.goods.dao.invoiceback.SuInvoiceBackDetailDao;
import com.phxl.modules.goods.entity.invoiceback.SuInvoiceBack;
import com.phxl.modules.goods.entity.invoiceback.SuInvoiceBackDetail;
import com.phxl.modules.goods.entity.invoiceback.SuInvoiceBackWithDetail;
@Service
public class SuInvoiceBackService {
@Autowired
private SuInvoiceBackDao invoiceBackDao;
@Autowired
private SuInvoiceBackDetailDao invoiceBackDetailDao;
/**
* 日志对象
*/
protected Logger logger = LoggerFactory.getLogger(getClass());
public boolean batchSaveOrUpdate(List<SuInvoiceBackWithDetail> suInvoiceBackWithDetailList) {
boolean result = true;
try {
checkSuInvoiceBack(suInvoiceBackWithDetailList);
} catch (Exception e) {
throw new BaseException(e.getMessage());
}
for (SuInvoiceBackWithDetail suInvoiceBackWithDetail : suInvoiceBackWithDetailList) {
SuInvoiceBack suInvoiceBack = suInvoiceBackWithDetail.getBill();
List<SuInvoiceBackDetail> backDetails = suInvoiceBack.getBilldetaillist();
String id = IdUtil.uuid();
suInvoiceBack.setId(id);
if(backDetails != null &&backDetails.size() != 0){
for (SuInvoiceBackDetail suInvoiceBackDetail : backDetails) {
suInvoiceBackDetail.setSettleBillNo(suInvoiceBack.getSettleBillNo());
suInvoiceBackDetail.setId(id);
}
invoiceBackDao.insert(suInvoiceBack);
invoiceBackDetailDao.batchInsert(backDetails);
}
}
return result;
}
private void checkSuInvoiceBack(List<SuInvoiceBackWithDetail> suInvoiceBackWithDetailList) {
if(suInvoiceBackWithDetailList == null || suInvoiceBackWithDetailList.size() == 0){
logger.error("无相应供应商回传发票信息");
throw new BaseException("无相应供应商回传发票信息");
}
for (SuInvoiceBackWithDetail suInvoiceBackWithDetail : suInvoiceBackWithDetailList) {
SuInvoiceBack suInvoiceBack = suInvoiceBackWithDetail.getBill();
String settleBillNo = suInvoiceBack.getSettleBillNo();
if (StringUtils.isEmpty(settleBillNo)) {
logger.error("供应商回传发票结算单号不能为空");
throw new BaseException("供应商回传发票结算单号不能为空");
}
Date settleDate = suInvoiceBack.getSettleDate();
if (settleDate == null) {
logger.error("供应商回传发票结算单号:"+settleBillNo+"结算单日期不能为空");
throw new BaseException("供应商回传发票结算单号:"+settleBillNo+"结算单日期不能为空");
}
List<SuInvoiceBackDetail> backDetails = suInvoiceBack.getBilldetaillist();
if(backDetails == null || backDetails.size() == 0){
logger.error("供应商回传发票结算单号:"+settleBillNo+"回传发票明细不能为空");
throw new BaseException("供应商回传发票结算单号:"+settleBillNo+"回传发票明细不能为空");
}
for (SuInvoiceBackDetail suInvoiceBackDetail : backDetails) {
String detailSettleBillNo = suInvoiceBackDetail.getSettleBillNo();
if (StringUtils.isEmpty(detailSettleBillNo)) {
logger.error("供应商回传发票结算单号:"+settleBillNo+"回传发票明细结算单号不能为空");
throw new BaseException("供应商回传发票结算单号:"+settleBillNo+"回传发票明细结算单号不能为空");
}
int rowNo = suInvoiceBackDetail.getRowNo();
if (rowNo == 0) {
logger.error("供应商回传发票结算单号:"+settleBillNo+"回传发票明细行号不能为空");
throw new BaseException("供应商回传发票结算单号:"+settleBillNo+"回传发票明细行号不能为空");
}
String goodsCode = suInvoiceBackDetail.getGoodsCode();
if (StringUtils.isEmpty(goodsCode)) {
logger.error("供应商回传发票结算单号:"+settleBillNo+",行号:"+rowNo+"回传发票明细商品编码不能为空");
throw new BaseException("供应商回传发票结算单号:"+settleBillNo+"回传发票明细商品编码不能为空");
}
String unit = suInvoiceBackDetail.getUnit();
if (StringUtils.isEmpty(unit)) {
logger.error("供应商回传发票结算单号:"+settleBillNo+",行号:"+rowNo+"回传发票明细包装单位不能为空");
throw new BaseException("供应商回传发票结算单号:"+settleBillNo+"回传发票明细包装单位不能为空");
}
BigDecimal settleQty = suInvoiceBackDetail.getSettleQty();
if (settleQty == null) {
logger.error("供应商回传发票结算单号:"+settleBillNo+",行号:"+rowNo+"回传发票明细结算数量不能为空");
throw new BaseException("供应商回传发票结算单号:"+settleBillNo+"回传发票明细结算数量不能为空");
}
}
}
}
}