|
|
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.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.util.MsDateUtil;
|
|
|
import com.glxp.api.util.udi.FilterUdiUtils;
|
|
|
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;
|
|
|
|
|
|
@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<InvProductDetailEntity> invProductDetailEntities = invProductDetailService.filterInvProductDetailList(filterInvProductDetailRequest);
|
|
|
if (invProductDetailEntities.size() > 0) {
|
|
|
Map<String, String> filterMap = new HashMap<>();
|
|
|
|
|
|
for (InvProductDetailEntity 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());
|
|
|
InvProductDetailEntity 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, "未查询到数据!");
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@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<InvProductDetailEntity> 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<InvProductDetailEntity> temps = invProductDetailService.filterInvProductDetailList(filterInvProductDetailRequest);
|
|
|
if (CollUtil.isNotEmpty(temps)) {
|
|
|
Map<String, List<InvProductDetailEntity>> filterMaps = temps.stream().collect(Collectors.groupingBy(InvProductDetailEntity::getBatchNo));
|
|
|
if (filterMaps.size() > 0) {
|
|
|
for (String bacthNo : filterMaps.keySet()) {
|
|
|
filterInvProductDetailRequest = new FilterInvProductDetailRequest();
|
|
|
filterInvProductDetailRequest.setRelId(udiRelevanceResponse.getId() + "");
|
|
|
filterInvProductDetailRequest.setBatchNo(bacthNo);
|
|
|
List<InvProductDetailEntity> invProductDetailEntities = invProductDetailService.filterInvProductDetailList(filterInvProductDetailRequest);
|
|
|
if (CollUtil.isNotEmpty(invProductDetailEntities)) {
|
|
|
mInvProductDetailEntities.addAll(invProductDetailEntities);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
filterInvProductDetailRequest = new FilterInvProductDetailRequest();
|
|
|
filterInvProductDetailRequest.setRelId(udiRelevanceResponse.getId() + "");
|
|
|
filterInvProductDetailRequest.setBatchNo(udiEntity.getBatchNo());
|
|
|
List<InvProductDetailEntity> invProductDetailEntities = invProductDetailService.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<InvProductDetailEntity> invProductDetailEntities = invProductDetailService.list(new QueryWrapper<InvProductDetailEntity>().likeRight("code", filterCodeTraceRequest.getCode()));
|
|
|
// List<InvProductDetailEntity> invProductDetailEntities = invProductDetailService.filterInvProductDetailList(filterInvProductDetailRequest);
|
|
|
if (CollUtil.isNotEmpty(invProductDetailEntities)) {
|
|
|
mInvProductDetailEntities.addAll(invProductDetailEntities);
|
|
|
}
|
|
|
}
|
|
|
if (mInvProductDetailEntities.size() > 0) {
|
|
|
Map<String, String> filterMap = new HashMap<>();
|
|
|
|
|
|
for (InvProductDetailEntity 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, "未查询到数据!");
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|