소스 검색

mysql 递归版本问题

wks 3 년 전
부모
커밋
81adc23aa5

+ 18 - 1
src/main/java/com/ydtech/modules/esm/dao/EsmInsCompanyMapper.java

@@ -2,12 +2,29 @@ package com.ydtech.modules.esm.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ydtech.modules.esm.model.EsmInsCompany;
+import org.apache.ibatis.annotations.Select;
 
 import java.util.List;
 
 public interface EsmInsCompanyMapper extends BaseMapper<EsmInsCompany> {
 
-    List<String> getByLowerId(String companyId);
+    List<String> getByLowerId80(String companyId);
+
+    List<String> getByLowerId57(String companyId);
+
+    @Select("select version()")
+    String getVersion();
+
+    default List<String> getByLowerId(String companyId){
+        String version = getVersion();
+        String substring = version.substring(0, 3);
+        if("5.7".equals(substring)){
+            return getByLowerId57(companyId);
+        }else {
+            return getByLowerId80(companyId);
+        }
+    }
+
 
 }
 

+ 1 - 3
src/main/java/com/ydtech/modules/order/service/impl/InsRenewalServiceImpl.java

@@ -5,9 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.core.page.BasePageVO;
 import com.ydtech.core.page.HttpResult;
-import com.ydtech.modules.esm.model.EsmInsAttribution;
 import com.ydtech.modules.esm.model.EsmInsCompany;
-import com.ydtech.modules.esm.service.EsmInsAttributionService;
 import com.ydtech.modules.esm.service.EsmInsCompanyService;
 import com.ydtech.modules.ins.model.ya.YaQuoteInfoVo;
 import com.ydtech.modules.order.components.RenewalComponents;
@@ -36,7 +34,7 @@ public class InsRenewalServiceImpl extends ServiceImpl<InsRenewalMapper, InsRene
 
     private final EsmInsCompanyService esmInsCompanyService;
 
-    public InsRenewalServiceImpl(RenewalComponents renewalComponents,  EsmInsCompanyService esmInsCompanyService) {
+    public InsRenewalServiceImpl(RenewalComponents renewalComponents, EsmInsCompanyService esmInsCompanyService) {
         this.renewalComponents = renewalComponents;
         this.esmInsCompanyService = esmInsCompanyService;
     }

+ 11 - 1
src/main/resources/mapper/modules/esm/EsmInsCompanyMapper.xml

@@ -28,7 +28,7 @@
         cn_name,type,logo
     </sql>
 
-    <select id="getByLowerId" resultType="java.lang.String">
+    <select id="getByLowerId80" resultType="java.lang.String">
         with recursive temp as (select id
                                 from esm_ins_company
                                 where id = #{companyId}
@@ -40,5 +40,15 @@
         from temp
     </select>
 
+    <select id="getByLowerId57" resultType="java.lang.String">
+        SELECT id
+        FROM (SELECT * FROM esm_ins_company ORDER BY parent_id, id) products_sorted,
+             (SELECT @pv := #{companyId}) initialisation
+        WHERE find_in_set(parent_id, @pv)
+          AND length(
+                @pv := concat(@pv, ',', id))
+    </select>
+
+
 
 </mapper>