TblDatapointServiceImpl.java 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. package com.ruoyi.data.service.impl;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import com.ruoyi.common.utils.ModbusUtils;
  4. import com.ruoyi.common.utils.StringUtils;
  5. import com.ruoyi.common.core.page.TableDataInfo;
  6. import com.ruoyi.common.core.domain.PageQuery;
  7. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  8. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  9. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  10. import com.ruoyi.data.domain.DataPointUnit;
  11. import com.ruoyi.data.domain.TblSensor;
  12. import com.ruoyi.data.mapper.DatapointUnitMapper;
  13. import com.ruoyi.data.mapper.TblSensorMapper;
  14. import lombok.RequiredArgsConstructor;
  15. import org.springframework.stereotype.Service;
  16. import com.ruoyi.data.domain.bo.TblDatapointBo;
  17. import com.ruoyi.data.domain.vo.TblDatapointVo;
  18. import com.ruoyi.data.domain.TblDatapoint;
  19. import com.ruoyi.data.mapper.TblDatapointMapper;
  20. import com.ruoyi.data.service.ITblDatapointService;
  21. import java.util.stream.Stream;
  22. import java.util.List;
  23. import java.util.Map;
  24. import java.util.Collection;
  25. /**
  26. * 点位数据Service业务层处理
  27. *
  28. * @author ruoyi
  29. * @date 2023-12-05
  30. */
  31. @RequiredArgsConstructor
  32. @Service
  33. public class TblDatapointServiceImpl implements ITblDatapointService {
  34. private final TblDatapointMapper baseMapper;
  35. private final TblSensorMapper sensorMapper;
  36. private final ModbusUtils modbusUtils;
  37. private final DatapointUnitMapper datapointPointMapper;
  38. /**
  39. * 查询点位数据
  40. */
  41. @Override
  42. public TblDatapointVo queryById(Long id){
  43. return baseMapper.selectVoById(id);
  44. }
  45. /**
  46. * 查询点位数据列表
  47. */
  48. @Override
  49. public TableDataInfo<TblDatapointVo> queryPageList(TblDatapointBo bo, PageQuery pageQuery) {
  50. LambdaQueryWrapper<TblDatapoint> lqw = buildQueryWrapper(bo);
  51. Page<TblDatapointVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
  52. return TableDataInfo.build(result);
  53. }
  54. /**
  55. * 查询点位数据列表
  56. */
  57. @Override
  58. public List<TblDatapointVo> queryList(TblDatapointBo bo) {
  59. LambdaQueryWrapper<TblDatapoint> lqw = buildQueryWrapper(bo);
  60. return baseMapper.selectVoList(lqw);
  61. }
  62. private LambdaQueryWrapper<TblDatapoint> buildQueryWrapper(TblDatapointBo bo) {
  63. Map<String, Object> params = bo.getParams();
  64. LambdaQueryWrapper<TblDatapoint> lqw = Wrappers.lambdaQuery();
  65. lqw.like(StringUtils.isNotBlank(bo.getName()), TblDatapoint::getName, bo.getName());
  66. lqw.eq(bo.getSensorId() != null, TblDatapoint::getSensorId, bo.getSensorId());
  67. lqw.eq(bo.getDataType() != null, TblDatapoint::getDataType, bo.getDataType());
  68. lqw.eq(StringUtils.isNotBlank(bo.getSlaveDeviceNumber()), TblDatapoint::getSlaveDeviceNumber, bo.getSlaveDeviceNumber());
  69. lqw.eq(bo.getAddr() != null, TblDatapoint::getAddr, bo.getAddr());
  70. lqw.eq(bo.getAddrOffset() != null, TblDatapoint::getAddrOffset, bo.getAddrOffset());
  71. lqw.eq(bo.getLen() != null, TblDatapoint::getLen, bo.getLen());
  72. lqw.eq(StringUtils.isNotBlank(bo.getValueType()), TblDatapoint::getValueType, bo.getValueType());
  73. return lqw;
  74. }
  75. /**
  76. * 新增点位数据
  77. */
  78. @Override
  79. public Boolean insertByBo(TblDatapointBo bo) {
  80. TblDatapoint add = BeanUtil.toBean(bo, TblDatapoint.class);
  81. validEntityBeforeSave(add);
  82. boolean flag = baseMapper.insert(add) > 0;
  83. if (flag) {
  84. bo.setId(add.getId());
  85. }
  86. return flag;
  87. }
  88. /**
  89. * 修改点位数据
  90. */
  91. @Override
  92. public Boolean updateByBo(TblDatapointBo bo) {
  93. TblDatapoint update = BeanUtil.toBean(bo, TblDatapoint.class);
  94. validEntityBeforeSave(update);
  95. return baseMapper.updateById(update) > 0;
  96. }
  97. /**
  98. * 保存前的数据校验
  99. */
  100. private void validEntityBeforeSave(TblDatapoint entity){
  101. //TODO 做一些数据校验,如唯一约束
  102. }
  103. /**
  104. * 批量删除点位数据
  105. */
  106. @Override
  107. public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
  108. if(isValid){
  109. //TODO 做一些业务上的校验,判断是否需要校验
  110. }
  111. return baseMapper.deleteBatchIds(ids) > 0;
  112. }
  113. @Override
  114. public void readPlcInt(TblDatapoint entity,String url,String uuid) {
  115. // String uuid = "test";
  116. String name = entity.getName();
  117. String str = "holding-register:"+(entity.getAddr()+entity.getAddrOffset())+":UINT["+entity.getLen()+"]";
  118. System.out.println(str);
  119. try {
  120. modbusUtils.plcRead(url,uuid,name,str);
  121. // modbusUtils.plcSynchronizationValue("modbus-tcp://127.0.0.1:502");
  122. }catch (Exception e){
  123. e.printStackTrace();
  124. }
  125. }
  126. @Override
  127. public void writePlcInt(TblDatapoint entity,String value,String url,String uuid) {
  128. String name = entity.getName();
  129. String str = "holding-register:"+(entity.getAddr()+entity.getAddrOffset())+":UINT["+entity.getLen()+"]";
  130. String[] valueArrary = value.split(",");
  131. Integer[] arr2 = Stream.of(valueArrary).mapToInt(Integer::parseInt).boxed().toArray(Integer[] ::new);
  132. // for(int i=0;i<valueArrary.length;i++){
  133. //
  134. // }
  135. System.out.println(str);
  136. try {
  137. modbusUtils.plcWrite(url,uuid,name,str,arr2);
  138. // modbusUtils.plcSynchronizationValue("modbus-tcp://127.0.0.1:502");
  139. }catch (Exception e){
  140. e.printStackTrace();
  141. }
  142. }
  143. @Override
  144. public List<DataPointUnit> getDataPointList(DataPointUnit dataPointUnit) {
  145. return datapointPointMapper.selectDataPointUnitList(dataPointUnit);
  146. }
  147. }