自动化立体仓库 - WMS系统
chen.llin
2025-12-25 c7b54b961679677b84fbbd5f0555748064479382
库存明细API
1个文件已添加
1个文件已修改
169 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/OpenController.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/OpenLocDetlQueryParam.java 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -4,11 +4,16 @@
import com.core.annotations.AppAuth;
import com.core.common.*;
import com.core.exception.CoolException;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.zy.asrs.entity.AgvCallbackDto;
import com.zy.asrs.entity.LocDetl;
import com.zy.asrs.entity.param.MatSyncParam;
import com.zy.asrs.entity.param.OpenLocDetlQueryParam;
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.service.LocDetlService;
import com.zy.asrs.service.OpenService;
import com.zy.common.model.DetlDto;
import com.zy.common.model.MesPakinParam;
@@ -18,10 +23,12 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * Created by vincent on 2022/4/8
@@ -38,6 +45,9 @@
    @Autowired
    private OpenService openService;
    @Resource
    private LocDetlService locDetlService;
    @PostMapping("/api/agv_callback")
    @AppAuth(memo = "agv任务回调")
@@ -210,6 +220,32 @@
        return R.ok().add(openService.queryStock());
    }
    /**
     * 库存明细查询
     */
    @PostMapping("/locDetl/list/default/v1")
    @AppAuth(memo = "库存明细查询")
    public R queryLocDetlList(@RequestHeader(required = false) String appkey,
                              @RequestBody OpenLocDetlQueryParam param,
                              HttpServletRequest request) {
        auth(appkey, param, request);
        if (Cools.isEmpty(param)) {
            return R.parse(BaseRes.PARAM);
        }
        EntityWrapper<LocDetl> wrapper = new EntityWrapper<>();
        Map<String, Object> paramMap = param.toQueryMap();
        excludeTrash(paramMap);
        param.convertToWrapper(wrapper);
        allLike(LocDetl.class, paramMap.keySet(), wrapper, param.getCondition());
        if (!Cools.isEmpty(param.getOrderByField())) {
            wrapper.orderBy(humpToLine(param.getOrderByField()), "asc".equals(param.getOrderByType()));
        }
        Integer curr = param.getCurr() != null ? param.getCurr() : 1;
        Integer limit = param.getLimit() != null ? param.getLimit() : 10;
        return R.ok(locDetlService.selectPage(new Page<>(curr, limit), wrapper));
    }
    private void auth(String appkey, Object obj, HttpServletRequest request) {
        log.info("{}接口被访问;appkey:{};请求数据:{}", request.getRequestURI(), appkey, JSON.toJSONString(obj));
        request.setAttribute("cache", obj);
src/main/java/com/zy/asrs/entity/param/OpenLocDetlQueryParam.java
New file
@@ -0,0 +1,133 @@
package com.zy.asrs.entity.param;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.zy.asrs.entity.LocDetl;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.HashMap;
import java.util.Map;
/**
 * 库存明细查询参数
 */
@Data
public class OpenLocDetlQueryParam {
    private static final String RANGE_TIME_LINK = " - ";
    @ApiModelProperty(value = "当前页码", example = "1")
    private Integer curr = 1;
    @ApiModelProperty(value = "每页数量", example = "10")
    private Integer limit = 10;
    @ApiModelProperty(value = "排序字段")
    private String orderByField;
    @ApiModelProperty(value = "排序类型", example = "asc")
    private String orderByType;
    @ApiModelProperty(value = "通用查询条件")
    private String condition;
    @ApiModelProperty(value = "库位号")
    private String locNo;
    @ApiModelProperty(value = "托盘号")
    private String zpallet;
    @ApiModelProperty(value = "物料编码")
    private String matnr;
    @ApiModelProperty(value = "规格")
    private String specs;
    @ApiModelProperty(value = "冻结状态")
    private String frozen;
    /**
     * 将查询参数转换为 EntityWrapper 查询条件
     * @param wrapper EntityWrapper 对象
     */
    public void convertToWrapper(EntityWrapper<LocDetl> wrapper) {
        if (!Cools.isEmpty(locNo)) {
            String val = String.valueOf(locNo);
            if (val.contains(RANGE_TIME_LINK)) {
                String[] dates = val.split(RANGE_TIME_LINK);
                wrapper.ge("loc_no", DateUtils.convert(dates[0]));
                wrapper.le("loc_no", DateUtils.convert(dates[1]));
            } else {
                wrapper.eq("loc_no", locNo);
            }
        }
        if (!Cools.isEmpty(zpallet)) {
            String val = String.valueOf(zpallet);
            if (val.contains(RANGE_TIME_LINK)) {
                String[] dates = val.split(RANGE_TIME_LINK);
                wrapper.ge("zpallet", DateUtils.convert(dates[0]));
                wrapper.le("zpallet", DateUtils.convert(dates[1]));
            } else {
                wrapper.like("zpallet", zpallet);
            }
        }
        if (!Cools.isEmpty(matnr)) {
            String val = String.valueOf(matnr);
            if (val.contains(RANGE_TIME_LINK)) {
                String[] dates = val.split(RANGE_TIME_LINK);
                wrapper.ge("matnr", DateUtils.convert(dates[0]));
                wrapper.le("matnr", DateUtils.convert(dates[1]));
            } else {
                wrapper.like("matnr", matnr);
            }
        }
        if (!Cools.isEmpty(specs)) {
            String val = String.valueOf(specs);
            if (val.contains(RANGE_TIME_LINK)) {
                String[] dates = val.split(RANGE_TIME_LINK);
                wrapper.ge("specs", DateUtils.convert(dates[0]));
                wrapper.le("specs", DateUtils.convert(dates[1]));
            } else {
                wrapper.like("specs", specs);
            }
        }
        if (!Cools.isEmpty(frozen)) {
            String val = String.valueOf(frozen);
            if (val.contains(RANGE_TIME_LINK)) {
                String[] dates = val.split(RANGE_TIME_LINK);
                wrapper.ge("frozen", DateUtils.convert(dates[0]));
                wrapper.le("frozen", DateUtils.convert(dates[1]));
            } else {
                wrapper.like("frozen", frozen);
            }
        }
    }
    /**
     * 转换为查询条件 Map(用于 excludeTrash 和 allLike)
     * @return Map 对象
     */
    public Map<String, Object> toQueryMap() {
        Map<String, Object> paramMap = new HashMap<>();
        if (!Cools.isEmpty(locNo)) {
            paramMap.put("locNo", locNo);
        }
        if (!Cools.isEmpty(zpallet)) {
            paramMap.put("zpallet", zpallet);
        }
        if (!Cools.isEmpty(matnr)) {
            paramMap.put("matnr", matnr);
        }
        if (!Cools.isEmpty(specs)) {
            paramMap.put("specs", specs);
        }
        if (!Cools.isEmpty(frozen)) {
            paramMap.put("frozen", frozen);
        }
        return paramMap;
    }
}