From 81ebb3e8c1fad455072b4a69212319603d9c9790 Mon Sep 17 00:00:00 2001 From: yuyongle <1150359267@qq.com> Date: Thu, 24 Jul 2025 10:20:38 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=20=20=20=20=E4=BF=AE=E6=94=B9=E4=BA=86?= =?UTF-8?q?=E7=A4=BE=E5=8C=BAbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../property/domain/bo/TbCommunityBo.java | 4 ++-- .../domain/vo/ServiceWorkOrderAnalysisVo.java | 2 ++ .../impl/CustomerNoticesServiceImpl.java | 20 ++++++++++++++++++- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/TbCommunityBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/TbCommunityBo.java index 8cb9e33e..1b11acd3 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/TbCommunityBo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/TbCommunityBo.java @@ -70,13 +70,13 @@ public class TbCommunityBo extends BaseEntity { /** * 经度 */ - @NotBlank(message = "经度不能为空", groups = {AddGroup.class, EditGroup.class}) + // @NotBlank(message = "经度不能为空", groups = {AddGroup.class, EditGroup.class}) private String lon; /** * 维度 */ - @NotBlank(message = "维度不能为空", groups = {AddGroup.class, EditGroup.class}) + // @NotBlank(message = "维度不能为空", groups = {AddGroup.class, EditGroup.class}) private String lat; /** diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrderAnalysisVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrderAnalysisVo.java index f8b81c43..59413167 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrderAnalysisVo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrderAnalysisVo.java @@ -18,6 +18,7 @@ public class ServiceWorkOrderAnalysisVo { private String date; private String dayOfWeek; private long count; + private long weekCount; public LineChartVo() {} @@ -25,6 +26,7 @@ public class ServiceWorkOrderAnalysisVo { this.date = date; this.dayOfWeek = dayOfWeek; this.count = count; + this.weekCount = weekCount; } } @Data 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 7d0bcd42..9c7918d8 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 @@ -3,6 +3,7 @@ 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; @@ -58,7 +59,24 @@ public class CustomerNoticesServiceImpl implements ICustomerNoticesService { */ @Override public CustomerNoticesVo queryById(Long id) { - return baseMapper.selectVoById(id); + List 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()); + if (ObjectUtil.isNotEmpty(customerNoticesVo.getNoticePersion())) { + List list = Arrays.asList(customerNoticesVo.getNoticePersion().split(",")); + List filteredList = residentPeople.stream() + .filter(person -> list.contains(person.getId().toString())) + .collect(Collectors.toList()); + String usernames = filteredList.stream() + .map(ResidentPerson::getUserName) // 假设ResidentPerson类有一个getUserName方法 + .collect(Collectors.joining(",")); + customerNoticesVo.setIssuersName(StringUtils.isNotBlank(usernames)?usernames:null); + } + } + return customerNoticesVo; } /** From c49bc001bb651e7d07ee143f66391e2fef6a8b42 Mon Sep 17 00:00:00 2001 From: yuyongle <1150359267@qq.com> Date: Thu, 24 Jul 2025 10:58:17 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=20=20=20=20=E4=BF=AE=E6=94=B9=E4=BA=86?= =?UTF-8?q?=E7=A4=BE=E5=8C=BAbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CustomerNoticesController.java | 4 +- .../domain/vo/ServiceWorkOrderAnalysisVo.java | 2 +- .../impl/CustomerNoticesServiceImpl.java | 2 +- .../service/impl/MachineTypeServiceImpl.java | 3 +- .../impl/ServiceWorkOrdersServiceImpl.java | 53 +++++++++++++------ 5 files changed, 42 insertions(+), 22 deletions(-) diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/CustomerNoticesController.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/CustomerNoticesController.java index 20692213..dc372f4f 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/CustomerNoticesController.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/controller/CustomerNoticesController.java @@ -40,7 +40,7 @@ public class CustomerNoticesController extends BaseController { /** * 查询客户服务-通知公告列表 */ - @SaCheckPermission("domain:notices:list") + //@SaCheckPermission("domain:notices:list") @GetMapping("/list") public TableDataInfo list(CustomerNoticesBo bo, PageQuery pageQuery) { return customerNoticesService.queryPageList(bo, pageQuery); @@ -62,7 +62,7 @@ public class CustomerNoticesController extends BaseController { * * @param id 主键 */ - @SaCheckPermission("domain:notices:query") + //@SaCheckPermission("domain:notices:query") @GetMapping("/{id}") public R getInfo(@NotNull(message = "主键不能为空") @PathVariable("id") Long id) { diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrderAnalysisVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrderAnalysisVo.java index 59413167..f3175d99 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrderAnalysisVo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/ServiceWorkOrderAnalysisVo.java @@ -22,7 +22,7 @@ public class ServiceWorkOrderAnalysisVo { public LineChartVo() {} - public LineChartVo(String date, String dayOfWeek, long count) { + public LineChartVo(String date, String dayOfWeek, long count,long weekCount) { this.date = date; this.dayOfWeek = dayOfWeek; this.count = count; 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 9c7918d8..25a0607b 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 @@ -73,7 +73,7 @@ public class CustomerNoticesServiceImpl implements ICustomerNoticesService { String usernames = filteredList.stream() .map(ResidentPerson::getUserName) // 假设ResidentPerson类有一个getUserName方法 .collect(Collectors.joining(",")); - customerNoticesVo.setIssuersName(StringUtils.isNotBlank(usernames)?usernames:null); + customerNoticesVo.setNoticePersionName(StringUtils.isNotBlank(usernames)?usernames:null); } } return customerNoticesVo; diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/MachineTypeServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/MachineTypeServiceImpl.java index ce2e4695..042a2a32 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/MachineTypeServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/MachineTypeServiceImpl.java @@ -1,5 +1,6 @@ package org.dromara.property.service.impl; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -147,7 +148,7 @@ public class MachineTypeServiceImpl implements IMachineTypeService { if (CollUtil.isEmpty(machineTypeVoList)) { return Collections.emptyList(); } - List machineTypeTreeVoList = MapstructUtils.convert(machineTypeVoList, MachineTypeTreeVo.class); + List machineTypeTreeVoList = BeanUtil.copyToList(machineTypeVoList, MachineTypeTreeVo.class); // 2. 构建树结构 return buildMachineTypeTree(machineTypeTreeVoList); 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 1f9f52ad..c5d29d02 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 @@ -379,33 +379,52 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService { dateList.add(today.minusDays(i)); } - Map workOrdersByDate = serviceWorkOrdersList.stream() - .filter(order -> { - try { - LocalDate createTime = LocalDate.parse((CharSequence) order.getCreateTime()); - return !createTime.isBefore(today.minusDays(7)); - } catch (Exception e) { - return false; - } - }) - .collect(Collectors.groupingBy( - order -> LocalDate.parse((CharSequence) order.getCreateTime()).format(DateTimeFormatter.ISO_LOCAL_DATE), - Collectors.counting() - )); + // 按日期分组:统计总数量 和 已处理数量 + Map totalWorkOrdersByDate = new HashMap<>(); + Map processedWorkOrdersByDate = new HashMap<>(); - DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + DateTimeFormatter dateFormatter = DateTimeFormatter.ISO_LOCAL_DATE; + + for (ServiceWorkOrders order : serviceWorkOrdersList) { + try { + LocalDate createTime = LocalDate.parse((CharSequence) order.getCreateTime()); + if (createTime.isBefore(today.minusDays(7))) { + continue; // 跳过超过7天的数据 + } + + String dateStr = createTime.format(dateFormatter); + + // 总数 +1 + totalWorkOrdersByDate.put(dateStr, totalWorkOrdersByDate.getOrDefault(dateStr, 0L) + 1); + + // 如果已处理,processed +1 + if (isProcessed(order)) { + processedWorkOrdersByDate.put(dateStr, processedWorkOrdersByDate.getOrDefault(dateStr, 0L) + 1); + } + + } catch (Exception e) { + // 忽略格式错误的日期 + } + } + + DateTimeFormatter dateFormatterFull = DateTimeFormatter.ofPattern("yyyy-MM-dd"); DateTimeFormatter dayOfWeekFormatter = DateTimeFormatter.ofPattern("E"); List result = new ArrayList<>(); for (LocalDate date : dateList) { - String dateStr = date.format(dateFormatter); + String dateStr = date.format(dateFormatterFull); String dayOfWeek = date.format(dayOfWeekFormatter); - result.add(new ServiceWorkOrderAnalysisVo.LineChartVo(dateStr, dayOfWeek, workOrdersByDate.getOrDefault(dateStr, 0L))); + long total = totalWorkOrdersByDate.getOrDefault(dateStr, 0L); + long processed = processedWorkOrdersByDate.getOrDefault(dateStr, 0L); + result.add(new ServiceWorkOrderAnalysisVo.LineChartVo(dateStr, dayOfWeek, total, processed)); } return result; } - + private boolean isProcessed(ServiceWorkOrders order) { + // 假设有一个字段 status 表示状态,"COMPLETED" 表示已处理 + return "4".equalsIgnoreCase(order.getStatus()); + } // 计算工单类型分布 private List calculateWorkOrderTypeDistribution(List serviceWorkOrdersList) { // 按 typeId 分组统计数量 From eaef24b3b761a814d21f020326b12dfb7a93bbda Mon Sep 17 00:00:00 2001 From: mocheng <3057647414@qq.com> Date: Thu, 24 Jul 2025 11:07:28 +0800 Subject: [PATCH 3/3] =?UTF-8?q?app=E5=8A=9F=E8=83=BD=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AppFunListController.java | 106 +++++++++++++ .../org/dromara/system/domain/AppFunList.java | 66 +++++++++ .../system/domain/bo/AppFunListBo.java | 50 +++++++ .../system/domain/vo/AppFunListVo.java | 70 +++++++++ .../system/mapper/AppFunListMapper.java | 15 ++ .../system/service/IAppFunListService.java | 69 +++++++++ .../service/impl/AppFunListServiceImpl.java | 139 ++++++++++++++++++ .../mapper/system/AppFunListMapper.xml | 7 + 8 files changed, 522 insertions(+) create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/AppFunListController.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/AppFunList.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/AppFunListBo.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/AppFunListVo.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/AppFunListMapper.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IAppFunListService.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/AppFunListServiceImpl.java create mode 100644 ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/AppFunListMapper.xml diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/AppFunListController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/AppFunListController.java new file mode 100644 index 00000000..5e00cecc --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/AppFunListController.java @@ -0,0 +1,106 @@ +package org.dromara.system.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.system.domain.vo.AppFunListVo; +import org.dromara.system.domain.bo.AppFunListBo; +import org.dromara.system.service.IAppFunListService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 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 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 list = appFunListService.queryList(bo); + ExcelUtil.exportExcel(list, "APP功能列表", AppFunListVo.class, response); + } + + /** + * 获取APP功能列表详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("system:funList:query") + @GetMapping("/{id}") + public R 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 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 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 remove(@NotEmpty(message = "主键不能为空") + @PathVariable("ids") Long[] ids) { + return toAjax(appFunListService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/AppFunList.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/AppFunList.java new file mode 100644 index 00000000..523a89b3 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/AppFunList.java @@ -0,0 +1,66 @@ +package org.dromara.system.domain; + +import org.dromara.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +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; + + +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/AppFunListBo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/AppFunListBo.java new file mode 100644 index 00000000..e056cbef --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/AppFunListBo.java @@ -0,0 +1,50 @@ +package org.dromara.system.domain.bo; + +import org.dromara.system.domain.AppFunList; +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.*; + +/** + * 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; + + +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/AppFunListVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/AppFunListVo.java new file mode 100644 index 00000000..d2181baa --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/AppFunListVo.java @@ -0,0 +1,70 @@ +package org.dromara.system.domain.vo; + +import org.dromara.common.translation.annotation.Translation; +import org.dromara.common.translation.constant.TransConstant; +import org.dromara.system.domain.AppFunList; +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; + + + +/** + * 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; + + +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/AppFunListMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/AppFunListMapper.java new file mode 100644 index 00000000..4d092639 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/AppFunListMapper.java @@ -0,0 +1,15 @@ +package org.dromara.system.mapper; + +import org.dromara.system.domain.AppFunList; +import org.dromara.system.domain.vo.AppFunListVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * APP功能列表Mapper接口 + * + * @author mocheng + * @date 2025-07-23 + */ +public interface AppFunListMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IAppFunListService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IAppFunListService.java new file mode 100644 index 00000000..5464c055 --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IAppFunListService.java @@ -0,0 +1,69 @@ +package org.dromara.system.service; + +import org.dromara.system.domain.AppFunList; +import org.dromara.system.domain.vo.AppFunListVo; +import org.dromara.system.domain.bo.AppFunListBo; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +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 queryPageList(AppFunListBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的APP功能列表列表 + * + * @param bo 查询条件 + * @return APP功能列表列表 + */ + List 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 ids, Boolean isValid); +} diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/AppFunListServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/AppFunListServiceImpl.java new file mode 100644 index 00000000..e5fe5c4d --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/AppFunListServiceImpl.java @@ -0,0 +1,139 @@ +package org.dromara.system.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.dromara.system.mapper.SysRoleMapper; +import org.springframework.stereotype.Service; +import org.dromara.system.domain.bo.AppFunListBo; +import org.dromara.system.domain.vo.AppFunListVo; +import org.dromara.system.domain.AppFunList; +import org.dromara.system.mapper.AppFunListMapper; +import org.dromara.system.service.IAppFunListService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * APP功能列表Service业务层处理 + * + * @author mocheng + * @date 2025-07-23 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class AppFunListServiceImpl implements IAppFunListService { + + private final AppFunListMapper baseMapper; + private final SysRoleMapper sysRoleMapper; + + + /** + * 查询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 queryPageList(AppFunListBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + result.getRecords().forEach(r -> r.setRoleName(sysRoleMapper.selectVoById(r.getRoleid()).getRoleName())); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的APP功能列表列表 + * + * @param bo 查询条件 + * @return APP功能列表列表 + */ + @Override + public List queryList(AppFunListBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(AppFunListBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper 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 ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/AppFunListMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/AppFunListMapper.xml new file mode 100644 index 00000000..1122c5af --- /dev/null +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/AppFunListMapper.xml @@ -0,0 +1,7 @@ + + + + +