From 703ca1c4ac199d13f0345bb913c320845f77f2ee Mon Sep 17 00:00:00 2001
From: p-honggang.li <p-honggang.li@pcitc.com>
Date: 星期三, 03 九月 2025 16:58:08 +0800
Subject: [PATCH] 新增订单表是否已评价字段

---
 src/main/java/com/webmanage/service/impl/OrderInfoServiceImpl.java |   91 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 90 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/webmanage/service/impl/OrderInfoServiceImpl.java b/src/main/java/com/webmanage/service/impl/OrderInfoServiceImpl.java
index 94a5ab0..72522e1 100644
--- a/src/main/java/com/webmanage/service/impl/OrderInfoServiceImpl.java
+++ b/src/main/java/com/webmanage/service/impl/OrderInfoServiceImpl.java
@@ -41,6 +41,7 @@
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.List;
+import java.util.Arrays;
 import java.util.stream.Collectors;
 
 /**
@@ -162,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());
 
@@ -173,6 +174,65 @@
             queryDTO.getApplyTimeStart() != null ? queryDTO.getApplyTimeStart().toString() : null,
             queryDTO.getApplyTimeEnd() != null ? queryDTO.getApplyTimeEnd().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<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
         );
 
         // 鏋勫缓杩斿洖缁撴灉
@@ -404,6 +464,7 @@
         orderInfo.setPaymentType(createOrderDTO.getPaymentType());
         orderInfo.setPaymentStatus("鏈敮浠�");
         orderInfo.setBuyerRemarks(createOrderDTO.getBuyerRemarks());
+        orderInfo.setIsEvaluate("鏈瘎浠�");
         orderInfo.setCreatedAt(LocalDateTime.now());
         orderInfo.setUpdatedAt(LocalDateTime.now());
 
@@ -1124,4 +1185,32 @@
         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;
+    }
+
+    @Override
+    public boolean updateOrderIsEvaluate(String orderId) {
+        if (!StringUtils.hasText(orderId)) {
+            throw new BusinessException("璁㈠崟ID涓嶈兘涓虹┖");
+        }
+        OrderInfo orderInfo = this.getById(orderId);
+        if (orderInfo == null) {
+            throw new BusinessException("璁㈠崟涓嶅瓨鍦�");
+        }
+        orderInfo.setIsEvaluate("宸茶瘎浠�");
+        return this.updateById(orderInfo);
+    }
 }

--
Gitblit v1.8.0