From 658c3d5749673d68de17ff86a5ee2ea994e09e02 Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Thu, 19 Oct 2023 21:36:18 +0800
Subject: [PATCH] 导出查询调整

---
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/impl/XsfsQktjServiceImpl.java |    2 
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/SkxsQkTjMapper.xml             |   79 ++++++++++++++++++++++++-
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/vo/SkxsQkTjVO.java                    |   17 +++++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/XsfsQktjMapper.java            |    7 ++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/XsfsQktjMapper.xml             |   12 +++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/SkxsQkTjMapper.java            |   18 +++++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/impl/SkxsQkTjServiceImpl.java |   12 ++-
 7 files changed, 132 insertions(+), 15 deletions(-)

diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/SkxsQkTjMapper.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/SkxsQkTjMapper.java
index 7d5d6e2..a1f240a 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/SkxsQkTjMapper.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/SkxsQkTjMapper.java
@@ -4,6 +4,7 @@
 import cn.gistack.sm.sjztods.excel.SkxsQkTjExcel;
 import cn.gistack.sm.sjztods.vo.SkxsQkTjVO;
 import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Param;
@@ -33,12 +34,27 @@
 	 * @param skxsQkTj
 	 * @return
 	 */
-	Object getStatisticList(@Param("skxsQkTj") SkxsQkTjVO skxsQkTj);
+	List<SkxsQkTjVO> getStatisticList(@Param("skxsQkTj") SkxsQkTjVO skxsQkTj);
 
 	/**
 	 * 查询导出数据
 	 * @param skxsQkTj
 	 * @return
 	 */
+	@InterceptorIgnore(tenantLine = "true")
 	List<SkxsQkTjExcel> exportSkxsQkTjList(@Param("skxsQkTj") SkxsQkTjVO skxsQkTj);
+
+	/**
+	 * 通过adCode 获取adGrad
+	 * @param adCode
+	 * @return
+	 */
+	String getAdGradByAdCode(@Param("adCode") String adCode);
+
+	/**
+	 * 查询详情数据
+	 * @param skxsQkTjExcel
+	 * @return
+	 */
+	SkxsQkTj selectSkxsQkTj(@Param("skxsQkTjExcel") SkxsQkTjExcel skxsQkTjExcel);
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/SkxsQkTjMapper.xml b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/SkxsQkTjMapper.xml
index 83521ba..7da8d4d 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/SkxsQkTjMapper.xml
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/SkxsQkTjMapper.xml
@@ -27,20 +27,76 @@
             left join SJZT_MD."att_ad_base" d ON c."p_ad_code" = d."guid"
             where 1=1
             <if test="skxsQkTj.statisticTime!=null">
-                and date_format(sqt."statistic_time","%Y-%m-%d") = #{skxsQkTj.statisticTime}
+                and DATE_FORMAT(sqt."statistic_time",'%Y-%m-%d') = #{skxsQkTj.statisticTime}
             </if>
             <if test="skxsQkTj.resName!=null and skxsQkTj.resName!=''">
                 and sqt."res_name" like concat('%',#{skxsQkTj.resName},'%')
             </if>
         ) x
-        <if test="skxsQkTj.adCode!=null and skxsQkTj.adCode!=''">
+        <if test="skxsQkTj.adCode!=null and skxsQkTj.adCode!='' and skxsQkTj.adCode!='420000000000'">
             and (townCode = #{skxsQkTj.adCode} or countyCode = #{skxsQkTj.adCode} or cityCode = #{skxsQkTj.adCode})
         </if>
     </select>
 
     <!--按行政区统计-->
     <select id="getStatisticList" resultType="cn.gistack.sm.sjztods.vo.SkxsQkTjVO">
-
+        select
+        <if test="skxsQkTj.adGrad==1">
+            cityName,
+        </if>
+        <if test="skxsQkTj.adGrad==2">
+            countyName,
+        </if>
+        <if test="skxsQkTj.adGrad==3">
+            townName,
+        </if>
+        ifnull(sum("ws"),0) as ws,
+        ifnull(sum("last_year_ws"),0) as lastYearWs,
+        ifnull(sum("his_ws"),0) as hisWs
+        from (
+		    select
+            sqt.*,
+            arb."res_reg_code" resRegCode,arb."eng_scal" engScal,
+            case when b."ad_grad" = 4 THEN b."ad_name" ELSE NULL END AS townName,
+            case when b."ad_grad" = 4 THEN b."ad_code" ELSE NULL END AS townCode,
+            case when b."ad_grad" = 3 THEN b."ad_name"
+            when c."ad_grad" = 3 THEN c."ad_name" END AS countyName,
+            case when b."ad_grad" = 3 THEN b."ad_code"
+            when c."ad_grad" = 3 THEN c."ad_code" END AS countyCode,
+            case when b."ad_grad" = 2 THEN b."ad_code"
+            when c."ad_grad" = 2 THEN c."ad_code"
+            ELSE d."ad_code" END AS cityCode,
+            case when b."ad_grad" = 2 THEN b."ad_name"
+            when c."ad_grad" = 2 THEN c."ad_name"
+            ELSE d."ad_name" END AS cityName
+            from SJZT_ODS."skxs_qk_tj" sqt
+            left join SJZT_MD."att_res_base" arb on arb."guid" = sqt."res_code"
+            left join SJZT_MD."att_ad_base" b ON arb."interior_ad_guid" = b."guid"
+            left join SJZT_MD."att_ad_base" c ON b."p_ad_code" = c."guid"
+            left join SJZT_MD."att_ad_base" d ON c."p_ad_code" = d."guid"
+            where 1=1
+            <if test="skxsQkTj.queryTime!=null and skxsQkTj.queryTime!=''">
+                and DATE_FORMAT(sqt."statistic_time",'%Y-%m-%d') = #{skxsQkTj.queryTime}
+            </if>
+            <if test="skxsQkTj.resName!=null and skxsQkTj.resName!=''">
+                and sqt."res_name" like concat('%',#{skxsQkTj.resName},'%')
+            </if>
+        ) a
+        <if test="skxsQkTj.adCode!=null and skxsQkTj.adCode!='' and skxsQkTj.adCode!='420000000000'">
+            and (townCode = #{skxsQkTj.adCode} or countyCode = #{skxsQkTj.adCode} or cityCode = #{skxsQkTj.adCode})
+        </if>
+        <if test="skxsQkTj.adGrad==1">
+            group by cityName,cityCode
+            order by cityCode
+        </if>
+        <if test="skxsQkTj.adGrad==2">
+            group by countyName,countyCode
+            order by countyCode
+        </if>
+        <if test="skxsQkTj.adGrad==3">
+            group by townName,townCode
+            order by townCode
+        </if>
     </select>
 
 
@@ -69,14 +125,27 @@
             left join SJZT_MD."att_ad_base" d ON c."p_ad_code" = d."guid"
             where 1=1
             <if test="skxsQkTj.statisticTime!=null">
-                and date_format(sqt."statistic_time","%Y-%m-%d") = #{skxsQkTj.statisticTime}
+                and DATE_FORMAT(sqt."statistic_time",'%Y-%m-%d') = #{skxsQkTj.statisticTime}
             </if>
             <if test="skxsQkTj.resName!=null and skxsQkTj.resName!=''">
                 and sqt."res_name" like concat('%',#{skxsQkTj.resName},'%')
             </if>
         ) x
-        <if test="skxsQkTj.adCode!=null and skxsQkTj.adCode!=''">
+        <if test="skxsQkTj.adCode!=null and skxsQkTj.adCode!='' and skxsQkTj.adCode!='420000000000'">
             and (townCode = #{skxsQkTj.adCode} or countyCode = #{skxsQkTj.adCode} or cityCode = #{skxsQkTj.adCode})
         </if>
     </select>
+
+    <!--通过adCode 获取adGrad-->
+    <select id="getAdGradByAdCode" resultType="java.lang.String">
+        select "ad_grad" from SJZT_MD."att_ad_base" where "guid" = #{adCode}
+    </select>
+
+    <!--查询详情数据-->
+    <select id="selectSkxsQkTj" resultType="cn.gistack.sm.sjztods.entity.SkxsQkTj">
+        select * from SJZT_ODS."skxs_qk_tj"
+        where 1=1
+        and date_format("statistic_time",'%Y-%m-%d') = #{skxsQkTjExcel.statisticTime}
+        and "res_code" = #{skxsQkTjExcel.resCode}
+    </select>
 </mapper>
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/XsfsQktjMapper.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/XsfsQktjMapper.java
index 7940a4c..2b943b1 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/XsfsQktjMapper.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/XsfsQktjMapper.java
@@ -41,4 +41,11 @@
 	 * @return
 	 */
 	List<XsfsQktjExcel> exportXsfsQktjList(@Param("xsfsQktj") XsfsQktjVO xsfsQktj);
+
+	/**
+	 * 查询详情信息
+	 * @param xsfsQktjExcel
+	 * @return
+	 */
+	XsfsQktj selectXsfsQktj(@Param("xsfsQktjExcel") XsfsQktjExcel xsfsQktjExcel);
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/XsfsQktjMapper.xml b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/XsfsQktjMapper.xml
index ef7d5af..bad6699 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/XsfsQktjMapper.xml
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/mapper/XsfsQktjMapper.xml
@@ -23,7 +23,7 @@
         from SJZT_ODS."xsfs_qktj" xq
         where 1=1
         <if test="xsfsQktj.statisticTime!=null">
-            and date_format(xq."statistic_time","%Y-%m-%d") = #{xsfsQktj.statisticTime}
+            and date_format(xq."statistic_time",'%Y-%m-%d') = #{xsfsQktj.statisticTime}
         </if>
         <if test="xsfsQktj.adCode!=null and xsfsQktj.adCode!=''">
             and xq."ad_code" = #{xsfsQktj.adCode}
@@ -59,10 +59,18 @@
         from SJZT_ODS."xsfs_qktj" xq
         where 1=1
         <if test="xsfsQktj.statisticTime!=null">
-            and date_format(xq."statistic_time","%Y-%m-%d") = #{xsfsQktj.statisticTime}
+            and date_format(xq."statistic_time",'%Y-%m-%d') = #{xsfsQktj.statisticTime}
         </if>
         <if test="xsfsQktj.adCode!=null and xsfsQktj.adCode!=''">
             and xq."ad_code" = #{xsfsQktj.adCode}
         </if>
     </select>
+
+    <!--查询详情数据-->
+    <select id="selectXsfsQktj" resultType="cn.gistack.sm.sjztods.entity.XsfsQktj">
+        select * from SJZT_ODS."skxs_qk_tj"
+        where 1=1
+        and date_format("statistic_time",'%Y-%m-%d') = #{xsfsQktjExcel.statisticTime}
+        and "ad_code" = #{xsfsQktjExcel.adCode}
+    </select>
 </mapper>
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/impl/SkxsQkTjServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/impl/SkxsQkTjServiceImpl.java
index 1923420..d563aed 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/impl/SkxsQkTjServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/impl/SkxsQkTjServiceImpl.java
@@ -35,7 +35,7 @@
 	@Override
 	@DS("ztznwh")
 	public boolean exportSkxsQkTj(SkxsQkTj skxsQkTj) {
-		// 查询库中是否包含当前日期,当前行政区的数据,如果有,则更新,没有则新增
+		// 查询库中是否包含当前日期,当前行政区的数据,如果有,则更新,没有则新增 ---有问题
 		QueryWrapper<SkxsQkTj> wrapper = new QueryWrapper<>();
 		wrapper.eq("\"statistic_time\"",skxsQkTj.getStatisticTime())
 			.eq("\"res_code\"",skxsQkTj.getResCode());
@@ -78,6 +78,11 @@
 	 */
 	@Override
 	public Object getStatisticList(SkxsQkTjVO skxsQkTj) {
+		// 通过adCode 获取adGrad
+		String adGrad = baseMapper.getAdGradByAdCode(skxsQkTj.getAdCode());
+		if (null!= adGrad && !adGrad.equals("")){
+			skxsQkTj.setAdGrad(adGrad);
+		}
 		return baseMapper.getStatisticList(skxsQkTj);
 	}
 
@@ -92,10 +97,7 @@
 			data.forEach(skxsQkTjExcel -> {
 				SkxsQkTj skxsQkTj = Objects.requireNonNull(BeanUtil.copy(skxsQkTjExcel, SkxsQkTj.class));
 				// 查询库中是否包含当前日期,当前行政区的数据,如果有,则更新,没有则新增
-				QueryWrapper<SkxsQkTj> wrapper = new QueryWrapper<>();
-				wrapper.eq("\"statistic_time\"",skxsQkTj.getStatisticTime())
-					.eq("\"res_code\"",skxsQkTj.getResCode());
-				SkxsQkTj qkTj = baseMapper.selectOne(wrapper);
+				SkxsQkTj qkTj = baseMapper.selectSkxsQkTj(skxsQkTjExcel);
 				// 设置更新人员,更新时间,来源信息
 				skxsQkTj.setUpdateTime(new Date());
 				skxsQkTj.setUpdateUser(AuthUtil.getUserId());
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/impl/XsfsQktjServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/impl/XsfsQktjServiceImpl.java
index 3dcdd63..081d104 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/impl/XsfsQktjServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/service/impl/XsfsQktjServiceImpl.java
@@ -94,7 +94,7 @@
 				QueryWrapper<XsfsQktj> wrapper = new QueryWrapper<>();
 				wrapper.eq("\"statistic_time\"",xsfsQktj.getStatisticTime())
 					.eq("\"ad_code\"",xsfsQktj.getAdCode());
-				XsfsQktj qkTj = baseMapper.selectOne(wrapper);
+				XsfsQktj qkTj = baseMapper.selectXsfsQktj(xsfsQktjExcel);
 				// 设置更新人员,更新时间,来源信息
 				xsfsQktj.setUpdateTime(new Date());
 				xsfsQktj.setUpdateUser(AuthUtil.getUserId());
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/vo/SkxsQkTjVO.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/vo/SkxsQkTjVO.java
index 75655fc..80cbdee 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/vo/SkxsQkTjVO.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztods/vo/SkxsQkTjVO.java
@@ -7,9 +7,19 @@
 public class SkxsQkTjVO extends SkxsQkTj {
 
 	/**
-	 * 按行政区划统计
+	 * 行政区划编号
 	 */
 	private String adCode;
+
+	/**
+	 * 行政区划名称
+	 */
+	private String adName;
+
+	/**
+	 * 行政区划等级
+	 */
+	private String adGrad;
 
 	/**
 	 * 水库规模
@@ -40,4 +50,9 @@
 	 * 乡镇名称
 	 */
 	private String townName;
+
+	/**
+	 * 查询时间
+	 */
+	private String queryTime;
 }

--
Gitblit v1.9.3