package com.dy.pipIrrProject.controller;
|
|
import com.alibaba.fastjson2.JSON;
|
import com.alibaba.fastjson2.JSONArray;
|
import com.alibaba.fastjson2.JSONObject;
|
import com.dy.common.multiDataSource.DataSourceContext;
|
import com.dy.common.mw.protocol.Command;
|
import com.dy.common.webUtil.BaseResponse;
|
import com.dy.common.webUtil.QueryResultVo;
|
import com.dy.pipIrrGlobal.daoPr.PrControllerMapper;
|
import com.dy.pipIrrGlobal.daoPr.PrIntakeControllerMapper;
|
import com.dy.pipIrrGlobal.daoPr.PrIntakeMapper;
|
import com.dy.pipIrrGlobal.pojoPr.PrController;
|
import com.dy.pipIrrGlobal.pojoPr.PrIntakeController;
|
import com.dy.pipIrrGlobal.voPr.VoController;
|
import com.dy.pipIrrGlobal.voPr.VoOnLineIntake;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.dubbo.common.utils.PojoUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.core.env.Environment;
|
import org.springframework.http.HttpEntity;
|
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.HttpMethod;
|
import org.springframework.http.ResponseEntity;
|
import org.springframework.stereotype.Service;
|
import org.springframework.web.client.RestTemplate;
|
import org.springframework.web.util.UriComponentsBuilder;
|
|
import java.util.*;
|
|
/**
|
* @author ZhuBaoMin
|
* @date 2023-12-29 10:06
|
* @LastEditTime 2023-12-29 10:06
|
* @Description
|
*/
|
|
@Slf4j
|
@Service
|
public class ControllerSv {
|
@Autowired
|
private PrControllerMapper prControllerMapper;
|
|
@Autowired
|
private PrIntakeMapper prIntakeMapper;
|
|
@Autowired
|
private PrIntakeControllerMapper prIntakeControllerMapper;
|
|
@Autowired
|
private RestTemplate restTemplate;
|
|
// protected static String mwUrlSendCom = "http://127.0.0.1:8070/rtuMw/com/send";
|
protected String comSendUrl;
|
|
/**
|
* pro_mw:属性
|
* tag从控制器中获取
|
* key_mw:url的key
|
*/
|
private Environment env = null;
|
private String pro_mw = "mw";
|
private String key_mw = "comSendUrl";
|
@Autowired
|
public ControllerSv(Environment env) {
|
this.env = env;
|
}
|
|
/**
|
* 根据指定获取控制器记录
|
*
|
* @param queryVo
|
* @return
|
*/
|
public QueryResultVo<List<VoController>> getControllers(QueryVo queryVo) {
|
|
Command com = new Command() ;
|
com.id = Command.defaultId;
|
com.code = "LCD0001";
|
com.type = "innerCommand";
|
comSendUrl = env.getProperty(pro_mw + "." + DataSourceContext.get() + "." + key_mw);
|
|
JSONObject response = (JSONObject) JSON.toJSON(sendCom2Mw(com));
|
|
|
if (response != null && response.getString("code").equals("0001")) {
|
JSONObject attachment = response.getJSONObject("content").getJSONObject("attachment").getJSONObject("onLineMap");
|
HashMap<String, Boolean> onLineMap = JSON.parseObject(attachment.toJSONString(), HashMap.class);
|
|
JSONArray jsonArray = new JSONArray();
|
for (Map.Entry<String, Boolean> entry : onLineMap.entrySet()) {
|
JSONObject jsonObject = new JSONObject();
|
jsonObject.put("rtuAddr", entry.getKey());
|
jsonObject.put("isOnLine", entry.getValue());
|
jsonArray.add(jsonObject);
|
}
|
queryVo.setOnLineMap(jsonArray.toJSONString());
|
|
Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
|
|
Long itemTotal = prControllerMapper.getRecordCount(params);
|
|
QueryResultVo<List<VoController>> rsVo = new QueryResultVo<>();
|
rsVo.pageSize = queryVo.pageSize;
|
rsVo.pageCurr = queryVo.pageCurr;
|
|
rsVo.calculateAndSet(itemTotal, params);
|
rsVo.obj = prControllerMapper.getControllers(params);
|
return rsVo;
|
} else {
|
QueryResultVo<List<VoController>> rsVo = new QueryResultVo<>();
|
return rsVo;
|
}
|
}
|
|
/**
|
* 添加控制器
|
*
|
* @param po
|
* @return
|
*/
|
public Integer addController(PrController po) {
|
int rows = prControllerMapper.insert(po);
|
if (rows == 0) {
|
return 0;
|
}
|
PrIntakeController addPrIntakeController = new PrIntakeController();
|
addPrIntakeController.setIntakeid(po.getIntakeId());
|
addPrIntakeController.setControllerid(po.getId());
|
addPrIntakeController.setOperatetype((byte) 1);
|
addPrIntakeController.setOperator(po.getOperator());
|
addPrIntakeController.setOperatedt(po.getOperateDt());
|
addPrIntakeController.setRemarks("绑定");
|
int rec = prIntakeControllerMapper.insert(addPrIntakeController);
|
if (rec == 0) {
|
return 0;
|
}
|
return 1;
|
}
|
|
/**
|
* 根据控制器地址获取控制器列表
|
*
|
* @param rtuAddr
|
* @return
|
*/
|
public List<Map<String, Object>> getControllersByAddr(String rtuAddr) {
|
return prControllerMapper.getControllersByAddr(rtuAddr);
|
}
|
|
/**
|
* 根据控制器编号物理删除控制
|
*
|
* @param controllerId
|
* @return
|
*/
|
public Integer deleteControllerById(Long controllerId) {
|
return prControllerMapper.deleteByPrimaryKey(controllerId);
|
}
|
|
/**
|
* 根据指定条件导出控制器列表
|
*
|
* @param queryVo
|
* @return
|
*/
|
public List<VoController> export(QueryVo queryVo) {
|
Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
|
List<VoController> rsVo = new ArrayList<>();
|
rsVo = prControllerMapper.getControllers(params);
|
return rsVo;
|
}
|
|
/**
|
* 根据控制器编号获取未删除的控制器数量
|
*
|
* @param controllerId
|
* @return
|
*/
|
public Integer getRecordCountOfController(Long controllerId) {
|
return prControllerMapper.getRecordCountOfController(controllerId);
|
}
|
|
/**
|
* 根据控制器编号获取已绑定记录数
|
*
|
* @param controllerId
|
* @return
|
*/
|
public Integer getBindedCount(Long controllerId) {
|
return prControllerMapper.getBindedCount(controllerId);
|
}
|
|
/**
|
* 根据主键删除外键
|
*
|
* @param controllerId
|
* @return
|
*/
|
public Integer deleteIntakeId(Long controllerId) {
|
return prControllerMapper.deleteIntakeId(controllerId);
|
}
|
|
/**
|
* 获取未绑控制器的取水口列表
|
*
|
* @return
|
*/
|
public JSONArray getNoBindingIntakes() {
|
List<Map<String, Object>> list = Optional.ofNullable(prIntakeMapper.getNoBindingIntakes()).orElse(new ArrayList<>());
|
JSONArray array = null;
|
if (list.size() > 0) {
|
array = JSONArray.parseArray(JSON.toJSONString(list));
|
}
|
return array;
|
}
|
|
/**
|
* 根据控制器编号物理删除控制
|
* 2024-6-7
|
*
|
* @param controllerId
|
* @return
|
*/
|
public Integer deleteControllerByIdTwo(Long controllerId) {
|
return prControllerMapper.deleteByPrimaryKey(controllerId);
|
}
|
|
/**
|
* 根据主键查询控制器列表
|
* 2024-6-7
|
*
|
* @param controllerId
|
* @return
|
*/
|
public PrController getByControllerId(Long controllerId) {
|
return prControllerMapper.selectByPrimaryKey(controllerId);
|
}
|
|
|
/**
|
* 发送命令
|
*
|
* @return
|
*/
|
protected BaseResponse sendCom2Mw(Command com) {
|
String url = UriComponentsBuilder.fromUriString(comSendUrl)
|
.build()
|
.toUriString();
|
HttpHeaders headers = new HttpHeaders();
|
HttpEntity<Command> httpEntity = new HttpEntity<>(com, headers);
|
ResponseEntity<BaseResponse> response = null;
|
try {
|
// 通过Post方式调用接口
|
response = restTemplate.exchange(url, HttpMethod.POST, httpEntity, BaseResponse.class);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return response.getBody();
|
}
|
}
|