yang_shj
1 year ago
87 changed files with 5027 additions and 0 deletions
@ -0,0 +1,20 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" |
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
||||||
|
<modelVersion>4.0.0</modelVersion> |
||||||
|
<parent> |
||||||
|
<groupId>com.hnac.hzims</groupId> |
||||||
|
<artifactId>hzims-service-api</artifactId> |
||||||
|
<version>4.0.0-SNAPSHOT</version> |
||||||
|
</parent> |
||||||
|
|
||||||
|
<artifactId>water-quality-api</artifactId> |
||||||
|
|
||||||
|
<properties> |
||||||
|
<maven.compiler.source>8</maven.compiler.source> |
||||||
|
<maven.compiler.target>8</maven.compiler.target> |
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> |
||||||
|
</properties> |
||||||
|
|
||||||
|
</project> |
@ -0,0 +1,24 @@ |
|||||||
|
package com.hnac.hzims.waterquality.entity; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType; |
||||||
|
import com.baomidou.mybatisplus.annotation.TableId; |
||||||
|
import com.baomidou.mybatisplus.annotation.TableName; |
||||||
|
import io.swagger.annotations.ApiModelProperty; |
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
|
||||||
|
/** |
||||||
|
*水质监测指标配置 |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
@TableName("wq_config_d") |
||||||
|
public class WqConfigD implements Serializable { |
||||||
|
@ApiModelProperty("测站编码") |
||||||
|
@TableId(type=IdType.INPUT) |
||||||
|
private String stcd; |
||||||
|
@ApiModelProperty("指标类型") |
||||||
|
private String type; |
||||||
|
@ApiModelProperty("指标值") |
||||||
|
private String value; |
||||||
|
} |
@ -0,0 +1,54 @@ |
|||||||
|
package com.hnac.hzims.waterquality.entity; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName; |
||||||
|
import io.swagger.annotations.ApiModelProperty; |
||||||
|
import lombok.Data; |
||||||
|
import lombok.EqualsAndHashCode; |
||||||
|
import org.springblade.core.mp.base.BaseEntity; |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
*水功能区基本信息 |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
@TableName("wq_wfrinf_b") |
||||||
|
@EqualsAndHashCode(callSuper = true) |
||||||
|
public class WqWfrinfB extends BaseEntity { |
||||||
|
@ApiModelProperty("水功能区代码") |
||||||
|
private String wfrcd; |
||||||
|
@ApiModelProperty("水功能区名称") |
||||||
|
private String wfrnm; |
||||||
|
@ApiModelProperty("流域名称") |
||||||
|
private String bsnm; |
||||||
|
@ApiModelProperty("水系名称") |
||||||
|
private String hnnm; |
||||||
|
@ApiModelProperty("河流名称") |
||||||
|
private String rvnm; |
||||||
|
@ApiModelProperty("水功能区起始断面名称") |
||||||
|
private String wfrscsnm; |
||||||
|
@ApiModelProperty("水功能区起始断面经度") |
||||||
|
private Double wfrscslgtd; |
||||||
|
@ApiModelProperty("水功能区起始断面纬度") |
||||||
|
private Double wfrscslttd; |
||||||
|
@ApiModelProperty("水功能区终止断面名称") |
||||||
|
private String wfrecsnm; |
||||||
|
@ApiModelProperty("水功能区终止断面经度") |
||||||
|
private Double wfrecslgtd; |
||||||
|
@ApiModelProperty("水功能区终止断面纬度") |
||||||
|
private Double wfrecslttd; |
||||||
|
|
||||||
|
@ApiModelProperty("行政区划码") |
||||||
|
private String addvcd; |
||||||
|
@ApiModelProperty("水功能区长度") |
||||||
|
private Double wfrln; |
||||||
|
@ApiModelProperty("水功能区库容") |
||||||
|
private Double wfrrc; |
||||||
|
@ApiModelProperty("水功能区面积") |
||||||
|
private Double wfrar; |
||||||
|
@ApiModelProperty("水功能区水质目标") |
||||||
|
private String wfrwqt; |
||||||
|
@ApiModelProperty("水功能区功能排序") |
||||||
|
private String wfrwfo; |
||||||
|
@ApiModelProperty("备注") |
||||||
|
private String nt; |
||||||
|
} |
@ -0,0 +1,59 @@ |
|||||||
|
package com.hnac.hzims.waterquality.entity; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName; |
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat; |
||||||
|
import io.swagger.annotations.ApiModelProperty; |
||||||
|
import lombok.Data; |
||||||
|
import lombok.EqualsAndHashCode; |
||||||
|
import org.springblade.core.mp.base.BaseEntity; |
||||||
|
|
||||||
|
import java.util.Date; |
||||||
|
|
||||||
|
/** |
||||||
|
*水质监测站 |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
@TableName("wq_wqsinf_b") |
||||||
|
@EqualsAndHashCode(callSuper = true) |
||||||
|
public class WqWqsinfB extends BaseEntity { |
||||||
|
@ApiModelProperty("测站编码") |
||||||
|
private String stcd; |
||||||
|
@ApiModelProperty("测站名称") |
||||||
|
private String stnm; |
||||||
|
@ApiModelProperty("测站等级") |
||||||
|
private String stgrd; |
||||||
|
@ApiModelProperty("流域名称") |
||||||
|
private String bsnm; |
||||||
|
@ApiModelProperty("水系名称") |
||||||
|
private String hnnm; |
||||||
|
@ApiModelProperty("河流名称") |
||||||
|
private String rvnm; |
||||||
|
@ApiModelProperty("经度") |
||||||
|
private Double lgtd; |
||||||
|
@ApiModelProperty("纬度") |
||||||
|
private Double lttd; |
||||||
|
@ApiModelProperty("站址") |
||||||
|
private String stlc; |
||||||
|
@ApiModelProperty("行政区划码") |
||||||
|
private String addvcd; |
||||||
|
@ApiModelProperty("水资源分区码") |
||||||
|
private String wrrcd; |
||||||
|
@ApiModelProperty("水功能区划码") |
||||||
|
private String wfrcd; |
||||||
|
@ApiModelProperty("管理单位") |
||||||
|
private String adag; |
||||||
|
@ApiModelProperty("监测单位") |
||||||
|
private String mnag; |
||||||
|
@ApiModelProperty("监测频次") |
||||||
|
private Integer mnfrq; |
||||||
|
@ApiModelProperty("自动监测") |
||||||
|
private Integer atmn; |
||||||
|
@ApiModelProperty("建站年月") |
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd") |
||||||
|
private Date esstym; |
||||||
|
@ApiModelProperty("撤站年月") |
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd") |
||||||
|
private Date wdstym; |
||||||
|
@ApiModelProperty("备注") |
||||||
|
private String nt; |
||||||
|
} |
@ -0,0 +1,22 @@ |
|||||||
|
package com.hnac.hzims.waterquality.entity; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName; |
||||||
|
import io.swagger.annotations.ApiModelProperty; |
||||||
|
import lombok.Data; |
||||||
|
import org.springblade.core.mp.base.BaseEntity; |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 水资源分区基本信息 |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
@TableName("wq_wrrinf_b") |
||||||
|
public class WqWrrinfB extends BaseEntity { |
||||||
|
@ApiModelProperty("水资源分区码") |
||||||
|
private String wrrcd; |
||||||
|
@ApiModelProperty("水资源分区名称") |
||||||
|
private String wrrnm; |
||||||
|
@ApiModelProperty("水资源分区面积") |
||||||
|
private Double wrr5r; |
||||||
|
|
||||||
|
} |
@ -0,0 +1,50 @@ |
|||||||
|
/* |
||||||
|
* Copyright (c) 2018-2028, Chill Zhuang All rights reserved. |
||||||
|
* |
||||||
|
* Redistribution and use in source and binary forms, with or without |
||||||
|
* modification, are permitted provided that the following conditions are met: |
||||||
|
* |
||||||
|
* Redistributions of source code must retain the above copyright Example, |
||||||
|
* this list of conditions and the following disclaimer. |
||||||
|
* Redistributions in binary form must reproduce the above copyright |
||||||
|
* Example, this list of conditions and the following disclaimer in the |
||||||
|
* documentation and/or other materials provided with the distribution. |
||||||
|
* Neither the name of the dreamlu.net developer nor the names of its |
||||||
|
* contributors may be used to endorse or promote products derived from |
||||||
|
* this software without specific prior written permission. |
||||||
|
* Author: Chill 庄骞 (smallchill@163.com) |
||||||
|
*/ |
||||||
|
package com.hnac.hzims.waterquality.feign; |
||||||
|
|
||||||
|
import com.hnac.hzims.waterquality.vo.WqWqsinfBVo; |
||||||
|
import org.springblade.core.launch.constant.AppConstant; |
||||||
|
import org.springblade.core.tool.api.R; |
||||||
|
import org.springframework.cloud.openfeign.FeignClient; |
||||||
|
import org.springframework.web.bind.annotation.GetMapping; |
||||||
|
import org.springframework.web.bind.annotation.RequestParam; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* Example Feign接口类 |
||||||
|
* |
||||||
|
* @author Chill |
||||||
|
*/ |
||||||
|
@FeignClient( |
||||||
|
value = AppConstant.APPLICATION_DESK_NAME |
||||||
|
) |
||||||
|
public interface IWqWqsinfBClient { |
||||||
|
|
||||||
|
String API_PREFIX = "/wqWqsinfBClient"; |
||||||
|
String LIST = API_PREFIX + "/list"; |
||||||
|
|
||||||
|
/** |
||||||
|
* 获取Example列表 |
||||||
|
* |
||||||
|
* @param number |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
@GetMapping(LIST) |
||||||
|
R<List<WqWqsinfBVo>> list(@RequestParam("number") Integer number); |
||||||
|
|
||||||
|
} |
@ -0,0 +1,7 @@ |
|||||||
|
package com.hnac.hzims.waterquality.vo; |
||||||
|
|
||||||
|
|
||||||
|
import com.hnac.hzims.waterquality.entity.WqWqsinfB; |
||||||
|
|
||||||
|
public class WqWqsinfBVo extends WqWqsinfB { |
||||||
|
} |
@ -0,0 +1,20 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" |
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
||||||
|
<modelVersion>4.0.0</modelVersion> |
||||||
|
<parent> |
||||||
|
<groupId>com.hnac.hzims</groupId> |
||||||
|
<artifactId>hzims-service-api</artifactId> |
||||||
|
<version>4.0.0-SNAPSHOT</version> |
||||||
|
</parent> |
||||||
|
|
||||||
|
<artifactId>water-rain-api</artifactId> |
||||||
|
|
||||||
|
<properties> |
||||||
|
<maven.compiler.source>8</maven.compiler.source> |
||||||
|
<maven.compiler.target>8</maven.compiler.target> |
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> |
||||||
|
</properties> |
||||||
|
|
||||||
|
</project> |
@ -0,0 +1,26 @@ |
|||||||
|
package com.hnac.hzims.waterrain.bo; |
||||||
|
|
||||||
|
|
||||||
|
import com.hnac.hzims.waterrain.entity.StStbprpB; |
||||||
|
|
||||||
|
public class StationResp { |
||||||
|
private StStbprpB stStbprpB; |
||||||
|
|
||||||
|
private Object obj; |
||||||
|
|
||||||
|
public StStbprpB getStStbprpB() { |
||||||
|
return stStbprpB; |
||||||
|
} |
||||||
|
|
||||||
|
public void setStStbprpB(StStbprpB stStbprpB) { |
||||||
|
this.stStbprpB = stStbprpB; |
||||||
|
} |
||||||
|
|
||||||
|
public Object getObj() { |
||||||
|
return obj; |
||||||
|
} |
||||||
|
|
||||||
|
public void setObj(Object obj) { |
||||||
|
this.obj = obj; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,13 @@ |
|||||||
|
package com.hnac.hzims.waterrain.entity; |
||||||
|
|
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
import java.util.Date; |
||||||
|
|
||||||
|
@Data |
||||||
|
public class HzStPptnR implements Serializable { |
||||||
|
private String stcd; |
||||||
|
private Date tm; |
||||||
|
private Double drp; |
||||||
|
} |
@ -0,0 +1,14 @@ |
|||||||
|
package com.hnac.hzims.waterrain.entity; |
||||||
|
|
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
import java.util.Date; |
||||||
|
|
||||||
|
@Data |
||||||
|
public class HzStRiverR implements Serializable { |
||||||
|
private String stcd; |
||||||
|
private Date tm; |
||||||
|
private Double z; |
||||||
|
private Double q; |
||||||
|
} |
@ -0,0 +1,15 @@ |
|||||||
|
package com.hnac.hzims.waterrain.entity; |
||||||
|
|
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
import java.util.Date; |
||||||
|
|
||||||
|
@Data |
||||||
|
public class HzStRsvrR implements Serializable { |
||||||
|
private String stcd;//测站编码
|
||||||
|
private Date tm;//时间
|
||||||
|
private Double rz; //水位
|
||||||
|
private Double inq;//流量
|
||||||
|
} |
||||||
|
|
@ -0,0 +1,14 @@ |
|||||||
|
package com.hnac.hzims.waterrain.entity; |
||||||
|
|
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
@Data |
||||||
|
public class ReorganizeData { |
||||||
|
private String yearMonth; |
||||||
|
private String stcd; |
||||||
|
private String sttp; |
||||||
|
private List<Map<String,Object>> data; |
||||||
|
} |
@ -0,0 +1,13 @@ |
|||||||
|
package com.hnac.hzims.waterrain.entity; |
||||||
|
|
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
|
||||||
|
@Data |
||||||
|
public class ReorganizeLog implements Serializable { |
||||||
|
private String stcd; |
||||||
|
private String yearMonth; |
||||||
|
private String operateUser; |
||||||
|
private String checkUser; |
||||||
|
} |
@ -0,0 +1,74 @@ |
|||||||
|
package com.hnac.hzims.waterrain.entity; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName; |
||||||
|
import io.swagger.annotations.ApiModelProperty; |
||||||
|
import lombok.Data; |
||||||
|
import org.springblade.core.mp.base.BaseEntity; |
||||||
|
|
||||||
|
/** |
||||||
|
* 水雨情测站信息表 |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
@TableName("st_stbprp_b") |
||||||
|
public class StStbprpB extends BaseEntity { |
||||||
|
@ApiModelProperty("机构id") |
||||||
|
private String orgId; |
||||||
|
@ApiModelProperty("河流id") |
||||||
|
private String rvid; |
||||||
|
@ApiModelProperty("水系id") |
||||||
|
private String hnid; |
||||||
|
@ApiModelProperty("流域id") |
||||||
|
private String bsid; |
||||||
|
@ApiModelProperty("测站编码") |
||||||
|
private String stcd; |
||||||
|
@ApiModelProperty("测站名称") |
||||||
|
private String stnm; |
||||||
|
@ApiModelProperty("河流名称") |
||||||
|
private String rvnm; |
||||||
|
@ApiModelProperty("水系名称") |
||||||
|
private String hnnm; |
||||||
|
@ApiModelProperty("流域名称") |
||||||
|
private String bsnm; |
||||||
|
@ApiModelProperty("经度(度分秒)") |
||||||
|
private String lgtd; |
||||||
|
@ApiModelProperty("纬度(度分秒)") |
||||||
|
private String lttd; |
||||||
|
@ApiModelProperty("站址") |
||||||
|
private String stlc; |
||||||
|
@ApiModelProperty("行政区划码") |
||||||
|
private String addvcd; |
||||||
|
@ApiModelProperty("基面修正基值") |
||||||
|
private Double mdbz; |
||||||
|
@ApiModelProperty("基面修正参数") |
||||||
|
private Double mdpr; |
||||||
|
@ApiModelProperty("基面名称") |
||||||
|
private String dtmnm; |
||||||
|
@ApiModelProperty("基面高程") |
||||||
|
private Double dtmel; |
||||||
|
@ApiModelProperty("站类") |
||||||
|
private String sttp; |
||||||
|
@ApiModelProperty("拍报段次") |
||||||
|
private Double dfrtms; |
||||||
|
@ApiModelProperty("拍报项目") |
||||||
|
private String fritm; |
||||||
|
@ApiModelProperty("报讯等级") |
||||||
|
private String frgrd; |
||||||
|
@ApiModelProperty("始报年月") |
||||||
|
private String bgfrym; |
||||||
|
@ApiModelProperty("截报年月") |
||||||
|
private String edfrym; |
||||||
|
@ApiModelProperty("管理机构") |
||||||
|
private String admauth; |
||||||
|
@ApiModelProperty("测站岸别") |
||||||
|
private String stbk; |
||||||
|
@ApiModelProperty("集水面积") |
||||||
|
private Double drna; |
||||||
|
@ApiModelProperty("拼音码") |
||||||
|
private String phcd; |
||||||
|
@ApiModelProperty("数值经度") |
||||||
|
private Double nlgtd; |
||||||
|
@ApiModelProperty("数值纬度") |
||||||
|
private Double nlttd; |
||||||
|
@ApiModelProperty("水库编码") |
||||||
|
private String rscd; |
||||||
|
} |
@ -0,0 +1,35 @@ |
|||||||
|
package com.hnac.hzims.waterrain.enums; |
||||||
|
|
||||||
|
public enum HistoryDataCalcTypeEnum { |
||||||
|
ZERO(0,"整点值/最早值"), |
||||||
|
ONE(1,"最大值"), |
||||||
|
TWO(2,"最小值"), |
||||||
|
THREE(3,"平均值"), |
||||||
|
FOUR(4,"累计值/和值"), |
||||||
|
FIVE(5,"变化值/差值"), |
||||||
|
SIX(6,"最新值"); |
||||||
|
|
||||||
|
Integer strategy; |
||||||
|
String desc; |
||||||
|
|
||||||
|
HistoryDataCalcTypeEnum(Integer strategy, String desc){ |
||||||
|
this.strategy = strategy; |
||||||
|
this.desc = desc; |
||||||
|
} |
||||||
|
|
||||||
|
public Integer getStrategy() { |
||||||
|
return strategy; |
||||||
|
} |
||||||
|
|
||||||
|
public void setStrategy(Integer strategy) { |
||||||
|
this.strategy = strategy; |
||||||
|
} |
||||||
|
|
||||||
|
public String getDesc() { |
||||||
|
return desc; |
||||||
|
} |
||||||
|
|
||||||
|
public void setDesc(String desc) { |
||||||
|
this.desc = desc; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,35 @@ |
|||||||
|
package com.hnac.hzims.waterrain.enums; |
||||||
|
|
||||||
|
public enum WaterFlowRainEnum { |
||||||
|
RR("RR","水库水文站"), |
||||||
|
ZZ("ZZ","河道水位站"), |
||||||
|
ZQ("ZQ","河道水文站"), |
||||||
|
PP("PP","雨量站"), |
||||||
|
|
||||||
|
LEVEL("level","水位"), |
||||||
|
FLOW("flow","流量"), |
||||||
|
RAIN("rain","降水"); |
||||||
|
private String code; |
||||||
|
private String name; |
||||||
|
|
||||||
|
WaterFlowRainEnum(String code,String name){ |
||||||
|
this.code=code; |
||||||
|
this.name=name; |
||||||
|
} |
||||||
|
|
||||||
|
public String getCode() { |
||||||
|
return code; |
||||||
|
} |
||||||
|
|
||||||
|
public void setCode(String code) { |
||||||
|
this.code = code; |
||||||
|
} |
||||||
|
|
||||||
|
public String getName() { |
||||||
|
return name; |
||||||
|
} |
||||||
|
|
||||||
|
public void setName(String name) { |
||||||
|
this.name = name; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,28 @@ |
|||||||
|
package com.hnac.hzims.waterrain.feign; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||||
|
import com.hnac.hzims.waterrain.entity.StStbprpB; |
||||||
|
import org.springframework.cloud.openfeign.FeignClient; |
||||||
|
import org.springframework.web.bind.annotation.GetMapping; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
@FeignClient( |
||||||
|
value = "water-rain-monitor", |
||||||
|
url = "${feign.water-rain-monitor:}" |
||||||
|
) |
||||||
|
public interface IStStbprpBClient { |
||||||
|
String API_PREFIX = "/stStbprpBClient"; |
||||||
|
String DETAIL = API_PREFIX + "/detail"; |
||||||
|
String LIST = API_PREFIX + "/list"; |
||||||
|
|
||||||
|
/** |
||||||
|
* 获取测站详情 |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
@GetMapping(DETAIL) |
||||||
|
StStbprpB detail(LambdaQueryWrapper wrapper); |
||||||
|
|
||||||
|
@GetMapping(LIST) |
||||||
|
List<StStbprpB> list(LambdaQueryWrapper wrapper); |
||||||
|
} |
@ -0,0 +1,19 @@ |
|||||||
|
package com.hnac.hzims.waterrain.feign; |
||||||
|
|
||||||
|
import org.springframework.cloud.openfeign.FeignClient; |
||||||
|
import org.springframework.web.bind.annotation.GetMapping; |
||||||
|
|
||||||
|
import java.util.Date; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
@FeignClient( |
||||||
|
value = "water-rain-monitor", |
||||||
|
url = "${feign.water-rain-monitor:}" |
||||||
|
) |
||||||
|
public interface IStStbprpBDataClient { |
||||||
|
String API_PREFIX = "/stStbprpBDataClient"; |
||||||
|
String QUERYMAXORMIN = API_PREFIX + "/queryMaxOrMin"; |
||||||
|
|
||||||
|
@GetMapping(QUERYMAXORMIN) |
||||||
|
Map<String, String> queryMaxOrMin(String deviceCode, Date startTime, Date endTime, Integer calcType,Integer saveTimeType,Integer timeInterval, String col); |
||||||
|
} |
@ -0,0 +1,9 @@ |
|||||||
|
package com.hnac.hzims.waterrain.vo; |
||||||
|
|
||||||
|
import com.hnac.hzims.waterrain.entity.StStbprpB; |
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
@Data |
||||||
|
public class StStbprpBVo extends StStbprpB { |
||||||
|
private String sttpName; |
||||||
|
} |
@ -0,0 +1,68 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" |
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
||||||
|
<modelVersion>4.0.0</modelVersion> |
||||||
|
<parent> |
||||||
|
<groupId>com.hnac.hzims</groupId> |
||||||
|
<artifactId>hzims-service</artifactId> |
||||||
|
<version>4.0.0-SNAPSHOT</version> |
||||||
|
</parent> |
||||||
|
|
||||||
|
<artifactId>water-quality</artifactId> |
||||||
|
|
||||||
|
<properties> |
||||||
|
<maven.compiler.source>8</maven.compiler.source> |
||||||
|
<maven.compiler.target>8</maven.compiler.target> |
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> |
||||||
|
</properties> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<dependencies> |
||||||
|
<dependency> |
||||||
|
<groupId>org.springblade</groupId> |
||||||
|
<artifactId>blade-core-boot</artifactId> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>org.springblade</groupId> |
||||||
|
<artifactId>blade-starter-swagger</artifactId> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>org.springblade</groupId> |
||||||
|
<artifactId>blade-starter-oss-all</artifactId> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>com.baomidou</groupId> |
||||||
|
<artifactId>dynamic-datasource-spring-boot-starter</artifactId> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>org.springblade</groupId> |
||||||
|
<artifactId>blade-core-test</artifactId> |
||||||
|
<scope>test</scope> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>org.springblade</groupId> |
||||||
|
<artifactId>blade-core-auto</artifactId> |
||||||
|
<scope>compile</scope> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>com.hnac.hzims</groupId> |
||||||
|
<artifactId>water-quality-api</artifactId> |
||||||
|
<version>${hzims.project.version}</version> |
||||||
|
<scope>compile</scope> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>org.springblade</groupId> |
||||||
|
<artifactId>blade-common</artifactId> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>com.hnac.hzinfo.data</groupId> |
||||||
|
<artifactId>hzinfo-data-sdk</artifactId> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>com.hnac.hzims</groupId> |
||||||
|
<artifactId>common-api</artifactId> |
||||||
|
</dependency> |
||||||
|
</dependencies> |
||||||
|
</project> |
@ -0,0 +1,51 @@ |
|||||||
|
/* |
||||||
|
* Copyright (c) 2018-2028, Chill Zhuang All rights reserved. |
||||||
|
* |
||||||
|
* Redistribution and use in source and binary forms, with or without |
||||||
|
* modification, are permitted provided that the following conditions are met: |
||||||
|
* |
||||||
|
* Redistributions of source code must retain the above copyright Example, |
||||||
|
* this list of conditions and the following disclaimer. |
||||||
|
* Redistributions in binary form must reproduce the above copyright |
||||||
|
* Example, this list of conditions and the following disclaimer in the |
||||||
|
* documentation and/or other materials provided with the distribution. |
||||||
|
* Neither the name of the dreamlu.net developer nor the names of its |
||||||
|
* contributors may be used to endorse or promote products derived from |
||||||
|
* this software without specific prior written permission. |
||||||
|
* Author: Chill 庄骞 (smallchill@163.com) |
||||||
|
*/ |
||||||
|
package com.hnac.hzims.waterquality; |
||||||
|
|
||||||
|
import org.mybatis.spring.annotation.MapperScan; |
||||||
|
import org.springblade.core.cloud.feign.EnableBladeFeign; |
||||||
|
import org.springblade.core.launch.BladeApplication; |
||||||
|
import org.springframework.boot.builder.SpringApplicationBuilder; |
||||||
|
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; |
||||||
|
import org.springframework.cloud.client.SpringCloudApplication; |
||||||
|
import org.springframework.context.annotation.ComponentScan; |
||||||
|
import org.springframework.scheduling.annotation.EnableScheduling; |
||||||
|
|
||||||
|
/** |
||||||
|
* Demo启动器 |
||||||
|
* |
||||||
|
* @author Chill |
||||||
|
*/ |
||||||
|
@EnableBladeFeign(basePackages = {"org.springblade","com.hnac"}) |
||||||
|
@SpringCloudApplication |
||||||
|
@MapperScan("com.hnac.hzims.**.mapper.**") |
||||||
|
@EnableScheduling |
||||||
|
@ComponentScan(basePackages = {"com.hnac.hzims.*"}) |
||||||
|
public class WaterQualityApplication extends SpringBootServletInitializer { |
||||||
|
|
||||||
|
static String APPLICATION_NAME="water-quality"; |
||||||
|
|
||||||
|
public static void main(String[] args) { |
||||||
|
BladeApplication.run(APPLICATION_NAME, WaterQualityApplication.class, args); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { |
||||||
|
return BladeApplication.createSpringApplicationBuilder(builder, APPLICATION_NAME, WaterQualityApplication.class); |
||||||
|
} |
||||||
|
} |
||||||
|
|
@ -0,0 +1,125 @@ |
|||||||
|
package com.hnac.hzims.waterquality.controller; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||||
|
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; |
||||||
|
import com.hnac.hzims.waterquality.entity.WqConfigD; |
||||||
|
import com.hnac.hzims.waterquality.service.IWqConfigDService; |
||||||
|
import com.hnac.hzims.waterquality.util.ParamUtil; |
||||||
|
import io.swagger.annotations.*; |
||||||
|
import lombok.AllArgsConstructor; |
||||||
|
import org.apache.commons.lang3.StringUtils; |
||||||
|
import org.springblade.common.cache.CacheNames; |
||||||
|
import org.springblade.core.boot.ctrl.BladeController; |
||||||
|
import org.springblade.core.mp.support.Condition; |
||||||
|
import org.springblade.core.mp.support.Query; |
||||||
|
import org.springblade.core.tool.api.R; |
||||||
|
import org.springblade.core.tool.utils.Func; |
||||||
|
import org.springframework.web.bind.annotation.*; |
||||||
|
import springfox.documentation.annotations.ApiIgnore; |
||||||
|
|
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.List; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
@RestController |
||||||
|
@RequestMapping("/waterQuality/wqConfigD") |
||||||
|
@AllArgsConstructor |
||||||
|
@Api(value = "水质监测指标配置", tags = "水质监测指标配置接口") |
||||||
|
public class WqConfigDController extends BladeController implements CacheNames { |
||||||
|
|
||||||
|
private final IWqConfigDService wqConfigDService; |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 分页 |
||||||
|
*/ |
||||||
|
|
||||||
|
@GetMapping("/pageList") |
||||||
|
@ApiImplicitParams({ |
||||||
|
@ApiImplicitParam(name = "stcd", value = "测站编码", paramType = "query", dataType = "string") |
||||||
|
}) |
||||||
|
@ApiOperationSupport(order = 1) |
||||||
|
@ApiOperation(value = "分页", notes = "传入wqConfigD") |
||||||
|
public R<IPage<WqConfigD>> pageList(@ApiIgnore @RequestParam Map<String, Object> param, Query query) { |
||||||
|
LambdaQueryWrapper<WqConfigD> wrapper= ParamUtil.conditionWqConfigD(param); |
||||||
|
IPage<WqConfigD> pages = wqConfigDService.page(Condition.getPage(query), wrapper); |
||||||
|
return R.data(pages); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 列表 |
||||||
|
*/ |
||||||
|
|
||||||
|
@GetMapping("/list") |
||||||
|
@ApiImplicitParams({ |
||||||
|
@ApiImplicitParam(name = "stcd", value = "测站编码", paramType = "query", dataType = "string") |
||||||
|
}) |
||||||
|
@ApiOperationSupport(order = 2) |
||||||
|
@ApiOperation(value = "列表", notes = "传入wqConfigD") |
||||||
|
public R<List<WqConfigD>> list(@ApiIgnore @RequestParam Map<String, Object> param) { |
||||||
|
LambdaQueryWrapper<WqConfigD> wrapper=ParamUtil.conditionWqConfigD(param); |
||||||
|
List<WqConfigD> list = wqConfigDService.list(wrapper); |
||||||
|
return R.data(list); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 详情 |
||||||
|
*/ |
||||||
|
|
||||||
|
@GetMapping("/detail") |
||||||
|
@ApiOperationSupport(order = 3) |
||||||
|
@ApiOperation(value = "详情", notes = "传入wqConfigD") |
||||||
|
public R<WqConfigD> detail(WqConfigD wqConfigD) { |
||||||
|
WqConfigD detail = wqConfigDService.getOne(Condition.getQueryWrapper(wqConfigD)); |
||||||
|
return R.data(detail); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 新增 |
||||||
|
*/ |
||||||
|
|
||||||
|
@PostMapping("/save") |
||||||
|
@ApiOperationSupport(order = 4) |
||||||
|
@ApiOperation(value = "新增", notes = "传入wqConfigD") |
||||||
|
public R save(@RequestBody Map<String,Object> param) { |
||||||
|
String stcd=String.valueOf(param.get("stcd")); |
||||||
|
if(StringUtils.isBlank(stcd)){ |
||||||
|
return R.fail("未传递测站编码"); |
||||||
|
} |
||||||
|
List<Map<String,Object>> list=(List<Map<String,Object>>)param.get("list"); |
||||||
|
List<WqConfigD> wqConfigDs=new ArrayList<>(); |
||||||
|
for(Map<String,Object> data:list){ |
||||||
|
WqConfigD wqConfigD=new WqConfigD(); |
||||||
|
wqConfigD.setStcd(stcd); |
||||||
|
wqConfigD.setType(String.valueOf(data.get("type"))); |
||||||
|
wqConfigD.setValue(String.valueOf(data.get("value"))); |
||||||
|
wqConfigDs.add(wqConfigD); |
||||||
|
} |
||||||
|
if(wqConfigDs==null || wqConfigDs.isEmpty()){ |
||||||
|
return R.fail("未传递配置参数"); |
||||||
|
} |
||||||
|
|
||||||
|
LambdaQueryWrapper<WqConfigD> wrapper=new LambdaQueryWrapper(); |
||||||
|
wrapper.eq(WqConfigD::getStcd,stcd); |
||||||
|
return R.status(wqConfigDService.batchSave(wqConfigDs,wrapper)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 删除 |
||||||
|
*/ |
||||||
|
|
||||||
|
@PostMapping("/remove") |
||||||
|
@ApiOperationSupport(order = 6) |
||||||
|
@ApiOperation(value = "逻辑删除", notes = "stcd") |
||||||
|
public R remove(@ApiParam(value = "测站编码集合") @RequestParam String stcd) { |
||||||
|
List<String> list=Func.toStrList(stcd); |
||||||
|
LambdaQueryWrapper<WqConfigD> wrapper=new LambdaQueryWrapper(); |
||||||
|
wrapper.in(WqConfigD::getStcd,list); |
||||||
|
boolean temp = wqConfigDService.delete(wrapper); |
||||||
|
return R.status(temp); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
@ -0,0 +1,179 @@ |
|||||||
|
package com.hnac.hzims.waterquality.controller; |
||||||
|
|
||||||
|
import com.hnac.hzims.entity.Report; |
||||||
|
import com.hnac.hzims.entity.ReportData; |
||||||
|
import com.hnac.hzims.enums.QueryDateTypeEnum; |
||||||
|
import com.hnac.hzims.util.CommonUtil; |
||||||
|
import com.hnac.hzims.waterquality.service.IWqDealDataService; |
||||||
|
import com.hnac.hzinfo.datasearch.analyse.domain.FieldsData; |
||||||
|
import com.hnac.hzinfo.datasearch.analyse.vo.AnalyzeInstanceFieldVO; |
||||||
|
import io.swagger.annotations.Api; |
||||||
|
import io.swagger.annotations.ApiOperation; |
||||||
|
import lombok.AllArgsConstructor; |
||||||
|
import org.springblade.common.cache.CacheNames; |
||||||
|
import org.springblade.core.boot.ctrl.BladeController; |
||||||
|
import org.springblade.core.tool.api.R; |
||||||
|
import org.springframework.web.bind.annotation.RequestMapping; |
||||||
|
import org.springframework.web.bind.annotation.RequestMethod; |
||||||
|
import org.springframework.web.bind.annotation.RestController; |
||||||
|
|
||||||
|
import java.util.Date; |
||||||
|
import java.util.List; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
@RestController |
||||||
|
@RequestMapping("/waterQuality/wqData") |
||||||
|
@AllArgsConstructor |
||||||
|
@Api(value = "水质数据查询接口", tags = "水质数据查询接口") |
||||||
|
public class WqDealDataController extends BladeController implements CacheNames { |
||||||
|
|
||||||
|
private final IWqDealDataService wqDealDataService; |
||||||
|
|
||||||
|
// DeviceClient deviceClient;
|
||||||
|
|
||||||
|
/** |
||||||
|
* |
||||||
|
* @param stcd |
||||||
|
* @param beginSpt |
||||||
|
* @param endSpt |
||||||
|
* @param type hour month year |
||||||
|
* @param accessRules 取数规则0=整点值、1=最大值、2=最小值、3=平均值、4=(累计值/和值)、5=(变化值/差值) 6=最新值 |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
|
||||||
|
@ApiOperation("基础数据报表,数据查询和统计分析使用接口") |
||||||
|
@RequestMapping(value = "/getReportData", method = RequestMethod.GET) |
||||||
|
public R getReportData(String stcd, String beginSpt, String endSpt,String type,Integer accessRules) { |
||||||
|
Map<String,Date> res= CommonUtil.getStartEnd(beginSpt,endSpt); |
||||||
|
if(res == null){ |
||||||
|
return R.data(500,false, "日期格式错误"); |
||||||
|
} |
||||||
|
|
||||||
|
// R<Boolean> flag=deviceClient.isDeviceCodeExist(stcd);
|
||||||
|
// if(flag!=null && (!flag.isSuccess() || !flag.getData())){
|
||||||
|
// return R.data(500,false, "设备实例不存在,请联系管理员");
|
||||||
|
// }
|
||||||
|
|
||||||
|
//查询基础数据
|
||||||
|
Report report = wqDealDataService.getReportData(stcd,type,accessRules, res.get("begin"), res.get("end")); |
||||||
|
return R.data(report,"查询成功"); |
||||||
|
} |
||||||
|
|
||||||
|
//同期比较
|
||||||
|
|
||||||
|
@ApiOperation("同期比较") |
||||||
|
@RequestMapping(value = "/getCompare", method = RequestMethod.GET) |
||||||
|
public R getCompare(String stcd, String beginSpt, String endSpt,Integer accessRules,String col) { |
||||||
|
Map<String,Date> res=CommonUtil.getStartEnd(beginSpt,endSpt); |
||||||
|
if(res == null){ |
||||||
|
return R.data(500,false, "日期格式错误"); |
||||||
|
} |
||||||
|
|
||||||
|
// R<Boolean> flag=deviceClient.isDeviceCodeExist(stcd);
|
||||||
|
// if(flag!=null && (!flag.isSuccess() || !flag.getData())){
|
||||||
|
// return R.data(500,false, "设备实例不存在,请联系管理员");
|
||||||
|
// }
|
||||||
|
|
||||||
|
//查询基础数据
|
||||||
|
Report report = wqDealDataService.getCompare(stcd, QueryDateTypeEnum.DAY.getQueryDateType(),accessRules, res.get("begin"), res.get("end"), col); |
||||||
|
return R.data(report,"查询成功"); |
||||||
|
} |
||||||
|
|
||||||
|
//环比
|
||||||
|
|
||||||
|
@ApiOperation("同一时刻的环比") |
||||||
|
@RequestMapping(value = "/getRingCompare", method = RequestMethod.GET) |
||||||
|
public R getRingCompare(String stcd, String beginSpt, String endSpt, Integer hour) { |
||||||
|
Map<String,Date> res=CommonUtil.getStartEnd(beginSpt,endSpt); |
||||||
|
if(res == null){ |
||||||
|
return R.data(500,false, "日期格式错误"); |
||||||
|
} |
||||||
|
|
||||||
|
// R<Boolean> flag=deviceClient.isDeviceCodeExist(stcd);
|
||||||
|
// if(flag!=null && (!flag.isSuccess() || !flag.getData())){
|
||||||
|
// return R.data(500,false, "设备实例不存在,请联系管理员");
|
||||||
|
// }
|
||||||
|
|
||||||
|
//查询基础数据
|
||||||
|
Report report = wqDealDataService.getRingCompare(stcd, res.get("begin"), res.get("end"),hour); |
||||||
|
return R.data(report,"查询成功"); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ApiOperation("水质评价数据") |
||||||
|
@RequestMapping(value = "/getEvaluate", method = RequestMethod.GET) |
||||||
|
public R getEvaluate(String stcd, String type,String date) {//type 0实时 1历史
|
||||||
|
|
||||||
|
// R<Boolean> flag=deviceClient.isDeviceCodeExist(stcd);
|
||||||
|
// if(flag!=null && (!flag.isSuccess() || !flag.getData())){
|
||||||
|
// return R.data(500,false, "设备实例不存在,请联系管理员");
|
||||||
|
// }
|
||||||
|
|
||||||
|
List<FieldsData> report = null; |
||||||
|
if("1".equals(type)) { |
||||||
|
Map<String,Date> res=CommonUtil.getStartEnd(date + " 00:00:00",date + " 23:59:59"); |
||||||
|
if(res == null){ |
||||||
|
return R.data(500,false, "日期格式错误"); |
||||||
|
} |
||||||
|
//查询基础数据
|
||||||
|
report = wqDealDataService.getHistoryData(stcd,res.get("begin"), res.get("end")); |
||||||
|
}else{ |
||||||
|
report = wqDealDataService.getRealData(stcd); |
||||||
|
} |
||||||
|
return R.data(report,"查询成功"); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
//同期比较
|
||||||
|
|
||||||
|
@ApiOperation("获取某一项的历史数据") |
||||||
|
@RequestMapping(value = "/getHistoryDataByCol", method = RequestMethod.GET) |
||||||
|
public R getHistoryDataByCol(String stcd, String beginSpt, String endSpt,Integer accessRules,String col) { |
||||||
|
Map<String,Date> res=CommonUtil.getStartEnd(beginSpt,endSpt); |
||||||
|
if(res == null){ |
||||||
|
return R.data(500,false, "日期格式错误"); |
||||||
|
} |
||||||
|
|
||||||
|
// R<Boolean> flag=deviceClient.isDeviceCodeExist(stcd);
|
||||||
|
// if(flag!=null && (!flag.isSuccess() || !flag.getData())){
|
||||||
|
// return R.data(500,false, "设备实例不存在,请联系管理员");
|
||||||
|
// }
|
||||||
|
|
||||||
|
//查询基础数据
|
||||||
|
List<ReportData> report = wqDealDataService.getDataByCol(stcd,QueryDateTypeEnum.DAY.getQueryDateType(),accessRules, res.get("begin"), res.get("end"), col); |
||||||
|
return R.data(report,"查询成功"); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@ApiOperation("表头列") |
||||||
|
@RequestMapping(value = "/getTableHead", method = RequestMethod.GET) |
||||||
|
public R getTableHead(String stcd) { |
||||||
|
|
||||||
|
// R<Boolean> flag=deviceClient.isDeviceCodeExist(stcd);
|
||||||
|
// if(flag!=null && (!flag.isSuccess() || !flag.getData())){
|
||||||
|
// return R.data(500,false, "设备实例不存在,请联系管理员");
|
||||||
|
// }
|
||||||
|
|
||||||
|
//查询基础数据
|
||||||
|
List<AnalyzeInstanceFieldVO> report = wqDealDataService.getSignages(stcd); |
||||||
|
return R.data(report,"查询成功"); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
//实时数据
|
||||||
|
|
||||||
|
@ApiOperation("实时数据接口") |
||||||
|
@RequestMapping(value = "/getRealData", method = RequestMethod.GET) |
||||||
|
public R getRealData(String stcd) { |
||||||
|
|
||||||
|
// R<Boolean> flag=deviceClient.isDeviceCodeExist(stcd);
|
||||||
|
// if(flag!=null && (!flag.isSuccess() || !flag.getData())){
|
||||||
|
// return R.data(500,false, "设备实例不存在,请联系管理员");
|
||||||
|
// }
|
||||||
|
|
||||||
|
List<FieldsData> report = wqDealDataService.getRealData(stcd); |
||||||
|
return R.data(report,"查询成功"); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,128 @@ |
|||||||
|
package com.hnac.hzims.waterquality.controller; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||||
|
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; |
||||||
|
import com.hnac.hzims.waterquality.entity.WqWfrinfB; |
||||||
|
import com.hnac.hzims.waterquality.service.IWqWfrinfBService; |
||||||
|
import com.hnac.hzims.waterquality.util.ParamUtil; |
||||||
|
import io.swagger.annotations.*; |
||||||
|
import lombok.AllArgsConstructor; |
||||||
|
import org.springblade.common.cache.CacheNames; |
||||||
|
import org.springblade.core.boot.ctrl.BladeController; |
||||||
|
import org.springblade.core.mp.support.Condition; |
||||||
|
import org.springblade.core.mp.support.Query; |
||||||
|
import org.springblade.core.tool.api.R; |
||||||
|
import org.springblade.core.tool.utils.Func; |
||||||
|
|
||||||
|
import org.springframework.web.bind.annotation.*; |
||||||
|
import springfox.documentation.annotations.ApiIgnore; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
@RestController |
||||||
|
@RequestMapping("/waterQuality/WqWfrinfB") |
||||||
|
@AllArgsConstructor |
||||||
|
@Api(value = "水功能区基本信息", tags = "水功能区基本信息接口") |
||||||
|
public class WqWfrinfBController extends BladeController implements CacheNames { |
||||||
|
|
||||||
|
private final IWqWfrinfBService wqWfrinfBService; |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 分页 |
||||||
|
*/ |
||||||
|
|
||||||
|
@GetMapping("/pageList") |
||||||
|
@ApiImplicitParams({ |
||||||
|
@ApiImplicitParam(name = "wfrcd", value = "水功能区划码", paramType = "query", dataType = "string"), |
||||||
|
@ApiImplicitParam(name = "wfrnm", value = "水功能区名称", paramType = "query", dataType = "string") |
||||||
|
}) |
||||||
|
@ApiOperationSupport(order = 1) |
||||||
|
@ApiOperation(value = "分页", notes = "传入wqWfrinfB") |
||||||
|
public R<IPage<WqWfrinfB>> pageList(@ApiIgnore @RequestParam Map<String, Object> param, Query query) { |
||||||
|
LambdaQueryWrapper<WqWfrinfB> wrapper= ParamUtil.conditionWqWfrinfB(param); |
||||||
|
IPage<WqWfrinfB> pages = wqWfrinfBService.page(Condition.getPage(query), wrapper); |
||||||
|
return R.data(pages); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 列表 |
||||||
|
*/ |
||||||
|
|
||||||
|
@GetMapping("/list") |
||||||
|
@ApiImplicitParams({ |
||||||
|
@ApiImplicitParam(name = "wfrcd", value = "水功能区划码", paramType = "query", dataType = "string"), |
||||||
|
@ApiImplicitParam(name = "wfrnm", value = "水功能区名称", paramType = "query", dataType = "string") |
||||||
|
}) |
||||||
|
@ApiOperationSupport(order = 2) |
||||||
|
@ApiOperation(value = "列表", notes = "传入wqWfrinfB") |
||||||
|
public R<List<WqWfrinfB>> list(@ApiIgnore @RequestParam Map<String, Object> param) { |
||||||
|
LambdaQueryWrapper<WqWfrinfB> wrapper=ParamUtil.conditionWqWfrinfB(param); |
||||||
|
List<WqWfrinfB> list = wqWfrinfBService.list(wrapper); |
||||||
|
return R.data(list); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 详情 |
||||||
|
*/ |
||||||
|
|
||||||
|
@GetMapping("/detail") |
||||||
|
@ApiOperationSupport(order = 3) |
||||||
|
@ApiOperation(value = "详情", notes = "传入wqWfrinfB") |
||||||
|
public R<WqWfrinfB> detail(WqWfrinfB wqWfrinfB) { |
||||||
|
WqWfrinfB detail = wqWfrinfBService.getOne(Condition.getQueryWrapper(wqWfrinfB)); |
||||||
|
return R.data(detail); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 新增 |
||||||
|
*/ |
||||||
|
|
||||||
|
@PostMapping("/save") |
||||||
|
@ApiOperationSupport(order = 4) |
||||||
|
@ApiOperation(value = "新增", notes = "传入wqWfrinfB") |
||||||
|
public R save(@RequestBody WqWfrinfB wqWfrinfB) { |
||||||
|
LambdaQueryWrapper<WqWfrinfB> wrapper=new LambdaQueryWrapper<>(); |
||||||
|
wrapper.eq(WqWfrinfB::getWfrcd,wqWfrinfB.getWfrcd()); |
||||||
|
List<WqWfrinfB> list = wqWfrinfBService.list(wrapper); |
||||||
|
if(list!=null && !list.isEmpty()){ |
||||||
|
return R.fail("水功能区代码已存在"); |
||||||
|
} |
||||||
|
|
||||||
|
wrapper=new LambdaQueryWrapper<>(); |
||||||
|
wrapper.eq(WqWfrinfB::getWfrnm,wqWfrinfB.getWfrnm()); |
||||||
|
list = wqWfrinfBService.list(wrapper); |
||||||
|
if(list!=null && !list.isEmpty()){ |
||||||
|
return R.fail("水功能区名称已存在"); |
||||||
|
} |
||||||
|
|
||||||
|
return R.status(wqWfrinfBService.save(wqWfrinfB)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 修改 |
||||||
|
*/ |
||||||
|
|
||||||
|
@PostMapping("/update") |
||||||
|
@ApiOperationSupport(order = 5) |
||||||
|
@ApiOperation(value = "修改", notes = "传入wqWfrinfB") |
||||||
|
public R update(@RequestBody WqWfrinfB wqWfrinfB) { |
||||||
|
return R.status(wqWfrinfBService.updateById(wqWfrinfB)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 删除 |
||||||
|
*/ |
||||||
|
|
||||||
|
@PostMapping("/remove") |
||||||
|
@ApiOperationSupport(order = 6) |
||||||
|
@ApiOperation(value = "逻辑删除", notes = "ids") |
||||||
|
public R remove(@ApiParam(value = "主键集合") @RequestParam String ids) { |
||||||
|
boolean temp = wqWfrinfBService.deleteLogic(Func.toLongList(ids)); |
||||||
|
return R.status(temp); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,151 @@ |
|||||||
|
/* |
||||||
|
* Copyright (c) 2018-2028, Chill Zhuang All rights reserved. |
||||||
|
* |
||||||
|
* Redistribution and use in source and binary forms, with or without |
||||||
|
* modification, are permitted provided that the following conditions are met: |
||||||
|
* |
||||||
|
* Redistributions of source code must retain the above copyright wqWqsinfB, |
||||||
|
* this list of conditions and the following disclaimer. |
||||||
|
* Redistributions in binary form must reproduce the above copyright |
||||||
|
* wqWqsinfB, this list of conditions and the following disclaimer in the |
||||||
|
* documentation and/or other materials provided with the distribution. |
||||||
|
* Neither the name of the dreamlu.net developer nor the names of its |
||||||
|
* contributors may be used to endorse or promote products derived from |
||||||
|
* this software without specific prior written permission. |
||||||
|
* Author: Chill 庄骞 (smallchill@163.com) |
||||||
|
*/ |
||||||
|
package com.hnac.hzims.waterquality.controller; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||||
|
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; |
||||||
|
import com.hnac.hzims.waterquality.entity.WqWqsinfB; |
||||||
|
import com.hnac.hzims.waterquality.service.IWqWqsinfBService; |
||||||
|
import com.hnac.hzims.waterquality.util.ParamUtil; |
||||||
|
import com.hnac.hzims.waterquality.vo.WqWqsinfBVo; |
||||||
|
import com.hnac.hzims.waterquality.wrapper.WqWqsinfBWrapper; |
||||||
|
import io.swagger.annotations.*; |
||||||
|
import lombok.AllArgsConstructor; |
||||||
|
import org.springblade.common.cache.CacheNames; |
||||||
|
import org.springblade.core.boot.ctrl.BladeController; |
||||||
|
import org.springblade.core.mp.support.Condition; |
||||||
|
import org.springblade.core.mp.support.Query; |
||||||
|
import org.springblade.core.tool.api.R; |
||||||
|
import org.springblade.core.tool.utils.Func; |
||||||
|
|
||||||
|
import org.springframework.web.bind.annotation.*; |
||||||
|
import springfox.documentation.annotations.ApiIgnore; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
/** |
||||||
|
* 水质监测站控制器 |
||||||
|
* |
||||||
|
* @author Chill |
||||||
|
*/ |
||||||
|
@RestController |
||||||
|
@RequestMapping("/waterQuality/wqWqsinfB") |
||||||
|
@AllArgsConstructor |
||||||
|
@Api(value = "水质监测站", tags = "水质监测站接口") |
||||||
|
public class WqWqsinfBController extends BladeController implements CacheNames { |
||||||
|
|
||||||
|
private final IWqWqsinfBService wqWqsinfBService; |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 分页 |
||||||
|
*/ |
||||||
|
|
||||||
|
@GetMapping("/pageList") |
||||||
|
@ApiImplicitParams({ |
||||||
|
@ApiImplicitParam(name = "stcd", value = "测站编码", paramType = "query", dataType = "string"), |
||||||
|
@ApiImplicitParam(name = "stnm", value = "测站名称", paramType = "query", dataType = "string") |
||||||
|
}) |
||||||
|
@ApiOperationSupport(order = 1) |
||||||
|
@ApiOperation(value = "分页", notes = "传入wqWqsinfB") |
||||||
|
public R<IPage<WqWqsinfBVo>> pageList(@ApiIgnore @RequestParam Map<String, Object> param, Query query) { |
||||||
|
LambdaQueryWrapper<WqWqsinfB> wrapper= ParamUtil.conditionWqWqsinfB(param); |
||||||
|
IPage<WqWqsinfB> pages = wqWqsinfBService.page(Condition.getPage(query), wrapper); |
||||||
|
return R.data(WqWqsinfBWrapper.build().pageVO(pages)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 列表 |
||||||
|
*/ |
||||||
|
|
||||||
|
@GetMapping("/list") |
||||||
|
@ApiImplicitParams({ |
||||||
|
@ApiImplicitParam(name = "stcd", value = "测站编码", paramType = "query", dataType = "string"), |
||||||
|
@ApiImplicitParam(name = "stnm", value = "测站名称", paramType = "query", dataType = "string") |
||||||
|
}) |
||||||
|
@ApiOperationSupport(order = 2) |
||||||
|
@ApiOperation(value = "列表", notes = "传入wqWqsinfB") |
||||||
|
public R<List<WqWqsinfBVo>> list(@ApiIgnore @RequestParam Map<String, Object> param) { |
||||||
|
LambdaQueryWrapper<WqWqsinfB> wrapper=ParamUtil.conditionWqWqsinfB(param); |
||||||
|
List<WqWqsinfB> list = wqWqsinfBService.list(wrapper); |
||||||
|
return R.data(WqWqsinfBWrapper.build().listVO(list)); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 详情 |
||||||
|
*/ |
||||||
|
|
||||||
|
@GetMapping("/detail") |
||||||
|
@ApiOperationSupport(order = 3) |
||||||
|
@ApiOperation(value = "详情", notes = "传入wqWqsinfB") |
||||||
|
public R<WqWqsinfBVo> detail(WqWqsinfB wqWqsinfB) { |
||||||
|
WqWqsinfB detail = wqWqsinfBService.getOne(Condition.getQueryWrapper(wqWqsinfB)); |
||||||
|
return R.data(WqWqsinfBWrapper.build().entityVO(detail)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 新增 |
||||||
|
*/ |
||||||
|
|
||||||
|
@PostMapping("/save") |
||||||
|
@ApiOperationSupport(order = 4) |
||||||
|
@ApiOperation(value = "新增", notes = "传入wqWqsinfB") |
||||||
|
public R save(@RequestBody WqWqsinfB wqWqsinfB) { |
||||||
|
LambdaQueryWrapper<WqWqsinfB> wrapper=new LambdaQueryWrapper<>(); |
||||||
|
wrapper.eq(WqWqsinfB::getStcd,wqWqsinfB.getStcd()); |
||||||
|
List<WqWqsinfB> list = wqWqsinfBService.list(wrapper); |
||||||
|
if(list!=null && !list.isEmpty()){ |
||||||
|
return R.fail("测站编码已存在"); |
||||||
|
} |
||||||
|
|
||||||
|
wrapper=new LambdaQueryWrapper<>(); |
||||||
|
wrapper.eq(WqWqsinfB::getStnm,wqWqsinfB.getStnm()); |
||||||
|
list = wqWqsinfBService.list(wrapper); |
||||||
|
if(list!=null && !list.isEmpty()){ |
||||||
|
return R.fail("测站名称已存在"); |
||||||
|
} |
||||||
|
|
||||||
|
return R.status(wqWqsinfBService.save(wqWqsinfB)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 修改 |
||||||
|
*/ |
||||||
|
|
||||||
|
@PostMapping("/update") |
||||||
|
@ApiOperationSupport(order = 5) |
||||||
|
@ApiOperation(value = "修改", notes = "传入wqWqsinfB") |
||||||
|
public R update(@RequestBody WqWqsinfB wqWqsinfB) { |
||||||
|
return R.status(wqWqsinfBService.updateById(wqWqsinfB)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 删除 |
||||||
|
*/ |
||||||
|
|
||||||
|
@PostMapping("/remove") |
||||||
|
@ApiOperationSupport(order = 6) |
||||||
|
@ApiOperation(value = "逻辑删除", notes = "ids") |
||||||
|
public R remove(@ApiParam(value = "主键集合") @RequestParam String ids) { |
||||||
|
boolean temp = wqWqsinfBService.deleteLogic(Func.toLongList(ids)); |
||||||
|
return R.status(temp); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,128 @@ |
|||||||
|
package com.hnac.hzims.waterquality.controller; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||||
|
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; |
||||||
|
import com.hnac.hzims.waterquality.entity.WqWrrinfB; |
||||||
|
import com.hnac.hzims.waterquality.service.IWqWrrinfBService; |
||||||
|
import com.hnac.hzims.waterquality.util.ParamUtil; |
||||||
|
import io.swagger.annotations.*; |
||||||
|
import lombok.AllArgsConstructor; |
||||||
|
import org.springblade.common.cache.CacheNames; |
||||||
|
import org.springblade.core.boot.ctrl.BladeController; |
||||||
|
import org.springblade.core.mp.support.Condition; |
||||||
|
import org.springblade.core.mp.support.Query; |
||||||
|
import org.springblade.core.tool.api.R; |
||||||
|
import org.springblade.core.tool.utils.Func; |
||||||
|
|
||||||
|
import org.springframework.web.bind.annotation.*; |
||||||
|
import springfox.documentation.annotations.ApiIgnore; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
@RestController |
||||||
|
@RequestMapping("/waterQuality/wqWrrinfB") |
||||||
|
@AllArgsConstructor |
||||||
|
@Api(value = "水资源分区基本信息", tags = "水资源分区基本信息接口") |
||||||
|
public class WqWrrinfBController extends BladeController implements CacheNames { |
||||||
|
|
||||||
|
private final IWqWrrinfBService wqWrrinfBService; |
||||||
|
|
||||||
|
/** |
||||||
|
* 分页 |
||||||
|
*/ |
||||||
|
|
||||||
|
@GetMapping("/pageList") |
||||||
|
@ApiImplicitParams({ |
||||||
|
@ApiImplicitParam(name = "wrrcd", value = "水资源分区码", paramType = "query", dataType = "string"), |
||||||
|
@ApiImplicitParam(name = "wrrnm", value = "水资源分区名称", paramType = "query", dataType = "string") |
||||||
|
}) |
||||||
|
@ApiOperationSupport(order = 1) |
||||||
|
@ApiOperation(value = "分页", notes = "传入wqWrrinfB") |
||||||
|
public R<IPage<WqWrrinfB>> pageList(@ApiIgnore @RequestParam Map<String, Object> param, Query query) { |
||||||
|
LambdaQueryWrapper<WqWrrinfB> wrapper= ParamUtil.conditionWqWrrinfB(param); |
||||||
|
IPage<WqWrrinfB> pages = wqWrrinfBService.page(Condition.getPage(query), wrapper); |
||||||
|
return R.data(pages); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 列表 |
||||||
|
*/ |
||||||
|
|
||||||
|
@GetMapping("/list") |
||||||
|
@ApiImplicitParams({ |
||||||
|
@ApiImplicitParam(name = "wrrcd", value = "水资源分区码", paramType = "query", dataType = "string"), |
||||||
|
@ApiImplicitParam(name = "wrrnm", value = "水资源分区名称", paramType = "query", dataType = "string") |
||||||
|
}) |
||||||
|
@ApiOperationSupport(order = 2) |
||||||
|
@ApiOperation(value = "列表", notes = "传入wqWrrinfB") |
||||||
|
public R<List<WqWrrinfB>> list(@ApiIgnore @RequestParam Map<String, Object> param) { |
||||||
|
LambdaQueryWrapper<WqWrrinfB> wrapper=ParamUtil.conditionWqWrrinfB(param); |
||||||
|
List<WqWrrinfB> list = wqWrrinfBService.list(wrapper); |
||||||
|
return R.data(list); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 详情 |
||||||
|
*/ |
||||||
|
|
||||||
|
@GetMapping("/detail") |
||||||
|
@ApiOperationSupport(order = 3) |
||||||
|
@ApiOperation(value = "详情", notes = "传入wqWrrinfB") |
||||||
|
public R<WqWrrinfB> detail(WqWrrinfB wqWrrinfB) { |
||||||
|
WqWrrinfB detail = wqWrrinfBService.getOne(Condition.getQueryWrapper(wqWrrinfB)); |
||||||
|
return R.data(detail); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 新增 |
||||||
|
*/ |
||||||
|
|
||||||
|
@PostMapping("/save") |
||||||
|
@ApiOperationSupport(order = 4) |
||||||
|
@ApiOperation(value = "新增", notes = "传入wqWrrinfB") |
||||||
|
public R save(@RequestBody WqWrrinfB wqWrrinfB) { |
||||||
|
LambdaQueryWrapper<WqWrrinfB> wrapper=new LambdaQueryWrapper<>(); |
||||||
|
wrapper.eq(WqWrrinfB::getWrrcd,wqWrrinfB.getWrrcd()); |
||||||
|
List<WqWrrinfB> list = wqWrrinfBService.list(wrapper); |
||||||
|
if(list!=null && !list.isEmpty()){ |
||||||
|
return R.fail("水资源分区码已存在"); |
||||||
|
} |
||||||
|
|
||||||
|
wrapper=new LambdaQueryWrapper<>(); |
||||||
|
wrapper.eq(WqWrrinfB::getWrrnm,wqWrrinfB.getWrrnm()); |
||||||
|
list = wqWrrinfBService.list(wrapper); |
||||||
|
if(list!=null && !list.isEmpty()){ |
||||||
|
return R.fail("水资源分区名称已存在"); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
return R.status(wqWrrinfBService.save(wqWrrinfB)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 修改 |
||||||
|
*/ |
||||||
|
|
||||||
|
@PostMapping("/update") |
||||||
|
@ApiOperationSupport(order = 5) |
||||||
|
@ApiOperation(value = "修改", notes = "传入wqWrrinfB") |
||||||
|
public R update(@RequestBody WqWrrinfB wqWrrinfB) { |
||||||
|
return R.status(wqWrrinfBService.updateById(wqWrrinfB)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 删除 |
||||||
|
*/ |
||||||
|
|
||||||
|
@PostMapping("/remove") |
||||||
|
@ApiOperationSupport(order = 6) |
||||||
|
@ApiOperation(value = "逻辑删除", notes = "ids") |
||||||
|
public R remove(@ApiParam(value = "主键集合") @RequestParam String ids) { |
||||||
|
boolean temp = wqWrrinfBService.deleteLogic(Func.toLongList(ids)); |
||||||
|
return R.status(temp); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,12 @@ |
|||||||
|
package com.hnac.hzims.waterquality.mapper; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||||
|
import com.hnac.hzims.waterquality.entity.WqConfigD; |
||||||
|
import org.apache.ibatis.annotations.Param; |
||||||
|
|
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
public interface WqConfigDMapper extends BaseMapper<WqConfigD> { |
||||||
|
int batchSave(@Param("list") List<WqConfigD> list); |
||||||
|
} |
@ -0,0 +1,10 @@ |
|||||||
|
<?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="com.hnac.hzims.waterquality.mapper.WqConfigDMapper"> |
||||||
|
<insert id="batchSave"> |
||||||
|
insert into wq_config_d(STCD,TYPE,VALUE) values |
||||||
|
<foreach collection="list" separator="," item="item"> |
||||||
|
(#{item.stcd},#{item.type},#{item.value}) |
||||||
|
</foreach> |
||||||
|
</insert> |
||||||
|
</mapper> |
@ -0,0 +1,8 @@ |
|||||||
|
package com.hnac.hzims.waterquality.mapper; |
||||||
|
|
||||||
|
import com.hnac.hzims.waterquality.entity.WqWfrinfB; |
||||||
|
import org.springblade.core.datascope.mapper.UserDataScopeBaseMapper; |
||||||
|
|
||||||
|
|
||||||
|
public interface WqWfrinfBMapper extends UserDataScopeBaseMapper<WqWfrinfB> { |
||||||
|
} |
@ -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="com.hnac.hzims.waterquality.mapper.WqWfrinfBMapper"> |
||||||
|
|
||||||
|
</mapper> |
@ -0,0 +1,30 @@ |
|||||||
|
/* |
||||||
|
* Copyright (c) 2018-2028, Chill Zhuang All rights reserved. |
||||||
|
* |
||||||
|
* Redistribution and use in source and binary forms, with or without |
||||||
|
* modification, are permitted provided that the following conditions are met: |
||||||
|
* |
||||||
|
* Redistributions of source code must retain the above copyright Example, |
||||||
|
* this list of conditions and the following disclaimer. |
||||||
|
* Redistributions in binary form must reproduce the above copyright |
||||||
|
* Example, this list of conditions and the following disclaimer in the |
||||||
|
* documentation and/or other materials provided with the distribution. |
||||||
|
* Neither the name of the dreamlu.net developer nor the names of its |
||||||
|
* contributors may be used to endorse or promote products derived from |
||||||
|
* this software without specific prior written permission. |
||||||
|
* Author: Chill 庄骞 (smallchill@163.com) |
||||||
|
*/ |
||||||
|
package com.hnac.hzims.waterquality.mapper; |
||||||
|
|
||||||
|
import com.hnac.hzims.waterquality.entity.WqWqsinfB; |
||||||
|
import org.springblade.core.datascope.mapper.UserDataScopeBaseMapper; |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* Mapper 接口 |
||||||
|
* |
||||||
|
* @author Chill |
||||||
|
*/ |
||||||
|
public interface WqWqsinfBMapper extends UserDataScopeBaseMapper<WqWqsinfB> { |
||||||
|
|
||||||
|
} |
@ -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="com.hnac.hzims.waterquality.mapper.WqWqsinfBMapper"> |
||||||
|
|
||||||
|
</mapper> |
@ -0,0 +1,8 @@ |
|||||||
|
package com.hnac.hzims.waterquality.mapper; |
||||||
|
|
||||||
|
import com.hnac.hzims.waterquality.entity.WqWrrinfB; |
||||||
|
import org.springblade.core.datascope.mapper.UserDataScopeBaseMapper; |
||||||
|
|
||||||
|
|
||||||
|
public interface WqWrrinfBMapper extends UserDataScopeBaseMapper<WqWrrinfB> { |
||||||
|
} |
@ -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="com.hnac.hzims.waterquality.mapper.WqWrrinfBMapper"> |
||||||
|
|
||||||
|
</mapper> |
@ -0,0 +1,21 @@ |
|||||||
|
package com.hnac.hzims.waterquality.service; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||||
|
import com.hnac.hzims.waterquality.entity.WqConfigD; |
||||||
|
|
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
public interface IWqConfigDService { |
||||||
|
IPage<WqConfigD> page(IPage<WqConfigD> page, LambdaQueryWrapper<WqConfigD> wrapper); |
||||||
|
|
||||||
|
List<WqConfigD> list(LambdaQueryWrapper<WqConfigD> wrapper); |
||||||
|
|
||||||
|
WqConfigD getOne(QueryWrapper<WqConfigD> wrapper); |
||||||
|
|
||||||
|
boolean batchSave(List<WqConfigD> list,LambdaQueryWrapper<WqConfigD> wrapper); |
||||||
|
|
||||||
|
boolean delete(LambdaQueryWrapper<WqConfigD> wrapper); |
||||||
|
} |
@ -0,0 +1,20 @@ |
|||||||
|
package com.hnac.hzims.waterquality.service; |
||||||
|
|
||||||
|
import com.hnac.hzims.entity.Report; |
||||||
|
import com.hnac.hzims.entity.ReportData; |
||||||
|
import com.hnac.hzinfo.datasearch.analyse.domain.FieldsData; |
||||||
|
import com.hnac.hzinfo.datasearch.analyse.vo.AnalyzeInstanceFieldVO; |
||||||
|
|
||||||
|
|
||||||
|
import java.util.Date; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
public interface IWqDealDataService { |
||||||
|
Report getReportData(String stcd, String type, Integer accessRules, Date start, Date end); |
||||||
|
Report getCompare(String stcd,String type,Integer accessRules,Date start,Date end,String col); |
||||||
|
Report getRingCompare(String stcd,Date start,Date end,int hour); |
||||||
|
List<ReportData> getDataByCol(String stcd, String type, Integer accessRules, Date start, Date end, String col); |
||||||
|
List<FieldsData> getRealData(String stcd); |
||||||
|
List<AnalyzeInstanceFieldVO> getSignages(String stcd); |
||||||
|
List<FieldsData> getHistoryData(String stcd, Date start, Date end); |
||||||
|
} |
@ -0,0 +1,9 @@ |
|||||||
|
package com.hnac.hzims.waterquality.service; |
||||||
|
|
||||||
|
import com.hnac.hzims.waterquality.entity.WqWfrinfB; |
||||||
|
import org.springblade.core.mp.base.BaseService; |
||||||
|
|
||||||
|
|
||||||
|
public interface IWqWfrinfBService extends BaseService<WqWfrinfB> { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,30 @@ |
|||||||
|
/* |
||||||
|
* Copyright (c) 2018-2028, Chill Zhuang All rights reserved. |
||||||
|
* |
||||||
|
* Redistribution and use in source and binary forms, with or without |
||||||
|
* modification, are permitted provided that the following conditions are met: |
||||||
|
* |
||||||
|
* Redistributions of source code must retain the above copyright Example, |
||||||
|
* this list of conditions and the following disclaimer. |
||||||
|
* Redistributions in binary form must reproduce the above copyright |
||||||
|
* Example, this list of conditions and the following disclaimer in the |
||||||
|
* documentation and/or other materials provided with the distribution. |
||||||
|
* Neither the name of the dreamlu.net developer nor the names of its |
||||||
|
* contributors may be used to endorse or promote products derived from |
||||||
|
* this software without specific prior written permission. |
||||||
|
* Author: Chill 庄骞 (smallchill@163.com) |
||||||
|
*/ |
||||||
|
package com.hnac.hzims.waterquality.service; |
||||||
|
|
||||||
|
import com.hnac.hzims.waterquality.entity.WqWqsinfB; |
||||||
|
import org.springblade.core.mp.base.BaseService; |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 服务类 |
||||||
|
* |
||||||
|
* @author Chill |
||||||
|
*/ |
||||||
|
public interface IWqWqsinfBService extends BaseService<WqWqsinfB> { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,8 @@ |
|||||||
|
package com.hnac.hzims.waterquality.service; |
||||||
|
|
||||||
|
import com.hnac.hzims.waterquality.entity.WqWrrinfB; |
||||||
|
import org.springblade.core.mp.base.BaseService; |
||||||
|
|
||||||
|
|
||||||
|
public interface IWqWrrinfBService extends BaseService<WqWrrinfB> { |
||||||
|
} |
@ -0,0 +1,48 @@ |
|||||||
|
package com.hnac.hzims.waterquality.service.impl; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||||
|
|
||||||
|
import com.hnac.hzims.waterquality.entity.WqConfigD; |
||||||
|
import com.hnac.hzims.waterquality.mapper.WqConfigDMapper; |
||||||
|
import com.hnac.hzims.waterquality.service.IWqConfigDService; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
import javax.annotation.Resource; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
@Service |
||||||
|
public class WqConfigDServiceImpl implements IWqConfigDService { |
||||||
|
@Resource |
||||||
|
WqConfigDMapper wqConfigDMapper; |
||||||
|
|
||||||
|
@Override |
||||||
|
public IPage<WqConfigD> page(IPage<WqConfigD> page, LambdaQueryWrapper<WqConfigD> wrapper) { |
||||||
|
return wqConfigDMapper.selectPage(page,wrapper); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public List<WqConfigD> list(LambdaQueryWrapper<WqConfigD> wrapper) { |
||||||
|
return wqConfigDMapper.selectList(wrapper); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public WqConfigD getOne(QueryWrapper<WqConfigD> wrapper) { |
||||||
|
return wqConfigDMapper.selectOne(wrapper); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean batchSave(List<WqConfigD> list,LambdaQueryWrapper<WqConfigD> wrapper) { |
||||||
|
delete(wrapper); |
||||||
|
wqConfigDMapper.batchSave(list); |
||||||
|
|
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean delete(LambdaQueryWrapper<WqConfigD> wrapper) { |
||||||
|
int count=wqConfigDMapper.delete(wrapper); |
||||||
|
return count>0; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,397 @@ |
|||||||
|
package com.hnac.hzims.waterquality.service.impl; |
||||||
|
|
||||||
|
import com.hnac.hzims.entity.Report; |
||||||
|
import com.hnac.hzims.entity.ReportData; |
||||||
|
import com.hnac.hzims.enums.QueryDateTypeEnum; |
||||||
|
import com.hnac.hzims.util.CommonUtil; |
||||||
|
import com.hnac.hzims.waterquality.service.IWqDealDataService; |
||||||
|
import com.hnac.hzinfo.datasearch.analyse.domain.FieldsData; |
||||||
|
import com.hnac.hzinfo.datasearch.analyse.po.AnalyseCodeByAnalyseDataPO; |
||||||
|
import com.hnac.hzinfo.datasearch.analyse.po.AnalyzeDataConditionPO; |
||||||
|
import com.hnac.hzinfo.datasearch.analyse.vo.AnalyseDataTaosVO; |
||||||
|
import com.hnac.hzinfo.datasearch.analyse.vo.AnalyzeDataConditionVO; |
||||||
|
import com.hnac.hzinfo.datasearch.analyse.vo.AnalyzeInstanceFieldVO; |
||||||
|
import com.hnac.hzinfo.datasearch.real.po.RealDataSearchPO; |
||||||
|
import com.hnac.hzinfo.sdk.analyse.AnalyseDataSearchClient; |
||||||
|
import com.hnac.hzinfo.sdk.core.response.Result; |
||||||
|
import com.hnac.hzinfo.sdk.real.RealDataSearchClient; |
||||||
|
import org.springblade.core.tool.utils.StringUtil; |
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
import java.time.LocalDateTime; |
||||||
|
import java.time.ZoneId; |
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.Calendar; |
||||||
|
import java.util.Date; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
@Service |
||||||
|
public class WqDealDataServiceImpl implements IWqDealDataService { |
||||||
|
|
||||||
|
@Autowired |
||||||
|
AnalyseDataSearchClient analyseDataSearchClient; |
||||||
|
|
||||||
|
@Autowired |
||||||
|
RealDataSearchClient realDataSearchClient; |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public List<FieldsData> getRealData(String stcd){ |
||||||
|
RealDataSearchPO po=new RealDataSearchPO(); |
||||||
|
po.setAnalyzeCode(stcd); |
||||||
|
List<AnalyzeInstanceFieldVO> list=getSignages(stcd); |
||||||
|
if(list==null || list.isEmpty()){ |
||||||
|
return null; |
||||||
|
} |
||||||
|
List<String> signages=new ArrayList<>(); |
||||||
|
for(AnalyzeInstanceFieldVO vo:list){ |
||||||
|
signages.add(vo.getSignage()); |
||||||
|
} |
||||||
|
po.setSignages(signages); |
||||||
|
Result<List<FieldsData>> result=realDataSearchClient.getRealDataByDeviceCode(po); |
||||||
|
if(result==null || !result.isSuccess()){ |
||||||
|
return null; |
||||||
|
} |
||||||
|
return result.getData(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public List<AnalyzeInstanceFieldVO> getSignages(String stcd){ |
||||||
|
//查询列
|
||||||
|
Result<List<AnalyzeInstanceFieldVO>> result=analyseDataSearchClient.getInstanceFieldByAnalyseCode(stcd,1,""); |
||||||
|
if(result==null || !result.isSuccess()){ |
||||||
|
return null; |
||||||
|
} |
||||||
|
List<AnalyzeInstanceFieldVO> analyzeInstanceFieldVOS=result.getData(); |
||||||
|
|
||||||
|
return analyzeInstanceFieldVOS; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public List<FieldsData> getHistoryData(String stcd, Date start, Date end) { |
||||||
|
List<FieldsData> result=new ArrayList<>(); |
||||||
|
List<AnalyzeInstanceFieldVO> signages=getSignages(stcd); |
||||||
|
if(signages==null || signages.isEmpty()){ |
||||||
|
return null; |
||||||
|
} |
||||||
|
List<ReportData> list=listDataReport(start, end, QueryDateTypeEnum.DAY,stcd,6,signages); |
||||||
|
if(list==null || list.isEmpty()){ |
||||||
|
return null; |
||||||
|
} |
||||||
|
for(ReportData data:list){ |
||||||
|
FieldsData dd=new FieldsData(); |
||||||
|
if(StringUtil.isNotBlank(data.getName())) { |
||||||
|
dd.setFieldName(data.getName()); |
||||||
|
}else{ |
||||||
|
dd.setFieldName(getNameBySignage(data.getStcd(),signages)); |
||||||
|
} |
||||||
|
dd.setSignage(data.getStcd());//测站 换成 属性
|
||||||
|
dd.setValue(data.getVal()); |
||||||
|
dd.setTime(data.getKeyStr()); |
||||||
|
dd.setQ(0); |
||||||
|
result.add(dd); |
||||||
|
} |
||||||
|
return result; |
||||||
|
} |
||||||
|
|
||||||
|
String getNameBySignage(String signage,List<AnalyzeInstanceFieldVO> signages){ |
||||||
|
for(AnalyzeInstanceFieldVO vo:signages){ |
||||||
|
if(vo.getSignage().equals(signage)){ |
||||||
|
return vo.getFieldName(); |
||||||
|
} |
||||||
|
} |
||||||
|
return ""; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Report getReportData(String stcd, String type, Integer accessRules, Date start, Date end){ |
||||||
|
//检查数据是否正常并转化
|
||||||
|
final QueryDateTypeEnum dtEnum = CommonUtil.checkType(type); |
||||||
|
if(stcd==null || "".equals(stcd)){ |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
if(dtEnum ==null){ |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
//设置基础数据
|
||||||
|
List<AnalyzeInstanceFieldVO> signages=getSignages(stcd); |
||||||
|
if(signages==null || signages.isEmpty()){ |
||||||
|
return null; |
||||||
|
} |
||||||
|
//初始化报表
|
||||||
|
Report report = new Report(); |
||||||
|
report.initBaseReport(signages.size(), start, end, dtEnum); |
||||||
|
|
||||||
|
//获取数据库某个站点不同时间要求的数据
|
||||||
|
List<ReportData> timeDataList = listDataReport(start, end,dtEnum,stcd,accessRules,signages); |
||||||
|
if(timeDataList==null || timeDataList.isEmpty()){ |
||||||
|
return null; |
||||||
|
} |
||||||
|
for(int i=0;i<signages.size();i++) { |
||||||
|
String signage=signages.get(i).getSignage(); |
||||||
|
List<ReportData> tmpList=CommonUtil.getReportDataBySignage(timeDataList,signage); |
||||||
|
for (ReportData reportData : tmpList) { |
||||||
|
String value = reportData.getVal(); |
||||||
|
// if (value != null && !"-".equals(value) && !"".equals(value.trim())) {
|
||||||
|
// value = new BigDecimal(value).setScale(3, BigDecimal.ROUND_DOWN).toString();
|
||||||
|
// }
|
||||||
|
|
||||||
|
if(value == null){ |
||||||
|
value = "-"; |
||||||
|
} |
||||||
|
|
||||||
|
report.setBaseCell(reportData.getKeyStr(), i, value); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return report; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Report getCompare(String stcd, String type, Integer accessRules, Date start, Date end, String col) { |
||||||
|
//检查数据是否正常并转化
|
||||||
|
final QueryDateTypeEnum dtEnum = CommonUtil.checkType(type); |
||||||
|
if(stcd==null || "".equals(stcd)){ |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
if(dtEnum ==null){ |
||||||
|
return null; |
||||||
|
} |
||||||
|
//初始化报表
|
||||||
|
Report report = new Report(); |
||||||
|
report.initCompareBaseReport(2, start, end, dtEnum); |
||||||
|
|
||||||
|
for(int i=0;i<2;i++){ |
||||||
|
//当前日期范围
|
||||||
|
List<ReportData> list=listDataReportByCol(subYear(start,i),subYear(end,i),dtEnum,stcd,accessRules,col,true); |
||||||
|
if(list==null || list.isEmpty()){ |
||||||
|
continue; |
||||||
|
} |
||||||
|
for (ReportData reportData : list) { |
||||||
|
String value = reportData.getVal(); |
||||||
|
// if (value != null && !"-".equals(value) && !"".equals(value.trim())) {
|
||||||
|
// value = new BigDecimal(value).setScale(3, BigDecimal.ROUND_DOWN).toString();
|
||||||
|
// }
|
||||||
|
|
||||||
|
if(value == null){ |
||||||
|
value = "-"; |
||||||
|
} |
||||||
|
|
||||||
|
report.setBaseCell(reportData.getKeyStr(), i, value); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return report; |
||||||
|
} |
||||||
|
|
||||||
|
private Date subYear(Date date,int year){ |
||||||
|
Calendar calendar= Calendar.getInstance(); |
||||||
|
calendar.setTime(date); |
||||||
|
calendar.add(Calendar.YEAR,-year); |
||||||
|
return calendar.getTime(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Report getRingCompare(String stcd, Date start, Date end,int hour) { |
||||||
|
//检查数据是否正常并转化
|
||||||
|
final QueryDateTypeEnum dtEnum = QueryDateTypeEnum.DAY; |
||||||
|
//设置基础数据
|
||||||
|
List<AnalyzeInstanceFieldVO> signages=getSignages(stcd); |
||||||
|
if(signages==null || signages.isEmpty()){ |
||||||
|
return null; |
||||||
|
} |
||||||
|
//初始化报表
|
||||||
|
Report report = new Report(); |
||||||
|
report.initBaseRingReport(signages.size(), start, end, dtEnum); |
||||||
|
|
||||||
|
List<ReportData> reportDataList=listDataReport(start,end,QueryDateTypeEnum.HOUR,stcd,0,signages); |
||||||
|
if(reportDataList==null || reportDataList.isEmpty()){ |
||||||
|
return null; |
||||||
|
} |
||||||
|
String hourStr=hour>9? ""+hour : "0"+hour; |
||||||
|
String keyStr=" "+hourStr; |
||||||
|
|
||||||
|
for(int i=0;i<signages.size();i++) { |
||||||
|
String signage=signages.get(i).getSignage(); |
||||||
|
List<ReportData> tmpList=CommonUtil.getReportDataBySignage(reportDataList,signage); |
||||||
|
for (int j=0;j<tmpList.size();j++) { |
||||||
|
ReportData reportData=tmpList.get(j); |
||||||
|
|
||||||
|
if(reportData.getKeyStr().indexOf(keyStr)>-1) { |
||||||
|
String value = reportData.getVal(); |
||||||
|
// if (value != null && !"-".equals(value) && !"".equals(value.trim())) {
|
||||||
|
// value = new BigDecimal(value).setScale(3, BigDecimal.ROUND_DOWN).toString();
|
||||||
|
// }
|
||||||
|
|
||||||
|
if (value == null) { |
||||||
|
value = "-"; |
||||||
|
} |
||||||
|
|
||||||
|
report.setBaseCell(reportData.getKeyStr(), i, value); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return report; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public List<ReportData> getDataByCol(String stcd, String type, Integer accessRules, Date start, Date end, String col) { |
||||||
|
//检查数据是否正常并转化
|
||||||
|
final QueryDateTypeEnum dtEnum = CommonUtil.checkType(type); |
||||||
|
if(stcd==null || "".equals(stcd)){ |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
if(dtEnum ==null){ |
||||||
|
return null; |
||||||
|
} |
||||||
|
//获取数据库某个站点不同时间要求的数据
|
||||||
|
List<ReportData> timeDataList =listDataReportByCol(start, end,dtEnum,stcd,accessRules,col,false); |
||||||
|
if(timeDataList==null || timeDataList.isEmpty()){ |
||||||
|
return null; |
||||||
|
} |
||||||
|
return timeDataList; |
||||||
|
} |
||||||
|
|
||||||
|
private List<ReportData> listDataReport(Date begin,Date endSt, QueryDateTypeEnum dtEnum, String deviceCode, Integer accessRules, List<AnalyzeInstanceFieldVO> signages) { |
||||||
|
//周期类型: 0-> s(秒) 1->、m(分)、2->h(小时)3->、d(天)4->、w(周)5->、n(自然月)、6->y(自然年)
|
||||||
|
Integer saveTimeType=2; |
||||||
|
if(QueryDateTypeEnum.DAY.equals(dtEnum)){ |
||||||
|
saveTimeType = 3; |
||||||
|
} |
||||||
|
if(QueryDateTypeEnum.MONTH.equals(dtEnum)){ |
||||||
|
saveTimeType = 5; |
||||||
|
} |
||||||
|
if(QueryDateTypeEnum.YEAR.equals(dtEnum)){ |
||||||
|
saveTimeType = 6; |
||||||
|
} |
||||||
|
|
||||||
|
LocalDateTime start = LocalDateTime.ofInstant(begin.toInstant(), ZoneId.systemDefault()); |
||||||
|
LocalDateTime end = LocalDateTime.ofInstant(endSt.toInstant(), ZoneId.systemDefault()); |
||||||
|
|
||||||
|
return getDataByDeviceCode(deviceCode,accessRules,saveTimeType,start,end,signages); |
||||||
|
} |
||||||
|
|
||||||
|
private List<ReportData> listDataReportByCol(Date begin,Date endSt, QueryDateTypeEnum dtEnum, String deviceCode, |
||||||
|
Integer accessRules, String col,boolean isCompare) { |
||||||
|
//周期类型: 0-> s(秒) 1->、m(分)、2->h(小时)3->、d(天)4->、w(周)5->、n(自然月)、6->y(自然年)
|
||||||
|
Integer saveTimeType=2; |
||||||
|
if(QueryDateTypeEnum.DAY.equals(dtEnum)){ |
||||||
|
saveTimeType = 3; |
||||||
|
} |
||||||
|
if(QueryDateTypeEnum.MONTH.equals(dtEnum)){ |
||||||
|
saveTimeType = 5; |
||||||
|
} |
||||||
|
if(QueryDateTypeEnum.YEAR.equals(dtEnum)){ |
||||||
|
saveTimeType = 6; |
||||||
|
} |
||||||
|
|
||||||
|
LocalDateTime start = LocalDateTime.ofInstant(begin.toInstant(), ZoneId.systemDefault()); |
||||||
|
LocalDateTime end = LocalDateTime.ofInstant(endSt.toInstant(), ZoneId.systemDefault()); |
||||||
|
|
||||||
|
return getDataByDeviceCodeByCol(deviceCode,accessRules,saveTimeType,start,end,col,isCompare); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
List<ReportData> getDataByDeviceCodeByCol(String deviceCode,Integer accessRules,Integer saveTimeType, |
||||||
|
LocalDateTime start,LocalDateTime end,String col,boolean isCompare){ |
||||||
|
List<ReportData> reportData=new ArrayList<>(); |
||||||
|
AnalyseCodeByAnalyseDataPO po=new AnalyseCodeByAnalyseDataPO(); |
||||||
|
po.setDeviceCode(deviceCode); |
||||||
|
|
||||||
|
List<AnalyzeDataConditionPO> signboardConditions=new ArrayList<>(); |
||||||
|
|
||||||
|
AnalyzeDataConditionPO conditionPO = new AnalyzeDataConditionPO(); |
||||||
|
conditionPO.setBeginTime(start); |
||||||
|
conditionPO.setEndTime(end); |
||||||
|
conditionPO.setSignages(col); |
||||||
|
// conditionPO.setKeepFigures(3);
|
||||||
|
conditionPO.setAccessRules(accessRules); |
||||||
|
conditionPO.setSaveTimeType(saveTimeType); |
||||||
|
conditionPO.setTimeInterval(1); |
||||||
|
conditionPO.setFull(1); |
||||||
|
signboardConditions.add(conditionPO); |
||||||
|
|
||||||
|
|
||||||
|
po.setSignboardConditions(signboardConditions); |
||||||
|
|
||||||
|
Result<List<AnalyzeDataConditionVO>> result=analyseDataSearchClient.getAnalyzeDataByAnalyzeCodeAndSignages(po); |
||||||
|
if(result==null || !result.isSuccess()){ |
||||||
|
return reportData; |
||||||
|
} |
||||||
|
List<AnalyzeDataConditionVO> datas=result.getData(); |
||||||
|
if(datas==null || datas.isEmpty()){ |
||||||
|
return reportData; |
||||||
|
} |
||||||
|
for(AnalyzeDataConditionVO vo:datas){ |
||||||
|
List<AnalyseDataTaosVO> dataTaosVOs=vo.getList(); |
||||||
|
for(AnalyseDataTaosVO vv:dataTaosVOs) { |
||||||
|
ReportData data=new ReportData(); |
||||||
|
if(isCompare) { |
||||||
|
data.setKeyStr(CommonUtil.getKey(vv.getTs())); |
||||||
|
}else{ |
||||||
|
data.setKeyStr(CommonUtil.getKeyBySaveTimeType(vv.getTs(),saveTimeType)); |
||||||
|
} |
||||||
|
data.setStcd(deviceCode);//测站
|
||||||
|
data.setVal(vv.getVal()); |
||||||
|
data.setName(vo.getName()); |
||||||
|
reportData.add(data); |
||||||
|
} |
||||||
|
} |
||||||
|
return reportData; |
||||||
|
} |
||||||
|
|
||||||
|
List<ReportData> getDataByDeviceCode(String deviceCode,Integer accessRules,Integer saveTimeType, |
||||||
|
LocalDateTime start,LocalDateTime end,List<AnalyzeInstanceFieldVO> signages){ |
||||||
|
List<ReportData> reportData=new ArrayList<>(); |
||||||
|
AnalyseCodeByAnalyseDataPO po=new AnalyseCodeByAnalyseDataPO(); |
||||||
|
po.setDeviceCode(deviceCode); |
||||||
|
|
||||||
|
List<AnalyzeDataConditionPO> signboardConditions=new ArrayList<>(); |
||||||
|
|
||||||
|
for(AnalyzeInstanceFieldVO vo:signages) { |
||||||
|
AnalyzeDataConditionPO conditionPO = new AnalyzeDataConditionPO(); |
||||||
|
conditionPO.setBeginTime(start); |
||||||
|
conditionPO.setEndTime(end); |
||||||
|
conditionPO.setSignages(vo.getSignage()); |
||||||
|
// conditionPO.setKeepFigures(3);
|
||||||
|
conditionPO.setAccessRules(accessRules); |
||||||
|
conditionPO.setSaveTimeType(saveTimeType); |
||||||
|
conditionPO.setTimeInterval(1); |
||||||
|
conditionPO.setFull(1); |
||||||
|
signboardConditions.add(conditionPO); |
||||||
|
} |
||||||
|
|
||||||
|
po.setSignboardConditions(signboardConditions); |
||||||
|
|
||||||
|
Result<List<AnalyzeDataConditionVO>> result=analyseDataSearchClient.getAnalyzeDataByAnalyzeCodeAndSignages(po); |
||||||
|
|
||||||
|
if(result==null || !result.isSuccess()){ |
||||||
|
return reportData; |
||||||
|
} |
||||||
|
List<AnalyzeDataConditionVO> datas=result.getData(); |
||||||
|
if(datas==null || datas.isEmpty()){ |
||||||
|
return reportData; |
||||||
|
} |
||||||
|
|
||||||
|
for(AnalyzeDataConditionVO vo:datas){ |
||||||
|
List<AnalyseDataTaosVO> dataTaosVOs=vo.getList(); |
||||||
|
for(AnalyseDataTaosVO vv:dataTaosVOs) { |
||||||
|
ReportData data=new ReportData(); |
||||||
|
data.setKeyStr(CommonUtil.getKeyBySaveTimeType(vv.getTs(),saveTimeType)); |
||||||
|
data.setStcd(vo.getSignage());//测站变成属性值
|
||||||
|
data.setVal(vv.getVal()); |
||||||
|
data.setName(vo.getName()); |
||||||
|
reportData.add(data); |
||||||
|
} |
||||||
|
} |
||||||
|
return reportData; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,13 @@ |
|||||||
|
package com.hnac.hzims.waterquality.service.impl; |
||||||
|
|
||||||
|
import com.hnac.hzims.waterquality.entity.WqWfrinfB; |
||||||
|
import com.hnac.hzims.waterquality.mapper.WqWfrinfBMapper; |
||||||
|
import com.hnac.hzims.waterquality.service.IWqWfrinfBService; |
||||||
|
import org.springblade.core.mp.base.BaseServiceImpl; |
||||||
|
|
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
@Service |
||||||
|
public class WqWfrinfBServiceImpl extends BaseServiceImpl<WqWfrinfBMapper, WqWfrinfB> implements IWqWfrinfBService { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,34 @@ |
|||||||
|
/* |
||||||
|
* Copyright (c) 2018-2028, Chill Zhuang All rights reserved. |
||||||
|
* |
||||||
|
* Redistribution and use in source and binary forms, with or without |
||||||
|
* modification, are permitted provided that the following conditions are met: |
||||||
|
* |
||||||
|
* Redistributions of source code must retain the above copyright Example, |
||||||
|
* this list of conditions and the following disclaimer. |
||||||
|
* Redistributions in binary form must reproduce the above copyright |
||||||
|
* Example, this list of conditions and the following disclaimer in the |
||||||
|
* documentation and/or other materials provided with the distribution. |
||||||
|
* Neither the name of the dreamlu.net developer nor the names of its |
||||||
|
* contributors may be used to endorse or promote products derived from |
||||||
|
* this software without specific prior written permission. |
||||||
|
* Author: Chill 庄骞 (smallchill@163.com) |
||||||
|
*/ |
||||||
|
package com.hnac.hzims.waterquality.service.impl; |
||||||
|
|
||||||
|
import com.hnac.hzims.waterquality.entity.WqWqsinfB; |
||||||
|
import com.hnac.hzims.waterquality.mapper.WqWqsinfBMapper; |
||||||
|
import com.hnac.hzims.waterquality.service.IWqWqsinfBService; |
||||||
|
import org.springblade.core.mp.base.BaseServiceImpl; |
||||||
|
|
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
/** |
||||||
|
* 服务实现类 |
||||||
|
* |
||||||
|
* @author Chill |
||||||
|
*/ |
||||||
|
@Service |
||||||
|
public class WqWqsinfBServiceServiceImpl extends BaseServiceImpl<WqWqsinfBMapper, WqWqsinfB> implements IWqWqsinfBService { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,13 @@ |
|||||||
|
package com.hnac.hzims.waterquality.service.impl; |
||||||
|
|
||||||
|
import com.hnac.hzims.waterquality.entity.WqWrrinfB; |
||||||
|
import com.hnac.hzims.waterquality.mapper.WqWrrinfBMapper; |
||||||
|
import com.hnac.hzims.waterquality.service.IWqWrrinfBService; |
||||||
|
import org.springblade.core.mp.base.BaseServiceImpl; |
||||||
|
|
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
@Service |
||||||
|
public class WqWrrinfBServiceImpl extends BaseServiceImpl<WqWrrinfBMapper, WqWrrinfB> implements IWqWrrinfBService { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,54 @@ |
|||||||
|
package com.hnac.hzims.waterquality.util; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||||
|
import com.hnac.hzims.waterquality.entity.WqConfigD; |
||||||
|
import com.hnac.hzims.waterquality.entity.WqWfrinfB; |
||||||
|
import com.hnac.hzims.waterquality.entity.WqWqsinfB; |
||||||
|
import com.hnac.hzims.waterquality.entity.WqWrrinfB; |
||||||
|
|
||||||
|
|
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
public class ParamUtil { |
||||||
|
public static LambdaQueryWrapper<WqWqsinfB> conditionWqWqsinfB(Map<String, Object> param){ |
||||||
|
LambdaQueryWrapper<WqWqsinfB> wrapper=new LambdaQueryWrapper(); |
||||||
|
if(param.get("stcd")!=null) { |
||||||
|
wrapper.like(WqWqsinfB::getStcd,param.get("stcd")); |
||||||
|
} |
||||||
|
if(param.get("stnm")!=null) { |
||||||
|
wrapper.like(WqWqsinfB::getStnm,param.get("stnm")); |
||||||
|
} |
||||||
|
return wrapper; |
||||||
|
} |
||||||
|
|
||||||
|
public static LambdaQueryWrapper<WqConfigD> conditionWqConfigD(Map<String, Object> param){ |
||||||
|
LambdaQueryWrapper<WqConfigD> wrapper=new LambdaQueryWrapper(); |
||||||
|
if(param.get("stcd")!=null) { |
||||||
|
wrapper.like(WqConfigD::getStcd,param.get("stcd")); |
||||||
|
} |
||||||
|
return wrapper; |
||||||
|
} |
||||||
|
|
||||||
|
public static LambdaQueryWrapper<WqWfrinfB> conditionWqWfrinfB(Map<String, Object> param){ |
||||||
|
LambdaQueryWrapper<WqWfrinfB> wrapper=new LambdaQueryWrapper(); |
||||||
|
if(param.get("wfrcd")!=null) { |
||||||
|
wrapper.like(WqWfrinfB::getWfrcd,param.get("wfrcd")); |
||||||
|
} |
||||||
|
if(param.get("wfrnm")!=null) { |
||||||
|
wrapper.like(WqWfrinfB::getWfrnm,param.get("wfrnm")); |
||||||
|
} |
||||||
|
return wrapper; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public static LambdaQueryWrapper<WqWrrinfB> conditionWqWrrinfB(Map<String, Object> param){ |
||||||
|
LambdaQueryWrapper<WqWrrinfB> wrapper=new LambdaQueryWrapper(); |
||||||
|
if(param.get("wrrcd")!=null) { |
||||||
|
wrapper.like(WqWrrinfB::getWrrcd,param.get("wrrcd")); |
||||||
|
} |
||||||
|
if(param.get("wrrnm")!=null) { |
||||||
|
wrapper.like(WqWrrinfB::getWrrnm,param.get("wrrnm")); |
||||||
|
} |
||||||
|
return wrapper; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,26 @@ |
|||||||
|
package com.hnac.hzims.waterquality.wrapper; |
||||||
|
|
||||||
|
import com.hnac.hzims.waterquality.entity.WqWqsinfB; |
||||||
|
import com.hnac.hzims.waterquality.vo.WqWqsinfBVo; |
||||||
|
import org.springblade.core.mp.support.BaseEntityWrapper; |
||||||
|
import org.springblade.core.tool.utils.BeanUtil; |
||||||
|
|
||||||
|
|
||||||
|
import java.util.Objects; |
||||||
|
|
||||||
|
public class WqWqsinfBWrapper extends BaseEntityWrapper<WqWqsinfB, WqWqsinfBVo> { |
||||||
|
public WqWqsinfBWrapper() { |
||||||
|
} |
||||||
|
|
||||||
|
public static WqWqsinfBWrapper build() { |
||||||
|
return new WqWqsinfBWrapper(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public WqWqsinfBVo entityVO(WqWqsinfB entity) { |
||||||
|
WqWqsinfBVo wqWqsinfBVo = Objects.requireNonNull(BeanUtil.copy(entity, WqWqsinfBVo.class)); |
||||||
|
|
||||||
|
return wqWqsinfBVo; |
||||||
|
} |
||||||
|
} |
||||||
|
|
@ -0,0 +1,30 @@ |
|||||||
|
#服务器端口 |
||||||
|
server: |
||||||
|
port: 8200 |
||||||
|
|
||||||
|
#数据源配置 |
||||||
|
#spring: |
||||||
|
# datasource: |
||||||
|
# url: ${blade.datasource.dev.url} |
||||||
|
# username: ${blade.datasource.dev.username} |
||||||
|
# password: ${blade.datasource.dev.password} |
||||||
|
|
||||||
|
spring: |
||||||
|
#排除DruidDataSourceAutoConfigure |
||||||
|
autoconfigure: |
||||||
|
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure |
||||||
|
datasource: |
||||||
|
dynamic: |
||||||
|
#设置默认的数据源或者数据源组,默认值即为master |
||||||
|
primary: master |
||||||
|
datasource: |
||||||
|
master: |
||||||
|
url: jdbc:mysql://127.0.0.1:3306/equipment?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&tinyInt1isBit=false&allowMultiQueries=true&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true |
||||||
|
username: root |
||||||
|
password: 123456 |
||||||
|
slave: |
||||||
|
url: jdbc:mysql://127.0.0.1:3306/equipment?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&tinyInt1isBit=false&allowMultiQueries=true&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true |
||||||
|
username: root |
||||||
|
password: 123456 |
||||||
|
demo: |
||||||
|
name: aaa |
@ -0,0 +1,28 @@ |
|||||||
|
#服务器端口 |
||||||
|
server: |
||||||
|
port: 8200 |
||||||
|
|
||||||
|
#数据源配置 |
||||||
|
#spring: |
||||||
|
# datasource: |
||||||
|
# url: ${blade.datasource.prod.url} |
||||||
|
# username: ${blade.datasource.prod.username} |
||||||
|
# password: ${blade.datasource.prod.password} |
||||||
|
|
||||||
|
spring: |
||||||
|
#排除DruidDataSourceAutoConfigure |
||||||
|
autoconfigure: |
||||||
|
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure |
||||||
|
datasource: |
||||||
|
dynamic: |
||||||
|
#设置默认的数据源或者数据源组,默认值即为master |
||||||
|
primary: master |
||||||
|
datasource: |
||||||
|
master: |
||||||
|
url: ${blade.datasource.demo.master.url} |
||||||
|
username: ${blade.datasource.demo.master.username} |
||||||
|
password: ${blade.datasource.demo.master.password} |
||||||
|
slave: |
||||||
|
url: ${blade.datasource.demo.slave.url} |
||||||
|
username: ${blade.datasource.demo.slave.username} |
||||||
|
password: ${blade.datasource.demo.slave.password} |
@ -0,0 +1,28 @@ |
|||||||
|
#服务器端口 |
||||||
|
server: |
||||||
|
port: 8200 |
||||||
|
|
||||||
|
#数据源配置 |
||||||
|
#spring: |
||||||
|
# datasource: |
||||||
|
# url: ${blade.datasource.test.url} |
||||||
|
# username: ${blade.datasource.test.username} |
||||||
|
# password: ${blade.datasource.test.password} |
||||||
|
|
||||||
|
spring: |
||||||
|
#排除DruidDataSourceAutoConfigure |
||||||
|
autoconfigure: |
||||||
|
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure |
||||||
|
datasource: |
||||||
|
dynamic: |
||||||
|
#设置默认的数据源或者数据源组,默认值即为master |
||||||
|
primary: master |
||||||
|
datasource: |
||||||
|
master: |
||||||
|
url: ${blade.datasource.demo.master.url} |
||||||
|
username: ${blade.datasource.demo.master.username} |
||||||
|
password: ${blade.datasource.demo.master.password} |
||||||
|
slave: |
||||||
|
url: ${blade.datasource.demo.slave.url} |
||||||
|
username: ${blade.datasource.demo.slave.username} |
||||||
|
password: ${blade.datasource.demo.slave.password} |
@ -0,0 +1,13 @@ |
|||||||
|
#mybatis-plus配置 |
||||||
|
mybatis-plus: |
||||||
|
mapper-locations: classpath:com/hnac/hzims/**/mapper/*Mapper.xml |
||||||
|
#实体扫描,多个package用逗号或者分号分隔 |
||||||
|
typeAliasesPackage: com.hnac.hzims.**.entity |
||||||
|
|
||||||
|
#swagger扫描路径配置 |
||||||
|
swagger: |
||||||
|
base-packages: |
||||||
|
- org.springbalde |
||||||
|
- com.hnac |
||||||
|
|
||||||
|
|
@ -0,0 +1,77 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" |
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
||||||
|
<modelVersion>4.0.0</modelVersion> |
||||||
|
<parent> |
||||||
|
<groupId>com.hnac.hzims</groupId> |
||||||
|
<artifactId>hzims-service</artifactId> |
||||||
|
<version>4.0.0-SNAPSHOT</version> |
||||||
|
</parent> |
||||||
|
|
||||||
|
<artifactId>water-rain</artifactId> |
||||||
|
|
||||||
|
<properties> |
||||||
|
<maven.compiler.source>8</maven.compiler.source> |
||||||
|
<maven.compiler.target>8</maven.compiler.target> |
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> |
||||||
|
</properties> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<dependencies> |
||||||
|
<dependency> |
||||||
|
<groupId>org.springblade</groupId> |
||||||
|
<artifactId>blade-core-boot</artifactId> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>org.springblade</groupId> |
||||||
|
<artifactId>blade-starter-swagger</artifactId> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>org.springblade</groupId> |
||||||
|
<artifactId>blade-starter-oss-all</artifactId> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>com.baomidou</groupId> |
||||||
|
<artifactId>dynamic-datasource-spring-boot-starter</artifactId> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>org.springblade</groupId> |
||||||
|
<artifactId>blade-core-test</artifactId> |
||||||
|
<scope>test</scope> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>org.springblade</groupId> |
||||||
|
<artifactId>blade-core-auto</artifactId> |
||||||
|
<scope>compile</scope> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>com.hnac.hzims</groupId> |
||||||
|
<artifactId>water-rain-api</artifactId> |
||||||
|
<version>${hzims.project.version}</version> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>com.alibaba</groupId> |
||||||
|
<artifactId>easyexcel</artifactId> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>org.springblade</groupId> |
||||||
|
<artifactId>blade-core-boot</artifactId> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>org.springblade</groupId> |
||||||
|
<artifactId>blade-common</artifactId> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>com.hnac.hzinfo.data</groupId> |
||||||
|
<artifactId>hzinfo-data-sdk</artifactId> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>com.hnac.hzims</groupId> |
||||||
|
<artifactId>common-api</artifactId> |
||||||
|
</dependency> |
||||||
|
</dependencies> |
||||||
|
|
||||||
|
</project> |
@ -0,0 +1,29 @@ |
|||||||
|
package com.hnac.hzims.waterrain; |
||||||
|
|
||||||
|
import org.mybatis.spring.annotation.MapperScan; |
||||||
|
import org.springblade.core.cloud.feign.EnableBladeFeign; |
||||||
|
import org.springblade.core.launch.BladeApplication; |
||||||
|
import org.springframework.boot.builder.SpringApplicationBuilder; |
||||||
|
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; |
||||||
|
import org.springframework.cloud.client.SpringCloudApplication; |
||||||
|
import org.springframework.context.annotation.ComponentScan; |
||||||
|
import org.springframework.scheduling.annotation.EnableScheduling; |
||||||
|
|
||||||
|
//水雨情模块
|
||||||
|
@EnableBladeFeign(basePackages = {"org.springblade","com.hnac"}) |
||||||
|
@SpringCloudApplication |
||||||
|
@MapperScan("com.hnac.hzims.**.mapper.**") |
||||||
|
@EnableScheduling |
||||||
|
@ComponentScan(basePackages = {"com.hnac.hzims.*"}) |
||||||
|
public class WaterRainApplication extends SpringBootServletInitializer { |
||||||
|
public final static String APP_NAME = "water-rain"; |
||||||
|
|
||||||
|
public static void main(String[] args) { |
||||||
|
BladeApplication.run(APP_NAME, WaterRainApplication.class, args); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { |
||||||
|
return BladeApplication.createSpringApplicationBuilder(builder, APP_NAME, WaterRainApplication.class); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,51 @@ |
|||||||
|
package com.hnac.hzims.waterrain.controller; |
||||||
|
|
||||||
|
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; |
||||||
|
import io.swagger.annotations.Api; |
||||||
|
import io.swagger.annotations.ApiImplicitParam; |
||||||
|
import io.swagger.annotations.ApiImplicitParams; |
||||||
|
import io.swagger.annotations.ApiOperation; |
||||||
|
import lombok.AllArgsConstructor; |
||||||
|
import org.springblade.core.secure.utils.AuthUtil; |
||||||
|
import org.springblade.core.tool.api.R; |
||||||
|
import com.hnac.hzims.waterrain.entity.ReorganizeLog; |
||||||
|
import com.hnac.hzims.waterrain.service.IReorganizeLogService; |
||||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||||
|
import org.springframework.web.bind.annotation.GetMapping; |
||||||
|
import org.springframework.web.bind.annotation.RequestMapping; |
||||||
|
import org.springframework.web.bind.annotation.RestController; |
||||||
|
|
||||||
|
@RestController |
||||||
|
@RequestMapping("/waterRain/reorganizeLog") |
||||||
|
@AllArgsConstructor |
||||||
|
@Api(value = "整编日志", tags = "整编日志接口") |
||||||
|
public class ReorganizeLogController { |
||||||
|
|
||||||
|
@Autowired |
||||||
|
IReorganizeLogService reorganizeLogService; |
||||||
|
|
||||||
|
@GetMapping("/detail") |
||||||
|
@ApiImplicitParams({ |
||||||
|
@ApiImplicitParam(name = "stcd", value = "测站编码", paramType = "query", dataType = "string"), |
||||||
|
@ApiImplicitParam(name = "yearMonth", value = "年月", paramType = "query", dataType = "string") |
||||||
|
}) |
||||||
|
@ApiOperationSupport(order = 1) |
||||||
|
@ApiOperation(value = "详情", notes = "传入stcd+yearMonth") |
||||||
|
public R<ReorganizeLog> detail(String stcd,String yearMonth) { |
||||||
|
ReorganizeLog reorganizeLog = reorganizeLogService.queryReorganizeLog(stcd, yearMonth); |
||||||
|
return R.data(reorganizeLog); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@GetMapping("/check") |
||||||
|
@ApiImplicitParams({ |
||||||
|
@ApiImplicitParam(name = "stcd", value = "测站编码", paramType = "query", dataType = "string"), |
||||||
|
@ApiImplicitParam(name = "yearMonth", value = "年月", paramType = "query", dataType = "string") |
||||||
|
}) |
||||||
|
@ApiOperationSupport(order = 1) |
||||||
|
@ApiOperation(value = "校核", notes = "传入stcd+yearMonth") |
||||||
|
public R<Boolean> check(String stcd,String yearMonth) { |
||||||
|
boolean flag = reorganizeLogService.check(stcd, yearMonth, AuthUtil.getUserName()); |
||||||
|
return R.data(flag,"校核成功"); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,151 @@ |
|||||||
|
package com.hnac.hzims.waterrain.controller; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||||
|
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; |
||||||
|
import io.swagger.annotations.*; |
||||||
|
import lombok.AllArgsConstructor; |
||||||
|
import org.springblade.common.cache.CacheNames; |
||||||
|
import org.springblade.core.boot.ctrl.BladeController; |
||||||
|
import org.springblade.core.mp.support.Condition; |
||||||
|
import org.springblade.core.mp.support.Query; |
||||||
|
import org.springblade.core.tool.api.R; |
||||||
|
import org.springblade.core.tool.utils.Func; |
||||||
|
import com.hnac.hzims.waterrain.entity.StStbprpB; |
||||||
|
import com.hnac.hzims.waterrain.service.IStStbprpBService; |
||||||
|
import com.hnac.hzims.waterrain.util.GisUtil; |
||||||
|
import com.hnac.hzims.waterrain.util.ParamUtil; |
||||||
|
import com.hnac.hzims.waterrain.vo.StStbprpBVo; |
||||||
|
import com.hnac.hzims.waterrain.wrapper.StStbprpBWrapper; |
||||||
|
import org.springframework.web.bind.annotation.*; |
||||||
|
import springfox.documentation.annotations.ApiIgnore; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
@RestController |
||||||
|
@RequestMapping("/waterRain/stStbprpB") |
||||||
|
@AllArgsConstructor |
||||||
|
@Api(value = "水雨情测站信息表", tags = "水雨情测站信息表接口") |
||||||
|
public class StStbprpBController extends BladeController implements CacheNames { |
||||||
|
private final IStStbprpBService stStbprpBService; |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 分页 |
||||||
|
*/ |
||||||
|
|
||||||
|
@GetMapping("/pageList") |
||||||
|
@ApiImplicitParams({ |
||||||
|
@ApiImplicitParam(name = "stcd", value = "测站编码", paramType = "query", dataType = "string"), |
||||||
|
@ApiImplicitParam(name = "stnm", value = "测站名称", paramType = "query", dataType = "string"), |
||||||
|
@ApiImplicitParam(name = "rscd", value = "水库编码", paramType = "query", dataType = "string"), |
||||||
|
@ApiImplicitParam(name = "sttp", value = "站类", paramType = "query", dataType = "string") |
||||||
|
}) |
||||||
|
@ApiOperationSupport(order = 1) |
||||||
|
@ApiOperation(value = "分页", notes = "传入StStbprpB") |
||||||
|
public R<IPage<StStbprpBVo>> pageList(@ApiIgnore @RequestParam Map<String, Object> param, Query query) { |
||||||
|
LambdaQueryWrapper<StStbprpB> wrapper= ParamUtil.conditionStStbprpB(param); |
||||||
|
IPage<StStbprpB> pages = stStbprpBService.page(Condition.getPage(query), wrapper); |
||||||
|
return R.data(StStbprpBWrapper.build().pageVO(pages)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 列表 |
||||||
|
*/ |
||||||
|
|
||||||
|
@GetMapping("/list") |
||||||
|
@ApiImplicitParams({ |
||||||
|
@ApiImplicitParam(name = "stcd", value = "测站编码", paramType = "query", dataType = "string"), |
||||||
|
@ApiImplicitParam(name = "stnm", value = "测站名称", paramType = "query", dataType = "string"), |
||||||
|
@ApiImplicitParam(name = "rscd", value = "水库编码", paramType = "query", dataType = "string"), |
||||||
|
@ApiImplicitParam(name = "sttp", value = "站类", paramType = "query", dataType = "string") |
||||||
|
}) |
||||||
|
@ApiOperationSupport(order = 2) |
||||||
|
@ApiOperation(value = "列表", notes = "传入StStbprpB") |
||||||
|
public R<List<StStbprpBVo>> list(@ApiIgnore @RequestParam Map<String, Object> param) { |
||||||
|
LambdaQueryWrapper<StStbprpB> wrapper=ParamUtil.conditionStStbprpB(param); |
||||||
|
List<StStbprpB> list = stStbprpBService.list(wrapper); |
||||||
|
return R.data(StStbprpBWrapper.build().listVO(list)); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 详情 |
||||||
|
*/ |
||||||
|
|
||||||
|
@GetMapping("/detail") |
||||||
|
@ApiOperationSupport(order = 3) |
||||||
|
@ApiOperation(value = "详情", notes = "传入StStbprpB") |
||||||
|
public R<StStbprpBVo> detail(StStbprpB stStbprpB) { |
||||||
|
StStbprpB detail = stStbprpBService.getOne(Condition.getQueryWrapper(stStbprpB)); |
||||||
|
return R.data(StStbprpBWrapper.build().entityVO(detail)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 新增 |
||||||
|
*/ |
||||||
|
|
||||||
|
@PostMapping("/save") |
||||||
|
@ApiOperationSupport(order = 4) |
||||||
|
@ApiOperation(value = "新增", notes = "传入stStbprpB") |
||||||
|
public R save(@RequestBody StStbprpB stStbprpB) { |
||||||
|
LambdaQueryWrapper<StStbprpB> wrapper=new LambdaQueryWrapper(); |
||||||
|
wrapper.eq(StStbprpB::getIsDeleted,stStbprpB.getIsDeleted()); |
||||||
|
wrapper.eq(StStbprpB::getStcd,stStbprpB.getStcd()); |
||||||
|
List<StStbprpB> list = stStbprpBService.list(wrapper); |
||||||
|
if(list!=null && !list.isEmpty()){ |
||||||
|
return R.fail("测站编码已存在"); |
||||||
|
} |
||||||
|
wrapper=new LambdaQueryWrapper(); |
||||||
|
wrapper.eq(StStbprpB::getIsDeleted,stStbprpB.getIsDeleted()); |
||||||
|
wrapper.eq(StStbprpB::getStnm,stStbprpB.getStnm()); |
||||||
|
list = stStbprpBService.list(wrapper); |
||||||
|
if(list!=null && !list.isEmpty()){ |
||||||
|
return R.fail("测站名称已存在"); |
||||||
|
} |
||||||
|
//将经纬度转为度分秒
|
||||||
|
GisUtil.dealGisData(stStbprpB); |
||||||
|
return R.status(stStbprpBService.save(stStbprpB)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 修改 |
||||||
|
*/ |
||||||
|
|
||||||
|
@PostMapping("/update") |
||||||
|
@ApiOperationSupport(order = 5) |
||||||
|
@ApiOperation(value = "修改", notes = "传入StStbprpB") |
||||||
|
public R update(@RequestBody StStbprpB stStbprpB) { |
||||||
|
LambdaQueryWrapper<StStbprpB> wrapper=new LambdaQueryWrapper(); |
||||||
|
wrapper.eq(StStbprpB::getStcd,stStbprpB.getStcd()); |
||||||
|
wrapper.eq(StStbprpB::getIsDeleted,stStbprpB.getIsDeleted()); |
||||||
|
wrapper.ne(StStbprpB::getId,stStbprpB.getId()); |
||||||
|
List<StStbprpB> list = stStbprpBService.list(wrapper); |
||||||
|
if(list!=null && !list.isEmpty()){ |
||||||
|
return R.fail("测站编码已存在"); |
||||||
|
} |
||||||
|
wrapper=new LambdaQueryWrapper(); |
||||||
|
wrapper.eq(StStbprpB::getIsDeleted,stStbprpB.getIsDeleted()); |
||||||
|
wrapper.eq(StStbprpB::getStnm,stStbprpB.getStnm()); |
||||||
|
wrapper.ne(StStbprpB::getId,stStbprpB.getId()); |
||||||
|
list = stStbprpBService.list(wrapper); |
||||||
|
if(list!=null && !list.isEmpty()){ |
||||||
|
return R.fail("测站名称已存在"); |
||||||
|
} |
||||||
|
//将经纬度转为度分秒
|
||||||
|
GisUtil.dealGisData(stStbprpB); |
||||||
|
return R.status(stStbprpBService.updateById(stStbprpB)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 删除 |
||||||
|
*/ |
||||||
|
@PostMapping("/remove") |
||||||
|
@ApiOperationSupport(order = 6) |
||||||
|
@ApiOperation(value = "逻辑删除", notes = "ids") |
||||||
|
public R remove(@ApiParam(value = "主键集合") @RequestParam String ids) { |
||||||
|
boolean temp = stStbprpBService.deleteLogic(Func.toLongList(ids)); |
||||||
|
return R.status(temp); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,163 @@ |
|||||||
|
package com.hnac.hzims.waterrain.controller; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||||
|
import com.hnac.hzims.cache.CaffeineCacheUtil; |
||||||
|
import com.hnac.hzims.entity.Report; |
||||||
|
import com.hnac.hzims.entity.YearReport; |
||||||
|
import com.hnac.hzims.util.CommonUtil; |
||||||
|
import com.hnac.hzinfo.datasearch.analyse.domain.FieldsData; |
||||||
|
import com.hnac.hzinfo.datasearch.analyse.vo.AnalyzeInstanceFieldVO; |
||||||
|
import io.swagger.annotations.Api; |
||||||
|
import io.swagger.annotations.ApiOperation; |
||||||
|
import lombok.AllArgsConstructor; |
||||||
|
import org.apache.commons.lang3.StringUtils; |
||||||
|
import org.springblade.common.cache.CacheNames; |
||||||
|
import org.springblade.core.boot.ctrl.BladeController; |
||||||
|
import org.springblade.core.mp.support.Condition; |
||||||
|
import org.springblade.core.mp.support.Query; |
||||||
|
import org.springblade.core.secure.utils.AuthUtil; |
||||||
|
import org.springblade.core.tool.api.R; |
||||||
|
import com.hnac.hzims.waterrain.bo.StationResp; |
||||||
|
import com.hnac.hzims.waterrain.entity.StStbprpB; |
||||||
|
import com.hnac.hzims.waterrain.service.IStStbprpBDataService; |
||||||
|
import org.springframework.web.bind.annotation.RequestMapping; |
||||||
|
import org.springframework.web.bind.annotation.RequestMethod; |
||||||
|
import org.springframework.web.bind.annotation.RequestParam; |
||||||
|
import org.springframework.web.bind.annotation.RestController; |
||||||
|
|
||||||
|
import java.util.Arrays; |
||||||
|
import java.util.Date; |
||||||
|
import java.util.List; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
@RestController |
||||||
|
@RequestMapping("/waterRain/stStbprpBData") |
||||||
|
@AllArgsConstructor |
||||||
|
@Api(value = "水雨情测站数据", tags = "水雨情测站数据接口") |
||||||
|
public class StStbprpBDataController extends BladeController implements CacheNames { |
||||||
|
private final IStStbprpBDataService stStbprpBDataService; |
||||||
|
|
||||||
|
//获取实时数据
|
||||||
|
@ApiOperation("实时数据") |
||||||
|
@RequestMapping(value = "getRealData", method = RequestMethod.GET) |
||||||
|
public R getRealData(String stcd) { |
||||||
|
List<FieldsData> realData = stStbprpBDataService.getRealData(stcd); |
||||||
|
return R.data(realData,"查询成功"); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@ApiOperation("根据测站查询历史数据") |
||||||
|
@RequestMapping(value = "getDataByHour", method = RequestMethod.GET) |
||||||
|
public R getDataByHour(String stcd,String yearMonth) { |
||||||
|
List<Map<String,Object>> yearReport = stStbprpBDataService.getDataByHour(stcd,yearMonth); |
||||||
|
return R.data(yearReport,"查询成功"); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@ApiOperation("表头列") |
||||||
|
@RequestMapping(value = "/getTableHead", method = RequestMethod.GET) |
||||||
|
public R getTableHead(String stcd) { |
||||||
|
//查询基础数据
|
||||||
|
List<AnalyzeInstanceFieldVO> report = stStbprpBDataService.getSignages(stcd); |
||||||
|
return R.data(report,"查询成功"); |
||||||
|
} |
||||||
|
/** |
||||||
|
* 获取某站点年度统计报表 |
||||||
|
* |
||||||
|
* @param stcd 测站点 |
||||||
|
* @param year 统计年份 yyyy |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
@ApiOperation("年度统计报表") |
||||||
|
@RequestMapping(value = "getYearReport", method = RequestMethod.GET) |
||||||
|
public R getYearReport(String stcd, Integer year,String sttp,String col) { |
||||||
|
String key=stcd+"_"+year+"_"+col; |
||||||
|
YearReport report =CaffeineCacheUtil.getYear(key); |
||||||
|
if(report!=null){ |
||||||
|
return R.data(report,"查询缓存成功"); |
||||||
|
} |
||||||
|
YearReport yearReport = stStbprpBDataService.getYearReport(stcd, year,sttp, col); |
||||||
|
CaffeineCacheUtil.addYear(key,yearReport); |
||||||
|
return R.data(yearReport,"查询成功"); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@ApiOperation("水量年度统计报表") |
||||||
|
@RequestMapping(value = "getWaterYearReport", method = RequestMethod.GET) |
||||||
|
public R getWaterYearReport(String stcd, Integer year,String sttp) { |
||||||
|
YearReport yearReport = stStbprpBDataService.getWaterYearReport(stcd, year,sttp); |
||||||
|
return R.data(yearReport,"查询成功"); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@ApiOperation("水量年度统计报表") |
||||||
|
@RequestMapping(value = "getRainYearReport", method = RequestMethod.GET) |
||||||
|
public R getRainYearReport(String stcd, Integer year,String sttp,String col) { |
||||||
|
YearReport yearReport = stStbprpBDataService.getRainYearReport(stcd, year,sttp,col); |
||||||
|
return R.data(yearReport,"查询成功"); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@ApiOperation("基础数据报表,数据查询和统计分析使用接口") |
||||||
|
@RequestMapping(value = "/getReportData", method = RequestMethod.GET) |
||||||
|
public R getReportData( |
||||||
|
String[] stcds, String beginSpt, String endSpt, String type,String sttp,String col) { |
||||||
|
Map<String,Date> res=CommonUtil.getStartEnd(beginSpt,endSpt); |
||||||
|
if(res == null){ |
||||||
|
return R.data(500,false, "日期格式错误"); |
||||||
|
} |
||||||
|
String key=stcds.toString()+"_"+beginSpt+"_"+endSpt+"_"+type+"_"+col; |
||||||
|
Report report = CaffeineCacheUtil.get(key); |
||||||
|
if(report!=null){ |
||||||
|
return R.data(report,"查询成功"); |
||||||
|
} |
||||||
|
//查询基础数据
|
||||||
|
report = stStbprpBDataService |
||||||
|
.getReportData(Arrays.asList(stcds), res.get("begin"), res.get("end"), type, sttp,col); |
||||||
|
CaffeineCacheUtil.add(key,report); |
||||||
|
return R.data(report,"查询成功"); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ApiOperation("水量基础数据报表,数据查询和统计分析使用接口") |
||||||
|
@RequestMapping(value = "/getWaterReportData", method = RequestMethod.GET) |
||||||
|
public R getWaterReportData( |
||||||
|
String[] stcds, String beginSpt, String endSpt, String type,String sttp) { |
||||||
|
Map<String,Date> res= CommonUtil.getStartEnd(beginSpt,endSpt); |
||||||
|
if(res == null){ |
||||||
|
return R.data(500,false, "日期格式错误"); |
||||||
|
} |
||||||
|
//查询基础数据
|
||||||
|
Report report = stStbprpBDataService |
||||||
|
.getWaterReportData(Arrays.asList(stcds), res.get("begin"), res.get("end"), type, sttp); |
||||||
|
return R.data(report,"查询成功"); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@ApiOperation("app 水雨情接口") |
||||||
|
@RequestMapping(value = "page", method = RequestMethod.GET) |
||||||
|
public R page(String sttp,String name, Query page) { |
||||||
|
LambdaQueryWrapper<StStbprpB> wrapper=new LambdaQueryWrapper(); |
||||||
|
if(StringUtils.isNotBlank(sttp)) { |
||||||
|
wrapper.in(StStbprpB::getSttp,sttp.split(",")); |
||||||
|
} |
||||||
|
if(StringUtils.isNotBlank(name)) { |
||||||
|
wrapper.like(StStbprpB::getStnm, name); |
||||||
|
} |
||||||
|
wrapper.like(StStbprpB::getCreateDept, AuthUtil.getDeptId()); |
||||||
|
IPage<StationResp> pageList = stStbprpBDataService.pageData(wrapper, Condition.getPage(page)); |
||||||
|
return R.data(pageList,"查询成功"); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ApiOperation("app 获取实时数据") |
||||||
|
@RequestMapping(value = "getLastValue", method = RequestMethod.GET) |
||||||
|
public R getLastValue(@RequestParam String stcd) { |
||||||
|
Object obj = stStbprpBDataService.getLastValue(stcd); |
||||||
|
return R.data(obj,"查询成功"); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,145 @@ |
|||||||
|
package com.hnac.hzims.waterrain.controller; |
||||||
|
|
||||||
|
import com.alibaba.excel.EasyExcel; |
||||||
|
import io.swagger.annotations.Api; |
||||||
|
import io.swagger.annotations.ApiOperation; |
||||||
|
import org.springblade.core.secure.utils.AuthUtil; |
||||||
|
import org.springblade.core.tool.api.R; |
||||||
|
import com.hnac.hzims.waterrain.entity.ReorganizeData; |
||||||
|
import com.hnac.hzims.waterrain.entity.ReorganizeLog; |
||||||
|
import com.hnac.hzims.waterrain.listener.UploadWaterFlowRainDataListener; |
||||||
|
import com.hnac.hzims.waterrain.service.IReorganizeLogService; |
||||||
|
import com.hnac.hzims.waterrain.service.IWaterRainReorganizeService; |
||||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||||
|
import org.springframework.web.bind.annotation.RequestBody; |
||||||
|
import org.springframework.web.bind.annotation.RequestMapping; |
||||||
|
import org.springframework.web.bind.annotation.RequestMethod; |
||||||
|
import org.springframework.web.bind.annotation.RestController; |
||||||
|
import org.springframework.web.multipart.MultipartFile; |
||||||
|
|
||||||
|
import java.io.IOException; |
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.List; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
@RestController |
||||||
|
@RequestMapping("/waterRain/reorganize") |
||||||
|
@Api(tags = "水雨情数据整编接口") |
||||||
|
public class WaterRainReorganizeController { |
||||||
|
|
||||||
|
@Autowired |
||||||
|
IWaterRainReorganizeService reorganizeDataService; |
||||||
|
|
||||||
|
@Autowired |
||||||
|
IReorganizeLogService reorganizeLogService; |
||||||
|
|
||||||
|
//批量新增
|
||||||
|
|
||||||
|
@ApiOperation(value = "水雨情数据保存",notes = "水雨情数据保存") |
||||||
|
@RequestMapping(value = "/batchInsert", method = RequestMethod.POST) |
||||||
|
public R batchInsert(@RequestBody ReorganizeData data) { |
||||||
|
//判定是否已整编
|
||||||
|
String stcd=data.getStcd(); |
||||||
|
String yearMonth=data.getYearMonth(); |
||||||
|
String sttp=data.getSttp(); |
||||||
|
boolean flag=reorganizeLogService.getReorganizeLog(stcd,yearMonth); |
||||||
|
if(flag){ |
||||||
|
return R.fail(data.getYearMonth()+"数据已整编"); |
||||||
|
} |
||||||
|
//删除数据,防止插入主键冲突
|
||||||
|
reorganizeDataService.delData(stcd,sttp,yearMonth); |
||||||
|
flag=reorganizeDataService.batchInsert(data); |
||||||
|
if(flag){ |
||||||
|
ReorganizeLog reorganizeLog=new ReorganizeLog(); |
||||||
|
reorganizeLog.setStcd(stcd); |
||||||
|
reorganizeLog.setYearMonth(yearMonth); |
||||||
|
reorganizeLog.setOperateUser(AuthUtil.getUserName()); |
||||||
|
reorganizeLogService.insertReorganizeLog(reorganizeLog); |
||||||
|
return R.data("数据整编成功"); |
||||||
|
}else{ |
||||||
|
return R.fail(500,"数据整编失败"); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
//批量导入
|
||||||
|
/** |
||||||
|
* @param file excel文件 |
||||||
|
* @param sttp |
||||||
|
* @param stcd |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
|
||||||
|
@ApiOperation(value = "水雨情数据导入",notes = "水雨情数据导入") |
||||||
|
@RequestMapping(value = "/uploadWaterFlowRain", method = RequestMethod.POST) |
||||||
|
public R uploadReservoir(MultipartFile file, String sttp,String stcd,String yearMonth) { |
||||||
|
//判定是否已整编
|
||||||
|
boolean flag=reorganizeLogService.getReorganizeLog(stcd,yearMonth); |
||||||
|
if(flag){ |
||||||
|
return R.data(yearMonth+"数据已整编"); |
||||||
|
} |
||||||
|
if(file == null){ |
||||||
|
return R.fail(500,"未上传文件"); |
||||||
|
} |
||||||
|
String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1); |
||||||
|
if("xls".equals(suffix) || "xlsx".equals(suffix)){ |
||||||
|
try { |
||||||
|
//删除数据,防止插入主键冲突
|
||||||
|
reorganizeDataService.delData(stcd, sttp, yearMonth); |
||||||
|
List<String> errMessage=getMessage(file,sttp,stcd); |
||||||
|
if (errMessage.isEmpty()) { |
||||||
|
ReorganizeLog reorganizeLog=new ReorganizeLog(); |
||||||
|
reorganizeLog.setStcd(stcd); |
||||||
|
reorganizeLog.setYearMonth(yearMonth); |
||||||
|
reorganizeLog.setOperateUser(AuthUtil.getUserName()); |
||||||
|
reorganizeLogService.insertReorganizeLog(reorganizeLog); |
||||||
|
return R.data(true,"导入成功"); |
||||||
|
} else { |
||||||
|
return R.data(500,errMessage,"导入失败,请查看具体详情"); |
||||||
|
} |
||||||
|
|
||||||
|
}catch (IOException e){ |
||||||
|
return R.fail(500,"导入失败,文件流获取出错"); |
||||||
|
} |
||||||
|
}else{ |
||||||
|
return R.fail(500,"导入文件格式不对,请按模板文件格式来"); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
private List<String> getMessage(MultipartFile file, String sttp,String stcd) throws IOException { |
||||||
|
List<String> errMessage=new ArrayList<>(); |
||||||
|
|
||||||
|
UploadWaterFlowRainDataListener uploadDataListener = new UploadWaterFlowRainDataListener(reorganizeDataService,sttp,stcd,0); |
||||||
|
|
||||||
|
EasyExcel.read(file.getInputStream(), uploadDataListener).sheet().doReadSync(); |
||||||
|
|
||||||
|
errMessage.addAll(uploadDataListener.getErrMessage()); |
||||||
|
|
||||||
|
return errMessage; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ApiOperation(value = "整编后数据查询",notes = "整编后数据查询") |
||||||
|
@RequestMapping(value = "/queryData", method = RequestMethod.GET) |
||||||
|
public R queryData(String stcd,String sttp,String yearMonth) { |
||||||
|
//判定是否已整编
|
||||||
|
boolean flag=reorganizeLogService.getReorganizeLog(stcd,yearMonth); |
||||||
|
if(!flag){ |
||||||
|
return R.data(200,null,"数据未整编,无法查询到数据"); |
||||||
|
} |
||||||
|
List<Map<String,Object>> list=reorganizeDataService.queryData(stcd,sttp,yearMonth); |
||||||
|
return R.data(list,"数据查询成功"); |
||||||
|
} |
||||||
|
|
||||||
|
//重新整编
|
||||||
|
@ApiOperation(value = "重新整编",notes = "重新整编") |
||||||
|
@RequestMapping(value = "/afresh", method = RequestMethod.GET) |
||||||
|
public R afresh(String stcd,String yearMonth) { |
||||||
|
//删除整编日志
|
||||||
|
reorganizeLogService.delReorganizeLog(stcd, yearMonth); |
||||||
|
return R.data(true,"可以重新整编了"); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,26 @@ |
|||||||
|
package com.hnac.hzims.waterrain.feign; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||||
|
import com.hnac.hzims.waterrain.entity.StStbprpB; |
||||||
|
import com.hnac.hzims.waterrain.service.IStStbprpBService; |
||||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||||
|
import org.springframework.web.bind.annotation.RestController; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
@RestController |
||||||
|
public class StStbprpBClient implements IStStbprpBClient{ |
||||||
|
|
||||||
|
@Autowired |
||||||
|
private IStStbprpBService stStbprpBService; |
||||||
|
|
||||||
|
@Override |
||||||
|
public StStbprpB detail(LambdaQueryWrapper wrapper) { |
||||||
|
return stStbprpBService.getOne(wrapper); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public List<StStbprpB> list(LambdaQueryWrapper wrapper) { |
||||||
|
return stStbprpBService.list(wrapper); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,20 @@ |
|||||||
|
package com.hnac.hzims.waterrain.feign; |
||||||
|
|
||||||
|
import com.hnac.hzims.waterrain.service.IStStbprpBDataService; |
||||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||||
|
import org.springframework.web.bind.annotation.RestController; |
||||||
|
|
||||||
|
import java.util.Date; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
@RestController |
||||||
|
public class StStbprpBDataClient implements IStStbprpBDataClient{ |
||||||
|
|
||||||
|
@Autowired |
||||||
|
IStStbprpBDataService stStbprpBDataService; |
||||||
|
|
||||||
|
@Override |
||||||
|
public Map<String, String> queryMaxOrMin(String deviceCode, Date startTime, Date endTime, Integer calcType, Integer saveTimeType, Integer timeInterval, String col) { |
||||||
|
return stStbprpBDataService.queryMaxOrMin(deviceCode,startTime,endTime,calcType,col); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,336 @@ |
|||||||
|
package com.hnac.hzims.waterrain.listener; |
||||||
|
|
||||||
|
import com.alibaba.excel.context.AnalysisContext; |
||||||
|
import com.alibaba.excel.event.AnalysisEventListener; |
||||||
|
import com.hnac.hzims.waterrain.entity.HzStPptnR; |
||||||
|
import com.hnac.hzims.waterrain.entity.HzStRiverR; |
||||||
|
import com.hnac.hzims.waterrain.entity.HzStRsvrR; |
||||||
|
import com.hnac.hzims.waterrain.enums.WaterFlowRainEnum; |
||||||
|
import com.hnac.hzims.waterrain.service.IWaterRainReorganizeService; |
||||||
|
import org.apache.commons.lang3.StringUtils; |
||||||
|
|
||||||
|
import java.text.ParseException; |
||||||
|
import java.text.SimpleDateFormat; |
||||||
|
import java.util.*; |
||||||
|
|
||||||
|
public class UploadWaterFlowRainDataListener extends AnalysisEventListener<Map<Integer,String>> { |
||||||
|
//每00条在invoke中执行一次,剩余的会在doAfterAllAnalysed中执行
|
||||||
|
private static final int BATCH_COUNT = 200; |
||||||
|
private List<String> errMessage; |
||||||
|
//对应的测站类型
|
||||||
|
private String sttp; |
||||||
|
//对应的测站编码
|
||||||
|
private String stcd; |
||||||
|
//头部信息
|
||||||
|
private List<String> head; |
||||||
|
|
||||||
|
//数据的起始列数(从0开始算)
|
||||||
|
private int firstColumn; |
||||||
|
|
||||||
|
List<Map<Integer,String>> list = new ArrayList<>(); |
||||||
|
|
||||||
|
private IWaterRainReorganizeService waterRainReorganizeService;; |
||||||
|
|
||||||
|
public UploadWaterFlowRainDataListener(IWaterRainReorganizeService waterRainReorganizeService, String sttp, |
||||||
|
String stcd, int firstColumn) { |
||||||
|
this.waterRainReorganizeService = waterRainReorganizeService; |
||||||
|
this.sttp = sttp; |
||||||
|
this.stcd = stcd; |
||||||
|
this.firstColumn = firstColumn; |
||||||
|
errMessage = new ArrayList<>(); |
||||||
|
head = new ArrayList<>(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public String getSttp() { |
||||||
|
return sttp; |
||||||
|
} |
||||||
|
|
||||||
|
public void setSttp(String sttp) { |
||||||
|
this.sttp = sttp; |
||||||
|
} |
||||||
|
|
||||||
|
public List<String> getErrMessage() { |
||||||
|
return errMessage; |
||||||
|
} |
||||||
|
|
||||||
|
public void setErrMessage(List<String> errMessage) { |
||||||
|
this.errMessage = errMessage; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) { |
||||||
|
for(int i=0;i<headMap.size();i++) { |
||||||
|
head.add(headMap.get(i)); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void invoke(Map<Integer,String> map, AnalysisContext analysisContext) { |
||||||
|
list.add(map); |
||||||
|
// 达到BATCH_COUNT了,需要去存储一次数据库,防止数据几万条数据在内存,容易OOM
|
||||||
|
if (list.size() >= BATCH_COUNT) { |
||||||
|
saveData(); |
||||||
|
// 存储完成清理 list
|
||||||
|
list.clear(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void doAfterAllAnalysed(AnalysisContext analysisContext) { |
||||||
|
if(!list.isEmpty()) { |
||||||
|
saveData(); |
||||||
|
} |
||||||
|
list.clear(); |
||||||
|
head.clear(); |
||||||
|
} |
||||||
|
|
||||||
|
private void saveData() { |
||||||
|
//逐条执行
|
||||||
|
try { |
||||||
|
// dealData();
|
||||||
|
//批量执行
|
||||||
|
batchDealDataList(); |
||||||
|
} catch (ParseException e) { |
||||||
|
e.printStackTrace(); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
private void dealData() throws ParseException { |
||||||
|
Map<String,String> data=checkData(sttp); |
||||||
|
if ("true".equals(data.get("flag"))) { |
||||||
|
for (Map<Integer, String> map : list) { |
||||||
|
//组装批量数据
|
||||||
|
saveEntity(map, sttp, stcd); |
||||||
|
} |
||||||
|
} else { |
||||||
|
errMessage.add(data.get("msg")); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
//批量执行
|
||||||
|
private void batchDealDataList() throws ParseException { |
||||||
|
List<HzStPptnR> stPptnRList=new ArrayList<>(); |
||||||
|
List<HzStRiverR> stRiverRList=new ArrayList<>(); |
||||||
|
List<HzStRsvrR> stRsvrRList=new ArrayList<>(); |
||||||
|
Map<String,String> data=checkData(sttp); |
||||||
|
if ("true".equals(data.get("flag"))) { |
||||||
|
for (Map<Integer,String> map : list) { |
||||||
|
|
||||||
|
//组装批量数据
|
||||||
|
Map<String,Object> res=getOneObj(map,sttp,stcd); |
||||||
|
if(res!=null) { |
||||||
|
if(WaterFlowRainEnum.PP.getCode().equals(sttp)) { |
||||||
|
Object stPptnR = res.get(WaterFlowRainEnum.PP.getCode()); |
||||||
|
stPptnRList.addAll((List<HzStPptnR>) stPptnR); |
||||||
|
} |
||||||
|
|
||||||
|
if(WaterFlowRainEnum.ZZ.getCode().equals(sttp)) { |
||||||
|
Object stRiverR = res.get(WaterFlowRainEnum.ZZ.getCode()); |
||||||
|
stRiverRList.addAll((List<HzStRiverR>) stRiverR); |
||||||
|
stRiverR = res.get(WaterFlowRainEnum.ZQ.getCode()); |
||||||
|
stRiverRList.addAll((List<HzStRiverR>) stRiverR); |
||||||
|
} |
||||||
|
if(WaterFlowRainEnum.ZQ.getCode().equals(sttp)) { |
||||||
|
Object stRiverR = res.get(WaterFlowRainEnum.ZQ.getCode()); |
||||||
|
stRiverRList.addAll((List<HzStRiverR>) stRiverR); |
||||||
|
} |
||||||
|
|
||||||
|
if(WaterFlowRainEnum.RR.getCode().equals(sttp)) { |
||||||
|
Object stRsvrR = res.get(WaterFlowRainEnum.RR.getCode()); |
||||||
|
stRsvrRList.addAll((List<HzStRsvrR>) stRsvrR); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
} else { |
||||||
|
errMessage.add(data.get("msg")); |
||||||
|
} |
||||||
|
//批量插入
|
||||||
|
if(stPptnRList!=null && !stPptnRList.isEmpty() ) {//雨量站
|
||||||
|
waterRainReorganizeService.batchStPptnR(stPptnRList); |
||||||
|
} |
||||||
|
if(stRiverRList!=null && !stRiverRList.isEmpty()) {//河道水文、水位站
|
||||||
|
waterRainReorganizeService.batchStRiverR(stRiverRList); |
||||||
|
} |
||||||
|
if(stRsvrRList!=null && !stRsvrRList.isEmpty()) {//水库水文站
|
||||||
|
waterRainReorganizeService.batchStRsvrR(stRsvrRList); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private Map<String,Object> getOneObj(Map<Integer,String> map,String sttp,String stcd) throws ParseException { |
||||||
|
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH"); |
||||||
|
Map<String,Object> res=new HashMap<>(); |
||||||
|
|
||||||
|
Date dd=sdf.parse(map.get(0)); |
||||||
|
|
||||||
|
if(WaterFlowRainEnum.RR.getCode().equals(sttp)){ |
||||||
|
HzStRsvrR stRsvrR=new HzStRsvrR(); |
||||||
|
stRsvrR.setStcd(stcd); |
||||||
|
stRsvrR.setTm(dd); |
||||||
|
|
||||||
|
String data=map.get(1); |
||||||
|
stRsvrR.setRz(Double.valueOf(data)); |
||||||
|
|
||||||
|
data=map.get(2); |
||||||
|
stRsvrR.setInq(Double.valueOf(data)); |
||||||
|
|
||||||
|
List<HzStRsvrR> dataRes=(List<HzStRsvrR>)res.get(sttp);; |
||||||
|
if(dataRes==null || dataRes.isEmpty()) { |
||||||
|
dataRes=new ArrayList<>(); |
||||||
|
} |
||||||
|
dataRes.add(stRsvrR); |
||||||
|
res.put(sttp,dataRes); |
||||||
|
} |
||||||
|
if(WaterFlowRainEnum.ZZ.getCode().equals(sttp) || WaterFlowRainEnum.ZQ.getCode().equals(sttp)){ |
||||||
|
HzStRiverR stRiverR=new HzStRiverR(); |
||||||
|
stRiverR.setStcd(stcd); |
||||||
|
stRiverR.setTm(dd); |
||||||
|
String z=map.get(1); |
||||||
|
stRiverR.setZ(Double.valueOf(z)); |
||||||
|
String q=map.get(2); |
||||||
|
stRiverR.setQ(Double.valueOf(q)); |
||||||
|
List<HzStRiverR> dataRes=(List<HzStRiverR>)res.get(sttp); |
||||||
|
if(dataRes==null || dataRes.isEmpty()) { |
||||||
|
dataRes=new ArrayList<>(); |
||||||
|
} |
||||||
|
dataRes.add(stRiverR); |
||||||
|
res.put(sttp,dataRes); |
||||||
|
} |
||||||
|
if(WaterFlowRainEnum.PP.getCode().equals(sttp)){ |
||||||
|
HzStPptnR stPptnR=new HzStPptnR(); |
||||||
|
String drp=map.get(1); |
||||||
|
stPptnR.setStcd(stcd); |
||||||
|
stPptnR.setTm(dd); |
||||||
|
stPptnR.setDrp(Double.valueOf(drp)); |
||||||
|
List<HzStPptnR> dataRes=null; |
||||||
|
if(res.get(sttp)!=null) { |
||||||
|
dataRes=(List<HzStPptnR>)res.get(sttp); |
||||||
|
dataRes.add(stPptnR); |
||||||
|
}else{ |
||||||
|
dataRes=new ArrayList<>(); |
||||||
|
} |
||||||
|
res.put(sttp,dataRes); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
return res; |
||||||
|
} |
||||||
|
|
||||||
|
private void saveEntity(Map<Integer,String> map,String sttp,String stcd) throws ParseException { |
||||||
|
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH"); |
||||||
|
|
||||||
|
String dateStr=map.get(0); |
||||||
|
Date dd=sdf.parse(dateStr); |
||||||
|
|
||||||
|
if(WaterFlowRainEnum.RR.getCode().equals(sttp)){ |
||||||
|
HzStRsvrR stRsvrR=new HzStRsvrR(); |
||||||
|
stRsvrR.setStcd(stcd); |
||||||
|
stRsvrR.setTm(dd); |
||||||
|
String rz=map.get(1); |
||||||
|
stRsvrR.setRz(Double.valueOf(rz)); |
||||||
|
|
||||||
|
String inq=map.get(2); |
||||||
|
stRsvrR.setInq(Double.valueOf(inq)); |
||||||
|
|
||||||
|
waterRainReorganizeService.insertHzStRsvrR(stRsvrR); |
||||||
|
} |
||||||
|
if(WaterFlowRainEnum.ZZ.getCode().equals(sttp) || WaterFlowRainEnum.ZQ.getCode().equals(sttp)){ |
||||||
|
HzStRiverR stRiverR=new HzStRiverR(); |
||||||
|
stRiverR.setStcd(stcd); |
||||||
|
stRiverR.setTm(dd); |
||||||
|
String z=map.get(1); |
||||||
|
stRiverR.setZ(Double.valueOf(z)); |
||||||
|
String q=map.get(2); |
||||||
|
stRiverR.setQ(Double.valueOf(q)); |
||||||
|
|
||||||
|
waterRainReorganizeService.insertHzStRiverR(stRiverR); |
||||||
|
} |
||||||
|
if(WaterFlowRainEnum.PP.getCode().equals(sttp)){//降雨
|
||||||
|
HzStPptnR stPptnR=new HzStPptnR(); |
||||||
|
stPptnR.setStcd(stcd); |
||||||
|
stPptnR.setTm(dd); |
||||||
|
String drp=map.get(1); |
||||||
|
stPptnR.setDrp(Double.valueOf(drp)); |
||||||
|
|
||||||
|
waterRainReorganizeService.insertHzStPptnR(stPptnR); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
//校核某一行的数据
|
||||||
|
Map<String,String> checkData(String sttp) { |
||||||
|
Map<String, String> data = new HashMap<>(); |
||||||
|
String msg="请检查导入数据中"; |
||||||
|
for (Map<Integer,String> map : list) { |
||||||
|
String dateStr = map.get(0); |
||||||
|
|
||||||
|
String columnStr = ""; |
||||||
|
|
||||||
|
if (WaterFlowRainEnum.RR.getCode().equals(sttp)) { |
||||||
|
String rz = map.get(1); |
||||||
|
String inq = map.get(2); |
||||||
|
if (StringUtils.isBlank(rz)) { |
||||||
|
columnStr += dateStr + "的水位数据为空"; |
||||||
|
if (StringUtils.isBlank(inq)) { |
||||||
|
columnStr += ",流量数据为空"; |
||||||
|
data.put("msg", msg + "," + columnStr); |
||||||
|
data.put("flag", "false"); |
||||||
|
return data; |
||||||
|
} |
||||||
|
data.put("msg", msg + "," + columnStr); |
||||||
|
data.put("flag", "false"); |
||||||
|
return data; |
||||||
|
} else { |
||||||
|
if (StringUtils.isBlank(inq)) { |
||||||
|
columnStr += dateStr + "的流量数据为空"; |
||||||
|
data.put("msg", msg + "," + columnStr); |
||||||
|
data.put("flag", "false"); |
||||||
|
return data; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
if (WaterFlowRainEnum.ZZ.getCode().equals(sttp) || WaterFlowRainEnum.ZQ.getCode().equals(sttp)) { |
||||||
|
String z = map.get(1); |
||||||
|
String q = map.get(2); |
||||||
|
if (StringUtils.isBlank(z)) { |
||||||
|
columnStr += dateStr + "的水位数据为空"; |
||||||
|
if (StringUtils.isBlank(q)) { |
||||||
|
columnStr += ",流量数据为空"; |
||||||
|
data.put("msg", msg + "," + columnStr); |
||||||
|
data.put("flag", "false"); |
||||||
|
return data; |
||||||
|
} |
||||||
|
data.put("msg", msg + "," + columnStr); |
||||||
|
data.put("flag", "false"); |
||||||
|
return data; |
||||||
|
} else { |
||||||
|
if (StringUtils.isBlank(q)) { |
||||||
|
columnStr += dateStr + "的流量数据为空;"; |
||||||
|
data.put("msg", msg + "," + columnStr); |
||||||
|
data.put("flag", "false"); |
||||||
|
return data; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
if (WaterFlowRainEnum.PP.getCode().equals(sttp)) {//降雨
|
||||||
|
String drp = map.get(1); |
||||||
|
if (StringUtils.isBlank(drp)) { |
||||||
|
columnStr += dateStr + "的降雨量数据为空"; |
||||||
|
data.put("msg", msg + "," + columnStr); |
||||||
|
data.put("flag", "false"); |
||||||
|
return data; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
if ("".equals(columnStr)) { |
||||||
|
data.put("msg", ""); |
||||||
|
data.put("flag", "true"); |
||||||
|
} |
||||||
|
} |
||||||
|
return data; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,11 @@ |
|||||||
|
package com.hnac.hzims.waterrain.mapper; |
||||||
|
|
||||||
|
import org.apache.ibatis.annotations.Param; |
||||||
|
import com.hnac.hzims.waterrain.entity.ReorganizeLog; |
||||||
|
|
||||||
|
public interface ReorganizeLogMapper { |
||||||
|
int insert(ReorganizeLog reorganizeLog); |
||||||
|
ReorganizeLog queryReorganizeLog(@Param("stcd") String stcd, @Param("yearMonth") String yearMonth); |
||||||
|
int checkOk(ReorganizeLog reorganizeLog); |
||||||
|
int delReorganizeLog(@Param("stcd") String stcd, @Param("yearMonth") String yearMonth); |
||||||
|
} |
@ -0,0 +1,33 @@ |
|||||||
|
<?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="com.hnac.hzims.waterrain.mapper.ReorganizeLogMapper"> |
||||||
|
<resultMap id="BaseResult" type="com.hnac.hzims.waterrain.entity.ReorganizeLog"> |
||||||
|
<result jdbcType="VARCHAR" property="stcd" column="stcd"/> |
||||||
|
<result jdbcType="VARCHAR" property="yearMonth" column="year_month"/> |
||||||
|
<result jdbcType="VARCHAR" property="operateUser" column="operate_user"/> |
||||||
|
<result jdbcType="VARCHAR" property="checkUser" column="check_user"/> |
||||||
|
</resultMap> |
||||||
|
<insert id="insert" parameterType="com.hnac.hzims.waterrain.entity.ReorganizeLog"> |
||||||
|
insert into reorganize_log(stcd,`year_month`,operate_user,check_user) |
||||||
|
values (#{stcd,jdbcType=VARCHAR},#{yearMonth,jdbcType=VARCHAR}, |
||||||
|
#{operateUser,jdbcType=VARCHAR},#{checkUser,jdbcType=VARCHAR}) |
||||||
|
</insert> |
||||||
|
|
||||||
|
<select id="queryReorganizeLog" resultMap="BaseResult"> |
||||||
|
select stcd,`year_month`,operate_user,check_user |
||||||
|
from reorganize_log |
||||||
|
where stcd=#{stcd} and `year_month`=#{yearMonth} |
||||||
|
</select> |
||||||
|
|
||||||
|
<update id="checkOk" parameterType="com.hnac.hzims.waterrain.entity.ReorganizeLog"> |
||||||
|
update reorganize_log |
||||||
|
set check_user=#{checkUser} |
||||||
|
where stcd=#{stcd} and `year_month`=#{yearMonth} |
||||||
|
</update> |
||||||
|
|
||||||
|
<delete id="delReorganizeLog"> |
||||||
|
delete |
||||||
|
from reorganize_log |
||||||
|
where stcd=#{stcd} and `year_month`=#{yearMonth} |
||||||
|
</delete> |
||||||
|
</mapper> |
@ -0,0 +1,8 @@ |
|||||||
|
package com.hnac.hzims.waterrain.mapper; |
||||||
|
|
||||||
|
import org.springblade.core.datascope.mapper.UserDataScopeBaseMapper; |
||||||
|
import com.hnac.hzims.waterrain.entity.StStbprpB; |
||||||
|
|
||||||
|
public interface StStbprpBMapper extends UserDataScopeBaseMapper<StStbprpB> { |
||||||
|
|
||||||
|
} |
@ -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="com.hnac.hzims.waterrain.mapper.StStbprpBMapper"> |
||||||
|
|
||||||
|
</mapper> |
@ -0,0 +1,28 @@ |
|||||||
|
package com.hnac.hzims.waterrain.mapper; |
||||||
|
|
||||||
|
import org.apache.ibatis.annotations.Param; |
||||||
|
import com.hnac.hzims.waterrain.entity.HzStPptnR; |
||||||
|
import com.hnac.hzims.waterrain.entity.HzStRiverR; |
||||||
|
import com.hnac.hzims.waterrain.entity.HzStRsvrR; |
||||||
|
|
||||||
|
import java.util.Date; |
||||||
|
import java.util.List; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
public interface WaterRainReorganizeMapper { |
||||||
|
int batchStPptnR(@Param("list") List<HzStPptnR> list); |
||||||
|
int batchStRiverR(@Param("list")List<HzStRiverR> list); |
||||||
|
int batchStRsvrR(@Param("list")List<HzStRsvrR> list); |
||||||
|
|
||||||
|
int insertHzStPptnR(HzStPptnR hzStPptnR); |
||||||
|
int insertHzStRsvrR(HzStRsvrR hzStRsvrR); |
||||||
|
int insertHzStRiverR(HzStRiverR hzStRiverR); |
||||||
|
|
||||||
|
List<Map<String,Object>> queryStPptnR(@Param("stcd") String stcd, @Param("start") Date start, @Param("end") Date end); |
||||||
|
List<Map<String,Object>> queryStRsvrR(@Param("stcd")String stcd,@Param("start") Date start, @Param("end") Date end); |
||||||
|
List<Map<String,Object>> queryStRiverR(@Param("stcd")String stcd,@Param("start") Date start, @Param("end") Date end); |
||||||
|
|
||||||
|
int delStPptnR(@Param("stcd") String stcd, @Param("start") Date start, @Param("end") Date end); |
||||||
|
int delStRsvrR(@Param("stcd")String stcd,@Param("start") Date start, @Param("end") Date end); |
||||||
|
int delStRiverR(@Param("stcd")String stcd,@Param("start") Date start, @Param("end") Date end); |
||||||
|
} |
@ -0,0 +1,150 @@ |
|||||||
|
<?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="com.hnac.hzims.waterrain.mapper.WaterRainReorganizeMapper"> |
||||||
|
|
||||||
|
<insert id="batchStPptnR" parameterType="com.hnac.hzims.waterrain.entity.HzStPptnR"> |
||||||
|
insert into st_pptn_r(STCD,TM,DRP) values |
||||||
|
<foreach collection="list" separator="," item="cus"> |
||||||
|
(#{cus.stcd}, #{cus.tm},#{cus.drp}) |
||||||
|
</foreach> |
||||||
|
</insert> |
||||||
|
|
||||||
|
<insert id="batchStRiverR" parameterType="com.hnac.hzims.waterrain.entity.HzStRiverR"> |
||||||
|
insert into st_river_r(STCD,TM,Z,Q) |
||||||
|
<foreach collection="list" separator="," item="cus"> |
||||||
|
(#{cus.stcd}, #{cus.tm},#{cus.z},#{cus.q}) |
||||||
|
</foreach> |
||||||
|
</insert> |
||||||
|
|
||||||
|
<insert id="batchStRsvrR" parameterType="com.hnac.hzims.waterrain.entity.HzStRsvrR"> |
||||||
|
insert into st_rsvr_r(STCD,TM,RZ,INQ) |
||||||
|
<foreach collection="list" separator="," item="cus"> |
||||||
|
(#{cus.stcd}, #{cus.tm},#{cus.rz},#{cus.inq}) |
||||||
|
</foreach> |
||||||
|
</insert> |
||||||
|
|
||||||
|
<insert id="insertHzStPptnR" parameterType="com.hnac.hzims.waterrain.entity.HzStPptnR"> |
||||||
|
insert into st_pptn_r |
||||||
|
<trim prefix="(" suffix=")" suffixOverrides="," > |
||||||
|
<if test="stcd != null" > |
||||||
|
STCD, |
||||||
|
</if> |
||||||
|
<if test="tm != null" > |
||||||
|
TM, |
||||||
|
</if> |
||||||
|
<if test="drp != null" > |
||||||
|
DRP, |
||||||
|
</if> |
||||||
|
</trim> |
||||||
|
<trim prefix="values (" suffix=")" suffixOverrides="," > |
||||||
|
<if test="stcd != null" > |
||||||
|
#{stcd,jdbcType=CHAR}, |
||||||
|
</if> |
||||||
|
<if test="tm != null" > |
||||||
|
#{tm,jdbcType=TIMESTAMP}, |
||||||
|
</if> |
||||||
|
<if test="drp != null" > |
||||||
|
#{drp,jdbcType=DECIMAL}, |
||||||
|
</if> |
||||||
|
</trim> |
||||||
|
</insert> |
||||||
|
|
||||||
|
|
||||||
|
<insert id="insertHzStRiverR" parameterType="com.hnac.hzims.waterrain.entity.HzStRiverR"> |
||||||
|
insert into st_river_r |
||||||
|
<trim prefix="(" suffix=")" suffixOverrides="," > |
||||||
|
<if test="stcd != null" > |
||||||
|
STCD, |
||||||
|
</if> |
||||||
|
<if test="tm != null" > |
||||||
|
TM, |
||||||
|
</if> |
||||||
|
<if test="z != null" > |
||||||
|
Z, |
||||||
|
</if> |
||||||
|
<if test="q != null" > |
||||||
|
Q, |
||||||
|
</if> |
||||||
|
</trim> |
||||||
|
<trim prefix="values (" suffix=")" suffixOverrides="," > |
||||||
|
<if test="stcd != null" > |
||||||
|
#{stcd,jdbcType=CHAR}, |
||||||
|
</if> |
||||||
|
<if test="tm != null" > |
||||||
|
#{tm,jdbcType=TIMESTAMP}, |
||||||
|
</if> |
||||||
|
<if test="z != null" > |
||||||
|
#{z,jdbcType=DECIMAL}, |
||||||
|
</if> |
||||||
|
<if test="q != null" > |
||||||
|
#{q,jdbcType=DECIMAL}, |
||||||
|
</if> |
||||||
|
</trim> |
||||||
|
</insert> |
||||||
|
|
||||||
|
<insert id="insertHzStRsvrR" parameterType="com.hnac.hzims.waterrain.entity.HzStRsvrR"> |
||||||
|
insert into st_rsvr_r |
||||||
|
<trim prefix="(" suffix=")" suffixOverrides="," > |
||||||
|
<if test="stcd != null" > |
||||||
|
STCD, |
||||||
|
</if> |
||||||
|
<if test="tm != null" > |
||||||
|
TM, |
||||||
|
</if> |
||||||
|
<if test="rz != null" > |
||||||
|
RZ, |
||||||
|
</if> |
||||||
|
<if test="inq != null" > |
||||||
|
INQ, |
||||||
|
</if> |
||||||
|
</trim> |
||||||
|
<trim prefix="values (" suffix=")" suffixOverrides="," > |
||||||
|
<if test="stcd != null" > |
||||||
|
#{stcd,jdbcType=CHAR}, |
||||||
|
</if> |
||||||
|
<if test="tm != null" > |
||||||
|
#{tm,jdbcType=TIMESTAMP}, |
||||||
|
</if> |
||||||
|
<if test="rz != null" > |
||||||
|
#{rz,jdbcType=DECIMAL}, |
||||||
|
</if> |
||||||
|
<if test="inq != null" > |
||||||
|
#{inq,jdbcType=DECIMAL}, |
||||||
|
</if> |
||||||
|
</trim> |
||||||
|
</insert> |
||||||
|
|
||||||
|
<select id="queryStPptnR" resultType="java.util.Map"> |
||||||
|
select DATE_FORMAT(tm,'%Y-%m-%d %H') as tm,drp as rain from st_pptn_r |
||||||
|
where stcd=#{stcd} and tm between #{start} and #{end} |
||||||
|
order by tm |
||||||
|
</select> |
||||||
|
|
||||||
|
<select id="queryStRsvrR" resultType="java.util.Map"> |
||||||
|
select DATE_FORMAT(tm,'%Y-%m-%d %H') as tm,rz as water_level,inq as flow from st_rsvr_r |
||||||
|
where stcd=#{stcd} and tm between #{start} and #{end} |
||||||
|
order by tm |
||||||
|
</select> |
||||||
|
|
||||||
|
<select id="queryStRiverR" resultType="java.util.Map"> |
||||||
|
select DATE_FORMAT(tm,'%Y-%m-%d %H') as tm,z as water_level,q as flow from st_river_r |
||||||
|
where stcd=#{stcd} and tm between #{start} and #{end} |
||||||
|
order by tm |
||||||
|
</select> |
||||||
|
|
||||||
|
<delete id="delStPptnR"> |
||||||
|
delete from st_pptn_r |
||||||
|
where stcd=#{stcd} and tm between #{start} and #{end} |
||||||
|
</delete> |
||||||
|
|
||||||
|
<delete id="delStRsvrR"> |
||||||
|
delete from st_rsvr_r |
||||||
|
where stcd=#{stcd} and tm between #{start} and #{end} |
||||||
|
</delete> |
||||||
|
|
||||||
|
<delete id="delStRiverR"> |
||||||
|
delete from st_river_r |
||||||
|
where stcd=#{stcd} and tm between #{start} and #{end} |
||||||
|
</delete> |
||||||
|
|
||||||
|
</mapper> |
@ -0,0 +1,12 @@ |
|||||||
|
package com.hnac.hzims.waterrain.service; |
||||||
|
|
||||||
|
import com.hnac.hzims.waterrain.entity.ReorganizeLog; |
||||||
|
|
||||||
|
public interface IReorganizeLogService { |
||||||
|
boolean getReorganizeLog(String stcd,String yearMonth); |
||||||
|
ReorganizeLog queryReorganizeLog(String stcd, String yearMonth); |
||||||
|
boolean insertReorganizeLog(ReorganizeLog reorganizeLog); |
||||||
|
boolean check(String stcd,String yearMonth,String checkUser); |
||||||
|
|
||||||
|
boolean delReorganizeLog(String stcd,String yearMonth); |
||||||
|
} |
@ -0,0 +1,47 @@ |
|||||||
|
package com.hnac.hzims.waterrain.service; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||||
|
import com.hnac.hzims.entity.Report; |
||||||
|
import com.hnac.hzims.entity.YearReport; |
||||||
|
import com.hnac.hzims.waterrain.bo.StationResp; |
||||||
|
import com.hnac.hzinfo.datasearch.analyse.domain.FieldsData; |
||||||
|
import com.hnac.hzinfo.datasearch.analyse.vo.AnalyzeInstanceFieldVO; |
||||||
|
|
||||||
|
|
||||||
|
import java.util.Date; |
||||||
|
import java.util.List; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
public interface IStStbprpBDataService { |
||||||
|
|
||||||
|
//获取计算值(最大 最小 平均等等)
|
||||||
|
Map<String, String> queryMaxOrMin(String deviceCode, Date startTime, Date endTime, |
||||||
|
Integer calcType, String col); |
||||||
|
|
||||||
|
//获取最新值以及差值
|
||||||
|
List<Map<String,Object>> getLastValues(List<String> stcds,String sttp); |
||||||
|
|
||||||
|
//过程线
|
||||||
|
Report getReportData(List<String> deviceCode, Date begin, Date end, String type , String sttp, String col); |
||||||
|
|
||||||
|
//水量过程线
|
||||||
|
Report getWaterReportData(List<String> deviceCodes, Date begin, Date end, String type, String sttp); |
||||||
|
|
||||||
|
//年报表
|
||||||
|
YearReport getYearReport(String stcd, Integer year, String sttp, String col); |
||||||
|
|
||||||
|
//水量年报表
|
||||||
|
YearReport getWaterYearReport(String deviceCode, Integer year,String sttp); |
||||||
|
//将于年报
|
||||||
|
YearReport getRainYearReport(String deviceCode, Integer year,String sttp,String col); |
||||||
|
|
||||||
|
Object getLastValue(String stcd); |
||||||
|
|
||||||
|
IPage<StationResp> pageData(LambdaQueryWrapper wrapper, IPage page); |
||||||
|
|
||||||
|
List<FieldsData> getRealData(String stcd); |
||||||
|
List<AnalyzeInstanceFieldVO> getSignages(String stcd); |
||||||
|
|
||||||
|
List<Map<String,Object>> getDataByHour(String stcd,String yearMonth); |
||||||
|
} |
@ -0,0 +1,8 @@ |
|||||||
|
package com.hnac.hzims.waterrain.service; |
||||||
|
|
||||||
|
import org.springblade.core.mp.base.BaseService; |
||||||
|
import com.hnac.hzims.waterrain.entity.StStbprpB; |
||||||
|
|
||||||
|
public interface IStStbprpBService extends BaseService<StStbprpB> { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,34 @@ |
|||||||
|
package com.hnac.hzims.waterrain.service; |
||||||
|
|
||||||
|
|
||||||
|
import com.hnac.hzims.waterrain.entity.HzStPptnR; |
||||||
|
import com.hnac.hzims.waterrain.entity.HzStRiverR; |
||||||
|
import com.hnac.hzims.waterrain.entity.HzStRsvrR; |
||||||
|
import com.hnac.hzims.waterrain.entity.ReorganizeData; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
public interface IWaterRainReorganizeService { |
||||||
|
|
||||||
|
boolean batchInsert(ReorganizeData data); |
||||||
|
|
||||||
|
void batchStPptnR(List<HzStPptnR> list); |
||||||
|
void batchStRiverR(List<HzStRiverR> list); |
||||||
|
void batchStRsvrR(List<HzStRsvrR> list); |
||||||
|
|
||||||
|
int insertHzStPptnR(HzStPptnR hzStPptnR); |
||||||
|
int insertHzStRsvrR(HzStRsvrR hzStRsvrR); |
||||||
|
int insertHzStRiverR(HzStRiverR hzStRiverR); |
||||||
|
|
||||||
|
List<Map<String,Object>> queryStPptnR(String stcd,String yearMonth); |
||||||
|
List<Map<String,Object>> queryStRsvrR(String stcd,String yearMonth); |
||||||
|
List<Map<String,Object>> queryStRiverR(String stcd,String yearMonth); |
||||||
|
|
||||||
|
boolean delStPptnR(String stcd,String yearMonth); |
||||||
|
boolean delStRsvrR(String stcd,String yearMonth); |
||||||
|
boolean delStRiverR(String stcd,String yearMonth); |
||||||
|
|
||||||
|
List<Map<String,Object>> queryData(String stcd,String sttp,String yearMonth); |
||||||
|
boolean delData(String stcd,String sttp,String yearMonth); |
||||||
|
} |
@ -0,0 +1,4 @@ |
|||||||
|
package com.hnac.hzims.waterrain.service; |
||||||
|
|
||||||
|
public interface IWaterRainService { |
||||||
|
} |
@ -0,0 +1,45 @@ |
|||||||
|
package com.hnac.hzims.waterrain.service.impl; |
||||||
|
|
||||||
|
import com.hnac.hzims.waterrain.entity.ReorganizeLog; |
||||||
|
import com.hnac.hzims.waterrain.mapper.ReorganizeLogMapper; |
||||||
|
import com.hnac.hzims.waterrain.service.IReorganizeLogService; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
import javax.annotation.Resource; |
||||||
|
|
||||||
|
@Service |
||||||
|
public class ReorganizeLogServiceImpl implements IReorganizeLogService { |
||||||
|
|
||||||
|
@Resource |
||||||
|
ReorganizeLogMapper reorganizeLogMapper; |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean getReorganizeLog(String stcd, String yearMonth) { |
||||||
|
ReorganizeLog reorganizeLog=queryReorganizeLog(stcd,yearMonth); |
||||||
|
return reorganizeLog!=null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public ReorganizeLog queryReorganizeLog(String stcd, String yearMonth) { |
||||||
|
return reorganizeLogMapper.queryReorganizeLog(stcd,yearMonth); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean insertReorganizeLog(ReorganizeLog reorganizeLog) { |
||||||
|
return reorganizeLogMapper.insert(reorganizeLog)>0; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean check(String stcd, String yearMonth, String checkUser) { |
||||||
|
ReorganizeLog reorganizeLog=new ReorganizeLog(); |
||||||
|
reorganizeLog.setStcd(stcd); |
||||||
|
reorganizeLog.setYearMonth(yearMonth); |
||||||
|
reorganizeLog.setCheckUser(checkUser); |
||||||
|
return reorganizeLogMapper.checkOk(reorganizeLog)>0; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean delReorganizeLog(String stcd, String yearMonth) { |
||||||
|
return reorganizeLogMapper.delReorganizeLog(stcd,yearMonth)>0; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,896 @@ |
|||||||
|
package com.hnac.hzims.waterrain.service.impl; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||||
|
import com.hnac.hzims.entity.*; |
||||||
|
import com.hnac.hzims.enums.QueryDateTypeEnum; |
||||||
|
import com.hnac.hzims.util.CommonUtil; |
||||||
|
import com.hnac.hzims.util.ReportDateUtil; |
||||||
|
import com.hnac.hzinfo.datasearch.analyse.domain.FieldsData; |
||||||
|
import com.hnac.hzinfo.datasearch.analyse.po.AnalyseCodeByAnalyseDataPO; |
||||||
|
import com.hnac.hzinfo.datasearch.analyse.po.AnalyzeDataConditionPO; |
||||||
|
import com.hnac.hzinfo.datasearch.analyse.vo.AnalyseDataTaosVO; |
||||||
|
import com.hnac.hzinfo.datasearch.analyse.vo.AnalyzeDataConditionVO; |
||||||
|
import com.hnac.hzinfo.datasearch.analyse.vo.AnalyzeInstanceFieldVO; |
||||||
|
import com.hnac.hzinfo.datasearch.real.po.RealDataSearchPO; |
||||||
|
import com.hnac.hzinfo.sdk.analyse.AnalyseDataSearchClient; |
||||||
|
import com.hnac.hzinfo.sdk.analyse.po.ComputeBaseStrategyPO; |
||||||
|
import com.hnac.hzinfo.sdk.analyse.vo.DeviceSinglePropsValueQuery; |
||||||
|
import com.hnac.hzinfo.sdk.analyse.vo.DeviceSinglePropsValueVO; |
||||||
|
import com.hnac.hzinfo.sdk.core.response.Result; |
||||||
|
import com.hnac.hzinfo.sdk.real.RealDataSearchClient; |
||||||
|
import org.apache.commons.lang3.time.DateUtils; |
||||||
|
import com.hnac.hzims.waterrain.bo.*; |
||||||
|
import com.hnac.hzims.waterrain.entity.StStbprpB; |
||||||
|
import com.hnac.hzims.waterrain.service.IStStbprpBDataService; |
||||||
|
import com.hnac.hzims.waterrain.service.IStStbprpBService; |
||||||
|
import com.hnac.hzims.waterrain.util.DateUtil; |
||||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
import java.math.BigDecimal; |
||||||
|
import java.text.ParseException; |
||||||
|
import java.text.SimpleDateFormat; |
||||||
|
import java.time.*; |
||||||
|
import java.util.*; |
||||||
|
|
||||||
|
@Service |
||||||
|
public class StStbprpBDataServiceImpl implements IStStbprpBDataService { |
||||||
|
|
||||||
|
@Autowired |
||||||
|
AnalyseDataSearchClient analyseDataSearchClient; |
||||||
|
|
||||||
|
@Autowired |
||||||
|
RealDataSearchClient realDataSearchClient; |
||||||
|
|
||||||
|
@Autowired |
||||||
|
IStStbprpBService stStbprpBService; |
||||||
|
|
||||||
|
@Override |
||||||
|
public Object getLastValue(String stcd) { |
||||||
|
LambdaQueryWrapper<StStbprpB> wrapper=new LambdaQueryWrapper(); |
||||||
|
wrapper.eq(StStbprpB::getStcd,stcd); |
||||||
|
wrapper.eq(StStbprpB::getIsDeleted,0); |
||||||
|
StStbprpB resp = stStbprpBService.getOne(wrapper); |
||||||
|
return getLastValue(resp); |
||||||
|
} |
||||||
|
|
||||||
|
private Object getLastValue(StStbprpB resp){ |
||||||
|
List<String> stcds=new ArrayList<>(); |
||||||
|
stcds.add(resp.getStcd()); |
||||||
|
List<Map<String,Object>> dataList = getLastValues(stcds, resp.getSttp()); |
||||||
|
if(dataList!=null && !dataList.isEmpty()) { |
||||||
|
return dataList.get(0); |
||||||
|
}else{ |
||||||
|
return null; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public IPage<StationResp> pageData(LambdaQueryWrapper wrapper, IPage page) { |
||||||
|
IPage<StStbprpB> pageList = stStbprpBService.page(page, wrapper); |
||||||
|
IPage<StationResp> list = new Page(pageList.getCurrent(),pageList.getSize()); |
||||||
|
int count=(int)pageList.getTotal(); |
||||||
|
List<String> stcds=new ArrayList<>(); |
||||||
|
for (StStbprpB resp : pageList.getRecords()) { |
||||||
|
stcds.add(resp.getStcd()); |
||||||
|
} |
||||||
|
|
||||||
|
List<StationResp> records=new ArrayList<>(); |
||||||
|
|
||||||
|
for (StStbprpB resp : pageList.getRecords()) { |
||||||
|
StationResp temp = new StationResp(); |
||||||
|
temp.setStStbprpB(resp); |
||||||
|
temp.setObj(getLastValue(resp)); |
||||||
|
records.add(temp); |
||||||
|
} |
||||||
|
|
||||||
|
list.setPages(pageList.getPages()); |
||||||
|
list.setRecords(records); |
||||||
|
list.setTotal(count); |
||||||
|
|
||||||
|
return list; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public List<FieldsData> getRealData(String stcd) { |
||||||
|
RealDataSearchPO po=new RealDataSearchPO(); |
||||||
|
po.setAnalyzeCode(stcd); |
||||||
|
List<AnalyzeInstanceFieldVO> list=getSignages(stcd); |
||||||
|
if(list==null || list.isEmpty()){ |
||||||
|
return null; |
||||||
|
} |
||||||
|
List<String> signages=new ArrayList<>(); |
||||||
|
for(AnalyzeInstanceFieldVO vo:list){ |
||||||
|
signages.add(vo.getSignage()); |
||||||
|
} |
||||||
|
po.setSignages(signages); |
||||||
|
Result<List<FieldsData>> result=realDataSearchClient.getRealDataByDeviceCode(po); |
||||||
|
if(result==null || !result.isSuccess()){ |
||||||
|
return null; |
||||||
|
} |
||||||
|
return result.getData(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public List<AnalyzeInstanceFieldVO> getSignages(String stcd){ |
||||||
|
//查询列
|
||||||
|
Result<List<AnalyzeInstanceFieldVO>> result=analyseDataSearchClient.getInstanceFieldByAnalyseCode(stcd,1,""); |
||||||
|
if(result==null || !result.isSuccess()){ |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
List<AnalyzeInstanceFieldVO> analyzeInstanceFieldVOS=result.getData(); |
||||||
|
return analyzeInstanceFieldVOS; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public List<Map<String, Object>> getDataByHour(String stcd,String yearMonth) { |
||||||
|
List<Map<String, Object>> list=new ArrayList<>(); |
||||||
|
Map<String,Date> dateMap=DateUtil.getStartEnd(yearMonth); |
||||||
|
Date begin= dateMap.get("start"); |
||||||
|
Date endSt= dateMap.get("end"); |
||||||
|
|
||||||
|
if(begin==null || endSt==null){ |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
LocalDateTime start = LocalDateTime.ofInstant(begin.toInstant(), ZoneId.systemDefault()); |
||||||
|
LocalDateTime end = LocalDateTime.ofInstant(endSt.toInstant(), ZoneId.systemDefault()); |
||||||
|
|
||||||
|
List<AnalyzeInstanceFieldVO> vos=getSignages(stcd); |
||||||
|
if(vos==null || vos.isEmpty()){ |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
Map<String,List<ReportData>> map=new HashMap<>(); |
||||||
|
int count=0; |
||||||
|
for(AnalyzeInstanceFieldVO vo:vos) { |
||||||
|
List<ReportData> reportDataList = getDataByDeviceCode(stcd, 6,2,start,end, vo.getSignage()); |
||||||
|
map.put(vo.getSignage(),reportDataList); |
||||||
|
count = reportDataList.size(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
for (int i = 0; i < count; i++) { |
||||||
|
Map<String,Object> res=new HashMap<>(); |
||||||
|
for(AnalyzeInstanceFieldVO vo:vos) { |
||||||
|
List<ReportData> reportDataList=map.get(vo.getSignage()); |
||||||
|
ReportData reportData=reportDataList.get(i); |
||||||
|
res.put("tm",reportData.getKeyStr()); |
||||||
|
res.put(vo.getSignage(),reportData.getVal()); |
||||||
|
} |
||||||
|
list.add(res); |
||||||
|
} |
||||||
|
|
||||||
|
return list; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
//获取测站 水量年报表
|
||||||
|
@Override |
||||||
|
public YearReport getWaterYearReport(String deviceCode, Integer year, String sttp) { |
||||||
|
YearReport yearReport=getYearReport(deviceCode, year, sttp,"flow"); |
||||||
|
dealYearReport(yearReport); |
||||||
|
return yearReport; |
||||||
|
} |
||||||
|
|
||||||
|
void dealRainYearReport(YearReport yearReport){ |
||||||
|
if(yearReport!=null){ |
||||||
|
List<ReportUnit> monthList=yearReport.getMonthList(); |
||||||
|
dealMonthList(monthList,yearReport.getYear()); |
||||||
|
List<ReportData> yearList=yearReport.getYearList(); |
||||||
|
dealYearList(yearList,yearReport.getYear()); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
void dealYearReport(YearReport yearReport){ |
||||||
|
if(yearReport!=null){ |
||||||
|
List<List<String>> dayList=yearReport.getDayList(); |
||||||
|
dealDayList(dayList); |
||||||
|
List<ReportUnit> monthList=yearReport.getMonthList(); |
||||||
|
dealMonthList(monthList,yearReport.getYear()); |
||||||
|
List<ReportData> yearList=yearReport.getYearList(); |
||||||
|
dealYearList(yearList,yearReport.getYear()); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
void dealDayList(List<List<String>> dayList){ |
||||||
|
for(List<String> list:dayList){ |
||||||
|
if(list!=null && !list.isEmpty()) { |
||||||
|
for (int i=0,size=list.size(); i<size; i++) { |
||||||
|
String str=list.get(i); |
||||||
|
if (!"-".equals(str)) { |
||||||
|
list.set(i,getNewVal(str,"day","")); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
void dealMonthList(List<ReportUnit> monthList,int year){ |
||||||
|
if(monthList!=null && !monthList.isEmpty()) { |
||||||
|
for (ReportUnit reportUnit:monthList) { |
||||||
|
String key=reportUnit.getKey(); |
||||||
|
if(!key.contains("时间")){ |
||||||
|
List<String> list=reportUnit.getDataList(); |
||||||
|
dealMonthDataList(list,year); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
void dealMonthDataList(List<String> list,int year){ |
||||||
|
if(list!=null && !list.isEmpty()){ |
||||||
|
for (int i=0,size=list.size(); i<size; i++) { |
||||||
|
String str=list.get(i); |
||||||
|
if (!"-".equals(str)) { |
||||||
|
int month= i+1; |
||||||
|
// String monthStr = month < 9 ? "0"+month:""+month;
|
||||||
|
list.set(i,getNewVal(str,"month",year+"-"+month)); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
void dealYearList(List<ReportData> yearList,int year){ |
||||||
|
for(ReportData reportData:yearList){ |
||||||
|
String keyStr=reportData.getKeyStr(); |
||||||
|
if(!keyStr.contains("时间")){ |
||||||
|
String str=reportData.getVal(); |
||||||
|
if (!"-".equals(str)) { |
||||||
|
reportData.setVal(getNewVal(str, "year", year + "")); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
//获取测站 水量过程线
|
||||||
|
@Override |
||||||
|
public Report getWaterReportData(List<String> deviceCodes, Date begin, Date end, String type, String sttp) { |
||||||
|
Report report=getReportData(deviceCodes, begin, end, type, sttp,"flow"); |
||||||
|
dealReportData(report,type); |
||||||
|
return report; |
||||||
|
} |
||||||
|
|
||||||
|
void dealReportData(Report report, String dateType){ |
||||||
|
if(report!=null) { |
||||||
|
List<ReportUnit> list = report.getData(); |
||||||
|
if(list!=null && !list.isEmpty()) { |
||||||
|
for (ReportUnit reportUnit : list) { |
||||||
|
String key = reportUnit.getKey(); |
||||||
|
List<String> dataList = reportUnit.getDataList(); |
||||||
|
dealDataList(dataList, dateType, key); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
void dealDataList(List<String> dataList,String dateType,String key){ |
||||||
|
if(dataList!=null && !dataList.isEmpty()) { |
||||||
|
for (int i = 0,size=dataList.size(); i<size;i++) { |
||||||
|
String value=dataList.get(i); |
||||||
|
if(!"-".equals(value)) { |
||||||
|
dataList.set(i,getNewVal(value,dateType,key)); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
String getNewVal(String value,String dateType,String key){ |
||||||
|
long xishu=1; |
||||||
|
if(QueryDateTypeEnum.YEAR.getQueryDateType().equals(dateType)){//年
|
||||||
|
int year = Integer.valueOf(key); |
||||||
|
if((year%4==0 && year%100!=0) || (year%400==0)){ |
||||||
|
xishu = 31622400;//366天的秒数
|
||||||
|
}else{ |
||||||
|
xishu = 31536000;//365天的秒数
|
||||||
|
} |
||||||
|
} |
||||||
|
if(QueryDateTypeEnum.MONTH.getQueryDateType().equals(dateType)){//月
|
||||||
|
String[] keys=key.split("-"); |
||||||
|
int day=getDaysByYearMonth(Integer.valueOf(keys[0]),Integer.valueOf(keys[1])); |
||||||
|
xishu = day*86400;//day天的秒数 0.004425
|
||||||
|
} |
||||||
|
if(QueryDateTypeEnum.DAY.getQueryDateType().equals(dateType)){//日
|
||||||
|
xishu = 86400;//1天的秒数
|
||||||
|
} |
||||||
|
|
||||||
|
if(QueryDateTypeEnum.HOUR.getQueryDateType().equals(dateType)){//时
|
||||||
|
xishu = 3600;//1小时的秒数
|
||||||
|
} |
||||||
|
if(value!=null && !"-".equals(value) && !"".equals(value.trim())) { |
||||||
|
BigDecimal result = new BigDecimal(value).multiply(new BigDecimal(xishu)); |
||||||
|
return String.format("%.3f", result); |
||||||
|
}else{ |
||||||
|
return "-"; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public static int getDaysByYearMonth(int year, int month) { |
||||||
|
Calendar a = Calendar.getInstance(); |
||||||
|
a.set(Calendar.YEAR, year); |
||||||
|
a.set(Calendar.MONTH, month - 1); |
||||||
|
a.set(Calendar.DATE, 1); |
||||||
|
a.roll(Calendar.DATE, -1); |
||||||
|
int maxDate = a.get(Calendar.DATE); |
||||||
|
return maxDate; |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
//获取测站年报表
|
||||||
|
@Override |
||||||
|
public YearReport getRainYearReport(String deviceCode, Integer year, String sttp, String col) { |
||||||
|
//初始化年份
|
||||||
|
YearReport yearReport = new YearReport(); |
||||||
|
yearReport.init(deviceCode, year); |
||||||
|
//拿到一年数据
|
||||||
|
Date begin = ReportDateUtil.getDate(year, 0, 1, 8, 0, 0); |
||||||
|
Date end = ReportDateUtil.getNextDate(begin, Calendar.YEAR); |
||||||
|
List<ReportData> yearReportData = listDataReport(begin, end, QueryDateTypeEnum.DAY,deviceCode,sttp, col); |
||||||
|
//年度数据转化到报表里,计算每月数据和年数据
|
||||||
|
try { |
||||||
|
toYearRainReport(yearReport, yearReportData, col,sttp); |
||||||
|
} catch (Exception e) { |
||||||
|
return null; |
||||||
|
} |
||||||
|
//返回数据
|
||||||
|
return yearReport; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public YearReport getYearReport(String deviceCode, Integer year, String sttp, String col) { |
||||||
|
//初始化年份
|
||||||
|
YearReport yearReport = new YearReport(); |
||||||
|
yearReport.init(deviceCode, year); |
||||||
|
//拿到一年数据
|
||||||
|
Date begin = ReportDateUtil.getDate(year, 0, 1, 8, 0, 0); |
||||||
|
Date end = ReportDateUtil.getNextDate(begin, Calendar.YEAR); |
||||||
|
List<ReportData> yearReportData = listDataReport(begin, end, QueryDateTypeEnum.DAY,deviceCode,sttp, col); |
||||||
|
//年度数据转化到报表里,计算每月数据和年数据
|
||||||
|
try { |
||||||
|
toYearReport(yearReport, yearReportData, col,sttp); |
||||||
|
} catch (Exception e) { |
||||||
|
return null; |
||||||
|
} |
||||||
|
//返回数据
|
||||||
|
return yearReport; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 年度数据转化到报表里,然後计算每月统计数据和年统计数据 |
||||||
|
* |
||||||
|
* @param yearReport |
||||||
|
* @param yearReportData |
||||||
|
* @param col |
||||||
|
* @throws ParseException |
||||||
|
*/ |
||||||
|
private void toYearReport(YearReport yearReport, List<ReportData> yearReportData, String col,String sttp) |
||||||
|
throws ParseException { |
||||||
|
//先把数据转化到设计的二维链表里
|
||||||
|
SimpleDateFormat sdf = ReportDateUtil.getSimpleDateFormatByType(QueryDateTypeEnum.DAY); |
||||||
|
Calendar calendar = Calendar.getInstance(); |
||||||
|
for (ReportData reportData : yearReportData) { |
||||||
|
Date tempDay = sdf.parse(reportData.getKeyStr()); |
||||||
|
calendar.setTime(tempDay); |
||||||
|
int month = calendar.get(Calendar.MONTH); |
||||||
|
int day = calendar.get(Calendar.DAY_OF_MONTH); |
||||||
|
String value=reportData.getVal(); |
||||||
|
|
||||||
|
if(value!=null && !"-".equals(value) && !"".equals(value.trim())){ |
||||||
|
value = new BigDecimal(value).setScale(3,BigDecimal.ROUND_DOWN).toString(); |
||||||
|
} |
||||||
|
yearReport.setDayValue(month, day,value); |
||||||
|
} |
||||||
|
//初始化每月列表
|
||||||
|
yearReport.initMonthList(new String[]{ |
||||||
|
StandardData.STANDARD_AVG, |
||||||
|
StandardData.STANDARD_MAX, |
||||||
|
StandardData.STANDARD_MAX_DATE, |
||||||
|
StandardData.STANDARD_MIN, |
||||||
|
StandardData.STANDARD_MIN_DATE |
||||||
|
}); |
||||||
|
//计算每月统计数据
|
||||||
|
calcMonth(yearReport, col,sttp); |
||||||
|
//计算年数据
|
||||||
|
calcYear(yearReport, col,sttp); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
private void toYearRainReport(YearReport yearReport, List<ReportData> yearReportData, String col,String sttp) |
||||||
|
throws ParseException { |
||||||
|
//先把数据转化到设计的二维链表里
|
||||||
|
SimpleDateFormat sdf = ReportDateUtil.getSimpleDateFormatByType(QueryDateTypeEnum.DAY); |
||||||
|
Calendar calendar = Calendar.getInstance(); |
||||||
|
for (ReportData reportData : yearReportData) { |
||||||
|
Date tempDay = sdf.parse(reportData.getKeyStr()); |
||||||
|
calendar.setTime(tempDay); |
||||||
|
int month = calendar.get(Calendar.MONTH); |
||||||
|
int day = calendar.get(Calendar.DAY_OF_MONTH); |
||||||
|
String value=reportData.getVal(); |
||||||
|
|
||||||
|
if(value!=null && !"-".equals(value) && !"".equals(value.trim())){ |
||||||
|
value = new BigDecimal(value).setScale(3,BigDecimal.ROUND_DOWN).toString(); |
||||||
|
} |
||||||
|
yearReport.setDayValue(month, day,value); |
||||||
|
} |
||||||
|
//初始化每月列表
|
||||||
|
yearReport.initMonthList(new String[]{ |
||||||
|
StandardData.STANDARD_AVG, |
||||||
|
StandardData.STANDARD_MAX, |
||||||
|
StandardData.STANDARD_MAX_DATE, |
||||||
|
StandardData.STANDARD_MIN, |
||||||
|
StandardData.STANDARD_MIN_DATE |
||||||
|
}); |
||||||
|
// //计算每月统计数据
|
||||||
|
// calcRainMonth(yearReport);
|
||||||
|
// //计算年数据
|
||||||
|
// calcRainYear(yearReport, col,sttp);
|
||||||
|
} |
||||||
|
|
||||||
|
// private void calcRainMonth(YearReport yearReport) {
|
||||||
|
// StandardData standardData =null;
|
||||||
|
// String stcd = yearReport.getStcd();
|
||||||
|
// List<List<String>> dayList = yearReport.getDayList();
|
||||||
|
// for (int month = 0; month < dayList.size(); month++) {
|
||||||
|
// if (Objects.isNull(standardData)) {
|
||||||
|
// standardData = new StandardData();
|
||||||
|
// }
|
||||||
|
// standardData.dealNullData();
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// if(avgValue!=null && !avgValue.isEmpty()) {
|
||||||
|
// yearReport.setMonthValue(StandardData.STANDARD_AVG, month, avgValue.get(0).getVal());
|
||||||
|
//// yearReport.setMonthValue(StandardData.STANDARD_AVG, month, avgValue.get(stcd));
|
||||||
|
// }else{
|
||||||
|
// yearReport.setMonthValue(StandardData.STANDARD_AVG, month, "-");
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// if(maxValue!=null) {
|
||||||
|
// yearReport.setMonthValue(StandardData.STANDARD_MAX, month, maxValue.get(stcd));
|
||||||
|
// yearReport.setMonthValue(StandardData.STANDARD_MAX_DATE, month, maxValue.get("tm"));
|
||||||
|
// }else{
|
||||||
|
// yearReport.setMonthValue(StandardData.STANDARD_MAX, month, "-");
|
||||||
|
// yearReport.setMonthValue(StandardData.STANDARD_MAX_DATE, month, "-");
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// if(minValue!=null) {
|
||||||
|
// yearReport.setMonthValue(StandardData.STANDARD_MIN, month, minValue.get(stcd));
|
||||||
|
// yearReport.setMonthValue(StandardData.STANDARD_MIN_DATE, month, minValue.get("tm"));
|
||||||
|
// }else{
|
||||||
|
// yearReport.setMonthValue(StandardData.STANDARD_MIN, month, "-");
|
||||||
|
// yearReport.setMonthValue(StandardData.STANDARD_MIN_DATE, month, "-");
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
private void calcMonth(YearReport yearReport, String col,String sttp) { |
||||||
|
//SimpleDateFormat sdf = ReportDateUtil.getSimpleDateFormatByType(QueryDateTypeEnum.DAY);
|
||||||
|
//获取日报表数据
|
||||||
|
StandardData standardData =null; |
||||||
|
String stcd = yearReport.getStcd(); |
||||||
|
List<List<String>> dayList = yearReport.getDayList(); |
||||||
|
for (int month = 0; month < dayList.size(); month++) { |
||||||
|
Date begin = ReportDateUtil.getDate(yearReport.getYear(), month, 1, 8, 0, 0); |
||||||
|
Date end = ReportDateUtil.getNextDate(begin, Calendar.MONTH); |
||||||
|
//拿到一个月的统计数据
|
||||||
|
Map<String,String> maxValue= queryMaxOrMin(stcd, begin, end,1,col); |
||||||
|
Map<String,String> minValue= queryMaxOrMin(stcd, begin, end,2,col); |
||||||
|
// Map<String,String> avgValue= queryMaxOrMin(stcd, begin, end,3,col);
|
||||||
|
List<ReportData> avgValue= listDataReport( begin, end,QueryDateTypeEnum.MONTH,stcd,sttp,col); |
||||||
|
|
||||||
|
if (Objects.isNull(standardData)) { |
||||||
|
standardData = new StandardData(); |
||||||
|
} |
||||||
|
standardData.dealNullData(); |
||||||
|
if(avgValue!=null && !avgValue.isEmpty()) { |
||||||
|
yearReport.setMonthValue(StandardData.STANDARD_AVG, month, avgValue.get(0).getVal()); |
||||||
|
// yearReport.setMonthValue(StandardData.STANDARD_AVG, month, avgValue.get(stcd));
|
||||||
|
}else{ |
||||||
|
yearReport.setMonthValue(StandardData.STANDARD_AVG, month, "-"); |
||||||
|
} |
||||||
|
|
||||||
|
if(maxValue!=null && maxValue.get(stcd)!=null) { |
||||||
|
yearReport.setMonthValue(StandardData.STANDARD_MAX, month, maxValue.get(stcd)); |
||||||
|
yearReport.setMonthValue(StandardData.STANDARD_MAX_DATE, month, maxValue.get("tm")); |
||||||
|
}else{ |
||||||
|
yearReport.setMonthValue(StandardData.STANDARD_MAX, month, "-"); |
||||||
|
yearReport.setMonthValue(StandardData.STANDARD_MAX_DATE, month, "-"); |
||||||
|
} |
||||||
|
|
||||||
|
if(minValue!=null && minValue.get(stcd)!=null) { |
||||||
|
yearReport.setMonthValue(StandardData.STANDARD_MIN, month, minValue.get(stcd)); |
||||||
|
yearReport.setMonthValue(StandardData.STANDARD_MIN_DATE, month, minValue.get("tm")); |
||||||
|
}else{ |
||||||
|
yearReport.setMonthValue(StandardData.STANDARD_MIN, month, "-"); |
||||||
|
yearReport.setMonthValue(StandardData.STANDARD_MIN_DATE, month, "-"); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private void calcYear(YearReport yearReport, String col,String sttp) { |
||||||
|
StandardData standardData =null; |
||||||
|
String stcd = yearReport.getStcd(); |
||||||
|
Date begin = ReportDateUtil.getDate(yearReport.getYear(), 0, 1, 8, 0, 0); |
||||||
|
Date end = ReportDateUtil.getNextDate(begin, Calendar.YEAR); |
||||||
|
Map<String,String> maxValue= queryMaxOrMin(stcd, begin, end,1, col); |
||||||
|
Map<String,String> minValue= queryMaxOrMin(stcd, begin, end,2, col); |
||||||
|
// Map<String,String> avgValue= queryMaxOrMin(stcd, begin, end,3, col);
|
||||||
|
List<ReportData> avgValue= listDataReport( begin, end,QueryDateTypeEnum.YEAR,stcd,sttp,col); |
||||||
|
if (Objects.isNull(standardData)) { |
||||||
|
standardData = new StandardData(); |
||||||
|
} |
||||||
|
standardData.dealNullData(); |
||||||
|
List<ReportData> yearList = new ArrayList<>(); |
||||||
|
if(avgValue!=null && !avgValue.isEmpty()){ |
||||||
|
yearList.add(new ReportData(StandardData.STANDARD_AVG, avgValue.get(0).getVal())); |
||||||
|
// yearList.add(new ReportData(StandardData.STANDARD_AVG, avgValue.get(stcd)));
|
||||||
|
}else{ |
||||||
|
yearList.add(new ReportData(StandardData.STANDARD_AVG, "-")); |
||||||
|
} |
||||||
|
|
||||||
|
if(maxValue!=null && maxValue.get(stcd)!=null) { |
||||||
|
yearList.add(new ReportData(StandardData.STANDARD_MAX, maxValue.get(stcd))); |
||||||
|
yearList.add(new ReportData(StandardData.STANDARD_MAX_DATE, maxValue.get("tm"))); |
||||||
|
}else{ |
||||||
|
yearList.add(new ReportData(StandardData.STANDARD_MAX, "-")); |
||||||
|
yearList.add(new ReportData(StandardData.STANDARD_MAX_DATE, "-")); |
||||||
|
} |
||||||
|
|
||||||
|
if(minValue!=null && minValue.get(stcd)!=null) { |
||||||
|
yearList.add(new ReportData(StandardData.STANDARD_MIN, minValue.get(stcd))); |
||||||
|
yearList.add(new ReportData(StandardData.STANDARD_MIN_DATE, minValue.get("tm"))); |
||||||
|
}else{ |
||||||
|
yearList.add(new ReportData(StandardData.STANDARD_MIN, "-")); |
||||||
|
yearList.add(new ReportData(StandardData.STANDARD_MIN_DATE, "-")); |
||||||
|
} |
||||||
|
|
||||||
|
yearReport.setYearList(yearList); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
//获取测站过程线
|
||||||
|
@Override |
||||||
|
public Report getReportData(List<String> deviceCodes, Date begin, Date end, String type,String sttp,String col) { |
||||||
|
//检查数据是否正常并转化
|
||||||
|
final QueryDateTypeEnum dtEnum = CommonUtil.checkType(type); |
||||||
|
if(deviceCodes==null || deviceCodes.size()<=0){ |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
if(dtEnum ==null){ |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
//初始化报表
|
||||||
|
Report report = new Report(); |
||||||
|
report.initBaseReport(deviceCodes.size(), begin, end, dtEnum); |
||||||
|
//设置基础数据
|
||||||
|
for (int i = 0; i < deviceCodes.size(); i++) { |
||||||
|
String deviceCode = deviceCodes.get(i); |
||||||
|
//获取数据库某个站点不同时间要求的数据
|
||||||
|
List<ReportData> timeDataList = listDataReport(begin, end,dtEnum,deviceCode,sttp,col); |
||||||
|
|
||||||
|
for (ReportData reportData : timeDataList) { |
||||||
|
String value=reportData.getVal(); |
||||||
|
// if(value!=null && !"-".equals(value) && !"".equals(value.trim())){
|
||||||
|
// value = new BigDecimal(value).setScale(3,BigDecimal.ROUND_DOWN).toString();
|
||||||
|
// }
|
||||||
|
report.setBaseCell(reportData.getKeyStr(), i, value); |
||||||
|
} |
||||||
|
} |
||||||
|
return report; |
||||||
|
} |
||||||
|
|
||||||
|
private List<ReportData> listDataReport(Date begin,Date endSt,QueryDateTypeEnum dtEnum,String deviceCode,String sttp,String col) { |
||||||
|
List<ReportData> list=new ArrayList<>(); |
||||||
|
|
||||||
|
//周期类型: 0-> s(秒) 1->、m(分)、2->h(小时)3->、d(天)4->、w(周)5->、n(自然月)、6->y(自然年)
|
||||||
|
Integer saveTimeType=2; |
||||||
|
if(QueryDateTypeEnum.DAY.equals(dtEnum)){ |
||||||
|
saveTimeType = 3; |
||||||
|
} |
||||||
|
if(QueryDateTypeEnum.MONTH.equals(dtEnum)){ |
||||||
|
saveTimeType = 5; |
||||||
|
} |
||||||
|
if(QueryDateTypeEnum.YEAR.equals(dtEnum)){ |
||||||
|
saveTimeType = 6; |
||||||
|
} |
||||||
|
|
||||||
|
LocalDateTime start = LocalDateTime.ofInstant(begin.toInstant(), ZoneId.systemDefault()); |
||||||
|
LocalDateTime end = LocalDateTime.ofInstant(endSt.toInstant(), ZoneId.systemDefault()); |
||||||
|
|
||||||
|
if(sttp.contains("RR") || sttp.contains("ZZ") || sttp.contains("ZQ")){ |
||||||
|
return getDataByDeviceCode(deviceCode, 3, saveTimeType, start, end, col); |
||||||
|
} |
||||||
|
if("PP".equals(sttp)){ |
||||||
|
return getDataByDeviceCode(deviceCode, 4, saveTimeType, start, end, col); |
||||||
|
} |
||||||
|
return list; |
||||||
|
} |
||||||
|
|
||||||
|
List<ReportData> getDataByDeviceCode(String deviceCode,Integer accessRules,Integer saveTimeType, |
||||||
|
LocalDateTime start,LocalDateTime end,String col){ |
||||||
|
List<ReportData> reportData=new ArrayList<>(); |
||||||
|
AnalyseCodeByAnalyseDataPO po=new AnalyseCodeByAnalyseDataPO(); |
||||||
|
po.setDeviceCode(deviceCode); |
||||||
|
|
||||||
|
List<AnalyzeDataConditionPO> signboardConditions=new ArrayList<>(); |
||||||
|
AnalyzeDataConditionPO conditionPO=new AnalyzeDataConditionPO(); |
||||||
|
conditionPO.setBeginTime(start); |
||||||
|
conditionPO.setEndTime(end); |
||||||
|
conditionPO.setSignages(col); |
||||||
|
// conditionPO.setKeepFigures(3);
|
||||||
|
conditionPO.setAccessRules(accessRules); |
||||||
|
conditionPO.setSaveTimeType(saveTimeType); |
||||||
|
conditionPO.setTimeInterval(1); |
||||||
|
conditionPO.setFull(1); |
||||||
|
signboardConditions.add(conditionPO); |
||||||
|
po.setSignboardConditions(signboardConditions); |
||||||
|
|
||||||
|
Result<List<AnalyzeDataConditionVO>> result=analyseDataSearchClient.getAnalyzeDataByAnalyzeCodeAndSignages(po); |
||||||
|
if(result==null || !result.isSuccess()){ |
||||||
|
return reportData; |
||||||
|
} |
||||||
|
List<AnalyzeDataConditionVO> datas=result.getData(); |
||||||
|
if(datas==null || datas.isEmpty()){ |
||||||
|
return reportData; |
||||||
|
} |
||||||
|
for(AnalyzeDataConditionVO vo:datas){ |
||||||
|
List<AnalyseDataTaosVO> dataTaosVOs=vo.getList(); |
||||||
|
for(AnalyseDataTaosVO vv:dataTaosVOs) { |
||||||
|
if(vo.getSignage().equals(col)) { |
||||||
|
ReportData data=new ReportData(); |
||||||
|
data.setKeyStr(CommonUtil.getKeyBySaveTimeType(vv.getTs(),saveTimeType)); |
||||||
|
String val=vv.getVal(); |
||||||
|
data.setStcd(deviceCode); |
||||||
|
data.setVal(val); |
||||||
|
if(val!=null && !"".equals(val)) { |
||||||
|
data.setValue(Double.valueOf(vv.getVal())); |
||||||
|
}else{ |
||||||
|
data.setValue(0.0); |
||||||
|
} |
||||||
|
data.setName(vo.getName()); |
||||||
|
reportData.add(data); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return reportData; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//获取测站最新值
|
||||||
|
@Override |
||||||
|
public List<Map<String,Object>> getLastValues(List<String> stcds,String sttp) { |
||||||
|
List<Map<String,Object>> result=new ArrayList<>(); |
||||||
|
|
||||||
|
List<DeviceSinglePropsValueVO> oldRzList=null; |
||||||
|
List<DeviceSinglePropsValueVO> oldInqList=null; |
||||||
|
List<DeviceSinglePropsValueVO> oldDrpList=null; |
||||||
|
|
||||||
|
List<DeviceSinglePropsValueVO> rzList=null; |
||||||
|
List<DeviceSinglePropsValueVO> inqList=null; |
||||||
|
List<DeviceSinglePropsValueVO> drpList=null; |
||||||
|
|
||||||
|
Date endTime =new Date(); |
||||||
|
Date beginTime= DateUtils.addMinutes(endTime,-60); |
||||||
|
Date beginTime1= DateUtils.addMinutes(beginTime,-60); |
||||||
|
//获取一个最新值
|
||||||
|
if("RR".equals(sttp) || "ZQ".equals(sttp)){ |
||||||
|
rzList = getNewValue(stcds, "water_level", beginTime, endTime); |
||||||
|
inqList = getNewValue(stcds, "flow", beginTime, endTime); |
||||||
|
|
||||||
|
oldRzList = getNewValue(stcds, "water_level", beginTime1, beginTime); |
||||||
|
oldInqList = getNewValue(stcds, "flow", beginTime1, beginTime); |
||||||
|
} |
||||||
|
|
||||||
|
if("PP".equals(sttp)) { |
||||||
|
drpList = getNewValue(stcds, "rain", beginTime, endTime); |
||||||
|
oldDrpList = getNewValue(stcds, "rain", beginTime1, beginTime); |
||||||
|
} |
||||||
|
|
||||||
|
if("ZZ".equals(sttp)){ |
||||||
|
rzList = getNewValue(stcds, "water_level", beginTime, endTime); |
||||||
|
// inqList = getNewValue(stcds, "inq", beginTime, endTime);
|
||||||
|
|
||||||
|
oldRzList = getNewValue(stcds, "water_level", beginTime1, beginTime); |
||||||
|
// oldInqList = getNewValue(stcds, "inq", beginTime1, beginTime);
|
||||||
|
} |
||||||
|
|
||||||
|
for(String stcd:stcds) { |
||||||
|
Map<String,Object> map=new HashMap<>(); |
||||||
|
|
||||||
|
|
||||||
|
map.put("stcd",stcd); |
||||||
|
if("RR".equals(sttp) || "ZQ".equals(sttp)){ |
||||||
|
boolean inqFlag = true; |
||||||
|
boolean rzFlag = true; |
||||||
|
BigDecimal rz=getDataByStcd(stcd,rzList); |
||||||
|
map.put("rz",rz); |
||||||
|
BigDecimal inq=getDataByStcd(stcd,inqList); |
||||||
|
map.put("inq",inq); |
||||||
|
|
||||||
|
|
||||||
|
BigDecimal oldRz=getDataByStcd(stcd,oldRzList); |
||||||
|
if (oldRz.compareTo(rz) > 0) { |
||||||
|
rzFlag = false; |
||||||
|
} |
||||||
|
map.put("isRiseRz",rzFlag); |
||||||
|
|
||||||
|
BigDecimal oldInq=getDataByStcd(stcd,oldInqList); |
||||||
|
if (oldInq.compareTo(inq) > 0) { |
||||||
|
inqFlag = false; |
||||||
|
} |
||||||
|
map.put("isRiseInq",inqFlag); |
||||||
|
} |
||||||
|
if("PP".equals(sttp)){ |
||||||
|
boolean inqDrp = true; |
||||||
|
BigDecimal drp=getDataByStcd(stcd,drpList); |
||||||
|
map.put("drp",drp); |
||||||
|
|
||||||
|
BigDecimal oldDrp=getDataByStcd(stcd,oldDrpList); |
||||||
|
if (oldDrp.compareTo(drp) > 0) { |
||||||
|
inqDrp = false; |
||||||
|
} |
||||||
|
map.put("isRiseDrp",inqDrp); |
||||||
|
} |
||||||
|
|
||||||
|
if("ZZ".equals(sttp)){ |
||||||
|
boolean rzFlag = true; |
||||||
|
BigDecimal rz=getDataByStcd(stcd,rzList); |
||||||
|
map.put("rz",rz); |
||||||
|
|
||||||
|
BigDecimal oldRz=getDataByStcd(stcd,oldRzList); |
||||||
|
if (oldRz.compareTo(rz) > 0) { |
||||||
|
rzFlag = false; |
||||||
|
} |
||||||
|
map.put("isRiseRz",rzFlag); |
||||||
|
} |
||||||
|
|
||||||
|
result.add(map); |
||||||
|
} |
||||||
|
|
||||||
|
return result; |
||||||
|
} |
||||||
|
|
||||||
|
private BigDecimal getDataByStcd(String stcd,List<DeviceSinglePropsValueVO> data){ |
||||||
|
if(data==null || data.isEmpty()){ |
||||||
|
return BigDecimal.ZERO; |
||||||
|
} |
||||||
|
for(DeviceSinglePropsValueVO vo:data){ |
||||||
|
if(stcd.equals(vo.getDeviceCode())){ |
||||||
|
String value=String.valueOf(vo.getValue()); |
||||||
|
if(vo.getValue()!=null && !"".equals(value)) { |
||||||
|
return new BigDecimal(value); |
||||||
|
}else{ |
||||||
|
return BigDecimal.ZERO; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return BigDecimal.ZERO; |
||||||
|
} |
||||||
|
|
||||||
|
List<DeviceSinglePropsValueVO> getNewValue(List<String> stcds,String col,Date beginTime,Date endTime){ |
||||||
|
//获取一个最新值
|
||||||
|
DeviceSinglePropsValueQuery query = new DeviceSinglePropsValueQuery(); |
||||||
|
query.setAccessRule("6"); |
||||||
|
query.setDeviceCodes(stcds); |
||||||
|
query.setSignage(col); |
||||||
|
query.setBeginTime(beginTime); |
||||||
|
query.setEndTime(endTime); |
||||||
|
Result<List<DeviceSinglePropsValueVO>> res=analyseDataSearchClient.getValueOfBacthDeviceCode(query); |
||||||
|
if(res==null || !res.isSuccess()){ |
||||||
|
return null; |
||||||
|
} |
||||||
|
List<DeviceSinglePropsValueVO> list=res.getData(); |
||||||
|
return list; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 获取 对应(计算)值的遥测值 |
||||||
|
* @param deviceCode 设备编码 |
||||||
|
* @param startTime 开始时间 |
||||||
|
* @param endTime 结束时间 |
||||||
|
* @param calcType 0=最早值、1=最大值、2=最小值、3=平均值、4=(累计值/和值)、5=(变化值/差值) 6=最新值 |
||||||
|
// * @param saveTimeType 0-> s(秒) 1->、m(分)、2->h(小时)3->、d(天)4->、w(周)5->、n(自然月)、6->y(自然年)
|
||||||
|
* @param col 对应的物理值 英文 |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public Map<String,String> queryMaxOrMin(String deviceCode, Date startTime, Date endTime, |
||||||
|
Integer calcType, String col) { |
||||||
|
Map<String,String> res=new HashMap<>(); |
||||||
|
|
||||||
|
List<String> signages=new ArrayList<>(); |
||||||
|
signages.add(col); |
||||||
|
ComputeBaseStrategyPO po=new ComputeBaseStrategyPO(); |
||||||
|
LocalDateTime start = LocalDateTime.ofInstant(startTime.toInstant(), ZoneId.systemDefault()); |
||||||
|
po.setBeginTime(start); |
||||||
|
LocalDateTime end = LocalDateTime.ofInstant(endTime.toInstant(), ZoneId.systemDefault()); |
||||||
|
po.setEndTime(end); |
||||||
|
po.setAccessRules(calcType); |
||||||
|
po.setDeviceCode(deviceCode); |
||||||
|
po.setSignages(signages); |
||||||
|
Result<List<AnalyseDataTaosVO>> result=analyseDataSearchClient.getComputeBaseStrategy(po); |
||||||
|
if(result==null || !result.isSuccess()){ |
||||||
|
return res; |
||||||
|
} |
||||||
|
List<AnalyseDataTaosVO> datas=result.getData(); |
||||||
|
|
||||||
|
if(datas!=null && !datas.isEmpty()){ |
||||||
|
for(AnalyseDataTaosVO vo:datas) { |
||||||
|
// if(col.equals(vo.getSignage())) {
|
||||||
|
String value=vo.getVal(); |
||||||
|
String tm=vo.getTs(); |
||||||
|
res.put(deviceCode, value); |
||||||
|
res.put("tm", tm); |
||||||
|
|
||||||
|
// }
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return res; |
||||||
|
} |
||||||
|
|
||||||
|
private AnalyseCodeByAnalyseDataPO getAnalyseCodeByAnalyseDataPO(String deviceCode,Date startTime,Date endTime,Integer calcType, |
||||||
|
Integer saveTimeType,Integer timeInterval,String col){ |
||||||
|
AnalyseCodeByAnalyseDataPO analyzeDataCondition=new AnalyseCodeByAnalyseDataPO(); |
||||||
|
analyzeDataCondition.setDeviceCode(deviceCode); |
||||||
|
|
||||||
|
List<AnalyzeDataConditionPO> signboardConditions=new ArrayList<>(); |
||||||
|
AnalyzeDataConditionPO conditionPO=new AnalyzeDataConditionPO(); |
||||||
|
LocalDateTime start = LocalDateTime.ofInstant(startTime.toInstant(), ZoneId.systemDefault()); |
||||||
|
conditionPO.setBeginTime(start); |
||||||
|
LocalDateTime end = LocalDateTime.ofInstant(endTime.toInstant(), ZoneId.systemDefault()); |
||||||
|
conditionPO.setEndTime(end); |
||||||
|
conditionPO.setAccessRules(calcType); |
||||||
|
if(timeInterval == null) { |
||||||
|
timeInterval = calcTimeInterval(saveTimeType, start, end); |
||||||
|
//加1的目的 就是对小数位进行统一处理
|
||||||
|
conditionPO.setTimeInterval(timeInterval + 1); |
||||||
|
}else{ |
||||||
|
conditionPO.setTimeInterval(timeInterval); |
||||||
|
} |
||||||
|
conditionPO.setSaveTimeType(saveTimeType); |
||||||
|
conditionPO.setFull(1); |
||||||
|
conditionPO.setSignages(col); |
||||||
|
|
||||||
|
// conditionPO.setKeepFigures(3);
|
||||||
|
|
||||||
|
signboardConditions.add(conditionPO); |
||||||
|
analyzeDataCondition.setSignboardConditions(signboardConditions); |
||||||
|
return analyzeDataCondition; |
||||||
|
} |
||||||
|
|
||||||
|
//计算时间间隔
|
||||||
|
private static Integer calcTimeInterval(Integer saveTimeType,LocalDateTime start,LocalDateTime end){ |
||||||
|
Duration duration = Duration.between(start,end); |
||||||
|
switch (saveTimeType) { |
||||||
|
case 1://分
|
||||||
|
return (int)duration.toMinutes(); |
||||||
|
case 2://时
|
||||||
|
return (int)duration.toHours(); |
||||||
|
case 3://天
|
||||||
|
return (int)duration.toDays(); |
||||||
|
case 4://周
|
||||||
|
return (int)duration.toDays()/7; |
||||||
|
case 5://月
|
||||||
|
LocalDate startDate = start.toLocalDate(); |
||||||
|
LocalDate endDate = end.toLocalDate(); |
||||||
|
return Period.between(startDate, endDate).getMonths(); |
||||||
|
case 6://年
|
||||||
|
startDate = start.toLocalDate(); |
||||||
|
endDate = end.toLocalDate(); |
||||||
|
return Period.between(startDate, endDate).getYears(); |
||||||
|
default: |
||||||
|
return (int)duration.getSeconds(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,11 @@ |
|||||||
|
package com.hnac.hzims.waterrain.service.impl; |
||||||
|
|
||||||
|
import org.springblade.core.mp.base.BaseServiceImpl; |
||||||
|
import com.hnac.hzims.waterrain.entity.StStbprpB; |
||||||
|
import com.hnac.hzims.waterrain.mapper.StStbprpBMapper; |
||||||
|
import com.hnac.hzims.waterrain.service.IStStbprpBService; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
@Service |
||||||
|
public class StStbprpBServiceImpl extends BaseServiceImpl<StStbprpBMapper, StStbprpB> implements IStStbprpBService { |
||||||
|
} |
@ -0,0 +1,235 @@ |
|||||||
|
package com.hnac.hzims.waterrain.service.impl; |
||||||
|
|
||||||
|
import com.hnac.hzims.waterrain.entity.HzStPptnR; |
||||||
|
import com.hnac.hzims.waterrain.entity.HzStRiverR; |
||||||
|
import com.hnac.hzims.waterrain.entity.HzStRsvrR; |
||||||
|
import com.hnac.hzims.waterrain.entity.ReorganizeData; |
||||||
|
import com.hnac.hzims.waterrain.enums.WaterFlowRainEnum; |
||||||
|
import com.hnac.hzims.waterrain.mapper.WaterRainReorganizeMapper; |
||||||
|
import com.hnac.hzims.waterrain.service.IWaterRainReorganizeService; |
||||||
|
import com.hnac.hzims.waterrain.util.DateUtil; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
import javax.annotation.Resource; |
||||||
|
import java.text.ParseException; |
||||||
|
import java.text.SimpleDateFormat; |
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.Date; |
||||||
|
import java.util.List; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
@Service |
||||||
|
public class WaterRainReorganizeServiceImpl implements IWaterRainReorganizeService { |
||||||
|
@Resource |
||||||
|
WaterRainReorganizeMapper waterRainReorganizeMapper; |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean batchInsert(ReorganizeData data) { |
||||||
|
String sttp=data.getSttp(); |
||||||
|
if(WaterFlowRainEnum.RR.getCode().equals(sttp)){ |
||||||
|
List<HzStRsvrR> list=dealHzStRsvrR(data); |
||||||
|
if(list!=null && !list.isEmpty()) { |
||||||
|
batchStRsvrR(list); |
||||||
|
return true; |
||||||
|
} |
||||||
|
} |
||||||
|
if(WaterFlowRainEnum.ZZ.getCode().equals(sttp) || WaterFlowRainEnum.ZQ.getCode().equals(sttp)){ |
||||||
|
List<HzStRiverR> list=dealHzStRiverR(data); |
||||||
|
if(list!=null && !list.isEmpty()) { |
||||||
|
batchStRiverR(list); |
||||||
|
return true; |
||||||
|
} |
||||||
|
} |
||||||
|
if(WaterFlowRainEnum.PP.getCode().equals(sttp)){ |
||||||
|
List<HzStPptnR> list=dealHzStPptnR(data); |
||||||
|
if(list!=null && !list.isEmpty()) { |
||||||
|
batchStPptnR(list); |
||||||
|
return true; |
||||||
|
} |
||||||
|
} |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
private List<HzStRsvrR> dealHzStRsvrR(ReorganizeData data){ |
||||||
|
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH"); |
||||||
|
List<HzStRsvrR> list=new ArrayList<>(); |
||||||
|
List<Map<String,Object>> mapList=data.getData(); |
||||||
|
if(mapList!=null && !mapList.isEmpty()){ |
||||||
|
for(Map<String,Object> param:mapList){ |
||||||
|
|
||||||
|
String tm=String.valueOf(param.get("tm")); |
||||||
|
String rz=String.valueOf(param.get("water_level")); |
||||||
|
String inq=String.valueOf(param.get("flow")); |
||||||
|
|
||||||
|
HzStRsvrR stRsvrR=new HzStRsvrR(); |
||||||
|
stRsvrR.setStcd(data.getStcd()); |
||||||
|
stRsvrR.setInq(Double.valueOf(inq)); |
||||||
|
stRsvrR.setRz(Double.valueOf(rz)); |
||||||
|
try { |
||||||
|
stRsvrR.setTm(sdf.parse(tm)); |
||||||
|
} catch (ParseException e) { |
||||||
|
e.printStackTrace(); |
||||||
|
} |
||||||
|
list.add(stRsvrR); |
||||||
|
} |
||||||
|
} |
||||||
|
return list; |
||||||
|
} |
||||||
|
|
||||||
|
private List<HzStRiverR> dealHzStRiverR(ReorganizeData data){ |
||||||
|
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH"); |
||||||
|
List<HzStRiverR> list=new ArrayList<>(); |
||||||
|
List<Map<String,Object>> mapList=data.getData(); |
||||||
|
if(mapList!=null && !mapList.isEmpty()){ |
||||||
|
for(Map<String,Object> param:mapList){ |
||||||
|
|
||||||
|
String tm=String.valueOf(param.get("tm")); |
||||||
|
String z=String.valueOf(param.get("water_level")); |
||||||
|
String q=String.valueOf(param.get("flow")); |
||||||
|
|
||||||
|
HzStRiverR stRiverR=new HzStRiverR(); |
||||||
|
stRiverR.setStcd(data.getStcd()); |
||||||
|
stRiverR.setQ(Double.valueOf(q)); |
||||||
|
stRiverR.setZ(Double.valueOf(z)); |
||||||
|
try { |
||||||
|
stRiverR.setTm(sdf.parse(tm)); |
||||||
|
} catch (ParseException e) { |
||||||
|
e.printStackTrace(); |
||||||
|
} |
||||||
|
list.add(stRiverR); |
||||||
|
} |
||||||
|
} |
||||||
|
return list; |
||||||
|
} |
||||||
|
|
||||||
|
private List<HzStPptnR> dealHzStPptnR(ReorganizeData data){ |
||||||
|
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH"); |
||||||
|
List<HzStPptnR> list=new ArrayList<>(); |
||||||
|
List<Map<String,Object>> mapList=data.getData(); |
||||||
|
if(mapList!=null && !mapList.isEmpty()){ |
||||||
|
for(Map<String,Object> param:mapList){ |
||||||
|
|
||||||
|
String tm=String.valueOf(param.get("tm")); |
||||||
|
String drp=String.valueOf(param.get("rain")); |
||||||
|
|
||||||
|
HzStPptnR stPptnR=new HzStPptnR(); |
||||||
|
stPptnR.setStcd(data.getStcd()); |
||||||
|
stPptnR.setDrp(Double.valueOf(drp)); |
||||||
|
try { |
||||||
|
stPptnR.setTm(sdf.parse(tm)); |
||||||
|
} catch (ParseException e) { |
||||||
|
e.printStackTrace(); |
||||||
|
} |
||||||
|
list.add(stPptnR); |
||||||
|
} |
||||||
|
} |
||||||
|
return list; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void batchStPptnR(List<HzStPptnR> list) { |
||||||
|
waterRainReorganizeMapper.batchStPptnR(list); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void batchStRiverR(List<HzStRiverR> list) { |
||||||
|
waterRainReorganizeMapper.batchStRiverR(list); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void batchStRsvrR(List<HzStRsvrR> list) { |
||||||
|
waterRainReorganizeMapper.batchStRsvrR(list); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int insertHzStPptnR(HzStPptnR hzStPptnR) { |
||||||
|
return waterRainReorganizeMapper.insertHzStPptnR(hzStPptnR); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int insertHzStRsvrR(HzStRsvrR hzStRsvrR) { |
||||||
|
return waterRainReorganizeMapper.insertHzStRsvrR(hzStRsvrR); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int insertHzStRiverR(HzStRiverR hzStRiverR) { |
||||||
|
return waterRainReorganizeMapper.insertHzStRiverR(hzStRiverR); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public List<Map<String, Object>> queryStPptnR(String stcd, String yearMonth) { |
||||||
|
Map<String,Date> dateMap=DateUtil.getStartEnd(yearMonth); |
||||||
|
Date begin= dateMap.get("start"); |
||||||
|
Date endSt= dateMap.get("end"); |
||||||
|
return waterRainReorganizeMapper.queryStPptnR(stcd,begin,endSt); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public List<Map<String, Object>> queryStRsvrR(String stcd, String yearMonth) { |
||||||
|
Map<String,Date> dateMap=DateUtil.getStartEnd(yearMonth); |
||||||
|
Date begin= dateMap.get("start"); |
||||||
|
Date endSt= dateMap.get("end"); |
||||||
|
return waterRainReorganizeMapper.queryStRsvrR(stcd,begin,endSt); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public List<Map<String, Object>> queryStRiverR(String stcd, String yearMonth) { |
||||||
|
Map<String,Date> dateMap= DateUtil.getStartEnd(yearMonth); |
||||||
|
Date begin= dateMap.get("start"); |
||||||
|
Date endSt= dateMap.get("end"); |
||||||
|
return waterRainReorganizeMapper.queryStRiverR(stcd,begin,endSt); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean delStPptnR(String stcd, String yearMonth) { |
||||||
|
Map<String,Date> dateMap= DateUtil.getStartEnd(yearMonth); |
||||||
|
Date begin= dateMap.get("start"); |
||||||
|
Date endSt= dateMap.get("end"); |
||||||
|
return waterRainReorganizeMapper.delStPptnR(stcd,begin,endSt)>0; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean delStRsvrR(String stcd, String yearMonth) { |
||||||
|
Map<String,Date> dateMap= DateUtil.getStartEnd(yearMonth); |
||||||
|
Date begin= dateMap.get("start"); |
||||||
|
Date endSt= dateMap.get("end"); |
||||||
|
return waterRainReorganizeMapper.delStRsvrR(stcd,begin,endSt)>0; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean delStRiverR(String stcd, String yearMonth) { |
||||||
|
Map<String,Date> dateMap= DateUtil.getStartEnd(yearMonth); |
||||||
|
Date begin= dateMap.get("start"); |
||||||
|
Date endSt= dateMap.get("end"); |
||||||
|
return waterRainReorganizeMapper.delStRiverR(stcd,begin,endSt)>0; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public List<Map<String, Object>> queryData(String stcd, String sttp, String yearMonth) { |
||||||
|
if(WaterFlowRainEnum.RR.getCode().equals(sttp)){ |
||||||
|
return queryStRsvrR(stcd,yearMonth); |
||||||
|
} |
||||||
|
if(WaterFlowRainEnum.ZZ.getCode().equals(sttp) || WaterFlowRainEnum.ZQ.getCode().equals(sttp)){ |
||||||
|
return queryStRiverR(stcd,yearMonth); |
||||||
|
} |
||||||
|
if(WaterFlowRainEnum.PP.getCode().equals(sttp)){ |
||||||
|
return queryStPptnR(stcd,yearMonth); |
||||||
|
} |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean delData(String stcd, String sttp, String yearMonth) { |
||||||
|
if(WaterFlowRainEnum.RR.getCode().equals(sttp)){ |
||||||
|
return delStRsvrR(stcd,yearMonth); |
||||||
|
} |
||||||
|
if(WaterFlowRainEnum.ZZ.getCode().equals(sttp) || WaterFlowRainEnum.ZQ.getCode().equals(sttp)){ |
||||||
|
return delStRiverR(stcd,yearMonth); |
||||||
|
} |
||||||
|
if(WaterFlowRainEnum.PP.getCode().equals(sttp)){ |
||||||
|
return delStPptnR(stcd,yearMonth); |
||||||
|
} |
||||||
|
return false; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,8 @@ |
|||||||
|
package com.hnac.hzims.waterrain.service.impl; |
||||||
|
|
||||||
|
import com.hnac.hzims.waterrain.service.IWaterRainService; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
@Service |
||||||
|
public class WaterRainServiceImpl implements IWaterRainService { |
||||||
|
} |
@ -0,0 +1,31 @@ |
|||||||
|
package com.hnac.hzims.waterrain.util; |
||||||
|
|
||||||
|
import java.text.ParseException; |
||||||
|
import java.text.SimpleDateFormat; |
||||||
|
import java.util.Calendar; |
||||||
|
import java.util.Date; |
||||||
|
import java.util.HashMap; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
public class DateUtil { |
||||||
|
public static Map<String,Date> getStartEnd(String yearMonth){ |
||||||
|
Map<String,Date> data=new HashMap<>(); |
||||||
|
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
||||||
|
try { |
||||||
|
Date begin = sdf.parse(yearMonth+"-01 00:00:00"); |
||||||
|
// 最大天数
|
||||||
|
Date endSt = sdf.parse(yearMonth+"-"+getMaxDayByYearMonth(begin)+" 23:59:59"); |
||||||
|
data.put("start",begin); |
||||||
|
data.put("end",endSt); |
||||||
|
} catch (ParseException e) { |
||||||
|
e.printStackTrace(); |
||||||
|
} |
||||||
|
return data; |
||||||
|
} |
||||||
|
|
||||||
|
public static int getMaxDayByYearMonth(Date start) { |
||||||
|
Calendar calendar = Calendar.getInstance(); |
||||||
|
calendar.setTime(start); |
||||||
|
return calendar.getActualMaximum(Calendar.DAY_OF_MONTH); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,64 @@ |
|||||||
|
package com.hnac.hzims.waterrain.util; |
||||||
|
|
||||||
|
|
||||||
|
import com.hnac.hzims.waterrain.entity.StStbprpB; |
||||||
|
|
||||||
|
import java.math.BigDecimal; |
||||||
|
|
||||||
|
public class GisUtil { |
||||||
|
public static void dealGisData(StStbprpB stStbprpB){ |
||||||
|
if(stStbprpB!=null) { |
||||||
|
stStbprpB.setLgtd(dealData(stStbprpB.getNlgtd())); |
||||||
|
stStbprpB.setLttd(dealData(stStbprpB.getNlttd())); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// public static void main(String[] args) {
|
||||||
|
// System.out.println(dealData(new BigDecimal("10.121806")));
|
||||||
|
// }
|
||||||
|
|
||||||
|
private static String dealData(Double data0){ |
||||||
|
if(data0!=null && new BigDecimal(data0).compareTo(BigDecimal.ZERO)!=0) { |
||||||
|
BigDecimal data=new BigDecimal(data0); |
||||||
|
//度
|
||||||
|
String str=intVal(data)+"°"; |
||||||
|
|
||||||
|
//分
|
||||||
|
String dataStr = String.valueOf(data); |
||||||
|
if(dataStr.indexOf(".")>-1) { |
||||||
|
String[] dataArr = dataStr.split("\\."); |
||||||
|
data = mul("0." + dataArr[1]); |
||||||
|
str += intVal(data) + "'"; |
||||||
|
}else{ |
||||||
|
str += "0'"; |
||||||
|
} |
||||||
|
|
||||||
|
//秒
|
||||||
|
dataStr=String.valueOf(data); |
||||||
|
if(dataStr.indexOf(".")>-1) { |
||||||
|
String[] dataArr = dataStr.split("\\."); |
||||||
|
data = mul("0." + dataArr[1]); |
||||||
|
str+=data.setScale(5, BigDecimal.ROUND_DOWN).stripTrailingZeros()+"\""; |
||||||
|
}else{ |
||||||
|
str += "0\""; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
return str; |
||||||
|
} |
||||||
|
return "0°"; |
||||||
|
} |
||||||
|
|
||||||
|
private static int intVal(BigDecimal data){ |
||||||
|
return data.setScale( 0, BigDecimal.ROUND_DOWN).intValue(); |
||||||
|
} |
||||||
|
|
||||||
|
private static BigDecimal mul(String data){ |
||||||
|
return new BigDecimal(data).multiply(new BigDecimal("60")); |
||||||
|
} |
||||||
|
|
||||||
|
// public static void main(String[] args) {
|
||||||
|
// String str=dealData(new BigDecimal("0.0"));
|
||||||
|
// System.out.println(str);
|
||||||
|
// }
|
||||||
|
} |
@ -0,0 +1,26 @@ |
|||||||
|
package com.hnac.hzims.waterrain.util; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||||
|
import com.hnac.hzims.waterrain.entity.StStbprpB; |
||||||
|
|
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
public class ParamUtil { |
||||||
|
public static LambdaQueryWrapper<StStbprpB> conditionStStbprpB(Map<String, Object> param){ |
||||||
|
LambdaQueryWrapper<StStbprpB> wrapper=new LambdaQueryWrapper(); |
||||||
|
if(param.get("stcd")!=null) { |
||||||
|
wrapper.like(StStbprpB::getStcd,param.get("stcd")); |
||||||
|
} |
||||||
|
if(param.get("stnm")!=null && !"".equals(param.get("stnm").toString())) { |
||||||
|
wrapper.like(StStbprpB::getStnm,param.get("stnm")); |
||||||
|
} |
||||||
|
if(param.get("sttp")!=null) { |
||||||
|
String sttp=param.get("sttp").toString(); |
||||||
|
wrapper.in(StStbprpB::getSttp,sttp.split(",")); |
||||||
|
} |
||||||
|
if(param.get("rscd")!=null) { |
||||||
|
wrapper.like(StStbprpB::getRscd,param.get("rscd")); |
||||||
|
} |
||||||
|
return wrapper; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,27 @@ |
|||||||
|
package com.hnac.hzims.waterrain.wrapper; |
||||||
|
|
||||||
|
import org.springblade.core.mp.support.BaseEntityWrapper; |
||||||
|
import org.springblade.core.tool.utils.BeanUtil; |
||||||
|
import org.springblade.core.tool.utils.Func; |
||||||
|
import org.springblade.system.cache.DictCache; |
||||||
|
import com.hnac.hzims.waterrain.entity.StStbprpB; |
||||||
|
import com.hnac.hzims.waterrain.vo.StStbprpBVo; |
||||||
|
|
||||||
|
import java.util.Objects; |
||||||
|
|
||||||
|
public class StStbprpBWrapper extends BaseEntityWrapper<StStbprpB, StStbprpBVo> { |
||||||
|
public StStbprpBWrapper() { |
||||||
|
} |
||||||
|
|
||||||
|
public static StStbprpBWrapper build() { |
||||||
|
return new StStbprpBWrapper(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public StStbprpBVo entityVO(StStbprpB stStbprpB) { |
||||||
|
StStbprpBVo stbprpBVo = (StStbprpBVo) Objects.requireNonNull(BeanUtil.copy(stStbprpB, StStbprpBVo.class)); |
||||||
|
String sttpName = DictCache.getValue("st_station_type", Func.toStr(stbprpBVo.getSttp())); |
||||||
|
stbprpBVo.setSttpName(sttpName); |
||||||
|
return stbprpBVo; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,30 @@ |
|||||||
|
#服务器端口 |
||||||
|
server: |
||||||
|
port: 8200 |
||||||
|
|
||||||
|
#数据源配置 |
||||||
|
#spring: |
||||||
|
# datasource: |
||||||
|
# url: ${blade.datasource.dev.url} |
||||||
|
# username: ${blade.datasource.dev.username} |
||||||
|
# password: ${blade.datasource.dev.password} |
||||||
|
|
||||||
|
spring: |
||||||
|
#排除DruidDataSourceAutoConfigure |
||||||
|
autoconfigure: |
||||||
|
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure |
||||||
|
datasource: |
||||||
|
dynamic: |
||||||
|
#设置默认的数据源或者数据源组,默认值即为master |
||||||
|
primary: master |
||||||
|
datasource: |
||||||
|
master: |
||||||
|
url: jdbc:mysql://127.0.0.1:3306/equipment?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&tinyInt1isBit=false&allowMultiQueries=true&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true |
||||||
|
username: root |
||||||
|
password: 123456 |
||||||
|
slave: |
||||||
|
url: jdbc:mysql://127.0.0.1:3306/equipment?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&tinyInt1isBit=false&allowMultiQueries=true&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true |
||||||
|
username: root |
||||||
|
password: 123456 |
||||||
|
demo: |
||||||
|
name: aaa |
@ -0,0 +1,28 @@ |
|||||||
|
#服务器端口 |
||||||
|
server: |
||||||
|
port: 8200 |
||||||
|
|
||||||
|
#数据源配置 |
||||||
|
#spring: |
||||||
|
# datasource: |
||||||
|
# url: ${blade.datasource.prod.url} |
||||||
|
# username: ${blade.datasource.prod.username} |
||||||
|
# password: ${blade.datasource.prod.password} |
||||||
|
|
||||||
|
spring: |
||||||
|
#排除DruidDataSourceAutoConfigure |
||||||
|
autoconfigure: |
||||||
|
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure |
||||||
|
datasource: |
||||||
|
dynamic: |
||||||
|
#设置默认的数据源或者数据源组,默认值即为master |
||||||
|
primary: master |
||||||
|
datasource: |
||||||
|
master: |
||||||
|
url: ${blade.datasource.demo.master.url} |
||||||
|
username: ${blade.datasource.demo.master.username} |
||||||
|
password: ${blade.datasource.demo.master.password} |
||||||
|
slave: |
||||||
|
url: ${blade.datasource.demo.slave.url} |
||||||
|
username: ${blade.datasource.demo.slave.username} |
||||||
|
password: ${blade.datasource.demo.slave.password} |
@ -0,0 +1,28 @@ |
|||||||
|
#服务器端口 |
||||||
|
server: |
||||||
|
port: 8200 |
||||||
|
|
||||||
|
#数据源配置 |
||||||
|
#spring: |
||||||
|
# datasource: |
||||||
|
# url: ${blade.datasource.test.url} |
||||||
|
# username: ${blade.datasource.test.username} |
||||||
|
# password: ${blade.datasource.test.password} |
||||||
|
|
||||||
|
spring: |
||||||
|
#排除DruidDataSourceAutoConfigure |
||||||
|
autoconfigure: |
||||||
|
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure |
||||||
|
datasource: |
||||||
|
dynamic: |
||||||
|
#设置默认的数据源或者数据源组,默认值即为master |
||||||
|
primary: master |
||||||
|
datasource: |
||||||
|
master: |
||||||
|
url: ${blade.datasource.demo.master.url} |
||||||
|
username: ${blade.datasource.demo.master.username} |
||||||
|
password: ${blade.datasource.demo.master.password} |
||||||
|
slave: |
||||||
|
url: ${blade.datasource.demo.slave.url} |
||||||
|
username: ${blade.datasource.demo.slave.username} |
||||||
|
password: ${blade.datasource.demo.slave.password} |
@ -0,0 +1,13 @@ |
|||||||
|
#mybatis-plus配置 |
||||||
|
mybatis-plus: |
||||||
|
mapper-locations: classpath:com/hnac/hzims/**/mapper/*Mapper.xml |
||||||
|
#实体扫描,多个package用逗号或者分号分隔 |
||||||
|
typeAliasesPackage: com.hnac.hzims.**.entity |
||||||
|
|
||||||
|
#swagger扫描路径配置 |
||||||
|
swagger: |
||||||
|
base-packages: |
||||||
|
- org.springbalde |
||||||
|
- com.hnac |
||||||
|
|
||||||
|
|
@ -0,0 +1,7 @@ |
|||||||
|
_ _ ____ ___ __ __ ___ _ _ ___ _ _ ___ |
||||||
|
| || | |_ / |_ _| | \/ | / __| o O O | | | | | _ \ o O O | | | | | _ \ |
||||||
|
| __ | / / | | | |\/| | \__ \ o | |_| | | _/ o | |_| | | _/ |
||||||
|
|_||_| /___| |___| |_|__|_| |___/ TS__[O] \___/ _|_|_ TS__[O] \___/ _|_|_ |
||||||
|
_|"""""|_|"""""|_|"""""|_|"""""|_|"""""| {======|_|"""""|_| """ | {======|_|"""""|_| """ | |
||||||
|
"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'./o--000'"`-0-0-'"`-0-0-'./o--000'"`-0-0-'"`-0-0-' |
||||||
|
|
Loading…
Reference in new issue