Merge branch 'dev-tw'
This commit is contained in:
commit
b03837f201
@ -64,12 +64,14 @@ public class SecurityConfig {
|
|||||||
// .requestMatchers("/eng/**").permitAll()
|
// .requestMatchers("/eng/**").permitAll()
|
||||||
// .requestMatchers("/eq/**").permitAll()
|
// .requestMatchers("/eq/**").permitAll()
|
||||||
// .requestMatchers("/env/**").permitAll()
|
// .requestMatchers("/env/**").permitAll()
|
||||||
|
// .requestMatchers("/warn/**").permitAll()
|
||||||
// .requestMatchers("/wt/**").permitAll()
|
// .requestMatchers("/wt/**").permitAll()
|
||||||
// .requestMatchers("/fb/**").permitAll()
|
// .requestMatchers("/fb/**").permitAll()
|
||||||
// .requestMatchers("/zq/**").permitAll()
|
// .requestMatchers("/zq/**").permitAll()
|
||||||
// .requestMatchers("/wq/**").permitAll()
|
// .requestMatchers("/wq/**").permitAll()
|
||||||
// .requestMatchers("/vd/**").permitAll()
|
// .requestMatchers("/vd/**").permitAll()
|
||||||
// .requestMatchers("/fp/**").permitAll()
|
// .requestMatchers("/fp/**").permitAll()
|
||||||
|
// .requestMatchers("/fpr/**").permitAll()
|
||||||
// .requestMatchers("/fh/**").permitAll()
|
// .requestMatchers("/fh/**").permitAll()
|
||||||
// .requestMatchers("/data/**").permitAll()
|
// .requestMatchers("/data/**").permitAll()
|
||||||
.requestMatchers("/sms/**").permitAll()
|
.requestMatchers("/sms/**").permitAll()
|
||||||
|
|||||||
@ -64,14 +64,14 @@ public class SwaggerConfig {
|
|||||||
@Bean
|
@Bean
|
||||||
public GroupedOpenApi groupEnvWTApi() {
|
public GroupedOpenApi groupEnvWTApi() {
|
||||||
return GroupedOpenApi.builder()
|
return GroupedOpenApi.builder()
|
||||||
.group("3.1 全过程-生态环保数据服务-水温监测")
|
.group("3.1 全过程-生态环保数据服务-水温监测(wt)")
|
||||||
.packagesToScan("com.yfd.platform.qgc_env.wt.controller")
|
.packagesToScan("com.yfd.platform.qgc_env.wt.controller")
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
@Bean
|
@Bean
|
||||||
public GroupedOpenApi groupEnvWQApi() {
|
public GroupedOpenApi groupEnvWQApi() {
|
||||||
return GroupedOpenApi.builder()
|
return GroupedOpenApi.builder()
|
||||||
.group("3.2 全过程-生态环保数据服务-水质监测")
|
.group("3.2 全过程-生态环保数据服务-水质监测(wq)")
|
||||||
.packagesToScan("com.yfd.platform.qgc_env.wq.controller")
|
.packagesToScan("com.yfd.platform.qgc_env.wq.controller")
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
@ -79,7 +79,7 @@ public class SwaggerConfig {
|
|||||||
@Bean
|
@Bean
|
||||||
public GroupedOpenApi groupEnvFPApi() {
|
public GroupedOpenApi groupEnvFPApi() {
|
||||||
return GroupedOpenApi.builder()
|
return GroupedOpenApi.builder()
|
||||||
.group("3.3 全过程-生态环保数据服务-过鱼设施")
|
.group("3.3 全过程-生态环保数据服务-过鱼设施(fp)")
|
||||||
.packagesToScan("com.yfd.platform.qgc_env.fp.controller")
|
.packagesToScan("com.yfd.platform.qgc_env.fp.controller")
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
@ -87,7 +87,7 @@ public class SwaggerConfig {
|
|||||||
@Bean
|
@Bean
|
||||||
public GroupedOpenApi groupEnvVDApi() {
|
public GroupedOpenApi groupEnvVDApi() {
|
||||||
return GroupedOpenApi.builder()
|
return GroupedOpenApi.builder()
|
||||||
.group("3.3.1 全过程-生态环保数据服务-过鱼设施-过鱼监测(VD视频模块)")
|
.group("3.3.1 全过程-生态环保数据服务-过鱼设施-过鱼监测(vd视频模块)")
|
||||||
.packagesToScan("com.yfd.platform.qgc_env.vd.controller")
|
.packagesToScan("com.yfd.platform.qgc_env.vd.controller")
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
@ -97,7 +97,7 @@ public class SwaggerConfig {
|
|||||||
@Bean
|
@Bean
|
||||||
public GroupedOpenApi groupEnvFHApi() {
|
public GroupedOpenApi groupEnvFHApi() {
|
||||||
return GroupedOpenApi.builder()
|
return GroupedOpenApi.builder()
|
||||||
.group("3.4 全过程-生态环保数据服务-栖息地")
|
.group("3.4 全过程-生态环保数据服务-栖息地(fh)")
|
||||||
.packagesToScan("com.yfd.platform.qgc_env.fh.controller")
|
.packagesToScan("com.yfd.platform.qgc_env.fh.controller")
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
@ -105,7 +105,7 @@ public class SwaggerConfig {
|
|||||||
@Bean
|
@Bean
|
||||||
public GroupedOpenApi groupEnvZQApi() {
|
public GroupedOpenApi groupEnvZQApi() {
|
||||||
return GroupedOpenApi.builder()
|
return GroupedOpenApi.builder()
|
||||||
.group("3.4.1 全过程-生态环保数据服务-栖息地-水文模块")
|
.group("3.4.1 全过程-生态环保数据服务-栖息地-水文模块(zq)")
|
||||||
.packagesToScan("com.yfd.platform.qgc_env.zq.controller")
|
.packagesToScan("com.yfd.platform.qgc_env.zq.controller")
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
@ -114,7 +114,7 @@ public class SwaggerConfig {
|
|||||||
@Bean
|
@Bean
|
||||||
public GroupedOpenApi groupEnvVapApi() {
|
public GroupedOpenApi groupEnvVapApi() {
|
||||||
return GroupedOpenApi.builder()
|
return GroupedOpenApi.builder()
|
||||||
.group("3.5 全过程-生态环保数据服务-珍稀动植物")
|
.group("3.5 全过程-生态环保数据服务-珍稀动植物(vap)")
|
||||||
.packagesToScan("com.yfd.platform.qgc_env.vap.controller")
|
.packagesToScan("com.yfd.platform.qgc_env.vap.controller")
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
@ -122,7 +122,7 @@ public class SwaggerConfig {
|
|||||||
@Bean
|
@Bean
|
||||||
public GroupedOpenApi groupEnvFprApi() {
|
public GroupedOpenApi groupEnvFprApi() {
|
||||||
return GroupedOpenApi.builder()
|
return GroupedOpenApi.builder()
|
||||||
.group("3.6 全过程-生态环保数据服务-鱼类调查")
|
.group("3.6 全过程-生态环保数据服务-鱼类调查(fpr)")
|
||||||
.packagesToScan("com.yfd.platform.qgc_env.fpr.controller")
|
.packagesToScan("com.yfd.platform.qgc_env.fpr.controller")
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
@ -130,11 +130,21 @@ public class SwaggerConfig {
|
|||||||
@Bean
|
@Bean
|
||||||
public GroupedOpenApi groupEnvFbApi() {
|
public GroupedOpenApi groupEnvFbApi() {
|
||||||
return GroupedOpenApi.builder()
|
return GroupedOpenApi.builder()
|
||||||
.group("3.7 全过程-生态环保数据服务-增殖放流")
|
.group("3.7 全过程-生态环保数据服务-增殖放流(fb)")
|
||||||
.packagesToScan("com.yfd.platform.qgc_env.fb.controller")
|
.packagesToScan("com.yfd.platform.qgc_env.fb.controller")
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public GroupedOpenApi groupEnvWarnApi() {
|
||||||
|
return GroupedOpenApi.builder()
|
||||||
|
.group("3.8 全过程-生态环保数据服务-智能告警(warn)")
|
||||||
|
.packagesToScan("com.yfd.platform.qgc_env.warn.controller")
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -150,7 +160,7 @@ public class SwaggerConfig {
|
|||||||
@Bean
|
@Bean
|
||||||
public GroupedOpenApi groupEngEqApi() {
|
public GroupedOpenApi groupEngEqApi() {
|
||||||
return GroupedOpenApi.builder()
|
return GroupedOpenApi.builder()
|
||||||
.group("4.1. 全过程-常规水电数据服务-生态流量")
|
.group("4.1. 全过程-常规水电数据服务-生态流量(eq)")
|
||||||
.packagesToScan("com.yfd.platform.qgc_eng.eq.controller")
|
.packagesToScan("com.yfd.platform.qgc_eng.eq.controller")
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import com.yfd.platform.annotation.Log;
|
|||||||
import com.yfd.platform.common.DataSourceRequest;
|
import com.yfd.platform.common.DataSourceRequest;
|
||||||
import com.yfd.platform.config.ResponseResult;
|
import com.yfd.platform.config.ResponseResult;
|
||||||
import com.yfd.platform.qgc_base.domain.SdEngInfoBH;
|
import com.yfd.platform.qgc_base.domain.SdEngInfoBH;
|
||||||
|
import com.yfd.platform.qgc_base.domain.SdEngInfoBHOperateRequest;
|
||||||
import com.yfd.platform.qgc_base.domain.SdEngInfoBHRequest;
|
import com.yfd.platform.qgc_base.domain.SdEngInfoBHRequest;
|
||||||
import com.yfd.platform.qgc_base.service.ISdEngInfoBHService;
|
import com.yfd.platform.qgc_base.service.ISdEngInfoBHService;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
@ -91,16 +92,16 @@ public class SdEngInfoBHController {
|
|||||||
@Log(module = "电站管理", value = "新增电站")
|
@Log(module = "电站管理", value = "新增电站")
|
||||||
@PostMapping("/add")
|
@PostMapping("/add")
|
||||||
@Operation(summary = "新增电站")
|
@Operation(summary = "新增电站")
|
||||||
public ResponseResult add(@RequestBody SdEngInfoBH engInfo) {
|
public ResponseResult add(@RequestBody SdEngInfoBHOperateRequest request) {
|
||||||
boolean result = engInfoBHService.addEngInfo(engInfo);
|
boolean result = engInfoBHService.addEngInfo(request.getEngInfo(), request.getSource());
|
||||||
return result ? ResponseResult.success("新增成功") : ResponseResult.error("新增失败");
|
return result ? ResponseResult.success("新增成功") : ResponseResult.error("新增失败");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Log(module = "电站管理", value = "修改电站")
|
@Log(module = "电站管理", value = "修改电站")
|
||||||
@PostMapping("/update")
|
@PostMapping("/update")
|
||||||
@Operation(summary = "修改电站")
|
@Operation(summary = "修改电站")
|
||||||
public ResponseResult update(@RequestBody SdEngInfoBH engInfo) {
|
public ResponseResult update(@RequestBody SdEngInfoBHOperateRequest request) {
|
||||||
boolean result = engInfoBHService.updateEngInfo(engInfo);
|
boolean result = engInfoBHService.updateEngInfo(request.getEngInfo(), request.getSource());
|
||||||
return result ? ResponseResult.success("修改成功") : ResponseResult.error("修改失败");
|
return result ? ResponseResult.success("修改成功") : ResponseResult.error("修改失败");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -111,4 +112,5 @@ public class SdEngInfoBHController {
|
|||||||
boolean result = engInfoBHService.deleteEngInfo(stcd);
|
boolean result = engInfoBHService.deleteEngInfo(stcd);
|
||||||
return result ? ResponseResult.success("删除成功") : ResponseResult.error("删除失败");
|
return result ? ResponseResult.success("删除成功") : ResponseResult.error("删除失败");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,6 +27,12 @@ public class SdEngMonitorController {
|
|||||||
return ResponseResult.successData(engInfoBHService.getStInfoByStcd(stcd));
|
return ResponseResult.successData(engInfoBHService.getStInfoByStcd(stcd));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/msstbprpt/getStcdInfo")
|
||||||
|
@Operation(summary = "根据站码查询电站详情兼容结构")
|
||||||
|
public ResponseResult getStcdInfo(@RequestParam String stcd) {
|
||||||
|
return ResponseResult.successData(engInfoBHService.getStcdInfo(stcd));
|
||||||
|
}
|
||||||
|
|
||||||
@PostMapping("/eiaapproval/GetKendoList")
|
@PostMapping("/eiaapproval/GetKendoList")
|
||||||
@Operation(summary = "查询生态环保批复文件列表")
|
@Operation(summary = "查询生态环保批复文件列表")
|
||||||
public ResponseResult getEiaapprovalKendoList(@RequestBody DataSourceRequest dataSourceRequest) {
|
public ResponseResult getEiaapprovalKendoList(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
|||||||
@ -111,6 +111,15 @@ public class SdRvcdDicController {
|
|||||||
return ResponseResult.successData(rvcdDicService.selectForDropdown(rvnm, rvcd));
|
return ResponseResult.successData(rvcdDicService.selectForDropdown(rvnm, rvcd));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/selectRvcdDropdown")
|
||||||
|
@Operation(summary = "流域下拉框列表查询")
|
||||||
|
public ResponseResult selectRvcdDropdown(
|
||||||
|
@RequestParam(required = false) String rvnm,
|
||||||
|
@RequestParam(required = false) String baseId
|
||||||
|
) {
|
||||||
|
return ResponseResult.successData(rvcdDicService.selectRvcdDropdown(rvnm,baseId));
|
||||||
|
}
|
||||||
|
|
||||||
@GetMapping("/regDropdown")
|
@GetMapping("/regDropdown")
|
||||||
@Operation(summary = "下拉框列表查询(注册)")
|
@Operation(summary = "下拉框列表查询(注册)")
|
||||||
public ResponseResult regDropdown(
|
public ResponseResult regDropdown(
|
||||||
|
|||||||
@ -0,0 +1,32 @@
|
|||||||
|
package com.yfd.platform.qgc_base.domain;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@TableName("MS_OPERATION_LOG")
|
||||||
|
public class MsOperationLog implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@TableId(type = IdType.ASSIGN_UUID)
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
@TableField("OPERATOR")
|
||||||
|
private String operator;
|
||||||
|
|
||||||
|
@TableField("OPERATE_TIME")
|
||||||
|
private Date operateTime;
|
||||||
|
|
||||||
|
@TableField("SOURCE")
|
||||||
|
private String source;
|
||||||
|
|
||||||
|
@TableField("REMARK")
|
||||||
|
private String remark;
|
||||||
|
}
|
||||||
@ -0,0 +1,49 @@
|
|||||||
|
package com.yfd.platform.qgc_base.domain;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@TableName("MS_OPERATION_LOG_DETAIL")
|
||||||
|
public class MsOperationLogDetail implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@TableId(type = IdType.ASSIGN_UUID)
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
@TableField("MAIN_ID")
|
||||||
|
private String mainId;
|
||||||
|
|
||||||
|
@TableField("FIELD_CODE")
|
||||||
|
private String fieldCode;
|
||||||
|
|
||||||
|
@TableField("TABLE_NAME")
|
||||||
|
private String tableName;
|
||||||
|
|
||||||
|
@TableField("FIELD_MEANING")
|
||||||
|
private String fieldMeaning;
|
||||||
|
|
||||||
|
@TableField("STATION_CODE")
|
||||||
|
private String stationCode;
|
||||||
|
|
||||||
|
@TableField("OLD_VALUE_CODE")
|
||||||
|
private String oldValueCode;
|
||||||
|
|
||||||
|
@TableField("OLD_VALUE_NAME")
|
||||||
|
private String oldValueName;
|
||||||
|
|
||||||
|
@TableField("NEW_VALUE_CODE")
|
||||||
|
private String newValueCode;
|
||||||
|
|
||||||
|
@TableField("NEW_VALUE_NAME")
|
||||||
|
private String newValueName;
|
||||||
|
|
||||||
|
@TableField("REMARK")
|
||||||
|
private String remark;
|
||||||
|
}
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
package com.yfd.platform.qgc_base.domain;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class SdEngInfoBHOperateRequest {
|
||||||
|
|
||||||
|
private SdEngInfoBH engInfo;
|
||||||
|
|
||||||
|
private String source;
|
||||||
|
}
|
||||||
@ -13,8 +13,10 @@ public class SdEngInfoBHRequest {
|
|||||||
private String baseId;
|
private String baseId;
|
||||||
private String hbrvcd;
|
private String hbrvcd;
|
||||||
private String rvcd;
|
private String rvcd;
|
||||||
|
private String reachcd;
|
||||||
private List<String> basIds;
|
private List<String> basIds;
|
||||||
private List<String> hbrvcds;
|
private List<String> hbrvcds;
|
||||||
private List<String> rvcds;
|
private List<String> rvcds;
|
||||||
|
// private List<String> rvcds;
|
||||||
private String ennm;
|
private String ennm;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,51 @@
|
|||||||
|
package com.yfd.platform.qgc_base.domain.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Schema(description = "电站单站基础信息")
|
||||||
|
public class EngStBaseInfoVo {
|
||||||
|
|
||||||
|
@Schema(description = "站点编码")
|
||||||
|
private String stcd;
|
||||||
|
|
||||||
|
@Schema(description = "站点名称")
|
||||||
|
private String stnm;
|
||||||
|
|
||||||
|
@Schema(description = "站类编码")
|
||||||
|
private String sttpCode;
|
||||||
|
|
||||||
|
@Schema(description = "站类名称")
|
||||||
|
private String sttpName;
|
||||||
|
|
||||||
|
@Schema(description = "站类全路径")
|
||||||
|
private String sttpFullPath;
|
||||||
|
|
||||||
|
@Schema(description = "站类层级")
|
||||||
|
private Integer sttpTreeLevel;
|
||||||
|
|
||||||
|
@Schema(description = "关联站点编码")
|
||||||
|
private String stCode;
|
||||||
|
|
||||||
|
@Schema(description = "关联站点名称")
|
||||||
|
private String stName;
|
||||||
|
|
||||||
|
@Schema(description = "所属基地编码")
|
||||||
|
private String baseId;
|
||||||
|
|
||||||
|
@Schema(description = "所属基地名称")
|
||||||
|
private String baseName;
|
||||||
|
|
||||||
|
@Schema(description = "所属基地流域编码")
|
||||||
|
private String hbrvcd;
|
||||||
|
|
||||||
|
@Schema(description = "所属基地流域名称")
|
||||||
|
private String hbrvcdName;
|
||||||
|
|
||||||
|
@Schema(description = "所属流域编码")
|
||||||
|
private String rvcd;
|
||||||
|
|
||||||
|
@Schema(description = "所属流域名称")
|
||||||
|
private String rvcdName;
|
||||||
|
}
|
||||||
@ -0,0 +1,26 @@
|
|||||||
|
package com.yfd.platform.qgc_base.domain.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Schema(description = "电站详情返回")
|
||||||
|
public class EngStInfoResultVo {
|
||||||
|
|
||||||
|
@Schema(description = "主信息兼容对象")
|
||||||
|
private Map<String, Object> msStbprpT = new LinkedHashMap<>();
|
||||||
|
|
||||||
|
@Schema(description = "测值列表")
|
||||||
|
private List<Object> stcdValVoList = new ArrayList<>();
|
||||||
|
|
||||||
|
@Schema(description = "关联列表")
|
||||||
|
private List<Object> relList = new ArrayList<>();
|
||||||
|
|
||||||
|
@Schema(description = "站点基础信息")
|
||||||
|
private EngStBaseInfoVo stBaseInfo;
|
||||||
|
}
|
||||||
@ -20,6 +20,7 @@ public class EngVmsstbprptVo implements Serializable {
|
|||||||
private String ennm;
|
private String ennm;
|
||||||
private String baseId;
|
private String baseId;
|
||||||
private String baseName;
|
private String baseName;
|
||||||
|
private String reachcdName;
|
||||||
private String hbrvcd;
|
private String hbrvcd;
|
||||||
private String hbrvcdName;
|
private String hbrvcdName;
|
||||||
private String rvcd;
|
private String rvcd;
|
||||||
@ -33,6 +34,7 @@ public class EngVmsstbprptVo implements Serializable {
|
|||||||
private Date aiodt;
|
private Date aiodt;
|
||||||
private String bldstt;
|
private String bldstt;
|
||||||
private Integer bldsttCcode;
|
private Integer bldsttCcode;
|
||||||
|
private String bldsttCcodeName;
|
||||||
private Double nrupar;
|
private Double nrupar;
|
||||||
private Double dstcrvr;
|
private Double dstcrvr;
|
||||||
private Double avyrp;
|
private Double avyrp;
|
||||||
@ -79,6 +81,7 @@ public class EngVmsstbprptVo implements Serializable {
|
|||||||
private Double ddcp;
|
private Double ddcp;
|
||||||
private Double cpsc;
|
private Double cpsc;
|
||||||
private String rgcp;
|
private String rgcp;
|
||||||
|
private String rgcpName;
|
||||||
private Double dsflzmxq;
|
private Double dsflzmxq;
|
||||||
private Double dsflzxyz;
|
private Double dsflzxyz;
|
||||||
private Double ckflzmxq;
|
private Double ckflzmxq;
|
||||||
@ -102,7 +105,9 @@ public class EngVmsstbprptVo implements Serializable {
|
|||||||
private Double unyge;
|
private Double unyge;
|
||||||
private Double gap;
|
private Double gap;
|
||||||
private String dvtp;
|
private String dvtp;
|
||||||
|
private String dvtpName;
|
||||||
private Integer dtin;
|
private Integer dtin;
|
||||||
|
private String dtinName;
|
||||||
private Integer baseStepSort;
|
private Integer baseStepSort;
|
||||||
private Integer rvcdStepSort;
|
private Integer rvcdStepSort;
|
||||||
private Integer rstcdStepSort;
|
private Integer rstcdStepSort;
|
||||||
|
|||||||
@ -0,0 +1,7 @@
|
|||||||
|
package com.yfd.platform.qgc_base.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.yfd.platform.qgc_base.domain.MsOperationLogDetail;
|
||||||
|
|
||||||
|
public interface MsOperationLogDetailMapper extends BaseMapper<MsOperationLogDetail> {
|
||||||
|
}
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
package com.yfd.platform.qgc_base.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.yfd.platform.qgc_base.domain.MsOperationLog;
|
||||||
|
|
||||||
|
public interface MsOperationLogMapper extends BaseMapper<MsOperationLog> {
|
||||||
|
}
|
||||||
@ -32,4 +32,6 @@ public interface SdRvcdDicMapper extends BaseMapper<SdRvcdDic> {
|
|||||||
* 注册场景下拉框查询,仅返回能被电站表 RVCD 命中的流域
|
* 注册场景下拉框查询,仅返回能被电站表 RVCD 命中的流域
|
||||||
*/
|
*/
|
||||||
List<SdRvcdDic> selectRegDropdownWithEng(@Param("rvnm") String rvnm, @Param("rvcd") String rvcd);
|
List<SdRvcdDic> selectRegDropdownWithEng(@Param("rvnm") String rvnm, @Param("rvcd") String rvcd);
|
||||||
|
|
||||||
|
List<SdRvcdDic> selectRvcdDropdown(@Param("rvnm") String rvnm,@Param("baseId") String baseId);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,10 @@
|
|||||||
|
package com.yfd.platform.qgc_base.service;
|
||||||
|
|
||||||
|
import com.yfd.platform.qgc_base.domain.SdEngInfoBH;
|
||||||
|
|
||||||
|
public interface IMsOperationLogService {
|
||||||
|
|
||||||
|
void recordEngAddLog(SdEngInfoBH engInfo, String source);
|
||||||
|
|
||||||
|
void recordEngUpdateLog(SdEngInfoBH before, SdEngInfoBH changeSet, String source);
|
||||||
|
}
|
||||||
@ -8,6 +8,7 @@ import com.yfd.platform.qgc_base.domain.SdEngInfoBH;
|
|||||||
import com.yfd.platform.qgc_base.domain.SdEngInfoBHRequest;
|
import com.yfd.platform.qgc_base.domain.SdEngInfoBHRequest;
|
||||||
import com.yfd.platform.qgc_base.domain.vo.EngBaseInfoVo;
|
import com.yfd.platform.qgc_base.domain.vo.EngBaseInfoVo;
|
||||||
import com.yfd.platform.qgc_base.domain.vo.EngEiaapprovalVo;
|
import com.yfd.platform.qgc_base.domain.vo.EngEiaapprovalVo;
|
||||||
|
import com.yfd.platform.qgc_base.domain.vo.EngStInfoResultVo;
|
||||||
import com.yfd.platform.qgc_base.domain.vo.EngVmsstbprptVo;
|
import com.yfd.platform.qgc_base.domain.vo.EngVmsstbprptVo;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -52,11 +53,15 @@ public interface ISdEngInfoBHService extends IService<SdEngInfoBH> {
|
|||||||
*/
|
*/
|
||||||
boolean addEngInfo(SdEngInfoBH engInfo);
|
boolean addEngInfo(SdEngInfoBH engInfo);
|
||||||
|
|
||||||
|
boolean addEngInfo(SdEngInfoBH engInfo, String source);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改电站
|
* 修改电站
|
||||||
*/
|
*/
|
||||||
boolean updateEngInfo(SdEngInfoBH engInfo);
|
boolean updateEngInfo(SdEngInfoBH engInfo);
|
||||||
|
|
||||||
|
boolean updateEngInfo(SdEngInfoBH engInfo, String source);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除电站
|
* 删除电站
|
||||||
*/
|
*/
|
||||||
@ -66,6 +71,8 @@ public interface ISdEngInfoBHService extends IService<SdEngInfoBH> {
|
|||||||
|
|
||||||
EngBaseInfoVo getStInfoByStcd(String stcd);
|
EngBaseInfoVo getStInfoByStcd(String stcd);
|
||||||
|
|
||||||
|
EngStInfoResultVo getStcdInfo(String stcd);
|
||||||
|
|
||||||
DataSourceResult<EngEiaapprovalVo> getEiaapprovalKendoList(DataSourceRequest dataSourceRequest);
|
DataSourceResult<EngEiaapprovalVo> getEiaapprovalKendoList(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
DataSourceResult<EngVmsstbprptVo> getVmsstbprptKendoList(DataSourceRequest dataSourceRequest);
|
DataSourceResult<EngVmsstbprptVo> getVmsstbprptKendoList(DataSourceRequest dataSourceRequest);
|
||||||
|
|||||||
@ -55,5 +55,7 @@ public interface ISdRvcdDicService extends IService<SdRvcdDic> {
|
|||||||
|
|
||||||
List<SdRvcdDic> selectForDropdown(String rvnm, String rvcd);
|
List<SdRvcdDic> selectForDropdown(String rvnm, String rvcd);
|
||||||
|
|
||||||
|
List<SdRvcdDic> selectRvcdDropdown(String rvnm,String baseId);
|
||||||
|
|
||||||
List<SdRvcdDic> regDropdown(String rvnm, String rvcd);
|
List<SdRvcdDic> regDropdown(String rvnm, String rvcd);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,213 @@
|
|||||||
|
package com.yfd.platform.qgc_base.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import cn.hutool.core.bean.copier.CopyOptions;
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.yfd.platform.qgc_base.domain.MsOperationLog;
|
||||||
|
import com.yfd.platform.qgc_base.domain.MsOperationLogDetail;
|
||||||
|
import com.yfd.platform.qgc_base.domain.SdEngInfoBH;
|
||||||
|
import com.yfd.platform.qgc_base.mapper.MsOperationLogDetailMapper;
|
||||||
|
import com.yfd.platform.qgc_base.mapper.MsOperationLogMapper;
|
||||||
|
import com.yfd.platform.qgc_base.service.IMsOperationLogService;
|
||||||
|
import com.yfd.platform.utils.SecurityUtils;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.lang.reflect.Modifier;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class MsOperationLogServiceImpl implements IMsOperationLogService {
|
||||||
|
|
||||||
|
private static final String ENG_TABLE_NAME = "SD_ENGINFO_B_H";
|
||||||
|
|
||||||
|
private static final Map<String, String> ENG_FIELD_MEANING_MAP = new LinkedHashMap<>();
|
||||||
|
|
||||||
|
static {
|
||||||
|
ENG_FIELD_MEANING_MAP.put("STCD", "电站编码");
|
||||||
|
ENG_FIELD_MEANING_MAP.put("ENNM", "电站名称");
|
||||||
|
ENG_FIELD_MEANING_MAP.put("BASE_ID", "所属基地编码");
|
||||||
|
ENG_FIELD_MEANING_MAP.put("HBRVCD", "所属基地流域编码");
|
||||||
|
ENG_FIELD_MEANING_MAP.put("RVCD", "所属流域编码");
|
||||||
|
ENG_FIELD_MEANING_MAP.put("ADDVCD", "所属行政区编码");
|
||||||
|
ENG_FIELD_MEANING_MAP.put("HYCD", "所属公司编码");
|
||||||
|
ENG_FIELD_MEANING_MAP.put("BLPRD", "所属建设阶段");
|
||||||
|
ENG_FIELD_MEANING_MAP.put("BLDSTT", "建设状态");
|
||||||
|
ENG_FIELD_MEANING_MAP.put("BLDSTT_CODE", "建设状态分类");
|
||||||
|
ENG_FIELD_MEANING_MAP.put("DVTP", "开发方式");
|
||||||
|
ENG_FIELD_MEANING_MAP.put("DTIN", "数据是否接入");
|
||||||
|
ENG_FIELD_MEANING_MAP.put("RGCP", "调节性能");
|
||||||
|
ENG_FIELD_MEANING_MAP.put("LGTD", "经度");
|
||||||
|
ENG_FIELD_MEANING_MAP.put("LTTD", "纬度");
|
||||||
|
ENG_FIELD_MEANING_MAP.put("STLC", "站址");
|
||||||
|
ENG_FIELD_MEANING_MAP.put("ORDER_INDEX", "排序");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private MsOperationLogMapper msOperationLogMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private MsOperationLogDetailMapper msOperationLogDetailMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void recordEngAddLog(SdEngInfoBH engInfo, String source) {
|
||||||
|
if (engInfo == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
MsOperationLog mainLog = buildMainLog("新增电站", source);
|
||||||
|
msOperationLogMapper.insert(mainLog);
|
||||||
|
|
||||||
|
List<MsOperationLogDetail> details = new ArrayList<>();
|
||||||
|
for (Field field : SdEngInfoBH.class.getDeclaredFields()) {
|
||||||
|
if (shouldSkipField(field)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
field.setAccessible(true);
|
||||||
|
Object newValue = getFieldValue(field, engInfo);
|
||||||
|
if (newValue == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
details.add(buildDetail(mainLog.getId(), engInfo.getStcd(), resolveColumnName(field),
|
||||||
|
null, newValue, "新增字段值"));
|
||||||
|
}
|
||||||
|
batchInsertDetails(details);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void recordEngUpdateLog(SdEngInfoBH before, SdEngInfoBH changeSet, String source) {
|
||||||
|
if (before == null || changeSet == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
SdEngInfoBH after = BeanUtil.copyProperties(before, SdEngInfoBH.class);
|
||||||
|
BeanUtil.copyProperties(changeSet, after, CopyOptions.create().ignoreNullValue());
|
||||||
|
|
||||||
|
MsOperationLog mainLog = buildMainLog("修改电站", source);
|
||||||
|
msOperationLogMapper.insert(mainLog);
|
||||||
|
|
||||||
|
List<MsOperationLogDetail> details = new ArrayList<>();
|
||||||
|
for (Field field : SdEngInfoBH.class.getDeclaredFields()) {
|
||||||
|
if (shouldSkipField(field)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
field.setAccessible(true);
|
||||||
|
Object oldValue = getFieldValue(field, before);
|
||||||
|
Object newValue = getFieldValue(field, after);
|
||||||
|
if (equalsValue(oldValue, newValue)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
details.add(buildDetail(mainLog.getId(), after.getStcd(), resolveColumnName(field),
|
||||||
|
oldValue, newValue, "修改字段值"));
|
||||||
|
}
|
||||||
|
batchInsertDetails(details);
|
||||||
|
}
|
||||||
|
|
||||||
|
private MsOperationLog buildMainLog(String remark, String source) {
|
||||||
|
MsOperationLog log = new MsOperationLog();
|
||||||
|
log.setOperator(resolveOperator());
|
||||||
|
log.setOperateTime(new Date());
|
||||||
|
log.setSource(StrUtil.trimToNull(source));
|
||||||
|
log.setRemark(remark);
|
||||||
|
return log;
|
||||||
|
}
|
||||||
|
|
||||||
|
private MsOperationLogDetail buildDetail(String mainId,
|
||||||
|
String stationCode,
|
||||||
|
String fieldCode,
|
||||||
|
Object oldValue,
|
||||||
|
Object newValue,
|
||||||
|
String remark) {
|
||||||
|
MsOperationLogDetail detail = new MsOperationLogDetail();
|
||||||
|
detail.setMainId(mainId);
|
||||||
|
detail.setTableName(ENG_TABLE_NAME);
|
||||||
|
detail.setStationCode(stationCode);
|
||||||
|
detail.setFieldCode(fieldCode);
|
||||||
|
detail.setFieldMeaning(ENG_FIELD_MEANING_MAP.getOrDefault(fieldCode, fieldCode));
|
||||||
|
detail.setOldValueCode(formatValue(oldValue));
|
||||||
|
detail.setOldValueName(formatValue(oldValue));
|
||||||
|
detail.setNewValueCode(formatValue(newValue));
|
||||||
|
detail.setNewValueName(formatValue(newValue));
|
||||||
|
detail.setRemark(remark);
|
||||||
|
return detail;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void batchInsertDetails(List<MsOperationLogDetail> details) {
|
||||||
|
msOperationLogDetailMapper.insert(details);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean shouldSkipField(Field field) {
|
||||||
|
if (Modifier.isStatic(field.getModifiers())) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
TableField tableField = field.getAnnotation(TableField.class);
|
||||||
|
if (tableField != null && !tableField.exist()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String resolveColumnName(Field field) {
|
||||||
|
TableId tableId = field.getAnnotation(TableId.class);
|
||||||
|
if (tableId != null) {
|
||||||
|
return camelToUpperUnderline(field.getName());
|
||||||
|
}
|
||||||
|
TableField tableField = field.getAnnotation(TableField.class);
|
||||||
|
if (tableField != null && StrUtil.isNotBlank(tableField.value())) {
|
||||||
|
return tableField.value();
|
||||||
|
}
|
||||||
|
return camelToUpperUnderline(field.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
private Object getFieldValue(Field field, Object target) {
|
||||||
|
try {
|
||||||
|
return field.get(target);
|
||||||
|
} catch (IllegalAccessException e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean equalsValue(Object oldValue, Object newValue) {
|
||||||
|
return StrUtil.equals(formatValue(oldValue), formatValue(newValue));
|
||||||
|
}
|
||||||
|
|
||||||
|
private String formatValue(Object value) {
|
||||||
|
if (value == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if (value instanceof Date date) {
|
||||||
|
return DateUtil.formatDateTime(date);
|
||||||
|
}
|
||||||
|
return String.valueOf(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String resolveOperator() {
|
||||||
|
try {
|
||||||
|
return SecurityUtils.getCurrentUsername();
|
||||||
|
} catch (Exception ignored) {
|
||||||
|
try {
|
||||||
|
return SecurityUtils.getUserId();
|
||||||
|
} catch (Exception ex) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String camelToUpperUnderline(String text) {
|
||||||
|
StringBuilder builder = new StringBuilder();
|
||||||
|
for (int i = 0; i < text.length(); i++) {
|
||||||
|
char ch = text.charAt(i);
|
||||||
|
if (Character.isUpperCase(ch) && i > 0) {
|
||||||
|
builder.append('_');
|
||||||
|
}
|
||||||
|
builder.append(Character.toUpperCase(ch));
|
||||||
|
}
|
||||||
|
return builder.toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -5,6 +5,7 @@ import cn.hutool.core.bean.copier.CopyOptions;
|
|||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.yfd.platform.common.DataSourceLoadOptionsBase;
|
import com.yfd.platform.common.DataSourceLoadOptionsBase;
|
||||||
@ -19,13 +20,17 @@ import com.yfd.platform.qgc_base.domain.SdEngInfoBH;
|
|||||||
import com.yfd.platform.qgc_base.domain.SdEngInfoBHRequest;
|
import com.yfd.platform.qgc_base.domain.SdEngInfoBHRequest;
|
||||||
import com.yfd.platform.qgc_base.domain.vo.EngBaseInfoVo;
|
import com.yfd.platform.qgc_base.domain.vo.EngBaseInfoVo;
|
||||||
import com.yfd.platform.qgc_base.domain.vo.EngEiaapprovalVo;
|
import com.yfd.platform.qgc_base.domain.vo.EngEiaapprovalVo;
|
||||||
|
import com.yfd.platform.qgc_base.domain.vo.EngStBaseInfoVo;
|
||||||
|
import com.yfd.platform.qgc_base.domain.vo.EngStInfoResultVo;
|
||||||
import com.yfd.platform.qgc_base.domain.vo.EngVmsstbprptVo;
|
import com.yfd.platform.qgc_base.domain.vo.EngVmsstbprptVo;
|
||||||
import com.yfd.platform.qgc_base.mapper.SdEngInfoBHMapper;
|
import com.yfd.platform.qgc_base.mapper.SdEngInfoBHMapper;
|
||||||
|
import com.yfd.platform.qgc_base.service.IMsOperationLogService;
|
||||||
import com.yfd.platform.qgc_base.service.ISdEngInfoBHService;
|
import com.yfd.platform.qgc_base.service.ISdEngInfoBHService;
|
||||||
import com.yfd.platform.utils.QgcQueryWrapperUtil;
|
import com.yfd.platform.utils.QgcQueryWrapperUtil;
|
||||||
import com.yfd.platform.utils.SecurityUtils;
|
import com.yfd.platform.utils.SecurityUtils;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -55,6 +60,9 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
|
|||||||
@Resource
|
@Resource
|
||||||
private SysUserDataScopeMapper sysUserDataScopeMapper;
|
private SysUserDataScopeMapper sysUserDataScopeMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IMsOperationLogService msOperationLogService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Page<SdEngInfoBH> queryPageList(Page<SdEngInfoBH> page, String ennm, String rvcd, String baseId, String hycd) {
|
public Page<SdEngInfoBH> queryPageList(Page<SdEngInfoBH> page, String ennm, String rvcd, String baseId, String hycd) {
|
||||||
LambdaQueryWrapper<SdEngInfoBH> wrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<SdEngInfoBH> wrapper = new LambdaQueryWrapper<>();
|
||||||
@ -94,17 +102,20 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
|
|||||||
String hbrvcd = sdEngInfoBHRequest.getHbrvcd();
|
String hbrvcd = sdEngInfoBHRequest.getHbrvcd();
|
||||||
String ennm = sdEngInfoBHRequest.getEnnm();
|
String ennm = sdEngInfoBHRequest.getEnnm();
|
||||||
String rvcd = sdEngInfoBHRequest.getRvcd();
|
String rvcd = sdEngInfoBHRequest.getRvcd();
|
||||||
|
String reachcd = sdEngInfoBHRequest.getReachcd();
|
||||||
List<String> rvcds = sdEngInfoBHRequest.getRvcds();
|
List<String> rvcds = sdEngInfoBHRequest.getRvcds();
|
||||||
List<String> hbrvcds = sdEngInfoBHRequest.getHbrvcds();
|
List<String> hbrvcds = sdEngInfoBHRequest.getHbrvcds();
|
||||||
LambdaQueryWrapper<SdEngInfoBH> wrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<SdEngInfoBH> wrapper = new LambdaQueryWrapper<>();
|
||||||
wrapper.eq(StringUtils.hasText(baseId), SdEngInfoBH::getBaseId, baseId)
|
wrapper.eq(StringUtils.hasText(baseId), SdEngInfoBH::getBaseId, baseId)
|
||||||
.eq(StringUtils.hasText(hbrvcd), SdEngInfoBH::getHbrvcd, hbrvcd)
|
.eq(StringUtils.hasText(hbrvcd), SdEngInfoBH::getHbrvcd, hbrvcd)
|
||||||
|
.eq(StrUtil.isNotBlank(reachcd), SdEngInfoBH::getRvcd, reachcd)
|
||||||
|
.eq(StrUtil.isNotBlank(rvcd), SdEngInfoBH::getReachcd, rvcd)
|
||||||
.eq(StrUtil.isNotBlank(rvcd), SdEngInfoBH::getReachcd, rvcd)
|
.eq(StrUtil.isNotBlank(rvcd), SdEngInfoBH::getReachcd, rvcd)
|
||||||
.in(rvcds != null && !rvcds.isEmpty(), SdEngInfoBH::getReachcd, rvcds)
|
.in(rvcds != null && !rvcds.isEmpty(), SdEngInfoBH::getReachcd, rvcds)
|
||||||
.in(hbrvcds != null && !hbrvcds.isEmpty(), SdEngInfoBH::getHbrvcd, hbrvcds)
|
.in(hbrvcds != null && !hbrvcds.isEmpty(), SdEngInfoBH::getHbrvcd, hbrvcds)
|
||||||
.like(StringUtils.hasText(ennm), SdEngInfoBH::getEnnm, ennm)
|
.like(StringUtils.hasText(ennm), SdEngInfoBH::getEnnm, ennm)
|
||||||
.select(SdEngInfoBH::getStcd, SdEngInfoBH::getEnnm, SdEngInfoBH::getBaseId)
|
.select(SdEngInfoBH::getStcd, SdEngInfoBH::getEnnm, SdEngInfoBH::getReachcdName, SdEngInfoBH::getYrgeb, SdEngInfoBH::getBaseId)
|
||||||
.orderByAsc(SdEngInfoBH::getOrderIndex);
|
.orderByAsc(SdEngInfoBH::getBaseId,SdEngInfoBH::getOrderIndex);
|
||||||
|
|
||||||
if("admin".equals(SecurityUtils.getCurrentUsername())){
|
if("admin".equals(SecurityUtils.getCurrentUsername())){
|
||||||
return this.list(wrapper);
|
return this.list(wrapper);
|
||||||
@ -186,17 +197,39 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean addEngInfo(SdEngInfoBH engInfo) {
|
public boolean addEngInfo(SdEngInfoBH engInfo) {
|
||||||
return this.save(engInfo);
|
return addEngInfo(engInfo, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public boolean addEngInfo(SdEngInfoBH engInfo, String source) {
|
||||||
|
boolean result = this.save(engInfo);
|
||||||
|
if (result) {
|
||||||
|
msOperationLogService.recordEngAddLog(engInfo, source);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean updateEngInfo(SdEngInfoBH engInfo) {
|
public boolean updateEngInfo(SdEngInfoBH engInfo) {
|
||||||
return this.updateById(engInfo);
|
return updateEngInfo(engInfo, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public boolean updateEngInfo(SdEngInfoBH engInfo, String source) {
|
||||||
|
SdEngInfoBH before = engInfo == null ? null : this.getById(engInfo.getStcd());
|
||||||
|
boolean result = this.updateById(engInfo);
|
||||||
|
if (result && before != null) {
|
||||||
|
msOperationLogService.recordEngUpdateLog(before, engInfo, source);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean deleteEngInfo(String stcd) {
|
public boolean deleteEngInfo(String stcd) {
|
||||||
return this.removeById(stcd);
|
return this.update( new LambdaUpdateWrapper<SdEngInfoBH>().eq(SdEngInfoBH::getStcd, stcd).set(SdEngInfoBH::getIsDeleted, 1));
|
||||||
|
// return this.removeById(stcd);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -369,12 +402,13 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
|
|||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
Page<?> page = null;
|
// Page<?> page = null;
|
||||||
if (dataSourceRequest.getTake() > 0) {
|
// if (dataSourceRequest.getTake() > 0) {
|
||||||
page = new Page<>(dataSourceRequest.getSkip() / dataSourceRequest.getTake() + 1,
|
// page = new Page<>(dataSourceRequest.getSkip() / dataSourceRequest.getTake() + 1,
|
||||||
dataSourceRequest.getTake());
|
// dataSourceRequest.getTake());
|
||||||
}
|
// }
|
||||||
|
DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest();
|
||||||
|
Page<?> page = loadOptions == null ? null : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake());
|
||||||
|
|
||||||
Map<String, Object> paramMap = new HashMap<>();
|
Map<String, Object> paramMap = new HashMap<>();
|
||||||
StringBuilder sql = new StringBuilder(buildEiaapprovalBaseSql());
|
StringBuilder sql = new StringBuilder(buildEiaapprovalBaseSql());
|
||||||
@ -462,6 +496,34 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
|
|||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EngStInfoResultVo getStcdInfo(String stcd) {
|
||||||
|
EngBaseInfoVo baseInfo = getStInfoByStcd(stcd);
|
||||||
|
if (baseInfo == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
EngStBaseInfoVo stBaseInfo = new EngStBaseInfoVo();
|
||||||
|
stBaseInfo.setStcd(baseInfo.getStcd());
|
||||||
|
stBaseInfo.setStnm(baseInfo.getStnm());
|
||||||
|
stBaseInfo.setSttpCode(baseInfo.getSttpCode());
|
||||||
|
stBaseInfo.setSttpName(baseInfo.getSttpName());
|
||||||
|
stBaseInfo.setSttpFullPath(baseInfo.getSttpFullPath());
|
||||||
|
stBaseInfo.setSttpTreeLevel(baseInfo.getSttpTreeLevel());
|
||||||
|
stBaseInfo.setStCode(null);
|
||||||
|
stBaseInfo.setStName(null);
|
||||||
|
stBaseInfo.setBaseId(baseInfo.getBaseId());
|
||||||
|
stBaseInfo.setBaseName(baseInfo.getBaseName());
|
||||||
|
stBaseInfo.setHbrvcd(baseInfo.getHbrvcd());
|
||||||
|
stBaseInfo.setHbrvcdName(baseInfo.getHbrvcdName());
|
||||||
|
stBaseInfo.setRvcd(baseInfo.getRvcd());
|
||||||
|
stBaseInfo.setRvcdName(baseInfo.getRvcdName());
|
||||||
|
|
||||||
|
EngStInfoResultVo result = new EngStInfoResultVo();
|
||||||
|
result.setStBaseInfo(stBaseInfo);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
private String buildVmsstbprptViewSql() {
|
private String buildVmsstbprptViewSql() {
|
||||||
return "SELECT " +
|
return "SELECT " +
|
||||||
"eng.STCD AS id, " +
|
"eng.STCD AS id, " +
|
||||||
@ -469,6 +531,7 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
|
|||||||
"'电站' AS sttpName, " +
|
"'电站' AS sttpName, " +
|
||||||
"eng.STCD AS stcd, " +
|
"eng.STCD AS stcd, " +
|
||||||
"eng.ENNM AS stnm, " +
|
"eng.ENNM AS stnm, " +
|
||||||
|
"eng.REACHCD_NAME AS reachcdName, " +
|
||||||
"eng.ENNM AS ennm, " +
|
"eng.ENNM AS ennm, " +
|
||||||
"eng.BASE_ID AS baseId, " +
|
"eng.BASE_ID AS baseId, " +
|
||||||
"hb.BASENAME AS baseName, " +
|
"hb.BASENAME AS baseName, " +
|
||||||
@ -485,6 +548,11 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
|
|||||||
"eng.AIODT AS aiodt, " +
|
"eng.AIODT AS aiodt, " +
|
||||||
"eng.BLDSTT AS bldstt, " +
|
"eng.BLDSTT AS bldstt, " +
|
||||||
"eng.BLDSTT_CODE AS bldsttCcode, " +
|
"eng.BLDSTT_CODE AS bldsttCcode, " +
|
||||||
|
"CASE " +
|
||||||
|
" WHEN eng.BLDSTT_CODE = 0 OR eng.BLDSTT_CODE IS NULL THEN '未建/规划' " +
|
||||||
|
" WHEN eng.BLDSTT_CODE = 1 THEN '在建' " +
|
||||||
|
" WHEN eng.BLDSTT_CODE = 2 THEN '已建' " +
|
||||||
|
" ELSE NULL END AS bldsttCcodeName, " +
|
||||||
"eng.NRUPAR AS nrupar, " +
|
"eng.NRUPAR AS nrupar, " +
|
||||||
"eng.DSTCRVR AS dstcrvr, " +
|
"eng.DSTCRVR AS dstcrvr, " +
|
||||||
"eng.AVYRP AS avyrp, " +
|
"eng.AVYRP AS avyrp, " +
|
||||||
@ -531,6 +599,17 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
|
|||||||
"CAST(NULL AS NUMBER) AS ddcp, " +
|
"CAST(NULL AS NUMBER) AS ddcp, " +
|
||||||
"eng.CPSC AS cpsc, " +
|
"eng.CPSC AS cpsc, " +
|
||||||
"eng.RGCP AS rgcp, " +
|
"eng.RGCP AS rgcp, " +
|
||||||
|
"CASE eng.RGCP " +
|
||||||
|
" WHEN '1' THEN '多年调节' " +
|
||||||
|
" WHEN '2' THEN '年调节' " +
|
||||||
|
" WHEN '3' THEN '不完全年调节' " +
|
||||||
|
" WHEN '4' THEN '径流式(无调节)' " +
|
||||||
|
" WHEN '5' THEN '季调节' " +
|
||||||
|
" WHEN '6' THEN '月调节' " +
|
||||||
|
" WHEN '7' THEN '周调节' " +
|
||||||
|
" WHEN '8' THEN '日调节' " +
|
||||||
|
" WHEN '9' THEN '其他' " +
|
||||||
|
" ELSE NULL END AS rgcpName, " +
|
||||||
"eng.DSMXQ AS dsflzmxq, " +
|
"eng.DSMXQ AS dsflzmxq, " +
|
||||||
"CAST(NULL AS NUMBER) AS dsflzxyz, " +
|
"CAST(NULL AS NUMBER) AS dsflzxyz, " +
|
||||||
"eng.CHMXQ AS ckflzmxq, " +
|
"eng.CHMXQ AS ckflzmxq, " +
|
||||||
@ -554,7 +633,16 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
|
|||||||
"CAST(NULL AS NUMBER) AS unyge, " +
|
"CAST(NULL AS NUMBER) AS unyge, " +
|
||||||
"eng.GAP AS gap, " +
|
"eng.GAP AS gap, " +
|
||||||
"eng.DVTP AS dvtp, " +
|
"eng.DVTP AS dvtp, " +
|
||||||
|
"CASE eng.DVTP " +
|
||||||
|
" WHEN '1' THEN '堤坝式' " +
|
||||||
|
" WHEN '2' THEN '引水式' " +
|
||||||
|
" WHEN '3' THEN '混合式' " +
|
||||||
|
" ELSE NULL END AS dvtpName, " +
|
||||||
"eng.DTIN AS dtin, " +
|
"eng.DTIN AS dtin, " +
|
||||||
|
"CASE NVL(eng.DTIN, 0) " +
|
||||||
|
" WHEN 0 THEN '否' " +
|
||||||
|
" WHEN 1 THEN '是' " +
|
||||||
|
" ELSE NULL END AS dtinName, " +
|
||||||
"NVL(hb.ORDER_INDEX, 999999) AS baseStepSort, " +
|
"NVL(hb.ORDER_INDEX, 999999) AS baseStepSort, " +
|
||||||
"NVL(along.ORDER_INDEX, 999999) AS rvcdStepSort, " +
|
"NVL(along.ORDER_INDEX, 999999) AS rvcdStepSort, " +
|
||||||
"NVL(rstSort.SORT, 999999) AS rstcdStepSort, " +
|
"NVL(rstSort.SORT, 999999) AS rstcdStepSort, " +
|
||||||
@ -611,6 +699,7 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
|
|||||||
columns.put("stnm", "t.stnm AS stnm");
|
columns.put("stnm", "t.stnm AS stnm");
|
||||||
columns.put("ennm", "t.ennm AS ennm");
|
columns.put("ennm", "t.ennm AS ennm");
|
||||||
columns.put("baseId", "t.baseId AS baseId");
|
columns.put("baseId", "t.baseId AS baseId");
|
||||||
|
columns.put("reachcdName", "t.reachcdName AS reachcdName");
|
||||||
columns.put("baseName", "t.baseName AS baseName");
|
columns.put("baseName", "t.baseName AS baseName");
|
||||||
columns.put("hbrvcd", "t.hbrvcd AS hbrvcd");
|
columns.put("hbrvcd", "t.hbrvcd AS hbrvcd");
|
||||||
columns.put("hbrvcdName", "t.hbrvcdName AS hbrvcdName");
|
columns.put("hbrvcdName", "t.hbrvcdName AS hbrvcdName");
|
||||||
@ -625,6 +714,7 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
|
|||||||
columns.put("aiodt", "t.aiodt AS aiodt");
|
columns.put("aiodt", "t.aiodt AS aiodt");
|
||||||
columns.put("bldstt", "t.bldstt AS bldstt");
|
columns.put("bldstt", "t.bldstt AS bldstt");
|
||||||
columns.put("bldsttCcode", "t.bldsttCcode AS bldsttCcode");
|
columns.put("bldsttCcode", "t.bldsttCcode AS bldsttCcode");
|
||||||
|
columns.put("bldsttCcodeName", "t.bldsttCcodeName AS bldsttCcodeName");
|
||||||
columns.put("nrupar", "t.nrupar AS nrupar");
|
columns.put("nrupar", "t.nrupar AS nrupar");
|
||||||
columns.put("dstcrvr", "t.dstcrvr AS dstcrvr");
|
columns.put("dstcrvr", "t.dstcrvr AS dstcrvr");
|
||||||
columns.put("avyrp", "t.avyrp AS avyrp");
|
columns.put("avyrp", "t.avyrp AS avyrp");
|
||||||
@ -671,6 +761,7 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
|
|||||||
columns.put("ddcp", "t.ddcp AS ddcp");
|
columns.put("ddcp", "t.ddcp AS ddcp");
|
||||||
columns.put("cpsc", "t.cpsc AS cpsc");
|
columns.put("cpsc", "t.cpsc AS cpsc");
|
||||||
columns.put("rgcp", "t.rgcp AS rgcp");
|
columns.put("rgcp", "t.rgcp AS rgcp");
|
||||||
|
columns.put("rgcpName", "t.rgcpName AS rgcpName");
|
||||||
columns.put("dsflzmxq", "t.dsflzmxq AS dsflzmxq");
|
columns.put("dsflzmxq", "t.dsflzmxq AS dsflzmxq");
|
||||||
columns.put("dsflzxyz", "t.dsflzxyz AS dsflzxyz");
|
columns.put("dsflzxyz", "t.dsflzxyz AS dsflzxyz");
|
||||||
columns.put("ckflzmxq", "t.ckflzmxq AS ckflzmxq");
|
columns.put("ckflzmxq", "t.ckflzmxq AS ckflzmxq");
|
||||||
@ -694,7 +785,9 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
|
|||||||
columns.put("unyge", "t.unyge AS unyge");
|
columns.put("unyge", "t.unyge AS unyge");
|
||||||
columns.put("gap", "t.gap AS gap");
|
columns.put("gap", "t.gap AS gap");
|
||||||
columns.put("dvtp", "t.dvtp AS dvtp");
|
columns.put("dvtp", "t.dvtp AS dvtp");
|
||||||
|
columns.put("dvtpName", "t.dvtpName AS dvtpName");
|
||||||
columns.put("dtin", "t.dtin AS dtin");
|
columns.put("dtin", "t.dtin AS dtin");
|
||||||
|
columns.put("dtinName", "t.dtinName AS dtinName");
|
||||||
columns.put("baseStepSort", "t.baseStepSort AS baseStepSort");
|
columns.put("baseStepSort", "t.baseStepSort AS baseStepSort");
|
||||||
columns.put("rvcdStepSort", "t.rvcdStepSort AS rvcdStepSort");
|
columns.put("rvcdStepSort", "t.rvcdStepSort AS rvcdStepSort");
|
||||||
columns.put("rstcdStepSort", "t.rstcdStepSort AS rstcdStepSort");
|
columns.put("rstcdStepSort", "t.rstcdStepSort AS rstcdStepSort");
|
||||||
|
|||||||
@ -149,6 +149,12 @@ public class SdRvcdDicServiceImpl extends ServiceImpl<SdRvcdDicMapper, SdRvcdDic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<SdRvcdDic> selectRvcdDropdown(String rvnm,String baseId) {
|
||||||
|
List<SdRvcdDic> dropdownList = this.baseMapper.selectRvcdDropdown(rvnm,baseId);
|
||||||
|
return dropdownList;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Set<String> getUserAuthorizedStationCodes() {
|
public Set<String> getUserAuthorizedStationCodes() {
|
||||||
|
|||||||
@ -4,8 +4,12 @@ import com.yfd.platform.common.DataSourceLoadOptionsBase;
|
|||||||
import com.yfd.platform.common.DataSourceRequest;
|
import com.yfd.platform.common.DataSourceRequest;
|
||||||
import com.yfd.platform.common.DataSourceResult;
|
import com.yfd.platform.common.DataSourceResult;
|
||||||
import com.yfd.platform.config.ResponseResult;
|
import com.yfd.platform.config.ResponseResult;
|
||||||
|
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqBaseMsstbprptVo;
|
||||||
|
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqBaseVmsstbprptVo;
|
||||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDrtpDataVo;
|
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDrtpDataVo;
|
||||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqIntervalVo;
|
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqIntervalVo;
|
||||||
|
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqLimitQueryVo;
|
||||||
|
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqLimitVo;
|
||||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqMsstbprptVo;
|
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqMsstbprptVo;
|
||||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRuleVo;
|
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRuleVo;
|
||||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqVmsstbprptVo;
|
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqVmsstbprptVo;
|
||||||
@ -22,6 +26,8 @@ import org.springframework.web.bind.annotation.RequestBody;
|
|||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/eq")
|
@RequestMapping("/eq")
|
||||||
@Tag(name = "电站实时数据查询")
|
@Tag(name = "电站实时数据查询")
|
||||||
@ -69,6 +75,20 @@ public class EngEqDataController {
|
|||||||
return ResponseResult.successData(result);
|
return ResponseResult.successData(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/base/msstbprpt/GetKendoList")
|
||||||
|
@Operation(summary = "生态流量泄放设施基础信息查询")
|
||||||
|
public ResponseResult getBaseMsstbprptList(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
DataSourceResult<EngEqBaseMsstbprptVo> result = engEqDataService.getBaseMsstbprptList(dataSourceRequest);
|
||||||
|
return ResponseResult.successData(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/base/vmsstbprpt/GetKendoList")
|
||||||
|
@Operation(summary = "生态流量泄放设施统计查询")
|
||||||
|
public ResponseResult getBaseVmsstbprptList(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
DataSourceResult<EngEqBaseVmsstbprptVo> result = engEqDataService.getBaseVmsstbprptList(dataSourceRequest);
|
||||||
|
return ResponseResult.successData(result);
|
||||||
|
}
|
||||||
|
|
||||||
@PostMapping("/interval/qgc/hour/GetKendoListCust")
|
@PostMapping("/interval/qgc/hour/GetKendoListCust")
|
||||||
@Operation(summary = "生态流量达标率小时统计(二级页面)")
|
@Operation(summary = "生态流量达标率小时统计(二级页面)")
|
||||||
public ResponseResult getQgcHourKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
public ResponseResult getQgcHourKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
@ -87,6 +107,13 @@ public class EngEqDataController {
|
|||||||
return ResponseResult.successData(engEqDataService.getQgcHourVAlongKendoListCust(dataSourceRequest));
|
return ResponseResult.successData(engEqDataService.getQgcHourVAlongKendoListCust(dataSourceRequest));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/engalong/statistics/qgc/getEngLimit")
|
||||||
|
@Operation(summary = "沿程生态流量限值变化曲线")
|
||||||
|
public ResponseResult getQgcEngLimit(@RequestBody EngEqLimitQueryVo queryVo) {
|
||||||
|
List<EngEqLimitVo> result = engEqDataService.getQgcEngLimit(queryVo);
|
||||||
|
return ResponseResult.successData(result);
|
||||||
|
}
|
||||||
|
|
||||||
@PostMapping("/fid/GetKendoListCust")
|
@PostMapping("/fid/GetKendoListCust")
|
||||||
@Operation(summary = "查询电站相关鱼类附件编码")
|
@Operation(summary = "查询电站相关鱼类附件编码")
|
||||||
public ResponseResult getFidKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
public ResponseResult getFidKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
|||||||
@ -0,0 +1,77 @@
|
|||||||
|
package com.yfd.platform.qgc_eng.eq.entity.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Schema(description = "生态流量泄放设施基础信息查询")
|
||||||
|
public class EngEqBaseMsstbprptVo implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@Schema(description = "设施编码")
|
||||||
|
private String stcd;
|
||||||
|
|
||||||
|
@Schema(description = "设施名称")
|
||||||
|
private String stnm;
|
||||||
|
|
||||||
|
@Schema(description = "设施类型编码")
|
||||||
|
private String sttpCode;
|
||||||
|
|
||||||
|
@Schema(description = "设施类型名称")
|
||||||
|
private String sttpName;
|
||||||
|
|
||||||
|
@Schema(description = "所属电站编码")
|
||||||
|
private String rstcd;
|
||||||
|
|
||||||
|
@Schema(description = "所属电站名称")
|
||||||
|
private String rstcdName;
|
||||||
|
|
||||||
|
@Schema(description = "基地编码")
|
||||||
|
private String baseId;
|
||||||
|
|
||||||
|
@Schema(description = "基地名称")
|
||||||
|
private String baseName;
|
||||||
|
|
||||||
|
@Schema(description = "基地流域编码")
|
||||||
|
private String hbrvcd;
|
||||||
|
|
||||||
|
@Schema(description = "基地流域名称")
|
||||||
|
private String hbrvcdName;
|
||||||
|
|
||||||
|
@Schema(description = "设施位置")
|
||||||
|
private String stlc;
|
||||||
|
|
||||||
|
@Schema(description = "经度")
|
||||||
|
private Double lgtd;
|
||||||
|
|
||||||
|
@Schema(description = "纬度")
|
||||||
|
private Double lttd;
|
||||||
|
|
||||||
|
@Schema(description = "高程")
|
||||||
|
private Double elev;
|
||||||
|
|
||||||
|
@Schema(description = "建设状态分类编码")
|
||||||
|
private Integer bldsttCode;
|
||||||
|
|
||||||
|
@Schema(description = "建设状态分类名称")
|
||||||
|
private String bldsttCodeName;
|
||||||
|
|
||||||
|
@Schema(description = "数据接入状态")
|
||||||
|
private Integer dtin;
|
||||||
|
|
||||||
|
@Schema(description = "数据接入状态中文")
|
||||||
|
private String dtinName;
|
||||||
|
|
||||||
|
@Schema(description = "数据接入时间")
|
||||||
|
private Date dtinTm;
|
||||||
|
|
||||||
|
@Schema(description = "数据时间")
|
||||||
|
private Date tm;
|
||||||
|
|
||||||
|
@Schema(description = "排序")
|
||||||
|
private Integer orderIndex;
|
||||||
|
}
|
||||||
@ -0,0 +1,64 @@
|
|||||||
|
package com.yfd.platform.qgc_eng.eq.entity.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@Schema(description = "生态流量泄放设施统计查询")
|
||||||
|
public class EngEqBaseVmsstbprptVo extends EngEqMsstbprptVo {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@Schema(description = "所属电站编码")
|
||||||
|
private String rstcd;
|
||||||
|
|
||||||
|
@Schema(description = "所属电站名称")
|
||||||
|
private String rstcdName;
|
||||||
|
|
||||||
|
@Schema(description = "基地排序")
|
||||||
|
private Integer baseStepSort;
|
||||||
|
|
||||||
|
@Schema(description = "流域排序")
|
||||||
|
private Integer rvcdStepSort;
|
||||||
|
|
||||||
|
@Schema(description = "所属电站排序")
|
||||||
|
private Integer rstcdStepSort;
|
||||||
|
|
||||||
|
@Schema(description = "设施排序")
|
||||||
|
private Integer siteStepSort;
|
||||||
|
|
||||||
|
@Schema(description = "死水位时保证流量")
|
||||||
|
private Double ddzgq;
|
||||||
|
|
||||||
|
@Schema(description = "最大泄放流量")
|
||||||
|
private String flkq;
|
||||||
|
|
||||||
|
@Schema(description = "孔口尺寸")
|
||||||
|
private String flksz;
|
||||||
|
|
||||||
|
@Schema(description = "结构形式")
|
||||||
|
private String frntwlltyp;
|
||||||
|
|
||||||
|
@Schema(description = "进水口底版高程")
|
||||||
|
private Double jskgc;
|
||||||
|
|
||||||
|
@Schema(description = "出水口底版高程")
|
||||||
|
private Double outflrelev;
|
||||||
|
|
||||||
|
@Schema(description = "基荷发电工况")
|
||||||
|
private Double jhfdgk;
|
||||||
|
|
||||||
|
@Schema(description = "发电流量")
|
||||||
|
private Double fdll;
|
||||||
|
|
||||||
|
@Schema(description = "生态机组额定流量")
|
||||||
|
private Double stjzysq;
|
||||||
|
|
||||||
|
@Schema(description = "装机容量")
|
||||||
|
private Double ttpwr;
|
||||||
|
|
||||||
|
@Schema(description = "所属建设阶段名称")
|
||||||
|
private String blprdName;
|
||||||
|
}
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
package com.yfd.platform.qgc_eng.eq.entity.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@Schema(description = "沿程生态流量限值查询参数")
|
||||||
|
public class EngEqLimitQueryVo {
|
||||||
|
|
||||||
|
@Schema(description = "查询日期,支持 yyyy-MM-dd、yyyy-MM-dd HH:mm、yyyy-MM-dd HH:mm:ss")
|
||||||
|
private String date;
|
||||||
|
|
||||||
|
@Schema(description = "基地编码")
|
||||||
|
private String baseId;
|
||||||
|
|
||||||
|
@Schema(description = "流域编码")
|
||||||
|
private String rvcd;
|
||||||
|
}
|
||||||
@ -0,0 +1,28 @@
|
|||||||
|
package com.yfd.platform.qgc_eng.eq.entity.vo;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@Schema(description = "沿程生态流量限值")
|
||||||
|
public class EngEqLimitVo {
|
||||||
|
|
||||||
|
@Schema(description = "电站编码")
|
||||||
|
private String stcd;
|
||||||
|
|
||||||
|
@Schema(description = "电站名称")
|
||||||
|
private String stnm;
|
||||||
|
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@Schema(description = "查询日期")
|
||||||
|
private Date date;
|
||||||
|
|
||||||
|
@Schema(description = "生态流量限值")
|
||||||
|
private BigDecimal qecLimit;
|
||||||
|
}
|
||||||
@ -2,11 +2,15 @@ package com.yfd.platform.qgc_eng.eq.service;
|
|||||||
|
|
||||||
import com.yfd.platform.common.DataSourceRequest;
|
import com.yfd.platform.common.DataSourceRequest;
|
||||||
import com.yfd.platform.common.DataSourceResult;
|
import com.yfd.platform.common.DataSourceResult;
|
||||||
|
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqBaseMsstbprptVo;
|
||||||
|
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqBaseVmsstbprptVo;
|
||||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDayDataVo;
|
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDayDataVo;
|
||||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDrtpDataVo;
|
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDrtpDataVo;
|
||||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDayIntervalVo;
|
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqDayIntervalVo;
|
||||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqHourIntervalVo;
|
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqHourIntervalVo;
|
||||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqIntervalVo;
|
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqIntervalVo;
|
||||||
|
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqLimitQueryVo;
|
||||||
|
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqLimitVo;
|
||||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqMsstbprptVo;
|
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqMsstbprptVo;
|
||||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRuleVo;
|
import com.yfd.platform.qgc_eng.eq.entity.vo.EngEqRuleVo;
|
||||||
import com.yfd.platform.qgc_eng.eq.entity.vo.EngQecAlongVo;
|
import com.yfd.platform.qgc_eng.eq.entity.vo.EngQecAlongVo;
|
||||||
@ -16,6 +20,8 @@ import com.yfd.platform.qgc_eng.eq.entity.vo.QgcQecStaticVo;
|
|||||||
import com.yfd.platform.qgc_eng.eq.entity.vo.SdEqMonitorCountVo;
|
import com.yfd.platform.qgc_eng.eq.entity.vo.SdEqMonitorCountVo;
|
||||||
import com.yfd.platform.qgc_eng.eq.entity.vo.WbsbVo;
|
import com.yfd.platform.qgc_eng.eq.entity.vo.WbsbVo;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public interface EngEqDataService {
|
public interface EngEqDataService {
|
||||||
|
|
||||||
DataSourceResult getKendoListCust(DataSourceRequest dataSourceRequest);
|
DataSourceResult getKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
@ -28,12 +34,18 @@ public interface EngEqDataService {
|
|||||||
|
|
||||||
DataSourceResult<EngEqMsstbprptVo> getMsstbprptList(DataSourceRequest dataSourceRequest);
|
DataSourceResult<EngEqMsstbprptVo> getMsstbprptList(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
|
DataSourceResult<EngEqBaseMsstbprptVo> getBaseMsstbprptList(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
|
DataSourceResult<EngEqBaseVmsstbprptVo> getBaseVmsstbprptList(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
DataSourceResult<EngEqHourIntervalVo> getQgcHourKendoListCust(DataSourceRequest dataSourceRequest);
|
DataSourceResult<EngEqHourIntervalVo> getQgcHourKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
DataSourceResult<EngEqDayIntervalVo> getQgcDayKendoListCust(DataSourceRequest dataSourceRequest);
|
DataSourceResult<EngEqDayIntervalVo> getQgcDayKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
DataSourceResult<EngQecAlongVo> getQgcHourVAlongKendoListCust(DataSourceRequest dataSourceRequest);
|
DataSourceResult<EngQecAlongVo> getQgcHourVAlongKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
|
List<EngEqLimitVo> getQgcEngLimit(EngEqLimitQueryVo queryVo);
|
||||||
|
|
||||||
DataSourceResult<String> getFidKendoListCust(DataSourceRequest dataSourceRequest);
|
DataSourceResult<String> getFidKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
EngEqRuleVo getEngLimit(DataSourceRequest dataSourceRequest);
|
EngEqRuleVo getEngLimit(DataSourceRequest dataSourceRequest);
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -1,35 +0,0 @@
|
|||||||
package com.yfd.platform.qgc_env.fb.controller;
|
|
||||||
|
|
||||||
import com.yfd.platform.common.DataSourceRequest;
|
|
||||||
import com.yfd.platform.config.ResponseResult;
|
|
||||||
import com.yfd.platform.qgc_env.fb.service.FbStationService;
|
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
||||||
import jakarta.annotation.Resource;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/fb/bsmfr")
|
|
||||||
@Tag(name = "亲鱼选配与培育-亲鱼信息")
|
|
||||||
@Validated
|
|
||||||
public class FbBsmfrController {
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private FbStationService fbStationService;
|
|
||||||
|
|
||||||
@PostMapping("/qgc/GetKendoListCust")
|
|
||||||
@Operation(summary = "(全过程)增殖站二级页面: 亲鱼选配与培育->亲鱼信息")
|
|
||||||
public ResponseResult getQgcKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
|
||||||
return ResponseResult.successData(fbStationService.getQgcBsmfRKendoListCust(dataSourceRequest));
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostMapping("/fish/GetKendoListCust")
|
|
||||||
@Operation(summary = "(全过程)增殖站二级页面: 过程图-亲鱼")
|
|
||||||
public ResponseResult getFishKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
|
||||||
return ResponseResult.successData(fbStationService.getBsmfRFishKendoListCust(dataSourceRequest));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,30 +0,0 @@
|
|||||||
package com.yfd.platform.qgc_env.fb.controller;
|
|
||||||
|
|
||||||
import com.yfd.platform.config.ResponseResult;
|
|
||||||
import com.yfd.platform.qgc_env.fb.service.FbStationService;
|
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
||||||
import jakarta.annotation.Resource;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/fb/fbrdmr")
|
|
||||||
@Tag(name = "鱼类增殖站年度鱼类标记数据")
|
|
||||||
@Validated
|
|
||||||
public class FbFbrdmrController {
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private FbStationService fbStationService;
|
|
||||||
|
|
||||||
@GetMapping("/getFbRelatedYrByStcd")
|
|
||||||
@Operation(summary = "根据增殖站编码查询相关业务年份")
|
|
||||||
public ResponseResult getFbRelatedYrByStcd(@Parameter(description = "增殖站编码")
|
|
||||||
@RequestParam("stcd") String stcd) {
|
|
||||||
return ResponseResult.successData(fbStationService.getFbRelatedYrByStcd(stcd));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,35 +0,0 @@
|
|||||||
package com.yfd.platform.qgc_env.fb.controller;
|
|
||||||
|
|
||||||
import com.yfd.platform.common.DataSourceRequest;
|
|
||||||
import com.yfd.platform.config.ResponseResult;
|
|
||||||
import com.yfd.platform.qgc_env.fb.service.FbStationService;
|
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
||||||
import jakarta.annotation.Resource;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/fb/msfbrdm")
|
|
||||||
@Tag(name = "鱼类增殖站增殖情况")
|
|
||||||
@Validated
|
|
||||||
public class FbMsfbrdmController {
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private FbStationService fbStationService;
|
|
||||||
|
|
||||||
@PostMapping("/fbFlData/GetKendoListCust")
|
|
||||||
@Operation(summary = "增殖站增殖情况(app)")
|
|
||||||
public ResponseResult getFbFlData(@RequestBody DataSourceRequest dataSourceRequest) {
|
|
||||||
return ResponseResult.successData(fbStationService.getFbFlDataKendoListCust(dataSourceRequest));
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostMapping("/qgc/GetKendoListCust")
|
|
||||||
@Operation(summary = "(全过程)增殖站二级页面: 增殖放流情况")
|
|
||||||
public ResponseResult getQgcKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
|
||||||
return ResponseResult.successData(fbStationService.getQgcMsfbrdmKendoListCust(dataSourceRequest));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,29 +0,0 @@
|
|||||||
package com.yfd.platform.qgc_env.fb.controller;
|
|
||||||
|
|
||||||
import com.yfd.platform.common.DataSourceRequest;
|
|
||||||
import com.yfd.platform.config.ResponseResult;
|
|
||||||
import com.yfd.platform.qgc_env.fb.service.FbStationService;
|
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
||||||
import jakarta.annotation.Resource;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/fb/base/researchb")
|
|
||||||
@Tag(name = "鱼类增殖站科研情况")
|
|
||||||
@Validated
|
|
||||||
public class FbResearchbController {
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private FbStationService fbStationService;
|
|
||||||
|
|
||||||
@PostMapping("/GetKendoList")
|
|
||||||
@Operation(summary = "鱼类增殖站科研情况列表")
|
|
||||||
public ResponseResult getKendoList(@RequestBody DataSourceRequest dataSourceRequest) {
|
|
||||||
return ResponseResult.successData(fbStationService.getResearchKendoList(dataSourceRequest));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -16,47 +16,120 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
|||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/fb/station")
|
@RequestMapping("/fb")
|
||||||
@Tag(name = "鱼类增殖站概况")
|
@Tag(name = "鱼类增殖站模块")
|
||||||
@Validated
|
@Validated
|
||||||
public class FbStationController {
|
public class FbStationController {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private FbStationService fbStationService;
|
private FbStationService fbStationService;
|
||||||
|
|
||||||
@PostMapping("/qgcoverview/getOverviewSecond")
|
@PostMapping("/station/qgcoverview/getOverviewSecond")
|
||||||
@Operation(summary = "全流域增殖站概况二级页面")
|
@Operation(summary = "全流域增殖站概况二级页面")
|
||||||
public ResponseResult getQgcOverviewSecond(@RequestBody DataSourceRequest dataSourceRequest) {
|
public ResponseResult getQgcOverviewSecond(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
return ResponseResult.successData(fbStationService.getQgcOverviewSecond(dataSourceRequest));
|
return ResponseResult.successData(fbStationService.getQgcOverviewSecond(dataSourceRequest));
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/overview/getOverviewSecond")
|
@PostMapping("/station/overview/getOverviewSecond")
|
||||||
@Operation(summary = "增殖站概况二级页面")
|
@Operation(summary = "增殖站概况二级页面")
|
||||||
public ResponseResult getOverviewSecond(@RequestBody DataSourceRequest dataSourceRequest) {
|
public ResponseResult getOverviewSecond(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
return ResponseResult.successData(fbStationService.getOverviewSecond(dataSourceRequest));
|
return ResponseResult.successData(fbStationService.getOverviewSecond(dataSourceRequest));
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/overview/GetKendoListCust")
|
@PostMapping("/station/overview/GetKendoListCust")
|
||||||
@Operation(summary = "全流域增殖站概况")
|
@Operation(summary = "全流域增殖站概况")
|
||||||
public ResponseResult getOverviewKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
public ResponseResult getOverviewKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
return ResponseResult.successData(fbStationService.getOverviewKendoListCust(dataSourceRequest));
|
return ResponseResult.successData(fbStationService.getOverviewKendoListCust(dataSourceRequest));
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/qgc/getFbStaticsData")
|
@PostMapping("/station/qgc/getFbStaticsData")
|
||||||
@Operation(summary = "增殖站放流数据统计")
|
@Operation(summary = "增殖站放流数据统计")
|
||||||
public ResponseResult getQgcFbStaticsData(@RequestBody DataSourceRequest dataSourceRequest) {
|
public ResponseResult getQgcFbStaticsData(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
return ResponseResult.successData(fbStationService.getQgcFbStaticsData(dataSourceRequest));
|
return ResponseResult.successData(fbStationService.getQgcFbStaticsData(dataSourceRequest));
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/msstbprpt/getStInfoByStcd")
|
@GetMapping("/station/msstbprpt/getStInfoByStcd")
|
||||||
@Operation(summary = "增殖站单站基础信息")
|
@Operation(summary = "增殖站单站基础信息")
|
||||||
public ResponseResult getStInfoByStcd(@Parameter(description = "站点编码") @RequestParam("stcd") String stcd) {
|
public ResponseResult getStInfoByStcd(@Parameter(description = "站点编码") @RequestParam("stcd") String stcd) {
|
||||||
return ResponseResult.successData(fbStationService.getStInfoByStcd(stcd));
|
return ResponseResult.successData(fbStationService.getStInfoByStcd(stcd));
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/rpimnr/qgc/year/GetYearRpStatistics")
|
@GetMapping("/station/rpimnr/qgc/year/GetYearRpStatistics")
|
||||||
@Operation(summary = "全过程放流统计总数,根据基地流域分组")
|
@Operation(summary = "全过程放流统计总数,根据基地流域分组")
|
||||||
public ResponseResult getYearRpStatistics(@Parameter(description = "年份") @RequestParam("year") String year) {
|
public ResponseResult getYearRpStatistics(@Parameter(description = "年份") @RequestParam("year") String year) {
|
||||||
return ResponseResult.successData(fbStationService.getYearRpStatistics(year));
|
return ResponseResult.successData(fbStationService.getYearRpStatistics(year));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/bsmfr/qgc/GetKendoListCust")
|
||||||
|
@Operation(summary = "(全过程)增殖站二级页面: 亲鱼选配与培育->亲鱼信息")
|
||||||
|
public ResponseResult getBsmfrQgcKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
return ResponseResult.successData(fbStationService.getQgcBsmfRKendoListCust(dataSourceRequest));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/bsmfr/fish/GetKendoListCust")
|
||||||
|
@Operation(summary = "(全过程)增殖站二级页面: 过程图-亲鱼")
|
||||||
|
public ResponseResult getBsmfrFishKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
return ResponseResult.successData(fbStationService.getBsmfRFishKendoListCust(dataSourceRequest));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/fbrdmr/getFbRelatedYrByStcd")
|
||||||
|
@Operation(summary = "根据增殖站编码查询相关业务年份")
|
||||||
|
public ResponseResult getFbRelatedYrByStcd(@Parameter(description = "增殖站编码")
|
||||||
|
@RequestParam("stcd") String stcd) {
|
||||||
|
return ResponseResult.successData(fbStationService.getFbRelatedYrByStcd(stcd));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/msfbrdm/fbFlData/GetKendoListCust")
|
||||||
|
@Operation(summary = "增殖站增殖情况(app)")
|
||||||
|
public ResponseResult getFbFlData(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
return ResponseResult.successData(fbStationService.getFbFlDataKendoListCust(dataSourceRequest));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/fishCount/GetKendoListCust")
|
||||||
|
@Operation(summary = "增殖站鱼数量完成情况统计")
|
||||||
|
public ResponseResult getFishCountKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
return ResponseResult.successData(fbStationService.getFishCountKendoListCust(dataSourceRequest));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/fishrun/qgc/GetKendoListCust")
|
||||||
|
@Operation(summary = "全过程鱼类放鱼数据")
|
||||||
|
public ResponseResult getFishRunQgcKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
return ResponseResult.successData(fbStationService.getFishRunQgcKendoListCust(dataSourceRequest));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/fishType/GetKendoListCust")
|
||||||
|
@Operation(summary = "增殖站鱼种完成情况统计")
|
||||||
|
public ResponseResult getFishTypeKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
return ResponseResult.successData(fbStationService.getFishTypeKendoListCust(dataSourceRequest));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/fishType/getStcdList")
|
||||||
|
@Operation(summary = "增殖放流完成情况获取有数据的测站下拉")
|
||||||
|
public ResponseResult getFishTypeStcdList(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
return ResponseResult.successData(fbStationService.getFishTypeStcdList(dataSourceRequest));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/msfbrdm/GetKendoListCust")
|
||||||
|
@Operation(summary = "鱼类增殖站运行情况统计列表")
|
||||||
|
public ResponseResult getMsfbrdmKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
return ResponseResult.successData(fbStationService.getMsfbrdmKendoListCust(dataSourceRequest));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/msfbrdm/qgc/GetKendoListCust")
|
||||||
|
@Operation(summary = "(全过程)增殖站二级页面: 增殖放流情况")
|
||||||
|
public ResponseResult getMsfbrdmQgcKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
return ResponseResult.successData(fbStationService.getQgcMsfbrdmKendoListCust(dataSourceRequest));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/msstbprpt/GetKendoList")
|
||||||
|
@Operation(summary = "鱼类增殖站基础信息列表")
|
||||||
|
public ResponseResult getMsstbprptKendoList(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
return ResponseResult.successData(fbStationService.getMsstbprptList(dataSourceRequest));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/base/researchb/GetKendoList")
|
||||||
|
@Operation(summary = "鱼类增殖站科研情况列表")
|
||||||
|
public ResponseResult getResearchKendoList(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
return ResponseResult.successData(fbStationService.getResearchKendoList(dataSourceRequest));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,15 @@
|
|||||||
|
package com.yfd.platform.qgc_env.fb.entity.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class FbFishCountFinishVo {
|
||||||
|
|
||||||
|
private String stcd;
|
||||||
|
|
||||||
|
private BigDecimal finished;
|
||||||
|
|
||||||
|
private BigDecimal unfinished;
|
||||||
|
}
|
||||||
@ -0,0 +1,37 @@
|
|||||||
|
package com.yfd.platform.qgc_env.fb.entity.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class FbFishRunQgcVo {
|
||||||
|
|
||||||
|
private String stcd;
|
||||||
|
|
||||||
|
private String stnm;
|
||||||
|
|
||||||
|
private String ftp;
|
||||||
|
|
||||||
|
private String ftpName;
|
||||||
|
|
||||||
|
private String baseId;
|
||||||
|
|
||||||
|
private String baseName;
|
||||||
|
|
||||||
|
private String flyr;
|
||||||
|
|
||||||
|
private Long fcnt;
|
||||||
|
|
||||||
|
private Long totalFcnt;
|
||||||
|
|
||||||
|
private String fid;
|
||||||
|
|
||||||
|
private String release;
|
||||||
|
|
||||||
|
private Integer baseStepSort;
|
||||||
|
|
||||||
|
private Integer siteStepSort;
|
||||||
|
|
||||||
|
private Integer rvcdStepSort;
|
||||||
|
|
||||||
|
private Integer rstcdStepSort;
|
||||||
|
}
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
package com.yfd.platform.qgc_env.fb.entity.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class FbFishTypeFinishVo {
|
||||||
|
|
||||||
|
private String stcd;
|
||||||
|
|
||||||
|
private Integer finished;
|
||||||
|
|
||||||
|
private Integer unfinished;
|
||||||
|
}
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
package com.yfd.platform.qgc_env.fb.entity.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class FbFishTypeStcdVo {
|
||||||
|
|
||||||
|
private String stcd;
|
||||||
|
|
||||||
|
private String stnm;
|
||||||
|
|
||||||
|
private BigDecimal lgtd;
|
||||||
|
|
||||||
|
private BigDecimal lttd;
|
||||||
|
|
||||||
|
private String baseId;
|
||||||
|
}
|
||||||
@ -5,6 +5,10 @@ import com.yfd.platform.common.DataSourceResult;
|
|||||||
import com.yfd.platform.qgc_env.fb.entity.vo.FbBsmfRQgcVo;
|
import com.yfd.platform.qgc_env.fb.entity.vo.FbBsmfRQgcVo;
|
||||||
import com.yfd.platform.qgc_env.fb.entity.vo.FbBsmfRFishTableVo;
|
import com.yfd.platform.qgc_env.fb.entity.vo.FbBsmfRFishTableVo;
|
||||||
import com.yfd.platform.qgc_env.fb.entity.vo.FbFlDataVo;
|
import com.yfd.platform.qgc_env.fb.entity.vo.FbFlDataVo;
|
||||||
|
import com.yfd.platform.qgc_env.fb.entity.vo.FbFishCountFinishVo;
|
||||||
|
import com.yfd.platform.qgc_env.fb.entity.vo.FbFishRunQgcVo;
|
||||||
|
import com.yfd.platform.qgc_env.fb.entity.vo.FbFishTypeStcdVo;
|
||||||
|
import com.yfd.platform.qgc_env.fb.entity.vo.FbFishTypeFinishVo;
|
||||||
import com.yfd.platform.qgc_env.fb.entity.vo.FbRelatedYrVo;
|
import com.yfd.platform.qgc_env.fb.entity.vo.FbRelatedYrVo;
|
||||||
import com.yfd.platform.qgc_env.fb.entity.vo.FbMsfbrdmQgcVo;
|
import com.yfd.platform.qgc_env.fb.entity.vo.FbMsfbrdmQgcVo;
|
||||||
import com.yfd.platform.qgc_env.fb.entity.vo.FbResearchVo;
|
import com.yfd.platform.qgc_env.fb.entity.vo.FbResearchVo;
|
||||||
@ -14,6 +18,7 @@ import com.yfd.platform.qgc_env.fb.entity.vo.YearRpStatisticsVo;
|
|||||||
import com.yfd.platform.qgc_env.fb.entity.vo.FbStationOverviewSecondVo;
|
import com.yfd.platform.qgc_env.fb.entity.vo.FbStationOverviewSecondVo;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public interface FbStationService {
|
public interface FbStationService {
|
||||||
|
|
||||||
@ -21,8 +26,20 @@ public interface FbStationService {
|
|||||||
|
|
||||||
DataSourceResult<FbStationOverviewSecondVo> getOverviewKendoListCust(DataSourceRequest dataSourceRequest);
|
DataSourceResult<FbStationOverviewSecondVo> getOverviewKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
|
DataSourceResult<Map<String, Object>> getMsstbprptList(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
DataSourceResult<FbFlDataVo> getFbFlDataKendoListCust(DataSourceRequest dataSourceRequest);
|
DataSourceResult<FbFlDataVo> getFbFlDataKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
|
DataSourceResult<FbFishCountFinishVo> getFishCountKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
|
DataSourceResult<FbFishRunQgcVo> getFishRunQgcKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
|
DataSourceResult<FbFishTypeFinishVo> getFishTypeKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
|
DataSourceResult<FbFishTypeStcdVo> getFishTypeStcdList(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
|
DataSourceResult<FbMsfbrdmQgcVo> getMsfbrdmKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
DataSourceResult<FbMsfbrdmQgcVo> getQgcMsfbrdmKendoListCust(DataSourceRequest dataSourceRequest);
|
DataSourceResult<FbMsfbrdmQgcVo> getQgcMsfbrdmKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
DataSourceResult<FbBsmfRQgcVo> getQgcBsmfRKendoListCust(DataSourceRequest dataSourceRequest);
|
DataSourceResult<FbBsmfRQgcVo> getQgcBsmfRKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -96,10 +96,14 @@ public class FhHabitatServiceImpl implements FhHabitatService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
sql.append(buildOrderBySql(dataSourceRequest.getSort()));
|
sql.append(buildOrderBySql(dataSourceRequest.getSort()));
|
||||||
Page<?> page = null;
|
// Page<?> page = null;
|
||||||
if (QgcQueryWrapperUtil.getPageInfo(loadOptions).getHasPageInfo()) {
|
// if (QgcQueryWrapperUtil.getPageInfo(loadOptions).getHasPageInfo()) {
|
||||||
page = QgcQueryWrapperUtil.getPageInfo(loadOptions).getPage();
|
// page = QgcQueryWrapperUtil.getPageInfo(loadOptions).getPage();
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
// DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest();
|
||||||
|
Page<?> page = loadOptions == null ? null : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake());
|
||||||
|
|
||||||
|
|
||||||
List<HabitatVo> list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, HabitatVo.class);
|
List<HabitatVo> list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, HabitatVo.class);
|
||||||
DataSourceResult<HabitatVo> result = new DataSourceResult<>();
|
DataSourceResult<HabitatVo> result = new DataSourceResult<>();
|
||||||
|
|||||||
@ -45,4 +45,5 @@ public class FprZyFishDicVo {
|
|||||||
private String spawnMonth;
|
private String spawnMonth;
|
||||||
private String orders;
|
private String orders;
|
||||||
private String vlsr;
|
private String vlsr;
|
||||||
|
private java.util.Date vlsrTm;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -250,87 +250,33 @@ public class FprMonitorServiceImpl implements FprMonitorService {
|
|||||||
new int[]{0}
|
new int[]{0}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
String baseSql = StrUtil.isBlank(rvcd) ? buildZyFishDicSummarySql() : buildZyFishDicBaseSql();
|
||||||
StringBuilder sql = new StringBuilder("SELECT * FROM (")
|
StringBuilder sql = new StringBuilder("SELECT * FROM (")
|
||||||
.append(buildZyFishDicBaseSql())
|
.append(baseSql)
|
||||||
.append(") t WHERE 1 = 1 ");
|
.append(") t WHERE 1 = 1 ");
|
||||||
if (StrUtil.isNotBlank(filterSql)) {
|
if (StrUtil.isNotBlank(filterSql)) {
|
||||||
sql.append(" AND ").append(filterSql).append(" ");
|
sql.append(" AND ").append(filterSql).append(" ");
|
||||||
}
|
}
|
||||||
// 增加排序
|
sql.append(buildZyFishDicOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort()));
|
||||||
if(dataSourceRequest.getSort() !=null && !dataSourceRequest.getSort().isEmpty()){
|
Page<?> page = loadOptions == null ? null : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake());
|
||||||
List<DataSourceRequest.SortDescriptor> sortDescriptors = dataSourceRequest.getSort();
|
List<FprZyFishDicVo> resultList = microservicDynamicSQLMapper.pageAllListWithResultType(
|
||||||
StringBuilder orderSql = new StringBuilder();
|
page,
|
||||||
orderSql.append(" order by ");
|
|
||||||
for (DataSourceRequest.SortDescriptor sort:sortDescriptors){
|
|
||||||
orderSql.append(sort.getField()).append(" ").append(sort.getDir()).append(",");
|
|
||||||
}
|
|
||||||
sql.append(orderSql, 0, orderSql.length()-1);
|
|
||||||
// String[] beans = SpringContextHolder.getApplicationContext().getBeanDefinitionNames();
|
|
||||||
sql.append(" nulls last ");
|
|
||||||
}else{
|
|
||||||
sql.append(" order by rvcd nulls last ");
|
|
||||||
}
|
|
||||||
List<FprZyFishDicVo> list = microservicDynamicSQLMapper.getAllListWithResultType(
|
|
||||||
sql.toString(),
|
sql.toString(),
|
||||||
paramMap,
|
paramMap,
|
||||||
FprZyFishDicVo.class
|
FprZyFishDicVo.class
|
||||||
);
|
);
|
||||||
List<Map<String, Object>> rvcdRows = microservicDynamicSQLMapper.getAllList(
|
|
||||||
"SELECT RVCD AS rvcd, RVNM AS rvcdName FROM SD_RVCD_DIC",
|
|
||||||
null
|
|
||||||
);
|
|
||||||
Map<String, String> rvcdNameMap = new HashMap<>();
|
|
||||||
for (Map<String, Object> row : rvcdRows) {
|
|
||||||
Object rvcdKey = row.get("RVCD");
|
|
||||||
Object rvcdName = row.get("RVCDNAME");
|
|
||||||
if (rvcdKey != null && rvcdName != null) {
|
|
||||||
rvcdNameMap.put(String.valueOf(rvcdKey), String.valueOf(rvcdName));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
List<FprZyFishDicVo> resultList;
|
|
||||||
Map<String, List<String>> rvcdMap = new HashMap<>();
|
|
||||||
if (StrUtil.isBlank(rvcd)) {
|
|
||||||
rvcdMap = list.stream()
|
|
||||||
.collect(Collectors.groupingBy(
|
|
||||||
item -> StrUtil.blankToDefault(item.getZyFishId(), item.getId()),
|
|
||||||
LinkedHashMap::new,
|
|
||||||
Collectors.mapping(FprZyFishDicVo::getRvcd, Collectors.toList())
|
|
||||||
));
|
|
||||||
LinkedHashMap<String, FprZyFishDicVo> distinctMap = new LinkedHashMap<>();
|
|
||||||
for (FprZyFishDicVo item : list) {
|
|
||||||
distinctMap.putIfAbsent(StrUtil.blankToDefault(item.getZyFishId(), item.getId()), item);
|
|
||||||
}
|
|
||||||
resultList = new ArrayList<>(distinctMap.values());
|
|
||||||
} else {
|
|
||||||
resultList = new ArrayList<>(list);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
int startIndex = loadOptions == null || loadOptions.getSkip() == null ? 0 : Math.max(loadOptions.getSkip(), 0);
|
||||||
|
fillZyFishRvcdNames(resultList, rvcd);
|
||||||
for (int i = 0; i < resultList.size(); i++) {
|
for (int i = 0; i < resultList.size(); i++) {
|
||||||
FprZyFishDicVo item = resultList.get(i);
|
FprZyFishDicVo item = resultList.get(i);
|
||||||
item.setIndex(i + 1);
|
item.setIndex(startIndex + i + 1);
|
||||||
item.setSpawnMonth(formatSpawnMonth(item.getSpawnMonth()));
|
item.setSpawnMonth(formatSpawnMonth(item.getSpawnMonth()));
|
||||||
if (StrUtil.isBlank(rvcd)) {
|
|
||||||
List<String> rvcdList = rvcdMap.getOrDefault(
|
|
||||||
StrUtil.blankToDefault(item.getZyFishId(), item.getId()),
|
|
||||||
new ArrayList<>()
|
|
||||||
).stream().filter(StrUtil::isNotBlank).distinct().toList();
|
|
||||||
List<String> rvcdNames = new ArrayList<>();
|
|
||||||
for (String rvcdItem : rvcdList) {
|
|
||||||
String rvcdName = rvcdNameMap.get(rvcdItem);
|
|
||||||
if (StrUtil.isNotBlank(rvcdName)) {
|
|
||||||
rvcdNames.add(rvcdName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
item.setRvcdName(String.join(",", rvcdNames));
|
|
||||||
} else {
|
|
||||||
item.setRvcdName(rvcdNameMap.get(item.getRvcd()));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DataSourceResult<FprZyFishDicVo> result = new DataSourceResult<>();
|
DataSourceResult<FprZyFishDicVo> result = new DataSourceResult<>();
|
||||||
result.setTotal((long) resultList.size());
|
result.setTotal(page != null ? page.getTotal() : resultList.size());
|
||||||
result.setData(paginateZyFishDicList(resultList, loadOptions));
|
result.setData(resultList);
|
||||||
result.setAggregates(new HashMap<>());
|
result.setAggregates(new HashMap<>());
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -390,7 +336,7 @@ public class FprMonitorServiceImpl implements FprMonitorService {
|
|||||||
"NVL(alongBase.ORDER_INDEX, 999999) AS rvcdStepSort, " +
|
"NVL(alongBase.ORDER_INDEX, 999999) AS rvcdStepSort, " +
|
||||||
"NVL(engSort.SORT, 999999) AS rstcdStepSort, " +
|
"NVL(engSort.SORT, 999999) AS rstcdStepSort, " +
|
||||||
"NVL(siteSort.SORT, NVL(src.ORDER_INDEX, 999999)) AS siteStepSort " +
|
"NVL(siteSort.SORT, NVL(src.ORDER_INDEX, 999999)) AS siteStepSort " +
|
||||||
"FROM SD_FPRD_B_H src " +
|
"FROM SD_AIMONITOR_B_H src " +
|
||||||
"LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = src.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 " +
|
"LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = src.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 " +
|
||||||
"LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = src.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 " +
|
"LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = src.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 " +
|
||||||
"LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = src.HBRVCD " +
|
"LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = src.HBRVCD " +
|
||||||
@ -426,13 +372,13 @@ public class FprMonitorServiceImpl implements FprMonitorService {
|
|||||||
private String buildFprdRunDataInfoSql(FprdRunDataAo ao) {
|
private String buildFprdRunDataInfoSql(FprdRunDataAo ao) {
|
||||||
StringBuilder sql = new StringBuilder("SELECT ")
|
StringBuilder sql = new StringBuilder("SELECT ")
|
||||||
.append("NVL((SELECT COUNT(1) ")
|
.append("NVL((SELECT COUNT(1) ")
|
||||||
.append(" FROM SD_FPRD_B_H baseCnt ")
|
.append(" FROM SD_AIMONITOR_B_H baseCnt ")
|
||||||
.append(" WHERE NVL(baseCnt.IS_DELETED, 0) = 0 ")
|
.append(" WHERE NVL(baseCnt.IS_DELETED, 0) = 0 ")
|
||||||
.append(" AND baseCnt.STTP = 'FPRD' ")
|
.append(" AND baseCnt.STTP = 'FPRD' ")
|
||||||
.append(" AND baseCnt.BASE_ID = #{map.baseId}), 0) AS fprdCount, ")
|
.append(" AND baseCnt.BASE_ID = #{map.baseId}), 0) AS fprdCount, ")
|
||||||
.append("NVL((SELECT COUNT(DISTINCT fish.NAME) ")
|
.append("NVL((SELECT COUNT(DISTINCT fish.NAME) ")
|
||||||
.append(" FROM SD_FPRD_R run ")
|
.append(" FROM SD_FPRD_R run ")
|
||||||
.append(" INNER JOIN SD_FPRD_B_H base ON base.STCD = run.STCD ")
|
.append(" INNER JOIN SD_AIMONITOR_B_H base ON base.STCD = run.STCD ")
|
||||||
.append(" AND NVL(base.IS_DELETED, 0) = 0 ")
|
.append(" AND NVL(base.IS_DELETED, 0) = 0 ")
|
||||||
.append(" AND base.STTP = 'FPRD' ")
|
.append(" AND base.STTP = 'FPRD' ")
|
||||||
.append(" INNER JOIN SD_FPRDFISH_R fish ON fish.FPRDR_ID = run.ID ")
|
.append(" INNER JOIN SD_FPRDFISH_R fish ON fish.FPRDR_ID = run.ID ")
|
||||||
@ -446,7 +392,7 @@ public class FprMonitorServiceImpl implements FprMonitorService {
|
|||||||
sql.append("), 0) AS ftpCount, ")
|
sql.append("), 0) AS ftpCount, ")
|
||||||
.append("NVL((SELECT COUNT(1) ")
|
.append("NVL((SELECT COUNT(1) ")
|
||||||
.append(" FROM SD_FPRD_R run ")
|
.append(" FROM SD_FPRD_R run ")
|
||||||
.append(" INNER JOIN SD_FPRD_B_H base ON base.STCD = run.STCD ")
|
.append(" INNER JOIN SD_AIMONITOR_B_H base ON base.STCD = run.STCD ")
|
||||||
.append(" AND NVL(base.IS_DELETED, 0) = 0 ")
|
.append(" AND NVL(base.IS_DELETED, 0) = 0 ")
|
||||||
.append(" AND base.STTP = 'FPRD' ")
|
.append(" AND base.STTP = 'FPRD' ")
|
||||||
.append(" INNER JOIN SD_FPRDFISH_R fish ON fish.FPRDR_ID = run.ID ")
|
.append(" INNER JOIN SD_FPRDFISH_R fish ON fish.FPRDR_ID = run.ID ")
|
||||||
@ -469,7 +415,7 @@ public class FprMonitorServiceImpl implements FprMonitorService {
|
|||||||
.append("TO_NUMBER(TO_CHAR(run.TM, 'MM')) AS month, ")
|
.append("TO_NUMBER(TO_CHAR(run.TM, 'MM')) AS month, ")
|
||||||
.append("TO_NUMBER(TO_CHAR(run.TM, 'YYYY')) AS year ")
|
.append("TO_NUMBER(TO_CHAR(run.TM, 'YYYY')) AS year ")
|
||||||
.append("FROM SD_FPRD_R run ")
|
.append("FROM SD_FPRD_R run ")
|
||||||
.append("INNER JOIN SD_FPRD_B_H base ON base.STCD = run.STCD ")
|
.append("INNER JOIN SD_AIMONITOR_B_H base ON base.STCD = run.STCD ")
|
||||||
.append(" AND NVL(base.IS_DELETED, 0) = 0 ")
|
.append(" AND NVL(base.IS_DELETED, 0) = 0 ")
|
||||||
.append(" AND base.STTP = 'FPRD' ")
|
.append(" AND base.STTP = 'FPRD' ")
|
||||||
.append("INNER JOIN SD_FPRDFISH_R fish ON fish.FPRDR_ID = run.ID ")
|
.append("INNER JOIN SD_FPRDFISH_R fish ON fish.FPRDR_ID = run.ID ")
|
||||||
@ -496,7 +442,7 @@ public class FprMonitorServiceImpl implements FprMonitorService {
|
|||||||
"fish.FSZ AS fsz, " +
|
"fish.FSZ AS fsz, " +
|
||||||
"fish.WEIGHT AS weight " +
|
"fish.WEIGHT AS weight " +
|
||||||
"FROM SD_FPRD_R run " +
|
"FROM SD_FPRD_R run " +
|
||||||
"INNER JOIN SD_FPRD_B_H base ON run.STCD = base.STCD " +
|
"INNER JOIN SD_AIMONITOR_B_H base ON run.STCD = base.STCD " +
|
||||||
" AND base.STTP = 'FPRD' " +
|
" AND base.STTP = 'FPRD' " +
|
||||||
" AND NVL(base.IS_DELETED, 0) = 0 " +
|
" AND NVL(base.IS_DELETED, 0) = 0 " +
|
||||||
"INNER JOIN SD_FPRDFISH_R fish ON run.ID = fish.FPRDR_ID " +
|
"INNER JOIN SD_FPRDFISH_R fish ON run.ID = fish.FPRDR_ID " +
|
||||||
@ -739,6 +685,7 @@ public class FprMonitorServiceImpl implements FprMonitorService {
|
|||||||
"NVL(src.IS_DELETED, 0) AS isDeleted, " +
|
"NVL(src.IS_DELETED, 0) AS isDeleted, " +
|
||||||
"CASE WHEN rel.ZY_FISH_ID IS NULL THEN src.ID ELSE rel.ZY_FISH_ID END AS zyFishId, " +
|
"CASE WHEN rel.ZY_FISH_ID IS NULL THEN src.ID ELSE rel.ZY_FISH_ID END AS zyFishId, " +
|
||||||
"CASE WHEN rel.RVCD IS NULL THEN 'null' ELSE rel.RVCD END AS rvcd, " +
|
"CASE WHEN rel.RVCD IS NULL THEN 'null' ELSE rel.RVCD END AS rvcd, " +
|
||||||
|
"rv.RVNM AS rvcdName, " +
|
||||||
"src.NAME AS name, " +
|
"src.NAME AS name, " +
|
||||||
"src.TYPE AS type, " +
|
"src.TYPE AS type, " +
|
||||||
"src.FAMILY AS family, " +
|
"src.FAMILY AS family, " +
|
||||||
@ -769,15 +716,108 @@ public class FprMonitorServiceImpl implements FprMonitorService {
|
|||||||
"src.LOGO AS logo, " +
|
"src.LOGO AS logo, " +
|
||||||
"src.INFFILE AS inffile, " +
|
"src.INFFILE AS inffile, " +
|
||||||
"src.ORDERS, \n" +
|
"src.ORDERS, \n" +
|
||||||
"src.VLSR, \n"+
|
"src.VLSR AS vlsr, \n" +
|
||||||
|
"src.VLSR_TM AS vlsrTm, \n" +
|
||||||
"src.SPAWN_MONTH AS spawnMonth " +
|
"src.SPAWN_MONTH AS spawnMonth " +
|
||||||
"FROM SD_FISHDICTORY_B src " +
|
"FROM SD_FISHDICTORY_B src " +
|
||||||
"LEFT JOIN SD_FISHDICTORY_RLTN_B rel ON src.ID = rel.ZY_FISH_ID " +
|
"LEFT JOIN SD_FISHDICTORY_RLTN_B rel ON src.ID = rel.ZY_FISH_ID " +
|
||||||
" AND rel.RVCD <> 'ZY' " +
|
" AND rel.RVCD <> 'ZY' " +
|
||||||
" AND NVL(rel.IS_DELETED, 0) = 0 " +
|
" AND NVL(rel.IS_DELETED, 0) = 0 " +
|
||||||
|
"LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = rel.RVCD " +
|
||||||
"WHERE NVL(src.IS_DELETED, 0) = 0 ";
|
"WHERE NVL(src.IS_DELETED, 0) = 0 ";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String buildZyFishDicSummarySql() {
|
||||||
|
return "SELECT " +
|
||||||
|
"src.ID AS id, " +
|
||||||
|
"NVL(src.IS_DELETED, 0) AS isDeleted, " +
|
||||||
|
"src.ID AS zyFishId, " +
|
||||||
|
"NVL(relAgg.rvcd, 'null') AS rvcd, " +
|
||||||
|
"NVL(relAgg.rvcdName, '') AS rvcdName, " +
|
||||||
|
"src.NAME AS name, " +
|
||||||
|
"src.TYPE AS type, " +
|
||||||
|
"src.FAMILY AS family, " +
|
||||||
|
"src.GENUS AS genus, " +
|
||||||
|
"src.SPECIES AS species, " +
|
||||||
|
"src.NAME_EN AS nameEn, " +
|
||||||
|
"src.ALIAS AS alias, " +
|
||||||
|
"src.FSZ AS fsz, " +
|
||||||
|
"src.SHAPEDESC AS shapedesc, " +
|
||||||
|
"src.HABITATION AS habitation, " +
|
||||||
|
"src.HABIT_MIGRAT AS habitMigrat, " +
|
||||||
|
"src.FEEDING_HABIT AS feedingHabit, " +
|
||||||
|
"src.FOOD AS food, " +
|
||||||
|
"src.TIME_FEED AS timeFeed, " +
|
||||||
|
"src.ORIGN_DATE AS orignDate, " +
|
||||||
|
"CAST(NULL AS VARCHAR2(255)) AS filterContent, " +
|
||||||
|
"src.PRETEMP AS pretemp, " +
|
||||||
|
"src.FLOW_RATE AS flowRate, " +
|
||||||
|
"src.DEPTH AS depth, " +
|
||||||
|
"src.WQTQ AS wqtq, " +
|
||||||
|
"src.SPAWN_CHARACT AS spawnCharact, " +
|
||||||
|
"src.BOTM_MATER AS botmMater, " +
|
||||||
|
"src.PTYPE AS ptype, " +
|
||||||
|
"CASE src.PTYPE WHEN 1 THEN '濒危' WHEN 2 THEN '极危' WHEN 3 THEN '近危' WHEN 4 THEN '易危' WHEN 5 THEN '重点保护' WHEN 6 THEN '无危' WHEN 7 THEN '国家二级' WHEN 8 THEN '市二级保护' ELSE '未知' END AS ptypeName, " +
|
||||||
|
"src.SPEC_ORIGIN AS specOrigin, " +
|
||||||
|
"CASE WHEN src.SPEC_ORIGIN = 1 THEN '本土物种' WHEN src.SPEC_ORIGIN = 2 THEN '外来物种' ELSE NULL END AS specOriginName, " +
|
||||||
|
"src.DESCRIPTION AS description, " +
|
||||||
|
"src.LOGO AS logo, " +
|
||||||
|
"src.INFFILE AS inffile, " +
|
||||||
|
"src.ORDERS, " +
|
||||||
|
"src.VLSR AS vlsr, " +
|
||||||
|
"src.VLSR_TM AS vlsrTm, " +
|
||||||
|
"src.SPAWN_MONTH AS spawnMonth " +
|
||||||
|
"FROM SD_FISHDICTORY_B src " +
|
||||||
|
"LEFT JOIN ( " +
|
||||||
|
" SELECT relBase.ZY_FISH_ID AS zyFishId, " +
|
||||||
|
" MIN(relBase.RVCD) AS rvcd, " +
|
||||||
|
" LISTAGG(relBase.RVNM, ',') WITHIN GROUP (ORDER BY relBase.RVNM) AS rvcdName " +
|
||||||
|
" FROM ( " +
|
||||||
|
" SELECT DISTINCT rel.ZY_FISH_ID, rel.RVCD, rv.RVNM " +
|
||||||
|
" FROM SD_FISHDICTORY_RLTN_B rel " +
|
||||||
|
" LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = rel.RVCD " +
|
||||||
|
" WHERE rel.RVCD <> 'ZY' " +
|
||||||
|
" AND NVL(rel.IS_DELETED, 0) = 0 " +
|
||||||
|
" AND rv.RVNM IS NOT NULL " +
|
||||||
|
" ) relBase " +
|
||||||
|
" GROUP BY relBase.ZY_FISH_ID " +
|
||||||
|
") relAgg ON relAgg.zyFishId = src.ID " +
|
||||||
|
"WHERE NVL(src.IS_DELETED, 0) = 0 ";
|
||||||
|
}
|
||||||
|
|
||||||
|
private void fillZyFishRvcdNames(List<FprZyFishDicVo> list, String rvcdFilter) {
|
||||||
|
if (CollUtil.isEmpty(list)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (StrUtil.isNotBlank(rvcdFilter)) {
|
||||||
|
for (FprZyFishDicVo item : list) {
|
||||||
|
if (item != null && StrUtil.isBlank(item.getRvcdName()) && StrUtil.isNotBlank(item.getRvcd()) && !"null".equalsIgnoreCase(item.getRvcd())) {
|
||||||
|
item.setRvcdName(querySingleRvcdName(item.getRvcd()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (FprZyFishDicVo item : list) {
|
||||||
|
if (item != null && item.getRvcdName() == null) {
|
||||||
|
item.setRvcdName("");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String querySingleRvcdName(String rvcd) {
|
||||||
|
Map<String, Object> paramMap = new HashMap<>();
|
||||||
|
paramMap.put("rvcd", rvcd);
|
||||||
|
List<Map<String, Object>> rows = microservicDynamicSQLMapper.getAllList(
|
||||||
|
"SELECT RVNM AS rvcdName FROM SD_RVCD_DIC WHERE RVCD = #{map.rvcd} AND ROWNUM = 1",
|
||||||
|
paramMap
|
||||||
|
);
|
||||||
|
if (CollUtil.isEmpty(rows)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
Object value = rows.get(0).get("RVCDNAME");
|
||||||
|
return value == null ? null : String.valueOf(value);
|
||||||
|
}
|
||||||
|
|
||||||
private String buildMsstbprptDetailSelectSql(List<String> selectFields) {
|
private String buildMsstbprptDetailSelectSql(List<String> selectFields) {
|
||||||
LinkedHashMap<String, String> columnMap = buildMsstbprptSelectColumnMap();
|
LinkedHashMap<String, String> columnMap = buildMsstbprptSelectColumnMap();
|
||||||
if (CollUtil.isEmpty(selectFields)) {
|
if (CollUtil.isEmpty(selectFields)) {
|
||||||
@ -1384,6 +1424,7 @@ public class FprMonitorServiceImpl implements FprMonitorService {
|
|||||||
case "isDeleted" -> "t.isDeleted";
|
case "isDeleted" -> "t.isDeleted";
|
||||||
case "zyFishId" -> "t.zyFishId";
|
case "zyFishId" -> "t.zyFishId";
|
||||||
case "rvcd" -> "t.rvcd";
|
case "rvcd" -> "t.rvcd";
|
||||||
|
case "rvcdName" -> "t.rvcdName";
|
||||||
case "name" -> "t.name";
|
case "name" -> "t.name";
|
||||||
case "type" -> "t.type";
|
case "type" -> "t.type";
|
||||||
case "family" -> "t.family";
|
case "family" -> "t.family";
|
||||||
@ -1412,26 +1453,33 @@ public class FprMonitorServiceImpl implements FprMonitorService {
|
|||||||
case "logo" -> "t.logo";
|
case "logo" -> "t.logo";
|
||||||
case "inffile" -> "t.inffile";
|
case "inffile" -> "t.inffile";
|
||||||
case "spawnMonth" -> "t.spawnMonth";
|
case "spawnMonth" -> "t.spawnMonth";
|
||||||
|
case "orders" -> "t.orders";
|
||||||
|
case "vlsr" -> "t.vlsr";
|
||||||
|
case "vlsrTm" -> "t.vlsrTm";
|
||||||
default -> null;
|
default -> null;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<FprZyFishDicVo> paginateZyFishDicList(List<FprZyFishDicVo> resultList, DataSourceLoadOptionsBase loadOptions) {
|
private String buildZyFishDicOrderBySql(List<DataSourceRequest.SortDescriptor> sorts) {
|
||||||
if (CollUtil.isEmpty(resultList) || loadOptions == null || loadOptions.getTake() == null || loadOptions.getTake() <= 0) {
|
List<String> orderItems = new ArrayList<>();
|
||||||
return resultList;
|
if (CollUtil.isNotEmpty(sorts)) {
|
||||||
|
for (DataSourceRequest.SortDescriptor sort : sorts) {
|
||||||
|
if (sort == null || StrUtil.isBlank(sort.getField())) {
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
int page = loadOptions.getSkip() == null ? 1 : loadOptions.getSkip(); // 页码从1开始,缺省为1
|
String column = mapZyFishDicColumn(sort.getField());
|
||||||
// 如果页码 ≤ 0,强制设为1(避免负值)
|
if (StrUtil.isBlank(column)) {
|
||||||
if (page < 1) {
|
continue;
|
||||||
page = 1;
|
|
||||||
}
|
}
|
||||||
int size = loadOptions.getTake();
|
String direction = "desc".equalsIgnoreCase(sort.getDir()) || "des".equalsIgnoreCase(sort.getDir())
|
||||||
int start = (page - 1) * size;
|
? "DESC" : "ASC";
|
||||||
int end = Math.min(start + size, resultList.size());
|
orderItems.add(column + " " + direction + " NULLS LAST");
|
||||||
if (start >= resultList.size()) {
|
|
||||||
return new ArrayList<>();
|
|
||||||
}
|
}
|
||||||
return new ArrayList<>(resultList.subList(start, end));
|
}
|
||||||
|
if (orderItems.isEmpty()) {
|
||||||
|
return " ORDER BY t.rvcd ASC NULLS LAST, t.name ASC";
|
||||||
|
}
|
||||||
|
return " ORDER BY " + String.join(", ", orderItems);
|
||||||
}
|
}
|
||||||
|
|
||||||
private String formatSpawnMonth(String input) {
|
private String formatSpawnMonth(String input) {
|
||||||
|
|||||||
@ -47,6 +47,24 @@ public class VdMonitorController {
|
|||||||
return ResponseResult.successData(vdMonitorService.getKendoListCust(dataSourceRequest));
|
return ResponseResult.successData(vdMonitorService.getKendoListCust(dataSourceRequest));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/tree/GetKendoListCust")
|
||||||
|
@Operation(summary = "视频站树级结构查询")
|
||||||
|
public ResponseResult getVdTreeKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
return ResponseResult.successData(vdMonitorService.getVdTreeKendoListCust(dataSourceRequest));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/tree/GetKendoListCustSt")
|
||||||
|
@Operation(summary = "视频站树级结构查询-站点维度")
|
||||||
|
public ResponseResult getVdTreeKendoListCustSt(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
return ResponseResult.successData(vdMonitorService.getVdTreeKendoListCustSt(dataSourceRequest));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/vdpoint/GetKendoListCust")
|
||||||
|
@Operation(summary = "视频站锚点接口")
|
||||||
|
public ResponseResult getVdPointKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
return ResponseResult.successData(vdMonitorService.getVdPointKendoListCust(dataSourceRequest));
|
||||||
|
}
|
||||||
|
|
||||||
@PostMapping("/runData/GetKendoListCust")
|
@PostMapping("/runData/GetKendoListCust")
|
||||||
@Operation(summary = "查询视频监控运行数据")
|
@Operation(summary = "查询视频监控运行数据")
|
||||||
public ResponseResult getRunDataKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
public ResponseResult getRunDataKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
|||||||
@ -0,0 +1,86 @@
|
|||||||
|
package com.yfd.platform.qgc_env.vd.entity.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Schema(description = "视频站锚点信息")
|
||||||
|
public class VdPointVo implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@Schema(description = "视频站子站类")
|
||||||
|
private String sttp;
|
||||||
|
|
||||||
|
@Schema(description = "视频站编码")
|
||||||
|
private String stcd;
|
||||||
|
|
||||||
|
@Schema(description = "经度")
|
||||||
|
private BigDecimal lgtd;
|
||||||
|
|
||||||
|
@Schema(description = "纬度")
|
||||||
|
private BigDecimal lttd;
|
||||||
|
|
||||||
|
@Schema(description = "高程")
|
||||||
|
private BigDecimal dtmel;
|
||||||
|
|
||||||
|
@Schema(description = "锚点状态")
|
||||||
|
private String anchoPointState;
|
||||||
|
|
||||||
|
@Schema(description = "站类地图标识")
|
||||||
|
private String sttpMap;
|
||||||
|
|
||||||
|
@Schema(description = "标题")
|
||||||
|
private String titleName;
|
||||||
|
|
||||||
|
@Schema(description = "默认距离")
|
||||||
|
private Integer distance;
|
||||||
|
|
||||||
|
@Schema(description = "流域编码")
|
||||||
|
private String rvcd;
|
||||||
|
|
||||||
|
@Schema(description = "行政区编码")
|
||||||
|
private String addvcd;
|
||||||
|
|
||||||
|
@Schema(description = "基地编码")
|
||||||
|
private String baseId;
|
||||||
|
|
||||||
|
@Schema(description = "所属电站编码")
|
||||||
|
private String rstcds;
|
||||||
|
|
||||||
|
@Schema(description = "站类编码")
|
||||||
|
private String sttpCode;
|
||||||
|
|
||||||
|
@Schema(description = "视频站名称")
|
||||||
|
private String stnm;
|
||||||
|
|
||||||
|
@Schema(description = "流域名称")
|
||||||
|
private String rvnm;
|
||||||
|
|
||||||
|
@Schema(description = "电站名称")
|
||||||
|
private String ennm;
|
||||||
|
|
||||||
|
@Schema(description = "栖息地编码")
|
||||||
|
private String fhstcd;
|
||||||
|
|
||||||
|
@Schema(description = "栖息地名称")
|
||||||
|
private String fhstnm;
|
||||||
|
|
||||||
|
@Schema(description = "站类名称")
|
||||||
|
private String sttpName;
|
||||||
|
|
||||||
|
@Schema(description = "站址")
|
||||||
|
private String stlc;
|
||||||
|
|
||||||
|
@Schema(description = "播放方式")
|
||||||
|
private String playWay;
|
||||||
|
|
||||||
|
@Schema(description = "站点排序")
|
||||||
|
private Integer siteStepSort;
|
||||||
|
|
||||||
|
@Schema(description = "基地流域编码")
|
||||||
|
private String hbrvcd;
|
||||||
|
}
|
||||||
@ -0,0 +1,71 @@
|
|||||||
|
package com.yfd.platform.qgc_env.vd.entity.vo;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Schema(description = "视频站树节点")
|
||||||
|
public class VdTreeNodeVo implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@Schema(description = "节点ID")
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
@Schema(description = "节点名称")
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@Schema(description = "节点类型")
|
||||||
|
private String type;
|
||||||
|
|
||||||
|
@Schema(description = "节点类型名称")
|
||||||
|
private String typeName;
|
||||||
|
|
||||||
|
@Schema(description = "排序值")
|
||||||
|
private Integer sort;
|
||||||
|
|
||||||
|
@Schema(description = "父节点ID")
|
||||||
|
private String parentId;
|
||||||
|
|
||||||
|
@Schema(description = "父节点名称")
|
||||||
|
private String parentName;
|
||||||
|
|
||||||
|
@Schema(description = "是否有子节点")
|
||||||
|
private Integer hasChildren;
|
||||||
|
|
||||||
|
@Schema(description = "播放地址")
|
||||||
|
private String url;
|
||||||
|
|
||||||
|
@Schema(description = "播放方式")
|
||||||
|
private String playWay;
|
||||||
|
|
||||||
|
@Schema(description = "设备序列号")
|
||||||
|
private String deviceSerial;
|
||||||
|
|
||||||
|
@Schema(description = "接入方式")
|
||||||
|
private String accessWay;
|
||||||
|
|
||||||
|
@Schema(description = "流协议")
|
||||||
|
private String protocol;
|
||||||
|
|
||||||
|
@Schema(description = "清晰度")
|
||||||
|
private String quality;
|
||||||
|
|
||||||
|
@Schema(description = "控制方式")
|
||||||
|
private String controlMode;
|
||||||
|
|
||||||
|
@Schema(description = "设备状态")
|
||||||
|
private Integer status;
|
||||||
|
|
||||||
|
@Schema(description = "状态时间")
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private Date statusTm;
|
||||||
|
|
||||||
|
@Schema(description = "子节点")
|
||||||
|
private List<VdTreeNodeVo> children;
|
||||||
|
}
|
||||||
@ -0,0 +1,39 @@
|
|||||||
|
package com.yfd.platform.qgc_env.vd.entity.vo;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class VdTreeRowVo implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
private String stcd;
|
||||||
|
private String stCode;
|
||||||
|
private String stName;
|
||||||
|
private String stnm;
|
||||||
|
private String sttpCode;
|
||||||
|
private String sttpName;
|
||||||
|
private String sttpFullPath;
|
||||||
|
private String rstcd;
|
||||||
|
private String ennm;
|
||||||
|
private String baseId;
|
||||||
|
private String baseName;
|
||||||
|
private String url;
|
||||||
|
private String playWay;
|
||||||
|
private Integer baseSort;
|
||||||
|
private Integer rstcdStepSort;
|
||||||
|
private Integer siteStepSort;
|
||||||
|
private String deviceSerial;
|
||||||
|
private String accessWay;
|
||||||
|
private String protocol;
|
||||||
|
private String quality;
|
||||||
|
private String controlMode;
|
||||||
|
private Integer status;
|
||||||
|
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private Date statusTm;
|
||||||
|
}
|
||||||
@ -2,6 +2,7 @@ package com.yfd.platform.qgc_env.vd.service;
|
|||||||
|
|
||||||
import com.yfd.platform.common.DataSourceRequest;
|
import com.yfd.platform.common.DataSourceRequest;
|
||||||
import com.yfd.platform.common.DataSourceResult;
|
import com.yfd.platform.common.DataSourceResult;
|
||||||
|
import com.yfd.platform.qgc_env.vd.entity.vo.VdTreeNodeVo;
|
||||||
import com.yfd.platform.qgc_env.vd.entity.vo.VdRunDataVo;
|
import com.yfd.platform.qgc_env.vd.entity.vo.VdRunDataVo;
|
||||||
import com.yfd.platform.qgc_env.vd.entity.vo.VdVmsstbprptVo;
|
import com.yfd.platform.qgc_env.vd.entity.vo.VdVmsstbprptVo;
|
||||||
|
|
||||||
@ -13,5 +14,11 @@ public interface VdMonitorService {
|
|||||||
|
|
||||||
DataSourceResult<VdRunDataVo> getKendoListCust(DataSourceRequest dataSourceRequest);
|
DataSourceResult<VdRunDataVo> getKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
|
DataSourceResult<VdTreeNodeVo> getVdTreeKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
|
DataSourceResult<VdTreeNodeVo> getVdTreeKendoListCustSt(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
|
DataSourceResult<?> getVdPointKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
DataSourceResult<VdRunDataVo> getRunDataKendoListCust(DataSourceRequest dataSourceRequest);
|
DataSourceResult<VdRunDataVo> getRunDataKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,7 +9,10 @@ import com.yfd.platform.common.DataSourceResult;
|
|||||||
import com.yfd.platform.common.GroupHelper;
|
import com.yfd.platform.common.GroupHelper;
|
||||||
import com.yfd.platform.common.GroupingInfo;
|
import com.yfd.platform.common.GroupingInfo;
|
||||||
import com.yfd.platform.common.MicroservicDynamicSQLMapper;
|
import com.yfd.platform.common.MicroservicDynamicSQLMapper;
|
||||||
|
import com.yfd.platform.qgc_env.vd.entity.vo.VdPointVo;
|
||||||
import com.yfd.platform.qgc_env.vd.entity.vo.VdRunDataVo;
|
import com.yfd.platform.qgc_env.vd.entity.vo.VdRunDataVo;
|
||||||
|
import com.yfd.platform.qgc_env.vd.entity.vo.VdTreeNodeVo;
|
||||||
|
import com.yfd.platform.qgc_env.vd.entity.vo.VdTreeRowVo;
|
||||||
import com.yfd.platform.qgc_env.vd.entity.vo.VdVmsstbprptVo;
|
import com.yfd.platform.qgc_env.vd.entity.vo.VdVmsstbprptVo;
|
||||||
import com.yfd.platform.qgc_env.vd.service.VdMonitorService;
|
import com.yfd.platform.qgc_env.vd.service.VdMonitorService;
|
||||||
import com.yfd.platform.utils.QgcQueryWrapperUtil;
|
import com.yfd.platform.utils.QgcQueryWrapperUtil;
|
||||||
@ -18,6 +21,7 @@ import org.springframework.stereotype.Service;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Comparator;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -118,6 +122,113 @@ public class VdMonitorServiceImpl implements VdMonitorService {
|
|||||||
return queryLatestRunDataGroupList(dataSourceRequest, loadOptions);
|
return queryLatestRunDataGroupList(dataSourceRequest, loadOptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DataSourceResult<VdTreeNodeVo> getVdTreeKendoListCust(DataSourceRequest dataSourceRequest) {
|
||||||
|
Map<String, Object> paramMap = new HashMap<>();
|
||||||
|
String filterSql = buildVdTreeFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, new int[]{0});
|
||||||
|
|
||||||
|
StringBuilder sql = new StringBuilder();
|
||||||
|
sql.append("SELECT ")
|
||||||
|
.append("t.stcd AS stcd, ")
|
||||||
|
.append("t.stCode AS stCode, ")
|
||||||
|
.append("t.stName AS stName, ")
|
||||||
|
.append("t.stnm AS stnm, ")
|
||||||
|
.append("t.sttpCode AS sttpCode, ")
|
||||||
|
.append("t.sttpName AS sttpName, ")
|
||||||
|
.append("t.sttpFullPath AS sttpFullPath, ")
|
||||||
|
.append("t.rstcd AS rstcd, ")
|
||||||
|
.append("t.ennm AS ennm, ")
|
||||||
|
.append("t.baseId AS baseId, ")
|
||||||
|
.append("t.baseName AS baseName, ")
|
||||||
|
.append("t.url AS url, ")
|
||||||
|
.append("t.playWay AS playWay, ")
|
||||||
|
.append("t.baseSort AS baseSort, ")
|
||||||
|
.append("t.rstcdStepSort AS rstcdStepSort, ")
|
||||||
|
.append("t.siteStepSort AS siteStepSort, ")
|
||||||
|
.append("t.deviceSerial AS deviceSerial, ")
|
||||||
|
.append("t.accessWay AS accessWay, ")
|
||||||
|
.append("t.protocol AS protocol, ")
|
||||||
|
.append("t.quality AS quality, ")
|
||||||
|
.append("t.controlMode AS controlMode, ")
|
||||||
|
.append("t.status AS status, ")
|
||||||
|
.append("t.statusTm AS statusTm ")
|
||||||
|
.append("FROM (")
|
||||||
|
.append(buildVdTreeCoreSql())
|
||||||
|
.append(") t WHERE 1 = 1 AND t.sttpCode != 'VD_FPRD'");
|
||||||
|
if (StrUtil.isNotBlank(filterSql)) {
|
||||||
|
sql.append(" AND ").append(filterSql).append(" ");
|
||||||
|
}
|
||||||
|
sql.append(" ORDER BY t.baseSort ASC NULLS LAST, t.rstcdStepSort ASC NULLS LAST, t.siteStepSort ASC NULLS LAST, t.stcd ASC");
|
||||||
|
|
||||||
|
List<VdTreeRowVo> rows = microservicDynamicSQLMapper.getAllListWithResultType(sql.toString(), paramMap, VdTreeRowVo.class);
|
||||||
|
boolean baseScoped = containsNonBlankFilterValue(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), "baseId");
|
||||||
|
|
||||||
|
DataSourceResult<VdTreeNodeVo> result = new DataSourceResult<>();
|
||||||
|
List<VdTreeNodeVo> treeData = buildVdTreeNodes(rows, baseScoped);
|
||||||
|
result.setData(treeData);
|
||||||
|
result.setTotal((long) treeData.size());
|
||||||
|
result.setAggregates(new HashMap<>());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DataSourceResult<VdTreeNodeVo> getVdTreeKendoListCustSt(DataSourceRequest dataSourceRequest) {
|
||||||
|
Map<String, Object> paramMap = new HashMap<>();
|
||||||
|
String filterSql = buildVdTreeFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, new int[]{0});
|
||||||
|
|
||||||
|
StringBuilder sql = new StringBuilder();
|
||||||
|
sql.append("SELECT ")
|
||||||
|
.append("t.stcd AS stcd, ")
|
||||||
|
.append("t.stCode AS stCode, ")
|
||||||
|
.append("t.stName AS stName, ")
|
||||||
|
.append("t.stnm AS stnm, ")
|
||||||
|
.append("t.sttpCode AS sttpCode, ")
|
||||||
|
.append("t.sttpName AS sttpName, ")
|
||||||
|
.append("t.sttpFullPath AS sttpFullPath, ")
|
||||||
|
.append("t.rstcd AS rstcd, ")
|
||||||
|
.append("t.ennm AS ennm, ")
|
||||||
|
.append("t.baseId AS baseId, ")
|
||||||
|
.append("t.baseName AS baseName, ")
|
||||||
|
.append("t.url AS url, ")
|
||||||
|
.append("t.playWay AS playWay, ")
|
||||||
|
.append("t.baseSort AS baseSort, ")
|
||||||
|
.append("t.rstcdStepSort AS rstcdStepSort, ")
|
||||||
|
.append("t.siteStepSort AS siteStepSort, ")
|
||||||
|
.append("t.deviceSerial AS deviceSerial, ")
|
||||||
|
.append("t.accessWay AS accessWay, ")
|
||||||
|
.append("t.protocol AS protocol, ")
|
||||||
|
.append("t.quality AS quality, ")
|
||||||
|
.append("t.controlMode AS controlMode, ")
|
||||||
|
.append("t.status AS status, ")
|
||||||
|
.append("t.statusTm AS statusTm ")
|
||||||
|
.append("FROM (")
|
||||||
|
.append(buildVdTreeCoreSql())
|
||||||
|
.append(") t WHERE 1 = 1 ");
|
||||||
|
if (StrUtil.isNotBlank(filterSql)) {
|
||||||
|
sql.append(" AND ").append(filterSql).append(" ");
|
||||||
|
}
|
||||||
|
sql.append(" ORDER BY t.baseSort ASC NULLS LAST, t.rstcdStepSort ASC NULLS LAST, t.siteStepSort ASC NULLS LAST, t.stcd ASC");
|
||||||
|
|
||||||
|
List<VdTreeRowVo> rows = microservicDynamicSQLMapper.getAllListWithResultType(sql.toString(), paramMap, VdTreeRowVo.class);
|
||||||
|
boolean baseScoped = containsNonBlankFilterValue(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), "baseId");
|
||||||
|
|
||||||
|
DataSourceResult<VdTreeNodeVo> result = new DataSourceResult<>();
|
||||||
|
List<VdTreeNodeVo> treeData = buildVdTreeNodesByStation(rows, baseScoped);
|
||||||
|
result.setData(treeData);
|
||||||
|
result.setTotal((long) treeData.size());
|
||||||
|
result.setAggregates(new HashMap<>());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DataSourceResult<?> getVdPointKendoListCust(DataSourceRequest dataSourceRequest) {
|
||||||
|
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
|
||||||
|
if (CollUtil.isNotEmpty(dataSourceRequest == null ? null : dataSourceRequest.getGroup())) {
|
||||||
|
return getKendoListCust(dataSourceRequest);
|
||||||
|
}
|
||||||
|
return queryVdPointDetailList(dataSourceRequest, loadOptions);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DataSourceResult<VdRunDataVo> getRunDataKendoListCust(DataSourceRequest dataSourceRequest) {
|
public DataSourceResult<VdRunDataVo> getRunDataKendoListCust(DataSourceRequest dataSourceRequest) {
|
||||||
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
|
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
|
||||||
@ -131,9 +242,30 @@ public class VdMonitorServiceImpl implements VdMonitorService {
|
|||||||
GroupingInfo[] groups,
|
GroupingInfo[] groups,
|
||||||
String filterSql,
|
String filterSql,
|
||||||
Map<String, Object> paramMap) {
|
Map<String, Object> paramMap) {
|
||||||
|
List<DataSourceRequest.GroupDescriptor> groupDescriptors = dataSourceRequest == null ? null : dataSourceRequest.getGroup();
|
||||||
|
List<String> selectItems = new ArrayList<>();
|
||||||
|
if (CollUtil.isNotEmpty(groupDescriptors)) {
|
||||||
|
for (DataSourceRequest.GroupDescriptor descriptor : groupDescriptors) {
|
||||||
|
if (descriptor == null || StrUtil.isBlank(descriptor.getField())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
String column = mapColumn(descriptor.getField());
|
||||||
|
if (StrUtil.isBlank(column)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
selectItems.add(column + " AS " + descriptor.getField());
|
||||||
|
selectItems.add("COUNT(1) AS count_" + descriptor.getField());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (selectItems.isEmpty()) {
|
||||||
|
selectItems.add("t.sttpCode AS sttpCode");
|
||||||
|
selectItems.add("COUNT(1) AS count_sttpCode");
|
||||||
|
}
|
||||||
|
|
||||||
StringBuilder sql = new StringBuilder();
|
StringBuilder sql = new StringBuilder();
|
||||||
sql.append("SELECT t.sttpCode AS sttpCode, COUNT(1) AS count_sttpCode ")
|
sql.append("SELECT ")
|
||||||
.append("FROM (")
|
.append(String.join(", ", selectItems))
|
||||||
|
.append(" FROM (")
|
||||||
.append(buildVmsstbprptViewSql())
|
.append(buildVmsstbprptViewSql())
|
||||||
.append(") t ")
|
.append(") t ")
|
||||||
.append("WHERE 1 = 1 ");
|
.append("WHERE 1 = 1 ");
|
||||||
@ -141,8 +273,24 @@ public class VdMonitorServiceImpl implements VdMonitorService {
|
|||||||
sql.append(" AND ").append(filterSql).append(" ");
|
sql.append(" AND ").append(filterSql).append(" ");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<String> groupByColumns = new ArrayList<>();
|
||||||
|
if (CollUtil.isNotEmpty(groupDescriptors)) {
|
||||||
|
for (DataSourceRequest.GroupDescriptor descriptor : groupDescriptors) {
|
||||||
|
if (descriptor == null || StrUtil.isBlank(descriptor.getField())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
String column = mapColumn(descriptor.getField());
|
||||||
|
if (StrUtil.isNotBlank(column)) {
|
||||||
|
groupByColumns.add(column);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!groupByColumns.isEmpty()) {
|
||||||
|
sql.append(" GROUP BY ").append(String.join(", ", groupByColumns));
|
||||||
|
} else {
|
||||||
sql.append(" GROUP BY t.sttpCode ");
|
sql.append(" GROUP BY t.sttpCode ");
|
||||||
sql.append(buildOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getGroup()));
|
}
|
||||||
|
sql.append(buildOrderBySql(groupDescriptors));
|
||||||
|
|
||||||
List<Map<String, Object>> rows = microservicDynamicSQLMapper.pageAllList(null, sql.toString(), paramMap);
|
List<Map<String, Object>> rows = microservicDynamicSQLMapper.pageAllList(null, sql.toString(), paramMap);
|
||||||
DataSourceResult<VdVmsstbprptVo> result = new DataSourceResult<>();
|
DataSourceResult<VdVmsstbprptVo> result = new DataSourceResult<>();
|
||||||
@ -294,6 +442,32 @@ public class VdMonitorServiceImpl implements VdMonitorService {
|
|||||||
return queryRunDataGroupList(dataSourceRequest, loadOptions, buildLatestRunDataCoreSql());
|
return queryRunDataGroupList(dataSourceRequest, loadOptions, buildLatestRunDataCoreSql());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private DataSourceResult<VdPointVo> queryVdPointDetailList(DataSourceRequest dataSourceRequest,
|
||||||
|
DataSourceLoadOptionsBase loadOptions) {
|
||||||
|
Page<?> page = loadOptions == null ? null : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake());
|
||||||
|
StringBuilder sql = new StringBuilder();
|
||||||
|
sql.append("SELECT ")
|
||||||
|
.append(buildVdPointSelectSql())
|
||||||
|
.append("FROM (")
|
||||||
|
.append(buildVdPointCoreSql())
|
||||||
|
.append(") t WHERE 1 = 1 ");
|
||||||
|
|
||||||
|
Map<String, Object> paramMap = new HashMap<>();
|
||||||
|
String filterSql = buildFilterCondition(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, new int[]{0});
|
||||||
|
if (StrUtil.isNotBlank(filterSql)) {
|
||||||
|
sql.append(" AND ").append(filterSql).append(" ");
|
||||||
|
}
|
||||||
|
sql.append(buildVdPointOrderBySql(dataSourceRequest == null ? null : dataSourceRequest.getSort()));
|
||||||
|
|
||||||
|
List<VdPointVo> list = microservicDynamicSQLMapper.pageAllListWithResultType(
|
||||||
|
page, sql.toString(), paramMap, VdPointVo.class);
|
||||||
|
DataSourceResult<VdPointVo> result = new DataSourceResult<>();
|
||||||
|
result.setData(list);
|
||||||
|
result.setTotal(page != null ? page.getTotal() : list.size());
|
||||||
|
result.setAggregates(new HashMap<>());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
private DataSourceResult<VdRunDataVo> queryRunDataGroupList(DataSourceRequest dataSourceRequest,
|
private DataSourceResult<VdRunDataVo> queryRunDataGroupList(DataSourceRequest dataSourceRequest,
|
||||||
DataSourceLoadOptionsBase loadOptions,
|
DataSourceLoadOptionsBase loadOptions,
|
||||||
String coreSql) {
|
String coreSql) {
|
||||||
@ -418,12 +592,57 @@ public class VdMonitorServiceImpl implements VdMonitorService {
|
|||||||
" AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLE, 1) = 1 ";
|
" AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLE, 1) = 1 ";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String buildVdTreeCoreSql() {
|
||||||
|
return "SELECT " +
|
||||||
|
"base.STCD AS stcd, " +
|
||||||
|
"base.STNM AS stnm, " +
|
||||||
|
"base.CSTCD AS stCode, " +
|
||||||
|
"cst.STNM AS stName, " +
|
||||||
|
"base.STTP AS sttpCode, " +
|
||||||
|
"sttp.STTP_NAME AS sttpName, " +
|
||||||
|
"sttp.FULL_PATH AS sttpFullPath, " +
|
||||||
|
"base.RSTCD AS rstcd, " +
|
||||||
|
"eng.ENNM AS ennm, " +
|
||||||
|
"NVL(eng.BASE_ID, base.BASE_ID) AS baseId, " +
|
||||||
|
"hb.BASENAME AS baseName, " +
|
||||||
|
"base.URL AS url, " +
|
||||||
|
"CASE WHEN base.URL IS NULL THEN NULL WHEN INSTR(base.URL, 'm3u8') > 0 THEN '1' ELSE '0' END AS playWay, " +
|
||||||
|
"NVL(hb.ORDER_INDEX, 999999) AS baseSort, " +
|
||||||
|
"NVL(eng.ORDER_INDEX, 999999) AS rstcdStepSort, " +
|
||||||
|
"NVL(base.ORDER_INDEX, 999999) AS siteStepSort, " +
|
||||||
|
"base.DEVICE_SERIAL AS deviceSerial, " +
|
||||||
|
"base.ACCESS_WAY AS accessWay, " +
|
||||||
|
"base.PROTOCOL AS protocol, " +
|
||||||
|
"base.QUALITY AS quality, " +
|
||||||
|
"base.CONTROL_MODE AS controlMode, " +
|
||||||
|
"status.STATUS AS status, " +
|
||||||
|
"status.TM AS statusTm " +
|
||||||
|
"FROM (" + buildVdDeviceBaseSql() + ") base " +
|
||||||
|
"LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = base.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 " +
|
||||||
|
"LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = NVL(eng.BASE_ID, base.BASE_ID) " +
|
||||||
|
" AND NVL(hb.IS_DELETED, 0) = 0 AND NVL(hb.ENABLED, 1) = 1 " +
|
||||||
|
"LEFT JOIN (" + buildStationBaseSql() + ") cst ON cst.STCD = base.CSTCD " +
|
||||||
|
"LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = base.STTP " +
|
||||||
|
" AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLE, 1) = 1 " +
|
||||||
|
"LEFT JOIN ( " +
|
||||||
|
"SELECT detail.STCD, detail.TM, detail.STATUS " +
|
||||||
|
"FROM MS_SBGZSTAT_B detail " +
|
||||||
|
"INNER JOIN ( " +
|
||||||
|
"SELECT STCD, MAX(TM) AS MAX_TM FROM MS_SBGZSTAT_B " +
|
||||||
|
"WHERE NVL(IS_DELETED, 0) = 0 GROUP BY STCD " +
|
||||||
|
") latest ON detail.STCD = latest.STCD AND detail.TM = latest.MAX_TM " +
|
||||||
|
"WHERE NVL(detail.IS_DELETED, 0) = 0 " +
|
||||||
|
") status ON status.STCD = base.STCD " +
|
||||||
|
"WHERE base.STTP LIKE 'VD_%' ";
|
||||||
|
}
|
||||||
|
|
||||||
private String buildVdDeviceBaseSql() {
|
private String buildVdDeviceBaseSql() {
|
||||||
return "SELECT vd.STCD, vd.STNM, vd.MNTP, vd.STTP, vd.LGTD, vd.LTTD, vd.ELEV, vd.STLC, " +
|
return "SELECT vd.STCD, vd.STNM, vd.MNTP, vd.STTP, vd.LGTD, vd.LTTD, vd.ELEV, vd.STLC, " +
|
||||||
" vd.JCDT, vd.WDDT, vd.BLDSTT_CODE, vd.USFL, vd.DTIN, vd.STINDX, vd.RSTCD, vd.BASE_ID, " +
|
" vd.JCDT, vd.WDDT, vd.BLDSTT_CODE, vd.USFL, vd.DTIN, vd.STINDX, vd.RSTCD, vd.BASE_ID, " +
|
||||||
" vd.HBRVCD, vd.RVCD, vd.ADDVCD, vd.CSTCD, vd.FHSTCD, CAST(NULL AS VARCHAR2(3000)) AS INTRODUCE, " +
|
" vd.HBRVCD, vd.RVCD, vd.ADDVCD, vd.CSTCD, vd.FHSTCD, CAST(NULL AS VARCHAR2(3000)) AS INTRODUCE, " +
|
||||||
" CAST(NULL AS VARCHAR2(255)) AS LOGO, CAST(NULL AS VARCHAR2(1000)) AS INFFILE, " +
|
" CAST(NULL AS VARCHAR2(255)) AS LOGO, CAST(NULL AS VARCHAR2(1000)) AS INFFILE, " +
|
||||||
" vd.DTFRQCY, vd.REMARK, vd.VLSR, vd.VLSR_TM, vd.URL AS URL, CAST(NULL AS NUMBER(8,0)) AS ORDER_INDEX, " +
|
" vd.DTFRQCY, vd.REMARK, vd.VLSR, vd.VLSR_TM, vd.URL AS URL, vd.DEVICE_SERIAL, vd.ACCESS_WAY, " +
|
||||||
|
" vd.PROTOCOL, vd.QUALITY, vd.CONTROL_MODE, CAST(NULL AS NUMBER(8,0)) AS ORDER_INDEX, " +
|
||||||
" 'SD_VDINFO_B' AS SOURCE_TABLE " +
|
" 'SD_VDINFO_B' AS SOURCE_TABLE " +
|
||||||
"FROM SD_VDINFO_B vd WHERE 1=1 " +
|
"FROM SD_VDINFO_B vd WHERE 1=1 " +
|
||||||
// " AND vd.STTP = 'VD_FP' "+
|
// " AND vd.STTP = 'VD_FP' "+
|
||||||
@ -431,11 +650,59 @@ public class VdMonitorServiceImpl implements VdMonitorService {
|
|||||||
"SELECT sonar.STCD, sonar.STNM, sonar.MNTP, sonar.STTP, sonar.LGTD, sonar.LTTD, sonar.ELEV, sonar.STLC, " +
|
"SELECT sonar.STCD, sonar.STNM, sonar.MNTP, sonar.STTP, sonar.LGTD, sonar.LTTD, sonar.ELEV, sonar.STLC, " +
|
||||||
" sonar.JCDT, sonar.WDDT, sonar.BLDSTT_CODE, sonar.USFL, sonar.DTIN, sonar.STINDX, sonar.RSTCD, sonar.BASE_ID, " +
|
" sonar.JCDT, sonar.WDDT, sonar.BLDSTT_CODE, sonar.USFL, sonar.DTIN, sonar.STINDX, sonar.RSTCD, sonar.BASE_ID, " +
|
||||||
" sonar.HBRVCD, sonar.RVCD, sonar.ADDVCD, CAST(NULL AS VARCHAR2(36)) AS CSTCD, CAST(NULL AS VARCHAR2(36)) AS FHSTCD, " +
|
" sonar.HBRVCD, sonar.RVCD, sonar.ADDVCD, CAST(NULL AS VARCHAR2(36)) AS CSTCD, CAST(NULL AS VARCHAR2(36)) AS FHSTCD, " +
|
||||||
" sonar.INTRODUCE, sonar.LOGO, sonar.INFFILE, sonar.DTFRQCY, sonar.REMARK, sonar.VLSR, sonar.VLSR_TM, CAST(NULL AS VARCHAR2(512)) AS URL, sonar.ORDER_INDEX, " +
|
" sonar.INTRODUCE, sonar.LOGO, sonar.INFFILE, sonar.DTFRQCY, sonar.REMARK, sonar.VLSR, sonar.VLSR_TM, CAST(NULL AS VARCHAR2(512)) AS URL, " +
|
||||||
|
" CAST(NULL AS VARCHAR2(255)) AS DEVICE_SERIAL, CAST(NULL AS VARCHAR2(10)) AS ACCESS_WAY, " +
|
||||||
|
" CAST(NULL AS VARCHAR2(50)) AS PROTOCOL, CAST(NULL AS VARCHAR2(50)) AS QUALITY, CAST(NULL AS VARCHAR2(2048)) AS CONTROL_MODE, sonar.ORDER_INDEX, " +
|
||||||
" 'SD_SONAR_B_H' AS SOURCE_TABLE " +
|
" 'SD_SONAR_B_H' AS SOURCE_TABLE " +
|
||||||
"FROM SD_SONAR_B_H sonar WHERE NVL(sonar.IS_DELETED, 0) = 0 AND sonar.STTP IN ('VD_WVD', 'VD_SN') ";
|
"FROM SD_SONAR_B_H sonar WHERE NVL(sonar.IS_DELETED, 0) = 0 AND sonar.STTP IN ('VD_WVD', 'VD_SN') ";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String buildVdPointCoreSql() {
|
||||||
|
return "SELECT " +
|
||||||
|
"src.STTP AS sttp, " +
|
||||||
|
"src.STCD AS stcd, " +
|
||||||
|
"src.LGTD AS lgtd, " +
|
||||||
|
"src.LTTD AS lttd, " +
|
||||||
|
"CAST(NULL AS NUMBER(10, 6)) AS dtmel, " +
|
||||||
|
"CASE " +
|
||||||
|
" WHEN NVL(eng.HBRVCD, src.HBRVCD) = 'SJLY126' THEN CASE src.STTP " +
|
||||||
|
" WHEN 'VD_FBFM' THEN 'fbfm_spjk' " +
|
||||||
|
" WHEN 'VD_EQS' THEN 'eqs_spjk' " +
|
||||||
|
" WHEN 'VD_FB' THEN 'fb_spjk' " +
|
||||||
|
" WHEN 'VD_FP' THEN 'fp_spjk' " +
|
||||||
|
" WHEN 'VD_FH' THEN 'fh_spjk' " +
|
||||||
|
" WHEN 'VD_VA' THEN 'va_spjk' " +
|
||||||
|
" WHEN 'VD_VP' THEN 'vp_spjk' " +
|
||||||
|
" WHEN 'VD_DW' THEN 'dw_spjk' " +
|
||||||
|
" WHEN 'VD_WQ' THEN 'wq_spjk' " +
|
||||||
|
" ELSE 'spjk' END " +
|
||||||
|
" ELSE 'spjk' END AS anchoPointState, " +
|
||||||
|
"'VD' AS sttpMap, " +
|
||||||
|
"src.STNM AS titleName, " +
|
||||||
|
"400000 AS distance, " +
|
||||||
|
"NVL(eng.RVCD, src.RVCD) AS rvcd, " +
|
||||||
|
"NVL(eng.ADDVCD, src.ADDVCD) AS addvcd, " +
|
||||||
|
"NVL(eng.BASE_ID, src.BASE_ID) AS baseId, " +
|
||||||
|
"src.RSTCD AS rstcds, " +
|
||||||
|
"'VD' AS sttpCode, " +
|
||||||
|
"src.STNM AS stnm, " +
|
||||||
|
"rv.RVNM AS rvnm, " +
|
||||||
|
"eng.ENNM AS ennm, " +
|
||||||
|
"src.FHSTCD AS fhstcd, " +
|
||||||
|
"fh.STNM AS fhstnm, " +
|
||||||
|
"sttp.STTP_NAME AS sttpName, " +
|
||||||
|
"src.STLC AS stlc, " +
|
||||||
|
"CASE WHEN src.URL IS NULL THEN NULL WHEN INSTR(src.URL, 'm3u8') > 0 THEN '1' ELSE '0' END AS playWay, " +
|
||||||
|
"src.ORDER_INDEX AS siteStepSort, " +
|
||||||
|
"NVL(eng.HBRVCD, src.HBRVCD) AS hbrvcd " +
|
||||||
|
"FROM (" + buildVdDeviceBaseSql() + ") src " +
|
||||||
|
"LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = src.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 " +
|
||||||
|
"LEFT JOIN SD_FHBT_B_H fh ON fh.STCD = src.FHSTCD AND NVL(fh.IS_DELETED, 0) = 0 " +
|
||||||
|
"LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = NVL(eng.RVCD, src.RVCD) " +
|
||||||
|
"LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = src.STTP " +
|
||||||
|
" AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLE, 1) = 1 ";
|
||||||
|
}
|
||||||
|
|
||||||
private String buildRunDataCoreSql() {
|
private String buildRunDataCoreSql() {
|
||||||
return "SELECT " +
|
return "SELECT " +
|
||||||
"run.ID AS id, " +
|
"run.ID AS id, " +
|
||||||
@ -591,6 +858,33 @@ public class VdMonitorServiceImpl implements VdMonitorService {
|
|||||||
return String.join(", ", actualColumns);
|
return String.join(", ", actualColumns);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String buildVdPointSelectSql() {
|
||||||
|
return "t.sttp AS sttp, " +
|
||||||
|
"t.stcd AS stcd, " +
|
||||||
|
"t.lgtd AS lgtd, " +
|
||||||
|
"t.lttd AS lttd, " +
|
||||||
|
"t.dtmel AS dtmel, " +
|
||||||
|
"t.anchoPointState AS anchoPointState, " +
|
||||||
|
"t.sttpMap AS sttpMap, " +
|
||||||
|
"t.titleName AS titleName, " +
|
||||||
|
"t.distance AS distance, " +
|
||||||
|
"t.rvcd AS rvcd, " +
|
||||||
|
"t.addvcd AS addvcd, " +
|
||||||
|
"t.baseId AS baseId, " +
|
||||||
|
"t.rstcds AS rstcds, " +
|
||||||
|
"t.sttpCode AS sttpCode, " +
|
||||||
|
"t.stnm AS stnm, " +
|
||||||
|
"t.rvnm AS rvnm, " +
|
||||||
|
"t.ennm AS ennm, " +
|
||||||
|
"t.fhstcd AS fhstcd, " +
|
||||||
|
"t.fhstnm AS fhstnm, " +
|
||||||
|
"t.sttpName AS sttpName, " +
|
||||||
|
"t.stlc AS stlc, " +
|
||||||
|
"t.playWay AS playWay, " +
|
||||||
|
"t.siteStepSort AS siteStepSort, " +
|
||||||
|
"t.hbrvcd AS hbrvcd ";
|
||||||
|
}
|
||||||
|
|
||||||
private String buildRunDataOrderBySql(List<DataSourceRequest.SortDescriptor> sortList) {
|
private String buildRunDataOrderBySql(List<DataSourceRequest.SortDescriptor> sortList) {
|
||||||
if (CollUtil.isEmpty(sortList)) {
|
if (CollUtil.isEmpty(sortList)) {
|
||||||
return " ORDER BY t.baseStepSort ASC, t.rvcdStepSort ASC, t.rstcdStepSort ASC, t.siteStepSort ASC, t.stcd ASC, t.tm DESC";
|
return " ORDER BY t.baseStepSort ASC, t.rvcdStepSort ASC, t.rstcdStepSort ASC, t.siteStepSort ASC, t.stcd ASC, t.tm DESC";
|
||||||
@ -613,6 +907,28 @@ public class VdMonitorServiceImpl implements VdMonitorService {
|
|||||||
return " ORDER BY " + String.join(", ", orderItems);
|
return " ORDER BY " + String.join(", ", orderItems);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String buildVdPointOrderBySql(List<DataSourceRequest.SortDescriptor> sortList) {
|
||||||
|
if (CollUtil.isEmpty(sortList)) {
|
||||||
|
return " ORDER BY t.siteStepSort ASC NULLS LAST, t.stcd ASC";
|
||||||
|
}
|
||||||
|
List<String> orderItems = new ArrayList<>();
|
||||||
|
for (DataSourceRequest.SortDescriptor sort : sortList) {
|
||||||
|
if (sort == null || StrUtil.isBlank(sort.getField())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
String column = mapColumn(sort.getField());
|
||||||
|
if (StrUtil.isBlank(column)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
String direction = "desc".equalsIgnoreCase(sort.getDir()) || "des".equalsIgnoreCase(sort.getDir()) ? "DESC" : "ASC";
|
||||||
|
orderItems.add(column + " " + direction + " NULLS LAST");
|
||||||
|
}
|
||||||
|
if (orderItems.isEmpty()) {
|
||||||
|
return " ORDER BY t.siteStepSort ASC NULLS LAST, t.stcd ASC";
|
||||||
|
}
|
||||||
|
return " ORDER BY " + String.join(", ", orderItems);
|
||||||
|
}
|
||||||
|
|
||||||
private String buildRunDataGroupOrderBySql(List<DataSourceRequest.GroupDescriptor> groups) {
|
private String buildRunDataGroupOrderBySql(List<DataSourceRequest.GroupDescriptor> groups) {
|
||||||
if (CollUtil.isEmpty(groups)) {
|
if (CollUtil.isEmpty(groups)) {
|
||||||
return "";
|
return "";
|
||||||
@ -641,6 +957,42 @@ public class VdMonitorServiceImpl implements VdMonitorService {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String buildVdTreeFilterCondition(DataSourceRequest.FilterDescriptor filter,
|
||||||
|
Map<String, Object> paramMap,
|
||||||
|
int[] indexHolder) {
|
||||||
|
if (filter == null) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
if (StrUtil.isNotBlank(filter.getField())) {
|
||||||
|
return buildVdTreeLeafCondition(filter, paramMap, indexHolder);
|
||||||
|
}
|
||||||
|
if (CollUtil.isEmpty(filter.getFilters())) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
List<String> conditions = new ArrayList<>();
|
||||||
|
for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) {
|
||||||
|
String childSql = buildVdTreeFilterCondition(child, paramMap, indexHolder);
|
||||||
|
if (StrUtil.isNotBlank(childSql)) {
|
||||||
|
conditions.add("(" + childSql + ")");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (conditions.isEmpty()) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
String logic = "or".equalsIgnoreCase(filter.getLogic()) ? " OR " : " AND ";
|
||||||
|
return String.join(logic, conditions);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String buildVdTreeLeafCondition(DataSourceRequest.FilterDescriptor filter,
|
||||||
|
Map<String, Object> paramMap,
|
||||||
|
int[] indexHolder) {
|
||||||
|
String column = mapVdTreeColumn(filter.getField());
|
||||||
|
if (StrUtil.isBlank(column)) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
return buildSimpleCondition(column, "vdTreeParam", filter, paramMap, indexHolder, isVdTreeDateField(filter));
|
||||||
|
}
|
||||||
|
|
||||||
private String buildFilterCondition(DataSourceRequest.FilterDescriptor filter,
|
private String buildFilterCondition(DataSourceRequest.FilterDescriptor filter,
|
||||||
Map<String, Object> paramMap,
|
Map<String, Object> paramMap,
|
||||||
int[] indexHolder) {
|
int[] indexHolder) {
|
||||||
@ -804,6 +1156,16 @@ public class VdMonitorServiceImpl implements VdMonitorService {
|
|||||||
return "date".equalsIgnoreCase(filter.getDataType());
|
return "date".equalsIgnoreCase(filter.getDataType());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isVdTreeDateField(DataSourceRequest.FilterDescriptor filter) {
|
||||||
|
if (filter == null || StrUtil.isBlank(filter.getField())) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if ("statusTm".equalsIgnoreCase(filter.getField())) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return "date".equalsIgnoreCase(filter.getDataType());
|
||||||
|
}
|
||||||
|
|
||||||
private String buildValueExpr(String paramKey, boolean dateField, Object value) {
|
private String buildValueExpr(String paramKey, boolean dateField, Object value) {
|
||||||
if (!dateField || value == null) {
|
if (!dateField || value == null) {
|
||||||
return "#{map." + paramKey + "}";
|
return "#{map." + paramKey + "}";
|
||||||
@ -839,11 +1201,41 @@ public class VdMonitorServiceImpl implements VdMonitorService {
|
|||||||
return values;
|
return values;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String mapVdTreeColumn(String field) {
|
||||||
|
if (StrUtil.isBlank(field)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return switch (field) {
|
||||||
|
case "stcd" -> "t.stcd";
|
||||||
|
case "stCode" -> "t.stCode";
|
||||||
|
case "stName" -> "t.stName";
|
||||||
|
case "stnm" -> "t.stnm";
|
||||||
|
case "sttpCode" -> "t.sttpCode";
|
||||||
|
case "sttpName" -> "t.sttpName";
|
||||||
|
case "sttpFullPath" -> "t.sttpFullPath";
|
||||||
|
case "rstcd" -> "t.rstcd";
|
||||||
|
case "ennm" -> "t.ennm";
|
||||||
|
case "baseId" -> "t.baseId";
|
||||||
|
case "baseName" -> "t.baseName";
|
||||||
|
case "url" -> "t.url";
|
||||||
|
case "playWay" -> "t.playWay";
|
||||||
|
case "deviceSerial" -> "t.deviceSerial";
|
||||||
|
case "accessWay" -> "t.accessWay";
|
||||||
|
case "protocol" -> "t.protocol";
|
||||||
|
case "quality" -> "t.quality";
|
||||||
|
case "controlMode" -> "t.controlMode";
|
||||||
|
case "status" -> "NVL(t.status, 0)";
|
||||||
|
case "statusTm" -> "t.statusTm";
|
||||||
|
default -> null;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
private String mapColumn(String field) {
|
private String mapColumn(String field) {
|
||||||
if (StrUtil.isBlank(field)) {
|
if (StrUtil.isBlank(field)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return switch (field) {
|
return switch (field) {
|
||||||
|
case "sttp" -> "t.sttp";
|
||||||
case "sttpCode" -> "t.sttpCode";
|
case "sttpCode" -> "t.sttpCode";
|
||||||
case "sttpName" -> "t.sttpName";
|
case "sttpName" -> "t.sttpName";
|
||||||
case "sttpFullPath" -> "t.sttpFullPath";
|
case "sttpFullPath" -> "t.sttpFullPath";
|
||||||
@ -878,11 +1270,15 @@ public class VdMonitorServiceImpl implements VdMonitorService {
|
|||||||
case "vlsr" -> "t.vlsr";
|
case "vlsr" -> "t.vlsr";
|
||||||
case "vlsrTm" -> "t.vlsrTm";
|
case "vlsrTm" -> "t.vlsrTm";
|
||||||
case "rvcd" -> "t.rvcd";
|
case "rvcd" -> "t.rvcd";
|
||||||
|
case "rvnm" -> "t.rvnm";
|
||||||
case "addvcd" -> "t.addvcd";
|
case "addvcd" -> "t.addvcd";
|
||||||
case "dtin" -> "t.dtin";
|
case "dtin" -> "t.dtin";
|
||||||
case "usfl" -> "t.usfl";
|
case "usfl" -> "t.usfl";
|
||||||
case "url" -> "t.url";
|
case "url" -> "t.url";
|
||||||
case "playWay" -> "t.playWay";
|
case "playWay" -> "t.playWay";
|
||||||
|
case "titleName" -> "t.titleName";
|
||||||
|
case "rstcds" -> "t.rstcds";
|
||||||
|
case "anchoPointState" -> "t.anchoPointState";
|
||||||
case "sourceTable" -> "t.sourceTable";
|
case "sourceTable" -> "t.sourceTable";
|
||||||
case "baseStepSort" -> "t.baseStepSort";
|
case "baseStepSort" -> "t.baseStepSort";
|
||||||
case "rstcdStepSort" -> "t.rstcdStepSort";
|
case "rstcdStepSort" -> "t.rstcdStepSort";
|
||||||
@ -971,4 +1367,265 @@ public class VdMonitorServiceImpl implements VdMonitorService {
|
|||||||
}
|
}
|
||||||
return " ORDER BY " + String.join(", ", orderItems);
|
return " ORDER BY " + String.join(", ", orderItems);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean containsNonBlankFilterValue(DataSourceRequest.FilterDescriptor filter, String fieldName) {
|
||||||
|
if (filter == null || StrUtil.isBlank(fieldName)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (fieldName.equalsIgnoreCase(filter.getField())) {
|
||||||
|
if (filter.getValue() instanceof List<?> list) {
|
||||||
|
return CollUtil.isNotEmpty(list);
|
||||||
|
}
|
||||||
|
return StrUtil.isNotBlank(filter.getValue() == null ? null : String.valueOf(filter.getValue()));
|
||||||
|
}
|
||||||
|
if (CollUtil.isEmpty(filter.getFilters())) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) {
|
||||||
|
if (containsNonBlankFilterValue(child, fieldName)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<VdTreeNodeVo> buildVdTreeNodes(List<VdTreeRowVo> rows, boolean baseScoped) {
|
||||||
|
List<VdTreeNodeVo> stationNodes = buildStationTreeNodes(rows, baseScoped);
|
||||||
|
if (baseScoped) {
|
||||||
|
return sortTreeNodes(stationNodes);
|
||||||
|
}
|
||||||
|
|
||||||
|
LinkedHashMap<String, VdTreeNodeVo> baseNodeMap = new LinkedHashMap<>();
|
||||||
|
List<VdTreeNodeVo> topLevelWithoutBase = new ArrayList<>();
|
||||||
|
for (VdTreeRowVo row : rows) {
|
||||||
|
if (row == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (StrUtil.isBlank(row.getBaseId())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
baseNodeMap.computeIfAbsent(row.getBaseId(), key -> {
|
||||||
|
VdTreeNodeVo node = new VdTreeNodeVo();
|
||||||
|
node.setId(key);
|
||||||
|
node.setName(StrUtil.blankToDefault(row.getBaseName(), key));
|
||||||
|
node.setType("PSB");
|
||||||
|
node.setTypeName("基地");
|
||||||
|
node.setSort(defaultSort(row.getBaseSort()));
|
||||||
|
node.setHasChildren(1);
|
||||||
|
node.setParentId(null);
|
||||||
|
node.setParentName(null);
|
||||||
|
return node;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, List<VdTreeNodeVo>> stationByBase = new LinkedHashMap<>();
|
||||||
|
for (VdTreeNodeVo stationNode : stationNodes) {
|
||||||
|
if (StrUtil.isBlank(stationNode.getParentId())) {
|
||||||
|
topLevelWithoutBase.add(stationNode);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
stationByBase.computeIfAbsent(stationNode.getParentId(), key -> new ArrayList<>()).add(stationNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
List<VdTreeNodeVo> result = new ArrayList<>();
|
||||||
|
for (Map.Entry<String, VdTreeNodeVo> entry : baseNodeMap.entrySet()) {
|
||||||
|
VdTreeNodeVo baseNode = entry.getValue();
|
||||||
|
baseNode.setChildren(sortTreeNodes(stationByBase.get(entry.getKey())));
|
||||||
|
result.add(baseNode);
|
||||||
|
}
|
||||||
|
result.addAll(topLevelWithoutBase);
|
||||||
|
return sortTreeNodes(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<VdTreeNodeVo> buildVdTreeNodesByStation(List<VdTreeRowVo> rows, boolean baseScoped) {
|
||||||
|
List<VdTreeNodeVo> stationNodes = buildStationCodeTreeNodes(rows, baseScoped);
|
||||||
|
if (baseScoped) {
|
||||||
|
return sortTreeNodes(stationNodes);
|
||||||
|
}
|
||||||
|
|
||||||
|
LinkedHashMap<String, VdTreeNodeVo> baseNodeMap = new LinkedHashMap<>();
|
||||||
|
List<VdTreeNodeVo> topLevelWithoutBase = new ArrayList<>();
|
||||||
|
for (VdTreeRowVo row : rows) {
|
||||||
|
if (row == null || StrUtil.isBlank(row.getBaseId())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
baseNodeMap.computeIfAbsent(row.getBaseId(), key -> {
|
||||||
|
VdTreeNodeVo node = new VdTreeNodeVo();
|
||||||
|
node.setId(key);
|
||||||
|
node.setName(StrUtil.blankToDefault(row.getBaseName(), key));
|
||||||
|
node.setType("PSB");
|
||||||
|
node.setTypeName("基地");
|
||||||
|
node.setSort(defaultSort(row.getBaseSort()));
|
||||||
|
node.setHasChildren(1);
|
||||||
|
node.setParentId(null);
|
||||||
|
node.setParentName(null);
|
||||||
|
return node;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, List<VdTreeNodeVo>> stationByBase = new LinkedHashMap<>();
|
||||||
|
for (VdTreeNodeVo stationNode : stationNodes) {
|
||||||
|
if (StrUtil.isBlank(stationNode.getParentId())) {
|
||||||
|
topLevelWithoutBase.add(stationNode);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
stationByBase.computeIfAbsent(stationNode.getParentId(), key -> new ArrayList<>()).add(stationNode);
|
||||||
|
}
|
||||||
|
|
||||||
|
List<VdTreeNodeVo> result = new ArrayList<>();
|
||||||
|
for (Map.Entry<String, VdTreeNodeVo> entry : baseNodeMap.entrySet()) {
|
||||||
|
VdTreeNodeVo baseNode = entry.getValue();
|
||||||
|
baseNode.setChildren(sortTreeNodes(stationByBase.get(entry.getKey())));
|
||||||
|
result.add(baseNode);
|
||||||
|
}
|
||||||
|
result.addAll(topLevelWithoutBase);
|
||||||
|
return sortTreeNodes(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<VdTreeNodeVo> buildStationTreeNodes(List<VdTreeRowVo> rows, boolean baseScoped) {
|
||||||
|
LinkedHashMap<String, List<VdTreeRowVo>> stationRowMap = new LinkedHashMap<>();
|
||||||
|
for (VdTreeRowVo row : rows) {
|
||||||
|
if (row == null || StrUtil.isBlank(row.getRstcd())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
stationRowMap.computeIfAbsent(row.getRstcd(), key -> new ArrayList<>()).add(row);
|
||||||
|
}
|
||||||
|
|
||||||
|
List<VdTreeNodeVo> stationNodes = new ArrayList<>();
|
||||||
|
for (Map.Entry<String, List<VdTreeRowVo>> entry : stationRowMap.entrySet()) {
|
||||||
|
List<VdTreeRowVo> stationRows = entry.getValue();
|
||||||
|
if (CollUtil.isEmpty(stationRows)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
VdTreeRowVo sample = stationRows.get(0);
|
||||||
|
VdTreeNodeVo stationNode = new VdTreeNodeVo();
|
||||||
|
stationNode.setId(entry.getKey());
|
||||||
|
stationNode.setName(StrUtil.blankToDefault(sample.getEnnm(), entry.getKey()));
|
||||||
|
stationNode.setType("ENG");
|
||||||
|
stationNode.setTypeName("电站");
|
||||||
|
stationNode.setSort(defaultSort(sample.getRstcdStepSort()));
|
||||||
|
stationNode.setHasChildren(1);
|
||||||
|
if (baseScoped) {
|
||||||
|
stationNode.setParentId(null);
|
||||||
|
stationNode.setParentName(null);
|
||||||
|
} else {
|
||||||
|
stationNode.setParentId(sample.getBaseId());
|
||||||
|
stationNode.setParentName(sample.getBaseName());
|
||||||
|
}
|
||||||
|
stationNode.setChildren(buildSiteTreeNodes(stationRows));
|
||||||
|
stationNodes.add(stationNode);
|
||||||
|
}
|
||||||
|
return sortTreeNodes(stationNodes);
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<VdTreeNodeVo> buildSiteTreeNodes(List<VdTreeRowVo> rows) {
|
||||||
|
LinkedHashMap<String, VdTreeNodeVo> siteNodeMap = new LinkedHashMap<>();
|
||||||
|
for (VdTreeRowVo row : rows) {
|
||||||
|
if (row == null || StrUtil.isBlank(row.getStcd()) || siteNodeMap.containsKey(row.getStcd())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
VdTreeNodeVo node = new VdTreeNodeVo();
|
||||||
|
node.setId(row.getStcd());
|
||||||
|
node.setName(StrUtil.blankToDefault(row.getStnm(), row.getStcd()));
|
||||||
|
node.setType(row.getSttpCode());
|
||||||
|
node.setTypeName(row.getSttpName());
|
||||||
|
node.setSort(defaultSort(row.getSiteStepSort()));
|
||||||
|
node.setHasChildren(0);
|
||||||
|
node.setParentId(row.getRstcd());
|
||||||
|
node.setParentName(row.getEnnm());
|
||||||
|
node.setUrl(row.getUrl());
|
||||||
|
node.setPlayWay(row.getPlayWay());
|
||||||
|
node.setDeviceSerial(row.getDeviceSerial());
|
||||||
|
node.setAccessWay(row.getAccessWay());
|
||||||
|
node.setProtocol(row.getProtocol());
|
||||||
|
node.setQuality(row.getQuality());
|
||||||
|
node.setControlMode(row.getControlMode());
|
||||||
|
node.setStatus(row.getStatus());
|
||||||
|
node.setStatusTm(row.getStatusTm());
|
||||||
|
siteNodeMap.put(row.getStcd(), node);
|
||||||
|
}
|
||||||
|
return sortTreeNodes(new ArrayList<>(siteNodeMap.values()));
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<VdTreeNodeVo> buildStationCodeTreeNodes(List<VdTreeRowVo> rows, boolean baseScoped) {
|
||||||
|
LinkedHashMap<String, List<VdTreeRowVo>> stationRowMap = new LinkedHashMap<>();
|
||||||
|
for (VdTreeRowVo row : rows) {
|
||||||
|
if (row == null || StrUtil.isBlank(row.getStCode())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
stationRowMap.computeIfAbsent(row.getStCode(), key -> new ArrayList<>()).add(row);
|
||||||
|
}
|
||||||
|
|
||||||
|
List<VdTreeNodeVo> stationNodes = new ArrayList<>();
|
||||||
|
for (Map.Entry<String, List<VdTreeRowVo>> entry : stationRowMap.entrySet()) {
|
||||||
|
List<VdTreeRowVo> stationRows = entry.getValue();
|
||||||
|
if (CollUtil.isEmpty(stationRows)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
VdTreeRowVo sample = stationRows.get(0);
|
||||||
|
VdTreeNodeVo stationNode = new VdTreeNodeVo();
|
||||||
|
stationNode.setId(entry.getKey());
|
||||||
|
stationNode.setName(StrUtil.blankToDefault(sample.getStName(), entry.getKey()));
|
||||||
|
stationNode.setType("VD_FB");
|
||||||
|
stationNode.setTypeName("鱼类增殖站");
|
||||||
|
stationNode.setSort(defaultSort(sample.getRstcdStepSort()));
|
||||||
|
stationNode.setHasChildren(1);
|
||||||
|
if (baseScoped) {
|
||||||
|
stationNode.setParentId(null);
|
||||||
|
stationNode.setParentName(null);
|
||||||
|
} else {
|
||||||
|
stationNode.setParentId(sample.getBaseId());
|
||||||
|
stationNode.setParentName(sample.getBaseName());
|
||||||
|
}
|
||||||
|
stationNode.setChildren(buildSiteTreeNodesByStation(stationRows));
|
||||||
|
stationNodes.add(stationNode);
|
||||||
|
}
|
||||||
|
return sortTreeNodes(stationNodes);
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<VdTreeNodeVo> buildSiteTreeNodesByStation(List<VdTreeRowVo> rows) {
|
||||||
|
LinkedHashMap<String, VdTreeNodeVo> siteNodeMap = new LinkedHashMap<>();
|
||||||
|
for (VdTreeRowVo row : rows) {
|
||||||
|
if (row == null || StrUtil.isBlank(row.getStcd()) || siteNodeMap.containsKey(row.getStcd())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
VdTreeNodeVo node = new VdTreeNodeVo();
|
||||||
|
node.setId(row.getStcd());
|
||||||
|
node.setName(StrUtil.blankToDefault(row.getStnm(), row.getStcd()));
|
||||||
|
node.setType(row.getSttpCode());
|
||||||
|
node.setTypeName(row.getSttpName());
|
||||||
|
node.setSort(defaultSort(row.getSiteStepSort()));
|
||||||
|
node.setHasChildren(0);
|
||||||
|
node.setParentId(row.getStCode());
|
||||||
|
node.setParentName(row.getStName());
|
||||||
|
node.setUrl(row.getUrl());
|
||||||
|
node.setPlayWay(row.getPlayWay());
|
||||||
|
node.setDeviceSerial(row.getDeviceSerial());
|
||||||
|
node.setAccessWay(row.getAccessWay());
|
||||||
|
node.setProtocol(row.getProtocol());
|
||||||
|
node.setQuality(row.getQuality());
|
||||||
|
node.setControlMode(row.getControlMode());
|
||||||
|
node.setStatus(row.getStatus());
|
||||||
|
node.setStatusTm(row.getStatusTm());
|
||||||
|
siteNodeMap.put(row.getStcd(), node);
|
||||||
|
}
|
||||||
|
return sortTreeNodes(new ArrayList<>(siteNodeMap.values()));
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<VdTreeNodeVo> sortTreeNodes(List<VdTreeNodeVo> nodes) {
|
||||||
|
if (CollUtil.isEmpty(nodes)) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
nodes.sort(Comparator.comparing(VdMonitorServiceImpl::sortValue)
|
||||||
|
.thenComparing(node -> StrUtil.blankToDefault(node.getId(), "")));
|
||||||
|
return nodes;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Integer sortValue(VdTreeNodeVo node) {
|
||||||
|
return node == null ? 999999 : defaultSort(node.getSort());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Integer defaultSort(Integer sort) {
|
||||||
|
return sort == null ? 999999 : sort;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,77 @@
|
|||||||
|
package com.yfd.platform.qgc_env.warn.controller;
|
||||||
|
|
||||||
|
import com.yfd.platform.common.DataSourceRequest;
|
||||||
|
import com.yfd.platform.config.ResponseResult;
|
||||||
|
import com.yfd.platform.qgc_env.warn.service.WarnDataService;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/warn")
|
||||||
|
@Tag(name = "告警状态模块")
|
||||||
|
@Validated
|
||||||
|
public class WarnDataController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private WarnDataService warnDataService;
|
||||||
|
|
||||||
|
@PostMapping("/stcd/eng/GetKendoListCust")
|
||||||
|
@Operation(summary = "电站水位、生态流量告警状态统计")
|
||||||
|
public ResponseResult getEngWarnCount(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
return ResponseResult.successData(warnDataService.getEngWarnCount(dataSourceRequest));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/ai/com/qgcDmRun/GetKendoListCust")
|
||||||
|
@Operation(summary = "全过程AI识别大坝运行")
|
||||||
|
public ResponseResult getAiDmRunCount(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
return ResponseResult.successData(warnDataService.getAiDmRunCount(dataSourceRequest));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/ai/com/qgcProtect/GetKendoListCust")
|
||||||
|
@Operation(summary = "全过程AI识别动植物保护")
|
||||||
|
public ResponseResult getAiProtectCount(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
return ResponseResult.successData(warnDataService.getAiProtectCount(dataSourceRequest));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/ai/com/GetKendoListCust")
|
||||||
|
@Operation(summary = "AI常规业务列表")
|
||||||
|
public ResponseResult getAiComKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
return ResponseResult.successData(warnDataService.getAiComKendoListCust(dataSourceRequest));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/ai/com/qgc/aiRstcd/GetKendoListCust")
|
||||||
|
@Operation(summary = "全过程AI识别有数据的电站下拉")
|
||||||
|
public ResponseResult getAiRstcdListKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
return ResponseResult.successData(warnDataService.getAiRstcdListKendoListCust(dataSourceRequest));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/ai/com/qgc/aiPfwRecord/GetKendoListCust")
|
||||||
|
@Operation(summary = "全过程AI识别监测日历表(漂浮物+清漂合并)")
|
||||||
|
public ResponseResult getAiPfwRecordKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
return ResponseResult.successData(warnDataService.getAiPfwRecordKendoListCust(dataSourceRequest));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/ai/com/qgc/aiRecord/GetKendoListCust")
|
||||||
|
@Operation(summary = "全过程AI识别监测日历表")
|
||||||
|
public ResponseResult getAiRecordKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
return ResponseResult.successData(warnDataService.getAiRecordKendoListCust(dataSourceRequest));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/alarmPoint/GetKendoListCust")
|
||||||
|
@Operation(summary = "电站告警描点列表")
|
||||||
|
public ResponseResult getAlarmPointKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
return ResponseResult.successData(warnDataService.getAlarmPointKendoListCust(dataSourceRequest));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/stcd/GetKendoListCust")
|
||||||
|
@Operation(summary = "监测设备告警情况列表")
|
||||||
|
public ResponseResult getWarnStcdKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
return ResponseResult.successData(warnDataService.getWarnStcdKendoListCust(dataSourceRequest));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,71 @@
|
|||||||
|
package com.yfd.platform.qgc_env.warn.entity.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Schema(description = "AI常规业务列表")
|
||||||
|
public class AiComListVo {
|
||||||
|
|
||||||
|
@Schema(description = "主键")
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
@Schema(description = "类型编码")
|
||||||
|
private String type;
|
||||||
|
|
||||||
|
@Schema(description = "类型名称")
|
||||||
|
private String typeName;
|
||||||
|
|
||||||
|
@Schema(description = "AI测站编码")
|
||||||
|
private String stcd;
|
||||||
|
|
||||||
|
@Schema(description = "AI测站名称")
|
||||||
|
private String stnm;
|
||||||
|
|
||||||
|
@Schema(description = "所属电站编码")
|
||||||
|
private String rstcd;
|
||||||
|
|
||||||
|
@Schema(description = "所属电站名称")
|
||||||
|
private String ennm;
|
||||||
|
|
||||||
|
@Schema(description = "所属基地编码")
|
||||||
|
private String baseId;
|
||||||
|
|
||||||
|
@Schema(description = "所属基地流域编码")
|
||||||
|
private String hbrvcd;
|
||||||
|
|
||||||
|
@Schema(description = "所属流域编码")
|
||||||
|
private String rvcd;
|
||||||
|
|
||||||
|
@Schema(description = "数据时间")
|
||||||
|
private Date tm;
|
||||||
|
|
||||||
|
@Schema(description = "结束时间")
|
||||||
|
private Date endTm;
|
||||||
|
|
||||||
|
@Schema(description = "AI识别值")
|
||||||
|
private String aiVal;
|
||||||
|
|
||||||
|
@Schema(description = "附件ID")
|
||||||
|
private String fid;
|
||||||
|
|
||||||
|
@Schema(description = "是否填报")
|
||||||
|
private Integer isFsf;
|
||||||
|
|
||||||
|
@Schema(description = "是否大面积漂浮物")
|
||||||
|
private Integer isBigDebrisArea;
|
||||||
|
|
||||||
|
@Schema(description = "是否已清漂")
|
||||||
|
private Integer isClearDrift;
|
||||||
|
|
||||||
|
@Schema(description = "备注")
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
@Schema(description = "创建时间")
|
||||||
|
private Date recordTime;
|
||||||
|
|
||||||
|
@Schema(description = "更新时间")
|
||||||
|
private Date modifyTime;
|
||||||
|
}
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
package com.yfd.platform.qgc_env.warn.entity.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Schema(description = "全过程AI识别大坝运行")
|
||||||
|
public class AiDmRunVo {
|
||||||
|
|
||||||
|
@Schema(description = "漂浮物监测次数")
|
||||||
|
private Integer pfwCnt;
|
||||||
|
|
||||||
|
@Schema(description = "漂浮物清理次数")
|
||||||
|
private Integer pfwqlCnt;
|
||||||
|
|
||||||
|
@Schema(description = "叠梁门运行次数")
|
||||||
|
private Integer dlmCnt;
|
||||||
|
}
|
||||||
@ -0,0 +1,30 @@
|
|||||||
|
package com.yfd.platform.qgc_env.warn.entity.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Schema(description = "全过程AI识别动植物保护")
|
||||||
|
public class AiProtectVo {
|
||||||
|
|
||||||
|
@Schema(description = "运鱼船进出港次数")
|
||||||
|
private Integer fpYycCnt;
|
||||||
|
|
||||||
|
@Schema(description = "赶鱼栅运行次数")
|
||||||
|
private Integer fpGysCnt;
|
||||||
|
|
||||||
|
@Schema(description = "升鱼机运行次数")
|
||||||
|
private Integer fpSyjCnt;
|
||||||
|
|
||||||
|
@Schema(description = "AGV小车次数")
|
||||||
|
private Integer fpAgvCnt;
|
||||||
|
|
||||||
|
@Schema(description = "运鱼车运行次数")
|
||||||
|
private Integer fpYychCnt;
|
||||||
|
|
||||||
|
@Schema(description = "鱼道放流次数")
|
||||||
|
private Integer fpYdhCnt;
|
||||||
|
|
||||||
|
@Schema(description = "植物园养护次数")
|
||||||
|
private Integer vpYhCnt;
|
||||||
|
}
|
||||||
@ -0,0 +1,44 @@
|
|||||||
|
package com.yfd.platform.qgc_env.warn.entity.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@Schema(description = "全过程AI识别监测日历记录")
|
||||||
|
public class AiRecordVo {
|
||||||
|
|
||||||
|
@Schema(description = "AI类型")
|
||||||
|
private String type;
|
||||||
|
|
||||||
|
@Schema(description = "日期")
|
||||||
|
private String dt;
|
||||||
|
|
||||||
|
@Schema(description = "是否大面积漂浮物")
|
||||||
|
private Integer isBigDebrisArea;
|
||||||
|
|
||||||
|
@Schema(description = "AI数据数")
|
||||||
|
private Integer aiCnt;
|
||||||
|
|
||||||
|
@Schema(description = "统计数")
|
||||||
|
private Integer cnt;
|
||||||
|
|
||||||
|
@Schema(description = "是否已清漂")
|
||||||
|
private Integer isClearDrift;
|
||||||
|
|
||||||
|
@Schema(description = "漂浮物状态")
|
||||||
|
private Integer status;
|
||||||
|
|
||||||
|
@Schema(description = "漂浮物状态名称")
|
||||||
|
private String statusName;
|
||||||
|
|
||||||
|
@Schema(description = "清漂状态")
|
||||||
|
private Integer qpStatus;
|
||||||
|
|
||||||
|
@Schema(description = "清漂状态名称")
|
||||||
|
private String qpStatusName;
|
||||||
|
|
||||||
|
@Schema(description = "附件ID")
|
||||||
|
private String fid;
|
||||||
|
}
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
package com.yfd.platform.qgc_env.warn.entity.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Schema(description = "全过程AI识别电站下拉")
|
||||||
|
public class AiRstcdVo {
|
||||||
|
|
||||||
|
@Schema(description = "电站编码")
|
||||||
|
private String stcd;
|
||||||
|
|
||||||
|
@Schema(description = "电站名称")
|
||||||
|
private String stnm;
|
||||||
|
}
|
||||||
@ -0,0 +1,103 @@
|
|||||||
|
package com.yfd.platform.qgc_env.warn.entity.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@Schema(description = "电站告警描点")
|
||||||
|
public class AlarmPointVo {
|
||||||
|
|
||||||
|
@Schema(description = "站点类型")
|
||||||
|
private String sttp;
|
||||||
|
|
||||||
|
@Schema(description = "站点编码")
|
||||||
|
private String stcd;
|
||||||
|
|
||||||
|
@Schema(description = "经度")
|
||||||
|
private BigDecimal lgtd;
|
||||||
|
|
||||||
|
@Schema(description = "纬度")
|
||||||
|
private BigDecimal lttd;
|
||||||
|
|
||||||
|
@Schema(description = "高程")
|
||||||
|
private BigDecimal dtmel;
|
||||||
|
|
||||||
|
@Schema(description = "描点状态")
|
||||||
|
private String anchoPointState;
|
||||||
|
|
||||||
|
@Schema(description = "锚点类型")
|
||||||
|
private String sttpMap;
|
||||||
|
|
||||||
|
@Schema(description = "弹框站点名称")
|
||||||
|
private String titleName;
|
||||||
|
|
||||||
|
@Schema(description = "地图避让")
|
||||||
|
private Integer distance;
|
||||||
|
|
||||||
|
@Schema(description = "流域编码")
|
||||||
|
private String rvcd;
|
||||||
|
|
||||||
|
@Schema(description = "行政编码")
|
||||||
|
private String addvcd;
|
||||||
|
|
||||||
|
@Schema(description = "基地编码")
|
||||||
|
private String baseId;
|
||||||
|
|
||||||
|
@Schema(description = "关联电站编码")
|
||||||
|
private String rstcds;
|
||||||
|
|
||||||
|
@Schema(description = "设施类型")
|
||||||
|
private String sttpCode;
|
||||||
|
|
||||||
|
@Schema(description = "电站名称")
|
||||||
|
private String ennm;
|
||||||
|
|
||||||
|
@Schema(description = "流域名称")
|
||||||
|
private String rvnm;
|
||||||
|
|
||||||
|
@Schema(description = "电站装机类型")
|
||||||
|
private Integer endInstalledType;
|
||||||
|
|
||||||
|
@Schema(description = "生态流量告警数")
|
||||||
|
private Integer stqCount;
|
||||||
|
|
||||||
|
@Schema(description = "水质告警数")
|
||||||
|
private Integer wqCount;
|
||||||
|
|
||||||
|
@Schema(description = "水位告警数")
|
||||||
|
private Integer zCount;
|
||||||
|
|
||||||
|
@Schema(description = "水温告警数")
|
||||||
|
private Integer wtCount;
|
||||||
|
|
||||||
|
@Schema(description = "年份")
|
||||||
|
private String yyyy;
|
||||||
|
|
||||||
|
@Schema(description = "告警区间范围")
|
||||||
|
private String range;
|
||||||
|
|
||||||
|
@Schema(description = "装机容量")
|
||||||
|
private BigDecimal ttpwr;
|
||||||
|
|
||||||
|
@Schema(description = "基地名称")
|
||||||
|
private String baseName;
|
||||||
|
|
||||||
|
@Schema(description = "电站编码")
|
||||||
|
private String rstcd;
|
||||||
|
|
||||||
|
@Schema(description = "流域沿程")
|
||||||
|
private Integer rvcdStepSort;
|
||||||
|
|
||||||
|
@Schema(description = "电站沿程")
|
||||||
|
private Integer rstcdStepSort;
|
||||||
|
|
||||||
|
@Schema(description = "站点沿程")
|
||||||
|
private Integer siteStepSort;
|
||||||
|
|
||||||
|
@Schema(description = "电站图片")
|
||||||
|
private String logo;
|
||||||
|
}
|
||||||
@ -0,0 +1,28 @@
|
|||||||
|
package com.yfd.platform.qgc_env.warn.entity.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Schema(description = "电站告警状态统计")
|
||||||
|
public class EngWarnCountVo implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@Schema(description = "告警状态")
|
||||||
|
private Integer warnState;
|
||||||
|
|
||||||
|
@Schema(description = "告警状态名称")
|
||||||
|
private String warnStateName;
|
||||||
|
|
||||||
|
@Schema(description = "数量")
|
||||||
|
private Integer num;
|
||||||
|
|
||||||
|
@Schema(description = "告警类型")
|
||||||
|
private String warnType;
|
||||||
|
|
||||||
|
@Schema(description = "告警类型名称")
|
||||||
|
private String warnTypeName;
|
||||||
|
}
|
||||||
@ -0,0 +1,59 @@
|
|||||||
|
package com.yfd.platform.qgc_env.warn.entity.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Schema(description = "监测设备告警情况")
|
||||||
|
public class StcdWarnStateVo {
|
||||||
|
|
||||||
|
@Schema(description = "测站编码")
|
||||||
|
private String stcd;
|
||||||
|
|
||||||
|
@Schema(description = "测站名称")
|
||||||
|
private String stnm;
|
||||||
|
|
||||||
|
@Schema(description = "电站编码")
|
||||||
|
private String rstcd;
|
||||||
|
|
||||||
|
@Schema(description = "电站名称")
|
||||||
|
private String ennm;
|
||||||
|
|
||||||
|
@Schema(description = "监测方式")
|
||||||
|
private Integer mway;
|
||||||
|
|
||||||
|
@Schema(description = "测站类型编码")
|
||||||
|
private String sttpCode;
|
||||||
|
|
||||||
|
@Schema(description = "测站类型名称")
|
||||||
|
private String sttpName;
|
||||||
|
|
||||||
|
@Schema(description = "基地编码")
|
||||||
|
private String baseId;
|
||||||
|
|
||||||
|
@Schema(description = "基地名称")
|
||||||
|
private String baseName;
|
||||||
|
|
||||||
|
@Schema(description = "流域编码")
|
||||||
|
private String rvcd;
|
||||||
|
|
||||||
|
@Schema(description = "告警状态")
|
||||||
|
private Integer warnState;
|
||||||
|
|
||||||
|
@Schema(description = "告警状态名称")
|
||||||
|
private String warnstateName;
|
||||||
|
|
||||||
|
@Schema(description = "告警时间")
|
||||||
|
private Date warnTm;
|
||||||
|
|
||||||
|
@Schema(description = "基础排序")
|
||||||
|
private Integer baseStepSort;
|
||||||
|
|
||||||
|
@Schema(description = "电站排序")
|
||||||
|
private Integer rstcdStepSort;
|
||||||
|
|
||||||
|
@Schema(description = "数据接入类型")
|
||||||
|
private Integer dtinType;
|
||||||
|
}
|
||||||
@ -0,0 +1,35 @@
|
|||||||
|
package com.yfd.platform.qgc_env.warn.service;
|
||||||
|
|
||||||
|
import com.yfd.platform.common.DataSourceRequest;
|
||||||
|
import com.yfd.platform.common.DataSourceResult;
|
||||||
|
import com.yfd.platform.qgc_env.warn.entity.vo.AlarmPointVo;
|
||||||
|
import com.yfd.platform.qgc_env.warn.entity.vo.AiRecordVo;
|
||||||
|
import com.yfd.platform.qgc_env.warn.entity.vo.AiProtectVo;
|
||||||
|
import com.yfd.platform.qgc_env.warn.entity.vo.AiDmRunVo;
|
||||||
|
import com.yfd.platform.qgc_env.warn.entity.vo.AiComListVo;
|
||||||
|
import com.yfd.platform.qgc_env.warn.entity.vo.AiRstcdVo;
|
||||||
|
import com.yfd.platform.qgc_env.warn.entity.vo.EngWarnCountVo;
|
||||||
|
import com.yfd.platform.qgc_env.warn.entity.vo.StcdWarnStateVo;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface WarnDataService {
|
||||||
|
|
||||||
|
DataSourceResult<EngWarnCountVo> getEngWarnCount(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
|
AiDmRunVo getAiDmRunCount(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
|
AiProtectVo getAiProtectCount(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
|
DataSourceResult<AiComListVo> getAiComKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
|
DataSourceResult<AiRstcdVo> getAiRstcdListKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
|
List<AiRecordVo> getAiPfwRecordKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
|
List<AiRecordVo> getAiRecordKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
|
DataSourceResult<AlarmPointVo> getAlarmPointKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
|
DataSourceResult<StcdWarnStateVo> getWarnStcdKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
@ -3,15 +3,7 @@ package com.yfd.platform.qgc_env.wq.service.impl;
|
|||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.yfd.platform.common.CommonConstant;
|
import com.yfd.platform.common.*;
|
||||||
import com.yfd.platform.common.DataSourceLoadOptionsBase;
|
|
||||||
import com.yfd.platform.common.DataSourceRequest;
|
|
||||||
import com.yfd.platform.common.DataSourceResult;
|
|
||||||
import com.yfd.platform.common.Group;
|
|
||||||
import com.yfd.platform.common.GroupHelper;
|
|
||||||
import com.yfd.platform.common.GroupingInfo;
|
|
||||||
import com.yfd.platform.common.MicroservicDynamicSQLMapper;
|
|
||||||
import com.yfd.platform.common.PageInfo;
|
|
||||||
import com.yfd.platform.common.exception.BizException;
|
import com.yfd.platform.common.exception.BizException;
|
||||||
import com.yfd.platform.qgc_base.entity.vo.BatchDeleteAo;
|
import com.yfd.platform.qgc_base.entity.vo.BatchDeleteAo;
|
||||||
import com.yfd.platform.qgc_base.entity.vo.DataParam;
|
import com.yfd.platform.qgc_base.entity.vo.DataParam;
|
||||||
@ -694,6 +686,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
|||||||
baseSql.append("SELECT ")
|
baseSql.append("SELECT ")
|
||||||
.append("NVL(t.IS_DELETED, 0) AS isDeleted, ")
|
.append("NVL(t.IS_DELETED, 0) AS isDeleted, ")
|
||||||
.append("t.STTP AS sttpCode, ")
|
.append("t.STTP AS sttpCode, ")
|
||||||
|
.append("t.WARN_STATE AS warnState, ")
|
||||||
.append("t.MWAY AS mway, ")
|
.append("t.MWAY AS mway, ")
|
||||||
.append("t.DTIN_TYPE AS dtinType, ")
|
.append("t.DTIN_TYPE AS dtinType, ")
|
||||||
.append("t.STCD AS stcd, ")
|
.append("t.STCD AS stcd, ")
|
||||||
@ -731,6 +724,8 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
|||||||
DataSourceResult result = new DataSourceResult();
|
DataSourceResult result = new DataSourceResult();
|
||||||
if (Boolean.TRUE.equals(dataSourceRequest.getGroupResultFlat())) {
|
if (Boolean.TRUE.equals(dataSourceRequest.getGroupResultFlat())) {
|
||||||
result.setData(new GroupHelper().faltGroup(rows, Arrays.asList(groupInfos)));
|
result.setData(new GroupHelper().faltGroup(rows, Arrays.asList(groupInfos)));
|
||||||
|
} else if (groupInfos != null && groupInfos.length == 1 && groupInfos[0] != null && StrUtil.isNotBlank(groupInfos[0].getSelector())) {
|
||||||
|
result.setData(toMsstbprptLegacyGroups(rows, groupInfos[0].getSelector()));
|
||||||
} else {
|
} else {
|
||||||
result.setData(toLegacyGroupResult(new GroupHelper().group(rows, Arrays.asList(groupInfos)), 0));
|
result.setData(toLegacyGroupResult(new GroupHelper().group(rows, Arrays.asList(groupInfos)), 0));
|
||||||
}
|
}
|
||||||
@ -3181,14 +3176,17 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
String upperField = groupField == null ? "DTINTYPE" : groupField.toUpperCase();
|
String upperField = groupField == null ? "DTINTYPE" : groupField.toUpperCase();
|
||||||
String countField = "COUNT_" + upperField;
|
|
||||||
String aggregateKey = "count_" + groupField;
|
|
||||||
for (Map<String, Object> row : rows) {
|
for (Map<String, Object> row : rows) {
|
||||||
Object key = row.get(upperField);
|
Object key = row.get(upperField);
|
||||||
if (key == null) {
|
if (key == null) {
|
||||||
key = row.get(groupField);
|
key = row.get(groupField);
|
||||||
}
|
}
|
||||||
|
String countField = row.containsKey("COUNT_STCD") ? "COUNT_STCD" : "COUNT_" + upperField;
|
||||||
|
String aggregateKey = "COUNT_STCD".equals(countField) ? "count_stcd" : "count_" + groupField;
|
||||||
Object countValue = row.get(countField);
|
Object countValue = row.get(countField);
|
||||||
|
if (countValue == null) {
|
||||||
|
countValue = row.get("count_stcd");
|
||||||
|
}
|
||||||
if (countValue == null) {
|
if (countValue == null) {
|
||||||
countValue = row.get("count_" + upperField);
|
countValue = row.get("count_" + upperField);
|
||||||
}
|
}
|
||||||
@ -3208,7 +3206,7 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
|||||||
detail.put(upperField, key);
|
detail.put(upperField, key);
|
||||||
detail.put(countField, count);
|
detail.put(countField, count);
|
||||||
item.put("items", List.of(detail));
|
item.put("items", List.of(detail));
|
||||||
item.put("count", count);
|
item.put("count", 0);
|
||||||
item.put("summary", new Object[0]);
|
item.put("summary", new Object[0]);
|
||||||
|
|
||||||
Map<String, Object> aggregates = new LinkedHashMap<>();
|
Map<String, Object> aggregates = new LinkedHashMap<>();
|
||||||
@ -3224,27 +3222,52 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
|
|||||||
return baseSql;
|
return baseSql;
|
||||||
}
|
}
|
||||||
List<String> groupFields = new ArrayList<>();
|
List<String> groupFields = new ArrayList<>();
|
||||||
|
List<String> selectItems = new ArrayList<>();
|
||||||
List<String> orderByItems = new ArrayList<>();
|
List<String> orderByItems = new ArrayList<>();
|
||||||
for (GroupingInfo item : groupInfos) {
|
for (GroupingInfo item : groupInfos) {
|
||||||
if (item == null || StrUtil.isBlank(item.getSelector())) {
|
if (item == null || StrUtil.isBlank(item.getSelector())) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
groupFields.add(item.getSelector());
|
String selector = item.getSelector();
|
||||||
|
groupFields.add(selector);
|
||||||
|
selectItems.add(selector + " AS " + selector.toUpperCase());
|
||||||
String dir = Boolean.TRUE.equals(item.getDesc()) ? "DESC" : "ASC";
|
String dir = Boolean.TRUE.equals(item.getDesc()) ? "DESC" : "ASC";
|
||||||
orderByItems.add(item.getSelector() + " " + dir);
|
orderByItems.add(selector + " " + dir);
|
||||||
|
boolean hasCountStcd = false;
|
||||||
|
if (CollUtil.isNotEmpty(item.getSummaryInfos())) {
|
||||||
|
for (SummaryInfo summaryInfo : item.getSummaryInfos()) {
|
||||||
|
if (summaryInfo == null || StrUtil.isBlank(summaryInfo.getSelector()) || StrUtil.isBlank(summaryInfo.getSummaryType())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
String summaryType = summaryInfo.getSummaryType().toUpperCase();
|
||||||
|
String summarySelector = summaryInfo.getSelector().toUpperCase();
|
||||||
|
if ("count".equalsIgnoreCase(summaryInfo.getSummaryType()) && "stcd".equalsIgnoreCase(summaryInfo.getSelector())) {
|
||||||
|
hasCountStcd = true;
|
||||||
|
}
|
||||||
|
switch (summaryInfo.getSummaryType().toLowerCase()) {
|
||||||
|
case "count" -> selectItems.add("COUNT(" + summaryInfo.getSelector() + ") AS " + summaryType + "_" + summarySelector);
|
||||||
|
case "sum" -> selectItems.add("SUM(" + summaryInfo.getSelector() + ") AS " + summaryType + "_" + summarySelector);
|
||||||
|
case "avg", "average" -> selectItems.add("AVG(" + summaryInfo.getSelector() + ") AS AVG_" + summarySelector);
|
||||||
|
case "min" -> selectItems.add("MIN(" + summaryInfo.getSelector() + ") AS " + summaryType + "_" + summarySelector);
|
||||||
|
case "max" -> selectItems.add("MAX(" + summaryInfo.getSelector() + ") AS " + summaryType + "_" + summarySelector);
|
||||||
|
default -> {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!hasCountStcd) {
|
||||||
|
selectItems.add("COUNT(*) AS COUNT_STCD");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (groupFields.isEmpty()) {
|
if (groupFields.isEmpty()) {
|
||||||
return baseSql;
|
return baseSql;
|
||||||
}
|
}
|
||||||
StringBuilder sql = new StringBuilder("SELECT ");
|
StringBuilder sql = new StringBuilder("SELECT ");
|
||||||
sql.append(String.join(", ", groupFields));
|
sql.append(String.join(", ", selectItems));
|
||||||
for (String groupField : groupFields) {
|
sql.append(" FROM (").append(baseSql).append(") T ")
|
||||||
sql.append(", COUNT(*) AS count_").append(groupField).append(" ");
|
.append(" GROUP BY ").append(String.join(", ", groupFields)).append(" ");
|
||||||
}
|
|
||||||
sql.append("FROM (").append(baseSql).append(") T ")
|
|
||||||
.append("GROUP BY ").append(String.join(", ", groupFields)).append(" ");
|
|
||||||
if (!orderByItems.isEmpty()) {
|
if (!orderByItems.isEmpty()) {
|
||||||
sql.append("ORDER BY ").append(String.join(", ", orderByItems));
|
sql.append(" ORDER BY ").append(String.join(", ", orderByItems));
|
||||||
}
|
}
|
||||||
return sql.toString();
|
return sql.toString();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -66,11 +66,11 @@ public class ZqMonitorServiceImpl implements ZqMonitorService {
|
|||||||
.append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 ")
|
.append("LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = eng.BASE_ID AND NVL(hb.IS_DELETED, 0) = 0 ")
|
||||||
.append("LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD ")
|
.append("LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = eng.HBRVCD ")
|
||||||
.append(" AND hbrv.BASEID = eng.BASE_ID ")
|
.append(" AND hbrv.BASEID = eng.BASE_ID ")
|
||||||
.append(" AND NVL(hbrv.IS_DELETED, 0) = 0 ")
|
.append(" AND hbrv.IS_DELETED = 0 ")
|
||||||
.append(" AND NVL(hbrv.ENABLED, 1) = 1 ")
|
.append(" AND hbrv.ENABLED = 1 ")
|
||||||
.append("LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD ")
|
.append("LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD ")
|
||||||
.append("LEFT JOIN SD_ADDVCD_DIC addv ON addv.ADDVCD = eng.ADDVCD ")
|
.append("LEFT JOIN SD_ADDVCD_DIC addv ON addv.ADDVCD = eng.ADDVCD ")
|
||||||
.append("WHERE NVL(t.IS_DELETED, 0) = 0 ");
|
.append("WHERE t.IS_DELETED = 0 ");
|
||||||
if (onlyZq) {
|
if (onlyZq) {
|
||||||
sql.append("AND t.STTP = 'ZQ' ");
|
sql.append("AND t.STTP = 'ZQ' ");
|
||||||
}
|
}
|
||||||
@ -1844,7 +1844,7 @@ public class ZqMonitorServiceImpl implements ZqMonitorService {
|
|||||||
}
|
}
|
||||||
return switch (field) {
|
return switch (field) {
|
||||||
case "isDeleted" -> "NVL(t.IS_DELETED, 0)";
|
case "isDeleted" -> "NVL(t.IS_DELETED, 0)";
|
||||||
case "sttpFullPath" -> null;
|
case "sttpFullPath" -> "t.STTP";
|
||||||
case "sttpCode" -> "t.STTP";
|
case "sttpCode" -> "t.STTP";
|
||||||
case "mway" -> "t.MWAY";
|
case "mway" -> "t.MWAY";
|
||||||
case "dtinType" -> "t.DTIN_TYPE";
|
case "dtinType" -> "t.DTIN_TYPE";
|
||||||
|
|||||||
@ -212,5 +212,30 @@
|
|||||||
</if>
|
</if>
|
||||||
ORDER BY t.ORDER_PATH ASC, t.RVCD ASC
|
ORDER BY t.ORDER_PATH ASC, t.RVCD ASC
|
||||||
</select>
|
</select>
|
||||||
|
<select id="selectRvcdDropdown" resultType="com.yfd.platform.qgc_base.domain.SdRvcdDic">
|
||||||
|
SELECT
|
||||||
|
RVCD,
|
||||||
|
RVNM,
|
||||||
|
PRVCD,
|
||||||
|
GRD,
|
||||||
|
PATH,
|
||||||
|
ORDER_INDEX,
|
||||||
|
SHORTNAME,
|
||||||
|
SHEPRANGE,
|
||||||
|
BASEID
|
||||||
|
|
||||||
|
FROM SD_RVCD_DIC
|
||||||
|
WHERE NVL(ENABLED, 1) = 1
|
||||||
|
AND NVL(IS_DELETED, 0) = 0
|
||||||
|
AND (PRVCD IS NULL OR PRVCD = '' OR PRVCD = '0')
|
||||||
|
<if test="baseId != null and baseId != ''">
|
||||||
|
AND BASEID = #{baseId}
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="rvnm != null and rvnm != ''">
|
||||||
|
AND RVNM LIKE '%' || #{rvnm} || '%'
|
||||||
|
</if>
|
||||||
|
ORDER BY ORDER_INDEX ASC, RVCD ASC
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user