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_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; //未验收

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

@ -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 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) {
OrderEntity orderEntity = orderDao.selectByBillNo(codesReplaceRequest.getOrderId());
//查询所有单据
List<OrderEntity> orderList = new ArrayList<>();
orderList.add(orderEntity);
orderService.getAllOrder(orderEntity, orderList);
List<OrderEntity> orderList = orderService.getAllOrder(orderEntity);
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.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<OrderEntity> orders = new ArrayList<>();
orders.add(orderEntity);
getAllOrder(orderEntity, orders);
return orders;
return getAllOrder(orderEntity);
}
//通过源单据查询所有关联的单据数据
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
*/
@Override
public void getAllOrder(OrderEntity orderEntity, List<OrderEntity> 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<OrderEntity> getAllOrder(OrderEntity orderEntity) {
List<String> orderIds = new ArrayList<>();
orderIds.add(orderEntity.getId());
getLinkedOrderId(orderEntity.getId(), orderIds);
//去除本单的单据号
Iterator<String> 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<OrderEntity> 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<OrderEntity> orderEntities = orderDao.selectByIds(orderIds);
orders.addAll(orderEntities);
}
return orders;
}
@Override

@ -568,4 +568,10 @@
where id = #{orderId}
</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>
Loading…
Cancel
Save