Ver código fonte

1.采购订单明细接口速度优化
2.工厂收发货明细接口速度优化

纪新园 1 mês atrás
pai
commit
4789feb25b

+ 10 - 0
blade-service-api/blade-client-api/src/main/java/org/springblade/client/feign/IFeesDescClient.java

@@ -26,6 +26,16 @@ public interface IFeesDescClient {
 	String GET_FEES_BY_NAME = API_PREFIX + "/getFeesByName";
 	String GET_FEES_BY_NAME_YCP = API_PREFIX + "/getFeesByNameYCP";
 
+	String GET_FEES_BY_IDS = API_PREFIX + "/getFeesByIds";
+
+	/**
+	 * 获取所有费用基础信息
+	 *
+	 * @return 费用集合
+	 */
+	@GetMapping(GET_FEES_BY_IDS)
+	List<FeesDesc> getFeesByIds(@RequestParam("ids") String ids);
+
 	/**
 	 * 获取费用详情
 	 * @param id

+ 12 - 8
blade-service/blade-client/src/main/java/org/springblade/client/fees/feign/FeesDescClient.java

@@ -7,7 +7,6 @@ import org.springblade.client.entity.FeesDesc;
 import org.springblade.client.fees.assemble.mapstruct.FeesDescMapstructMapper;
 import org.springblade.client.fees.service.IFeesDescService;
 import org.springblade.client.feign.IFeesDescClient;
-import org.springblade.client.vo.FeesDescVO;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tenant.annotation.TenantIgnore;
@@ -17,7 +16,6 @@ import org.springframework.web.bind.annotation.RestController;
 import springfox.documentation.annotations.ApiIgnore;
 
 import java.util.List;
-import java.util.stream.Collectors;
 
 @NonDS
 @ApiIgnore()
@@ -29,6 +27,14 @@ public class FeesDescClient implements IFeesDescClient {
 
 	private final FeesDescMapstructMapper feesDescMapstructMapper;
 
+	@Override
+	public List<FeesDesc> getFeesByIds(String ids) {
+        return feesDescService.list(new LambdaQueryWrapper<FeesDesc>()
+			.eq(FeesDesc::getIsDeleted, 0)
+			.eq(FeesDesc::getTenantId, AuthUtil.getTenantId())
+			.apply("find_in_set(id,'" + ids + "')"));
+	}
+
 	/**
 	 * 查询费用详情
 	 *
@@ -57,18 +63,16 @@ public class FeesDescClient implements IFeesDescClient {
 
 	@Override
 	@GetMapping(GET_FEES_BY_NAME)
-	public R<FeesDesc> getFeesByName(String cName)
-	{
+	public R<FeesDesc> getFeesByName(String cName) {
 
-		return R.data(feesDescService.getOne(new LambdaQueryWrapper<FeesDesc>().eq(FeesDesc::getCname,cName).eq(FeesDesc::getTenantId, AuthUtil.getTenantId()).eq(FeesDesc::getIsDeleted,0)));
+		return R.data(feesDescService.getOne(new LambdaQueryWrapper<FeesDesc>().eq(FeesDesc::getCname, cName).eq(FeesDesc::getTenantId, AuthUtil.getTenantId()).eq(FeesDesc::getIsDeleted, 0)));
 	}
 
 	@Override
 	@GetMapping(GET_FEES_BY_NAME_YCP)
 	@TenantIgnore
-	public R<FeesDesc> getFeesByNameYCP(String cName,String tenantId)
-	{
+	public R<FeesDesc> getFeesByNameYCP(String cName, String tenantId) {
 
-		return R.data(feesDescService.getOne(new LambdaQueryWrapper<FeesDesc>().eq(FeesDesc::getCname,cName).eq(FeesDesc::getTenantId,tenantId).eq(FeesDesc::getIsDeleted,0)));
+		return R.data(feesDescService.getOne(new LambdaQueryWrapper<FeesDesc>().eq(FeesDesc::getCname, cName).eq(FeesDesc::getTenantId, tenantId).eq(FeesDesc::getIsDeleted, 0)));
 	}
 }

+ 32 - 1
blade-service/blade-client/src/main/java/org/springblade/client/goods/service/impl/GoodsDescServiceImpl.java

@@ -214,7 +214,38 @@ public class GoodsDescServiceImpl extends ServiceImpl<GoodsDescMapper, GoodsDesc
 		List<Long> collect = Arrays.stream(itemIds.split(","))
 			.map(s -> Long.parseLong(s.trim()))
 			.collect(Collectors.toList());
-		return baseMapper.selectItemsIdGoods(collect);
+		List<GoodsDesc> goodsDescList = baseMapper.selectItemsIdGoods(collect);
+		if (!goodsDescList.isEmpty()) {
+			String goodsTypeId = goodsDescList.stream().map(GoodsDesc::getGoodsTypeId).collect(Collectors.joining(","));
+			List<GoodsType> goodsTypeList = goodsTypeService.list(new LambdaQueryWrapper<GoodsType>()
+				.eq(GoodsType::getIsDeleted, 0)
+				.eq(GoodsType::getTenantId, AuthUtil.getTenantId())
+				.apply("find_in_set(id,'" + goodsTypeId + "')"));
+			List<Long> idList = goodsDescList.stream().map(GoodsDesc::getId).collect(Collectors.toList());
+			List<GoodsFiles> filesList = goodsFilesMapper.selectList(new LambdaQueryWrapper<GoodsFiles>()
+				.in(GoodsFiles::getPid, idList)
+				.eq(GoodsFiles::getIsDeleted, 0));
+			for (GoodsDesc item : goodsDescList) {
+				if (!goodsTypeList.isEmpty()){
+					GoodsType goodsType = goodsTypeList.stream().filter(e -> (e.getId() + "").equals(item.getGoodsTypeId())).findFirst().orElse(null);
+					if (goodsType != null) {
+						item.setGoodsTypeId(goodsType.getId() + "");
+						item.setGoodsTypeName(goodsType.getCname());
+					}
+				}
+				if (!filesList.isEmpty()){
+					List<GoodsFiles> files = filesList.stream().filter(e -> e.getPid().equals(item.getId()))
+						.collect(Collectors.toList());
+					if (!files.isEmpty()) {
+						item.setUrl(files.get(0).getUrl());
+						item.setFilesList(files);
+					}
+				}
+			}
+			return goodsDescList;
+		} else {
+			return new ArrayList<>();
+		}
 	}
 
 	@Override

+ 53 - 34
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryFeesServiceImpl.java

@@ -17,22 +17,22 @@
 package org.springblade.deliver.goods.service.impl;
 
 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;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.AllArgsConstructor;
 import org.springblade.client.entity.CorpsDesc;
 import org.springblade.client.entity.FeesDesc;
 import org.springblade.client.feign.ICorpsDescClient;
 import org.springblade.client.feign.IFeesDescClient;
 import org.springblade.core.secure.utils.SecureUtil;
-import org.springblade.core.tool.api.R;
 import org.springblade.deliver.goods.entity.Delivery;
 import org.springblade.deliver.goods.entity.DeliveryFees;
-import org.springblade.deliver.goods.vo.DeliveryFeesVO;
 import org.springblade.deliver.goods.mapper.DeliveryFeesMapper;
 import org.springblade.deliver.goods.service.IDeliveryFeesService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.deliver.goods.vo.DeliveryFeesVO;
 import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 
 import java.util.Date;
 import java.util.List;
@@ -48,6 +48,7 @@ import java.util.List;
 public class DeliveryFeesServiceImpl extends ServiceImpl<DeliveryFeesMapper, DeliveryFees> implements IDeliveryFeesService {
 	private ICorpsDescClient corpsDescClient;//获取客户信息
 	private IFeesDescClient feesDescClient;//获取费用信息
+
 	@Override
 	public IPage<DeliveryFeesVO> selectDeliveryFeesPage(IPage<DeliveryFeesVO> page, DeliveryFeesVO deliveryFees) {
 		return page.setRecords(baseMapper.selectDeliveryFeesPage(page, deliveryFees));
@@ -60,53 +61,71 @@ public class DeliveryFeesServiceImpl extends ServiceImpl<DeliveryFeesMapper, Del
 
 	/**
 	 * 保存发货费用信息
+	 *
 	 * @param pId
 	 * @param deliveryFeesList
 	 * @return
 	 */
-	public List<DeliveryFees> saveDeliveryFeesList(Long pId,List<DeliveryFees> deliveryFeesList){
-			for (DeliveryFees deliveryFees : deliveryFeesList) {
-				deliveryFees.setPid(pId);
-				deliveryFees.setTenantId(SecureUtil.getTenantId());
-				if (deliveryFees.getId() == null){
-					deliveryFees.setCreateUser(SecureUtil.getUserId());
-					deliveryFees.setCreateTime(new Date());
-					baseMapper.insert(deliveryFees);
-				}else {
-					deliveryFees.setUpdateUser(SecureUtil.getUserId());
-					deliveryFees.setUpdateTime(new Date());
-					baseMapper.updateById(deliveryFees);
-				}
+	public List<DeliveryFees> saveDeliveryFeesList(Long pId, List<DeliveryFees> deliveryFeesList) {
+		for (DeliveryFees deliveryFees : deliveryFeesList) {
+			deliveryFees.setPid(pId);
+			deliveryFees.setTenantId(SecureUtil.getTenantId());
+			if (deliveryFees.getId() == null) {
+				deliveryFees.setCreateUser(SecureUtil.getUserId());
+				deliveryFees.setCreateTime(new Date());
+				baseMapper.insert(deliveryFees);
+			} else {
+				deliveryFees.setUpdateUser(SecureUtil.getUserId());
+				deliveryFees.setUpdateTime(new Date());
+				baseMapper.updateById(deliveryFees);
 			}
+		}
 		return deliveryFeesList;
 	}
 
 	/**
 	 * 获取发货费用明细
+	 *
 	 * @param delivery
 	 * @return
 	 */
-	public List<DeliveryFees> getDeliveryFeesList(Delivery delivery){
+	public List<DeliveryFees> getDeliveryFeesList(Delivery delivery) {
 		List<DeliveryFees> deliveryFeesList = baseMapper.selectList(new QueryWrapper<DeliveryFees>().eq("pid", delivery.getId())
 			.eq("tenant_id", SecureUtil.getTenantId()).eq("is_deleted", 0).orderByAsc("id"));
-		if (CollectionUtils.isNotEmpty(deliveryFeesList)){
-			deliveryFeesList.stream().forEach(item ->{
-				if (item.getItemId() != null){
-					//获取费用编号,名称
-					R<FeesDesc> feesDescR = feesDescClient.detail(item.getItemId());
-					if (feesDescR.isSuccess() && feesDescR.getData() != null){
-						item.setCode(feesDescR.getData().getCode());
-						item.setFeeName(feesDescR.getData().getCname());
+		if (CollectionUtils.isNotEmpty(deliveryFeesList)) {
+			StringBuilder corpId = new StringBuilder();
+			StringBuilder itemId = new StringBuilder();
+			for (DeliveryFees item : deliveryFeesList) {
+				corpId.append(item.getCorpId()).append(",");
+				itemId.append(item.getItemId()).append(",");
+			}
+			if (ObjectUtils.isNotNull(corpId.toString())) {
+				corpId = new StringBuilder(corpId.substring(0, corpId.length() - 1));
+			}
+			List<CorpsDesc> corpsDescList = corpsDescClient.selectByCorpIds(corpId.toString());
+			if (ObjectUtils.isNotNull(itemId.toString())) {
+				itemId = new StringBuilder(itemId.substring(0, itemId.length() - 1));
+			}
+			List<FeesDesc> feesDescList = feesDescClient.getFeesByIds(itemId.toString());
+			if (CollectionUtils.isNotEmpty(deliveryFeesList)) {
+				deliveryFeesList.forEach(item -> {
+					if (item.getItemId() != null) {
+						//获取费用编号,名称
+						if (!feesDescList.isEmpty()) {
+							FeesDesc feesDesc = feesDescList.stream().filter(e -> e.getId().equals(item.getItemId())).findFirst().orElse(null);
+							if (feesDesc != null) {
+								item.setCode(feesDesc.getCode());
+								item.setFeeName(feesDesc.getCname());
+							}
+						}
 					}
-				}
-				//获取客户名称
-				if (item.getCorpId() != null){
-					R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(item.getCorpId());
-					if (corpMessage.isSuccess() && corpMessage.getData() != null){
-						item.setCorpName(corpMessage.getData().getCname());
+					//获取客户名称
+					if (item.getCorpId() != null && !corpsDescList.isEmpty()) {
+						corpsDescList.stream().filter(corp -> corp.getId().equals(item.getCorpId())).findFirst()
+							.ifPresent(corpMessage -> item.setCorpName(corpMessage.getCname()));
 					}
-				}
-			});
+				});
+			}
 		}
 		return deliveryFeesList;
 	}

+ 40 - 36
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryItemsServiceImpl.java

@@ -26,9 +26,9 @@ import com.trade.purchase.order.enums.OrderTypeEnum;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springblade.client.entity.CorpsDesc;
+import org.springblade.client.entity.GoodsDesc;
 import org.springblade.client.feign.ICorpsDescClient;
 import org.springblade.client.feign.IGoodsDescClient;
-import org.springblade.client.vo.GoodsDescVO;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
@@ -140,46 +140,50 @@ public class DeliveryItemsServiceImpl extends ServiceImpl<DeliveryItemsMapper, D
 	public List<DeliveryItems> getDeliveryItems(Delivery delivery) {
 		List<DeliveryItems> deliveryItemsList = baseMapper.selectList(new QueryWrapper<DeliveryItems>().eq("pid", delivery.getId())
 			.eq("tenant_id", SecureUtil.getTenantId()).eq("is_deleted", 0).orderByAsc("id"));
-
-		String updateUserIds = "";//修改人id拼接
-		String createUserIds = "";//创建人id拼接
-		for (DeliveryItems items : deliveryItemsList) {
-			if (ObjectUtil.isNotEmpty(items.getUpdateUser())) {
-				updateUserIds = updateUserIds + items.getUpdateUser() + ",";
+		if (CollectionUtils.isNotEmpty(deliveryItemsList)) {
+			List<Long> userIdsList = new ArrayList<>();
+			List<Long> updateUserIds = deliveryItemsList.stream().map(DeliveryItems::getUpdateUser).distinct()
+				.filter(Objects::nonNull).collect(Collectors.toList());
+			if (!updateUserIds.isEmpty()) {
+				userIdsList.addAll(updateUserIds);
 			}
-			if (ObjectUtil.isNotEmpty(items.getCreateUser())) {
-				createUserIds = createUserIds + items.getCreateUser() + ",";
+			List<Long> createUserListIds = deliveryItemsList.stream().map(DeliveryItems::getUpdateUser).distinct()
+				.filter(Objects::nonNull).collect(Collectors.toList());
+			if (!createUserListIds.isEmpty()) {
+				userIdsList.addAll(createUserListIds);
 			}
-		}
-
-		//获得修改人信息
-		List<User> updateUserList = iUserClient.selectUserIds(updateUserIds);
-		//获得创建人信息
-		List<User> createUserList = iUserClient.selectUserIds(createUserIds);
-
-		if (CollectionUtils.isNotEmpty(deliveryItemsList)) {
-			for (DeliveryItems deliveryItems : deliveryItemsList) {
-				if (ObjectUtil.isNotEmpty(updateUserList)) {
-					User user = updateUserList.stream().anyMatch(e -> e.getId().equals(deliveryItems.getUpdateUser())) ? updateUserList.stream().filter(e -> e.getId().equals(deliveryItems.getUpdateUser())).findFirst().get() : null;
-					if (ObjectUtils.isNotNull(user)) {
-						deliveryItems.setUpdateUserName(user.getName());
-					}
+			StringBuilder goods = new StringBuilder();
+			for (DeliveryItems items : deliveryItemsList) {
+				if (ObjectUtil.isNotEmpty(items.getItemId())) {
+					goods.append(items.getItemId()).append(",");
 				}
-
-				if (ObjectUtil.isNotEmpty(createUserList)) {
-					User user = createUserList.stream().anyMatch(e -> e.getId().equals(deliveryItems.getCreateUser())) ? createUserList.stream().filter(e -> e.getId().equals(deliveryItems.getCreateUser())).findFirst().get() : null;
-					if (ObjectUtils.isNotNull(user)) {
-						deliveryItems.setUpdateUserName(user.getName());
-					}
+			}
+			if (ObjectUtils.isNotNull(goods.toString())) {
+				goods = new StringBuilder(goods.substring(0, goods.length() - 1));
+			}
+			List<GoodsDesc> goodsDescList = goodsDescClient.selectItemsIdGoods(goods.toString());
+			StringBuilder userIds = new StringBuilder();//用户id拼接
+			for (Long items : userIdsList) {
+				userIds.append(items).append(",");
+			}
+			if (ObjectUtils.isNotNull(userIds.toString())) {
+				userIds = new StringBuilder(userIds.substring(0, userIds.length() - 1));
+			}
+			//获得创建人信息
+			List<User> userList = iUserClient.selectUserIds(userIds.toString());
+			for (DeliveryItems deliveryItems : deliveryItemsList) {
+				if (ObjectUtil.isNotEmpty(userList)) {
+					userList.stream().filter(e -> e.getId().equals(deliveryItems.getUpdateUser())).findFirst().ifPresent(user -> deliveryItems.setUpdateUserName(user.getName()));
+					userList.stream().filter(e -> e.getId().equals(deliveryItems.getCreateUser())).findFirst().ifPresent(user -> deliveryItems.setUpdateUserName(user.getName()));
 				}
-
-				if (deliveryItems.getItemId() != null) {
+				if (!goodsDescList.isEmpty()) {
 					//获取商品编码,名称,规格编码,规格型号
-					R<GoodsDescVO> goodsMessage = goodsDescClient.selectGoodsMessage(deliveryItems.getItemId());
-					if (goodsMessage.isSuccess() && goodsMessage.getData() != null) {
-						deliveryItems.setCode(goodsMessage.getData().getCode());
-						deliveryItems.setCname(goodsMessage.getData().getCname());
-						deliveryItems.setTypeno(goodsMessage.getData().getTypeno());
+					GoodsDesc goodsDesc = goodsDescList.stream().filter(e -> e.getId().equals(deliveryItems.getItemId()))
+						.findFirst().orElse(null);
+					if (goodsDesc != null) {
+						deliveryItems.setCode(goodsDesc.getCode());
+						deliveryItems.setCname(goodsDesc.getCname());
+						deliveryItems.setTypeno(goodsDesc.getTypeno());
 					}
 				}
 			}

+ 31 - 20
blade-service/blade-deliver-goods/src/main/java/org/springblade/deliver/goods/service/impl/DeliveryServiceImpl.java

@@ -310,8 +310,6 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 		//获取发货主表数据
 		Delivery selectById = baseMapper.selectById(delivery.getId());
 
-		List<User> userList = iUserClient.selectUserAll();
-
 		//获得包装要求
 		Order order = new Order();
 		order.setOrderNo(selectById.getOrderNo());
@@ -321,32 +319,45 @@ public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> i
 		}
 		//获取创建人中文名
 		if (selectById.getCreateUser() != null) {
-			User user = userList.stream().filter(e -> e.getId().equals(selectById.getCreateUser())).findFirst().orElse(null);
-			if (ObjectUtil.isNotEmpty(user)) {
-				selectById.setCreateUserName(user.getName());
+			R<User> userR = iUserClient.userInfoById(selectById.getCreateUser());
+			if (userR.isSuccess() && ObjectUtil.isNotEmpty(userR.getData())) {
+				selectById.setCreateUserName(userR.getData().getName());
 			}
 		}
+		//客户
+		String corpIds = "";
+		if (ObjectUtils.isNotNull(selectById.getCorpId())) {
+			corpIds = selectById.getCorpId() + "";
+		}
+		if (ObjectUtils.isNotNull(selectById.getSalesCompany())) {
+			corpIds = "," + selectById.getSalesCompany();
+		}
+		List<CorpsDesc> corpsDescList = corpsDescClient.selectByCorpIds(corpIds);
 		//获取客户中文名
 		if (selectById.getCorpId() != null) {
-			R<List<Map<String, Object>>> corpMessage = corpsDescClient.getCorpsMessage(selectById.getCorpId().toString());
-			if (corpMessage.isSuccess() && corpMessage.getData() != null) {
-				selectById.setCorpName(corpMessage.getData());
-			}
-		}
-		//获取销售公司中文名
-		if (selectById.getSalesCompany() != null) {
-			R<List<Map<String, Object>>> corpMessage = corpsDescClient.getCorpsMessage(selectById.getSalesCompany().toString());
-			if (corpMessage.isSuccess() && corpMessage.getData() != null) {
-				selectById.setSalesCompanyNameList(corpMessage.getData());
+			List<Map<String, Object>> mapList = new ArrayList<>();
+			Map<String, Object> map = new HashMap<>();
+			CorpsDesc corpsDesc = corpsDescList.stream().filter(e-> e.getId().equals(selectById.getCorpId())).findFirst().orElse(null);
+			if (corpsDesc != null){
+				map.put("id",corpsDesc.getId());
+				map.put("cname",corpsDesc.getCname());
 			}
+			mapList.add(map);
+			selectById.setCorpName(mapList);
 		}
 
-		//获取所属公司
+		//获取销售公司中文名
 		if (selectById.getSalesCompany() != null) {
-			R<List<Map<String, Object>>> corpMessage = corpsDescClient.getCorpsMessage(String.valueOf(selectById.getSalesCompany()));
-			if (corpMessage.isSuccess() && corpMessage.getData() != null) {
-				selectById.setCompanyName(corpMessage.getData());
-			}
+			List<Map<String, Object>> mapList = new ArrayList<>();
+			Map<String, Object> map = new HashMap<>();
+			CorpsDesc corpsDesc = corpsDescList.stream().filter(e-> e.getId().equals(selectById.getSalesCompany())).findFirst().orElse(null);
+			if (corpsDesc != null){
+				map.put("id",corpsDesc.getId());
+				map.put("cname",corpsDesc.getCname());
+			}
+			mapList.add(map);
+			selectById.setSalesCompanyNameList(mapList);
+			selectById.setCompanyName(mapList);
 		}
 		//获取仓库信息
 		if (selectById.getStorageId() != null) {

+ 0 - 38
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/controller/PurchaseOrderController.java

@@ -92,44 +92,6 @@ public class PurchaseOrderController extends BladeController {
 	public R<OrderVO> detail(@PathVariable(value = "id") String id) {
 
 		R<OrderVO> orderMessage = orderService.getOrderMessage(id);
-		if (orderMessage.isSuccess() && orderMessage.getData() != null) {
-			R<User> user1 = userClient.userInfoById(orderMessage.getData().getUpdateUser());
-			if (user1.isSuccess() && user1.getData() != null) {
-				orderMessage.getData().setUpdateUserName(user1.getData().getName());
-			}
-			R<User> user = userClient.userInfoById(orderMessage.getData().getCreateUser());
-			if (user.isSuccess() && user.getData() != null) {
-				orderMessage.getData().setCreateUserName(user.getData().getName());
-			}
-
-			List<OrderItems> orderItemsList = orderMessage.getData().getOrderItemsList();
-			if (CollectionUtil.isNotEmpty(orderItemsList)) {
-				String updateUserIds = "";//修改人
-				String createUserIds = "";//创建人
-				for (OrderItems orderItems : orderItemsList) {
-					if (ObjectUtil.isNotEmpty(orderItems.getUpdateUser())) {
-						updateUserIds = updateUserIds + orderItems.getUpdateUser() + ",";
-					}
-					if (ObjectUtil.isNotEmpty(orderItems.getCreateUser())) {
-						createUserIds = createUserIds + orderItems.getCreateUser() + ",";
-					}
-				}
-				List<User> updateUser = userClient.selectUserIds(updateUserIds);
-				List<User> createUser = userClient.selectUserIds(createUserIds);
-				orderItemsList.forEach(e -> {
-					if (e.getUpdateUser() != null) {
-						if (ObjectUtil.isNotEmpty(updateUser)) {
-							e.setUpdateUserName(updateUser.stream().filter(d -> d.getId().equals(e.getUpdateUser())).findFirst().get().getName());
-						}
-					}
-					if (e.getCreateUser() != null) {
-						if (ObjectUtil.isNotEmpty(createUser)) {
-							e.setUpdateUserName(createUser.stream().filter(d -> d.getId().equals(e.getCreateUser())).findFirst().get().getName());
-						}
-					}
-				});
-			}
-		}
 		return orderMessage;
 	}
 

+ 96 - 53
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/service/impl/OrderServiceImpl.java

@@ -53,6 +53,7 @@ import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.finance.dto.ApplyDTO;
 import org.springblade.finance.feign.IFinanceClient;
 import org.springblade.finance.vojo.Items;
@@ -64,7 +65,6 @@ import org.springblade.system.feign.IDictBizClient;
 import org.springblade.system.feign.ISysClient;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
-import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
@@ -219,15 +219,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 	 */
 	@Override
 	public R<OrderVO> getOrderMessage(String id) {
-		//客户
-		CorpsDesc corpsDesc = new CorpsDesc();
-		corpsDesc.setTenantId(AuthUtil.getTenantId());
-		List<CorpsDesc> corpsDescList = corpsDescClient.getCorp(corpsDesc);
 		//仓库
 		List<StorageType> storageTypeList = iStorageClient.selectStorageTypeAll();
-		//用户
-		List<User> userList = userClient.selectUserAll();
-
 		String tenantId = AuthUtil.getTenantId();
 		//获取订单主表信息
 		Order orderMessage = baseMapper.selectOne(Wrappers.<Order>lambdaQuery().eq(Order::getId, id)
@@ -235,13 +228,24 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		if (Objects.isNull(orderMessage)) {
 			throw new OrderException("未找到订单信息");
 		}
+		List<Long> userIds = new ArrayList<>();
+		if (ObjectUtils.isNotNull(orderMessage.getUpdateUser())) {
+			userIds.add(orderMessage.getUpdateUser());
+		}
+		if (ObjectUtils.isNotNull(orderMessage.getUpdateUser())) {
+			userIds.add(orderMessage.getCreateUser());
+		}
 		OrderVO vo = new OrderVO();
 		BeanUtil.copyProperties(orderMessage, vo);
-		/*OrderVO vo = OrderMapstructMapper.INSTANCE.toVo(orderMessage);*/
-		//获取创建人中文名
-		if (ObjectUtils.isNotNull(userList)) {
-			userList.stream().filter(user -> user.getId().equals(vo.getCreateUser())).findFirst().ifPresent(createUser -> vo.setCreateUserName(createUser.getName()));
+		//客户
+		String corpIds = "";
+		if (ObjectUtils.isNotNull(orderMessage.getCorpId())) {
+			corpIds = orderMessage.getCorpId() + "";
+		}
+		if (ObjectUtils.isNotNull(orderMessage.getPurchaserId())) {
+			corpIds = "," + orderMessage.getPurchaserId();
 		}
+		List<CorpsDesc> corpsDescList = corpsDescClient.selectByCorpIds(corpIds);
 		//获取供应商中文名
 		if (orderMessage.getCorpId() != null) {
 			corpsDescList.stream().filter(corp -> corp.getId().equals(orderMessage.getCorpId())).findFirst().ifPresent(corpMessage -> vo.setCorpName(corpMessage.getCname()));
@@ -257,8 +261,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		//获取订单明细信息
 		List<OrderItems> orderItemsList = this.getOrderItems(vo.getId(), null);
 		if (CollectionUtils.isNotEmpty(orderItemsList)) {
+			userIds.addAll(orderItemsList.stream().map(OrderItems::getCreateUser).distinct().collect(Collectors.toList()));
+			userIds.addAll(orderItemsList.stream().map(OrderItems::getUpdateUser).distinct().collect(Collectors.toList()));
 			vo.setOrderItemsList(orderItemsList);
-//			vo.setItemsVOList(orderItemsList.stream().map(orderItemMapstructMapper::toVo).collect(Collectors.toList()));
 			List<OrderItemsVO> orderItemsVOList = orderItemsList.stream().map(orderItemMapstructMapper::toVo).collect(Collectors.toList());
 			vo.setItemsVOList(orderItemsVOList);
 			BigDecimal orderQuantity = orderItemsList.stream().map(OrderItems::getOrderQuantity)
@@ -269,6 +274,25 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		} else {
 			vo.setItemsVOList(new ArrayList<>());
 		}
+		String createUserIds = "";//创建人
+		userIds = userIds.stream().distinct().collect(Collectors.toList());
+		for (Long item : userIds) {
+			createUserIds = createUserIds + item + ",";
+		}
+		List<User> createUser = userClient.selectUserIds(createUserIds);
+		orderItemsList.forEach(e -> {
+			if (e.getUpdateUser() != null) {
+				if (ObjectUtil.isNotEmpty(createUser)) {
+					createUser.stream().filter(d -> d.getId().equals(e.getUpdateUser())).findFirst().ifPresent(user -> e.setUpdateUserName(user.getName()));
+				}
+			}
+			if (e.getCreateUser() != null) {
+				if (ObjectUtil.isNotEmpty(createUser)) {
+					createUser.stream().filter(d -> d.getId().equals(e.getCreateUser())).findFirst().ifPresent(user -> e.setUpdateUserName(user.getName()));
+				}
+			}
+		});
+		vo.setOrderItemsList(orderItemsList.isEmpty() ? new ArrayList<>() : orderItemsList);
 		//获取订单费用信息
 		List<OrderFees> orderFeesList = this.getOrderFees(vo.getId());
 		if (CollectionUtils.isNotEmpty(orderFeesList)) {
@@ -284,6 +308,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		} else {
 			vo.setOrderFilesList(new ArrayList<>());
 		}
+		if (ObjectUtil.isNotEmpty(createUser) && ObjectUtils.isNotNull(orderMessage.getUpdateUser())) {
+			createUser.stream().filter(d -> d.getId().equals(orderMessage.getUpdateUser())).findFirst().ifPresent(user -> vo.setUpdateUserName(user.getName()));
+		}
+		if (ObjectUtil.isNotEmpty(createUser) && ObjectUtils.isNotNull(orderMessage.getUpdateUser())) {
+			createUser.stream().filter(d -> d.getId().equals(orderMessage.getCreateUser())).findFirst().ifPresent(user -> vo.setCreateUserName(user.getName()));
+		}
 		return R.data(vo);
 	}
 
@@ -888,40 +918,43 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 	 * @return 子订单集合
 	 */
 	public List<OrderItems> getOrderItems(Long orderId, Long createId) {
-		//库区
-		List<StorageDesc> storageDescList = iStorageClient.selectStorageDescAll();
 		// 查询订单明细信息
 		List<OrderItems> orderItemsList = orderItemsService.list(Wrappers.<OrderItems>lambdaQuery()
 			.eq(OrderItems::getPid, orderId)
 			.eq(OrderItems::getTenantId, SecureUtil.getTenantId())
-//			.eq(OrderItems::getIsDeleted, 0).eq(Func.isNotEmpty(createId), OrderItems::getCreateUser, createId).orderByAsc(OrderItems::getSort));
 			.eq(OrderItems::getIsDeleted, 0).orderByAsc(OrderItems::getSort));
+		StringBuilder storageDescIds = new StringBuilder();
+		StringBuilder goodIds = new StringBuilder();
+		for (OrderItems item : orderItemsList) {
+			storageDescIds.append(item.getStorageId()).append(",");
+			goodIds.append(item.getItemId()).append(",");
+		}
+		if (ObjectUtils.isNotNull(storageDescIds.toString())) {
+			storageDescIds = new StringBuilder(storageDescIds.substring(0, storageDescIds.length() - 1));
+		}
+		//库区
+		List<StorageDesc> storageDescList = iStorageClient.selectStorageIds(storageDescIds.toString());
 		// 获取商品id、名称用于匹配明细汉字
-		List<GoodsDescVO> goodsDescVOList = goodsDescClient.selectGoodsBasic().getData();
+		List<GoodsDesc> goodsDescVOList = goodsDescClient.selectItemsIdGoods(goodIds.toString());
 		orderItemsList.forEach(item -> {
 			if (item.getItemId() != null) {
 				//库区
 				StorageDesc storageDesc = storageDescList.stream().filter(storage -> storage.getId().equals(item.getStorageId())).findFirst().orElse(null);
-				if (ObjectUtils.isNotNull(storageDesc)) {
+				if (storageDesc != null) {
 					item.setStorageName(storageDesc.getCname());
 				}
 				//获取商品编码,名称,规格编码,规格型号
-				R<GoodsDescVO> goodsMessage = goodsDescClient.selectGoodsMessage(item.getItemId());
-				if (goodsMessage.isSuccess() && goodsMessage.getData() != null) {
-					Optional<GoodsDescVO> first = goodsDescVOList.stream().filter(goods -> Objects.equals(goods.getId(), item.getItemId()))
-						.findFirst();
-					if (first.isPresent()) {
-						GoodsDescVO goodsDesc = first.get();
-						item.setCode(goodsDesc.getCode());
-						item.setCname(goodsDesc.getCname());
-						item.setTypeno(goodsDesc.getTypeno());
-						item.setSpecificationAndModel(goodsDesc.getSpecificationAndModel());
-						item.setEname(goodsMessage.getData().getEname());
-						item.setBrandItem(goodsMessage.getData().getBrandItem());
-						item.setSize(goodsMessage.getData().getSize());
-						item.setSpecsOne(goodsMessage.getData().getSpecsOne());
-						item.setSpecsTwo(goodsMessage.getData().getSpecsTwo());
-					}
+				GoodsDesc goodsDesc = goodsDescVOList.stream().filter(goods -> goods.getId().equals(item.getItemId())).findFirst().orElse(null);
+				if (goodsDesc != null) {
+					item.setCode(goodsDesc.getCode());
+					item.setCname(goodsDesc.getCname());
+					item.setTypeno(goodsDesc.getTypeno());
+					item.setSpecificationAndModel(goodsDesc.getSpecificationAndModel());
+					item.setEname(goodsDesc.getEname());
+					item.setBrandItem(goodsDesc.getBrandItem());
+					item.setSize(goodsDesc.getSize());
+					item.setSpecsOne(goodsDesc.getSpecsOne());
+					item.setSpecsTwo(goodsDesc.getSpecsTwo());
 				}
 			}
 		});
@@ -935,32 +968,42 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 	 * @return 费用集合
 	 */
 	public List<OrderFees> getOrderFees(Long orderId) {
-		//客户
-		CorpsDesc corpsDesc = new CorpsDesc();
-		corpsDesc.setTenantId(AuthUtil.getTenantId());
-		List<CorpsDesc> corpsDescList = corpsDescClient.getCorp(corpsDesc);
 		// 查询费用明细
 		List<OrderFees> orderFeesList = orderFeesService.list(Wrappers.<OrderFees>lambdaQuery().eq(OrderFees::getPid, orderId).eq(OrderFees::getIsDeleted, 0)
 			.eq(OrderFees::getTenantId, SecureUtil.getTenantId()));
 		if (CollectionUtils.isNotEmpty(orderFeesList)) {
-			orderFeesList.stream().forEach(item -> {
+			StringBuilder corpId = new StringBuilder();
+			StringBuilder itemId = new StringBuilder();
+			for (OrderFees item : orderFeesList) {
+				corpId.append(item.getCorpId()).append(",");
+				itemId.append(item.getItemId()).append(",");
+			}
+			if (ObjectUtils.isNotNull(corpId.toString())) {
+				corpId = new StringBuilder(corpId.substring(0, corpId.length() - 1));
+			}
+			List<CorpsDesc> corpsDescList = corpsDescClient.selectByCorpIds(corpId.toString());
+			if (ObjectUtils.isNotNull(itemId.toString())) {
+				itemId = new StringBuilder(itemId.substring(0, itemId.length() - 1));
+			}
+			List<FeesDesc> feesDescList = feesDescClient.getFeesByIds(itemId.toString());
+			for (OrderFees item : orderFeesList) {
 				if (item.getItemId() != null) {
 					//获取费用编号,名称
-					R<FeesDesc> feesDescR = feesDescClient.detail(item.getItemId());
-					if (feesDescR.isSuccess() && feesDescR.getData() != null) {
-						item.setCode(feesDescR.getData().getCode());
-						item.setFeeName(feesDescR.getData().getCname());
-						item.setEname(feesDescR.getData().getEname());
-					}
-					//获取客户名称
-					if (item.getCorpId() != null) {
-						CorpsDesc corpMessage = corpsDescList.stream().filter(corp -> corp.getId().equals(item.getCorpId())).findFirst().orElse(null);
-						if (ObjectUtils.isNotNull(corpMessage)) {
-							item.setCorpName(corpMessage.getCname());
+					if (!feesDescList.isEmpty()) {
+						FeesDesc feesDesc = feesDescList.stream().filter(e -> e.getId().equals(item.getItemId())).findFirst().orElse(null);
+						if (feesDesc != null) {
+							item.setCode(feesDesc.getCode());
+							item.setFeeName(feesDesc.getCname());
+							item.setEname(feesDesc.getEname());
 						}
 					}
 				}
-			});
+				//获取客户名称
+				if (item.getCorpId() != null && !corpsDescList.isEmpty()) {
+					corpsDescList.stream().filter(corp -> corp.getId().equals(item.getCorpId())).findFirst()
+						.ifPresent(corpMessage -> item.setCorpName(corpMessage.getCname()));
+				}
+			}
 		}
 		return orderFeesList;
 	}
@@ -1092,9 +1135,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 		//库区
 		List<StorageDesc> storageDescList = iStorageClient.selectStorageDescAll();
 		for (CMYWarehousingExcel cMYWarehousingExcel : excelList) {
-			if (ObjectUtils.isNotNull(cMYWarehousingExcel.getBillNo())){
+			if (ObjectUtils.isNotNull(cMYWarehousingExcel.getBillNo())) {
 				if (cMYWarehousingExcel.getBillNo().contains("/") || cMYWarehousingExcel.getBillNo().contains(".")
-				||cMYWarehousingExcel.getBillNo().contains(":")){
+					|| cMYWarehousingExcel.getBillNo().contains(":")) {
 					throw new RuntimeException("捆包号存在‘/’‘.’‘:’特殊字符,导入失败请修改");
 				}
 			}