自动化立体仓库 - WMS系统
pang.jiabao
2025-11-12 96f92ed5f6c0e3ac57214828e09b5aa4fa33270a
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -56,11 +56,15 @@
    @Override
    @Transactional
    public void pakinOrderCreate(OpenOrderPakinParam param) {
        String orderNo = param.getOrderNo();
        String orderType = param.getOrderType();
        String optType = param.getOptType();
        OrderPakin order = orderPakinService.selectByNo(param.getOrderNo());
        if (optType.equals("add")) {
        if (!Cools.isEmpty(order)) {
            throw new CoolException(param.getOrderNo() + "单据已存在,请勿重复提交");
        }
        DocType docType = docTypeService.selectOrAdd(param.getOrderType(), Boolean.TRUE);
            DocType docType = docTypeService.selectOrAdd(orderType, Boolean.TRUE);
        Date now = new Date();
        // 单据主档
        order = new OrderPakin(
@@ -93,9 +97,9 @@
                null,    // 物流单号
                1L,    // 订单状态
                1,    // 状态
                9527L,    // 添加人员
                    null,    // 添加人员
                now,    // 添加时间
                9527L,    // 修改人员
                    null,    // 修改人员
                now,    // 修改时间
                null  // 备注
        );
@@ -131,9 +135,9 @@
            orderDetl.setStandby3(detlDto.getStandby3());
            orderDetl.setOrderId(order.getId());
            orderDetl.setOrderNo(order.getOrderNo());
            orderDetl.setCreateBy(9527L);
                orderDetl.setCreateBy(null);
            orderDetl.setCreateTime(now);
            orderDetl.setUpdateBy(9527L);
                orderDetl.setUpdateBy(null);
            orderDetl.setUpdateTime(now);
            orderDetl.setStatus(1);
            orderDetl.setQty(0.0D);
@@ -141,6 +145,24 @@
            if (!orderDetlPakinService.insert(orderDetl)) {
                throw new CoolException("生成单据明细失败,请联系管理员");
            }
            }
        } else if (optType.equals("delete")) {
            if (Cools.isEmpty(order)) {
                throw new CoolException(orderNo + "单据不存在!");
            }
            // 订单状态
            Long settle = order.getSettle();
            if (settle == 1) {
                // 删除订单明细
                orderDetlPakinService.delete(new EntityWrapper<OrderDetlPakin>().eq("order_id", order.getId()));
                // 删除订单主表
                orderPakinService.delete(new EntityWrapper<OrderPakin>().eq("id", order.getId()));
            } else {
                throw new CoolException(orderNo + ":订单已处理,无法取消");
            }
        } else {
            throw new CoolException(orderNo + ",操作类型不存在:" + optType);
        }
    }
@@ -204,15 +226,19 @@
    @Override
    @Transactional
    public void pakoutOrderCreate(OpenOrderPakoutParam param) {
        String orderNo = param.getOrderNo();
        String optType = param.getOptType();
        String orderType = param.getOrderType();
        OrderPakout order = orderPakoutService.selectByNo(param.getOrderNo());
        // 如果单据不存在则添加;如果单据存在,作业中无法修改,反之则修改单据
        if (optType.equals("add")) {
        if (!Cools.isEmpty(order)) {
            if (order.getSettle() > 1L) {
                throw new CoolException(param.getOrderNo() + "正在出库,无法修改单据");
                    throw new CoolException(param.getOrderNo() + "订单已存在");
            }
            orderPakoutService.remove(order.getId());
        }
        DocType docType = docTypeService.selectOrAdd(param.getOrderType(), Boolean.FALSE);
            DocType docType = docTypeService.selectOrAdd(orderType, Boolean.FALSE);
        Date now = new Date();
        // 单据主档
        order = new OrderPakout(
@@ -245,9 +271,9 @@
                null,    // 物流单号
                1L,    // 订单状态
                1,    // 状态
                9527L,    // 添加人员
                    null,    // 添加人员
                now,    // 添加时间
                9527L,    // 修改人员
                    null,    // 修改人员
                now,    // 修改时间
                null    // 备注
        );
@@ -285,9 +311,9 @@
            orderDetl.setStandby3(detlDto.getStandby3());
            orderDetl.setOrderId(order.getId());
            orderDetl.setOrderNo(order.getOrderNo());
            orderDetl.setCreateBy(9527L);
                orderDetl.setCreateBy(null);
            orderDetl.setCreateTime(now);
            orderDetl.setUpdateBy(9527L);
                orderDetl.setUpdateBy(null);
            orderDetl.setUpdateTime(now);
            orderDetl.setStatus(1);
            orderDetl.setQty(0.0D);
@@ -295,6 +321,23 @@
            if (!orderDetlPakoutService.insert(orderDetl)) {
                throw new CoolException("生成单据明细失败,请联系管理员");
            }
            }
        } else if (optType.equals("delete")) {
            if (Cools.isEmpty(order)) {
                throw new CoolException(orderNo + "单据不存在!");
            }
            // 订单状态
            Long settle = order.getSettle();
            if (settle == 1) {
                // 删除订单明细
                orderDetlPakoutService.delete(new EntityWrapper<OrderDetlPakout>().eq("order_id", order.getId()));
                // 删除订单主表
                orderPakoutService.delete(new EntityWrapper<OrderPakout>().eq("id", order.getId()));
            } else {
                throw new CoolException(orderNo + ":订单已处理,无法取消");
            }
        } else {
            throw new CoolException(orderNo + ",操作类型不存在:" + optType);
        }
    }
@@ -473,31 +516,31 @@
    @Override
    @Transactional
    public void syncMat(MatSyncParam param) {
        if (Cools.isEmpty(param.getMatDetails()) || param.getMatDetails().size() <= 0) {
            throw new CoolException("商品数据为空");
        }
        for (MatSyncParam.MatParam matParam : param.getMatDetails()) {
            if (Cools.isEmpty(matParam.getMatnr())) {
                throw new CoolException("商品编码不能为空");
            }
            Date now = new Date();
        for (MatSyncParam.MatParam matParam : param.getMatDetails()) {
            String logInfo = "optType:" + matParam.getOptType() + ",matnr:" + matParam.getMatnr() + ",maktx:" + matParam.getMaktx() + ",specs:" + matParam.getSpecs();
            if (Cools.isEmpty(matParam.getOptType(), matParam.getMatnr(), matParam.getMaktx())) {
                throw new CoolException("商品信息不能为空[" + logInfo + "]");
            }
            Mat mat = matService.selectByMatnr(matParam.getMatnr());
            if (mat == null) {
            switch (matParam.getOptType()) {
                case "add":
                    if (mat != null) {
                        throw new CoolException("商品信息已经存在[" + logInfo + "]");
                    }
                mat = new Mat();
                // 分类
                Long tagId;
                // 一级分类
                if (!Cools.isEmpty(matParam.getGroupCode()) && !Cools.isEmpty(matParam.getGroupName())) {
                    Tag priTag = tagService.selectByName(matParam.getGroupCode(), 2);
                    if (!Cools.isEmpty(matParam.getGroupName())) {
                        Tag priTag = tagService.selectByName(matParam.getGroupName(), 2);
                    if (priTag == null) {
                        Tag top = tagService.getTop();
                        NodeUtils nodeUtils = new NodeUtils();
                        nodeUtils.executePath(top.getId());
                        priTag = new Tag(
                                null,    // 编号
                                matParam.getGroupCode(),    // 名称
                                    matParam.getGroupName(),    // 名称
                                top.getId(),    // 父级
                                top.getName(),    // 父级名称
                                nodeUtils.path.toString(),    // 关联路径
@@ -520,64 +563,46 @@
                            throw new CoolException("服务器内部错误,请联系管理员");
                        }
                    }
                    // 二级分类
                    Tag secTag = tagService.selectByName(matParam.getGroupName(), 3);
                    if (secTag == null) {
                        NodeUtils nodeUtils = new NodeUtils();
                        nodeUtils.executePath(priTag.getId());
                        secTag = new Tag(
                                null,    // 编号
                                matParam.getGroupName(),    // 名称
                                priTag.getId(),    // 父级
                                priTag.getName(),    // 父级名称
                                nodeUtils.path.toString(),    // 关联路径
                                nodeUtils.pathName.toString(),    // 关联路径名
                                0,    // 类型
                                null,    // 负责人
                                null,    // 图片
                                null,    // 简要描述
                                null,    // 数量
                                3,    // 等级
                                null,    // 排序
                                1,    // 状态
                                now,    // 添加时间
                                null,    // 添加人员
                                now,    // 修改时间
                                null,    // 修改人员
                                null    // 备注
                        );
                        if (tagMapper.insert(secTag) == 0) {
                            throw new CoolException("服务器内部错误,请联系管理员");
                        }
                    }
                    tagId = secTag.getId();
                        tagId = priTag.getId();
                } else {
                    tagId = tagService.getTop().getId();
                }
                mat.sync(matParam);
//            mat.setMatnr(param.getMatnr());
//            mat.setMaktx(param.getMaktx());
//            mat.setSpecs(param.getSpecs());
//            mat.setModel(param.getModel());
                mat.setTagId(tagId);
                mat.setLocType(tagId);
                mat.setStatus(1);
                mat.setCreateTime(now);
                mat.setUpdateTime(now);
                if (!matService.insert(mat)) {
                    throw new CoolException("服务器内部错误,请联系管理员");
                        throw new CoolException("同步新物料错误[" + logInfo + "]");
                } else {
                    log.info("同步新物料[商品编号:{}]", mat.getMatnr());
                        log.info("同步新物料[{}]", logInfo);
                }
                    break;
                case "delete":
                    if (mat == null) {
                        throw new CoolException("商品信息不存在[" + logInfo + "]");
                    }
                    if (matService.delete(new EntityWrapper<Mat>().eq("matnr", matParam.getMatnr()))) {
                        log.info("删除物料[{}]", logInfo);
            } else {
                        throw new CoolException("删除已存在商品信息失败[" + logInfo + "]");
                    }
                    break;
                case "update":
                    if (mat == null) {
                        throw new CoolException("商品信息不存在[" + logInfo + "]");
                    }
                mat.sync(matParam);
                if (!matService.update(mat, new EntityWrapper<Mat>().eq("matnr", matParam.getMatnr()))) {
                    throw new CoolException("更新已存在商品信息失败,请联系管理员");
                        throw new CoolException("更新已存在商品信息失败[" + logInfo + "]");
                    } else {
                        log.info("更新物料[:{}]", logInfo);
                    }
                    break;
                default:
                    throw new CoolException("商品信息操作类型不存在[" + logInfo + "]");
                }
            }
        }
    }
}