From 9a6bd54fbac0670dcf1c3a59588c5c642b566f69 Mon Sep 17 00:00:00 2001 From: yuyongle <1150359267@qq.com> Date: Mon, 8 Sep 2025 16:41:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AE=A2=E6=88=B7=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E6=B4=BB=E5=8A=A8=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CustomerActivityController.java | 106 ++++++++++++ .../property/controller/TbRoomController.java | 2 +- .../mobile/MCustomerNoticesController.java | 38 ++++ .../property/domain/CustomerActivity.java | 78 +++++++++ .../domain/bo/CustomerActivityBo.java | 77 +++++++++ .../domain/entity/resident/ResidentUnit.java | 5 +- .../domain/vo/CustomerActivityVo.java | 93 ++++++++++ .../domain/vo/residentVo/ResidentUnitVo.java | 5 + .../mapper/CustomerActivityMapper.java | 15 ++ .../service/ICustomerActivityService.java | 69 ++++++++ .../service/ICustomerNoticesService.java | 9 + .../impl/CustomerActivityServiceImpl.java | 162 ++++++++++++++++++ .../impl/CustomerNoticesServiceImpl.java | 11 ++ .../impl/InspectionTaskDetailServiceImpl.java | 32 +++- .../impl/ServiceWorkOrdersServiceImpl.java | 1 + .../service/impl/TbRoomServiceImpl.java | 7 +- .../residentImpl/ResidentUnitServiceImpl.java | 23 ++- .../Property/CustomerActivityMapper.xml | 7 + 18 files changed, 726 insertions(+), 14 deletions(-) create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/controller/CustomerActivityController.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/controller/mobile/MCustomerNoticesController.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/domain/CustomerActivity.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CustomerActivityBo.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CustomerActivityVo.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/CustomerActivityMapper.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/service/ICustomerActivityService.java create mode 100644 ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CustomerActivityServiceImpl.java create mode 100644 ruoyi-modules/Property/src/main/resources/mapper/Property/CustomerActivityMapper.xml diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/CustomerActivityController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/CustomerActivityController.java new file mode 100644 index 00000000..1601f98e --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/CustomerActivityController.java @@ -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.CustomerActivityVo; +import org.dromara.property.domain.bo.CustomerActivityBo; +import org.dromara.property.service.ICustomerActivityService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 客户服务-活动 + * 前端访问路由地址为:/property/activity + * + * @author yuyongle + * @date 2025-09-08 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/activity") +public class CustomerActivityController extends BaseController { + + private final ICustomerActivityService customerActivityService; + + /** + * 查询客户服务-活动列表 + */ + @SaCheckPermission("property:activity:list") + @GetMapping("/list") + public TableDataInfo list(CustomerActivityBo bo, PageQuery pageQuery) { + return customerActivityService.queryPageList(bo, pageQuery); + } + + /** + * 导出客户服务-活动列表 + */ + @SaCheckPermission("property:activity:export") + @Log(title = "客户服务-活动", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(CustomerActivityBo bo, HttpServletResponse response) { + List list = customerActivityService.queryList(bo); + ExcelUtil.exportExcel(list, "客户服务-活动", CustomerActivityVo.class, response); + } + + /** + * 获取客户服务-活动详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("property:activity:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return R.ok(customerActivityService.queryById(id)); + } + + /** + * 新增客户服务-活动 + */ + @SaCheckPermission("property:activity:add") + @Log(title = "客户服务-活动", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody CustomerActivityBo bo) { + return toAjax(customerActivityService.insertByBo(bo)); + } + + /** + * 修改客户服务-活动 + */ + @SaCheckPermission("property:activity:edit") + @Log(title = "客户服务-活动", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody CustomerActivityBo bo) { + return toAjax(customerActivityService.updateByBo(bo)); + } + + /** + * 删除客户服务-活动 + * + * @param ids 主键串 + */ + @SaCheckPermission("property:activity:remove") + @Log(title = "客户服务-活动", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable("ids") Long[] ids) { + return toAjax(customerActivityService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/TbRoomController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/TbRoomController.java index a1c30400..1423204b 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/TbRoomController.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/TbRoomController.java @@ -62,7 +62,7 @@ public class TbRoomController extends BaseController { * * @param id 主键 */ - @SaCheckPermission("property:room:query") + // @SaCheckPermission("property:room:query") @GetMapping("/{id}") public R getInfo(@NotNull(message = "主键不能为空") @PathVariable("id") Long id) { diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/mobile/MCustomerNoticesController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/mobile/MCustomerNoticesController.java new file mode 100644 index 00000000..0bebd6cb --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/mobile/MCustomerNoticesController.java @@ -0,0 +1,38 @@ +package org.dromara.property.controller.mobile; + + +import lombok.RequiredArgsConstructor; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.property.domain.bo.CustomerNoticesBo; +import org.dromara.property.domain.vo.CustomerNoticesVo; +import org.dromara.property.service.ICustomerNoticesService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author yuyongle + * @version 1.0 + * @description: TODO + * @date 2025/9/8 11:15 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/mobile/notices") +public class MCustomerNoticesController { + private final ICustomerNoticesService customerNoticesService; + + /** + * 头条滚动列表 + * @param bo + * @param pageQuery + * @return + */ + @GetMapping("/todayList") + public TableDataInfo todayList(CustomerNoticesBo bo, PageQuery pageQuery) { + return customerNoticesService.todayList(bo, pageQuery); + } +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/CustomerActivity.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/CustomerActivity.java new file mode 100644 index 00000000..9997848e --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/CustomerActivity.java @@ -0,0 +1,78 @@ +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; + +/** + * 客户服务-活动对象 customer_activity + * + * @author yuyongle + * @date 2025-09-08 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("customer_activity") +public class CustomerActivity extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id") + private Long id; + + /** + * 标题 + */ + private String title; + + /** + * 状态(1待进行2进行中3已完成) + */ + private String status; + + /** + * 活动图片 + */ + private String activityImgUrl; + + /** + * 开始时间 + */ + private Date startTime; + + /** + * 结束时间 + */ + private Date endTime; + + /** + * 活动内容 + */ + private String activityContent; + + /** + * 备注 + */ + private String remark; + + /** + * 发布人 + */ + private Long issuers; + + /** + * 搜索值 + */ + private String searchValue; + + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CustomerActivityBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CustomerActivityBo.java new file mode 100644 index 00000000..96447477 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CustomerActivityBo.java @@ -0,0 +1,77 @@ +package org.dromara.property.domain.bo; + +import org.dromara.property.domain.CustomerActivity; +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; + +/** + * 客户服务-活动业务对象 customer_activity + * + * @author yuyongle + * @date 2025-09-08 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = CustomerActivity.class, reverseConvertGenerate = false) +public class CustomerActivityBo extends BaseEntity { + + /** + * 主键 + */ + @NotNull(message = "主键不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 标题 + */ + @NotBlank(message = "标题不能为空", groups = { AddGroup.class, EditGroup.class }) + private String title; + + /** + * 状态(1待进行2进行中3已完成) + */ + private String status; + + /** + * 活动图片 + */ +// @NotBlank(message = "活动图片不能为空", groups = { AddGroup.class, EditGroup.class }) + private String activityImgUrl; + + /** + * 开始时间 + */ + @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 activityContent; + + /** + * 备注 + */ + private String remark; + + /** + * 发布人 + */ + private Long issuers; + + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/entity/resident/ResidentUnit.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/entity/resident/ResidentUnit.java index 0b5d4986..71c3bfb2 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/entity/resident/ResidentUnit.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/entity/resident/ResidentUnit.java @@ -72,7 +72,10 @@ public class ResidentUnit extends TenantEntity { * 员工人数 */ private Long number; - + /** + * 建筑面积(房间建筑面积和,平方千米) + */ + private Float area; /** * 备注 */ diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CustomerActivityVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CustomerActivityVo.java new file mode 100644 index 00000000..a0347a5f --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CustomerActivityVo.java @@ -0,0 +1,93 @@ +package org.dromara.property.domain.vo; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.dromara.property.domain.CustomerActivity; +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; + + + +/** + * 客户服务-活动视图对象 customer_activity + * + * @author yuyongle + * @date 2025-09-08 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = CustomerActivity.class) +public class CustomerActivityVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ExcelProperty(value = "主键") + private Long id; + + /** + * 标题 + */ + @ExcelProperty(value = "标题") + private String title; + + /** + * 状态(1待进行2进行中3已完成) + */ + @ExcelProperty(value = "状态(1待进行2进行中3已完成)") + private String status; + + /** + * 活动图片 + */ + @ExcelProperty(value = "活动图片") + private String activityImgUrl; + + /** + * 开始时间 + */ + @ExcelProperty(value = "开始时间") + private Date startTime; + + /** + * 结束时间 + */ + @ExcelProperty(value = "结束时间") + private Date endTime; + + /** + * 活动内容 + */ + @ExcelProperty(value = "活动内容") + private String activityContent; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 发布人 + */ + @ExcelProperty(value = "发布人") + private Long issuers; + /** + * 发布人文本 + */ + @ExcelProperty(value = "发布人文本") + private String issuersText; + + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/residentVo/ResidentUnitVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/residentVo/ResidentUnitVo.java index e93abf8d..8509c52d 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/residentVo/ResidentUnitVo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/residentVo/ResidentUnitVo.java @@ -91,6 +91,11 @@ public class ResidentUnitVo implements Serializable { @ExcelProperty(value = "员工人数") private Long number; + /** + * 建筑面积(房间建筑面积和,平方千米) + */ + private Float area; + /** * 备注 */ diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/CustomerActivityMapper.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/CustomerActivityMapper.java new file mode 100644 index 00000000..d97e720b --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/CustomerActivityMapper.java @@ -0,0 +1,15 @@ +package org.dromara.property.mapper; + +import org.dromara.property.domain.CustomerActivity; +import org.dromara.property.domain.vo.CustomerActivityVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 客户服务-活动Mapper接口 + * + * @author yuyongle + * @date 2025-09-08 + */ +public interface CustomerActivityMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/ICustomerActivityService.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/ICustomerActivityService.java new file mode 100644 index 00000000..94be834f --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/ICustomerActivityService.java @@ -0,0 +1,69 @@ +package org.dromara.property.service; + +import org.dromara.property.domain.CustomerActivity; +import org.dromara.property.domain.vo.CustomerActivityVo; +import org.dromara.property.domain.bo.CustomerActivityBo; +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 yuyongle + * @date 2025-09-08 + */ +public interface ICustomerActivityService { + + /** + * 查询客户服务-活动 + * + * @param id 主键 + * @return 客户服务-活动 + */ + CustomerActivityVo queryById(Long id); + + /** + * 分页查询客户服务-活动列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 客户服务-活动分页列表 + */ + TableDataInfo queryPageList(CustomerActivityBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的客户服务-活动列表 + * + * @param bo 查询条件 + * @return 客户服务-活动列表 + */ + List queryList(CustomerActivityBo bo); + + /** + * 新增客户服务-活动 + * + * @param bo 客户服务-活动 + * @return 是否新增成功 + */ + Boolean insertByBo(CustomerActivityBo bo); + + /** + * 修改客户服务-活动 + * + * @param bo 客户服务-活动 + * @return 是否修改成功 + */ + Boolean updateByBo(CustomerActivityBo bo); + + /** + * 校验并批量删除客户服务-活动信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/ICustomerNoticesService.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/ICustomerNoticesService.java index 0376d125..812bd787 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/ICustomerNoticesService.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/ICustomerNoticesService.java @@ -65,4 +65,13 @@ public interface ICustomerNoticesService { * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + //APP端 + /** + * 头条滚动列表 + * @param bo + * @param pageQuery + * @return + */ + TableDataInfo todayList(CustomerNoticesBo bo, PageQuery pageQuery); } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CustomerActivityServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CustomerActivityServiceImpl.java new file mode 100644 index 00000000..ae554982 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CustomerActivityServiceImpl.java @@ -0,0 +1,162 @@ +package org.dromara.property.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +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.common.satoken.utils.LoginHelper; +import org.dromara.system.api.RemoteUserService; +import org.dromara.system.api.model.LoginUser; +import org.springframework.stereotype.Service; +import org.dromara.property.domain.bo.CustomerActivityBo; +import org.dromara.property.domain.vo.CustomerActivityVo; +import org.dromara.property.domain.CustomerActivity; +import org.dromara.property.mapper.CustomerActivityMapper; +import org.dromara.property.service.ICustomerActivityService; + +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 客户服务-活动Service业务层处理 + * + * @author yuyongle + * @date 2025-09-08 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class CustomerActivityServiceImpl implements ICustomerActivityService { + + private final CustomerActivityMapper baseMapper; + @DubboReference + private RemoteUserService remoteUserService; + + /** + * 查询客户服务-活动 + * + * @param id 主键 + * @return 客户服务-活动 + */ + @Override + public CustomerActivityVo queryById(Long id){ + CustomerActivityVo customerActivityVo = baseMapper.selectVoById(id); + String issuersText = remoteUserService.selectNicknameById(customerActivityVo.getIssuers()); + customerActivityVo.setIssuersText(issuersText); + return customerActivityVo; + } + + /** + * 分页查询客户服务-活动列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 客户服务-活动分页列表 + */ + @Override + public TableDataInfo queryPageList(CustomerActivityBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + if(CollUtil.isNotEmpty(result.getRecords())){ + result.getRecords().forEach(r -> r.setIssuersText(remoteUserService.selectNicknameById(r.getIssuers()))); + } + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的客户服务-活动列表 + * + * @param bo 查询条件 + * @return 客户服务-活动列表 + */ + @Override + public List queryList(CustomerActivityBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(CustomerActivityBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByAsc(CustomerActivity::getId); + lqw.eq(StringUtils.isNotBlank(bo.getTitle()), CustomerActivity::getTitle, bo.getTitle()); + lqw.eq(StringUtils.isNotBlank(bo.getStatus()), CustomerActivity::getStatus, bo.getStatus()); + lqw.eq(bo.getStartTime() != null, CustomerActivity::getStartTime, bo.getStartTime()); + lqw.eq(bo.getEndTime() != null, CustomerActivity::getEndTime, bo.getEndTime()); + return lqw; + } + + /** + * 新增客户服务-活动 + * + * @param bo 客户服务-活动 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(CustomerActivityBo bo) { + CustomerActivity add = MapstructUtils.convert(bo, CustomerActivity.class); + validEntityBeforeSave(add); + //获取当前登录 用户 + LoginUser user = LoginHelper.getLoginUser(); + add.setIssuers(user.getUserId()); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改客户服务-活动 + * + * @param bo 客户服务-活动 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(CustomerActivityBo bo) { + CustomerActivity update = MapstructUtils.convert(bo, CustomerActivity.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(CustomerActivity entity){ + //TODO 做一些数据校验,如唯一约束 + //判断当前时间是否在开始时间和结束时间之间 + Date now = new Date(); + if (entity.getStartTime() != null && entity.getEndTime() != null) { + entity.setStatus( + now.before(entity.getStartTime()) ? "1" : + now.after(entity.getEndTime()) ? "3" : "2" + ); + } + } + + /** + * 校验并批量删除客户服务-活动信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CustomerNoticesServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CustomerNoticesServiceImpl.java index f2ccdc1c..336e9542 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CustomerNoticesServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CustomerNoticesServiceImpl.java @@ -237,4 +237,15 @@ public class CustomerNoticesServiceImpl implements ICustomerNoticesService { } return baseMapper.deleteByIds(ids) > 0; } + //APP端接口 + /** + * 头条滚动列表 + * @param bo + * @param pageQuery + * @return + */ + @Override + public TableDataInfo todayList(CustomerNoticesBo bo, PageQuery pageQuery) { + return queryPageList(bo, pageQuery); + } } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/InspectionTaskDetailServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/InspectionTaskDetailServiceImpl.java index 04423e19..3ea7a95f 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/InspectionTaskDetailServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/InspectionTaskDetailServiceImpl.java @@ -250,15 +250,15 @@ public class InspectionTaskDetailServiceImpl implements IInspectionTaskDetailSer private void dataProcessing(MInspectionTaskDetailVo mInspectionTaskDetailVo, Map pointNameMap) { mInspectionTaskDetailVo.setPointName(ObjectUtil.defaultIfNull(pointNameMap.get(mInspectionTaskDetailVo.getPointId()), "未知点位")); //查询工单 - if(ObjectUtil.isNotEmpty(mInspectionTaskDetailVo.getOrderId())){ + if (ObjectUtil.isNotEmpty(mInspectionTaskDetailVo.getOrderId())) { ServiceWorkOrdersVo serviceWorkOrdersVo = serviceWorkOrdersMapper.selectVoById(mInspectionTaskDetailVo.getOrderId()); - if(ObjectUtil.isNotEmpty(serviceWorkOrdersVo)){ + if (ObjectUtil.isNotEmpty(serviceWorkOrdersVo)) { List serviceWorkOrdersRecordVos = workOrdersRecordMapper.selectVoList( new LambdaQueryWrapper<>(ServiceWorkOrdersRecord.class).eq(ServiceWorkOrdersRecord::getOrderId, serviceWorkOrdersVo.getId()) ); List mServiceWorkOrdersRecordVos = BeanUtil.copyToList(serviceWorkOrdersRecordVos, MServiceWorkOrdersRecordVo.class); serviceWorkOrdersVo.setRecordVoList(mServiceWorkOrdersRecordVos); - mInspectionTaskDetailVo.setMServiceWorkOrdersVo(ObjectUtil.isNotEmpty( serviceWorkOrdersVo)? BeanUtil.copyProperties(serviceWorkOrdersVo, MServiceWorkOrdersVo.class):null); + mInspectionTaskDetailVo.setMServiceWorkOrdersVo(ObjectUtil.isNotEmpty(serviceWorkOrdersVo) ? BeanUtil.copyProperties(serviceWorkOrdersVo, MServiceWorkOrdersVo.class) : null); } } @@ -295,7 +295,18 @@ public class InspectionTaskDetailServiceImpl implements IInspectionTaskDetailSer Assert.isTrue(planInspectionPersonIds.contains(loginUser.getUserId()), "当前签到人不在计划巡检人列表内"); bo.setActualInspectionPerson(loginUser.getUserId().toString()); InspectionTaskDetail update = MapstructUtils.convert(bo, InspectionTaskDetail.class); - return baseMapper.updateById(update) > 0; + boolean flag = baseMapper.updateById(update) > 0; + if (flag) { + + } + return flag; + } + + /** + * 新增巡检点记录 + */ + private void insertPointRecord(InspectionTaskDetail inspectionTaskDetail) { + } /** @@ -313,8 +324,10 @@ public class InspectionTaskDetailServiceImpl implements IInspectionTaskDetailSer InspectionTaskDetail update = MapstructUtils.convert(bo, InspectionTaskDetail.class); return baseMapper.updateById(update) > 0; } + /** * 巡检提报工单 + * * @param bo * @return */ @@ -327,7 +340,7 @@ public class InspectionTaskDetailServiceImpl implements IInspectionTaskDetailSer serviceWorkOrders.setReportingType(OrderReportingTypeEnum.PHONE_REPORT.getValue()); LoginUser user = LoginHelper.getLoginUser(); serviceWorkOrders.setOrderNo("GD" + IdUtil.getSnowflakeNextIdStr()); - serviceWorkOrders.setOrderName("巡检"+bo.getPointId()); + serviceWorkOrders.setOrderName("巡检" + bo.getPointId()); serviceWorkOrders.setStatus(WorkOrderStatusEnum.CREATE_ORDER.getValue()); serviceWorkOrders.setInitiatorPeople(user.getNickname()); serviceWorkOrders.setProcessingWeight(serviceWorkOrdersType.getProcessingWeight()); @@ -343,14 +356,15 @@ public class InspectionTaskDetailServiceImpl implements IInspectionTaskDetailSer boolean flags = workOrdersRecordMapper.insert(serviceWorkOrdersRecord) > 0; if (flags) { if (serviceWorkOrdersType.getOperationMode().equals(OrderTypeOperationEnum.AUTOMATE_DISPATCH.getValue())) { - handleServiceWorkOrder(serviceWorkOrders,serviceWorkOrdersType,bo); + handleServiceWorkOrder(serviceWorkOrders, serviceWorkOrdersType, bo); } } } return flag; } + //自动派单 - private void handleServiceWorkOrder(ServiceWorkOrders serviceWorkOrders,ServiceWorkOrdersType serviceWorkOrdersType,InspectionTaskDetailToOrderBo bo) { + private void handleServiceWorkOrder(ServiceWorkOrders serviceWorkOrders, ServiceWorkOrdersType serviceWorkOrdersType, InspectionTaskDetailToOrderBo bo) { LocalDate today = LocalDate.now(); // 1. 获取今日排班人员(优先查缓存,未命中则查询数据库并缓存) List attendanceUserGroups = RedisUtils.getCacheList(DateUtil.today()); @@ -361,8 +375,8 @@ public class InspectionTaskDetailServiceImpl implements IInspectionTaskDetailSer .eq(AttendanceUserGroup::getDeptId, serviceWorkOrdersType.getDeptId()) .orderByAsc(AttendanceUserGroup::getStartDate) ); - if (CollUtil.isEmpty(attendanceUserGroups)|| attendanceUserGroups.size() != attendanceUserGroupList.size()) { - attendanceUserGroups=attendanceUserGroupList; + if (CollUtil.isEmpty(attendanceUserGroups) || attendanceUserGroups.size() != attendanceUserGroupList.size()) { + attendanceUserGroups = attendanceUserGroupList; Assert.isTrue(CollUtil.isNotEmpty(attendanceUserGroups), "暂无排班人员"); // 缓存当天排班数据(假设当天不会变) RedisUtils.setCacheList(DateUtil.today(), attendanceUserGroups); diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ServiceWorkOrdersServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ServiceWorkOrdersServiceImpl.java index 2afb6c2a..e54e1b34 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ServiceWorkOrdersServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ServiceWorkOrdersServiceImpl.java @@ -586,6 +586,7 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService { add.setOrderName("工单名称"); add.setStatus(WorkOrderStatusEnum.CREATE_ORDER.getValue()); add.setReportingType(OrderReportingTypeEnum.PHONE_REPORT.getValue()); + add.setProcessingWeight(serviceWorkOrdersType.getProcessingWeight()); add.setInitiatorPeople(user.getNickname()); validEntityBeforeSave(add); boolean flag = baseMapper.insert(add) > 0; diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/TbRoomServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/TbRoomServiceImpl.java index c7b2de9e..77db89e3 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/TbRoomServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/TbRoomServiceImpl.java @@ -30,6 +30,7 @@ import org.springframework.stereotype.Service; import java.util.Collection; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * 房间信息Service业务层处理 @@ -68,10 +69,12 @@ public class TbRoomServiceImpl implements ITbRoomService { tbRoomVo.setFloorText(ObjectUtil.isNotEmpty(tbFloorVo) ? tbFloorVo.getFloorName() : null); List residentUnits = residentUnitMapper.selectList( new LambdaQueryWrapper() - .eq(ResidentUnit::getLocation, tbRoomVo.getId()) + .like(ResidentUnit::getLocation, tbRoomVo.getId()) + .orderByDesc(ResidentUnit::getCreateTime) ); if (CollUtil.isNotEmpty(residentUnits)) { - tbRoomVo.setResidentUnitText(residentUnits.get(0).getName()); + //多个yi,拼接 + tbRoomVo.setResidentUnitText(residentUnits.stream().map(ResidentUnit::getName).collect(Collectors.joining(","))); } return tbRoomVo; } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/residentImpl/ResidentUnitServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/residentImpl/ResidentUnitServiceImpl.java index b1fbf5b0..f2a2e460 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/residentImpl/ResidentUnitServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/residentImpl/ResidentUnitServiceImpl.java @@ -1,6 +1,8 @@ package org.dromara.property.service.impl.residentImpl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import cn.hutool.crypto.digest.BCrypt; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; @@ -12,7 +14,9 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.property.domain.entity.resident.ResidentPerson; +import org.dromara.property.domain.vo.TbRoomVo; import org.dromara.property.mapper.ResidentPersonMapper; +import org.dromara.property.mapper.TbRoomMapper; import org.dromara.property.service.residentService.IResidentPersonService; import org.dromara.property.service.ITbRoomService; import org.springframework.stereotype.Service; @@ -43,6 +47,7 @@ public class ResidentUnitServiceImpl implements IResidentUnitService { private final ResidentUnitMapper baseMapper; private final ITbRoomService roomService; + private final TbRoomMapper roomMapper; private final IResidentPersonService personService; private final ResidentPersonMapper personMapper; @@ -134,6 +139,7 @@ public class ResidentUnitServiceImpl implements IResidentUnitService { if (flag) { bo.setId(add.getId()); addResidentPerson(add); + } return flag; } @@ -170,12 +176,27 @@ public class ResidentUnitServiceImpl implements IResidentUnitService { validEntityBeforeSave(update); return baseMapper.updateById(update) > 0; } - /** * 保存前的数据校验 */ private void validEntityBeforeSave(ResidentUnit entity){ //TODO 做一些数据校验,如唯一约束 + //查询入驻房间总面积 + String roomId= entity.getLocation(); + if(StrUtil.isNotEmpty(roomId)){ + //roomId转换为Long类型的list + // 完整的代码实现 + List idList = Arrays.stream(roomId.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList()); + List tbRoomVos = roomMapper.selectVoByIds(idList); + if(CollUtil.isNotEmpty(tbRoomVos)){ + Float totalArea = tbRoomVos.stream() + .map(TbRoomVo::getArea) + .reduce(0.0f, Float::sum); + entity.setArea(totalArea); + } + } } /** diff --git a/ruoyi-modules/Property/src/main/resources/mapper/Property/CustomerActivityMapper.xml b/ruoyi-modules/Property/src/main/resources/mapper/Property/CustomerActivityMapper.xml new file mode 100644 index 00000000..9d57ced4 --- /dev/null +++ b/ruoyi-modules/Property/src/main/resources/mapper/Property/CustomerActivityMapper.xml @@ -0,0 +1,7 @@ + + + + +