自动化立体仓库 - WMS系统
zhang
2025-09-26 2bf957a2e0379386934491563f81c90ebceee143
src/main/java/com/zy/asrs/controller/MobileController.java
@@ -2,28 +2,26 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.core.annotations.ManagerAuth;
import com.core.common.BaseRes;
import com.core.common.Cools;
import com.core.common.R;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.CombParam;
import com.zy.asrs.entity.param.GDYKConfirmGoodsParam;
import com.zy.asrs.entity.param.MobileAdjustParam;
import com.zy.asrs.entity.param.OffSaleParam;
import com.zy.asrs.entity.param.*;
import com.zy.asrs.entity.result.MobileAdjustResult;
import com.zy.asrs.mapper.ManLocDetlMapper;
import com.zy.asrs.service.*;
import com.zy.common.model.WrkDto;
import com.zy.common.service.CommonService;
import com.zy.common.web.BaseController;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import java.util.*;
import java.util.List;
/**
 * 移动端接口控制器
@@ -57,7 +55,17 @@
    private ManLocDetlMapper manLocDetlMapper;
    @Autowired
    private WrkDetlLogService wrkDetlLogService;
    @Autowired
    private MatService matService;
    @Autowired
    private MatBarcodeService matBarcodeService;
    @Autowired
    private CommonService commonService;
    @Autowired
    private WorkService workService;
    private static Logger logger = LogManager.getLogger(MobileController.class);
    // 商品上架
    @RequestMapping("/mat/onSale/auth")
@@ -136,10 +144,13 @@
                        combMat.setAnfme(orderDetl.getAnfme() - orderDetl.getWorkQty());
                        combMat.setMaktx(orderDetl.getMaktx());
                        combMat.setSpecs(orderDetl.getSpecs());
                        combMat.setDetId(orderDetl.getDetId());
                        combMat.setDetlId(orderDetl.getId());
                        combMats.add(combMat);
                    }
                    combParam.setCombMats(combMats);
                }
                combParam.setBillNo(order.getOrderNo());
                combParam.setOrderNo(order.getOrderNo());
                combParams.add(combParam);
            }
@@ -150,6 +161,7 @@
    @RequestMapping("/comb/auth")
    @ManagerAuth(memo = "组托")
    public R comb(@RequestBody CombParam combParam) {
        logger.info("组托参数:{}", combParam);
        if (Cools.isEmpty(combParam.getOrderNo())) {
            combParam.setOrderNo(combParam.getBillNo());
        }
@@ -162,6 +174,19 @@
        mobileService.comb(combParam, getUserId());
        return R.ok("组托成功");
    }
    @RequestMapping("/pickIn/auth")
//    @ManagerAuth(memo="盘点入库")
    public R pickIn(@RequestParam String barcode) {
        WrkMast wrkMast = wrkMastService.selectByBarcode(barcode);
        List<PickInParam> param = wrkDetlService.selectDetByBarcode(barcode);
        for (PickInParam pickInParam : param) {
            pickInParam.setStaNo(wrkMast.getStaNo());
            pickInParam.setWorkNo(wrkMast.getWrkNo());
        }
        return R.ok().add(param);
    }
    @RequestMapping("/pack/get/auth")
    @ManagerAuth
@@ -466,5 +491,93 @@
        return R.ok().add(vos);
    }
    @RequestMapping("/callBarcode")
    @ManagerAuth(memo = "PDA呼叫托盘出库")
    public R callBarcode(@RequestBody CombParam combParam) {
        logger.info("PDA呼叫托盘出库");
        if (combParam == null) {
            return R.parse(BaseRes.PARAM);
        }
        combParam.getCombMats().forEach(combMat -> {
            Mat mat = matService.selectByMatnr(combMat.getMatnr());
            if (mat == null) {
                throw new CoolException("商品档案不存在");
            }
            MatBarcode matBarcode = matBarcodeService.selectbyMatnr(combMat.getMatnr());
            if (matBarcode == null) {
                throw new CoolException("该物料未与托盘绑定");
            }
            LocMast locMast = locMastService.selectByBarcode(matBarcode.getZpallet());
            if (locMast == null) {
                throw new CoolException("未找到与该物料绑定的托盘");
            }
            int wrkNo = commonService.getWorkNo(0);
            Date now = new Date();
            //生成工作档
            WrkMast wrkMast = new WrkMast();
            wrkMast.setWrkNo(wrkNo);
            wrkMast.setIoTime(new Date());
            wrkMast.setWrkSts(11L);//工作状态:生成出库ID
            wrkMast.setIoType(101);//入出库状态:并板出库
            wrkMast.setIoPri(13D);//优先级
            wrkMast.setCrnNo(locMast.getCrnNo());
//            wrkMast.setSourceStaNo(dto.getSourceStaNo());//源站
            wrkMast.setStaNo(101);// 目标站
            wrkMast.setSourceLocNo(locMast.getLocNo());// 源库位
            wrkMast.setBarcode(matBarcode.getZpallet()); // 托盘码
            wrkMast.setFullPlt("Y"); // 满板:Y
            wrkMast.setPicking("N"); // 拣料
            wrkMast.setExitMk("N"); // 退出
            wrkMast.setEmptyMk("N"); // 空板
            wrkMast.setLinkMis("Y");
//            wrkMast.setScWeight(weight);
            wrkMast.setCtnType(0); // 容器类型
            // 操作人员数据
            wrkMast.setAppeTime(now);
            wrkMast.setModiTime(now);
            boolean res = wrkMastService.insert(wrkMast);
            if (!res) {
                throw new CoolException("保存工作档失败");
            }
            if (locMast.getLocSts().equals("F")) {
                locMast.setLocSts("R"); // R.出库预约
                locMast.setModiTime(now);
                if (!locMastService.updateById(locMast)) {
                    throw new CoolException("改变库位状态失败");
                }
            } else {
                throw new CoolException(locMast.getLocNo() + "目标库位状态不为F");
            }
        });
        return R.ok();
    }
    @RequestMapping("/combMeger/auth")
    @ManagerAuth(memo = "并板")
    public synchronized R adjustNewV2(@RequestBody MobileAdjustParam combParam) {
        mobileService.adjustNew(combParam, Boolean.TRUE, getUserId());
        return R.ok("并板成功");
    }
    @RequestMapping("/empty/plate/out/start")
    @ManagerAuth(memo = "空板出库")
    public R emptyPlateOutStart(EmptyPlateOutParam param) {
        List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "D").eq("loc_type1", param.getType()).in("row1", 2, 3));
        if (locMasts == null || locMasts.isEmpty()) {
            locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "D").eq("loc_type1", param.getType()).in("row1", 1, 4));
        }
        if (locMasts == null || locMasts.isEmpty()){
            return R.error("无空板库位");
        }
        param.setOutSite(1103);
        List<String> locNos = param.getLocNos();
        if (locNos == null){
            locNos = new ArrayList<>();
        }
        locNos.add(locMasts.get(0).getLocNo());
        param.setLocNos(locNos);
        workService.emptyPlateOut(param, getUserId());
        return R.ok("出库启动成功");
    }
}