AcsReceiptService.java 5.97 KB
package com.huaheng.api.acs.service;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.alibaba.fastjson.JSONException;
import com.huaheng.api.general.service.BasicDataApiService;
import com.huaheng.common.constant.QuantityConstant;
import com.huaheng.common.exception.BusinessException;
import com.huaheng.common.utils.DataUtils;
import com.huaheng.common.utils.DateUtils;
import com.huaheng.common.utils.StringUtils;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.mobile.receipt.ReceiptBill;
import com.huaheng.pc.config.material.domain.Material;
import com.huaheng.pc.config.material.service.MaterialService;
import com.huaheng.pc.sap.domain.SapReceiptData;
import com.huaheng.pc.sap.domain.SapReceiptDetailData;
import com.huaheng.pc.sap.service.SapReceiptDataService;
import com.huaheng.pc.sap.service.SapReceiptDetailDataService;

/**
 * @ClassName   AcsServiceImpl
 * @Description TODO
 * @Author      Administrator
 * @Date        2019/12/2615:38
 */
@Service
public class AcsReceiptService {

    private static final Logger logger = LoggerFactory.getLogger(AcsReceiptService.class);

    @Resource
    private SapReceiptDataService sapReceiptDataService;
    @Resource
    private SapReceiptDetailDataService sapReceiptDetailDataService;
    @Resource
    private MaterialService materialService;
    @Resource
    private BasicDataApiService basicDataApiService;

    /**
     * 商片仓拍照入库
     * @param  receiptBills
     * @return
     */
    public AjaxResult getReceiptContainerByB(List<ReceiptBill> receiptBills) {
        if (receiptBills == null || receiptBills.size() <= 0) {
            throw new JSONException("商片仓入库:没有信息");
        }
        String containerCode = receiptBills.get(0).getContainerCode();
//        int area = receiptBills.get(0).getArea();
        if (StringUtils.isEmpty(containerCode)) {
            throw new JSONException("商片仓入库:没有托盘信息");
        }
        receiptBills.get(0).setArea(2);
        return saveReceiptContainer(receiptBills);
    }

    @Transactional
    public AjaxResult saveReceiptContainer(List<ReceiptBill> receiptBills) {
        String containerCode = receiptBills.get(0).getContainerCode();
        int area = receiptBills.get(0).getArea();
        boolean tag = sapReceiptDataService.checkDataExist(containerCode, null);
        if (!tag) {
            throw new BusinessException("入库:请不要重复发送相同的数据");
        }

        SapReceiptData sapReceiptData = new SapReceiptData();
        if (area == 2) {
            sapReceiptData.setLgort("SF22");
            sapReceiptData.setLgnum("SP2");
            sapReceiptData.setFromPos("2B01");
            sapReceiptData.setPlType(0);
        } else if (area == 8) {
            sapReceiptData.setLgort("SF21");
            sapReceiptData.setLgnum("WJ2");
            sapReceiptData.setFromPos(receiptBills.get(0).getFromPort());
            sapReceiptData.setPlType(1);
        }

        sapReceiptData.setUniqueId(DataUtils.createUniqueId());
        sapReceiptData.setDrumId(containerCode);
        sapReceiptData.setMFlag("2");
        sapReceiptData.setDatum(DateUtils.getDate());
        sapReceiptData.setUzeit(DateUtils.getTimes());
        sapReceiptData.setInKind(1);

        if (!sapReceiptDataService.save(sapReceiptData)) {
            throw new BusinessException("入库:保存信息异常");
        }
        saveSapReceiptDetail(receiptBills, sapReceiptData);
        return AjaxResult.success();
    }

    public void saveSapReceiptDetail(List<ReceiptBill> receiptBills, SapReceiptData sapReceiptData) {
        List<SapReceiptDetailData> list = new ArrayList<>();
        for (ReceiptBill receiptBill : receiptBills) {
            if (StringUtils.isEmpty(receiptBill.getMaterialCode())) {
                throw new BusinessException("入库:请扫物料条码");
            }
            if (StringUtils.isEmpty(receiptBill.getRollNumber())) {
                throw new BusinessException("入库:请扫卷号条码");
            }
            if (sapReceiptData.getLgnum().equals("SP2")) {
                if (StringUtils.isNull(receiptBill.getContainerNumber())) {
                    throw new BusinessException("入库:没有位置号");
                }
            }
            if (sapReceiptData.getLgnum().equals("WJ2")) {
                if (StringUtils.isNull(receiptBill.getLevel())) {
                    throw new BusinessException("入库:没有等级");
                }
            }
            if (StringUtils.isNull(receiptBill.getQty())) {
                throw new BusinessException("入库:数量为空");
            }
            SapReceiptDetailData sapReceiptDetailData = new SapReceiptDetailData();
            sapReceiptDetailData.setDrumId(sapReceiptData.getDrumId());
            sapReceiptDetailData.setLgnum(sapReceiptData.getLgnum());
            sapReceiptDetailData.setLgort(sapReceiptData.getLgort());
            sapReceiptDetailData.setUniqueId(sapReceiptData.getUniqueId());
            sapReceiptDetailData.setVerme(receiptBill.getQty());
            sapReceiptDetailData.setCharg(receiptBill.getRollNumber());
            sapReceiptDetailData.setMatnr(receiptBill.getMaterialCode());
            Material material = materialService.getMaterialByCode(receiptBill.getMaterialCode(), QuantityConstant.WAREHOUSECODE);
            if (StringUtils.isNull(material)) {
                material = new Material();
                material.setCode(receiptBill.getMaterialCode());
                material.setName(receiptBill.getMaterialCode());
                basicDataApiService.material(material);
            }
            list.add(sapReceiptDetailData);
        }
        if (!sapReceiptDetailDataService.saveBatch(list)) {
            throw new BusinessException("入库:保存信息异常1");
        }
    }

}