自动化立体仓库 - WMS系统
zyx
2024-03-01 aa310a47a05110a393c508921c92fa17ea95b491
src/main/java/com/zy/asrs/utils/PlaExcelListener.java
@@ -5,26 +5,34 @@
import com.core.common.Cools;
import com.core.common.SpringUtils;
import com.core.exception.CoolException;
import com.zy.asrs.entity.Mat;
import com.zy.asrs.entity.Node;
import com.zy.asrs.entity.Pla;
import com.zy.asrs.entity.param.GlobleParameter;
import com.zy.asrs.service.MatService;
import com.zy.asrs.service.NodeService;
import com.zy.asrs.service.PlaService;
import com.zy.common.entity.MatExcel;
import com.zy.common.entity.PlaExcel;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
 * Created by vincent on 2019-11-25
 */
@Slf4j
@Data
public class PlaExcelListener extends AnalysisEventListener<PlaExcel> {
    private static final String OWNER_HZ = "海正生物";
    private static final String OWNER_HNE = "海诺尔";
    private int total = 0;
    private int index = 1;
    private String recordLog = "";
    private Long userId;
    public PlaExcelListener() {
@@ -53,34 +61,96 @@
     */
    @Override
    public void invoke(PlaExcel excel, AnalysisContext ctx) {
        index ++;
        PlaService plaService = SpringUtils.getBean(PlaService.class);
        NodeService nodeService = SpringUtils.getBean(NodeService.class);
        MatService matService = SpringUtils.getBean(MatService.class);
        Date now = new Date();
        // 商品
        if(Cools.isEmpty(excel.getBatch()) || Cools.isEmpty(excel.getPackageNo())){
            return;
            throw new CoolException("第" +  index++ + "数据错误,包号或者批号为空");
        }
        Pla pla = plaService.selectByBatchAndPackageNo(excel.getBatch(),excel.getPackageNo());
        if (pla == null) {
            pla = excel;
            pla.setStep(2);
            pla = plaCreate(pla,excel,matService,nodeService);
            pla.setCreateTime(new Date());
            pla.setModifyTime(new Date());
            pla.setStatus(GlobleParameter.PLA_STATUS_00);
            pla.setStockFreeze(1);
            if (!plaService.insert(pla)) {
                throw new CoolException("保存商品信息失败,商品编码:" + excel.getMatnr());
            try {
                plaService.insert(pla);
            }catch (Exception e){
                log.error("保存商品信息失败,批号:" + excel.getBatch() + ", 包号:" + excel.getPackageNo() + "原因为:" + e.getMessage());
                throw new CoolException("保存商品信息失败,批号:" + excel.getBatch() + ", 包号:" + excel.getPackageNo() + "原因为:" + e.getMessage());
            }
//            if (!plaService.insert(pla)) {
//                throw new CoolException("保存商品信息失败,商品编码:" + excel.getMatnr());
//            }
            total++;
        }else if (pla.getStatus().equals(GlobleParameter.PLA_STATUS_00)){
        }else if(Cools.eq(pla.getStatus(),GlobleParameter.PLA_STATUS_0) || Cools.eq(pla.getStatus(),GlobleParameter.PLA_STATUS_1) || Cools.eq(pla.getStatus(),GlobleParameter.PLA_STATUS_00)){
            excel.setId(pla.getId());
            excel.setCreateTime(pla.getCreateTime());
            excel.setModifyTime(new Date());
            excel.setStep(2);
            excel.setStatus(GlobleParameter.PLA_STATUS_00);
            excel.setStatus(pla.getStatus());
            excel.setPakinTime(pla.getPakinTime());
            excel.setStash(pla.getStash());
            excel.setLocNo(pla.getLocNo());
            BeanUtils.copyProperties(excel,pla);
            plaService.updateById(pla);
            pla = plaCreate(pla,excel,matService,nodeService);
            try {
                plaService.updateById(pla);
                recordLog = recordLog + index + "," + pla.getBatch() + "," + pla.getPackageNo() + ";" ;
            }catch (Exception e){
                log.error("保存商品信息失败,批号:" + excel.getBatch() + ", 包号:" + excel.getPackageNo() + "原因为:" + e.getMessage());
                throw new CoolException("保存商品信息失败,批号:" + excel.getBatch() + ", 包号:" + excel.getPackageNo() + "原因为:" + e.getMessage());
            }
            total++;
        }
    }
    private String getType(String matnr){
        String type = matnr.substring(0,3);
        if(Cools.eq(type,"301")){
            return "纯树脂";
        }
        if (Cools.eq(type,"302")){
            return "改性树脂";
        }
        if (Cools.eq(type,"303")){
            return "副产物";
        }
        if (Cools.eq(type,"304")){
            return "委托加工产品";
        }
        if (Cools.eq(type,"305")){
            return "丙交酯";
        }
        return "";
    }
    private void setPla(Pla pla){
        String batch = pla.getBatch();
        String line = batch.substring(8,10);
        if(Cools.isEmpty(pla.getLine())){
            pla.setLine(line);
        }
        if(Cools.isEmpty(pla.getOwner()) && Cools.isEmpty(pla.getWorkshop())){
            if("纯树脂".equals(pla.getType())){
                if("01".equals(line) || "02".equals(line)){
                    pla.setOwner(OWNER_HZ);
                    pla.setWorkshop("一车间");
                }else {
                    pla.setOwner(OWNER_HNE);
                    pla.setWorkshop("三车间");
                }
            }else if ("改性树脂".equals(pla.getType())){
                if ("01".equals(line) || "02".equals(line) || "03".equals(line) || "04".equals(line)){
                    pla.setOwner(OWNER_HNE);
                    pla.setWorkshop("二车间");
                }
            }
        }
    }
@@ -96,4 +166,42 @@
    public int getTotal() {
        return total;
    }
    private Pla plaCreate(Pla pla, PlaExcel excel, MatService matService, NodeService nodeService){
        pla = excel;
        pla.setStep(2);
        pla.setModifyTime(new Date());
        pla.setStatus(GlobleParameter.PLA_STATUS_00);
        pla.setStockFreeze(1);
        pla.setWeightAnfme(pla.getWeight());
        Mat mat = matService.selectByMaktx(pla.getBrand());
        if(Cools.isEmpty(mat)){
            throw new CoolException("无法找到对应的牌号信息,牌号=" + pla.getBrand());
        }
        pla.setMatnr(mat.getMatnr());
        try {
            if(Cools.isEmpty(pla.getType())){
                pla.setType(getType(mat.getMatnr()));
            }
            //车间、产线、主体
            setPla(pla);
        }catch (Exception e){
            log.info(e.getMessage() + "Pla: " + pla.getBatch());
            throw new CoolException(e.getMessage() + ",批号:" + excel.getBatch() + ", 包号:" + excel.getPackageNo());
        }
        if(!Cools.isEmpty(pla.getLocNo())){
            Node node = nodeService.selectByUuid(pla.getLocNo());
            if(Cools.isEmpty(node)){
                throw new CoolException("未能找到相应的库位信息,库位编号=" +pla.getLocNo());
                //log.info("未能找到相应的库位信息,库位编号={}",pla.getLocNo());
            }
            pla.setStash(node.getParentName());
            pla.setLocNo(node.getUuid());
            pla.setStatus(GlobleParameter.PLA_STATUS_1);
            pla.setPakinTime(new Date());
        }
        return pla;
    }
}