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

136 lines
6.2 KiB
Java

package com.glxp.api.controller.inv;
import cn.hutool.core.util.StrUtil;
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.InvProductDetailEntity;
import com.glxp.api.req.basic.FilterUdiInfoRequest;
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.InvProductDetailService;
import com.glxp.api.util.DateUtil;
import com.glxp.api.util.udi.FilterUdiUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@RestController
public class UdiTraceController {
@Resource
UdiRelevanceService udiRelevanceService;
@Resource
UdiProductService udiProductService;
@Resource
InvProductDetailService invProductDetailService;
@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(DateUtil.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, "未查询到数据!");
}
}
}