From c7f31fa4b1286c320bd6184353c850de8ac16fa0 Mon Sep 17 00:00:00 2001 From: anthonyywj2 <353682448@qq.com> Date: Sat, 9 Jul 2022 13:59:16 +0800 Subject: [PATCH] =?UTF-8?q?UDI=E7=A0=81=E6=B5=81=E5=90=91=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/inout/UdiTraceController.java | 103 +++++++++++++++++- .../inventory/InvProductsController.java | 66 +++++++++-- .../service/basic/UdiRelevanceService.java | 2 + .../basic/impl/UdiRelevanceServiceImpl.java | 10 +- .../mybatis/mapper/inout/OrderDao.xml | 5 +- 5 files changed, 172 insertions(+), 14 deletions(-) diff --git a/api-admin/src/main/java/com/glxp/sale/admin/controller/inout/UdiTraceController.java b/api-admin/src/main/java/com/glxp/sale/admin/controller/inout/UdiTraceController.java index 1e0623d..2aa9a1c 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/controller/inout/UdiTraceController.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/controller/inout/UdiTraceController.java @@ -2,14 +2,25 @@ package com.glxp.sale.admin.controller.inout; import com.github.pagehelper.PageInfo; import com.glxp.sale.admin.annotation.AuthRuleAnnotation; +import com.glxp.sale.admin.entity.basic.UdiInfoEntity; +import com.glxp.sale.admin.entity.inout.OrderEntity; import com.glxp.sale.admin.entity.inout.WarehouseEntity; +import com.glxp.sale.admin.entity.inventory.InvProductDetailEntity; +import com.glxp.sale.admin.entity.udid.UdiEntity; import com.glxp.sale.admin.req.basic.FilterUdiInfoRequest; import com.glxp.sale.admin.req.inout.WarehouseQueryRequest; +import com.glxp.sale.admin.req.inventory.FilterCodeTraceRequest; +import com.glxp.sale.admin.req.inventory.FilterInvProductDetailRequest; import com.glxp.sale.admin.res.PageSimpleResponse; import com.glxp.sale.admin.res.basic.UdiRelevanceResponse; import com.glxp.sale.admin.res.inout.UdiTraceResponse; +import com.glxp.sale.admin.res.inventory.InvProductPageRespnonse; +import com.glxp.sale.admin.service.basic.UdiInfoService; import com.glxp.sale.admin.service.basic.UdiRelevanceService; import com.glxp.sale.admin.service.inout.CodesService; +import com.glxp.sale.admin.service.inout.OrderService; +import com.glxp.sale.admin.service.inventory.InvProductDetailService; +import com.glxp.sale.admin.util.FilterUdiUtils; import com.glxp.sale.common.res.BaseResponse; import com.glxp.sale.common.util.ResultVOUtils; import org.springframework.beans.BeanUtils; @@ -17,7 +28,10 @@ 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 @@ -27,10 +41,91 @@ public class UdiTraceController { 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); @@ -48,7 +143,7 @@ public class UdiTraceController { { UdiTraceResponse udiTraceResponse = new UdiTraceResponse(); BeanUtils.copyProperties(item, udiTraceResponse); - if(finalUdiRelevance!=null){ + if (finalUdiRelevance != null) { udiTraceResponse.setYlqxzcrbarmc(finalUdiRelevance.getYlqxzcrbarmc()); udiTraceResponse.setCpmctymc(finalUdiRelevance.getCpmctymc()); udiTraceResponse.setGgxh(finalUdiRelevance.getGgxh()); @@ -61,8 +156,8 @@ public class UdiTraceController { pageSimpleResponse.setTotal(pageInfo.getTotal()); pageSimpleResponse.setList(udiTraceResponseList); return ResultVOUtils.success(pageSimpleResponse); - }else { - return ResultVOUtils.error(500,"未找到该条码!"); + } else { + return ResultVOUtils.error(500, "未找到该条码!"); } } } diff --git a/api-admin/src/main/java/com/glxp/sale/admin/controller/inventory/InvProductsController.java b/api-admin/src/main/java/com/glxp/sale/admin/controller/inventory/InvProductsController.java index b32167b..90a0610 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/controller/inventory/InvProductsController.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/controller/inventory/InvProductsController.java @@ -1,5 +1,6 @@ package com.glxp.sale.admin.controller.inventory; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.github.pagehelper.PageInfo; import com.glxp.sale.admin.annotation.AuthRuleAnnotation; @@ -50,6 +51,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; @RestController @@ -299,22 +301,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/sale/admin/service/basic/UdiRelevanceService.java b/api-admin/src/main/java/com/glxp/sale/admin/service/basic/UdiRelevanceService.java index 560800d..f9a0baa 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/service/basic/UdiRelevanceService.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/service/basic/UdiRelevanceService.java @@ -18,6 +18,8 @@ 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/sale/admin/service/basic/impl/UdiRelevanceServiceImpl.java b/api-admin/src/main/java/com/glxp/sale/admin/service/basic/impl/UdiRelevanceServiceImpl.java index f22ffff..9e320f7 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/service/basic/impl/UdiRelevanceServiceImpl.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/service/basic/impl/UdiRelevanceServiceImpl.java @@ -22,8 +22,6 @@ public class UdiRelevanceServiceImpl implements UdiRelevanceService { UdiRelevanceDao udiRelevanceDao; @Resource BasicThirdSysService basicThirdSysService; - @Resource - UdiInfoService udiInfoService; @Override public List filterUdiRelevance(FilterUdiInfoRequest filterUdiInfoRequest) { @@ -74,6 +72,14 @@ public class UdiRelevanceServiceImpl implements UdiRelevanceService { return null; } + @Override + public List selectAllByNameCode(String nameCode) { + FilterUdiInfoRequest filterUdiInfoRequest = new FilterUdiInfoRequest(); + filterUdiInfoRequest.setUniqueNameCode(nameCode); + List udiRelevanceResponses = filterUdiRelevance(filterUdiInfoRequest); + return udiRelevanceResponses; + } + @Override public List selectAllByNameCode(String nameCode, String unitFk) { diff --git a/api-admin/src/main/resources/mybatis/mapper/inout/OrderDao.xml b/api-admin/src/main/resources/mybatis/mapper/inout/OrderDao.xml index 2d35288..f51e9cb 100644 --- a/api-admin/src/main/resources/mybatis/mapper/inout/OrderDao.xml +++ b/api-admin/src/main/resources/mybatis/mapper/inout/OrderDao.xml @@ -98,7 +98,8 @@ #{updateTime}, #{replicateNo}, #{invWarehouseCode}, - #{fromSubInvCode},#{createTime} + #{fromSubInvCode}, + #{createTime} ) @@ -582,6 +583,8 @@ #{item} + + order by actDate