liyg 2 سال پیش
والد
کامیت
eb5bea0900
1فایلهای تغییر یافته به همراه85 افزوده شده و 23 حذف شده
  1. 85 23
      src/main/resources/com/steerinfo/dil/mapper/UniversalMapper.xml

+ 85 - 23
src/main/resources/com/steerinfo/dil/mapper/UniversalMapper.xml

@@ -79,7 +79,6 @@
 
     <!--  边输边查公司  -->
     <select id="getCompanyMesByLike" resultType="java.util.Map">
-        select * from(
         select * from(
         select
         RC.SSO_ID "ssoId",
@@ -90,15 +89,42 @@
             RC.COMPANY_TYPE || '-' ||
         </if>
         RC.COMPANY_NAME "label",
-        RC.COMPANY_NAME "text"
+        RC.COMPANY_NAME "text",
+        T2 ."rootCompanyId",
+        T2 ."rootCompanyName"
         from RMS_COMPANY RC
-        where DELETED = 0        )
+        LEFT JOIN (
+            SELECT "companyId",MAX("level") "rootIndex" FROM
+            (
+            SELECT
+            RC.COMPANY_ID "rootCompanyId",
+            RC.COMPANY_NAME "rootCompanyName",
+            LEVEL "level",
+            CONNECT_BY_ROOT ( COMPANY_ID ) "companyId"
+            FROM
+            RMS_COMPANY RC
+            CONNECT BY PRIOR RC.PARENT_COMPANY_ID = RC.COMPANY_ID
+            )
+            GROUP BY "companyId"
+        ) T1 ON  T1 ."companyId" = RC .COMPANY_ID
+        LEFT JOIN
+        (
+            SELECT
+            RC.COMPANY_ID "rootCompanyId",
+            RC.COMPANY_NAME "rootCompanyName",
+            LEVEL "level",
+            CONNECT_BY_ROOT ( COMPANY_ID ) "companyId"
+            FROM
+            RMS_COMPANY RC
+            CONNECT BY PRIOR RC.PARENT_COMPANY_ID = RC.COMPANY_ID
+        ) T2 ON  T2 ."companyId" = T1 ."companyId" AND T2 ."level" = T1 ."rootIndex"
         <where>
+            DELETED = 0
             <if test="companyType!=null and companyType!=''">
-                AND "companyType" = #{companyType}
+                AND RC.COMPANY_TYPE = #{companyType}
             </if>
             <if test="index!=null and index!=''">
-                AND REGEXP_LIKE("label", #{index})
+                AND REGEXP_LIKE(RC.COMPANY_NAME, #{index})
             </if>
         </where>
         FETCH NEXT 10 ROWS ONLY
@@ -114,8 +140,35 @@
                 RC.COMPANY_TYPE || '-' ||
             </if>
             RC.COMPANY_NAME "label",
-            RC.COMPANY_NAME "text"
+            RC.COMPANY_NAME "text",
+            T2 ."rootCompanyId",
+            T2 ."rootCompanyName"
             from RMS_COMPANY RC
+            LEFT JOIN (
+                SELECT "companyId",MAX("level") "rootIndex" FROM
+                (
+                SELECT
+                RC.COMPANY_ID "rootCompanyId",
+                RC.COMPANY_NAME "rootCompanyName",
+                LEVEL "level",
+                CONNECT_BY_ROOT ( COMPANY_ID ) "companyId"
+                FROM
+                RMS_COMPANY RC
+                CONNECT BY PRIOR RC.PARENT_COMPANY_ID = RC.COMPANY_ID
+                )
+                GROUP BY "companyId"
+            ) T1 ON  T1 ."companyId" = RC .COMPANY_ID
+            LEFT JOIN
+            (
+                SELECT
+                RC.COMPANY_ID "rootCompanyId",
+                RC.COMPANY_NAME "rootCompanyName",
+                LEVEL "level",
+                CONNECT_BY_ROOT ( COMPANY_ID ) "companyId"
+                FROM
+                RMS_COMPANY RC
+                CONNECT BY PRIOR RC.PARENT_COMPANY_ID = RC.COMPANY_ID
+            ) T2 ON  T2 ."companyId" = T1 ."companyId" AND T2 ."level" = T1 ."rootIndex"
             where RC.COMPANY_ID in
             <foreach collection="id" item="item"  open="(" close=")" separator="," >
                 #{item}
@@ -518,19 +571,28 @@
         RC.MATERIAL_NAME "text"
         from RMS_MATERIAL RC
         where DELETED = 0
-        )
         <where>
             <if test="index!=null and index!=''">
-                AND REGEXP_LIKE("label", #{index})
-            </if>
-            <if test="id!=null and id.size>0 and !(index!=null and index!='')">
-                AND "id" in
-                <foreach collection="id" item="item"  open="(" close=")" separator="," >
-                    #{item}
-                </foreach>
+                AND REGEXP_LIKE(RC.MATERIAL_NAME, #{index})
             </if>
         </where>
         FETCH NEXT 10 ROWS ONLY
+        )
+        <if test="id!=null and id.size>0">
+        UNION
+            select
+            RC.MATERIAL_ID "materialId",
+            RC.MATERIAL_NAME "materialName",
+            RC.MATERIAL_ID "id",
+            RC.MATERIAL_ID "value",
+            RC.MATERIAL_NAME "label",
+            RC.MATERIAL_NAME "text"
+            from RMS_MATERIAL RC
+            WHERE RC.MATERIAL_ID in
+            <foreach collection="id" item="item"  open="(" close=")" separator="," >
+                #{item}
+            </foreach>
+        </if>
     </select>
     <select id="countTrainLoad" resultType="java.lang.Integer">
         SELECT COUNT(*)
@@ -670,8 +732,15 @@
         FUEL_TYPE_NAME "text",
         FUEL_TYPE_NAME "label"
         FROM RMS_FUEL_TYPE
-        WHERE DELETED = 0
-        <if test="id!=null and id.size > 0 and !(index!=null and index!='')">
+        <where>
+            DELETED = 0
+            <if test="index!=null and index!=''">
+                AND REGEXP_LIKE(FUEL_TYPE_NAME, #{index})
+            </if>
+        </where>
+        FETCH NEXT 10 ROWS ONLY
+        )
+        <if test="id!=null and id.size > 0">
             UNION
             SELECT
             FUEL_TYPE_ID "fuelTypeId",
@@ -686,13 +755,6 @@
                 #{item}
             </foreach>
         </if>
-        )
-        <where>
-            <if test="index!=null and index!=''">
-                AND REGEXP_LIKE("label", #{index})
-            </if>
-        </where>
-        FETCH NEXT 1 ROWS ONLY
     </select>
     <select id="getDemandRulesCode" resultType="java.util.Map">
         SELECT * FROM (