自动化立体仓库 - WMS系统
skyouc
3 天以前 56b1b873191d6e7022ed225cf81c3eda774f210e
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -8,16 +8,19 @@
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.*;
import com.zy.asrs.entity.param.CompleteParam;
import com.zy.asrs.enums.LocStsType;
import com.zy.asrs.mapper.LocMastMapper;
import com.zy.asrs.mapper.ManLocDetlMapper;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.MatUtils;
import com.zy.asrs.utils.Utils;
import com.zy.common.constant.MesConstant;
import com.zy.common.entity.Parameter;
import com.zy.common.model.DetlDto;
import com.zy.common.model.MesCombParam;
import com.zy.common.model.enums.WorkNoType;
import com.zy.common.properties.SlaveProperties;
import com.zy.common.service.CommonService;
import com.zy.common.utils.HttpHandler;
import com.zy.system.timer.LoadingConfigTimer;
@@ -103,6 +106,9 @@
    @Autowired
    private TaskService taskService;
    @Autowired
    private SlaveProperties slaveProperties;
    @Autowired
    private TaskDetlService taskDetlService;
@@ -1164,6 +1170,99 @@
    }
    /**
     * 6.15WCS申请在库库位更换库位
     *
     * @param combParam
     * @param l
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R changeLoc(CompleteParam combParam, long l) {
        if (Objects.isNull(combParam)) {
            return R.error("参数不能为空!");
        }
        if (Objects.isNull(combParam.getLocNo())) {
            return R.error("库位号不能为空!!");
        }
        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", combParam.getLocNo()));
        if (Objects.isNull(locMast)) {
            return R.error("库位信息不存在或库位状态非 F.在库 状态");
        }
        List<Integer> doubleLocs = slaveProperties.getDoubleLocs();
        List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
                .in("row1", doubleLocs)
                .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type));
        Map<String, Object> result = new HashMap<>();
        LocMast selected = new LocMast();
        for (LocMast loc : locMasts) {
            LocMast temLoc = locMastService.selectById(loc.getLocNo());
            if (Objects.isNull(temLoc)) {
                throw new CoolException("数据错误, 原库位信息不存在!!");
            }
            String shallowLoc = Utils.getShallowLoc(slaveProperties, temLoc.getLocNo());
            LocMast locMast1 = locMastService.selectById(shallowLoc);
            if (Objects.isNull(locMast1)) {
                throw new CoolException("数据错误, 新库位信息不存在!!");
            }
            if (!locMast1.getLocSts().equals(LocStsType.LOC_STS_TYPE_O.type)) {
                continue;
            }
            selected = loc;
            break;
        }
        WrkMast moveTask = generateMoveTask(selected, locMast);
        result.put("locNo", selected.getLocNo());
        result.put("taskNo", moveTask.getWrkNo());
        return R.ok().add(result);
    }
    /**
     * 生成移库任务
     *
     * @param result
     * @param sourceLoc
     * @return
     */
    @Transactional(rollbackFor = Exception.class)
    public WrkMast generateMoveTask(LocMast result, LocMast sourceLoc) {
        WrkMast wrkMast = new WrkMast();
        int workNo = commonService.getWorkNo(0);
        wrkMast.setWrkNo(workNo);
        wrkMast.setLocNo(result.getLocNo());
        wrkMast.setSourceLocNo(sourceLoc.getLocNo());
        wrkMast.setWrkSts(11L);
        wrkMast.setIoType(11);
        wrkMast.setCrnNo(sourceLoc.getCrnNo());
        wrkMast.setAppeTime(new Date());
        wrkMast.setModiTime(new Date());
        wrkMast.setIoPri(13D);
        wrkMast.setWrkDate(new Date());
        if (!wrkMastService.insert(wrkMast)) {
            throw new CoolException("任务保存失败!!");
        }
        List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLoc.getLocNo()));
        locDetls.forEach(detl -> {
            detl.setLocNo(result.getLocNo());
            if (!locDetlService.updateById(detl)) {
                throw new CoolException("明细更新失败!!");
            }
        });
        return wrkMast;
    }
    /**
     * @author Ryan
     * @date 2025/9/22
     * @description: 获取缓冲区库位信息