自动化立体仓库 - WMS系统
zhang
2025-09-24 e3e268107c141f10e937761fa6bc94b74a9c9abc
对接
5个文件已修改
78 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/OutController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/WorkController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/WorkService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OutController.java
@@ -128,7 +128,7 @@
        }
        // -----------------------------------------------------------------------------------------------
        for (TaskDto taskDto : taskDtos) {
            workService.stockOut(null, taskDto, getUserId(), taskDto.getStaNo());
            workService.stockOut(null, taskDto, getUser(), taskDto.getStaNo());
        }
        return R.ok();
    }
@@ -202,7 +202,7 @@
        }
        // -----------------------------------------------------------------------------------------------
        for (TaskDto taskDto : taskDtos) {
            workService.stockOut(null, taskDto, getUserId(), taskDto.getStaNo());
            workService.stockOut(null, taskDto, getUser(), taskDto.getStaNo());
        }
        return R.ok();
    }
src/main/java/com/zy/asrs/controller/WorkController.java
@@ -86,7 +86,7 @@
    @RequestMapping("/plate/out/start")
    @ManagerAuth(memo = "出库作业")
    public R fullStoreTakeStart(@RequestBody StockOutParam param) {
        workService.startupFullTakeStore(param, getUserId());
        workService.startupFullTakeStore(param, getUser());
        return R.ok("出库启动成功");
    }
@@ -106,7 +106,7 @@
    @RequestMapping("/locCheck/out/start")
    @ManagerAuth(memo = "盘点出库")
    public R locCheckOutStart(@RequestBody StockOutParam param) {
        workService.locCheckOut(param, getUserId());
        workService.locCheckOut(param, getUser());
        return R.ok("出库启动成功");
    }
src/main/java/com/zy/asrs/service/WorkService.java
@@ -10,6 +10,7 @@
import com.zy.common.model.StartupDto;
import com.zy.common.model.TaskDto;
import com.zy.common.model.enums.IoWorkType;
import com.zy.system.entity.User;
import java.util.List;
@@ -24,7 +25,7 @@
    /**
     * 出库作业
     */
    void startupFullTakeStore(StockOutParam param, Long userId);
    void startupFullTakeStore(StockOutParam param, User userId);
    /**
     * 出库作业
@@ -32,9 +33,9 @@
     * @param locDetls 待出库物料
     * @param ioType 入出库类型
     */
    void stockOut(BasDevp staNo, List<LocDetlDto> locDetls, IoWorkType ioWorkType, Long userId,String agvStaNo);
    void stockOut(BasDevp staNo, List<LocDetlDto> locDetls, IoWorkType ioWorkType, User user,String agvStaNo);
    void stockOut(BasDevp staNo, TaskDto taskDto, Long userId,String agvStaNo);
    void stockOut(BasDevp staNo, TaskDto taskDto, User user, String agvStaNo);
    /**
     * 空板入库
@@ -50,7 +51,7 @@
    /**
     * 盘点出库
     */
    void locCheckOut(StockOutParam param, Long userId);
    void locCheckOut(StockOutParam param, User userId);
    /**
     * 库位移转
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -20,6 +20,7 @@
import com.zy.common.properties.SlaveProperties;
import com.zy.common.service.CommonService;
import com.zy.common.web.WcsController;
import com.zy.system.entity.User;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -156,7 +157,7 @@
    @Override
    @Transactional
    public void startupFullTakeStore(StockOutParam param, Long userId) {
    public void startupFullTakeStore(StockOutParam param, User userId) {
        String agvStaNo = param.getOutSite();
        // 获取库位明细
        List<LocDetlDto> locDetlDtos = new ArrayList<>();
@@ -177,7 +178,7 @@
    @Override
    @Transactional
    public void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, IoWorkType ioWorkType, Long userId,String agvStaNo) {
    public void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, IoWorkType ioWorkType, User user, String agvStaNo) {
        Date now = new Date();
        // 合并同类项
        Set<String> locNos = new HashSet<>();
@@ -250,9 +251,9 @@
            wrkMast.setEmptyMk("N"); // 空板
            wrkMast.setLinkMis("N");
            wrkMast.setBarcode(locMast.getBarcode());
            wrkMast.setAppeUser(userId); // 操作人员数据
            wrkMast.setAppeUser(user.getId()); // 操作人员数据
            wrkMast.setAppeTime(now);
            wrkMast.setModiUser(userId);
            wrkMast.setModiUser(user.getId());
            wrkMast.setModiTime(now);
            wrkMast.setMemo(Cools.isEmpty(agvStaNo) ? "" : agvStaNo);
            if (!wrkMastService.insert(wrkMast)) {
@@ -260,7 +261,9 @@
            }
            // 生成工作档明细
            for (LocDetlDto detlDto : dto.getLocDetlDtos()) {
                if (detlDto.getCount()==null || detlDto.getCount() <= 0.0D) {continue;}
                if (detlDto.getCount() == null || detlDto.getCount() <= 0.0D) {
                    continue;
                }
                WrkDetl wrkDetl = new WrkDetl();
                wrkDetl.sync(detlDto.getLocDetl());
                wrkDetl.setOrderNo(""); // 手动出库不需要带出库存中的单据编号
@@ -269,9 +272,9 @@
                Double anfme = ioType==101?detlDto.getLocDetl().getAnfme():detlDto.getCount();
                wrkDetl.setAnfme(anfme); // 数量
                wrkDetl.setAppeTime(now);
                wrkDetl.setAppeUser(userId);
                wrkDetl.setAppeUser(user.getId());
                wrkDetl.setModiTime(now);
                wrkDetl.setModiUser(userId);
                wrkDetl.setModiUser(user.getId());
                if (!wrkDetlService.insert(wrkDetl)) {
                    throw new CoolException("保存工作档明细失败");
                }
@@ -280,7 +283,7 @@
            locMast = locMastService.selectById(dto.getLocNo());
            if (locMast.getLocSts().equals("F")) {
                locMast.setLocSts(ioType==101?"R":"P");
                locMast.setModiUser(userId);
                locMast.setModiUser(user.getId());
                locMast.setModiTime(now);
                if (!locMastService.updateById(locMast)) {
                    throw new CoolException("预约库位状态失败,库位号:"+dto.getLocNo());
@@ -293,7 +296,7 @@
    @Override
    @Transactional
    public void stockOut(BasDevp staNo, TaskDto taskDto, Long userId,String agvStaNo) {
    public void stockOut(BasDevp staNo, TaskDto taskDto, User user, String agvStaNo) {
        Date now = new Date();
        List<LocDto> locDtos = taskDto.getLocDtos();
        for (LocDto locDto : locDtos) {
@@ -334,9 +337,9 @@
        wrkMast.setEmptyMk("N"); // 空板
        wrkMast.setLinkMis("N");
        wrkMast.setBarcode(locMast.getBarcode());
        wrkMast.setAppeUser(userId); // 操作人员数据
        wrkMast.setAppeUser(user.getId()); // 操作人员数据
        wrkMast.setAppeTime(now);
        wrkMast.setModiUser(userId);
        wrkMast.setModiUser(user.getId());
        wrkMast.setModiTime(now);
        wrkMast.setMemo(Cools.isEmpty(agvStaNo) ? "" : agvStaNo);
        if (!wrkMastService.insert(wrkMast)) {
@@ -344,7 +347,9 @@
        }
        // 生成工作档明细
        for (LocDto locDto : taskDto.getLocDtos()) {
            if (locDto.getAnfme()==null || locDto.getAnfme() <= 0.0D) { continue; }
            if (locDto.getAnfme() == null || locDto.getAnfme() <= 0.0D) {
                continue;
            }
            OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch());
            if (orderDetl == null) {
                orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null);
@@ -360,23 +365,23 @@
            wrkDetl.setModel(mat.getModel());
            wrkDetl.setAnfme(locDto.getAnfme()); // 数量
            wrkDetl.setAppeTime(now);
            wrkDetl.setAppeUser(userId);
            wrkDetl.setAppeUser(user.getId());
            wrkDetl.setModiTime(now);
            wrkDetl.setModiUser(userId);
            wrkDetl.setModiUser(user.getId());
            if (!wrkDetlService.insert(wrkDetl)) {
                throw new CoolException("保存工作档明细失败");
            }
            // 修改订单明细
            if (!orderDetlService.increaseWorkQty(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme())) {
            if (!orderDetlService.increaseWorkQty2(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme(), user.getEmail())) {
                throw new CoolException("修改订单明细数量失败");
            }
            orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
            orderService.updateSettle(orderDetl.getOrderId(), 2L, user.getId());
        }
        // 修改库位状态:   F.在库 ====>>> R.出库预约/P.拣料/盘点/并板出库中
        locMast = locMastService.selectById(taskDto.getLocNo());
        if (locMast.getLocSts().equals("F")) {
            locMast.setLocSts(ioType==101?"R":"P");
            locMast.setModiUser(userId);
            locMast.setModiUser(user.getId());
            locMast.setModiTime(now);
            if (!locMastService.updateById(locMast)) {
                throw new CoolException("预约库位状态失败,库位号:"+taskDto.getLocNo());
@@ -510,7 +515,7 @@
    @Override
    @Transactional
    public void locCheckOut(StockOutParam param, Long userId) {
    public void locCheckOut(StockOutParam param, User userId) {
        // 获取库位明细
        List<LocDetlDto> locDetlDtos = new ArrayList<>();
@@ -663,7 +668,9 @@
            Iterator<LocDetlAdjustParam.LocDetlAdjust> iterator1 = list.iterator();
            while (iterator1.hasNext()) {
                LocDetlAdjustParam.LocDetlAdjust adjust = iterator1.next();
                if (adjust.getCount() == 0) { continue; }
                if (adjust.getCount() == 0) {
                    continue;
                }
                if (locDetl.getMatnr().equals(adjust.getMatnr()) && Cools.eq(locDetl.getBatch(), adjust.getBatch())) {
                    if (!locDetl.getAnfme().equals(adjust.getCount())) {
                        // todo 盘点记录
@@ -712,7 +719,9 @@
        // 添加库存
        for (LocDetlAdjustParam.LocDetlAdjust adjust : list) {
            if (adjust.getCount() == 0.0D) { continue; }
            if (adjust.getCount() == 0.0D) {
                continue;
            }
            Mat mat = matService.selectByMatnr(adjust.getMatnr());
            LocDetl locDetl = new LocDetl();
            locDetl.sync(mat);
src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
@@ -74,6 +74,18 @@
            ExdOutstockTarget exdOutstockTarget = null;
            for (OrderDetl orderDetl : orderDetls) {
                exdOutstockTarget = new ExdOutstockTarget();
                exdOutstockTarget.setFinterid(orderDetl.getDeadWarn());
                exdOutstockTarget.setFbillno(orderDetl.getOrderNo());
                if (order.getDocType() == 42) {
                    exdOutstockTarget.setFtrantype(41);
                } else if (order.getDocType() == 21) {
                    exdOutstockTarget.setFtrantype(81);
                } else {
                    exdOutstockTarget.setFtrantype(order.getDocType().intValue());
                }
                exdOutstockTarget.setFdate(DateUtils.convert(order.getOrderTime()));
                exdOutstockTarget.setFrob(orderDetl.getInspect());
                exdOutstockTarget.setFuserid(Integer.getInteger(orderDetl.getColor()));
                exdOutstockTargetService.insert(exdOutstockTarget);
                if (!orderService.updateSettle(order.getId(), 6L, null)) {
                    throw new CoolException("服务器内部错误,请联系管理员");