You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
udi-wms-java/src/main/java/com/glxp/api/controller/inv/UdiTraceController.java

232 lines
12 KiB
Java

package com.glxp.api.controller.inv;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
2 years ago
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageInfo;
import com.glxp.api.annotation.AuthRuleAnnotation;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.entity.basic.UdiEntity;
import com.glxp.api.entity.basic.UdiProductEntity;
import com.glxp.api.entity.inv.InvProductEntity;
import com.glxp.api.req.basic.FilterUdiRelRequest;
import com.glxp.api.req.inout.FilterOrderRequest;
import com.glxp.api.req.inv.FilterCodeTraceRequest;
import com.glxp.api.req.inv.FilterInvProductDetailRequest;
import com.glxp.api.res.PageSimpleResponse;
import com.glxp.api.res.basic.UdiRelevanceResponse;
import com.glxp.api.res.inout.IoOrderResponse;
import com.glxp.api.res.inv.UdiTraceResponse;
import com.glxp.api.service.basic.UdiProductService;
import com.glxp.api.service.basic.UdiRelevanceService;
import com.glxp.api.service.inout.IoOrderService;
import com.glxp.api.service.inv.impl.InvProductServiceNew;
import com.glxp.api.util.MsDateUtil;
import com.glxp.api.util.udi.FilterUdiUtils;
import com.glxp.api.vo.basic.InvProductNewVo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
@RestController
public class UdiTraceController {
@Resource
UdiRelevanceService udiRelevanceService;
@Resource
UdiProductService udiProductService;
@Resource
IoOrderService orderService;
@Resource
InvProductServiceNew invProductServiceNew;
//TODO 20241017 先把这个接口注释了
// @AuthRuleAnnotation("")
// @GetMapping("udiwarehouse/trace/filter")
// public BaseResponse list(FilterCodeTraceRequest filterCodeTraceRequest) {
// if (StrUtil.isEmpty(filterCodeTraceRequest.getCode())) {
// return ResultVOUtils.error(500, "UDI码不能为空");
// }
// UdiEntity udiEntity = FilterUdiUtils.getUdi(filterCodeTraceRequest.getCode());
// if (udiEntity == null) {
// return ResultVOUtils.error(500, "无效条码");
// }
// UdiRelevanceResponse udiInfoBean = udiRelevanceService.selectByNameCode(udiEntity.getUdi());
// if (udiInfoBean == null) {
// return ResultVOUtils.error(500, "耗材字典不存在此产品!");
// }
// List<UdiProductEntity> udiInfoEntities = udiProductService.findByUuids(udiInfoBean.getUuid());
// FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest();
// if (udiInfoEntities != null && udiInfoEntities.size() > 1) {
// filterInvProductDetailRequest.setRelId(udiInfoBean.getId() + "");
// filterInvProductDetailRequest.setBatchNo(udiEntity.getBatchNo());
// } else {
// filterInvProductDetailRequest.setCode(filterCodeTraceRequest.getCode());
// }
//
//
// filterInvProductDetailRequest.setSupId(filterCodeTraceRequest.getSupId());
// List<InvProductNewVo> invProductDetailEntities = invProductServiceNew.filterInvProductDetailList(filterInvProductDetailRequest);
// if (invProductDetailEntities.size() > 0) {
// Map<String, String> filterMap = new HashMap<>();
//
// for (InvProductNewVo invProductDetailEntity : invProductDetailEntities) {
// filterMap.put(invProductDetailEntity.getOrderId(), invProductDetailEntity.getOrderId());
// }
// List<String> orderIds = new ArrayList<>();
// for (String key : filterMap.keySet()) {
// orderIds.add(key);
// }
// FilterOrderRequest filterOrderRequest = new FilterOrderRequest();
// filterOrderRequest.setOrderIds(orderIds);
// List<IoOrderResponse> orderEntities = orderService.filterList(filterOrderRequest);
//
//
// FilterUdiRelRequest filterUdiInfoRequest = new FilterUdiRelRequest();
// filterUdiInfoRequest.setNameCode(udiEntity.getUdi());
// List<UdiRelevanceResponse> udiRelevanceResponses = udiRelevanceService.filterUdiGp(filterUdiInfoRequest);
// UdiRelevanceResponse udiRelevance = null;
// if (udiRelevanceResponses != null && udiRelevanceResponses.size() > 0) {
// udiRelevance = udiRelevanceResponses.get(0);
// }
//
// UdiRelevanceResponse finalUdiRelevance = udiRelevance;
// List<UdiTraceResponse> udiTraceResponseList = orderEntities.stream().map(item ->
// {
// UdiTraceResponse udiTraceResponse = new UdiTraceResponse();
//
// udiTraceResponse.setOrderId(item.getBillNo());
// udiTraceResponse.setBillTypeName(item.getBillTypeName());
// udiTraceResponse.setFromCorp(item.getFromName());
// udiTraceResponse.setActDate(MsDateUtil.formatDate(item.getCreateTime()));
// if (finalUdiRelevance != null) {
// udiTraceResponse.setYlqxzcrbarmc(finalUdiRelevance.getYlqxzcrbarmc());
// udiTraceResponse.setCpmctymc(finalUdiRelevance.getCpmctymc());
// udiTraceResponse.setGgxh(finalUdiRelevance.getGgxh());
// InvProductNewVo invProductDetailEntity = invProductDetailEntities.get(0);
// udiTraceResponse.setBatchNo(invProductDetailEntity.getBatchNo());
// udiTraceResponse.setProduceDate(invProductDetailEntity.getProduceDate());
// udiTraceResponse.setExpireDate(invProductDetailEntity.getExpireDate());
// udiTraceResponse.setCount(invProductDetailEntity.getCount());
// }
// return udiTraceResponse;
// }).collect(Collectors.toList());
//
//
// PageInfo<UdiTraceResponse> pageInfo;
// pageInfo = new PageInfo<>(udiTraceResponseList);
// PageSimpleResponse<UdiTraceResponse> pageSimpleResponse = new PageSimpleResponse<>();
// pageSimpleResponse.setTotal(pageInfo.getTotal());
// pageSimpleResponse.setList(udiTraceResponseList);
// return ResultVOUtils.success(pageSimpleResponse);
// } else {
// return ResultVOUtils.error(500, "未查询到数据!");
// }
//
// }
//TODO 20241017 先把这个接口注释了
// @AuthRuleAnnotation("")
// @GetMapping("spms/inv/products/order/trace")
// public BaseResponse filterOrderTrace(FilterCodeTraceRequest filterCodeTraceRequest) {
//
// if (filterCodeTraceRequest.getCode() == null) {
// return ResultVOUtils.success();
// }
// System.out.println(filterCodeTraceRequest + "---------------------------------------------");
// UdiEntity udiEntity = FilterUdiUtils.getUdi(filterCodeTraceRequest.getCode());
// if (udiEntity == null) {
// return ResultVOUtils.error(500, "无效条码");
// }
// UdiRelevanceResponse udiInfoBean = udiRelevanceService.selectByNameCode(udiEntity.getUdi());
// if (udiInfoBean == null) {
// return ResultVOUtils.error(500, "耗材字典不存在此产品!");
// }
// List<InvProductNewVo> mInvProductDetailEntities = new ArrayList<>();
// //判断是否多级包装
// List<UdiProductEntity> udiInfoEntities = udiProductService.findByUuids(udiInfoBean.getUuid());
//
// if (udiInfoEntities != null && udiInfoEntities.size() > 1) {
// //多级包装根据产品ID批次号查询
//
// //1.判断是否di关联多个产品ID
// List<UdiRelevanceResponse> udiRelevanceResponses = udiRelevanceService.selectAllByNameCode(udiEntity.getUdi());
// if (CollUtil.isNotEmpty(udiRelevanceResponses)) {
//
// for (UdiRelevanceResponse udiRelevanceResponse : udiRelevanceResponses) {
// //假设条码不完整
// FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest();
// filterInvProductDetailRequest.setCode(filterCodeTraceRequest.getCode());
// filterInvProductDetailRequest.setSupId(filterCodeTraceRequest.getSupId());
// List<InvProductNewVo> temps = invProductServiceNew.filterInvProductDetailList(filterInvProductDetailRequest);
// if (CollUtil.isNotEmpty(temps)) {
// Map<String, List<InvProductNewVo>> filterMaps = temps.stream().collect(Collectors.groupingBy(InvProductNewVo::getBatchNo));
// if (filterMaps.size() > 0) {
// for (String bacthNo : filterMaps.keySet()) {
// filterInvProductDetailRequest = new FilterInvProductDetailRequest();
// filterInvProductDetailRequest.setRelId(udiRelevanceResponse.getId() + "");
// filterInvProductDetailRequest.setBatchNo(bacthNo);
// List<InvProductNewVo> invProductDetailEntities = invProductServiceNew.filterInvProductDetailList(filterInvProductDetailRequest);
// if (CollUtil.isNotEmpty(invProductDetailEntities)) {
// mInvProductDetailEntities.addAll(invProductDetailEntities);
// }
// }
// }
// } else {
// filterInvProductDetailRequest = new FilterInvProductDetailRequest();
// filterInvProductDetailRequest.setRelId(udiRelevanceResponse.getId() + "");
// filterInvProductDetailRequest.setBatchNo(udiEntity.getBatchNo());
// List<InvProductEntity> invProductDetailEntities = invProductServiceNew.selectByUnique(udiRelevanceResponse.getId(), udiEntity.getBatchNo(), null, null, null);
// if (CollUtil.isNotEmpty(invProductDetailEntities)) {
// mInvProductDetailEntities.addAll(invProductDetailEntities);
// }
// }
// }
// }
// } else {
// //单级包装
// FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest();
// filterInvProductDetailRequest.setCode(filterCodeTraceRequest.getCode());
// filterInvProductDetailRequest.setSupId(filterCodeTraceRequest.getSupId());
//
// List<InvProductNewVo> invProductDetailEntities = invProductServiceNew.list(new QueryWrapper<InvProductNewVo>().likeRight("code", filterCodeTraceRequest.getCode()));
//// List<InvProductNewVo> invProductDetailEntities = invProductServiceNew.filterInvProductDetailList(filterInvProductDetailRequest);
// if (CollUtil.isNotEmpty(invProductDetailEntities)) {
// mInvProductDetailEntities.addAll(invProductDetailEntities);
// }
// }
// if (mInvProductDetailEntities.size() > 0) {
// Map<String, String> filterMap = new HashMap<>();
//
// for (InvProductNewVo invProductDetailEntity : mInvProductDetailEntities) {
// filterMap.put(invProductDetailEntity.getOrderId(), invProductDetailEntity.getOrderId());
// }
// List<String> orderIds = new ArrayList<>();
// for (String key : filterMap.keySet()) {
// orderIds.add(key);
// }
// FilterOrderRequest filterOrderRequest = new FilterOrderRequest();
// filterOrderRequest.setOrderIds(orderIds);
// filterOrderRequest.setPage(filterCodeTraceRequest.getPage());
// filterOrderRequest.setLimit(filterCodeTraceRequest.getLimit());
// List<IoOrderResponse> orderEntities = orderService.filterList(filterOrderRequest);
// Collections.sort(orderEntities, Comparator.comparing(IoOrderResponse::getCreateTime));
// PageInfo<IoOrderResponse> pageInfo;
// pageInfo = new PageInfo<>(orderEntities);
// PageSimpleResponse<IoOrderResponse> pageSimpleResponse = new PageSimpleResponse<>();
// pageSimpleResponse.setTotal(pageInfo.getTotal());
// pageSimpleResponse.setList(orderEntities);
// return ResultVOUtils.success(pageSimpleResponse);
// } else {
// return ResultVOUtils.error(500, "未查询到数据!");
// }
//
// }
}