自动化立体仓库 - WMS系统
zhang
2025-05-11 a2887a248fdf3d67175529e9e687d8feef965466
接口编写
4个文件已修改
1个文件已添加
350 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/OpenController.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/MatSyncParam.java 199 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/OpenService.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -5,10 +5,7 @@
import com.core.common.*;
import com.core.exception.CoolException;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.entity.param.OpenOrderCompleteParam;
import com.zy.asrs.entity.param.OpenOrderPakinParam;
import com.zy.asrs.entity.param.OpenOrderPakoutParam;
import com.zy.asrs.entity.param.PackParam;
import com.zy.asrs.entity.param.*;
import com.zy.asrs.service.OpenService;
import com.zy.asrs.service.WrkMastService;
import com.zy.common.model.DetlDto;
@@ -140,7 +137,23 @@
    @PostMapping("/order/matSync/default/v2")
//    @AppAuth(memo = "商品信息同步接口")
    public synchronized R syncMatInfoV2(@RequestHeader(required = false) String appkey,
                                        @RequestBody(required = false) MatSyncParam.MatParam param,
                                        HttpServletRequest request){
        auth(appkey, param, request);
        if (Cools.isEmpty(param)) {
            return R.parse(BaseRes.PARAM);
        }
        MatSyncParam matSyncParam = new MatSyncParam();
        List<MatSyncParam.MatParam> objects = new ArrayList<>();
        objects.add(param);
        matSyncParam.matDetails = objects;
        openService.syncMat(matSyncParam);
        return R.ok();
    }
src/main/java/com/zy/asrs/entity/param/MatSyncParam.java
New file
@@ -0,0 +1,199 @@
package com.zy.asrs.entity.param;
import lombok.Data;
import java.util.List;
/**
 * 商品同步接口,参数
 * Created on 2022/6/22
 */
@Data
public class MatSyncParam {
    /**
     *  创建时间
     */
    public String createTime;
    public List<MatParam> matDetails;
    @Data
    public static class MatParam{
        /**
         * 商品编号
         */
        private String matnr;
        /**
         * 商品名称
         */
        private String maktx;
        /**
         * 商品分类
         */
        private String groupCode;
        /**
         * 分类名称
         */
        private String groupName;
        /**
         * 别名
         */
        private String name;
        /**
         * 规格
         */
        private String specs;
        /**
         * 型号
         */
        private String model;
        /**
         * 颜色
         */
        private  String color;
        /**
         * 品牌
         */
        private String brand;
        /**
         * 单位
         */
        private String unit;
        /**
         * 单价
         */
        private Double price;
        /**
         * sku
         */
        private String sku;
        /**
         * 单位量
         */
        private Double units;
        /**
         * 条码
         */
        private String barcode;
        /**
         * 产地
         */
        private String origin;
        /**
         * 厂家
         */
        private String manu;
        /**
         * 生产日期
         */
        private String manuDate;
        /**
         * 品项数
         */
        private String itemNum;
        /**
         * 安全库存量
         */
        private Double safeQty;
        /**
         * 重量
         */
        private Double weight;
        /**
         * 长度
         */
        private Double length;
        /**
         * 体积
         */
        private Double volume;
        /**
         * 三方编码
         */
        private String threeCode;
        /**
         * 供应商
         */
        private String supp;
        /**
         * 供应商编码
         */
        private String suppCode;
        /**
         * 是否批次 1: 是  0: 否
         */
        private Integer beBatch;
        /**
         * 保质期
         */
        private String deadTime;
        /**
         * 预警天数
         */
        private Integer deadWarn;
        /**
         * 来源 1: 制造  2: 采购  3: 外协
         */
        private Integer source;
        /**
         * 要求检验 1: 是  0: 否
         */
        private Integer inspect;
        /**
         * 危险品 1: 是  0: 否
         */
        private Integer danger;
        /**
         * 状态 1: 正常  0: 禁用
         */
        private Integer status;
        /**
         * 添加人员
         */
        private String createBy;
        /**
         * 添加时间
         */
        private String createTime;
        /**
         * 备注
         */
        private String memo;
    }
}
src/main/java/com/zy/asrs/service/OpenService.java
@@ -1,10 +1,7 @@
package com.zy.asrs.service;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.entity.param.OpenOrderCompleteParam;
import com.zy.asrs.entity.param.OpenOrderPakinParam;
import com.zy.asrs.entity.param.OpenOrderPakoutParam;
import com.zy.asrs.entity.param.PackParam;
import com.zy.asrs.entity.param.*;
import com.zy.asrs.entity.result.OpenOrderCompeteResult;
import com.zy.asrs.entity.result.StockVo;
@@ -43,4 +40,7 @@
    void packageUp(PackParam param);
    void pickToFill(WrkMast wrkMast);
    void syncMat(MatSyncParam param);
}
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -7,10 +7,7 @@
import com.core.common.SnowflakeIdWorker;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.OpenOrderCompleteParam;
import com.zy.asrs.entity.param.OpenOrderPakinParam;
import com.zy.asrs.entity.param.OpenOrderPakoutParam;
import com.zy.asrs.entity.param.PackParam;
import com.zy.asrs.entity.param.*;
import com.zy.asrs.entity.result.OpenOrderCompeteResult;
import com.zy.asrs.entity.result.StockVo;
import com.zy.asrs.mapper.TagMapper;
@@ -18,6 +15,7 @@
import com.zy.asrs.utils.MatUtils;
import com.zy.common.model.DetlDto;
import com.zy.common.utils.NodeUtils;
import com.zy.common.utils.Synchro;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -280,14 +278,15 @@
            }
        }
    }
    @Override
    @Transactional
    public void pickToFill( WrkMast wrkMast ){
    public void pickToFill(WrkMast wrkMast) {
        Date now = new Date();
        wrkMast.setIoType(101);
        wrkMast.setMemo("捡料转全板工作档");
        wrkMastService.update(wrkMast,new EntityWrapper<WrkMast>()
                .eq("wrk_no",wrkMast.getWrkNo()));
        wrkMastService.update(wrkMast, new EntityWrapper<WrkMast>()
                .eq("wrk_no", wrkMast.getWrkNo()));
        wrkDetlService.deleteByWrkNo(wrkMast.getWrkNo());
        List<LocDetl> locDetls = locDetlService.selectByLocNo(wrkMast.getSourceLocNo());
        for (LocDetl locDetl : locDetls) {
@@ -304,7 +303,7 @@
            wrkDetl.setMatType(locDetl.getMatType());
            wrkDetlService.insert(wrkDetl);
        }
        locMastService.updateLocSts(wrkMast.getSourceLocNo(),"R");
        locMastService.updateLocSts(wrkMast.getSourceLocNo(), "R");
    }
@@ -474,4 +473,107 @@
        }
    }
    @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();
            Mat mat = matService.selectByMatnr(matParam.getMatnr());
            if (mat == null) {
                mat = new Mat();
                // 分类
                Long tagId;
                // 一级分类
                if (!Cools.isEmpty(matParam.getGroupCode()) && !Cools.isEmpty(matParam.getGroupName())) {
                    Tag priTag = tagService.selectOne(new EntityWrapper<Tag>().eq("name", matParam.getGroupCode()));
                    if (priTag == null) {
                        Tag top = tagService.getTop();
                        NodeUtils nodeUtils = new NodeUtils();
                        nodeUtils.executePath(top.getId());
                        priTag = new Tag(
                                null,    // 编号
                                matParam.getGroupCode(),    // 名称
                                top.getId(),    // 父级
                                top.getName(),    // 父级名称
                                nodeUtils.path.toString(),    // 关联路径
                                nodeUtils.pathName.toString(),    // 关联路径名
                                0,    // 类型
                                null,    // 负责人
                                null,    // 图片
                                null,    // 简要描述
                                null,    // 数量
                                2,    // 等级
                                null,    // 排序
                                1,    // 状态
                                now,    // 添加时间
                                null,    // 添加人员
                                now,    // 修改时间
                                null,    // 修改人员
                                null    // 备注
                        );
                        if (tagMapper.insert(priTag) == 0) {
                            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();
                } else {
                    tagId = tagService.getTop().getId();
                }
                Synchro.Copy(matParam,mat);
                mat.setTagId(tagId);
                mat.setStatus(1);
                mat.setCreateTime(now);
                mat.setUpdateTime(now);
                if (!matService.insert(mat)) {
                    throw new CoolException("服务器内部错误,请联系管理员");
                } else {
                    log.info("同步新物料[商品编号:{}]", mat.getMatnr());
                }
            } else {
                Synchro.Copy(matParam,mat);
                if (!matService.update(mat, new EntityWrapper<Mat>().eq("matnr", matParam.getMatnr()))) {
                    throw new CoolException("更新已存在商品信息失败,请联系管理员");
                }
            }
        }
    }
}
src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
@@ -89,7 +89,7 @@
                try {
                    // 保存接口日志
                    apiLogService.save(
                            "成品库入库上报",
                            "入库上报",
                            MesConstant.URL + MesConstant.PAKIN_URL,
                            null,
                            "127.0.0.1",
@@ -143,7 +143,7 @@
                try {
                    // 保存接口日志
                    apiLogService.save(
                            "成品库出库上报",
                            "出库上报",
                            MesConstant.URL + MesConstant.PAKOUT_URL,
                            null,
                            "127.0.0.1",