|
|
@@ -1,7 +1,6 @@
|
|
|
package org.springblade.purchase.sales.controller;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
|
@@ -42,6 +41,7 @@ import javax.validation.Valid;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* 平台代理订单 控制器
|
|
|
@@ -95,7 +95,19 @@ public class AgencyOrderController extends BladeController {
|
|
|
lambdaQueryWrapper.eq(Order::getBillType, OrderTypeEnum.AGENCY_ORDER.getType());//订单类型
|
|
|
lambdaQueryWrapper.eq(Order::getTradeType, OrderTypeEnum.DOMESTIC.getType());//贸易类型
|
|
|
lambdaQueryWrapper.like(Func.isNotEmpty(order.getOrderNo()), Order::getOrderNo, order.getOrderNo());//订单号
|
|
|
- lambdaQueryWrapper.like(Func.isNotEmpty(order.getCorpId()), Order::getCorpId, order.getCorpId());//客户id
|
|
|
+ if (AuthUtil.getUserRole().contains("客户")) {
|
|
|
+ Long corpId = null;
|
|
|
+ CorpsAttn corpsAttn = corpsAttnClient.getUser(AuthUtil.getUserId(), AuthUtil.getTenantId());
|
|
|
+ if (corpsAttn != null) {
|
|
|
+ R<CorpsDesc> res = corpsDescClient.getCorpMessage(corpsAttn.getPid());
|
|
|
+ if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
|
|
|
+ corpId = res.getData().getId();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ lambdaQueryWrapper.eq(Order::getCorpId, corpId);//客户id
|
|
|
+ } else {
|
|
|
+ lambdaQueryWrapper.eq(Func.isNotEmpty(order.getCorpId()), Order::getCorpId, order.getCorpId());//客户id
|
|
|
+ }
|
|
|
lambdaQueryWrapper.eq(Func.isNotEmpty(order.getStorageId()), Order::getStorageId, order.getStorageId());//仓库id
|
|
|
lambdaQueryWrapper.ge(Func.isNotEmpty(order.getContractStartDate()), Order::getBusinesDate, order.getContractStartDate());//合同日期开始
|
|
|
lambdaQueryWrapper.le(Func.isNotEmpty(order.getContractEndDate()), Order::getBusinesDate, order.getContractEndDate());//合同日期结束
|
|
|
@@ -104,9 +116,9 @@ public class AgencyOrderController extends BladeController {
|
|
|
lambdaQueryWrapper.like(Func.isNotEmpty(order.getArrivalAddress()), Order::getArrivalAddress, order.getArrivalAddress());//到货地址
|
|
|
lambdaQueryWrapper.ge(Func.isNotEmpty(order.getActualDeliveryDateStart()), Order::getActualDeliveryDate, order.getActualDeliveryDateStart());//发货日期开始
|
|
|
lambdaQueryWrapper.le(Func.isNotEmpty(order.getActualDeliveryDateEnd()), Order::getActualDeliveryDate, order.getActualDeliveryDateEnd());//发货日期结束
|
|
|
- if (ObjectUtils.isNotNull(order.getBusinesDateList()) && !order.getBusinesDateList().isEmpty()){
|
|
|
- lambdaQueryWrapper.ge( Order::getBusinesDate, order.getBusinesDateList().get(0));
|
|
|
- lambdaQueryWrapper.le( Order::getBusinesDate, order.getBusinesDateList().get(1));
|
|
|
+ if (ObjectUtils.isNotNull(order.getBusinesDateList()) && !order.getBusinesDateList().isEmpty()) {
|
|
|
+ lambdaQueryWrapper.ge(Order::getBusinesDate, order.getBusinesDateList().get(0));
|
|
|
+ lambdaQueryWrapper.le(Order::getBusinesDate, order.getBusinesDateList().get(1));
|
|
|
}
|
|
|
lambdaQueryWrapper.ge(Func.isNotEmpty(order.getDeliveryStartDate()), Order::getRequiredDeliveryDate, order.getDeliveryStartDate());//要求发货日期开始
|
|
|
lambdaQueryWrapper.le(Func.isNotEmpty(order.getDeliveryEndDate()), Order::getRequiredDeliveryDate, order.getDeliveryEndDate());//要求发货日期结束
|
|
|
@@ -130,38 +142,82 @@ public class AgencyOrderController extends BladeController {
|
|
|
lambdaQueryWrapper.orderByDesc(Order::getId);
|
|
|
IPage<Order> page = orderService.page(Condition.getPage(query), lambdaQueryWrapper);
|
|
|
if (CollectionUtils.isNotEmpty(page.getRecords())) {
|
|
|
- page.getRecords().stream().forEach(item -> {
|
|
|
- if (item.getCorpId() != null) {
|
|
|
- R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(item.getCorpId());//客户
|
|
|
- if (corpMessage.isSuccess() && corpMessage.getData() != null) {
|
|
|
- item.setCorpsName(corpMessage.getData().getCname());
|
|
|
+ List<Long> userIds = new ArrayList<>();
|
|
|
+ List<Long> corpIds = new ArrayList<>();
|
|
|
+ List<Long> ids = page.getRecords().stream().map(Order::getId).collect(Collectors.toList());
|
|
|
+ List<Long> corpId = page.getRecords().stream().map(Order::getCorpId).distinct().collect(Collectors.toList());
|
|
|
+ if (!corpId.isEmpty()) {
|
|
|
+ corpIds.addAll(corpId);
|
|
|
+ }
|
|
|
+ List<Long> belongToCorpId = page.getRecords().stream().map(Order::getBelongToCorpId).filter(toCorpId -> !corpIds.contains(toCorpId)).collect(Collectors.toList());
|
|
|
+ if (!belongToCorpId.isEmpty()) {
|
|
|
+ corpIds.addAll(belongToCorpId);
|
|
|
+ }
|
|
|
+ List<Long> productionPlant = page.getRecords().stream().map(Order::getProductionPlant).filter(plant -> !corpIds.contains(plant)).collect(Collectors.toList());
|
|
|
+ if (!productionPlant.isEmpty()) {
|
|
|
+ corpIds.addAll(productionPlant);
|
|
|
+ }
|
|
|
+ List<Long> createUser = page.getRecords().stream().map(Order::getCreateUser).distinct().collect(Collectors.toList());
|
|
|
+ if (!createUser.isEmpty()) {
|
|
|
+ userIds.addAll(createUser);
|
|
|
+ }
|
|
|
+ List<Long> updateUser = page.getRecords().stream().map(Order::getUpdateUser).filter(id -> !userIds.contains(id)).collect(Collectors.toList());
|
|
|
+ if (!updateUser.isEmpty()) {
|
|
|
+ userIds.addAll(updateUser);
|
|
|
+ }
|
|
|
+ String corp = "";
|
|
|
+ List<CorpsDesc> corpsDescList = new ArrayList<>();
|
|
|
+ for (Long item : corpId) {
|
|
|
+ corp = corp + item + ",";
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotNull(corp)) {
|
|
|
+ corpsDescList = corpsDescClient.selectByCorpIds(corp.substring(0, corp.length() - 1));
|
|
|
+ }
|
|
|
+ String user = "";
|
|
|
+ List<User> userList = new ArrayList<>();
|
|
|
+ for (Long item : userIds) {
|
|
|
+ user = user + item + ",";
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isNotNull(user)) {
|
|
|
+ userList = userClient.selectUserList(user.substring(0, user.length() - 1));
|
|
|
+ }
|
|
|
+
|
|
|
+ List<OrderItems> list = orderItemsService.list(new LambdaQueryWrapper<OrderItems>()
|
|
|
+ .eq(OrderItems::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(OrderItems::getIsDeleted, 0)
|
|
|
+ .in(OrderItems::getPid, ids));
|
|
|
+ for (Order item : page.getRecords()) {
|
|
|
+ if (!corpsDescList.isEmpty()) {
|
|
|
+ if (item.getCorpId() != null) {
|
|
|
+ corpsDescList.stream().filter(e -> e.getId().equals(item.getCorpId())).findFirst()
|
|
|
+ .ifPresent(corpsDesc -> item.setCorpsName(corpsDesc.getCname()));
|
|
|
}
|
|
|
- }
|
|
|
- if (item.getBelongToCorpId() != null) {
|
|
|
- R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(item.getBelongToCorpId());//销售公司
|
|
|
- if (corpMessage.isSuccess() && corpMessage.getData() != null) {
|
|
|
- item.setBelongToCorpName(corpMessage.getData().getCname());
|
|
|
+ if (item.getBelongToCorpId() != null) {
|
|
|
+ corpsDescList.stream().filter(e -> e.getId().equals(item.getBelongToCorpId())).findFirst()
|
|
|
+ .ifPresent(corpsDesc -> item.setBelongToCorpName(corpsDesc.getCname()));
|
|
|
}
|
|
|
- }
|
|
|
- if (item.getProductionPlant() != null) {
|
|
|
- R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(item.getProductionPlant());//销售公司
|
|
|
- if (corpMessage.isSuccess() && corpMessage.getData() != null) {
|
|
|
- item.setProductionPlantName(corpMessage.getData().getCname());
|
|
|
+ if (item.getProductionPlant() != null) {
|
|
|
+ corpsDescList.stream().filter(e -> e.getId().equals(item.getProductionPlant())).findFirst()
|
|
|
+ .ifPresent(corpsDesc -> item.setProductionPlantName(corpsDesc.getCname()));
|
|
|
}
|
|
|
}
|
|
|
- R<User> user = userClient.userInfoById(item.getCreateUser());//制单人
|
|
|
- if (user.isSuccess() && user.getData() != null) {
|
|
|
- item.setCreateUserName(user.getData().getName());
|
|
|
+ if (!userList.isEmpty()) {
|
|
|
+ corpsDescList.stream().filter(e -> e.getId().equals(item.getCreateUser())).findFirst()
|
|
|
+ .ifPresent(corpsDesc -> item.setCreateUserName(corpsDesc.getCname()));
|
|
|
+ corpsDescList.stream().filter(e -> e.getId().equals(item.getUpdateUser())).findFirst()
|
|
|
+ .ifPresent(corpsDesc -> item.setUpdateUserName(corpsDesc.getCname()));
|
|
|
}
|
|
|
//获取订单明细
|
|
|
- List<OrderItems> list = orderItemsService.list(new QueryWrapper<OrderItems>().eq("pid", item.getId()).eq("is_deleted", 0));
|
|
|
- if (CollectionUtils.isNotEmpty(list)) {
|
|
|
- item.setOrderQuantity(list.stream().map(OrderItems::getOrderQuantity).reduce(BigDecimal.ZERO, BigDecimal::add));//数量合计
|
|
|
- item.setAmount(list.stream().map(OrderItems::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));//销售金额
|
|
|
- item.setPurchaseAmount(list.stream().map(OrderItems::getPurchaseAmount).reduce(BigDecimal.ZERO, BigDecimal::add));//采购金额
|
|
|
- item.setActualQuantity(list.stream().map(OrderItems::getActualQuantity).reduce(BigDecimal.ZERO, BigDecimal::add));//发货数量
|
|
|
+ if (!list.isEmpty()) {
|
|
|
+ List<OrderItems> orderItemsList = list.stream().filter(e -> e.getPid().equals(item.getId())).collect(Collectors.toList());
|
|
|
+ if (CollectionUtils.isNotEmpty(orderItemsList)) {
|
|
|
+ item.setOrderQuantity(orderItemsList.stream().map(OrderItems::getOrderQuantity).reduce(BigDecimal.ZERO, BigDecimal::add));//数量合计
|
|
|
+ item.setAmount(orderItemsList.stream().map(OrderItems::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));//销售金额
|
|
|
+ item.setPurchaseAmount(orderItemsList.stream().map(OrderItems::getPurchaseAmount).reduce(BigDecimal.ZERO, BigDecimal::add));//采购金额
|
|
|
+ item.setActualQuantity(orderItemsList.stream().map(OrderItems::getActualQuantity).reduce(BigDecimal.ZERO, BigDecimal::add));//发货数量
|
|
|
+ }
|
|
|
}
|
|
|
- });
|
|
|
+ }
|
|
|
}
|
|
|
return R.data(page);
|
|
|
}
|
|
|
@@ -289,13 +345,13 @@ public class AgencyOrderController extends BladeController {
|
|
|
goodsIds.append(item.getItemId()).append(",");
|
|
|
}
|
|
|
List<GoodsDesc> goodsDescList = new ArrayList<>();
|
|
|
- if (ObjectUtils.isNotNull(goodsIds.toString())){
|
|
|
- goodsDescList = goodsDescClient.selectItemsIdGoods(goodsIds.substring(0,goodsIds.length()-1));
|
|
|
+ if (ObjectUtils.isNotNull(goodsIds.toString())) {
|
|
|
+ goodsDescList = goodsDescClient.selectItemsIdGoods(goodsIds.substring(0, goodsIds.length() - 1));
|
|
|
}
|
|
|
for (OrderItems item : page) {
|
|
|
- if (!goodsDescList.isEmpty()){
|
|
|
- GoodsDesc goodsDesc = goodsDescList.stream().filter(e-> e.getId().equals(item.getItemId())).findFirst().orElse(null);
|
|
|
- if (goodsDesc != null){
|
|
|
+ if (!goodsDescList.isEmpty()) {
|
|
|
+ GoodsDesc goodsDesc = goodsDescList.stream().filter(e -> e.getId().equals(item.getItemId())).findFirst().orElse(null);
|
|
|
+ if (goodsDesc != null) {
|
|
|
item.setCname(goodsDesc.getCname());
|
|
|
item.setCode(goodsDesc.getCode());
|
|
|
item.setTypeno(goodsDesc.getTypeno());
|