ReceiptDetailServiceImpl.java 3.34 KB
package com.huaheng.pc.receipt.receiptDetail.service;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.huaheng.common.utils.security.ShiroUtils;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.pc.config.material.domain.Material;
import com.huaheng.pc.config.material.service.MaterialService;
import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader;
import com.huaheng.pc.receipt.receiptHeader.service.ReceiptHeaderService;
import org.aspectj.weaver.loadtime.Aj;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail;
import com.huaheng.pc.receipt.receiptDetail.mapper.ReceiptDetailMapper;
import com.huaheng.pc.receipt.receiptDetail.service.ReceiptDetailService;
import org.springframework.transaction.annotation.Transactional;

@Service
public class ReceiptDetailServiceImpl extends ServiceImpl<ReceiptDetailMapper, ReceiptDetail> implements ReceiptDetailService{

    @Resource
    private MaterialService materialService;
    @Resource
    private ReceiptHeaderService receiptHeaderService;

    /**
     * 新增入库明细
     * @param receiptDetail
     * @return
     */
    @Transactional
    public AjaxResult saveReceiptDetaial(ReceiptDetail receiptDetail){
        /* 判断入库头表状态*/
        LambdaQueryWrapper<ReceiptHeader> lambda = Wrappers.lambdaQuery();
        lambda.eq(ReceiptHeader::getId, receiptDetail.getReceiptId());
        ReceiptHeader receiptHeader = receiptHeaderService.getOne(lambda);
        if (receiptHeader == null ){
            return AjaxResult.error("找不到主单据");
        } else if (receiptHeader.getFirstStatus() > 100){
            return AjaxResult.error("单据进入订单池后,不允许新增明细");
        } else if (receiptHeader.getFirstStatus() == 20) {
            return AjaxResult.error("单据销毁");
        }
        receiptDetail.setReceiptCode(receiptHeader.getCode());

        /* 判断物料编码*/
        LambdaQueryWrapper<Material> lambdaQueryWrapper = Wrappers.lambdaQuery();
        lambdaQueryWrapper.eq(Material::getCode, receiptDetail.getMaterialCode());
        Material material = materialService.getOne(lambdaQueryWrapper);
        if (material == null) {
            return AjaxResult.error("物料不存在");
        }
        receiptDetail.setCompanyCode(material.getCompanyCode());
        receiptDetail.setMaterialName(material.getName());
        receiptDetail.setMaterialSpec(material.getSpec());
        receiptDetail.setMaterialUnit(material.getUnit());

        receiptDetail.setCreatedBy(ShiroUtils.getLoginName());
        receiptDetail.setLastUpdatedBy(ShiroUtils.getLoginName());
        receiptDetail.setWarehouseCode(ShiroUtils.getWarehouseCode());

        if (this.save(receiptDetail)) {
            receiptHeader.setTotalQty(receiptHeader.getTotalQty()+receiptDetail.getTotalQty());
            receiptHeader.setTotalLines(receiptHeader.getTotalLines()+1);
            receiptHeaderService.updateById(receiptHeader);
            return AjaxResult.success("新增单据明细成功");
        } else {
            return AjaxResult.error("新增单据明细失败!");
        }

    }
}