diff --git a/src/main/java/com/isu/gaswellwatch/controller/DeviceController.java b/src/main/java/com/isu/gaswellwatch/controller/DeviceController.java index 803ad8e..6221765 100644 --- a/src/main/java/com/isu/gaswellwatch/controller/DeviceController.java +++ b/src/main/java/com/isu/gaswellwatch/controller/DeviceController.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.isu.gaswellwatch.annotation.OperationLog; import com.isu.gaswellwatch.dto.DeviceCreateDTO; import com.isu.gaswellwatch.dto.DeviceEditDTO; +import com.isu.gaswellwatch.entity.DeviceOptLog; import com.isu.gaswellwatch.entity.Response; import com.isu.gaswellwatch.enums.LogType; import com.isu.gaswellwatch.exception.BusinessException; @@ -15,8 +16,6 @@ import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; import java.text.ParseException; -import java.util.Date; -import java.util.List; import java.util.Map; /** @@ -95,7 +94,7 @@ public class DeviceController { */ @PostMapping("/saveDeviceControlData") public Response saveDeviceControlData(@RequestBody Map controlData,@RequestParam Long deviceId) { - deviceService.saveDeviceControlData(controlData); + deviceService.saveDeviceControlData(controlData,deviceId); return Response.succeed(); } @@ -119,8 +118,27 @@ public class DeviceController { * 获取设备日志数据 */ @GetMapping("/getDeviceLogData") - public Response getDeviceLogData(@RequestParam Long id) { - deviceService.getDeviceLogData(id); + public Response> getDeviceLogData(@RequestParam(defaultValue = "1") Integer currentPage, + @RequestParam(defaultValue = "10") Integer pageSize, + @RequestParam(required = false)String startTime, + @RequestParam (required = false)String endTime, + @RequestParam Long deviceId) { + try { + return Response.succeed(deviceService.getDeviceLogData(currentPage,pageSize,startTime,endTime,deviceId)); + } catch (ParseException e) { + throw new BusinessException("日期格式错误"); + } + } + + /** + * 控制开/关井 + * + * @Param isOpen 1 开井 0 关井 + * @Param deviceId 设备id + */ + @GetMapping("/wellCtl") + public Response wellCtl(@RequestParam Integer isOpen, @RequestParam Long deviceId) { + deviceService.wellCtl(isOpen,deviceId); return Response.succeed(); } diff --git a/src/main/java/com/isu/gaswellwatch/dao/DeviceDao.java b/src/main/java/com/isu/gaswellwatch/dao/DeviceDao.java index 44fa24f..a7195bd 100644 --- a/src/main/java/com/isu/gaswellwatch/dao/DeviceDao.java +++ b/src/main/java/com/isu/gaswellwatch/dao/DeviceDao.java @@ -3,6 +3,7 @@ package com.isu.gaswellwatch.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.isu.gaswellwatch.entity.Device; +import com.isu.gaswellwatch.entity.DeviceOptLog; import com.isu.gaswellwatch.vo.DeviceHistoryVO; import com.isu.gaswellwatch.vo.DeviceVO; import org.apache.ibatis.annotations.Mapper; @@ -28,5 +29,10 @@ public interface DeviceDao extends BaseMapper { @Param("endTime")Date endTime, @Param("deviceId") Long deviceId, @Param("tableName") String tableName); + + Page deviceOptLogPage(Page objectPage, + @Param("startTime")Date startTime, + @Param("endTime")Date endTime, + @Param("deviceId") Long deviceId); } diff --git a/src/main/java/com/isu/gaswellwatch/dao/DeviceOptLogDao.java b/src/main/java/com/isu/gaswellwatch/dao/DeviceOptLogDao.java new file mode 100644 index 0000000..9828fc0 --- /dev/null +++ b/src/main/java/com/isu/gaswellwatch/dao/DeviceOptLogDao.java @@ -0,0 +1,14 @@ +package com.isu.gaswellwatch.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.isu.gaswellwatch.entity.DeviceOptLog; +import com.isu.gaswellwatch.entity.UserDepartment; +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +@Mapper +@Repository +public interface DeviceOptLogDao extends BaseMapper { + +} + diff --git a/src/main/java/com/isu/gaswellwatch/entity/DeviceOptLog.java b/src/main/java/com/isu/gaswellwatch/entity/DeviceOptLog.java new file mode 100644 index 0000000..161011c --- /dev/null +++ b/src/main/java/com/isu/gaswellwatch/entity/DeviceOptLog.java @@ -0,0 +1,42 @@ +package com.isu.gaswellwatch.entity; + +import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class DeviceOptLog extends Model { + + private Long id; + //设备id + private Long deviceId; + //账号 + private String username; + //姓名 + private String name; + //所属区块 + private String block; + //所属区块 + private String gasWell; + //设备详情 + private String deviceDetail; + //集气站 + private String gasStation; + //日志内容 + private String content; + //创建时间 + private String createTime; + //更新时间 + private String updateTime; + + +} + diff --git a/src/main/java/com/isu/gaswellwatch/modbus/data/Redis2DBPersistenceService.java b/src/main/java/com/isu/gaswellwatch/modbus/data/Redis2DBPersistenceService.java index c484a2f..7104a5c 100644 --- a/src/main/java/com/isu/gaswellwatch/modbus/data/Redis2DBPersistenceService.java +++ b/src/main/java/com/isu/gaswellwatch/modbus/data/Redis2DBPersistenceService.java @@ -38,7 +38,7 @@ public class Redis2DBPersistenceService { public static final String DEFAULT_DATA_TABLE = "t_device_data_"; private static final String DEVICE_INFO_SQL = "SELECT d.*, dp.code as modbus_device_product_code from device d " - + "join dictionary dp on dp.id = d.product where id = "; + + "join dictionary dp on dp.id = d.product where d.id = "; private static final String EXISTS_TABLE_SQL = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA" + " IN ('gaswellwatch', 'gas_well_watch') AND TABLE_NAME='$TableName$'"; @Resource diff --git a/src/main/java/com/isu/gaswellwatch/service/DeviceOptLogService.java b/src/main/java/com/isu/gaswellwatch/service/DeviceOptLogService.java new file mode 100644 index 0000000..6b5d3f4 --- /dev/null +++ b/src/main/java/com/isu/gaswellwatch/service/DeviceOptLogService.java @@ -0,0 +1,15 @@ +package com.isu.gaswellwatch.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.isu.gaswellwatch.entity.DeviceOptLog; + +import java.util.Date; + +public interface DeviceOptLogService extends IService { + + void saveGasWellOptLog(Integer isOpen, Long deviceId); + + Page page(Page page, Date start, Date end, Long deviceId); +} + diff --git a/src/main/java/com/isu/gaswellwatch/service/DeviceService.java b/src/main/java/com/isu/gaswellwatch/service/DeviceService.java index 750f35d..9b0a250 100644 --- a/src/main/java/com/isu/gaswellwatch/service/DeviceService.java +++ b/src/main/java/com/isu/gaswellwatch/service/DeviceService.java @@ -5,11 +5,11 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.isu.gaswellwatch.dto.DeviceCreateDTO; import com.isu.gaswellwatch.dto.DeviceEditDTO; import com.isu.gaswellwatch.entity.Device; +import com.isu.gaswellwatch.entity.DeviceOptLog; import com.isu.gaswellwatch.vo.DeviceHistoryVO; import com.isu.gaswellwatch.vo.DeviceVO; import java.text.ParseException; -import java.util.Date; import java.util.Map; public interface DeviceService extends IService { @@ -26,11 +26,12 @@ public interface DeviceService extends IService { Map getDeviceControlData(Long deviceId); - - void getDeviceLogData(Long id); - - void saveDeviceControlData(Map controlData); + void saveDeviceControlData(Map controlData, Long deviceId); Page getDeviceHistoryData(Integer currentPage, Integer pageSize, String startTime, String endTime, Long deviceId) throws ParseException; + + void wellCtl(Integer isOpen, Long deviceId); + + Page getDeviceLogData(Integer currentPage, Integer pageSize, String startTime, String endTime, Long deviceId) throws ParseException; } diff --git a/src/main/java/com/isu/gaswellwatch/service/impl/DeviceOptLogServiceImpl.java b/src/main/java/com/isu/gaswellwatch/service/impl/DeviceOptLogServiceImpl.java new file mode 100644 index 0000000..3c27ecd --- /dev/null +++ b/src/main/java/com/isu/gaswellwatch/service/impl/DeviceOptLogServiceImpl.java @@ -0,0 +1,60 @@ +package com.isu.gaswellwatch.service.impl; + +import cn.dev33.satoken.stp.StpUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.isu.gaswellwatch.config.SnowflakeConfig; +import com.isu.gaswellwatch.constants.UserConstant; +import com.isu.gaswellwatch.dao.DeviceDao; +import com.isu.gaswellwatch.dao.DeviceOptLogDao; +import com.isu.gaswellwatch.entity.DeviceOptLog; +import com.isu.gaswellwatch.service.*; +import com.isu.gaswellwatch.vo.BlockVO; +import com.isu.gaswellwatch.vo.DeviceVO; +import com.isu.gaswellwatch.vo.UserLoginInfoVO; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; + +@Service("deviceOptLogService") +@Transactional(rollbackFor = Exception.class) +public class DeviceOptLogServiceImpl extends ServiceImpl implements DeviceOptLogService { + + @Resource + private DeviceOptLogDao deviceOptLogDao; + @Resource + private UserService userService; + @Resource + private DeviceDao deviceDao; + @Resource + private BlockService blockService; + @Resource + private SnowflakeConfig snowflakeConfig; + + @Override + public void saveGasWellOptLog(Integer isOpen, Long deviceId) { + UserLoginInfoVO userLoginInfoVO = (UserLoginInfoVO) StpUtil.getTokenSession().get(UserConstant.TOKEN_SESSION); + DeviceVO deviceVO = deviceDao.getDeviceById(deviceId); + DeviceOptLog deviceOptLog = new DeviceOptLog(); + deviceOptLog.setId(snowflakeConfig.snowflakeId()); + deviceOptLog.setDeviceId(deviceId); + deviceOptLog.setUsername(userLoginInfoVO.getUserVO().getUsername()); + deviceOptLog.setName(userLoginInfoVO.getUserVO().getNickname()); + BlockVO blockVO = blockService.selectBlockById(deviceVO.getGasWell().getBlockId()); + deviceOptLog.setBlock("苏里格气田-"+blockVO.getName()); + deviceOptLog.setGasWell(deviceVO.getGasWell().getName()); + deviceOptLog.setDeviceDetail(deviceVO.getDeviceType().getName()+"-"+deviceVO.getProduct().getName()); + deviceOptLog.setGasStation(deviceVO.getGasStation()); + String content = isOpen==null?"设置成功":(isOpen==1?"开井成功":"关井成功"); + deviceOptLog.setContent(content); + deviceOptLogDao.insert(deviceOptLog); + } + + @Override + public Page page(Page page, Date start, Date end, Long deviceId) { + return deviceDao.deviceOptLogPage(page, start, end, deviceId); + } +} + diff --git a/src/main/java/com/isu/gaswellwatch/service/impl/DeviceServiceImpl.java b/src/main/java/com/isu/gaswellwatch/service/impl/DeviceServiceImpl.java index 8662030..93c6eb8 100644 --- a/src/main/java/com/isu/gaswellwatch/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/isu/gaswellwatch/service/impl/DeviceServiceImpl.java @@ -11,6 +11,7 @@ import com.isu.gaswellwatch.dto.DeviceEditDTO; import com.isu.gaswellwatch.entity.*; import com.isu.gaswellwatch.exception.BusinessException; import com.isu.gaswellwatch.modbus.data.PersistenceHandler; +import com.isu.gaswellwatch.modbus.data.Redis2DBPersistenceService; import com.isu.gaswellwatch.service.*; import com.isu.gaswellwatch.utils.ConverterUtil; import com.isu.gaswellwatch.vo.DeviceHistoryVO; @@ -44,6 +45,8 @@ public class DeviceServiceImpl extends ServiceImpl implements private RedisTemplate redisTemplate; @Resource private DictionaryService dictionaryService; + @Resource + private DeviceOptLogService deviceOptLogService; @Override public Page page(Integer currentPage, Integer pageSize, String gasWellName, String gasStationName,Long deviceTypeId){ @@ -119,29 +122,41 @@ public class DeviceServiceImpl extends ServiceImpl implements } @Override - public void getDeviceLogData(Long id) { - - } - - @Override - public void saveDeviceControlData(Map controlData) { - - //TODO 等待封装控制指令 - - } - - @Override - public Page getDeviceHistoryData(Integer currentPage, Integer pageSize, String startTime, String endTime, Long deviceId) throws ParseException { - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + public Page getDeviceLogData(Integer currentPage, Integer pageSize, String startTime, String endTime, Long deviceId) throws ParseException { Date start = null; Date end = null; + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); if(!StringUtils.isEmpty(startTime) ) { start = simpleDateFormat.parse(startTime); } if(!StringUtils.isEmpty(endTime)) { end = simpleDateFormat.parse(endTime); } - String tableName = "t_device_data_"+deviceId; + return deviceOptLogService.page(new Page<>(currentPage, pageSize),start,end,deviceId); + } + + @Override + public void saveDeviceControlData(Map controlData, Long deviceId) { + + //TODO 等待封装控制指令 + + + //记录用户保存控制指令日志 + deviceOptLogService.saveGasWellOptLog(null,deviceId); + } + + @Override + public Page getDeviceHistoryData(Integer currentPage, Integer pageSize, String startTime, String endTime, Long deviceId) throws ParseException { + Date start = null; + Date end = null; + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + if(!StringUtils.isEmpty(startTime) ) { + start = simpleDateFormat.parse(startTime); + } + if(!StringUtils.isEmpty(endTime)) { + end = simpleDateFormat.parse(endTime); + } + String tableName = Redis2DBPersistenceService.DEFAULT_DATA_TABLE +deviceId; Page page = deviceDao.historyPage(new Page<>(currentPage, pageSize),start,end,deviceId,tableName); List deviceHistoryVO = page.getRecords(); if(CollectionUtil.isNotEmpty(deviceHistoryVO)) { @@ -156,6 +171,15 @@ public class DeviceServiceImpl extends ServiceImpl implements return page; } + @Override + public void wellCtl(Integer isOpen, Long deviceId) { + //TODO 待封装控制指令 + + + //记录用户操作开关井日志 + deviceOptLogService.saveGasWellOptLog(isOpen,deviceId); + } + } diff --git a/src/main/resources/mapper/DeviceDao.xml b/src/main/resources/mapper/DeviceDao.xml index 55775dd..2d11a46 100644 --- a/src/main/resources/mapper/DeviceDao.xml +++ b/src/main/resources/mapper/DeviceDao.xml @@ -17,6 +17,7 @@ + @@ -59,7 +60,7 @@ @@ -77,5 +78,16 @@ order by t.collection_time desc + +