自动化立体仓库 - WMS系统
zwl
6 天以前 b6681bc12173c1179d0185805ba461211472ac18
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -105,7 +105,7 @@
        // 源站点状态检测
        BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getDevpNo(), true);
        // 检索库位
        LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
        LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo,"");
//        List<String> matnrs = param.getList().stream().map(FullStoreParam.MatCodeStore::getMatnr).distinct().collect(Collectors.toList());
//        List<String> batchs = param.getList().stream().map(FullStoreParam.MatCodeStore::getBatch).distinct().collect(Collectors.toList());
        FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(param.getList().get(0));
@@ -397,7 +397,7 @@
    @Override
    @Transactional
    public void stockOut(BasDevp staNo, TaskDto taskDto, Long userId) {
    public void stockOut(BasDevp staNo, TaskDto taskDto, Long userId,Integer ioPri) {
        Date now = new Date();
        List<LocDto> locDtos = taskDto.getLocDtos();
        for (LocDto locDto : locDtos) {
@@ -411,19 +411,37 @@
        String orderNo = taskDto.getLocDtos().get(0).getOrderNo();
        OrderPakout orderPakout = orderPakOutService.selectByNo(orderNo);
        int ioType = orderPakout.getDocType() == 8 ? 107 : (taskDto.isAll() ? 101 : 103);
        StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(), staNo.getDevNo());
//        StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(), staNo.getDevNo());
        // 生成工作号
        int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
        //出库任务堆垛机出库站点指定
        String SourceStaNo = "";
        String StaNo = "";
        if(locMast.getLocType3()==2&&orderPakout.getDocType()==11){
            SourceStaNo = "301";
            StaNo = "303";
        }else if (locMast.getLocType3()==2&&!Cools.isEmpty(orderPakout.getCstmrName())){
            SourceStaNo = "307";
            StaNo = "307";
        }else if (locMast.getLocType3()==1&&locMast.getLocType2()==1){
            SourceStaNo = "402";
            StaNo = "402";
        }else if (locMast.getLocType3()==1&&locMast.getLocType2()==2){
            SourceStaNo = "401";
            StaNo = "401";
        }
        // 生成工作档
        WrkMast wrkMast = new WrkMast();
        wrkMast.setWrkNo(workNo);
        wrkMast.setIoTime(now);
        wrkMast.setWrkSts(11L); // 工作状态:11.生成出库ID
        wrkMast.setIoType(ioType); // 入出库状态
        wrkMast.setIoPri(13D); // 优先级:13
        wrkMast.setIoPri(ioPri+0.0); // 优先级:13
        wrkMast.setCrnNo(locMast.getCrnNo());
        wrkMast.setSourceStaNo(staDesc.getCrnStn() + ""); // 源站
        wrkMast.setStaNo(staDesc.getStnNo() + ""); // 目标站
        wrkMast.setSourceStaNo(SourceStaNo); // 源站
        wrkMast.setStaNo(StaNo); // 目标站
        wrkMast.setSourceLocNo(taskDto.getLocNo()); // 源库位
        wrkMast.setFullPlt("Y"); // 满板:Y
        wrkMast.setPicking("N"); // 拣料
@@ -435,6 +453,11 @@
        wrkMast.setAppeTime(now);
        wrkMast.setModiUser(userId);
        wrkMast.setModiTime(now);
        if(locMast.getLocType3()==2&&orderPakout.getDocType()==11){
        }else {
            wrkMast.setMemo(orderPakout.getCstmrName());//agv目标站点
        }
        if (!wrkMastService.insert(wrkMast)) {
            throw new CoolException("保存工作档失败,出库库位号:" + taskDto.getLocNo());
        }
@@ -502,7 +525,7 @@
        // 源站点状态检测
        BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
        // 检索库位
        LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
        LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo,"");
        FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo();
        StartupDto dto = commonService.getLocNo(10, devpNo, findLocNoAttributeVo, locTypeDto);
@@ -629,7 +652,7 @@
    @Override
    @Transactional
    public WrkMast emptyPlateOut(EmptyPlateOutParam param) {
    public WrkMast emptyPlateOut(EmptyPlateOutParam param,Integer ioPri,String agvSta) {
        WrkMast wrkMast = new WrkMast();
        if (Cools.isEmpty(param.getOutSite())) {
            throw new CoolException("站点不存在");
@@ -642,10 +665,21 @@
            if (Cools.isEmpty(locMast)) {
                throw new CoolException(locNo + "库位不存在");
            }
            //出库任务堆垛机出库站点指定
            String SourceStaNo = "";
            if(locMast.getLocType3()==2){
                SourceStaNo = "303";
            }else if (locMast.getLocType3()==1&&locMast.getLocType2()==1){
                SourceStaNo = "402";
            }else if (locMast.getLocType3()==1&&locMast.getLocType2()==2){
                SourceStaNo = "401";
            }
            // 获取源站
            Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
                    .eq("type_no", 110)
                    .eq("stn_no", param.getOutSite())
                    .eq("stn_no", SourceStaNo)
                    .eq("crn_no", locMast.getCrnNo());
            StaDesc staDesc = staDescService.selectOne(wrapper);
            Integer sourceStaNo = staDesc.getCrnStn();
@@ -659,9 +693,9 @@
            wrkMast.setIoTime(now);
            wrkMast.setWrkSts(11L); // 工作状态:11.生成出库ID
            wrkMast.setIoType(110); // 入出库状态: 110.空板出库
            wrkMast.setIoPri(10D);
            wrkMast.setIoPri(ioPri+0.0);
            wrkMast.setSourceStaNo(sourceStaNo + ""); // 源站
            wrkMast.setStaNo(param.getOutSite() + ""); // 目标站
            wrkMast.setStaNo(staDesc.getStnNo() + ""); // 目标站
            wrkMast.setCrnNo(locMast.getCrnNo());
            wrkMast.setSourceLocNo(locNo); // 源库位
            wrkMast.setFullPlt("N"); // 满板:Y
@@ -673,7 +707,7 @@
            wrkMast.setAppeTime(now);
            wrkMast.setModiUser(1L);
            wrkMast.setModiTime(now);
            wrkMast.setMemo("生成自动空板出库");
//            wrkMast.setMemo(agvSta);//agv目标站点
            boolean res = wrkMastService.insert(wrkMast);
            if (!res) {
                throw new CoolException("保存工作档失败");
@@ -1079,7 +1113,7 @@
    @Transactional
    public void cancelWrkMast(String workNo, Long userId) {
        Date now = new Date();
        WrkMast wrkMast = wrkMastService.selectById(workNo);
        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", workNo));
        if (Cools.isEmpty(wrkMast)) {
            throw new CoolException(workNo + "工作档不存在");
        }
@@ -1210,6 +1244,9 @@
        boolean wrkMastRes = wrkMastService.deleteById(wrkMast);
        if (wrkMast.getIoType() != 10 && wrkMast.getIoType() != 110) {
            //取消标记,订单完成后反写订单明细时过滤掉danger = 1的数据
            wrkDetlService.updateForSet("danger = 1" ,new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
            // 保存工作明细档历史档
            if (!wrkDetlLogService.save(wrkMast.getWrkNo())) {
//                throw new CoolException("保存工作明细历史档失败, workNo = " + wrkMast.getWrkNo());