From 1d0c2078d775e2b59a886b4db80012b24d173e27 Mon Sep 17 00:00:00 2001 From: anthonyywj2 <353682448@qq.com> Date: Mon, 11 Jul 2022 16:03:19 +0800 Subject: [PATCH] =?UTF-8?q?UDI=E6=B5=81=E5=90=91=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../info/SyncDataSetController.java | 1 + .../controller/inout/UdiTraceController.java | 105 ++++++++++++++++-- .../inventory/InvProductsController.java | 71 ++++++++++-- .../service/basic/UdiRelevanceService.java | 3 + .../basic/impl/UdiRelevanceServiceImpl.java | 8 ++ 5 files changed, 171 insertions(+), 17 deletions(-) diff --git a/api-admin/src/main/java/com/glxp/api/admin/controller/info/SyncDataSetController.java b/api-admin/src/main/java/com/glxp/api/admin/controller/info/SyncDataSetController.java index aafd2fef..3e57cc46 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/controller/info/SyncDataSetController.java +++ b/api-admin/src/main/java/com/glxp/api/admin/controller/info/SyncDataSetController.java @@ -55,6 +55,7 @@ public class SyncDataSetController { ) { SyncDataSetEntity syncDataSetEntity = new SyncDataSetEntity(); BeanUtils.copyProperties(syncDataSetResponse, syncDataSetEntity); + syncDataSetEntity.setId(1); List busTypes = syncDataSetResponse.getBusTypes(); syncDataBustypeService.deleteAll(); if (CollUtil.isNotEmpty(busTypes)) diff --git a/api-admin/src/main/java/com/glxp/api/admin/controller/inout/UdiTraceController.java b/api-admin/src/main/java/com/glxp/api/admin/controller/inout/UdiTraceController.java index d267e14d..a0e62518 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/controller/inout/UdiTraceController.java +++ b/api-admin/src/main/java/com/glxp/api/admin/controller/inout/UdiTraceController.java @@ -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 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 invProductDetailEntities = invProductDetailService.filterInvProduct(filterInvProductDetailRequest); + if (invProductDetailEntities.size() > 0) { + Map filterMap = new HashMap<>(); + + for (InvProductDetailEntity invProductDetailEntity : invProductDetailEntities) { + filterMap.put(invProductDetailEntity.getOrderIdFk(), invProductDetailEntity.getOrderIdFk()); + } + List orderIds = new ArrayList<>(); + for (String key : filterMap.keySet()) { + orderIds.add(key); + } + List orderEntities = orderService.filterListByOrder(orderIds); + + + FilterUdiInfoRequest filterUdiInfoRequest = new FilterUdiInfoRequest(); + 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(); + 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 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, "未查询到数据!"); + } + + } + + @AuthRuleAnnotation("") + @GetMapping("udiwarehouse/trace/filterOld") + public BaseResponse filterOld(WarehouseQueryRequest warehouseQueryRequest) { List warehouseEntityList = warehouseService.findByOrderId(warehouseQueryRequest); if (warehouseEntityList != null && warehouseEntityList.size() > 0) { WarehouseEntity warehouseEntity = warehouseEntityList.get(0); diff --git a/api-admin/src/main/java/com/glxp/api/admin/controller/inventory/InvProductsController.java b/api-admin/src/main/java/com/glxp/api/admin/controller/inventory/InvProductsController.java index 8d35b3cd..a53dad4f 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/controller/inventory/InvProductsController.java +++ b/api-admin/src/main/java/com/glxp/api/admin/controller/inventory/InvProductsController.java @@ -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 invProductDetailEntities = invProductDetailService.filterInvProduct(filterInvProductRequest); PageInfo 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 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 mInvProductDetailEntities = new ArrayList<>(); + //判断是否多级包装 List udiInfoEntities = udiInfoService.findByUuids(udiInfoBean.getUuid()); - FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest(); + if (udiInfoEntities != null && udiInfoEntities.size() > 1) { - filterInvProductDetailRequest.setProductIdFk(udiInfoBean.getId() + ""); - filterInvProductDetailRequest.setBatchNo(udiEntity.getBatchNo()); + //多级包装根据产品ID,批次号查询 + + + //1.判断是否di关联多个产品ID + List 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 temps = invProductDetailService.filterInvProduct(filterInvProductDetailRequest); + if (CollUtil.isNotEmpty(temps)) { + Map> 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 invProductDetailEntities = invProductDetailService.filterInvProduct(filterInvProductDetailRequest); + if (CollUtil.isNotEmpty(invProductDetailEntities)) { + mInvProductDetailEntities.addAll(invProductDetailEntities); + } + } + + } + + + } else { + filterInvProductDetailRequest = new FilterInvProductDetailRequest(); + filterInvProductDetailRequest.setProductIdFk(udiRelevanceResponse.getId() + ""); + filterInvProductDetailRequest.setBatchNo(udiEntity.getBatchNo()); + List 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 invProductDetailEntities = invProductDetailService.filterInvProduct(filterInvProductDetailRequest); + if (CollUtil.isNotEmpty(invProductDetailEntities)) { + mInvProductDetailEntities.addAll(invProductDetailEntities); + } } - filterInvProductDetailRequest.setSupId(filterCodeTraceRequest.getSupId()); - List invProductDetailEntities = invProductDetailService.filterInvProduct(filterInvProductDetailRequest); - if (invProductDetailEntities.size() > 0) { + if (mInvProductDetailEntities.size() > 0) { Map filterMap = new HashMap<>(); - for (InvProductDetailEntity invProductDetailEntity : invProductDetailEntities) { + for (InvProductDetailEntity invProductDetailEntity : mInvProductDetailEntities) { filterMap.put(invProductDetailEntity.getOrderIdFk(), invProductDetailEntity.getOrderIdFk()); } List orderIds = new ArrayList<>(); diff --git a/api-admin/src/main/java/com/glxp/api/admin/service/basic/UdiRelevanceService.java b/api-admin/src/main/java/com/glxp/api/admin/service/basic/UdiRelevanceService.java index ff741c8e..43c0f35b 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/service/basic/UdiRelevanceService.java +++ b/api-admin/src/main/java/com/glxp/api/admin/service/basic/UdiRelevanceService.java @@ -18,6 +18,9 @@ public interface UdiRelevanceService { UdiRelevanceResponse selectByNameCode(String nameCode); + List selectAllByNameCode(String nameCode); + + List selectAllByNameCode(String nameCode, String unitFk); boolean isExit(); diff --git a/api-admin/src/main/java/com/glxp/api/admin/service/basic/impl/UdiRelevanceServiceImpl.java b/api-admin/src/main/java/com/glxp/api/admin/service/basic/impl/UdiRelevanceServiceImpl.java index a25585bd..de28d4fe 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/service/basic/impl/UdiRelevanceServiceImpl.java +++ b/api-admin/src/main/java/com/glxp/api/admin/service/basic/impl/UdiRelevanceServiceImpl.java @@ -62,6 +62,14 @@ public class UdiRelevanceServiceImpl implements UdiRelevanceService { return data; } + @Override + public List selectAllByNameCode(String nameCode) { + FilterUdiInfoRequest filterUdiInfoRequest = new FilterUdiInfoRequest(); + filterUdiInfoRequest.setUniqueNameCode(nameCode); + List udiRelevanceResponses = filterUdiRelevance(filterUdiInfoRequest); + return udiRelevanceResponses; + } + @Override public UdiRelevanceResponse selectByNameCode(String nameCode) { FilterUdiInfoRequest filterUdiInfoRequest = new FilterUdiInfoRequest();