Commit 04b981f7 by 杨伟程
parents 30751eeb c97bc830
Showing with 269 additions and 61 deletions
......@@ -34,7 +34,7 @@ public class TenantIdUtil {
public static String getTenantId() {
List<Supplier<String>> supplierList = Arrays.asList(
TenantIdUtil::getFromThreadLocal,
//TenantIdUtil::getFromThreadLocal,
TenantIdUtil::getFromHeader//,
);
......
......@@ -34,16 +34,16 @@ public class PlatUserUtil {
public static PlatUserVO getUserVO() {
PlatUserVO userVO = THREAD_LOCAL_USER.get();
if (userVO != null) {
return userVO;
}
//或者这里用策略模式
WechatUserInfo wechatUserInfo = WechatUserUtil.getUserVOCanNull();
if (wechatUserInfo != null) {
return BeanDtoVoUtils.convert(wechatUserInfo, PlatUserVO.class);
}
// PlatUserVO userVO = THREAD_LOCAL_USER.get();
// if (userVO != null) {
// return userVO;
// }
// //或者这里用策略模式
// WechatUserInfo wechatUserInfo = WechatUserUtil.getUserVOCanNull();
// if (wechatUserInfo != null) {
// return BeanDtoVoUtils.convert(wechatUserInfo, PlatUserVO.class);
// }
PlatUserLoginVO tntUserLoginVO = TokenUtil.getTntUserDetail();
if (tntUserLoginVO != null) {
......
......@@ -2,11 +2,10 @@ package com.makeit.module.controller.workstation;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.dataScreen.PlatDataScreenQueryDTO;
import com.makeit.dto.platform.workstation.WorkStationQueryDTO;
import com.makeit.service.platform.workstation.WorkStationService;
import com.makeit.vo.platform.dataScreen.PlatAgeStatisticsVO;
import com.makeit.vo.platform.workstation.WorkStationStatisticsVO;
import com.makeit.vo.platform.workstation.WorkStationInstitutionRoomVO;
import com.makeit.vo.platform.workstation.WorkStationInstitutionStatisticsVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -15,6 +14,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.List;
@Api(tags = "平台端-工作台")
@RestController
@RequestMapping("/plat/workstation")
......@@ -23,10 +24,15 @@ public class WorkStationController {
@Autowired
private WorkStationService workStationService;
@ApiOperation("统计")
@PostMapping("statistics")
public ApiResponseEntity<WorkStationStatisticsVO> statistics(@RequestBody WorkStationQueryDTO dto) {
return ApiResponseUtils.success(workStationService.statistics(dto));
@ApiOperation("机构-统计")
@PostMapping("institutionStatistics")
public ApiResponseEntity<WorkStationInstitutionStatisticsVO> institutionStatistics(@RequestBody WorkStationQueryDTO dto) {
return ApiResponseUtils.success(workStationService.institutionStatistics(dto));
}
@ApiOperation("机构-列表")
@PostMapping("institutionList")
public ApiResponseEntity<List<WorkStationInstitutionRoomVO>> institutionList(@RequestBody WorkStationQueryDTO dto) {
return ApiResponseUtils.success(workStationService.institutionList(dto));
}
}
......@@ -33,4 +33,8 @@ public class PlatDeviceDTO {
@ApiModelProperty(value = "床位名称")
private String bedName;
@ApiModelProperty(value = "床位Id")
private String bedId;
}
......@@ -36,6 +36,6 @@ public class WorkStationQueryDTO {
private List<String> spaceIds;
@ApiModelProperty("告警类型")
private String type;
private String alarmType;
}
......@@ -74,6 +74,8 @@ public class PlatAlarmRecord extends BaseBusEntity {
*/
private String elderIds;
private String remark;
}
......
......@@ -13,10 +13,6 @@ public class PlatBedStatusEnum {
public enum BedStatusEnum implements BaseEnum {
//SPARE 空闲
//NOT_FULL 未住满
//FULL 已住满
SPARE("room.status.spare"),
CHECKED_IN("bed.status.CheckedIn");
......
package com.makeit.mapper.platform.space;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.makeit.dto.platform.space.PlatSpaceQueryDTO;
import com.makeit.dto.platform.workstation.WorkStationQueryDTO;
import com.makeit.entity.platform.space.PlatRoom;
import com.makeit.vo.platform.space.PlatRoomVO;
import com.makeit.vo.platform.space.PlatSpaceAndRoomVO;
import com.makeit.vo.platform.workstation.WorkStationInstitutionRoomVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
......@@ -16,4 +16,6 @@ import java.util.List;
*/
public interface PlatRoomMapper extends BaseMapper<PlatRoom> {
List<PlatSpaceAndRoomVO> spaceAndRoomList();
List<WorkStationInstitutionRoomVO> workStationList(@Param("dto") WorkStationQueryDTO dto);
}
......@@ -3,12 +3,12 @@ package com.makeit.service.platform.space;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.common.page.PageReqDTO;
import com.makeit.common.page.PageVO;
import com.makeit.dto.platform.elder.PlatElderQueryDTO;
import com.makeit.dto.platform.space.PlatRoomDTO;
import com.makeit.dto.platform.space.PlatRoomQueryDTO;
import com.makeit.dto.platform.space.PlatSpaceQueryDTO;
import com.makeit.dto.platform.workstation.WorkStationQueryDTO;
import com.makeit.entity.platform.space.PlatRoom;
import com.makeit.vo.platform.space.PlatSpaceAndRoomVO;
import com.makeit.vo.platform.workstation.WorkStationInstitutionRoomVO;
import java.util.List;
......@@ -61,4 +61,6 @@ public interface PlatRoomService extends IService<PlatRoom> {
PageVO<PlatRoom> page(PageReqDTO<PlatRoomQueryDTO> page);
List<PlatSpaceAndRoomVO> spaceAndRoomList();
List<WorkStationInstitutionRoomVO> workStationList(WorkStationQueryDTO dto);
}
......@@ -165,9 +165,13 @@ public class PlatBedServiceImpl extends ServiceImpl<PlatBedMapper, PlatBed> impl
LambdaQueryWrapper<PlatRoomBedDevice> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(PlatRoomBedDevice::getRoomId,dto.getRoomId());
queryWrapper.select(PlatRoomBedDevice::getBedId);
queryWrapper.isNotNull(PlatRoomBedDevice::getBedId);
List<PlatRoomBedDevice> listDevices = platRoomBedDeviceService.list(queryWrapper);
List<String> listBedIds = listDevices.stream().map(item->item.getBedId()).collect(Collectors.toList());
List<String> listBedIds = new ArrayList<>();
if(!listDevices.isEmpty()){
listBedIds = listDevices.stream().map(item->item.getBedId()).collect(Collectors.toList());
}
LambdaQueryWrapper<PlatBed> queryWrapper1 = new LambdaQueryWrapper<>();
queryWrapper1.eq(StringUtil.isNotEmpty(dto.getRoomId()), PlatBed::getRoomId, dto.getRoomId());
......
......@@ -119,10 +119,12 @@ public class PlatRoomBedDeviceServiceImpl extends ServiceImpl<PlatRoomBedDeviceM
queryWrapper2.in(PlatBed::getId,listBedIds);
List<PlatBed> listBeds = platBedService.list(queryWrapper2);
Map<String,String> map = listBeds.stream().collect(Collectors.toMap(PlatBed::getId,PlatBed::getName,(k1, k2)->k1));
Map<String,String> mapName = new HashMap<>();
Map<String,String> mapName = new HashMap<>(20);
Map<String,String> mapBedId = new HashMap<>(20);
list.forEach(item->{
if(map.containsKey(item.getBedId())){
mapName.put(item.getDeviceId(),map.get(item.getBedId()));
mapBedId.put(item.getDeviceId(),item.getBedId());
}
});
......@@ -136,6 +138,7 @@ public class PlatRoomBedDeviceServiceImpl extends ServiceImpl<PlatRoomBedDeviceM
data.forEach(item->{
item.setBedName(mapName.get(item.getId()));
item.setBedId(mapBedId.get(item.getId()));
});
}
return data;
......
......@@ -71,7 +71,7 @@ public class PlatRoomDynamicServiceImpl implements PlatRoomDynamicService {
PlatRoomVO vo = convertToVO(room,bedMap);
roomVOList.add(vo);
}
platRoomPanoramaVO.setList(roomVOList);
platRoomPanoramaVO.setChildren(roomVOList);
list.add(platRoomPanoramaVO);
}
}
......@@ -189,7 +189,7 @@ public class PlatRoomDynamicServiceImpl implements PlatRoomDynamicService {
this.child(item,map);
listChild.add(item);
}
vo.setChild(listChild);
vo.setChildren(listChild);
return vo;
}
}
......@@ -8,6 +8,7 @@ import com.makeit.common.page.PageReqDTO;
import com.makeit.common.page.PageVO;
import com.makeit.dto.platform.space.PlatRoomDTO;
import com.makeit.dto.platform.space.PlatRoomQueryDTO;
import com.makeit.dto.platform.workstation.WorkStationQueryDTO;
import com.makeit.entity.platform.space.PlatBed;
import com.makeit.entity.platform.space.PlatRoom;
import com.makeit.enums.CodeMessageEnum;
......@@ -18,6 +19,7 @@ import com.makeit.service.platform.space.PlatRoomService;
import com.makeit.utils.data.convert.BeanDtoVoUtils;
import com.makeit.utils.data.convert.PageUtil;
import com.makeit.vo.platform.space.PlatSpaceAndRoomVO;
import com.makeit.vo.platform.workstation.WorkStationInstitutionRoomVO;
import jodd.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -147,5 +149,10 @@ public class PlatRoomServiceImpl extends ServiceImpl<PlatRoomMapper, PlatRoom> i
return baseMapper.spaceAndRoomList();
}
@Override
public List<WorkStationInstitutionRoomVO> workStationList(WorkStationQueryDTO dto) {
return baseMapper.workStationList(dto);
}
}
......@@ -2,7 +2,10 @@ package com.makeit.service.platform.workstation;
import com.makeit.dto.platform.workstation.WorkStationQueryDTO;
import com.makeit.vo.platform.workstation.WorkStationStatisticsVO;
import com.makeit.vo.platform.workstation.WorkStationInstitutionRoomVO;
import com.makeit.vo.platform.workstation.WorkStationInstitutionStatisticsVO;
import java.util.List;
/**
* Controller
......@@ -12,5 +15,7 @@ import com.makeit.vo.platform.workstation.WorkStationStatisticsVO;
*/
public interface WorkStationService {
WorkStationStatisticsVO statistics(WorkStationQueryDTO dto);
WorkStationInstitutionStatisticsVO institutionStatistics(WorkStationQueryDTO dto);
List<WorkStationInstitutionRoomVO> institutionList(WorkStationQueryDTO dto);
}
package com.makeit.service.platform.workstation.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.makeit.dto.platform.dataScreen.PlatDataScreenQueryDTO;
import com.makeit.common.entity.BaseEntity;
import com.makeit.dto.platform.workstation.WorkStationQueryDTO;
import com.makeit.entity.platform.alarm.PlatAlarmRecord;
import com.makeit.entity.platform.auth.PlatUser;
import com.makeit.entity.platform.device.PlatDevice;
import com.makeit.entity.platform.auth.PlatOrg;
import com.makeit.entity.platform.elder.PlatElder;
import com.makeit.entity.platform.space.PlatBed;
import com.makeit.entity.platform.space.PlatSpace;
import com.makeit.enums.CommonEnum;
import com.makeit.enums.platform.alarm.PlatAlarmConfigEnum;
import com.makeit.enums.platform.alarm.PlatAlarmRecordEnum;
import com.makeit.enums.platform.device.PlatDeviceEnum;
import com.makeit.enums.platform.elder.PlatElderEnum;
import com.makeit.module.iot.enums.DeviceState;
import com.makeit.enums.platform.space.PlatBedStatusEnum;
import com.makeit.service.platform.alarm.PlatAlarmRecordService;
import com.makeit.service.platform.auth.PlatOrgService;
import com.makeit.service.platform.auth.PlatUserService;
import com.makeit.service.platform.dataScreen.DataScreenService;
import com.makeit.service.platform.device.PlatDeviceService;
import com.makeit.service.platform.elder.PlatElderService;
import com.makeit.service.platform.space.PlatBedService;
import com.makeit.service.platform.space.PlatRoomService;
import com.makeit.service.platform.space.PlatSpaceService;
import com.makeit.service.platform.workstation.WorkStationService;
import com.makeit.utils.data.convert.BeanDtoVoUtils;
import com.makeit.vo.platform.dataScreen.*;
import com.makeit.vo.platform.workstation.WorkStationStatisticsVO;
import com.makeit.utils.user.plat.PlatUserUtil;
import com.makeit.utils.user.plat.PlatUserVO;
import com.makeit.vo.platform.workstation.WorkStationInstitutionRoomVO;
import com.makeit.vo.platform.workstation.WorkStationInstitutionStatisticsVO;
import jodd.util.StringUtil;
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 java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
......@@ -49,12 +44,10 @@ public class WorkStationServiceImpl implements WorkStationService {
@Autowired
private PlatElderService platElderService;
@Autowired
private PlatDeviceService platDeviceService;
private PlatRoomService platRoomService;
@Autowired
private PlatBedService platBedService;
@Autowired
private PlatUserService platUserService;
@Autowired
private PlatAlarmRecordService platAlarmRecordService;
@Autowired
private PlatSpaceService platSpaceService;
......@@ -63,14 +56,102 @@ public class WorkStationServiceImpl implements WorkStationService {
@Override
public WorkStationStatisticsVO statistics(WorkStationQueryDTO dto) {
WorkStationStatisticsVO vo = new WorkStationStatisticsVO();
//代处理告警
public WorkStationInstitutionStatisticsVO institutionStatistics(WorkStationQueryDTO dto) {
WorkStationInstitutionStatisticsVO vo = new WorkStationInstitutionStatisticsVO();
if(dto.getOrgIds().isEmpty()){
//获取该账号的权限组织
List<String> orgIds = belongToScope();
if(orgIds.isEmpty()){
return vo;
}
dto.setOrgIds(orgIds);
}
//待处理告警
long unHandledNumber = platAlarmRecordService.count(new QueryWrapper<PlatAlarmRecord>().lambda()
.eq(PlatAlarmRecord::getStatus, PlatAlarmRecordEnum.AlarmRecordStatusEnum.UNHANDLED.getValue())
.in(PlatAlarmRecord::getOrgId, dto.getOrgIds()));
//在住长者
long elderNumber = platElderService.count(new QueryWrapper<PlatElder>().lambda()
.isNotNull(PlatElder::getBedId)
.in(PlatElder::getOrgId, dto.getOrgIds()));
//空闲床位
List<PlatSpace> spaces = platSpaceService.list(new QueryWrapper<PlatSpace>().lambda()
.in(PlatSpace::getOrgId, dto.getOrgIds()));
List<String> spaceIds = spaces.stream().map(PlatSpace::getId).collect(Collectors.toList());
if(!spaceIds.isEmpty()){
long spareBedNumber = platBedService.count(new QueryWrapper<PlatBed>().lambda()
.eq(PlatBed::getStatus, PlatBedStatusEnum.BedStatusEnum.SPARE.getValue())
.in(PlatBed::getSpaceId, spaceIds));
vo.setSpareBedNumber(spareBedNumber);
}else {
vo.setSpareBedNumber(0L);
}
vo.setUnHandledNumber(unHandledNumber);
vo.setElderNumber(elderNumber);
return vo;
}
private List<String> belongToScope() {
PlatUserVO userVO = PlatUserUtil.getUserVO();
String isTenant = userVO.getIsTenant();
//如果是租户账号 则有所有权限
if (StringUtils.equals(isTenant, CommonEnum.YES.getValue())) {
List<PlatOrg> orgList = platOrgService.list(new LambdaQueryWrapper<PlatOrg>()
.eq(PlatOrg::getStatus, CommonEnum.YES.getValue())
);
return orgList.stream().map(PlatOrg::getParentId).collect(Collectors.toList());
}
//平台账号
Set<String> orgIdList = platOrgService.getOrgIdListByUserId(userVO.getId());
List<PlatOrg> orgList = platOrgService.list(new LambdaQueryWrapper<PlatOrg>().in(BaseEntity::getId, orgIdList).eq(PlatOrg::getStatus, CommonEnum.YES.getValue()));
if (CollectionUtils.isEmpty(orgList)) {
return new ArrayList<>();
}
return orgList.stream().map(PlatOrg::getParentId).collect(Collectors.toList());
}
@Override
public List<WorkStationInstitutionRoomVO> institutionList(WorkStationQueryDTO dto) {
List<PlatSpace> spaces = new ArrayList<>();
if(dto.getSpaceIds().isEmpty()){
//获取该账号的权限组织
List<String> orgIds = belongToScope();
if(orgIds.isEmpty()){
return new ArrayList<>();
}
spaces = platSpaceService.list(new QueryWrapper<PlatSpace>().lambda()
.in(PlatSpace::getOrgId, dto.getOrgIds()));
if(spaces.isEmpty()){
return new ArrayList<>();
}
List<String> spaceIds = spaces.stream().map(PlatSpace::getId).collect(Collectors.toList());
dto.setSpaceIds(spaceIds);
}else {
spaces = platSpaceService.list(new QueryWrapper<PlatSpace>().lambda()
.in(PlatSpace::getId, dto.getSpaceIds()));
}
Map<String, PlatSpace> platSpaceMap = spaces.stream().collect(Collectors.toMap(PlatSpace::getId, Function.identity()));
List<String> elderIdList = new ArrayList<>();
List<PlatAlarmRecord> alarmRecords = platAlarmRecordService.list(
new QueryWrapper<PlatAlarmRecord>().lambda()
.eq(StringUtil.isNotEmpty(dto.getAlarmType()), PlatAlarmRecord::getAlarmType, dto.getAlarmType())
.eq(PlatAlarmRecord::getStatus, PlatAlarmRecordEnum.AlarmRecordStatusEnum.UNHANDLED.getValue())
.in(PlatAlarmRecord::getOrgId, dto.getOrgIds())
);
List<String> elderIds = alarmRecords.stream().filter(t->StringUtil.isNotEmpty(t.getElderIds()))
.map(PlatAlarmRecord::getElderIds).collect(Collectors.toList());
if(elderIds.isEmpty()){
return new ArrayList<>();
}
elderIds.forEach(e->{
elderIdList.addAll(Arrays.asList(e.split(",")));
});
List<WorkStationInstitutionRoomVO> roomVOList = platRoomService.workStationList(dto);
return null;
}
}
......@@ -23,5 +23,5 @@ public class PlatRoomPanoramaVO{
@ApiModelProperty("空间id")
private String spaceId;
private List<PlatRoomVO> list;
private List<PlatRoomVO> children;
}
......@@ -27,5 +27,5 @@ public class PlatSpaceAndRoomVO extends BaseIdDTO {
private String type;
@ApiModelProperty("子集")
private List<PlatSpaceAndRoomVO> child;
private List<PlatSpaceAndRoomVO> children;
}
package com.makeit.vo.platform.workstation;
import com.makeit.entity.platform.alarm.PlatAlarmRecord;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* Controller
*
* @author zm
* @version 2023/9/13
*/
@Data
@ApiModel("WorkStationRoomVO对象")
public class WorkStationBedVO {
@ApiModelProperty(value = "床号")
private String bedName;
@ApiModelProperty(value = "床id")
private String bedId;
@ApiModelProperty(value = "状态")
private String stauts;
@ApiModelProperty(value = "长者id")
private String elderId;
@ApiModelProperty(value = "长者姓名")
private String elderName;
@ApiModelProperty(value = "长者状态")
private String elderStatus;
@ApiModelProperty(value = "告警类型")
private List<String> alarmTypes;
}
package com.makeit.vo.platform.workstation;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* Controller
*
* @author zm
* @version 2023/9/13
*/
@Data
@ApiModel("WorkStationRoomVO对象")
public class WorkStationInstitutionRoomVO {
@ApiModelProperty(value = "房间路径id")
private String path;
@ApiModelProperty(value = "房间id")
private String roomId;
@ApiModelProperty(value = "房间路径")
private String pathName;
private List<WorkStationBedVO> list;
}
......@@ -12,8 +12,16 @@ import lombok.Data;
*/
@Data
@ApiModel("WorkStationStatisticsVO对象")
public class WorkStationStatisticsVO {
public class WorkStationInstitutionStatisticsVO {
@ApiModelProperty(value = "待处理告警")
private Long unHandledNumber;
@ApiModelProperty(value = "在住长者")
private Long elderNumber;
@ApiModelProperty(value = "空闲床位")
private Long spareBedNumber;
@ApiModelProperty(value = "今日入住")
private Long checkInNumber;
@ApiModelProperty(value = "今日退住")
private Long checkOutNumber;
}
......@@ -37,7 +37,7 @@
SELECT count(*) from plat_bed pb LEFT JOIN plat_space ps ON pb.space_id = ps.id
<where>
ps.del_flag = 0
<if test="orgIds != null and orgIds != '' ">
<if test="orgIds != null and orgIds.size() > 0 ">
AND ps.org_id IN
<foreach collection="orgIds" item="item" separator="," open="(" close=")" index="">
#{item}
......
......@@ -11,6 +11,25 @@
WHERE pr.del_flag = 0
</select>
<select id="workStationList" resultType="com.makeit.vo.platform.workstation.WorkStationInstitutionRoomVO">
SELECT pm.id,pm.name,pm.space_path FROM plat_room pm
LEFT JOIN plat_space ps ON pm.space_id = ps.id
LEFT JOIN plat_bed pb ON pb.room_id = pm.id
LEFT JOIN plat_elder pe ON pe.bed_id = pb.id
<where>
pm.del_flag = 0
<if test="dto.elderName != null and dto.elderName != ''">
AND pe.naem LIKE CONCAT('%',#{dto.elderName},'%')
</if>
<if test="dto.spaceIds != null and dto.spaceIds.size()>0 ">
AND pm.space_id IN
<foreach collection="dto.spaceIds" item="item" separator="," open="(" close=")" index="">
#{item}
</foreach>
</if>
</where>
</select>
</mapper>
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