From 12f02638a235b75fe069f9aca7e4ed87f9d4851f Mon Sep 17 00:00:00 2001 From: lcj <2331845269@qq.com> Date: Fri, 29 Aug 2025 20:15:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=89=A9=E8=B4=A8=E4=BE=9B?= =?UTF-8?q?=E8=B4=A7=E6=80=BB=E8=AE=A1=E5=88=92=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusBiddingLimitVersionsServiceImpl.java | 33 ++-- .../BusTotalsupplyplanController.java | 56 ++++--- .../domain/BusTotalsupplyplan.java | 20 ++- .../domain/vo/BusTotalsupplyplanVo.java | 69 +++++---- .../service/IBusTotalsupplyplanService.java | 27 +++- .../impl/BusTotalsupplyplanServiceImpl.java | 141 ++++++++++++++---- .../impl/MatMaterialIssueServiceImpl.java | 4 +- .../patch/controller/PdMasterController.java | 62 ++++---- .../PgsProgressCategoryController.java | 3 - .../controller/system/SysDeptController.java | 11 ++ .../system/service/ISysDeptService.java | 7 + .../service/impl/SysDeptServiceImpl.java | 30 ++-- 12 files changed, 305 insertions(+), 158 deletions(-) diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/service/impl/BusBiddingLimitVersionsServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/service/impl/BusBiddingLimitVersionsServiceImpl.java index 94149c1d..002c3e9a 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/service/impl/BusBiddingLimitVersionsServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bidding/service/impl/BusBiddingLimitVersionsServiceImpl.java @@ -1,30 +1,29 @@ package org.dromara.bidding.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 com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.dromara.bidding.domain.BusBiddingLimitVersions; +import org.dromara.bidding.domain.bo.BusBiddingLimitVersionsBo; +import org.dromara.bidding.domain.vo.BusBiddingLimitVersionsVo; +import org.dromara.bidding.mapper.BusBiddingLimitVersionsMapper; +import org.dromara.bidding.service.IBusBiddingLimitVersionsService; import org.dromara.common.core.domain.event.ProcessDeleteEvent; import org.dromara.common.core.domain.event.ProcessEvent; import org.dromara.common.core.domain.event.ProcessTaskEvent; 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 org.dromara.design.domain.BusBillofquantitiesVersions; +import org.dromara.common.mybatis.core.page.TableDataInfo; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Service; -import org.dromara.bidding.domain.bo.BusBiddingLimitVersionsBo; -import org.dromara.bidding.domain.vo.BusBiddingLimitVersionsVo; -import org.dromara.bidding.domain.BusBiddingLimitVersions; -import org.dromara.bidding.mapper.BusBiddingLimitVersionsMapper; -import org.dromara.bidding.service.IBusBiddingLimitVersionsService; +import java.util.Collection; import java.util.List; import java.util.Map; -import java.util.Collection; /** * 成本- 投标版本Service业务层处理 @@ -46,7 +45,7 @@ public class BusBiddingLimitVersionsServiceImpl extends ServiceImpl ids, Boolean isValid) { - if(isValid){ + if (isValid) { //TODO 做一些业务上的校验,判断是否需要校验 } return baseMapper.deleteByIds(ids) > 0; @@ -147,7 +146,7 @@ public class BusBiddingLimitVersionsServiceImpl extends ServiceImpl importData(@RequestPart("file") MultipartFile file) { + return toAjax(busTotalsupplyplanService.importData(file)); + } + /** * 获取物资-总供应计划详细信息 * @@ -90,7 +101,7 @@ public class BusTotalsupplyplanController extends BaseController { @SaCheckPermission("design:totalsupplyplan:query") @GetMapping("/{id}") public R getInfo(@NotNull(message = "主键不能为空") - @PathVariable Long id) { + @PathVariable Long id) { return R.ok(busTotalsupplyplanService.queryById(id)); } @@ -116,6 +127,17 @@ public class BusTotalsupplyplanController extends BaseController { return toAjax(busTotalsupplyplanService.updateByBo(bo)); } + /** + * 批量修改物资-总供应计划 + */ + @SaCheckPermission("design:totalsupplyplan:batchEdit") + @Log(title = "物资-总供应计划", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping("/batchEdit") + public R batchEdit(@Validated(EditGroup.class) @RequestBody List boList) { + return toAjax(busTotalsupplyplanService.updateBatch(boList)); + } + // /** // * 删除物资-总供应计划 // * diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/BusTotalsupplyplan.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/BusTotalsupplyplan.java index daba0156..e85c22ca 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/BusTotalsupplyplan.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/BusTotalsupplyplan.java @@ -1,14 +1,14 @@ package org.dromara.cailiaoshebei.domain; -import org.dromara.common.mybatis.core.domain.BaseEntity; -import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; - -import java.time.LocalDate; -import java.util.Date; +import org.dromara.common.mybatis.core.domain.BaseEntity; import java.io.Serial; +import java.time.LocalDate; +import java.util.Date; /** * 物资-总供应计划对象 bus_totalsupplyplan @@ -35,6 +35,16 @@ public class BusTotalsupplyplan extends BaseEntity { */ private Long projectId; + /** + * 批次ID + */ + private String sid; + + /** + * 批次父ID + */ + private String pid; + /** * 批次号 */ diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusTotalsupplyplanVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusTotalsupplyplanVo.java index f7fdc18d..3870b239 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusTotalsupplyplanVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/domain/vo/BusTotalsupplyplanVo.java @@ -1,15 +1,14 @@ package org.dromara.cailiaoshebei.domain.vo; -import java.util.Date; - -import org.dromara.cailiaoshebei.domain.BusTotalsupplyplan; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; +import org.dromara.cailiaoshebei.domain.BusTotalsupplyplan; import java.io.Serial; import java.io.Serializable; +import java.util.Date; /** @@ -43,48 +42,49 @@ public class BusTotalsupplyplanVo implements Serializable { @ExcelProperty(value = "项目Id") private Long projectId; + /** + * 批次ID + */ + private String sid; + + /** + * 批次父ID + */ + private String pid; + /** * 编制日期 */ - @ExcelProperty(value = "编制日期") private Date compileDate; /** * 计划编号 */ - @ExcelProperty(value = "计划编号") private String planNumber; /** * 编号 */ - @ExcelProperty(value = "编号") private String num; /** * 名称 */ - @ExcelProperty(value = "名称") + @ExcelProperty(value = "工程或费用名称") private String name; - /** - * 规格 - */ - @ExcelProperty(value = "规格") - private String specification; - - /** - * 材质 - */ - @ExcelProperty(value = "材质") - private String texture; - /** * 单位 */ @ExcelProperty(value = "单位") private String unit; + /** + * 规格 + */ + @ExcelProperty(value = "规格型号") + private String specification; + /** * 数量 */ @@ -97,34 +97,39 @@ public class BusTotalsupplyplanVo implements Serializable { @ExcelProperty(value = "品牌") private String brand; + /** + * 材质 + */ + @ExcelProperty(value = "材质") + private String texture; + /** * 质量标准 */ @ExcelProperty(value = "质量标准") private String qualityStandard; - /** - * 预计使用日期 - */ - @ExcelProperty(value = "预计使用日期") - private Date dateService; - - /** - * 交货地点 - */ - @ExcelProperty(value = "交货地点") - private String deliveryPoints; - /** * 使用部位 */ @ExcelProperty(value = "使用部位") private String partUsed; + /** + * 交货地点 + */ + @ExcelProperty(value = "交货地点") + private String deliveryPoints; + + /** + * 预计使用日期 + */ + @ExcelProperty(value = "预计使用日期") + private Date dateService; + /** * 审核状态 */ - @ExcelProperty(value = "审核状态") private String status; /** diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/IBusTotalsupplyplanService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/IBusTotalsupplyplanService.java index 53f25945..d7582302 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/IBusTotalsupplyplanService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/IBusTotalsupplyplanService.java @@ -1,14 +1,15 @@ package org.dromara.cailiaoshebei.service; +import com.baomidou.mybatisplus.extension.service.IService; +import org.dromara.cailiaoshebei.domain.BusTotalsupplyplan; +import org.dromara.cailiaoshebei.domain.bo.BusTotalsupplyplanBo; import org.dromara.cailiaoshebei.domain.bo.MasterDataReq; import org.dromara.cailiaoshebei.domain.dto.MasterDataReqDto; import org.dromara.cailiaoshebei.domain.vo.BusTotalsupplyplanVo; -import org.dromara.cailiaoshebei.domain.bo.BusTotalsupplyplanBo; -import org.dromara.cailiaoshebei.domain.BusTotalsupplyplan; -import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.springframework.web.multipart.MultipartFile; -import com.baomidou.mybatisplus.extension.service.IService; import java.util.Collection; import java.util.List; @@ -18,7 +19,7 @@ import java.util.List; * @author Lion Li * @date 2025-08-13 */ -public interface IBusTotalsupplyplanService extends IService{ +public interface IBusTotalsupplyplanService extends IService { /** * 查询物资-总供应计划 @@ -78,4 +79,20 @@ public interface IBusTotalsupplyplanService extends IService * @return 主数据列表 */ MasterDataReqDto masterData(MasterDataReq bo); + + /** + * 批量更新 + * + * @param boList 批量更新 + * @return 是否更新成功 + */ + Boolean updateBatch(List boList); + + /** + * 导入数据 + * + * @param file 导入数据 + * @return 是否导入成功 + */ + Boolean importData(MultipartFile file); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusTotalsupplyplanServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusTotalsupplyplanServiceImpl.java index 28db77f3..7308cc50 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusTotalsupplyplanServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/cailiaoshebei/service/impl/BusTotalsupplyplanServiceImpl.java @@ -1,34 +1,40 @@ package org.dromara.cailiaoshebei.service.impl; import cn.hutool.core.bean.BeanUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelReader; +import com.alibaba.excel.read.metadata.ReadSheet; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.dromara.cailiaoshebei.domain.BusTotalsupplyplan; +import org.dromara.cailiaoshebei.domain.BusTotalsupplyplanAudit; +import org.dromara.cailiaoshebei.domain.bo.BusTotalsupplyplanBo; import org.dromara.cailiaoshebei.domain.bo.MasterDataReq; import org.dromara.cailiaoshebei.domain.dto.MasterDataReqDto; +import org.dromara.cailiaoshebei.domain.vo.BusTotalsupplyplanVo; +import org.dromara.cailiaoshebei.mapper.BusTotalsupplyplanMapper; +import org.dromara.cailiaoshebei.service.IBusTotalsupplyplanAuditService; +import org.dromara.cailiaoshebei.service.IBusTotalsupplyplanService; +import org.dromara.common.core.constant.HttpStatus; import org.dromara.common.core.domain.event.ProcessDeleteEvent; import org.dromara.common.core.domain.event.ProcessEvent; import org.dromara.common.core.domain.event.ProcessTaskEvent; +import org.dromara.common.core.exception.ServiceException; 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.excel.core.DefaultExcelListener; 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 org.dromara.cailiaoshebei.domain.BusTotalsupplyplanAudit; -import org.dromara.cailiaoshebei.service.IBusTotalsupplyplanAuditService; +import org.dromara.common.mybatis.core.page.TableDataInfo; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Service; -import org.dromara.cailiaoshebei.domain.bo.BusTotalsupplyplanBo; -import org.dromara.cailiaoshebei.domain.vo.BusTotalsupplyplanVo; -import org.dromara.cailiaoshebei.domain.BusTotalsupplyplan; -import org.dromara.cailiaoshebei.mapper.BusTotalsupplyplanMapper; -import org.dromara.cailiaoshebei.service.IBusTotalsupplyplanService; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; -import java.util.List; -import java.util.Map; -import java.util.Collection; +import java.util.*; /** * 物资-总供应计划Service业务层处理 @@ -39,14 +45,11 @@ import java.util.Collection; @RequiredArgsConstructor @Service @Slf4j -public class BusTotalsupplyplanServiceImpl extends ServiceImpl implements IBusTotalsupplyplanService { - - private final BusTotalsupplyplanMapper baseMapper; +public class BusTotalsupplyplanServiceImpl extends ServiceImpl + implements IBusTotalsupplyplanService { private final IBusTotalsupplyplanAuditService busTotalsupplyplanAuditService; - - /** * 查询物资-总供应计划 * @@ -54,7 +57,7 @@ public class BusTotalsupplyplanServiceImpl extends ServiceImpl queryList(BusTotalsupplyplanBo bo) { + // 1. 先构建查询条件(MyBatis Plus 的 LambdaQueryWrapper) LambdaQueryWrapper lqw = buildQueryWrapper(bo); + // 2. 查出所有 pid(有子节点的 sid) + List parentIds = baseMapper.selectList( + Wrappers.lambdaQuery() + .select(BusTotalsupplyplan::getPid) + .isNotNull(BusTotalsupplyplan::getPid) + ).stream() + .map(BusTotalsupplyplan::getPid) + .filter(Objects::nonNull) + .distinct() + .toList(); + // 3. 在查询条件的基础上,加上 notIn 过滤(排除父节点,只取叶子节点) + lqw.notIn(!parentIds.isEmpty(), BusTotalsupplyplan::getSid, parentIds); + // 4. 查询叶子节点 return baseMapper.selectVoList(lqw); } private LambdaQueryWrapper buildQueryWrapper(BusTotalsupplyplanBo bo) { Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.orderByDesc(BusTotalsupplyplan::getId); lqw.eq(StringUtils.isNotBlank(bo.getTexture()), BusTotalsupplyplan::getTexture, bo.getTexture()); lqw.eq(StringUtils.isNotBlank(bo.getBrand()), BusTotalsupplyplan::getBrand, bo.getBrand()); lqw.eq(StringUtils.isNotBlank(bo.getQualityStandard()), BusTotalsupplyplan::getQualityStandard, bo.getQualityStandard()); lqw.eq(bo.getDateService() != null, BusTotalsupplyplan::getDateService, bo.getDateService()); lqw.eq(StringUtils.isNotBlank(bo.getDeliveryPoints()), BusTotalsupplyplan::getDeliveryPoints, bo.getDeliveryPoints()); lqw.eq(StringUtils.isNotBlank(bo.getPartUsed()), BusTotalsupplyplan::getPartUsed, bo.getPartUsed()); + lqw.orderByAsc(BusTotalsupplyplan::getId); return lqw; } @@ -130,7 +147,7 @@ public class BusTotalsupplyplanServiceImpl extends ServiceImpl ids, Boolean isValid) { - if(isValid){ + if (isValid) { //TODO 做一些业务上的校验,判断是否需要校验 } return baseMapper.deleteByIds(ids) > 0; @@ -162,6 +179,78 @@ public class BusTotalsupplyplanServiceImpl extends ServiceImpl boList) { + List list = BeanUtil.copyToList(boList, BusTotalsupplyplan.class); + for (BusTotalsupplyplan busTotalsupplyplan : list) { + validEntityBeforeSave(busTotalsupplyplan); + } + return this.updateBatchById(list); + } + + /** + * 导入数据 + * + * @param file 导入数据 + * @return 是否导入成功 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean importData(MultipartFile file) { + // 检查文件是否为空 + if (file == null || file.isEmpty()) { + throw new ServiceException("上传文件不能为空", HttpStatus.BAD_REQUEST); + } + // 检查文件大小 + if (file.getSize() == 0) { + throw new ServiceException("上传文件不能为空文件", HttpStatus.BAD_REQUEST); + } + // 检查文件名 + if (file.getOriginalFilename() == null || file.getOriginalFilename().isEmpty()) { + throw new ServiceException("文件名不能为空", HttpStatus.BAD_REQUEST); + } + try { + // 使用EasyExcel读取所有sheet + List allData = new ArrayList<>(); + // 创建Excel读取监听器 + DefaultExcelListener listener = new DefaultExcelListener<>(false); + // 读取Excel文件 + ExcelReader excelReader = EasyExcel.read(file.getInputStream(), BusTotalsupplyplanVo.class, listener).build(); + // 获取所有sheet + List sheetList = excelReader.excelExecutor().sheetList(); + // 遍历所有sheet + for (ReadSheet readSheet : sheetList) { + // 为每个sheet创建新的监听器实例 + DefaultExcelListener sheetListener = new DefaultExcelListener<>(false); + // 读取当前sheet数据 + EasyExcel.read(file.getInputStream(), BusTotalsupplyplanVo.class, sheetListener) + .sheet(readSheet.getSheetNo()) + .doRead(); + // 将当前sheet的数据添加到总数据中 + allData.addAll(sheetListener.getExcelResult().getList()); + } + // 关闭读取器 + excelReader.finish(); + if (allData.isEmpty()) { + throw new ServiceException("未读取到有效数据", HttpStatus.BAD_REQUEST); + } + // 处理导入的数据 + List list = BeanUtil.copyToList(allData, BusTotalsupplyplan.class); + // 批量更新 + return this.updateBatchById(list); + } catch (Exception e) { + log.error("物资供货总计划,导入Excel文件失败", e); + throw new ServiceException("导入失败: " + e.getMessage(), HttpStatus.ERROR); + } + } + /** * 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等) * 正常使用只需#processEvent.flowCode=='leave1' @@ -169,7 +258,7 @@ public class BusTotalsupplyplanServiceImpl extends ServiceImpl editProgress(@Validated @RequestBody PdMasterProgressVo progress) { -// return toAjax(pdMasterService.editProgress(progress)); -// } + /** + * 修改进度详情 + */ + @SaCheckPermission("patch:master:editProgress") + @PutMapping("/editProgress") + public R editProgress(@Validated @RequestBody PdMasterProgressVo progress) { + return toAjax(pdMasterService.editProgress(progress)); + } /** * 删除进度详情 @@ -84,6 +82,7 @@ public class PdMasterController extends BaseController { /** * 查询派单进度详情列表 + * * @param masterId 派单主表ID * @return 进度详情列表 */ @@ -94,6 +93,7 @@ public class PdMasterController extends BaseController { @PathVariable Long masterId) { return R.ok(pdMasterService.queryProgressList(masterId)); } + /** * 查询派单列表 */ @@ -122,7 +122,7 @@ public class PdMasterController extends BaseController { @SaCheckPermission("patch:master:query") @GetMapping("/{id}") public R getInfo(@NotNull(message = "主键不能为空") - @PathVariable Long id) { + @PathVariable Long id) { return R.ok(pdMasterService.queryById(id)); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/controller/PgsProgressCategoryController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/controller/PgsProgressCategoryController.java index 50e63197..b8ef3508 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/controller/PgsProgressCategoryController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/progress/controller/PgsProgressCategoryController.java @@ -50,8 +50,6 @@ public class PgsProgressCategoryController extends BaseController { @Resource private IPgsProgressCategoryService pgsProgressCategoryService; - @Resource - private IFacMatrixService matrixService; /** * 查询进度类别列表 @@ -96,7 +94,6 @@ public class PgsProgressCategoryController extends BaseController { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); //根据projectid拿到整个数据 - queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(PgsProgressCategory::getProjectId, projectId.get("projectId")); List list = pgsProgressCategoryService.list(queryWrapper); List ids = new ArrayList<>(); diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java index 45b84185..3defe235 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java @@ -2,6 +2,7 @@ package org.dromara.system.controller.system; import cn.dev33.satoken.annotation.SaCheckPermission; import cn.hutool.core.convert.Convert; +import cn.hutool.core.lang.tree.Tree; import lombok.RequiredArgsConstructor; import org.dromara.common.core.constant.SystemConstants; import org.dromara.common.core.domain.R; @@ -56,6 +57,16 @@ public class SysDeptController extends BaseController { return R.ok(depts); } + /** + * 根据项目id获取部门树以及岗位列表 + */ + @SaCheckPermission("system:dept:listTree") + @GetMapping("/list/tree") + public R>> listTreeByProjectId() { + List> tree = deptService.buildDeptTree(); + return R.ok(tree); + } + /** * 根据部门编号获取详细信息 * diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java index 4e9f52c9..964a2da6 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java @@ -36,6 +36,13 @@ public interface ISysDeptService { */ List> buildDeptTreeSelect(List depts); + /** + * 构建前端所需要下拉树结构 + * + * @return 下拉树结构列表 + */ + List> buildDeptTree(); + /** * 根据角色ID查询部门树信息 * diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java index 56fdb250..aa19169a 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java @@ -21,11 +21,13 @@ import org.dromara.common.mybatis.helper.DataBaseHelper; import org.dromara.common.redis.utils.CacheUtils; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.system.domain.SysDept; +import org.dromara.system.domain.SysPost; import org.dromara.system.domain.SysRole; import org.dromara.system.domain.SysUser; import org.dromara.system.domain.bo.SysDeptBo; import org.dromara.system.domain.enums.SysDeptTypeEnum; import org.dromara.system.domain.vo.SysDeptVo; +import org.dromara.system.domain.vo.SysPostVo; import org.dromara.system.mapper.SysDeptMapper; import org.dromara.system.mapper.SysPostMapper; import org.dromara.system.mapper.SysRoleMapper; @@ -38,6 +40,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.*; +import java.util.stream.Collectors; /** * 部门管理 服务实现 @@ -133,30 +136,17 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService { /** * 构建前端所需要下拉树结构 * - * @param projectId 项目id * @return 下拉树结构列表 - *//* + */ @Override - public List> buildDeptTreeByProjectId(Long projectId) { - SysDept dept = baseMapper.selectOne( - new LambdaQueryWrapper<>(SysDept.class) - .eq(SysDept::getProjectId, projectId) - .eq(SysDept::getDeptType, SysDeptTypeEnum.PROJECT.getCode()) - .eq(SysDept::getStatus, SystemConstants.NORMAL) - ); - if (dept == null) { - return List.of(); + public List> buildDeptTree() { + List deptVoList = baseMapper.selectVoList(); + if (CollUtil.isEmpty(deptVoList)) { + return CollUtil.newArrayList(); } - List deptIds = Stream.concat( - Arrays.stream(dept.getAncestors().split(",")) - .filter(StringUtils::isNotBlank) - .map(Long::parseLong), - Stream.of(dept.getDeptId()) - ).toList(); - List deptVoList = baseMapper.selectVoByIds(deptIds); List postVos = postMapper.selectVoList( new LambdaQueryWrapper<>(SysPost.class) - .in(SysPost::getDeptId, deptIds) + .in(SysPost::getDeptId, deptVoList.stream().map(SysDeptVo::getDeptId).collect(Collectors.toSet())) .eq(SysPost::getStatus, SystemConstants.NORMAL) ); Map> postVoMap = postVos.stream().collect(Collectors.groupingBy(SysPostVo::getDeptId)); @@ -182,7 +172,7 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService { } } return treeList; - }*/ + } /** * 根据角色ID查询部门树信息