Commit 3463733d authored by 赵啸非's avatar 赵啸非

添加通知

parent ab31d31c
-- ----------------------------
2023-09-04
-- ----------------------------
ALTER TABLE mortals_xhx_room ADD COLUMN `fileName` varchar(256) default '' COMMENT '文件名称';
ALTER TABLE mortals_xhx_room ADD COLUMN `filePath` varchar(256) default '' COMMENT '文件相对路径地址';
-- ----------------------------
-- 通知公告表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_notice`;
CREATE TABLE mortals_xhx_notice(
`id` bigint(20) AUTO_INCREMENT COMMENT '主键ID,主键,自增长',
`title` varchar(256) NOT NULL COMMENT '标题',
`noticeContent` mediumtext COMMENT '公告内容',
`filePath` varchar(512) COMMENT '公告文件路径',
`fileName` varchar(512) COMMENT '公告文件名称',
`remark` varchar(256) COMMENT '备注',
`createUserId` bigint(20) NOT NULL COMMENT '创建用户',
`createTime` datetime NOT NULL COMMENT '创建时间',
`updateUserId` bigint(20) COMMENT '更新用户',
`updateTime` datetime COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='通知公告';
-- ----------------------------
-- 房间公告表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_notice_room`;
CREATE TABLE mortals_xhx_notice_room(
`id` bigint(20) AUTO_INCREMENT COMMENT '主键ID,主键,自增长',
`noticeId` bigint(20) COMMENT '公告id',
`title` varchar(256) NOT NULL COMMENT '公告标题',
`roomId` bigint(20) COMMENT '房间id',
`roomName` varchar(256) NOT NULL COMMENT '房间名称',
`remark` varchar(256) COMMENT '备注',
`createUserId` bigint(20) NOT NULL COMMENT '创建用户',
`createTime` datetime NOT NULL COMMENT '创建时间',
`updateUserId` bigint(20) COMMENT '更新用户',
`updateTime` datetime COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='房间公告';
-- ----------------------------
-- 通知公告菜单 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_menu` VALUES (null, '通知公告', '/notice/list', 0,'', 1, 1, 0, 0,'',NULL, NULL, NULL, 0, 0, 1, NULL, NULL, NULL);
-- ----------------------------
-- 通知公告资源路径 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_resource` VALUES (null, '通知公告-菜单管理-查看', '/notice/list,/notice/view,/notice/info,/notice/export,/notice/exportExcel,/notice/downloadTemplate,/notice/download', 3, 0, NULL, NULL, NULL, 0);
INSERT INTO `mortals_xhx_resource` VALUES (null, '通知公告-菜单管理-维护', '/notice/add,/notice/edit,/notice/delete,/notice/logicDelete,/notice/save,/notice/importData', 3, 0, NULL, NULL, NULL, 0);
-- ----------------------------
-- 通知公告参数 SQL
-- ----------------------------
-- ----------------------------
-- 房间公告菜单 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_menu` VALUES (null, '房间公告', '/notice/room/list', 0,'', 1, 1, 0, 0,'',NULL, NULL, NULL, 0, 0, 1, NULL, NULL, NULL);
-- ----------------------------
-- 房间公告资源路径 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_resource` VALUES (null, '房间公告-菜单管理-查看', '/notice/room/list,/notice/room/view,/notice/room/info,/notice/room/export,/notice/room/exportExcel,/notice/room/downloadTemplate,/notice/room/download', 3, 0, NULL, NULL, NULL, 0);
INSERT INTO `mortals_xhx_resource` VALUES (null, '房间公告-菜单管理-维护', '/notice/room/add,/notice/room/edit,/notice/room/delete,/notice/room/logicDelete,/notice/room/save,/notice/room/importData', 3, 0, NULL, NULL, NULL, 0);
......@@ -49,6 +49,9 @@ const router = new Router({
...restBuilder('basic/set', 'basic/set'),//基础设置
...restBuilder('notice', 'notice'),//通知公告
...restBuilder('room/notice', 'room/notice'),//房间所属公告
//以下为基础路由配置
builder('', 'Home'),
builder('index', 'Home'),
......
......@@ -11,6 +11,8 @@
<Field :span="20" label="房间编码" prop="roomCode" v-model="form.roomCode" placeholder="请输入房间编码"/>
<Field :span="20" label="房间类型" prop="roomType" v-model="form.roomType" type="select" :enumData="dict.roomType" placeholder="请选择房间类型"/>
<Field :span="20" label="关联设备" prop="deviceId" v-model="deviceIds" type="select" :multiple="true" :enumData="dict.deviceIds" placeholder="请选择绑定的电子门牌的设备ID"/>
<Field label="附件"><fileUpload v-model="form.filePath" prePath="/file/fileupload"/></Field>
<Field :span="20" label="备注" prop="remark" v-model="form.remark" type="textarea" placeholder="请输入备注"/>
</el-row>
......
package com.mortals.xhx.module.notice.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.notice.model.NoticeEntity;
import java.util.List;
/**
* 通知公告Dao
* 通知公告 DAO接口
*
* @author zxfei
* @date 2023-09-04
*/
public interface NoticeDao extends ICRUDDao<NoticeEntity,Long>{
}
package com.mortals.xhx.module.notice.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.notice.model.NoticeRoomEntity;
import java.util.List;
/**
* 房间公告Dao
* 房间公告 DAO接口
*
* @author zxfei
* @date 2023-09-04
*/
public interface NoticeRoomDao extends ICRUDDao<NoticeRoomEntity,Long>{
}
package com.mortals.xhx.module.notice.dao.ibatis;
import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.notice.dao.NoticeDao;
import com.mortals.xhx.module.notice.model.NoticeEntity;
import java.util.Date;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import java.util.List;
/**
* 通知公告DaoImpl DAO接口
*
* @author zxfei
* @date 2023-09-04
*/
@Repository("noticeDao")
public class NoticeDaoImpl extends BaseCRUDDaoMybatis<NoticeEntity,Long> implements NoticeDao {
}
package com.mortals.xhx.module.notice.dao.ibatis;
import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.notice.dao.NoticeRoomDao;
import com.mortals.xhx.module.notice.model.NoticeRoomEntity;
import java.util.Date;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import java.util.List;
/**
* 房间公告DaoImpl DAO接口
*
* @author zxfei
* @date 2023-09-04
*/
@Repository("noticeRoomDao")
public class NoticeRoomDaoImpl extends BaseCRUDDaoMybatis<NoticeRoomEntity,Long> implements NoticeRoomDao {
}
package com.mortals.xhx.module.notice.model;
import java.util.List;
import java.util.List;
import java.util.ArrayList;
import java.math.BigDecimal;
import cn.hutool.core.date.DateUtil;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.framework.annotation.Excel;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.notice.model.vo.NoticeVo;
import com.mortals.xhx.module.notice.model.NoticeRoomEntity;
import lombok.Data;
/**
* 通知公告实体对象
*
* @author zxfei
* @date 2023-09-04
*/
@Data
public class NoticeEntity extends NoticeVo {
private static final long serialVersionUID = 1L;
/**
* 标题
*/
@Excel(name = "标题")
private String title;
/**
* 公告内容
*/
private String noticeContent;
/**
* 公告文件路径
*/
private String filePath;
/**
* 公告文件名称
*/
private String fileName;
/**
* 备注
*/
private String remark;
/**
* 房间公告信息
*/
private List<NoticeRoomEntity> noticeRoomList=new ArrayList<>();;
public List<NoticeRoomEntity> getNoticeRoomList(){
return noticeRoomList;
}
public void setNoticeRoomList(List<NoticeRoomEntity> noticeRoomList){
this.noticeRoomList = noticeRoomList;
}
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj instanceof NoticeEntity) {
NoticeEntity tmp = (NoticeEntity) obj;
if (this.getId() == tmp.getId()) {
return true;
}
}
return false;
}
public void initAttrValue(){
this.title = "";
this.noticeContent = "";
this.filePath = "";
this.fileName = "";
this.remark = "";
}
}
\ No newline at end of file
package com.mortals.xhx.module.notice.model;
import java.util.List;
import java.util.ArrayList;
import java.math.BigDecimal;
import cn.hutool.core.date.DateUtil;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.framework.annotation.Excel;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.notice.model.vo.NoticeRoomVo;
import lombok.Data;
/**
* 房间公告实体对象
*
* @author zxfei
* @date 2023-09-04
*/
@Data
public class NoticeRoomEntity extends NoticeRoomVo {
private static final long serialVersionUID = 1L;
/**
* 公告id
*/
private Long noticeId;
/**
* 公告标题
*/
@Excel(name = "公告标题")
private String title;
/**
* 房间id
*/
private Long roomId;
/**
* 房间名称
*/
@Excel(name = "房间名称")
private String roomName;
/**
* 备注
*/
private String remark;
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj instanceof NoticeRoomEntity) {
NoticeRoomEntity tmp = (NoticeRoomEntity) obj;
if (this.getId() == tmp.getId()) {
return true;
}
}
return false;
}
public void initAttrValue(){
this.noticeId = 0L;
this.title = "";
this.roomId = 0L;
this.roomName = "";
this.remark = "";
}
}
\ No newline at end of file
package com.mortals.xhx.module.notice.model.vo;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.notice.model.NoticeRoomEntity;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;
import com.mortals.framework.annotation.Excel;
import java.math.BigDecimal;
import java.util.Date;
/**
* 房间公告视图对象
*
* @author zxfei
* @date 2023-09-04
*/
@Data
public class NoticeRoomVo extends BaseEntityLong {
/** 主键ID,主键,自增长列表 */
private List <Long> idList;
}
\ No newline at end of file
package com.mortals.xhx.module.notice.model.vo;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.notice.model.NoticeEntity;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;
import com.mortals.framework.annotation.Excel;
import java.math.BigDecimal;
import java.util.Date;
/**
* 通知公告视图对象
*
* @author zxfei
* @date 2023-09-04
*/
@Data
public class NoticeVo extends BaseEntityLong {
/** 主键ID,主键,自增长列表 */
private List <Long> idList;
}
\ No newline at end of file
package com.mortals.xhx.module.notice.service;
import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.module.notice.model.NoticeRoomEntity;
import com.mortals.xhx.module.notice.dao.NoticeRoomDao;
/**
* NoticeRoomService
*
* 房间公告 service接口
*
* @author zxfei
* @date 2023-09-04
*/
public interface NoticeRoomService extends ICRUDService<NoticeRoomEntity,Long>{
NoticeRoomDao getDao();
}
\ No newline at end of file
package com.mortals.xhx.module.notice.service;
import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.module.notice.model.NoticeEntity;
import com.mortals.xhx.module.notice.dao.NoticeDao;
/**
* NoticeService
*
* 通知公告 service接口
*
* @author zxfei
* @date 2023-09-04
*/
public interface NoticeService extends ICRUDService<NoticeEntity,Long>{
NoticeDao getDao();
}
\ No newline at end of file
package com.mortals.xhx.module.notice.service.impl;
import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.xhx.module.notice.dao.NoticeRoomDao;
import com.mortals.xhx.module.notice.model.NoticeRoomEntity;
import com.mortals.xhx.module.notice.service.NoticeRoomService;
import lombok.extern.slf4j.Slf4j;
/**
* NoticeRoomService
* 房间公告 service实现
*
* @author zxfei
* @date 2023-09-04
*/
@Service("noticeRoomService")
@Slf4j
public class NoticeRoomServiceImpl extends AbstractCRUDServiceImpl<NoticeRoomDao, NoticeRoomEntity, Long> implements NoticeRoomService {
}
\ No newline at end of file
package com.mortals.xhx.module.notice.service.impl;
import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.xhx.module.notice.dao.NoticeDao;
import com.mortals.xhx.module.notice.model.NoticeEntity;
import com.mortals.xhx.module.notice.service.NoticeService;
import org.springframework.beans.factory.annotation.Autowired;
import com.mortals.xhx.module.notice.model.NoticeRoomEntity;
import com.mortals.xhx.module.notice.model.NoticeRoomQuery;
import com.mortals.xhx.module.notice.service.NoticeRoomService;
import org.springframework.util.ObjectUtils;
import java.util.Date;
import java.util.Arrays;
import java.util.List;
import lombok.extern.slf4j.Slf4j;
/**
* NoticeService
* 通知公告 service实现
*
* @author zxfei
* @date 2023-09-04
*/
@Service("noticeService")
@Slf4j
public class NoticeServiceImpl extends AbstractCRUDServiceImpl<NoticeDao, NoticeEntity, Long> implements NoticeService {
@Autowired
private NoticeRoomService noticeRoomService;
@Override
protected void saveAfter(NoticeEntity entity, Context context) throws AppException {
if(!ObjectUtils.isEmpty(entity.getNoticeRoomList())){
entity.getNoticeRoomList().stream().peek(item->{
item.setNoticeId(entity.getId());
item.setCreateUserId(this.getContextUserId(context));
item.setCreateTime(new Date());
}).count();
noticeRoomService.save(entity.getNoticeRoomList());
}
super.saveAfter(entity, context);
}
@Override
protected void updateAfter(NoticeEntity entity, Context context) throws AppException {
if(!ObjectUtils.isEmpty(entity.getNoticeRoomList())){
Long[] noticeRoomIds = noticeRoomService.find(new NoticeRoomQuery().noticeId(entity.getId())).stream().map(NoticeRoomEntity::getId).toArray(Long[]::new);
noticeRoomService.remove(noticeRoomIds,context);
entity.getNoticeRoomList().stream().peek(item ->{
item.setNoticeId(entity.getId());
item.setCreateUserId(this.getContextUserId(context));
item.setCreateTime(new Date());
item.setUpdateUserId(this.getContextUserId(context));
item.setUpdateTime(new Date());
}).count();
noticeRoomService.save(entity.getNoticeRoomList());
}
super.updateAfter(entity, context);
}
@Override
protected void removeAfter(Long[] ids, Context context, int result) throws AppException {
List<NoticeRoomEntity> noticeRoomlist = noticeRoomService.find(new NoticeRoomQuery().noticeIdList(Arrays.asList(ids)));
noticeRoomService.removeList(noticeRoomlist,context);
super.removeAfter(ids, context, result);
}
}
\ No newline at end of file
package com.mortals.xhx.module.notice.web;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import com.mortals.framework.model.Context;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.module.notice.model.NoticeEntity;
import com.mortals.xhx.module.notice.service.NoticeService;
import org.apache.commons.lang3.ArrayUtils;
import com.mortals.framework.util.StringUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.alibaba.fastjson.JSONObject;
import java.util.Arrays;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import static com.mortals.framework.ap.SysConstains.*;
/**
*
* 通知公告
*
* @author zxfei
* @date 2023-09-04
*/
@RestController
@RequestMapping("notice")
public class NoticeController extends BaseCRUDJsonBodyMappingController<NoticeService,NoticeEntity,Long> {
@Autowired
private ParamService paramService;
public NoticeController(){
super.setModuleDesc( "通知公告");
}
@Override
protected void init(Map<String, Object> model, Context context) {
super.init(model, context);
}
}
\ No newline at end of file
package com.mortals.xhx.module.notice.web;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import com.mortals.framework.model.Context;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.module.notice.model.NoticeRoomEntity;
import com.mortals.xhx.module.notice.service.NoticeRoomService;
import org.apache.commons.lang3.ArrayUtils;
import com.mortals.framework.util.StringUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.alibaba.fastjson.JSONObject;
import java.util.Arrays;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import static com.mortals.framework.ap.SysConstains.*;
/**
*
* 房间公告
*
* @author zxfei
* @date 2023-09-04
*/
@RestController
@RequestMapping("notice/room")
public class NoticeRoomController extends BaseCRUDJsonBodyMappingController<NoticeRoomService,NoticeRoomEntity,Long> {
@Autowired
private ParamService paramService;
public NoticeRoomController(){
super.setModuleDesc( "房间公告");
}
@Override
protected void init(Map<String, Object> model, Context context) {
super.init(model, context);
}
@Override
protected void saveBefore(NoticeRoomEntity entity, Map<String, Object> model, Context context) throws AppException {
//公告配置
}
}
\ No newline at end of file
......@@ -2,6 +2,9 @@ package com.mortals.xhx.module.room.model;
import java.util.List;
import java.util.List;
import java.util.ArrayList;
import java.math.BigDecimal;
import cn.hutool.core.date.DateUtil;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.framework.annotation.Excel;
import com.mortals.framework.model.BaseEntityLong;
......@@ -12,7 +15,7 @@ import lombok.Data;
* 房间管理实体对象
*
* @author zxfei
* @date 2023-05-29
* @date 2023-09-04
*/
@Data
public class RoomEntity extends RoomVo {
......@@ -21,6 +24,7 @@ public class RoomEntity extends RoomVo {
/**
* 房间名称
*/
@Excel(name = "房间名称")
private String roomName;
/**
* 房间编码
......@@ -50,6 +54,16 @@ public class RoomEntity extends RoomVo {
* 绑定的设备编码
*/
private String deviceCode;
/**
* 文件名称
*/
@Excel(name = "文件名称")
private String fileName;
/**
* 文件相对路径地址
*/
@Excel(name = "文件相对路径地址")
private String filePath;
/**
* 房间设备信息信息
*/
......@@ -78,21 +92,15 @@ public class RoomEntity extends RoomVo {
}
public void initAttrValue(){
this.roomName = "";
this.roomCode = "";
this.roomType = 0;
this.deviceId = -1L;
this.deviceId = 0L;
this.deviceName = "";
this.countPerson = 0L;
this.remark = "";
this.deviceCode = "";
this.fileName = "";
this.filePath = "";
}
}
\ No newline at end of file
......@@ -7,7 +7,7 @@ import com.mortals.xhx.module.room.model.RoomEntity;
* 房间管理查询对象
*
* @author zxfei
* @date 2023-05-29
* @date 2023-09-04
*/
public class RoomQuery extends RoomEntity {
/** 开始 主键ID,主键,自增长 */
......@@ -137,6 +137,16 @@ public class RoomQuery extends RoomEntity {
/** 绑定的设备编码排除列表 */
private List <String> deviceCodeNotList;
/** 文件名称 */
private List<String> fileNameList;
/** 文件名称排除列表 */
private List <String> fileNameNotList;
/** 文件相对路径地址 */
private List<String> filePathList;
/** 文件相对路径地址排除列表 */
private List <String> filePathNotList;
/** OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */
private List<RoomQuery> orConditionList;
......@@ -855,6 +865,70 @@ public class RoomQuery extends RoomEntity {
this.deviceCodeNotList = deviceCodeNotList;
}
/**
* 获取 文件名称
* @return fileNameList
*/
public List<String> getFileNameList(){
return this.fileNameList;
}
/**
* 设置 文件名称
* @param fileNameList
*/
public void setFileNameList(List<String> fileNameList){
this.fileNameList = fileNameList;
}
/**
* 获取 文件名称
* @return fileNameNotList
*/
public List<String> getFileNameNotList(){
return this.fileNameNotList;
}
/**
* 设置 文件名称
* @param fileNameNotList
*/
public void setFileNameNotList(List<String> fileNameNotList){
this.fileNameNotList = fileNameNotList;
}
/**
* 获取 文件相对路径地址
* @return filePathList
*/
public List<String> getFilePathList(){
return this.filePathList;
}
/**
* 设置 文件相对路径地址
* @param filePathList
*/
public void setFilePathList(List<String> filePathList){
this.filePathList = filePathList;
}
/**
* 获取 文件相对路径地址
* @return filePathNotList
*/
public List<String> getFilePathNotList(){
return this.filePathNotList;
}
/**
* 设置 文件相对路径地址
* @param filePathNotList
*/
public void setFilePathNotList(List<String> filePathNotList){
this.filePathNotList = filePathNotList;
}
/**
* 设置 主键ID,主键,自增长
* @param id
......@@ -1276,6 +1350,44 @@ public class RoomQuery extends RoomEntity {
return this;
}
/**
* 设置 文件名称
* @param fileName
*/
public RoomQuery fileName(String fileName){
setFileName(fileName);
return this;
}
/**
* 设置 文件名称
* @param fileNameList
*/
public RoomQuery fileNameList(List<String> fileNameList){
this.fileNameList = fileNameList;
return this;
}
/**
* 设置 文件相对路径地址
* @param filePath
*/
public RoomQuery filePath(String filePath){
setFilePath(filePath);
return this;
}
/**
* 设置 文件相对路径地址
* @param filePathList
*/
public RoomQuery filePathList(List<String> filePathList){
this.filePathList = filePathList;
return this;
}
/**
* 获取 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @return orConditionList
......
package com.mortals.xhx.module.room.model.vo;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.notice.model.NoticeEntity;
import com.mortals.xhx.module.room.model.RoomEntity;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;
import com.mortals.framework.annotation.Excel;
import java.math.BigDecimal;
import java.util.Date;
/**
* 房间管理视图对象
*
* @author zxfei
* @date 2023-05-22
*/
* 房间管理视图对象
*
* @author zxfei
* @date 2023-05-22
*/
@Data
public class RoomVo extends BaseEntityLong {
/**
* 房间名称
*/
@Excel(name = "房间名称")
private String roomName;
/**
* 房间名称
*/
@Excel(name = "房间名称")
private String roomName;
private List<Long> deviceIdList;
private List<Long> deviceIdList;
private List<String> deviceCodeList;
private List<String> deviceCodeList;
private List<Long> idList;
private List <Long> idList;
private List<NoticeEntity> noticeList;
}
\ No newline at end of file
......@@ -4,6 +4,12 @@ import com.mortals.framework.model.PageInfo;
import com.mortals.xhx.module.device.model.DeviceEntity;
import com.mortals.xhx.module.device.model.DeviceQuery;
import com.mortals.xhx.module.device.service.DeviceService;
import com.mortals.xhx.module.notice.model.NoticeEntity;
import com.mortals.xhx.module.notice.model.NoticeQuery;
import com.mortals.xhx.module.notice.model.NoticeRoomEntity;
import com.mortals.xhx.module.notice.model.NoticeRoomQuery;
import com.mortals.xhx.module.notice.service.NoticeRoomService;
import com.mortals.xhx.module.notice.service.NoticeService;
import com.mortals.xhx.module.workman.model.WorkmanQuery;
import com.mortals.xhx.module.workman.service.WorkmanService;
import org.springframework.stereotype.Service;
......@@ -43,16 +49,28 @@ public class RoomServiceImpl extends AbstractCRUDServiceImpl<RoomDao, RoomEntity
private DeviceService deviceService;
@Autowired
private WorkmanService workmanService;
@Autowired
private NoticeRoomService noticeRoomService;
@Autowired
private NoticeService noticeService;
@Override
protected void findAfter(RoomEntity params, PageInfo pageInfo, Context context, List<RoomEntity> list) throws AppException {
super.findAfter(params, pageInfo, context, list);
Map<Long, Long> collect = workmanService.find(new WorkmanQuery()).stream().collect(Collectors.groupingBy(x -> x.getRoomId(), Collectors.counting()));
list.forEach(item->{
item.setCountPerson(collect.getOrDefault(item.getId(),item.getCountPerson()));
List<NoticeRoomEntity> noticeRoomEntities = noticeRoomService.find(new NoticeRoomQuery().roomId(item.getId()));
if(!ObjectUtils.isEmpty(noticeRoomEntities)){
NoticeQuery noticeQuery = new NoticeQuery();
noticeQuery.setIdList(noticeRoomEntities.stream().map(i->i.getId()).collect(Collectors.toList()));
List<NoticeEntity> noticeEntities = noticeService.find(noticeQuery, context);
if(!ObjectUtils.isEmpty(noticeEntities)){
item.setNoticeList(noticeEntities);
}
}
item.setCountPerson(collect.getOrDefault(item.getId(),item.getCountPerson()));
});
}
......
......@@ -18,6 +18,8 @@
<result property="updateUserId" column="updateUserId" />
<result property="updateTime" column="updateTime" />
<result property="deviceCode" column="deviceCode" />
<result property="fileName" column="fileName" />
<result property="filePath" column="filePath" />
<collection property="roomDeviceList" column="id" ofType="RoomDeviceEntity" javaType="ArrayList" select="getRoomDeviceByRoomId"></collection>
</resultMap>
<resultMap type="RoomDeviceEntity" id="RoomDeviceEntity-Map">
......@@ -77,6 +79,12 @@
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('deviceCode') or colPickMode == 1 and data.containsKey('deviceCode')))">
a.deviceCode,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('fileName') or colPickMode == 1 and data.containsKey('fileName')))">
a.fileName,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('filePath') or colPickMode == 1 and data.containsKey('filePath')))">
a.filePath,
</if>
</trim>
</sql>
<!-- 子表所有列 -->
......@@ -88,18 +96,18 @@
<!-- 新增 区分主键自增加还是业务插入 -->
<insert id="insert" parameterType="RoomEntity" useGeneratedKeys="true" keyProperty="id">
insert into mortals_xhx_room
(roomName,roomCode,roomType,deviceId,deviceName,countPerson,remark,createUserId,createTime,updateUserId,updateTime,deviceCode)
(roomName,roomCode,roomType,deviceId,deviceName,countPerson,remark,createUserId,createTime,updateUserId,updateTime,deviceCode,fileName,filePath)
VALUES
(#{roomName},#{roomCode},#{roomType},#{deviceId},#{deviceName},#{countPerson},#{remark},#{createUserId},#{createTime},#{updateUserId},#{updateTime},#{deviceCode})
(#{roomName},#{roomCode},#{roomType},#{deviceId},#{deviceName},#{countPerson},#{remark},#{createUserId},#{createTime},#{updateUserId},#{updateTime},#{deviceCode},#{fileName},#{filePath})
</insert>
<!-- 批量新增 -->
<insert id="insertBatch" parameterType="paramDto">
insert into mortals_xhx_room
(roomName,roomCode,roomType,deviceId,deviceName,countPerson,remark,createUserId,createTime,updateUserId,updateTime,deviceCode)
(roomName,roomCode,roomType,deviceId,deviceName,countPerson,remark,createUserId,createTime,updateUserId,updateTime,deviceCode,fileName,filePath)
VALUES
<foreach collection="data.dataList" item="item" index="index" separator="," >
(#{item.roomName},#{item.roomCode},#{item.roomType},#{item.deviceId},#{item.deviceName},#{item.countPerson},#{item.remark},#{item.createUserId},#{item.createTime},#{item.updateUserId},#{item.updateTime},#{item.deviceCode})
(#{item.roomName},#{item.roomCode},#{item.roomType},#{item.deviceId},#{item.deviceName},#{item.countPerson},#{item.remark},#{item.createUserId},#{item.createTime},#{item.updateUserId},#{item.updateTime},#{item.deviceCode},#{item.fileName},#{item.filePath})
</foreach>
</insert>
......@@ -160,6 +168,12 @@
<if test="(colPickMode==0 and data.containsKey('deviceCode')) or (colPickMode==1 and !data.containsKey('deviceCode'))">
a.deviceCode=#{data.deviceCode},
</if>
<if test="(colPickMode==0 and data.containsKey('fileName')) or (colPickMode==1 and !data.containsKey('fileName'))">
a.fileName=#{data.fileName},
</if>
<if test="(colPickMode==0 and data.containsKey('filePath')) or (colPickMode==1 and !data.containsKey('filePath'))">
a.filePath=#{data.filePath},
</if>
</trim>
<trim suffixOverrides="where" suffix="">
where
......@@ -281,6 +295,20 @@
</if>
</foreach>
</trim>
<trim prefix="fileName=(case" suffix="ELSE fileName end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('fileName')) or (colPickMode==1 and !item.containsKey('fileName'))">
when a.id=#{item.id} then #{item.fileName}
</if>
</foreach>
</trim>
<trim prefix="filePath=(case" suffix="ELSE filePath end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('filePath')) or (colPickMode==1 and !item.containsKey('filePath'))">
when a.id=#{item.id} then #{item.filePath}
</if>
</foreach>
</trim>
</trim>
where id in
<foreach collection="data.dataList" item="item" index="index" open="(" separator="," close=")">
......@@ -702,6 +730,48 @@
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('fileName')">
<if test="conditionParamRef.fileName != null and conditionParamRef.fileName != ''">
${_conditionType_} a.fileName like #{${_conditionParam_}.fileName}
</if>
<if test="conditionParamRef.fileName == null">
${_conditionType_} a.fileName is null
</if>
</if>
<if test="conditionParamRef.containsKey('fileNameList') and conditionParamRef.fileNameList.size() > 0">
${_conditionType_} a.fileName in
<foreach collection="conditionParamRef.fileNameList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('fileNameNotList') and conditionParamRef.fileNameNotList.size() > 0">
${_conditionType_} a.fileName not in
<foreach collection="conditionParamRef.fileNameNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('filePath')">
<if test="conditionParamRef.filePath != null and conditionParamRef.filePath != ''">
${_conditionType_} a.filePath like #{${_conditionParam_}.filePath}
</if>
<if test="conditionParamRef.filePath == null">
${_conditionType_} a.filePath is null
</if>
</if>
<if test="conditionParamRef.containsKey('filePathList') and conditionParamRef.filePathList.size() > 0">
${_conditionType_} a.filePath in
<foreach collection="conditionParamRef.filePathList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('filePathNotList') and conditionParamRef.filePathNotList.size() > 0">
${_conditionType_} a.filePath not in
<foreach collection="conditionParamRef.filePathNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
</sql>
<sql id="_orderCols_">
<if test="orderColList != null and !orderColList.isEmpty()">
......@@ -780,6 +850,16 @@
<if test='orderCol.deviceCode != null and "DESC".equalsIgnoreCase(orderCol.deviceCode)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('fileName')">
a.fileName
<if test='orderCol.fileName != null and "DESC".equalsIgnoreCase(orderCol.fileName)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('filePath')">
a.filePath
<if test='orderCol.filePath != null and "DESC".equalsIgnoreCase(orderCol.filePath)'>DESC</if>
,
</if>
</trim>
</if>
</sql>
......
###登录
POST {{baseUrl}}/login/login
Content-Type: application/json
{
"loginName":"admin",
"password":"admin",
"securityCode":"8888"
}
> {%
client.global.set("SmsSet_id", JSON.parse(response.body).data.id);
client.global.set("authToken", JSON.parse(response.body).data.token);
%}
###通知公告列表
POST {{baseUrl}}/notice/list
Content-Type: application/json
{
"page":1,
"size":10
}
###通知公告更新与保存
POST {{baseUrl}}/notice/save
Authorization: {{authToken}}
Content-Type: application/json
{
"title":"2fntwc",
"noticeContent":"47riae",
"filePath":"tcntq2",
"fileName":"rd8qfy",
"remark":"4b0igp",
}
> {%
client.global.set("Notice_id", JSON.parse(response.body).data.id);
%}
###通知公告查看
GET {{baseUrl}}/notice/info?id={{Notice_id}}
Accept: application/json
###通知公告编辑
GET {{baseUrl}}/notice/edit?id={{Notice_id}}
Accept: application/json
###通知公告删除
GET {{baseUrl}}/notice/delete?id={{Notice_id}}
Authorization: {{authToken}}
Accept: application/json
###登录
POST {{baseUrl}}/login/login
Content-Type: application/json
{
"loginName":"admin",
"password":"admin",
"securityCode":"8888"
}
> {%
client.global.set("SmsSet_id", JSON.parse(response.body).data.id);
client.global.set("authToken", JSON.parse(response.body).data.token);
%}
###房间公告列表
POST {{baseUrl}}/notice/room/list
Content-Type: application/json
{
"page":1,
"size":10
}
###房间公告更新与保存
POST {{baseUrl}}/notice/room/save
Authorization: {{authToken}}
Content-Type: application/json
{
"noticeId":882,
"title":"lyrqsg",
"roomId":961,
"roomName":"w4a7jv",
"remark":"887xvv",
}
> {%
client.global.set("NoticeRoom_id", JSON.parse(response.body).data.id);
%}
###房间公告查看
GET {{baseUrl}}/notice/room/info?id={{NoticeRoom_id}}
Accept: application/json
###房间公告编辑
GET {{baseUrl}}/notice/room/edit?id={{NoticeRoom_id}}
Accept: application/json
###房间公告删除
GET {{baseUrl}}/notice/room/delete?id={{NoticeRoom_id}}
Authorization: {{authToken}}
Accept: application/json
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment