From b05283fba9a536c226aee635bc824cbf8a604188 Mon Sep 17 00:00:00 2001 From: seatonwan9 Date: 星期四, 28 八月 2025 16:19:36 +0800 Subject: [PATCH] 更新代码 --- src/main/java/com/webmanage/service/impl/OrderInfoServiceImpl.java | 273 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 266 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/webmanage/service/impl/OrderInfoServiceImpl.java b/src/main/java/com/webmanage/service/impl/OrderInfoServiceImpl.java index 7ec425c..eaff11a 100644 --- a/src/main/java/com/webmanage/service/impl/OrderInfoServiceImpl.java +++ b/src/main/java/com/webmanage/service/impl/OrderInfoServiceImpl.java @@ -22,6 +22,7 @@ import com.webmanage.mapper.OrderDetailMapper; import com.webmanage.mapper.OrderEvaluationMapper; import com.webmanage.mapper.OrderInfoMapper; +import com.webmanage.mapper.ReportResultSubmissionMapper; import com.webmanage.service.OrderInfoService; import com.webmanage.service.OrderNoService; import com.webmanage.service.MinioService; @@ -40,6 +41,7 @@ import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; +import java.util.Arrays; import java.util.stream.Collectors; /** @@ -67,8 +69,11 @@ @Resource private MinioService minioService; + @Resource + private ReportResultSubmissionMapper reportResultSubmissionMapper; + @Override - public PageResult<OrderInfo> getBuyerOrderPage(OrderQueryDTO queryDTO) { + public PageResult<OrderDetailVO> getBuyerOrderPage(OrderQueryDTO queryDTO) { // 鍙傛暟鏍¢獙 if (queryDTO.getUserId() == null) { throw new BusinessException("鐢ㄦ埛ID涓嶈兘涓虹┖"); @@ -88,10 +93,23 @@ queryDTO.getCreateTimeEnd() != null ? queryDTO.getCreateTimeEnd().toString() : null, queryDTO.getOrderBy(), queryDTO.getOrderDirection() ); + // 灏嗚鍗曚笌璇︽儏鑱旇〃灏佽鍒癡O + List<OrderDetailVO> voList = result.getRecords().stream().map(order -> { + OrderDetailVO vo = new OrderDetailVO(); + BeanUtils.copyProperties(order, vo); + List<OrderDetail> details = orderDetailMapper.selectByOrderId(order.getOrderId()); + List<OrderDetailItemVO> items = details.stream().map(d -> { + OrderDetailItemVO item = new OrderDetailItemVO(); + BeanUtils.copyProperties(d, item); + return item; + }).collect(java.util.stream.Collectors.toList()); + vo.setOrderDetails(items); + return vo; + }).collect(java.util.stream.Collectors.toList()); // 鏋勫缓杩斿洖缁撴灉 - return new PageResult<OrderInfo>( - result.getRecords(), + return new PageResult<OrderDetailVO>( + voList, result.getTotal(), queryDTO.getPageNum().longValue(), queryDTO.getPageSize().longValue(), @@ -100,7 +118,7 @@ } @Override - public PageResult<OrderInfo> getSellerOrderPage(OrderQueryDTO queryDTO) { + public PageResult<OrderDetailVO> getSellerOrderPage(OrderQueryDTO queryDTO) { // 鍙傛暟鏍¢獙 if (queryDTO.getProviderId() == null) { throw new BusinessException("鎻愪緵鑰匢D涓嶈兘涓虹┖"); @@ -120,9 +138,23 @@ queryDTO.getOrderBy(), queryDTO.getOrderDirection() ); + // 灏嗚鍗曚笌璇︽儏鑱旇〃灏佽鍒癡O + List<OrderDetailVO> voList = result.getRecords().stream().map(order -> { + OrderDetailVO vo = new OrderDetailVO(); + BeanUtils.copyProperties(order, vo); + List<OrderDetail> details = orderDetailMapper.selectByOrderId(order.getOrderId()); + List<OrderDetailItemVO> items = details.stream().map(d -> { + OrderDetailItemVO item = new OrderDetailItemVO(); + BeanUtils.copyProperties(d, item); + return item; + }).collect(java.util.stream.Collectors.toList()); + vo.setOrderDetails(items); + return vo; + }).collect(java.util.stream.Collectors.toList()); + // 鏋勫缓杩斿洖缁撴灉 - return new PageResult<OrderInfo>( - result.getRecords(), + return new PageResult<OrderDetailVO>( + voList, result.getTotal(), queryDTO.getPageNum().longValue(), queryDTO.getPageSize().longValue(), @@ -131,7 +163,7 @@ } @Override - public PageResult<OrderInfo> getPendingApprovalOrderPage(OrderQueryDTO queryDTO) { + public PageResult<OrderDetailVO> getPendingApprovalOrderPage(OrderQueryDTO queryDTO) { // 鍒涘缓鍒嗛〉瀵硅薄 Page<OrderInfo> page = new Page<>(queryDTO.getPageNum(), queryDTO.getPageSize()); @@ -144,9 +176,201 @@ queryDTO.getOrderBy(), queryDTO.getOrderDirection() ); + // 灏嗚鍗曚笌璇︽儏鑱旇〃灏佽鍒癡O + List<OrderDetailVO> voList = result.getRecords().stream().map(order -> { + OrderDetailVO vo = new OrderDetailVO(); + BeanUtils.copyProperties(order, vo); + List<OrderDetail> details = orderDetailMapper.selectByOrderId(order.getOrderId()); + List<OrderDetailItemVO> items = details.stream().map(d -> { + OrderDetailItemVO item = new OrderDetailItemVO(); + BeanUtils.copyProperties(d, item); + return item; + }).collect(java.util.stream.Collectors.toList()); + vo.setOrderDetails(items); + return vo; + }).collect(java.util.stream.Collectors.toList()); + + // 鏋勫缓杩斿洖缁撴灉 + return new PageResult<OrderDetailVO>( + voList, + result.getTotal(), + queryDTO.getPageNum().longValue(), + queryDTO.getPageSize().longValue(), + result.getPages() + ); + } + + @Override + public PageResult<OrderInfo> getPendingApprovalOrderPageWithProductConditions(OrderQueryDTO queryDTO) { + // 鏍规嵁浜у搧鏉′欢鏌ヨ浜у搧ID鍒楄〃 + List<String> productIds = null; + if (StringUtils.hasText(queryDTO.getIndustryId()) || StringUtils.hasText(queryDTO.getUnitProjectId()) || + StringUtils.hasText(queryDTO.getProductTypeId()) || StringUtils.hasText(queryDTO.getProductSubTypeId())) { + productIds = reportResultSubmissionMapper.selectProductIdsByConditions( + queryDTO.getIndustryId(), queryDTO.getUnitProjectId(), + queryDTO.getProductTypeId(), queryDTO.getProductSubTypeId() + ); + + // 濡傛灉娌℃湁鎵惧埌鍖归厤鐨勪骇鍝侊紝鐩存帴杩斿洖绌虹粨鏋� + if (CollectionUtils.isEmpty(productIds)) { + return new PageResult<OrderInfo>( + java.util.Collections.emptyList(), + 0L, + queryDTO.getPageNum().longValue(), + queryDTO.getPageSize().longValue(), + 0L + ); + } + } + + // 鍒涘缓鍒嗛〉瀵硅薄 + Page<OrderInfo> page = new Page<>(queryDTO.getPageNum(), queryDTO.getPageSize()); + + // 鎵ц鍒嗛〉鏌ヨ + IPage<OrderInfo> result = baseMapper.selectPendingApprovalOrderPageWithProductConditions( + page, queryDTO.getOrderStatus(), queryDTO.getProductName(), queryDTO.getProviderName(), + queryDTO.getOrderId(), + queryDTO.getApplyTimeStart() != null ? queryDTO.getApplyTimeStart().toString() : null, + queryDTO.getApplyTimeEnd() != null ? queryDTO.getApplyTimeEnd().toString() : null, + queryDTO.getOrderBy(), queryDTO.getOrderDirection(), productIds + ); + // 鏋勫缓杩斿洖缁撴灉 return new PageResult<OrderInfo>( result.getRecords(), + result.getTotal(), + queryDTO.getPageNum().longValue(), + queryDTO.getPageSize().longValue(), + result.getPages() + ); + } + + @Override + public PageResult<OrderDetailVO> getBuyerOrderPageWithProductConditions(OrderQueryDTO queryDTO) { + // 鍙傛暟鏍¢獙 + if (queryDTO.getUserId() == null) { + throw new BusinessException("鐢ㄦ埛ID涓嶈兘涓虹┖"); + } + + // 鏍规嵁浜у搧鏉′欢鏌ヨ浜у搧ID鍒楄〃 + List<String> productIds = null; + if (StringUtils.hasText(queryDTO.getIndustryId()) || StringUtils.hasText(queryDTO.getUnitProjectId()) || + StringUtils.hasText(queryDTO.getProductTypeId()) || StringUtils.hasText(queryDTO.getProductSubTypeId())) { + productIds = reportResultSubmissionMapper.selectProductIdsByConditions( + queryDTO.getIndustryId(), queryDTO.getUnitProjectId(), + queryDTO.getProductTypeId(), queryDTO.getProductSubTypeId() + ); + + // 濡傛灉娌℃湁鎵惧埌鍖归厤鐨勪骇鍝侊紝鐩存帴杩斿洖绌虹粨鏋� + if (CollectionUtils.isEmpty(productIds)) { + return new PageResult<OrderDetailVO>( + java.util.Collections.emptyList(), + 0L, + queryDTO.getPageNum().longValue(), + queryDTO.getPageSize().longValue(), + 0L + ); + } + } + + // 鍒涘缓鍒嗛〉瀵硅薄 + Page<OrderInfo> page = new Page<>(queryDTO.getPageNum(), queryDTO.getPageSize()); + + // 鎵ц鍒嗛〉鏌ヨ + IPage<OrderInfo> result = baseMapper.selectBuyerOrderPageWithProductConditions( + page, queryDTO.getUserId(), queryDTO.getUnitId(), queryDTO.getOrderStatus(), + queryDTO.getPaymentStatus(), queryDTO.getPaymentType(), queryDTO.getProductName(), + queryDTO.getProviderName(), queryDTO.getOrderId(), + queryDTO.getApplyTimeStart() != null ? queryDTO.getApplyTimeStart().toString() : null, + queryDTO.getApplyTimeEnd() != null ? queryDTO.getApplyTimeEnd().toString() : null, + queryDTO.getCreateTimeStart() != null ? queryDTO.getCreateTimeStart().toString() : null, + queryDTO.getCreateTimeEnd() != null ? queryDTO.getCreateTimeEnd().toString() : null, + queryDTO.getOrderBy(), queryDTO.getOrderDirection(), productIds + ); + + // 灏嗚鍗曚笌璇︽儏鑱旇〃灏佽鍒癡O + List<OrderDetailVO> voList = result.getRecords().stream().map(order -> { + OrderDetailVO vo = new OrderDetailVO(); + BeanUtils.copyProperties(order, vo); + List<OrderDetail> details = orderDetailMapper.selectByOrderId(order.getOrderId()); + List<OrderDetailItemVO> items = details.stream().map(d -> { + OrderDetailItemVO item = new OrderDetailItemVO(); + BeanUtils.copyProperties(d, item); + return item; + }).collect(java.util.stream.Collectors.toList()); + vo.setOrderDetails(items); + return vo; + }).collect(java.util.stream.Collectors.toList()); + + // 鏋勫缓杩斿洖缁撴灉 + return new PageResult<OrderDetailVO>( + voList, + result.getTotal(), + queryDTO.getPageNum().longValue(), + queryDTO.getPageSize().longValue(), + result.getPages() + ); + } + + @Override + public PageResult<OrderDetailVO> getSellerOrderPageWithProductConditions(OrderQueryDTO queryDTO) { + // 鍙傛暟鏍¢獙 + if (queryDTO.getProviderId() == null) { + throw new BusinessException("鎻愪緵鑰匢D涓嶈兘涓虹┖"); + } + + // 鏍规嵁浜у搧鏉′欢鏌ヨ浜у搧ID鍒楄〃 + List<String> productIds = null; + if (StringUtils.hasText(queryDTO.getIndustryId()) || StringUtils.hasText(queryDTO.getUnitProjectId()) || + StringUtils.hasText(queryDTO.getProductTypeId()) || StringUtils.hasText(queryDTO.getProductSubTypeId())) { + productIds = reportResultSubmissionMapper.selectProductIdsByConditions( + queryDTO.getIndustryId(), queryDTO.getUnitProjectId(), + queryDTO.getProductTypeId(), queryDTO.getProductSubTypeId() + ); + + // 濡傛灉娌℃湁鎵惧埌鍖归厤鐨勪骇鍝侊紝鐩存帴杩斿洖绌虹粨鏋� + if (CollectionUtils.isEmpty(productIds)) { + return new PageResult<OrderDetailVO>( + java.util.Collections.emptyList(), + 0L, + queryDTO.getPageNum().longValue(), + queryDTO.getPageSize().longValue(), + 0L + ); + } + } + + // 鍒涘缓鍒嗛〉瀵硅薄 + Page<OrderInfo> page = new Page<>(queryDTO.getPageNum(), queryDTO.getPageSize()); + + // 鎵ц鍒嗛〉鏌ヨ + IPage<OrderInfo> result = baseMapper.selectSellerOrderPageWithProductConditions( + page, queryDTO.getProviderId(), queryDTO.getOrderStatus(), queryDTO.getPaymentStatus(), + queryDTO.getProductName(), queryDTO.getOrderId(), + queryDTO.getApplyTimeStart() != null ? queryDTO.getApplyTimeStart().toString() : null, + queryDTO.getApplyTimeEnd() != null ? queryDTO.getApplyTimeEnd().toString() : null, + queryDTO.getCreateTimeStart() != null ? queryDTO.getCreateTimeStart().toString() : null, + queryDTO.getCreateTimeEnd() != null ? queryDTO.getCreateTimeEnd().toString() : null, + queryDTO.getOrderBy(), queryDTO.getOrderDirection(), productIds + ); + + // 灏嗚鍗曚笌璇︽儏鑱旇〃灏佽鍒癡O + List<OrderDetailVO> voList = result.getRecords().stream().map(order -> { + OrderDetailVO vo = new OrderDetailVO(); + BeanUtils.copyProperties(order, vo); + List<OrderDetail> details = orderDetailMapper.selectByOrderId(order.getOrderId()); + List<OrderDetailItemVO> items = details.stream().map(d -> { + OrderDetailItemVO item = new OrderDetailItemVO(); + BeanUtils.copyProperties(d, item); + return item; + }).collect(java.util.stream.Collectors.toList()); + vo.setOrderDetails(items); + return vo; + }).collect(java.util.stream.Collectors.toList()); + + // 鏋勫缓杩斿洖缁撴灉 + return new PageResult<OrderDetailVO>( + voList, result.getTotal(), queryDTO.getPageNum().longValue(), queryDTO.getPageSize().longValue(), @@ -940,4 +1164,39 @@ throw new BusinessException("鍙栨秷璁㈠崟澶辫触锛�" + e.getMessage()); } } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean updateWorkflowId(String orderId, String workflowId) { + if (!StringUtils.hasText(orderId)) { + throw new BusinessException("璁㈠崟ID涓嶈兘涓虹┖"); + } + if (!StringUtils.hasText(workflowId)) { + throw new BusinessException("宸ヤ綔娴両D涓嶈兘涓虹┖"); + } + + OrderInfo orderInfo = this.getById(orderId); + if (orderInfo == null) { + throw new BusinessException("璁㈠崟涓嶅瓨鍦�"); + } + + orderInfo.setWorkflowId(workflowId); + orderInfo.setUpdatedAt(LocalDateTime.now()); + return this.updateById(orderInfo); + } + + @Override + public boolean existsCompletedNotCancelledOrderByProductId(String productId) { + if (!StringUtils.hasText(productId)) { + throw new BusinessException("浜у搧ID涓嶈兘涓虹┖"); + } + QueryWrapper<OrderInfo> wrapper = new QueryWrapper<>(); + wrapper.eq("product_id", productId); + // 鏈彇娑堬細閫昏緫鏈垹闄� + wrapper.eq("deleted", 0); + // 瀹℃牳涓細鐘舵�佷笉涓� 宸插畬鎴� 鎴� 宸插彇娑� + wrapper.notIn("order_status", Arrays.asList("宸插畬鎴�", "宸插彇娑�")); + Long count = this.baseMapper.selectCount(wrapper); + return count != null && count > 0; + } } -- Gitblit v1.8.0