修改了巡检明细bug

This commit is contained in:
2025-09-05 19:07:41 +08:00
parent 0bf05f52f9
commit 6538635e6d
23 changed files with 718 additions and 58 deletions

View File

@@ -40,7 +40,7 @@ public class CustomerFeedbacksController extends BaseController {
/** /**
* 查询客户服务-意见反馈列表 * 查询客户服务-意见反馈列表
*/ */
// @SaCheckPermission("system:feedbacks:list") @SaCheckPermission("system:feedbacks:list")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo<CustomerFeedbacksVo> list(CustomerFeedbacksBo bo, PageQuery pageQuery) { public TableDataInfo<CustomerFeedbacksVo> list(CustomerFeedbacksBo bo, PageQuery pageQuery) {
return customerFeedbacksService.queryPageList(bo, pageQuery); return customerFeedbacksService.queryPageList(bo, pageQuery);

View File

@@ -0,0 +1,32 @@
package org.dromara.property.controller;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R;
import org.dromara.property.domain.vo.IndexCountVo;
import org.dromara.property.service.IndexService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author yuyongle
* @version 1.0
* @description: 首页展示数据
* @date 2025/9/5 14:35
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/index")
public class IndexController {
private final IndexService indexService;
/**
* 首页统计数量
*/
@GetMapping("/indexCount")
public R<IndexCountVo> indexCount() {
return R.ok(indexService.indexCount());
}
}

View File

@@ -8,6 +8,7 @@ import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController; import org.dromara.common.web.core.BaseController;
import org.dromara.property.domain.bo.InspectionTaskDetailBo; import org.dromara.property.domain.bo.InspectionTaskDetailBo;
import org.dromara.property.domain.bo.mobile.InspectionTaskDetailToOrderBo;
import org.dromara.property.domain.vo.mobile.MInspectionTaskDetailVo; import org.dromara.property.domain.vo.mobile.MInspectionTaskDetailVo;
import org.dromara.property.service.IInspectionTaskDetailService; import org.dromara.property.service.IInspectionTaskDetailService;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@@ -35,7 +36,7 @@ public class MInspectionTaskDetailController extends BaseController {
/** /**
* 修改巡检明细 * 扫码签到
*/ */
@PostMapping("/signIn") @PostMapping("/signIn")
public R<Void> signIn(@Validated(EditGroup.class) @RequestBody InspectionTaskDetailBo bo) { public R<Void> signIn(@Validated(EditGroup.class) @RequestBody InspectionTaskDetailBo bo) {
@@ -48,4 +49,11 @@ public class MInspectionTaskDetailController extends BaseController {
public R<Void> submit(@Validated(EditGroup.class) @RequestBody InspectionTaskDetailBo bo) { public R<Void> submit(@Validated(EditGroup.class) @RequestBody InspectionTaskDetailBo bo) {
return toAjax(inspectionTaskDetailService.submit(bo)); return toAjax(inspectionTaskDetailService.submit(bo));
} }
/**
* 巡检提报工单
*/
@PostMapping("/reportedOrder")
public R<Void> reportedOrder(@Validated(EditGroup.class) @RequestBody InspectionTaskDetailToOrderBo bo) {
return toAjax(inspectionTaskDetailService.reportedOrder(bo));
}
} }

View File

@@ -72,7 +72,7 @@ public class CustomerFeedbacks extends TenantEntity {
private String status; private String status;
/** /**
* 客服电话 * 反馈单位
*/ */
private String serviceName; private Long feedbackUnit;
} }

View File

@@ -1,5 +1,6 @@
package org.dromara.property.domain; package org.dromara.property.domain;
import cn.idev.excel.annotation.ExcelProperty;
import org.dromara.common.tenant.core.TenantEntity; import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import lombok.Data; import lombok.Data;
@@ -115,7 +116,10 @@ public class InspectionTaskDetail extends TenantEntity {
* 点结束时间 * 点结束时间
*/ */
private Date pointEndTime; private Date pointEndTime;
/**
* 工单id
*/
private Long orderId;
/** /**
* 搜索值 * 搜索值
*/ */

View File

@@ -1,5 +1,6 @@
package org.dromara.property.domain; package org.dromara.property.domain;
import cn.idev.excel.annotation.ExcelProperty;
import org.dromara.common.tenant.core.TenantEntity; import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import lombok.Data; import lombok.Data;
@@ -41,6 +42,9 @@ public class Meet extends TenantEntity {
* 5圆形会议室 * 5圆形会议室
* 6贵宾会议室) * 6贵宾会议室)
*/ */
private String secrecyGrade;
private String meetingRoomType; private String meetingRoomType;
/** /**

View File

@@ -76,11 +76,8 @@ public class CustomerFeedbacksBo extends BaseEntity {
* 客服电话 * 客服电话
*/ */
private String serviceName; private String serviceName;
/** /**
* 搜索值 * 反馈单位
*/ */
private String searchValue; private Long feedbackUnit;
} }

View File

@@ -45,6 +45,9 @@ public class MeetBo extends BaseEntity {
* 5圆形会议室 * 5圆形会议室
* 6贵宾会议室) * 6贵宾会议室)
*/ */
@ExcelProperty(value = "保密等级")
private String secrecyGrade;
@NotBlank(message = "会议室类型不能为空") @NotBlank(message = "会议室类型不能为空")
private String meetingRoomType; private String meetingRoomType;
/** /**

View File

@@ -79,4 +79,13 @@ public class TbRoomBo extends BaseEntity {
* 是否重要(1非常重要、2重要、3一般) * 是否重要(1非常重要、2重要、3一般)
*/ */
private String imgUrl; private String imgUrl;
/**
* 园区id
*/
private Long communityId;
/**
* 建筑id
*/
private Long buildingId;
} }

View File

@@ -0,0 +1,121 @@
package org.dromara.property.domain.bo.mobile;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import java.util.Date;
/**
* @author yuyongle
* @version 1.0
* @description: TODO
* @date 2025/9/5 11:40
*/
@Data
public class InspectionTaskDetailToOrderBo {
/**
* 主键id
*/
@NotNull(message = "主键id不能为空", groups = { EditGroup.class })
private Long id;
/**
* 工单类型id
*/
@NotNull(message = "工单类型id不能为空", groups = { EditGroup.class })
private Long orderTypeId;
/**
* 任务id
*/
@NotNull(message = "任务id不能为空", groups = { AddGroup.class, EditGroup.class })
private Long taskId;
/**
* 路线id
*/
private Long routeId;
/**
* 巡检计划id
*/
@NotNull(message = "巡检计划id不能为空", groups = { AddGroup.class, EditGroup.class })
private Long planId;
/**
* 巡检点id
*/
private Long pointId;
/**
* 签到类型(1.现场拍照、2.摄像头签到、3.现场扫码)
*/
private String signType;
/**
* 实际巡检时间
*/
private Date actualInspectionTime;
/**
* 实际签到状态(1已签到2.未签到)
*/
private String actualSignState;
/**
* 巡检状态(0未完成,1已完成)
*/
private String inspectionState;
/**
* 巡检图片
*/
private String inspectionImage;
/**
* 计划巡检人
*/
private String planInspectionPerson;
/**
* 实际巡检人
*/
private String actualInspectionPerson;
/**
* 巡检结果
*/
private String inspectionResults;
/**
* 巡检描述
*/
private String inspectionDesc;
/**
* 巡检位置
*/
private String inspectionLocation;
/**
* 实际巡检时间
*/
private Date inspectionTime;
/**
* 备注
*/
private String remark;
/**
* 点开始时间
*/
private Date pointStartTime;
/**
* 点结束时间
*/
private Date pointEndTime;
}

View File

@@ -94,10 +94,13 @@ public class CustomerFeedbacksVo implements Serializable {
private String status; private String status;
/** /**
* 客服电话 * 反馈单位
*/ */
@ExcelProperty(value = "客服电话") private Long feedbackUnit;
private String serviceName; /**
* 反馈单位文本
*/
private String feedbackUnitText;
/** /**
* 搜索值 * 搜索值

View File

@@ -0,0 +1,134 @@
package org.dromara.property.domain.vo;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.util.List;
@Data
@Accessors(chain = true)
@NoArgsConstructor // 无参构造用于反序列化
@AllArgsConstructor(access = AccessLevel.PRIVATE) // 私有全参构造,供 Builder 使用
public class IndexCountVo {
private Integer workOrdersTotal; // 总工单数
private Integer workOrdersToday; // 今日工单数
private List<PieChartVo> satisfactionChartList; // 工单类型分布饼图
private List<StatusChartVo> statusChartVoChartList; // 设备状态分布图表
private Integer visitorsToday; // 今日访客数
private Integer visitorsTotal; // 总访客数
@Data
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public static class PieChartVo {
private String type; // 类型名称(如:维修、咨询)
private Integer quantity; // 数量
public static PieChartVoBuilder builder() {
return new PieChartVoBuilder();
}
public static class PieChartVoBuilder {
private String type;
private Integer quantity;
public PieChartVoBuilder type(String type) {
this.type = type;
return this;
}
public PieChartVoBuilder quantity(Integer quantity) {
this.quantity = quantity;
return this;
}
public PieChartVo build() {
return new PieChartVo(type, quantity);
}
}
}
@Data
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public static class StatusChartVo {
private String type; // 类型名称(如:维修、咨询)
private Integer quantity; // 数量
public static StatusChartVoBuilder builder() {
return new StatusChartVoBuilder();
}
public static class StatusChartVoBuilder {
private String type;
private Integer quantity;
public StatusChartVoBuilder type(String type) {
this.type = type;
return this;
}
public StatusChartVoBuilder quantity(Integer quantity) {
this.quantity = quantity;
return this;
}
public StatusChartVo build() {
return new StatusChartVo(type, quantity);
}
}
}
public static IndexCountVoBuilder builder() {
return new IndexCountVoBuilder();
}
public static class IndexCountVoBuilder {
private Integer workOrdersTotal;
private Integer workOrdersToday;
private List<PieChartVo> satisfactionChartList;
private List<StatusChartVo> statusChartVoChartList;
private Integer visitorsToday;
private Integer visitorsTotal;
public IndexCountVoBuilder workOrdersTotal(Integer workOrdersTotal) {
this.workOrdersTotal = workOrdersTotal;
return this;
}
public IndexCountVoBuilder workOrdersToday(Integer workOrdersToday) {
this.workOrdersToday = workOrdersToday;
return this;
}
public IndexCountVoBuilder visitorsToday(Integer visitorsToday) {
this.visitorsToday = visitorsToday;
return this;
}
public IndexCountVoBuilder visitorsTotal(Integer visitorsTotal) {
this.visitorsTotal = visitorsTotal;
return this;
}
public IndexCountVoBuilder satisfactionChartList(List<PieChartVo> satisfactionChartList) {
this.satisfactionChartList = satisfactionChartList;
return this;
}
public IndexCountVoBuilder statusChartVoChartList(List<StatusChartVo> statusChartVoChartList) {
this.statusChartVoChartList = statusChartVoChartList;
return this;
}
public IndexCountVo build() {
return new IndexCountVo(workOrdersTotal, workOrdersToday, satisfactionChartList, statusChartVoChartList, visitorsToday, visitorsTotal);
}
}
}

View File

@@ -58,7 +58,10 @@ public class InspectionTaskDetailVo implements Serializable {
*/ */
@ExcelProperty(value = "路线text") @ExcelProperty(value = "路线text")
private String routeText; private String routeText;
/**
* 工单id
*/
private Long orderId;
/** /**
* 巡检计划id * 巡检计划id
*/ */

View File

@@ -48,6 +48,9 @@ public class MeetVo implements Serializable {
*/ */
@ExcelProperty(value = "会议室类型") @ExcelProperty(value = "会议室类型")
private String meetingRoomType; private String meetingRoomType;
@ExcelProperty(value = "保密等级")
private String secrecyGrade;
/** /**
* 会议室位置 * 会议室位置
*/ */

View File

@@ -5,11 +5,12 @@ import cn.idev.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper; import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
import org.dromara.property.domain.ServiceWorkOrders; import org.dromara.property.domain.ServiceWorkOrders;
import org.dromara.property.domain.vo.mobile.MServiceWorkOrdersRecordVo;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
@@ -156,4 +157,8 @@ public class ServiceWorkOrdersVo implements Serializable {
* 创建时间 * 创建时间
*/ */
private Date createTime; private Date createTime;
/**
* 工单记录
*/
List<MServiceWorkOrdersRecordVo> recordVoList;
} }

View File

@@ -56,6 +56,11 @@ public class TbRoomVo implements Serializable {
*/ */
@ExcelProperty(value = "所属楼层ID") @ExcelProperty(value = "所属楼层ID")
private Long floorId; private Long floorId;
/**
* 所属楼层text
*/
@ExcelProperty(value = "所属楼层Text")
private String floorText;
/** /**
* 房间号(如101,202) * 房间号(如101,202)
@@ -120,4 +125,17 @@ public class TbRoomVo implements Serializable {
* 图片 * 图片
*/ */
private String imgUrl; private String imgUrl;
/**
* 园区文本
*/
private String communityText;
/**
* 建筑文本
*/
private String buildingText;
/**
* 入驻单位文本
*/
private String residentUnitText;
} }

View File

@@ -84,6 +84,11 @@ public class MInspectionTaskDetailVo {
*/ */
@ExcelProperty(value = "巡检计划id") @ExcelProperty(value = "巡检计划id")
private Long planId; private Long planId;
/**
* 工单id
*/
@ExcelProperty(value = "工单id")
private Long orderId;
/** /**
* 签到类型(1.现场拍照、2.摄像头签到、3.现场扫码) * 签到类型(1.现场拍照、2.摄像头签到、3.现场扫码)
@@ -158,4 +163,8 @@ public class MInspectionTaskDetailVo {
*/ */
@ExcelProperty(value = "备注") @ExcelProperty(value = "备注")
private String remark; private String remark;
/**
* 工单
*/
private MServiceWorkOrdersVo mServiceWorkOrdersVo;
} }

View File

@@ -1,5 +1,6 @@
package org.dromara.property.service; package org.dromara.property.service;
import org.dromara.property.domain.bo.mobile.InspectionTaskDetailToOrderBo;
import org.dromara.property.domain.vo.InspectionTaskDetailVo; import org.dromara.property.domain.vo.InspectionTaskDetailVo;
import org.dromara.property.domain.bo.InspectionTaskDetailBo; import org.dromara.property.domain.bo.InspectionTaskDetailBo;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -87,4 +88,11 @@ public interface IInspectionTaskDetailService {
* 提交巡检明细 * 提交巡检明细
*/ */
Boolean submit(InspectionTaskDetailBo bo); Boolean submit(InspectionTaskDetailBo bo);
/**
* 巡检提报工单
* @param bo
* @return
*/
Boolean reportedOrder(InspectionTaskDetailToOrderBo bo);
} }

View File

@@ -0,0 +1,15 @@
package org.dromara.property.service;
import org.dromara.property.domain.vo.IndexCountVo;
/**
* 首页展示数据
* @author yuyongle
* @date 2025-06-21
*/
public interface IndexService {
/**
* 首页统计数量
*/
IndexCountVo indexCount();
}

View File

@@ -3,26 +3,26 @@ package org.dromara.property.service.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference; import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.dromara.common.mybatis.core.page.TableDataInfo;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.property.domain.*; import org.dromara.property.domain.CustomerFeedbacks;
import org.dromara.property.domain.ServiceWorkOrders;
import org.dromara.property.domain.ServiceWorkOrdersRecord;
import org.dromara.property.domain.ServiceWorkOrdersType;
import org.dromara.property.domain.bo.CustomerFeedbacksBo; import org.dromara.property.domain.bo.CustomerFeedbacksBo;
import org.dromara.property.domain.bo.ServiceWorkOrdersBo;
import org.dromara.property.domain.vo.CustomerFeedbacksVo; import org.dromara.property.domain.vo.CustomerFeedbacksVo;
import org.dromara.property.domain.vo.CustomerNoticesVo;
import org.dromara.property.mapper.CustomerFeedbacksMapper; import org.dromara.property.domain.vo.residentVo.ResidentUnitVo;
import org.dromara.property.mapper.ServiceWorkOrdersMapper; import org.dromara.property.mapper.*;
import org.dromara.property.mapper.ServiceWorkOrdersRecordMapper;
import org.dromara.property.mapper.ServiceWorkOrdersTypeMapper;
import org.dromara.property.service.ICustomerFeedbacksService; import org.dromara.property.service.ICustomerFeedbacksService;
import org.dromara.system.api.RemoteUserService; import org.dromara.system.api.RemoteUserService;
import org.dromara.system.api.domain.vo.RemoteUserVo; import org.dromara.system.api.domain.vo.RemoteUserVo;
@@ -30,10 +30,9 @@ import org.dromara.system.api.model.LoginUser;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Collection;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@@ -51,6 +50,7 @@ public class CustomerFeedbacksServiceImpl implements ICustomerFeedbacksService {
private final ServiceWorkOrdersMapper serviceWorkOrdersMapper; private final ServiceWorkOrdersMapper serviceWorkOrdersMapper;
private final ServiceWorkOrdersTypeMapper serviceWorkOrdersTypeMapper; private final ServiceWorkOrdersTypeMapper serviceWorkOrdersTypeMapper;
private final ServiceWorkOrdersRecordMapper serviceWorkOrdersRecordMapper; private final ServiceWorkOrdersRecordMapper serviceWorkOrdersRecordMapper;
private final ResidentUnitMapper residentUnitMapper;
@DubboReference @DubboReference
private RemoteUserService remoteUserService; private RemoteUserService remoteUserService;
@@ -96,8 +96,12 @@ public class CustomerFeedbacksServiceImpl implements ICustomerFeedbacksService {
.distinct() .distinct()
.collect(Collectors.toList()); .collect(Collectors.toList());
List<RemoteUserVo> remoteUserVos = remoteUserService.selectListByIds(uerIds); List<RemoteUserVo> remoteUserVos = remoteUserService.selectListByIds(uerIds);
//收集反馈单位id
List<Long> feedbackUnitIds = result.getRecords().stream().map(CustomerFeedbacksVo::getFeedbackUnit).distinct().toList();
//收集反馈单位weimap
Map<Long, String> unitNameMap = residentUnitMapper.selectVoByIds(feedbackUnitIds).stream().collect(Collectors.toMap(ResidentUnitVo::getId, ResidentUnitVo::getName));
result.getRecords().stream().forEach(s -> { result.getRecords().stream().forEach(s -> {
assembly(s, serviceWorkOrdersTypes, remoteUserVos); assembly(s, serviceWorkOrdersTypes, remoteUserVos,unitNameMap);
}); });
} }
return TableDataInfo.build(result); return TableDataInfo.build(result);
@@ -108,7 +112,7 @@ public class CustomerFeedbacksServiceImpl implements ICustomerFeedbacksService {
* @param customerFeedbacksVo 意见反馈返回信息 * @param customerFeedbacksVo 意见反馈返回信息
* *
*/ */
private void assembly(CustomerFeedbacksVo customerFeedbacksVo, List<ServiceWorkOrdersType> serviceWorkOrdersTypes, List<RemoteUserVo> remoteUserVos) { private void assembly(CustomerFeedbacksVo customerFeedbacksVo, List<ServiceWorkOrdersType> serviceWorkOrdersTypes, List<RemoteUserVo> remoteUserVos,Map<Long, String> unitNameMap) {
if (CollUtil.isNotEmpty(remoteUserVos)) { if (CollUtil.isNotEmpty(remoteUserVos)) {
RemoteUserVo remoteUserVo = remoteUserVos.stream() RemoteUserVo remoteUserVo = remoteUserVos.stream()
.filter(vo -> vo.getUserId() != null && vo.getUserId().equals(customerFeedbacksVo.getFeedbackPersion())).findFirst().orElse(null); .filter(vo -> vo.getUserId() != null && vo.getUserId().equals(customerFeedbacksVo.getFeedbackPersion())).findFirst().orElse(null);
@@ -118,6 +122,7 @@ public class CustomerFeedbacksServiceImpl implements ICustomerFeedbacksService {
ServiceWorkOrdersType serviceWorkOrdersType = serviceWorkOrdersTypes.stream().filter(vo -> vo.getId() != null && vo.getId().equals(customerFeedbacksVo.getFeedbackType())).findFirst().orElse(null); ServiceWorkOrdersType serviceWorkOrdersType = serviceWorkOrdersTypes.stream().filter(vo -> vo.getId() != null && vo.getId().equals(customerFeedbacksVo.getFeedbackType())).findFirst().orElse(null);
customerFeedbacksVo.setFeedbackTypeName(ObjectUtil.isNotEmpty(serviceWorkOrdersType) ? serviceWorkOrdersType.getOrderTypeName() : null); customerFeedbacksVo.setFeedbackTypeName(ObjectUtil.isNotEmpty(serviceWorkOrdersType) ? serviceWorkOrdersType.getOrderTypeName() : null);
} }
customerFeedbacksVo.setFeedbackUnitText(unitNameMap.get(customerFeedbacksVo.getFeedbackUnit()));
} }
/** /**
@@ -145,7 +150,6 @@ public class CustomerFeedbacksServiceImpl implements ICustomerFeedbacksService {
lqw.eq(StringUtils.isNotBlank(bo.getFeedbackImg()), CustomerFeedbacks::getFeedbackImg, bo.getFeedbackImg()); lqw.eq(StringUtils.isNotBlank(bo.getFeedbackImg()), CustomerFeedbacks::getFeedbackImg, bo.getFeedbackImg());
lqw.eq(StringUtils.isNotBlank(bo.getIsWorkOrder()), CustomerFeedbacks::getIsWorkOrder, bo.getIsWorkOrder()); lqw.eq(StringUtils.isNotBlank(bo.getIsWorkOrder()), CustomerFeedbacks::getIsWorkOrder, bo.getIsWorkOrder());
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), CustomerFeedbacks::getStatus, bo.getStatus()); lqw.eq(StringUtils.isNotBlank(bo.getStatus()), CustomerFeedbacks::getStatus, bo.getStatus());
lqw.like(StringUtils.isNotBlank(bo.getServiceName()), CustomerFeedbacks::getServiceName, bo.getServiceName());
lqw.eq(StringUtils.isNotBlank(bo.getSearchValue()), CustomerFeedbacks::getSearchValue, bo.getSearchValue()); lqw.eq(StringUtils.isNotBlank(bo.getSearchValue()), CustomerFeedbacks::getSearchValue, bo.getSearchValue());
return lqw; return lqw;
} }

View File

@@ -0,0 +1,128 @@
package org.dromara.property.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.property.domain.Machine;
import org.dromara.property.domain.MachineType;
import org.dromara.property.domain.ServiceWorkOrders;
import org.dromara.property.domain.ServiceWorkOrdersType;
import org.dromara.property.domain.entity.resident.ResidentPerson;
import org.dromara.property.domain.vo.IndexCountVo;
import org.dromara.property.domain.vo.ServiceWorkOrderAnalysisVo;
import org.dromara.property.mapper.*;
import org.dromara.property.service.IndexService;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author yuyongle
* @version 1.0
* @description: 首页展示数据
* @date 2025/9/5 15:01
*/
@Slf4j
@RequiredArgsConstructor
@Service
public class IndexServiceImpl implements IndexService {
private final ServiceWorkOrdersMapper serviceWorkOrdersMapper;
private final ServiceWorkOrdersTypeMapper typesMapper;
private final ResidentPersonMapper residentPersonMapper;
private final MachineTypeMapper machineTypeMapper;
private final MachineMapper machineMapper;
/**
* 首页统计数量
*/
@Override
public IndexCountVo indexCount() {
IndexCountVo indexCountVo = new IndexCountVo();
List<ServiceWorkOrders> serviceWorkOrderList = serviceWorkOrdersMapper.selectList();
indexCountVo.setWorkOrdersTotal(serviceWorkOrderList.size());
if (CollUtil.isNotEmpty(serviceWorkOrderList)) {
//筛选今日创建的工单
List<ServiceWorkOrders> serviceWorkOrdersToday = serviceWorkOrderList.stream()
.filter(s -> DateUtil.isSameDay(s.getCreateTime(), new Date()))
.toList();
indexCountVo.setWorkOrdersToday(serviceWorkOrdersToday.size());
List<IndexCountVo.PieChartVo> pieChartVos = calculateWorkOrderTypeDistribution(serviceWorkOrderList);
indexCountVo.setSatisfactionChartList(pieChartVos);
}else {
indexCountVo.setWorkOrdersToday(0);
indexCountVo.setSatisfactionChartList(new ArrayList<>());
}
//查询访客数量
List<ResidentPerson> residentPersionList = residentPersonMapper.selectList();
indexCountVo.setVisitorsTotal(residentPersionList.size());
if (CollUtil.isNotEmpty(residentPersionList)) {
//筛选今日创建的工单
List<ResidentPerson> todayResidentPersonlist = residentPersionList.stream()
.filter(s -> DateUtil.isSameDay(s.getCreateTime(), new Date()))
.toList();
indexCountVo.setVisitorsToday(todayResidentPersonlist.size());
}else {
indexCountVo.setVisitorsToday(0);
}
//查询设备各状态数量
List<IndexCountVo.StatusChartVo> statusChartVos = new ArrayList<>();
return indexCountVo;
}
// 计算工单类型分布
private List<IndexCountVo.PieChartVo> calculateWorkOrderTypeDistribution(List<ServiceWorkOrders> serviceWorkOrdersList) {
// 按 typeId 分组统计数量
Map<Long, Long> workOrderTypeCounts = serviceWorkOrdersList.stream()
.collect(Collectors.groupingBy(ServiceWorkOrders::getType, Collectors.counting()));
List<IndexCountVo.PieChartVo> result = new ArrayList<>();
for (Map.Entry<Long, Long> entry : workOrderTypeCounts.entrySet()) {
Long typeId = entry.getKey();
Integer count = entry.getValue().intValue();
// 查询类型名称
ServiceWorkOrdersType serviceWorkOrdersType = typesMapper.selectById(typeId);
String type = serviceWorkOrdersType != null ? serviceWorkOrdersType.getOrderTypeName() : "未知类型";
// 添加到结果中
result.add( IndexCountVo.PieChartVo.builder()
.type(type)
.quantity(count)
.build());
}
return result;
}
// 计算设备类型分布
private List<IndexCountVo.StatusChartVo> calculateMachineTypeDistribution(List<Machine> machinesList) {
// 按 typeId 分组统计数量
Map<Long, Long> machineTypeCounts = machinesList.stream()
.collect(Collectors.groupingBy(Machine::getMachineTypeId, Collectors.counting()));
List<IndexCountVo.StatusChartVo> result = new ArrayList<>();
for (Map.Entry<Long, Long> entry : machineTypeCounts.entrySet()) {
Long typeId = entry.getKey();
Integer count = entry.getValue().intValue();
// 查询类型名称
MachineType machineType = machineTypeMapper.selectById(typeId);
String type = machineType != null ? machineType.getMachineTypeName() : "未知类型";
// 添加到结果中
result.add(IndexCountVo.StatusChartVo.builder()
.type(type)
.quantity(count)
.build());
}
return result;
}
}

View File

@@ -2,8 +2,11 @@ package org.dromara.property.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import org.apache.commons.beanutils.BeanMap;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -13,18 +16,27 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.dromara.common.redis.utils.RedisUtils;
import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.property.domain.InspectionPlan; import org.dromara.property.domain.*;
import org.dromara.property.domain.bo.ServiceWorkOrdersTypeBo;
import org.dromara.property.domain.bo.mobile.InspectionTaskDetailToOrderBo;
import org.dromara.property.domain.enums.OrderReportingTypeEnum;
import org.dromara.property.domain.enums.OrderTypeOperationEnum;
import org.dromara.property.domain.enums.WorkOrderStatusEnum;
import org.dromara.property.domain.vo.*; import org.dromara.property.domain.vo.*;
import org.dromara.property.domain.vo.mobile.MInspectionTaskDetailVo; import org.dromara.property.domain.vo.mobile.MInspectionTaskDetailVo;
import org.dromara.property.domain.vo.mobile.MServiceWorkOrdersRecordVo;
import org.dromara.property.domain.vo.mobile.MServiceWorkOrdersVo;
import org.dromara.property.mapper.*; import org.dromara.property.mapper.*;
import org.dromara.property.mapper.attendanceMapper.AttendanceUserGroupMapper;
import org.dromara.system.api.model.LoginUser; import org.dromara.system.api.model.LoginUser;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.dromara.property.domain.bo.InspectionTaskDetailBo; import org.dromara.property.domain.bo.InspectionTaskDetailBo;
import org.dromara.property.domain.InspectionTaskDetail;
import org.dromara.property.service.IInspectionTaskDetailService; import org.dromara.property.service.IInspectionTaskDetailService;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -44,6 +56,10 @@ public class InspectionTaskDetailServiceImpl implements IInspectionTaskDetailSer
private final InspectionPlanMapper inspectionPlanMapper; private final InspectionPlanMapper inspectionPlanMapper;
private final InspectionRouteMapper inspectionRouteMapper; private final InspectionRouteMapper inspectionRouteMapper;
private final InspectionTaskMapper inspectionTaskMapper; private final InspectionTaskMapper inspectionTaskMapper;
private final ServiceWorkOrdersTypeMapper typesMapper;
private final ServiceWorkOrdersMapper serviceWorkOrdersMapper;
private final ServiceWorkOrdersRecordMapper workOrdersRecordMapper;
private final AttendanceUserGroupMapper attendanceUserGroupMapper;
/** /**
* 查询巡检明细 * 查询巡检明细
@@ -68,25 +84,25 @@ public class InspectionTaskDetailServiceImpl implements IInspectionTaskDetailSer
LambdaQueryWrapper<InspectionTaskDetail> lqw = buildQueryWrapper(bo); LambdaQueryWrapper<InspectionTaskDetail> lqw = buildQueryWrapper(bo);
Page<InspectionTaskDetailVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); Page<InspectionTaskDetailVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
if (CollUtil.isNotEmpty(result.getRecords())) { if (CollUtil.isNotEmpty(result.getRecords())) {
//收集任务id为list // //收集任务id为list
List<Long> taskIds = result.getRecords().stream().map(InspectionTaskDetailVo::getTaskId).toList(); // List<Long> taskIds = result.getRecords().stream().map(InspectionTaskDetailVo::getTaskId).toList();
//收集任务为map id和名称 // //收集任务为map id和名称
Map<Long, String> taskNameMap = inspectionTaskMapper.selectVoByIds(taskIds).stream() // Map<Long, String> taskNameMap = inspectionTaskMapper.selectVoByIds(taskIds).stream()
.collect(Collectors.toMap(InspectionTaskVo::getId, InspectionTaskVo::getPlanName)); // .collect(Collectors.toMap(InspectionTaskVo::getId, InspectionTaskVo::getPlanName));
//收集路线id为list // //收集路线id为list
List<Long> routeIds = result.getRecords().stream().map(InspectionTaskDetailVo::getRouteId).toList(); // List<Long> routeIds = result.getRecords().stream().map(InspectionTaskDetailVo::getRouteId).toList();
//收集任务为map id和名称 // //收集任务为map id和名称
Map<Long, String> routeNameMap = inspectionRouteMapper.selectVoByIds(routeIds).stream() // Map<Long, String> routeNameMap = inspectionRouteMapper.selectVoByIds(routeIds).stream()
.collect(Collectors.toMap(InspectionRouteVo::getId, InspectionRouteVo::getRouteName)); // .collect(Collectors.toMap(InspectionRouteVo::getId, InspectionRouteVo::getRouteName));
//收集路线列表 // //收集路线列表
List<InspectionRouteVo> inspectionRoutes = inspectionRouteMapper.selectVoByIds(routeIds); // List<InspectionRouteVo> inspectionRoutes = inspectionRouteMapper.selectVoByIds(routeIds);
//收集计划id为list // //收集计划id为list
List<Long> planIds = result.getRecords().stream().map(InspectionTaskDetailVo::getPlanId).toList(); // List<Long> planIds = result.getRecords().stream().map(InspectionTaskDetailVo::getPlanId).toList();
//收集计划列表 // //收集计划列表
Map<Long, String> planNameMap = inspectionPlanMapper.selectVoByIds(routeIds).stream() // Map<Long, String> planNameMap = inspectionPlanMapper.selectVoByIds(routeIds).stream()
.collect(Collectors.toMap(InspectionPlanVo::getId, InspectionPlanVo::getPlanName)); // .collect(Collectors.toMap(InspectionPlanVo::getId, InspectionPlanVo::getPlanName));
//巡检点id为list // //巡检点id为list
List<Long> pointIds = result.getRecords().stream().map(InspectionTaskDetailVo::getPointId).toList(); // List<Long> pointIds = result.getRecords().stream().map(InspectionTaskDetailVo::getPointId).toList();
result.getRecords().stream().forEach(vo -> { result.getRecords().stream().forEach(vo -> {
disposeData(vo); disposeData(vo);
}); });
@@ -233,6 +249,19 @@ public class InspectionTaskDetailServiceImpl implements IInspectionTaskDetailSer
*/ */
private void dataProcessing(MInspectionTaskDetailVo mInspectionTaskDetailVo, Map<Long, String> pointNameMap) { private void dataProcessing(MInspectionTaskDetailVo mInspectionTaskDetailVo, Map<Long, String> pointNameMap) {
mInspectionTaskDetailVo.setPointName(ObjectUtil.defaultIfNull(pointNameMap.get(mInspectionTaskDetailVo.getPointId()), "未知点位")); mInspectionTaskDetailVo.setPointName(ObjectUtil.defaultIfNull(pointNameMap.get(mInspectionTaskDetailVo.getPointId()), "未知点位"));
//查询工单
if(ObjectUtil.isNotEmpty(mInspectionTaskDetailVo.getOrderId())){
ServiceWorkOrdersVo serviceWorkOrdersVo = serviceWorkOrdersMapper.selectVoById(mInspectionTaskDetailVo.getOrderId());
if(ObjectUtil.isNotEmpty(serviceWorkOrdersVo)){
List<ServiceWorkOrdersRecordVo> serviceWorkOrdersRecordVos = workOrdersRecordMapper.selectVoList(
new LambdaQueryWrapper<>(ServiceWorkOrdersRecord.class).eq(ServiceWorkOrdersRecord::getOrderId, serviceWorkOrdersVo.getId())
);
List<MServiceWorkOrdersRecordVo> mServiceWorkOrdersRecordVos = BeanUtil.copyToList(serviceWorkOrdersRecordVos, MServiceWorkOrdersRecordVo.class);
serviceWorkOrdersVo.setRecordVoList(mServiceWorkOrdersRecordVos);
mInspectionTaskDetailVo.setMServiceWorkOrdersVo(ObjectUtil.isNotEmpty( serviceWorkOrdersVo)? BeanUtil.copyProperties(serviceWorkOrdersVo, MServiceWorkOrdersVo.class):null);
}
}
} }
/** /**
@@ -284,4 +313,94 @@ public class InspectionTaskDetailServiceImpl implements IInspectionTaskDetailSer
InspectionTaskDetail update = MapstructUtils.convert(bo, InspectionTaskDetail.class); InspectionTaskDetail update = MapstructUtils.convert(bo, InspectionTaskDetail.class);
return baseMapper.updateById(update) > 0; return baseMapper.updateById(update) > 0;
} }
/**
* 巡检提报工单
* @param bo
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean reportedOrder(InspectionTaskDetailToOrderBo bo) {
//查询工单类型
ServiceWorkOrdersType serviceWorkOrdersType = typesMapper.selectById(bo.getOrderTypeId());
ServiceWorkOrders serviceWorkOrders = new ServiceWorkOrders();
serviceWorkOrders.setReportingType(OrderReportingTypeEnum.PHONE_REPORT.getValue());
LoginUser user = LoginHelper.getLoginUser();
serviceWorkOrders.setOrderNo("GD" + IdUtil.getSnowflakeNextIdStr());
serviceWorkOrders.setOrderName("巡检"+bo.getPointId());
serviceWorkOrders.setStatus(WorkOrderStatusEnum.CREATE_ORDER.getValue());
serviceWorkOrders.setInitiatorPeople(user.getNickname());
serviceWorkOrders.setProcessingWeight(serviceWorkOrdersType.getProcessingWeight());
serviceWorkOrders.setType(serviceWorkOrdersType.getId());
serviceWorkOrders.setLocation(bo.getInspectionLocation());
boolean flag = serviceWorkOrdersMapper.insert(serviceWorkOrders) > 0;
if (flag) {
bo.setId(serviceWorkOrders.getId());
ServiceWorkOrdersRecord serviceWorkOrdersRecord = new ServiceWorkOrdersRecord();
serviceWorkOrdersRecord.setOrderId(serviceWorkOrders.getId());
serviceWorkOrdersRecord.setStatus(serviceWorkOrders.getStatus());
//serviceWorkOrdersRecord.setHandler(add.getHandler());
boolean flags = workOrdersRecordMapper.insert(serviceWorkOrdersRecord) > 0;
if (flags) {
if (serviceWorkOrdersType.getOperationMode().equals(OrderTypeOperationEnum.AUTOMATE_DISPATCH.getValue())) {
handleServiceWorkOrder(serviceWorkOrders,serviceWorkOrdersType,bo);
}
}
}
return flag;
}
//自动派单
private void handleServiceWorkOrder(ServiceWorkOrders serviceWorkOrders,ServiceWorkOrdersType serviceWorkOrdersType,InspectionTaskDetailToOrderBo bo) {
LocalDate today = LocalDate.now();
// 1. 获取今日排班人员(优先查缓存,未命中则查询数据库并缓存)
List<AttendanceUserGroup> attendanceUserGroups = RedisUtils.getCacheList(DateUtil.today());
List<AttendanceUserGroup> attendanceUserGroupList = attendanceUserGroupMapper.selectList(
new LambdaQueryWrapper<AttendanceUserGroup>()
.le(AttendanceUserGroup::getStartDate, today)
.ge(AttendanceUserGroup::getEndDate, today)
.eq(AttendanceUserGroup::getDeptId, serviceWorkOrdersType.getDeptId())
.orderByAsc(AttendanceUserGroup::getStartDate)
);
if (CollUtil.isEmpty(attendanceUserGroups)|| attendanceUserGroups.size() != attendanceUserGroupList.size()) {
attendanceUserGroups=attendanceUserGroupList;
Assert.isTrue(CollUtil.isNotEmpty(attendanceUserGroups), "暂无排班人员");
// 缓存当天排班数据(假设当天不会变)
RedisUtils.setCacheList(DateUtil.today(), attendanceUserGroups);
}
// 2. 获取并更新轮询索引(原子性很重要)
int currentIndex;
Integer lastScheduleId = RedisUtils.getCacheObject(DateUtil.today() + "LastScheduleId");
if (lastScheduleId == null || lastScheduleId < 0 || lastScheduleId >= attendanceUserGroups.size()) {
currentIndex = 0; // 越界或未设置重置为0
} else {
currentIndex = lastScheduleId + 1;
if (currentIndex >= attendanceUserGroups.size()) {
currentIndex = 0; // 循环轮询
}
}
RedisUtils.setCacheObject(DateUtil.today() + "LastScheduleId", currentIndex);
// 3. 分配处理人
AttendanceUserGroup assignedGroup = attendanceUserGroups.get(currentIndex);
Long employeeId = assignedGroup.getEmployeeId();
serviceWorkOrders.setHandler(employeeId);
serviceWorkOrders.setStatus(WorkOrderStatusEnum.DISPATCHED.getValue());
// 4. 插入记录
ServiceWorkOrdersRecord record = new ServiceWorkOrdersRecord();
record.setOrderId(serviceWorkOrders.getId());
record.setHandler(employeeId);
record.setStatus(WorkOrderStatusEnum.DISPATCHED.getValue());
workOrdersRecordMapper.insert(record);
// 5. 更新工单
serviceWorkOrders.setDispatchTime(new Date());
serviceWorkOrdersMapper.updateById(serviceWorkOrders);
//修改巡检明细接口
InspectionTaskDetail inspectionTaskDetail = baseMapper.selectById(bo.getId());
inspectionTaskDetail.setOrderId(serviceWorkOrders.getId());
baseMapper.updateById(inspectionTaskDetail);
log.info("成功派单,工单号:{}", serviceWorkOrders.getOrderNo());
}
} }

View File

@@ -1,6 +1,8 @@
package org.dromara.property.service.impl; package org.dromara.property.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -11,10 +13,15 @@ import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.property.domain.TbRoom; import org.dromara.property.domain.TbRoom;
import org.dromara.property.domain.TbRoomBooking;
import org.dromara.property.domain.bo.TbRoomBo; import org.dromara.property.domain.bo.TbRoomBo;
import org.dromara.property.domain.entity.resident.ResidentUnit;
import org.dromara.property.domain.vo.TbBuildingVo;
import org.dromara.property.domain.vo.TbCommunityVo;
import org.dromara.property.domain.vo.TbFloorVo; import org.dromara.property.domain.vo.TbFloorVo;
import org.dromara.property.domain.vo.TbRoomVo; import org.dromara.property.domain.vo.TbRoomVo;
import org.dromara.property.mapper.ResidentUnitMapper;
import org.dromara.property.mapper.TbBuildingMapper;
import org.dromara.property.mapper.TbCommunityMapper;
import org.dromara.property.mapper.TbRoomMapper; import org.dromara.property.mapper.TbRoomMapper;
import org.dromara.property.service.ITbFloorService; import org.dromara.property.service.ITbFloorService;
import org.dromara.property.service.ITbRoomService; import org.dromara.property.service.ITbRoomService;
@@ -37,6 +44,9 @@ public class TbRoomServiceImpl implements ITbRoomService {
private final TbRoomMapper baseMapper; private final TbRoomMapper baseMapper;
private final ITbFloorService tbFloorService; private final ITbFloorService tbFloorService;
private final TbBuildingMapper tbBuildingMapper;
private final TbCommunityMapper tbCommunityMapper;
private final ResidentUnitMapper residentUnitMapper;
/** /**
* 查询房间信息 * 查询房间信息
@@ -46,7 +56,24 @@ public class TbRoomServiceImpl implements ITbRoomService {
*/ */
@Override @Override
public TbRoomVo queryById(Long id) { public TbRoomVo queryById(Long id) {
return baseMapper.selectVoById(id); TbRoomVo tbRoomVo = baseMapper.selectVoById(id);
//查询园区id
TbCommunityVo tbCommunityVo = tbCommunityMapper.selectVoById(tbRoomVo.getCommunityId());
tbRoomVo.setCommunityText(ObjectUtil.isNotEmpty(tbCommunityVo) ? tbCommunityVo.getCommunityName() : null);
//查询楼栋id
TbBuildingVo tbBuildingVo = tbBuildingMapper.selectVoById(tbRoomVo.getBuildingId());
tbRoomVo.setBuildingText(ObjectUtil.isNotEmpty(tbBuildingVo) ? tbBuildingVo.getBuildingName() : null);
//查询楼栋信息
TbFloorVo tbFloorVo = tbFloorService.queryById(tbRoomVo.getFloorId());
tbRoomVo.setFloorText(ObjectUtil.isNotEmpty(tbFloorVo) ? tbFloorVo.getFloorName() : null);
List<ResidentUnit> residentUnits = residentUnitMapper.selectList(
new LambdaQueryWrapper<ResidentUnit>()
.eq(ResidentUnit::getLocation, tbRoomVo.getId())
);
if (CollUtil.isNotEmpty(residentUnits)) {
tbRoomVo.setResidentUnitText(residentUnits.get(0).getName());
}
return tbRoomVo;
} }
/** /**
@@ -83,6 +110,8 @@ public class TbRoomServiceImpl implements ITbRoomService {
lqw.eq(StringUtils.isNotBlank(bo.getRoomNumber()), TbRoom::getRoomNumber, bo.getRoomNumber()); lqw.eq(StringUtils.isNotBlank(bo.getRoomNumber()), TbRoom::getRoomNumber, bo.getRoomNumber());
lqw.eq(bo.getRoomType() != null, TbRoom::getRoomType, bo.getRoomType()); lqw.eq(bo.getRoomType() != null, TbRoom::getRoomType, bo.getRoomType());
lqw.eq(bo.getFloorId() != null, TbRoom::getFloorId, bo.getFloorId()); lqw.eq(bo.getFloorId() != null, TbRoom::getFloorId, bo.getFloorId());
lqw.eq(bo.getCommunityId() != null, TbRoom::getCommunityId, bo.getCommunityId());
lqw.eq(bo.getBuildingId() != null, TbRoom::getBuildingId, bo.getBuildingId());
lqw.eq(bo.getArea() != null, TbRoom::getArea, bo.getArea()); lqw.eq(bo.getArea() != null, TbRoom::getArea, bo.getArea());
lqw.eq(StringUtils.isNotBlank(bo.getLayout()), TbRoom::getLayout, bo.getLayout()); lqw.eq(StringUtils.isNotBlank(bo.getLayout()), TbRoom::getLayout, bo.getLayout());
lqw.eq(bo.getOrientation() != null, TbRoom::getOrientation, bo.getOrientation()); lqw.eq(bo.getOrientation() != null, TbRoom::getOrientation, bo.getOrientation());
@@ -154,14 +183,18 @@ public class TbRoomServiceImpl implements ITbRoomService {
/** /**
* 获取房间名称 * 获取房间名称
*
* @param roomId 房间id * @param roomId 房间id
* @return 房间名称 * @return 房间名称
*/ */
@Override @Override
public String queryRoomName(Long roomId) { public String queryRoomName(Long roomId) {
return baseMapper.queryRoomName(roomId); return baseMapper.queryRoomName(roomId);
} /** }
/**
* 获取房间名称 * 获取房间名称
*
* @param * @param
* @return 房间名称 * @return 房间名称
*/ */