TblDatapointServiceImpl.java 5.2 KB

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