自动化立体仓库 - WMS系统
#
yxFwq
2025-04-01 74fd6eb7fb0322078f7946f51073f20e90231df1
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -4,6 +4,7 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.core.common.*;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
@@ -29,10 +30,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.*;
/**
 * 移动端服务核心类
@@ -42,7 +40,9 @@
@Service
public class MobileServiceImpl implements MobileService {
    public static final List<Integer> OVER_TORN_STA_NO_LIST = new ArrayList<Integer>() {{
        add(126);add(131);add(310);add(312);
    }};
    @Autowired
    private MatService matService;
@@ -88,6 +88,8 @@
    private LocDetlRullUpDetailService locDetlRullUpDetailService;
    @Autowired
    private TagService tagService;
    @Autowired
    private BasBoxTypeService basBoxTypeService;
    @Override
@@ -243,7 +245,7 @@
        }
        List<String> orderBoxNoList = new ArrayList<>();
        for (OrderDetl orderDetl: orderDetls){
            if (orderDetl.getWorkQty()==0){
            if (orderDetl.getWorkQty().equals(0.0)){
                orderBoxNoList.add(orderDetl.getBatch());
            }
        }
@@ -253,9 +255,9 @@
        List<String> matListBoxNoList = new ArrayList<>();
        for (TrussCombParam.MatList matList: param.getMatList()){
            if (!orderBoxNoList.contains(matList.getBatch())){
                throw new CoolException("单号:"+param.getOrderNo()+" 箱号:"+matList.getBatch()+"不属于此订单或者已经入库");
                throw new CoolException("单号:"+param.getOrderNo()+" 批次:"+matList.getBatch()+"不属于此订单或者已经入库");
            }else {
                matListBoxNoList.add(matList.getBoxNo());
                matListBoxNoList.add(matList.getBatch());
            }
        }
        List<OrderDetl> orderDetlList = new ArrayList<>();
@@ -297,6 +299,10 @@
            waitPakin.setBatch(orderDetl.getBatch());       //木箱编码
            waitPakin.setBrand(orderDetl.getBrand());     //木箱类型
            waitPakin.setZpallet(param.getBarcode());   //托盘码
            waitPakin.setWeight(orderDetl.getWeight());  //净重
            waitPakin.setVolume(orderDetl.getVolume());  //毛重
            waitPakin.setPrice(orderDetl.getPrice());   //长度
            waitPakin.setSpecs(String.valueOf(orderDetl.getSpecs()));   //接头  MES订单号
            waitPakin.setOrigin("1"); //木箱在托盘上的位置
            waitPakin.setIoStatus("Y");     // 入出状态
            waitPakin.setAnfme(orderDetl.getAnfme());  // 木箱中铜箔数量
@@ -391,11 +397,11 @@
        } else if (basDevp.getWrkNo()!=0){
            throw new CoolException("212站点有工作号");
        }
        int workNo = 20211;
        WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", 20211));
        WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 212));
        if (!Cools.isEmpty(wrkMast1)){
            throw new CoolException("任务档案已存在!请等待...");
        }
        int workNo = commonService.getWorkNo(6);
        Date now = new Date();
        // 生成工作档
        WrkMast wrkMast = new WrkMast();
@@ -424,6 +430,13 @@
    public void PalletizingCompleteTwoFloorParam(PalletizingCompleteTwoFloorParam param) {
        Long userId = 7777L;//中控
        param.setPalletizingNo(212);
        WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
                .eq("io_type", 1).eq("wrk_sts", 1).eq("source_sta_no",212));
        if (!Cools.isEmpty(wrkMast1)){
            throw new CoolException("存在一笔工作档案,请先入库!");
        }
        //判断param参数
        if (Cools.isEmpty(param.getBarcode())){
            throw new CoolException("参数:托盘码 barcode为空");
@@ -453,9 +466,9 @@
            }else if (Cools.isEmpty(matList.getWeight()) || matList.getWeight().equals(0D)){
                throw new CoolException("规格:"+matList.getMatnr()+"、参数:净重 weight为空");
            }else if (Cools.isEmpty(matList.getRoughWeight()) || matList.getRoughWeight().equals(0D)){
                throw new CoolException("规格:"+matList.getMatnr()+"、参数:毛重 roughWeight");
                throw new CoolException("规格:"+matList.getMatnr()+"、参数:毛重 roughWeight为空");
            }else if (Cools.isEmpty(matList.getRollExtent()) || matList.getRollExtent().equals(0D)){
                throw new CoolException("规格:"+matList.getMatnr()+"、参数:卷长度 rollExtent");
                throw new CoolException("规格:"+matList.getMatnr()+"、参数:卷长度 rollExtent为空");
            }
            if (matList.getPosition().equals("1")){//1、左  2、右
@@ -483,8 +496,13 @@
            }else {
                throw new CoolException("参数:木箱编号 boxNo:"+matList.getBatch()+",木箱编码存在重复");
            }
        }
            if (locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("batch", matList.getBatch()))!=0
                    || wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("batch", matList.getBatch()))!=0
                    || waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("batch", matList.getBatch()))!=0){
                throw new CoolException("木箱编号:"+matList.getBatch()+"已存在,请勿重复入库");
            }
        }
        if (locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet", param.getBarcode()))!=0
                || wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet", param.getBarcode()))!=0
@@ -515,14 +533,15 @@
            matnr = matList.getMatnr();
            WaitPakin waitPakin = new WaitPakin();
            waitPakin.sync(mat);
            waitPakin.setBatch(matList.getBatch());       //木箱编码  //批次  唯一值  箱号
            waitPakin.setBatch(matList.getBatch());       //木箱编码  //批次  唯一值  批次
            waitPakin.setModel(matList.getModel());       //卷号  唯一值
            waitPakin.setBrand(param.getBoxType());     //木箱类型
            waitPakin.setZpallet(param.getBarcode());   //托盘码
            waitPakin.setOrigin(matList.getPosition()); //木箱在托盘上的位置
            waitPakin.setWeight(matList.getWeight());  //净重
//            waitPakin.setRoughWeight(matList.getRoughWeight());  //毛重
//            waitPakin.setRollExtent(matList.getRollExtent());   //长度
            waitPakin.setVolume(matList.getRoughWeight());  //毛重
            waitPakin.setPrice(matList.getRollExtent());   //长度
            waitPakin.setSpecs(String.valueOf(matList.getJoint()));   //接头  MES订单号
            waitPakin.setIoStatus("Y");     // 入出状态
            waitPakin.setAnfme(matList.getAnfme());  // 数量
            waitPakin.setStatus("Y");    // 状态
@@ -604,7 +623,7 @@
        // 判断是否有相同条码的数据
        if (waitPakinService.selectCount(new EntityWrapper<WaitPakin>().
                eq("zpallet", param.getBarcode()).eq("io_status", "N")) > 0) {
            throw new CoolException(param.getBarcode() + "数据正在进行入库");
            throw new CoolException(param.getBarcode() + "请勿重复组托!");
        }
        if(param.getBarcode().length()!=8){
@@ -615,10 +634,16 @@
        }
        int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",param.getBarcode()));
        if (countLoc > 0 ) {
            throw new CoolException("《库存》条码数据已存在===>>" + param.getBarcode());
        }
        int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getBarcode()));
        if (countWrk > 0){
            throw new CoolException("《工作档》条码数据已存在===>>" + param.getBarcode());
        }
        int countwait = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet",param.getBarcode()));
        if (countLoc > 0 || countWrk > 0 || countwait > 0) {
            throw new CoolException("组托档/工作档/库存条码数据已存在===>>" + param.getBarcode());
        if (countwait > 0){
            throw new CoolException("《组托档》条码数据已存在===>>" + param.getBarcode());
        }
        Date now = new Date();
@@ -647,10 +672,12 @@
                }
                WaitPakin waitPakin = new WaitPakin();
                waitPakin.sync(mat);
                waitPakin.setBatch(detlDto.getBatch());
                waitPakin.setBatch(DateUtils.convert(new Date(), DateUtils.yyyyMMdd));
                waitPakin.setZpallet(param.getBarcode());   // 托盘码
                waitPakin.setIoStatus("N");     // 入出状态
                waitPakin.setAnfme(detlDto.getAnfme());  // 数量
//                waitPakin.setAnfme(detlDto.getAnfme());  // 数量
                waitPakin.setAnfme(1.0);  // 数量
                waitPakin.setWeight(mat.getWeight());  // 重量
                waitPakin.setStatus("Y");    // 状态
                waitPakin.setAppeUser(userId);
                waitPakin.setAppeTime(now);
@@ -700,8 +727,10 @@
                waitPakin.setBatch(detlDto.getBatch());     // 序列码
                waitPakin.setZpallet(param.getBarcode());   // 托盘码
                waitPakin.setIoStatus("N");     // 入出状态
                waitPakin.setAnfme(detlDto.getAnfme());  // 数量
//                waitPakin.setAnfme(detlDto.getAnfme());  // 数量
                waitPakin.setAnfme(1.0);  // 数量
                waitPakin.setStatus("Y");    // 状态
                waitPakin.setWeight(mat.getWeight());  // 重量
                waitPakin.setAppeUser(userId);
                waitPakin.setAppeTime(now);
                waitPakin.setModiUser(userId);
@@ -1109,8 +1138,8 @@
        wrkMast.setLinkMis("N");
        wrkMast.setAppeUser(userId); // 操作人员数据
        wrkMast.setSheetNo("0");  //徐工汉云拆垛标记:0: 初始  1: 未拆  2:已拆 3:已处理可下一步(转历史档)
        if (wrkMast.getStaNo()<118 || wrkMast.getStaNo()>121){
            wrkMast.setSheetNo("3");
        if (!OVER_TORN_STA_NO_LIST.contains(staDesc.getStnNo())){
            wrkMast.setSheetNo("2");
        }
        wrkMast.setAppeTime(now);
        wrkMast.setModiUser(userId);
@@ -1147,4 +1176,19 @@
            throw new CoolException(locDetl.getLocNo() + "库位不是在库状态");
        }
    }
    @Override
    @Transactional
    public List<Map<String, Object>> boxTypeComb() {
        EntityWrapper<BasBoxType> wrapper = new EntityWrapper<>();
        List<Map<String, Object>> result = new ArrayList<>();
        List<BasBoxType> basBoxTypes = basBoxTypeService.selectList(wrapper.orderBy("id",true));
        for (BasBoxType basBoxType : basBoxTypes){
            Map<String, Object> map = new HashMap<>();
            map.put("boxType", basBoxType.getBoxType());
            map.put("boxSpecs", basBoxType.getBoxSpecs());
            result.add(map);
        }
        return result;
    }
}