1.修改查询单据逻辑,封装扫码单据字段实体,扩展查询范围,对单值单号字段不做具体判断,使用反射获取值,对复制单号类拼接值做拆分收集

master
x_z 3 years ago
parent 73b9a98a47
commit 71bae4055c

@ -31,7 +31,7 @@ public class ConstantStatus {
public static String SORDER_DRAFT = "1";//草稿 public static String SORDER_DRAFT = "1";//草稿
public static String SORDER_ALLOC = "2";//未配货 public static String SORDER_ALLOC = "2";//未配货
public static String SORDER_CHECK = "3";//待校验 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 String SORDER_DELIVER = "5";//已送货
public static final int RECEIVE_UN = 0; //未验收 public static final int RECEIVE_UN = 0; //未验收

@ -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.OrderEntity;
import com.glxp.sale.admin.entity.inout.WarehouseEntity; import com.glxp.sale.admin.entity.inout.WarehouseEntity;
import com.glxp.sale.admin.req.inout.OrderFilterRequest; 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 com.glxp.sale.admin.req.inout.OrderQueryRequest;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -80,4 +81,12 @@ public interface OrderDao {
* @return * @return
*/ */
boolean updateReplicateNo(@Param("orderId") String orderId, @Param("replicateNo") String replicateNo); boolean updateReplicateNo(@Param("orderId") String orderId, @Param("replicateNo") String replicateNo);
/**
*
*
* @param id
* @return
*/
OrderNoResult selectOrderNos(String id);
} }

@ -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;
}

@ -103,7 +103,7 @@ public interface OrderService {
* @param orderEntity * @param orderEntity
* @param orders * @param orders
*/ */
public void getAllOrder(OrderEntity orderEntity, List<OrderEntity> orders); List<OrderEntity> getAllOrder(OrderEntity orderEntity);
/** /**
* *

@ -164,9 +164,7 @@ public class CodesServiceImpl implements CodesService {
public void replaceCodes(CodesReplaceRequest codesReplaceRequest) { public void replaceCodes(CodesReplaceRequest codesReplaceRequest) {
OrderEntity orderEntity = orderDao.selectByBillNo(codesReplaceRequest.getOrderId()); OrderEntity orderEntity = orderDao.selectByBillNo(codesReplaceRequest.getOrderId());
//查询所有单据 //查询所有单据
List<OrderEntity> orderList = new ArrayList<>(); List<OrderEntity> orderList = orderService.getAllOrder(orderEntity);
orderList.add(orderEntity);
orderService.getAllOrder(orderEntity, orderList);
for (OrderEntity order : orderList) { for (OrderEntity order : orderList) {
//查询条码 //查询条码

@ -2,6 +2,7 @@ package com.glxp.sale.admin.service.inout.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ReflectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.glxp.sale.admin.constant.ConstantStatus; 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.inout.StockOrderFilterRequest;
import com.glxp.sale.admin.req.inventory.FilterInvProductDetailRequest; import com.glxp.sale.admin.req.inventory.FilterInvProductDetailRequest;
import com.glxp.sale.admin.req.inventory.FilterInvProductRequest; 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.res.inout.StockOrderResponse;
import com.glxp.sale.admin.service.inout.OrderService; import com.glxp.sale.admin.service.inout.OrderService;
import com.glxp.sale.admin.service.param.SystemParamConfigService; import com.glxp.sale.admin.service.param.SystemParamConfigService;
@ -35,6 +37,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.lang.reflect.Field;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -160,7 +163,7 @@ public class OrderServiceImpl implements OrderService {
if (orderFilterRequest == null) { if (orderFilterRequest == null) {
return Collections.emptyList(); return Collections.emptyList();
} }
if(orderFilterRequest.getPage()!=null){ if (orderFilterRequest.getPage() != null) {
int offset = (orderFilterRequest.getPage() - 1) * orderFilterRequest.getLimit(); int offset = (orderFilterRequest.getPage() - 1) * orderFilterRequest.getLimit();
PageHelper.offsetPage(offset, orderFilterRequest.getLimit()); PageHelper.offsetPage(offset, orderFilterRequest.getLimit());
} }
@ -321,11 +324,40 @@ public class OrderServiceImpl implements OrderService {
if (null == orderEntity) { if (null == orderEntity) {
return Collections.emptyList(); return Collections.emptyList();
} }
//查询码表中所有的单据号
List<OrderEntity> orders = new ArrayList<>(); return getAllOrder(orderEntity);
orders.add(orderEntity); }
getAllOrder(orderEntity, orders);
return orders; //通过源单据查询所有关联的单据数据
public void getLinkedOrderId(String id, List<String> orderIds) {
List<String> list = getOneOrderById(id);
if (orderIds.containsAll(list)) {
//已经包含源单据所关联的所有的单据号
return;
} else {
//找出不包含在原有集合中的单据号,回调方法
orderIds.addAll(list);
getLinkedOrderId(list.get(0), orderIds);
}
}
//通过单号查询一个单据
public List<String> getOneOrderById(String id) {
List<String> 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 * @param orders
*/ */
@Override @Override
public void getAllOrder(OrderEntity orderEntity, List<OrderEntity> orders) { public List<OrderEntity> getAllOrder(OrderEntity orderEntity) {
OrderFilterRequest orderFilterRequest = new OrderFilterRequest(); List<String> orderIds = new ArrayList<>();
//补单单号 orderIds.add(orderEntity.getId());
if (StrUtil.isNotBlank(orderEntity.getSupplementNo())) {
//补单单号不为空,查询补单数据 getLinkedOrderId(orderEntity.getId(), orderIds);
orderFilterRequest.setId(orderEntity.getSupplementNo());
OrderEntity order = orderDao.findOne(orderFilterRequest); //去除本单的单据号
if (null != order && !orders.contains(order)) { Iterator<String> iterator = orderIds.iterator();
orders.add(order); while (iterator.hasNext()) {
getAllOrder(order, orders); if (iterator.next().equals(orderEntity.getId())) {
} iterator.remove();
} break;
//缺量补单上级单号
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);
} }
} }
//缺量补单 List<OrderEntity> orders = new ArrayList<>();
if (StrUtil.isNotBlank(orderEntity.getUllageSupNo())) { orders.add(orderEntity);
//缺量补单单号不为空,查询单据数据
orderFilterRequest.setId(orderEntity.getUllageSupNo());
OrderEntity order = orderDao.findOne(orderFilterRequest);
if (null != order && !orders.contains(order)) {
orders.add(order);
getAllOrder(order, orders);
}
}
//复制单号 //查询除本单以外的所有的单据
if (StrUtil.isNotBlank(orderEntity.getReplicateNo())) { if (CollUtil.isNotEmpty(orderIds)) {
//被复制单号不为空,查询复制单据 List<OrderEntity> orderEntities = orderDao.selectByIds(orderIds);
String[] replicateNos = orderEntity.getReplicateNo().split(","); orders.addAll(orderEntities);
for (String replicateNo : replicateNos) {
orderFilterRequest.setId(replicateNo);
OrderEntity order = orderDao.findOne(orderFilterRequest);
orders.add(order);
}
} }
return orders;
} }
@Override @Override

@ -568,4 +568,10 @@
where id = #{orderId} where id = #{orderId}
</update> </update>
<select id="selectOrderNos" resultType="com.glxp.sale.admin.res.inout.OrderNoResult">
select supplementNo, originUllageSupNo, ullageSupNo, replicateNo
from io_order
where id = #{id}
</select>
</mapper> </mapper>
Loading…
Cancel
Save