HandleDataController.java 128 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214
  1. package com.slibra.web.controller.business;
  2. import cn.hutool.core.date.DateUtil;
  3. import cn.hutool.http.HttpRequest;
  4. import cn.hutool.http.HttpUtil;
  5. import cn.hutool.poi.excel.ExcelReader;
  6. import cn.hutool.poi.excel.ExcelUtil;
  7. import com.alibaba.fastjson2.JSON;
  8. import com.alibaba.fastjson2.JSONArray;
  9. import com.alibaba.fastjson2.JSONObject;
  10. import com.slibra.business.domain.*;
  11. import com.slibra.business.mapper.*;
  12. import com.slibra.business.res.ChartBasic;
  13. import com.slibra.business.service.ITXinyiForecastComparisonService;
  14. import com.slibra.common.DecimalUtils;
  15. import com.slibra.common.core.domain.TXinyiDaily;
  16. import com.slibra.common.core.controller.BaseController;
  17. import com.slibra.common.enums.BusinessEnum;
  18. import com.slibra.common.utils.DateUtils;
  19. import com.slibra.common.utils.StringUtils;
  20. import com.slibra.quartz.task.AsyncTask;
  21. import com.slibra.quartz.task.RyTask;
  22. import lombok.extern.slf4j.Slf4j;
  23. import org.apache.ibatis.session.ExecutorType;
  24. import org.apache.ibatis.session.SqlSession;
  25. import org.apache.ibatis.session.SqlSessionFactory;
  26. import org.springframework.beans.BeanUtils;
  27. import org.springframework.beans.factory.annotation.Autowired;
  28. import org.springframework.util.CollectionUtils;
  29. import org.springframework.web.bind.annotation.*;
  30. import java.io.File;
  31. import java.math.BigDecimal;
  32. import java.math.RoundingMode;
  33. import java.time.LocalDateTime;
  34. import java.time.format.DateTimeFormatter;
  35. import java.util.*;
  36. import static com.slibra.common.constant.MyConstants.*;
  37. import static com.slibra.common.constant.MyConstants.BigDecimal_100;
  38. import static com.slibra.common.enums.BusinessEnum.WarningCategoryEnum.*;
  39. /**
  40. * 参数配置 信息操作处理
  41. *
  42. *
  43. */
  44. @Slf4j
  45. @RestController
  46. @RequestMapping("/test")
  47. public class HandleDataController extends BaseController
  48. {
  49. @Autowired
  50. private TXinyiIndustryMapper xinyiIndustryMapper;
  51. @Autowired
  52. private TXinyiDailyMapper xinyiDailyMapper;
  53. @Autowired
  54. private TXinyiLaboratoryMapper xinyiLaboratoryMapper;
  55. @Autowired
  56. private TXinyiRobotMapper xinyiRobotMapper;
  57. @Autowired
  58. private TXinyiNormConfigMapper xinyiNormConfigMapper;
  59. @Autowired
  60. private TXinyiCalculateMapper xinyiCalculateMapper;
  61. @Autowired
  62. private TXinyiBigTableHourMapper tXinyiBigTableHourMapper;
  63. @Autowired
  64. private TXinyiBigTableDayMapper tXinyiBigTableDayMapper;
  65. @Autowired
  66. private TXinyiBigTableMonthMapper tXinyiBigTableMonthMapper;
  67. @Autowired
  68. private SqlSessionFactory sqlSessionFactory;
  69. @Autowired
  70. private RyTask ryTask;
  71. @Autowired
  72. private AsyncTask asyncTask;
  73. @Autowired
  74. private ITXinyiForecastComparisonService xinyiForecastComparisonService;
  75. public static final String[] queryTags = {"信义污水厂JS_COD_Value","信义污水厂JS_PH_Value","信义污水厂JS_SS_Value","信义污水厂JS_ZL_Value","信义污水厂JS_ZA_Value","信义污水厂JS_AD_Value","信义污水厂JS_T_Value","信义污水厂进水泵房液位","信义污水厂出水瞬时流量","信义污水厂升级出水COD","信义污水厂升级出水PH","信义污水厂升级出水SS","信义污水厂升级出水TN","信义污水厂升级出水TP","信义污水厂升级出水氨氮","信义污水厂AIT202_Value","信义污水厂AIT203_Value","信义污水厂AIT207_Value","信义污水厂AIT206_Value","信义污水厂AIT209_Value","信义污水厂AIT210_Value","信义污水厂进水TDS","信义污水厂FT101_Value","信义污水厂SWCHHYHLB1_R_Value","信义污水厂SWCHHYHLB2_R_Value","信义污水厂SWCHHYHLB3_R_Value","信义污水厂SWCHHYHLB4_R_Value","信义污水厂SWCHHYHLB5_R_Value","信义污水厂SWCHHYHLB6_R_Value","信义污水厂SWCWNHLB1_R_Value","信义污水厂SWCWNHLB2_R_Value","信义污水厂SWCWNHLB3_R_Value","信义污水厂SWCWNHLB4_R_Value","信义污水厂SWCWNHLB5_R_Value","信义污水厂GFJ1_R_Value","信义污水厂GFJ2_R_Value","信义污水厂GFJ3_R_Value","信义污水厂GFJ4_R_Value","信义污水厂GFJ5_R_Value","信义污水厂GFJ6_R_Value","信义污水厂GFJ1_KQLL_Value","信义污水厂GFJ2_KQLL_Value","信义污水厂GFJ3_KQLL_Value","信义污水厂GFJ4_KQLL_Value","信义污水厂GFJ5_KQLL_Value","信义污水厂GFJ6_KQLL_Value"};
  76. // public static final String[] predictorArr = {"出水COD", "出水SS", "出水总磷", "出水氨氮", "xsy1", "xsy2"};
  77. public static final String[] predictorArr = {"cs_cod", "cs_ss", "cs_tp", "cs_andan", "xsy1", "xsy2", "qyxsy1", "qyxsy2", "缺氧出水氨氮1", "缺氧出水氨氮2"};
  78. /**
  79. *手动处理水质报警
  80. */
  81. @GetMapping("/waterWarning")
  82. public String waterWarning(){
  83. log.info("进入了 手动触发水质报警的 操作");
  84. //获取配置表
  85. List<TXinyiNormConfig> tXinyiNormConfigs = this.xinyiNormConfigMapper.selectTXinyiNormConfigList(null);
  86. if(CollectionUtils.isEmpty(tXinyiNormConfigs))
  87. throw new RuntimeException("未查询到配置信息");
  88. TXinyiNormConfig normConfig = tXinyiNormConfigs.get(0);
  89. TXinyiIndustry tXinyiIndustry = this.xinyiIndustryMapper.selectTXinyiIndustryNewest();
  90. if(Objects.isNull(tXinyiIndustry))
  91. throw new RuntimeException("未查询到工业库信息");
  92. asyncTask.handleSZWarning(tXinyiIndustry, normConfig);
  93. return "success";
  94. }
  95. /**
  96. *手动处理生化报警
  97. */
  98. @GetMapping("/shWarning")
  99. public String shWarning(){
  100. log.info("进入了 手动处理生化报警 操作");
  101. //获取配置表
  102. List<TXinyiNormConfig> tXinyiNormConfigs = this.xinyiNormConfigMapper.selectTXinyiNormConfigList(null);
  103. if(CollectionUtils.isEmpty(tXinyiNormConfigs))
  104. throw new RuntimeException("未查询到配置信息");
  105. TXinyiNormConfig normConfig = tXinyiNormConfigs.get(0);
  106. TXinyiIndustry tXinyiIndustry = this.xinyiIndustryMapper.selectTXinyiIndustryNewest();
  107. if(Objects.isNull(tXinyiIndustry))
  108. throw new RuntimeException("未查询到工业库信息");
  109. List<TXinyiCalculate> tXinyiCalculates = xinyiCalculateMapper.selectTXinyiCalculateList(TXinyiCalculate.builder().testHour(tXinyiIndustry.getTestHour()).build());
  110. if (!CollectionUtils.isEmpty(tXinyiCalculates)) {
  111. TXinyiCalculate tXinyiCalculate = tXinyiCalculates.get(0);
  112. asyncTask.handleSHWarning(tXinyiIndustry, normConfig, tXinyiCalculate);
  113. }
  114. return "success";
  115. }
  116. /**
  117. *手动处理化验室报警
  118. */
  119. /*@GetMapping("/robotWarning")
  120. public String robotWarning(){
  121. log.info("进入了 手动触发化验室报警的 操作");
  122. asyncTask.handleRobotWarning(this.xinyiRobotMapper.selectNRobot(1));
  123. return "success";
  124. }*/
  125. /**
  126. *手动处理预测报警
  127. */
  128. @GetMapping("/forecastWarning")
  129. public String forecastWarning(){
  130. log.info("进入了 手动触发预测报警的 操作");
  131. //获取最新的6条工业科数据
  132. List<TXinyiIndustry> tXinyiIndustries6 = this.xinyiIndustryMapper.selectNIndustry(INT_6);
  133. List<TXinyiRobot> tXinyiRobots6 = this.xinyiRobotMapper.selectNRobot(INT_6);
  134. //2024年7月18日10:31:18 加个校验,只有从来没有数据的水厂才会进入下面的判断
  135. if(CollectionUtils.isEmpty(tXinyiIndustries6) || tXinyiIndustries6.size() < INT_6
  136. || CollectionUtils.isEmpty(tXinyiRobots6) || tXinyiRobots6.size() <INT_6){
  137. log.error("预测的时候,获取最新的6条工业数据或者化验数据不满足,任务终止,工业数据为{}\n化验数据为{}", JSON.toJSONString(tXinyiIndustries6), JSON.toJSONString(tXinyiRobots6));
  138. return "预测的时候,获取最新的6条工业数据或者化验数据不满足,任务终止";
  139. }
  140. //先处理xsy1 和 xsy2 合并成一个数据
  141. // this.predictorSpecial(tXinyiIndustries6, tXinyiRobots6);
  142. //2024年7月11日16:55:27 xsy1 和 xsy2 又不合并了。。。 再次分开处理
  143. for (int i = 0; i < predictorArr.length; i++) {
  144. String result = ryTask.getPredictor(predictorArr[i]);
  145. if(StringUtils.isBlank(result) || "error".equals(result)){
  146. log.info("预测数据返回结果不符合解析条件,返回结果为{}", result);
  147. continue;
  148. }
  149. JSONObject jsonObject = null;
  150. try {
  151. jsonObject = JSON.parseObject(result);
  152. } catch (Exception e) {
  153. log.error("[转JSON的时候]预测数据返回结果不符合解析条件,返回结果为{}", result);
  154. continue;
  155. }
  156. log.info("^^^^^^^^^^^^^预测接口转弯JSON对象后,原内容是{}", JSON.toJSONString(jsonObject));
  157. //2024年7月8日15:25:51 加个校验 因为各种奇葩返回。。 比如返回的结果是 "null"
  158. if(Objects.isNull(jsonObject)){
  159. log.error("[转JSON的时候]预测数据返回结果是null,不处里");
  160. continue;
  161. }
  162. String task = jsonObject.getString("task");
  163. String hour = jsonObject.getString("hour");
  164. String pred = jsonObject.getString("pred");
  165. String date = jsonObject.getString("date");
  166. if(StringUtils.isNotBlank(pred) && pred.contains(",")){
  167. String[] split = pred.split(",");
  168. if(split.length != 3){
  169. log.error("预测数据返回结果为{},长度不是3,无法正常解析", result);
  170. //因为部分预测还不支持 所以不需要
  171. // ryTask.handleXinYiWarningsYC(cscodBzz, split, cscodGkz, BusinessEnum.WarningCategoryEnum.CS_COD_YC.getCode(), hour, normConfig);
  172. continue;
  173. }
  174. //解析数据 处理报警 调研prompt 保存等
  175. this.handlePredictorWarning(split, hour, task, tXinyiIndustries6, tXinyiRobots6, date);
  176. }else {
  177. log.error("预测数据返回结果为{},无法正常解析", result);
  178. }
  179. }
  180. return "success";
  181. }
  182. @GetMapping("/dateAdd")
  183. public String dateAdd() {
  184. // 给定时间段的起始时间和结束时间
  185. LocalDateTime startTime = LocalDateTime.parse("2024-04-13T16:00:00");
  186. LocalDateTime endTime = LocalDateTime.parse("2024-04-13T17:00:00");
  187. /*LocalDateTime startTime = LocalDateTime.parse("2024-02-26T00:00:00");
  188. LocalDateTime endTime = LocalDateTime.parse("2024-02-27T00:00:00");*/
  189. // 每个小时的时间格式
  190. DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
  191. // 循环按小时分割
  192. LocalDateTime currentHour = startTime;
  193. while (currentHour.isBefore(endTime)) {
  194. String begin = currentHour.format(formatter);
  195. String end = currentHour.plusMinutes(10).format(formatter);
  196. // 输出当前小时的起始时间和结束时间
  197. System.out.println("起始时间:" + begin);
  198. System.out.println("结束时间:" + end);
  199. // 当前小时加一小时,作为下一个小时的起始时间
  200. currentHour = currentHour.plusMinutes(10);
  201. //每个小时查询一次数据
  202. HashMap<String, Object> req = new HashMap<>();
  203. req.put("tagNames", queryTags);
  204. req.put("startTime", begin);
  205. req.put("endTime", end);
  206. req.put("recordNumbers", 100000);
  207. String body = HttpRequest.post(INDUSTRY_INTERFACE_ADDR).header("Authorization", "c2E6c2E=").header("clientName", "hongshan").body(JSON.toJSONString(req)).execute().body();
  208. // System.out.println("body = " + body);
  209. List<HashMap<String, String>> list = new ArrayList<>();
  210. //行转列数据处理
  211. for (String queryTag : queryTags) {
  212. JSONArray array = JSON.parseObject(body).getJSONArray(queryTag);
  213. //特殊数据处理一
  214. if(Objects.isNull(array) || array.isEmpty()){
  215. System.out.println(queryTag + "查询到了空的数据,跳过本次循环");
  216. continue;
  217. }
  218. int size = array.size();
  219. //特殊数据处理二
  220. if("0".equals(array.get(1) + "")){
  221. System.out.println(queryTag + "查询到了数据,但是数据集合只有一条,且都是0");
  222. continue;
  223. }
  224. //结合至少62个数据才满足条件(有可能获取不到)
  225. /*if(size < 62){
  226. System.out.println(queryTag + "查询到了不符合条件的数据,跳过本次循环");
  227. continue;
  228. }*/
  229. //存放的数据集
  230. //利用map去重
  231. HashMap<String, String> map = new LinkedHashMap<>();
  232. for (int i = 2; i < size; i++) {
  233. // System.out.println(i + "" + array.get(i));
  234. JSONArray oneRecord = JSON.parseArray(JSON.toJSONString(array.get(i)));
  235. //处理为空或者为0的数据
  236. Object timeStampValue = oneRecord.get(2);
  237. if(Objects.isNull(timeStampValue) || "0".equals(timeStampValue + ""))
  238. continue;
  239. BigDecimal value = Objects.isNull(oneRecord.get(0)) ? null : new BigDecimal(oneRecord.get(0) + "");
  240. long timestamp = (long) timeStampValue;
  241. String format = DateUtil.format(new Date(timestamp), DateUtils.YYYYMMDDHH_TS);
  242. map.put(format, queryTag + "-" + value);
  243. }
  244. list.add(map);
  245. }
  246. // System.out.println("list = " + list);
  247. //先构造对象(list中任意一个map遍历的key个数) 因为合并完并不是1分钟60条,参考上面筛选区间,有时候会有几个值获取不到
  248. /*HashMap<String, String> oneRow = list.get(0);
  249. Set<String> set = oneRow.keySet();
  250. List<Industry> result = new ArrayList<>(set.size());
  251. set.forEach(s -> {
  252. Industry industry = new Industry();
  253. industry.setTestTime(s);
  254. result.add(industry);
  255. });*/
  256. Set<String> recordTimeSet = new HashSet<>();
  257. Map<String, TXinyiIndustry> recordMap = new HashMap<>();
  258. for (int i = 0; i < list.size(); i++) {
  259. HashMap<String, String> map = list.get(i);
  260. int finalJ = i;
  261. map.forEach((k, v) ->{
  262. TXinyiIndustry industry = null;
  263. if(!recordTimeSet.contains(k)){//第一次
  264. industry = new TXinyiIndustry();
  265. recordTimeSet.add(k);
  266. recordMap.put(k, industry);
  267. }else{
  268. industry = recordMap.get(k);
  269. }
  270. industry.setTestTime(k);
  271. //2024年4月15日11:19:52 额外增加2个字段
  272. industry.setTestDate(k.substring(0,10));
  273. industry.setTestHour(k.substring(0,13));
  274. //解析值
  275. String[] split = v.split("-");
  276. String type = split[0];
  277. BigDecimal value = new BigDecimal(split[1]);
  278. if ("信义污水厂JS_COD_Value".equals(type)) {
  279. industry.setJsCod(value);
  280. } else if ("信义污水厂JS_PH_Value".equals(type)) {
  281. industry.setJsPh(value);
  282. } else if ("信义污水厂JS_SS_Value".equals(type)) {
  283. industry.setJsSs(value);
  284. } else if ("信义污水厂JS_ZL_Value".equals(type)) {
  285. industry.setJsTp(value);
  286. } else if ("信义污水厂JS_ZA_Value".equals(type)) {
  287. industry.setJsTn(value);
  288. } else if ("信义污水厂JS_AD_Value".equals(type)) {
  289. industry.setJsNh3(value);
  290. } else if ("信义污水厂JS_T_Value".equals(type)) {
  291. industry.setJsSwPh(value);
  292. } else if ("信义污水厂进水泵房液位".equals(type)) {
  293. industry.setJsBfyw(value);
  294. } else if ("信义污水厂出水瞬时流量".equals(type)) {
  295. industry.setCsSlqc(value);
  296. } else if ("信义污水厂升级出水COD".equals(type)) {
  297. industry.setCsCod(value);
  298. } else if ("信义污水厂升级出水PH".equals(type)) {
  299. industry.setCsPh(value);
  300. } else if ("信义污水厂升级出水SS".equals(type)) {
  301. industry.setCsSs(value);
  302. } else if ("信义污水厂升级出水TN".equals(type)) {
  303. industry.setCsTn(value);
  304. } else if ("信义污水厂升级出水TP".equals(type)) {
  305. industry.setCsTp(value);
  306. } else if ("信义污水厂升级出水氨氮".equals(type)) {
  307. industry.setCsNh3(value);
  308. } else if ("信义污水厂AIT202_Value".equals(type)) {
  309. industry.setOneHyzdDo(value);
  310. } else if ("信义污水厂AIT203_Value".equals(type)) {
  311. industry.setOneHymdDo(value);
  312. } else if ("信义污水厂AIT207_Value".equals(type)) {
  313. industry.setTwoHyzdDo(value);
  314. } else if ("信义污水厂AIT206_Value".equals(type)) {
  315. industry.setTwoHymdDo(value);
  316. } else if ("信义污水厂AIT209_Value".equals(type)) {
  317. industry.setOneMlss(value);
  318. } else if ("信义污水厂AIT210_Value".equals(type)) {
  319. industry.setTwoMlss(value);
  320. } else if ("信义污水厂进水TDS".equals(type)) {
  321. industry.setJsTds(value);
  322. } else if ("信义污水厂FT101_Value".equals(type)) {
  323. industry.setJsSlq(value);
  324. } else if ("信义污水厂SWCHHYHLB1_R_Value".equals(type)) {
  325. industry.setNHlbOneGp(value);
  326. } else if ("信义污水厂SWCHHYHLB2_R_Value".equals(type)) {
  327. industry.setNHlbTwoGp(value);
  328. } else if ("信义污水厂SWCHHYHLB3_R_Value".equals(type)) {
  329. industry.setNHlbThreeGp(value);
  330. } else if ("信义污水厂SWCHHYHLB4_R_Value".equals(type)) {
  331. industry.setNHlbFourGp(value);
  332. } else if ("信义污水厂SWCHHYHLB5_R_Value".equals(type)) {
  333. industry.setNhlBFiveGp(value);
  334. } else if ("信义污水厂SWCHHYHLB6_R_Value".equals(type)) {
  335. industry.setNHlbSixGp(value);
  336. } else if ("信义污水厂SWCWNHLB1_R_Value".equals(type)) {
  337. industry.setWHlbOneGp(value);
  338. } else if ("信义污水厂SWCWNHLB2_R_Value".equals(type)) {
  339. industry.setWHlbTwoGp(value);
  340. } else if ("信义污水厂SWCWNHLB3_R_Value".equals(type)) {
  341. industry.setWHlbThreeGp(value);
  342. } else if ("信义污水厂SWCWNHLB4_R_Value".equals(type)) {
  343. industry.setWHlbFourGp(value);
  344. } else if ("信义污水厂SWCWNHLB5_R_Value".equals(type)) {
  345. industry.setWHlbFiveGp(value);
  346. } else if ("信义污水厂GFJ1_R_Value".equals(type)) {
  347. industry.setFjOne(value);
  348. } else if ("信义污水厂GFJ2_R_Value".equals(type)) {
  349. industry.setFjTwo(value);
  350. } else if ("信义污水厂GFJ3_R_Value".equals(type)) {
  351. industry.setFjThree(value);
  352. } else if ("信义污水厂GFJ4_R_Value".equals(type)) {
  353. industry.setFjFour(value);
  354. } else if ("信义污水厂GFJ5_R_Value".equals(type)) {
  355. industry.setFjFive(value);
  356. } else if ("信义污水厂GFJ6_R_Value".equals(type)) {
  357. industry.setFjSix(value);
  358. } else if ("信义污水厂GFJ1_KQLL_Value".equals(type)) {
  359. industry.setKqllOne(value);
  360. } else if ("信义污水厂GFJ2_KQLL_Value".equals(type)) {
  361. industry.setKqllTwo(value);
  362. } else if ("信义污水厂GFJ3_KQLL_Value".equals(type)) {
  363. industry.setKqllThree(value);
  364. } else if ("信义污水厂GFJ4_KQLL_Value".equals(type)) {
  365. industry.setKqllFour(value);
  366. } else if ("信义污水厂GFJ5_KQLL_Value".equals(type)) {
  367. industry.setKqllFive(value);
  368. } else if ("信义污水厂GFJ6_KQLL_Value".equals(type)) {
  369. industry.setKqllSix(value);
  370. }else if ("信义污水厂实际碳源加药量".equals(type)) {
  371. industry.setSJTYJLY(value);
  372. }else if ("信义污水厂除磷加药瞬时流量".equals(type)) {
  373. industry.setCLJYSSLL(value);
  374. }
  375. //只有最后一次才执行数据库添加
  376. if(finalJ == list.size()-1){
  377. //插入数据库
  378. xinyiIndustryMapper.insertTXinyiIndustry(industry);
  379. }
  380. });
  381. }
  382. }
  383. return "ok";
  384. }
  385. // @GetMapping("/dateUpdateCL")
  386. // public String dateUpdateCL() {
  387. // String fileName = "除磷加药瞬时流量";
  388. // //输入目录
  389. // ExcelReader reader = ExcelUtil.getReader("C:\\Users\\10109\\Desktop\\新程序\\" + fileName + ".xls");
  390. // //解析数据
  391. // List<List<Object>> readAll = reader.read();
  392. // if(!CollectionUtils.isEmpty(readAll)){
  393. // for (List<Object> objects : readAll) {
  394. // String time = "20" + objects.get(0) + " " + objects.get(1).toString().substring(0, 5);
  395. // System.out.println("time = " + time);
  396. // TXinyiIndustry uniqueTXinyiIndustry = this.xinyiIndustryMapper.getUniqueTXinyiIndustry(time);
  397. // if(!Objects.isNull(uniqueTXinyiIndustry)){
  398. // System.out.println(objects.get(2));
  399. // BigDecimal CLJYSSLL = Objects.isNull(objects.get(2)) ? null : new BigDecimal(String.valueOf(objects.get(2)));
  400. // uniqueTXinyiIndustry.setCLJYSSLL(CLJYSSLL);
  401. // this.xinyiIndustryMapper.updateTXinyiIndustry(uniqueTXinyiIndustry);
  402. // }
  403. // }
  404. // }
  405. // return "ok";
  406. // }
  407. //
  408. //
  409. // @GetMapping("/dateUpdateSJTY")
  410. // public String dateUpdateSJTY() {
  411. // String fileName = "信义污水厂实际碳源加药量";
  412. // //输入目录
  413. // ExcelReader reader = ExcelUtil.getReader("C:\\Users\\10109\\Desktop\\新程序\\" + fileName + ".xls");
  414. // //解析数据
  415. // List<List<Object>> readAll = reader.read();
  416. // if(!CollectionUtils.isEmpty(readAll)){
  417. // int i = 0;
  418. // for (List<Object> objects : readAll) {
  419. // String format = "";
  420. // if(objects.get(0) instanceof String){
  421. // System.out.println("----------是字符串类型的");
  422. // String time = ((String) objects.get(0));
  423. // System.out.println("time = " + time);
  424. // format = time.replaceAll("-", "/").substring(0, 16);
  425. // }else if (objects.get(0) instanceof cn.hutool.core.date.DateTime){
  426. // System.out.println("++++++++++是日期类型的");
  427. // cn.hutool.core.date.DateTime time = (DateTime) objects.get(0);
  428. // System.out.println("time = " + time);
  429. // format = DateUtil.format(time, DateUtils.YYYYMMDDHHMM_TS);
  430. // System.out.println("format = " + format);
  431. // }else {
  432. // System.out.println(JSON.toJSONString(objects));
  433. // format = "";
  434. // i++;
  435. // }
  436. // TXinyiIndustry uniqueTXinyiIndustry = this.xinyiIndustryMapper.getUniqueTXinyiIndustry(format);
  437. // if(!Objects.isNull(uniqueTXinyiIndustry)){
  438. // BigDecimal SJTYJLY = Objects.isNull(objects.get(1)) ? null : new BigDecimal(String.valueOf(objects.get(1)));
  439. // uniqueTXinyiIndustry.setSJTYJLY(SJTYJLY);
  440. // this.xinyiIndustryMapper.updateTXinyiIndustry(uniqueTXinyiIndustry);
  441. // }
  442. // }
  443. // System.out.println("i =" + i);
  444. // }
  445. // return "ok";
  446. // }
  447. //
  448. // //下面是新的 将一个小时的数据 更新到一个小时之内的所有的数据中
  449. // @GetMapping("/dateUpdateCLMinute")
  450. // public String dateUpdateCLMinute() {
  451. // String fileName = "除磷加药瞬时流量";
  452. // //输入目录
  453. // ExcelReader reader = ExcelUtil.getReader("C:\\Users\\10109\\Desktop\\新程序\\" + fileName + ".xls");
  454. // //解析数据
  455. // List<List<Object>> readAll = reader.read();
  456. // int i = 0;
  457. // if(!CollectionUtils.isEmpty(readAll)){
  458. // for (List<Object> objects : readAll) {
  459. // if(!Objects.isNull(objects.get(0)) && !Objects.isNull(objects.get(1))){
  460. // String beginTime = "20" + objects.get(0) + " " + objects.get(1).toString().substring(0, 5);
  461. // System.out.println("beginTime = " + beginTime);
  462. // String endTime = "20" + objects.get(0) + " " + objects.get(1).toString().substring(0, 3) + "59";
  463. // System.out.println("endTime = " + endTime);
  464. // //更新数据
  465. // System.out.println(objects.get(2));
  466. // //有特殊情况
  467. // if(Objects.isNull(objects.get(2)) || objects.get(2).toString().contains("-")){
  468. // System.out.println("存在特殊的情况,值包含-,不做更新");
  469. // i++;
  470. // }else{
  471. // this.xinyiIndustryMapper.updateTXinyiIndustryCLByBetweenTime(beginTime, endTime, new BigDecimal(String.valueOf(objects.get(2))));
  472. // }
  473. // }
  474. // }
  475. // }
  476. // System.out.println("i = " + i);
  477. // return "ok";
  478. // }
  479. //
  480. //
  481. // @GetMapping("/dateUpdateSJTYMinute")
  482. // public String dateUpdateSJTYMinute() {
  483. // String fileName = "信义污水厂实际碳源加药量";
  484. // //输入目录
  485. // ExcelReader reader = ExcelUtil.getReader("C:\\Users\\10109\\Desktop\\新程序\\" + fileName + ".xls");
  486. // //解析数据
  487. // List<List<Object>> readAll = reader.read();
  488. // if(!CollectionUtils.isEmpty(readAll)){
  489. // int i = 0;
  490. // for (List<Object> objects : readAll) {
  491. // String beginTime = "";
  492. // if(objects.get(0) instanceof String){
  493. // System.out.println("----------是字符串类型的");
  494. // String time = ((String) objects.get(0));
  495. //// System.out.println("time = " + time);
  496. // beginTime = time.replaceAll("-", "/").substring(0, 16);
  497. // }else if (objects.get(0) instanceof cn.hutool.core.date.DateTime){
  498. // System.out.println("++++++++++是日期类型的");
  499. // cn.hutool.core.date.DateTime time = (DateTime) objects.get(0);
  500. //// System.out.println("time = " + time);
  501. // beginTime = DateUtil.format(time, DateUtils.YYYYMMDDHHMM_TS);
  502. // System.out.println("beginTime = " + beginTime);
  503. // }else {
  504. // System.out.println(JSON.toJSONString(objects));
  505. // beginTime = "";
  506. // i++;
  507. // }
  508. // //endTime
  509. // String endTime = beginTime.substring(0, 14) + "59";
  510. // System.out.println("endTime = " + endTime);
  511. // //更新数据
  512. // BigDecimal sjtyjly = Objects.isNull(objects.get(1)) ? null : new BigDecimal(String.valueOf(objects.get(1)));
  513. // this.xinyiIndustryMapper.updateTXinyiIndustrySJByBetweenTime(beginTime, endTime, sjtyjly);
  514. // }
  515. // System.out.println("i =" + i);
  516. // }
  517. // return "ok";
  518. // }
  519. // @GetMapping("/dateUpdateSJTYMinute")
  520. // public String dateUpdateSJTYMinute() {
  521. // log.info("进入了手动处理两个值的操作~~~~~~~~");
  522. // File file = new File("/home/slibra/历史数据");
  523. // if(file.isDirectory()){
  524. // for (File listFile : file.listFiles()) {
  525. // // 输入目录
  526. // ExcelReader reader = ExcelUtil.getReader(listFile);
  527. // List<List<Object>> readAll = reader.read();
  528. // if(!CollectionUtils.isEmpty(readAll)){
  529. // for (int i = 3; i < readAll.size(); i++) {
  530. // //解析数据
  531. // List<Object> objects = readAll.get(i);
  532. // String time = "20" + objects.get(0).toString().replaceAll(" ", "") + " " + objects.get(1).toString().replaceAll(" ", "").substring(0, 5);
  533. //// System.out.println("time = " + time);
  534. // TXinyiIndustry uniqueTXinyiIndustry = this.xinyiIndustryMapper.getUniqueTXinyiIndustry(time);
  535. // if(!Objects.isNull(uniqueTXinyiIndustry)){
  536. // TXinyiIndustry updateBean = new TXinyiIndustry();
  537. // updateBean.setID(uniqueTXinyiIndustry.getID());
  538. // BigDecimal CLJYSSLL = Objects.isNull(objects.get(2)) || String.valueOf(objects.get(2)).contains("-") ? null : new BigDecimal(String.valueOf(objects.get(2)));
  539. // updateBean.setCLJYSSLL(CLJYSSLL);
  540. // BigDecimal SJTYJLY = Objects.isNull(objects.get(3)) || String.valueOf(objects.get(3)).contains("-") ? null : new BigDecimal(String.valueOf(objects.get(3)));
  541. // updateBean.setSJTYJLY(SJTYJLY);
  542. // //如果两个都不为空再更新
  543. // if(!Objects.isNull(CLJYSSLL) || !Objects.isNull(SJTYJLY)){
  544. // this.xinyiIndustryMapper.updateTXinyiIndustry(updateBean);
  545. // }else{
  546. // log.error("要更新的两个字段全部为空--------");
  547. // }
  548. // }
  549. // }
  550. // }
  551. // }
  552. // }
  553. // return "ok";
  554. // }
  555. /**
  556. *
  557. * 从Excel读取数据 将新增的列数据更新到新的日报字段中
  558. * @return
  559. */
  560. @GetMapping("/dailyAddDataByExcel")
  561. public String dailyAddDataByExcel() {
  562. log.info("从Excel读取数据 将新增的列数据更新到新的日报字段中~~~~~~~~");
  563. File file = new File("/home/slibra/绝干泥量.xlsx");
  564. // File file = new File("C:\\Users\\10109\\Documents\\WeChat Files\\mz1010995810\\FileStorage\\File\\2024-05\\绝干泥量.xlsx");
  565. // 输入目录
  566. ExcelReader reader = ExcelUtil.getReader(file);
  567. List<List<Object>> readAll = reader.read();
  568. // log.info("Excel解析的结果为{}", JSON.toJSONString(readAll));
  569. if(!CollectionUtils.isEmpty(readAll)){
  570. for (int i = 1; i < readAll.size(); i++) {
  571. //解析数据
  572. List<Object> objects = readAll.get(i);
  573. String date = (String) objects.get(0);
  574. date = date.replaceAll("\\.", "/");
  575. date = handleDate(date);
  576. //用时间去查询 如果存在就更新,否则跳过
  577. List<TXinyiDaily> tXinyiDailies = this.xinyiDailyMapper.selectTXinyiDailyList(TXinyiDaily.builder().testDate(date).build());
  578. if(CollectionUtils.isEmpty(tXinyiDailies)){
  579. log.error("没有查询到对应的历史数据,跳过~~~~~~{}", date);
  580. continue;
  581. }
  582. //目前集合就一个对象 以后可能会多个
  583. TXinyiDaily tXinyiDaily = tXinyiDailies.get(0);
  584. //出泥量
  585. Object o1 = objects.get(1);
  586. BigDecimal CHUNILIANG = null;
  587. if(o1 instanceof String){
  588. log.error("数据异常,解析为null");
  589. CHUNILIANG = null;
  590. }else if(o1 instanceof Double){
  591. CHUNILIANG = new BigDecimal((Double) o1);
  592. }else {
  593. log.error("错误的类型,不用解析了");
  594. CHUNILIANG = null;
  595. }
  596. //出泥含水率
  597. BigDecimal CNHSL = null;
  598. Object o2 = objects.get(2);
  599. if(o2 instanceof String){
  600. log.error("数据异常,解析为null");
  601. CNHSL = null;
  602. }else if(o2 instanceof Double){
  603. CNHSL = new BigDecimal((Double) o2);
  604. }else {
  605. log.error("错误的类型,不用解析了");
  606. CNHSL = null;
  607. }
  608. //干污泥量
  609. Object o3 = objects.get(3);
  610. BigDecimal GWNL = null;
  611. if(o3 instanceof String){
  612. log.error("数据异常,解析为null");
  613. GWNL = null;
  614. }else if(o3 instanceof Double){
  615. GWNL = new BigDecimal((Double) o3);
  616. }else {
  617. log.error("错误的类型,不用解析了");
  618. GWNL = null;
  619. }
  620. //更新数据
  621. tXinyiDaily.setCHUNILIANG(CHUNILIANG);
  622. tXinyiDaily.setCNHSL(CNHSL);
  623. tXinyiDaily.setGWNL(GWNL);
  624. this.xinyiDailyMapper.updateTXinyiDaily(tXinyiDaily);
  625. }
  626. }
  627. return "ok";
  628. }
  629. /**
  630. * 手动处理日报数据 增加两个字段 时间和小时
  631. * @return
  632. */
  633. @GetMapping("/dateUpdateDaily")
  634. public String dateUpdateDaily() {
  635. //获取全部数据
  636. List<TXinyiDaily> tXinyiDailies = this.xinyiDailyMapper.selectTXinyiDailyList(null);
  637. if(!CollectionUtils.isEmpty(tXinyiDailies)){
  638. for (TXinyiDaily tXinyiDaily : tXinyiDailies) {
  639. String handleTime = handleDate(tXinyiDaily.getTestTime());
  640. tXinyiDaily.setTestTime(handleTime);
  641. tXinyiDaily.setTestDate(handleTime);
  642. //更新
  643. this.xinyiDailyMapper.updateTXinyiDaily(tXinyiDaily);
  644. }
  645. }
  646. return "ok";
  647. }
  648. /**
  649. * 手动处理化验数据 增加两个字段 时间和小时
  650. * @return
  651. */
  652. @GetMapping("/dateUpdateHuaYan")
  653. public String dateUpdateHuaYan() {
  654. //获取全部数据
  655. List<TXinyiLaboratory> tXinyiLaboratories = this.xinyiLaboratoryMapper.selectTXinyiLaboratoryList(null);
  656. if(!CollectionUtils.isEmpty(tXinyiLaboratories)){
  657. for (TXinyiLaboratory tXinyiLaboratory : tXinyiLaboratories) {
  658. String handleTime = handleDate(tXinyiLaboratory.getTestTime());
  659. tXinyiLaboratory.setTestTime(handleTime);//到分为止
  660. tXinyiLaboratory.setTestDate(handleTime.substring(0, 10));
  661. tXinyiLaboratory.setTestHour(handleTime.substring(0, 13));
  662. //更新
  663. this.xinyiLaboratoryMapper.updateTXinyiLaboratory(tXinyiLaboratory);
  664. }
  665. }
  666. return "ok";
  667. }
  668. /**
  669. * 手动处理 工业库的 某个值,将历史数据全部都更新
  670. * @return
  671. */
  672. @GetMapping("/updateGYKSomeFields")
  673. public String updateGYKSomeFields() {
  674. //更新的某个指标
  675. // String[] queryTags = {"信义污水厂_除磷P04预测值_"};
  676. String[] queryTags = {"信义污水厂一号鼓风机电流", "信义污水厂二号鼓风机电流", "信义污水厂三号鼓风机电流", "信义污水厂四号鼓风机电流", "信义污水厂五号鼓风机电流", "信义污水厂六号鼓风机电流", "信义污水厂XGS1_R_Value", "信义污水厂细格栅间_2号细格栅主机_运行信号", "信义污水厂细格栅间_3号细格栅主机_运行信号", "信义污水厂XGS4_R_Value", "信义污水厂细格栅间_5号细格栅主机_运行信号", "信义污水厂细格栅间_6号细格栅主机_运行信号", "信义污水厂内回流1#_Ia", "信义污水厂内回流2#_Ia", "信义污水厂内回流3#_Ia", "信义污水厂内回流4#_Ia", "信义污水厂内回流5#_Ia", "信义污水厂内回流6#_Ia", "信义污水厂PNBFPNB1_R_Value", "信义污水厂PNBFPNB2_R_Value", "信义污水厂SWCSYWNHLB1_R_Value", "信义污水厂SWCSYWNHLB2_R_Value", "信义污水厂升级1#空压机主机A相电流", "信义污水厂升级2#空压机主机A相电流", "信义污水厂升级3#空压机主机A相电流", "信义污水厂升级4#空压机主机A相电流"};
  677. //找到对应的数据,然后更新它
  678. // 给定时间段的起始时间和结束时间
  679. LocalDateTime startTime = LocalDateTime.parse("2022-07-01T00:00:00");
  680. LocalDateTime endTime = LocalDateTime.parse("2025-04-03T10:00:01");
  681. // 每个小时的时间格式
  682. DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
  683. // 循环按小时分割
  684. LocalDateTime currentHour = startTime;
  685. while (currentHour.isBefore(endTime)) {
  686. String begin = currentHour.format(formatter);
  687. String end = currentHour.plusDays(1).format(formatter);
  688. // 输出当前小时的起始时间和结束时间
  689. System.out.println("起始时间:" + begin);
  690. System.out.println("结束时间:" + end);
  691. // 当前小时加一小时,作为下一个小时的起始时间
  692. currentHour = currentHour.plusDays(1);
  693. //每个小时查询一次数据
  694. HashMap<String, Object> req = new HashMap<>();
  695. req.put("tagNames", queryTags);
  696. req.put("startTime", begin);
  697. req.put("endTime", end);
  698. req.put("recordNumbers", 100000);
  699. String body = HttpRequest.post(INDUSTRY_INTERFACE_ADDR).header("Authorization", "c2E6c2E=").header("clientName", "hongshan").body(JSON.toJSONString(req)).execute().body();
  700. // System.out.println("body = " + body);
  701. List<HashMap<String, String>> list = new ArrayList<>();
  702. //行转列数据处理
  703. for (String queryTag : queryTags) {
  704. JSONArray array = JSON.parseObject(body).getJSONArray(queryTag);
  705. //特殊数据处理一
  706. if(Objects.isNull(array) || array.isEmpty()){
  707. System.out.println(queryTag + "查询到了空的数据,跳过本次循环");
  708. continue;
  709. }
  710. int size = array.size();
  711. //特殊数据处理二
  712. if("0".equals(array.get(1) + "")){
  713. System.out.println(queryTag + "查询到了数据,但是数据集合只有一条,且都是0");
  714. continue;
  715. }
  716. //存放的数据集
  717. //利用map去重
  718. HashMap<String, String> map = new LinkedHashMap<>();
  719. for (int i = 2; i < size; i++) {
  720. // System.out.println(i + "" + array.get(i));
  721. JSONArray oneRecord = JSON.parseArray(JSON.toJSONString(array.get(i)));
  722. //处理为空或者为0的数据
  723. Object timeStampValue = oneRecord.get(2);
  724. if(Objects.isNull(timeStampValue) || "0".equals(timeStampValue + ""))
  725. continue;
  726. BigDecimal value = Objects.isNull(oneRecord.get(0)) ? null : new BigDecimal(oneRecord.get(0) + "");
  727. long timestamp = (long) timeStampValue;
  728. String format = DateUtil.format(new Date(timestamp), DateUtils.YYYYMMDDHH_TS);
  729. map.put(format, queryTag + "-" + value);
  730. }
  731. list.add(map);
  732. }
  733. Set<String> recordTimeSet = new HashSet<>();
  734. Map<String, TXinyiIndustry> recordMap = new HashMap<>();
  735. for (int i = 0; i < list.size(); i++) {
  736. HashMap<String, String> map = list.get(i);
  737. int finalJ = i;
  738. map.forEach((k, v) ->{
  739. TXinyiIndustry industry = null;
  740. if(!recordTimeSet.contains(k)){//第一次
  741. industry = new TXinyiIndustry();
  742. recordTimeSet.add(k);
  743. recordMap.put(k, industry);
  744. }else{
  745. industry = recordMap.get(k);
  746. }
  747. industry.setTestTime(k);
  748. //解析值
  749. String[] split = v.split("-");
  750. String type = split[0];
  751. BigDecimal value = new BigDecimal(split[1]);
  752. if ("信义污水厂_除磷P04预测值_".equals(type)) {
  753. industry.setCLP04YCZ(value);//目前值更新此字段
  754. }else if ("信义污水厂一号鼓风机电流".equals(type)) {
  755. industry.setOneFjDl(value);
  756. }else if ("信义污水厂二号鼓风机电流".equals(type)) {
  757. industry.setTwoFjDl(value);
  758. }else if ("信义污水厂三号鼓风机电流".equals(type)) {
  759. industry.setThreeFjDl(value);
  760. }else if ("信义污水厂四号鼓风机电流".equals(type)) {
  761. industry.setFourFjDl(value);
  762. }else if ("信义污水厂五号鼓风机电流".equals(type)) {
  763. industry.setFiveFjDl(value);
  764. }else if ("信义污水厂六号鼓风机电流".equals(type)) {
  765. industry.setSixFjDl(value);
  766. }else if ("信义污水厂XGS1_R_Value".equals(type)) {
  767. industry.setOneXgsQt(value);
  768. }else if ("信义污水厂细格栅间_2号细格栅主机_运行信号".equals(type)) {
  769. industry.setTwoXgsQt(value);
  770. }else if ("信义污水厂细格栅间_3号细格栅主机_运行信号".equals(type)) {
  771. industry.setThreeXgsQt(value);
  772. }else if ("信义污水厂XGS4_R_Value".equals(type)) {
  773. industry.setFourXgsQt(value);
  774. }else if ("信义污水厂细格栅间_5号细格栅主机_运行信号".equals(type)) {
  775. industry.setFiveXgsQt(value);
  776. }else if ("信义污水厂细格栅间_6号细格栅主机_运行信号".equals(type)) {
  777. industry.setSixXgsQt(value);
  778. }else if ("信义污水厂内回流1#_Ia".equals(type)) {
  779. industry.setOneNhlbDl(value);
  780. }else if ("信义污水厂内回流2#_Ia".equals(type)) {
  781. industry.setTwoNhlbDl(value);
  782. }else if ("信义污水厂内回流3#_Ia".equals(type)) {
  783. industry.setThreeNhlbDl(value);
  784. }else if ("信义污水厂内回流4#_Ia".equals(type)) {
  785. industry.setFourNhlbDl(value);
  786. }else if ("信义污水厂内回流5#_Ia".equals(type)) {
  787. industry.setFiveNhlbDl(value);
  788. }else if ("信义污水厂内回流6#_Ia".equals(type)) {
  789. industry.setSixNhlbDl(value);
  790. }else if ("信义污水厂PNBFPNB1_R_Value".equals(type)) {
  791. industry.setOneCccpnbQt(value);
  792. }else if ("信义污水厂PNBFPNB2_R_Value".equals(type)) {
  793. industry.setTwoCccpnbQt(value);
  794. }else if ("信义污水厂SWCSYWNHLB1_R_Value".equals(type)) {
  795. industry.setOneSywndbQt(value);
  796. }else if ("信义污水厂SWCSYWNHLB2_R_Value".equals(type)) {
  797. industry.setTwoSywndbQt(value);
  798. }else if ("信义污水厂升级1#空压机主机A相电流".equals(type)) {
  799. industry.setOneSdclDl(value);
  800. }else if ("信义污水厂升级2#空压机主机A相电流".equals(type)) {
  801. industry.setTwoSdclDl(value);
  802. }else if ("信义污水厂升级3#空压机主机A相电流".equals(type)) {
  803. industry.setThreeSdclDl(value);
  804. }else if ("信义污水厂升级4#空压机主机A相电流".equals(type)) {
  805. industry.setFourSdclDl(value);
  806. }
  807. /*else if ("信义污水厂除磷加药瞬时流量".equals(type)) {
  808. industry.setCLJYSSLL(value);
  809. }*/
  810. //只有最后一次才执行数据库添加
  811. if(finalJ == list.size()-1){
  812. //先去查询数据库
  813. TXinyiIndustry uniqueTXinyiIndustry = this.xinyiIndustryMapper.getUniqueTXinyiIndustry(industry.getTestTime());
  814. if(Objects.isNull(uniqueTXinyiIndustry))
  815. log.error("查询到的工业库数据为null,化验时间为{}", industry.getTestTime());
  816. else {
  817. //防止其他信息被更新,新建对象
  818. TXinyiIndustry updateTXinyiIndustry = new TXinyiIndustry();
  819. //赋值
  820. updateTXinyiIndustry.setID(uniqueTXinyiIndustry.getID());
  821. // updateTXinyiIndustry.setCLP04YCZ(industry.getCLP04YCZ());
  822. updateTXinyiIndustry.setOneFjDl(industry.getOneFjDl());
  823. updateTXinyiIndustry.setTwoFjDl(industry.getTwoFjDl());
  824. updateTXinyiIndustry.setThreeFjDl(industry.getThreeFjDl());
  825. updateTXinyiIndustry.setFourFjDl(industry.getFourFjDl());
  826. updateTXinyiIndustry.setFiveFjDl(industry.getFiveFjDl());
  827. updateTXinyiIndustry.setSixFjDl(industry.getSixFjDl());
  828. updateTXinyiIndustry.setOneXgsQt(industry.getOneXgsQt());
  829. updateTXinyiIndustry.setTwoXgsQt(industry.getTwoXgsQt());
  830. updateTXinyiIndustry.setThreeXgsQt(industry.getThreeXgsQt());
  831. updateTXinyiIndustry.setFourXgsQt(industry.getFourXgsQt());
  832. updateTXinyiIndustry.setFiveXgsQt(industry.getFiveXgsQt());
  833. updateTXinyiIndustry.setSixXgsQt(industry.getSixXgsQt());
  834. updateTXinyiIndustry.setOneNhlbDl(industry.getOneNhlbDl());
  835. updateTXinyiIndustry.setTwoNhlbDl(industry.getTwoNhlbDl());
  836. updateTXinyiIndustry.setThreeNhlbDl(industry.getThreeNhlbDl());
  837. updateTXinyiIndustry.setFourNhlbDl(industry.getFourNhlbDl());
  838. updateTXinyiIndustry.setFiveNhlbDl(industry.getFiveNhlbDl());
  839. updateTXinyiIndustry.setSixNhlbDl(industry.getSixNhlbDl());
  840. updateTXinyiIndustry.setOneCccpnbQt(industry.getOneCccpnbQt());
  841. updateTXinyiIndustry.setTwoCccpnbQt(industry.getTwoCccpnbQt());
  842. updateTXinyiIndustry.setOneSywndbQt(industry.getOneSywndbQt());
  843. updateTXinyiIndustry.setTwoSywndbQt(industry.getTwoSywndbQt());
  844. updateTXinyiIndustry.setOneSdclDl(industry.getOneSdclDl());
  845. updateTXinyiIndustry.setTwoSdclDl(industry.getTwoSdclDl());
  846. updateTXinyiIndustry.setThreeSdclDl(industry.getThreeSdclDl());
  847. updateTXinyiIndustry.setFourSdclDl(industry.getFourSdclDl());
  848. //更新数据库
  849. xinyiIndustryMapper.updateTXinyiIndustry(updateTXinyiIndustry);
  850. }
  851. }
  852. });
  853. }
  854. }
  855. return "ok";
  856. }
  857. /**
  858. * 手动处理 计算相关的数据,处理历史数据
  859. * @return
  860. */
  861. @GetMapping("/handleCalculateHistoryDates")
  862. public String handleCalculateHistoryDates() {
  863. log.info("进入了 手动处理-重置计算表历史数据");
  864. long begin = System.currentTimeMillis();
  865. List<TXinyiNormConfig> tXinyiNormConfigs = xinyiNormConfigMapper.selectTXinyiNormConfigList(null);
  866. if(CollectionUtils.isEmpty(tXinyiNormConfigs)) {
  867. log.error( "未查询到配置信息");
  868. return null;
  869. }
  870. TXinyiNormConfig normConfig = tXinyiNormConfigs.get(0);
  871. int size = 500;
  872. int count = xinyiIndustryMapper.getCount();
  873. int num = ( count / size ) + 1;
  874. for (int i = 0; i < num; i++) {
  875. List<TXinyiIndustry> tXinyiIndustries = xinyiIndustryMapper.selectTXinyiIndustryListByPage(i * size, size);
  876. List<TXinyiCalculate> tempInsertData = new ArrayList<>();
  877. if (!CollectionUtils.isEmpty( tXinyiIndustries )) {
  878. for (int j = 0; j < tXinyiIndustries.size(); j++) {
  879. TXinyiIndustry tXinyiIndustry = tXinyiIndustries.get(j);
  880. //获取的一些配置信息
  881. BigDecimal nhlbqdsl = normConfig.getNHLBQDSL();
  882. BigDecimal nhlbdsjll = normConfig.getNHLBDSJLL();
  883. BigDecimal nhlbgzxl = normConfig.getNHLBGZXL();
  884. BigDecimal whlbqdsl = normConfig.getWHLBQDSL();
  885. BigDecimal whlbdsjll = normConfig.getWHLBDSJLL();
  886. BigDecimal whlbgzxl = normConfig.getWHLBGZXL();
  887. BigDecimal gfjgzts = normConfig.getGFJGZTS();
  888. BigDecimal gfjckll = normConfig.getGFJCKLL();
  889. BigDecimal fcxbsjll = normConfig.getFCXBSJLL();
  890. BigDecimal fclbsl = normConfig.getFCLBSL();
  891. BigDecimal fcxbgzxl = normConfig.getFCXBGZXL();
  892. BigDecimal jsslSjz = normConfig.getJsslSjz();
  893. //结算结果
  894. TXinyiCalculate tXinyiCalculate = new TXinyiCalculate();
  895. //时间相关
  896. tXinyiCalculate.setTestDate(tXinyiIndustry.getTestDate());
  897. tXinyiCalculate.setTestHour(tXinyiIndustry.getTestHour());
  898. tXinyiCalculate.setTestTime(tXinyiIndustry.getTestTime());
  899. //获取最新的一条日报信息
  900. TXinyiDaily tXinyiDaily = this.xinyiDailyMapper.getDetailByDay(tXinyiIndustry.getTestDate());
  901. if(Objects.isNull(tXinyiDaily)){
  902. //理论不会出现
  903. log.error("没有日报数据,取最新的");
  904. tXinyiDaily = this.xinyiDailyMapper.selectNewestData();
  905. }
  906. BigDecimal jsBod5 = tXinyiDaily.getJsBod5();
  907. BigDecimal csBod5 = tXinyiDaily.getCsBod5();
  908. BigDecimal whlR = tXinyiDaily.getWhlR();
  909. BigDecimal oneMlvss = tXinyiDaily.getShcHyOneMlvss();
  910. BigDecimal twoMlvss = tXinyiDaily.getShcHyTwoMlvss();
  911. BigDecimal avgMlvss = null;
  912. if(!Objects.isNull(oneMlvss) && !Objects.isNull(twoMlvss))
  913. avgMlvss = ((oneMlvss.add(twoMlvss)).divide(new BigDecimal(2),4, RoundingMode.HALF_UP));
  914. BigDecimal oneMlss = tXinyiDaily.getShcHyOneMlss();
  915. BigDecimal twoMlss = tXinyiDaily.getShcHyTwoMlss();
  916. BigDecimal avgMlss = null;
  917. if(!Objects.isNull(oneMlss) && !Objects.isNull(twoMlss))
  918. avgMlss = ((oneMlss.add(twoMlss)).divide(new BigDecimal(NUMBER_2),NUMBER_SCALE_4, RoundingMode.HALF_UP));
  919. //工业库的指标
  920. BigDecimal jsTn = tXinyiIndustry.getJsTn();
  921. BigDecimal jsTp = tXinyiIndustry.getJsTp();
  922. BigDecimal jsCod = tXinyiIndustry.getJsCod();
  923. BigDecimal jsSlq = tXinyiIndustry.getJsSlq();
  924. BigDecimal jsSs = tXinyiIndustry.getJsSs();
  925. BigDecimal jsNh3 = tXinyiIndustry.getJsNh3();
  926. BigDecimal csCod = tXinyiIndustry.getCsCod();
  927. BigDecimal csSs = tXinyiIndustry.getCsSs();
  928. BigDecimal csTn = tXinyiIndustry.getCsTn();
  929. BigDecimal csTp = tXinyiIndustry.getCsTp();
  930. BigDecimal csNh3 = tXinyiIndustry.getCsNh3();
  931. //计算
  932. if(!Objects.isNull(jsBod5)){
  933. if(!Objects.isNull(jsTn) && jsTn.compareTo(BigDecimal.ZERO) > 0)
  934. tXinyiCalculate.setJsTdb(jsBod5.divide(jsTn, NUMBER_SCALE_4, RoundingMode.HALF_UP));
  935. if(!Objects.isNull(jsTp) && jsTp.compareTo(BigDecimal.ZERO) > 0)
  936. tXinyiCalculate.setJsTlb(jsBod5.divide(jsTp, NUMBER_SCALE_4, RoundingMode.HALF_UP));
  937. if(!Objects.isNull(jsCod) && jsCod.compareTo(BigDecimal.ZERO) > 0)
  938. tXinyiCalculate.setJsBodBCod(jsBod5.divide(jsCod, NUMBER_SCALE_4, RoundingMode.HALF_UP));
  939. if(!Objects.isNull(csBod5) && !Objects.isNull(avgMlss) && avgMlss.compareTo(BigDecimal.ZERO) > 0 && !Objects.isNull(jsSlq) && jsSlq.compareTo(BigDecimal.ZERO) > 0)
  940. tXinyiCalculate.setFM(new BigDecimal(ONE_DAY_HOURS).multiply((jsBod5.subtract(csBod5))).multiply(jsSlq).divide(avgMlss, NUMBER_SCALE_4, RoundingMode.HALF_UP).divide(new BigDecimal(F_M_LAST), NUMBER_SCALE_4, RoundingMode.HALF_UP));
  941. }
  942. if(!Objects.isNull(avgMlss) && avgMlss.compareTo(BigDecimal.ZERO) > 0 && !Objects.isNull(avgMlvss) && avgMlvss.compareTo(BigDecimal.ZERO) > 0)
  943. tXinyiCalculate.setHFXWNNDZB(avgMlvss.divide(avgMlss, NUMBER_SCALE_4, RoundingMode.HALF_UP));
  944. if(!Objects.isNull(jsSlq) && jsSlq.compareTo(BigDecimal.ZERO) > 0){
  945. tXinyiCalculate.setYyqHrt(new BigDecimal(YYQ_TLSJ_FIRST).divide(jsSlq, NUMBER_SCALE_4, RoundingMode.HALF_UP));
  946. tXinyiCalculate.setQyqHrt(new BigDecimal(QYQ_TLSJ_FIRST).divide(jsSlq, NUMBER_SCALE_4, RoundingMode.HALF_UP));
  947. tXinyiCalculate.setHyqHrt(new BigDecimal(HYQ_TLSJ_FIRST).divide(jsSlq, NUMBER_SCALE_4, RoundingMode.HALF_UP));
  948. // tXinyiCalculate.setGSLS(jsSlq.divide(new BigDecimal(NUMBER_3600), NUMBER_SCALE_4, RoundingMode.HALF_UP).multiply(new BigDecimal(NUMBER_4)).divide((new BigDecimal(Math.PI).multiply(new BigDecimal(NUMBER_0_0_0_3)).multiply(new BigDecimal(NUMBER_0_0_0_3)).multiply(new BigDecimal(NUMBER_4)).multiply(new BigDecimal(NUMBER_4)).multiply(new BigDecimal(NUMBER_97119))) , NUMBER_SCALE_4, RoundingMode.HALF_UP));
  949. tXinyiCalculate.setGSLS(jsSlq.divide(GSLS_LAST, NUMBER_SCALE_4, RoundingMode.HALF_UP));
  950. tXinyiCalculate.setGslsOne(jsSlq.divide(new BigDecimal(NUMBER_3600), NUMBER_SCALE_4, RoundingMode.HALF_UP).multiply(new BigDecimal(Math.sqrt(Math.sin(Math.toRadians(DOUBLE_75))))).divide(GSLSONE_LAST, NUMBER_SCALE_4, RoundingMode.HALF_UP));
  951. tXinyiCalculate.setGslsTwo(jsSlq.divide(new BigDecimal(NUMBER_3600), NUMBER_SCALE_4, RoundingMode.HALF_UP).multiply(new BigDecimal(Math.sqrt(Math.sin(Math.toRadians(DOUBLE_75))))).divide(GSLSTWO_LAST, NUMBER_SCALE_4, RoundingMode.HALF_UP));
  952. tXinyiCalculate.setXgsGsls(jsSlq.divide(new BigDecimal(NUMBER_3600), NUMBER_SCALE_4, RoundingMode.HALF_UP).multiply(new BigDecimal(NUMBER_4)).divide((GSLS_XGS_LAST) , NUMBER_SCALE_4, RoundingMode.HALF_UP));
  953. tXinyiCalculate.setXlcscBmfh(jsSlq.divide(XLCSCBMFH_LAST, NUMBER_SCALE_4, RoundingMode.HALF_UP));
  954. tXinyiCalculate.setXlcscHrt(XLCSCHRT_LAST.divide(jsSlq, NUMBER_SCALE_4, RoundingMode.HALF_UP));
  955. tXinyiCalculate.setCccdcBmfh(jsSlq.divide(CCCDCBMFH_LAST, NUMBER_SCALE_4, RoundingMode.HALF_UP));
  956. tXinyiCalculate.setCccdcHrt(CCCDCHRT_LAST.divide(jsSlq, NUMBER_SCALE_4, RoundingMode.HALF_UP));
  957. tXinyiCalculate.setEccBmfh(jsSlq.divide(ECCBMFH_LAST, NUMBER_SCALE_4, RoundingMode.HALF_UP));
  958. tXinyiCalculate.setEccHrt(ECCHRT_LAST.divide(jsSlq, NUMBER_SCALE_4, RoundingMode.HALF_UP));
  959. //2024年7月1日17:16:16 计算逻辑调整
  960. if(!Objects.isNull(whlR) && avgMlss != null && jsSlq != null) {
  961. tXinyiCalculate.setEccGtfh((new BigDecimal(1).add(whlR.divide(BigDecimal_100, NUMBER_SCALE_4, RoundingMode.HALF_UP))).multiply(jsSlq).multiply(new BigDecimal(NUMBER_24)).multiply(avgMlss).divide(ECCGTFH_LAST, NUMBER_SCALE_4, RoundingMode.HALF_UP));
  962. }
  963. tXinyiCalculate.setClsnJcsj(CLSNJCSJ_LAST.divide(jsSlq, NUMBER_SCALE_4, RoundingMode.HALF_UP));
  964. tXinyiCalculate.setXgcdcQsqSsls(jsSlq.multiply(XGCDCQSQSSLS_LAST));
  965. //2024年6月29日15:18:01 增加几个新的计算指标
  966. if(!Objects.isNull(nhlbqdsl) && !Objects.isNull(nhlbdsjll) && !Objects.isNull(nhlbgzxl))
  967. tXinyiCalculate.setNHLB(nhlbqdsl.multiply(nhlbdsjll).multiply(nhlbgzxl).multiply(BigDecimal_100).divide(jsSlq, 4, RoundingMode.HALF_UP));
  968. if(!Objects.isNull(whlbqdsl) && !Objects.isNull(whlbdsjll) && !Objects.isNull(whlbgzxl))
  969. tXinyiCalculate.setWHLB(whlbqdsl.multiply(whlbdsjll).multiply(whlbgzxl).multiply(BigDecimal_100).divide(jsSlq, 4, RoundingMode.HALF_UP));
  970. if(!Objects.isNull(gfjgzts) && !Objects.isNull(gfjckll))
  971. tXinyiCalculate.setQSB(gfjgzts.multiply(gfjckll).divide(jsSlq, NUMBER_SCALE_4, RoundingMode.HALF_UP));
  972. if(!Objects.isNull(fcxbsjll) && !Objects.isNull(fclbsl) && !Objects.isNull(fcxbgzxl)){
  973. BigDecimal fcxsl = fcxbsjll.multiply(fclbsl).multiply(fcxbgzxl);
  974. tXinyiCalculate.setFCXSL(fcxsl);
  975. //2024年7月3日10:54:28 额外再增加一个字段
  976. tXinyiCalculate.setFCXSLBL(fcxsl.divide(jsSlq, NUMBER_SCALE_4, RoundingMode.HALF_UP).multiply(BigDecimal_100));
  977. }
  978. //2024年7月11日15:43:47 之前给的外回流比计算不准确,额外一个字段记录新的外回流比
  979. BigDecimal divide = jsSlq.divide(DECIMAL_2, NUMBER_SCALE_4, RoundingMode.HALF_UP);
  980. if(divide.compareTo(DECIMAL_1500) < 0)
  981. tXinyiCalculate.setWhlRN(DECIMAL_1200.divide(divide, NUMBER_SCALE_4, RoundingMode.HALF_UP).multiply(BigDecimal_100));
  982. else
  983. tXinyiCalculate.setWhlRN(DECIMAL_1620.divide(divide, NUMBER_SCALE_4, RoundingMode.HALF_UP).multiply(BigDecimal_100));
  984. //2025年03月19日19:05:07 新增超污染物限制 和 超污染物负荷 进出水五大指标相关计算
  985. if(!Objects.isNull(jsslSjz) && jsslSjz.compareTo(BigDecimal.ZERO) > 0){
  986. if(!Objects.isNull(jsCod))
  987. tXinyiCalculate.setJsCodCwrwfh(getCwrwfhzByDetail(jsSlq, jsCod, jsslSjz, normConfig.getJscodSjz()));
  988. if(!Objects.isNull(jsSs))
  989. tXinyiCalculate.setJsSsCwrwfh(getCwrwfhzByDetail(jsSlq, jsSs, jsslSjz, normConfig.getJsssSjz()));
  990. if(!Objects.isNull(jsTn))
  991. tXinyiCalculate.setJsZdCwrwfh(getCwrwfhzByDetail(jsSlq, jsTn, jsslSjz, normConfig.getJszdSjz()));
  992. if(!Objects.isNull(jsTp))
  993. tXinyiCalculate.setJsZlCwrwfh(getCwrwfhzByDetail(jsSlq, jsTp, jsslSjz, normConfig.getJszlSjz()));
  994. if(!Objects.isNull(jsNh3))
  995. tXinyiCalculate.setJsAdCwrwfh(getCwrwfhzByDetail(jsSlq, jsNh3, jsslSjz, normConfig.getJsadSjz()));
  996. }
  997. }
  998. if(!Objects.isNull(csCod))
  999. tXinyiCalculate.setCsCodCwrwxz(getCwrwxzByDetail(csCod, normConfig, CS_COD.getCode(), false));
  1000. if(!Objects.isNull(csSs))
  1001. tXinyiCalculate.setCsSsCwrwxz(getCwrwxzByDetail(csSs, normConfig, CS_SS.getCode(), false));
  1002. if(!Objects.isNull(csTn))
  1003. tXinyiCalculate.setCsZdCwrwxz(getCwrwxzByDetail(csTn, normConfig, CS_ZD.getCode(), false));
  1004. if(!Objects.isNull(csTp))
  1005. tXinyiCalculate.setCsZlCwrwxz(getCwrwxzByDetail(csTp, normConfig, CS_ZL.getCode(), false));
  1006. if(!Objects.isNull(csNh3))
  1007. tXinyiCalculate.setCsAdCwrwxz(getCwrwxzByDetail(csNh3, normConfig, CS_AD.getCode(), false));
  1008. if(!Objects.isNull(jsCod))
  1009. tXinyiCalculate.setJsCodCwrwxz(getCwrwxzByDetail(jsCod, normConfig, JS_COD.getCode(), false));
  1010. if(!Objects.isNull(jsSs))
  1011. tXinyiCalculate.setJsSsCwrwxz(getCwrwxzByDetail(jsSs, normConfig, JS_SS.getCode(), false));
  1012. if(!Objects.isNull(jsTn))
  1013. tXinyiCalculate.setJsZdCwrwxz(getCwrwxzByDetail(jsTn, normConfig, JS_ZD.getCode(), false));
  1014. if(!Objects.isNull(jsTp))
  1015. tXinyiCalculate.setJsZlCwrwxz(getCwrwxzByDetail(jsTp, normConfig, JS_ZL.getCode(), false));
  1016. if(!Objects.isNull(jsNh3))
  1017. tXinyiCalculate.setJsAdCwrwxz(getCwrwxzByDetail(jsNh3, normConfig, JS_AD.getCode(), false));
  1018. tempInsertData.add(tXinyiCalculate);
  1019. xinyiCalculateMapper.insertTXinyiCalculate(tXinyiCalculate);
  1020. }
  1021. // xinyiCalculateMapper.insertBatchData(tempInsertData);
  1022. // return tXinyiCalculate;
  1023. }
  1024. }
  1025. long end = System.currentTimeMillis();
  1026. return "ok;耗时:" + (end - begin) /1000 + "秒。";
  1027. }
  1028. /**
  1029. * 2025年02月14日10:26:03 因为超污染物负荷值 要根据具体的指标计算
  1030. * @param itemVal
  1031. * @param jsslSjz
  1032. * @return
  1033. */
  1034. private BigDecimal getCwrwfhzByDetail(BigDecimal jsSlq, BigDecimal itemVal, BigDecimal jsslSjz, BigDecimal itemConfigVal) {
  1035. return (jsSlq.multiply(itemVal)).divide((jsslSjz.multiply(itemConfigVal)), NUMBER_SCALE_4, RoundingMode.HALF_UP);
  1036. }
  1037. /**
  1038. * 计算超污染物限制的值: 需要判断进水还是出水;是超标准还是超管控 出水的标准值=进水的设计值
  1039. * 2025年03月19日10:25:45:逻辑调整:这里和以前不一样,以前是需要区分超标准还是超管控,现在全部都是超管控制。 不修改上层调用,这里默认都是false即可,防止以后再次修改回来。
  1040. * @param currentVal
  1041. * @param normConfig
  1042. * @param code
  1043. * @param isBzz
  1044. * @return
  1045. */
  1046. private BigDecimal getCwrwxzByDetail(BigDecimal currentVal, TXinyiNormConfig normConfig, String code, boolean isBzz) {
  1047. isBzz = false;
  1048. if(BusinessEnum.WarningCategoryEnum.CS_COD.getCode().equals(code)){
  1049. if(isBzz)
  1050. return currentVal.divide(normConfig.getCscodBzz(), NUMBER_SCALE_4, RoundingMode.HALF_UP);
  1051. return currentVal.divide(normConfig.getCscodGkz(), NUMBER_SCALE_4, RoundingMode.HALF_UP);
  1052. }else if(BusinessEnum.WarningCategoryEnum.CS_ZL.getCode().equals(code) || ROBOT_ECCZLSY.getCode().equals(code)){
  1053. if(isBzz)
  1054. return currentVal.divide(normConfig.getCszlBzz(), NUMBER_SCALE_4, RoundingMode.HALF_UP);
  1055. return currentVal.divide(normConfig.getCszlGkz(), NUMBER_SCALE_4, RoundingMode.HALF_UP);
  1056. }else if(BusinessEnum.WarningCategoryEnum.CS_ZD.getCode().equals(code) || ROBOT_XSY_1.getCode().equals(code) || ROBOT_XSY_2.getCode().equals(code)){
  1057. if(isBzz)
  1058. return currentVal.divide(normConfig.getCszzBzz(), NUMBER_SCALE_4, RoundingMode.HALF_UP);
  1059. return currentVal.divide(normConfig.getCszzGkz(), NUMBER_SCALE_4, RoundingMode.HALF_UP);
  1060. }else if(BusinessEnum.WarningCategoryEnum.CS_AD.getCode().equals(code) || ROBOT_CS_AD.getCode().equals(code)){
  1061. if(isBzz)
  1062. return currentVal.divide(normConfig.getCsadBzz(), NUMBER_SCALE_4, RoundingMode.HALF_UP);
  1063. return currentVal.divide(normConfig.getCsadGkz(), NUMBER_SCALE_4, RoundingMode.HALF_UP);
  1064. }else if(BusinessEnum.WarningCategoryEnum.CS_SS.getCode().equals(code)){
  1065. if(isBzz)
  1066. return currentVal.divide(normConfig.getCsssBzz(), NUMBER_SCALE_4, RoundingMode.HALF_UP);
  1067. return currentVal.divide(normConfig.getCsssGkz(), NUMBER_SCALE_4, RoundingMode.HALF_UP);
  1068. }else if(BusinessEnum.WarningCategoryEnum.JS_ZL.getCode().equals(code)){
  1069. return currentVal.divide(normConfig.getJszlSjz(), NUMBER_SCALE_4, RoundingMode.HALF_UP);
  1070. }else if(BusinessEnum.WarningCategoryEnum.JS_COD.getCode().equals(code)){
  1071. return currentVal.divide(normConfig.getJscodSjz(), NUMBER_SCALE_4, RoundingMode.HALF_UP);
  1072. }else if(BusinessEnum.WarningCategoryEnum.JS_ZD.getCode().equals(code)){
  1073. return currentVal.divide(normConfig.getJszdSjz(), NUMBER_SCALE_4, RoundingMode.HALF_UP);
  1074. }else if(BusinessEnum.WarningCategoryEnum.JS_AD.getCode().equals(code)){
  1075. return currentVal.divide(normConfig.getJsadSjz(), NUMBER_SCALE_4, RoundingMode.HALF_UP);
  1076. }else if(BusinessEnum.WarningCategoryEnum.JS_SS.getCode().equals(code)){
  1077. return currentVal.divide(normConfig.getJsssSjz(), NUMBER_SCALE_4, RoundingMode.HALF_UP);
  1078. }else{
  1079. log.error("暂时不支持的类型,返回null");
  1080. return null;
  1081. }
  1082. }
  1083. public void main(String[] args) {
  1084. // handleBigTableDayHistoryData();
  1085. // HandleDataController handleDataController = new HandleDataController();
  1086. //
  1087. // handleDataController.handleBigTableDayHistoryData();
  1088. // File file = new File("C:\\Users\\10109\\Desktop\\新程序\\历史数据");
  1089. // if(file.isDirectory()){
  1090. // for (File listFile : file.listFiles()) {
  1091. //// System.out.println(listFile.getName());
  1092. // ExcelReader reader = ExcelUtil.getReader(listFile);
  1093. // List<List<Object>> readAll = reader.read();
  1094. // for (int i = 3; i < 10; i++) {
  1095. // System.out.println(readAll.get(i));
  1096. // }
  1097. // System.out.println("------------------");
  1098. // }
  1099. // }
  1100. String str = "2022/07/11 19:00";
  1101. // String str = "2022/7/1";
  1102. // String str = "0:0:1";
  1103. // String newStr = handleDate(str);
  1104. // System.out.println(newStr);
  1105. // System.out.println(str.substring(0, 12));
  1106. // System.out.println(str.substring(0, 9));
  1107. // System.out.println(handleDate("2024-3-9"));
  1108. System.out.println(handleDate("2023/12/26 02:00"));
  1109. System.out.println(handleDate("2023/12/26 02:00").substring(0, 10));
  1110. System.out.println(handleDate("2023/12/26 02:00").substring(0, 13));
  1111. }
  1112. public static String handleDate(String str){
  1113. StringBuilder sb = new StringBuilder();
  1114. if(str.contains(" ")){//包含空格 就是年月日时分秒了
  1115. String[] split = str.split(" ");
  1116. addBeforeZero(sb, split[0], "/");
  1117. sb.append(" ");
  1118. addBeforeZero(sb, split[1], ":");
  1119. }else{
  1120. if(str.contains("/")){//年月日
  1121. addBeforeZero(sb, str, "/");
  1122. }else if(str.contains(":")){//时分秒
  1123. addBeforeZero(sb, str, ":");
  1124. }else if(str.contains("-")){//只有年月日
  1125. addBeforeZero(sb, str, "-");
  1126. }else {
  1127. sb.append(str);
  1128. }
  1129. }
  1130. return sb.toString();
  1131. }
  1132. public static StringBuilder addBeforeZero(StringBuilder sb, String str, String tag){
  1133. String[] split = str.split(tag);
  1134. int length = split.length;
  1135. for (int i = 0; i < length; i++) {
  1136. String value = split[i];
  1137. Integer intValue = Integer.parseInt(value);
  1138. if(intValue < 10 && value.length() == 1){////防止有正确的情况 额外再补充字符串
  1139. sb.append(0).append(value);
  1140. }else{
  1141. sb.append(value);
  1142. }
  1143. if(i < length-1){
  1144. sb.append(tag);
  1145. }
  1146. }
  1147. return sb;
  1148. }
  1149. public BigDecimal getListAvg (Collection<BigDecimal> bigDecimals) {
  1150. if (bigDecimals.isEmpty()) {
  1151. return null;
  1152. }
  1153. BigDecimal sum = bigDecimals.stream()
  1154. .reduce(BigDecimal.ZERO, BigDecimal::add);
  1155. int size = bigDecimals.size();
  1156. return sum.divide(new BigDecimal(size), 6, RoundingMode.HALF_UP);
  1157. }
  1158. public String formatList(List<BigDecimal> list) {
  1159. if (CollectionUtils.isEmpty(list)) {
  1160. return null;
  1161. }
  1162. boolean isNullList = list.stream().allMatch(x -> x == null);
  1163. return isNullList ? null : list.toString();
  1164. }
  1165. /**
  1166. * 处理big_table_month历史数据
  1167. * @return
  1168. */
  1169. @GetMapping("/handleBigTableMonthHistoryData")
  1170. public String handleBigTableMonthHistoryData() {
  1171. log.info("进入了处理big_table_month历史数据");
  1172. long begin = System.currentTimeMillis();
  1173. List<TXinyiBigTableMonth> tXinyiBigTableDayList = tXinyiBigTableDayMapper.selectTXinyiBigTableDayByMonthAvg();
  1174. if ( !CollectionUtils.isEmpty(tXinyiBigTableDayList) ) {
  1175. for (int i = 0; i < tXinyiBigTableDayList.size(); i++) {
  1176. TXinyiBigTableMonth tableMonth = tXinyiBigTableDayList.get(i);
  1177. ArrayList<BigDecimal> gyHycRjyAll = new ArrayList<>();
  1178. ArrayList<BigDecimal> gyHycRjyZdAll = new ArrayList<>();
  1179. ArrayList<BigDecimal> gyHycWnndAll = new ArrayList<>();
  1180. ArrayList<BigDecimal> rbHycRjyAll = new ArrayList<>();
  1181. ArrayList<BigDecimal> rbHycWnndAll = new ArrayList<>();
  1182. ArrayList<BigDecimal> rbYycRjyAll = new ArrayList<>();
  1183. ArrayList<BigDecimal> rbQycRjyAll = new ArrayList<>();
  1184. ArrayList<BigDecimal> rbWncjbAll = new ArrayList<>();
  1185. ArrayList<BigDecimal> rbWntjzsAll = new ArrayList<>();
  1186. ArrayList<BigDecimal> rbHfxwnndAll = new ArrayList<>();
  1187. ArrayList<BigDecimal> hyHycxsyAll = new ArrayList<>();
  1188. ArrayList<BigDecimal> hyQyanAll = new ArrayList<>();
  1189. ArrayList<BigDecimal> hyQyckxsyAll = new ArrayList<>();
  1190. ArrayList<BigDecimal> hyHyzlsyAll = new ArrayList<>();
  1191. gyHycRjyAll.add(tableMonth.getGyOneHymdDo());
  1192. gyHycRjyAll.add(tableMonth.getGyTwoHymdDo());
  1193. gyHycRjyZdAll.add(tableMonth.getGyOneHyzdDo());
  1194. gyHycRjyZdAll.add(tableMonth.getGyTwoHyzdDo());
  1195. gyHycWnndAll.add(tableMonth.getGyOneMlss());
  1196. gyHycWnndAll.add(tableMonth.getGyTwoMlss());
  1197. rbHycRjyAll.add(tableMonth.getRbShcHyOneDo());
  1198. rbHycRjyAll.add(tableMonth.getRbShcHyTwoDo());
  1199. rbHycWnndAll.add(tableMonth.getRbShcHyOneMlss());
  1200. rbHycWnndAll.add(tableMonth.getRbShcHyTwoMlss());
  1201. rbYycRjyAll.add(tableMonth.getRbShcYyOneDo());
  1202. rbYycRjyAll.add(tableMonth.getRbShcYyTwoDo());
  1203. rbQycRjyAll.add(tableMonth.getRbShcQyOneDo());
  1204. rbQycRjyAll.add(tableMonth.getRbShcQyTwoDo());
  1205. rbWncjbAll.add(tableMonth.getRbShcHyOneSv());
  1206. rbWncjbAll.add(tableMonth.getRbShcHyTwoSv());
  1207. rbWntjzsAll.add(tableMonth.getRbShcHyOneSvi());
  1208. rbWntjzsAll.add(tableMonth.getRbShcHyTwoSvi());
  1209. rbHfxwnndAll.add(tableMonth.getRbShcHyOneMlvss());
  1210. rbHfxwnndAll.add(tableMonth.getRbShcHyTwoMlvss());
  1211. hyHycxsyAll.add(tableMonth.getHyNo3Hlj1Jqr());
  1212. hyHycxsyAll.add(tableMonth.getHyNo3Hlj2Jqr());
  1213. hyQyanAll.add(tableMonth.getHyNh31Jqr());
  1214. hyQyanAll.add(tableMonth.getHyNh32Jqr());
  1215. hyQyckxsyAll.add(tableMonth.getHyNo3Qyc1Jqr());
  1216. hyQyckxsyAll.add(tableMonth.getHyNo3Qyc2Jqr());
  1217. hyHyzlsyAll.add(tableMonth.getHyTpHl1Jqr());
  1218. hyHyzlsyAll.add(tableMonth.getHyTpHl2Jqr());
  1219. tableMonth.setGyHycRjyAll(formatList(gyHycRjyAll));
  1220. tableMonth.setGyHycRjyZdAll(formatList(gyHycRjyZdAll));
  1221. tableMonth.setGyHycWnndAll(formatList(gyHycWnndAll));
  1222. tableMonth.setRbHycRjyAll(formatList(rbHycRjyAll));
  1223. tableMonth.setRbHycWnndAll(formatList(rbHycWnndAll));
  1224. tableMonth.setRbYycRjyAll(formatList(rbYycRjyAll));
  1225. tableMonth.setRbQycRjyAll(formatList(rbQycRjyAll));
  1226. tableMonth.setRbWncjbAll(formatList(rbWncjbAll));
  1227. tableMonth.setRbWntjzsAll(formatList(rbWntjzsAll));
  1228. tableMonth.setRbHfxwnndAll(formatList(rbHfxwnndAll));
  1229. tableMonth.setHyHycxsyAll(formatList(hyHycxsyAll));
  1230. tableMonth.setHyQyanAll(formatList(hyQyanAll));
  1231. tableMonth.setHyQyckxsyAll(formatList(hyQyckxsyAll));
  1232. tableMonth.setHyHyzlsyAll(formatList(hyHyzlsyAll));
  1233. tXinyiBigTableMonthMapper.insertTXinyiBigTableMonth(tableMonth);
  1234. }
  1235. }
  1236. long end = System.currentTimeMillis();
  1237. return "ok;耗时:" + (end - begin) / 1000 + "秒。";
  1238. }
  1239. /**
  1240. * 处理big_table_day历史数据
  1241. * @return
  1242. */
  1243. @GetMapping("/handleBigTableDayHistoryData")
  1244. public String handleBigTableDayHistoryData(@RequestParam String date) {
  1245. log.info("进入了 处理big_table_day历史数据");
  1246. long begin = System.currentTimeMillis();
  1247. List<TXinyiBigTableHour> tXinyiBigTableHours = tXinyiBigTableHourMapper.selectTXinyiBigTableHourByTestDate(date);
  1248. if ( !CollectionUtils.isEmpty(tXinyiBigTableHours) ) {
  1249. List<TXinyiBigTableDay> bigTableDayList = new ArrayList<>();
  1250. for (TXinyiBigTableHour tXinyiBigTableHour : tXinyiBigTableHours) {
  1251. String testDate = tXinyiBigTableHour.getTestDate();
  1252. TXinyiBigTableDay tableDay = tXinyiBigTableDayMapper.selectTXinyiBigTableHourAvg(testDate);
  1253. if (!Objects.isNull(tableDay)) {
  1254. ArrayList<BigDecimal> gyHycRjyAll = new ArrayList<>();
  1255. ArrayList<BigDecimal> gyHycRjyZdAll = new ArrayList<>();
  1256. ArrayList<BigDecimal> gyHycWnndAll = new ArrayList<>();
  1257. ArrayList<BigDecimal> rbHycRjyAll = new ArrayList<>();
  1258. ArrayList<BigDecimal> rbHycWnndAll = new ArrayList<>();
  1259. ArrayList<BigDecimal> rbYycRjyAll = new ArrayList<>();
  1260. ArrayList<BigDecimal> rbQycRjyAll = new ArrayList<>();
  1261. ArrayList<BigDecimal> rbWncjbAll = new ArrayList<>();
  1262. ArrayList<BigDecimal> rbWntjzsAll = new ArrayList<>();
  1263. ArrayList<BigDecimal> rbHfxwnndAll = new ArrayList<>();
  1264. ArrayList<BigDecimal> hyHycxsyAll = new ArrayList<>();
  1265. ArrayList<BigDecimal> hyQyanAll = new ArrayList<>();
  1266. ArrayList<BigDecimal> hyQyckxsyAll = new ArrayList<>();
  1267. ArrayList<BigDecimal> hyHyzlsyAll = new ArrayList<>();
  1268. gyHycRjyAll.add(tableDay.getGyOneHymdDo());
  1269. gyHycRjyAll.add(tableDay.getGyTwoHymdDo());
  1270. gyHycRjyZdAll.add(tableDay.getGyOneHyzdDo());
  1271. gyHycRjyZdAll.add(tableDay.getGyTwoHyzdDo());
  1272. gyHycWnndAll.add(tableDay.getGyOneMlss());
  1273. gyHycWnndAll.add(tableDay.getGyTwoMlss());
  1274. rbHycRjyAll.add(tableDay.getRbShcHyOneDo());
  1275. rbHycRjyAll.add(tableDay.getRbShcHyTwoDo());
  1276. rbHycWnndAll.add(tableDay.getRbShcHyOneMlss());
  1277. rbHycWnndAll.add(tableDay.getRbShcHyTwoMlss());
  1278. rbYycRjyAll.add(tableDay.getRbShcYyOneDo());
  1279. rbYycRjyAll.add(tableDay.getRbShcYyTwoDo());
  1280. rbQycRjyAll.add(tableDay.getRbShcQyOneDo());
  1281. rbQycRjyAll.add(tableDay.getRbShcQyTwoDo());
  1282. rbWncjbAll.add(tableDay.getRbShcHyOneSv());
  1283. rbWncjbAll.add(tableDay.getRbShcHyTwoSv());
  1284. rbWntjzsAll.add(tableDay.getRbShcHyOneSvi());
  1285. rbWntjzsAll.add(tableDay.getRbShcHyTwoSvi());
  1286. rbHfxwnndAll.add(tableDay.getRbShcHyOneMlvss());
  1287. rbHfxwnndAll.add(tableDay.getRbShcHyTwoMlvss());
  1288. hyHycxsyAll.add(tableDay.getHyNo3Hlj1Jqr());
  1289. hyHycxsyAll.add(tableDay.getHyNo3Hlj2Jqr());
  1290. hyQyanAll.add(tableDay.getHyNh31Jqr());
  1291. hyQyanAll.add(tableDay.getHyNh32Jqr());
  1292. hyQyckxsyAll.add(tableDay.getHyNo3Qyc1Jqr());
  1293. hyQyckxsyAll.add(tableDay.getHyNo3Qyc2Jqr());
  1294. hyHyzlsyAll.add(tableDay.getHyTpHl1Jqr());
  1295. hyHyzlsyAll.add(tableDay.getHyTpHl2Jqr());
  1296. tableDay.setGyHycRjyAll(formatList(gyHycRjyAll));
  1297. tableDay.setGyHycRjyZdAll(formatList(gyHycRjyZdAll));
  1298. tableDay.setGyHycWnndAll(formatList(gyHycWnndAll));
  1299. tableDay.setRbHycRjyAll(formatList(rbHycRjyAll));
  1300. tableDay.setRbHycWnndAll(formatList(rbHycWnndAll));
  1301. tableDay.setRbYycRjyAll(formatList(rbYycRjyAll));
  1302. tableDay.setRbQycRjyAll(formatList(rbQycRjyAll));
  1303. tableDay.setRbWncjbAll(formatList(rbWncjbAll));
  1304. tableDay.setRbWntjzsAll(formatList(rbWntjzsAll));
  1305. tableDay.setRbHfxwnndAll(formatList(rbHfxwnndAll));
  1306. tableDay.setHyHycxsyAll(formatList(hyHycxsyAll));
  1307. tableDay.setHyQyanAll(formatList(hyQyanAll));
  1308. tableDay.setHyQyckxsyAll(formatList(hyQyckxsyAll));
  1309. tableDay.setHyHyzlsyAll(formatList(hyHyzlsyAll));
  1310. tableDay.setTestDate(testDate);
  1311. bigTableDayList.add(tableDay);
  1312. }
  1313. }
  1314. if (!CollectionUtils.isEmpty(bigTableDayList)) {
  1315. SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false);
  1316. TXinyiBigTableDayMapper sqlSessionMapper = sqlSession.getMapper(TXinyiBigTableDayMapper.class);
  1317. bigTableDayList.forEach(sqlSessionMapper::insertTXinyiBigTableDay);
  1318. sqlSession.commit();
  1319. sqlSession.close();
  1320. }
  1321. }
  1322. long end = System.currentTimeMillis();
  1323. return "ok;耗时:" + (end - begin) / 1000 + "秒。";
  1324. }
  1325. /**
  1326. * 处理big_table_hour历史数据
  1327. * @return
  1328. */
  1329. @GetMapping("/handleBigTableHourHistoryData")
  1330. public String handleBigTableHourHistoryData () {
  1331. log.info("进入了 处理big_table_hour历史数据");
  1332. long begin = System.currentTimeMillis();
  1333. int size = 500;
  1334. int count = xinyiIndustryMapper.getCount();
  1335. int num = ( count / size ) + 1;
  1336. for (int i = 0; i < num; i++) {
  1337. List<TXinyiIndustry> tXinyiIndustries = xinyiIndustryMapper.selectTXinyiIndustryListByPage(i * size, size);
  1338. if ( !CollectionUtils.isEmpty(tXinyiIndustries) ) {
  1339. List<TXinyiBigTableHour> tXinyiBigTableHourList = new ArrayList();
  1340. for (int j = 0; j < tXinyiIndustries.size(); j++) {
  1341. TXinyiBigTableHour xinyiBigTableHour = new TXinyiBigTableHour();
  1342. TXinyiIndustry tXinyiIndustry = tXinyiIndustries.get(j);
  1343. String testHour = tXinyiIndustry.getTestHour();
  1344. String testDate = tXinyiIndustry.getTestDate();
  1345. // 处理工业库
  1346. handleIndustryData(xinyiBigTableHour, tXinyiIndustry);
  1347. // 处理计算表
  1348. List<TXinyiCalculate> tXinyiCalculates = xinyiCalculateMapper.selectTXinyiCalculateList(TXinyiCalculate.builder().testHour(testHour).build());
  1349. if ( !CollectionUtils.isEmpty(tXinyiCalculates) ) {
  1350. TXinyiCalculate tXinyiCalculate = tXinyiCalculates.get(0);
  1351. handleCalculateData(xinyiBigTableHour, tXinyiCalculate);
  1352. }
  1353. // 处理日报表
  1354. List<TXinyiDaily> tXinyiDailies = xinyiDailyMapper.selectTXinyiDailyList(TXinyiDaily.builder().testDate(testDate).build());
  1355. if ( !CollectionUtils.isEmpty(tXinyiDailies) ) {
  1356. TXinyiDaily tXinyiDaily = tXinyiDailies.get(0);
  1357. handleDailyData(xinyiBigTableHour, tXinyiDaily);
  1358. }
  1359. // 处理化验室
  1360. List<TXinyiRobot> tXinyiRobots = xinyiRobotMapper.selectTXinyiRobotList(TXinyiRobot.builder().testHour(testHour).build());
  1361. if (!CollectionUtils.isEmpty(tXinyiRobots)) {
  1362. TXinyiRobot tXinyiRobot = tXinyiRobots.get(0);
  1363. handleRobotData(xinyiBigTableHour, tXinyiRobot);
  1364. }
  1365. // TXinyiRobot tXinyiRobot = xinyiRobotMapper.selectTXinyiRobotByAvg(TXinyiRobot.builder().testHour(testHour).build());
  1366. // if ( !Objects.isNull(tXinyiRobot) ) {
  1367. // handleRobotData(xinyiBigTableHour, tXinyiRobot);
  1368. // }
  1369. tXinyiBigTableHourList.add(xinyiBigTableHour);
  1370. }
  1371. if (!CollectionUtils.isEmpty(tXinyiBigTableHourList)) {
  1372. SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH,false);
  1373. TXinyiBigTableHourMapper sqlSessionMapper = sqlSession.getMapper(TXinyiBigTableHourMapper.class);
  1374. tXinyiBigTableHourList.forEach(sqlSessionMapper::insertTXinyiBigTableHour);
  1375. sqlSession.commit();
  1376. sqlSession.close();
  1377. }
  1378. }
  1379. }
  1380. long end = System.currentTimeMillis();
  1381. return "ok;耗时:" + (end - begin) /1000 + "秒。";
  1382. }
  1383. // 处理工业库
  1384. private void handleIndustryData(TXinyiBigTableHour xinyiBigTableHour, TXinyiIndustry tXinyiIndustry) {
  1385. xinyiBigTableHour.setTestDate(tXinyiIndustry.getTestDate());
  1386. xinyiBigTableHour.setTestHour(tXinyiIndustry.getTestHour());
  1387. xinyiBigTableHour.setGyJsCod(tXinyiIndustry.getJsCod());
  1388. xinyiBigTableHour.setGyJsPh(tXinyiIndustry.getJsPh());
  1389. xinyiBigTableHour.setGyJsSs(tXinyiIndustry.getJsSs());
  1390. xinyiBigTableHour.setGyJsTp(tXinyiIndustry.getJsTp());
  1391. xinyiBigTableHour.setGyJsTn(tXinyiIndustry.getJsTn());
  1392. xinyiBigTableHour.setGyJsNh3(tXinyiIndustry.getJsNh3());
  1393. xinyiBigTableHour.setGyJsSwPh(tXinyiIndustry.getJsSwPh());
  1394. xinyiBigTableHour.setGyJsBfyw(tXinyiIndustry.getJsBfyw());
  1395. xinyiBigTableHour.setGyCsSlqc(tXinyiIndustry.getCsSlqc());
  1396. xinyiBigTableHour.setGyCsCod(tXinyiIndustry.getCsCod());
  1397. xinyiBigTableHour.setGyCsPh(tXinyiIndustry.getCsPh());
  1398. xinyiBigTableHour.setGyCsSs(tXinyiIndustry.getCsSs());
  1399. xinyiBigTableHour.setGyCsTn(tXinyiIndustry.getCsTn());
  1400. xinyiBigTableHour.setGyCsTp(tXinyiIndustry.getCsTp());
  1401. xinyiBigTableHour.setGyCsNh3(tXinyiIndustry.getCsNh3());
  1402. xinyiBigTableHour.setGyOneHyzdDo(tXinyiIndustry.getOneHyzdDo());
  1403. xinyiBigTableHour.setGyOneHymdDo(tXinyiIndustry.getOneHymdDo());
  1404. xinyiBigTableHour.setGyTwoHyzdDo(tXinyiIndustry.getTwoHyzdDo());
  1405. xinyiBigTableHour.setGyTwoHymdDo(tXinyiIndustry.getTwoHymdDo());
  1406. xinyiBigTableHour.setGyOneMlss(tXinyiIndustry.getOneMlss());
  1407. xinyiBigTableHour.setGyTwoMlss(tXinyiIndustry.getTwoMlss());
  1408. xinyiBigTableHour.setGyJsTds(tXinyiIndustry.getJsTds());
  1409. xinyiBigTableHour.setGyJsSlq(tXinyiIndustry.getJsSlq());
  1410. xinyiBigTableHour.setGyNHlbOneGp(tXinyiIndustry.getNHlbOneGp());
  1411. xinyiBigTableHour.setGyNHlbTwoGp(tXinyiIndustry.getNHlbTwoGp());
  1412. xinyiBigTableHour.setGyNHlbThreeGp(tXinyiIndustry.getNHlbThreeGp());
  1413. xinyiBigTableHour.setGyNHlbFourGp(tXinyiIndustry.getNHlbFourGp());
  1414. xinyiBigTableHour.setGyNhlBFiveGp(tXinyiIndustry.getNhlBFiveGp());
  1415. xinyiBigTableHour.setGyNHlbSixGp(tXinyiIndustry.getNHlbSixGp());
  1416. xinyiBigTableHour.setGyWHlbOneGp(tXinyiIndustry.getWHlbOneGp());
  1417. xinyiBigTableHour.setGyWHlbTwoGp(tXinyiIndustry.getWHlbTwoGp());
  1418. xinyiBigTableHour.setGyWHlbThreeGp(tXinyiIndustry.getWHlbThreeGp());
  1419. xinyiBigTableHour.setGyWHlbFourGp(tXinyiIndustry.getWHlbFourGp());
  1420. xinyiBigTableHour.setGyWHlbFiveGp(tXinyiIndustry.getWHlbFiveGp());
  1421. xinyiBigTableHour.setGyFjOne(tXinyiIndustry.getFjOne());
  1422. xinyiBigTableHour.setGyFjTwo(tXinyiIndustry.getFjTwo());
  1423. xinyiBigTableHour.setGyFjThree(tXinyiIndustry.getFjThree());
  1424. xinyiBigTableHour.setGyFjFour(tXinyiIndustry.getFjFour());
  1425. xinyiBigTableHour.setGyFjFive(tXinyiIndustry.getFjFive());
  1426. xinyiBigTableHour.setGyFjSix(tXinyiIndustry.getFjSix());
  1427. xinyiBigTableHour.setGyKqllOne(tXinyiIndustry.getKqllOne());
  1428. xinyiBigTableHour.setGyKqllTwo(tXinyiIndustry.getKqllTwo());
  1429. xinyiBigTableHour.setGyKqllThree(tXinyiIndustry.getKqllThree());
  1430. xinyiBigTableHour.setGyKqllFour(tXinyiIndustry.getKqllFour());
  1431. xinyiBigTableHour.setGyKqllFive(tXinyiIndustry.getKqllFive());
  1432. xinyiBigTableHour.setGyKqllSix(tXinyiIndustry.getKqllSix());
  1433. xinyiBigTableHour.setGySjtyjly(tXinyiIndustry.getSJTYJLY());
  1434. xinyiBigTableHour.setGyCljyssll(tXinyiIndustry.getCLJYSSLL());
  1435. xinyiBigTableHour.setGyHycRjyAll(tXinyiIndustry.getHycRjyAll());
  1436. xinyiBigTableHour.setGyHycRjyZdAll(tXinyiIndustry.getHycRjyZdAll());
  1437. xinyiBigTableHour.setGyHycWnndAll(tXinyiIndustry.getHycWnndAll());
  1438. xinyiBigTableHour.setGyClP04Ycz(tXinyiIndustry.getCLP04YCZ());
  1439. //2025年04月03日10:31:13 新增风机 泵相关参数处理
  1440. xinyiBigTableHour.setGyOneFjDl(tXinyiIndustry.getOneFjDl());
  1441. xinyiBigTableHour.setGyTwoFjDl(tXinyiIndustry.getTwoFjDl());
  1442. xinyiBigTableHour.setGyThreeFjDl(tXinyiIndustry.getThreeFjDl());
  1443. xinyiBigTableHour.setGyFourFjDl(tXinyiIndustry.getFourFjDl());
  1444. xinyiBigTableHour.setGyFiveFjDl(tXinyiIndustry.getFiveFjDl());
  1445. xinyiBigTableHour.setGySixFjDl(tXinyiIndustry.getSixFjDl());
  1446. xinyiBigTableHour.setGyOneXgsQt(tXinyiIndustry.getOneXgsQt());
  1447. xinyiBigTableHour.setGyTwoXgsQt(tXinyiIndustry.getTwoXgsQt());
  1448. xinyiBigTableHour.setGyThreeXgsQt(tXinyiIndustry.getThreeXgsQt());
  1449. xinyiBigTableHour.setGyFourXgsQt(tXinyiIndustry.getFourXgsQt());
  1450. xinyiBigTableHour.setGyFiveXgsQt(tXinyiIndustry.getFiveXgsQt());
  1451. xinyiBigTableHour.setGySixXgsQt(tXinyiIndustry.getSixXgsQt());
  1452. xinyiBigTableHour.setGyOneNhlbDl(tXinyiIndustry.getOneNhlbDl());
  1453. xinyiBigTableHour.setGyTwoNhlbDl(tXinyiIndustry.getTwoNhlbDl());
  1454. xinyiBigTableHour.setGyThreeNhlbDl(tXinyiIndustry.getThreeNhlbDl());
  1455. xinyiBigTableHour.setGyFourNhlbDl(tXinyiIndustry.getFourNhlbDl());
  1456. xinyiBigTableHour.setGyFiveNhlbDl(tXinyiIndustry.getFiveNhlbDl());
  1457. xinyiBigTableHour.setGySixNhlbDl(tXinyiIndustry.getSixNhlbDl());
  1458. xinyiBigTableHour.setGyOneCccpnbQt(tXinyiIndustry.getOneCccpnbQt());
  1459. xinyiBigTableHour.setGyTwoCccpnbQt(tXinyiIndustry.getTwoCccpnbQt());
  1460. xinyiBigTableHour.setGyOneSywndbQt(tXinyiIndustry.getOneSywndbQt());
  1461. xinyiBigTableHour.setGyTwoSywndbQt(tXinyiIndustry.getTwoSywndbQt());
  1462. xinyiBigTableHour.setGyOneSdclDl(tXinyiIndustry.getOneSdclDl());
  1463. xinyiBigTableHour.setGyTwoSdclDl(tXinyiIndustry.getTwoSdclDl());
  1464. xinyiBigTableHour.setGyThreeSdclDl(tXinyiIndustry.getThreeSdclDl());
  1465. xinyiBigTableHour.setGyFourSdclDl(tXinyiIndustry.getFourSdclDl());
  1466. }
  1467. // 处理计算表
  1468. private void handleCalculateData(TXinyiBigTableHour xinyiBigTableHour, TXinyiCalculate xinyiCalculate) {
  1469. xinyiBigTableHour.setJsJsTdb(xinyiCalculate.getJsTdb());
  1470. xinyiBigTableHour.setJsJsTlb(xinyiCalculate.getJsTlb());
  1471. xinyiBigTableHour.setJsJsBodBCod(xinyiCalculate.getJsBodBCod());
  1472. xinyiBigTableHour.setJsYyqHrt(xinyiCalculate.getYyqHrt());
  1473. xinyiBigTableHour.setJsQyqHrt(xinyiCalculate.getQyqHrt());
  1474. xinyiBigTableHour.setJsHyqHrt(xinyiCalculate.getHyqHrt());
  1475. xinyiBigTableHour.setJsHfxwnndzb(xinyiCalculate.getHFXWNNDZB());
  1476. xinyiBigTableHour.setJsFM(xinyiCalculate.getFM());
  1477. xinyiBigTableHour.setJsGsls(xinyiCalculate.getGSLS());
  1478. xinyiBigTableHour.setJsGslsOne(xinyiCalculate.getGslsOne());
  1479. xinyiBigTableHour.setJsGslsTwo(xinyiCalculate.getGslsTwo());
  1480. xinyiBigTableHour.setJsXgsGsls(xinyiCalculate.getXgsGsls());
  1481. xinyiBigTableHour.setJsXlcscBmfh(xinyiCalculate.getXlcscBmfh());
  1482. xinyiBigTableHour.setJsXlcscHrt(xinyiCalculate.getXlcscHrt());
  1483. xinyiBigTableHour.setJsCccdcBmfh(xinyiCalculate.getCccdcBmfh());
  1484. xinyiBigTableHour.setJsCccdcHrt(xinyiCalculate.getCccdcHrt());
  1485. xinyiBigTableHour.setJsEccBmfh(xinyiCalculate.getEccBmfh());
  1486. xinyiBigTableHour.setJsEccHrt(xinyiCalculate.getEccHrt());
  1487. xinyiBigTableHour.setJsEccGtfh(xinyiCalculate.getEccGtfh());
  1488. xinyiBigTableHour.setJsClsnJcsj(xinyiCalculate.getClsnJcsj());
  1489. xinyiBigTableHour.setJsXgcdcQsqSsls(xinyiCalculate.getXgcdcQsqSsls());
  1490. xinyiBigTableHour.setJsWhlb(xinyiCalculate.getWHLB());
  1491. xinyiBigTableHour.setJsNhlb(xinyiCalculate.getNHLB());
  1492. xinyiBigTableHour.setJsWdscnl(xinyiCalculate.getWDSCNL());
  1493. xinyiBigTableHour.setJsQsb(xinyiCalculate.getQSB());
  1494. xinyiBigTableHour.setJsFcxsl(xinyiCalculate.getFCXSL());
  1495. xinyiBigTableHour.setJsFcxslbl(xinyiCalculate.getFCXSLBL());
  1496. //2024年7月11日15:57:20 外回流比采用新的公式计算
  1497. xinyiBigTableHour.setJsWhlbRN(xinyiCalculate.getWhlRN());
  1498. //2025年03月19日17:14:35 处理 超污染物限制 和 超污染物负荷 进出水五大指标相关计算
  1499. xinyiBigTableHour.setJsCsCodCwrwxz(xinyiCalculate.getCsCodCwrwxz());
  1500. xinyiBigTableHour.setJsCsSsCwrwxz(xinyiCalculate.getCsSsCwrwxz());
  1501. xinyiBigTableHour.setJsCsZdCwrwxz(xinyiCalculate.getCsZdCwrwxz());
  1502. xinyiBigTableHour.setJsCsZlCwrwxz(xinyiCalculate.getCsZlCwrwxz());
  1503. xinyiBigTableHour.setJsCsAdCwrwxz(xinyiCalculate.getCsAdCwrwxz());
  1504. xinyiBigTableHour.setJsJsCodCwrwfh(xinyiCalculate.getJsCodCwrwfh());
  1505. xinyiBigTableHour.setJsJsSsCwrwfh(xinyiCalculate.getJsSsCwrwfh());
  1506. xinyiBigTableHour.setJsJsZdCwrwfh(xinyiCalculate.getJsZdCwrwfh());
  1507. xinyiBigTableHour.setJsJsZlCwrwfh(xinyiCalculate.getJsZlCwrwfh());
  1508. xinyiBigTableHour.setJsJsAdCwrwfh(xinyiCalculate.getJsAdCwrwfh());
  1509. xinyiBigTableHour.setJsJsCodCwrwxz(xinyiCalculate.getJsCodCwrwxz());
  1510. xinyiBigTableHour.setJsJsSsCwrwxz(xinyiCalculate.getJsSsCwrwxz());
  1511. xinyiBigTableHour.setJsJsZdCwrwxz(xinyiCalculate.getJsZdCwrwxz());
  1512. xinyiBigTableHour.setJsJsZlCwrwxz(xinyiCalculate.getJsZlCwrwxz());
  1513. xinyiBigTableHour.setJsJsAdCwrwxz(xinyiCalculate.getJsAdCwrwxz());
  1514. }
  1515. // 处理日报
  1516. private void handleDailyData(TXinyiBigTableHour tXinyiBigTableHour, TXinyiDaily tXinyiDaily) {
  1517. tXinyiBigTableHour.setRbJsCod(tXinyiDaily.getJsCod());
  1518. tXinyiBigTableHour.setRbJsPh(tXinyiDaily.getJsPh());
  1519. tXinyiBigTableHour.setRbJsBod5(tXinyiDaily.getJsBod5());
  1520. tXinyiBigTableHour.setRbJsSs(tXinyiDaily.getJsSs());
  1521. tXinyiBigTableHour.setRbJsNh3(tXinyiDaily.getJsNh3());
  1522. tXinyiBigTableHour.setRbJsTn(tXinyiDaily.getJsTn());
  1523. tXinyiBigTableHour.setRbJsTp(tXinyiDaily.getJsTp());
  1524. tXinyiBigTableHour.setRbJsDcgj(tXinyiDaily.getJsDcgj());
  1525. tXinyiBigTableHour.setRbCsCod(tXinyiDaily.getCsCod());
  1526. tXinyiBigTableHour.setRbCsPh(tXinyiDaily.getCsPh());
  1527. tXinyiBigTableHour.setRbCsBod5(tXinyiDaily.getCsBod5());
  1528. tXinyiBigTableHour.setRbCsSs(tXinyiDaily.getCsSs());
  1529. tXinyiBigTableHour.setRbCsNh3(tXinyiDaily.getCsNh3());
  1530. tXinyiBigTableHour.setRbCsTn(tXinyiDaily.getCsTn());
  1531. tXinyiBigTableHour.setRbCsTp(tXinyiDaily.getCsTp());
  1532. tXinyiBigTableHour.setRbCsDcgj(tXinyiDaily.getCsDcgj());
  1533. tXinyiBigTableHour.setRbJsSw(tXinyiDaily.getJsSw());
  1534. tXinyiBigTableHour.setRbCsSw(tXinyiDaily.getCsSw());
  1535. tXinyiBigTableHour.setRbShcOnePh(tXinyiDaily.getShcOnePh());
  1536. tXinyiBigTableHour.setRbShcTwoPh(tXinyiDaily.getShcTwoPh());
  1537. tXinyiBigTableHour.setRbShcHyOneSv(tXinyiDaily.getShcHyOneSv());
  1538. tXinyiBigTableHour.setRbShcHyTwoSv(tXinyiDaily.getShcHyTwoSv());
  1539. tXinyiBigTableHour.setRbShcHyOneSvi(tXinyiDaily.getShcHyOneSvi());
  1540. tXinyiBigTableHour.setRbShcHyTwoSvi(tXinyiDaily.getShcHyTwoSvi());
  1541. tXinyiBigTableHour.setRbShcHyOneMlss(tXinyiDaily.getShcHyOneMlss());
  1542. tXinyiBigTableHour.setRbShcHyTwoMlss(tXinyiDaily.getShcHyTwoMlss());
  1543. tXinyiBigTableHour.setRbShcHyOneMlvss(tXinyiDaily.getShcHyOneMlvss());
  1544. tXinyiBigTableHour.setRbShcHyTwoMlvss(tXinyiDaily.getShcHyTwoMlvss());
  1545. tXinyiBigTableHour.setRbShcYyOneDo(tXinyiDaily.getShcYyOneDo());
  1546. tXinyiBigTableHour.setRbShcYyTwoDo(tXinyiDaily.getShcYyTwoDo());
  1547. tXinyiBigTableHour.setRbShcQyOneDo(tXinyiDaily.getShcQyOneDo());
  1548. tXinyiBigTableHour.setRbShcQyTwoDo(tXinyiDaily.getShcQyTwoDo());
  1549. tXinyiBigTableHour.setRbShcHyOneDo(tXinyiDaily.getShcHyOneDo());
  1550. tXinyiBigTableHour.setRbShcHyTwoDo(tXinyiDaily.getShcHyTwoDo());
  1551. tXinyiBigTableHour.setRbJsl(tXinyiDaily.getJSL());
  1552. tXinyiBigTableHour.setRbCsl(tXinyiDaily.getCSL());
  1553. tXinyiBigTableHour.setRbSdclcxsl(tXinyiDaily.getSDCLCXSL());
  1554. tXinyiBigTableHour.setRbQsb(tXinyiDaily.getQSB());
  1555. tXinyiBigTableHour.setRbFM(tXinyiDaily.getFM());
  1556. tXinyiBigTableHour.setRbYyHrt(tXinyiDaily.getYyHrt());
  1557. tXinyiBigTableHour.setRbHyHrt(tXinyiDaily.getHyHrt());
  1558. tXinyiBigTableHour.setRbQyHrt(tXinyiDaily.getQyHrt());
  1559. tXinyiBigTableHour.setRbNhlR(tXinyiDaily.getNhlR());
  1560. tXinyiBigTableHour.setRbWhlR(tXinyiDaily.getWhlR());
  1561. tXinyiBigTableHour.setRbSrt(tXinyiDaily.getSRT());
  1562. tXinyiBigTableHour.setRbCnl(tXinyiDaily.getCNL());
  1563. tXinyiBigTableHour.setRbTyqBod5Tn(tXinyiDaily.getTyqBod5Tn());
  1564. tXinyiBigTableHour.setRbTyhBod5Tn(tXinyiDaily.getTyhBod5Tn());
  1565. tXinyiBigTableHour.setRbHycRjyAll(tXinyiDaily.getHycRjyAll());
  1566. tXinyiBigTableHour.setRbHycWnndAll(tXinyiDaily.getHycWnndAll());
  1567. tXinyiBigTableHour.setRbYycRjyAll(tXinyiDaily.getYycRjyAll());
  1568. tXinyiBigTableHour.setRbQycRjyAll(tXinyiDaily.getQycRjyAll());
  1569. tXinyiBigTableHour.setRbWncjbAll(tXinyiDaily.getWncjbAll());
  1570. tXinyiBigTableHour.setRbWntjzsAll(tXinyiDaily.getWntjzsAll());
  1571. tXinyiBigTableHour.setRbHfxwnndAll(tXinyiDaily.getHfxwnndAll());
  1572. tXinyiBigTableHour.setRbChuniliang(tXinyiDaily.getCHUNILIANG());
  1573. tXinyiBigTableHour.setRbCnhsl(tXinyiDaily.getCNHSL());
  1574. tXinyiBigTableHour.setRbGwnl(tXinyiDaily.getGWNL());
  1575. tXinyiBigTableHour.setRbDf(tXinyiDaily.getDF());
  1576. tXinyiBigTableHour.setRbXnjf(tXinyiDaily.getXNJF());
  1577. tXinyiBigTableHour.setRbClf(tXinyiDaily.getCLF());
  1578. tXinyiBigTableHour.setRbTyf(tXinyiDaily.getTYF());
  1579. tXinyiBigTableHour.setRbXdjf(tXinyiDaily.getXDJF());
  1580. tXinyiBigTableHour.setRbQtyjf(tXinyiDaily.getQTYJF());
  1581. tXinyiBigTableHour.setRbCnf(tXinyiDaily.getCNF());
  1582. tXinyiBigTableHour.setRbZlsf(tXinyiDaily.getZLSF());
  1583. tXinyiBigTableHour.setRbZjcb(tXinyiDaily.getZJCB());
  1584. tXinyiBigTableHour.setRbDwcb(tXinyiDaily.getDWCB());
  1585. }
  1586. // 处理化验室
  1587. private void handleRobotData(TXinyiBigTableHour tXinyiBigTableHour, TXinyiRobot tXinyiRobot) {
  1588. tXinyiBigTableHour.setHyCodYb(tXinyiRobot.getCodYb());
  1589. tXinyiBigTableHour.setHyCodJqr(tXinyiRobot.getCodJqr());
  1590. tXinyiBigTableHour.setHyCodYz(tXinyiRobot.getCodYz());
  1591. tXinyiBigTableHour.setHyTpHl1Jqr(tXinyiRobot.getTpHl1Jqr());
  1592. tXinyiBigTableHour.setHyTpHl2Jqr(tXinyiRobot.getTpHl2Jqr());
  1593. tXinyiBigTableHour.setHyTpRccJqr(tXinyiRobot.getTpRccJqr());
  1594. tXinyiBigTableHour.setHyTp1Yz(tXinyiRobot.getTp1Yz());
  1595. tXinyiBigTableHour.setHyTp2Yz(tXinyiRobot.getTp2Yz());
  1596. tXinyiBigTableHour.setHyTpRccYz(tXinyiRobot.getTpRccYz());
  1597. tXinyiBigTableHour.setHyNh31Jqr(tXinyiRobot.getNh31Jqr());
  1598. tXinyiBigTableHour.setHyNh32Jqr(tXinyiRobot.getNh32Jqr());
  1599. tXinyiBigTableHour.setHyNh31Yz(tXinyiRobot.getNh31Yz());
  1600. tXinyiBigTableHour.setHyNo3Hlc1Yz(tXinyiRobot.getNo3Hlc1Yz());
  1601. tXinyiBigTableHour.setHyNh32Yz(tXinyiRobot.getNh32Yz());
  1602. tXinyiBigTableHour.setHyNo3Hlc2Yz(tXinyiRobot.getNo3Hlc2Yz());
  1603. tXinyiBigTableHour.setHyNo3Hlj1Jqr(tXinyiRobot.getNo3Hlj1Jqr());
  1604. tXinyiBigTableHour.setHyNo3Hlj2Jqr(tXinyiRobot.getNo3Hlj2Jqr());
  1605. tXinyiBigTableHour.setHyTyll(tXinyiRobot.getTYLL());
  1606. tXinyiBigTableHour.setHyNo3Qyc1Jqr(tXinyiRobot.getNo3Qyc1Jqr());
  1607. tXinyiBigTableHour.setHyNo3Qyc2Jqr(tXinyiRobot.getNo3Qyc2Jqr());
  1608. tXinyiBigTableHour.setHyNo3Qyc1Yz(tXinyiRobot.getNo3Qyc1Yz());
  1609. tXinyiBigTableHour.setHyNo3Qyc2Yz(tXinyiRobot.getNo3Qyc2Yz());
  1610. tXinyiBigTableHour.setHyJsll(tXinyiRobot.getJSLL());
  1611. tXinyiBigTableHour.setHyHycxsyAll(tXinyiRobot.getHycxsyAll());
  1612. tXinyiBigTableHour.setHyQyanAll(tXinyiRobot.getQyanAll());
  1613. tXinyiBigTableHour.setHyQyckxsyAll(tXinyiRobot.getQyckxsyAll());
  1614. tXinyiBigTableHour.setHyHyzlsyAll(tXinyiRobot.getHyzlsyAll());
  1615. }
  1616. private void handlePredictorWarning(String[] split, String hour, String task, List<TXinyiIndustry> tXinyiIndustries6, List<TXinyiRobot> tXinyiRobots6, String date) {
  1617. String[] hours = hour.split(",");
  1618. //2024年6月23日18:28:55 因为存在跨天问题 所以日期也是逗号拼接的
  1619. String[] dates = date.split(",");
  1620. //2024年6月18日13:41:10 统一格式,否则查询不到结果
  1621. //2024年6月18日10:36:49 增加预测记录,预测准确度计算等
  1622. TXinyiForecastComparison tXinyiForecastComparison = new TXinyiForecastComparison();
  1623. //2024年7月11日17:04:11 TP改为zlsy
  1624. tXinyiForecastComparison.setCategory(BusinessEnum.BigModelForecastEnum.TP.getCode().equalsIgnoreCase(task) ? BusinessEnum.BigModelForecastEnum.ZLSY.getCode() : task);
  1625. tXinyiForecastComparison.setForecastTimeOne(dates[0].replaceAll("-", "/") + " " + hours[0]);
  1626. tXinyiForecastComparison.setForecastTimeTwo(dates[1].replaceAll("-", "/") + " " + hours[1]);
  1627. tXinyiForecastComparison.setForecastTimeThree(dates[2].replaceAll("-", "/") + " " + hours[2]);
  1628. tXinyiForecastComparison.setHsForecastOne(new BigDecimal(split[0]));
  1629. tXinyiForecastComparison.setHsForecastTwo(new BigDecimal(split[1]));
  1630. tXinyiForecastComparison.setHsForecastThree(new BigDecimal(split[2]));
  1631. //2024年6月20日14:28:31 增加字段,方便查询
  1632. tXinyiForecastComparison.setRemark(DateUtil.format(DateUtils.getNowDate(), DateUtils.YYYYMMDDHH_TS));
  1633. //防止工业库挂掉以后持续预测同一数据
  1634. //2024年6月20日14:59:23 因为预测bug(以工业库为准,假如工业库挂了,获取的全是挂了时间段后的三小时) 判断是否生成过了否则不生成
  1635. TXinyiForecastComparison tXinyiForecastComparisonReq = new TXinyiForecastComparison();
  1636. //2024年08月20日16:24:56 因为remark存放的是当前时间,也就是每个小时的,所以都是不一样的,修复此bug
  1637. // tXinyiForecastComparisonReq.setRemark(tXinyiForecastComparison.getRemark());
  1638. tXinyiForecastComparisonReq.setCategory(tXinyiForecastComparison.getCategory());
  1639. //2024年7月18日15:04:37 如果工业库挂掉以后,不管什么时刻,调用预测返回的未来三小时时间都是一样的,再增加一个查询条件
  1640. tXinyiForecastComparisonReq.setForecastTimeOne(tXinyiForecastComparison.getForecastTimeOne());//一个时刻就可以了 没必要再比较第二和第三时刻了。
  1641. List<TXinyiForecastComparison> tXinyiForecastComparisons = this.xinyiForecastComparisonService.selectTXinyiForecastComparisonList(tXinyiForecastComparisonReq);
  1642. if(!CollectionUtils.isEmpty(tXinyiForecastComparisons)){
  1643. log.error("预测已经进行过了,无需重复运行~~~~~~~~~~~@@@@@@@,要保存的预测数据为{}", JSON.toJSONString(tXinyiForecastComparison));
  1644. return;
  1645. }
  1646. //获取配置表
  1647. List<TXinyiNormConfig> tXinyiNormConfigs = this.xinyiNormConfigMapper.selectTXinyiNormConfigList(null);
  1648. if(CollectionUtils.isEmpty(tXinyiNormConfigs)) {
  1649. log.error( "未查询到配置信息");
  1650. return;
  1651. }
  1652. TXinyiNormConfig normConfig = tXinyiNormConfigs.get(0);
  1653. //获取最新的工业库的数据
  1654. // TXinyiIndustry tXinyiIndustry = this.xinyiIndustryMapper.selectTXinyiIndustryNewest();
  1655. //2024年7月18日10:29:44 因为获取了最新的六条数据,所以无需再查询最新的数据了
  1656. TXinyiIndustry tXinyiIndustry = tXinyiIndustries6.get(0);
  1657. TXinyiRobot tXinyiRobot = tXinyiRobots6.get(0);
  1658. List<ChartBasic> chartsDataList = new ArrayList<>(9);
  1659. if(BusinessEnum.BigModelForecastEnum.COD.getCode().equals(task)){
  1660. //同时调用跃渊的预测接口 保存记录值
  1661. try {
  1662. String result = HttpUtil.get("http://10.0.3.52:10003/system/forecast?type=2&time=" + DateUtil.format(DateUtils.getNowDate(), DateUtils.YYYY_MM_DD_HH), INT_10000);
  1663. if(!StringUtils.isBlank(result)){
  1664. JSONArray array = JSON.parseArray(result);
  1665. tXinyiForecastComparison.setYyForecastOne(array.getBigDecimal(6));
  1666. tXinyiForecastComparison.setYyForecastTwo(array.getBigDecimal(7));
  1667. tXinyiForecastComparison.setYyForecastThree(array.getBigDecimal(8));
  1668. }
  1669. } catch (Exception e) {
  1670. log.error("调用跃渊的预测接口出现异常,异常信息为{}", e.getMessage());
  1671. }
  1672. // this.xinyiForecastComparisonService.insertTXinyiForecastComparison(tXinyiForecastComparison);
  1673. BigDecimal cscodBzz = normConfig.getCscodBzz();
  1674. BigDecimal cscodGkz = normConfig.getCscodGkz();
  1675. //处理展示数据
  1676. for (int i = 0; i < tXinyiIndustries6.size(); i++) {
  1677. TXinyiIndustry tXinyiIndustryTemp = tXinyiIndustries6.get(5 - i);
  1678. ChartBasic chartBasic = new ChartBasic();
  1679. chartBasic.setTime(tXinyiIndustryTemp.getTestHour().substring(11));
  1680. chartBasic.setVal(DecimalUtils.getAbsAndScale(tXinyiIndustryTemp.getCsCod(), INT_2));
  1681. chartsDataList.add(chartBasic);
  1682. }
  1683. for (int i = 0; i < split.length; i++) {
  1684. String val = split[i];
  1685. ChartBasic chartBasic = new ChartBasic();
  1686. chartBasic.setTime(hours[i]);
  1687. chartBasic.setVal(DecimalUtils.getAbsAndScale(new BigDecimal(val), INT_2));
  1688. chartsDataList.add(chartBasic);
  1689. }
  1690. ryTask.handleXinYiWarningsYC(cscodBzz, split, cscodGkz, BusinessEnum.WarningCategoryEnum.CS_COD_YC.getCode(), hour, normConfig, tXinyiIndustry.getCsCod(), tXinyiIndustry, chartsDataList, date);
  1691. }else if(BusinessEnum.BigModelForecastEnum.SS.getCode().equals(task)){
  1692. //同时调用跃渊的预测接口 保存记录值
  1693. try {
  1694. String result = HttpUtil.get("http://10.0.3.52:10003/system/forecast?type=5&time=" + DateUtil.format(DateUtils.getNowDate(), DateUtils.YYYY_MM_DD_HH), INT_10000);
  1695. if(!StringUtils.isBlank(result)){
  1696. JSONArray array = JSON.parseArray(result);
  1697. tXinyiForecastComparison.setYyForecastOne(array.getBigDecimal(6));
  1698. tXinyiForecastComparison.setYyForecastTwo(array.getBigDecimal(7));
  1699. tXinyiForecastComparison.setYyForecastThree(array.getBigDecimal(8));
  1700. }
  1701. } catch (Exception e) {
  1702. log.error("调用跃渊的预测接口出现异常,异常信息为{}", e.getMessage());
  1703. }
  1704. // this.xinyiForecastComparisonService.insertTXinyiForecastComparison(tXinyiForecastComparison);
  1705. BigDecimal csSSBzz = normConfig.getCsssBzz();
  1706. BigDecimal csssGkz = normConfig.getCsssGkz();
  1707. //处理展示数据
  1708. for (int i = 0; i < tXinyiIndustries6.size(); i++) {
  1709. TXinyiIndustry tXinyiIndustryTemp = tXinyiIndustries6.get(5 - i);
  1710. ChartBasic chartBasic = new ChartBasic();
  1711. chartBasic.setTime(tXinyiIndustryTemp.getTestHour().substring(11));
  1712. chartBasic.setVal(DecimalUtils.getAbsAndScale(tXinyiIndustryTemp.getCsSs(), INT_2));
  1713. chartsDataList.add(chartBasic);
  1714. }
  1715. for (int i = 0; i < split.length; i++) {
  1716. String val = split[i];
  1717. ChartBasic chartBasic = new ChartBasic();
  1718. chartBasic.setTime(hours[i]);
  1719. chartBasic.setVal(DecimalUtils.getAbsAndScale(new BigDecimal(val), INT_2));
  1720. chartsDataList.add(chartBasic);
  1721. }
  1722. ryTask.handleXinYiWarningsYC(csSSBzz, split, csssGkz, BusinessEnum.WarningCategoryEnum.CS_SS_YC.getCode(), hour, normConfig, tXinyiIndustry.getCsSs(), tXinyiIndustry, chartsDataList, date);
  1723. }/*else if(BusinessEnum.BigModelForecastEnum.TN.getCode().equals(task)){
  1724. //同时调用跃渊的预测接口 保存记录值
  1725. try {
  1726. String result = HttpUtil.get("http://10.0.3.52:10003/system/forecast?type=3&time=" + DateUtil.format(DateUtils.getNowDate(), DateUtils.YYYY_MM_DD_HH), INT_10);
  1727. if(!StringUtils.isBlank(result)){
  1728. JSONArray array = JSON.parseArray(result);
  1729. tXinyiForecastComparison.setYyForecastOne(array.getBigDecimal(6));
  1730. tXinyiForecastComparison.setYyForecastTwo(array.getBigDecimal(7));
  1731. tXinyiForecastComparison.setYyForecastThree(array.getBigDecimal(8));
  1732. }
  1733. } catch (Exception e) {
  1734. log.error("调用跃渊的预测接口出现异常,异常信息为{}", e.getMessage());
  1735. }
  1736. // this.xinyiForecastComparisonService.insertTXinyiForecastComparison(tXinyiForecastComparison);
  1737. BigDecimal cszzBzz = normConfig.getCszzBzz();
  1738. BigDecimal cszzGkz = normConfig.getCszzGkz();
  1739. //处理展示数据
  1740. for (int i = 0; i < tXinyiIndustries6.size(); i++) {
  1741. TXinyiIndustry tXinyiIndustryTemp = tXinyiIndustries6.get(5 - i);
  1742. ChartBasic chartBasic = new ChartBasic();
  1743. chartBasic.setTime(tXinyiIndustryTemp.getTestHour().substring(11));
  1744. chartBasic.setVal(DecimalUtils.getAbsAndScale(tXinyiIndustryTemp.getCsTn(), INT_2));
  1745. chartsDataList.add(chartBasic);
  1746. }
  1747. for (int i = 0; i < split.length; i++) {
  1748. String val = split[i];
  1749. ChartBasic chartBasic = new ChartBasic();
  1750. chartBasic.setTime(hours[i]);
  1751. chartBasic.setVal(DecimalUtils.getAbsAndScale(new BigDecimal(val), INT_2));
  1752. chartsDataList.add(chartBasic);
  1753. }
  1754. handleXinYiWarningsYC(cszzBzz, split, cszzGkz, BusinessEnum.WarningCategoryEnum.CS_TN_YC.getCode(), hour, normConfig,tXinyiIndustry.getCsCod(), tXinyiIndustry, chartsDataList, date);
  1755. }*/else if(BusinessEnum.BigModelForecastEnum.TP.getCode().equals(task)){
  1756. //同时调用跃渊的预测接口 保存记录值
  1757. try {
  1758. String result = HttpUtil.get("http://10.0.3.52:10003/system/forecast?type=1&time=" + DateUtil.format(DateUtils.getNowDate(), DateUtils.YYYY_MM_DD_HH), INT_10000);
  1759. if(!StringUtils.isBlank(result)){
  1760. JSONArray array = JSON.parseArray(result);
  1761. tXinyiForecastComparison.setYyForecastOne(array.getBigDecimal(6));
  1762. tXinyiForecastComparison.setYyForecastTwo(array.getBigDecimal(7));
  1763. tXinyiForecastComparison.setYyForecastThree(array.getBigDecimal(8));
  1764. }
  1765. } catch (Exception e) {
  1766. log.error("调用跃渊的预测接口出现异常,异常信息为{}", e.getMessage());
  1767. }
  1768. // this.xinyiForecastComparisonService.insertTXinyiForecastComparison(tXinyiForecastComparison);
  1769. BigDecimal cszlBzz = normConfig.getCszlBzz();
  1770. BigDecimal cszlGkz = normConfig.getCszlGkz();
  1771. //处理展示数据
  1772. for (int i = 0; i < tXinyiRobots6.size(); i++) {
  1773. TXinyiRobot tXinyiRobotTemp = tXinyiRobots6.get(5 - i);
  1774. ChartBasic chartBasic = new ChartBasic();
  1775. chartBasic.setTime(tXinyiRobotTemp.getTestHour().substring(11));
  1776. chartBasic.setVal(DecimalUtils.getAbsAndScale(tXinyiRobotTemp.getTpRccJqr(), INT_2));
  1777. chartsDataList.add(chartBasic);
  1778. }
  1779. for (int i = 0; i < split.length; i++) {
  1780. String val = split[i];
  1781. ChartBasic chartBasic = new ChartBasic();
  1782. chartBasic.setTime(hours[i]);
  1783. chartBasic.setVal(DecimalUtils.getAbsAndScale(new BigDecimal(val), INT_2));
  1784. chartsDataList.add(chartBasic);
  1785. }
  1786. ryTask.handleXinYiWarningsYC(cszlBzz, split, cszlGkz, CS_TP_YC.getCode(), hour, normConfig, tXinyiRobot.getTpRccJqr(), tXinyiIndustry, chartsDataList, date);
  1787. }else if(BusinessEnum.BigModelForecastEnum.NH3.getCode().equals(task)){
  1788. //同时调用跃渊的预测接口 保存记录值
  1789. try {
  1790. String result = HttpUtil.get("http://10.0.3.52:10003/system/forecast?type=4&time=" + DateUtil.format(DateUtils.getNowDate(), DateUtils.YYYY_MM_DD_HH), INT_10000);
  1791. if(!StringUtils.isBlank(result)){
  1792. JSONArray array = JSON.parseArray(result);
  1793. tXinyiForecastComparison.setYyForecastOne(array.getBigDecimal(6));
  1794. tXinyiForecastComparison.setYyForecastTwo(array.getBigDecimal(7));
  1795. tXinyiForecastComparison.setYyForecastThree(array.getBigDecimal(8));
  1796. }
  1797. } catch (Exception e) {
  1798. log.error("调用跃渊的预测接口出现异常,异常信息为{}", e.getMessage());
  1799. }
  1800. // this.xinyiForecastComparisonService.insertTXinyiForecastComparison(tXinyiForecastComparison);
  1801. BigDecimal csadBzz = normConfig.getCsadBzz();
  1802. BigDecimal csadGkz = normConfig.getCsadGkz();
  1803. //处理展示数据
  1804. for (int i = 0; i < tXinyiIndustries6.size(); i++) {
  1805. TXinyiIndustry tXinyiIndustryTemp = tXinyiIndustries6.get(5 - i);
  1806. ChartBasic chartBasic = new ChartBasic();
  1807. chartBasic.setTime(tXinyiIndustryTemp.getTestHour().substring(11));
  1808. chartBasic.setVal(DecimalUtils.getAbsAndScale(tXinyiIndustryTemp.getCsNh3(), INT_2));
  1809. chartsDataList.add(chartBasic);
  1810. }
  1811. for (int i = 0; i < split.length; i++) {
  1812. String val = split[i];
  1813. ChartBasic chartBasic = new ChartBasic();
  1814. chartBasic.setTime(hours[i]);
  1815. chartBasic.setVal(DecimalUtils.getAbsAndScale(new BigDecimal(val), INT_2));
  1816. chartsDataList.add(chartBasic);
  1817. }
  1818. ryTask.handleXinYiWarningsYC(csadBzz, split, csadGkz, BusinessEnum.WarningCategoryEnum.CS_AD_YC.getCode(), hour, normConfig, tXinyiIndustry.getCsNh3(), tXinyiIndustry, chartsDataList, date);
  1819. }else if(BusinessEnum.BigModelForecastEnum.XSY1.getCode().equals(task)){
  1820. //2024年6月21日14:57:02 红杉的出水总氮预测改成 不用工业库的,用化验科的两个xsy 相关指标
  1821. //同时调用跃渊的预测接口 保存记录值
  1822. try {
  1823. String result = HttpUtil.get("http://10.0.3.52:10003/system/forecast?type=6&time=" + DateUtil.format(DateUtils.getNowDate(), DateUtils.YYYY_MM_DD_HH), INT_10000);
  1824. if(!StringUtils.isBlank(result)){
  1825. JSONArray array = JSON.parseArray(result);
  1826. tXinyiForecastComparison.setYyForecastOne(array.getBigDecimal(6));
  1827. tXinyiForecastComparison.setYyForecastTwo(array.getBigDecimal(7));
  1828. tXinyiForecastComparison.setYyForecastThree(array.getBigDecimal(8));
  1829. }
  1830. } catch (Exception e) {
  1831. log.error("调用跃渊的预测接口出现异常,异常信息为{}", e.getMessage());
  1832. }
  1833. // this.xinyiForecastComparisonService.insertTXinyiForecastComparison(tXinyiForecastComparison);
  1834. /*BigDecimal cscodBzz = new BigDecimal(XIAOSUANYAN_BZK);
  1835. BigDecimal cscodGkz = new BigDecimal(XIAOSUANYAN_GKZ);*/
  1836. //2024年7月11日17:19:47 1#好氧硝酸盐、2#好氧硝酸盐使用总氮标准值和管控值来预警
  1837. BigDecimal cszzBzz = normConfig.getCszzBzz();
  1838. BigDecimal cszzGkz = normConfig.getCszzGkz();
  1839. //处理展示数据
  1840. for (int i = 0; i < tXinyiRobots6.size(); i++) {
  1841. TXinyiRobot tXinyiRobotTemp = tXinyiRobots6.get(5 - i);
  1842. ChartBasic chartBasic = new ChartBasic();
  1843. chartBasic.setTime(tXinyiRobotTemp.getTestHour().substring(11));
  1844. chartBasic.setVal(DecimalUtils.getAbsAndScale(tXinyiRobotTemp.getNo3Hlj1Jqr(), INT_2));
  1845. chartsDataList.add(chartBasic);
  1846. }
  1847. for (int i = 0; i < split.length; i++) {
  1848. String val = split[i];
  1849. ChartBasic chartBasic = new ChartBasic();
  1850. chartBasic.setTime(hours[i]);
  1851. chartBasic.setVal(DecimalUtils.getAbsAndScale(new BigDecimal(val), INT_2));
  1852. chartsDataList.add(chartBasic);
  1853. }
  1854. ryTask.handleXinYiWarningsYC(cszzBzz, split, cszzGkz, BusinessEnum.WarningCategoryEnum.CS_XSY_1_YC.getCode(), hour, normConfig, tXinyiRobot.getNo3Hlj1Jqr(), tXinyiIndustry, chartsDataList, date);
  1855. }else if(BusinessEnum.BigModelForecastEnum.XSY2.getCode().equals(task)){
  1856. //同时调用跃渊的预测接口 保存记录值
  1857. try {
  1858. String result = HttpUtil.get("http://10.0.3.52:10003/system/forecast?type=7&time=" + DateUtil.format(DateUtils.getNowDate(), DateUtils.YYYY_MM_DD_HH), INT_10000);
  1859. if(!StringUtils.isBlank(result)){
  1860. JSONArray array = JSON.parseArray(result);
  1861. tXinyiForecastComparison.setYyForecastOne(array.getBigDecimal(6));
  1862. tXinyiForecastComparison.setYyForecastTwo(array.getBigDecimal(7));
  1863. tXinyiForecastComparison.setYyForecastThree(array.getBigDecimal(8));
  1864. }
  1865. } catch (Exception e) {
  1866. log.error("调用跃渊的预测接口出现异常,异常信息为{}", e.getMessage());
  1867. }
  1868. // this.xinyiForecastComparisonService.insertTXinyiForecastComparison(tXinyiForecastComparison);
  1869. /*BigDecimal cscodBzz = new BigDecimal(XIAOSUANYAN_BZK);
  1870. BigDecimal cscodGkz = new BigDecimal(XIAOSUANYAN_GKZ);*/
  1871. //2024年7月11日17:19:47 1#好氧硝酸盐、2#好氧硝酸盐使用总氮标准值和管控值来预警
  1872. BigDecimal cszzBzz = normConfig.getCszzBzz();
  1873. BigDecimal cszzGkz = normConfig.getCszzGkz();
  1874. //处理展示数据
  1875. for (int i = 0; i < tXinyiRobots6.size(); i++) {
  1876. TXinyiRobot tXinyiRobotTemp = tXinyiRobots6.get(5 - i);
  1877. ChartBasic chartBasic = new ChartBasic();
  1878. chartBasic.setTime(tXinyiRobotTemp.getTestHour().substring(11));
  1879. chartBasic.setVal(DecimalUtils.getAbsAndScale(tXinyiRobotTemp.getNo3Hlj2Jqr(), INT_2));
  1880. chartsDataList.add(chartBasic);
  1881. }
  1882. for (int i = 0; i < split.length; i++) {
  1883. String val = split[i];
  1884. ChartBasic chartBasic = new ChartBasic();
  1885. chartBasic.setTime(hours[i]);
  1886. chartBasic.setVal(DecimalUtils.getAbsAndScale(new BigDecimal(val), INT_2));
  1887. chartsDataList.add(chartBasic);
  1888. }
  1889. ryTask.handleXinYiWarningsYC(cszzBzz, split, cszzGkz, BusinessEnum.WarningCategoryEnum.CS_XSY_2_YC.getCode(), hour, normConfig, tXinyiRobot.getNo3Hlj2Jqr(), tXinyiIndustry, chartsDataList, date);
  1890. }else if(BusinessEnum.BigModelForecastEnum.QYXSY1.getCode().equals(task)){
  1891. //同时调用跃渊的预测接口 保存记录值
  1892. /*try {
  1893. String result = HttpUtil.get("http://10.0.3.52:10003/system/forecast?type=7&time=" + DateUtil.format(DateUtils.getNowDate(), DateUtils.YYYY_MM_DD_HH), INT_10000);
  1894. if(!StringUtils.isBlank(result)){
  1895. JSONArray array = JSON.parseArray(result);
  1896. tXinyiForecastComparison.setYyForecastOne(array.getBigDecimal(6));
  1897. tXinyiForecastComparison.setYyForecastTwo(array.getBigDecimal(7));
  1898. tXinyiForecastComparison.setYyForecastThree(array.getBigDecimal(8));
  1899. }
  1900. } catch (Exception e) {
  1901. log.error("调用跃渊的预测接口出现异常,异常信息为{}", e.getMessage());
  1902. }*/
  1903. // this.xinyiForecastComparisonService.insertTXinyiForecastComparison(tXinyiForecastComparison);
  1904. /*BigDecimal cscodBzz = new BigDecimal(XIAOSUANYAN_BZK);
  1905. BigDecimal cscodGkz = new BigDecimal(XIAOSUANYAN_GKZ);*/
  1906. //2024年7月11日17:19:47 1#好氧硝酸盐、2#好氧硝酸盐使用总氮标准值和管控值来预警
  1907. BigDecimal cszzBzz = normConfig.getCszzBzz();
  1908. BigDecimal cszzGkz = normConfig.getCszzGkz();
  1909. //处理展示数据
  1910. for (int i = 0; i < tXinyiRobots6.size(); i++) {
  1911. TXinyiRobot tXinyiRobotTemp = tXinyiRobots6.get(5 - i);
  1912. ChartBasic chartBasic = new ChartBasic();
  1913. chartBasic.setTime(tXinyiRobotTemp.getTestHour().substring(11));
  1914. chartBasic.setVal(DecimalUtils.getAbsAndScale(tXinyiRobotTemp.getNo3Qyc1Jqr(), INT_2));
  1915. chartsDataList.add(chartBasic);
  1916. }
  1917. for (int i = 0; i < split.length; i++) {
  1918. String val = split[i];
  1919. ChartBasic chartBasic = new ChartBasic();
  1920. chartBasic.setTime(hours[i]);
  1921. chartBasic.setVal(DecimalUtils.getAbsAndScale(new BigDecimal(val), INT_2));
  1922. chartsDataList.add(chartBasic);
  1923. }
  1924. // ryTask.handleXinYiWarningsYC(cszzBzz, split, cszzGkz, BusinessEnum.WarningCategoryEnum.QYCXSY_1.getCode(), hour, normConfig, tXinyiRobot.getNo3Hlj2Jqr(), tXinyiIndustry, chartsDataList, date);
  1925. }else if(BusinessEnum.BigModelForecastEnum.QYXSY2.getCode().equals(task)){
  1926. //同时调用跃渊的预测接口 保存记录值
  1927. /*try {
  1928. String result = HttpUtil.get("http://10.0.3.52:10003/system/forecast?type=7&time=" + DateUtil.format(DateUtils.getNowDate(), DateUtils.YYYY_MM_DD_HH), INT_10000);
  1929. if(!StringUtils.isBlank(result)){
  1930. JSONArray array = JSON.parseArray(result);
  1931. tXinyiForecastComparison.setYyForecastOne(array.getBigDecimal(6));
  1932. tXinyiForecastComparison.setYyForecastTwo(array.getBigDecimal(7));
  1933. tXinyiForecastComparison.setYyForecastThree(array.getBigDecimal(8));
  1934. }
  1935. } catch (Exception e) {
  1936. log.error("调用跃渊的预测接口出现异常,异常信息为{}", e.getMessage());
  1937. }*/
  1938. // this.xinyiForecastComparisonService.insertTXinyiForecastComparison(tXinyiForecastComparison);
  1939. /*BigDecimal cscodBzz = new BigDecimal(XIAOSUANYAN_BZK);
  1940. BigDecimal cscodGkz = new BigDecimal(XIAOSUANYAN_GKZ);*/
  1941. //2024年7月11日17:19:47 1#好氧硝酸盐、2#好氧硝酸盐使用总氮标准值和管控值来预警
  1942. BigDecimal cszzBzz = normConfig.getCszzBzz();
  1943. BigDecimal cszzGkz = normConfig.getCszzGkz();
  1944. //处理展示数据
  1945. for (int i = 0; i < tXinyiRobots6.size(); i++) {
  1946. TXinyiRobot tXinyiRobotTemp = tXinyiRobots6.get(5 - i);
  1947. ChartBasic chartBasic = new ChartBasic();
  1948. chartBasic.setTime(tXinyiRobotTemp.getTestHour().substring(11));
  1949. chartBasic.setVal(DecimalUtils.getAbsAndScale(tXinyiRobotTemp.getNo3Qyc2Jqr(), INT_2));
  1950. chartsDataList.add(chartBasic);
  1951. }
  1952. for (int i = 0; i < split.length; i++) {
  1953. String val = split[i];
  1954. ChartBasic chartBasic = new ChartBasic();
  1955. chartBasic.setTime(hours[i]);
  1956. chartBasic.setVal(DecimalUtils.getAbsAndScale(new BigDecimal(val), INT_2));
  1957. chartsDataList.add(chartBasic);
  1958. }
  1959. // ryTask.handleXinYiWarningsYC(cszzBzz, split, cszzGkz, BusinessEnum.WarningCategoryEnum.QYCXSY_2.getCode(), hour, normConfig, tXinyiRobot.getNo3Hlj2Jqr(), tXinyiIndustry, chartsDataList, date);
  1960. }else if(BusinessEnum.BigModelForecastEnum.QYNH31.getCode().equals(task)){
  1961. //同时调用跃渊的预测接口 保存记录值
  1962. /*try {
  1963. String result = HttpUtil.get("http://10.0.3.52:10003/system/forecast?type=7&time=" + DateUtil.format(DateUtils.getNowDate(), DateUtils.YYYY_MM_DD_HH), INT_10000);
  1964. if(!StringUtils.isBlank(result)){
  1965. JSONArray array = JSON.parseArray(result);
  1966. tXinyiForecastComparison.setYyForecastOne(array.getBigDecimal(6));
  1967. tXinyiForecastComparison.setYyForecastTwo(array.getBigDecimal(7));
  1968. tXinyiForecastComparison.setYyForecastThree(array.getBigDecimal(8));
  1969. }
  1970. } catch (Exception e) {
  1971. log.error("调用跃渊的预测接口出现异常,异常信息为{}", e.getMessage());
  1972. }*/
  1973. // this.xinyiForecastComparisonService.insertTXinyiForecastComparison(tXinyiForecastComparison);
  1974. /*BigDecimal cscodBzz = new BigDecimal(XIAOSUANYAN_BZK);
  1975. BigDecimal cscodGkz = new BigDecimal(XIAOSUANYAN_GKZ);*/
  1976. //2024年09月08日11:21:25 采用出水氨氮的标准值和管控值
  1977. BigDecimal csadBzz = normConfig.getCsadBzz();
  1978. BigDecimal csadGkz = normConfig.getCsadGkz();
  1979. //处理展示数据
  1980. for (int i = 0; i < tXinyiRobots6.size(); i++) {
  1981. TXinyiRobot tXinyiRobotTemp = tXinyiRobots6.get(5 - i);
  1982. ChartBasic chartBasic = new ChartBasic();
  1983. chartBasic.setTime(tXinyiRobotTemp.getTestHour().substring(11));
  1984. chartBasic.setVal(DecimalUtils.getAbsAndScale(tXinyiRobotTemp.getNh31Jqr(), INT_2));
  1985. chartsDataList.add(chartBasic);
  1986. }
  1987. for (int i = 0; i < split.length; i++) {
  1988. String val = split[i];
  1989. ChartBasic chartBasic = new ChartBasic();
  1990. chartBasic.setTime(hours[i]);
  1991. chartBasic.setVal(DecimalUtils.getAbsAndScale(new BigDecimal(val), INT_2));
  1992. chartsDataList.add(chartBasic);
  1993. }
  1994. // ryTask.handleXinYiWarningsYC(csadBzz, split, csadGkz, BusinessEnum.WarningCategoryEnum.QYAD_1.getCode(), hour, normConfig, tXinyiRobot.getNo3Hlj2Jqr(), tXinyiIndustry, chartsDataList, date);
  1995. }else if(BusinessEnum.BigModelForecastEnum.QYNH32.getCode().equals(task)){
  1996. //同时调用跃渊的预测接口 保存记录值
  1997. /*try {
  1998. String result = HttpUtil.get("http://10.0.3.52:10003/system/forecast?type=7&time=" + DateUtil.format(DateUtils.getNowDate(), DateUtils.YYYY_MM_DD_HH), INT_10000);
  1999. if(!StringUtils.isBlank(result)){
  2000. JSONArray array = JSON.parseArray(result);
  2001. tXinyiForecastComparison.setYyForecastOne(array.getBigDecimal(6));
  2002. tXinyiForecastComparison.setYyForecastTwo(array.getBigDecimal(7));
  2003. tXinyiForecastComparison.setYyForecastThree(array.getBigDecimal(8));
  2004. }
  2005. } catch (Exception e) {
  2006. log.error("调用跃渊的预测接口出现异常,异常信息为{}", e.getMessage());
  2007. }*/
  2008. // this.xinyiForecastComparisonService.insertTXinyiForecastComparison(tXinyiForecastComparison);
  2009. /*BigDecimal cscodBzz = new BigDecimal(XIAOSUANYAN_BZK);
  2010. BigDecimal cscodGkz = new BigDecimal(XIAOSUANYAN_GKZ);*/
  2011. //2024年09月08日11:21:25 采用出水氨氮的标准值和管控值
  2012. BigDecimal csadBzz = normConfig.getCsadBzz();
  2013. BigDecimal csadGkz = normConfig.getCsadGkz();
  2014. //处理展示数据
  2015. for (int i = 0; i < tXinyiRobots6.size(); i++) {
  2016. TXinyiRobot tXinyiRobotTemp = tXinyiRobots6.get(5 - i);
  2017. ChartBasic chartBasic = new ChartBasic();
  2018. chartBasic.setTime(tXinyiRobotTemp.getTestHour().substring(11));
  2019. chartBasic.setVal(DecimalUtils.getAbsAndScale(tXinyiRobotTemp.getNh32Jqr(), INT_2));
  2020. chartsDataList.add(chartBasic);
  2021. }
  2022. for (int i = 0; i < split.length; i++) {
  2023. String val = split[i];
  2024. ChartBasic chartBasic = new ChartBasic();
  2025. chartBasic.setTime(hours[i]);
  2026. chartBasic.setVal(DecimalUtils.getAbsAndScale(new BigDecimal(val), INT_2));
  2027. chartsDataList.add(chartBasic);
  2028. }
  2029. // ryTask.handleXinYiWarningsYC(csadBzz, split, csadGkz, BusinessEnum.WarningCategoryEnum.QYAD_2.getCode(), hour, normConfig, tXinyiRobot.getNo3Hlj2Jqr(), tXinyiIndustry, chartsDataList, date);
  2030. }else {
  2031. log.error("暂未支持的类型{}", task);
  2032. }
  2033. //插入到数据库
  2034. //2024年6月21日14:18:55 如果红杉预测和跃渊预测都有数据再保存
  2035. //2024年7月8日15:15:46 逻辑调整:只要红杉的数据不为空就保存
  2036. if(Objects.isNull(tXinyiForecastComparison.getHsForecastOne()) || Objects.isNull(tXinyiForecastComparison.getHsForecastTwo()) ||Objects.isNull(tXinyiForecastComparison.getHsForecastThree())){
  2037. // || Objects.isNull(tXinyiForecastComparison.getYyForecastOne()) || Objects.isNull(tXinyiForecastComparison.getYyForecastTwo()) || Objects.isNull(tXinyiForecastComparison.getYyForecastThree())){
  2038. log.error("保存预测对比数据时,有存在不满足条件的数据,不再保存数据,数据为{}", JSON.toJSONString(tXinyiForecastComparison));
  2039. }else
  2040. xinyiForecastComparisonService.insertTXinyiForecastComparison(tXinyiForecastComparison);
  2041. }
  2042. }