MedPlanService.java 5.39 KB
package com.phxl.modules.goods.service.medplan;

import java.math.BigDecimal;
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.medplan.MedPlanDao;
import com.phxl.modules.goods.dao.medplan.MedPlanDetailDao;
import com.phxl.modules.goods.entity.medplan.MedPlan;
import com.phxl.modules.goods.entity.medplan.MedPlanDetail;
import com.phxl.modules.goods.entity.medplan.MedPlanWithDetail;


@Service
public class MedPlanService{

	@Autowired
	private MedPlanDao planDao;
	
	@Autowired
	private MedPlanDetailDao planDetailDao;
	
	/**
	 * 日志对象
	 */
	protected Logger logger = LoggerFactory.getLogger(getClass());

	
	private void checkMedPlan(List<MedPlanWithDetail> plans) {
		if(plans == null || plans.size() == 0){
			logger.error("无相应补货计划单据信息");
			throw new BaseException("无相应补货计划单据信息");
		}
		for (MedPlanWithDetail medPlans : plans) {
			String medCode = medPlans.getTrmedPlan().getMedCode();
			String medName = medPlans.getTrmedPlan().getMedName();
			if (StringUtils.isEmpty(medCode) || StringUtils.isEmpty(medName)) {
				logger.error("补货计划医疗机构编码以及医疗机构名称不能为空");
				throw new BaseException("补货计划医疗机构编码以及医疗机构名称不能为空");
			}
			String supplierCode = medPlans.getTrmedPlan().getSupplierCode();
			String suppliername = medPlans.getTrmedPlan().getSuppliername();
			if (StringUtils.isEmpty(supplierCode) || StringUtils.isEmpty(suppliername)) {
				logger.error("补货计划平台供应商代码以及平台供应商名称不能为空");
				throw new BaseException("补货计划平台供应商代码以及平台供应商名称不能为空");
			}
			String billNo = medPlans.getTrmedPlan().getBillNo();
			if (StringUtils.isEmpty(billNo)) {
				logger.error("补货计划单据编号不能为空");
				throw new BaseException("补货计划单据编号不能为空");
			}
			String billType = medPlans.getTrmedPlan().getBillType();
			if (StringUtils.isEmpty(billType)) {
				logger.error("补货计划单据类型不能为空");
				throw new BaseException("补货计划单据类型不能为空");
			}
			List<MedPlanDetail> details = medPlans.getTrmedPlan().getTrmedplandetails();
			if(details == null || details.size() == 0){
				logger.error("补货计划单据编号:"+billNo+"订单明细不能为空");
				throw new BaseException("补货计划单据编号:"+billNo+"订单明细不能为空");
			}
			for (MedPlanDetail medPlanDetail : details) {
				String detailBillNo = medPlanDetail.getBillNo();
				if (StringUtils.isEmpty(detailBillNo)) {
					logger.error("补货计划单据编号:"+billNo+"订单明细单据编号不能为空");
					throw new BaseException("补货计划单据编号:"+billNo+"订单明细单据编号不能为空");
				}
				String goodsCode = medPlanDetail.getGoodsCode();
				String goodsName = medPlanDetail.getGoodsName();
				if (StringUtils.isEmpty(goodsCode) || StringUtils.isEmpty(goodsName)) {
					logger.error("补货计划单据编号:"+billNo+"订单明细商品编码以及商品名称不能为空");
					throw new BaseException("补货计划单据编号:"+billNo+"订单明细商品编码以及商品名称不能为空");
				}
				BigDecimal poQty = medPlanDetail.getPoQty();
				if (poQty == null) {
					logger.error("补货计划单据编号:"+billNo+"订单明细订货数不能为空");
					throw new BaseException("补货计划单据编号:"+billNo+"订单明细订货数不能为空");
				}
				BigDecimal taxpriceoQty = medPlanDetail.getTaxprice();
				if (taxpriceoQty == null) {
					logger.error("补货计划单据编号:"+billNo+"订单明细商品含税单价不能为空");
					throw new BaseException("补货计划单据编号:"+billNo+"订单明细商品含税单价不能为空");
				}
				BigDecimal taxsum = medPlanDetail.getTaxsum();
				if (taxsum == null) {
					logger.error("补货计划单据编号:"+billNo+"订单明细商品含税总金额不能为空");
					throw new BaseException("补货计划单据编号:"+billNo+"订单明细商品含税总金额不能为空");
				}
				String unit = medPlanDetail.getUnit();
				if (StringUtils.isEmpty(unit)) {
					logger.error("补货计划单据编号:"+billNo+"订单明细订货单位不能为空");
					throw new BaseException("补货计划单据编号:"+billNo+"订单明细订货单位不能为空");
				}
				
			}
		}
		
		
	}


	public boolean batchSave(List<MedPlanWithDetail> medPlans) {
		
		boolean result = true;
		try {
			checkMedPlan(medPlans);
		} catch (Exception e) {
			throw new BaseException(e.getMessage());
		}
		for (MedPlanWithDetail medPlanWithDetail : medPlans) {
			MedPlan medPlan = medPlanWithDetail.getTrmedPlan();
			List<MedPlanDetail> details = medPlan.getTrmedplandetails();
			String id = IdUtil.uuid();
			
			medPlanWithDetail.getTrmedPlan().setId(id);
			if(details != null && details.size() != 0){
				for (MedPlanDetail medPlanDetail : details) {
					medPlanDetail.setBillNo(medPlanWithDetail.getTrmedPlan().getBillNo());
					medPlanDetail.setId(id);
				}
				planDao.insert(medPlan);
				planDetailDao.batchInsert(details);
			}
		}
		return result;
	}
	
}