SAPUtils.java 6.83 KB
package com.huaheng.api.utils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import com.huaheng.common.utils.StringUtils;
import com.huaheng.pc.sap.domain.*;
import com.huaheng.pc.sap.service.ZarshService;
import com.huaheng.pc.sap.service.ZarsiService;

public class SAPUtils {

    @Resource
    private ZarshService zarshService;
    @Resource
    private ZarsiService zarsiService;

    public static boolean hasLocation(Zarsh zarsh){
        if(StringUtils.isEmpty(zarsh.getLocation())){
            return false;
        }
        return true;
    }

    /**
     * 通过SAP仓库编码 获取WMS库区编码
     * @return
     */
    public static String getZoneCode(Zarsh zarsh) {
        return getZoneCode(zarsh.getWerks(), zarsh.getLgort(), zarsh.getLgnum(), zarsh.getCrnIn(), "SAP录入参数错误");
    }

    /**
     * 通过SAP仓库编码 获取WMS库区编码
     * @param  werks SAP工厂
     * @param  lgort SAP库存地点
     * @param  lgnum SAP仓库号
     * @return
     */
    public static String getZoneCode(String werks, String lgort, String lgnum) {
        return getZoneCode(werks, lgort, lgnum, "SAP录入参数错误");
    }

    public static String getArea(Zarsh zarsh) {
        return getArea(zarsh.getWerks(), zarsh.getLgort(), zarsh.getLgnum(), "SAP录入参数错误");
    }

    public static String getArea(String werks, String lgort, String lgnum) {
        return getArea(werks, lgort, lgnum, "SAP录入参数错误");
    }

    public static String getArea(String werks, String lgort, String lgnum, String errorMsg) {
        String area = null;
        Map<String, String> map = new HashMap<>();
        map.put("BBC", "1");
        map.put("SP2", "2");
        map.put("TBC", "3");
        map.put("PPC", "4");
        map.put("PLC", "5");
        map.put("WJC", "6");
        map.put("BC2", "7");
        map.put("XBK", "4");
        if (StringUtils.isEmpty(werks) || StringUtils.isEmpty(lgort) || StringUtils.isEmpty(lgnum)) {
            throw new SecurityException(errorMsg);
        }
        if (!"SC00".equals(werks)) {
            throw new SecurityException(errorMsg);
        }
        switch (lgort) {
            case "SF28":
            case "SC01":
            case "SF22":
            case "SF21":
                area = map.get(lgnum);
                break;
            default:
                throw new SecurityException(errorMsg);
        }
        return area;
    }

    public static String getZoneCode(String werks, String lgort, String lgnum, String errorMsg) {
        return getZoneCode(werks, lgort, lgnum, null, errorMsg);
    }

    public static String getZoneCode(String werks, String lgort, String lgnum, String crnIn, String errorMsg) {
        String zoneCode = null;
        Map<String, String> map = new HashMap<>();
        map.put("BBC", "A");
        map.put("SP2", "B");
        map.put("TBC", "C");
        map.put("PPC", "D");
        map.put("PLC", "E");
        map.put("WJC", "F");
        map.put("BC2", "G");
        map.put("XBK", "DX");
        if (StringUtils.isEmpty(werks) || StringUtils.isEmpty(lgort) || StringUtils.isEmpty(lgnum)) {
            throw new SecurityException(errorMsg);
        }
        if (!"SC00".equals(werks)) {
            throw new SecurityException(errorMsg);
        }
        if (StringUtils.isNotEmpty(crnIn)) {
            lgnum = crnIn;
        }
        switch (lgort) {
            case "SF28":
            case "SC01":
            case "SF22":
            case "SF21":
                zoneCode = map.get(lgnum);
                break;
            default:
                throw new SecurityException(errorMsg);
        }
        return zoneCode;
    }

    public static String convertSAPByZoneCode(String zoneCode) {
        String lgort = null;
        switch (zoneCode) {
            case "A":
            case "C":
            case "AX":
            case "CX":
                lgort = "SF28";
                break;
            case "G":
            case "B":
                lgort = "SC01";
                break;
            case "D":
            case "E":
            case "DX":
                lgort = "SF22";
                break;
            case "F":
                lgort = "SF21";
                break;
        }
        return lgort;
    }

    public static String convertSAPByPort(String zoneCode) {
        String port = null;
        Map<String, String> map = new HashMap<>();
        map.put("A", "BBC");
        map.put("AX", "BBC");
        map.put("B", "SP2");
        map.put("C", "TBC");
        map.put("CX", "TBC");
        map.put("D", "PPC");
        map.put("DX", "PPC");
        map.put("E", "PLC");
        map.put("F", "WJC");
        map.put("G", "BC2");
        switch (zoneCode) {
            case "A":
            case "B":
            case "C":
            case "D":
            case "E":
            case "F":
            case "G":
            case "AX":
            case "CX":
            case "DX":
                port = map.get(zoneCode);
                break;
        }
        return port;
    }

    public static Piarsh createPiarshData(SapReceiptData receiptData, List<SapReceiptDetailData> receiptDetails){
        Piarsh piarsh = new Piarsh();
        //托盘号
        piarsh.setDrumid(receiptData.getDrumId());
        //托架类型1->片状托架,0->卷状托架,2->特殊托架
        piarsh.setPltype(receiptData.getPlType().toString());
        //立库号/倉別(AS)
        piarsh.setWh(receiptData.getLgnum());
        //入库起点
        piarsh.setFrompos(receiptData.getFromPos());
        //出库起点
        piarsh.setTopos(receiptData.getToPos());
        //入库动作    动作标志(1->紧急出库,2-入库,3->出库,B->紧急入库)
        piarsh.setMflag(receiptData.getMFlag());
        //指定入库区
//        piarsh.setCrnin();
        //执行预命令
//        piarsh.setRunflag1();
        //执行命令
//        piarsh.setRunflag2();
        //成品仓的方向标签 R/L R右 L左
//        piarsh.setRlflag();
        //配料仓的高度   0/1 0低 1高
//        piarsh.setHflag();
        List<Piarsi> piarsis = new ArrayList<>();
        for (SapReceiptDetailData receiptDetail : receiptDetails) {
            Piarsi piarsi = new Piarsi();
            piarsi.setMandt("600");
            piarsi.setWerks(receiptDetail.getWerks());
            piarsi.setLgort(receiptDetail.getLgort());
            piarsi.setLgnum(receiptDetail.getLgnum());
            piarsi.setDrum_id(receiptDetail.getDrumId());
            piarsi.setMatnr(receiptDetail.getMatnr());
            piarsi.setCharg(receiptDetail.getCharg());
            piarsi.setVerme(receiptDetail.getVerme().toString());
            piarsi.setPosnr(Integer.valueOf(receiptDetail.getErrmsg()));
            piarsis.add(piarsi);
        }
        piarsh.setPiarsi(piarsis);
        return piarsh;
    }
}