Browse Source

交接单分页优化

yzc 1 năm trước cách đây
mục cha
commit
a5f151ba80

+ 8 - 0
hx-sale/src/main/java/com/fjhx/sale/controller/contract/ContractProductController.java

@@ -36,6 +36,14 @@ public class ContractProductController {
     }
 
     /**
+     * 外销合同-产品分页 优化后
+     */
+    @PostMapping("/pageNew")
+    public Page<ContractProductVo> pageNew(@RequestBody ContractProductSelectDto dto) {
+        return contractProductService.getPageNew(dto);
+    }
+
+    /**
      * 采购交接单-产品分页
      */
     @PostMapping("/page1")

+ 6 - 0
hx-sale/src/main/java/com/fjhx/sale/mapper/contract/ContractProductMapper.java

@@ -26,6 +26,12 @@ public interface ContractProductMapper extends BaseMapper<ContractProduct> {
     Page<ContractProductVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<ContractProduct> wrapper, @Param("isArrival") String isArrival);
 
     /**
+     * 优化后的分页接口
+     */
+    Page<ContractProductVo> getPageNew(@Param("page") Page<Object> page, @Param("ew") IWrapper<ContractProduct> wrapper, @Param("isArrival") String isArrival);
+
+
+    /**
      * 根据合同产品ID集合查询合同产品
      */
     List<ContractProductVo> getListByIds(@Param("ew") IWrapper<ContractProduct> wrapper);

+ 5 - 0
hx-sale/src/main/java/com/fjhx/sale/service/contract/ContractProductService.java

@@ -26,6 +26,11 @@ public interface ContractProductService extends BaseService<ContractProduct> {
     Page<ContractProductVo> getPage(ContractProductSelectDto dto);
 
     /**
+     * 优化的分页
+     */
+    Page<ContractProductVo> getPageNew(ContractProductSelectDto dto);
+
+    /**
      * 采购交接单 分页
      */
     Page<ContractProductVo> getPage1(ContractProductSelectDto dto);

+ 31 - 4
hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractProductServiceImpl.java

@@ -95,7 +95,28 @@ public class ContractProductServiceImpl extends ServiceImpl<ContractProductMappe
         }
         //下发交接单过滤
 //        wrapper.eq("t2", Contract::getIssue, 1);
-        return commPage(wrapper, dto);
+        return commPage(wrapper, dto, 0);
+    }
+
+    /**
+     * 优化后的分页
+     */
+    @Override
+    public Page<ContractProductVo> getPageNew(ContractProductSelectDto dto) {
+        IWrapper<ContractProduct> wrapper = getWrapper();
+        //过滤待处理数量为0的数据
+        wrapper.ne("t1", ContractProduct::getExpendQuantity, 0);
+        //是否到账过滤
+        if (ObjectUtil.isNotEmpty(dto.getIsReceived())) {
+            if (1 == dto.getIsReceived()) {
+                wrapper.isNotNull("co.id");
+            } else {
+                wrapper.isNull("co.id");
+            }
+        }
+        //下发交接单过滤
+//        wrapper.eq("t2", Contract::getIssue, 1);
+        return commPage(wrapper, dto, 1);
     }
 
     /**
@@ -106,13 +127,13 @@ public class ContractProductServiceImpl extends ServiceImpl<ContractProductMappe
         IWrapper<ContractProduct> wrapper = getWrapper();
         //过滤 已到账 或 预付比例==0 的数据
         wrapper.and(q -> q.isNotNull("co.id").or().eq("t2.advance_ratio", 0));
-        return commPage(wrapper, dto);
+        return commPage(wrapper, dto, 0);
     }
 
     /**
      * 公共代码抽取
      */
-    public Page<ContractProductVo> commPage(IWrapper<ContractProduct> wrapper, ContractProductSelectDto dto) {
+    public Page<ContractProductVo> commPage(IWrapper<ContractProduct> wrapper, ContractProductSelectDto dto, Integer test) {
         wrapper.orderByDesc("t1", ContractProduct::getCreateTime);
 //        wrapper.between("t2", Contract::getStatus, FlowStatusEnum.PASS.getKey(), FlowStatusEnum.CANCELLATION.getKey() - 1);
         wrapper.eq("t2", Contract::getStatus, FlowStatusEnum1.PASS.getKey());
@@ -157,7 +178,13 @@ public class ContractProductServiceImpl extends ServiceImpl<ContractProductMappe
             }
         }
         wrapper.groupBy("t1.id");
-        Page<ContractProductVo> page = this.baseMapper.getPage(dto.getPage(), wrapper,dto.getIsArrival());
+        Page<ContractProductVo> page;
+        if (test == 0) {
+            page = this.baseMapper.getPage(dto.getPage(), wrapper, dto.getIsArrival());
+        } else {
+            //优化后的测试接口
+            page = this.baseMapper.getPageNew(dto.getPage(), wrapper, dto.getIsArrival());
+        }
         List<ContractProductVo> list = page.getRecords();
 
         if (list.size() == 0) {

+ 69 - 27
hx-sale/src/main/resources/mapper/contract/ContractProductMapper.xml

@@ -40,17 +40,17 @@
                 FROM
                     claim_contract cc
                         LEFT JOIN claim c ON cc.claim_id = c.id
-                        LEFT JOIN bytesailing_account.account_running_water arw ON c.business_id = arw.id
-                WHERE
-                    cc.contract_id = t2.id
-            ) / t2.amount * 100 AS ad,
-		t2.advance_ratio AS advanceRatio
+        LEFT JOIN bytesailing_account.account_running_water arw ON c.business_id = arw.id
+        WHERE
+        cc.contract_id = t2.id
+        ) / t2.amount * 100 AS ad,
+        t2.advance_ratio AS advanceRatio
         FROM
-            contract_product t1
-            LEFT JOIN contract t2
-            LEFT JOIN claim_contract co ON co.contract_id = t2.id ON t1.contract_id = t2.id
-            ${ew.customSqlSegment}
-            ) t1
+        contract_product t1
+        LEFT JOIN contract t2
+        LEFT JOIN claim_contract co ON co.contract_id = t2.id ON t1.contract_id = t2.id
+        ${ew.customSqlSegment}
+        ) t1
         <where>
             <if test="isArrival neq null and isArrival==1 ">
                 t1.ad &lt; t1.advanceRatio
@@ -61,25 +61,67 @@
         </where>
     </select>
 
-    <select id="getEHSDPage" resultType="com.fjhx.sale.entity.contract.vo.ContractProductVo">
+    <select id="getPageNew" resultType="com.fjhx.sale.entity.contract.vo.ContractProductVo">
         SELECT
-            *
+        *
         FROM
-            (
-                SELECT
-                    IFNULL(t3.`status`,0) AS qualityStatus,
-                    t1.create_time AS ct,
-                    "外销合同" AS orderType,
-                    t1.id,
-                    t1.product_model AS productModel,
-                    t1.product_name AS productName,
-                    t1.contract_id,
-                    t1.product_id,
-                    t2.`code` AS `contractCode`,
-                    t2.user_name AS userName,
-                    t2.version AS contractVersion,
-                    t1.expend_quantity AS expendQuantity,
-                    t2.sell_corporation_id,
+        (
+        SELECT
+        t1.id,
+        t2.create_time AS contractTime,
+        t1.contract_id,
+        t1.product_id,
+        t2.`code` AS contractCode,
+        t2.user_name AS userName,
+        t2.create_user AS salesmanId,
+        t2.version AS contractVersion,
+        t1.expend_quantity AS expendQuantity,
+        co.create_time AS claimTime,
+        t2.contract_template_id AS contractTemplateId,
+        t1.quantity,
+        IFNULL(sum( pd.count ),0) AS startPurchaseCount,
+        IFNULL( SUM( IFNULL( co.money, 0 ) * IFNULL( arw.rate, 1 )), 0 ) / t2.amount * 100 AS ad,
+        t2.advance_ratio AS advanceRatio
+        FROM
+        contract_product t1
+        LEFT JOIN contract t2 ON t1.contract_id = t2.id
+        LEFT JOIN claim_contract co ON co.contract_id = t2.id
+        LEFT JOIN bytesailing_purchase.purchase_detail pd ON pd.data_resource_id = t1.id
+        AND pd.del_flag = 0
+        LEFT JOIN bytesailing_purchase.purchase p ON pd.purchase_id = p.id
+        AND p.purchase_status = 10
+        AND p.del_flag = 0
+        LEFT JOIN claim c ON co.claim_id = c.id
+        LEFT JOIN bytesailing_account.account_running_water arw ON c.business_id = arw.id
+        AND co.contract_id = t2.id
+        AND arw.del_flag = 0
+        ${ew.customSqlSegment}
+        ) t1
+        <where>
+            <if test="isArrival neq null and isArrival==1 ">
+                t1.ad &lt; t1.advanceRatio
+            </if>
+            <if test="isArrival neq null and isArrival==2 ">
+                t1.ad > t1.advanceRatio
+            </if>
+        </where>
+    </select>
+
+    <select id="getEHSDPage" resultType="com.fjhx.sale.entity.contract.vo.ContractProductVo">
+        SELECT *
+        FROM (SELECT IFNULL(t3.`status`, 0) AS                                                                   qualityStatus,
+                     t1.create_time         AS                                                                   ct,
+                     "外销合同"             AS                                                                   orderType,
+                     t1.id,
+                     t1.product_model       AS                                                                   productModel,
+                     t1.product_name        AS                                                                   productName,
+                     t1.contract_id,
+                     t1.product_id,
+                     t2.`code`              AS                                                                   `contractCode`,
+                     t2.user_name           AS                                                                   userName,
+                     t2.version             AS                                                                   contractVersion,
+                     t1.expend_quantity     AS                                                                   expendQuantity,
+                     t2.sell_corporation_id,
                     t2.buy_corporation_id,
                     ( SELECT create_time FROM claim_contract WHERE contract_id = t2.id ORDER BY create_time DESC LIMIT 1 ) AS claimTime
                 FROM