自动化立体仓库 - WMS系统
#
zjj
2024-11-12 d41349dff95bbc34d6e34997bb8c68eb0d8dc46a
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -8,6 +8,7 @@
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.*;
import com.zy.asrs.mapper.BasDevpMapper;
import com.zy.asrs.mapper.ManLocDetlMapper;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.MatUtils;
@@ -24,6 +25,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.*;
/**
@@ -73,13 +75,25 @@
    @Autowired
    private ManLocDetlMapper manLocDetlMapper;
    @Resource
    private BasDevpMapper basDevpMapper;
    @Override
    public R inLocCallAgv(String sta, String inSta) {
        // 判断入库站点有无出库任务过滤盘点捡料
        int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("sta_no", inSta).ne("wrk_sts",15).notIn("io_type",103,107));
        if (count > 0) {
            return R.parse(inSta + "站点存在出库任务");
        BasDevp basDevp = basDevpMapper.selectById(inSta);
        // 0.出库模式,1.agv入库中,2.生成入库任务
        if (basDevp.getDevMk().equals("0")) { // 是出库
             // 判断是否有出库任务
            int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>()
                    .eq("sta_no", inSta).lt("wrk_sts",14).in("io_type",101,103,107,110));
            if (count == 0) {
                // 没有出库任务,更改为入库模式
                basDevp.setDevMk("1");
                basDevpMapper.updateById(basDevp);
            } else {
                return R.parse(inSta + "站点存在出库任务");
            }
        }
        // 先绑定
@@ -378,6 +392,11 @@
        if(param.getCombMats().stream().anyMatch(obj -> obj.getAnfme() == null)){
            throw new CoolException("入库物料数量不能为空");
        }
        Order order = orderService.selectByNo(param.getOrderNo());
        if (Cools.isEmpty(order) || order.getSettle() > 2) {
            throw new CoolException("单据编号已过期");
        }
        // 判断是否有相同条码的数据
        if (waitPakinService.selectCount(new EntityWrapper<WaitPakin>().
                eq("zpallet", param.getBarcode()).eq("io_status", "N")) > 0) {
@@ -399,6 +418,19 @@
        Date now = new Date();
        for (CombParam.CombMat combMat : param.getCombMats()) {
            // 订单明细数量校验
            OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), combMat.getMatnr(), combMat.getBatch());
            if (Cools.isEmpty(orderDetl)) {
                throw new CoolException("该单据中未找到对应物料明细");
            }
            if (combMat.getAnfme() > orderDetl.getEnableQty()) {
                throw new CoolException(orderDetl.getMatnr() + "入库数量不合法");
            }
            // 修改订单作业数量
            if (!orderDetlService.increaseWorkQty(order.getId(), combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme())) {
                throw new CoolException("修改单据作业数量失败");
            }
            Mat mat = matService.selectByMatnr(combMat.getMatnr());
            WrkDetl wrkDetl = new WrkDetl();
            wrkDetl.sync(mat);
@@ -411,6 +443,7 @@
            wrkDetl.setAppeUser(userId);
            wrkDetl.setModiTime(now);
            wrkDetl.setModiUser(userId);
            wrkDetl.setManu(orderDetl.getManu());
            wrkDetlService.insert(wrkDetl);
        }
@@ -783,6 +816,13 @@
    public void leftoversOut(Map<String, Object> map,Long userId) {
        String barcode = map.get("barcode").toString();
        String barcode2 = map.get("barcode2").toString();
        int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",barcode2));
        int countWrk = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("zpallet",barcode2).ne("io_type",200));
        int countwait = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet",barcode2));
        if (countLoc > 0 || countWrk > 0 || countwait > 0) {
            throw new CoolException("该条码已被使用===>>" + barcode2);
        }
        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", barcode).eq("io_type", 103));
        if (Cools.isEmpty(wrkMast)) {
            throw new CoolException("未查询到拣料任务");