ERPServiceImpl.java 6.17 KB
package com.huaheng.api.erp.service;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.huaheng.api.erp.domain.BoxInfo;
import com.huaheng.api.erp.domain.MaterialInfo;
import com.huaheng.common.constant.QuantityConstant;
import com.huaheng.common.exception.service.ServiceException;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.pc.config.container.domain.Container;
import com.huaheng.pc.config.container.service.ContainerService;
import com.huaheng.pc.config.containerType.domain.ContainerType;
import com.huaheng.pc.config.containerType.service.ContainerTypeService;
import com.huaheng.pc.receipt.receiptContainerDetail.domain.ReceiptContainerDetail;
import com.huaheng.pc.receipt.receiptContainerDetail.service.ReceiptContainerDetailService;
import com.huaheng.pc.receipt.receiptContainerHeader.domain.ReceiptContainerHeader;
import com.huaheng.pc.receipt.receiptContainerHeader.service.ReceiptContainerHeaderService;
import org.aspectj.weaver.loadtime.Aj;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

@Service
public class ERPServiceImpl implements ERPService {

    @Resource
    private ContainerService containerService;
    @Resource
    private ContainerTypeService containerTypeService;
    @Resource
    private ReceiptContainerHeaderService receiptContainerHeaderService;
    @Resource
    private ReceiptContainerDetailService receiptContainerDetailService;

    @Override
    @Transactional(rollbackFor = Exception.class)
    public AjaxResult innerReceipt(String containerCode, String position, String orderCode,
                                   String orderName, List<BoxInfo> boxInfoList,
                                   String receiptCode, String stack, int qc) {
        String warehouseCode = "CS0001";
        Container container = containerService.getContainerByCode(containerCode, warehouseCode);
        if(container == null) {
            return AjaxResult.error("根据托盘号:" + containerCode + "没有找到匹配的容器");
        }
        String locationCode = container.getLocationCode();
        if(StringUtils.isNotEmpty(locationCode)) {
            return AjaxResult.error("这个容器在库位上,不能用来入库, 托盘号:" + containerCode);
        }
        String containerTypeCode = container.getContainerType();
        if(containerTypeCode == null) {
            return AjaxResult.error("容器类型编码为空");
        }
        ContainerType containerType = containerTypeService.getContainerTypeByCode(containerTypeCode, warehouseCode);
        if(containerType == null) {
            return AjaxResult.error("容器类型为空");
        }
        if(boxInfoList == null || boxInfoList.size() == 0) {
            return AjaxResult.error("箱信息为空");
        }
        List<ReceiptContainerDetail> receiptContainerDetailList = new ArrayList<>();
        for(BoxInfo boxInfo : boxInfoList) {
            ReceiptContainerDetail receiptContainerDetail = new ReceiptContainerDetail();
            String boxCode = boxInfo.getBoxCode();
            String boxPosition = boxInfo.getBoxPosition();
            List<MaterialInfo> materialInfoList = boxInfo.getMaterialInfo();
            for(MaterialInfo materialInfo : materialInfoList) {
                String materialCode = materialInfo.getMaterialCode();
                String chipCode = materialInfo.getChipCode();
                String level = materialInfo.getLevel();
                String color = materialInfo.getColor();
                BigDecimal qty = materialInfo.getQty();
                String batch = materialInfo.getBatch();
                receiptContainerDetail.setMaterialCode(materialCode);
                receiptContainerDetail.setChipCode(chipCode);
                receiptContainerDetail.setLevel(level);
                receiptContainerDetail.setColor(color);
                receiptContainerDetail.setQty(qty);
                receiptContainerDetail.setBatch(batch);
            }
            receiptContainerDetail.setReceiptCode(receiptCode);
            receiptContainerDetail.setBoxCode(boxCode);
            receiptContainerDetail.setBoxPosition(boxPosition);
            receiptContainerDetailList.add(receiptContainerDetail);
        }
        LambdaQueryWrapper<ReceiptContainerHeader> receiptContainerHeaderLambdaQueryWrapper = Wrappers.lambdaQuery();
        receiptContainerHeaderLambdaQueryWrapper.eq(ReceiptContainerHeader::getContainerCode, containerCode)
                .lt(ReceiptContainerHeader::getStatus, QuantityConstant.RECEIPT_CONTAINER_FINISHED);
        ReceiptContainerHeader receiptContainerHeader =
                receiptContainerHeaderService.getOne(receiptContainerHeaderLambdaQueryWrapper);
        if(receiptContainerHeader != null) {
            return AjaxResult.error("容器已经有组盘信息,容器号:" + containerCode);
        }
        ReceiptContainerHeader receiptContainerHeader1 = new ReceiptContainerHeader();
        receiptContainerHeader1.setWarehouseCode(warehouseCode);
        receiptContainerHeader1.setCompanyCode("JY");
        receiptContainerHeader1.setContainerCode(containerCode);
        receiptContainerHeader1.setPosition(position);
        receiptContainerHeader1.setContainerType(containerTypeCode);
        receiptContainerHeader1.setTaskType(QuantityConstant.TASK_TYPE_WHOLERECEIPT);
        receiptContainerHeader1.setStatus(QuantityConstant.RECEIPT_CONTAINER_BUILD);
        receiptContainerHeader1.setCreatedBy("赋码系统");
        receiptContainerHeader1.setStack(stack);
        boolean result = receiptContainerHeaderService.save(receiptContainerHeader1);
        if(!result) {
            throw new ServiceException("保存入库组盘头失败");
        }
        result = receiptContainerDetailService.saveBatch(receiptContainerDetailList);
        if(!result) {
            throw new ServiceException("保存入库组盘详情失败");
        }

        return AjaxResult.success("保存入库组盘信息成功");
    }
}