diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/controller/PersonalHomeController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/controller/PersonalHomeController.java index 563b71b6..11684ec1 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/controller/PersonalHomeController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/bigscreen/controller/PersonalHomeController.java @@ -28,6 +28,7 @@ import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.dto.UserDTO; import org.dromara.common.core.enums.BusinessStatusEnum; import org.dromara.common.core.utils.StreamUtils; +import org.dromara.common.core.utils.StringUtils; import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; @@ -37,8 +38,11 @@ import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.web.core.BaseController; import org.dromara.patch.domain.bo.PdMasterBo; import org.dromara.patch.domain.vo.PdMasterBymiAndQt; +import org.dromara.patch.domain.vo.PdMasterVo; import org.dromara.patch.service.IPdMasterService; +import org.dromara.project.domain.BusUserProjectRelevancy; import org.dromara.project.service.IBusProjectService; +import org.dromara.project.service.IBusUserProjectRelevancyService; import org.dromara.system.domain.SysMenu; import org.dromara.system.domain.vo.RouterVo; import org.dromara.system.service.impl.SysMenuServiceImpl; @@ -98,6 +102,8 @@ public class PersonalHomeController extends BaseController { private final SysMenuServiceImpl sysMenuService; + private final IBusUserProjectRelevancyService userProjectRelevancyService; + // region AI 模块 /** @@ -189,7 +195,7 @@ public class PersonalHomeController extends BaseController { QueryWrapper queryWrapper = new QueryWrapper<>(); List definitionIds = new ArrayList<>(); - if (!"0".equals(projectId)) { + if (StringUtils.isNotBlank(projectId) && !"0".equals(projectId)) { List flowDefinitions = flowDefinitionMapper.selectList(new LambdaQueryWrapper() .select(FlowDefinition::getId) .like(FlowDefinition::getFlowCode, projectId)); @@ -198,9 +204,31 @@ public class PersonalHomeController extends BaseController { definitionIds.add(flowDefinition.getId()); }); } - if (definitionIds.isEmpty()) { - return null; + } else { + // 获取当前用户的所有项目 + List projectRelevancyList = userProjectRelevancyService.lambdaQuery() + .eq(BusUserProjectRelevancy::getUserId, LoginHelper.getUserId()) + .list(); + List projectIds = projectRelevancyList.stream().map(BusUserProjectRelevancy::getProjectId).distinct().toList(); + if (CollUtil.isEmpty(projectIds)) { + return R.ok(); } + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.select(FlowDefinition::getId); + lqw.and(w -> { + for (Long id : projectIds) { + w.or().like(FlowDefinition::getFlowCode, id); + } + }); + List flowDefinitions = flowDefinitionMapper.selectList(lqw); + if (flowDefinitions != null && !flowDefinitions.isEmpty()) { + flowDefinitions.forEach(flowDefinition -> { + definitionIds.add(flowDefinition.getId()); + }); + } + } + if (definitionIds.isEmpty()) { + return R.ok(); } queryWrapper.eq("t.node_type", NodeType.BETWEEN.getKey()); queryWrapper.in("t.processed_by", LoginHelper.getUserIdStr()); @@ -229,7 +257,7 @@ public class PersonalHomeController extends BaseController { taskInfoDto.setTotal((long) page.size()); taskInfoDto.setWeekCount((long) weeklyTasks.size()); - BusPdSjVo busPdSjVo = pdMasterService.queryPageListByDate(); + BusPdSjVo busPdSjVo = pdMasterService.queryPageListByDate(projectId); BusWjzxSjDateVo busWjzxSjDateVo = busWjzxService.queryWjzx(); taskInfoDto.setBusWjzxSjDateVo(busWjzxSjDateVo); @@ -299,6 +327,16 @@ public class PersonalHomeController extends BaseController { return pdMasterService.queryPageListBy(bo, pageQuery); } + /** + * 获取派单详细信息 + * + * @param id 主键 + */ + @GetMapping("/pd/{id}") + public R getPdInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(pdMasterService.queryById(id)); + } /** * 查询备忘录列表 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/patch/domain/PdMaster.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/patch/domain/PdMaster.java index 898969b4..f0df43af 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/patch/domain/PdMaster.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/patch/domain/PdMaster.java @@ -1,13 +1,14 @@ package org.dromara.patch.domain; -import org.dromara.common.mybatis.core.domain.BaseEntity; -import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; -import java.util.Date; -import com.fasterxml.jackson.annotation.JsonFormat; +import org.dromara.common.mybatis.core.domain.BaseEntity; import java.io.Serial; +import java.util.Date; /** * 派单对象 pd_master @@ -63,7 +64,12 @@ public class PdMaster extends BaseEntity { /** * 任务状态 */ - private String taskStatus="0"; + private String taskStatus = "0"; + + /** + * 文件 id + */ + private String fileIds; /** * 备注 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/patch/domain/bo/PdMasterBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/patch/domain/bo/PdMasterBo.java index 28091d6e..3c9fe5eb 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/patch/domain/bo/PdMasterBo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/patch/domain/bo/PdMasterBo.java @@ -1,15 +1,14 @@ package org.dromara.patch.domain.bo; -import org.dromara.patch.domain.PdMaster; -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 jakarta.validation.constraints.NotNull; import lombok.Data; import lombok.EqualsAndHashCode; -import jakarta.validation.constraints.*; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.patch.domain.PdMaster; + import java.util.Date; -import com.fasterxml.jackson.annotation.JsonFormat; /** * 派单业务对象 pd_master @@ -25,7 +24,7 @@ public class PdMasterBo extends BaseEntity { /** * 主键ID */ - @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + @NotNull(message = "主键ID不能为空", groups = {EditGroup.class}) private Long id; /** @@ -84,5 +83,9 @@ public class PdMasterBo extends BaseEntity { */ private String userName; + /** + * 文件 id + */ + private String fileIds; } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/patch/domain/vo/PdMasterVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/patch/domain/vo/PdMasterVo.java index 31e484d1..dd0eeecc 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/patch/domain/vo/PdMasterVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/patch/domain/vo/PdMasterVo.java @@ -1,21 +1,18 @@ package org.dromara.patch.domain.vo; -import java.util.Date; -import com.fasterxml.jackson.annotation.JsonFormat; -import org.dromara.patch.domain.PdMaster; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.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 org.dromara.common.translation.annotation.Translation; +import org.dromara.common.translation.constant.TransConstant; +import org.dromara.patch.domain.PdMaster; import java.io.Serial; import java.io.Serializable; import java.util.Date; - /** * 派单视图对象 pd_master * @@ -96,6 +93,16 @@ public class PdMasterVo implements Serializable { @ExcelProperty(value = "子用户") private String slaveName; + /** + * 文件 id + */ + private String fileIds; + + /** + * 文件名称 + */ + @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "fileIds") + private String fileNames; /** * 前端显示 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/patch/service/IPdMasterService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/patch/service/IPdMasterService.java index 2a8820fb..304ab1d5 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/patch/service/IPdMasterService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/patch/service/IPdMasterService.java @@ -1,16 +1,16 @@ package org.dromara.patch.service; +import com.baomidou.mybatisplus.extension.service.IService; import org.dromara.bigscreen.domain.vo.BusPdSjVo; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.patch.domain.PdMaster; +import org.dromara.patch.domain.bo.PdMasterBo; import org.dromara.patch.domain.bo.PdMasterProgressReq; import org.dromara.patch.domain.vo.PdMasterBymiAndQt; import org.dromara.patch.domain.vo.PdMasterProgressVo; import org.dromara.patch.domain.vo.PdMasterVo; -import org.dromara.patch.domain.bo.PdMasterBo; -import org.dromara.patch.domain.PdMaster; -import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.common.mybatis.core.page.PageQuery; -import com.baomidou.mybatisplus.extension.service.IService; import java.util.Collection; import java.util.List; @@ -20,8 +20,9 @@ import java.util.List; * @author Lion Li * @date 2025-08-19 */ -public interface IPdMasterService extends IService{ +public interface IPdMasterService extends IService { List queryProgressList(Long masterId); + void validEntityBeforeSave(PdMaster entity); // 新增进度 @@ -32,6 +33,7 @@ public interface IPdMasterService extends IService{ // 删除进度 Boolean removeProgress(Long id); + /** * 查询派单 * @@ -94,7 +96,8 @@ public interface IPdMasterService extends IService{ /** * 查询派单列表 * + * @param projectId 项目 id * @return 派单列表 */ - BusPdSjVo queryPageListByDate(); + BusPdSjVo queryPageListByDate(String projectId); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/patch/service/impl/PdMasterServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/patch/service/impl/PdMasterServiceImpl.java index 1f66a312..933aac5c 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/patch/service/impl/PdMasterServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/patch/service/impl/PdMasterServiceImpl.java @@ -1,35 +1,33 @@ package org.dromara.patch.service.impl; import cn.hutool.core.bean.BeanUtil; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import cn.hutool.core.collection.CollUtil; +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 org.dromara.bigscreen.domain.vo.BusPdSjVo; 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.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.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; -import org.dromara.common.translation.annotation.Translation; +import org.dromara.patch.domain.PdMaster; import org.dromara.patch.domain.PdMasterSon; import org.dromara.patch.domain.PdMasterUser; +import org.dromara.patch.domain.bo.PdMasterBo; import org.dromara.patch.domain.bo.PdMasterProgressReq; import org.dromara.patch.domain.vo.PdMasterBymiAndQt; import org.dromara.patch.domain.vo.PdMasterProgressVo; -import org.dromara.patch.enums.TaskStatusEnum; -import org.dromara.patch.service.IPdMasterSonService; -import org.dromara.patch.service.IPdMasterUserService; -import org.dromara.system.domain.SysUser; -import org.springframework.stereotype.Service; -import org.dromara.patch.domain.bo.PdMasterBo; import org.dromara.patch.domain.vo.PdMasterVo; -import org.dromara.patch.domain.PdMaster; +import org.dromara.patch.enums.TaskStatusEnum; import org.dromara.patch.mapper.PdMasterMapper; import org.dromara.patch.service.IPdMasterService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.dromara.patch.service.IPdMasterSonService; +import org.dromara.patch.service.IPdMasterUserService; +import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; @@ -86,7 +84,7 @@ public class PdMasterServiceImpl extends ServiceImpl i if (one == null) { throw new RuntimeException("执行人未找到!"); } - if (!Objects.equals(userId, one.getSlaveid())){ + if (!Objects.equals(userId, one.getSlaveid())) { throw new RuntimeException("执行人不匹配!"); } if (progress.getOrdersId() == null) { @@ -105,7 +103,7 @@ public class PdMasterServiceImpl extends ServiceImpl i bigDecimal = bigDecimal.add(new BigDecimal(masterSon.getProgress())); } //bigDecimal是否为100,100变更数据状态 - if (bigDecimal.compareTo(new BigDecimal("100")) == 0){ + if (bigDecimal.compareTo(new BigDecimal("100")) == 0) { //更新主表状态 PdMaster pdMaster = baseMapper.selectById(progress.getOrdersId()); pdMaster.setTaskStatus(TaskStatusEnum.FINISHED.getValue()); @@ -116,6 +114,7 @@ public class PdMasterServiceImpl extends ServiceImpl i } return false; } + @Override public Boolean editProgress(PdMasterProgressVo progress) { if (progress.getOrdersId() == null) { @@ -158,8 +157,10 @@ public class PdMasterServiceImpl extends ServiceImpl i baseMapper.updateById(master); } } + /** * 根据主表ID查询进度详情列表 + * * @param masterId 主表ID * @return 进度详情列表 */ @@ -170,6 +171,7 @@ public class PdMasterServiceImpl extends ServiceImpl i } return baseMapper.selectProgressByMasterId(masterId); } + /** * 查询派单 * @@ -177,7 +179,7 @@ public class PdMasterServiceImpl extends ServiceImpl i * @return 派单 */ @Override - public PdMasterVo queryById(Long id){ + public PdMasterVo queryById(Long id) { //1、获取基础数据 PdMasterVo pdMasterVo = baseMapper.selectVoById(id); //2、查询下面的用户 @@ -209,7 +211,7 @@ public class PdMasterServiceImpl extends ServiceImpl i for (PdMasterSon pdMasterSon : list) { bigDecimal = bigDecimal.add(new BigDecimal(pdMasterSon.getProgress())); } - item.setCompletionProgress(bigDecimal+"%"); + item.setCompletionProgress(bigDecimal + "%"); //执行人 PdMasterUser one1 = pdMasterUserService.getById(item.getId()); item.setSlaveName(one1.getSlaveName()); @@ -222,39 +224,53 @@ public class PdMasterServiceImpl extends ServiceImpl i PdMasterBymiAndQt res = new PdMasterBymiAndQt(); // 获取登陆人 Long userId = LoginHelper.getUserId(); + Long projectId = bo.getProjectId(); //获取我派发的 - List pdMasters = baseMapper.selectVoList(new LambdaQueryWrapper().eq(PdMaster::getCreateBy, userId)); + List pdMasters = baseMapper.selectVoList(new LambdaQueryWrapper() + .eq(projectId != null && projectId != 0, PdMaster::getProjectId, projectId) + .eq(PdMaster::getCreateBy, userId)); pdMasters = pdJudge(bo.getTaskType(), pdMasters); res.setWpd(pdMasters); // 获取其他部门派发给我的 List pdMasterUsers = pdMasterUserService.getBaseMapper().selectList(new LambdaQueryWrapper().eq(PdMasterUser::getSlaveid, userId)); - if (pdMasterUsers != null && pdMasterUsers.size() > 0) { - List collect = pdMasterUsers.stream().map(item ->item.getOrdersid()).collect((Collectors.toList())); - List pdMasterVos = baseMapper.selectVoByIds(collect); + if (CollUtil.isNotEmpty(pdMasterUsers)) { + List collect = pdMasterUsers.stream().map(PdMasterUser::getOrdersid).collect((Collectors.toList())); + List pdMasterVos = baseMapper.selectVoList(new LambdaQueryWrapper() + .eq(projectId != null && projectId != 0, PdMaster::getProjectId, projectId) + .in(PdMaster::getId, collect)); pdMasterVos = pdJudge(bo.getTaskType(), pdMasterVos); res.setQtbm(pdMasterVos); } - - return res; } @Override - public BusPdSjVo queryPageListByDate() { + public BusPdSjVo queryPageListByDate(String projectId) { BusPdSjVo res = new BusPdSjVo(); // 获取登陆人 Long userId = LoginHelper.getUserId(); //获取我派发的 - Long l = baseMapper.selectCount(new LambdaQueryWrapper().eq(PdMaster::getCreateBy, userId)); + Long l = baseMapper.selectCount(new LambdaQueryWrapper() + .eq(PdMaster::getCreateBy, userId) + .eq(StringUtils.isNotBlank(projectId) && !projectId.equals("0"), PdMaster::getProjectId, projectId)); //其他部门派发给我的 - Long count = pdMasterUserService.getBaseMapper().selectCount(new LambdaQueryWrapper().eq(PdMasterUser::getSlaveid, userId)); + List pdMasterUsers = pdMasterUserService.getBaseMapper() + .selectList(new LambdaQueryWrapper() + .eq(PdMasterUser::getSlaveid, userId)); + Long l1 = 0L; + if (CollUtil.isNotEmpty(pdMasterUsers)) { + Set ids = pdMasterUsers.stream().map(PdMasterUser::getOrdersid).collect(Collectors.toSet()); + l1 = baseMapper.selectCount(new LambdaQueryWrapper() + .eq(StringUtils.isNotBlank(projectId) && !projectId.equals("0"), PdMaster::getProjectId, projectId) + .in(PdMaster::getId, ids)); + } res.setWdpdrw(l); - res.setQtbmpd(count); + res.setQtbmpd(l1); return res; } - private List pdJudge(Integer flow ,List records) { + private List pdJudge(Integer flow, List records) { if (records == null || records.size() == 0) return records; //获取当前主数据下面的进度百分比 @@ -264,12 +280,12 @@ public class PdMasterServiceImpl extends ServiceImpl i for (PdMasterSon pdMasterSon : list) { bigDecimal = bigDecimal.add(new BigDecimal(pdMasterSon.getProgress())); } - item.setCompletionProgress(bigDecimal+"%"); + item.setCompletionProgress(bigDecimal + "%"); if (bigDecimal.compareTo(new BigDecimal("0")) == 0) { item.setTapName("待处理"); - }else if (bigDecimal.compareTo(new BigDecimal("100")) == 0) { + } else if (bigDecimal.compareTo(new BigDecimal("100")) == 0) { item.setTapName("已完成"); - }else if (bigDecimal.compareTo(new BigDecimal("100")) < 0) { + } else if (bigDecimal.compareTo(new BigDecimal("100")) < 0) { item.setTapName("进行中"); } //执行人 @@ -286,17 +302,11 @@ public class PdMasterServiceImpl extends ServiceImpl i if (flow == 4) { return true; } else if (flow == 1) { - if (item.getTapName().equals("进行中")) { - return true; - } + return item.getTapName().equals("进行中"); } else if (flow == 2) { - if (item.getTapName().equals("已完成")) { - return true; - } + return item.getTapName().equals("已完成"); } else if (flow == 3) { - if (item.getTapName().equals("待处理")) { - return true; - } + return item.getTapName().equals("待处理"); } return false; @@ -309,7 +319,6 @@ public class PdMasterServiceImpl extends ServiceImpl i } - /** * 查询符合条件的派单列表 * @@ -371,7 +380,7 @@ public class PdMasterServiceImpl extends ServiceImpl i //1、修改数据 PdMaster update = MapstructUtils.convert(bo, PdMaster.class); validEntityBeforeSave(update); - if (baseMapper.updateById(update) > 0){ + if (baseMapper.updateById(update) > 0) { //2、删除子用户 pdMasterUserService.remove(new LambdaQueryWrapper().eq(PdMasterUser::getOrdersid, bo.getId())); //3、新增子用户 @@ -399,7 +408,7 @@ public class PdMasterServiceImpl extends ServiceImpl i */ @Override public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { - if(isValid){ + if (isValid) { //TODO 做一些业务上的校验,判断是否需要校验 } pdMasterUserService.getBaseMapper().delete(new LambdaQueryWrapper().in(PdMasterUser::getOrdersid, ids)); @@ -407,5 +416,4 @@ public class PdMasterServiceImpl extends ServiceImpl i } - }