package com.bizmatics.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.bizmatics.common.core.exception.BusinessException;
import com.bizmatics.common.mvc.base.AbstractCrudService;
import com.bizmatics.model.DeviceAnalogVariableList;
import com.bizmatics.model.DeviceAttribute;
import com.bizmatics.model.Hookup;
import com.bizmatics.model.HookupComponentComplete;
import com.bizmatics.model.system.SysUser;
import com.bizmatics.model.vo.*;
import com.bizmatics.persistence.mapper.HookupMapper;
import com.bizmatics.service.*;
import com.bizmatics.service.util.FieldEscapeUtils;
import com.bizmatics.service.util.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* 服务实现类
*
*
* @author ya
* @since 2022-03-07
*/
@Service
public class HookupServiceImpl extends AbstractCrudService implements HookupService {
@Autowired
private DeviceAttributeService deviceAttributeService;
@Autowired
private DeviceAnalogVariableListService deviceAnalogVariableListService;
@Autowired
private HookupComponentBasicsService hookupComponentBasicsService;
@Autowired
private HookupComponentCompleteService hookupComponentCompleteService;
@Override
public List getDeviceAttributeList(Integer siteId) {
LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(DeviceAttribute::getStatus, 1).eq(DeviceAttribute::getSiteId, siteId);
List deviceAttributeList = deviceAttributeService.list(queryWrapper);
return deviceAttributeList;
}
@Override
public List getDeviceAnalogVariableList(Integer monitoringDeviceId) {
LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(DeviceAnalogVariableList::getStatus, 1).eq(DeviceAnalogVariableList::getMonitoringEquipment, monitoringDeviceId);
List deviceAnalogVariableList = deviceAnalogVariableListService.list(queryWrapper);
return deviceAnalogVariableList;
}
@Override
public List gethookupComponentBasics(Integer siteId) {
LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery();
if (siteId != 0) {
queryWrapper.eq(Hookup::getSiteId, siteId);
}
List hookupList = this.list(queryWrapper);
List hookupListlist = new ArrayList<>();
if (hookupList.size() > 0) {
for (int i = 0; i < hookupList.size(); i++) {
HookupOneVo hookupOne = new HookupOneVo();
hookupOne.setType(hookupList.get(i).getOuterType());
hookupOne.setTitle(hookupList.get(i).getTitle());
hookupOne.setTemplate(hookupList.get(i).getTemplate());
if ("".equals(hookupList.get(i).getProps()) || hookupList.get(i).getProps() == null) {
hookupOne.setProps("");
} else {
hookupOne.setProps(hookupList.get(i).getProps().split(","));
}
hookupOne.setDefaultColor(hookupList.get(i).getDefaultColor());
hookupOne.setDataType(hookupList.get(i).getDataType());
hookupOne.setCreateType(hookupList.get(i).getCreateType());
hookupOne.setPriviewImg(hookupList.get(i).getPriviewImg());
hookupOne.setEchartsOption(hookupList.get(i).getEchartsOption());
hookupOne.setEchartsOption(hookupList.get(i).getEchartsOption());
hookupOne.setElementBool(hookupList.get(i).getElementBool());
if ("".equals(hookupList.get(i).getSvgLineSelectval()) || hookupList.get(i).getSvgLineSelectval() == null) {
hookupOne.setSvgLineSelectval("");
} else {
hookupOne.setSvgLineSelectval(hookupList.get(i).getSvgLineSelectval());
}
hookupListlist.add(hookupOne);
}
}
return hookupListlist;
}
@Override
public List getHookupComponentComplete(Integer siteId) {
List deviceTypeVo = baseMapper.getDevidetype(siteId);
List variable_vaue = null;
List variable_173_analog = new ArrayList<>();
List variable_171_analog = new ArrayList<>();
List variable_183_analog = new ArrayList<>();
List variable_173_switch = new ArrayList<>();
List variable_171_switch = new ArrayList<>();
List variable_183_switch = new ArrayList<>();
for (int i = 0; i < deviceTypeVo.size(); i++) {
if (deviceTypeVo.get(i).getDataArea() == 2) {
if (deviceTypeVo.get(i).getDeviceType() == 3) {
variable_171_switch.add(deviceTypeVo.get(i).getId());
} else if (deviceTypeVo.get(i).getDeviceType() == 4) {
variable_173_switch.add(deviceTypeVo.get(i).getId());
} else if (deviceTypeVo.get(i).getDeviceType() ==1){
variable_183_switch.add(deviceTypeVo.get(i).getId());
}
} else {
if (deviceTypeVo.get(i).getDeviceType() == 3) {
variable_171_analog.add(deviceTypeVo.get(i).getId());
} else if (deviceTypeVo.get(i).getDeviceType() == 4) {
variable_173_analog.add(deviceTypeVo.get(i).getId());
} else if (deviceTypeVo.get(i).getDeviceType() == 1){
variable_183_analog.add(deviceTypeVo.get(i).getId());
}
}
}
List variable_173_analog_data = new ArrayList<>();
List variable_171_analog_data = new ArrayList<>();
List variable_183_analog_data = new ArrayList<>();
List variable_173_switch_data = new ArrayList<>();
List variable_171_switch_data = new ArrayList<>();
List variable_183_switch_data = new ArrayList<>();
if (variable_173_analog.size() > 0) {
variable_173_analog_data = baseMapper.getRtAnalogData(variable_173_analog, "rt_analog_173_data");
}
if (variable_171_analog.size() > 0) {
variable_171_analog_data = baseMapper.getRtAnalogData(variable_171_analog, "rt_analog_171_data");
}
if (variable_183_analog.size() > 0) {
variable_183_analog_data = baseMapper.getRtAnalogData(variable_183_analog, "rt_analog_data");
}
if (variable_173_switch.size() > 0) {
variable_173_switch_data = baseMapper.getRtSwitchData(variable_173_switch, "rt_switch_173_data");
}
if (variable_171_switch.size() > 0) {
variable_171_switch_data = baseMapper.getRtSwitchData(variable_171_switch, "rt_switch_171_data");
}
if (variable_183_switch.size() > 0) {
variable_183_switch_data = baseMapper.getRtSwitchData(variable_183_switch, "rt_switch_data");
}
List variableVoList = new ArrayList<>();
if(variable_173_analog_data.size()>0){
for (int i = 0; i < variable_173_analog_data.size(); i++) {
VariableVo vriableVo = new VariableVo();
vriableVo.setVariableCoding(variable_173_analog_data.get(i).getVariableCoding());
vriableVo.setVariableValue(FieldEscapeUtils.transformation1(variable_173_analog_data.get(i),variable_173_analog_data.get(i).getVariableCoding().split("_")[1]));
variableVoList.add(vriableVo);
}
}
if(variable_171_analog_data.size()>0){
for (int i = 0; i < variable_171_analog_data.size(); i++) {
VariableVo vriableVo = new VariableVo();
vriableVo.setVariableCoding(variable_171_analog_data.get(i).getVariableCoding());
vriableVo.setVariableValue(FieldEscapeUtils.transformation1(variable_171_analog_data.get(i),variable_171_analog_data.get(i).getVariableCoding().split("_")[1]));
variableVoList.add(vriableVo);
}
}
if(variable_183_analog_data.size()>0){
for (int i = 0; i < variable_183_analog_data.size(); i++) {
VariableVo vriableVo = new VariableVo();
vriableVo.setVariableCoding(variable_183_analog_data.get(i).getVariableCoding());
vriableVo.setVariableValue(FieldEscapeUtils.transformation1(variable_183_analog_data.get(i),variable_183_analog_data.get(i).getVariableCoding().split("_")[1]));
variableVoList.add(vriableVo);
}
}
if(variable_173_switch_data.size()>0){
for (int i = 0; i < variable_173_switch_data.size(); i++) {
VariableVo vriableVo = new VariableVo();
vriableVo.setVariableCoding(variable_173_switch_data.get(i).getVariableCoding());
vriableVo.setVariableValue(FieldEscapeUtils.transformation2(variable_173_switch_data.get(i),variable_173_switch_data.get(i).getVariableCoding().split("_")[1]));
variableVoList.add(vriableVo);
}
}
if(variable_171_switch_data.size()>0){
for (int i = 0; i < variable_171_switch_data.size(); i++) {
VariableVo vriableVo = new VariableVo();
vriableVo.setVariableCoding(variable_171_switch_data.get(i).getVariableCoding());
vriableVo.setVariableValue(FieldEscapeUtils.transformation2(variable_171_switch_data.get(i),variable_171_switch_data.get(i).getVariableCoding().split("_")[1]));
variableVoList.add(vriableVo);
}
}
if(variable_183_switch_data.size()>0){
for (int i = 0; i < variable_183_switch_data.size(); i++) {
VariableVo vriableVo = new VariableVo();
vriableVo.setVariableCoding(variable_183_switch_data.get(i).getVariableCoding());
vriableVo.setVariableValue(FieldEscapeUtils.transformation2(variable_183_switch_data.get(i),variable_183_switch_data.get(i).getVariableCoding().split("_")[1]));
variableVoList.add(vriableVo);
}
}
List hookupComponentComplete = baseMapper.getHookupComponentComplete(siteId);
List hookupComponentCompleteVoLsit = new ArrayList();
if (hookupComponentComplete.size() > 0) {
for (int i = 0; i < hookupComponentComplete.size(); i++) {
HookupComponentCompleteVo hookupComponentCompleteVo = new HookupComponentCompleteVo();
hookupComponentCompleteVo.setId(hookupComponentComplete.get(i).getId());
hookupComponentCompleteVo.setTitle(hookupComponentComplete.get(i).getTitle());
hookupComponentCompleteVo.setType(hookupComponentComplete.get(i).getInnerType());
hookupComponentCompleteVo.setTypeName(hookupComponentComplete.get(i).getTypeName());
hookupComponentCompleteVo.setSvgColor(hookupComponentComplete.get(i).getSvgColor());
hookupComponentCompleteVo.setCreateType(hookupComponentComplete.get(i).getCreateType());
hookupComponentCompleteVo.setSvgPositionX(hookupComponentComplete.get(i).getSvgPositionX());
hookupComponentCompleteVo.setSvgPositionY(hookupComponentComplete.get(i).getSvgPositionY());
if ("".equals(hookupComponentComplete.get(i).getMPoint()) || hookupComponentComplete.get(i).getMPoint() == null) {
hookupComponentCompleteVo.setMPoint("");
} else {
hookupComponentCompleteVo.setMPoint(JSONArray.parseObject(hookupComponentComplete.get(i).getMPoint()));
}
if ("\"\"".equals(hookupComponentComplete.get(i).getEchartsOption()) || "".equals(hookupComponentComplete.get(i).getEchartsOption()) ||
hookupComponentComplete.get(i).getEchartsOption() == null) {
hookupComponentCompleteVo.setEchartsOption("");
} else {
hookupComponentCompleteVo.setEchartsOption(JSONArray.parseObject(hookupComponentComplete.get(i).getEchartsOption()));
}
hookupComponentCompleteVo.setSize(hookupComponentComplete.get(i).getSize());
hookupComponentCompleteVo.setAngle(hookupComponentComplete.get(i).getAngle());
if ("".equals(hookupComponentComplete.get(i).getElementBool()) || hookupComponentComplete.get(i).getElementBool() == null) {
hookupComponentCompleteVo.setElementBool("");
} else {
hookupComponentCompleteVo.setElementBool(hookupComponentComplete.get(i).getElementBool().split(","));
}
hookupComponentCompleteVo.setSvgLineSelectval(hookupComponentComplete.get(i).getSvgLineSelectval());
hookupComponentCompleteVo.setDeviceId(hookupComponentComplete.get(i).getDeviceId());
hookupComponentCompleteVo.setSiteId(hookupComponentComplete.get(i).getSiteId());
hookupComponentCompleteVo.setVariableId(hookupComponentComplete.get(i).getVariableId());
if (variableVoList.size() > 0) {
for (int j = 0; j < variableVoList.size(); j++) {
if (hookupComponentComplete.get(i).getVariableCoding().equals(variableVoList.get(j).getVariableCoding())) {
String variableValue = ""+variableVoList.get(j).getVariableValue();
hookupComponentCompleteVo.setVariableValue(variableValue);
}
}
} else {
hookupComponentCompleteVo.setVariableValue("");
}
hookupComponentCompleteVoLsit.add(hookupComponentCompleteVo);
}
}
return hookupComponentCompleteVoLsit;
}
// public List getHookupComponentComplete(Integer siteId) {
// List deviceTypeVo = baseMapper.getDevidetype(siteId);
// List variable_vaue = null;
// if (deviceTypeVo.size()>0){
// if (deviceTypeVo.get(0).getDeviceType() == 3) {
// String table = "rt_analog_171_data";
// if (deviceTypeVo.get(0).getDataArea()==2){
// table = "rt_switch_171_data";
// }
// variable_vaue = baseMapper.getVariable171(siteId,table);
// } else if (deviceTypeVo.get(0).getDeviceType() == 4) {
// String table = "rt_analog_173_data";
// if (deviceTypeVo.get(0).getDataArea()==2){
// table = "rt_switch_173_data";
// }
// variable_vaue = baseMapper.getVariable173(siteId,table);
// } else {
// String table = "rt_analog_data";
// if (deviceTypeVo.get(0).getDataArea()==2){
// table = "rt_switch_data";
// }
// variable_vaue = baseMapper.getVariable(siteId,table);
// }
// }
//
// List hookupComponentComplete = baseMapper.getHookupComponentComplete(siteId);
// List hookupComponentCompleteVoLsit = new ArrayList();
// if (hookupComponentComplete.size() > 0) {
// for (int i = 0; i < hookupComponentComplete.size(); i++) {
// HookupComponentCompleteVo hookupComponentCompleteVo = new HookupComponentCompleteVo();
// hookupComponentCompleteVo.setId(hookupComponentComplete.get(i).getId());
// hookupComponentCompleteVo.setTitle(hookupComponentComplete.get(i).getTitle());
// hookupComponentCompleteVo.setType(hookupComponentComplete.get(i).getInnerType());
// hookupComponentCompleteVo.setTypeName(hookupComponentComplete.get(i).getTypeName());
// hookupComponentCompleteVo.setSvgColor(hookupComponentComplete.get(i).getSvgColor());
// hookupComponentCompleteVo.setCreateType(hookupComponentComplete.get(i).getCreateType());
// hookupComponentCompleteVo.setSvgPositionX(hookupComponentComplete.get(i).getSvgPositionX());
// hookupComponentCompleteVo.setSvgPositionY(hookupComponentComplete.get(i).getSvgPositionY());
// if ("".equals(hookupComponentComplete.get(i).getMPoint())||hookupComponentComplete.get(i).getMPoint()==null){
// hookupComponentCompleteVo.setMPoint("");
// }else {
// hookupComponentCompleteVo.setMPoint(JSONArray.parseObject(hookupComponentComplete.get(i).getMPoint()));
// }
// if ("\"\"".equals(hookupComponentComplete.get(i).getEchartsOption())||"".equals(hookupComponentComplete.get(i).getEchartsOption())||
// hookupComponentComplete.get(i).getEchartsOption()==null){
// hookupComponentCompleteVo.setEchartsOption("");
// }else {
// hookupComponentCompleteVo.setEchartsOption(JSONArray.parseObject(hookupComponentComplete.get(i).getEchartsOption()));
// }
//
// hookupComponentCompleteVo.setSize(hookupComponentComplete.get(i).getSize());
// hookupComponentCompleteVo.setAngle(hookupComponentComplete.get(i).getAngle());
// if ("".equals(hookupComponentComplete.get(i).getElementBool())||hookupComponentComplete.get(i).getElementBool()==null) {
// hookupComponentCompleteVo.setElementBool("");
// } else {
// hookupComponentCompleteVo.setElementBool(hookupComponentComplete.get(i).getElementBool().split(","));
// }
// hookupComponentCompleteVo.setSvgLineSelectval(hookupComponentComplete.get(i).getSvgLineSelectval());
// hookupComponentCompleteVo.setDeviceId(hookupComponentComplete.get(i).getDeviceId());
// hookupComponentCompleteVo.setSiteId(hookupComponentComplete.get(i).getSiteId());
// hookupComponentCompleteVo.setVariableId(hookupComponentComplete.get(i).getVariableId());
// if (variable_vaue.size() > 0) {
// for (int j = 0; j < variable_vaue.size(); j++) {
// if (hookupComponentComplete.get(i).getVariableCoding().equals(variable_vaue.get(j).getVariableCoding())) {
// String variableValue = FieldEscapeUtils.getVariableValue(variable_vaue.get(j));
// hookupComponentCompleteVo.setVariableValue(variableValue);
// }
// }
// } else {
// hookupComponentCompleteVo.setVariableValue("");
// }
// hookupComponentCompleteVoLsit.add(hookupComponentCompleteVo);
// }
// }
// return hookupComponentCompleteVoLsit;
// }
@Override
@Transactional
public void setHookupComponentComplete(List hookupComponentCompleteOneVoList) {
try {
SysUser user = SecurityUtils.getLoginUser().getUser();
LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(HookupComponentComplete::getSiteId, hookupComponentCompleteOneVoList.get(0).getSiteId());
List List = hookupComponentCompleteService.list(queryWrapper);
if (List.size() > 0) {
Map columnMap = new HashMap<>();
// Map columnMap = null;
columnMap.put("site_id", hookupComponentCompleteOneVoList.get(0).getSiteId());
hookupComponentCompleteService.removeByMap(columnMap);
}
for (int i = 0; i < hookupComponentCompleteOneVoList.size(); i++) {
HookupComponentComplete hookupComponentComplete = new HookupComponentComplete();
hookupComponentComplete.setSort(hookupComponentCompleteOneVoList.get(i).getSort());
hookupComponentComplete.setTitle(hookupComponentCompleteOneVoList.get(i).getTitle());
hookupComponentComplete.setInnerType(hookupComponentCompleteOneVoList.get(i).getType());
hookupComponentComplete.setTypeName(hookupComponentCompleteOneVoList.get(i).getTypeName());
hookupComponentComplete.setSvgColor(hookupComponentCompleteOneVoList.get(i).getSvgColor());
hookupComponentComplete.setSvgPositionX(hookupComponentCompleteOneVoList.get(i).getSvgPositionX());
hookupComponentComplete.setSvgPositionY(hookupComponentCompleteOneVoList.get(i).getSvgPositionY());
hookupComponentComplete.setSize(hookupComponentCompleteOneVoList.get(i).getSize());
hookupComponentComplete.setHeight(hookupComponentCompleteOneVoList.get(i).getHeight());
hookupComponentComplete.setWidth(hookupComponentCompleteOneVoList.get(i).getWidth());
hookupComponentComplete.setFontSize(hookupComponentCompleteOneVoList.get(i).getFontSize());
hookupComponentComplete.setSvgText(hookupComponentCompleteOneVoList.get(i).getSvgText());
hookupComponentComplete.setAngle(hookupComponentCompleteOneVoList.get(i).getAngle());
hookupComponentComplete.setTableRowCount(hookupComponentCompleteOneVoList.get(i).getTableRowCount());
hookupComponentComplete.setTableColCount(hookupComponentCompleteOneVoList.get(i).getTableColCount());
String TableData = JSON.toJSONString(hookupComponentCompleteOneVoList.get(i).getTableData());
if (TableData.equals("\"\"")) {
hookupComponentComplete.setTableData("");
} else {
hookupComponentComplete.setTableData(TableData.replace(" ", ""));
}
if (hookupComponentCompleteOneVoList.get(i).getElementBool().toString().equals("") || hookupComponentCompleteOneVoList.get(i).getElementBool().toString().equals("[]")) {
hookupComponentComplete.setElementBool("");
} else {
String ElementBool = hookupComponentCompleteOneVoList.get(i).getElementBool().toString().replace("[", "").replace("]", "").replace(" ", "");
hookupComponentComplete.setElementBool(ElementBool);
}
hookupComponentComplete.setSiteId(hookupComponentCompleteOneVoList.get(i).getSiteId());
hookupComponentComplete.setDeviceId(hookupComponentCompleteOneVoList.get(i).getDeviceId());
hookupComponentComplete.setVariableId(hookupComponentCompleteOneVoList.get(i).getVariableId());
hookupComponentComplete.setCreator(user.getUserName());
hookupComponentComplete.setCreateTime(LocalDateTime.now());
hookupComponentComplete.setCreateType(hookupComponentCompleteOneVoList.get(i).getCreateType());
hookupComponentComplete.setMPoint(hookupComponentCompleteOneVoList.get(i).getMPoint());
hookupComponentComplete.setEchartsOption(hookupComponentCompleteOneVoList.get(i).getEchartsOption());
hookupComponentComplete.setSvgLineSelectval(hookupComponentCompleteOneVoList.get(i).getSvgLineSelectval());
hookupComponentCompleteService.save(hookupComponentComplete);
}
} catch (Exception e) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
throw new BusinessException("数据错误,新增失败");
}
}
}