459242451@qq.com 4 年 前
コミット
ba4f24ff3e
17 ファイル変更317 行追加15 行削除
  1. 4 0
      king-boot-base-common/src/main/java/org/king/common/constant/CacheConstant.java
  2. 7 0
      king-boot-module-ad/src/main/java/org/king/modules/ad/controller/AdAlternativeMeasureController.java
  3. 87 15
      king-boot-module-ad/src/main/java/org/king/modules/ad/controller/AdChargingRecordController.java
  4. 3 0
      king-boot-module-ad/src/main/java/org/king/modules/ad/entity/AdAlternativeMeasure.java
  5. 3 0
      king-boot-module-ad/src/main/java/org/king/modules/ad/entity/AdChargingRecord.java
  6. 32 0
      king-boot-module-ad/src/main/java/org/king/modules/ad/entity/AdChargingStatistics.java
  7. 4 0
      king-boot-module-ad/src/main/java/org/king/modules/ad/entity/ComChargingDevice.java
  8. 20 0
      king-boot-module-ad/src/main/java/org/king/modules/ad/entity/DepartEcgComNo.java
  9. 28 0
      king-boot-module-ad/src/main/java/org/king/modules/ad/handle/EcgComDataInit.java
  10. 3 0
      king-boot-module-ad/src/main/java/org/king/modules/ad/mapper/AdChargingRecordMapper.java
  11. 9 0
      king-boot-module-ad/src/main/java/org/king/modules/ad/mapper/AdDepartMapper.java
  12. 33 0
      king-boot-module-ad/src/main/java/org/king/modules/ad/mapper/xml/AdChargingRecordMapper.xml
  13. 18 0
      king-boot-module-ad/src/main/java/org/king/modules/ad/mapper/xml/DepartMapper.xml
  14. 3 0
      king-boot-module-ad/src/main/java/org/king/modules/ad/service/IAdChargingRecordService.java
  15. 10 0
      king-boot-module-ad/src/main/java/org/king/modules/ad/service/IDepartService.java
  16. 6 0
      king-boot-module-ad/src/main/java/org/king/modules/ad/service/impl/AdChargingRecordServiceImpl.java
  17. 47 0
      king-boot-module-ad/src/main/java/org/king/modules/ad/service/impl/DepartServiceImpl.java

+ 4 - 0
king-boot-base-common/src/main/java/org/king/common/constant/CacheConstant.java

@@ -52,4 +52,8 @@ public interface CacheConstant {
 	 */
 	String MA_USER_TOKEN = "ma:user:token:";
 
+	String ECG_DEPART = "ad:ecg:depart";
+
+	String COM_NO_DEPART = "ad:com:depart";
+
 }

+ 7 - 0
king-boot-module-ad/src/main/java/org/king/modules/ad/controller/AdAlternativeMeasureController.java

@@ -16,11 +16,13 @@ import org.apache.shiro.SecurityUtils;
 import org.jeecgframework.poi.excel.def.NormalExcelConstants;
 import org.jeecgframework.poi.excel.entity.ExportParams;
 import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.king.common.constant.CacheConstant;
 import org.king.common.system.base.controller.KingController;
 import org.king.common.api.vo.Result;
 import org.king.common.system.query.QueryGenerator;
 import org.king.common.aspect.annotation.AutoLog;
 import org.king.common.system.vo.LoginUser;
+import org.king.common.util.RedisUtil;
 import org.king.modules.ad.entity.AdAlternativeMeasure;
 import org.king.modules.ad.entity.AdChargingRecord;
 import org.king.modules.ad.entity.BaseWharf;
@@ -61,6 +63,8 @@ public class AdAlternativeMeasureController extends KingController<AdAlternative
     private IEntCompanyGeomService entCompanyGeomService;
     @Autowired
     private IDepartService departService;
+    @Autowired
+    private RedisUtil redisUtil;
 
     /**
      * 分页列表查询
@@ -102,6 +106,9 @@ public class AdAlternativeMeasureController extends KingController<AdAlternative
             queryWrapper.in("com_no", comNos);
         }
         IPage<AdAlternativeMeasure> pageList = adAlternativeMeasureService.page(page, queryWrapper);
+        for (AdAlternativeMeasure record : pageList.getRecords()) {
+            record.setDepartNam(Convert.toStr(redisUtil.hget(CacheConstant.COM_NO_DEPART, record.getComNo())));
+        }
         return Result.ok(pageList);
     }
 

+ 87 - 15
king-boot-module-ad/src/main/java/org/king/modules/ad/controller/AdChargingRecordController.java

@@ -13,6 +13,7 @@ import javax.servlet.http.HttpServletResponse;
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import jodd.util.MathUtil;
@@ -21,20 +22,15 @@ import org.apache.shiro.SecurityUtils;
 import org.jeecgframework.poi.excel.def.NormalExcelConstants;
 import org.jeecgframework.poi.excel.entity.ExportParams;
 import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.king.common.constant.CacheConstant;
 import org.king.common.system.api.ISysBaseAPI;
 import org.king.common.system.base.controller.KingController;
 import org.king.common.api.vo.Result;
 import org.king.common.system.query.QueryGenerator;
 import org.king.common.aspect.annotation.AutoLog;
 import org.king.common.system.vo.LoginUser;
-import org.king.modules.ad.entity.AdChargingRecord;
-import org.king.modules.ad.entity.AdDevice;
-import org.king.modules.ad.entity.BaseWharf;
-import org.king.modules.ad.entity.ComChargingDevice;
-import org.king.modules.ad.entity.ComChargingMonth;
-import org.king.modules.ad.entity.Depart;
-import org.king.modules.ad.entity.EntCompanyGeom;
-import org.king.modules.ad.entity.WebCompany;
+import org.king.common.util.RedisUtil;
+import org.king.modules.ad.entity.*;
 import org.king.modules.ad.service.IAdChargingRecordService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -77,6 +73,8 @@ public class AdChargingRecordController extends KingController<AdChargingRecord,
     private IWebCompanyService webCompanyService;
     @Autowired
     private ISysBaseAPI sysBaseAPI;
+    @Autowired
+    private RedisUtil redisUtil;
 
     /**
      * 分页列表查询
@@ -127,6 +125,9 @@ public class AdChargingRecordController extends KingController<AdChargingRecord,
             queryWrapper.in("com_no", companyNames);
         }
         IPage<AdChargingRecord> pageList = adChargingRecordService.page(page, queryWrapper);
+        for (AdChargingRecord record : pageList.getRecords()) {
+            record.setDepartNam(Convert.toStr(redisUtil.hget(CacheConstant.ECG_DEPART, record.getGemoId())));
+        }
         return Result.ok(pageList);
     }
 
@@ -268,9 +269,9 @@ public class AdChargingRecordController extends KingController<AdChargingRecord,
     @ApiOperation(value = "企业月供电-导出excel", notes = "企业月供电-导出excel")
     @RequestMapping(value = "/exportMonthXls", method = {RequestMethod.GET, RequestMethod.POST})
     public ModelAndView exportMonthXls(
-                                       @RequestParam(required = false) String departId,
-                                       @RequestParam(required = false) String comNo,
-                                       @RequestParam String month) {
+            @RequestParam(required = false) String departId,
+            @RequestParam(required = false) String comNo,
+            @RequestParam String month) {
 
         LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
 
@@ -314,8 +315,8 @@ public class AdChargingRecordController extends KingController<AdChargingRecord,
     @ApiOperation(value = "设备统计", notes = "设备统计")
     @GetMapping(value = "/listDevice")
     public Result<?> listDevice(@RequestParam(required = false) String departId,
-                               @RequestParam(required = false) String type,
-                               @RequestParam(required = false) String status) {
+                                @RequestParam(required = false) String type,
+                                @RequestParam(required = false) String status) {
         Map<String, Object> result = new HashMap<>(4);
         List<Object> comNos = new ArrayList<>();
         boolean flag = true;
@@ -345,10 +346,11 @@ public class AdChargingRecordController extends KingController<AdChargingRecord,
         BigDecimal totalConsumption = new BigDecimal(0);
         for (ComChargingDevice comChargingDevice : list) {
             // 字典翻译
-            comChargingDevice.setType(sysBaseAPI.queryDictTextByKey("ad_device_type",comChargingDevice.getType()));
-            comChargingDevice.setStatus(sysBaseAPI.queryDictTextByKey("ad_device_status",comChargingDevice.getStatus()));
+            comChargingDevice.setType(sysBaseAPI.queryDictTextByKey("ad_device_type", comChargingDevice.getType()));
+            comChargingDevice.setStatus(sysBaseAPI.queryDictTextByKey("ad_device_status", comChargingDevice.getStatus()));
             totalShipNum = NumberUtil.add(totalShipNum, comChargingDevice.getShipNum());
             totalConsumption = NumberUtil.add(totalConsumption, comChargingDevice.getConsumption());
+            comChargingDevice.setDepartNam(Convert.toStr(redisUtil.hget(CacheConstant.ECG_DEPART,comChargingDevice.getBerthId())));
         }
         result.put("list", list);
         result.put("totalShipNum", totalShipNum);
@@ -357,4 +359,74 @@ public class AdChargingRecordController extends KingController<AdChargingRecord,
         return Result.ok(result);
     }
 
+    @AutoLog(value = "供电统计")
+    @ApiOperation(value = "供电统计", notes = "供电统计")
+    @GetMapping(value = "/listCharging")
+    public Result<?> listCharging(@RequestParam(required = false) String departId,
+                                  @RequestParam(required = false) String type) {
+        Map<String, Object> result = new HashMap<>(8);
+        // 查询江苏10个海事局
+        Map<String, AdChargingStatistics> departMap = new HashMap<>();
+        List<AdChargingStatistics> list = departService.queryJsDepart();
+        for (AdChargingStatistics adChargingStatistics : list) {
+            departMap.put(adChargingStatistics.getDepartNo(), adChargingStatistics);
+        }
+
+        // 查询海事局和ecgNo关系
+        List<JSONObject> departEcg = departService.queryDepartAndEcg();
+        Map<String, String> departEcgMap = new HashMap<>(380);
+        for (JSONObject jsonObject : departEcg) {
+            departEcgMap.put(jsonObject.getString("ecg_no"), jsonObject.getString("depart_no"));
+        }
+
+        // 查询业务数据统计
+        List<AdChargingStatistics> chargingList = adChargingRecordService.queryChargingStatistics(type);
+        for (AdChargingStatistics adChargingStatistics : chargingList) {
+            // 根据gemoId查询相应的海事局
+            adChargingStatistics.setDepartNo(departEcgMap.get(adChargingStatistics.getGemoId()));
+        }
+
+        for (AdChargingStatistics adChargingStatistics : chargingList) {
+            if (StrUtil.isNotBlank(adChargingStatistics.getDepartNo())) {
+                AdChargingStatistics adChargingStatistics1 = departMap.get(adChargingStatistics.getDepartNo());
+                adChargingStatistics1.setDeviceNum(NumberUtil.add(adChargingStatistics1.getDeviceNum(), adChargingStatistics.getDeviceNum()));
+                adChargingStatistics1.setEntNum(NumberUtil.add(adChargingStatistics1.getEntNum(), adChargingStatistics.getEntNum()));
+                adChargingStatistics1.setShipNum(NumberUtil.add(adChargingStatistics1.getShipNum(), adChargingStatistics.getShipNum()));
+                adChargingStatistics1.setConsumption(NumberUtil.add(adChargingStatistics1.getConsumption(), adChargingStatistics.getConsumption()));
+                adChargingStatistics1.setChargeLength(NumberUtil.add(adChargingStatistics1.getChargeLength(), adChargingStatistics.getChargeLength()));
+            }
+        }
+
+        List<AdChargingStatistics> newList = new ArrayList<>();
+        if (StrUtil.isNotBlank(departId)) {
+            newList.add(departMap.get(departId));
+        } else {
+            for (String s : departMap.keySet()) {
+                newList.add(departMap.get(s));
+            }
+        }
+        BigDecimal totalDeviceNum = new BigDecimal(0);
+        BigDecimal totalEntNum = new BigDecimal(0);
+        BigDecimal totalShipNum = new BigDecimal(0);
+        BigDecimal totalConsumption = new BigDecimal(0);
+        BigDecimal totalChargeLength = new BigDecimal(0);
+        for (AdChargingStatistics adChargingStatistics : newList) {
+            adChargingStatistics.setChargeLength(NumberUtil.div(adChargingStatistics.getChargeLength(), new BigDecimal(60), 2));
+            totalDeviceNum = NumberUtil.add(totalDeviceNum, adChargingStatistics.getDeviceNum());
+            totalEntNum = NumberUtil.add(totalEntNum, adChargingStatistics.getEntNum());
+            totalShipNum = NumberUtil.add(totalShipNum, adChargingStatistics.getShipNum());
+            totalConsumption = NumberUtil.add(totalConsumption, adChargingStatistics.getConsumption());
+            totalChargeLength = NumberUtil.add(totalChargeLength, adChargingStatistics.getChargeLength());
+        }
+
+        result.put("list", newList);
+        result.put("totalDeviceNum", totalDeviceNum);
+        result.put("totalEntNum", totalEntNum);
+        result.put("totalShipNum", totalShipNum);
+        result.put("totalConsumption", totalConsumption);
+        result.put("totalChargeLength", totalChargeLength);
+        return Result.ok(result);
+
+    }
+
 }

+ 3 - 0
king-boot-module-ad/src/main/java/org/king/modules/ad/entity/AdAlternativeMeasure.java

@@ -96,4 +96,7 @@ public class AdAlternativeMeasure implements Serializable {
     @ApiModelProperty(value = "创建时间")
     private Date createTime;
 
+    @TableField(exist = false)
+    private String departNam;
+
 }

+ 3 - 0
king-boot-module-ad/src/main/java/org/king/modules/ad/entity/AdChargingRecord.java

@@ -139,4 +139,7 @@ public class AdChargingRecord implements Serializable {
     @Dict(dicCode = "ad_isRecharge")
     private String isRecharge;
 
+    @TableField(exist = false)
+    private String departNam;
+
 }

+ 32 - 0
king-boot-module-ad/src/main/java/org/king/modules/ad/entity/AdChargingStatistics.java

@@ -0,0 +1,32 @@
+package org.king.modules.ad.entity;
+
+/**
+ * @Description: TODO
+ * @Author: huangcheng
+ * @Date: 2021/6/10
+ * @Version V1.0
+ */
+import lombok.Data;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Data
+public class AdChargingStatistics implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private String departNo;
+
+    private String departNam;
+
+    private String gemoId;
+
+    private BigDecimal deviceNum = new BigDecimal(0);
+
+    private BigDecimal entNum = new BigDecimal(0);
+
+    private BigDecimal shipNum = new BigDecimal(0);
+
+    private BigDecimal consumption = new BigDecimal(0);
+
+    private BigDecimal chargeLength = new BigDecimal(0);
+}

+ 4 - 0
king-boot-module-ad/src/main/java/org/king/modules/ad/entity/ComChargingDevice.java

@@ -18,6 +18,10 @@ public class ComChargingDevice implements Serializable {
 
     private String serviceName;
 
+    private String berthId;
+
+    private String departNam;
+
     private String areaName;
 
     @Excel(name = "作业单位", width = 25)

+ 20 - 0
king-boot-module-ad/src/main/java/org/king/modules/ad/entity/DepartEcgComNo.java

@@ -0,0 +1,20 @@
+package org.king.modules.ad.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: TODO
+ * @Author: huangcheng
+ * @Date: 2021/6/11
+ * @Version V1.0
+ */
+@Data
+public class DepartEcgComNo implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private String ecgNo;
+    private String comNo;
+    private String departNam;
+}

+ 28 - 0
king-boot-module-ad/src/main/java/org/king/modules/ad/handle/EcgComDataInit.java

@@ -0,0 +1,28 @@
+package org.king.modules.ad.handle;
+
+import lombok.Data;
+import org.king.modules.ad.service.IDepartService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+
+/**
+ * @Description: TODO
+ * @Author: huangcheng
+ * @Date: 2021/6/11
+ * @Version V1.0
+ */
+@Component
+@Data
+public class EcgComDataInit {
+
+    @Autowired
+    private IDepartService departService;
+
+    @PostConstruct
+    public void init() {
+        // 加载ecg和comNo与部门名称数据到redis
+        departService.putEcgDepartDataToRedis();
+    }
+}

+ 3 - 0
king-boot-module-ad/src/main/java/org/king/modules/ad/mapper/AdChargingRecordMapper.java

@@ -5,6 +5,7 @@ import java.util.List;
 import org.apache.ibatis.annotations.Param;
 import org.king.modules.ad.entity.AdChargingRecord;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.king.modules.ad.entity.AdChargingStatistics;
 import org.king.modules.ad.entity.ComChargingDevice;
 import org.king.modules.ad.entity.ComChargingMonth;
 
@@ -19,4 +20,6 @@ public interface AdChargingRecordMapper extends BaseMapper<AdChargingRecord> {
     List<ComChargingMonth> listMonth(@Param("comNos") List<Object> comNos, @Param("comNo") String comNo, @Param("month") String month);
 
     List<ComChargingDevice> listDevice(@Param("comNos") List<Object> comNos, @Param("type") String type, @Param("status") String status);
+
+    List<AdChargingStatistics> queryChargingStatistics(@Param("type") String type);
 }

+ 9 - 0
king-boot-module-ad/src/main/java/org/king/modules/ad/mapper/AdDepartMapper.java

@@ -1,10 +1,14 @@
 package org.king.modules.ad.mapper;
 
 import java.util.List;
+import java.util.Map;
 
+import com.alibaba.fastjson.JSONObject;
 import org.apache.ibatis.annotations.Param;
+import org.king.modules.ad.entity.AdChargingStatistics;
 import org.king.modules.ad.entity.Depart;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.king.modules.ad.entity.DepartEcgComNo;
 
 /**
  * @Description: 海事机构
@@ -14,4 +18,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface AdDepartMapper extends BaseMapper<Depart> {
 
+    List<AdChargingStatistics> queryJsDepart();
+
+    List<JSONObject> queryDepartAndEcg();
+
+    List<DepartEcgComNo> putEcgDepartDataToRedis();
 }

+ 33 - 0
king-boot-module-ad/src/main/java/org/king/modules/ad/mapper/xml/AdChargingRecordMapper.xml

@@ -17,6 +17,7 @@
                          #{key}
                      </foreach>
                  </if>
+                 and real_start_time is not null
                  group by com_no) t1
                  left join web_company t2 on t1.com_no = t2.COM_NO
         <where>
@@ -28,6 +29,7 @@
 
     <select id="listDevice" resultType="org.king.modules.ad.entity.ComChargingDevice">
         select t2.service_name,
+               t2.berth_id,
                t3.area_name,
                t4.COM_NAME,
                t2.type,
@@ -40,6 +42,7 @@
                         count(1)         as shipNum,
                         sum(consumption) as consumption
                  from ad_charging_record
+                 where real_start_time is not null
                  group by ad_device_id) t1
                  right join ad_device t2 on t1.ad_device_id = t2.id
                  left join hhad.ent_company_geom t3 on t2.berth_id = t3.ecg_no
@@ -60,4 +63,34 @@
         </where>
 
     </select>
+    <select id="queryChargingStatistics" resultType="org.king.modules.ad.entity.AdChargingStatistics">
+        select gemo_id,
+               sum(deviceNum)    as deviceNum,
+               sum(entNum)       as entNum,
+               sum(shipNum)      as shipNum,
+               sum(consumption)  as consumption,
+               sum(chargeLength) as chargeLength
+        from (
+                 select t1.berth_id      as gemo_id,
+                        count(t1.id)     as deviceNum,
+                        count(t2.COM_NO) as entNum,
+                        0                as shipNum,
+                        0                as consumption,
+                        0                as chargeLength
+                 from ad_device t1
+                          left join web_company t2 on t1.sys_office_id = t2.COM_NO
+                 where t1.is_del = 0
+                 group by t1.berth_id
+                 union all
+                 select gemo_id,
+                        0                                                                     as deviceNum,
+                        0                                                                     as entNum,
+                        count(1)                                                              as shipNum,
+                        sum(consumption)                                                      as consumption,
+                        ifnull(sum(timestampdiff(minute, real_start_time, real_end_time)), 0) as chargeLength
+                 from ad_charging_record
+                 where real_start_time is not null
+                 group by gemo_id) a
+        group by gemo_id
+    </select>
 </mapper>

+ 18 - 0
king-boot-module-ad/src/main/java/org/king/modules/ad/mapper/xml/DepartMapper.xml

@@ -2,4 +2,22 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.king.modules.ad.mapper.AdDepartMapper">
 
+    <select id="queryJsDepart" resultType="org.king.modules.ad.entity.AdChargingStatistics">
+        select DEPART_NO,DEPART_NAM
+        from depart where UPDEPART_NO = 384
+    </select>
+
+    <select id="queryDepartAndEcg" resultType="com.alibaba.fastjson.JSONObject">
+        select t1.depart_no,t2.ecg_no
+        from depart t1 left join base_wharf t2 on t1.DEPART_NO = t2.depart_no
+        where t1.UPDEPART_NO = 384
+    </select>
+
+    <select id="putEcgDepartDataToRedis" resultType="org.king.modules.ad.entity.DepartEcgComNo">
+        select distinct t1.ecg_no, t3.com_no, t2.DEPART_NAM
+        from base_wharf t1
+                 left join depart t2 on t1.depart_no = t2.DEPART_NO
+                 left join ent_company_geom t3 on t1.ecg_no = t3.ecg_no
+        where DEPART_NAM is not null
+    </select>
 </mapper>

+ 3 - 0
king-boot-module-ad/src/main/java/org/king/modules/ad/service/IAdChargingRecordService.java

@@ -2,6 +2,7 @@ package org.king.modules.ad.service;
 
 import org.king.modules.ad.entity.AdChargingRecord;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.king.modules.ad.entity.AdChargingStatistics;
 import org.king.modules.ad.entity.ComChargingDevice;
 import org.king.modules.ad.entity.ComChargingMonth;
 
@@ -18,4 +19,6 @@ public interface IAdChargingRecordService extends IService<AdChargingRecord> {
     List<ComChargingMonth> listMonth(List<Object> departNo, String comNo, String month);
 
     List<ComChargingDevice> listDevice(List<Object> comNos, String type, String status);
+
+    List<AdChargingStatistics> queryChargingStatistics(String type);
 }

+ 10 - 0
king-boot-module-ad/src/main/java/org/king/modules/ad/service/IDepartService.java

@@ -1,8 +1,13 @@
 package org.king.modules.ad.service;
 
+import com.alibaba.fastjson.JSONObject;
+import org.king.modules.ad.entity.AdChargingStatistics;
 import org.king.modules.ad.entity.Depart;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * @Description: 海事机构
  * @Author: king-boot
@@ -11,4 +16,9 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IDepartService extends IService<Depart> {
 
+    List<AdChargingStatistics> queryJsDepart();
+
+    List<JSONObject> queryDepartAndEcg();
+
+    void putEcgDepartDataToRedis();
 }

+ 6 - 0
king-boot-module-ad/src/main/java/org/king/modules/ad/service/impl/AdChargingRecordServiceImpl.java

@@ -2,6 +2,7 @@ package org.king.modules.ad.service.impl;
 
 import com.baomidou.dynamic.datasource.annotation.DS;
 import org.king.modules.ad.entity.AdChargingRecord;
+import org.king.modules.ad.entity.AdChargingStatistics;
 import org.king.modules.ad.entity.ComChargingDevice;
 import org.king.modules.ad.entity.ComChargingMonth;
 import org.king.modules.ad.mapper.AdChargingRecordMapper;
@@ -31,4 +32,9 @@ public class AdChargingRecordServiceImpl extends ServiceImpl<AdChargingRecordMap
     public List<ComChargingDevice> listDevice(List<Object> comNos, String type, String status) {
         return baseMapper.listDevice(comNos, type, status);
     }
+
+    @Override
+    public List<AdChargingStatistics> queryChargingStatistics(String type) {
+        return baseMapper.queryChargingStatistics(type);
+    }
 }

+ 47 - 0
king-boot-module-ad/src/main/java/org/king/modules/ad/service/impl/DepartServiceImpl.java

@@ -1,12 +1,24 @@
 package org.king.modules.ad.service.impl;
 
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.king.common.constant.CacheConstant;
+import org.king.common.util.RedisUtil;
+import org.king.modules.ad.entity.AdChargingStatistics;
 import org.king.modules.ad.entity.Depart;
+import org.king.modules.ad.entity.DepartEcgComNo;
 import org.king.modules.ad.mapper.AdDepartMapper;
 import org.king.modules.ad.service.IDepartService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 /**
  * @Description: 海事机构
  * @Author: king-boot
@@ -14,6 +26,41 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  * @Version: V1.0
  */
 @Service
+@Slf4j
 public class DepartServiceImpl extends ServiceImpl<AdDepartMapper, Depart> implements IDepartService {
 
+    @Autowired
+    private RedisUtil redisUtil;
+
+    @Override
+    public List<AdChargingStatistics> queryJsDepart() {
+        return baseMapper.queryJsDepart();
+    }
+
+    @Override
+    public List<JSONObject> queryDepartAndEcg() {
+        return baseMapper.queryDepartAndEcg();
+    }
+
+    @Override
+    public void putEcgDepartDataToRedis() {
+        String ecgKey = CacheConstant.ECG_DEPART;
+        String comKey = CacheConstant.COM_NO_DEPART;
+        if (!redisUtil.hasKey(ecgKey) || !redisUtil.hasKey(comKey)) {
+            List<DepartEcgComNo> list = baseMapper.putEcgDepartDataToRedis();
+            Map<String, Object> ecgMap = new HashMap<>();
+            Map<String, Object> comMap = new HashMap<>();
+            for (DepartEcgComNo departEcgComNo : list) {
+                ecgMap.putIfAbsent(departEcgComNo.getEcgNo(), departEcgComNo.getDepartNam());
+                if (StrUtil.isNotBlank(departEcgComNo.getComNo())) {
+                    comMap.putIfAbsent(departEcgComNo.getComNo(), departEcgComNo.getDepartNam());
+                }
+            }
+            redisUtil.hmset(ecgKey, ecgMap);
+            redisUtil.hmset(comKey, comMap);
+            log.info("ecg缓存加载数量:{}",ecgMap.size());
+            log.info("com缓存加载数量:{}",comMap.size());
+        }
+
+    }
 }