UDI流向查询

fengcang
anthonyywj2 3 years ago
parent c49f18a34a
commit 1d0c2078d7

@ -55,6 +55,7 @@ public class SyncDataSetController {
) {
SyncDataSetEntity syncDataSetEntity = new SyncDataSetEntity();
BeanUtils.copyProperties(syncDataSetResponse, syncDataSetEntity);
syncDataSetEntity.setId(1);
List<SyncDataBustypeEntity> busTypes = syncDataSetResponse.getBusTypes();
syncDataBustypeService.deleteAll();
if (CollUtil.isNotEmpty(busTypes))

@ -1,41 +1,130 @@
package com.glxp.api.admin.controller.inout;
import com.github.pagehelper.PageInfo;
import com.glxp.api.admin.annotation.AuthRuleAnnotation;
import com.glxp.api.admin.entity.basic.UdiEntity;
import com.glxp.api.admin.entity.basic.UdiInfoEntity;
import com.glxp.api.admin.entity.inout.OrderEntity;
import com.glxp.api.admin.entity.inout.WarehouseEntity;
import com.glxp.api.admin.entity.inventory.InvProductDetailEntity;
import com.glxp.api.admin.req.basic.FilterUdiInfoRequest;
import com.glxp.api.admin.req.inout.WarehouseQueryRequest;
import com.glxp.api.admin.req.inventory.FilterCodeTraceRequest;
import com.glxp.api.admin.req.inventory.FilterInvProductDetailRequest;
import com.glxp.api.admin.res.PageSimpleResponse;
import com.glxp.api.admin.res.basic.UdiRelevanceResponse;
import com.glxp.api.admin.res.basic.UdiTraceResponse;
import com.glxp.api.admin.service.basic.UdiInfoService;
import com.glxp.api.admin.service.basic.UdiRelevanceService;
import com.glxp.api.admin.service.inout.CodesService;
import com.glxp.api.admin.util.GennerOrderUtils;
import com.glxp.api.admin.util.OrderNoTypeBean;
import com.glxp.api.admin.service.inout.OrderService;
import com.glxp.api.admin.service.inventory.InvProductDetailService;
import com.glxp.api.admin.util.FilterUdiUtils;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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 {
private static final Logger log = LoggerFactory.getLogger(UdiTraceController.class);
@Resource
private CodesService warehouseService;
@Resource
UdiRelevanceService udiRelevanceService;
@Resource
private UdiInfoService udiInfoService;
@Resource
InvProductDetailService invProductDetailService;
@Resource
OrderService orderService;
@AuthRuleAnnotation("")
@GetMapping("udiwarehouse/trace/filter")
public BaseResponse list(WarehouseQueryRequest warehouseQueryRequest) {
public BaseResponse list(FilterCodeTraceRequest filterCodeTraceRequest) {
if (filterCodeTraceRequest.getCode() == null) {
return ResultVOUtils.success();
}
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<UdiInfoEntity> udiInfoEntities = udiInfoService.findByUuids(udiInfoBean.getUuid());
FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest();
if (udiInfoEntities != null && udiInfoEntities.size() > 1) {
filterInvProductDetailRequest.setProductIdFk(udiInfoBean.getId() + "");
filterInvProductDetailRequest.setBatchNo(udiEntity.getBatchNo());
} else {
filterInvProductDetailRequest.setOriginCode(filterCodeTraceRequest.getCode());
}
filterInvProductDetailRequest.setSupId(filterCodeTraceRequest.getSupId());
List<InvProductDetailEntity> invProductDetailEntities = invProductDetailService.filterInvProduct(filterInvProductDetailRequest);
if (invProductDetailEntities.size() > 0) {
Map<String, String> filterMap = new HashMap<>();
for (InvProductDetailEntity invProductDetailEntity : invProductDetailEntities) {
filterMap.put(invProductDetailEntity.getOrderIdFk(), invProductDetailEntity.getOrderIdFk());
}
List<String> orderIds = new ArrayList<>();
for (String key : filterMap.keySet()) {
orderIds.add(key);
}
List<OrderEntity> orderEntities = orderService.filterListByOrder(orderIds);
FilterUdiInfoRequest filterUdiInfoRequest = new FilterUdiInfoRequest();
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();
BeanUtils.copyProperties(item, udiTraceResponse);
if (finalUdiRelevance != null) {
udiTraceResponse.setYlqxzcrbarmc(finalUdiRelevance.getYlqxzcrbarmc());
udiTraceResponse.setCpmctymc(finalUdiRelevance.getCpmctymc());
udiTraceResponse.setGgxh(finalUdiRelevance.getGgxh());
udiTraceResponse.setOrderId(item.getId());
}
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("udiwarehouse/trace/filterOld")
public BaseResponse filterOld(WarehouseQueryRequest warehouseQueryRequest) {
List<WarehouseEntity> warehouseEntityList = warehouseService.findByOrderId(warehouseQueryRequest);
if (warehouseEntityList != null && warehouseEntityList.size() > 0) {
WarehouseEntity warehouseEntity = warehouseEntityList.get(0);

@ -1,5 +1,6 @@
package com.glxp.api.admin.controller.inventory;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.github.pagehelper.PageInfo;
import com.glxp.api.admin.annotation.AuthRuleAnnotation;
@ -54,6 +55,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@RestController
@ -81,7 +83,7 @@ public class InvProductsController {
@AuthRuleAnnotation("")
@GetMapping("spms/inv/products/filter")
public BaseResponse filterInvProduct(FilterInvProductRequest filterInvProductRequest) {
boolean showSup = true;
boolean showSup = false;
if (StrUtil.isNotEmpty(filterInvProductRequest.getUdiCode())) {
filterInvProductRequest.setNameCode(FilterUdiUtils.getDiStr(filterInvProductRequest.getUdiCode()));
}
@ -113,7 +115,6 @@ public class InvProductsController {
if (StrUtil.isEmpty(filterInvProductRequest.getBatchNo())) {
filterInvProductRequest.setBatchNo("empty");
}
// filterInvProductRequest.setSupId(null);
List<InvProductDetailEntity> invProductDetailEntities = invProductDetailService.filterInvProduct(filterInvProductRequest);
PageInfo<InvProductDetailEntity> pageInfo;
pageInfo = new PageInfo<>(invProductDetailEntities);
@ -172,6 +173,7 @@ public class InvProductsController {
@GetMapping("spms/inv/products/stat")
public BaseResponse statInvProduct(FilterInvProductDetailRequest filterInvProductDetailRequest) {
filterInvProductDetailRequest.setCustomerId(null);
if (StrUtil.isEmpty(filterInvProductDetailRequest.getInvStorageCode())) {
List<WarehouseUserEntity> warehouseUserEntities = warehouseUserService.selectCodeByUser(customerService.getUserId() + "");
@ -186,6 +188,7 @@ public class InvProductsController {
}
InvProductStatResponse invProductStatResponse = new InvProductStatResponse();
//统计预入库数量
FilterInvProductDetailRequest temp1 = new FilterInvProductDetailRequest();
@ -273,22 +276,72 @@ public class InvProductsController {
if (udiInfoBean == null) {
return ResultVOUtils.error(500, "耗材字典不存在此产品!");
}
List<InvProductDetailEntity> mInvProductDetailEntities = new ArrayList<>();
//判断是否多级包装
List<UdiInfoEntity> udiInfoEntities = udiInfoService.findByUuids(udiInfoBean.getUuid());
FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest();
if (udiInfoEntities != null && udiInfoEntities.size() > 1) {
filterInvProductDetailRequest.setProductIdFk(udiInfoBean.getId() + "");
filterInvProductDetailRequest.setBatchNo(udiEntity.getBatchNo());
} else {
//多级包装根据产品ID批次号查询
//1.判断是否di关联多个产品ID
List<UdiRelevanceResponse> udiRelevanceResponses = udiRelevanceService.selectAllByNameCode(udiEntity.getUdi());
if (CollUtil.isNotEmpty(udiRelevanceResponses)) {
for (UdiRelevanceResponse udiRelevanceResponse : udiRelevanceResponses) {
//假设条码不完整
FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest();
filterInvProductDetailRequest.setOriginCode(filterCodeTraceRequest.getCode());
filterInvProductDetailRequest.setSupId(filterCodeTraceRequest.getSupId());
List<InvProductDetailEntity> temps = invProductDetailService.filterInvProduct(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.setProductIdFk(udiRelevanceResponse.getId() + "");
filterInvProductDetailRequest.setBatchNo(bacthNo);
List<InvProductDetailEntity> invProductDetailEntities = invProductDetailService.filterInvProduct(filterInvProductDetailRequest);
if (CollUtil.isNotEmpty(invProductDetailEntities)) {
mInvProductDetailEntities.addAll(invProductDetailEntities);
}
}
}
} else {
filterInvProductDetailRequest = new FilterInvProductDetailRequest();
filterInvProductDetailRequest.setProductIdFk(udiRelevanceResponse.getId() + "");
filterInvProductDetailRequest.setBatchNo(udiEntity.getBatchNo());
List<InvProductDetailEntity> invProductDetailEntities = invProductDetailService.filterInvProduct(filterInvProductDetailRequest);
if (CollUtil.isNotEmpty(invProductDetailEntities)) {
mInvProductDetailEntities.addAll(invProductDetailEntities);
}
}
}
}
} else {
//单级包装
FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest();
filterInvProductDetailRequest.setOriginCode(filterCodeTraceRequest.getCode());
filterInvProductDetailRequest.setSupId(filterCodeTraceRequest.getSupId());
List<InvProductDetailEntity> invProductDetailEntities = invProductDetailService.filterInvProduct(filterInvProductDetailRequest);
if (invProductDetailEntities.size() > 0) {
if (CollUtil.isNotEmpty(invProductDetailEntities)) {
mInvProductDetailEntities.addAll(invProductDetailEntities);
}
}
if (mInvProductDetailEntities.size() > 0) {
Map<String, String> filterMap = new HashMap<>();
for (InvProductDetailEntity invProductDetailEntity : invProductDetailEntities) {
for (InvProductDetailEntity invProductDetailEntity : mInvProductDetailEntities) {
filterMap.put(invProductDetailEntity.getOrderIdFk(), invProductDetailEntity.getOrderIdFk());
}
List<String> orderIds = new ArrayList<>();

@ -18,6 +18,9 @@ public interface UdiRelevanceService {
UdiRelevanceResponse selectByNameCode(String nameCode);
List<UdiRelevanceResponse> selectAllByNameCode(String nameCode);
List<UdiRelevanceResponse> selectAllByNameCode(String nameCode, String unitFk);
boolean isExit();

@ -62,6 +62,14 @@ public class UdiRelevanceServiceImpl implements UdiRelevanceService {
return data;
}
@Override
public List<UdiRelevanceResponse> selectAllByNameCode(String nameCode) {
FilterUdiInfoRequest filterUdiInfoRequest = new FilterUdiInfoRequest();
filterUdiInfoRequest.setUniqueNameCode(nameCode);
List<UdiRelevanceResponse> udiRelevanceResponses = filterUdiRelevance(filterUdiInfoRequest);
return udiRelevanceResponses;
}
@Override
public UdiRelevanceResponse selectByNameCode(String nameCode) {
FilterUdiInfoRequest filterUdiInfoRequest = new FilterUdiInfoRequest();

Loading…
Cancel
Save