自动化立体仓库 - WMS系统
#
whycq
2024-07-29 3521070a2fda24b1d534e21018ce8017e01f595a
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -2,6 +2,7 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.common.R;
@@ -29,6 +30,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.net.CookieStore;
import java.util.*;
import java.util.stream.Collectors;
@@ -1006,11 +1008,15 @@
        // 根据源站点寻找库位
//        StartupDto dto = commonService.getLocNo(1, 1, param.getPalletizingNo(), null,null,null, locTypeDto);
        StartupDto dto = commonService.getLocNo(1, param.getPalletizingNo(), locTypeDto);
        StartupDto dto = commonService.getLocNo(1, param.getPalletizingNo(), locTypeDto,0);
        // 返回GWCS目标信息
        pushStaNoToGwcs(param.getPalletizingNo(),dto.getStaNo(),dto.getWorkNo());
        int iotype = 1;
        if (Cools.isEmpty(param.getMatList())) {
            iotype = 10;
        }
        int workNo = dto.getWorkNo();
        Date now = new Date();
        // 生成工作档
@@ -1018,7 +1024,7 @@
        wrkMast.setWrkNo(workNo);
        wrkMast.setIoTime(new Date());
        wrkMast.setWrkSts(1L); // 工作状态:设备上走
        wrkMast.setIoType(1); // 入出库状态:1.入库
        wrkMast.setIoType(iotype); // 入出库状态:1.入库
        wrkMast.setIoPri(13D); // 优先级
        wrkMast.setCrnNo(dto.getCrnNo());
        wrkMast.setSourceStaNo(param.getPalletizingNo());
@@ -1039,46 +1045,49 @@
            throw new CoolException("保存工作档失败");
        }
        List<GwmsGenerateInventoryDto.MatList> matList = param.getMatList();
        for (GwmsGenerateInventoryDto.MatList obj :matList) {
            WrkDetl wrkDetl = new WrkDetl();
            wrkDetl.setWrkNo(wrkMast.getWrkNo());
            obj.getRolls().forEach(roll -> {
                Mat mat = matService.selectByMatnr(roll.getSpecs());
                if (mat == null) {
                    mat = new Mat();
                    mat.setTagId(6L);
                    mat.setMatnr(roll.getSpecs());
                    mat.setMaktx(roll.getSpecs());
                    mat.setSpecs(roll.getSpecs());
                    mat.setStatus(1);
                    mat.setCreateTime(now);
                    mat.setUpdateTime(now);
                    if (!matService.insert(mat)) {
                        throw new CoolException("物料导入失败!");
                    }
                }
        if (!Cools.isEmpty(param.getMatList())) {
            List<GwmsGenerateInventoryDto.MatList> matList = param.getMatList();
            for (GwmsGenerateInventoryDto.MatList obj :matList) {
                WrkDetl wrkDetl = new WrkDetl();
                wrkDetl.setWrkNo(wrkMast.getWrkNo());
                wrkDetl.setMatnr(roll.getSpecs()); // 规格
                wrkDetl.setMaktx(roll.getSpecs()); //规格
                wrkDetl.setBatch(roll.getBoxNo()); // 箱号
                wrkDetl.setModel(roll.getRollNo()); // 卷号
                wrkDetl.setBrand(""); // 木箱类型
                wrkDetl.setZpallet(param.getBarcode()); // 托盘吗
                wrkDetl.setOrigin(obj.getBoxPos()); // 木箱在托盘位置
                wrkDetl.setWeight(roll.getNetWeight()); // 净重
                wrkDetl.setVolume(roll.getGrossWeight()); // 毛重
                wrkDetl.setPrice(roll.getLength());
                wrkDetl.setSpecs(String.valueOf(roll.getSplices()));
                wrkDetl.setAnfme(1.0);
                wrkDetl.setIoTime(now);
                wrkDetl.setAppeTime(now);
                wrkDetl.setModiTime(now);
                if (!wrkDetlService.insert(wrkDetl)) {
                    throw new CoolException("保存工作明细失败");
                }
            });
                obj.getRolls().forEach(roll -> {
//                Mat mat = matService.selectByMatnr(roll.getSpecs());
//                if (mat == null) {
//                    mat = new Mat();
//                    mat.setTagId(6L);
//                    mat.setMatnr(roll.getSpecs());
//                    mat.setMaktx(roll.getSpecs());
//                    mat.setSpecs(roll.getSpecs());
//                    mat.setStatus(1);
//                    mat.setCreateTime(now);
//                    mat.setUpdateTime(now);
//                    if (!matService.insert(mat)) {
//                        throw new CoolException("物料导入失败!");
//                    }
//                }
                    wrkDetl.setWrkNo(wrkMast.getWrkNo());
                    wrkDetl.setMatnr(roll.getSpecs()); // 规格
                    wrkDetl.setMaktx(roll.getSpecs()); //规格
                    wrkDetl.setBatch(roll.getBoxNo()); // 箱号
                    wrkDetl.setModel(roll.getRollNo()); // 卷号
                    wrkDetl.setBrand(obj.getPackageGroupNo()); // 包装组号
                    wrkDetl.setZpallet(param.getBarcode()); // 托盘吗
                    wrkDetl.setOrigin(obj.getBoxPos()); // 木箱在托盘位置
                    wrkDetl.setWeight(roll.getNetWeight()); // 净重
                    wrkDetl.setVolume(roll.getGrossWeight()); // 毛重
                    wrkDetl.setPrice(roll.getLength());
                    wrkDetl.setSpecs(String.valueOf(roll.getSplices()));
                    wrkDetl.setAnfme(1.0);
                    wrkDetl.setIoTime(now);
                    wrkDetl.setAppeTime(now);
                    wrkDetl.setModiTime(now);
                    if (!wrkDetlService.insert(wrkDetl)) {
                        throw new CoolException("保存工作明细失败");
                    }
                });
            }
        }
        // 更新目标库位状态
        LocMast locMast = locMastService.selectById(dto.getLocNo());
@@ -1352,14 +1361,23 @@
        if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
            throw new CoolException("保存工作主档历史档失败");
        }
        // 获取目标站
        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
                .eq("type_no", wrkMast.getIoType() - 50)
                .eq("stn_no", wrkMast.getStaNo()) // 作业站点 = 拣料出库的目标站
                .eq("crn_no", wrkMast.getCrnNo()); // 堆垛机号
        StaDesc staDesc = staDescService.selectOne(wrapper);
        if (Cools.isEmpty(staDesc)) {
            throw new CoolException("入库路径不存在");
        }
        // 堆垛机站点(目标站)
        Integer staNo = staDesc.getCrnStn();
        // 更新工作类型103->53
        wrkMast.setIoType(53);
        wrkMast.setWrkSts(52L); // 工作状态42->52.设备上走(拆垛完成)
        Integer staNo = wrkMast.getStaNo();
        // 目标站点源站点转换
        wrkMast.setStaNo(wrkMast.getSourceStaNo());
        wrkMast.setSourceStaNo(staNo);
        wrkMast.setSourceStaNo(wrkMast.getStaNo());
        wrkMast.setStaNo(staNo);
        // 目标库位=源库位
        wrkMast.setLocNo(wrkMast.getSourceLocNo());
        // 源库位清除
@@ -1417,7 +1435,7 @@
        return wrkDetls.size() > 1 ? 0 : 1; // 一条记录就是一卷
    }
    private void pushStaNoToGwcs(Integer palletizingNo, Integer staNo, Integer workNo) {
    public void pushStaNoToGwcs(Integer palletizingNo, Integer staNo, Integer workNo) {
        boolean success = false;
        // 获取请求头
        Map<String, Object> headers = getHeaders();
@@ -1456,10 +1474,10 @@
                // 保存接口日志
                apiLogService.save(
                        "入库",
                        MesConstant.URL + MesConstant.PAKIN_URL,
                        MesConstant.GWCS_IP_PORT + MesConstant.GWCS_FPKW_URL,
                        null,
                        "127.0.0.1",
                        jsonObject.toJSONString(),
                        body,
                        response,
                        success
                );