package com.xlht.xlhtproject.service.impl; import com.xlht.xlhtproject.domain.SmartAdd; import com.xlht.xlhtproject.domain.TTbDu; import com.xlht.xlhtproject.domain.TXlhtMedicineParam; import com.xlht.xlhtproject.mapper.TShuju1Mapper; import com.xlht.xlhtproject.mapper.TTbDuMapper; import com.xlht.xlhtproject.mapper.TXlhtMedicineParamMapper; import com.xlht.xlhtproject.service.ITXlhtMedicineParamService; import com.xlht.xlhtproject.utils.CalculateUtils; import com.xlht.xlhtproject.utils.DateUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.util.List; import java.util.Objects; import static com.xlht.xlhtproject.enums.MyConstants.LONG_1; /** * 智能投药参数设置Service业务层处理 * * @author slibra * @date 2024-09-09 */ @Slf4j @Service public class TXlhtMedicineParamServiceImpl implements ITXlhtMedicineParamService { @Autowired private TXlhtMedicineParamMapper tXlhtMedicineParamMapper; @Autowired private TShuju1Mapper shuju1Mapper; @Autowired private CalculateUtils calculateUtils; @Autowired private TTbDuMapper tTbDuMapper; /** * 查询智能投药参数设置 * * @param id 智能投药参数设置主键 * @return 智能投药参数设置 */ @Override public TXlhtMedicineParam selectTXlhtMedicineParamById(Long id) { return tXlhtMedicineParamMapper.selectTXlhtMedicineParamById(id); } /** * 查询智能投药参数设置列表 * * @param tXlhtMedicineParam 智能投药参数设置 * @return 智能投药参数设置 */ @Override public List selectTXlhtMedicineParamList(TXlhtMedicineParam tXlhtMedicineParam) { return tXlhtMedicineParamMapper.selectTXlhtMedicineParamList(tXlhtMedicineParam); } /** * 新增智能投药参数设置 * * @param tXlhtMedicineParam 智能投药参数设置 * @return 结果 */ @Override public int insertTXlhtMedicineParam(TXlhtMedicineParam tXlhtMedicineParam) { tXlhtMedicineParam.setCreateTime(DateUtils.getNowDate()); return tXlhtMedicineParamMapper.insertTXlhtMedicineParam(tXlhtMedicineParam); } /** * 修改智能投药参数设置 * * @param tXlhtMedicineParam 智能投药参数设置 * @return 结果 */ @Override public int updateTXlhtMedicineParam(TXlhtMedicineParam tXlhtMedicineParam) { tXlhtMedicineParam.setUpdateTime(DateUtils.getNowDate()); return tXlhtMedicineParamMapper.updateTXlhtMedicineParam(tXlhtMedicineParam); } /** * 批量删除智能投药参数设置 * * @param ids 需要删除的智能投药参数设置主键 * @return 结果 */ @Override public int deleteTXlhtMedicineParamByIds(Long[] ids) { return tXlhtMedicineParamMapper.deleteTXlhtMedicineParamByIds(ids); } /** * 删除智能投药参数设置信息 * * @param id 智能投药参数设置主键 * @return 结果 */ @Override public int deleteTXlhtMedicineParamById(Long id) { return tXlhtMedicineParamMapper.deleteTXlhtMedicineParamById(id); } @Override public TXlhtMedicineParam getLatestRecord() { TXlhtMedicineParam latestRecord = this.tXlhtMedicineParamMapper.getLatestRecord(); if(!Objects.isNull(latestRecord)){ this.addExtra(latestRecord); } return latestRecord; } private void addExtra(TXlhtMedicineParam latestRecord) { //2024年09月20日13:42:18 有可能用户选择的是仪表或者化验,需要获取实时数据 //获取最新的实时数据 SmartAdd smartAdd = this.shuju1Mapper.getNewestData(); if(!Objects.isNull(smartAdd)){ //获取对应的类型 //一池的实时数据处理 Integer hycXsyTypeOne = latestRecord.getHycXsyTypeOne(); Integer qycAdTypeOne = latestRecord.getQycAdTypeOne(); Integer qycYxyTypeOne = latestRecord.getQycYxyTypeOne(); Integer jsCodTypeOne = latestRecord.getJsCodTypeOne(); Integer jsLlTypeOne = latestRecord.getJsLlTypeOne(); Integer jsTnTypeOne = latestRecord.getJsTnTypeOne(); if(!Objects.isNull(hycXsyTypeOne)){ if(1 == hycXsyTypeOne){//化验 latestRecord.setHycXsyOne(smartAdd.getHyXsyHYOne()); }else if(2 == hycXsyTypeOne){//预测 latestRecord.setHycXsyOne(smartAdd.getHyXsyYCOne()); } } if(!Objects.isNull(qycAdTypeOne) && 1 == qycAdTypeOne){//化验 latestRecord.setQycAdOne(smartAdd.getQyAdHYOne()); } if(!Objects.isNull(qycYxyTypeOne) && 1 == qycYxyTypeOne){//化验 latestRecord.setQycYxyOne(smartAdd.getQyXsyHYOne()); } if(!Objects.isNull(jsCodTypeOne)){ if(1 == jsCodTypeOne){//仪表 latestRecord.setJsCodOne(smartAdd.getJsCodYB()); }else if(2 == jsCodTypeOne){//化验 latestRecord.setJsCodOne(smartAdd.getJsCodHY()); } } if(!Objects.isNull(jsLlTypeOne) && 1 == jsLlTypeOne){//仪表 latestRecord.setJsLlOne(smartAdd.getJslYB()); } if(!Objects.isNull(jsTnTypeOne) && 1 == jsTnTypeOne){//仪表 latestRecord.setJsTnOne(smartAdd.getJsTnYB()); } //二池的实时数据处理 Integer hycXsyTypeTwo = latestRecord.getHycXsyTypeTwo(); Integer qycAdTypeTwo = latestRecord.getQycAdTypeTwo(); Integer qycYxyTypeTwo = latestRecord.getQycYxyTypeTwo(); Integer jsCodTypeTwo = latestRecord.getJsCodTypeTwo(); Integer jsLlTypeTwo = latestRecord.getJsLlTypeTwo(); Integer jsTnTypeTwo = latestRecord.getJsTnTypeTwo(); if(!Objects.isNull(hycXsyTypeTwo)){ if(1 == hycXsyTypeTwo){//化验 latestRecord.setHycXsyTwo(smartAdd.getHyXsyHYTwo()); }else if(2 == hycXsyTypeTwo){//预测 latestRecord.setHycXsyTwo(smartAdd.getHyXsyYCTwo()); } } if(!Objects.isNull(qycAdTypeTwo) && 1 == qycAdTypeTwo){//化验 latestRecord.setQycAdTwo(smartAdd.getQyAdHYTwo()); } if(!Objects.isNull(qycYxyTypeTwo) && 1 == qycYxyTypeTwo){//化验 latestRecord.setQycYxyTwo(smartAdd.getQyXsyHYTwo()); } if(!Objects.isNull(jsCodTypeTwo)){ if(1 == jsCodTypeTwo){//仪表 latestRecord.setJsCodTwo(smartAdd.getJsCodYB()); }else if(2 == jsCodTypeTwo){//化验 latestRecord.setJsCodTwo(smartAdd.getJsCodHY()); } } if(!Objects.isNull(jsLlTypeTwo) && 1 == jsLlTypeTwo){//仪表 latestRecord.setJsLlTwo(smartAdd.getJslYB()); } if(!Objects.isNull(jsTnTypeTwo) && 1 == jsTnTypeTwo){//仪表 latestRecord.setJsTnTwo(smartAdd.getJsTnYB()); } //计算实时的碳源投加量 (2个池子需要分开存) BigDecimal val = this.calculateUtils.calculateMedicineByLastRecord(latestRecord, 1); if(!Objects.isNull(val) && val.compareTo(BigDecimal.ZERO) < 0){ log.info("一池计算得到的碳源投加量是负数,按0处理"); val = BigDecimal.ZERO; } latestRecord.setMedicineAmountOne(val); BigDecimal val2 = this.calculateUtils.calculateMedicineByLastRecord(latestRecord, 2); if(!Objects.isNull(val2) && val2.compareTo(BigDecimal.ZERO) < 0){ log.info("二池计算得到的碳源投加量是负数,按0处理"); val2 = BigDecimal.ZERO; } latestRecord.setMedicineAmountTwo(val2); //获取2个池子的瞬时投药流量 TTbDu tTbDu = tTbDuMapper.selectTTbDuByID(LONG_1); if(!Objects.isNull(tTbDu)){ latestRecord.setTytjTransientLLOne(tTbDu.getC1TjLl()); latestRecord.setTytjTransientLLTwo(tTbDu.getC2TjLl()); } } } }