diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/inspectionplan/AppInspectionPlanController.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/inspectionplan/AppInspectionPlanController.java new file mode 100644 index 0000000..6930b7e --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/inspectionplan/AppInspectionPlanController.java @@ -0,0 +1,38 @@ +package com.zteits.urbanops.module.garden.controller.app.inspectionplan; + +import com.zteits.urbanops.framework.common.pojo.CommonResult; +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.InspectionPlanRespVO; +import com.zteits.urbanops.module.garden.controller.app.inspectionplan.vo.AppInspectionPlanPageReqVO; +import com.zteits.urbanops.module.garden.controller.app.inspectionplan.vo.AppInspectionPlanRespVO; +import com.zteits.urbanops.module.garden.service.inspectionplan.InspectionPlanService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import static com.zteits.urbanops.framework.common.pojo.CommonResult.success; + +@Tag(name = "App管理 - 巡检计划汇总") +@RestController +@RequestMapping("/app/garden/inspection-plan") +@Validated +@Slf4j +public class AppInspectionPlanController { + + @Resource + private InspectionPlanService inspectionPlanService; + + + @GetMapping("/page") + @Operation(summary = "app-巡检计划汇总分页") + @PreAuthorize("@ss.hasPermission('app:garden:inspection-plan:query')") + public CommonResult> getInspectionPlanAppPage(@Valid AppInspectionPlanPageReqVO pageReqVO) { + PageResult pageResult = inspectionPlanService.getInspectionPlanAppPage(pageReqVO); + return success(pageResult); + } + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/inspectionplan/AppInspectionPlanDetailController.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/inspectionplan/AppInspectionPlanDetailController.java new file mode 100644 index 0000000..f7cd7a9 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/inspectionplan/AppInspectionPlanDetailController.java @@ -0,0 +1,22 @@ +package com.zteits.urbanops.module.garden.controller.app.inspectionplan; + +import com.zteits.urbanops.module.garden.service.inspectionplan.InspectionPlanDetailService; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + + +@Tag(name = "APP管理 - 巡检计划") +@RestController +@RequestMapping("/app/garden/inspection-plan-detail") +@Validated +public class AppInspectionPlanDetailController { + + @Resource + private InspectionPlanDetailService inspectionPlanDetailService; + + + +} \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/inspectionplan/vo/AppInspectionPlanPageReqVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/inspectionplan/vo/AppInspectionPlanPageReqVO.java new file mode 100644 index 0000000..dc90e22 --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/inspectionplan/vo/AppInspectionPlanPageReqVO.java @@ -0,0 +1,37 @@ +package com.zteits.urbanops.module.garden.controller.app.inspectionplan.vo; + +import com.zteits.urbanops.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Max; +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.time.LocalDate; +import java.util.List; + +@Schema(description = "App管理 - 巡检计划汇总新增/修改 Request VO") +@Data +public class AppInspectionPlanPageReqVO extends PageParam { + + @Schema(description = "道路名称", example = "赵六") + private String roadName; + + @Schema(description = "状态 1:未完成;3:已完成;4:已失效") + @NotNull + @Min(value = 1, message = "状态最小为1") + @Max(value = 4, message = "状态不能大于4") + private Integer finishState; + + @Schema(description = "公司ID") + private Long companyId; + + @Schema(description = "角色IDS") + private List roleIds; + + @Schema(description = "业务线") + private List busiLineList; + + @Schema(description = "系统时间") + private LocalDate localDate; +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/inspectionplan/vo/AppInspectionPlanRespVO.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/inspectionplan/vo/AppInspectionPlanRespVO.java new file mode 100644 index 0000000..266acde --- /dev/null +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/controller/app/inspectionplan/vo/AppInspectionPlanRespVO.java @@ -0,0 +1,47 @@ +package com.zteits.urbanops.module.garden.controller.app.inspectionplan.vo; + +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +import static com.zteits.urbanops.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY; + +@Schema(description = "App管理 - 巡检计划 Response VO") +@Data +@ExcelIgnoreUnannotated +public class AppInspectionPlanRespVO { + + + @Schema(description = "道路ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "32704") + private Long roadId; + + @Schema(description = "道路名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "32704") + private Long roadName; + + @Schema(description = "街道ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "8439") + private String streetId; + + @Schema(description = "街道名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + private String streetName; + + @Schema(description = "养护级别: 10:特级;11:一级:12:二级;13:三级", requiredMode = Schema.RequiredMode.REQUIRED, example = "8588") + private Integer levelId; + + @Schema(description = "养护类型:2001:浇水;2002:施肥;2003:有害生物防治;2004:修剪;2005:中耕除草;2006:打孔梳草;2007:绿地保洁;2008:园林废弃物收集运输 ;2009:补植;3001:绿地巡视;", requiredMode = Schema.RequiredMode.REQUIRED, example = "24742") + private Integer planTypeId; + + @Schema(description = "执行开始时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY) + private LocalDateTime beginTime; + + @Schema(description = "执行时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY) + private LocalDateTime endTime; + + @Schema(description = "完成状态 1:未完成;2:进行中;3:已完成", requiredMode = Schema.RequiredMode.REQUIRED) + private Integer finishState; + +} diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/inspectionplan/InspectionPlanMapper.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/inspectionplan/InspectionPlanMapper.java index 9ce55b1..103c21f 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/inspectionplan/InspectionPlanMapper.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/inspectionplan/InspectionPlanMapper.java @@ -1,9 +1,12 @@ package com.zteits.urbanops.module.garden.dal.mysql.inspectionplan; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.zteits.urbanops.framework.common.pojo.PageResult; import com.zteits.urbanops.framework.mybatis.core.query.LambdaQueryWrapperX; import com.zteits.urbanops.framework.mybatis.core.mapper.BaseMapperX; +import com.zteits.urbanops.module.garden.controller.app.inspectionplan.vo.AppInspectionPlanPageReqVO; +import com.zteits.urbanops.module.garden.controller.app.inspectionplan.vo.AppInspectionPlanRespVO; import com.zteits.urbanops.module.garden.dal.dataobject.inspectionplan.InspectionPlanDO; import org.apache.ibatis.annotations.Mapper; import com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.*; @@ -33,4 +36,14 @@ public interface InspectionPlanMapper extends BaseMapperX { int deleteByBatchNo(@Param("batchNo") String batchNo); + /** + * 获取巡检计划列表-app + * + * @param page + * @param req + * @return 列表 + */ + IPage getInspectionPlanAppPage(@Param("page") IPage page, @Param("req") AppInspectionPlanPageReqVO req); + + } \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanService.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanService.java index 91c584a..ada7660 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanService.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanService.java @@ -3,6 +3,8 @@ package com.zteits.urbanops.module.garden.service.inspectionplan; import java.util.*; import com.zteits.urbanops.framework.common.pojo.CommonResult; +import com.zteits.urbanops.module.garden.controller.app.inspectionplan.vo.AppInspectionPlanPageReqVO; +import com.zteits.urbanops.module.garden.controller.app.inspectionplan.vo.AppInspectionPlanRespVO; import jakarta.validation.*; import com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.*; import com.zteits.urbanops.module.garden.dal.dataobject.inspectionplan.InspectionPlanDO; @@ -72,4 +74,11 @@ public interface InspectionPlanService { */ void stopPlanInspectionPlan(String batchNo); + /** + * app-获取巡检计划列表 + * @param pageReqVO 分页查询 + * @return 巡检计划列表 + */ + PageResult getInspectionPlanAppPage(AppInspectionPlanPageReqVO pageReqVO); + } \ No newline at end of file diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanServiceImpl.java index 17839b5..6d5849b 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanServiceImpl.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/inspectionplan/InspectionPlanServiceImpl.java @@ -3,14 +3,25 @@ package com.zteits.urbanops.module.garden.service.inspectionplan; import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.RandomUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.zteits.urbanops.framework.common.pojo.CommonResult; +import com.zteits.urbanops.framework.common.pojo.PageResult; +import com.zteits.urbanops.framework.common.util.object.BeanUtils; import com.zteits.urbanops.framework.dict.core.DictFrameworkUtils; +import com.zteits.urbanops.framework.mybatis.core.util.MyBatisUtils; import com.zteits.urbanops.framework.security.core.util.SecurityFrameworkUtils; +import com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.*; +import com.zteits.urbanops.module.garden.controller.app.inspectionplan.vo.AppInspectionPlanPageReqVO; +import com.zteits.urbanops.module.garden.controller.app.inspectionplan.vo.AppInspectionPlanRespVO; +import com.zteits.urbanops.module.garden.dal.dataobject.inspectionplan.InspectionPlanDO; import com.zteits.urbanops.module.garden.dal.dataobject.inspectionplan.InspectionPlanDetailDO; import com.zteits.urbanops.module.garden.dal.dataobject.inspectionplan.InspectionPlanRoleDO; +import com.zteits.urbanops.module.garden.dal.dataobject.road.RoadDO; import com.zteits.urbanops.module.garden.dal.mysql.inspectionplan.InspectionPlanDetailMapper; import com.zteits.urbanops.module.garden.dal.mysql.inspectionplan.InspectionPlanInterceptMapper; +import com.zteits.urbanops.module.garden.dal.mysql.inspectionplan.InspectionPlanMapper; import com.zteits.urbanops.module.garden.dal.mysql.inspectionplan.InspectionPlanRoleMapper; +import com.zteits.urbanops.module.garden.dal.mysql.road.RoadMapper; import com.zteits.urbanops.module.garden.enums.FinishStateEnum; import com.zteits.urbanops.module.garden.enums.PlanConstants; import com.zteits.urbanops.module.garden.util.timeinterval.PeriodResult; @@ -19,10 +30,11 @@ import com.zteits.urbanops.module.system.api.dept.DeptApi; import com.zteits.urbanops.module.system.api.dept.dto.DeptRespDTO; import com.zteits.urbanops.module.system.api.permission.RoleApi; import com.zteits.urbanops.module.system.dal.dataobject.permission.RoleDO; +import jakarta.annotation.Resource; import jodd.util.StringUtil; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; -import jakarta.annotation.Resource; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.validation.annotation.Validated; @@ -32,13 +44,6 @@ import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; -import com.zteits.urbanops.module.garden.controller.admin.inspectionplan.vo.*; -import com.zteits.urbanops.module.garden.dal.dataobject.inspectionplan.InspectionPlanDO; -import com.zteits.urbanops.framework.common.pojo.PageResult; -import com.zteits.urbanops.framework.common.util.object.BeanUtils; - -import com.zteits.urbanops.module.garden.dal.mysql.inspectionplan.InspectionPlanMapper; - import static com.zteits.urbanops.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.zteits.urbanops.module.garden.enums.ErrorCodeConstants.*; @@ -65,11 +70,18 @@ public class InspectionPlanServiceImpl implements InspectionPlanService { private InspectionPlanRoleMapper inspectionPlanRoleMapper; @Resource + private RoadMapper roadMapper; + + + @Resource private DeptApi deptApi; @Resource private RoleApi roleApi; + @Resource + private RoleApi poleApi; + @Transactional(rollbackFor = Exception.class) @Override public CommonResult createInspectionPlan(InspectionPlanSaveReqVO createReqVO) { @@ -310,4 +322,44 @@ public class InspectionPlanServiceImpl implements InspectionPlanService { inspectionPlanRoleMapper.delete(InspectionPlanRoleDO::getBatchNo, batchNo); } + @Override + public PageResult getInspectionPlanAppPage(AppInspectionPlanPageReqVO pageReqVO) { + String busiLine = SecurityFrameworkUtils.getBusiLine(); + Long companyId = SecurityFrameworkUtils.getCompanyId(); + if (StringUtils.isNotEmpty(busiLine)) { + pageReqVO.setBusiLineList(Arrays.asList(busiLine.split(","))); + } + pageReqVO.setCompanyId(companyId); + + /*1.查询登录用户角色*/ + List roleIds = poleApi.getRoleIdsByUserId(SecurityFrameworkUtils.getLoginUserId()); + pageReqVO.setRoleIds(roleIds); + /*2.分页*/ + IPage mpPage = MyBatisUtils.buildPage(pageReqVO); + IPage page = inspectionPlanMapper.getInspectionPlanAppPage(mpPage, pageReqVO); + addStreetInfo(page.getRecords()); + // 转换返回 + return new PageResult<>(page.getRecords(), page.getTotal()); + } + + private void addStreetInfo(List list){ + if(CollectionUtils.isEmpty(list)){ + return ; + } + Set roadIds = list.stream().map(AppInspectionPlanRespVO::getRoadId).collect(Collectors.toSet()); + + + List roadList = roadMapper.selectList(new QueryWrapper().lambda().in(RoadDO::getId, roadIds)); + //list转map + Map roadMap = roadList.stream().collect(Collectors.toMap(RoadDO::getId, road -> road)); + + list.forEach(plan -> { + RoadDO road = roadMap.get(plan.getRoadId()); + if(road != null){ + plan.setStreetId(road.getStreetId()); + plan.setStreetName(road.getStreetName()); + } + }); + } + } \ No newline at end of file diff --git a/urbanops-module-garden/src/main/resources/mapper/inspectionplan/InspectionPlanMapper.xml b/urbanops-module-garden/src/main/resources/mapper/inspectionplan/InspectionPlanMapper.xml index bf1ca03..70b0a23 100644 --- a/urbanops-module-garden/src/main/resources/mapper/inspectionplan/InspectionPlanMapper.xml +++ b/urbanops-module-garden/src/main/resources/mapper/inspectionplan/InspectionPlanMapper.xml @@ -13,4 +13,48 @@ delete from garden_inspection_plan where batch_no =#{batchNo} + \ No newline at end of file diff --git a/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/api/permission/RoleApi.java b/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/api/permission/RoleApi.java index 4793a3d..4ca9538 100644 --- a/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/api/permission/RoleApi.java +++ b/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/api/permission/RoleApi.java @@ -36,4 +36,12 @@ public interface RoleApi { * @return */ List getRoleListByBusiLine(String busiLine); + + /** + * 通过用户编号,获得角色ID列表 + * + * @param userId 用户编号 + * @return 角色ID列表 + */ + List getRoleIdsByUserId(Long userId); } diff --git a/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/api/permission/RoleApiImpl.java b/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/api/permission/RoleApiImpl.java index 726402b..a3eb71e 100644 --- a/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/api/permission/RoleApiImpl.java +++ b/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/api/permission/RoleApiImpl.java @@ -34,4 +34,9 @@ public class RoleApiImpl implements RoleApi { public List getRoleListByBusiLine(String busiLine) { return roleService.getRoleListByBusiLine(busiLine); } + + @Override + public List getRoleIdsByUserId(Long userId) { + return roleService.getRoleIdsByUserId(userId); + } } diff --git a/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/permission/RoleService.java b/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/permission/RoleService.java index 9444c19..5d0b654 100644 --- a/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/permission/RoleService.java +++ b/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/permission/RoleService.java @@ -135,4 +135,9 @@ public interface RoleService { * @return */ List getRoleListByBusiLine(String busiLine); + + /** + * 通过用户编号,获得角色列表 + */ + List getRoleIdsByUserId(Long userId); } diff --git a/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/permission/RoleServiceImpl.java b/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/permission/RoleServiceImpl.java index 74e4d20..ff3e3b8 100644 --- a/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/permission/RoleServiceImpl.java +++ b/urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/permission/RoleServiceImpl.java @@ -14,7 +14,9 @@ import com.zteits.urbanops.module.system.controller.admin.permission.vo.role.Rol import com.zteits.urbanops.module.system.controller.admin.permission.vo.role.RoleRespVO; import com.zteits.urbanops.module.system.controller.admin.permission.vo.role.RoleSaveReqVO; import com.zteits.urbanops.module.system.dal.dataobject.permission.RoleDO; +import com.zteits.urbanops.module.system.dal.dataobject.permission.UserRoleDO; import com.zteits.urbanops.module.system.dal.mysql.permission.RoleMapper; +import com.zteits.urbanops.module.system.dal.mysql.permission.UserRoleMapper; import com.zteits.urbanops.module.system.dal.redis.RedisKeyConstants; import com.zteits.urbanops.module.system.enums.permission.DataScopeEnum; import com.zteits.urbanops.module.system.enums.permission.RoleCodeEnum; @@ -53,6 +55,9 @@ public class RoleServiceImpl implements RoleService { @Resource private RoleMapper roleMapper; + @Resource + private UserRoleMapper userRoleMapper; + @Override @Transactional(rollbackFor = Exception.class) @LogRecord(type = SYSTEM_ROLE_TYPE, subType = SYSTEM_ROLE_CREATE_SUB_TYPE, bizNo = "{{#role.id}}", @@ -272,6 +277,17 @@ public class RoleServiceImpl implements RoleService { return BeanUtils.toBean(roleDOS, RoleRespVO.class); } + @Override + public List getRoleIdsByUserId(Long userId) { + QueryWrapper sql = new QueryWrapper<>(); + sql.select("role_id"); + List list = userRoleMapper.selectList(sql.lambda().eq(UserRoleDO::getUserId, userId)); + if (CollectionUtil.isEmpty(list)) { + return Collections.emptyList(); + } + return list.stream().map(UserRoleDO::getRoleId).toList(); + } + /** * 获得自身的代理对象,解决 AOP 生效问题 *