BillBackService.java 5.32 KB
package com.phxl.modules.goods.service.billback;

import java.util.List;

import com.phxl.modules.goods.entity.billback.BillBackWithDetail;
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.billback.BillBackDao;
import com.phxl.modules.goods.dao.billback.BillBackDetailDao;
import com.phxl.modules.goods.entity.billback.BillBack;
import com.phxl.modules.goods.entity.billback.BillBackDetail;


@Service
public class BillBackService{

	@Autowired
	private BillBackDao billBackDao;
	
	@Autowired
	private BillBackDetailDao billBackDetailDao;
	
	/**
	 * 日志对象
	 */
	protected Logger logger = LoggerFactory.getLogger(getClass());
	
	public boolean batchSave(List<BillBackWithDetail> billBacks) {
		boolean result = true;
		try {
			checkBillBack(billBacks);
		} catch (Exception e) {
			throw new BaseException(e.getMessage());
		}
		for (BillBackWithDetail backs : billBacks) {
			BillBack billBack = backs.getTRMedRPI();
			List<BillBackDetail> details = billBack.getTRMedRPIdetail();
			billBack.setId(IdUtil.uuid());
			if(details != null && details.size() != 0){
				for (BillBackDetail billBackDetail : details) {
					billBackDetail.setBillNo(billBack.getBillNo());
					billBackDetail.setId(IdUtil.uuid());
				}
				billBackDao.insert(billBack);
				billBackDetailDao.batchInsert(details);
			}
		}
		return result;
	}

	private void checkBillBack(List<BillBackWithDetail> billBacks) {
		if(billBacks == null || billBacks.size() == 0){
			logger.error("无相应医院退货单据信息");
			throw new BaseException("无相应医院退货单据信息");
		}
		for (BillBackWithDetail backs : billBacks) {
			String billNo = backs.getTRMedRPI().getBillNo();
			if (StringUtils.isEmpty(billNo)) {
				logger.error("医院退货单单据编号不能为空");
				throw new BaseException("医院退货单单据编号不能为空");
			}
			String supplierCode = backs.getTRMedRPI().getSupplierCode();
			String supplierbName = backs.getTRMedRPI().getSupplierbName();
			if (StringUtils.isEmpty(supplierCode) || StringUtils.isEmpty(supplierbName)) {
				logger.error("医院退货单单据编号:"+billNo+"供应商编码以及供应商名称不能为空");
				throw new BaseException("医院退货单单据编号:"+billNo+"供应商编码以及供应商名称不能为空");
			}
			String medCode = backs.getTRMedRPI().getMedCode();
			if (StringUtils.isEmpty(medCode)) {
				logger.error("医院退货单单据编号:"+billNo+"医疗机构代码不能为空");
				throw new BaseException("医院退货单单据编号:"+billNo+"医疗机构代码不能为空");
			}
			List<BillBackDetail> details = backs.getTRMedRPI().getTRMedRPIdetail();
			if(details == null || details.size() == 0){
				logger.error("医院退货单单据编号:"+billNo+"无相应退货单明细信息");
				throw new BaseException("医院退货单单据编号:"+billNo+"无相应退货单明细信息");
			}
			for (BillBackDetail billBackDetail : details) {
				String detailBillNo = billBackDetail.getBillNo();
				if (StringUtils.isEmpty(detailBillNo)) {
					logger.error("医院退货单单据编号:"+billNo+"退货单据明细单据编号不能为空");
					throw new BaseException("医院退货单单据编号:"+billNo+"退货单据明细单据编号不能为空");
				}
				int rowNo = billBackDetail.getRowNo();
				if (rowNo == 0) {
					logger.error("医院退货单单据编号:"+billNo+"退货单据明细行号不能为空");
					throw new BaseException("医院退货单单据编号:"+billNo+"退货单据明细行号不能为空");
				}
				String detailMedMVBillNo = billBackDetail.getMedMVBillNo();
				if (StringUtils.isEmpty(detailMedMVBillNo)) {
					logger.error("医院退货单单据编号:"+billNo+",行号:"+rowNo+"退货单据明细入库单据编号不能为空");
					throw new BaseException("医院退货单单据编号:"+billNo+",行号:"+rowNo+"退货单据明细入库单据编号不能为空");
				}
				Integer detailMedMVRowNo = billBackDetail.getMedMVRowNo();
				if (detailMedMVRowNo == null) {
					logger.error("医院退货单单据编号:"+billNo+",行号:"+rowNo+"退货单据明细入库单据明细号不能为空");
					throw new BaseException("医院退货单单据编号:"+billNo+",行号:"+rowNo+"退货单据明细入库单据明细不能为空");
				}
				String goodsCode = billBackDetail.getGoodsCode();
				String goodsName = billBackDetail.getGoodsName();
				if (StringUtils.isEmpty(goodsCode) || StringUtils.isEmpty(goodsName)) {
					logger.error("医院退货单单据编号:"+billNo+",行号:"+rowNo+"退货单据明细商品编码以及商品名称不能为空");
					throw new BaseException("医院退货单单据编号:"+billNo+",行号:"+rowNo+"退货单据明细商品编码以及商品名称不能为空");
				}
				String goodsSpec = billBackDetail.getGoodsSpec();
				if (StringUtils.isEmpty(goodsSpec)) {
					logger.error("医院退货单单据编号:"+billNo+",行号:"+rowNo+"退货单据明细商品规格不能为空");
					throw new BaseException("医院退货单单据编号:"+billNo+",行号:"+rowNo+"退货单据明细商品规格不能为空");
				}
			}
		}
		
		
	}

}