Browse Source

优化可视化二级菜单查询

wangzhe 2 năm trước cách đây
mục cha
commit
64374c65ae

+ 6 - 0
mybusiness/src/main/java/com/business/controller/VisualizationController.java

@@ -267,6 +267,12 @@ public class VisualizationController extends BaseController {
             object.put("value",info.getCount());
             jsonArray.add(object);
         }
+        if(list_data.size() == 0){
+            JSONObject object = new JSONObject();
+            object.put("name", "无数据");
+            object.put("value", 0);
+            jsonArray.add(object);
+        }
         return jsonArray;
     }
 

+ 10 - 0
mybusiness/src/main/java/com/sooka/system/domain/TUInterfaceinfo.java

@@ -2,6 +2,8 @@ package com.sooka.system.domain;
 
 import com.sooka.common.annotation.Excel;
 import com.sooka.common.core.domain.BaseEntity;
+import lombok.Getter;
+import lombok.Setter;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 
@@ -12,6 +14,8 @@ import org.apache.commons.lang3.builder.ToStringStyle;
  * @author lei
  * @date 2021-07-01
  */
+@Getter
+@Setter
 public class TUInterfaceinfo extends BaseEntity
 {
     private static final long serialVersionUID = 1L;
@@ -30,6 +34,12 @@ public class TUInterfaceinfo extends BaseEntity
     /** 删除时间 */
     private String delFlag;
 
+    /** 接口数据条数 */
+//    private String datanum;
+
+    /** 接口名称对应表名 */
+    private String tableName;
+
     /** 接口名称 */
     @Excel(name = "接口名称")
     private String interfaceName;

+ 24 - 0
mybusiness/src/main/java/com/sooka/system/mapper/TUInterfaceinfoMapper.java

@@ -31,6 +31,14 @@ public interface TUInterfaceinfoMapper
     public List<TUInterfaceinfo> selectTUInterfaceinfoList(TUInterfaceinfo tUInterfaceinfo);
 
     /**
+     * 查询【接口数据条数】列表
+     *
+     * @param tUInterfaceinfo 【接口数据条数】
+     * @return 【接口数据条数】集合
+     */
+    public List<TUInterfaceinfo> selectTUInterfaceinfoDataNumList(TUInterfaceinfo tUInterfaceinfo);
+
+    /**
      * 根据接口IDS获取接口LIST
      * */
     public List<TUInterfaceinfo> selectTUInterfaceinfoListByIds(String[] ids);
@@ -52,6 +60,22 @@ public interface TUInterfaceinfoMapper
     public int updateTUInterfaceinfo(TUInterfaceinfo tUInterfaceinfo);
 
     /**
+     * 修改【接口数据条数】
+     *
+     * @param tUInterfaceinfo 【接口数据条数】
+     * @return 结果
+     */
+    public int updateTUInterfaceinfoDataNum(TUInterfaceinfo tUInterfaceinfo);
+
+    /**
+     * 更新【接口数据条数】
+     *
+     * @param tUInterfaceinfo 【接口数据条数】
+     * @return 结果
+     */
+    public int updateDataNum(TUInterfaceinfo tUInterfaceinfo);
+
+    /**
      * 删除【请填写功能名称】
      *
      * @param id 【请填写功能名称】ID

+ 42 - 0
mybusiness/src/main/java/com/sooka/system/service/impl/TUInterfaceinfoServiceImpl.java

@@ -1,5 +1,6 @@
 package com.sooka.system.service.impl;
 
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -251,6 +252,47 @@ public class TUInterfaceinfoServiceImpl implements ITUInterfaceinfoService
 
     @Override
     public Long getGuijiCountByDeptId(String deptId){
+        new Thread() {
+            public void run() {
+                try{
+                    TUInterfaceinfo tuInterfaceinfo = new TUInterfaceinfo();
+                    tuInterfaceinfo.setDeptId(deptId);
+                    tuInterfaceinfo.setStatus("0");//状态(0可用,2禁用)
+                    /*
+                    t_guiji_gas_zenner_gas_purchase_center_infor 真兰中心计费信息
+                     */
+                    List<TUInterfaceinfo> tuInterfaceinfoList = tUInterfaceinfoMapper.selectTUInterfaceinfoDataNumList(tuInterfaceinfo);
+                    for (int i = 0; i < tuInterfaceinfoList.size(); i ++) {
+                        TUInterfaceinfo interfaceinfo = tuInterfaceinfoList.get(i);
+                        boolean uninitialized = interfaceinfo.getUpdateTime() == null;//未初始化
+                        boolean oldData =  interfaceinfo.getUpdateTime() != null && new Date().getTime() - interfaceinfo.getUpdateTime().getTime() > 10 * 60 * 1000;//最多10分钟刷新一次最新数据
+                        boolean isValid = interfaceinfo.getStatus().equals("0");//有效数据
+                        if(uninitialized || (oldData && isValid)){
+                            interfaceinfo.setUpdateTime(new Date());
+                            Date dateBegin = new Date();
+                            tUInterfaceinfoMapper.updateTUInterfaceinfoDataNum(interfaceinfo);//更新更新时间 防止多次操作
+                            System.out.println("(" + tuInterfaceinfoList.size() + "-" + (i + 1) + ") " + interfaceinfo.getInterfaceName() + "更新更新时间 防止多次操作");
+                            tUInterfaceinfoMapper.updateDataNum(interfaceinfo);//更新更新时间为最新的以及数据条数
+                            Long interval = new Date().getTime() - dateBegin.getTime();//接口查询总数所用时间
+                            System.out.println("(" + tuInterfaceinfoList.size() + "-" + (i + 1) + ") " + interfaceinfo.getTableName() + " - " + interfaceinfo.getInterfaceName() + " - " + interval + " ms");
+                            // update t_u_interfaceinfo_datanum set datanum = 0, update_time = null 重置数据总数重新查询 使用updateTime控制min分钟内只能查询一次
+                            // select count(*) from t_guiji_gas_zenner_gas_purchase_center_infor - 归集-真兰收费系统-中心计费购气信息 12452820
+                            // (17-4) t_guiji_gas_zenner_gas_purchase_center_infor - 归集-真兰收费系统-中心计费购气信息 - 32424 ms
+                            // (17-5) t_guiji_gas_zenner_meter_reading_infor - 归集-真兰收费系统-抄表信息 - 222659 ms
+                            /*
+                            update t_u_interfaceinfo_datanum set datanum = 0, update_time = null;
+                            update t_u_interfaceinfo_datanum set status = 2 where table_name = 't_guiji_gas_zenner_gas_purchase_center_infor'; -- 12489514 17ms
+                            update t_u_interfaceinfo_datanum set status = 2 where table_name = 't_guiji_gas_zenner_meter_reading_infor'; -- 12389252 23ms
+                             */
+                            // 燃气 25010409 26114283
+                        }
+                    }
+                    System.out.println((tuInterfaceinfoList.size()>0?tuInterfaceinfoList.get(0).getDeptName():deptId)+": 查询接口数据结束,共" + tuInterfaceinfoList.size() + "个接口");
+                }catch (Exception e){
+                    e.printStackTrace();
+                }
+            }
+        }.start();
         Map<String, Object> param = new HashMap<>();
         param.put("deptId", deptId);
         tUInterfaceinfoMapper.getGuijiCountByDeptId(param);

+ 42 - 1
mybusiness/src/main/resources/mapper/system/TUInterfaceinfoMapper.xml

@@ -13,6 +13,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="createTime"    column="create_time"    />
         <result property="updateBy"    column="update_by"    />
         <result property="updateTime"    column="update_time"    />
+        <result property="tableName"    column="table_name"    />
         <result property="interfaceName"    column="interface_name"    />
         <result property="infoItem"    column="info_item"    />
         <result property="usageScenarios"    column="usage_scenarios"    />
@@ -37,7 +38,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectTUInterfaceinfoVo">
-        select id, status, remark, del_flag, create_by, create_time, update_by, update_time, interface_name, info_item, usage_scenarios, share_type, interface_type, env, sign_serveraddress, interface_address, type_iam, type_aksk,dept_id,dept_name,code,callsuccnum,callfailnum from t_u_interfaceinfo
+        select id, status, remark, del_flag, create_by, create_time, update_by, update_time, table_name, interface_name, info_item, usage_scenarios, share_type, interface_type, env, sign_serveraddress, interface_address, type_iam, type_aksk,dept_id,dept_name,code,callsuccnum,callfailnum from t_u_interfaceinfo
     </sql>
 
     <select id="selectTUInterfaceinfoList" parameterType="TUInterfaceinfo" resultMap="TUInterfaceinfoResult">
@@ -65,6 +66,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         order by create_time desc
     </select>
 
+
+    <select id="selectTUInterfaceinfoDataNumList" parameterType="TUInterfaceinfo" resultMap="TUInterfaceinfoResult">
+        select id, status, remark, del_flag, create_by, create_time, update_by, update_time, table_name, interface_name, info_item, usage_scenarios, share_type, interface_type, env, sign_serveraddress, interface_address, type_iam, type_aksk,dept_id,dept_name,code,callsuccnum,callfailnum
+        from t_u_interfaceinfo_datanum
+        where dept_id = #{deptId} and status = '0' and table_name != '' and table_name is not null
+    </select>
+
     <select id="selectTUInterfaceinfoListByIds" parameterType="String" resultMap="TUInterfaceinfoResult">
         <include refid="selectTUInterfaceinfoVo"/>
         where id in
@@ -161,6 +169,39 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where id = #{id}
     </update>
 
+    <update id="updateTUInterfaceinfoDataNum" parameterType="TUInterfaceinfo">
+        update t_u_interfaceinfo_datanum
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="status != null">status = #{status},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="interfaceName != null and interfaceName != ''">interface_name = #{interfaceName},</if>
+            <if test="infoItem != null">info_item = #{infoItem},</if>
+            <if test="usageScenarios != null">usage_scenarios = #{usageScenarios},</if>
+            <if test="shareType != null">share_type = #{shareType},</if>
+            <if test="interfaceType != null">interface_type = #{interfaceType},</if>
+            <if test="env != null">env = #{env},</if>
+            <if test="signServeraddress != null">sign_serveraddress = #{signServeraddress},</if>
+            <if test="interfaceAddress != null">interface_address = #{interfaceAddress},</if>
+            <if test="typeIam != null">type_iam = #{typeIam},</if>
+            <if test="typeAksk != null">type_aksk = #{typeAksk},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="deptName != null">dept_name = #{deptName},</if>
+            <if test="code != null">code = #{code},</if>
+            <if test="callsuccnum != null">callsuccnum = #{callsuccnum},</if>
+            <if test="callfailnum != null">callfailnum = #{callfailnum},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="updateDataNum" parameterType="TUInterfaceinfo">
+        update t_u_interfaceinfo_datanum set update_time = #{updateTime}, datanum = (select count(*) from ${tableName}) where id = #{id}
+    </update>
+
     <delete id="deleteTUInterfaceinfoById" parameterType="String">
         delete from t_u_interfaceinfo where id = #{id}
     </delete>