自动化立体仓库 - WMS系统
#
zjj
6 天以前 4b6e6d95ae6fbbccc4351db366b99fa05288877f
src/main/java/com/zy/common/web/WcsController.java
@@ -8,6 +8,7 @@
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.EmptyPlateOutParam;
import com.zy.asrs.service.*;
import com.zy.asrs.service.impl.MatServiceImpl;
import com.zy.asrs.utils.Utils;
import com.zy.common.CodeRes;
import com.zy.common.model.LocDto;
@@ -56,6 +57,12 @@
    private BasCrnpService basCrnpService;
    @Autowired
    private StaDescService staDescService;
    @Autowired
    private WrkMastLogService wrkMastLogService;
    @Autowired
    private WrkDetlLogService wrkDetlLogService;
    @Autowired
    private MatServiceImpl matService;
    @PostMapping("/pakin/loc/v1")
    @ResponseBody
@@ -349,11 +356,11 @@
    @PostMapping("/process/loc/v1")
    @ResponseBody
    @Transactional
    public synchronized void processLoc() {
    public synchronized R processLoc() {
        log.info("收到WCS罐装出库接口请求");
        Date now = new Date();
        // 查询库存状态位F 且 库存明细包含该物料的库位
        LocMast tarLoc = locMastService.getLocFByMatnr("BC20009TY13701530");
        LocMast tarLoc = locMastService.getLocFByMatnr("BZ10100ZZ00000010");
        if (Cools.isEmpty(tarLoc)) {
            throw new CoolException("没有可出库的库位");
        }
@@ -419,5 +426,88 @@
        } else {
            throw new CoolException(tarLoc.getLocNo() + "库位不是在库状态");
        }
        return R.ok();
    }
    @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("更新工作档数据状态失败");
            }
            List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
            for (WrkDetl wrkDetl : wrkDetls) {
                Mat mat = matService.selectByMatnr("CP10103TY22014617");
                WrkDetl wrkDetl1 = new WrkDetl();
                wrkDetl1.sync(wrkDetl);
                wrkDetl1.sync(mat);
                wrkDetl1.setBatch(param.getBatch());
                wrkDetl1.setIoTime(now);
                wrkDetlService.insert(wrkDetl1);
            }
            wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("matnr", "BZ10100ZZ00000010").eq("wrk_no",wrkMast.getWrkNo()));
            // 更新明细档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);
    }
}