自动化立体仓库 - WMS系统
#1
lsh
1 天以前 6c00757e63a69b8d527f1b978859b17c8db136f6
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.*;
/**
 * 移动端服务核心类
@@ -88,6 +86,8 @@
    private LocDetlRullUpDetailService locDetlRullUpDetailService;
    @Autowired
    private TagService tagService;
    @Autowired
    private BasBoxTypeService basBoxTypeService;
    @Override
@@ -243,7 +243,7 @@
        }
        List<String> orderBoxNoList = new ArrayList<>();
        for (OrderDetl orderDetl: orderDetls){
            if (orderDetl.getWorkQty()==0){
            if (orderDetl.getWorkQty().equals(0.0)){
                orderBoxNoList.add(orderDetl.getBatch());
            }
        }
@@ -255,7 +255,7 @@
            if (!orderBoxNoList.contains(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 +297,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()));   //接头
            waitPakin.setOrigin("1"); //木箱在托盘上的位置
            waitPakin.setIoStatus("Y");     // 入出状态
            waitPakin.setAnfme(orderDetl.getAnfme());  // 木箱中铜箔数量
@@ -391,11 +395,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 +428,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 +464,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 +494,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
@@ -521,8 +537,9 @@
            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()));   //接头
            waitPakin.setIoStatus("Y");     // 入出状态
            waitPakin.setAnfme(matList.getAnfme());  // 数量
            waitPakin.setStatus("Y");    // 状态
@@ -540,6 +557,192 @@
        locTypeDto.setLocType1((short)1);
        StartupDto dto = commonService.getLocNo(1, 1, 212, matnr,null,null, locTypeDto);
        int workNo = dto.getWorkNo();
        // 生成工作档
        WrkMast wrkMast = new WrkMast();
        wrkMast.setWrkNo(workNo);
        wrkMast.setIoTime(new Date());
        wrkMast.setWrkSts(1L); // 工作状态:生成入库ID
        wrkMast.setIoType(1); // 入出库状态:1.入库
        wrkMast.setIoPri(13D); // 优先级
        wrkMast.setCrnNo(dto.getCrnNo());
        wrkMast.setSourceStaNo(dto.getSourceStaNo());
        wrkMast.setStaNo(dto.getStaNo());
        wrkMast.setLocNo(dto.getLocNo());
        wrkMast.setBarcode(param.getBarcode()); // 托盘码
        wrkMast.setFullPlt("Y"); // 满板:Y
        wrkMast.setPicking("N"); // 拣料
        wrkMast.setExitMk("N"); // 退出
        wrkMast.setEmptyMk("N"); // 空板
        wrkMast.setLinkMis("Y");
        wrkMast.setCtnType(0); // 容器类型
        // 操作人员数据
        wrkMast.setAppeTime(now);
        wrkMast.setModiTime(now);
        boolean res = wrkMastService.insert(wrkMast);
        if (!res) {
            throw new CoolException("保存工作档失败");
        }
        // 生成工作档明细
        waitPakins.forEach(waitPakin -> {
            WrkDetl wrkDetl = new WrkDetl();
            wrkDetl.sync(waitPakin);
            wrkDetl.setWrkNo(wrkMast.getWrkNo());
            wrkDetl.setIoTime(wrkMast.getIoTime());
            wrkDetl.setAppeTime(now);
            wrkDetl.setModiTime(now);
            wrkDetl.setZpallet(param.getBarcode());
            if (!wrkDetlService.insert(wrkDetl)) {
                throw new CoolException("保存工作明细失败");
            }
        });
        // 更新目标库位状态
        LocMast locMast = locMastService.selectById(dto.getLocNo());
        if (locMast.getLocSts().equals("O")){
            locMast.setLocSts("S"); // S.入库预约
            locMast.setModiTime(now);
            if (!locMastService.updateById(locMast)){
                throw new CoolException("改变库位状态失败");
            }
        } else {
            throw new CoolException(dto.getLocNo()+"目标库位已被占用");
        }
    }
    @Override
    @Transactional
    public void PalletizingCompleteTwoFloorParam2(PalletizingCompleteTwoFloorParam param) {
        Long userId = 7777L;//中控
        param.setPalletizingNo(1901);
        WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
                .eq("io_type", 1).eq("wrk_sts", 1).eq("source_sta_no",1901));
        if (!Cools.isEmpty(wrkMast1)){
            throw new CoolException("存在一笔工作档案,请先入库!");
        }
        //判断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.getBoxType())){
            throw new CoolException("参数:木箱类型 boxType为空");
        }else if (Cools.isEmpty(param.getMatList()) || param.getMatList().size()==0){
            throw new CoolException("参数:物料明细 matLists为空");
        }
        String matnrOne = "";//木箱相同位置 规格 matnr校验  1、左
        String matnrTwo = "";//木箱相同位置 规格 matnr校验  2、右
        ArrayList<String> boxNos = new ArrayList<>();   //木箱唯一编码查重  (batch)
        //判断matLists参数
        for (PalletizingCompleteTwoFloorParam.MatList matList:param.getMatList()){
            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.getBatch())){
                throw new CoolException("规格:"+matList.getMatnr()+"、参数:木箱编号 batch为空");
            }else if (Cools.isEmpty(matList.getModel())){
                throw new CoolException("规格:"+matList.getMatnr()+"、参数:卷号 model为空");
            }else if (Cools.isEmpty(matList.getBatch())){
                throw new CoolException("规格:"+matList.getMatnr()+"、参数:木箱编号 boxNo为空");
            }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为空");
            }else if (Cools.isEmpty(matList.getRollExtent()) || matList.getRollExtent().equals(0D)){
                throw new CoolException("规格:"+matList.getMatnr()+"、参数:卷长度 rollExtent为空");
            }
            if (matList.getPosition().equals("1")){//1、左  2、右
                if (!matnrOne.equals("")){
                    if (!matnrOne.equals(matList.getMatnr())){
                        throw new CoolException("木箱位置:"+matList.getPosition()+"存在不同规格卷信息");
                    }
                }else {
                    matnrOne=matList.getMatnr();
                }
            }else if (matList.getPosition().equals("2")){
                if (!matnrTwo.equals("")){
                    if (!matnrTwo.equals(matList.getMatnr())){
                        throw new CoolException("木箱位置:"+matList.getPosition()+"存在不同规格卷信息");
                    }
                }else {
                    matnrTwo=matList.getMatnr();
                }
            }else {
                throw new CoolException("参数:木箱编号 boxNo:"+matList.getBatch()+",木箱位置错误:"+matList.getPosition());
            }
            if (!boxNos.contains(matList.getBatch())){
                boxNos.add(matList.getBatch());
            }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
                || waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode()))!=0){
            throw new CoolException("托盘条码:"+param.getBarcode()+"已存在,请勿重复组托");
        }
        String matnr = null;
        List<WaitPakin> waitPakins = new ArrayList<>();
        Date now = new Date();
        for (PalletizingCompleteTwoFloorParam.MatList matList:param.getMatList()){
            Mat mat = matService.selectByMatnr(matList.getMatnr());
            if (Cools.isEmpty(mat)) {
                mat = new Mat();
                mat.setMatnr(matList.getMatnr());
                mat.setMaktx(matList.getMatnr());
                mat.setTagId(tagService.getTop().getId());
                mat.setBrand(param.getBoxType());
                mat.setCreateBy(userId);
                mat.setCreateTime(now);
                mat.setUpdateBy(userId);
                mat.setUpdateTime(now);
                mat.setStatus(1);
                if (!matService.insert(mat)) {
                    throw new CoolException("规格添加失败,请联系管理员");
                }
            }
            matnr = matList.getMatnr();
            WaitPakin waitPakin = new WaitPakin();
            waitPakin.sync(mat);
            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.setVolume(matList.getRoughWeight());  //毛重
            waitPakin.setPrice(matList.getRollExtent());   //长度
            waitPakin.setSpecs(String.valueOf(matList.getJoint()));   //接头
            waitPakin.setIoStatus("Y");     // 入出状态
            waitPakin.setAnfme(matList.getAnfme());  // 数量
            waitPakin.setStatus("Y");    // 状态
            waitPakin.setAppeUser(userId);
            waitPakin.setAppeTime(now);
            waitPakin.setModiUser(userId);
            waitPakin.setModiTime(now);
            if (!waitPakinService.insert(waitPakin)) {
                throw new CoolException("保存入库通知档失败");
            }
            waitPakins.add(waitPakin);
        }
        LocTypeDto locTypeDto = new LocTypeDto();
        locTypeDto.setLocType1((short)1);
        StartupDto dto = commonService.getLocNo(1, 1, 1901, matnr,null,null, locTypeDto);
        int workNo = dto.getWorkNo();
        // 生成工作档
@@ -1147,4 +1350,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;
    }
}