fix kanban

plp
chenyuan 9 months ago
parent 1ddf56a948
commit b07cca65f4

@ -1,33 +1,32 @@
package cn.iocoder.yudao.module.iot.controller.admin.mqttdatarecord;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
import cn.iocoder.yudao.module.iot.controller.admin.mqttdatarecord.vo.*;
import cn.iocoder.yudao.module.iot.controller.admin.mqttdatarecord.vo.MqttDataRecordPageReqVO;
import cn.iocoder.yudao.module.iot.controller.admin.mqttdatarecord.vo.MqttDataRecordRespVO;
import cn.iocoder.yudao.module.iot.controller.admin.mqttdatarecord.vo.MqttDataRecordSaveReqVO;
import cn.iocoder.yudao.module.iot.dal.dataobject.mqttdatarecord.MqttDataRecordDO;
import cn.iocoder.yudao.module.iot.service.mqttdatarecord.MqttDataRecordService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.List;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - 设备数据记录")
@RestController
@ -78,7 +77,36 @@ public class MqttDataRecordController {
PageResult<MqttDataRecordDO> pageResult = mqttDataRecordService.getMqttDataRecordPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, MqttDataRecordRespVO.class));
}
@GetMapping("/page2")
@Operation(summary = "获得设备数据记录分页")
@PreAuthorize("@ss.hasPermission('iot:mqtt-data-record:query')")
public CommonResult<PageResult<MqttDataRecordRespVO>> getMqttDataRecordPage2(@Valid MqttDataRecordPageReqVO pageReqVO) {
PageResult<MqttDataRecordDO> pageResult = mqttDataRecordService.getMqttDataRecordPage2(pageReqVO);
return success(BeanUtils.toBean(pageResult, MqttDataRecordRespVO.class));
}
@GetMapping("/page3")
@Operation(summary = "获得设备数据最近一个小时的数据")
@PreAuthorize("@ss.hasPermission('iot:mqtt-data-record:query')")
public CommonResult<PageResult<MqttDataRecordRespVO>> getMqttDataRecordPage3(@Valid MqttDataRecordPageReqVO pageReqVO) {
LocalDateTime[] dateTimes= {LocalDateTime.now().plusHours(-1),LocalDateTime.now()};
pageReqVO.setCreateTime(dateTimes);
PageResult<MqttDataRecordDO> pageResult = mqttDataRecordService.getMqttDataRecordPage2(pageReqVO);
return success(BeanUtils.toBean(pageResult, MqttDataRecordRespVO.class));
}
@GetMapping("/export-excel2")
@Operation(summary = "导出设备数据记录 Excel")
@PreAuthorize("@ss.hasPermission('iot:mqtt-data-record:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportMqttDataRecordExcel2(@Valid MqttDataRecordPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<MqttDataRecordDO> list = mqttDataRecordService.getMqttDataRecordPage2(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "设备数据记录.xls", "数据", MqttDataRecordRespVO.class,
BeanUtils.toBean(list, MqttDataRecordRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出设备数据记录 Excel")
@PreAuthorize("@ss.hasPermission('iot:mqtt-data-record:export')")

@ -47,6 +47,7 @@ public interface MqttDataRecordMapper extends BaseMapperX<MqttDataRecordDO> {
.orderByDesc("id")
.last("limit 1"));
}
default BigDecimal selectSum(MqttDataRecordPageReqVO reqVO) {
List<MqttDataRecordDO> list = select(reqVO);
BigDecimal sum = BigDecimal.ZERO;
@ -68,7 +69,7 @@ public interface MqttDataRecordMapper extends BaseMapperX<MqttDataRecordDO> {
default PageResult<MqttDataRecordDO> selectPage2(MqttDataRecordPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<MqttDataRecordDO>()
.eqIfPresent(MqttDataRecordDO::getDeviceName, reqVO.getDeviceName())
.eqIfPresent(MqttDataRecordDO::getAttribute, reqVO.getAttribute())
.inIfPresent(MqttDataRecordDO::getAttribute, reqVO.getAttributes())
.eqIfPresent(MqttDataRecordDO::getAttrValue, reqVO.getAttrValue())
.betweenIfPresent(MqttDataRecordDO::getDeviceTime, reqVO.getDeviceTime())
.betweenIfPresent(MqttDataRecordDO::getCreateTime, reqVO.getCreateTime())

@ -1,23 +1,28 @@
package cn.iocoder.yudao.module.iot.service.device;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import cn.iocoder.yudao.module.iot.controller.admin.device.vo.*;
import cn.iocoder.yudao.module.iot.dal.dataobject.device.DeviceDO;
import cn.iocoder.yudao.module.iot.dal.dataobject.deviceattribute.DeviceAttributeDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.iot.controller.admin.device.vo.DevicePageReqVO;
import cn.iocoder.yudao.module.iot.controller.admin.device.vo.DeviceSaveReqVO;
import cn.iocoder.yudao.module.iot.controller.admin.mqttdatarecord.vo.MqttDataRecordPageReqVO;
import cn.iocoder.yudao.module.iot.dal.dataobject.device.DeviceDO;
import cn.iocoder.yudao.module.iot.dal.dataobject.deviceattribute.DeviceAttributeDO;
import cn.iocoder.yudao.module.iot.dal.dataobject.mqttdatarecord.MqttDataRecordDO;
import cn.iocoder.yudao.module.iot.dal.mysql.device.DeviceMapper;
import cn.iocoder.yudao.module.iot.dal.mysql.deviceattribute.DeviceAttributeMapper;
import cn.iocoder.yudao.module.iot.dal.mysql.mqttdatarecord.MqttDataRecordMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.List;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.*;
import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.DEVICE_ATTRIBUTE_NOT_EXISTS;
import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.DEVICE_NOT_EXISTS;
/**
* Service
@ -33,6 +38,8 @@ public class DeviceServiceImpl implements DeviceService {
@Resource
private DeviceAttributeMapper deviceAttributeMapper;
@Resource
private MqttDataRecordMapper mqttDataRecordMapper;
@Override
public Long createDevice(DeviceSaveReqVO createReqVO) {
// 插入
@ -41,6 +48,26 @@ public class DeviceServiceImpl implements DeviceService {
// 返回
return device.getId();
}
//@Scheduled(cron="0/5 * * * * ? ") //每1秒执行一次
public void updateDeviceStatus(){
List<DeviceDO> list = deviceMapper.selectList();
MqttDataRecordPageReqVO reqVO = new MqttDataRecordPageReqVO();
LocalDateTime[] dateTimes= {LocalDateTime.now().plusSeconds(-5),LocalDateTime.now()};
reqVO.setCreateTime(dateTimes);
reqVO.setPageSize(1);
for (DeviceDO deviceDO : list) {
reqVO.setDeviceName(deviceDO.getDeviceName());
List<MqttDataRecordDO> recordDOList = mqttDataRecordMapper.select(reqVO);
if (recordDOList != null && deviceDO.getStatus().equals("2")) {
System.out.println(recordDOList);
deviceDO.setStatus("1");
deviceMapper.updateById(deviceDO);
}else if ((recordDOList == null|| recordDOList.size()==0) && deviceDO.getStatus().equals("1")){
deviceDO.setStatus("2");
deviceMapper.updateById(deviceDO);
}
}
}
@Override
public void updateDevice(DeviceSaveReqVO updateReqVO) {

@ -69,6 +69,6 @@ public class MqttDataRecordServiceImpl implements MqttDataRecordService {
}
@Override
public PageResult<MqttDataRecordDO> getMqttDataRecordPage2(MqttDataRecordPageReqVO pageReqVO) {
return mqttDataRecordMapper.selectPage(pageReqVO);
return mqttDataRecordMapper.selectPage2(pageReqVO);
}
}

@ -43,21 +43,18 @@ spring:
primary: master
datasource:
master:
url: jdbc:mysql://127.0.0.1:3306/ruoyi-vue-pro?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
name: besure_neimeng
url: jdbc:mysql://111.67.199.122:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
# url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT # MySQL Connector/J 5.X 连接的示例
username: root
password: 123456
slave: # 模拟从库,可根据自己需要修改 # 模拟从库,可根据自己需要修改
lazy: true # 开启懒加载,保证启动速度
url: jdbc:mysql://127.0.0.1:3306/ruoyi-vue-pro?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
username: root
password: 123456
password: CHY123chy.
# Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
redis:
host: 400-infra.server.iocoder.cn # 地址
host: 111.230.55.200 # 地址
port: 6379 # 端口
database: 1 # 数据库索引
# password: 123456 # 密码,建议生产环境开启
database: 0 # 数据库索引
#password: bkcaydy8ydhZZnS2 # 密码,建议生产环境开启
--- #################### 定时任务相关配置 ####################

@ -48,23 +48,14 @@ spring:
datasource:
master:
name: besure_neimeng
url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
url: jdbc:mysql://47.106.185.127:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
# url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT # MySQL Connector/J 5.X 连接的示例
username: besure_user1
password: zpW5:,LGHACh
# username: sa # SQL Server 连接的示例111.67.199.122http://47.106.185.127/
# password: Yudao@2024 # SQL Server 连接的示例
# username: SYSDBA # DM 连接的示例
# password: SYSDBA001 # DM 连接的示例
# slave: # 模拟从库,可根据自己需要修改
# lazy: true # 开启懒加载,保证启动速度
# url: jdbc:mysql://127.0.0.1:3306/ruoyi-vue-pro?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
# username: root
# password: 123456
# Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
redis:
host: 127.0.0.1 # 地址
host: 111.230.55.200 # 地址
port: 6379 # 端口
database: 0 # 数据库索引
#password: bkcaydy8ydhZZnS2 # 密码,建议生产环境开启

@ -307,6 +307,7 @@ yudao:
- tmp_report_data_1
- tmp_report_data_income
- iot_gateway
- iot_device
- iot_mqtt_record
- iot_mqtt_data_record
- mes_view_task_product_summary

Loading…
Cancel
Save