Merge branch 'master' of http://47.109.37.87:3000/by2025/SmartParks
All checks were successful
Build and Push to Target Registry / 构建并推送镜像到目标仓库 (push) Successful in 6m41s

This commit is contained in:
15683799673
2025-08-20 13:06:13 +08:00
105 changed files with 2681 additions and 195 deletions

View File

@@ -25,6 +25,12 @@ public interface RemoteDeviceService {
*/
Boolean updateDeviceState(RemoteSisDeviceManage item);
/**
* 根据id查询的设备信息
*
*/
RemoteSisDeviceManage queryDeviceById(Long id);
/**
* 查询设备通道信息
*

View File

@@ -2,11 +2,17 @@ package org.dromara.sis.api.domain;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 设备远程调用对象
*/
@Data
public class RemoteSisDeviceManage {
public class RemoteSisDeviceManage implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键id
@@ -63,8 +69,26 @@ public class RemoteSisDeviceManage {
*/
private Long groupId;
/**
* 租户编号
*/
private String tenantId;
/**
* 楼层id
*/
private Long floorId;
/**
* 是否支持人脸比对
*/
private Boolean isComparison;
/**
* 设备经度
*/
private Double lon;
/**
* 设备维度
*/
private Double lat;
}

View File

@@ -0,0 +1,107 @@
package org.dromara.property.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController;
import org.dromara.property.domain.bo.AppFunListBo;
import org.dromara.property.domain.vo.AppFunListVo;
import org.dromara.property.service.IAppFunListService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* APP功能列表
* 前端访问路由地址为:/system/funList
*
* @author mocheng
* @date 2025-07-23
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/funList")
public class AppFunListController extends BaseController {
private final IAppFunListService appFunListService;
/**
* 查询APP功能列表列表
*/
@SaCheckPermission("system:funList:list")
@GetMapping("/list")
public TableDataInfo<AppFunListVo> list(AppFunListBo bo, PageQuery pageQuery) {
return appFunListService.queryPageList(bo, pageQuery);
}
/**
* 导出APP功能列表列表
*/
@SaCheckPermission("system:funList:export")
@Log(title = "APP功能列表", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(AppFunListBo bo, HttpServletResponse response) {
List<AppFunListVo> list = appFunListService.queryList(bo);
ExcelUtil.exportExcel(list, "APP功能列表", AppFunListVo.class, response);
}
/**
* 获取APP功能列表详细信息
*
* @param id 主键
*/
@SaCheckPermission("system:funList:query")
@GetMapping("/{id}")
public R<AppFunListVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable("id") Long id) {
return R.ok(appFunListService.queryById(id));
}
/**
* 新增APP功能列表
*/
@SaCheckPermission("system:funList:add")
@Log(title = "APP功能列表", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody AppFunListBo bo) {
return toAjax(appFunListService.insertByBo(bo));
}
/**
* 修改APP功能列表
*/
@SaCheckPermission("system:funList:edit")
@Log(title = "APP功能列表", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody AppFunListBo bo) {
return toAjax(appFunListService.updateByBo(bo));
}
/**
* 删除APP功能列表
*
* @param ids 主键串
*/
@SaCheckPermission("system:funList:remove")
@Log(title = "APP功能列表", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable("ids") Long[] ids) {
return toAjax(appFunListService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@@ -0,0 +1,106 @@
package org.dromara.property.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.property.domain.vo.AttendanceArrangementAreaVo;
import org.dromara.property.domain.bo.AttendanceArrangementAreaBo;
import org.dromara.property.service.IAttendanceArrangementAreaService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 区域排班中间
* 前端访问路由地址为:/property/arrangementArea
*
* @author LionLi
* @date 2025-08-18
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/arrangementArea")
public class AttendanceArrangementAreaController extends BaseController {
private final IAttendanceArrangementAreaService attendanceArrangementAreaService;
/**
* 查询区域排班中间列表
*/
@SaCheckPermission("property:arrangementArea:list")
@GetMapping("/list")
public TableDataInfo<AttendanceArrangementAreaVo> list(AttendanceArrangementAreaBo bo, PageQuery pageQuery) {
return attendanceArrangementAreaService.queryPageList(bo, pageQuery);
}
/**
* 导出区域排班中间列表
*/
@SaCheckPermission("property:arrangementArea:export")
@Log(title = "区域排班中间", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(AttendanceArrangementAreaBo bo, HttpServletResponse response) {
List<AttendanceArrangementAreaVo> list = attendanceArrangementAreaService.queryList(bo);
ExcelUtil.exportExcel(list, "区域排班中间", AttendanceArrangementAreaVo.class, response);
}
/**
* 获取区域排班中间详细信息
*
* @param id 主键
*/
@SaCheckPermission("property:arrangementArea:query")
@GetMapping("/{id}")
public R<AttendanceArrangementAreaVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable("id") Long id) {
return R.ok(attendanceArrangementAreaService.queryById(id));
}
/**
* 新增区域排班中间
*/
@SaCheckPermission("property:arrangementArea:add")
@Log(title = "区域排班中间", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody AttendanceArrangementAreaBo bo) {
return toAjax(attendanceArrangementAreaService.insertByBo(bo));
}
/**
* 修改区域排班中间
*/
@SaCheckPermission("property:arrangementArea:edit")
@Log(title = "区域排班中间", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody AttendanceArrangementAreaBo bo) {
return toAjax(attendanceArrangementAreaService.updateByBo(bo));
}
/**
* 删除区域排班中间
*
* @param ids 主键串
*/
@SaCheckPermission("property:arrangementArea:remove")
@Log(title = "区域排班中间", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable("ids") Long[] ids) {
return toAjax(attendanceArrangementAreaService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@@ -0,0 +1,106 @@
package org.dromara.property.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.property.domain.vo.PopularActivitiesVo;
import org.dromara.property.domain.bo.PopularActivitiesBo;
import org.dromara.property.service.IPopularActivitiesService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 热门活动
* 前端访问路由地址为:/property/activities
*
* @author LionLi
* @date 2025-08-19
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/activities")
public class PopularActivitiesController extends BaseController {
private final IPopularActivitiesService popularActivitiesService;
/**
* 查询热门活动列表
*/
// @SaCheckPermission("property:activities:list")
@GetMapping("/list")
public TableDataInfo<PopularActivitiesVo> list(PopularActivitiesBo bo, PageQuery pageQuery) {
return popularActivitiesService.queryPageList(bo, pageQuery);
}
/**
* 导出热门活动列表
*/
@SaCheckPermission("property:activities:export")
@Log(title = "热门活动", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(PopularActivitiesBo bo, HttpServletResponse response) {
List<PopularActivitiesVo> list = popularActivitiesService.queryList(bo);
ExcelUtil.exportExcel(list, "热门活动", PopularActivitiesVo.class, response);
}
/**
* 获取热门活动详细信息
*
* @param id 主键
*/
@SaCheckPermission("property:activities:query")
@GetMapping("/{id}")
public R<PopularActivitiesVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable("id") Long id) {
return R.ok(popularActivitiesService.queryById(id));
}
/**
* 新增热门活动
*/
@SaCheckPermission("property:activities:add")
@Log(title = "热门活动", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody PopularActivitiesBo bo) {
return toAjax(popularActivitiesService.insertByBo(bo));
}
/**
* 修改热门活动
*/
@SaCheckPermission("property:activities:edit")
@Log(title = "热门活动", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody PopularActivitiesBo bo) {
return toAjax(popularActivitiesService.updateByBo(bo));
}
/**
* 删除热门活动
*
* @param ids 主键串
*/
@SaCheckPermission("property:activities:remove")
@Log(title = "热门活动", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable("ids") Long[] ids) {
return toAjax(popularActivitiesService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@@ -0,0 +1,116 @@
package org.dromara.property.controller.smartDevicesController;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.property.domain.vo.smartDevicesVo.TbLightInfoVo;
import org.dromara.property.domain.bo.smartDevicesBo.TbLightInfoBo;
import org.dromara.property.service.smartDevicesService.ITbLightInfoService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 灯控开关信息
* 前端访问路由地址为:/property/lightInfo
*
* @author lsm
* @since 2025-08-19
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/lightInfo")
public class TbLightInfoController extends BaseController {
private final ITbLightInfoService tbLightInfoService;
/**
* 查询灯控开关信息列表
*/
@SaCheckPermission("property:lightInfo:list")
@GetMapping("/list")
public TableDataInfo<TbLightInfoVo> list(TbLightInfoBo bo, PageQuery pageQuery) {
return tbLightInfoService.queryPageList(bo, pageQuery);
}
/**
* 导出灯控开关信息列表
*/
@SaCheckPermission("property:lightInfo:export")
@Log(title = "灯控开关信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(TbLightInfoBo bo, HttpServletResponse response) {
List<TbLightInfoVo> list = tbLightInfoService.queryList(bo);
ExcelUtil.exportExcel(list, "灯控开关信息", TbLightInfoVo.class, response);
}
/**
* 获取灯控开关信息详细信息
*
* @param id 主键
*/
@SaCheckPermission("property:lightInfo:query")
@GetMapping("/{id}")
public R<TbLightInfoVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable("id") Long id) {
return R.ok(tbLightInfoService.queryById(id));
}
/**
* 新增灯控开关信息
*/
@SaCheckPermission("property:lightInfo:add")
@Log(title = "灯控开关信息", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody TbLightInfoBo bo) {
return toAjax(tbLightInfoService.insertByBo(bo));
}
/**
* 修改灯控开关信息
*/
@SaCheckPermission("property:lightInfo:edit")
@Log(title = "灯控开关信息", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody TbLightInfoBo bo) {
return toAjax(tbLightInfoService.updateByBo(bo));
}
/**
* 删除灯控开关信息
*
* @param ids 主键串
*/
@SaCheckPermission("property:lightInfo:remove")
@Log(title = "灯控开关信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable("ids") Long[] ids) {
return toAjax(tbLightInfoService.deleteWithValidByIds(List.of(ids), true));
}
/**
* 灯开关控制
*
* @param bo bean
*/
@PostMapping("/switch")
public R<Void> switchSingleLight(@RequestBody TbLightInfoBo bo) {
return toAjax(tbLightInfoService.switchSingleLight(bo));
}
}

View File

@@ -1,4 +1,4 @@
package org.dromara.property.controller;
package org.dromara.property.controller.smartDevicesController;
import java.util.List;
@@ -17,9 +17,9 @@ import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.property.domain.vo.TbMeterConfigVo;
import org.dromara.property.domain.bo.TbMeterConfigBo;
import org.dromara.property.service.ITbMeterConfigService;
import org.dromara.property.domain.vo.smartDevicesVo.TbMeterConfigVo;
import org.dromara.property.domain.bo.smartDevicesBo.TbMeterConfigBo;
import org.dromara.property.service.smartDevicesService.ITbMeterConfigService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**

View File

@@ -1,4 +1,4 @@
package org.dromara.property.controller;
package org.dromara.property.controller.smartDevicesController;
import java.util.List;
@@ -17,9 +17,9 @@ import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.property.domain.vo.TbMeterInfoVo;
import org.dromara.property.domain.bo.TbMeterInfoBo;
import org.dromara.property.service.ITbMeterInfoService;
import org.dromara.property.domain.vo.smartDevicesVo.TbMeterInfoVo;
import org.dromara.property.domain.bo.smartDevicesBo.TbMeterInfoBo;
import org.dromara.property.service.smartDevicesService.ITbMeterInfoService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**

View File

@@ -1,4 +1,4 @@
package org.dromara.property.controller;
package org.dromara.property.controller.smartDevicesController;
import java.util.List;
@@ -17,9 +17,9 @@ import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.property.domain.vo.TbMeterRecordVo;
import org.dromara.property.domain.bo.TbMeterRecordBo;
import org.dromara.property.service.ITbMeterRecordService;
import org.dromara.property.domain.vo.smartDevicesVo.TbMeterRecordVo;
import org.dromara.property.domain.bo.smartDevicesBo.TbMeterRecordBo;
import org.dromara.property.service.smartDevicesService.ITbMeterRecordService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**

View File

@@ -1,4 +1,4 @@
package org.dromara.property.controller;
package org.dromara.property.controller.smartDevicesController;
import java.util.List;
@@ -17,9 +17,9 @@ import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.property.domain.vo.TbMeterRoomVo;
import org.dromara.property.domain.bo.TbMeterRoomBo;
import org.dromara.property.service.ITbMeterRoomService;
import org.dromara.property.domain.vo.smartDevicesVo.TbMeterRoomVo;
import org.dromara.property.domain.bo.smartDevicesBo.TbMeterRoomBo;
import org.dromara.property.service.smartDevicesService.ITbMeterRoomService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**

View File

@@ -0,0 +1,67 @@
package org.dromara.property.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.tenant.core.TenantEntity;
import java.io.Serial;
/**
* APP功能列表对象 app_fun_list
*
* @author mocheng
* @date 2025-07-23
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("app_fun_list")
public class AppFunList extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id")
private Long id;
/**
* 角色id
*/
private Long roleid;
/**
* 名称
*/
private String name;
/**
* icon
*/
private String icon;
/**
* url
*/
private String url;
/**
* 创建人id
*/
private Long createById;
/**
* 更新人id
*/
private Long updateById;
/**
* 搜索值
*/
private String searchValue;
}

View File

@@ -0,0 +1,41 @@
package org.dromara.property.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
* 区域排班中间对象 attendance_arrangement_area
*
* @author LionLi
* @date 2025-08-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("attendance_arrangement_area")
public class AttendanceArrangementArea extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
@TableId(value = "id")
private Long id;
/**
* 区域id
*/
private Long areaId;
/**
* 排班id
*/
private Long shceduleId;
}

View File

@@ -0,0 +1,68 @@
package org.dromara.property.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
* 热门活动对象 popular_activities
*
* @author LionLi
* @date 2025-08-19
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("popular_activities")
public class PopularActivities extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id")
private Long id;
/**
* 标题
*/
private String title;
/**
* 头部照片
*/
private String headImgUrl;
/**
* 开始时间
*/
private Date startTime;
/**
* 结束时间
*/
private Date endTime;
/**
* 活动内容
*/
private String activeContent;
/**
* 状态1.未开始 2.进行中 3.已结束)
*/
private String status;
/**
* 搜索值
*/
private String searchValue;
}

View File

@@ -0,0 +1,66 @@
package org.dromara.property.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
* 灯控开关信息对象 tb_light_info
*
* @author lsm
* @since 2025-08-19
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("tb_light_info")
public class TbLightInfo extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
@TableId(value = "id")
private Long id;
/**
* 位置描述
*/
private String locationRemark;
/**
* 开关状态01
*/
private Boolean isOn;
/**
* 灯控模块编码
*/
private Long code;
/**
* 园区编码
*/
private Long communityId;
/**
* 建筑名称
*/
private Long buildingId;
/**
* 单元编码
*/
private Long unitId;
/**
* 所属楼层ID
*/
private Long floorId;
}

View File

@@ -0,0 +1,49 @@
package org.dromara.property.domain.bo;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.property.domain.AppFunList;
/**
* APP功能列表业务对象 app_fun_list
*
* @author mocheng
* @date 2025-07-23
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = AppFunList.class, reverseConvertGenerate = false)
public class AppFunListBo extends BaseEntity {
/**
* 主键
*/
@NotNull(message = "主键不能为空", groups = { EditGroup.class })
private Long id;
/**
* 角色id
*/
private Long roleid;
/**
* 名称
*/
private String name;
/**
* icon
*/
private String icon;
/**
* url
*/
private String url;
}

View File

@@ -0,0 +1,40 @@
package org.dromara.property.domain.bo;
import org.dromara.property.domain.AttendanceArrangementArea;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
/**
* 区域排班中间业务对象 attendance_arrangement_area
*
* @author LionLi
* @date 2025-08-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = AttendanceArrangementArea.class, reverseConvertGenerate = false)
public class AttendanceArrangementAreaBo extends BaseEntity {
/**
* 主键id
*/
@NotNull(message = "主键id不能为空", groups = { EditGroup.class })
private Long id;
/**
* 区域id
*/
private Long areaId;
/**
* 排班id
*/
private Long shceduleId;
}

View File

@@ -103,6 +103,7 @@ public class AttendanceArrangementBo extends BaseEntity {
*/
private List<AttendanceScheduleCycle> scheduleCycleList;
private List<Long> areaId;
}

View File

@@ -0,0 +1,72 @@
package org.dromara.property.domain.bo;
import org.dromara.property.domain.PopularActivities;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 热门活动业务对象 popular_activities
*
* @author LionLi
* @date 2025-08-19
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = PopularActivities.class, reverseConvertGenerate = false)
public class PopularActivitiesBo extends BaseEntity {
/**
* 主键
*/
@NotNull(message = "主键不能为空", groups = { EditGroup.class })
private Long id;
/**
* 标题
*/
@NotBlank(message = "标题不能为空", groups = { AddGroup.class, EditGroup.class })
private String title;
/**
* 头部照片
*/
private String headImgUrl;
/**
* 开始时间
*/
@NotNull(message = "开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
private Date startTime;
/**
* 结束时间
*/
@NotNull(message = "结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
private Date endTime;
/**
* 活动内容
*/
@NotBlank(message = "活动内容不能为空", groups = { AddGroup.class, EditGroup.class })
private String activeContent;
/**
* 状态1.未开始 2.进行中 3.已结束)
*/
//@NotBlank(message = "状态1.未开始 2.进行中 3.已结束)不能为空", groups = { AddGroup.class, EditGroup.class })
private String status;
/**
* 搜索值
*/
private String searchValue;
}

View File

@@ -58,7 +58,7 @@ public class TbVisitorManagementBo extends BaseEntity {
/**
* 拜访事由
*/
@NotBlank(message = "拜访事由不能为空", groups = { AddGroup.class, EditGroup.class })
// @NotBlank(message = "拜访事由不能为空", groups = { AddGroup.class, EditGroup.class })
private String visitingReason;
//@NotNull(message = "类型不能为空", groups = { AddGroup.class, EditGroup.class })
@@ -93,7 +93,7 @@ public class TbVisitorManagementBo extends BaseEntity {
/**
* 预约车位0预约1不预约
*/
@NotNull(message = "预约车位0预约1不预约不能为空", groups = { AddGroup.class, EditGroup.class })
// @NotNull(message = "预约车位0预约1不预约不能为空", groups = { AddGroup.class, EditGroup.class })
private Long bookingParkingSpace;
/**
@@ -104,7 +104,7 @@ public class TbVisitorManagementBo extends BaseEntity {
/**
* 人脸图片
*/
@NotBlank(message = "人脸图片不能为空", groups = { AddGroup.class, EditGroup.class })
// @NotBlank(message = "人脸图片不能为空", groups = { AddGroup.class, EditGroup.class })
private String facePictures;
/**

View File

@@ -0,0 +1,68 @@
package org.dromara.property.domain.bo.smartDevicesBo;
import org.dromara.property.domain.TbLightInfo;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
/**
* 灯控开关信息业务对象 tb_light_info
*
* @author lsm
* @since 2025-08-19
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = TbLightInfo.class, reverseConvertGenerate = false)
public class TbLightInfoBo extends BaseEntity {
/**
* 主键id
*/
@NotNull(message = "主键id不能为空", groups = {EditGroup.class})
private Long id;
/**
* 位置描述
*/
@NotBlank(message = "位置描述不能为空", groups = {AddGroup.class, EditGroup.class})
private String locationRemark;
/**
* 开关状态01
*/
@NotNull(message = "开关状态01不能为空", groups = {AddGroup.class, EditGroup.class})
private Boolean isOn;
/**
* 灯控模块编码
*/
@NotNull(message = "灯控模块编码不能为空", groups = {AddGroup.class, EditGroup.class})
private Long code;
/**
* 楼层ID
*/
@NotNull(message = "层ID不能为空", groups = {AddGroup.class, EditGroup.class})
private Long floorId;
/**
* 园区编码
*/
private Long communityId;
/**
* 建筑名称
*/
private Long buildingId;
/**
* 单元编码
*/
private Long unitId;
}

View File

@@ -1,4 +1,4 @@
package org.dromara.property.domain.bo;
package org.dromara.property.domain.bo.smartDevicesBo;
import org.dromara.property.domain.TbMeterConfig;
import org.dromara.common.mybatis.core.domain.BaseEntity;

View File

@@ -1,4 +1,4 @@
package org.dromara.property.domain.bo;
package org.dromara.property.domain.bo.smartDevicesBo;
import org.dromara.property.domain.TbMeterInfo;
import org.dromara.common.mybatis.core.domain.BaseEntity;

View File

@@ -1,4 +1,4 @@
package org.dromara.property.domain.bo;
package org.dromara.property.domain.bo.smartDevicesBo;
import org.dromara.property.domain.TbMeterRecord;
import org.dromara.common.mybatis.core.domain.BaseEntity;
@@ -9,7 +9,6 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 抄记录业务对象 tb_meter_record

View File

@@ -1,4 +1,4 @@
package org.dromara.property.domain.bo;
package org.dromara.property.domain.bo.smartDevicesBo;
import org.dromara.property.domain.TbMeterRoom;
import org.dromara.common.mybatis.core.domain.BaseEntity;

View File

@@ -0,0 +1,41 @@
package org.dromara.property.domain.enums;
import lombok.Getter;
/**
* @Author:yuyongle
* @Date:2025/7/4 10:35
* @Description:活动状态枚举
**/
@Getter
public enum ActivitiesStatusEnum {
/**
* 未开始
*/
NOTSTARTED("未开始", "1"),
/**
* 待提货
*/
INPROGRESS("待提货", "2"),
/**
* 已结束
*/
HASENDED("已结束", "3");
private final String name;
private final String value;
ActivitiesStatusEnum(String name, String value) {
this.name = name;
this.value = value;
}
public String getName() {
return this.name;
}
public String getValue() {
return this.value;
}
}

View File

@@ -0,0 +1,66 @@
package org.dromara.property.domain.vo;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.common.translation.annotation.Translation;
import org.dromara.common.translation.constant.TransConstant;
import org.dromara.property.domain.AppFunList;
import java.io.Serial;
import java.io.Serializable;
/**
* APP功能列表视图对象 app_fun_list
*
* @author mocheng
* @date 2025-07-23
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = AppFunList.class)
public class AppFunListVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@ExcelProperty(value = "主键")
private Long id;
/**
* 角色id
*/
@ExcelProperty(value = "角色id")
private Long roleid;
/**
* 角色id
*/
@ExcelProperty(value = "角色id")
private String roleName;
/**
* 名称
*/
@ExcelProperty(value = "名称")
private String name;
/**
* icon
*/
@Translation(type = TransConstant.OSS_ID_TO_URL)
@ExcelProperty(value = "icon")
private String icon;
/**
* url
*/
@ExcelProperty(value = "url")
private String url;
}

View File

@@ -7,6 +7,7 @@ import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.sis.api.domain.RemoteSisDeviceManage;
import java.io.Serial;
import java.io.Serializable;
@@ -47,4 +48,5 @@ public class AttendanceAreaDeviceVo implements Serializable {
private Long deviceManageId;
private RemoteSisDeviceManage remoteSisDeviceManage;
}

View File

@@ -53,7 +53,7 @@ public class AttendanceAreaVo implements Serializable {
@ExcelProperty(value = "备注")
private String reamark;
private List<AttendanceAreaDevice> areaDevice;
private List<AttendanceAreaDeviceVo> areaDevice;
}

View File

@@ -0,0 +1,50 @@
package org.dromara.property.domain.vo;
import org.dromara.property.domain.AttendanceArrangementArea;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 区域排班中间视图对象 attendance_arrangement_area
*
* @author LionLi
* @date 2025-08-18
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = AttendanceArrangementArea.class)
public class AttendanceArrangementAreaVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
@ExcelProperty(value = "主键id")
private Long id;
/**
* 区域id
*/
@ExcelProperty(value = "区域id")
private Long areaId;
/**
* 排班id
*/
@ExcelProperty(value = "排班id")
private Long shceduleId;
}

View File

@@ -96,7 +96,7 @@ public class AttendanceArrangementVo implements Serializable {
//排班制
private AttendanceScheduleCycle scheduleCycle;
private AttendanceArea attendanceArea;
private List<AttendanceArea> areaList;
}

View File

@@ -11,6 +11,7 @@ import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDate;
import java.util.List;
/**
@@ -89,5 +90,8 @@ public class AttendanceUserGroupVo implements Serializable {
private AttendanceArea attendanceArea;
private List<AttendanceArrangementArea> attendanceArrangementAreaList;
private List<AttendanceArea> attendanceAreaList;
}

View File

@@ -0,0 +1,93 @@
package org.dromara.property.domain.vo;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.property.domain.PopularActivities;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 热门活动视图对象 popular_activities
*
* @author LionLi
* @date 2025-08-19
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = PopularActivities.class)
public class PopularActivitiesVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@ExcelProperty(value = "主键")
private Long id;
/**
* 标题
*/
@ExcelProperty(value = "标题")
private String title;
/**
* 头部照片
*/
@ExcelProperty(value = "头部照片")
private String headImgUrl;
/**
* 开始时间
*/
@ExcelProperty(value = "开始时间")
private Date startTime;
/**
* 结束时间
*/
@ExcelProperty(value = "结束时间")
private Date endTime;
/**
* 活动内容
*/
@ExcelProperty(value = "活动内容")
private String activeContent;
/**
* 状态1.未开始 2.进行中 3.已结束)
*/
@ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "pro_activity_status")
private String status;
/**
* 创建者
*/
private Long createBy;
/**
* 创建者
*/
private String createName;
/**
* 搜索值
*/
@ExcelProperty(value = "搜索值")
private String searchValue;
}

View File

@@ -137,6 +137,8 @@ public class TbVisitorManagementVo implements Serializable {
@ExcelProperty(value = "更新时间")
private Date updateTime;
private String url;
}

View File

@@ -0,0 +1,87 @@
package org.dromara.property.domain.vo.smartDevicesVo;
import org.dromara.property.domain.TbLightInfo;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 灯控开关信息视图对象 tb_light_info
*
* @author lsm
* @since 2025-08-19
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = TbLightInfo.class)
public class TbLightInfoVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
@ExcelProperty(value = "主键id")
private Long id;
/**
* 位置描述
*/
@ExcelProperty(value = "位置描述")
private String locationRemark;
/**
* 开关状态01
*/
@ExcelProperty(value = "开关状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0=1")
private Boolean isOn;
/**
* 灯控模块编码
*/
@ExcelProperty(value = "灯控模块编码")
private Long code;
/**
* 园区编码
*/
@ExcelProperty(value = "园区编码")
private Long communityId;
/**
* 建筑名称
*/
@ExcelProperty(value = "建筑名称")
private Long buildingId;
/**
* 单元编码
*/
@ExcelProperty(value = "单元编码")
private Long unitId;
/**
* 楼层ID
*/
@ExcelProperty(value = "楼层ID")
private Long floorId;
/**
* 楼层
*/
@ExcelProperty(value = "楼层")
private String floorName;
}

View File

@@ -1,4 +1,4 @@
package org.dromara.property.domain.vo;
package org.dromara.property.domain.vo.smartDevicesVo;
import org.dromara.property.domain.TbMeterConfig;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;

View File

@@ -1,4 +1,4 @@
package org.dromara.property.domain.vo;
package org.dromara.property.domain.vo.smartDevicesVo;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;

View File

@@ -1,19 +1,15 @@
package org.dromara.property.domain.vo;
package org.dromara.property.domain.vo.smartDevicesVo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.property.domain.TbMeterRecord;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**

View File

@@ -1,4 +1,4 @@
package org.dromara.property.domain.vo;
package org.dromara.property.domain.vo.smartDevicesVo;
import org.dromara.property.domain.TbMeterRoom;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;

View File

@@ -0,0 +1,15 @@
package org.dromara.property.mapper;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.property.domain.AppFunList;
import org.dromara.property.domain.vo.AppFunListVo;
/**
* APP功能列表Mapper接口
*
* @author mocheng
* @date 2025-07-23
*/
public interface AppFunListMapper extends BaseMapperPlus<AppFunList, AppFunListVo> {
}

View File

@@ -0,0 +1,15 @@
package org.dromara.property.mapper;
import org.dromara.property.domain.AttendanceArrangementArea;
import org.dromara.property.domain.vo.AttendanceArrangementAreaVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 区域排班中间Mapper接口
*
* @author LionLi
* @date 2025-08-18
*/
public interface AttendanceArrangementAreaMapper extends BaseMapperPlus<AttendanceArrangementArea, AttendanceArrangementAreaVo> {
}

View File

@@ -0,0 +1,15 @@
package org.dromara.property.mapper;
import org.dromara.property.domain.PopularActivities;
import org.dromara.property.domain.vo.PopularActivitiesVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 热门活动Mapper接口
*
* @author LionLi
* @date 2025-08-19
*/
public interface PopularActivitiesMapper extends BaseMapperPlus<PopularActivities, PopularActivitiesVo> {
}

View File

@@ -0,0 +1,17 @@
package org.dromara.property.mapper.smartDevicesMapper;
import org.apache.ibatis.annotations.Mapper;
import org.dromara.property.domain.TbLightInfo;
import org.dromara.property.domain.vo.smartDevicesVo.TbLightInfoVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 灯控开关信息Mapper接口
*
* @author lsm
* @since 2025-08-19
*/
@Mapper
public interface TbLightInfoMapper extends BaseMapperPlus<TbLightInfo, TbLightInfoVo> {
}

View File

@@ -1,8 +1,8 @@
package org.dromara.property.mapper;
package org.dromara.property.mapper.smartDevicesMapper;
import org.apache.ibatis.annotations.Mapper;
import org.dromara.property.domain.TbMeterConfig;
import org.dromara.property.domain.vo.TbMeterConfigVo;
import org.dromara.property.domain.vo.smartDevicesVo.TbMeterConfigVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**

View File

@@ -1,7 +1,7 @@
package org.dromara.property.mapper;
package org.dromara.property.mapper.smartDevicesMapper;
import org.dromara.property.domain.TbMeterInfo;
import org.dromara.property.domain.vo.TbMeterInfoVo;
import org.dromara.property.domain.vo.smartDevicesVo.TbMeterInfoVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**

View File

@@ -1,7 +1,7 @@
package org.dromara.property.mapper;
package org.dromara.property.mapper.smartDevicesMapper;
import org.dromara.property.domain.TbMeterRecord;
import org.dromara.property.domain.vo.TbMeterRecordVo;
import org.dromara.property.domain.vo.smartDevicesVo.TbMeterRecordVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**

View File

@@ -1,8 +1,8 @@
package org.dromara.property.mapper;
package org.dromara.property.mapper.smartDevicesMapper;
import org.apache.ibatis.annotations.Mapper;
import org.dromara.property.domain.TbMeterRoom;
import org.dromara.property.domain.vo.TbMeterRoomVo;
import org.dromara.property.domain.vo.smartDevicesVo.TbMeterRoomVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**

View File

@@ -0,0 +1,68 @@
package org.dromara.property.service;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.property.domain.bo.AppFunListBo;
import org.dromara.property.domain.vo.AppFunListVo;
import java.util.Collection;
import java.util.List;
/**
* APP功能列表Service接口
*
* @author mocheng
* @date 2025-07-23
*/
public interface IAppFunListService {
/**
* 查询APP功能列表
*
* @param id 主键
* @return APP功能列表
*/
AppFunListVo queryById(Long id);
/**
* 分页查询APP功能列表列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return APP功能列表分页列表
*/
TableDataInfo<AppFunListVo> queryPageList(AppFunListBo bo, PageQuery pageQuery);
/**
* 查询符合条件的APP功能列表列表
*
* @param bo 查询条件
* @return APP功能列表列表
*/
List<AppFunListVo> queryList(AppFunListBo bo);
/**
* 新增APP功能列表
*
* @param bo APP功能列表
* @return 是否新增成功
*/
Boolean insertByBo(AppFunListBo bo);
/**
* 修改APP功能列表
*
* @param bo APP功能列表
* @return 是否修改成功
*/
Boolean updateByBo(AppFunListBo bo);
/**
* 校验并批量删除APP功能列表信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@@ -0,0 +1,69 @@
package org.dromara.property.service;
import org.dromara.property.domain.AttendanceArrangementArea;
import org.dromara.property.domain.vo.AttendanceArrangementAreaVo;
import org.dromara.property.domain.bo.AttendanceArrangementAreaBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* 区域排班中间Service接口
*
* @author LionLi
* @date 2025-08-18
*/
public interface IAttendanceArrangementAreaService {
/**
* 查询区域排班中间
*
* @param id 主键
* @return 区域排班中间
*/
AttendanceArrangementAreaVo queryById(Long id);
/**
* 分页查询区域排班中间列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 区域排班中间分页列表
*/
TableDataInfo<AttendanceArrangementAreaVo> queryPageList(AttendanceArrangementAreaBo bo, PageQuery pageQuery);
/**
* 查询符合条件的区域排班中间列表
*
* @param bo 查询条件
* @return 区域排班中间列表
*/
List<AttendanceArrangementAreaVo> queryList(AttendanceArrangementAreaBo bo);
/**
* 新增区域排班中间
*
* @param bo 区域排班中间
* @return 是否新增成功
*/
Boolean insertByBo(AttendanceArrangementAreaBo bo);
/**
* 修改区域排班中间
*
* @param bo 区域排班中间
* @return 是否修改成功
*/
Boolean updateByBo(AttendanceArrangementAreaBo bo);
/**
* 校验并批量删除区域排班中间信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@@ -0,0 +1,69 @@
package org.dromara.property.service;
import org.dromara.property.domain.PopularActivities;
import org.dromara.property.domain.vo.PopularActivitiesVo;
import org.dromara.property.domain.bo.PopularActivitiesBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* 热门活动Service接口
*
* @author LionLi
* @date 2025-08-19
*/
public interface IPopularActivitiesService {
/**
* 查询热门活动
*
* @param id 主键
* @return 热门活动
*/
PopularActivitiesVo queryById(Long id);
/**
* 分页查询热门活动列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 热门活动分页列表
*/
TableDataInfo<PopularActivitiesVo> queryPageList(PopularActivitiesBo bo, PageQuery pageQuery);
/**
* 查询符合条件的热门活动列表
*
* @param bo 查询条件
* @return 热门活动列表
*/
List<PopularActivitiesVo> queryList(PopularActivitiesBo bo);
/**
* 新增热门活动
*
* @param bo 热门活动
* @return 是否新增成功
*/
Boolean insertByBo(PopularActivitiesBo bo);
/**
* 修改热门活动
*
* @param bo 热门活动
* @return 是否修改成功
*/
Boolean updateByBo(PopularActivitiesBo bo);
/**
* 校验并批量删除热门活动信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@@ -11,6 +11,7 @@ import org.dromara.property.domain.vo.ServiceWorkOrdersVo;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
* 【工单处理】Service接口
@@ -87,4 +88,10 @@ public interface IServiceWorkOrdersService {
*/
Boolean insertMServiceWorkOrdersBo(MServiceWorkOrdersBo bo);
/**
* 查询工单处理人枚举
* @param type
* @return
*/
List<Map<Object, Object>> getServiceWorkOrdersHandler(String type);
}

View File

@@ -0,0 +1,142 @@
package org.dromara.property.service.impl;
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.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.property.domain.AppFunList;
import org.dromara.property.domain.bo.AppFunListBo;
import org.dromara.property.domain.vo.AppFunListVo;
import org.dromara.property.mapper.AppFunListMapper;
import org.dromara.property.service.IAppFunListService;
import org.dromara.system.api.RemoteUserService;
import org.springframework.stereotype.Service;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
* APP功能列表Service业务层处理
*
* @author mocheng
* @date 2025-07-23
*/
@Slf4j
@RequiredArgsConstructor
@Service
public class AppFunListServiceImpl implements IAppFunListService {
private final AppFunListMapper baseMapper;
@DubboReference
private final RemoteUserService remoteUserService;
/**
* 查询APP功能列表
*
* @param id 主键
* @return APP功能列表
*/
@Override
public AppFunListVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询APP功能列表列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return APP功能列表分页列表
*/
@Override
public TableDataInfo<AppFunListVo> queryPageList(AppFunListBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<AppFunList> lqw = buildQueryWrapper(bo);
Page<AppFunListVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
result.getRecords().forEach(r -> r.setRoleName(remoteUserService.selectUserNameById(r.getRoleid())));
return TableDataInfo.build(result);
}
/**
* 查询符合条件的APP功能列表列表
*
* @param bo 查询条件
* @return APP功能列表列表
*/
@Override
public List<AppFunListVo> queryList(AppFunListBo bo) {
LambdaQueryWrapper<AppFunList> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<AppFunList> buildQueryWrapper(AppFunListBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<AppFunList> lqw = Wrappers.lambdaQuery();
lqw.orderByAsc(AppFunList::getId);
lqw.eq(bo.getRoleid() != null, AppFunList::getRoleid, bo.getRoleid());
lqw.like(StringUtils.isNotBlank(bo.getName()), AppFunList::getName, bo.getName());
lqw.eq(StringUtils.isNotBlank(bo.getIcon()), AppFunList::getIcon, bo.getIcon());
lqw.eq(StringUtils.isNotBlank(bo.getUrl()), AppFunList::getUrl, bo.getUrl());
return lqw;
}
/**
* 新增APP功能列表
*
* @param bo APP功能列表
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(AppFunListBo bo) {
AppFunList add = MapstructUtils.convert(bo, AppFunList.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改APP功能列表
*
* @param bo APP功能列表
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(AppFunListBo bo) {
AppFunList update = MapstructUtils.convert(bo, AppFunList.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(AppFunList entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除APP功能列表信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@@ -1,29 +1,31 @@
package org.dromara.property.service.impl;
import cn.hutool.core.util.ObjectUtil;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.dromara.property.domain.AttendanceAreaDevice;
import org.dromara.property.mapper.AttendanceAreaDeviceMapper;
import org.springframework.stereotype.Service;
import org.dromara.property.domain.bo.AttendanceAreaBo;
import org.dromara.property.domain.vo.AttendanceAreaVo;
import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.property.domain.AttendanceArea;
import org.dromara.property.domain.AttendanceAreaDevice;
import org.dromara.property.domain.bo.AttendanceAreaBo;
import org.dromara.property.domain.vo.AttendanceAreaDeviceVo;
import org.dromara.property.domain.vo.AttendanceAreaVo;
import org.dromara.property.mapper.AttendanceAreaDeviceMapper;
import org.dromara.property.mapper.AttendanceAreaMapper;
import org.dromara.property.service.IAttendanceAreaService;
import org.dromara.sis.api.RemoteDeviceService;
import org.dromara.sis.api.domain.RemoteSisDeviceManage;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 区域区域管理Service业务层处理
@@ -40,6 +42,10 @@ public class AttendanceAreaServiceImpl implements IAttendanceAreaService {
private final AttendanceAreaDeviceMapper areaDeviceMapper;
// private TdDeviceTypeServiceImpl deviceTypeService;
@DubboReference
private RemoteDeviceService remoteDeviceService;
/**
* 查询区域区域管理
*
@@ -47,7 +53,7 @@ public class AttendanceAreaServiceImpl implements IAttendanceAreaService {
* @return 区域区域管理
*/
@Override
public AttendanceAreaVo queryById(Long id){
public AttendanceAreaVo queryById(Long id) {
return baseMapper.selectVoById(id);
}
@@ -64,11 +70,17 @@ public class AttendanceAreaServiceImpl implements IAttendanceAreaService {
Page<AttendanceAreaVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
Page<AttendanceAreaVo> attendanceAreaVoPage = result.setRecords(result.getRecords().stream().map(vo -> {
//获取areaId
Long areaId = vo.getId();
//根据areaId查询中间表数据
List<AttendanceAreaDevice> attendanceAreaDeviceList = areaDeviceMapper.selectList(Wrappers.<AttendanceAreaDevice>lambdaQuery().eq(AttendanceAreaDevice::getAreaId, areaId));
vo.setAreaDevice(attendanceAreaDeviceList);
//获取areaId
Long areaId = vo.getId();
//根据areaId查询中间表数据
List<AttendanceAreaDeviceVo> attendanceAreaDeviceList =areaDeviceMapper.selectVoList(Wrappers.<AttendanceAreaDevice>lambdaQuery().eq(AttendanceAreaDevice::getAreaId, areaId));
// List<AttendanceAreaDeviceVo> attendanceAreaDeviceList = areaDeviceMapper.selectList(Wrappers.<AttendanceAreaDevice>lambdaQuery().eq(AttendanceAreaDevice::getAreaId, areaId));
attendanceAreaDeviceList.forEach(item -> {
//根据deviceManageId查询设备数据
RemoteSisDeviceManage remoteSisDeviceManage = remoteDeviceService.queryDeviceById(item.getDeviceManageId());
item.setRemoteSisDeviceManage(remoteSisDeviceManage);
});
vo.setAreaDevice(attendanceAreaDeviceList);
return vo;
}
).toList());
@@ -163,7 +175,7 @@ public class AttendanceAreaServiceImpl implements IAttendanceAreaService {
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(AttendanceArea entity){
private void validEntityBeforeSave(AttendanceArea entity) {
//TODO 做一些数据校验,如唯一约束
}
@@ -177,7 +189,7 @@ public class AttendanceAreaServiceImpl implements IAttendanceAreaService {
@Transactional(rollbackFor = Exception.class)
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验
}

View File

@@ -0,0 +1,133 @@
package org.dromara.property.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.springframework.stereotype.Service;
import org.dromara.property.domain.bo.AttendanceArrangementAreaBo;
import org.dromara.property.domain.vo.AttendanceArrangementAreaVo;
import org.dromara.property.domain.AttendanceArrangementArea;
import org.dromara.property.mapper.AttendanceArrangementAreaMapper;
import org.dromara.property.service.IAttendanceArrangementAreaService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 区域排班中间Service业务层处理
*
* @author LionLi
* @date 2025-08-18
*/
@Slf4j
@RequiredArgsConstructor
@Service
public class AttendanceArrangementAreaServiceImpl implements IAttendanceArrangementAreaService {
private final AttendanceArrangementAreaMapper baseMapper;
/**
* 查询区域排班中间
*
* @param id 主键
* @return 区域排班中间
*/
@Override
public AttendanceArrangementAreaVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询区域排班中间列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 区域排班中间分页列表
*/
@Override
public TableDataInfo<AttendanceArrangementAreaVo> queryPageList(AttendanceArrangementAreaBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<AttendanceArrangementArea> lqw = buildQueryWrapper(bo);
Page<AttendanceArrangementAreaVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的区域排班中间列表
*
* @param bo 查询条件
* @return 区域排班中间列表
*/
@Override
public List<AttendanceArrangementAreaVo> queryList(AttendanceArrangementAreaBo bo) {
LambdaQueryWrapper<AttendanceArrangementArea> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<AttendanceArrangementArea> buildQueryWrapper(AttendanceArrangementAreaBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<AttendanceArrangementArea> lqw = Wrappers.lambdaQuery();
lqw.orderByAsc(AttendanceArrangementArea::getId);
lqw.eq(bo.getAreaId() != null, AttendanceArrangementArea::getAreaId, bo.getAreaId());
lqw.eq(bo.getShceduleId() != null, AttendanceArrangementArea::getShceduleId, bo.getShceduleId());
return lqw;
}
/**
* 新增区域排班中间
*
* @param bo 区域排班中间
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(AttendanceArrangementAreaBo bo) {
AttendanceArrangementArea add = MapstructUtils.convert(bo, AttendanceArrangementArea.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改区域排班中间
*
* @param bo 区域排班中间
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(AttendanceArrangementAreaBo bo) {
AttendanceArrangementArea update = MapstructUtils.convert(bo, AttendanceArrangementArea.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(AttendanceArrangementArea entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除区域排班中间信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@@ -55,23 +55,29 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS
private final AttendanceAreaMapper attendanceAreaMapper;
private final AttendanceArrangementAreaMapper attendanceArrangementAreaMapper;
@DubboReference
private RemoteUserService remoteUserService;
/**
* 查询排班
* 根据id查询排班详情
*
* @param id 主键
* @return 排班
*/
@Override
public AttendanceArrangementVo queryById(Long id) {
//1.查询排班
AttendanceArrangementVo vo = baseMapper.selectVoById(id);
//2.查询考勤组信息
//根据id查询出groupId
Long groupId = baseMapper.selectById(id).getGroupId();
//根据groupId查询出考勤组信息
AttendanceGroup attendanceGroup = attendanceGroupMapper.selectById(groupId);
vo.setAttendanceGroup(attendanceGroup);
//3.查询人员表信息
//根据id查询排班人员信息
List<AttendanceUserGroupVo> userGroupList = userGroupMapper.selectVoList(Wrappers.<AttendanceUserGroup>lambdaQuery().eq(AttendanceUserGroup::getScheduleId, id));
//查询所有的用户信息
@@ -84,9 +90,18 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS
//根据deptId查询出部门名称
String deptName = remoteUserService.selectDeptNamesByIds(Arrays.asList(deptId)).get(deptId);
userGroup.setDeptName(deptName);
});
});
//将排班人员信息添加到排班信息中
vo.setUserGroupList(userGroupList);
// //4.根据id查询区域信息
// List<AttendanceArrangementArea> arrangementAreaList = attendanceArrangementAreaMapper.selectList(Wrappers.<AttendanceArrangementArea>lambdaQuery().eq(AttendanceArrangementArea::getShceduleId, id));
// //过滤出排班的区域id
// List<Long> areaIdList = arrangementAreaList.stream().map(AttendanceArrangementArea::getAreaId).collect(Collectors.toList());
// //根据区域id查询出区域信息
// List<AttendanceArea> areaList = attendanceAreaMapper.selectList(Wrappers.<AttendanceArea>lambdaQuery().in(AttendanceArea::getId, areaIdList));
// //6.将区域信息添加到排班信息中
// vo.setAreaList(areaList);
return vo;
}
@@ -120,18 +135,27 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS
//根据排班的id查询出排班的人员详细信息
// List<AttendanceUserGroup> userGroupList = userGroupMapper.selectList(Wrappers.<AttendanceUserGroup>lambdaQuery().in(AttendanceUserGroup::getScheduleId, scheduleId));
List<AttendanceUserGroupVo> userGroupVoList = userGroupMapper.selectVoList(Wrappers.<AttendanceUserGroup>lambdaQuery().in(AttendanceUserGroup::getScheduleId, scheduleId));
//通过userGroupList查询出人员的详细信息
// 2.查询区域信息
// 根据shceduleId查询出区域排班的中间表的areaId
List<Long> areaIdList = attendanceArrangementAreaMapper.selectList(Wrappers.<AttendanceArrangementArea>lambdaQuery().eq(AttendanceArrangementArea::getShceduleId, scheduleId)).stream().map(AttendanceArrangementArea::getAreaId).collect(Collectors.toList());
//根据区域id查询出区域信息
List<AttendanceArea> areaList = attendanceAreaMapper.selectList(Wrappers.<AttendanceArea>lambdaQuery().in(AttendanceArea::getId, areaIdList));
//6.将区域信息添加到排班信息中
vo.setAreaList(areaList);
//通过userGroupList查询出人员的详细信息
//将userList存到userGroupList中
userGroupVoList.forEach(userGroup -> {
RemoteUserVo userInfoById = remoteUserService.getUserInfoById(userGroup.getEmployeeId());
userGroup.setRemoteUserVo(userInfoById);
//获取deptId
Long deptId = userGroup.getDeptId();
//根据deptId查询出部门名称
String deptName = remoteUserService.selectDeptNamesByIds(Arrays.asList(deptId)).get(deptId);
userGroup.setDeptName(deptName);
RemoteUserVo userInfoById = remoteUserService.getUserInfoById(userGroup.getEmployeeId());
userGroup.setRemoteUserVo(userInfoById);
//获取deptId
Long deptId = userGroup.getDeptId();
//根据deptId查询出部门名称
String deptName = remoteUserService.selectDeptNamesByIds(Arrays.asList(deptId)).get(deptId);
userGroup.setDeptName(deptName);
}
);
@@ -476,10 +500,19 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS
}
judgeDate(bo, add);
//取出当前新增的排班的id
Long ArrangementId = add.getId();
List<Long> areaId = bo.getAreaId();
//向区域排班中间表插入数据
areaId.forEach(area -> {
AttendanceArrangementArea attendanceArrangementArea = new AttendanceArrangementArea();
attendanceArrangementArea.setAreaId(area);
attendanceArrangementArea.setShceduleId(ArrangementId);
attendanceArrangementAreaMapper.insert(attendanceArrangementArea);
});
//用获取到的排班id向attendanceUserGroup表中插入数据
List<AttendanceUserGroup> userGroupList = bo.getUserGroupList();
for (AttendanceUserGroup userGroup : userGroupList) {
@@ -522,6 +555,7 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS
AttendanceArrangement update = MapstructUtils.convert(bo, AttendanceArrangement.class);
validEntityBeforeSave(update);
//1.更新人员组信息
//取出当前排班的id
assert update != null;
Long ArrangementId = update.getId();
@@ -534,6 +568,7 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS
.eq(AttendanceUserGroup::getScheduleId, ArrangementId));
}
//2.更新部门信息
//根据排班id获取部门id
List<Long> deptIdList = userGroupMapper.selectList(Wrappers.<AttendanceUserGroup>lambdaQuery().eq(AttendanceUserGroup::getScheduleId, ArrangementId))
.stream().map(AttendanceUserGroup::getDeptId).toList();
@@ -550,7 +585,6 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS
//根据old查询出结束时间
LocalDate oldEndDate = old.getEndDate();
//用获取到的排班id向attendanceUserGroup表中批量插入数据
List<AttendanceUserGroup> userGroupList = bo.getUserGroupList();
for (AttendanceUserGroup userGroup : userGroupList) {
@@ -560,6 +594,26 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS
}
userGroupMapper.insertBatch(userGroupList);
//2.更新区域信息
//根据排班id获取区域id
List<Long> areaIdList = attendanceArrangementAreaMapper.selectList(Wrappers.<AttendanceArrangementArea>lambdaQuery().eq(AttendanceArrangementArea::getShceduleId, ArrangementId))
.stream().map(AttendanceArrangementArea::getAreaId).toList();
if (!areaIdList.isEmpty()) {
//根据areaId和ArrangementId删除attendanceAreaGroup表中的数据
attendanceArrangementAreaMapper.delete(Wrappers.<AttendanceArrangementArea>lambdaQuery().in(AttendanceArrangementArea::getAreaId, areaIdList)
.eq(AttendanceArrangementArea::getShceduleId, ArrangementId));
}
//向区域排班中间表插入数据
List<Long> newAreaId = bo.getAreaId();
newAreaId.forEach(area -> {
AttendanceArrangementArea attendanceArrangementArea = new AttendanceArrangementArea();
attendanceArrangementArea.setAreaId(area);
attendanceArrangementArea.setShceduleId(bo.getId());
attendanceArrangementAreaMapper.insert(attendanceArrangementArea);
});
return baseMapper.updateById(update) > 0;
}
@@ -627,6 +681,8 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS
//根据获取的id删除attendanceUserGroup表中的数据
userGroupMapper.delete(Wrappers.<AttendanceUserGroup>lambdaQuery().in(AttendanceUserGroup::getScheduleId, idList));
//根据id删除区域排班中间表中的数据
attendanceArrangementAreaMapper.delete(Wrappers.<AttendanceArrangementArea>lambdaQuery().in(AttendanceArrangementArea::getShceduleId, idList));
return baseMapper.deleteByIds(ids) > 0;
}

View File

@@ -52,6 +52,8 @@ public class AttendanceUserGroupServiceImpl implements IAttendanceUserGroupServi
private final AttendanceAreaMapper attendanceAreaMapper;
private final AttendanceArrangementAreaMapper attendanceArrangementAreaMapper;
@DubboReference
private RemoteUserService remoteUserService;
@@ -209,12 +211,6 @@ public class AttendanceUserGroupServiceImpl implements IAttendanceUserGroupServi
String deptName = remoteUserService.selectDeptNamesByIds(Arrays.asList(deptId)).get(deptId);
vo.setDeptName(deptName);
// //通过employeeId查询出用户的部门信息
// String deptInfo = remoteDeptService.selectDeptNameByIds(String.valueOf(vo.getDeptId()));
// vo.setDeptName(deptInfo);
//根据scheduleId查询出排班的详细信息
AttendanceArrangement attendanceArrangement = arrangementMapper.selectOne(Wrappers.<AttendanceArrangement>lambdaQuery().eq(AttendanceArrangement::getId, scheduleId));
// 假设每个vo只有一个scheduleId
@@ -222,6 +218,7 @@ public class AttendanceUserGroupServiceImpl implements IAttendanceUserGroupServi
AttendanceArrangement arrangement = arrangementMapper.selectOne(Wrappers.<AttendanceArrangement>lambdaQuery().eq(AttendanceArrangement::getId, userGroupListScheduleId));
vo.setAttendanceArrangement(arrangement);
// 根据scheduleId过滤出groupId
Long groupId = arrangement.getGroupId();
// 根据groupId查询出考勤组的详细信息
@@ -229,11 +226,13 @@ public class AttendanceUserGroupServiceImpl implements IAttendanceUserGroupServi
vo.setAttendanceGroup(attendanceGroup);
// //3.根据id查询区域信息
// Long areaId = arrangement.getAreaId();
// //根据区域id查询出区域的详细信息
// AttendanceArea attendanceArea = attendanceAreaMapper.selectById(areaId);
// vo.setAttendanceArea(attendanceArea);
// // 根据scheduleId查询区域排班中间表
// List<AttendanceArrangementArea> attendanceArrangementAreaList = attendanceArrangementAreaMapper.selectList(Wrappers.<AttendanceArrangementArea>lambdaQuery().eq(AttendanceArrangementArea::getShceduleId, scheduleId));
// vo.setAttendanceArrangementAreaList(attendanceArrangementAreaList);
// //根据中间表查询出区域信息
// List<Long> areaIdList = attendanceArrangementAreaList.stream().map(AttendanceArrangementArea::getAreaId).collect(Collectors.toList());
// List<AttendanceArea> attendanceAreaList = attendanceAreaMapper.selectBatchIds(areaIdList);
// vo.setAttendanceAreaList(attendanceAreaList);
// 判断当前考勤组的班制是固定班制还是排班制
if (Objects.equals(attendanceGroup.getAttendanceType(), StatusConstant.FIXEDSCHEDULE)) {

View File

@@ -1,38 +1,30 @@
package org.dromara.property.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil;
import jodd.util.StringUtil;
import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.property.domain.ResidentPerson;
import org.dromara.property.domain.vo.ResidentUnitVo;
import org.dromara.property.mapper.ResidentPersonMapper;
import org.dromara.resource.api.RemoteMessageService;
import org.dromara.system.api.model.LoginUser;
import org.springframework.stereotype.Service;
import org.dromara.property.domain.CustomerNotices;
import org.dromara.property.domain.bo.CustomerNoticesBo;
import org.dromara.property.domain.vo.CustomerNoticesVo;
import org.dromara.property.domain.CustomerNotices;
import org.dromara.property.mapper.CustomerNoticesMapper;
import org.dromara.property.service.ICustomerNoticesService;
import org.dromara.resource.api.RemoteMessageService;
import org.dromara.system.api.RemoteUserService;
import org.dromara.system.api.domain.vo.RemoteUserVo;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -47,9 +39,10 @@ import java.util.stream.Collectors;
public class CustomerNoticesServiceImpl implements ICustomerNoticesService {
private final CustomerNoticesMapper baseMapper;
private final ResidentPersonMapper residentPersonMapper;
@DubboReference
private RemoteMessageService remoteMessageService;
@DubboReference
private RemoteUserService remoteUserService;
/**
* 查询客户服务-通知公告
@@ -59,23 +52,26 @@ public class CustomerNoticesServiceImpl implements ICustomerNoticesService {
*/
@Override
public CustomerNoticesVo queryById(Long id) {
List<ResidentPerson> residentPeople = residentPersonMapper.selectList();
CustomerNoticesVo customerNoticesVo = baseMapper.selectVoById(id);
if (CollUtil.isNotEmpty(residentPeople)) {
ResidentPerson residentPerson = residentPeople.stream()
.filter(vo -> vo.getId() != null && vo.getId().equals(customerNoticesVo.getIssuers())).findFirst().orElse(null);
customerNoticesVo.setIssuersName(residentPerson.getUserName());
String nickName = remoteUserService.selectNicknameById(customerNoticesVo.getIssuers());
customerNoticesVo.setIssuersName(nickName);
if (ObjectUtil.isNotEmpty(customerNoticesVo.getNoticePersion())) {
List<String> list = Arrays.asList(customerNoticesVo.getNoticePersion().split(","));
List<ResidentPerson> filteredList = residentPeople.stream()
.filter(person -> list.contains(person.getId().toString()))
List<Long> idList = Arrays.stream(customerNoticesVo.getNoticePersion().split(","))
.map(String::trim)
.filter(StringUtils::isNotBlank)
.filter(s -> s.matches("\\d+")) // 确保是数字格式
.map(Long::valueOf)
.collect(Collectors.toList());
String usernames = filteredList.stream()
.map(ResidentPerson::getUserName) // 假设ResidentPerson类有一个getUserName方法
List<RemoteUserVo> remoteUserVos = remoteUserService.selectListByIds(idList);
List<RemoteUserVo> userVo = remoteUserVos.stream()
.filter(person -> idList.contains(person.getUserId()))
.collect(Collectors.toList());
String usernames = userVo.stream()
.map(RemoteUserVo::getNickName)
// 假设ResidentPerson类有一个getUserName方法
.collect(Collectors.joining(","));
customerNoticesVo.setNoticePersionName(StringUtils.isNotBlank(usernames)?usernames:null);
customerNoticesVo.setNoticePersionName(usernames);
}
}
return customerNoticesVo;
}
@@ -90,24 +86,51 @@ public class CustomerNoticesServiceImpl implements ICustomerNoticesService {
public TableDataInfo<CustomerNoticesVo> queryPageList(CustomerNoticesBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<CustomerNotices> lqw = buildQueryWrapper(bo);
Page<CustomerNoticesVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
// 将通知人字段和发布人字段装到一个list中,这两个字段都是用户id,放在一个list<Long>中
List<Long> allUserIds = new ArrayList<>();
if (CollUtil.isNotEmpty(result.getRecords())) {
List<ResidentPerson> residentPeople = residentPersonMapper.selectList();
if (CollUtil.isNotEmpty(residentPeople)) {
// 提取发布人ID
List<Long> issuerIds = result.getRecords().stream()
.filter(vo -> ObjectUtil.isNotEmpty(vo.getIssuers()))
.map(CustomerNoticesVo::getIssuers)
.distinct()
.collect(Collectors.toList());
allUserIds.addAll(issuerIds);
// 提取所有通知人ID
List<Long> noticePersonIds = result.getRecords().stream()
.filter(vo -> StringUtils.isNotBlank(vo.getNoticePersion()))
.flatMap(vo -> Arrays.stream(vo.getNoticePersion().split(",")))
.filter(StringUtils::isNotBlank)
.map(String::trim)
.distinct()
.map(Long::valueOf)
.collect(Collectors.toList());
allUserIds.addAll(noticePersonIds);
// 去重
List<Long> uniqueUserIds = allUserIds.stream()
.distinct()
.collect(Collectors.toList());
List<RemoteUserVo> remoteUserVos = remoteUserService.selectListByIds(uniqueUserIds);
if (CollUtil.isNotEmpty(remoteUserVos)) {
result.getRecords().stream().forEach(s -> {
ResidentPerson residentPerson = residentPeople.stream()
.filter(vo -> vo.getId() != null && vo.getId().equals(s.getIssuers())).findFirst().orElse(null);
s.setIssuersName(residentPerson.getUserName());
RemoteUserVo remoteUserVo = remoteUserVos.stream()
.filter(vo -> vo.getUserId() != null && vo.getUserId().equals(s.getIssuers())).findFirst().orElse(null);
if(ObjectUtil.isNotEmpty(remoteUserVo)){
s.setIssuersName(remoteUserVo.getNickName());
}
if (ObjectUtil.isNotEmpty(s.getNoticePersion())) {
List<String> list = Arrays.asList(s.getNoticePersion().split(","));
List<ResidentPerson> filteredList = residentPeople.stream()
.filter(person -> list.contains(person.getId().toString()))
List<RemoteUserVo> userVo = remoteUserVos.stream()
.filter(person -> list.contains(person.getUserId().toString()))
.collect(Collectors.toList());
String usernames = filteredList.stream()
.map(ResidentPerson::getUserName) // 假设ResidentPerson类有一个getUserName方法
String usernames = userVo.stream()
.map(RemoteUserVo::getNickName)
// 假设ResidentPerson类有一个getUserName方法
.collect(Collectors.joining(","));
s.setIssuersName(usernames);
s.setNoticePersionName(usernames);
}
});
}
@@ -152,6 +175,7 @@ public class CustomerNoticesServiceImpl implements ICustomerNoticesService {
public Boolean insertByBo(CustomerNoticesBo bo) {
CustomerNotices add = MapstructUtils.convert(bo, CustomerNotices.class);
validEntityBeforeSave(add);
add.setIssuers(LoginHelper.getUserId());
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
@@ -188,11 +212,6 @@ public class CustomerNoticesServiceImpl implements ICustomerNoticesService {
*/
private void validEntityBeforeSave(CustomerNotices entity) {
//TODO 做一些数据校验,如唯一约束
LoginUser user = LoginHelper.getLoginUser();
ResidentPerson residentPerson = residentPersonMapper.selectOne(new LambdaQueryWrapper<ResidentPerson>()
.eq(ResidentPerson::getUserId, user.getUserId()));
Assert.isTrue(ObjectUtil.isNotEmpty(residentPerson), "该发布人未入住");
entity.setIssuers(residentPerson.getId());
}
/**

View File

@@ -5,10 +5,7 @@ import org.dromara.property.domain.enums.BookingPayStatusEnum;
import org.dromara.property.domain.enums.BookingStatusEnum;
import org.dromara.property.domain.enums.MeetAttachStatusEnum;
import org.dromara.property.domain.enums.MeetStatusEnum;
import org.dromara.property.service.EnumFetcherService;
import org.dromara.property.service.IMeetAttachService;
import org.dromara.property.service.IMeetBookingService;
import org.dromara.property.service.IMeetService;
import org.dromara.property.service.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -32,6 +29,8 @@ public class EnumFetcherServiceImpl implements EnumFetcherService {
private IMeetAttachService meetAttachService;
@Autowired
private IMeetBookingService meetBookingService;
@Autowired
private IServiceWorkOrdersService serviceWorkOrdersService;
@Override
public List<Map<Object, Object>> getEnumValues(String type) {
@@ -54,6 +53,8 @@ public class EnumFetcherServiceImpl implements EnumFetcherService {
return getMeetBookingPayStatus();
case "getMeetBookingStatus":
return getMeetBookingStatus();
case "getServiceWorkOrdersHandler":
return serviceWorkOrdersService.getServiceWorkOrdersHandler(type);
default:
throw new IllegalArgumentException("Unknown type: " + type);
}

View File

@@ -0,0 +1,190 @@
package org.dromara.property.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.property.domain.enums.ActivitiesStatusEnum;
import org.dromara.property.domain.vo.CustomerNoticesVo;
import org.dromara.system.api.RemoteUserService;
import org.dromara.system.api.domain.vo.RemoteUserVo;
import org.springframework.stereotype.Service;
import org.dromara.property.domain.bo.PopularActivitiesBo;
import org.dromara.property.domain.vo.PopularActivitiesVo;
import org.dromara.property.domain.PopularActivities;
import org.dromara.property.mapper.PopularActivitiesMapper;
import org.dromara.property.service.IPopularActivitiesService;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.logging.Handler;
import java.util.stream.Collectors;
/**
* 热门活动Service业务层处理
*
* @author LionLi
* @date 2025-08-19
*/
@Slf4j
@RequiredArgsConstructor
@Service
public class PopularActivitiesServiceImpl implements IPopularActivitiesService {
private final PopularActivitiesMapper baseMapper;
@DubboReference
private RemoteUserService remoteUserService;
/**
* 查询热门活动
*
* @param id 主键
* @return 热门活动
*/
@Override
public PopularActivitiesVo queryById(Long id) {
PopularActivitiesVo popularActivitiesVo = baseMapper.selectVoById(id);
popularActivitiesVo.setCreateName(remoteUserService.selectUserNameById(popularActivitiesVo.getCreateBy()));
return popularActivitiesVo;
}
/**
* 分页查询热门活动列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 热门活动分页列表
*/
@Override
public TableDataInfo<PopularActivitiesVo> queryPageList(PopularActivitiesBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<PopularActivities> lqw = buildQueryWrapper(bo);
Page<PopularActivitiesVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
// 提取发布人ID
List<Long> allUserIds = new ArrayList<>();
if (CollUtil.isNotEmpty(result.getRecords())) {
List<Long> createIds = result.getRecords().stream()
.filter(vo -> ObjectUtil.isNotEmpty(vo.getCreateBy()))
.map(PopularActivitiesVo::getCreateBy)
.distinct()
.collect(Collectors.toList());
allUserIds.addAll(createIds);
}
List<RemoteUserVo> remoteUserVos = remoteUserService.selectListByIds(allUserIds);
result.getRecords().stream().forEach(s -> {
handlerData(s, remoteUserVos);
});
return TableDataInfo.build(result);
}
private void handlerData(PopularActivitiesVo popularActivitiesVo, List<RemoteUserVo> remoteUserVos) {
if (ObjectUtil.isNotEmpty(popularActivitiesVo.getCreateBy()) && CollUtil.isNotEmpty(remoteUserVos)) {
// 从remoteUserVos中寻找对应的createby和userid相等的
RemoteUserVo remoteUserVo = remoteUserVos.stream()
.filter(user -> user.getUserId() != null && user.getUserId().equals(popularActivitiesVo.getCreateBy()))
.findFirst()
.orElse(null);
if (ObjectUtil.isNotEmpty(remoteUserVo)) {
popularActivitiesVo.setCreateName(remoteUserVo.getNickName());
}
}
}
/**
* 查询符合条件的热门活动列表
*
* @param bo 查询条件
* @return 热门活动列表
*/
@Override
public List<PopularActivitiesVo> queryList(PopularActivitiesBo bo) {
LambdaQueryWrapper<PopularActivities> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<PopularActivities> buildQueryWrapper(PopularActivitiesBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<PopularActivities> lqw = Wrappers.lambdaQuery();
lqw.orderByAsc(PopularActivities::getId);
lqw.eq(StringUtils.isNotBlank(bo.getTitle()), PopularActivities::getTitle, bo.getTitle());
lqw.eq(bo.getStartTime() != null, PopularActivities::getStartTime, bo.getStartTime());
lqw.eq(bo.getEndTime() != null, PopularActivities::getEndTime, bo.getEndTime());
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), PopularActivities::getStatus, bo.getStatus());
lqw.eq(StringUtils.isNotBlank(bo.getSearchValue()), PopularActivities::getSearchValue, bo.getSearchValue());
return lqw;
}
/**
* 新增热门活动
*
* @param bo 热门活动
* @return 是否新增成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean insertByBo(PopularActivitiesBo bo) {
PopularActivities add = MapstructUtils.convert(bo, PopularActivities.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改热门活动
*
* @param bo 热门活动
* @return 是否修改成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateByBo(PopularActivitiesBo bo) {
PopularActivities update = MapstructUtils.convert(bo, PopularActivities.class);
validEntityBeforeUpdate(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(PopularActivities entity) {
//TODO拿当前时间和开始时间和结束时间做对比修改状态
Date now = new Date();
entity.setStatus(
now.before(entity.getStartTime()) ? ActivitiesStatusEnum.NOTSTARTED.getValue() :
now.after(entity.getEndTime()) ? ActivitiesStatusEnum.HASENDED.getValue() : ActivitiesStatusEnum.INPROGRESS.getValue()
);
}
/**
* 修改前的数据校验
*/
private void validEntityBeforeUpdate(PopularActivities entity) {
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除热门活动信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@@ -17,10 +17,7 @@ import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.property.domain.ResidentPerson;
import org.dromara.property.domain.ServiceWorkOrders;
import org.dromara.property.domain.ServiceWorkOrdersRecord;
import org.dromara.property.domain.ServiceWorkOrdersType;
import org.dromara.property.domain.*;
import org.dromara.property.domain.bo.ServiceWorkOrdersBo;
import org.dromara.property.domain.bo.mobile.MServiceWorkOrdersBo;
import org.dromara.property.domain.vo.*;
@@ -168,7 +165,10 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
.map(ServiceWorkOrdersType::getId)
.collect(Collectors.toList());
typeIds.add(bo.getType());
List<String> statusList = Arrays.asList(bo.getStatus().split(","));
List<String> statusList = new ArrayList<>();
if(StringUtils.isNotBlank(bo.getStatus())){
statusList = Arrays.asList(bo.getStatus().split(","));
}
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<ServiceWorkOrders> lqw = Wrappers.lambdaQuery();
lqw.orderByAsc(ServiceWorkOrders::getId);
@@ -518,5 +518,31 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
}
return flag;
}
public List<ServiceWorkOrders> getList() {
LambdaQueryWrapper<ServiceWorkOrders> serviceWorkOrdersWrapper = new LambdaQueryWrapper<>();
return baseMapper.selectList(serviceWorkOrdersWrapper);
}
@Override
public List<Map<Object, Object>> getServiceWorkOrdersHandler(String type) {
return switch (type) {
case "getServiceWorkOrdersHandler" -> getList().stream()
.map(ServiceWorkOrders::getHandler)
.filter(Objects::nonNull)
.distinct()
.map(handler -> {
Map<Object, Object> map = new HashMap<>();
map.put("value", handler);
// 获取处理人详细信息
RemoteUserVo userInfo = remoteUserService.getUserInfoById(Long.valueOf(handler));
map.put("name", ObjectUtil.isNotNull(userInfo) ? userInfo.getNickName() : handler);
return map;
})
.collect(Collectors.toList());
default -> throw new IllegalArgumentException("Unknown type: " + type);
};
}
}

View File

@@ -15,10 +15,12 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.redis.utils.RedisUtils;
import org.dromara.property.domain.bo.QrCodeInfo;
import org.dromara.resource.api.RemoteFileService;
import org.dromara.sis.api.RemoteVisitorService;
import org.dromara.sis.api.domain.RemoteVisitor;
import org.dromara.system.api.RemoteUserService;
import org.dromara.system.api.domain.vo.RemoteUserVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.dromara.property.domain.bo.TbVisitorManagementBo;
import org.dromara.property.domain.vo.TbVisitorManagementVo;
@@ -49,6 +51,10 @@ public class TbVisitorManagementServiceImpl implements ITbVisitorManagementServi
@DubboReference
private RemoteVisitorService remoteVisitorService;
@DubboReference
private RemoteFileService remoteFileService;
/**
* 查询访客管理
*
@@ -57,7 +63,18 @@ public class TbVisitorManagementServiceImpl implements ITbVisitorManagementServi
*/
@Override
public TbVisitorManagementVo queryById(Long id) {
return baseMapper.selectVoById(id);
// TbVisitorManagementVo tbVisitorManagementVo = baseMapper.selectVoById(id);
//获取ossId
TbVisitorManagementVo tbVisitorManagementVo = baseMapper.selectVoById(id);
if (tbVisitorManagementVo.getFacePictures() == null) {
return baseMapper.selectVoById(id);
} else {
String facePictures = tbVisitorManagementVo.getFacePictures();
String url = remoteFileService.selectUrlByIds(facePictures);
tbVisitorManagementVo.setUrl(url);
return baseMapper.selectVoById(id);
}
}
/**
@@ -123,6 +140,11 @@ public class TbVisitorManagementServiceImpl implements ITbVisitorManagementServi
add.setTenantId(userInfoById.getTenantId());
add.setCreateBy(userInfoById.getUserId());
add.setUpdateById(userInfoById.getUserId());
// //文件上传时获取ossId
// String ossId = String.valueOf(remoteFileService.uploadImg(bo.getFacePictures().getBytes()).getOssId());
// add.setFacePictures(ossId);
add.setUpdateBy(userInfoById.getUserId());
add.setCreateDept(userInfoById.getDeptId());
boolean flag = baseMapper.insert(add) > 0;
@@ -147,6 +169,11 @@ public class TbVisitorManagementServiceImpl implements ITbVisitorManagementServi
public Boolean insertVistorManagementByBo(TbVisitorManagementBo bo) {
// QrCodeInfo info = RedisUtils.getCacheObject("Qrcode" + bo.getQrCodeId());
TbVisitorManagement add = MapstructUtils.convert(bo, TbVisitorManagement.class);
//文件上传时获取ossId
// String ossId = String.valueOf(remoteFileService.uploadImg(bo.getFacePictures().getBytes()).getOssId());
// add.setFacePictures(ossId);
validEntityBeforeSave(add);
// add.setCreateById(info.getUserid());
boolean flag = baseMapper.insert(add) > 0;

View File

@@ -0,0 +1,160 @@
package org.dromara.property.service.impl.smartDevicesImpl;
import cn.hutool.core.lang.Assert;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.property.domain.vo.TbFloorVo;
import org.dromara.property.service.ITbFloorService;
import org.springframework.stereotype.Service;
import org.dromara.property.domain.bo.smartDevicesBo.TbLightInfoBo;
import org.dromara.property.domain.vo.smartDevicesVo.TbLightInfoVo;
import org.dromara.property.domain.TbLightInfo;
import org.dromara.property.mapper.smartDevicesMapper.TbLightInfoMapper;
import org.dromara.property.service.smartDevicesService.ITbLightInfoService;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 灯控开关信息Service业务层处理
*
* @author lsm
* @since 2025-08-19
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class TbLightInfoServiceImpl implements ITbLightInfoService {
private final TbLightInfoMapper baseMapper;
private final ITbFloorService floorService;
/**
* 查询灯控开关信息
*
* @param id 主键
* @return 灯控开关信息
*/
@Override
public TbLightInfoVo queryById(Long id) {
return baseMapper.selectVoById(id);
}
/**
* 分页查询灯控开关信息列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 灯控开关信息分页列表
*/
@Override
public TableDataInfo<TbLightInfoVo> queryPageList(TbLightInfoBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<TbLightInfo> lqw = buildQueryWrapper(bo);
Page<TbLightInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
result.getRecords().forEach(r -> r.setFloorName(floorService.queryById(r.getFloorId()).getFloorName()));
return TableDataInfo.build(result);
}
/**
* 查询符合条件的灯控开关信息列表
*
* @param bo 查询条件
* @return 灯控开关信息列表
*/
@Override
public List<TbLightInfoVo> queryList(TbLightInfoBo bo) {
LambdaQueryWrapper<TbLightInfo> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<TbLightInfo> buildQueryWrapper(TbLightInfoBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<TbLightInfo> lqw = Wrappers.lambdaQuery();
lqw.orderByAsc(TbLightInfo::getId);
lqw.eq(StringUtils.isNotBlank(bo.getLocationRemark()), TbLightInfo::getLocationRemark, bo.getLocationRemark());
lqw.eq(bo.getIsOn() != null, TbLightInfo::getIsOn, bo.getIsOn());
lqw.eq(bo.getCode() != null, TbLightInfo::getCode, bo.getCode());
lqw.eq(bo.getCommunityId() != null, TbLightInfo::getCommunityId, bo.getCommunityId());
lqw.eq(bo.getBuildingId() != null, TbLightInfo::getBuildingId, bo.getBuildingId());
lqw.eq(bo.getUnitId() != null, TbLightInfo::getUnitId, bo.getUnitId());
lqw.eq(bo.getFloorId() != null, TbLightInfo::getFloorId, bo.getFloorId());
return lqw;
}
/**
* 新增灯控开关信息
*
* @param bo 灯控开关信息
* @return 是否新增成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean insertByBo(TbLightInfoBo bo) {
TbLightInfo add = MapstructUtils.convert(bo, TbLightInfo.class);
assert add != null;
TbFloorVo floor = floorService.queryById(add.getFloorId());
add.setBuildingId(floor.getBuildingId());
add.setCommunityId(floor.getCommunityId());
boolean flag = baseMapper.insert(add) > 0;
Assert.isTrue(flag, "新增灯控开关信息失败");
return flag;
}
/**
* 修改灯控开关信息
*
* @param bo 灯控开关信息
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(TbLightInfoBo bo) {
TbLightInfo update = MapstructUtils.convert(bo, TbLightInfo.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(TbLightInfo entity) {
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除灯控开关信息信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
/**
* 单个灯开关控制
*
* @param bo bean
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean switchSingleLight(TbLightInfoBo bo){
TbLightInfo update = MapstructUtils.convert(bo, TbLightInfo.class);
boolean flag = baseMapper.updateById(update) > 0;
Assert.isTrue(flag, "修改灯开关失败");
return flag;
}
}

View File

@@ -1,4 +1,4 @@
package org.dromara.property.service.impl;
package org.dromara.property.service.impl.smartDevicesImpl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -9,11 +9,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.dromara.property.domain.bo.TbMeterConfigBo;
import org.dromara.property.domain.vo.TbMeterConfigVo;
import org.dromara.property.domain.bo.smartDevicesBo.TbMeterConfigBo;
import org.dromara.property.domain.vo.smartDevicesVo.TbMeterConfigVo;
import org.dromara.property.domain.TbMeterConfig;
import org.dromara.property.mapper.TbMeterConfigMapper;
import org.dromara.property.service.ITbMeterConfigService;
import org.dromara.property.mapper.smartDevicesMapper.TbMeterConfigMapper;
import org.dromara.property.service.smartDevicesService.ITbMeterConfigService;
import java.util.List;
import java.util.Map;

View File

@@ -1,4 +1,4 @@
package org.dromara.property.service.impl;
package org.dromara.property.service.impl.smartDevicesImpl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
@@ -10,11 +10,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.dromara.property.domain.bo.TbMeterInfoBo;
import org.dromara.property.domain.vo.TbMeterInfoVo;
import org.dromara.property.domain.bo.smartDevicesBo.TbMeterInfoBo;
import org.dromara.property.domain.vo.smartDevicesVo.TbMeterInfoVo;
import org.dromara.property.domain.TbMeterInfo;
import org.dromara.property.mapper.TbMeterInfoMapper;
import org.dromara.property.service.ITbMeterInfoService;
import org.dromara.property.mapper.smartDevicesMapper.TbMeterInfoMapper;
import org.dromara.property.service.smartDevicesService.ITbMeterInfoService;
import java.util.List;
import java.util.Map;

View File

@@ -1,4 +1,4 @@
package org.dromara.property.service.impl;
package org.dromara.property.service.impl.smartDevicesImpl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
@@ -10,11 +10,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.dromara.property.domain.bo.TbMeterRecordBo;
import org.dromara.property.domain.vo.TbMeterRecordVo;
import org.dromara.property.domain.bo.smartDevicesBo.TbMeterRecordBo;
import org.dromara.property.domain.vo.smartDevicesVo.TbMeterRecordVo;
import org.dromara.property.domain.TbMeterRecord;
import org.dromara.property.mapper.TbMeterRecordMapper;
import org.dromara.property.service.ITbMeterRecordService;
import org.dromara.property.mapper.smartDevicesMapper.TbMeterRecordMapper;
import org.dromara.property.service.smartDevicesService.ITbMeterRecordService;
import java.util.List;
import java.util.Map;

View File

@@ -1,4 +1,4 @@
package org.dromara.property.service.impl;
package org.dromara.property.service.impl.smartDevicesImpl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -9,11 +9,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.dromara.property.domain.bo.TbMeterRoomBo;
import org.dromara.property.domain.vo.TbMeterRoomVo;
import org.dromara.property.domain.bo.smartDevicesBo.TbMeterRoomBo;
import org.dromara.property.domain.vo.smartDevicesVo.TbMeterRoomVo;
import org.dromara.property.domain.TbMeterRoom;
import org.dromara.property.mapper.TbMeterRoomMapper;
import org.dromara.property.service.ITbMeterRoomService;
import org.dromara.property.mapper.smartDevicesMapper.TbMeterRoomMapper;
import org.dromara.property.service.smartDevicesService.ITbMeterRoomService;
import java.util.List;
import java.util.Map;

View File

@@ -0,0 +1,75 @@
package org.dromara.property.service.smartDevicesService;
import org.dromara.property.domain.vo.smartDevicesVo.TbLightInfoVo;
import org.dromara.property.domain.bo.smartDevicesBo.TbLightInfoBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* 灯控开关信息Service接口
*
* @author lsm
* @since 2025-08-19
*/
public interface ITbLightInfoService {
/**
* 查询灯控开关信息
*
* @param id 主键
* @return 灯控开关信息
*/
TbLightInfoVo queryById(Long id);
/**
* 分页查询灯控开关信息列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 灯控开关信息分页列表
*/
TableDataInfo<TbLightInfoVo> queryPageList(TbLightInfoBo bo, PageQuery pageQuery);
/**
* 查询符合条件的灯控开关信息列表
*
* @param bo 查询条件
* @return 灯控开关信息列表
*/
List<TbLightInfoVo> queryList(TbLightInfoBo bo);
/**
* 新增灯控开关信息
*
* @param bo 灯控开关信息
* @return 是否新增成功
*/
Boolean insertByBo(TbLightInfoBo bo);
/**
* 修改灯控开关信息
*
* @param bo 灯控开关信息
* @return 是否修改成功
*/
Boolean updateByBo(TbLightInfoBo bo);
/**
* 校验并批量删除灯控开关信息信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 单个灯开关控制
*
* @param bo bean
*/
Boolean switchSingleLight(TbLightInfoBo bo);
}

View File

@@ -1,7 +1,7 @@
package org.dromara.property.service;
package org.dromara.property.service.smartDevicesService;
import org.dromara.property.domain.vo.TbMeterConfigVo;
import org.dromara.property.domain.bo.TbMeterConfigBo;
import org.dromara.property.domain.vo.smartDevicesVo.TbMeterConfigVo;
import org.dromara.property.domain.bo.smartDevicesBo.TbMeterConfigBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;

View File

@@ -1,8 +1,7 @@
package org.dromara.property.service;
package org.dromara.property.service.smartDevicesService;
import org.dromara.property.domain.TbMeterInfo;
import org.dromara.property.domain.vo.TbMeterInfoVo;
import org.dromara.property.domain.bo.TbMeterInfoBo;
import org.dromara.property.domain.vo.smartDevicesVo.TbMeterInfoVo;
import org.dromara.property.domain.bo.smartDevicesBo.TbMeterInfoBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;

View File

@@ -1,8 +1,7 @@
package org.dromara.property.service;
package org.dromara.property.service.smartDevicesService;
import org.dromara.property.domain.TbMeterRecord;
import org.dromara.property.domain.vo.TbMeterRecordVo;
import org.dromara.property.domain.bo.TbMeterRecordBo;
import org.dromara.property.domain.vo.smartDevicesVo.TbMeterRecordVo;
import org.dromara.property.domain.bo.smartDevicesBo.TbMeterRecordBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;

View File

@@ -1,7 +1,7 @@
package org.dromara.property.service;
package org.dromara.property.service.smartDevicesService;
import org.dromara.property.domain.vo.TbMeterRoomVo;
import org.dromara.property.domain.bo.TbMeterRoomBo;
import org.dromara.property.domain.vo.smartDevicesVo.TbMeterRoomVo;
import org.dromara.property.domain.bo.smartDevicesBo.TbMeterRoomBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;

View File

@@ -0,0 +1,50 @@
package org.dromara.property.tasks;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.property.domain.PopularActivities;
import org.dromara.property.domain.enums.ActivitiesStatusEnum;
import org.dromara.property.mapper.PopularActivitiesMapper;
import org.dromara.property.service.IPopularActivitiesService;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
/**
* @author yuyongle
* @version 1.0
* @description: TODO
* @date 2025/8/20 10:22
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class PopularActivitiesTasks {
private final PopularActivitiesMapper popularActivitiesMapper;
/**
* 修改活动到期的活动状态
*/
@Transactional(rollbackFor = Exception.class)
@Scheduled(cron = "0 0 */1 * * ?")
//@GetMapping("/serviceWorkOrderTaskId")
private void handlePopularActivities() {
List<PopularActivities> popularActivities = popularActivitiesMapper.selectList(
new LambdaQueryWrapper<PopularActivities>()
.ne(PopularActivities::getStatus, ActivitiesStatusEnum.HASENDED.getValue())
);
Date now = new Date();
popularActivities.stream().forEach(entity ->{
//TODO拿当前时间和开始时间和结束时间做对比修改状态
entity.setStatus(
now.before(entity.getStartTime()) ? ActivitiesStatusEnum.NOTSTARTED.getValue() :
now.after(entity.getEndTime()) ? ActivitiesStatusEnum.HASENDED.getValue() : ActivitiesStatusEnum.INPROGRESS.getValue()
);
});
popularActivitiesMapper.updateBatchById(popularActivities);
}
}

View File

@@ -48,9 +48,9 @@ public class ServiceWorkOrderTasks {
/**
* 查询状态为创建工单的工单,查询当天排班人员,为工单自动派单
*/
// @Transactional(rollbackFor = Exception.class)
// @Scheduled(cron = "0 0 */1 * * ?")
@GetMapping("/serviceWorkOrderTaskId")
@Transactional(rollbackFor = Exception.class)
@Scheduled(cron = "0 0 */1 * * ?")
//@GetMapping("/serviceWorkOrderTaskId")
private void handleServiceWorkOrder() {
List<ServiceWorkOrders> serviceWorkOrderList = workOrdersMapper.selectList(
new LambdaQueryWrapper<ServiceWorkOrders>()
@@ -88,9 +88,9 @@ public class ServiceWorkOrderTasks {
/**
* 处理超过30分钟的工单
*/
// @Transactional(rollbackFor = Exception.class)
// @Scheduled(cron = "0 0 */1 * * ?")
@GetMapping("/thirtyWorkOrderTaskId")
@Transactional(rollbackFor = Exception.class)
@Scheduled(cron = "0 0 */1 * * ?")
// @GetMapping("/thirtyWorkOrderTaskId")
private void thirtyHandleServiceWorkOrder() {
// 1. 查询当前状态为“已派单”的工单
List<ServiceWorkOrders> serviceWorkOrderList = workOrdersMapper.selectList(

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.property.mapper.PopularActivitiesMapper">
</mapper>

View File

@@ -9,13 +9,14 @@ RUN mkdir -p /smartparks/Sis/logs \
/smartparks/Sis/temp \
/smartparks/Sis/agent
WORKDIR /ruoyi/system
WORKDIR /ruoyi/sis
ENV SERVER_PORT=9201 LANG=C.UTF-8 LC_ALL=C.UTF-8 JAVA_OPTS=""
ENV SERVER_PORT=10002 LANG=C.UTF-8 LC_ALL=C.UTF-8 JAVA_OPTS=""
EXPOSE ${SERVER_PORT}
ADD ./target/Sis.jar ./app.jar
COPY ./linux64/ .
SHELL ["/bin/bash", "-c"]

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="GB2312"?>
<SdkLocal>
<SdkLog>
<logLevel>3</logLevel><!--req, 1-ERROR, 2-DEBUG, 3-INFO-->
<logDirectory>./SDKLOG/</logDirectory><!--the end of the string must be '/'-->
<autoDelete>true</autoDelete><!--true: There are less than 10 files in the directory, it will be auto deleted by sdk when the files are more than 10; false: No upper limit to the number of log files-->
</SdkLog>
<HeartbeatCfg>
<Interval>120</Interval> <!-- <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EBA3AC><EFBFBD><EFBFBD>0<EFBFBD><30>ʹ<EFBFBD><CAB9>Ĭ<EFBFBD><C4AC>ֵ120s<30><73>ȡֵ<C8A1><D6B5>ΧΪ[30, 120] С<><D0A1>30s<30><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ30s<30><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD>120s<30><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ120s-->
<Count>1</Count> <!-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30>ʹ<EFBFBD><CAB9>Ĭ<EFBFBD><C4AC>ֵ1<D6B5><31>-->
</HeartbeatCfg>
</SdkLocal>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -24,4 +24,5 @@ public interface CommonBeanCovert {
List<RemoteSdkChannel> sdkChannelEntity2Remote(List<DeviceInfo.DeviceChannelInfo> sdkChannels);
RemoteSisDeviceManage entities2Remote(SisDeviceManage sisDeviceManage);
}

Some files were not shown because too many files have changed in this diff Show More