自动化立体仓库 - WMS系统
LSH
2023-07-20 2c58889b757c50a2f74041e9790758b8e46e3a48
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -48,6 +48,14 @@
    private TagService tagService;
    @Autowired
    private TagMapper tagMapper;
    @Autowired
    private WrkMastService wrkMastService;
    @Autowired
    private BasDevpService basDevpService;
    @Autowired
    private WrkDetlService wrkDetlService;
    @Autowired
    private WaitPakinService waitPakinService;
    @Override
    @Transactional
@@ -543,31 +551,219 @@
        }
    }
    /*...........................徐工汉云..............以下.............上饶江铜...........................*/
    /*............................Created by Monkey D. Luffy on 2023.07.19.............................*/
    /*
     * 贴标机申请获取货物信息
     * */
    @Override
    @Transactional
    public LabellerMatParam labellerMat(LabellerMatParam param){
        if (Cools.isEmpty(param.getDevNo())){
            throw new CoolException("参数:站点号 devNo为空");
        }else if (Cools.isEmpty(param.getLabNo())){
            throw new CoolException("参数:贴标机号 labNo为空");
        }
        BasDevp basDevp = basDevpService.selectById(param.getDevNo());
        if (Cools.isEmpty(basDevp)){
            throw new CoolException("参数:站点号 devNo不存在");
        }else if (Cools.isEmpty(basDevp.getWrkNo()) || basDevp.getWrkNo()==0){
            throw new CoolException("站点:"+param.getDevNo()+" 不存在工作中任务");
        }
        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", basDevp.getWrkNo()));
        if (Cools.isEmpty(wrkMast)){
            throw new CoolException("站点:"+param.getDevNo()+" 工作中任务不存在,任务号:"+basDevp.getWrkNo());
        }else if (!wrkMast.getWrkSts().equals(52L)){
            throw new CoolException("站点:"+param.getDevNo()+" 工作中任务状态已变更,请勿重复申请,任务号:"+basDevp.getWrkNo()+",任务状态:"+wrkMast.getWrkSts$());
        }
        List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", basDevp.getWrkNo()));
        if (Cools.isEmpty(wrkDetls) || wrkDetls.size()==0){
            throw new CoolException("站点:"+param.getDevNo()+" 工作中任务不存在任务明细,任务号:"+basDevp.getWrkNo());
        }
        LabellerMatParam labellerMatParam = new LabellerMatParam();
        labellerMatParam.setDevNo(param.getDevNo());
        labellerMatParam.setLabNo(param.getLabNo());
        ArrayList<LabellerMatParam.CombMat> combMats = new ArrayList<>();
        String orderNo = "";
        for (WrkDetl wrkDetl:wrkDetls){
            LabellerMatParam.CombMat combMat = new LabellerMatParam.CombMat(wrkDetl);
            orderNo=wrkDetl.getOrderNo();
            combMat.setTemp1("1");
            combMats.add(combMat);
        }
        labellerMatParam.setCombMats(combMats);
        labellerMatParam.setLabellingTime(DateUtils.convert(new Date()));
        labellerMatParam.setWrkNo(basDevp.getWrkNo().toString());
        labellerMatParam.setLabTemplate("1");
        labellerMatParam.setOrderNo(orderNo);
        wrkMast.setWrkSts(53L);
        if (!wrkMastService.updateById(wrkMast)){
            throw new CoolException("异常,请重新申请");
        }
        return labellerMatParam;
    }
    /*
    * 贴标机贴标完成
    * */
    @Override
    @Transactional
    public void labellerComplete(LabellerCompleteParam param) {
        if (Cools.isEmpty(param.getDevNo())){
            throw new CoolException("参数:站点号 devNo为空");
        }else if (Cools.isEmpty(param.getLabNo())){
            throw new CoolException("参数:贴标机号 labNo为空");
        }else if (Cools.isEmpty(param.getLabResult())){
            throw new CoolException("参数:贴标结果 labResult为空");
        }else if (Cools.isEmpty(param.getWrkNo())){
            throw new CoolException("参数:贴标任务号 wrkNo为空");
        }
        BasDevp basDevp = basDevpService.selectById(param.getDevNo());
        if (Cools.isEmpty(basDevp)){
            throw new CoolException("参数:站点号 devNo="+param.getDevNo()+"不存在");
        }else if (Cools.isEmpty(basDevp.getWrkNo()) || basDevp.getWrkNo()==0 ){
            throw new CoolException("站点:"+param.getDevNo()+" 不存在工作中任务");
        }else if(!basDevp.getWrkNo().toString().equals(param.getWrkNo())){
            throw new CoolException("站点:"+param.getDevNo()+" 进行中任务号="+basDevp.getWrkNo()+" 与贴标结果返回任务号="+param.getWrkNo()+" 不一致");
        }
        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", basDevp.getWrkNo()));
        if (Cools.isEmpty(wrkMast)){
            throw new CoolException("站点:"+param.getDevNo()+" 工作中任务不存在,任务号:"+basDevp.getWrkNo());
        }else if (!wrkMast.getWrkSts().equals(53L)){
            throw new CoolException("站点:"+param.getDevNo()+" 工作中任务状态已变更,请勿重复申请,任务号:"+basDevp.getWrkNo()+",任务状态:"+wrkMast.getWrkSts$());
        }
        if (param.getLabResult().equals("OK")){
            wrkMast.setWrkSts(54L);
            if (!wrkMastService.updateById(wrkMast)){
                throw new CoolException("异常,请重新申请");
            }
        }else if (param.getLabResult().equals("NG")){
            wrkMast.setWrkSts(52L);
            if (!wrkMastService.updateById(wrkMast)){
                throw new CoolException("异常,请重新申请");
            }
        }else {
            throw new CoolException("参数:贴标结果:labResult"+param.getLabResult()+";请按规则发送:成功:OK 、失败:NG");
        }
    }
    @Override
    @Transactional
    public void labellerMat(LabellerMatParam param){
    }
    /*
     * 中控:码垛完成下发入库信息
     * */
    @Override
    @Transactional
    public void palletizingComplete(PalletizingCompleteParam param) {
        Long userId = 7777L;//中控
        //判断param参数
        if (Cools.isEmpty(param.getBarcode())){
            throw new CoolException("参数:托盘码 barcode为空");
        }else if (Cools.isEmpty(param.getPalletizingNo())){
            throw new CoolException("参数:码垛位编号 palletizingNo为空");
        }else if (Cools.isEmpty(param.getMatLists()) || param.getMatLists().size()==0){
            throw new CoolException("参数:物料明细 matLists为空");
        }
        //判断matLists参数
        for (PalletizingCompleteParam.MatList matList:param.getMatLists()){
            if (Cools.isEmpty(matList.getMatnr())){
                throw new CoolException("参数:物料编码 matnr为空");
            }else if (Cools.isEmpty(matList.getPosition())){
                throw new CoolException("物料编码:"+matList.getMatnr()+"、参数:码垛位置 position为空");
            }else if (Cools.isEmpty(matList.getBoxNo())){
                throw new CoolException("物料编码:"+matList.getMatnr()+"、参数:木箱编号 boxNo为空");
            }else if (Cools.isEmpty(matList.getAnfme()) || matList.getAnfme().equals(0)){
                throw new CoolException("物料编码:"+matList.getMatnr()+"、参数:木箱中铜箔数量 anfme为空");
            }else if (Cools.isEmpty(matList.getWeight()) || matList.getWeight().equals(0D)){
                throw new CoolException("物料编码:"+matList.getMatnr()+"、参数:重量 weight为空");
            }
        }
//        BasDevp basDevp = basDevpService.selectById(Integer.parseInt(param.getDevNo$()));
//        if (Cools.isEmpty(basDevp)){
//            throw new CoolException("参数:码垛位编号 palletizingNo="+param.getPalletizingNo()+"不存在");
//        }
//        if (Cools.isEmpty(basDevp.getAutoing()) || !basDevp.getAutoing().equals("Y")){
//            throw new CoolException("码垛位编号 palletizingNo="+param.getPalletizingNo()+" 所处站点不是自动状态");
//        }
//        if (Cools.isEmpty(basDevp.getLoading()) || !basDevp.getLoading().equals("Y")){
//            throw new CoolException("码垛位编号 palletizingNo="+param.getPalletizingNo()+" 所处站点不是有物状态");
//        }
//        if (Cools.isEmpty(basDevp.getCanining()) || !basDevp.getCanining().equals("Y")){
//            throw new CoolException("码垛位编号 palletizingNo="+param.getPalletizingNo()+" 所处站点不是能入状态");
//        }
        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type",201).eq("barcode", param.getBarcode()).eq("sta_no",param.getDevNo$()));
        if (Cools.isEmpty(wrkMast) || !wrkMast.getWrkSts().equals(42L)){
            throw new CoolException("查询托盘失败");
        }else {
            wrkMast.setWrkSts(wrkMast.getWrkSts()+1);
        }
        if (locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet", param.getBarcode()))!=0
            || wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet", param.getBarcode()))!=0
            || waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode()))!=0){
            throw new CoolException("托盘条码:"+param.getBarcode()+"已存在,请勿重复组托");
        }
        Date now = new Date();
        for (PalletizingCompleteParam.MatList matList:param.getMatLists()){
            Mat mat = matService.selectByMatnr(matList.getMatnr());
            if (Cools.isEmpty(mat)) {
                throw new CoolException(matList.getMatnr() + "商品档案不存在");
            }
            WaitPakin waitPakin = new WaitPakin();
            waitPakin.sync(mat);
            waitPakin.setBatch(matList.getBatch());     //批次
            waitPakin.setSpecs(matList.getSpecs());     //规格
            waitPakin.setSku(matList.getBoxNo());       //木箱编码
            waitPakin.setZpallet(param.getBarcode());   //托盘码
            waitPakin.setOrigin(matList.getPosition()); //木箱在托盘上的位置
            waitPakin.setIoStatus("N");     // 入出状态
            waitPakin.setAnfme(matList.getAnfme().doubleValue());  // 木箱中铜箔数量
            waitPakin.setStatus("Y");    // 状态
            waitPakin.setAppeUser(userId);
            waitPakin.setAppeTime(now);
            waitPakin.setModiUser(userId);
            waitPakin.setModiTime(now);
            if (!waitPakinService.insert(waitPakin)) {
                throw new CoolException("保存入库通知档失败");
            }
        }
        if (!wrkMastService.updateById(wrkMast)){
            throw new CoolException("异常,请重新申请");
        }
    }
    /*
     * 桁架上位软件:单次拆垛完成通知
     * */
    @Override
    @Transactional
    public void singleUnstackingComplete(SingleUnstackingCompleteParam param) {
    }
    /*
     * 桁架上位软件:单托拆垛完成通知
     * */
    @Override
    @Transactional
    public void singleMountUnstackingComplete(SingleMountUnstackingCompleteParam param) {
    }
    /*...........................上饶江铜..............以上.............徐工汉云...........................*/
}