123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656 |
- package com.shkpr.service.aimodelpower.controllerapi;
- import com.global.base.log.LogLevelFlag;
- import com.global.base.log.LogPrintMgr;
- import com.global.base.tools.FastJsonUtil;
- import com.shkpr.service.aimodelpower.bizmgr.KprAimWaterCollecationBizFun;
- import com.shkpr.service.aimodelpower.commtools.CommTool;
- import com.shkpr.service.aimodelpower.commtools.HttpTool;
- import com.shkpr.service.aimodelpower.commtools.TimeTool;
- import com.shkpr.service.aimodelpower.constants.ApiURI;
- import com.shkpr.service.aimodelpower.constants.LogFlagBusiType;
- import com.shkpr.service.aimodelpower.controllerfilter.TokenAuthenticationService;
- import com.shkpr.service.aimodelpower.dto.MsgNotifyBean;
- import com.shkpr.service.aimodelpower.dto.ResponseCode;
- import com.shkpr.service.aimodelpower.dto.ResponseRes;
- import com.shkpr.service.aimodelpower.dto.zilaishuiModel.InPumpModel;
- import com.shkpr.service.aimodelpower.exception.SelfException;
- import com.shkpr.service.aimodelpower.jsonbean.zilaishui.JPRealHourWater;
- import com.shkpr.service.aimodelpower.jsonbean.zilaishui.JPTbLevelHourWater;
- import com.shkpr.service.aimodelpower.jsonbean.zilaishui.JPTbMHourWater;
- import com.shkpr.service.aimodelpower.jsonbean.zilaishui.JPTbMWater;
- import org.apache.commons.collections.MapUtils;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.web.bind.annotation.PostMapping;
- import org.springframework.web.bind.annotation.RequestHeader;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
- import javax.servlet.http.HttpServletRequest;
- import java.io.*;
- import java.nio.charset.Charset;
- import java.nio.charset.StandardCharsets;
- import java.util.*;
- import java.util.concurrent.atomic.AtomicInteger;
- /**
- * @ClassName WaterCollecationController
- * @Description: TODO 水量预测相关接口
- * @Author LX
- * @Date 2024/5/27
- * @Version V1.0
- **/
- @RequestMapping(ApiURI.URI_WATER_ZILAISHUI_H)
- @RestController
- public class WaterCollecationController {
- final String MSG_SUCCESS = "success.";
- final String MSG_FAILED = "failed.";
- private String mStrClassName;
- private AtomicInteger mSeqNotify = null;
- public WaterCollecationController() {
- mStrClassName = "WaterCollecationController";
- mSeqNotify = new AtomicInteger(0);
- }
- /**
- * 获取配置文件的 InputStreamReader,支持 UTF-8 编码
- *
- * @param configFileName 配置文件名
- * @return InputStreamReader 对象,如果文件不存在则返回 null
- */
- public InputStream getConfigStream(String configFileName) throws Exception{
- InputStream inputStream = null;
- try {
- // 尝试从文件系统加载
- File configFile = new File(configFileName);
- if (configFile.exists()) {
- inputStream = new FileInputStream(configFile);
- } else {
- // 尝试从 JAR 文件类目录加载
- inputStream = getClass().getClassLoader().getResourceAsStream(configFileName);
- }
- } catch (FileNotFoundException e) {
- // 如果文件未找到,尝试从类路径加载
- inputStream = getClass().getClassLoader().getResourceAsStream(configFileName);
- }
- // 如果 inputStream 不为空,返回 InputStreamReader 并指定 UTF-8 编码
- if (inputStream != null) {
- InputStreamReader reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8);
- // 将 InputStreamReader 的内容写入字符串
- StringBuilder sb = new StringBuilder();
- char[] buffer = new char[1024];
- int len;
- while ((len = reader.read(buffer)) != -1) {
- sb.append(buffer, 0, len);
- }
- String content = sb.toString();
- // 将字符串重新编码为字节数组,并转换为 InputStream
- InputStream returnInputStream = new ByteArrayInputStream(content.getBytes(StandardCharsets.UTF_8));
- return returnInputStream;
- } else {
- return null; // 文件未找到
- }
- }
- @PostMapping(value = ApiURI.URI_WATER_ZILAISHUI_DAY)
- public ResponseRes dayData(HttpServletRequest request
- , @RequestHeader(value= ApiURI.HEADER_CLIENT_TYPE, required=false) String strClientType
- , @RequestHeader(value= ApiURI.HEADER_USER_AGENT, required=false) String strUserAgent) throws Exception{
- final String URI_PATH = request.getRequestURI();
- final String strPlatform = CommTool.getPlatformByAgent(strClientType, strUserAgent);
- final String strUserId = (String) request.getAttribute(TokenAuthenticationService.HEADER_USERID);
- JPTbMWater oJsonParam = FastJsonUtil.fromJSONByGson(HttpTool.getJsonBodyStr(request), JPTbMWater.class);
- if (oJsonParam == null
- || !oJsonParam.checkValid()) {
- throw new SelfException(ResponseCode.STATUS_ERROR_JSON_FORMAT.toStrCode()
- , String.format(ApiURI.EXCEPTION_FORMAT
- , strPlatform
- , URI_PATH
- , ResponseCode.STATUS_ERROR_JSON_FORMAT.toStrMsg()));
- }
- long llReqBefore = System.currentTimeMillis();
- String strRunSeq = String.format("%d-%d", llReqBefore, mSeqNotify.incrementAndGet());
- ResponseRes<String> resResult = new ResponseRes<String>();
- resResult.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
- resResult.setResmsg(MSG_SUCCESS);
- resResult.setResdata("");
- try {
- // resResult.setResdata(waterZILAISHUIDao.getCount("WHERE TAG_CODE = 'SPB.SSWD.total_flow1' and QCQUISITION_TIME >= to_date('2023-01-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss')").toString());
- LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, LogFlagBusiType.BUSI_INTERNAL.toStrValue(),
- mStrClassName, strUserId, String.format("startDate:${%s}", TimeTool.convertUTC2DateStr(TimeTool.getCurMsUTC(), TimeTool.TIMESTAMP_FORMAT)));
- //TODO 自来水相关:参数处理
- ResponseRes oRes = new ResponseRes();
- if ("water_volume_prediction".equals(KprAimWaterCollecationBizFun.databaseName)) {
- //转成集合,最多三级
- // 最终的三级结构集合
- Map<String, Map<String, List<String>>> result = getWaterWorks();
- Map<String, String> workZonIds = getWaterZoneIds();
- if (!MapUtils.isEmpty(result) && !MapUtils.isEmpty(workZonIds)) {
- int level = findOrgLevel(result, KprAimWaterCollecationBizFun.findOrgNameByOrgId(workZonIds, oJsonParam.getOrgId()).get().toString());
- oRes = KprAimWaterCollecationBizFun.selectTbWaterList(oJsonParam, level, result, workZonIds);
- }
- } else {
- oRes = KprAimWaterCollecationBizFun.selectTbWaterList(oJsonParam, null, null, null);
- }
- LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, LogFlagBusiType.BUSI_INTERNAL.toStrValue(),
- mStrClassName, strUserId, String.format("endDate:${%s}", TimeTool.convertUTC2DateStr(TimeTool.getCurMsUTC(), TimeTool.TIMESTAMP_FORMAT)));
- if (oRes != null && ResponseCode.RESULT_NORMAL.toStrCode().equals(oRes.getRescode())) {
- resResult.setResdata(FastJsonUtil.toJSON(oRes.getResdata()));
- } else {
- resResult.setRescode(ResponseCode.RESULT_BAD.toStrCode());
- resResult.setResmsg(MSG_FAILED);
- resResult.setResdata("");
- }
- resResult.setTimestamp(System.currentTimeMillis());
- LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, LogFlagBusiType.BUSI_INTERNAL.toStrValue(), mStrClassName, strUserId
- , String.format("%s:%s seq:{%s} rescode:{%s} resmsg:{%s} time:{%d ms} end<===="
- , strPlatform
- , URI_PATH
- , strRunSeq
- , resResult.getRescode()
- , resResult.getResmsg()
- , resResult.getTimestamp() - llReqBefore));
- return resResult;
- }catch(Exception ex){
- resResult.setRescode(ResponseCode.RESULT_BAD.toStrCode());
- resResult.setResmsg(MSG_FAILED+ex.getLocalizedMessage());
- resResult.setResdata("");
- return resResult;
- }
- }
- //TODO 自来水:
- /**
- * 查找 orgId 的层级
- *
- * @param result 三级结构集合
- * @param orgId 要查找的组织机构 ID
- * @return 1: 一级机构, 2: 二级机构, 3: 三级机构, -1: 未找到
- */
- public static int findOrgLevel(Map<String, Map<String, List<String>>> result, String orgId) {
- // 遍历一级机构
- for (Map.Entry<String, Map<String, List<String>>> entry : result.entrySet()) {
- // 如果 orgId 是一级机构
- if (entry.getKey().equals(orgId)) {
- return 1;
- }
- // 遍历二级机构
- for (Map.Entry<String, List<String>> subEntry : entry.getValue().entrySet()) {
- // 如果 orgId 是二级机构
- if (subEntry.getKey().equals(orgId)) {
- return 2;
- }
- // 遍历三级机构
- for (String level3 : subEntry.getValue()) {
- // 如果 orgId 是三级机构
- if (level3.equals(orgId)) {
- return 3;
- }
- }
- }
- }
- // 未找到
- return -1;
- }
- //TODO 自来水:拆分配置集合
- public Map<String,Map<String,List<String>>> getWaterWorks()throws Exception{
- Map<String, Map<String, List<String>>> result = new HashMap<>();
- //
- // Properties properties = new Properties();
- // try (InputStream inputStream = WaterCollecationController.class.getClassLoader().getResourceAsStream("application.properties");
- // InputStreamReader reader = new InputStreamReader(inputStream, Charset.forName("GBK"))) {
- // // 2. 使用 InputStreamReader 加载属性文件
- // properties.load(reader);
- // } catch (IOException e) {
- // e.printStackTrace();
- // System.out.println("加载配置文件失败!");
- // return null;
- // }
- // String waterworksNodes = properties.getProperty("waterworks.nodes");//关系字符串
- String waterworksNodes = "北碚水厂/北碚水厂二级低压,北碚水厂二级高压;井口水厂/井口水厂二级低压,井口水厂二级高压;丰收坝水厂/丰收坝水厂二级低压,丰收坝水厂二级高压,马鞍山加压站[马鞍山低压、马鞍山高压、双山东加压站],陈家坝加压站,九C加压站,金鳌山加压站;沙坪坝水厂/沙坪坝水厂二级高压;和尚山水厂/和尚山水厂二级高压;渝中区水厂/渝中区水厂二级低压,渝中区水厂二级高压";//关系字符串
- // 按分号分割每个组织机构
- String[] organizations = waterworksNodes.split(";");
- for (String org : organizations) {
- // 按斜杠分割一级和二级
- String[] parts = org.split("/");
- String level1 = parts[0]; // 一级机构
- String level2And3 = parts[1]; // 二级和三级机构
- // 按逗号分割二级机构
- String[] level2List = level2And3.split(",");
- Map<String, List<String>> level2Map = new HashMap<>();
- for (String level2 : level2List) {
- // 判断是否有三级机构(用[]包裹)
- if (level2.contains("[")) {
- // 提取二级机构名称
- String level2Name = level2.substring(0, level2.indexOf("["));
- // 提取三级机构
- String level3Str = level2.substring(level2.indexOf("[") + 1, level2.indexOf("]"));
- // 按顿号分割三级机构
- List<String> level3List = Arrays.asList(level3Str.split("、"));
- level2Map.put(level2Name, level3List);
- } else {
- // 没有三级机构,直接放入二级机构
- level2Map.put(level2, new ArrayList<>());
- }
- }
- // 将一级机构和对应的二级机构放入结果集合
- result.put(level1, level2Map);
- }
- return result;
- }
- public Map<String,String> getWaterZoneIds()throws Exception{
- Map<String,String> workZonIds = new HashMap<>();
- // InputStream inputStream = getConfigStream("application.properties");
- // Properties properties = new Properties();
- // properties.load(inputStream);
- // String waterworksZoneIds = properties.getProperty("waterworks.zonids");//关系字符串
- String waterworksZoneIds = "北碚水厂,UZD299F12944DC10957HJ;北碚水厂二级低压,UZD299F12B080010A75UD;北碚水厂二级高压,UZD2ADE9DCE62C00560KE;井口水厂,UZD299F12DF5241082772;井口水厂二级低压,UZD2ADE9F04BC800291E4;井口水厂二级高压,UZD2ADE9F15E7C00043IE;丰收坝水厂,UZD299F1301D04107668V;丰收坝水厂二级低压,UZD2ADE9F246FC00472W0;丰收坝水厂二级高压,UZD2ADE9F3701800886FI;马鞍山加压站,UZD2AAD4D9C3AC00467FC;马鞍山低压,UZD2B3F3332AD000432ZL;马鞍山高压,UZD2B3F3345C7400531LY;双山东加压站,UZD2AAD4DC336800067KM;陈家坝加压站,UZD2AAD4DA986000249L4;九C加压站,UZD2AAD4DEF06C0063AT2;金鳌山加压站,UZD2AAD4DB6D3C00837DP;沙坪坝水厂,UZD299F133DE5C1066A5L;沙坪坝水厂二级高压,UZD2ADEA02CD6C00226NO;和尚山水厂,UZD299F1389E6010476AV;和尚山水厂二级高压,UZD2ADEA0374BC002A9YC;渝中区水厂,UZD299F139CB2410181HP;渝中区水厂二级低压,UZD2ADEA05F50C00945JK;渝中区水厂二级高压,UZD2ADEA06901C006A3PR";//关系字符串
- // 按分号分割键值对
- String[] keyValuePairs = waterworksZoneIds.split(";");
- // 遍历键值对
- for (String pair : keyValuePairs) {
- // 按逗号分割键和值
- String[] keyValue = pair.split(",");
- if (keyValue.length == 2) {
- workZonIds.put(keyValue[0], keyValue[1]);
- }
- }
- return workZonIds;
- }
- /**
- * @Author Lx
- * @Description //TODO 获取实时数据曲线
- * @Date 14:49 2025/4/24
- * @Param
- * @return
- **/
- @PostMapping(value = ApiURI.URI_WATER_ZILAISHUI_REAL_HOUR)
- public ResponseRes realHourData(HttpServletRequest request
- , @RequestHeader(value= ApiURI.HEADER_CLIENT_TYPE, required=false) String strClientType
- , @RequestHeader(value= ApiURI.HEADER_USER_AGENT, required=false) String strUserAgent) throws Exception{
- final String URI_PATH = request.getRequestURI();
- final String strPlatform = CommTool.getPlatformByAgent(strClientType, strUserAgent);
- final String strUserId = (String)request.getAttribute(TokenAuthenticationService.HEADER_USERID);
- JPRealHourWater oJsonParam = FastJsonUtil.fromJSONByGson(HttpTool.getJsonBodyStr(request), JPRealHourWater.class);
- if (oJsonParam == null
- || !oJsonParam.checkValid()){
- throw new SelfException(ResponseCode.STATUS_ERROR_JSON_FORMAT.toStrCode()
- , String.format(ApiURI.EXCEPTION_FORMAT
- , strPlatform
- , URI_PATH
- , ResponseCode.STATUS_ERROR_JSON_FORMAT.toStrMsg()));
- }
- long llReqBefore = System.currentTimeMillis();
- String strRunSeq = String.format("%d-%d", llReqBefore, mSeqNotify.incrementAndGet());
- ResponseRes<String> resResult = new ResponseRes<String>();
- resResult.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
- resResult.setResmsg(MSG_SUCCESS);
- resResult.setResdata("");
- try {
- ResponseRes oRes = KprAimWaterCollecationBizFun.selectRealHourWaterList(oJsonParam);
- if (oRes != null && ResponseCode.RESULT_NORMAL.toStrCode().equals(oRes.getRescode())) {
- resResult.setResdata(FastJsonUtil.toJSON(oRes.getResdata()));
- } else {
- resResult.setRescode(ResponseCode.RESULT_BAD.toStrCode());
- resResult.setResmsg(MSG_FAILED);
- resResult.setResdata("");
- }
- resResult.setTimestamp(System.currentTimeMillis());
- LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, LogFlagBusiType.BUSI_INTERNAL.toStrValue(), mStrClassName, strUserId
- , String.format("%s:%s seq:{%s} rescode:{%s} resmsg:{%s} time:{%d ms} end<===="
- , strPlatform
- , URI_PATH
- , strRunSeq
- , resResult.getRescode()
- , resResult.getResmsg()
- , resResult.getTimestamp() - llReqBefore));
- return resResult;
- }catch(Exception ex){
- resResult.setRescode(ResponseCode.RESULT_BAD.toStrCode());
- resResult.setResmsg(MSG_FAILED+ex.getLocalizedMessage());
- resResult.setResdata("");
- return resResult;
- }
- }
- @PostMapping(value = ApiURI.URI_WATER_ZILAISHUI_HOUR)
- public ResponseRes hourData(HttpServletRequest request
- , @RequestHeader(value= ApiURI.HEADER_CLIENT_TYPE, required=false) String strClientType
- , @RequestHeader(value= ApiURI.HEADER_USER_AGENT, required=false) String strUserAgent) throws Exception{
- final String URI_PATH = request.getRequestURI();
- final String strPlatform = CommTool.getPlatformByAgent(strClientType, strUserAgent);
- final String strUserId = (String)request.getAttribute(TokenAuthenticationService.HEADER_USERID);
- JPTbMHourWater oJsonParam = FastJsonUtil.fromJSONByGson(HttpTool.getJsonBodyStr(request), JPTbMHourWater.class);
- if (oJsonParam == null
- || !oJsonParam.checkValid()){
- throw new SelfException(ResponseCode.STATUS_ERROR_JSON_FORMAT.toStrCode()
- , String.format(ApiURI.EXCEPTION_FORMAT
- , strPlatform
- , URI_PATH
- , ResponseCode.STATUS_ERROR_JSON_FORMAT.toStrMsg()));
- }
- long llReqBefore = System.currentTimeMillis();
- String strRunSeq = String.format("%d-%d", llReqBefore, mSeqNotify.incrementAndGet());
- ResponseRes<String> resResult = new ResponseRes<String>();
- resResult.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
- resResult.setResmsg(MSG_SUCCESS);
- resResult.setResdata("");
- try {
- // resResult.setResdata(waterZILAISHUIDao.getCount("WHERE TAG_CODE = 'SPB.SSWD.total_flow1' and QCQUISITION_TIME >= to_date('2023-01-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss')").toString());
- LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, LogFlagBusiType.BUSI_INTERNAL.toStrValue(), mStrClassName, strUserId
- , "0000");
- ResponseRes oRes = new ResponseRes();
- LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, LogFlagBusiType.BUSI_INTERNAL.toStrValue(), mStrClassName, strUserId
- , KprAimWaterCollecationBizFun.databaseName);
- LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, LogFlagBusiType.BUSI_INTERNAL.toStrValue(), mStrClassName, strUserId
- , String.valueOf("water_volume_prediction".equals(KprAimWaterCollecationBizFun.databaseName)));
- if ("water_volume_prediction".equals(KprAimWaterCollecationBizFun.databaseName)) {
- LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, LogFlagBusiType.BUSI_INTERNAL.toStrValue(), mStrClassName, strUserId
- , "1111");
- //转成集合,最多三级
- // 最终的三级结构集合
- Map<String, Map<String, List<String>>> result = getWaterWorks();
- Map<String, String> workZonIds = getWaterZoneIds();
- if (!MapUtils.isEmpty(result) && !MapUtils.isEmpty(workZonIds)) {
- int level = findOrgLevel(result, KprAimWaterCollecationBizFun.findOrgNameByOrgId(workZonIds, oJsonParam.getOrgId()).get().toString());
- oRes = KprAimWaterCollecationBizFun.selectTbHourWaterList(oJsonParam, level, result, workZonIds);
- }
- } else {
- oRes = KprAimWaterCollecationBizFun.selectTbHourWaterList(oJsonParam, null, null, null);
- }
- if (oRes != null && ResponseCode.RESULT_NORMAL.toStrCode().equals(oRes.getRescode())) {
- resResult.setResdata(FastJsonUtil.toJSON(oRes.getResdata()));
- } else {
- resResult.setRescode(ResponseCode.RESULT_BAD.toStrCode());
- resResult.setResmsg(MSG_FAILED);
- resResult.setResdata("");
- }
- resResult.setTimestamp(System.currentTimeMillis());
- LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, LogFlagBusiType.BUSI_INTERNAL.toStrValue(), mStrClassName, strUserId
- , String.format("%s:%s seq:{%s} rescode:{%s} resmsg:{%s} time:{%d ms} end<===="
- , strPlatform
- , URI_PATH
- , strRunSeq
- , resResult.getRescode()
- , resResult.getResmsg()
- , resResult.getTimestamp() - llReqBefore));
- return resResult;
- }catch(Exception ex){
- resResult.setRescode(ResponseCode.RESULT_BAD.toStrCode());
- resResult.setResmsg(MSG_FAILED+ex.getLocalizedMessage());
- resResult.setResdata("");
- return resResult;
- }
- }
- //取水分组类型
- @Value("${in.sub.type}")
- private String inSubType;
- //取水分组类型
- @Value("${out.sub.type}")
- private String outSubType;
- /**
- * @Author Lx
- * @Description //TODO 小时泵房取水能耗
- * @Date 17:02 2024/5/28
- * @Param
- * @return
- **/
- @PostMapping(value = ApiURI.URI_WATER_ZILAISHUI_HOUR_PUMP_IN)
- public ResponseRes hourPumpInData(HttpServletRequest request
- , @RequestHeader(value= ApiURI.HEADER_CLIENT_TYPE, required=false) String strClientType
- , @RequestHeader(value= ApiURI.HEADER_USER_AGENT, required=false) String strUserAgent) throws Exception{
- final String URI_PATH = request.getRequestURI();
- final String strPlatform = CommTool.getPlatformByAgent(strClientType, strUserAgent);
- final String strUserId = (String)request.getAttribute(TokenAuthenticationService.HEADER_USERID);
- JPTbMHourWater oJsonParam = FastJsonUtil.fromJSONByGson(HttpTool.getJsonBodyStr(request), JPTbMHourWater.class);
- if (oJsonParam == null
- || !oJsonParam.checkValid()){
- throw new SelfException(ResponseCode.STATUS_ERROR_JSON_FORMAT.toStrCode()
- , String.format(ApiURI.EXCEPTION_FORMAT
- , strPlatform
- , URI_PATH
- , ResponseCode.STATUS_ERROR_JSON_FORMAT.toStrMsg()));
- }
- long llReqBefore = System.currentTimeMillis();
- String strRunSeq = String.format("%d-%d", llReqBefore, mSeqNotify.incrementAndGet());
- ResponseRes<String> resResult = new ResponseRes<String>();
- resResult.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
- resResult.setResmsg(MSG_SUCCESS);
- resResult.setResdata("");
- ResponseRes oRes = KprAimWaterCollecationBizFun.selectTbMHourwaterWaterwithdrawals(oJsonParam,inSubType);
- if(oRes!=null&&ResponseCode.RESULT_NORMAL.toStrCode().equals(oRes.getRescode())) {
- resResult.setResdata(FastJsonUtil.toJSON(oRes.getResdata()));
- }else{
- resResult.setRescode(ResponseCode.RESULT_BAD.toStrCode());
- resResult.setResmsg(MSG_FAILED);
- resResult.setResdata("");
- }
- resResult.setTimestamp(System.currentTimeMillis());
- LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, LogFlagBusiType.BUSI_INTERNAL.toStrValue(), mStrClassName, strUserId
- ,String.format("%s:%s seq:{%s} rescode:{%s} resmsg:{%s} time:{%d ms} end<===="
- ,strPlatform
- ,URI_PATH
- ,strRunSeq
- ,resResult.getRescode()
- ,resResult.getResmsg()
- ,resResult.getTimestamp()-llReqBefore));
- return resResult;
- }
- /**
- * @Author Lx
- * @Description //TODO 小时泵房供水能耗
- * @Date 17:02 2024/5/28
- * @Param
- * @return
- **/
- @PostMapping(value = ApiURI.URI_WATER_ZILAISHUI_HOUR_PUMP_OUT)
- public ResponseRes hourPumpOutData(HttpServletRequest request
- , @RequestHeader(value= ApiURI.HEADER_CLIENT_TYPE, required=false) String strClientType
- , @RequestHeader(value= ApiURI.HEADER_USER_AGENT, required=false) String strUserAgent) throws Exception{
- final String URI_PATH = request.getRequestURI();
- final String strPlatform = CommTool.getPlatformByAgent(strClientType, strUserAgent);
- final String strUserId = (String)request.getAttribute(TokenAuthenticationService.HEADER_USERID);
- JPTbMHourWater oJsonParam = FastJsonUtil.fromJSONByGson(HttpTool.getJsonBodyStr(request), JPTbMHourWater.class);
- if (oJsonParam == null
- || !oJsonParam.checkValid()){
- throw new SelfException(ResponseCode.STATUS_ERROR_JSON_FORMAT.toStrCode()
- , String.format(ApiURI.EXCEPTION_FORMAT
- , strPlatform
- , URI_PATH
- , ResponseCode.STATUS_ERROR_JSON_FORMAT.toStrMsg()));
- }
- long llReqBefore = System.currentTimeMillis();
- String strRunSeq = String.format("%d-%d", llReqBefore, mSeqNotify.incrementAndGet());
- ResponseRes<String> resResult = new ResponseRes<String>();
- resResult.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
- resResult.setResmsg(MSG_SUCCESS);
- resResult.setResdata("");
- ResponseRes oRes = new ResponseRes();
- try {
- if ("water_volume_prediction".equals(KprAimWaterCollecationBizFun.databaseName)) {
- LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, LogFlagBusiType.BUSI_INTERNAL.toStrValue(), mStrClassName, strUserId
- , "1111");
- //转成集合,最多三级
- // 最终的三级结构集合
- Map<String, Map<String, List<String>>> result = getWaterWorks();
- Map<String, String> workZonIds = getWaterZoneIds();
- if (!MapUtils.isEmpty(result) && !MapUtils.isEmpty(workZonIds)) {
- int level = findOrgLevel(result, KprAimWaterCollecationBizFun.findOrgNameByOrgId(workZonIds, oJsonParam.getOrgId()).get().toString());
- List<String> childList = new ArrayList<>();//要查询的组织机构名称集合
- List<String> childIdList = new ArrayList<>();//要查询的组织机构id集合
- if (level==1){
- //TODO 一级已经没有数据了(水厂), 查询一级的话则是将其下的供水数据相加
- //TODO 查询二级,及其二级带的三级
- Optional zoneNameOpt = KprAimWaterCollecationBizFun.findOrgNameByOrgId(workZonIds,oJsonParam.getOrgId());
- if(zoneNameOpt.isPresent()){
- String zoneName = zoneNameOpt.get().toString();
- Map<String, List<String>> childMap = result.get(zoneName);//二级
- Collection<List<String>> child2Map = childMap.values();//三级
- // 添加二级组织机构名称(childMap 的 keySet)
- childList.addAll(childMap.keySet());
- // 添加三级组织机构名称(child2Map 的所有 List<String>)
- for (List<String> child2List : child2Map) {
- childList.addAll(child2List);
- }
- }
- }else if(level==2){
- //TODO 如果是二级,就查询其自身,看看其下还有没有集合,有的话就查其下的所有集合,没有的话就查其自身
- Optional zoneNameOpt = KprAimWaterCollecationBizFun.findOrgNameByOrgId(workZonIds,oJsonParam.getOrgId());
- if(zoneNameOpt.isPresent()) {
- String zoneName = zoneNameOpt.get().toString();
- List<String> childMap = new ArrayList<>();//三级
- // 遍历第一级 Map
- for (Map.Entry<String, Map<String, List<String>>> entry : result.entrySet()) {
- Map<String, List<String>> nestedMap = entry.getValue();
- // 检查第二级键
- if (nestedMap.containsKey(zoneName)) {
- childMap = nestedMap.get(zoneName);
- }
- }
- if(childMap.size()>0) {
- // 添三级组织机构名称(childMap 的 keySet)
- childList.addAll(childMap);
- }else{
- childList.add(zoneName);
- }
- }
- }else if(level==3){
- LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, LogFlagBusiType.BUSI_INTERNAL.toStrValue(), mStrClassName, ""
- , "5555");
- //TODO 如果是三级,就查询其自身
- Optional zoneNameOpt = KprAimWaterCollecationBizFun.findOrgNameByOrgId(workZonIds,oJsonParam.getOrgId());
- if(zoneNameOpt.isPresent()) {
- String zoneName = zoneNameOpt.get().toString();
- childList.add(zoneName);
- }
- }
- // 结果集合,存储 childList 对应的组织机构 ID
- // 遍历 childList,从 workZonIds 中获取对应的 ID
- for (String orgName : childList) {
- String orgId = workZonIds.get(orgName);
- if (orgId != null) { // 避免空值
- childIdList.add(orgId);
- }
- }
- List<InPumpModel> resMap = new ArrayList<>();
- for (String id:childIdList) {
- JPTbMHourWater hourWater = new JPTbMHourWater();
- hourWater.setIsPage(oJsonParam.getIsPage());
- hourWater.setOrgId(id);
- hourWater.setLimit(oJsonParam.getLimit());
- hourWater.setOffset(oJsonParam.getOffset());
- hourWater.setQueryDate(oJsonParam.getQueryDate());
- hourWater.checkValid();
- ResponseRes obj = KprAimWaterCollecationBizFun.selectTbMHourwaterWatersupply(hourWater, outSubType);
- resMap.addAll((List<InPumpModel>)obj.getResdata());
- }
- oRes.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
- oRes.setResmsg(MSG_SUCCESS);
- oRes.setResdata(FastJsonUtil.toJSON(resMap));
- }
- } else {
- oRes.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
- oRes.setResmsg(MSG_SUCCESS);
- oRes = KprAimWaterCollecationBizFun.selectTbMHourwaterWatersupply(oJsonParam, outSubType);
- }
- }catch(Exception ex){
- ex.printStackTrace();
- }
- if(oRes!=null&&ResponseCode.RESULT_NORMAL.toStrCode().equals(oRes.getRescode())) {
- resResult.setResdata(FastJsonUtil.toJSON(oRes.getResdata()));
- }else{
- resResult.setRescode(ResponseCode.RESULT_BAD.toStrCode());
- resResult.setResmsg(MSG_FAILED);
- resResult.setResdata("");
- }
- resResult.setTimestamp(System.currentTimeMillis());
- LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, LogFlagBusiType.BUSI_INTERNAL.toStrValue(), mStrClassName, strUserId
- ,String.format("%s:%s seq:{%s} rescode:{%s} resmsg:{%s} time:{%d ms} end<===="
- ,strPlatform
- ,URI_PATH
- ,strRunSeq
- ,resResult.getRescode()
- ,resResult.getResmsg()
- ,resResult.getTimestamp()-llReqBefore));
- return resResult;
- }
- /**
- * TODO 水位预测相关
- */
- @PostMapping(value = ApiURI.URI_WATER_ZILAISHUI_HOUR_LEVEL)
- public ResponseRes hourlevelData(HttpServletRequest request
- , @RequestHeader(value= ApiURI.HEADER_CLIENT_TYPE, required=false) String strClientType
- , @RequestHeader(value= ApiURI.HEADER_USER_AGENT, required=false) String strUserAgent) throws Exception{
- final String URI_PATH = request.getRequestURI();
- final String strPlatform = CommTool.getPlatformByAgent(strClientType, strUserAgent);
- final String strUserId = (String)request.getAttribute(TokenAuthenticationService.HEADER_USERID);
- JPTbLevelHourWater oJsonParam = FastJsonUtil.fromJSONByGson(HttpTool.getJsonBodyStr(request), JPTbLevelHourWater.class);
- if (oJsonParam == null
- || !oJsonParam.checkValid()){
- throw new SelfException(ResponseCode.STATUS_ERROR_JSON_FORMAT.toStrCode()
- , String.format(ApiURI.EXCEPTION_FORMAT
- , strPlatform
- , URI_PATH
- , ResponseCode.STATUS_ERROR_JSON_FORMAT.toStrMsg()));
- }
- long llReqBefore = System.currentTimeMillis();
- String strRunSeq = String.format("%d-%d", llReqBefore, mSeqNotify.incrementAndGet());
- ResponseRes<String> resResult = new ResponseRes<String>();
- resResult.setRescode(ResponseCode.RESULT_NORMAL.toStrCode());
- resResult.setResmsg(MSG_SUCCESS);
- resResult.setResdata("");
- // resResult.setResdata(waterZILAISHUIDao.getCount("WHERE TAG_CODE = 'SPB.SSWD.total_flow1' and QCQUISITION_TIME >= to_date('2023-01-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss')").toString());
- ResponseRes oRes = KprAimWaterCollecationBizFun.selectTbHourLevelList(oJsonParam);
- if(oRes!=null&&ResponseCode.RESULT_NORMAL.toStrCode().equals(oRes.getRescode())) {
- resResult.setResdata(FastJsonUtil.toJSON(oRes.getResdata()));
- }else{
- resResult.setRescode(ResponseCode.RESULT_BAD.toStrCode());
- resResult.setResmsg(MSG_FAILED);
- resResult.setResdata("");
- }
- resResult.setTimestamp(System.currentTimeMillis());
- LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, LogFlagBusiType.BUSI_INTERNAL.toStrValue(), mStrClassName, strUserId
- ,String.format("%s:%s seq:{%s} rescode:{%s} resmsg:{%s} time:{%d ms} end<===="
- ,strPlatform
- ,URI_PATH
- ,strRunSeq
- ,resResult.getRescode()
- ,resResult.getResmsg()
- ,resResult.getTimestamp()-llReqBefore));
- return resResult;
- }
- }
|