TblDatapointServiceImpl.java 5.5 KB

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