Commit d4a88a98 by 朱淼
parents f8afb831 a4e4b4d3
Showing with 688 additions and 51 deletions
......@@ -131,6 +131,7 @@ public class PlatRoleController {
@Action(module = "平台端-角色", name = "分配菜单", code = "tnt:role:assignMenuList")
@ApiOperation("分配菜单")
@Deprecated
@PostMapping("assignMenuList")
public ApiResponseEntity<Void> assignMenuList(@RequestBody PlatRoleMenuDTO roleMenuDTO) {
platRoleService.assignMenuList(roleMenuDTO);
......
......@@ -9,6 +9,7 @@ import com.makeit.common.page.PageVO;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.common.vo.ExcelImportVo;
import com.makeit.enums.CodeMessageEnum;
import com.makeit.exception.BusinessException;
import com.makeit.global.annotation.Action;
import com.makeit.module.admin.dto.plat.PlatUserDTOVO;
......@@ -161,7 +162,7 @@ public class PlatUserController {
@PostMapping("import")
public ApiResponseEntity<ExcelImportVo> importExcel(@RequestParam(value = "excelFile", required = false) MultipartFile excelFile) throws Exception {
if(excelFile == null ){
throw new BusinessException("请上传excel");
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR_EXCEL_UPLOAD_EXIT);
}
ExcelImportVo excelImportVo = platUserService.importExcel(excelFile);
return ApiResponseUtils.success(excelImportVo);
......
......@@ -120,6 +120,7 @@ public class PlatTenantController {
@Action(module = "租户管理-租户", name = "租户分配菜单", code = "saas:tenant:assignMenuList")
@ApiOperation("租户分配菜单")
@PostMapping("assignMenuList")
@Deprecated
public ApiResponseEntity<?> assignMenuList(@RequestBody PlatTenantMenuDTO tntTenantMenuDTO){
platTenantService.assignMenuList(tntTenantMenuDTO);
return ApiResponseUtils.success();
......
......@@ -3,6 +3,8 @@ package com.makeit.controller.saas;
import com.makeit.common.dto.BaseIdDTO;
import com.makeit.common.dto.StatusDTO;
import com.makeit.common.page.PageReqDTO;
import com.makeit.common.page.PageVO;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.global.annotation.Action;
......@@ -38,14 +40,21 @@ public class SaasRoleController {
private SaasRoleService saasRoleService;
@Action(module = "saas端-角色", name = "列表", code = "saas:role:list")
@ApiOperation("列表")
@ApiOperation("列表不分页")
@PostMapping("list")
public ApiResponseEntity<List<SaasRoleDTOVO>> list(@RequestBody SaasRoleDTOVO dto){
return ApiResponseUtils.success(saasRoleService.list(dto));
}
@Action(module = "saas端-角色", name = "列表", code = "saas:role:page")
@ApiOperation("列表分页")
@PostMapping("page")
public ApiResponseEntity<PageVO<SaasRoleDTOVO>> page(@RequestBody PageReqDTO<SaasRoleDTOVO> dto){
return ApiResponseUtils.success(saasRoleService.page(dto));
}
@ApiOperation("列表(AuthIgnore)")
@ApiOperation("列表不分页(AuthIgnore)")
@PostMapping("listAuthIgnore")
public ApiResponseEntity<List<SaasRoleDTOVO>> listAuthIgnore(@RequestBody SaasRoleDTOVO dto){
return ApiResponseUtils.success(saasRoleService.list(dto));
......@@ -109,6 +118,7 @@ public class SaasRoleController {
@Action(module = "saas端-角色", name = "分配菜单", code = "saas:role:assignMenuList")
@ApiOperation("分配菜单")
@PostMapping("assignMenuList")
@Deprecated
public ApiResponseEntity<?> assignMenuList(@RequestBody SaasRoleMenuDTO roleMenuDTO){
saasRoleService.assignMenuList(roleMenuDTO);
return ApiResponseUtils.success();
......
......@@ -36,8 +36,9 @@ public class SwaggerCommonConfig {
ApiSelectorBuilder builder = docket.select();
//api过滤
builder = builder.apis(RequestHandlerSelectors.basePackage("com.makeit.controller")
//.or(RequestHandlerSelectors.basePackage("com.makeit.common.controller")
.or(RequestHandlerSelectors.basePackage("com.makeit.module.controller"))
);
return builder.build();
}
......
......@@ -109,7 +109,11 @@ public enum CodeMessageEnum {
SYSTEM_ERROR_TENANT_NOT_EXIST(510, "SYSTEM.ERROR.TENANT.NOT.EXIST"),
SYSTEM_ERROR_ROLE_ADMIN_CANT_ADD(500, "SYSTEM.ERROR.ROLE.ADMIN.CANT.ADD"),
SYSTEM_ERROR_ROLE_ADMIN_CANT_EDIT(500, "SYSTEM.ERROR.ROLE.ADMIN.CANT.EDIT"),
;
PLATFORM_ERROR_ALARM_NOT_FOUND_SPACE(500,"PLATFORM.ERROR.ALARM.NOT.FOUND.SPACE"),
PLATFORM_ERROR_ALARM_NOT_FOUND_ELDER(500,"PLATFORM.ERROR.ALARM.NOT.FOUND.ELDER"),
;
/**
......
......@@ -32,4 +32,10 @@ public class PlatRoleDTOVO extends BaseOrgDTO implements Serializable {
@ApiModelProperty(value = "角色名称集合")
private List<String> nameList;
@ApiModelProperty(value = "菜单集合id")
private List<String> menuIdList;
@ApiModelProperty(value = "菜单集合")
private List<PlatMenuDTOVO> menuList;
}
......@@ -51,4 +51,7 @@ public class PlatTenantDTOVO extends BaseIdDTO {
@ApiModelProperty(value = "告警渠道")
private String alertChannel;
@ApiModelProperty(value = "菜单id集合")
private List<String> menuIdList;
}
......@@ -11,6 +11,7 @@ import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
@ApiModel("SAAS端角色 列表 新增 编辑 详情")
@Data
......@@ -52,5 +53,11 @@ public class SaasRoleDTOVO extends BaseIdDTO implements Serializable {
@ApiModelProperty(value = "关键词 查询用")
private String keyword;
@ApiModelProperty(value = "菜单id集合")
private List<String> menuIdList;
@ApiModelProperty(value = "菜单集合")
private List<SaasMenuDTOVO> menuDTOVOList;
}
......@@ -65,4 +65,8 @@ public class SaasUserDTOVO extends BaseIdDTO implements Serializable {
@TableField(exist = false)
@ApiModelProperty(value = "角色集合")
private List<SaasRoleDTOVO> roleList;
@TableField(exist = false)
@ApiModelProperty(value = "角色id集合")
private List<String> roleIdList;
}
package com.makeit.module.admin.vo.plat;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.makeit.common.dto.BaseTenantDTO;
import lombok.Data;
/**
* 租户端角色菜单关联表
* @TableName plat_role_menu
*/
@TableName(value ="plat_role_menu")
@Data
public class PlatRoleMenuVO extends BaseTenantDTO {
/**
* 角色id
*/
private String roleId;
/**
* 菜单id
*/
private String menuId;
@TableField(exist = false)
private String menuName;
}
\ No newline at end of file
package com.makeit.utils.msg;
import org.springframework.stereotype.Component;
import java.util.Collection;
@Component
public class MsgUtil {
/**
* 发送消息并保存记录
*/
public void send(SendTypeEnum sendTypeEnum, Collection<String> receiverList, String content){
switch (sendTypeEnum){
case SMS:
break;
case MAIL:
break;
case VOICE_SMS:
break;
case JINGQI:
break;
case YUNLING:
break;
}
}
}
package com.makeit.utils.msg;
import com.makeit.enums.BaseEnum;
import com.makeit.utils.sys.SysDictUtil;
import lombok.AllArgsConstructor;
import lombok.Getter;
@AllArgsConstructor
@Getter
public enum SendTypeEnum implements BaseEnum {
//1-短信 2-邮件 3-语音短信 4-云龄工单 5-晶奇工单 6-子女端小程序
SMS("alarm.sendType.sms"),
MAIL("alarm.sendType.mail"),
VOICE_SMS("alarm.sendType.voiceSms"),
YUNLING("alarm.sendType.yunling"),
JINGQI("alarm.sendType.jingqi"),
CHILD_WECHAT("alarm.sendType.childWechat")
;
private String code;
public String getValue() {
return SysDictUtil.getValue(code);
}
public static SendTypeEnum getByValue(String value){
SendTypeEnum byValue =(SendTypeEnum)BaseEnum.getByValue(SendTypeEnum.class, value);
return byValue;
}
}
package com.makeit.utils.msg.dto;
import com.makeit.utils.msg.SendTypeEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class MsgDTO {
private SendTypeEnum sendTypeEnum;
private String subject;
private List<String> receiverList;
private String oriContent;
private String[] param;
private String sendContent;
public void setParam(String... param) {
this.param = param;
}
public String getSendContent() {
replaceParam();
return sendContent;
}
private void replaceParam(){
if(StringUtils.isNotBlank(sendContent)){
return;
}
Pattern p = Pattern.compile("\\[#\\d+\\]|\\[#[\\p{IsHan}]+\\]|\\[#[^\\]]*\\]");
Matcher m = p.matcher(oriContent);
StringBuffer sb = new StringBuffer();
if(!m.find()){
sendContent= oriContent;
}
m.reset();
int i = 0;
while (m.find()) {
m.appendReplacement(sb, param[i]);
i++;
}
m.appendTail(sb);
sendContent=sb.toString();
}
}
package com.makeit.utils.msg.dto;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
/**
* <pre>
* 发送结果
* </pre>
*
* @author <a href="https://github.com/rememberber">RememBerBer</a>
* @since 2019/6/15.
*/
@Getter
@Setter
@ToString
public class SendResult {
private boolean success = false;
private String info;
}
package com.makeit.utils.msg.sender;
import com.makeit.utils.msg.dto.MsgDTO;
import com.makeit.utils.msg.dto.SendResult;
public interface IMsgSender {
/**
* 发送消息
* @param msgData 消息数据
*/
SendResult send(MsgDTO MsgDTO);
}
package com.makeit.utils.msg.sender;
import com.makeit.utils.msg.dto.MsgDTO;
import com.makeit.utils.msg.dto.SendResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;
import javax.mail.internet.MimeMessage;
@Component
@Slf4j
public class MailMsgSender implements IMsgSender {
@Value("${spring.mail.username}")
private String from;
@Autowired
private JavaMailSender mailSender;
@Override
public SendResult send(MsgDTO msgDTO) {
SendResult sendResult = new SendResult();
try {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo(msgDTO.getReceiverList().toArray(new String[msgDTO.getReceiverList().size()]));
helper.setSubject(msgDTO.getSubject());
helper.setText(msgDTO.getOriContent(), false);
mailSender.send(message);
} catch (Exception e) {
sendResult.setSuccess(false);
sendResult.setInfo(e.getMessage());
}
sendResult.setSuccess(true);
return sendResult;
}
}
......@@ -103,3 +103,7 @@ PLATFORM.ERROR.ROOM.OTHER.USED.NOT.DEL=该房间下有床位有其他长者入
SYSTEM.ERROR.ROLE.ADMIN.CANT.ADD=不能在该节点下新增非管理员角色
SYSTEM.ERROR.ROLE.ADMIN.CANT.EDIT=管理员角色不能修改
PLATFORM.ERROR.ALARM.NOT.FOUND.SPACE=设备未绑定空间
PLATFORM.ERROR.ALARM.NOT.FOUND.ELDER=设备空间下无长者
......@@ -51,14 +51,14 @@ public class PlatAlarmConfigController {
@ApiOperation("编辑(审核)")
@PostMapping("editAudit")
public ApiResponseEntity<?> editAudit(PlatAlarmConfigDTOVO dto) {
public ApiResponseEntity<?> editAudit(@RequestBody PlatAlarmConfigDTOVO dto) {
platAlarmConfigService.editAudit(dto);
return ApiResponseUtils.success();
}
@ApiOperation("编辑(不审核)")
@PostMapping("edit")
public ApiResponseEntity<?> edit(PlatAlarmConfigDTOVO dto) {
public ApiResponseEntity<?> edit(@RequestBody PlatAlarmConfigDTOVO dto) {
platAlarmConfigService.edit(dto);
return ApiResponseUtils.success();
}
......
......@@ -8,6 +8,8 @@ import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.alarm.PlatAlarmRecordQueryDTO;
import com.makeit.service.platform.alarm.PlatAlarmRecordService;
import com.makeit.utils.msg.dto.MsgDTO;
import com.makeit.utils.msg.sender.MailMsgSender;
import com.makeit.vo.platform.alarm.PlatAlarmRecordVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
......@@ -17,6 +19,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Collections;
@Api(tags = "告警记录")
@RestController
@RequestMapping("/plat/alarm-record")
......@@ -44,9 +48,22 @@ public class PlatAlarmRecordController {
@ApiOperation("通知家属")
@PostMapping("notice")
public ApiResponseEntity<Void> notice(@RequestBody BaseIdDTO dto) {
platAlarmRecordService.notice(dto.getId());
platAlarmRecordService.noticeRelation(dto.getId());
return ApiResponseUtils.success();
}
@Autowired
private MailMsgSender mailMsgSender;
@ApiOperation("测试消息")
@PostMapping("testMsg")
public ApiResponseEntity<Void> testMsg(@RequestBody BaseIdDTO dto) {
MsgDTO msgDTO = new MsgDTO();
msgDTO.setSubject("测试消息");
msgDTO.setReceiverList(Collections.singletonList("994997968@qq.com"));
msgDTO.setOriContent("测试发送邮箱");
mailMsgSender.send(msgDTO);
return ApiResponseUtils.success();
}
}
package com.makeit.module.controller.wechat.alarm;
import com.makeit.common.dto.BaseIdDTO;
import com.makeit.common.page.PageReqDTO;
import com.makeit.common.page.PageVO;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.alarm.PlatAlarmRecordQueryDTO;
import com.makeit.service.platform.alarm.PlatAlarmRecordService;
import com.makeit.utils.msg.dto.MsgDTO;
import com.makeit.utils.msg.sender.MailMsgSender;
import com.makeit.vo.platform.alarm.PlatAlarmRecordVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Collections;
@Api(tags = "小程序-告警记录")
@RestController
@RequestMapping("/wechat/plat/alarm-record")
public class WechatPlatAlarmRecordController {
@Autowired
private PlatAlarmRecordService platAlarmRecordService;
@ApiOperation("列表")
@PostMapping("page")
public ApiResponseEntity<PageVO<PlatAlarmRecordVO>> page(@RequestBody PageReqDTO<PlatAlarmRecordQueryDTO> dto) {
return ApiResponseUtils.success(platAlarmRecordService.page(dto));
}
@ApiOperation("查看")
@PostMapping("view")
public ApiResponseEntity<PlatAlarmRecordVO> view(@RequestBody BaseIdDTO dto) {
return ApiResponseUtils.success(platAlarmRecordService.view(dto.getId()));
}
@ApiOperation("处理")
@PostMapping("deal")
public ApiResponseEntity<Void> deal(@RequestBody BaseIdDTO dto) {
platAlarmRecordService.deal(dto.getId());
return ApiResponseUtils.success();
}
@ApiOperation("通知家属")
@PostMapping("notice")
public ApiResponseEntity<Void> notice(@RequestBody BaseIdDTO dto) {
platAlarmRecordService.noticeRelation(dto.getId());
return ApiResponseUtils.success();
}
@Autowired
private MailMsgSender mailMsgSender;
@ApiOperation("测试消息")
@PostMapping("testMsg")
public ApiResponseEntity<Void> testMsg(@RequestBody BaseIdDTO dto) {
MsgDTO msgDTO = new MsgDTO();
msgDTO.setSubject("测试消息");
msgDTO.setReceiverList(Collections.singletonList("994997968@qq.com"));
msgDTO.setOriContent("测试发送邮箱");
mailMsgSender.send(msgDTO);
return ApiResponseUtils.success();
}
}
......@@ -56,6 +56,8 @@ public class PlatAlarmRecord extends BaseBusEntity {
private String orgId;
private String deviceId;
}
package com.makeit.entity.platform.auth;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.makeit.common.entity.BaseBusEntity;
import lombok.Data;
......@@ -13,11 +12,6 @@ import lombok.Data;
@TableName(value ="plat_role_menu")
@Data
public class PlatRoleMenu extends BaseBusEntity {
/**
* id
*/
@TableId
private String id;
/**
* 租户id
......
......@@ -20,5 +20,5 @@ public interface PlatAlarmRecordService extends IService<PlatAlarmRecord> {
void deal(String recordId);
void notice(String recordId);
void noticeRelation(String recordId);
}
......@@ -7,22 +7,41 @@ import com.makeit.common.entity.BaseEntity;
import com.makeit.common.page.PageReqDTO;
import com.makeit.common.page.PageVO;
import com.makeit.dto.platform.alarm.PlatAlarmRecordQueryDTO;
import com.makeit.entity.platform.alarm.PlatAlarmConfig;
import com.makeit.entity.platform.alarm.PlatAlarmRecord;
import com.makeit.entity.platform.elder.PlatElder;
import com.makeit.entity.platform.elder.PlatElderSocialRelation;
import com.makeit.entity.platform.space.PlatRoomBedDevice;
import com.makeit.enums.CodeMessageEnum;
import com.makeit.enums.CommonEnum;
import com.makeit.exception.BusinessException;
import com.makeit.mapper.platform.alarm.PlatAlarmRecordMapper;
import com.makeit.service.platform.alarm.PlatAlarmConfigService;
import com.makeit.service.platform.alarm.PlatAlarmRecordService;
import com.makeit.service.platform.elder.PlatElderService;
import com.makeit.service.platform.elder.PlatElderSocialRelationService;
import com.makeit.service.platform.space.PlatRoomBedDeviceService;
import com.makeit.utils.data.convert.BeanDtoVoUtils;
import com.makeit.utils.data.convert.PageUtil;
import com.makeit.utils.msg.MsgUtil;
import com.makeit.utils.msg.SendTypeEnum;
import com.makeit.utils.sql.join.JoinUtil;
import com.makeit.utils.user.common.CommonUserUtil;
import com.makeit.utils.user.common.CommonUserVO;
import com.makeit.vo.platform.alarm.PlatAlarmRecordVO;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* @author lixl
......@@ -32,6 +51,17 @@ import java.util.Objects;
@Service
public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMapper, PlatAlarmRecord>
implements PlatAlarmRecordService{
@Autowired
private PlatAlarmConfigService platAlarmConfigService;
@Autowired
private PlatRoomBedDeviceService platRoomBedDeviceService;
@Autowired
private PlatElderService platElderService;
@Autowired
private PlatElderSocialRelationService platElderSocialRelationService;
@Autowired
private MsgUtil msgUtil;
@Override
public PageVO<PlatAlarmRecordVO> page(PageReqDTO<PlatAlarmRecordQueryDTO> dto) {
......@@ -41,6 +71,11 @@ implements PlatAlarmRecordService{
Page<PlatAlarmRecord> page = page(mpPage, lambdaQueryWrapper);
List<PlatAlarmRecord> records = page.getRecords();
List<PlatAlarmRecordVO> dtos = BeanDtoVoUtils.listVo(records, PlatAlarmRecordVO.class);
JoinUtil.join(dtos,platAlarmConfigService,PlatAlarmRecordVO::getAlarmId,BaseEntity::getId,(t,m)->{
t.setNotifyRelation(m.getNotifyRelation());
});
return PageUtil.toPageVO(dtos,page);
}
......@@ -61,6 +96,9 @@ implements PlatAlarmRecordService{
public PlatAlarmRecordVO view(String recordId) {
PlatAlarmRecord platAlarmRecord = getById(recordId);
PlatAlarmRecordVO vo = BeanDtoVoUtils.convert(platAlarmRecord, PlatAlarmRecordVO.class);
JoinUtil.join(Arrays.asList(vo),platAlarmConfigService,PlatAlarmRecordVO::getAlarmId,BaseEntity::getId,(t,m)->{
t.setNotifyRelation(m.getNotifyRelation());
});
return vo;
}
......@@ -77,7 +115,44 @@ implements PlatAlarmRecordService{
@Override
@Transactional
public void notice(String recordId) {
public void noticeRelation(String recordId) {
//todo
PlatAlarmRecord platAlarmRecord = this.getById(recordId);
PlatAlarmConfig platAlarmConfig = platAlarmConfigService.getById(platAlarmRecord.getAlarmId());
String deviceId = platAlarmRecord.getDeviceId();
LambdaQueryWrapper<PlatRoomBedDevice> roomBedDeviceLambdaQueryWrapper = new LambdaQueryWrapper<PlatRoomBedDevice>()
.eq(PlatRoomBedDevice::getEquipmentId, deviceId).orderByDesc(BaseEntity::getUpdateDate);
PlatRoomBedDevice platRoomBedDevice = platRoomBedDeviceService.getOne(roomBedDeviceLambdaQueryWrapper, false);
//绑定房间的设备要通知 全部老人的家属
if(platRoomBedDevice == null){
throw new BusinessException(CodeMessageEnum.PLATFORM_ERROR_ALARM_NOT_FOUND_SPACE);
}
String bedId = platRoomBedDevice.getBedId();
String roomId = platRoomBedDevice.getRoomId();
LambdaQueryWrapper<PlatElder> elderLambdaQueryWrapper = new LambdaQueryWrapper<PlatElder>().eq(StringUtils.isNotBlank(bedId), PlatElder::getBedId, bedId)
.eq(PlatElder::getRoomId, roomId);
List<PlatElder> elderList = platElderService.list(elderLambdaQueryWrapper);
if(CollectionUtils.isEmpty(elderList)){
throw new BusinessException(CodeMessageEnum.PLATFORM_ERROR_ALARM_NOT_FOUND_ELDER);
}
Set<String> elderIdSet = elderList.stream().map(BaseEntity::getId).collect(Collectors.toSet());
List<PlatElderSocialRelation> relations = platElderSocialRelationService.list(new LambdaQueryWrapper<PlatElderSocialRelation>().in(PlatElderSocialRelation::getElderId, elderIdSet));
Set<String> phoneList = relations.stream().map(PlatElderSocialRelation::getPhone).collect(Collectors.toSet());
String notifyChannel = platAlarmConfig.getNotifyChannel();
String[] split = notifyChannel.split(",");
List<String> notifyChannelList = Arrays.asList(SendTypeEnum.SMS.getValue(), SendTypeEnum.VOICE_SMS.getValue(),SendTypeEnum.CHILD_WECHAT.getValue());
Set<String> sendTypeList = Stream.of(split).filter(vo -> notifyChannelList.contains(vo)).collect(Collectors.toSet());
for (String sendType: sendTypeList) {
SendTypeEnum sendTypeEnum = SendTypeEnum.getByValue(sendType);
msgUtil.send(sendTypeEnum,phoneList,platAlarmRecord.getContent());
}
platAlarmRecord.setNoticeStatus(CommonEnum.YES.getValue());
updateById(platAlarmRecord);
}
}
......@@ -12,6 +12,7 @@ import com.makeit.dto.platform.auth.PlatUserRoleDTO;
import com.makeit.entity.platform.auth.PlatRole;
import com.makeit.entity.platform.auth.PlatRoleMenu;
import com.makeit.entity.platform.auth.PlatRoleOrg;
import com.makeit.module.admin.dto.plat.PlatMenuDTOVO;
import com.makeit.module.admin.dto.plat.PlatRoleDTOVO;
import java.util.List;
......@@ -46,6 +47,8 @@ public interface PlatRoleService extends IService<PlatRole> {
void assignDeptList(PlatRoleDeptDTOVO tntRoleDeptDTO);
List<PlatMenuDTOVO> getAssignMenuDTO(String id);
List<PlatRoleOrg> getDeptListByRoleId(String roleId);
......
......@@ -21,8 +21,11 @@ import com.makeit.entity.saas.PlatMenu;
import com.makeit.enums.CodeMessageEnum;
import com.makeit.enums.CommonEnum;
import com.makeit.enums.IsTenantAccountEnum;
import com.makeit.enums.id.TreeConst;
import com.makeit.exception.BusinessException;
import com.makeit.global.aspect.tenant.TenantIdUtil;
import com.makeit.mapper.platform.auth.PlatRoleMapper;
import com.makeit.module.admin.dto.plat.PlatMenuDTOVO;
import com.makeit.module.admin.dto.plat.PlatRoleDTOVO;
import com.makeit.service.platform.auth.PlatOrgService;
import com.makeit.service.platform.auth.PlatRoleMenuService;
......@@ -160,7 +163,9 @@ implements PlatRoleService {
@Override
public String add(PlatRoleDTOVO dto) {
check(dto);
save(BeanDtoVoUtils.convert(dto, PlatRole.class));
PlatRole platRole = BeanDtoVoUtils.convert(dto, PlatRole.class);
save(platRole);
assignMenuList(platRole.getId(),dto.getMenuIdList());
return dto.getId();
}
......@@ -169,7 +174,9 @@ implements PlatRoleService {
public void edit(PlatRoleDTOVO dto) {
adminRoleCantDo(dto.getId());
check(dto);
updateById(BeanDtoVoUtils.convert(dto, PlatRole.class));
PlatRole platRole = BeanDtoVoUtils.convert(dto, PlatRole.class);
updateById(platRole);
assignMenuList(platRole.getId(),dto.getMenuIdList());
}
@Override
......@@ -179,9 +186,32 @@ implements PlatRoleService {
JoinUtil.join(Arrays.asList(vo), platOrgService, PlatRoleDTOVO::getOrgId, PlatOrg::getId, (r, e) -> r.setDeptName(e.getName()));
List<PlatMenuDTOVO> assignMenuDTO = getAssignMenuDTO(id);
List<PlatMenuDTOVO> tree = tree(assignMenuDTO);
vo.setMenuList(tree);
return vo;
}
public List<PlatMenuDTOVO> tree(List<PlatMenuDTOVO> platMenuList) {
Map<String, PlatMenuDTOVO> map = StreamUtil.toMap(platMenuList, PlatMenuDTOVO::getId);
List<PlatMenuDTOVO> topList = StreamUtil.filter(platMenuList, e -> TreeConst.TOP_LEVEL.equals(e.getParentId()));
platMenuList.forEach(e -> {
PlatMenuDTOVO parent = map.get(e.getParentId());
if (parent != null) {
List<PlatMenuDTOVO> children = parent.getChildren();
if (children == null) {
children = new ArrayList<>(10);
parent.setChildren(children);
}
children.add(e);
}
});
return topList;
}
@Transactional
@Override
public void del(String id) {
......@@ -233,16 +263,23 @@ implements PlatRoleService {
@Override
public void assignMenuList(PlatRoleMenuDTO roleMenuDTO) {
adminRoleCantDo(roleMenuDTO.getRoleId());
assignMenuList(roleMenuDTO.getRoleId(),roleMenuDTO.getMenuIdList());
}
@Transactional
public void assignMenuList(String roleId,List<String> menuIdList) {
String tenantId = TenantIdUtil.getTenantId();
//adminRoleCantDo(roleId);
platRoleMenuService.remove(new QueryWrapper<PlatRoleMenu>().lambda()
.eq(PlatRoleMenu::getRoleId, roleMenuDTO.getRoleId()));
.eq(PlatRoleMenu::getRoleId, roleId));
List<PlatRoleMenu> roleMenuList = StreamUtil.map(roleMenuDTO.getMenuIdList(), e -> {
List<PlatRoleMenu> roleMenuList = StreamUtil.map(menuIdList, e -> {
PlatRoleMenu tntRoleMenu = new PlatRoleMenu();
tntRoleMenu.setRoleId(roleMenuDTO.getRoleId());
tntRoleMenu.setRoleId(roleId);
tntRoleMenu.setMenuId(e);
tntRoleMenu.setTenantId(roleMenuDTO.getTenantId());
tntRoleMenu.setTenantId(tenantId);
return tntRoleMenu;
});
......@@ -275,6 +312,27 @@ implements PlatRoleService {
return newList;
}
@Override
public List<PlatMenuDTOVO> getAssignMenuDTO(String id) {
List<String> menuIdList = new ArrayList<>(10);
menuIdList.add(-1 + "");
if (StringUtils.isNotBlank(id)) {
List<PlatRoleMenu> platRoleList = platRoleMenuService.list(new QueryWrapper<PlatRoleMenu>().lambda()
.in(PlatRoleMenu::getRoleId, id));
menuIdList.addAll(StreamUtil.map(platRoleList, PlatRoleMenu::getMenuId));
}
List<PlatMenu> platMenuList = platMenuService.list(new QueryWrapper<PlatMenu>().lambda()
.in(StringUtils.isNotBlank(id), PlatMenu::getId, menuIdList)
//.orderByAsc(PlatMenu::getParentId)
.orderByAsc(PlatMenu::getSort)
.orderByAsc(PlatMenu::getCreateDate)
);
return BeanDtoVoUtils.listVo(platMenuList, PlatMenuDTOVO.class);
}
@Transactional
@Override
public void assignDeptList(PlatRoleDeptDTOVO tntRoleDeptDTO) {
......
......@@ -756,10 +756,10 @@ public class PlatUserServiceImpl extends ServiceImpl<PlatUserMapper, PlatUser>
platUserRoleService.remove(new QueryWrapper<PlatUserRole>().lambda()
.eq(PlatUserRole::getUserId, dto.getId()));
if (dto.getRoleList() != null) {
List<PlatUserRole> userRoleList = StreamUtil.map(dto.getRoleList(), e -> {
List<PlatUserRole> userRoleList = StreamUtil.map(dto.getRoleIdList(), e -> {
PlatUserRole tntUserRole = new PlatUserRole();
tntUserRole.setUserId(dto.getId());
tntUserRole.setRoleId(e.getId());
tntUserRole.setRoleId(e);
return tntUserRole;
});
......
......@@ -187,6 +187,27 @@ public class PlatElderServiceImpl extends ServiceImpl<PlatElderMapper, PlatElder
return vo;
});
JoinUtil.join(list, platSpaceService, Arrays.asList(
PlatElderExportVO::getStreetSpaceId,
PlatElderExportVO::getBuildingSpaceId,
PlatElderExportVO::getUnitSpaceId,
PlatElderExportVO::getFloorSpaceId
), Arrays.asList(
(e, s) -> e.setStreetSpaceName(s.getName()),
(e, s) -> e.setBuildingSpaceName(s.getName()),
(e, s) -> e.setUnitSpaceName(s.getName()),
(e, s) -> e.setFloorSpaceName(s.getName())
));
JoinUtil.join(list, platRoomService, PlatElderExportVO::getRoomId, (e, l) -> {
e.setRoomName(l.getName());
});
JoinUtil.join(list, platBedService, PlatElderExportVO::getBedId, (e, l) -> {
e.setBedName(l.getName());
});
ExcelUtil.export(response, "长者信息" + FileSuffixEnum.EXCEL.getSuffix(), PlatElderExportVO.class, list);
}
......
......@@ -2,6 +2,8 @@ package com.makeit.service.saas;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.common.dto.StatusDTO;
import com.makeit.common.page.PageReqDTO;
import com.makeit.common.page.PageVO;
import com.makeit.entity.saas.SaasRole;
import com.makeit.module.admin.dto.saas.SaasRoleDTOVO;
import com.makeit.module.admin.dto.saas.SaasRoleMenuDTO;
......@@ -18,6 +20,8 @@ public interface SaasRoleService extends IService<SaasRole> {
List<SaasRoleDTOVO> list(SaasRoleDTOVO dto);
PageVO<SaasRoleDTOVO> page(PageReqDTO<SaasRoleDTOVO> dto);
void add(SaasRoleDTOVO dto);
void edit(SaasRoleDTOVO dto);
......
......@@ -175,19 +175,24 @@ implements PlatTenantService {
@Override
public void assignMenuList(PlatTenantMenuDTO tntTenantMenuDTO) {
assignMenuList(tntTenantMenuDTO.getTenantId(),tntTenantMenuDTO.getMenuIdList());
}
@Transactional
public void assignMenuList(String tenantId,List<String> menuIdList) {
platTenantMenuService.remove(new QueryWrapper<PlatTenantMenu>().lambda()
.eq(PlatTenantMenu::getTenantId, tntTenantMenuDTO.getTenantId()));
.eq(PlatTenantMenu::getTenantId, tenantId));
List<PlatTenantMenu> tntTenantMenuList = StreamUtil.map(tntTenantMenuDTO.getMenuIdList(), e -> {
List<PlatTenantMenu> tntTenantMenuList = StreamUtil.map(menuIdList, e -> {
PlatTenantMenu tntTenantMenu = new PlatTenantMenu();
tntTenantMenu.setMenuId(e);
tntTenantMenu.setTenantId(tntTenantMenuDTO.getTenantId());
tntTenantMenu.setTenantId(tenantId);
return tntTenantMenu;
});
platTenantMenuService.saveBatch(tntTenantMenuList);
}
......@@ -216,6 +221,8 @@ implements PlatTenantService {
PlatOrg platOrg = convertToPlatOrg(tntTenant);
platOrgService.save(platOrg);
//分配菜单
assignMenuList(tntTenant.getId(),dto.getMenuIdList());
return tntTenant.getId();
}
......@@ -238,6 +245,9 @@ implements PlatTenantService {
//更新组织表
platOrgService.edit(platOrg);
//分配菜单
assignMenuList(tntTenant.getId(),dto.getMenuIdList());
saasOperationLogService.add("saas端-租户账号-编辑", dto.getId());
}
......
......@@ -49,7 +49,7 @@ import java.util.stream.Collectors;
public class SaasMenuServiceImpl extends ServiceImpl<SaasMenuMapper, SaasMenu> implements SaasMenuService {
@Autowired
private SaasRoleMenuService platRoleMenuService;
private SaasRoleMenuService saasRoleMenuService;
private static final Logger logger = LoggerFactory.getLogger(SaasMenuServiceImpl.class);
......@@ -73,7 +73,7 @@ public class SaasMenuServiceImpl extends ServiceImpl<SaasMenuMapper, SaasMenu> i
List<String> menuIdList = new ArrayList<>(10);
menuIdList.add(-1 + "");
if (StringUtils.isNotBlank(dto.getRoleId())) {
List<SaasRoleMenu> platRoleList = platRoleMenuService.list(new QueryWrapper<SaasRoleMenu>().lambda()
List<SaasRoleMenu> platRoleList = saasRoleMenuService.list(new QueryWrapper<SaasRoleMenu>().lambda()
.in(SaasRoleMenu::getRoleId, dto.getRoleId()));
menuIdList.addAll(StreamUtil.map(platRoleList, SaasRoleMenu::getMenuId));
}
......
package com.makeit.service.saas.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.common.dto.StatusDTO;
import com.makeit.common.page.PageReqDTO;
import com.makeit.common.page.PageVO;
import com.makeit.entity.saas.SaasRole;
import com.makeit.entity.saas.SaasRoleMenu;
import com.makeit.entity.saas.SaasUserRole;
......@@ -10,13 +14,17 @@ import com.makeit.enums.CodeMessageEnum;
import com.makeit.enums.CommonEnum;
import com.makeit.exception.BusinessException;
import com.makeit.mapper.saas.SaasRoleMapper;
import com.makeit.module.admin.dto.saas.SaasMenuDTOVO;
import com.makeit.module.admin.dto.saas.SaasMenuQueryDTO;
import com.makeit.module.admin.dto.saas.SaasRoleDTOVO;
import com.makeit.module.admin.dto.saas.SaasRoleMenuDTO;
import com.makeit.module.admin.dto.saas.SaasUserRoleDTO;
import com.makeit.service.saas.SaasMenuService;
import com.makeit.service.saas.SaasRoleMenuService;
import com.makeit.service.saas.SaasRoleService;
import com.makeit.service.saas.SaasUserRoleService;
import com.makeit.utils.data.convert.BeanDtoVoUtils;
import com.makeit.utils.data.convert.PageUtil;
import com.makeit.utils.data.convert.StreamUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -43,9 +51,19 @@ implements SaasRoleService{
@Autowired
private SaasRoleMenuService saasRoleMenuService;
@Autowired
private SaasMenuService saasMenuService;
@Override
public List<SaasRoleDTOVO> list(SaasRoleDTOVO dto) {
List<SaasRole> platRoleList = list(new QueryWrapper<SaasRole>().lambda()
List<SaasRole> platRoleList = list(getQueryWrapper(dto)
);
return BeanDtoVoUtils.listVo(platRoleList, SaasRoleDTOVO.class);
}
private LambdaQueryWrapper<SaasRole> getQueryWrapper(SaasRoleDTOVO dto) {
return new QueryWrapper<SaasRole>().lambda()
.like(StringUtils.isNotBlank(dto.getName()), SaasRole::getName, dto.getName())
.like(StringUtils.isNotBlank(dto.getCode()), SaasRole::getCode, dto.getCode())
.and(StringUtils.isNotBlank(dto.getKeyword()), qw -> {
......@@ -54,10 +72,17 @@ implements SaasRoleService{
.like(StringUtils.isNotBlank(dto.getKeyword()), SaasRole::getCode, dto.getKeyword());
})
.eq(StringUtils.isNotBlank(dto.getStatus()), SaasRole::getStatus, dto.getStatus())
.orderByDesc(SaasRole::getCreateDate)
);
.orderByDesc(SaasRole::getCreateDate);
}
return BeanDtoVoUtils.listVo(platRoleList, SaasRoleDTOVO.class);
@Override
public PageVO<SaasRoleDTOVO> page(PageReqDTO<SaasRoleDTOVO> pageReqDTO) {
SaasRoleDTOVO data = pageReqDTO.getData();
Page<SaasRole> mpPage = PageUtil.toMpPage(pageReqDTO);
Page<SaasRole> page = page(mpPage, getQueryWrapper(data));
List<SaasRole> records = page.getRecords();
List<SaasRoleDTOVO> saasRoleDTOVOS = BeanDtoVoUtils.listVo(records, SaasRoleDTOVO.class);
return PageUtil.toPageVO(saasRoleDTOVOS,page);
}
private void check(SaasRoleDTOVO dto) {
......@@ -78,19 +103,28 @@ implements SaasRoleService{
@Override
public void add(SaasRoleDTOVO dto) {
check(dto);
save(BeanDtoVoUtils.convert(dto, SaasRole.class));
SaasRole saasRole = BeanDtoVoUtils.convert(dto, SaasRole.class);
save(saasRole);
assignMenuList(saasRole.getId(),dto.getMenuIdList());
}
@Transactional
@Override
public void edit(SaasRoleDTOVO dto) {
check(dto);
updateById(BeanDtoVoUtils.convert(dto, SaasRole.class));
SaasRole saasRole = BeanDtoVoUtils.convert(dto, SaasRole.class);
updateById(saasRole);
assignMenuList(saasRole.getId(),dto.getMenuIdList());
}
@Override
public SaasRoleDTOVO view(String id) {
return BeanDtoVoUtils.convert(getById(id), SaasRoleDTOVO.class);
SaasRoleDTOVO saasRoleDTOVO = BeanDtoVoUtils.convert(getById(id), SaasRoleDTOVO.class);
SaasMenuQueryDTO saasMenuQueryDTO = new SaasMenuQueryDTO();
saasMenuQueryDTO.setRoleId(id);
List<SaasMenuDTOVO> tree = saasMenuService.tree(saasMenuQueryDTO);
saasRoleDTOVO.setMenuDTOVOList(tree);
return saasRoleDTOVO;
}
@Transactional
......@@ -142,11 +176,16 @@ implements SaasRoleService{
public void assignMenuList(SaasRoleMenuDTO roleMenuDTO) {
//removeAssignMenuList(roleMenuDTOList);
saasRoleMenuService.remove(new QueryWrapper<SaasRoleMenu>().lambda().eq(SaasRoleMenu::getRoleId, roleMenuDTO.getRoleId()));
assignMenuList(roleMenuDTO.getRoleId(),roleMenuDTO.getMenuIdList());
}
@Transactional
public void assignMenuList(String roleId,List<String> menuIdList) {
saasRoleMenuService.remove(new QueryWrapper<SaasRoleMenu>().lambda().eq(SaasRoleMenu::getRoleId, roleId));
List<SaasRoleMenu> roleMenuList = StreamUtil.map(roleMenuDTO.getMenuIdList(), e -> {
List<SaasRoleMenu> roleMenuList = StreamUtil.map(menuIdList, e -> {
SaasRoleMenu platRoleMenu = new SaasRoleMenu();
platRoleMenu.setRoleId(roleMenuDTO.getRoleId());
platRoleMenu.setRoleId(roleId);
platRoleMenu.setMenuId(e);
return platRoleMenu;
});
......
......@@ -187,12 +187,12 @@ implements SaasUserService{
saasUserRoleService.remove(new QueryWrapper<SaasUserRole>().lambda()
.eq(SaasUserRole::getUserId, dto.getId()));
if (CollectionUtils.isNotEmpty(dto.getRoleList())) {
List<SaasUserRole> userRoleList = StreamUtil.map(dto.getRoleList(), e -> {
SaasUserRole platUserRole = new SaasUserRole();
platUserRole.setUserId(dto.getId());
platUserRole.setRoleId(e.getId());
List<SaasUserRole> userRoleList = StreamUtil.map(dto.getRoleIdList(), e -> {
SaasUserRole saasUserRole = new SaasUserRole();
saasUserRole.setUserId(dto.getId());
saasUserRole.setRoleId(e);
return platUserRole;
return saasUserRole;
});
saasUserRoleService.saveBatch(userRoleList);
......
......@@ -90,6 +90,7 @@ public class IotSyncTask {
if(platDevice==null){
platDevice=new PlatDevice();
platDevice.setTenantId(tenantId);
deviceMap.put(iotDevice.getId(),platDevice);
}
platDevice.setOriDeviceId(iotDevice.getId());
platDevice.setName(iotDevice.getName());
......@@ -100,6 +101,9 @@ public class IotSyncTask {
platDevice.setDescription(iotDevice.getDescribe());
String state = iotDevice.getState();
platDevice.setStatus(StringUtils.equals("online",state)?CommonEnum.YES.getValue() : CommonEnum.NO.getValue());
//todo 根据类型名称来匹配
// platDevice.setCategory();
// platDevice.setFirmwareVersion();
// platDevice.setLastOnlineData();
// platDevice.setOrgId();
......@@ -114,7 +118,7 @@ public class IotSyncTask {
// platDevice.setCreateBy();
// platDevice.setUpdateBy();
deviceMap.put(iotDevice.getId(),platDevice);
});
return deviceMap.values();
}
......
......@@ -22,7 +22,13 @@ import java.util.Date;
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="PlatAlarmRecord对象", description="告警记录")
public class PlatAlarmRecordVO extends BaseTenantDTO {
/**
* 关联告警配置
*/
private String alarmId;
@ApiModelProperty(value = "通知家属 数据字典 1、同步通知 2 可选通知 3 不通知")
private String notifyRelation;
@ApiModelProperty(value = "告警类型 数据字典 1 长者跌倒 2 呼吸异常 3 心率异常 4 行为异常")
private String alarmType;
......
......@@ -77,4 +77,8 @@ public class PlatPersonDTOVO extends BaseIdDTO {
@ApiModelProperty(value = "角色集合")
private List<PlatRoleDTOVO> roleList;
@TableField(exist = false)
@ApiModelProperty(value = "角色Id集合")
private List<String> roleIdList;
}
......@@ -32,6 +32,24 @@ spring:
#redis库
database: 1
#邮件发送配置
mail:
host: smtp.qq.com
username: 994997968@qq.com
password: jctyarhjddstbfef
protocol: smtps
default-encoding: UTF-8
properties:
default-encoding: utf-8
mail:
smtp:
port: 587
auth: true
starttls:
enable: true
required: true
sign:
flag: false
......@@ -100,4 +118,13 @@ mqtt:
clientId: ab3a2fd694c8c838aba2686df3a80e7b
defaultTopic:
timeout: 10
keepalive: 60
\ No newline at end of file
keepalive: 60
wx:
miniapp:
config:
appid: wx48720402e3fdbe0f #微信小程序的appid
secret: 2ebae648f45716e70c75b7d78d0660cc #微信小程序的Secret
token: #微信小程序消息服务器配置的token
aesKey: #微信小程序消息服务器配置的EncodingAESKey
msgDataFormat: JSON
\ No newline at end of file
......@@ -31,6 +31,21 @@ spring:
connectTimeout: 10000
#redis库
database: 1
mail:
host: smtp.qq.com
username: 994997968@qq.com
password: jctyarhjddstbfef
protocol: smtps
default-encoding: UTF-8
properties:
default-encoding: utf-8
mail:
smtp:
port: 587
auth: true
starttls:
enable: true
required: true
sign:
flag: false
......@@ -91,4 +106,22 @@ libreOffice: /home/group1_lzy/iot-server/LibreOffice/program/soffice
iot:
url: http://iot.meiqicloud.com/api/
clientId: fyxmb5h52iKwE2Hi
secureKey: 22fZbnH36wdHn7ZTyKKHraFw233npcez
\ No newline at end of file
secureKey: 22fZbnH36wdHn7ZTyKKHraFw233npcez
mqtt:
username: admin|1693982115969
password: 8e3795ef7b5e95869fa8c323b865b3a9
hostUrl: tcp://124.71.33.17:11883
clientId: ab3a2fd694c8c838aba2686df3a80e7b
defaultTopic:
timeout: 10
keepalive: 60
wx:
miniapp:
config:
appid: wx48720402e3fdbe0f #微信小程序的appid
secret: 2ebae648f45716e70c75b7d78d0660cc #微信小程序的Secret
token: #微信小程序消息服务器配置的token
aesKey: #微信小程序消息服务器配置的EncodingAESKey
msgDataFormat: JSON
\ No newline at end of file
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 sign in to comment