diff --git a/src/main/java/org/springblade/modules/business/contraller/DeviceController.java b/src/main/java/org/springblade/modules/business/contraller/DeviceController.java index b5a611c..360292b 100644 --- a/src/main/java/org/springblade/modules/business/contraller/DeviceController.java +++ b/src/main/java/org/springblade/modules/business/contraller/DeviceController.java @@ -101,16 +101,12 @@ public class DeviceController extends BladeController { * 设备表 巡检计划设备列表,按照实验室、楼层、房间匹配 */ @GetMapping("/limsList") - public R> limsList(Device device) { + public R> limsList(Device device) { // 参数校验 if (device.getLimsId() == null || device.getFloorId() == null || device.getRoomId() == null) { return R.success("参数为空!"); } - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(Device.class) - .eq(Device::getLimsId, device.getLimsId()) - .eq(Device::getFloorId, device.getFloorId()) - .eq(Device::getRoomId, device.getRoomId()); - return R.data(deviceService.list(wrapper)); + return R.data(deviceService.limsList(device)); } private String sanitizeInput(String input) { diff --git a/src/main/java/org/springblade/modules/business/contraller/MessageController.java b/src/main/java/org/springblade/modules/business/contraller/MessageController.java new file mode 100644 index 0000000..1f0ad8f --- /dev/null +++ b/src/main/java/org/springblade/modules/business/contraller/MessageController.java @@ -0,0 +1,90 @@ +package org.springblade.modules.business.contraller; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.AllArgsConstructor; +import org.springblade.core.boot.ctrl.BladeController; +import org.springblade.core.tool.api.R; +import org.springblade.modules.business.pojo.dto.MessageUpdateDTO; +import org.springblade.modules.business.pojo.entity.Message; +import org.springblade.modules.business.pojo.vo.MessageVO; +import org.springblade.modules.business.service.IMessageService; +import org.springframework.web.bind.annotation.*; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; + +@RestController +@AllArgsConstructor +@RequestMapping("/messeage") +@Tag(name = "消息处理", description = "消息处理") +public class MessageController extends BladeController { + + private final IMessageService messageService; + + + /** + * 获取消息列表接口 + * + * @param current + * @param size + * @param startTime + * @param endTime + * @param status + * @return + */ + @GetMapping("/list") + @Operation(summary = "消息列表获取", description = "消息列表获取") + public R getMessageList(Integer current, Integer size, LocalDate startTime, LocalDate endTime, Integer status) { + return R.data(messageService.getMessageList(current, size, startTime, endTime, status)); + } + + /** + * 获取消息总数接口 + * + * @return + */ + @GetMapping("/total") + @Operation(summary = "获取消息总数", description = "获取消息总数") + public R getMessageTotal() { + Long messageTotal = messageService.getMessageTotal(); + return R.data(messageTotal); + } + + /** + * 更新已读接口 + * + * @param messageUpdateDTO + * @return + */ + @PostMapping("/updateStatus") + @Operation(summary = "更新已读", description = "更新已读") + public R updateMessageStatus(@RequestBody MessageUpdateDTO messageUpdateDTO) { + Integer status = messageUpdateDTO.getStatus(); + Long id = messageUpdateDTO.getId(); + messageService.updateMessageStatus(id, status); + return R.success(); + } + + /** + * 一键已读全部接口 + */ + @PostMapping("/updateStatusAll") + @Operation(summary = "一键全部已读", description = "一键全部已读") + public R updateMessageStatusAll() { + messageService.updateMessageStatusAll(); + return R.success(); + } + + @PostMapping("/saveMessage") + public void saveMessage(@RequestBody Message message) { + String content = message.getContent(); + String title = message.getTitle(); + String systemType = message.getSystemType(); + Long messageUser = message.getMessageUser(); + Integer messageType = message.getMessageType(); + messageService.saveMessage(systemType, title, content, messageUser, messageType); + } + +} diff --git a/src/main/java/org/springblade/modules/business/mapper/MessageMapper.java b/src/main/java/org/springblade/modules/business/mapper/MessageMapper.java new file mode 100644 index 0000000..9021a49 --- /dev/null +++ b/src/main/java/org/springblade/modules/business/mapper/MessageMapper.java @@ -0,0 +1,9 @@ +package org.springblade.modules.business.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springblade.modules.business.pojo.entity.Message; + +public interface MessageMapper extends BaseMapper { + + +} diff --git a/src/main/java/org/springblade/modules/business/pojo/dto/MessageUpdateDTO.java b/src/main/java/org/springblade/modules/business/pojo/dto/MessageUpdateDTO.java new file mode 100644 index 0000000..62e4d42 --- /dev/null +++ b/src/main/java/org/springblade/modules/business/pojo/dto/MessageUpdateDTO.java @@ -0,0 +1,11 @@ +package org.springblade.modules.business.pojo.dto; + +import lombok.Data; + +@Data +public class MessageUpdateDTO { + + private Long id; + + private Integer status; +} diff --git a/src/main/java/org/springblade/modules/business/pojo/entity/Message.java b/src/main/java/org/springblade/modules/business/pojo/entity/Message.java new file mode 100644 index 0000000..67a57b0 --- /dev/null +++ b/src/main/java/org/springblade/modules/business/pojo/entity/Message.java @@ -0,0 +1,40 @@ +package org.springblade.modules.business.pojo.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.core.mp.base.BaseEntity; + +import java.util.Date; + +@Data +@TableName("blade_message") +@EqualsAndHashCode(callSuper = true) +public class Message extends BaseEntity { + + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + private String systemType; + + private String tenantId; + + private Long createUser; + + private String title; + + private String content; + + private Integer level; + + private Integer method; + + private Integer isRead; + + private Integer messageType; + + private Long messageUser; + +} diff --git a/src/main/java/org/springblade/modules/business/pojo/vo/MessageVO.java b/src/main/java/org/springblade/modules/business/pojo/vo/MessageVO.java new file mode 100644 index 0000000..42198d3 --- /dev/null +++ b/src/main/java/org/springblade/modules/business/pojo/vo/MessageVO.java @@ -0,0 +1,20 @@ +package org.springblade.modules.business.pojo.vo; + +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.Date; + +@Data +public class MessageVO { + + private Long id; + + private String content; + + private Date createTime; + + private Integer status; + + private Integer messageType; +} diff --git a/src/main/java/org/springblade/modules/business/pojo/vo/PageVO.java b/src/main/java/org/springblade/modules/business/pojo/vo/PageVO.java new file mode 100644 index 0000000..ebb6aec --- /dev/null +++ b/src/main/java/org/springblade/modules/business/pojo/vo/PageVO.java @@ -0,0 +1,15 @@ +package org.springblade.modules.business.pojo.vo; + +import io.lettuce.core.protocol.CommandHandler; +import lombok.Data; + +import java.util.List; + + +@Data +public class PageVO { + + private List list; + + private Long total; +} diff --git a/src/main/java/org/springblade/modules/business/service/IDeviceService.java b/src/main/java/org/springblade/modules/business/service/IDeviceService.java index 49abef4..c78a874 100644 --- a/src/main/java/org/springblade/modules/business/service/IDeviceService.java +++ b/src/main/java/org/springblade/modules/business/service/IDeviceService.java @@ -48,4 +48,5 @@ public interface IDeviceService extends BaseService { void importGoods(List data, Boolean isCovered); + List limsList(Device device); } diff --git a/src/main/java/org/springblade/modules/business/service/IMessageService.java b/src/main/java/org/springblade/modules/business/service/IMessageService.java new file mode 100644 index 0000000..2437229 --- /dev/null +++ b/src/main/java/org/springblade/modules/business/service/IMessageService.java @@ -0,0 +1,24 @@ +package org.springblade.modules.business.service; + +import org.springblade.core.mp.base.BaseService; +import org.springblade.modules.business.pojo.entity.Message; +import org.springblade.modules.business.pojo.vo.MessageVO; +import org.springblade.modules.business.pojo.vo.PageVO; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; + +public interface IMessageService extends BaseService { + + void saveMessage(String systemType, String title, String content, Long messageUser, Integer messageType); + + + PageVO getMessageList(Integer current, Integer size, LocalDate start, LocalDate end, Integer status); + + Long getMessageTotal(); + + void updateMessageStatus(Long id, Integer status); + + void updateMessageStatusAll(); +} diff --git a/src/main/java/org/springblade/modules/business/service/impl/DeviceServiceImpl.java b/src/main/java/org/springblade/modules/business/service/impl/DeviceServiceImpl.java index 2479e59..b1ecbd0 100644 --- a/src/main/java/org/springblade/modules/business/service/impl/DeviceServiceImpl.java +++ b/src/main/java/org/springblade/modules/business/service/impl/DeviceServiceImpl.java @@ -3,6 +3,7 @@ package org.springblade.modules.business.service.impl; import com.aliyun.oss.ServiceException; import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -198,8 +199,31 @@ public class DeviceServiceImpl extends BaseServiceImpl imp } } + @Override + public List limsList(Device device) { + List deviceVOList = new ArrayList<>(); + // 按照实验室、楼层、房间匹配巡检计划设备列表 + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(Device.class) + .eq(Device::getLimsId, device.getLimsId()) + .eq(Device::getFloorId, device.getFloorId()) + .eq(Device::getRoomId, device.getRoomId()); + List devices = this.list(wrapper); + // 查询关联的设备巡检数据 + List maintenances = maintenanceService.list(Wrappers.lambdaQuery(DeviceMaintenance.class).in(DeviceMaintenance::getDeviceId, devices.stream().map(Device::getId).toList())); + // 组装视图返回 + devices.forEach(devic -> { + DeviceVO deviceVO = BeanUtil.copyProperties(devic, DeviceVO.class); + if (deviceVO != null) { + deviceVO.setMaintenances(maintenances.stream().filter(maintenance -> maintenance.getDeviceId().equals(devic.getId())).toList()); + deviceVOList.add(deviceVO); + } + }); + return deviceVOList; + } + /** * 获取两个list相同数据 + * * @param list1 * @param list2 * @return diff --git a/src/main/java/org/springblade/modules/business/service/impl/MessageServiceImpl.java b/src/main/java/org/springblade/modules/business/service/impl/MessageServiceImpl.java new file mode 100644 index 0000000..798f589 --- /dev/null +++ b/src/main/java/org/springblade/modules/business/service/impl/MessageServiceImpl.java @@ -0,0 +1,131 @@ +package org.springblade.modules.business.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.core.secure.utils.AuthUtil; +import org.springblade.modules.business.mapper.MessageMapper; +import org.springblade.modules.business.pojo.entity.Message; +import org.springblade.modules.business.pojo.vo.MessageVO; +import org.springblade.modules.business.pojo.vo.PageVO; +import org.springblade.modules.business.service.IMessageService; +import org.springframework.stereotype.Service; + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; + +@Service +public class MessageServiceImpl extends BaseServiceImpl implements IMessageService { + + /** + * 保存消息 + * + * @param systemType + * @param title + * @param content + * @param messageUser + * @param messageType + */ + @Override + public void saveMessage(String systemType, String title, String content, Long messageUser, Integer messageType) { + Message saveInformation = new Message(); + saveInformation.setSystemType(systemType); + saveInformation.setTitle(title); + saveInformation.setContent(content); + saveInformation.setMessageUser(messageUser); + saveInformation.setTenantId(AuthUtil.getTenantId()); + saveInformation.setCreateUser(AuthUtil.getUserId()); + saveInformation.setLevel(1); + saveInformation.setMethod(2); + saveInformation.setIsRead(0); + saveInformation.setMessageType(messageType); + this.save(saveInformation); + } + + /** + * 消息列表获取 + * + * @param current + * @param size + * @param startTime + * @param endTime + * @param status + * @return + */ + @Override + public PageVO getMessageList(Integer current, Integer size, LocalDate startTime, LocalDate endTime, Integer status) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (startTime != null && endTime != null) { + queryWrapper.between("create_time", startTime, endTime); + } + if (status != null) { + queryWrapper.eq("is_read", status); + } + //筛选专属该用户的信息 + queryWrapper.eq("message_user", AuthUtil.getUserId()); + //使未读在已读之上 + queryWrapper.orderByAsc("is_read"); + //在未读在已读之上的基础上 再按时间进行排序 + queryWrapper.orderByDesc("create_time"); + Page page = new Page<>(current, size); + Page messagePage = baseMapper.selectPage(page, queryWrapper); + List records = messagePage.getRecords(); + Long total = messagePage.getTotal(); + List messageVOList = new ArrayList<>(); + for (Message record : records) { + MessageVO messageVO = new MessageVO(); + messageVO.setId(record.getId()); + messageVO.setContent(record.getContent()); + messageVO.setMessageType(record.getMessageType()); + messageVO.setStatus(record.getIsRead()); + messageVO.setCreateTime(record.getCreateTime()); + messageVOList.add(messageVO); + } + PageVO pageVO = new PageVO(); + pageVO.setList(messageVOList); + pageVO.setTotal(total); + return pageVO; + } + + /** + * 获取消息总数 + * + * @return + */ + @Override + public Long getMessageTotal() { + QueryWrapper queryWrapper = new QueryWrapper<>(); + //筛选该用户的专属消息 + queryWrapper.eq("message_user", AuthUtil.getUserId()); + //只查询未读的消息 + queryWrapper.eq("is_read", 0); + return baseMapper.selectCount(queryWrapper); + } + + /** + * 更新消息为已读状态 + * + * @param id + * @param status + */ + @Override + public void updateMessageStatus(Long id, Integer status) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("id", id).set("is_read", status); + baseMapper.update(updateWrapper); + } + + /** + * 一键已读全部 + */ + @Override + public void updateMessageStatusAll() { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + //筛选该用户的专属消息 + updateWrapper.eq("message_user", AuthUtil.getUserId()); + updateWrapper.eq("is_read", 0).set("is_read", 1); + baseMapper.update(updateWrapper); + } +} diff --git a/src/main/java/org/springblade/modules/system/pojo/entity/User.java b/src/main/java/org/springblade/modules/system/pojo/entity/User.java index 746c0b0..5c3aeef 100644 --- a/src/main/java/org/springblade/modules/system/pojo/entity/User.java +++ b/src/main/java/org/springblade/modules/system/pojo/entity/User.java @@ -122,5 +122,9 @@ public class User extends TenantEntity { * 详细地址纬度 */ private String addressLat; + /** + * 是否维保客户 + */ + private Integer isMaintenanceClient; }