|  |  | 
 |  |  | 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;
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | import javax.servlet.http.HttpServletResponse;
 | 
 |  |  | import java.util.*;
 | 
 |  |  | import java.util.stream.Collectors;
 | 
 |  |  | 
 | 
 |  |  | @RestController
 | 
 |  |  | @RequestMapping("/api")
 | 
 |  |  | 
 |  |  |     private MatFieldValueService matFieldValueService;
 | 
 |  |  |     @Autowired
 | 
 |  |  |     private TagService tagService;
 | 
 |  |  |     @Autowired
 | 
 |  |  |     private LocDetlServiceImpl locDetlService;
 | 
 |  |  | 
 | 
 |  |  |     @PreAuthorize("hasAuthority('asrs:mat:list')")
 | 
 |  |  |     @PostMapping("/mat/page")
 | 
 |  |  | 
 |  |  |         BaseParam baseParam = buildParam(map, BaseParam.class);
 | 
 |  |  |         PageParam<Mat, BaseParam> pageParam = new PageParam<>(baseParam, Mat.class);
 | 
 |  |  |         QueryWrapper<Mat> queryWrapper = pageParam.buildWrapper(true);
 | 
 |  |  |         queryWrapper.orderByDesc("uniliz");
 | 
 |  |  |         queryWrapper.orderByDesc("utiliz");
 | 
 |  |  |         PageParam<Mat, BaseParam> page = matService.page(pageParam, queryWrapper);
 | 
 |  |  | 
 | 
 |  |  |         JSONObject data = JSON.parseObject(JSON.toJSONString(page));
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  |         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")
 | 
 |  |  | 
 |  |  |     @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("添加失败");
 | 
 |  |  |         }
 |