QualityUpdateReceiptService.java 5.95 KB
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("操作成功!");
    }

}