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; } }