TXlhtMedicineParamServiceImpl.java 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. package com.xlht.xlhtproject.service.impl;
  2. import com.xlht.xlhtproject.domain.SmartAdd;
  3. import com.xlht.xlhtproject.domain.TTbDu;
  4. import com.xlht.xlhtproject.domain.TXlhtMedicineParam;
  5. import com.xlht.xlhtproject.mapper.TShuju1Mapper;
  6. import com.xlht.xlhtproject.mapper.TTbDuMapper;
  7. import com.xlht.xlhtproject.mapper.TXlhtMedicineParamMapper;
  8. import com.xlht.xlhtproject.service.ITXlhtMedicineParamService;
  9. import com.xlht.xlhtproject.utils.CalculateUtils;
  10. import com.xlht.xlhtproject.utils.DateUtils;
  11. import lombok.extern.slf4j.Slf4j;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.stereotype.Service;
  14. import java.math.BigDecimal;
  15. import java.util.List;
  16. import java.util.Objects;
  17. import static com.xlht.xlhtproject.enums.MyConstants.LONG_1;
  18. /**
  19. * 智能投药参数设置Service业务层处理
  20. *
  21. * @author slibra
  22. * @date 2024-09-09
  23. */
  24. @Slf4j
  25. @Service
  26. public class TXlhtMedicineParamServiceImpl implements ITXlhtMedicineParamService
  27. {
  28. @Autowired
  29. private TXlhtMedicineParamMapper tXlhtMedicineParamMapper;
  30. @Autowired
  31. private TShuju1Mapper shuju1Mapper;
  32. @Autowired
  33. private CalculateUtils calculateUtils;
  34. @Autowired
  35. private TTbDuMapper tTbDuMapper;
  36. /**
  37. * 查询智能投药参数设置
  38. *
  39. * @param id 智能投药参数设置主键
  40. * @return 智能投药参数设置
  41. */
  42. @Override
  43. public TXlhtMedicineParam selectTXlhtMedicineParamById(Long id)
  44. {
  45. return tXlhtMedicineParamMapper.selectTXlhtMedicineParamById(id);
  46. }
  47. /**
  48. * 查询智能投药参数设置列表
  49. *
  50. * @param tXlhtMedicineParam 智能投药参数设置
  51. * @return 智能投药参数设置
  52. */
  53. @Override
  54. public List<TXlhtMedicineParam> selectTXlhtMedicineParamList(TXlhtMedicineParam tXlhtMedicineParam)
  55. {
  56. return tXlhtMedicineParamMapper.selectTXlhtMedicineParamList(tXlhtMedicineParam);
  57. }
  58. /**
  59. * 新增智能投药参数设置
  60. *
  61. * @param tXlhtMedicineParam 智能投药参数设置
  62. * @return 结果
  63. */
  64. @Override
  65. public int insertTXlhtMedicineParam(TXlhtMedicineParam tXlhtMedicineParam)
  66. {
  67. tXlhtMedicineParam.setCreateTime(DateUtils.getNowDate());
  68. return tXlhtMedicineParamMapper.insertTXlhtMedicineParam(tXlhtMedicineParam);
  69. }
  70. /**
  71. * 修改智能投药参数设置
  72. *
  73. * @param tXlhtMedicineParam 智能投药参数设置
  74. * @return 结果
  75. */
  76. @Override
  77. public int updateTXlhtMedicineParam(TXlhtMedicineParam tXlhtMedicineParam)
  78. {
  79. tXlhtMedicineParam.setUpdateTime(DateUtils.getNowDate());
  80. return tXlhtMedicineParamMapper.updateTXlhtMedicineParam(tXlhtMedicineParam);
  81. }
  82. /**
  83. * 批量删除智能投药参数设置
  84. *
  85. * @param ids 需要删除的智能投药参数设置主键
  86. * @return 结果
  87. */
  88. @Override
  89. public int deleteTXlhtMedicineParamByIds(Long[] ids)
  90. {
  91. return tXlhtMedicineParamMapper.deleteTXlhtMedicineParamByIds(ids);
  92. }
  93. /**
  94. * 删除智能投药参数设置信息
  95. *
  96. * @param id 智能投药参数设置主键
  97. * @return 结果
  98. */
  99. @Override
  100. public int deleteTXlhtMedicineParamById(Long id)
  101. {
  102. return tXlhtMedicineParamMapper.deleteTXlhtMedicineParamById(id);
  103. }
  104. @Override
  105. public TXlhtMedicineParam getLatestRecord() {
  106. TXlhtMedicineParam latestRecord = this.tXlhtMedicineParamMapper.getLatestRecord();
  107. if(!Objects.isNull(latestRecord)){
  108. this.addExtra(latestRecord);
  109. }
  110. return latestRecord;
  111. }
  112. private void addExtra(TXlhtMedicineParam latestRecord) {
  113. //2024年09月20日13:42:18 有可能用户选择的是仪表或者化验,需要获取实时数据
  114. //获取最新的实时数据
  115. SmartAdd smartAdd = this.shuju1Mapper.getNewestData();
  116. if(!Objects.isNull(smartAdd)){
  117. //获取对应的类型
  118. //一池的实时数据处理
  119. Integer hycXsyTypeOne = latestRecord.getHycXsyTypeOne();
  120. Integer qycAdTypeOne = latestRecord.getQycAdTypeOne();
  121. Integer qycYxyTypeOne = latestRecord.getQycYxyTypeOne();
  122. Integer jsCodTypeOne = latestRecord.getJsCodTypeOne();
  123. Integer jsLlTypeOne = latestRecord.getJsLlTypeOne();
  124. Integer jsTnTypeOne = latestRecord.getJsTnTypeOne();
  125. if(!Objects.isNull(hycXsyTypeOne)){
  126. if(1 == hycXsyTypeOne){//化验
  127. latestRecord.setHycXsyOne(smartAdd.getHyXsyHYOne());
  128. }else if(2 == hycXsyTypeOne){//预测
  129. latestRecord.setHycXsyOne(smartAdd.getHyXsyYCOne());
  130. }
  131. }
  132. if(!Objects.isNull(qycAdTypeOne) && 1 == qycAdTypeOne){//化验
  133. latestRecord.setQycAdOne(smartAdd.getQyAdHYOne());
  134. }
  135. if(!Objects.isNull(qycYxyTypeOne) && 1 == qycYxyTypeOne){//化验
  136. latestRecord.setQycYxyOne(smartAdd.getQyXsyHYOne());
  137. }
  138. if(!Objects.isNull(jsCodTypeOne)){
  139. if(1 == jsCodTypeOne){//仪表
  140. latestRecord.setJsCodOne(smartAdd.getJsCodYB());
  141. }else if(2 == jsCodTypeOne){//化验
  142. latestRecord.setJsCodOne(smartAdd.getJsCodHY());
  143. }
  144. }
  145. if(!Objects.isNull(jsLlTypeOne) && 1 == jsLlTypeOne){//仪表
  146. latestRecord.setJsLlOne(smartAdd.getJslYB());
  147. }
  148. if(!Objects.isNull(jsTnTypeOne) && 1 == jsTnTypeOne){//仪表
  149. latestRecord.setJsTnOne(smartAdd.getJsTnYB());
  150. }
  151. //二池的实时数据处理
  152. Integer hycXsyTypeTwo = latestRecord.getHycXsyTypeTwo();
  153. Integer qycAdTypeTwo = latestRecord.getQycAdTypeTwo();
  154. Integer qycYxyTypeTwo = latestRecord.getQycYxyTypeTwo();
  155. Integer jsCodTypeTwo = latestRecord.getJsCodTypeTwo();
  156. Integer jsLlTypeTwo = latestRecord.getJsLlTypeTwo();
  157. Integer jsTnTypeTwo = latestRecord.getJsTnTypeTwo();
  158. if(!Objects.isNull(hycXsyTypeTwo)){
  159. if(1 == hycXsyTypeTwo){//化验
  160. latestRecord.setHycXsyTwo(smartAdd.getHyXsyHYTwo());
  161. }else if(2 == hycXsyTypeTwo){//预测
  162. latestRecord.setHycXsyTwo(smartAdd.getHyXsyYCTwo());
  163. }
  164. }
  165. if(!Objects.isNull(qycAdTypeTwo) && 1 == qycAdTypeTwo){//化验
  166. latestRecord.setQycAdTwo(smartAdd.getQyAdHYTwo());
  167. }
  168. if(!Objects.isNull(qycYxyTypeTwo) && 1 == qycYxyTypeTwo){//化验
  169. latestRecord.setQycYxyTwo(smartAdd.getQyXsyHYTwo());
  170. }
  171. if(!Objects.isNull(jsCodTypeTwo)){
  172. if(1 == jsCodTypeTwo){//仪表
  173. latestRecord.setJsCodTwo(smartAdd.getJsCodYB());
  174. }else if(2 == jsCodTypeTwo){//化验
  175. latestRecord.setJsCodTwo(smartAdd.getJsCodHY());
  176. }
  177. }
  178. if(!Objects.isNull(jsLlTypeTwo) && 1 == jsLlTypeTwo){//仪表
  179. latestRecord.setJsLlTwo(smartAdd.getJslYB());
  180. }
  181. if(!Objects.isNull(jsTnTypeTwo) && 1 == jsTnTypeTwo){//仪表
  182. latestRecord.setJsTnTwo(smartAdd.getJsTnYB());
  183. }
  184. //计算实时的碳源投加量 (2个池子需要分开存)
  185. BigDecimal val = this.calculateUtils.calculateMedicineByLastRecord(latestRecord, 1);
  186. if(!Objects.isNull(val) && val.compareTo(BigDecimal.ZERO) < 0){
  187. log.info("一池计算得到的碳源投加量是负数,按0处理");
  188. val = BigDecimal.ZERO;
  189. }
  190. latestRecord.setMedicineAmountOne(val);
  191. BigDecimal val2 = this.calculateUtils.calculateMedicineByLastRecord(latestRecord, 2);
  192. if(!Objects.isNull(val2) && val2.compareTo(BigDecimal.ZERO) < 0){
  193. log.info("二池计算得到的碳源投加量是负数,按0处理");
  194. val2 = BigDecimal.ZERO;
  195. }
  196. latestRecord.setMedicineAmountTwo(val2);
  197. //获取2个池子的瞬时投药流量
  198. TTbDu tTbDu = tTbDuMapper.selectTTbDuByID(LONG_1);
  199. if(!Objects.isNull(tTbDu)){
  200. latestRecord.setTytjTransientLLOne(tTbDu.getC1TjLl());
  201. latestRecord.setTytjTransientLLTwo(tTbDu.getC2TjLl());
  202. }
  203. }
  204. }
  205. }