2031b9bd 康伟

kangwei:设备运行台时问题修改

1 个父辈 220781bd
......@@ -27,6 +27,10 @@ public class JSUtils {
String expression = obj1+ "-" + obj2;
return executeExpression(expression,"0.00");
}
public static String subtract(Object obj1 , Object obj2,Object obj3){
String expression = obj1+ "-" + obj2 + "-" + obj3 ;
return executeExpression(expression,"0.00");
}
public static String multiply(Object obj1 , Object obj2){
String expression = obj1+ "*" + obj2;
return executeExpression(expression,"0.00");
......
package com.skua.modules.algorithm.vo;
import com.skua.core.util.ConvertUtils;
import com.skua.tool.util.JSUtils;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import netscape.javascript.JSUtil;
@Data
@ApiModel(value="指挥中心:运行负荷率分析:处理水量详情", description="指挥中心:运行负荷率分析:处理水量详情)")
......@@ -25,35 +28,35 @@ public class WaterTreatmentVO {
private Double dayCsl;
@ApiModelProperty(value = "环比:处理水量比例")
private Double hbcslbl;
private String hbcslbl;
@ApiModelProperty(value = "同比:处理水量比例")
private Double tbcslbl;
private String tbcslbl;
@ApiModelProperty(value = "负荷率")
private Double fhl;
private String fhl;
@ApiModelProperty(value = "排名")
private Integer rank;
private long monthDayNum = 30;
public Double getFhl() {
public String getFhl() {
if(this.getCSL() != null && this.getProScale() != null && this.getProScale().doubleValue() > 0 ){
fhl = this.getCSL()*100 / (this.getProScale() * this.getMonthDayNum() );
fhl = JSUtils.format( this.getCSL()*100 / (this.getProScale() * this.getMonthDayNum() ) );
}
return fhl;
}
public Double getHbcslbl() {
public String getHbcslbl() {
if(this.getCSL() != null && this.getHbcsl() != null && this.getHbcsl().doubleValue() > 0){
hbcslbl = (this.getCSL() - this.getHbcsl()) * 100 / this.getHbcsl() ;
hbcslbl = JSUtils.format( (this.getCSL() - this.getHbcsl()) * 100 / this.getHbcsl());
}
return hbcslbl;
}
public Double getTbcslbl() {
public String getTbcslbl() {
if(this.getCSL() != null && this.getTbcsl() != null && this.getTbcsl().doubleValue() > 0){
tbcslbl = (this.getCSL() - this.getTbcsl())*100 / this.getTbcsl() ;
tbcslbl = JSUtils.format( (this.getCSL() - this.getTbcsl())*100 / this.getTbcsl());
}
return tbcslbl;
}
......
......@@ -12,10 +12,12 @@ import com.skua.modules.equipment.vo.EquipmentRealTimeVO;
import com.skua.modules.erp.vo.MetricInfoVO;
import com.skua.modules.erp.vo.RealTimeHistoryDataVO;
import com.skua.modules.guest.util.DateUtil;
import com.skua.tool.util.JSUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
......@@ -23,6 +25,9 @@ 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;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
@Api(tags="设备-设备运行台时报表")
......@@ -30,16 +35,20 @@ import java.util.*;
@RequestMapping("/test/metricInfo")
public class TestMetricInfoController {
@Value("${skua.collectionFrequency:}")
private String collectionFrequency;
@Autowired
private IFactoryInfoService iFactoryInfoService;
@AutoLog(value = "设备-设备运行台时报表")
@ApiOperation(value = "设备-设备运行台时报表", notes = "设备-设备运行台时报表")
@ApiOperation(value = "设备-设备运行台时报表(timeType:1 当日数据,=2表示月数据;=3表示年数据)", notes = "设备-设备运行台时报表")
@GetMapping(value = "/realTimeHistoryData")
public Result<RealTimeHistoryDataVO> equipRealTimeHistoryDataCtrl(@RequestParam(value = "departId") String departId,
@RequestParam(value = "startTime") String startTime,
@RequestParam(value = "endTime") String endTime) {
@RequestParam(value = "endTime") String endTime,
@RequestParam(value = "timeType",defaultValue = "1")String timeType) {
if(StringUtils.isEmpty(startTime)){
startTime = DateUtil.getCurrentDate() ;
}
......@@ -52,7 +61,6 @@ public class TestMetricInfoController {
if(endTime != null && endTime.length() < 19){
endTime = endTime+" 23:59:59";
}
Result<RealTimeHistoryDataVO> result = new Result<>();
RealTimeHistoryDataVO realTimeHistoryDataVO = new RealTimeHistoryDataVO();
//String fields = "TCSWSCLC_PLC300_Tag182,TCSWSCLC_PLC300_Tag185";
......@@ -68,7 +76,7 @@ public class TestMetricInfoController {
for(MetricInfoVO metricInfoVO : metricInfoVOList){
String equipmentName = metricInfoVO.getEquipmentName().replaceAll("[^\\u4e00-\\u9fa5]", "");
String equipmentCode = ChineseInital.getAllFirstLetter(equipmentName)+"_"+ RandomUtil.randomNumbers(2);
metricInfoVO.setEquipmentName(equipmentName );
//metricInfoVO.setEquipmentName(equipmentName );
metricInfoVO.setEquipmentCode(equipmentCode );
if(StringUtils.isNotEmpty(metricInfoVO.getGzExpress())){
fields += metricInfoVO.getGzExpress()+",";
......@@ -85,9 +93,10 @@ public class TestMetricInfoController {
if (fields.endsWith(",")) {
fields = fields.substring(0, fields.length() - 1);
}
List<Map<String, Object>> pgDataList = iFactoryInfoService.queryFactoryInfos(departId, fields, startTime, endTime, "1");
List<Map<String, Object>> pgDataList = queryFactoryInfos(departId, fields, startTime, endTime, timeType);
List<Map<String, Object>> dataList = null;
if(pgDataList != null ) {
dataList = new ArrayList<>(pgDataList.size());
Map<String, Object> dataMap = null;
......@@ -95,11 +104,19 @@ public class TestMetricInfoController {
String equipmentCode = null;
for (Map<String, Object> paramMap : pgDataList) {
dataMap = new HashMap<>();
dataMap.put("time",paramMap.get("time") );
if(timeType.equals( "1")){
dataMap.put("time",DateUtils.formatTime(Long.parseLong(paramMap.get("time") + "000")) );
}
for(MetricInfoVO metricInfoVO : metricInfoVOList){
dataMap.put( metricInfoVO.getEquipmentCode()+"_YX" , ConvertUtils.getString(paramMap.get(metricInfoVO.getYxExpress())));//运行
dataMap.put( metricInfoVO.getEquipmentCode()+"_GZ" , ConvertUtils.getString(paramMap.get(metricInfoVO.getGzExpress())));//故障
dataMap.put( metricInfoVO.getEquipmentCode()+"_ZT" ,60 - ConvertUtils.getDouble(paramMap.get(metricInfoVO.getYxExpress()),0) - ConvertUtils.getDouble(paramMap.get(metricInfoVO.getGzExpress()) ,0) );//暂停
dataMap.put( metricInfoVO.getEquipmentCode()+"_YX" , JSUtils.format(paramMap.get(metricInfoVO.getYxExpress()),"0.00"));//运行
dataMap.put( metricInfoVO.getEquipmentCode()+"_GZ" , JSUtils.format(paramMap.get(metricInfoVO.getGzExpress()),"0.00"));//故障
//时数据
if (timeType.equals("1")) dataMap.put( metricInfoVO.getEquipmentCode()+"_ZT" ,JSUtils.subtract( 60, paramMap.get(metricInfoVO.getYxExpress()),paramMap.get(metricInfoVO.getGzExpress()) ) );//暂停
//日数据
if (timeType.equals("2")) dataMap.put( metricInfoVO.getEquipmentCode()+"_ZT" ,JSUtils.subtract( 24*60, paramMap.get(metricInfoVO.getYxExpress()),paramMap.get(metricInfoVO.getGzExpress()) ) );//暂停
//月数据
if (timeType.equals("3")) dataMap.put( metricInfoVO.getEquipmentCode()+"_ZT" ,JSUtils.subtract( 30*24*60, paramMap.get(metricInfoVO.getYxExpress()),paramMap.get(metricInfoVO.getGzExpress()) ) );//暂停
}
dataList.add( dataMap );
......@@ -138,4 +155,92 @@ public class TestMetricInfoController {
return result;
}
public List<Map<String, Object>> queryFactoryInfos(String departId, String fields, String startTime, String endTime, String tableType) {
String fieldSqlPart = "";
String[] fieldsArr = fields.split(",");
for(int i = 0; i < fieldsArr.length; ++i) {
fieldSqlPart = fieldSqlPart + ",'" + fieldsArr[i] + "'";
}
if (!StringUtils.isEmpty(fieldSqlPart)) {
fieldSqlPart = fieldSqlPart.substring(1);
}
JdbcTemplate pgDB = (JdbcTemplate)SpringContextUtils.getBean("pg-db");
JdbcTemplate masterDB = (JdbcTemplate)SpringContextUtils.getBean("master");
List<Map<String, Object>> result = new ArrayList();
List<Map<String, Object>> factoryDesign = masterDB.queryForList("select * from sys_factory_device where depart_id = '" + departId + "'");
if (factoryDesign != null && factoryDesign.size() != 0) {
String countTableName = ConvertUtils.getString(((Map)factoryDesign.get(0)).get("device_id"));
String sql = null;
//时数据
if (tableType.equals("1")) {
sql = "select ts as time,nm as monitorId,v as monitorValue from " + countTableName + "_count where nm in(" + fieldSqlPart + ") and ts>=? and ts <? ";
}
//日数据
if (tableType.equals("2")) {
sql = "select aaa.date as time , aaa.monitorId ,SUM( to_number ( aaa.monitorValue, '9999999999999999.99' ) )as monitorValue from (";
sql += "select to_char(to_timestamp(ts::INT8)::DATE,'YYYY-MM-DD') as date, ts as time,nm as monitorId,v as monitorValue from " + countTableName + "_count where nm in(" + fieldSqlPart + ") and ts>=? and ts <? ";
sql += " )aaa group by aaa.date ,aaa.monitorId order by aaa.date asc";
}
//月数据
if (tableType.equals("3")) {
sql = "select aaa.date as time , aaa.monitorId ,SUM( to_number ( aaa.monitorValue, '9999999999999999.99' ) )as monitorValue from (";
sql += "select to_char(to_timestamp(ts::INT8)::DATE,'YYYY-MM') as date, ts as time,nm as monitorId,v as monitorValue from " + countTableName + "_count where nm in(" + fieldSqlPart + ") and ts>=? and ts <? ";
sql += " )aaa group by aaa.date ,aaa.monitorId order by aaa.date asc";
}
try {
String tsStartTime = String.valueOf(DateUtils.getMillis(DateUtils.parseDate(startTime, "yyyy-MM-dd HH:mm:ss")) / 1000L);
String tsEndTime = String.valueOf(DateUtils.getMillis(DateUtils.parseDate(endTime, "yyyy-MM-dd HH:mm:ss")) / 1000L);
List dataList = null;
try {
dataList = pgDB.queryForList(sql, new Object[]{tsStartTime, tsEndTime});
} catch (DataAccessException var23) {
Object pgDbSlaveObject = SpringContextUtils.getBean("pg-db-slave");
if (pgDbSlaveObject != null) {
pgDB = (JdbcTemplate)pgDbSlaveObject;
dataList = pgDB.queryForList(sql, new Object[]{tsStartTime, tsEndTime});
}
}
this.dataRowToCellByTime(result, dataList);
} catch (Exception var24) {
var24.printStackTrace();
}
return result;
} else {
return result;
}
}
private List<Map<String, Object>> dataRowToCellByTime(List<Map<String, Object>> result, List<Map<String, Object>> dataList) {
List<String> orderTsList = new ArrayList();
Map<String, Map<String, Object>> resultMap = new HashMap();
Iterator var5 = dataList.iterator();
while(true) {
while(var5.hasNext()) {
Map<String, Object> tempMap = (Map)var5.next();
String key = tempMap.get("time").toString();
Map<String, Object> fieldDataMap = (Map)resultMap.get(key);
if (fieldDataMap != null && fieldDataMap.size() != 0) {
fieldDataMap.put(tempMap.get("monitorId").toString(), tempMap.get("monitorValue"));
} else {
orderTsList.add(key);
fieldDataMap = new HashMap();
fieldDataMap.put(tempMap.get("monitorId").toString(), tempMap.get("monitorValue"));
resultMap.put(key, fieldDataMap);
}
}
var5 = orderTsList.iterator();
while(var5.hasNext()) {
String order = (String)var5.next();
Map<String, Object> map = (Map)resultMap.get(order);
map.put("time", order);
result.add(map);
}
return result;
}
}
}
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!