6caa207c 张雷

水质监控功能开发

1 个父辈 2d603ae0
......@@ -308,7 +308,7 @@ public class MaterialINController {
}
result.setResult(materialIN);
result.setSuccess(true);
}*/
}
return result;
}
......
......@@ -35,6 +35,10 @@
<groupId>org.jeecgframework.boot</groupId>
<artifactId>sk-base-common</artifactId>
</dependency>
<dependency>
<groupId>org.jeecgframework.boot</groupId>
<artifactId>sk-module-system</artifactId>
</dependency>
</dependencies>
</project>
\ No newline at end of file
</project>
......
......@@ -31,6 +31,7 @@
<orderEntry type="module" module-name="sk-base-common" />
<orderEntry type="library" name="Maven: org.javassist:javassist:3.21.0-GA" level="project" />
<orderEntry type="library" name="Maven: com.belerweb:pinyin4j:2.5.1" level="project" />
<orderEntry type="module" module-name="sk-module-system" />
<orderEntry type="library" name="Maven: com.kingtroldata:core:2.0.3" level="project" />
<orderEntry type="library" name="Maven: org.apache.kafka:kafka-clients:2.0.1" level="project" />
<orderEntry type="library" name="Maven: org.lz4:lz4-java:1.4.1" level="project" />
......
......@@ -9,6 +9,7 @@ import com.skua.modules.dataAnalysis.vo.WaterQualityMonitoringDetailVO;
import com.skua.modules.dataAnalysis.vo.WaterQualityMonitoringVO;
import com.skua.modules.dataAnalysis.vo.WaterQualityParams;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -186,18 +187,32 @@ public class FactoryCenterController {
@ApiOperation(value="水质监控实时数据查询", notes="水质监控实时数据查询")
@GetMapping(value = "/queryMonitoringData")
public Result<List<WaterQualityMonitoringDetailVO>> queryMonitoringData(WaterQualityParams waterQualityParams) {
Result<List<WaterQualityMonitoringDetailVO>> result = new Result<List<WaterQualityMonitoringDetailVO>>();
public Result<WaterQualityMonitoringVO> queryMonitoringData(WaterQualityParams waterQualityParams) {
Result<WaterQualityMonitoringVO> result = new Result<WaterQualityMonitoringVO>();
int all = 0;//全部
int abnormal = 0;//异常
List<WaterQualityMonitoringDetailVO> list = new ArrayList<>();
String departIds = waterQualityParams.getDepartId();
WaterQualityMonitoringVO res = new WaterQualityMonitoringVO();
String departIds = "";
if(waterQualityParams.getDepartId()!=null){
departIds = commonSqlService.getChildFactorys(waterQualityParams.getDepartId());
}else{
departIds = commonSqlService.getChildFactorys(BaseContextHandler.getRealDepartId());
}
list = factoryCenterService.queryMonitoringData(departIds,waterQualityParams.getParmType());
res.setList(list);
all = list.size();
res.setAll(String.valueOf(all));
for (WaterQualityMonitoringDetailVO vo:list) {
if("1".equals(vo.getCodAbnormal())||"1".equals(vo.getNh3Abnormal())||
"1".equals(vo.getTnAbnormal())||"1".equals(vo.getTpAbnormal())||"1".equals(vo.getPhAbnormal())){
abnormal++;
}
}
res.setNormal(String.valueOf(all-abnormal));
res.setAbnormal(String.valueOf(abnormal));
result.setSuccess(true);
result.setResult(list);
result.setResult(res);
return result;
}
}
......
......@@ -14,6 +14,8 @@ import com.skua.modules.dataAnalysis.vo.StatisticsParam;
import com.skua.modules.dataAnalysis.vo.WaterQualityMonitoringDetailVO;
import com.skua.modules.system.datestandard.entity.SysMonitorMetricInfo;
import com.skua.modules.system.datestandard.service.ISysMonitorMetricInfoService;
import com.skua.modules.system.entity.SysDepart;
import com.skua.modules.system.service.ISysDepartService;
import com.skua.tool.util.DateUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -40,6 +42,8 @@ public class FactoryCenterServiceImpl implements IFactoryCenterService {
@Autowired
IFactoryInfoService factoryInfoService;
@Autowired
private ISysDepartService sysDepartService;
@Autowired
private ISysMonitorMetricInfoService sysMonitorMetricInfoService;
private static DecimalFormat df = new DecimalFormat("#.##");
......@@ -66,6 +70,14 @@ public class FactoryCenterServiceImpl implements IFactoryCenterService {
qw.in("depart_id", departId.split(","));
qw.groupBy("depart_id","metric_uid_tag");
List<SysMonitorMetricInfo> monitorList = sysMonitorMetricInfoService.list(qw);
Map<String,String> departMap = new HashMap<>();
Map<String,String> departParentMap = new HashMap<>();
List<SysDepart> departList = sysDepartService.list();
for (SysDepart depart : departList ) {
departMap.put(depart.getId(),depart.getDepartName());
departParentMap.put(depart.getId(),depart.getParentId());
}
Map<String,Object> levelMap = getFactorysLevel(departId);
//获取实时指标
String fields = "";
for(SysMonitorMetricInfo monitorInfo : monitorList) {
......@@ -84,29 +96,93 @@ public class FactoryCenterServiceImpl implements IFactoryCenterService {
String[] departArray = departId.split(",");
int sort = 0;//序号
for(String depart : departArray) {
Map<String,Object> limitMap = new HashMap<>();
if(levelMap.get(depart)!=null){
List<Map<String,String>> limitList = (List<Map<String,String>>)levelMap.get(depart);
for (Map<String,String> lMap : limitList) {
limitMap.put(lMap.get("code"),lMap);
}
}
if(parmType != null){
if("in".equals(parmType)){
sort++;
list = putInWaterDataInList(sort,list,dataMap,monitorTagMap,depart);
list = putInWaterDataInList(sort,list,dataMap,monitorTagMap,depart,departMap,departParentMap,limitMap);
}else if("out".equals(parmType)){
sort++;
list = putOutWaterDataInList(sort,list,dataMap,monitorTagMap,depart);
list = putOutWaterDataInList(sort,list,dataMap,monitorTagMap,depart,departMap,departParentMap,limitMap);
}else{
sort++;
list = putInWaterDataInList(sort,list,dataMap,monitorTagMap,depart);
list = putInWaterDataInList(sort,list,dataMap,monitorTagMap,depart,departMap,departParentMap,limitMap);
sort++;
list = putOutWaterDataInList(sort,list,dataMap,monitorTagMap,depart);
list = putOutWaterDataInList(sort,list,dataMap,monitorTagMap,depart,departMap,departParentMap,limitMap);
}
}else{
sort++;
list = putInWaterDataInList(sort,list,dataMap,monitorTagMap,depart);
list = putInWaterDataInList(sort,list,dataMap,monitorTagMap,depart,departMap,departParentMap,limitMap);
sort++;
list = putOutWaterDataInList(sort,list,dataMap,monitorTagMap,depart);
list = putOutWaterDataInList(sort,list,dataMap,monitorTagMap,depart,departMap,departParentMap,limitMap);
}
}
return list;
}
private Map<String,Object> getFactorysLevel(String departIds) {
JdbcTemplate masterDB = (JdbcTemplate) SpringContextUtils.getBean("master");
Map<String,Object> resMap = new HashMap<String,Object>();
String factoryInPart = "";
String[] departIdsArray = departIds.split(",");
for(String departId : departIdsArray) {
factoryInPart = "'"+departId+"',"+factoryInPart;
}
factoryInPart = factoryInPart + "''";
//获取进出水报警阈值
String alarmSql = "SELECT aa.* FROM " +
" (SELECT " +
" a.depart_id, " +
" b.alarm_param_code AS index_code," +
" b.alarm_param_upper_limit AS upper," +
" b.alarm_param_lower_limit AS lower " +
" FROM sys_factory_info a " +
" LEFT JOIN alarm_param_standard_config b ON a.out_level = b.alarm_level_standard_id " +
" WHERE depart_id IN ( "+factoryInPart+" ) " +
" UNION ALL " +
" SELECT " +
" DISTINCT depart_id,index_code,upper,lower " +
" FROM water_quality_in_level " +
" WHERE depart_id IN ("+factoryInPart+")) aa " +
" ORDER BY aa.depart_id";
List<Map<String,Object>> alarmList = masterDB.queryForList(alarmSql);
String depart = "";
List<Map<String,String>> list = new ArrayList<>();
for(Map<String,Object> map : alarmList) {
if(ConvertUtils.isNotEmpty(map.get("depart_id"))){
Map<String,String> departMap = new HashMap<String,String>();
if(depart.equals(ConvertUtils.getString(map.get("depart_id")))){
String code = ConvertUtils.getString(map.get("index_code"));
String upper = ConvertUtils.getString(map.get("upper"));
String lower = ConvertUtils.getString(map.get("lower"));
departMap.put("code", code);
departMap.put("upper", upper);
departMap.put("lower", lower);
list.add(departMap);
}else{
if(!"".equals(depart)){resMap.put(depart,list);}
list = new ArrayList<>();
depart = ConvertUtils.getString(map.get("depart_id"));
String code = ConvertUtils.getString(map.get("index_code"));
String upper = ConvertUtils.getString(map.get("upper"));
String lower = ConvertUtils.getString(map.get("lower"));
departMap.put("code", code);
departMap.put("upper", upper);
departMap.put("lower", lower);
list.add(departMap);
}
}
}
resMap.put(depart,list);
return resMap;
}
/**
* 进水数据
* @param sort
......@@ -117,21 +193,39 @@ public class FactoryCenterServiceImpl implements IFactoryCenterService {
* @return
*/
private List<WaterQualityMonitoringDetailVO> putInWaterDataInList(int sort, List<WaterQualityMonitoringDetailVO> list,
Map<String, Object> dataMap, Map<String, Object> monitorTagMap, String depart) {
Map<String, Object> dataMap, Map<String, Object> monitorTagMap,
String depart,Map<String,String> departMap,
Map<String,String> departParentMap,Map<String,Object> limitMap) {
WaterQualityMonitoringDetailVO inVO = new WaterQualityMonitoringDetailVO();
Map<String,String> codMap = (Map<String,String>)limitMap.get("JSCOD");
Map<String,String> nh3nMap = (Map<String,String>)limitMap.get("JSNH3N");
Map<String,String> tnMap = (Map<String,String>)limitMap.get("JSTN");
Map<String,String> tpMap = (Map<String,String>)limitMap.get("JSTP");
Map<String,String> phMap = (Map<String,String>)limitMap.get("JSPH");
inVO.setParmType("in");
inVO.setNum(sort);
inVO.setDepartId(depart);
inVO.setCodUpper("150");
inVO.setCodLower("0");
inVO.setNh3Upper("35");
inVO.setNh3Lower("0");
inVO.setTpUpper("4");
inVO.setTpLower("0");
inVO.setTnUpper("20");
inVO.setTnLower("0");
inVO.setPhUpper("14");
inVO.setPhLower("0");
inVO.setDepartName(departMap.get(depart));
if(departParentMap.get(depart)!=null){
String parentId = departParentMap.get(depart);
inVO.setParentId(parentId);
inVO.setParentName(departMap.get(parentId));
}
inVO.setCodUpper(codMap.getOrDefault("upper","0"));
inVO.setCodLower(codMap.getOrDefault("lower","0"));
inVO.setCodAbnormal("0");
inVO.setNh3Upper(nh3nMap.getOrDefault("upper","0"));
inVO.setNh3Lower(nh3nMap.getOrDefault("lower","0"));
inVO.setNh3Abnormal("0");
inVO.setTpUpper(tpMap.getOrDefault("upper","0"));
inVO.setTpLower(tpMap.getOrDefault("lower","0"));
inVO.setTpAbnormal("0");
inVO.setTnUpper(tnMap.getOrDefault("upper","0"));
inVO.setTnLower(tnMap.getOrDefault("lower","0"));
inVO.setTnAbnormal("0");
inVO.setPhUpper(phMap.getOrDefault("upper","0"));
inVO.setPhLower(phMap.getOrDefault("lower","0"));
inVO.setPhAbnormal("0");
inVO.setCodVal(getValueFromDataMap(dataMap,monitorTagMap,depart,"JSCOD"));
inVO.setNh3Val(getValueFromDataMap(dataMap,monitorTagMap,depart,"JSNH3N"));
inVO.setTpVal(getValueFromDataMap(dataMap,monitorTagMap,depart,"JSTP"));
......@@ -140,6 +234,7 @@ public class FactoryCenterServiceImpl implements IFactoryCenterService {
inVO.setSsllVal(getValueFromDataMap(dataMap,monitorTagMap,depart,"JSLL"));
inVO.setLjllVal(getValueFromDataMap(dataMap,monitorTagMap,depart,"JSLJLL"));
inVO.setZdVal(getValueFromDataMap(dataMap,monitorTagMap,depart,"JSSS"));
inVO = updateDataStatus(inVO);
list.add(inVO);
return list;
}
......@@ -154,21 +249,39 @@ public class FactoryCenterServiceImpl implements IFactoryCenterService {
* @return
*/
private List<WaterQualityMonitoringDetailVO> putOutWaterDataInList(int sort, List<WaterQualityMonitoringDetailVO> list,
Map<String, Object> dataMap, Map<String, Object> monitorTagMap, String depart) {
Map<String, Object> dataMap, Map<String, Object> monitorTagMap,
String depart,Map<String,String> departMap,
Map<String,String> departParentMap,Map<String,Object> limitMap) {
WaterQualityMonitoringDetailVO outVO = new WaterQualityMonitoringDetailVO();
Map<String,String> codMap = (Map<String,String>)limitMap.get("CSCOD");
Map<String,String> nh3nMap = (Map<String,String>)limitMap.get("CSNH3N");
Map<String,String> tnMap = (Map<String,String>)limitMap.get("CSTN");
Map<String,String> tpMap = (Map<String,String>)limitMap.get("CSTP");
Map<String,String> phMap = (Map<String,String>)limitMap.get("CSPH");
outVO.setParmType("out");
outVO.setNum(sort++);
outVO.setDepartId(depart);
outVO.setCodUpper("30");
outVO.setCodLower("0");
outVO.setNh3Upper("1.5");
outVO.setNh3Lower("0");
outVO.setTpUpper("0.3");
outVO.setTpLower("0");
outVO.setTnUpper("10");
outVO.setTnLower("0");
outVO.setPhUpper("9");
outVO.setPhLower("6");
outVO.setDepartName(departMap.get(depart));
if(departParentMap.get(depart)!=null){
String parentId = departParentMap.get(depart);
outVO.setParentId(parentId);
outVO.setParentName(departMap.get(parentId));
}
outVO.setCodUpper(codMap.getOrDefault("upper","0"));
outVO.setCodLower(codMap.getOrDefault("lower","0"));
outVO.setCodAbnormal("0");
outVO.setNh3Upper(nh3nMap.getOrDefault("upper","0"));
outVO.setNh3Lower(nh3nMap.getOrDefault("lower","0"));
outVO.setNh3Abnormal("0");
outVO.setTpUpper(tpMap.getOrDefault("upper","0"));
outVO.setTpLower(tpMap.getOrDefault("lower","0"));
outVO.setTpAbnormal("0");
outVO.setTnUpper(tnMap.getOrDefault("upper","0"));
outVO.setTnLower(tnMap.getOrDefault("lower","0"));
outVO.setTnAbnormal("0");
outVO.setPhUpper(phMap.getOrDefault("upper","0"));
outVO.setPhLower(phMap.getOrDefault("lower","0"));
outVO.setPhAbnormal("0");
outVO.setCodVal(getValueFromDataMap(dataMap,monitorTagMap,depart,"CSCOD"));
outVO.setNh3Val(getValueFromDataMap(dataMap,monitorTagMap,depart,"CSNH3N"));
outVO.setTpVal(getValueFromDataMap(dataMap,monitorTagMap,depart,"CSTP"));
......@@ -177,10 +290,35 @@ public class FactoryCenterServiceImpl implements IFactoryCenterService {
outVO.setSsllVal(getValueFromDataMap(dataMap,monitorTagMap,depart,"CSLL"));
outVO.setLjllVal(getValueFromDataMap(dataMap,monitorTagMap,depart,"CSLJLL"));
outVO.setZdVal(getValueFromDataMap(dataMap,monitorTagMap,depart,"CSSS"));
outVO = updateDataStatus(outVO);
list.add(outVO);
return list;
}
private WaterQualityMonitoringDetailVO updateDataStatus(WaterQualityMonitoringDetailVO waterQualityMonitoringDetailVO) {
if(Double.parseDouble(waterQualityMonitoringDetailVO.getCodVal()) > Double.parseDouble(waterQualityMonitoringDetailVO.getCodUpper())||
Double.parseDouble(waterQualityMonitoringDetailVO.getCodVal()) < Double.parseDouble(waterQualityMonitoringDetailVO.getCodLower())){
waterQualityMonitoringDetailVO.setCodAbnormal("1");
}
if(Double.parseDouble(waterQualityMonitoringDetailVO.getNh3Val()) > Double.parseDouble(waterQualityMonitoringDetailVO.getNh3Upper())||
Double.parseDouble(waterQualityMonitoringDetailVO.getNh3Val()) < Double.parseDouble(waterQualityMonitoringDetailVO.getNh3Lower())){
waterQualityMonitoringDetailVO.setNh3Abnormal("1");
}
if(Double.parseDouble(waterQualityMonitoringDetailVO.getTnVal()) > Double.parseDouble(waterQualityMonitoringDetailVO.getTnUpper())||
Double.parseDouble(waterQualityMonitoringDetailVO.getTnVal()) < Double.parseDouble(waterQualityMonitoringDetailVO.getTnLower())){
waterQualityMonitoringDetailVO.setTnAbnormal("1");
}
if(Double.parseDouble(waterQualityMonitoringDetailVO.getTpVal()) > Double.parseDouble(waterQualityMonitoringDetailVO.getTpUpper())||
Double.parseDouble(waterQualityMonitoringDetailVO.getTpVal()) < Double.parseDouble(waterQualityMonitoringDetailVO.getTpLower())){
waterQualityMonitoringDetailVO.setTpAbnormal("1");
}
if(Double.parseDouble(waterQualityMonitoringDetailVO.getPhVal()) > Double.parseDouble(waterQualityMonitoringDetailVO.getPhUpper())||
Double.parseDouble(waterQualityMonitoringDetailVO.getPhVal()) < Double.parseDouble(waterQualityMonitoringDetailVO.getPhLower())){
waterQualityMonitoringDetailVO.setPhAbnormal("1");
}
return waterQualityMonitoringDetailVO;
}
/**
* 获取数据值
* @param dataMap
......
......@@ -15,92 +15,77 @@ public class WaterQualityMonitoringDetailVO {
@ApiModelProperty(value = "进出水类型")
private Integer num;
/**
* 进出水类型
*/
@ApiModelProperty(value = "进出水类型")
private String parmType;
/**
* 厂id
*/
@ApiModelProperty(value = "上级ID")
private String parentId;
@ApiModelProperty(value = "上级名称")
private String parentName;
@ApiModelProperty(value = "厂id")
private String departId;
/**
* 厂站名称
*/
@ApiModelProperty(value = "厂站名称")
private String departName;
@ApiModelProperty(value = "厂区排序")
private int departOrder;
@ApiModelProperty(value = "厂区负责人")
private String proPerson;
// @ApiModelProperty(value = "厂区排序")
// private int departOrder;
//
// @ApiModelProperty(value = "厂区负责人")
// private String proPerson;
//
// @ApiModelProperty(value = "厂区负责人电话")
// private String proPhone;
@ApiModelProperty(value = "厂区负责人电话")
private String proPhone;
/**
* 监测时间
*/
@ApiModelProperty(value = "监测时间")
private String monitorTime;
/**
* 流量
*/
@ApiModelProperty(value = "流量")
private String flowVal;
private String flowUpper;
private String flowLower;
private String flowAbnormal;
/**
* cod
*/
// @ApiModelProperty(value = "流量")
// private String flowVal;
// private String flowUpper;
// private String flowLower;
// private String flowAbnormal;
@ApiModelProperty(value = "cod")
private String codVal;
private String codUpper;
private String codLower;
private String codAbnormal;
private String codWarnMessage;//预警
/**
* 氨氮
*/
// private String codWarnMessage;//预警
@ApiModelProperty(value = "氨氮")
private String nh3Val;
private String nh3Upper;
private String nh3Lower;
private String nh3Abnormal;
private String nh3WarnMessage;
/**
* 总磷
*/
// private String nh3WarnMessage;
@ApiModelProperty(value = "总磷")
private String tpVal;
private String tpUpper;
private String tpLower;
private String tpAbnormal;
private String tpWarnMessage;
/**
* 总氮
*/
// private String tpWarnMessage;
@ApiModelProperty(value = "总氮")
private String tnVal;
private String tnUpper;
private String tnLower;
private String tnAbnormal;
private String tnWarnMessage;
/**
* 温度
*/
@ApiModelProperty(value = "温度")
private String temperatureVal;
private String temperatureWarnMessage;
/**
* ph
*/
// private String tnWarnMessage;
// @ApiModelProperty(value = "温度")
// private String temperatureVal;
// private String temperatureWarnMessage;
@ApiModelProperty(value = "ph")
private String phVal;
private String phUpper;
private String phLower;
private String phAbnormal;
// private String phWarnMessage;
@ApiModelProperty(value = "浊度")
private String zdVal;
......@@ -110,55 +95,40 @@ public class WaterQualityMonitoringDetailVO {
@ApiModelProperty(value = "累计流量")
private String ljllVal;
// @ApiModelProperty(value = "摄像头")
// private String cameraVal;
//
// @ApiModelProperty(value = "出水标准")
// private String outLevel;
//
// //是否水质正常
// private String isHaveNormal;
//
// //是否水质超标
// private String isHaveAbnormal;
//
// //超标指标个数
// private int abnormalCount;
//
// //指标未配置
// private int notConfiguredCount;
//
// //厂站指标没有配置标记
// private String isNotHaveConfigured;
//
// //是否含有0值
// private String isHaveZero;
//
// //是否脱机
// private String isHaveOffline;
//
// //是否预警
// private String isHaveWarn;
//
// //预警个数
// private int abWarnCount;
//
// //离线数量
// private int offLineCount;
/**
* 摄像头
*/
@ApiModelProperty(value = "摄像头")
private String cameraVal;
/**
* 出水标准
*/
@ApiModelProperty(value = "出水标准")
private String outLevel;
/**
* 是否水质正常
*/
private String isHaveNormal;
/**
* 是否水质超标
*/
private String isHaveAbnormal;
/**
* 超标指标个数
*/
private int abnormalCount;
/**
* 指标未配置
*/
private int notConfiguredCount;
/**
* 厂站指标没有配置标记
*/
private String isNotHaveConfigured;
/**
* 是否含有0值
*/
private String isHaveZero;
/**
* 是否脱机
*/
private String isHaveOffline;
/**
* 是否预警
*/
private String isHaveWarn;
/**
* 预警个数
*/
private int abWarnCount;
private int offLineCount;
}
......
......@@ -11,16 +11,16 @@ import java.util.List;
public class WaterQualityMonitoringVO {
@ApiModelProperty(value = "总数")
private String all;//全部
@ApiModelProperty(value = "在线")
@ApiModelProperty(value = "正常")
private String normal;//正常
@ApiModelProperty(value = "异常")
private String abnormal;//异常
@ApiModelProperty(value = "脱机")
private String offline;//脱机
@ApiModelProperty(value = "零值")
private String zeroVal;//零值
@ApiModelProperty(value = "预警")
private String warnVal;//零值
// @ApiModelProperty(value = "脱机")
// private String offline;//脱机
// @ApiModelProperty(value = "零值")
// private String zeroVal;//零值
// @ApiModelProperty(value = "预警")
// private String warnVal;//零值
@ApiModelProperty(value = "水质监控明细")
private List<WaterQualityMonitoringDetailVO> list;//明细
}
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!