zhangk
2024-06-21 c9c6942fb773e1c33ba88a88e843d624218f87fb
添加水库降雨量预报定时任务
8 files modified
5 files added
180 ■■■■■ changed files
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sjztmd/feign/ISjztMdClient.java 10 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sjztmd/feign/ISjztMdClientFallback.java 5 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/entity/StResRainfall.java 59 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/feign/SjztMdClientImpl.java 5 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/StResRainfallMapper.java 7 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/StResRainfallMapper.xml 5 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/IStResRainfallService.java 6 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/AttResBaseServiceImpl.java 2 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/StResRainfallServiceImpl.java 14 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/vo/AttResWithRainfall.java 3 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/service/ISjztmdService.java 2 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/service/impl/SjztmdServiceImpl.java 28 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-xxljob/src/main/java/cn/gistack/job/executor/jobhandler/SjztXxlJob.java 34 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sjztmd/feign/ISjztMdClient.java
@@ -1,9 +1,10 @@
package cn.gistack.sm.sjztmd.feign;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.core.io.InputStreamResource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@FeignClient(
    value = "blade-sm",
@@ -14,6 +15,13 @@
    String GENERATE_DAY_REPORT_FLOOD = API_PREFIX + "generateDayReportFlood";
    String GET_RESERVOIR_RAINFALL_FORECAST = API_PREFIX + "getReservoirRainfallForecast";
    @GetMapping(GENERATE_DAY_REPORT_FLOOD)
    String generateDayReportFlood(@RequestParam("isShow") String isShow) throws Exception;
    @GetMapping(GET_RESERVOIR_RAINFALL_FORECAST)
    void getReservoirRainfallForecast(@RequestParam("dayIndexList") List<String> dayIndexList) throws Exception;
}
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/sjztmd/feign/ISjztMdClientFallback.java
@@ -20,4 +20,9 @@
    public String generateDayReportFlood(String isShow) {
        return null;
    }
    @Override
    public void getReservoirRainfallForecast(List<String> dayIndexList) {
    }
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/entity/StResRainfall.java
New file
@@ -0,0 +1,59 @@
package cn.gistack.sm.sjztmd.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
@TableName("\"st_res_rainfall\"")
@ApiModel(value = "监测水库降雨", description = "监测水库降雨")
public class StResRainfall implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * id
     */
    @ApiModelProperty(value = "id")
    @TableField("\"id\"")
    private String id;
    /**
     * 水库编码
     */
    @ApiModelProperty(value = "水库编码")
    @TableField("\"res_cd\"")
    private String resCd;
    /**
     * 计降雨
     */
    @TableField(value = "\"drp\"")
    @ApiModelProperty(value = "计降雨")
    private String drp;
    /**
     * 入库时间
     */
    @ApiModelProperty(value = "入库时间")
    @TableField("\"create_time\"")
    private Long createTime;
    /**
     * 预报的时段
     */
    @ApiModelProperty(value = "预报的时段")
    @TableField("\"day_index\"")
    private String dayIndex;
    /**
     * 文件名称
     */
    @ApiModelProperty(value = "文件名称")
    @TableField("\"file_name\"")
    private String fileName;
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/feign/SjztMdClientImpl.java
@@ -114,6 +114,11 @@
        return path;
    }
    @Override
    public void getReservoirRainfallForecast(List<String> dayIndexList) {
        sjztmdService.getReservoirRainfallForecast(dayIndexList);
    }
    private void createFile(String filePath, byte[] bytes) {
        // 将byte[]写入文件
        try (FileOutputStream fos = new FileOutputStream(filePath)) {
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/StResRainfallMapper.java
New file
@@ -0,0 +1,7 @@
package cn.gistack.sm.sjztmd.mapper;
import cn.gistack.sm.sjztmd.entity.StResRainfall;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface StResRainfallMapper extends BaseMapper<StResRainfall> {
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/StResRainfallMapper.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.gistack.sm.sjztmd.mapper.StResRainfallMapper">
</mapper>
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/IStResRainfallService.java
New file
@@ -0,0 +1,6 @@
package cn.gistack.sm.sjztmd.service;
import cn.gistack.sm.sjztmd.entity.StResRainfall;
import com.baomidou.mybatisplus.extension.service.IService;
public interface IStResRainfallService extends IService<StResRainfall> {
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/AttResBaseServiceImpl.java
@@ -146,6 +146,7 @@
            throw new ServiceException("转换降雨栅格数据失败,详情:" + e.getMessage());
        }
        RainfallGridData.Data data = gridData.getData();
        String fileName = data.getFileName();
        RainfallGridData.GridInfo gridInfo = data.getGridInfo();
        List<List<Double>> gridDataList = data.getGridData();
        if (gridDataList == null || gridDataList.isEmpty()) {
@@ -193,6 +194,7 @@
                AttResWithRainfall attResWithRainfall = new AttResWithRainfall();
                BeanUtil.copyProperties(attResBase, attResWithRainfall);
                attResWithRainfall.setRainfall(String.valueOf(rainfall));
                attResWithRainfall.setFileName(fileName);
                attResWithRainfallList.add(attResWithRainfall);
            } else {
                log.warn("AttRes {} is out of the grid range. centerLong: {}, centerLat: {}", attResBase.getName(),
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/StResRainfallServiceImpl.java
New file
@@ -0,0 +1,14 @@
package cn.gistack.sm.sjztmd.service.impl;
import cn.gistack.sm.sjztmd.entity.StResRainfall;
import cn.gistack.sm.sjztmd.mapper.StResRainfallMapper;
import cn.gistack.sm.sjztmd.service.IStResRainfallService;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service
@DS("zt")
public class StResRainfallServiceImpl extends ServiceImpl<StResRainfallMapper, StResRainfall> implements IStResRainfallService {
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/vo/AttResWithRainfall.java
@@ -11,4 +11,7 @@
    @ApiModelProperty(value = "降雨量")
    private String rainfall;
    @ApiModelProperty(value = "文件名称")
    private String fileName;
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/service/ISjztmdService.java
@@ -39,4 +39,6 @@
    List<StationExport> getOsmotic(HttpServletResponse response, StationParams params, String exportFunc);
    List<TotalInfo> getTotalOverInfo(String isShow, HashMap<String, String> over10Params);
    void getReservoirRainfallForecast(List<String> dayIndexList);
}
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/word/service/impl/SjztmdServiceImpl.java
@@ -2,6 +2,7 @@
import cn.gistack.common.utils.SpringContextUtil;
import cn.gistack.sm.sjztmd.entity.*;
import cn.gistack.sm.sjztmd.vo.AttResWithRainfall;
import cn.gistack.sm.sjztmd.vo.StationExport;
import cn.gistack.sm.sjztmd.vo.ZtResultInfo;
import cn.gistack.sm.sjztmd.vo.StationParams;
@@ -17,6 +18,7 @@
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.parser.Feature;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.tool.utils.ObjectUtil;
@@ -64,7 +66,7 @@
    @Autowired
    private RestTemplate restTemplate;
    private final SjztMdMapper mapper;
    private final IAttResBaseService attResBase;
    private final ITbAttResBaseService attResBaseService;
    private final ITbAttResStagCharService attResStagCharService;
    private final ITbAttResWaterDeliveryService attResWaterDeliveryService;
@@ -75,7 +77,7 @@
    private final ITbAttResWaterBlockService attResWaterBlockService;
    private final ITbAttResRsbNorspiService attResRsbNorspiService;
    private final ITbAttResPowerStationService attResPowerStationService;
    private final IStResRainfallService stResRainfallService;
    private final ITbAttResProjectUtilizeService attResProjectUtilizeService;
    private final ITbAttResInformationProjectService attResInformationProjectService;
@@ -616,6 +618,28 @@
    }
    @Override
    public void getReservoirRainfallForecast(List<String> dayIndexList) {
        List<StResRainfall> stResRainfalls = new ArrayList<>();
        for (String dayIndex : dayIndexList) {
            List<AttResWithRainfall> attResByRainfall = attResBase.getAttResByRainfall(null, null, dayIndex);
            for (AttResWithRainfall attResWithRainfall : attResByRainfall) {
                StResRainfall stResRainfall = new StResRainfall();
                stResRainfall.setId(UUID.randomUUID().toString().replaceAll("-", ""));
                stResRainfall.setResCd(attResWithRainfall.getCode());
                stResRainfall.setDrp(attResWithRainfall.getRainfall());
                stResRainfall.setFileName(attResWithRainfall.getFileName());
                stResRainfall.setDayIndex(dayIndex);
                stResRainfall.setCreateTime(System.currentTimeMillis());
                stResRainfalls.add(stResRainfall);
            }
        }
        if (!stResRainfalls.isEmpty()) {
            stResRainfallService.remove(Wrappers.<StResRainfall>query().lambda());
            stResRainfallService.saveBatch(stResRainfalls);
        }
    }
    @Override
    public List<DzkInfo> getDzkInfo(String isShow) {
skjcmanager/skjcmanager-service/skjcmanager-xxljob/src/main/java/cn/gistack/job/executor/jobhandler/SjztXxlJob.java
@@ -1,11 +1,13 @@
package cn.gistack.job.executor.jobhandler;
import cn.gistack.alerts.sms.feign.ISmsRecordClient;
import cn.gistack.sm.sjztmd.feign.ISjztMdClient;
import cn.gistack.sm.sjztods.feign.ISkxsQkTjClient;
import cn.gistack.sm.sjztods.feign.IXsfsQktjClient;
import cn.gistack.sm.sjztods.vo.SkxsQkTjVO;
import cn.gistack.sm.sjztods.vo.XsfsQktjVO;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
@@ -16,6 +18,8 @@
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
/**
 * @PROJECT_NAME: skjcmanager
@@ -31,6 +35,9 @@
    @Autowired
    private ISkxsQkTjClient  skxsQkTjClient;
    @Autowired
    private ISjztMdClient sjztMdClient;
    /**
     * 大中型水库蓄水量日报
@@ -78,7 +85,28 @@
        return ReturnT.SUCCESS;
    }
    /**
     * 水库降雨量预报
     */
    @XxlJob("reservoirRainfallForecastJobHandler")
    public ReturnT<String> reservoirRainfallForecastJobHandler(String param) throws Exception {
        XxlJobLogger.log("开始执行水库降雨量预报...");
        JSONObject jsonParam = JSON.parseObject(param);
        // 获取 dayIndexList 数组
        JSONArray dayIndexArray = jsonParam.getJSONArray("dayIndexList");
        List<String> dayIndexList = new ArrayList<>();
        if (null != dayIndexArray && !dayIndexArray.isEmpty()) {
            for (int i = 0; i < dayIndexArray.size(); i++) {
                dayIndexList.add(dayIndexArray.getString(i));
            }
        }
        if (dayIndexList.isEmpty()) {
            // dayIndex默认值为0
            dayIndexList.add("0");
        }
        XxlJobLogger.log("dayIndex: " + dayIndexList);
        sjztMdClient.getReservoirRainfallForecast(dayIndexList);
        XxlJobLogger.log("结束执行水库降雨量预报任务...");
        return ReturnT.SUCCESS;
    }
}