package com.glxp.api.controller.inv; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; 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 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 invProductDetailEntities = invProductServiceNew.filterInvProductDetailList(filterInvProductDetailRequest); // if (invProductDetailEntities.size() > 0) { // Map filterMap = new HashMap<>(); // // for (InvProductNewVo invProductDetailEntity : invProductDetailEntities) { // filterMap.put(invProductDetailEntity.getOrderId(), invProductDetailEntity.getOrderId()); // } // List orderIds = new ArrayList<>(); // for (String key : filterMap.keySet()) { // orderIds.add(key); // } // FilterOrderRequest filterOrderRequest = new FilterOrderRequest(); // filterOrderRequest.setOrderIds(orderIds); // List orderEntities = orderService.filterList(filterOrderRequest); // // // FilterUdiRelRequest filterUdiInfoRequest = new FilterUdiRelRequest(); // filterUdiInfoRequest.setNameCode(udiEntity.getUdi()); // List udiRelevanceResponses = udiRelevanceService.filterUdiGp(filterUdiInfoRequest); // UdiRelevanceResponse udiRelevance = null; // if (udiRelevanceResponses != null && udiRelevanceResponses.size() > 0) { // udiRelevance = udiRelevanceResponses.get(0); // } // // UdiRelevanceResponse finalUdiRelevance = udiRelevance; // List 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 pageInfo; // pageInfo = new PageInfo<>(udiTraceResponseList); // PageSimpleResponse 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 mInvProductDetailEntities = new ArrayList<>(); // //判断是否多级包装 // List udiInfoEntities = udiProductService.findByUuids(udiInfoBean.getUuid()); // // if (udiInfoEntities != null && udiInfoEntities.size() > 1) { // //多级包装根据产品ID,批次号查询 // // //1.判断是否di关联多个产品ID // List 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 temps = invProductServiceNew.filterInvProductDetailList(filterInvProductDetailRequest); // if (CollUtil.isNotEmpty(temps)) { // Map> 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 invProductDetailEntities = invProductServiceNew.filterInvProductDetailList(filterInvProductDetailRequest); // if (CollUtil.isNotEmpty(invProductDetailEntities)) { // mInvProductDetailEntities.addAll(invProductDetailEntities); // } // } // } // } else { // filterInvProductDetailRequest = new FilterInvProductDetailRequest(); // filterInvProductDetailRequest.setRelId(udiRelevanceResponse.getId() + ""); // filterInvProductDetailRequest.setBatchNo(udiEntity.getBatchNo()); // List 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 invProductDetailEntities = invProductServiceNew.list(new QueryWrapper().likeRight("code", filterCodeTraceRequest.getCode())); //// List invProductDetailEntities = invProductServiceNew.filterInvProductDetailList(filterInvProductDetailRequest); // if (CollUtil.isNotEmpty(invProductDetailEntities)) { // mInvProductDetailEntities.addAll(invProductDetailEntities); // } // } // if (mInvProductDetailEntities.size() > 0) { // Map filterMap = new HashMap<>(); // // for (InvProductNewVo invProductDetailEntity : mInvProductDetailEntities) { // filterMap.put(invProductDetailEntity.getOrderId(), invProductDetailEntity.getOrderId()); // } // List 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 orderEntities = orderService.filterList(filterOrderRequest); // Collections.sort(orderEntities, Comparator.comparing(IoOrderResponse::getCreateTime)); // PageInfo pageInfo; // pageInfo = new PageInfo<>(orderEntities); // PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); // pageSimpleResponse.setTotal(pageInfo.getTotal()); // pageSimpleResponse.setList(orderEntities); // return ResultVOUtils.success(pageSimpleResponse); // } else { // return ResultVOUtils.error(500, "未查询到数据!"); // } // // } }