From 71bae4055c8fbf066b576257e4d69224f25dddfd Mon Sep 17 00:00:00 2001 From: x_z Date: Fri, 10 Jun 2022 10:19:07 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=E6=9F=A5=E8=AF=A2=E5=8D=95?= =?UTF-8?q?=E6=8D=AE=E9=80=BB=E8=BE=91=EF=BC=8C=E5=B0=81=E8=A3=85=E6=89=AB?= =?UTF-8?q?=E7=A0=81=E5=8D=95=E6=8D=AE=E5=AD=97=E6=AE=B5=E5=AE=9E=E4=BD=93?= =?UTF-8?q?=EF=BC=8C=E6=89=A9=E5=B1=95=E6=9F=A5=E8=AF=A2=E8=8C=83=E5=9B=B4?= =?UTF-8?q?=EF=BC=8C=E5=AF=B9=E5=8D=95=E5=80=BC=E5=8D=95=E5=8F=B7=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E4=B8=8D=E5=81=9A=E5=85=B7=E4=BD=93=E5=88=A4=E6=96=AD?= =?UTF-8?q?=EF=BC=8C=E4=BD=BF=E7=94=A8=E5=8F=8D=E5=B0=84=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=80=BC=EF=BC=8C=E5=AF=B9=E5=A4=8D=E5=88=B6=E5=8D=95=E5=8F=B7?= =?UTF-8?q?=E7=B1=BB=E6=8B=BC=E6=8E=A5=E5=80=BC=E5=81=9A=E6=8B=86=E5=88=86?= =?UTF-8?q?=E6=94=B6=E9=9B=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sale/admin/constant/ConstantStatus.java | 2 +- .../glxp/sale/admin/dao/inout/OrderDao.java | 9 ++ .../sale/admin/res/inout/OrderNoResult.java | 23 ++++ .../admin/service/inout/OrderService.java | 2 +- .../service/inout/impl/CodesServiceImpl.java | 4 +- .../service/inout/impl/OrderServiceImpl.java | 103 ++++++++++-------- .../mybatis/mapper/inout/OrderDao.xml | 6 + 7 files changed, 98 insertions(+), 51 deletions(-) create mode 100644 api-admin/src/main/java/com/glxp/sale/admin/res/inout/OrderNoResult.java diff --git a/api-admin/src/main/java/com/glxp/sale/admin/constant/ConstantStatus.java b/api-admin/src/main/java/com/glxp/sale/admin/constant/ConstantStatus.java index ecd8296..e4b1c5a 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/constant/ConstantStatus.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/constant/ConstantStatus.java @@ -31,7 +31,7 @@ public class ConstantStatus { public static String SORDER_DRAFT = "1";//草稿 public static String SORDER_ALLOC = "2";//未配货 public static String SORDER_CHECK = "3";//待校验 - public static String SORDER_CHECKED = "4";//已校验 + public static String SORDER_CHECKED = "4";//已校验,未验收 public static String SORDER_DELIVER = "5";//已送货 public static final int RECEIVE_UN = 0; //未验收 diff --git a/api-admin/src/main/java/com/glxp/sale/admin/dao/inout/OrderDao.java b/api-admin/src/main/java/com/glxp/sale/admin/dao/inout/OrderDao.java index aa423cb..8a53ab1 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/dao/inout/OrderDao.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/dao/inout/OrderDao.java @@ -3,6 +3,7 @@ package com.glxp.sale.admin.dao.inout; import com.glxp.sale.admin.entity.inout.OrderEntity; import com.glxp.sale.admin.entity.inout.WarehouseEntity; import com.glxp.sale.admin.req.inout.OrderFilterRequest; +import com.glxp.sale.admin.res.inout.OrderNoResult; import com.glxp.sale.admin.req.inout.OrderQueryRequest; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -80,4 +81,12 @@ public interface OrderDao { * @return */ boolean updateReplicateNo(@Param("orderId") String orderId, @Param("replicateNo") String replicateNo); + + /** + * 查询单据所有的单据号字段值 + * + * @param id + * @return + */ + OrderNoResult selectOrderNos(String id); } diff --git a/api-admin/src/main/java/com/glxp/sale/admin/res/inout/OrderNoResult.java b/api-admin/src/main/java/com/glxp/sale/admin/res/inout/OrderNoResult.java new file mode 100644 index 0000000..dd706a1 --- /dev/null +++ b/api-admin/src/main/java/com/glxp/sale/admin/res/inout/OrderNoResult.java @@ -0,0 +1,23 @@ +package com.glxp.sale.admin.res.inout; + +import lombok.Data; + +/** + * 扫码单据单号实体类,包含除ID外所有单号字段 + */ +@Data +public class OrderNoResult { + + //补单单号 + private String supplementNo; + + //缺量补单上级单号 + private String originUllageSupNo; + + //缺量补单单号 + private String ullageSupNo; + + //复制单号,多个单号之间使用英文逗号,分隔 + private String replicateNo; + +} diff --git a/api-admin/src/main/java/com/glxp/sale/admin/service/inout/OrderService.java b/api-admin/src/main/java/com/glxp/sale/admin/service/inout/OrderService.java index 192c9a9..30ca70f 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/service/inout/OrderService.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/service/inout/OrderService.java @@ -103,7 +103,7 @@ public interface OrderService { * @param orderEntity * @param orders */ - public void getAllOrder(OrderEntity orderEntity, List orders); + List getAllOrder(OrderEntity orderEntity); /** * 更新复制单号 diff --git a/api-admin/src/main/java/com/glxp/sale/admin/service/inout/impl/CodesServiceImpl.java b/api-admin/src/main/java/com/glxp/sale/admin/service/inout/impl/CodesServiceImpl.java index 14aac48..1fe8942 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/service/inout/impl/CodesServiceImpl.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/service/inout/impl/CodesServiceImpl.java @@ -164,9 +164,7 @@ public class CodesServiceImpl implements CodesService { public void replaceCodes(CodesReplaceRequest codesReplaceRequest) { OrderEntity orderEntity = orderDao.selectByBillNo(codesReplaceRequest.getOrderId()); //查询所有单据 - List orderList = new ArrayList<>(); - orderList.add(orderEntity); - orderService.getAllOrder(orderEntity, orderList); + List orderList = orderService.getAllOrder(orderEntity); for (OrderEntity order : orderList) { //查询条码 diff --git a/api-admin/src/main/java/com/glxp/sale/admin/service/inout/impl/OrderServiceImpl.java b/api-admin/src/main/java/com/glxp/sale/admin/service/inout/impl/OrderServiceImpl.java index d9fa468..a398723 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/service/inout/impl/OrderServiceImpl.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/service/inout/impl/OrderServiceImpl.java @@ -2,6 +2,7 @@ package com.glxp.sale.admin.service.inout.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ReflectUtil; import cn.hutool.core.util.StrUtil; import com.github.pagehelper.PageHelper; import com.glxp.sale.admin.constant.ConstantStatus; @@ -23,6 +24,7 @@ import com.glxp.sale.admin.req.inout.OrderQueryRequest; import com.glxp.sale.admin.req.inout.StockOrderFilterRequest; import com.glxp.sale.admin.req.inventory.FilterInvProductDetailRequest; import com.glxp.sale.admin.req.inventory.FilterInvProductRequest; +import com.glxp.sale.admin.res.inout.OrderNoResult; import com.glxp.sale.admin.res.inout.StockOrderResponse; import com.glxp.sale.admin.service.inout.OrderService; import com.glxp.sale.admin.service.param.SystemParamConfigService; @@ -35,6 +37,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.lang.reflect.Field; import java.util.*; import java.util.stream.Collectors; @@ -160,7 +163,7 @@ public class OrderServiceImpl implements OrderService { if (orderFilterRequest == null) { return Collections.emptyList(); } - if(orderFilterRequest.getPage()!=null){ + if (orderFilterRequest.getPage() != null) { int offset = (orderFilterRequest.getPage() - 1) * orderFilterRequest.getLimit(); PageHelper.offsetPage(offset, orderFilterRequest.getLimit()); } @@ -321,11 +324,40 @@ public class OrderServiceImpl implements OrderService { if (null == orderEntity) { return Collections.emptyList(); } - //查询码表中所有的单据号 - List orders = new ArrayList<>(); - orders.add(orderEntity); - getAllOrder(orderEntity, orders); - return orders; + + return getAllOrder(orderEntity); + } + + //通过源单据查询所有关联的单据数据 + public void getLinkedOrderId(String id, List orderIds) { + List list = getOneOrderById(id); + if (orderIds.containsAll(list)) { + //已经包含源单据所关联的所有的单据号 + return; + } else { + //找出不包含在原有集合中的单据号,回调方法 + orderIds.addAll(list); + getLinkedOrderId(list.get(0), orderIds); + } + } + + //通过单号查询一个单据 + public List getOneOrderById(String id) { + List orderIds = new ArrayList<>(); + OrderNoResult orderNo = orderDao.selectOrderNos(id); + Field[] fields = ReflectUtil.getFields(OrderNoResult.class); + for (Field field : fields) { + String value = String.valueOf(ReflectUtil.getFieldValue(orderNo, field)); + if (StrUtil.isNotBlank(value) && !"null".equals(value)) { + if (field.getName().equals("replicateNo")) { + String[] ids = value.split(","); + orderIds.addAll(Arrays.asList(ids)); + } else { + orderIds.add(value); + } + } + } + return orderIds; } /** @@ -335,51 +367,30 @@ public class OrderServiceImpl implements OrderService { * @param orders */ @Override - public void getAllOrder(OrderEntity orderEntity, List orders) { - OrderFilterRequest orderFilterRequest = new OrderFilterRequest(); - //补单单号 - if (StrUtil.isNotBlank(orderEntity.getSupplementNo())) { - //补单单号不为空,查询补单数据 - orderFilterRequest.setId(orderEntity.getSupplementNo()); - OrderEntity order = orderDao.findOne(orderFilterRequest); - if (null != order && !orders.contains(order)) { - orders.add(order); - getAllOrder(order, orders); - } - } - - //缺量补单上级单号 - if (StrUtil.isNotBlank(orderEntity.getOriginUllageSupNo())) { - //缺量补单上级单号不为空,查询单据数据 - orderFilterRequest.setId(orderEntity.getOriginUllageSupNo()); - OrderEntity order = orderDao.findOne(orderFilterRequest); - if (null != order && !orders.contains(order)) { - orders.add(order); - getAllOrder(order, orders); + public List getAllOrder(OrderEntity orderEntity) { + List orderIds = new ArrayList<>(); + orderIds.add(orderEntity.getId()); + + getLinkedOrderId(orderEntity.getId(), orderIds); + + //去除本单的单据号 + Iterator iterator = orderIds.iterator(); + while (iterator.hasNext()) { + if (iterator.next().equals(orderEntity.getId())) { + iterator.remove(); + break; } } - //缺量补单 - if (StrUtil.isNotBlank(orderEntity.getUllageSupNo())) { - //缺量补单单号不为空,查询单据数据 - orderFilterRequest.setId(orderEntity.getUllageSupNo()); - OrderEntity order = orderDao.findOne(orderFilterRequest); - if (null != order && !orders.contains(order)) { - orders.add(order); - getAllOrder(order, orders); - } - } + List orders = new ArrayList<>(); + orders.add(orderEntity); - //复制单号 - if (StrUtil.isNotBlank(orderEntity.getReplicateNo())) { - //被复制单号不为空,查询复制单据 - String[] replicateNos = orderEntity.getReplicateNo().split(","); - for (String replicateNo : replicateNos) { - orderFilterRequest.setId(replicateNo); - OrderEntity order = orderDao.findOne(orderFilterRequest); - orders.add(order); - } + //查询除本单以外的所有的单据 + if (CollUtil.isNotEmpty(orderIds)) { + List orderEntities = orderDao.selectByIds(orderIds); + orders.addAll(orderEntities); } + return orders; } @Override 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 6fe710d..b355499 100644 --- a/api-admin/src/main/resources/mybatis/mapper/inout/OrderDao.xml +++ b/api-admin/src/main/resources/mybatis/mapper/inout/OrderDao.xml @@ -568,4 +568,10 @@ where id = #{orderId} + + \ No newline at end of file