自动化立体仓库 - WMS系统
pang.jiabao
2026-01-19 78b8f5141aa11bfa0f94361407ed43362c8852ce
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -2,6 +2,7 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.enums.SqlLike;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.core.common.*;
@@ -49,6 +50,9 @@
    @Value("${wms.zpalletId}")
    public String WMS_ZPALLET_ID;
    @Value("${wms.loadedPallet}")
    public String WMS_LOADED_PALLET;
    @Autowired
    private MatService matService;
@@ -597,7 +601,7 @@
        Date now = new Date();
        // 无单组托
        if (Cools.isEmpty(param.getOrderNo())) {
        if (Cools.isEmpty(param.getCombMats().get(0).getOrderNo())) {
            // 生成入库通知档
            List<DetlDto> detlDtos = new ArrayList<>();
            param.getCombMats().forEach(elem -> {
@@ -617,9 +621,9 @@
                if (Cools.isEmpty(mat)) {
                    throw new CoolException(detlDto.getMatnr() + "商品档案不存在");
                }
                if (mat.getUpQty().compareTo(detlDto.getAnfme()) < 0) {
                    throw new CoolException("物料:" + detlDto.getMatnr() + "单次最大组托上限为:" + mat.getUpQty());
                }
//                if (mat.getUpQty().compareTo(detlDto.getAnfme()) < 0) {
//                    throw new CoolException("物料:" + detlDto.getMatnr() + "单次最大组托上限为:" + mat.getUpQty());
//                }
                WaitPakin waitPakin = new WaitPakin();
                BeanUtils.copyProperties(mat, waitPakin);
                waitPakin.setBatch(detlDto.getBatch());
@@ -1289,7 +1293,7 @@
    @Transactional
    public R callEmptyBinOutBound(MesOutApply mesOutApply, String staNo, String locType,int count, Long userId) {
        List<LocMast> locMastList = locMastService.selectList(new EntityWrapper<LocMast>().setSqlSelect("TOP " + count + " *")
                .eq("loc_sts", "D").eq("frozen", 0).eq("loc_type2", locType).orderBy("lev1").orderBy("bay1").orderBy("row1"));
                .eq("loc_sts", "D").eq("frozen", 0).like("barcode", locType, SqlLike.RIGHT).orderBy("lev1").orderBy("bay1").orderBy("row1"));
        if (locMastList.size() < count) {
            return R.parse("空托数量不足(或冻结),剩余数量:" + locMastList.size());
        }
@@ -1297,7 +1301,7 @@
        // 获取路径
        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
                .eq("type_no", 110)
                .eq("stn_no", 204)
                .eq("stn_no", staNo.startsWith("B") ? 204 : staNo)
                .eq("crn_no", 1);
        StaDesc staDesc = staDescService.selectOne(wrapper);
        if (staDesc == null) {
@@ -1326,6 +1330,7 @@
            wrkMast.setAppeTime(now);
            wrkMast.setModiUser(userId);
            wrkMast.setModiTime(now);
            wrkMast.setBarcode(locMast.getBarcode());
            if (mesOutApply != null) {
                wrkMast.setTaskNo(mesOutApply.getTaskno());
                wrkMast.setAgvSta(mesOutApply.getStationId());
@@ -1349,9 +1354,9 @@
    }
    @Override
    public R callEmptyBinInBound(String site, Long userId) {
    public R callEmptyBinInBound(String site, String barcode, String emptyFlag, Long userId) {
        TransTask transTask = new TransTask();
//        transTask.setTaskno(mesInApply.getTaskno());
        transTask.setTaskno(String.valueOf(new Date().getTime()));
//        transTask.setTaskname(mesInApply.getTaskname());
//        transTask.setOrderNo(mesInApply.getOrderNo());
        transTask.setTransType("02"); // 下毛坯
@@ -1359,10 +1364,18 @@
        transTask.setCurStationId(site);
        transTask.setNextStationId(WMS_TRANS_START_STATION_2);
        transTask.setItemno(WMS_ZPALLET_ID);  // 固定为空托的编码
        if ("1".equals(emptyFlag)) { // 判断是否组托
            int count = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet", barcode));
            if(count <= 0) {
                return R.parse("未组托:" + barcode);
            }
            transTask.setItemno(WMS_LOADED_PALLET);  // 固定为满托的编码
        }
        transTask.setQty(1);    // 空托只回1个
//        transTask.setProductLineId(mesInApply.getProductLineId());
        transTask.setOperateType(1);
        transTask.setAgvFactory(1);
        transTask.setTuoPanId(barcode);
        JSONObject sendAgvTask = mesService.submitTask(transTask);
        if ("1".equals(sendAgvTask.getString("Success"))) {
            log.info("pda呼叫料框回库成功,{}", JSONObject.toJSONString(transTask));