From f28da0f4705921b88d94c4531fa89753c4bb9f52 Mon Sep 17 00:00:00 2001
From: Bang Hu <hu_bang@hotmail.com>
Date: 星期四, 28 八月 2025 12:21:30 +0800
Subject: [PATCH] 参考买家中心服务查询API添加交易审批模查询服务API

---
 src/main/java/com/webmanage/service/OrderInfoService.java          |    5 +
 src/main/resources/mapper/OrderInfoMapper.xml                      |   50 ++++++++++++++++
 src/main/java/com/webmanage/service/impl/OrderInfoServiceImpl.java |   45 +++++++++++++++
 src/main/resources/application-dev.yml                             |    2 
 src/main/java/com/webmanage/mapper/OrderInfoMapper.java            |    9 +++
 src/main/java/com/webmanage/controller/OrderController.java        |   11 +++
 6 files changed, 121 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/webmanage/controller/OrderController.java b/src/main/java/com/webmanage/controller/OrderController.java
index baeb5f9..f3120a7 100644
--- a/src/main/java/com/webmanage/controller/OrderController.java
+++ b/src/main/java/com/webmanage/controller/OrderController.java
@@ -157,6 +157,17 @@
         }
     }
 
+    @PostMapping("/approval/page/with-product-conditions")
+    @ApiOperation("鍒嗛〉鏌ヨ寰呭鎵硅鍗曞垪琛紙鏀寔浜у搧鏉′欢锛�")
+    public Result<Object> getPendingApprovalOrderPageWithProductConditions(@Valid @RequestBody OrderQueryDTO queryDTO) {
+        try {
+            return Result.success(orderInfoService.getPendingApprovalOrderPageWithProductConditions(queryDTO));
+        } catch (Exception e) {
+            log.error("鏌ヨ寰呭鎵硅鍗曞垪琛ㄥけ璐�", e);
+            return Result.error("鏌ヨ寰呭鎵硅鍗曞垪琛ㄥけ璐ワ細" + e.getMessage());
+        }
+    }
+
     @GetMapping("/detail/{orderId}")
     @ApiOperation("鑾峰彇璁㈠崟璇︽儏")
     public Result<OrderDetailVO> getOrderDetail(
diff --git a/src/main/java/com/webmanage/mapper/OrderInfoMapper.java b/src/main/java/com/webmanage/mapper/OrderInfoMapper.java
index 055b06f..1785bdc 100644
--- a/src/main/java/com/webmanage/mapper/OrderInfoMapper.java
+++ b/src/main/java/com/webmanage/mapper/OrderInfoMapper.java
@@ -45,6 +45,15 @@
                                                    @Param("orderDirection") String orderDirection);
 
     /**
+     * 鍒嗛〉鏌ヨ寰呭鎵硅鍗曞垪琛紙鏀寔浜у搧鏉′欢锛�
+     */
+    IPage<OrderInfo> selectPendingApprovalOrderPageWithProductConditions(Page<OrderInfo> page, @Param("orderStatus") String orderStatus,
+                                                   @Param("productName") String productName, @Param("providerName") String providerName,
+                                                   @Param("orderId") String orderId, @Param("applyTimeStart") String applyTimeStart,
+                                                   @Param("applyTimeEnd") String applyTimeEnd, @Param("orderBy") String orderBy,
+                                                   @Param("orderDirection") String orderDirection, @Param("productIds") java.util.List<String> productIds);
+
+    /**
      * 鍒嗛〉鏌ヨ涔板璁㈠崟鍒楄〃锛堟敮鎸佷骇鍝佹潯浠讹級
      */
     IPage<OrderInfo> selectBuyerOrderPageWithProductConditions(Page<OrderInfo> page, @Param("userId") String userId,
diff --git a/src/main/java/com/webmanage/service/OrderInfoService.java b/src/main/java/com/webmanage/service/OrderInfoService.java
index a7a367f..7481c6c 100644
--- a/src/main/java/com/webmanage/service/OrderInfoService.java
+++ b/src/main/java/com/webmanage/service/OrderInfoService.java
@@ -41,6 +41,11 @@
     PageResult<OrderInfo> getPendingApprovalOrderPage(OrderQueryDTO queryDTO);
 
     /**
+     * 鍒嗛〉鏌ヨ寰呭鎵硅鍗曞垪琛紙鏀寔浜у搧鏉′欢锛�
+     */
+    PageResult<OrderInfo> getPendingApprovalOrderPageWithProductConditions(OrderQueryDTO queryDTO);
+
+    /**
      * 鑾峰彇璁㈠崟璇︽儏
      */
     OrderDetailVO getOrderDetail(String orderId);
diff --git a/src/main/java/com/webmanage/service/impl/OrderInfoServiceImpl.java b/src/main/java/com/webmanage/service/impl/OrderInfoServiceImpl.java
index 94a5ab0..552ce54 100644
--- a/src/main/java/com/webmanage/service/impl/OrderInfoServiceImpl.java
+++ b/src/main/java/com/webmanage/service/impl/OrderInfoServiceImpl.java
@@ -186,6 +186,51 @@
     }
 
     @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) {
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 235bb55..effd90b 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -5,7 +5,7 @@
     driver-class-name: org.postgresql.Driver
     url: jdbc:postgresql://localhost:5432/web_manage?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
     username: postgres
-    password: postgres
+    password: zkyxpostgres
     druid:
       # 鍒濆杩炴帴鏁�
       initial-size: 5
diff --git a/src/main/resources/mapper/OrderInfoMapper.xml b/src/main/resources/mapper/OrderInfoMapper.xml
index d65043b..3aec6a2 100644
--- a/src/main/resources/mapper/OrderInfoMapper.xml
+++ b/src/main/resources/mapper/OrderInfoMapper.xml
@@ -190,6 +190,56 @@
         </choose>
     </select>
 
+    <!-- 鍒嗛〉鏌ヨ寰呭鎵硅鍗曞垪琛紙鏀寔浜у搧鏉′欢锛� -->
+    <select id="selectPendingApprovalOrderPageWithProductConditions" resultMap="BaseResultMap">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM tb_order_info
+        WHERE deleted = 0
+        AND order_status IN ('寰呬笂浼犳枃浠�', '寰呮巿鏉�', '寰呬氦鏄撶‘璁�', '宸插畬鎴�', '宸茶瘎浠�')
+        <if test="orderStatus != null and orderStatus != ''">
+            AND order_status = #{orderStatus}
+        </if>
+        <if test="productName != null and productName != ''">
+            AND product_name LIKE CONCAT('%', #{productName}, '%')
+        </if>
+        <if test="providerName != null and providerName != ''">
+            AND provider_name LIKE CONCAT('%', #{providerName}, '%')
+        </if>
+        <if test="orderId != null and orderId != ''">
+            AND order_id LIKE CONCAT('%', #{orderId}, '%')
+        </if>
+        <if test="applyTimeStart != null and applyTimeStart != ''">
+            AND apply_time >= #{applyTimeStart}::timestamp
+        </if>
+        <if test="applyTimeEnd != null and applyTimeEnd != ''">
+            AND apply_time &lt;= #{applyTimeEnd}::timestamp
+        </if>
+        <if test="productIds != null and productIds.size() > 0">
+            AND product_id IN
+            <foreach collection="productIds" item="productId" open="(" separator="," close=")">
+                #{productId}
+            </foreach>
+        </if>
+        ORDER BY
+        <choose>
+            <when test="orderBy != null and orderBy != ''">
+                ${orderBy}
+            </when>
+            <otherwise>
+                created_at
+            </otherwise>
+        </choose>
+        <choose>
+            <when test="orderDirection != null and orderDirection == 'asc'">
+                ASC
+            </when>
+            <otherwise>
+                DESC
+            </otherwise>
+        </choose>
+    </select>
+
     <!-- 鍒嗛〉鏌ヨ涔板璁㈠崟鍒楄〃锛堟敮鎸佷骇鍝佹潯浠讹級 -->
     <select id="selectBuyerOrderPageWithProductConditions" resultMap="BaseResultMap">
         SELECT

--
Gitblit v1.8.0