Blame view

src/main/java/com/phxl/modules/goods/service/invoiceback/SuInvoiceBackService.java 5.04 KB
Quilan committed
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+"回传发票明细结算数量不能为空");
				}
			}
		}
		
	}
	
}