自动化立体仓库 - WMS系统
whycq
2024-12-27 253bbfb87d8e214c9e64d9534a58ef22711e97ca
src/main/java/com/zy/common/web/WcsController.java
@@ -56,6 +56,10 @@
    private BasCrnpService basCrnpService;
    @Autowired
    private StaDescService staDescService;
    @Autowired
    private WrkMastLogService wrkMastLogService;
    @Autowired
    private WrkDetlLogService wrkDetlLogService;
    @PostMapping("/pakin/loc/v1")
    @ResponseBody
@@ -420,4 +424,72 @@
            throw new CoolException(tarLoc.getLocNo() + "库位不是在库状态");
        }
    }
    @PostMapping("/process/in/loc/v1")
    @ResponseBody
    @Transactional
    public synchronized R processInLoc(@RequestBody SearchLocParam param){
        log.info("灌装线收到WCS入库接口请求====>>入参:{}", param);
        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
                .eq("barcode", param.getBarcode())
                .eq("io_type", 105)
                .eq("wrk_sts", 14));
        if (Cools.isEmpty(wrkMast)) {
            log.info("查询不到该托盘码的罐装出库任务,托盘码位{" + param.getBarcode() + "}" );
            throw new CoolException("查询不到该托盘码的罐装出库任务,托盘码位{" + param.getBarcode() + "}" );
        }
        // 获取目标站
        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
                .eq("type_no", 55)
                .eq("stn_no", 2106)
                .eq("crn_no", wrkMast.getCrnNo());
        StaDesc staDesc = staDescService.selectOne(wrapper);
        if (Cools.isEmpty(staDesc)) {
            throw new CoolException("入库路径不存在!");
        }
        try {
            // 保存工作明细档历史档
            if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
                throw new CoolException("保存工作明细档历史档失败");
            }
            // 保存工作主档历史档
            if (!wrkDetlLogService.save(wrkMast.getWrkNo())) {
                throw new CoolException("保存工作主档历史档失败");
            }
            Date now = new Date();
            // 堆垛机站点(目标站)
            Integer staNo = staDesc.getCrnStn();
            // 更新工作档数据状态
            wrkMast.setIoTime(now);
            wrkMast.setIoType(55);
            wrkMast.setWrkSts(2L);
            wrkMast.setSourceStaNo(2106);
            wrkMast.setStaNo(staNo);
            wrkMast.setLocNo(wrkMast.getSourceLocNo());
            wrkMast.setSourceLocNo("");
            wrkMast.setModiTime(now);
            if (!wrkMastService.updateById(wrkMast)) {
                throw new CoolException("更新工作档数据状态失败");
            }
            // 更新明细档io_time (历史档关联使用)
            wrkDetlService.updateIoTime(wrkMast.getWrkNo(), now);
            // 修改库位状态 Q.拣料/盘点/并板再入库
            LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
            locMast.setLocSts("Q");
            locMast.setModiTime(new Date());
            if (!locMastService.updateById(locMast)) {
                throw new CoolException("修改库位状态失败");
            }
        } catch (Exception e) {
            throw new CoolException("入库失败!");
        }
        StartupDto dto = new StartupDto();
        dto.setWorkNo(wrkMast.getWrkNo());
        dto.setCrnNo(wrkMast.getCrnNo());
        dto.setSourceStaNo(wrkMast.getSourceStaNo());
        dto.setStaNo(wrkMast.getStaNo());
        dto.setLocNo(wrkMast.getLocNo());
        log.info("WCS入库接口返参:{},托盘码:{}", dto, param.getBarcode());
        return R.ok().add(dto);
    }
}