package com.dingzhuo.energy.data.monitoring.device.service.impl; import java.util.ArrayList; import java.util.List; import com.dingzhuo.energy.common.core.lang.UUID; import com.dingzhuo.energy.common.utils.StringUtils; import com.dingzhuo.energy.data.monitoring.device.domain.DeviceFormulaParam; import com.dingzhuo.energy.data.monitoring.device.mapper.DeviceFormulaParamMapper; import com.dingzhuo.energy.framework.web.domain.AjaxResult; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.dingzhuo.energy.data.monitoring.device.mapper.DeviceFormulaMapper; import com.dingzhuo.energy.data.monitoring.device.domain.DeviceFormula; import com.dingzhuo.energy.data.monitoring.device.service.IDeviceFormulaService; /** * 设备计算公式Service业务层处理 * * @author zhaow * @date 2020-03-20 */ @Service public class DeviceFormulaServiceImpl implements IDeviceFormulaService { @Autowired private DeviceFormulaMapper deviceFormulaMapper; @Autowired private DeviceFormulaParamMapper deviceFormulaParamMapper; /** * 查询设备计算公式 * * @param id 设备计算公式ID * @return 设备计算公式 */ @Override public DeviceFormula selectDeviceFormulaById(String id) { return deviceFormulaMapper.selectDeviceFormulaById(id); } /** * 查询设备计算公式列表 * * @param deviceFormula 设备计算公式 * @return 设备计算公式 */ @Override public List selectDeviceFormulaList(DeviceFormula deviceFormula) { return deviceFormulaMapper.selectDeviceFormulaList(deviceFormula); } /** * 新增设备计算公式 * * @param deviceFormula 设备计算公式 * @return 结果 */ @Override public int insertDeviceFormula(DeviceFormula deviceFormula) { return deviceFormulaMapper.insertDeviceFormula(deviceFormula); } /** * 修改设备计算公式 * * @param deviceFormula 设备计算公式 * @return 结果 */ @Override public int updateDeviceFormula(DeviceFormula deviceFormula) { return deviceFormulaMapper.updateDeviceFormula(deviceFormula); } /** * 批量删除设备计算公式 * * @param ids 需要删除的设备计算公式ID * @return 结果 */ @Override public int deleteDeviceFormulaByIds(String[] ids) { return deviceFormulaMapper.deleteDeviceFormulaByIds(ids); } /** * 删除设备计算公式信息 * * @param id 设备计算公式ID * @return 结果 */ @Override public int deleteDeviceFormulaById(String id) { return deviceFormulaMapper.deleteDeviceFormulaById(id); } /** * 取根据 设备模型 节点ID 和 设备状态主键 ID 取 设备公式信息 * @param nodeId * @param stateId * @return */ @Override public DeviceFormula getDeviceFormula(String nodeId,String stateId) { //根据 模型节点ID 和 设备状态主键ID获取 设备公式信息 DeviceFormula deviceFormula = deviceFormulaMapper.getDeviceFormula(nodeId,stateId); if (deviceFormula != null) { //根据设备 设备公式表主键ID获取 设备对应的参数集合 List deviceFormulaParams = deviceFormulaParamMapper.getFormulaParam(deviceFormula.getId()); if (!deviceFormulaParams.isEmpty()) { deviceFormula.setDeviceFormulaParams(deviceFormulaParams); } } else { deviceFormula = new DeviceFormula(); } return deviceFormula; } /** * 设备状态 配置 公式保存 * @param deviceFormula * @return */ @Override public void saveDeviceFormula(DeviceFormula deviceFormula) { String calcText = deviceFormula.getFormulaText(); List paramNames = new ArrayList<>(); for (DeviceFormulaParam param : deviceFormula.getDeviceFormulaParams()) { calcText = calcText.replace(param.getParamName(), String.format("'%s'", param.getParamValue())); } deviceFormula.setCalcText(calcText); //1、保存 状态的配置公式 if (StringUtils.isEmpty(deviceFormula.getId())) { deviceFormula.setId(UUID.fastUUID().toString()); deviceFormulaMapper.insertDeviceFormula(deviceFormula); } else { deviceFormulaMapper.updateDeviceFormula(deviceFormula); } //2、处理 公式对应的参数 并进行保存 deviceFormula.getDeviceFormulaParams().forEach(param -> { param.setId(UUID.fastUUID().toString()); param.setDevFormulaId(deviceFormula.getId()); }); deviceFormulaParamMapper .saveDeviceFormulaParam(deviceFormula.getId(), deviceFormula.getDeviceFormulaParams()); } /** * 设备状态 公式 启用设置 */ @Override public int editDeviceFormulaIsEnable(String nodeId,String isEnable, String[] ids) { return deviceFormulaMapper.editDeviceFormulaIsEnable(nodeId,isEnable, ids); } @Override public List getAllDeviceFormula() { return deviceFormulaMapper.getAllDeviceFormula(); } }