package com.dy.pipIrrWechat.intake;
|
|
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.BaseResponseUtils;
|
import com.dy.common.webUtil.QueryResultVo;
|
import com.dy.pipIrrGlobal.daoPr.PrIntakeMapper;
|
import com.dy.pipIrrGlobal.daoRm.RmOpenCloseValveHistoryMapper;
|
import com.dy.pipIrrGlobal.pojoPr.PrIntake;
|
import com.dy.pipIrrGlobal.voPr.VoAllIntake;
|
import com.dy.pipIrrGlobal.voPr.VoOnLineIntake;
|
import com.dy.pipIrrGlobal.voRm.VoOpenClostWechat;
|
import com.dy.pipIrrWechat.intake.qo.OnLineIntakesQO;
|
import com.dy.pipIrrWechat.intake.qo.QoOpenClose;
|
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.List;
|
import java.util.Map;
|
|
/**
|
* @author ZhuBaoMin
|
* @date 2024-06-20 8:37
|
* @LastEditTime 2024-06-20 8:37
|
* @Description
|
*/
|
|
@Slf4j
|
@Service
|
public class IntakeSv {
|
@Autowired
|
private PrIntakeMapper prIntakeMapper;
|
|
@Autowired
|
private RestTemplate restTemplate;
|
|
@Autowired
|
private RmOpenCloseValveHistoryMapper rmOpenCloseValveHistoryMapper;
|
|
//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 IntakeSv(Environment env) {
|
this.env = env;
|
}
|
|
|
/**
|
* 获取取水口列表
|
* @return
|
*/
|
public QueryResultVo<List<VoOnLineIntake>> selectSomeIntakes(OnLineIntakesQO qo) {
|
// 如果 intakeNum 不为空,则转为小写再写入qo对象
|
String intakeNum = qo.getIntakeNum();
|
if(intakeNum != null) {
|
qo.setIntakeNum(intakeNum.toLowerCase());
|
}
|
|
Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
|
Long itemTotal = prIntakeMapper.getSomeIntakesCount4Wx(params);
|
|
QueryResultVo<List<VoOnLineIntake>> rsVo = new QueryResultVo<>() ;
|
rsVo.pageSize = qo.pageSize ;
|
rsVo.pageCurr = qo.pageCurr ;
|
rsVo.calculateAndSet(itemTotal, params);
|
rsVo.obj = prIntakeMapper.getSomeIntakes4Wx(params);
|
return rsVo;
|
|
}
|
|
/**
|
* 根据取水口编号获取取水口对象
|
* @return
|
*/
|
public VoOnLineIntake selectOneIntake(OnLineIntakesQO qo) {
|
//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));
|
//
|
//JSONArray jsonArray = new JSONArray();
|
//if(response != null && response.getString("code").equals("0001")) {
|
// JSONObject attachment = response.getJSONObject("content").getJSONObject("attachment");
|
// if(attachment != null) {
|
// attachment.forEach((key, value) -> {
|
// JSONObject jsonObject = new JSONObject();
|
// jsonObject.put("rtuAddr", key);
|
// jsonObject.put("isOnLine", value);
|
// jsonArray.add(jsonObject);
|
// });
|
// }
|
//}
|
//qo.setOnLineMap(jsonArray.toJSONString());
|
|
// 如果 intakeNum 不为空,则转为小写再写入qo对象
|
String intakeNum = qo.getIntakeNum();
|
if(intakeNum != null) {
|
qo.setIntakeNum(intakeNum.toLowerCase());
|
}
|
|
Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
|
return prIntakeMapper.getIntakeByName(params);
|
}
|
|
/**
|
* 获取取水口列表(在线和不在线)
|
* @return
|
*/
|
public QueryResultVo<List<VoOnLineIntake>> selectAllIntakes(OnLineIntakesQO qo) {
|
//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));
|
//
|
//JSONArray jsonArray = new JSONArray();
|
//if(response != null && response.getString("code").equals("0001")) {
|
// JSONObject attachment = response.getJSONObject("content").getJSONObject("attachment");
|
// if(attachment != null) {
|
// attachment.forEach((key, value) -> {
|
// JSONObject jsonObject = new JSONObject();
|
// jsonObject.put("rtuAddr", key);
|
// jsonObject.put("isOnLine", value);
|
// jsonArray.add(jsonObject);
|
// });
|
// }
|
//}
|
//qo.setOnLineMap(jsonArray.toJSONString());
|
|
// 如果 intakeNum 不为空,则转为小写再写入qo对象
|
String intakeNum = qo.getIntakeNum();
|
if(intakeNum != null) {
|
qo.setIntakeNum(intakeNum.toLowerCase());
|
}
|
|
Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
|
Long itemTotal = prIntakeMapper.getOnLineIntakesCount(params);
|
|
QueryResultVo<List<VoOnLineIntake>> rsVo = new QueryResultVo<>() ;
|
rsVo.pageSize = qo.pageSize ;
|
rsVo.pageCurr = qo.pageCurr ;
|
rsVo.calculateAndSet(itemTotal, params);
|
rsVo.obj = prIntakeMapper.getOnLineIntakes(params);
|
return rsVo;
|
|
}
|
|
/**
|
* 根据操作员获取常用取水口
|
* @param operatorId
|
* @return
|
*/
|
public List<VoOnLineIntake> getUsedIntakes(Long operatorId) {
|
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));
|
//String response_Str = "{\"code\": \"0001\",\"content\": {\"attachment\": {\"530115059980\": true,\"620201000030\": true},\"code\": \"LCD0001\",\"id\": \"999999999\",\"param\": {\"message\": \"查询所有RTU在线情况结果\",\"success\": true},\"protocol\": \"\",\"rtuAddr\": \"\",\"rtuResultSendWebUrl\": \"\",\"type\": \"resultCommand\"},\"msg\": \"请求成功\",\"success\": true}";
|
//JSONObject response = JSON.parseObject(response_Str);
|
//String test = response.toJSONString();
|
|
JSONArray jsonArray = new JSONArray();
|
if(response != null && response.getString("code").equals("0001")) {
|
JSONObject attachment = response.getJSONObject("content").getJSONObject("attachment");
|
if(attachment != null) {
|
attachment.forEach((key, value) -> {
|
JSONObject jsonObject = new JSONObject();
|
jsonObject.put("rtuAddr", key);
|
jsonObject.put("isOnLine", value);
|
jsonArray.add(jsonObject);
|
|
});
|
}
|
|
System.out.println(jsonArray.toJSONString());
|
//return prIntakeMapper.getUsedIntakes(jsonArray.toJSONString(), operatorId);
|
//} else {
|
// return new ArrayList<>();
|
}
|
|
return prIntakeMapper.getUsedIntakes(jsonArray.toJSONString(), operatorId);
|
}
|
|
/**
|
* 发送命令
|
* @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();
|
}
|
|
if(response == null) {
|
return BaseResponseUtils.buildErrorMsg("中间件调用失败");
|
}
|
|
return response.getBody();
|
}
|
|
/**
|
* 获取物理卡开关阀记录,微信小程序使用
|
* @param queryVo
|
* @return
|
*/
|
public QueryResultVo<List<VoOpenClostWechat>> getCardOpenClose(QoOpenClose queryVo) {
|
Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
|
|
Long itemTotal = rmOpenCloseValveHistoryMapper.getCardOpenCloseCount(params);
|
|
QueryResultVo<List<VoOpenClostWechat>> rsVo = new QueryResultVo<>();
|
rsVo.pageSize = queryVo.pageSize;
|
rsVo.pageCurr = queryVo.pageCurr;
|
|
rsVo.calculateAndSet(itemTotal, params);
|
rsVo.obj = rmOpenCloseValveHistoryMapper.getCardOpenClose(params);
|
return rsVo;
|
}
|
|
/**
|
* 获取虚拟卡开关阀记录,微信小程序使用
|
* @param queryVo
|
* @return
|
*/
|
public QueryResultVo<List<VoOpenClostWechat>> getVcCardOpenClose(QoOpenClose queryVo) {
|
Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
|
|
Long itemTotal = rmOpenCloseValveHistoryMapper.getVcCardOpenCloseCount(params);
|
|
QueryResultVo<List<VoOpenClostWechat>> rsVo = new QueryResultVo<>();
|
rsVo.pageSize = queryVo.pageSize;
|
rsVo.pageCurr = queryVo.pageCurr;
|
|
rsVo.calculateAndSet(itemTotal, params);
|
rsVo.obj = rmOpenCloseValveHistoryMapper.getVcCardOpenClose(params);
|
return rsVo;
|
}
|
|
/**
|
* 得到所有取水口
|
*
|
* @return 所有取水口集合
|
*/
|
public QueryResultVo<List<VoAllIntake>> selectAll() {
|
QueryResultVo<List<VoAllIntake>> rsVo = new QueryResultVo<>();
|
rsVo.obj = this.prIntakeMapper.selectAll();
|
return rsVo;
|
}
|
}
|