From 40616c5802932c2216e97a44ec9abed182590bbe Mon Sep 17 00:00:00 2001
From: seatonwan9
Date: 星期四, 28 八月 2025 15:46:40 +0800
Subject: [PATCH] 更新代码

---
 src/main/java/com/webmanage/service/impl/OrderInfoServiceImpl.java |  257 ++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 250 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..459acd4 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;
@@ -67,8 +68,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 +92,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 +117,7 @@
     }
 
     @Override
-    public PageResult<OrderInfo> getSellerOrderPage(OrderQueryDTO queryDTO) {
+    public PageResult<OrderDetailVO> getSellerOrderPage(OrderQueryDTO queryDTO) {
         // 鍙傛暟鏍¢獙
         if (queryDTO.getProviderId() == null) {
             throw new BusinessException("鎻愪緵鑰匢D涓嶈兘涓虹┖");
@@ -120,9 +137,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 +162,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 +175,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 +1163,24 @@
             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);
+    }
 }

--
Gitblit v1.8.0