skyouc
2025-08-09 efa392d963d11000ef22c6778684648042a80ac6
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/MatController.java
@@ -4,23 +4,22 @@
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.parser.Feature;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zy.asrs.framework.common.Cools;
import com.zy.asrs.framework.common.R;
import com.zy.asrs.framework.exception.CoolException;
import com.zy.asrs.wms.asrs.entity.MatField;
import com.zy.asrs.wms.asrs.entity.MatFieldValue;
import com.zy.asrs.wms.asrs.entity.Tag;
import com.zy.asrs.wms.asrs.entity.*;
import com.zy.asrs.wms.asrs.entity.template.MatTemplate;
import com.zy.asrs.wms.asrs.service.MatFieldService;
import com.zy.asrs.wms.asrs.service.MatFieldValueService;
import com.zy.asrs.wms.asrs.service.TagService;
import com.zy.asrs.wms.asrs.service.impl.LocDetlServiceImpl;
import com.zy.asrs.wms.common.annotation.CacheData;
import com.zy.asrs.wms.common.annotation.OperationLog;
import com.zy.asrs.wms.common.domain.BaseParam;
import com.zy.asrs.wms.common.domain.KeyValVo;
import com.zy.asrs.wms.common.domain.PageParam;
import com.zy.asrs.wms.asrs.entity.Mat;
import com.zy.asrs.wms.asrs.service.MatService;
import com.zy.asrs.wms.system.controller.BaseController;
import com.zy.asrs.wms.utils.ExcelUtil;
@@ -32,6 +31,7 @@
import javax.servlet.http.HttpServletResponse;
import java.util.*;
import java.util.stream.Collectors;
@RestController
@RequestMapping("/api")
@@ -45,6 +45,8 @@
    private MatFieldValueService matFieldValueService;
    @Autowired
    private TagService tagService;
    @Autowired
    private LocDetlServiceImpl locDetlService;
    @PreAuthorize("hasAuthority('asrs:mat:list')")
    @PostMapping("/mat/page")
@@ -52,7 +54,9 @@
    public R page(@RequestBody Map<String, Object> map) {
        BaseParam baseParam = buildParam(map, BaseParam.class);
        PageParam<Mat, BaseParam> pageParam = new PageParam<>(baseParam, Mat.class);
        PageParam<Mat, BaseParam> page = matService.page(pageParam, pageParam.buildWrapper(true));
        QueryWrapper<Mat> queryWrapper = pageParam.buildWrapper(true);
        queryWrapper.orderByDesc("utiliz");
        PageParam<Mat, BaseParam> page = matService.page(pageParam, queryWrapper);
        JSONObject data = JSON.parseObject(JSON.toJSONString(page));
@@ -66,6 +70,44 @@
        return R.ok().add(data);
    }
    /**
     * @author Ryan
     * @date 2025/7/3
     * @description: 获取可出库物料信息
     * @version 1.0
     */
    @PreAuthorize("hasAuthority('asrs:mat:list')")
    @PostMapping("/locs/mats/page")
    public R getOutPage(@RequestBody Map<String, Object> param) {
        List<LocDetl> locDetls = locDetlService.list(new LambdaQueryWrapper<LocDetl>().select(LocDetl::getMatId));
        if (locDetls.isEmpty()) {
            return R.ok();
        }
        /**获取存物料信息*/
        Set<Long> ids = locDetls.stream().map(LocDetl::getMatId).collect(Collectors.toSet());
        BaseParam baseParam = buildParam(param, BaseParam.class);
        PageParam<Mat, BaseParam> pageParam = new PageParam<>(baseParam, Mat.class);
        QueryWrapper<Mat> queryWrapper = pageParam.buildWrapper(true);
        queryWrapper.orderByDesc("utiliz");
        queryWrapper.in("id", ids);
        PageParam<Mat, BaseParam> page = matService.page(pageParam, queryWrapper);
        JSONObject data = JSON.parseObject(JSON.toJSONString(page));
        List<Mat> records = page.getRecords();
        data.put("records", records);
        for (Mat mat : records) {
            List<MatFieldValue> list = matFieldValueService.list(new LambdaQueryWrapper<MatFieldValue>()
                    .eq(MatFieldValue::getMatId, mat.getId()));
            mat.syncField(list);
        }
        return R.ok(data);
    }
    @PreAuthorize("hasAuthority('asrs:mat:list')")
    @PostMapping("/mat/list")
@@ -86,6 +128,13 @@
    @PostMapping("/mat/save")
    public R save(@RequestBody HashMap<String,Object> param) {
        Mat mat = JSON.parseObject(JSON.toJSONString(param), Mat.class, Feature.DisableCircularReferenceDetect);
        if (Objects.isNull(mat)) {
            throw new CoolException("物料不能为空!!");
        }
        Mat mat1 = matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getMatnr, mat.getMatnr()));
        if (!Objects.isNull(mat1)) {
            throw new CoolException("当前物料编码已存在,不可重复添加!!");
        }
        if (!matService.save(mat)) {
            return R.error("添加失败");
        }