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