From 743c59088281c0324486125e762c50821be5626b Mon Sep 17 00:00:00 2001 From: username <1532322479@qq.com> Date: Sun, 30 Mar 2025 11:31:29 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E4=BF=AE=E6=94=B9=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E7=AE=A1=E7=90=86=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ct/controller/CtTaskBranchController.java | 321 +++++++++++- .../ct/controller/CtTaskInfoController.java | 31 +- .../java/com/bs/ct/domain/CtTaskBranch.java | 119 ++++- .../java/com/bs/ct/vo/CtTaskBranchVO.java | 101 ++++ .../java/com/bs/ct/vo/CtTaskTemplateVO.java | 47 +- .../src/main/java/com/bs/ct/vo/MyTaskVO.java | 80 +++ .../bs/system/service/ISysDeptService.java | 2 + .../service/impl/SysDeptServiceImpl.java | 36 ++ bs-ui/src/api/task/branch.js | 18 + bs-ui/src/api/task/info.js | 9 + .../feedback/other-task/index.vue | 135 +++-- .../other-task/components/AuditDialog.vue | 37 +- .../send/other-task/components/EditDialog.vue | 40 +- .../task-distribut/send/other-task/index.vue | 467 +++++++++--------- bs-ui/src/views/task/my-task/index.vue | 78 +-- bs-ui/src/views/task/template/index.vue | 51 +- 16 files changed, 1184 insertions(+), 388 deletions(-) create mode 100644 bs-admin/src/main/java/com/bs/ct/vo/CtTaskBranchVO.java create mode 100644 bs-admin/src/main/java/com/bs/ct/vo/MyTaskVO.java diff --git a/bs-admin/src/main/java/com/bs/ct/controller/CtTaskBranchController.java b/bs-admin/src/main/java/com/bs/ct/controller/CtTaskBranchController.java index ce2120c..fcb0c16 100644 --- a/bs-admin/src/main/java/com/bs/ct/controller/CtTaskBranchController.java +++ b/bs-admin/src/main/java/com/bs/ct/controller/CtTaskBranchController.java @@ -1,13 +1,30 @@ package com.bs.ct.controller; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; import javax.servlet.http.HttpServletResponse; +import com.bs.cm.domain.CmAttach; +import com.bs.cm.service.ICmAttachService; +import com.bs.common.core.domain.entity.SysDept; import com.bs.common.core.domain.entity.SysUser; +import com.bs.common.exception.UtilException; +import com.bs.ct.domain.CtTaskFeedback; +import com.bs.ct.domain.CtTaskInfo; +import com.bs.ct.service.ICtTaskFeedbackService; +import com.bs.ct.service.ICtTaskInfoService; +import com.bs.ct.vo.CtTaskBranchVO; +import com.bs.ct.vo.MyTaskVO; +import com.bs.system.service.ISysDeptService; import com.bs.system.service.ISysUserService; +import com.github.pagehelper.PageInfo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.springframework.beans.BeanUtils; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -44,6 +61,14 @@ public class CtTaskBranchController extends BaseController { private ICtTaskBranchService ctTaskBranchService; @Autowired private ISysUserService userService; + @Resource + private ICtTaskInfoService ctTaskInfoService; + @Autowired + private ISysDeptService deptService; + @Autowired + private ICtTaskFeedbackService ctTaskFeedbackService; + @Resource + private ICmAttachService cmAttachService; /** * 分页查询任务机构信息列表 */ @@ -57,6 +82,285 @@ public class CtTaskBranchController extends BaseController { return getDataTable(list); } + /** + * 分页查询任务机构信息列表 + */ + @ApiOperation("分页查询任务机构信息列表") + @GetMapping("/pageListByBranch") + public TableDataInfo pageListByBranch(CtTaskBranch ctTaskBranch) { + Integer pageNum = ctTaskBranch.getPageNum() != null ? ctTaskBranch.getPageNum() : 1; + Integer pageSize = ctTaskBranch.getPageSize() != null ? ctTaskBranch.getPageSize() : 10; + List ownerDeptIds = deptService.getOwnerDeptIds(); + if (ownerDeptIds.isEmpty()) { + ownerDeptIds.add(0L); + } + Long userId = getUserId(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); + condition(queryWrapper,ctTaskBranch); + if ((!ownerDeptIds.isEmpty() && ownerDeptIds.size() > 0) && 1 != userId && "1".equals(ctTaskBranch.getIsTask())) { + queryWrapper.in(CtTaskBranch::getBranchCode,ownerDeptIds); + } + queryWrapper.orderByDesc(CtTaskBranch::getCreateTime); + String inSqlCondition = "SELECT id FROM ct_task_info WHERE del_flag = '0'"; + queryWrapper.inSql(CtTaskBranch::getTaskId, inSqlCondition); + List list = ctTaskBranchService.list(queryWrapper); + setAll(list); + //过滤 + List ctTaskBranches = filterCtTaskBranchList(list,ctTaskBranch); + Integer start = (pageNum - 1) * pageSize; + List result = ctTaskBranches.stream() + .skip(start) // 跳过前4条数据 + .limit(pageSize) // 最多取6条数据 + .collect(Collectors.toList()); + TableDataInfo data = getDataTable(result); + data.setTotal(ctTaskBranches.size()); + return data; + } + + + private List filterCtTaskBranchList(List list, CtTaskBranch filterParams) { + List filteredList = new ArrayList<>(list); + if (filterParams.getTaskType() != null && !filterParams.getTaskType().isEmpty()) { + filteredList = filteredList.stream() + .filter(item -> filterParams.getTaskType().equals(item.getTaskType())) + .collect(Collectors.toList()); + } + if (filterParams.getTaskTitle() != null && !filterParams.getTaskTitle().isEmpty()) { + filteredList = filteredList.stream() + .filter(item -> item.getTaskTitle() != null && item.getTaskTitle().contains(filterParams.getTaskTitle())) + .collect(Collectors.toList()); + } + if (filterParams.getTaskContent() != null && !filterParams.getTaskContent().isEmpty()) { + filteredList = filteredList.stream() + .filter(item -> item.getTaskContent() != null && item.getTaskContent().contains(filterParams.getTaskContent())) + .collect(Collectors.toList()); + } + if (filterParams.getTaskStatus() != null && !filterParams.getTaskStatus().isEmpty()) { + filteredList = filteredList.stream() + .filter(item -> item.getTaskStatus() != null && item.getTaskStatus().contains(filterParams.getTaskStatus())) + .collect(Collectors.toList()); + } + // 修改为使用 startDate 和 endDate 过滤 + Date paramStartDate = filterParams.getStartDate(); + Date paramEndDate = filterParams.getEndDate(); + if (paramStartDate != null && paramEndDate != null) { + filteredList = filteredList.stream() + .filter(item -> { + Date itemStartDate = item.getStartDate(); + Date itemEndDate = item.getEndDate(); + return itemStartDate != null && itemEndDate != null + &&!itemStartDate.before(paramStartDate) + &&!itemEndDate.after(paramEndDate); + }) + .collect(Collectors.toList()); + } + return filteredList; + } + + + /** + * 导出任务交办列表 + */ + @ApiOperation("导出任务交办列表") + @Log(title = "任务交办导出", businessType = BusinessType.EXPORT) + @PostMapping("/exportByAssigned") + public void exportByAssigned(HttpServletResponse response, CtTaskBranch ctTaskBranch) { + List ownerDeptIds = deptService.getOwnerDeptIds(); + if (ownerDeptIds.isEmpty()) { + ownerDeptIds.add(0L); + } + Long userId = getUserId(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); + condition(queryWrapper,ctTaskBranch); + if ((!ownerDeptIds.isEmpty() && ownerDeptIds.size() > 0) && 1 != userId && "1".equals(ctTaskBranch.getIsTask())) { + queryWrapper.in(CtTaskBranch::getBranchCode,ownerDeptIds); + } + queryWrapper.orderByDesc(CtTaskBranch::getCreateTime); + String inSqlCondition = "SELECT id FROM ct_task_info WHERE del_flag = '0'"; + queryWrapper.inSql(CtTaskBranch::getTaskId, inSqlCondition); + List list = ctTaskBranchService.list(queryWrapper); + setAll(list); + List ctTaskBranches = filterCtTaskBranchList(list,ctTaskBranch); + List ctTaskBranchVOs = new ArrayList<>(); + for (CtTaskBranch branch : ctTaskBranches) { + CtTaskBranchVO ctTaskBranchVO = new CtTaskBranchVO(); + BeanUtils.copyProperties(branch,ctTaskBranchVO); + ctTaskBranchVOs.add(ctTaskBranchVO); + } + ExcelUtil util = new ExcelUtil(CtTaskBranchVO. class); + util.exportExcel(response, ctTaskBranchVOs, "任务交办数据"); + } + + /** + * 分页查询任务机构信息列表 + */ + @ApiOperation("分页查询任务机构信息列表") + @GetMapping("/pageListByUser") + public TableDataInfo pageListByUser(CtTaskBranch ctTaskBranch) { + Integer pageNum = ctTaskBranch.getPageNum() != null ? ctTaskBranch.getPageNum() : 1; + Integer pageSize = ctTaskBranch.getPageSize() != null ? ctTaskBranch.getPageSize() : 10; + String userId = String.valueOf(getUserId()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); + condition(queryWrapper,ctTaskBranch); + queryWrapper.orderByDesc(CtTaskBranch::getCreateTime); + String inSqlCondition = "SELECT id FROM ct_task_info WHERE del_flag = '0'"; + String inSqlConditionByUserId = "SELECT task_id FROM ct_task_branch WHERE del_flag = '0' and type = '人员' and user_id =" + userId; + queryWrapper.inSql(CtTaskBranch::getTaskId, inSqlCondition); + queryWrapper.inSql(CtTaskBranch::getId, inSqlConditionByUserId); + List list = ctTaskBranchService.list(queryWrapper); + setAll(list); + List ctTaskBranches = filterCtTaskBranchList(list,ctTaskBranch); + Integer start = (pageNum - 1) * pageSize; + List result = ctTaskBranches.stream() + .skip(start) // 跳过前4条数据 + .limit(pageSize) // 最多取6条数据 + .collect(Collectors.toList()); + TableDataInfo data = getDataTable(result); + data.setTotal(ctTaskBranches.size()); + return data; + } + + /** + * 导出任务交办列表 + */ + @ApiOperation("导出任务交办列表") + @Log(title = "任务交办导出", businessType = BusinessType.EXPORT) + @PostMapping("/exportByUser") + public void exportByUser(HttpServletResponse response, CtTaskBranch ctTaskBranch) { + String userId = String.valueOf(getUserId()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); + condition(queryWrapper,ctTaskBranch); + queryWrapper.orderByDesc(CtTaskBranch::getCreateTime); + String inSqlCondition = "SELECT id FROM ct_task_info WHERE del_flag = '0'"; + String inSqlConditionByUserId = "SELECT task_id FROM ct_task_branch WHERE del_flag = '0' and type = '人员' and user_id =" + userId; + queryWrapper.inSql(CtTaskBranch::getTaskId, inSqlCondition); + queryWrapper.inSql(CtTaskBranch::getId, inSqlConditionByUserId); + List list = ctTaskBranchService.list(queryWrapper); + setAll(list); + List ctTaskBranches = filterCtTaskBranchList(list,ctTaskBranch); + List ctTaskBranchVOs = new ArrayList<>(); + for (CtTaskBranch branch : ctTaskBranches) { + MyTaskVO ctTaskBranchVO = new MyTaskVO(); + BeanUtils.copyProperties(branch,ctTaskBranchVO); + ctTaskBranchVOs.add(ctTaskBranchVO); + } + ExcelUtil util = new ExcelUtil(MyTaskVO. class); + util.exportExcel(response, ctTaskBranchVOs, "我的任务"); + + } + + + private void setAll(List list) { + List depts = deptService.selectDeptList(new SysDept()); + Map deptMap = depts.stream() + .collect(Collectors.toMap(SysDept::getDeptId, SysDept::getDeptName)); + Map deptMapByParent = depts.stream() + .collect(Collectors.toMap(SysDept::getDeptId, SysDept::getParentId)); + for (CtTaskBranch taskOtherBranch : list) { + Long branchCode = Long.valueOf(taskOtherBranch.getBranchCode()); + Long branchCodeParent = deptMapByParent.get(branchCode); + String branchNameParent = deptMap.get(branchCodeParent); + taskOtherBranch.setBranchNameParent(branchNameParent); + CtTaskInfo byId = ctTaskInfoService.getById(taskOtherBranch.getTaskId()); + if (null != byId) { + taskOtherBranch.setStatus(byId.getStatus()); + taskOtherBranch.setTaskType(byId.getTaskType()); + taskOtherBranch.setTaskTitle(byId.getTaskTitle()); + taskOtherBranch.setTaskContent(byId.getTaskContent()); + taskOtherBranch.setTaskDate(byId.getTaskDate()); + taskOtherBranch.setSdTaskOther(byId); + } + List feedbackListByCreateTime = ctTaskFeedbackService.list(new LambdaQueryWrapper() + .eq(CtTaskFeedback::getTaskBranchId, taskOtherBranch.getId()) + .ne(CtTaskFeedback::getStatus, 0) + .orderByDesc(CtTaskFeedback::getCreateTime)); + // 如果根据创建时间查询到的反馈列表不为空且至少有一个元素 + if (!feedbackListByCreateTime.isEmpty() && feedbackListByCreateTime.size() > 0) { + // 将该列表中的第一个元素(因为是倒序排列,所以是最新的一条)设置到当前 SdTaskOtherBranch 对象中 + taskOtherBranch.setSdTaskOtherFeedbackByCreate(feedbackListByCreateTime.get(0)); + } + List feedbackListByFeedbackTime = ctTaskFeedbackService.list(new LambdaQueryWrapper() + .eq(CtTaskFeedback::getTaskId, taskOtherBranch.getId()) + .eq(CtTaskFeedback::getStatus, 1) + .orderByDesc(CtTaskFeedback::getFeedbackTime)); + // 如果根据反馈时间查询到的反馈列表不为空且至少有一个元素 + if (!feedbackListByFeedbackTime.isEmpty() && feedbackListByFeedbackTime.size() > 0) { + // 将该列表中的第一个元素(因为是倒序排列,所以是最新的一条)设置到当前 SdTaskOtherBranch 对象中 + taskOtherBranch.setSdTaskOtherFeedbackByFeedback(feedbackListByFeedbackTime.get(0)); + } + } + for (CtTaskBranch taskInfo : list) { + if (null != taskInfo.getSdTaskOther()) { + CtTaskInfo sdTaskOther = taskInfo.getSdTaskOther(); + List cmAttachList = cmAttachService.list(new LambdaQueryWrapper().eq(CmAttach::getFileId,sdTaskOther.getFileId())); + taskInfo.setTaskInitiator(sdTaskOther.getTaskInitiator()); + sdTaskOther.setFile(cmAttachList); + Date startDate = sdTaskOther.getStartDate(); + Date endDate = sdTaskOther.getEndDate(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); + // 转换日期为字符串 + String startDateStr = sdf.format(startDate); + String endDateStr = sdf.format(endDate); + taskInfo.setStartDate(startDate); + taskInfo.setEndDate(endDate); + taskInfo.setStartToEndDate(startDateStr + "-" + endDateStr); + String deptName = deptMap.get(sdTaskOther.getDeptId()); + taskInfo.setDeptName(deptName); + if ("1".equals(taskInfo.getStatus()) || "0".equals(taskInfo.getStatus())) { + //未完成0 + taskInfo.setTaskStatus("0"); + // 获取当前日期 + Date currentDate = new Date(); + if (endDate.compareTo(currentDate) < 0) { + //已逾期1 + taskInfo.setTaskStatus("1"); + } + } else if ("2".equals(taskInfo.getStatus())) { + //已完成 + taskInfo.setTaskStatus("2"); + } + } + List ctTaskBranches = ctTaskBranchService.list(new LambdaQueryWrapper() + .eq(CtTaskBranch::getTaskId,taskInfo.getId()) + .eq(CtTaskBranch::getType,"人员")); + String transactDeptNames = ""; + String transactInitiator = ""; + String transactBranchNames = ""; + if (null != ctTaskBranches) { + List deptNameList = new ArrayList<>(); + List parentDeptNameList = new ArrayList<>(); + List userNameList = new ArrayList<>(); + List userIdList = new ArrayList<>(); + for (CtTaskBranch ctTaskBranchesItem : ctTaskBranches) { + String deptNameVo = deptMap.get(Long.valueOf(ctTaskBranchesItem.getBranchCode())); + Long parentTaskId = deptMapByParent.get(Long.valueOf(ctTaskBranchesItem.getBranchCode())); + String parentDeptName = deptMap.get(parentTaskId); + String userName = ctTaskBranchesItem.getUserName(); + String userId = ctTaskBranchesItem.getUserId(); + if (deptNameVo != null) { + deptNameList.add(deptNameVo); + } + if (parentDeptName != null) { + parentDeptNameList.add(parentDeptName); + } + if (userName != null) { + userNameList.add(userName); + } + if (null != userId) { + userIdList.add(userId); + } + } + transactDeptNames = String.join(",", deptNameList); + transactInitiator = String.join(",", userNameList); + transactBranchNames = String.join(",", parentDeptNameList); + taskInfo.setTransactDeptName(transactDeptNames); + taskInfo.setTransactInitiator(transactInitiator); + taskInfo.setTransactBranchName(transactBranchNames); + taskInfo.setUserIds(userIdList); + } + } + } + /** * 查询任务机构信息列表 */ @@ -148,6 +452,17 @@ public class CtTaskBranchController extends BaseController { private boolean isTaskUserCombinationExists(Long taskId, String userId) { + CtTaskBranch branchServiceById = ctTaskBranchService.getById(taskId); + if (null != branchServiceById) { + Long taskIdVo = branchServiceById.getTaskId(); + CtTaskInfo ctTaskInfoServiceById = ctTaskInfoService.getById(taskIdVo); + if (null != ctTaskInfoServiceById) { + String status = ctTaskInfoServiceById.getStatus(); + if ("0".equals(status)) { + throw new UtilException("该任务还未发布"); + } + } + } List list = ctTaskBranchService.list(new LambdaQueryWrapper() .eq(CtTaskBranch::getTaskId, taskId) .eq(CtTaskBranch::getType,"人员") @@ -211,9 +526,9 @@ public class CtTaskBranchController extends BaseController { } //任务状态 - if(Validator.isNotEmpty(ctTaskBranch.getTaskStatus())){ - queryWrapper.eq(CtTaskBranch::getTaskStatus,ctTaskBranch.getTaskStatus()); - } +// if(Validator.isNotEmpty(ctTaskBranch.getTaskStatus())){ +// queryWrapper.eq(CtTaskBranch::getTaskStatus,ctTaskBranch.getTaskStatus()); +// } //备注 if(Validator.isNotEmpty(ctTaskBranch.getRemarks())){ diff --git a/bs-admin/src/main/java/com/bs/ct/controller/CtTaskInfoController.java b/bs-admin/src/main/java/com/bs/ct/controller/CtTaskInfoController.java index b8aed65..f74dc77 100644 --- a/bs-admin/src/main/java/com/bs/ct/controller/CtTaskInfoController.java +++ b/bs-admin/src/main/java/com/bs/ct/controller/CtTaskInfoController.java @@ -75,6 +75,21 @@ public class CtTaskInfoController extends BaseController { return getDataTable(list); } + /** + * 分页查询任务信息列表 + */ + @ApiOperation("分页查询任务信息列表") + @GetMapping("/pageListByBranch") + public TableDataInfo pageListByBranch(CtTaskInfo ctTaskInfo) { + startPage(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); + ctTaskInfo.setStatus("1"); + condition(queryWrapper,ctTaskInfo); + List list = ctTaskInfoService.list(queryWrapper); + setAll(list); + return getDataTable(list); + } + /** * 分页查询任务信息列表 */ @@ -100,7 +115,7 @@ public class CtTaskInfoController extends BaseController { // 2. status 不等于 0 // 3. 按照创建时间(CreateTime)倒序排列 List feedbackListByCreateTime = ctTaskFeedbackService.list(new LambdaQueryWrapper() - .eq(CtTaskFeedback::getTaskId, taskOtherBranch.getId()) + .eq(CtTaskFeedback::getTaskBranchId, taskOtherBranch.getId()) .ne(CtTaskFeedback::getStatus, 0) .orderByDesc(CtTaskFeedback::getCreateTime)); // 如果根据创建时间查询到的反馈列表不为空且至少有一个元素 @@ -277,19 +292,7 @@ public class CtTaskInfoController extends BaseController { util.exportExcel(response, list, "任务信息数据"); } - /** - * 导出任务交办列表 - */ - @ApiOperation("导出任务交办列表") - @Log(title = "任务交办导出", businessType = BusinessType.EXPORT) - @PostMapping("/exportByAssigned") - public void exportByAssigned(HttpServletResponse response, CtTaskInfo ctTaskInfo) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper(); - condition(queryWrapper,ctTaskInfo); - List list = ctTaskInfoService.list(queryWrapper); - ExcelUtil util = new ExcelUtil(CtTaskInfo. class); - util.exportExcel(response, list, "任务交办数据"); - } + /** * 获取任务信息详细信息 diff --git a/bs-admin/src/main/java/com/bs/ct/domain/CtTaskBranch.java b/bs-admin/src/main/java/com/bs/ct/domain/CtTaskBranch.java index 5d6c289..494ebc2 100644 --- a/bs-admin/src/main/java/com/bs/ct/domain/CtTaskBranch.java +++ b/bs-admin/src/main/java/com/bs/ct/domain/CtTaskBranch.java @@ -1,16 +1,15 @@ package com.bs.ct.domain; +import com.baomidou.mybatisplus.annotation.*; import com.bs.common.annotation.Excel; import com.bs.common.core.domain.BaseEntity; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModelProperty; +import java.util.Date; import java.util.List; /** @@ -62,6 +61,13 @@ public class CtTaskBranch extends BaseEntity{ @ApiModelProperty(value = "机构名称") private String branchName; + /** 机构名称 */ + + @Excel(name = "上级机构名称") + @ApiModelProperty(value = "上级机构名称") + @TableField(exist = false) + private String branchNameParent; + /** 机构代码 */ @Excel(name = "用户Id") @@ -81,7 +87,7 @@ public class CtTaskBranch extends BaseEntity{ @ApiModelProperty(value = "用户名称") private String userName; - /** 任务状态 */ + /** 任务状态 0未完成 1已逾期 2已完成 */ @Excel(name = "任务状态") @ApiModelProperty(value = "任务状态") @@ -93,7 +99,110 @@ public class CtTaskBranch extends BaseEntity{ @ApiModelProperty(value = "备注") private String remarks; + @TableField(exist = false) + private CtTaskFeedback sdTaskOtherFeedbackByCreate; + + @TableField(exist = false) + private CtTaskFeedback sdTaskOtherFeedbackByFeedback; + + @TableField(exist = false) + private CtTaskInfo sdTaskOther; + + /** 任务要求 */ + + @Excel(name = "任务内容") + @ApiModelProperty(value = "任务内容") + @TableField(exist = false) + private String taskContent; + + /** 完成状态 */ + + @Excel(name = "完成状态") + @ApiModelProperty(value = "完成状态") + @TableField(exist = false) + private String status; + + /** 任务类型 */ + + @Excel(name = "任务类型") + @ApiModelProperty(value = "任务类型") + @TableField(exist = false) + private String taskType; + + /** 任务标题 */ + + @Excel(name = "任务标题") + @ApiModelProperty(value = "任务标题") + @TableField(exist = false) + private String taskTitle; + + @ApiModelProperty(value = "任务期限") + @TableField(exist = false) + private String startToEndDate; + + /** 任务发起部门 */ + @Excel(name = "任务发起部门") + @ApiModelProperty(value = "任务发起部门") + @TableField(exist = false) + private String deptName; + + @Excel(name = "办理单位") + @ApiModelProperty(value = "办理单位") + @TableField(exist = false) + private String transactBranchName; + + @Excel(name = "办理部门") + @ApiModelProperty(value = "办理部门") + @TableField(exist = false) + private String transactDeptName; + + @Excel(name = "办理人") + @ApiModelProperty(value = "办理人") + @TableField(exist = false) + private String transactInitiator; + + /** 任务发起人 */ + + @Excel(name = "任务发起人") + @ApiModelProperty(value = "任务发起人") + @TableField(exist = false) + private String taskInitiator; + + /** 是否为交办任务 1:是 0:否 */ + + @Excel(name = "是否为交办任务") + @ApiModelProperty(value = "是否为交办任务") + @TableField(exist = false) + private String isTask; + + /** 开始时间 */ + + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd") + @ApiModelProperty(value = "开始时间") + @TableField(exist = false) + private Date startDate; + + /** 结束时间 */ + + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd") + @ApiModelProperty(value = "结束时间") + @TableField(exist = false) + private Date endDate; + + /** 任务发布日期 */ + + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "任务发布日期", width = 30, dateFormat = "yyyy-MM-dd") + @ApiModelProperty(value = "任务发布日期") + @TableField(exist = false) + private Date taskDate; + @TableField(exist = false) + private Integer pageNum; + @TableField(exist = false) + private Integer pageSize; } diff --git a/bs-admin/src/main/java/com/bs/ct/vo/CtTaskBranchVO.java b/bs-admin/src/main/java/com/bs/ct/vo/CtTaskBranchVO.java new file mode 100644 index 0000000..429eeef --- /dev/null +++ b/bs-admin/src/main/java/com/bs/ct/vo/CtTaskBranchVO.java @@ -0,0 +1,101 @@ +package com.bs.ct.vo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.bs.common.annotation.Excel; +import com.bs.common.core.domain.BaseEntity; +import com.bs.ct.domain.CtTaskFeedback; +import com.bs.ct.domain.CtTaskInfo; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.util.Date; +import java.util.List; + +/** + * 任务机构信息对象 ct_task_branch + * + * @author bs + * @date 2025-02-22 + */ +@Data +public class CtTaskBranchVO extends BaseEntity{ + + /** 任务标题 */ + + @Excel(name = "任务名称") + @ApiModelProperty(value = "任务名称") + private String taskTitle; + + /** 任务类型 */ + + @Excel(name = "任务类型",dictType = "task_type") + @ApiModelProperty(value = "任务类型") + private String taskType; + + /** 任务要求 */ + + @Excel(name = "任务内容") + @ApiModelProperty(value = "任务内容") + private String taskContent; + + + /** 发布单位 */ + + @Excel(name = "发布单位") + @ApiModelProperty(value = "发布单位") + @TableField(exist = false) + private String branchNameParent; + + + /** 发布部门 */ + + @Excel(name = "发布部门") + @ApiModelProperty(value = "发布部门") + private String branchName; + + /** 发布人 */ + + @Excel(name = "发布人") + @ApiModelProperty(value = "发布人") + private String taskInitiator; + + @Excel(name = "任务期限") + @ApiModelProperty(value = "任务期限") + private String startToEndDate; + + @Excel(name = "办理单位") + @ApiModelProperty(value = "办理单位") + private String transactBranchName; + + @Excel(name = "办理部门") + @ApiModelProperty(value = "办理部门") + private String transactDeptName; + + @Excel(name = "办理人") + @ApiModelProperty(value = "办理人") + private String transactInitiator; + + + /** 任务状态 */ + + @Excel(name = "任务状态") + @ApiModelProperty(value = "任务状态") + private String taskStatus; + + + @TableField(exist = false) + private CtTaskFeedback sdTaskOtherFeedbackByCreate; + + @TableField(exist = false) + private CtTaskFeedback sdTaskOtherFeedbackByFeedback; + + @TableField(exist = false) + private CtTaskInfo sdTaskOther; + +} diff --git a/bs-admin/src/main/java/com/bs/ct/vo/CtTaskTemplateVO.java b/bs-admin/src/main/java/com/bs/ct/vo/CtTaskTemplateVO.java index ace28d9..9a8fc15 100644 --- a/bs-admin/src/main/java/com/bs/ct/vo/CtTaskTemplateVO.java +++ b/bs-admin/src/main/java/com/bs/ct/vo/CtTaskTemplateVO.java @@ -23,28 +23,6 @@ import java.util.List; @Data public class CtTaskTemplateVO extends BaseEntity{ - /** 创建单位 */ - - @Excel(name = "创建单位") - @ApiModelProperty(value = "创建单位") - @TableField(exist = false) - private String createByBranch; - - /** 创建部门 */ - - @Excel(name = "创建部门") - @ApiModelProperty(value = "创建部门") - @TableField(exist = false) - private String createByDeptName; - - - /** 创建人 */ - - @Excel(name = "创建人") - @ApiModelProperty(value = "创建人") - @TableField(exist = false) - private String createByUserName; - /** 模板名称 */ @Excel(name = "模板名称") @@ -53,7 +31,7 @@ public class CtTaskTemplateVO extends BaseEntity{ /** 任务类型 */ - @Excel(name = "任务类型") + @Excel(name = "任务类型",dictType = "task_type") @ApiModelProperty(value = "任务类型") private String taskType; @@ -76,6 +54,29 @@ public class CtTaskTemplateVO extends BaseEntity{ @TableField(exist = false) private String tagNames; + /** 创建单位 */ + + @Excel(name = "创建单位") + @ApiModelProperty(value = "创建单位") + @TableField(exist = false) + private String createByBranch; + + /** 创建部门 */ + + @Excel(name = "创建部门") + @ApiModelProperty(value = "创建部门") + @TableField(exist = false) + private String createByDeptName; + + + /** 创建人 */ + + @Excel(name = "创建人") + @ApiModelProperty(value = "创建人") + @TableField(exist = false) + private String createByUserName; + + @Excel(name = "创建时间") @ApiModelProperty(value = "创建时间") @TableField(exist = false) diff --git a/bs-admin/src/main/java/com/bs/ct/vo/MyTaskVO.java b/bs-admin/src/main/java/com/bs/ct/vo/MyTaskVO.java new file mode 100644 index 0000000..38b75a0 --- /dev/null +++ b/bs-admin/src/main/java/com/bs/ct/vo/MyTaskVO.java @@ -0,0 +1,80 @@ +package com.bs.ct.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.bs.common.annotation.Excel; +import com.bs.common.core.domain.BaseEntity; +import com.bs.ct.domain.CtTaskFeedback; +import com.bs.ct.domain.CtTaskInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 任务机构信息对象 ct_task_branch + * + * @author bs + * @date 2025-02-22 + */ +@Data +public class MyTaskVO extends BaseEntity{ + + /** 任务标题 */ + + @Excel(name = "任务名称") + @ApiModelProperty(value = "任务名称") + private String taskTitle; + + /** 任务类型 */ + + @Excel(name = "任务类型",dictType = "task_type") + @ApiModelProperty(value = "任务类型") + private String taskType; + + /** 任务要求 */ + + @Excel(name = "任务内容") + @ApiModelProperty(value = "任务内容") + private String taskContent; + + + /** 发布单位 */ + + @Excel(name = "发布单位") + @ApiModelProperty(value = "发布单位") + @TableField(exist = false) + private String branchNameParent; + + + /** 发布部门 */ + + @Excel(name = "发布部门") + @ApiModelProperty(value = "发布部门") + private String branchName; + + /** 发布人 */ + + @Excel(name = "发布人") + @ApiModelProperty(value = "发布人") + private String taskInitiator; + + @Excel(name = "任务期限") + @ApiModelProperty(value = "任务期限") + private String startToEndDate; + + + /** 任务状态 */ + + @Excel(name = "任务状态") + @ApiModelProperty(value = "任务状态") + private String taskStatus; + + + @TableField(exist = false) + private CtTaskFeedback sdTaskOtherFeedbackByCreate; + + @TableField(exist = false) + private CtTaskFeedback sdTaskOtherFeedbackByFeedback; + + @TableField(exist = false) + private CtTaskInfo sdTaskOther; + +} diff --git a/bs-system/src/main/java/com/bs/system/service/ISysDeptService.java b/bs-system/src/main/java/com/bs/system/service/ISysDeptService.java index 074857c..79b14f9 100644 --- a/bs-system/src/main/java/com/bs/system/service/ISysDeptService.java +++ b/bs-system/src/main/java/com/bs/system/service/ISysDeptService.java @@ -121,4 +121,6 @@ public interface ISysDeptService * @return 结果 */ public int deleteDeptById(Long deptId); + + public List getOwnerDeptIds(); } diff --git a/bs-system/src/main/java/com/bs/system/service/impl/SysDeptServiceImpl.java b/bs-system/src/main/java/com/bs/system/service/impl/SysDeptServiceImpl.java index 17c5737..654213b 100644 --- a/bs-system/src/main/java/com/bs/system/service/impl/SysDeptServiceImpl.java +++ b/bs-system/src/main/java/com/bs/system/service/impl/SysDeptServiceImpl.java @@ -21,6 +21,8 @@ import com.bs.system.mapper.SysDeptMapper; import com.bs.system.mapper.SysRoleMapper; import com.bs.system.service.ISysDeptService; +import static com.bs.common.utils.SecurityUtils.getDeptId; + /** * 部门管理 服务实现 * @@ -335,4 +337,38 @@ public class SysDeptServiceImpl implements ISysDeptService { return getChildList(list, t).size() > 0; } + + /** + * 删除部门管理信息 + * + * @return 结果 + */ + @Override + public List getOwnerDeptIds() + { + Long deptId = getDeptId(); + List parentId = new ArrayList<>(); + parentId.add(deptId); + SysDept sysDept = new SysDept(); + sysDept.setParentId(deptId); + List depts = deptMapper.selectDeptListAll(); + List sysDepts = filterDeptsByParentId(depts, parentId); + List deptIds = new ArrayList<>(); + for (SysDept dept : sysDepts) { + deptIds.add(dept.getDeptId()); + } + List deptsByParentId = filterDeptsByParentId(depts, deptIds); + for (SysDept dept : deptsByParentId) { + deptIds.add(dept.getDeptId()); + } + deptIds.add(deptId); + return deptIds; + } + + public static List filterDeptsByParentId(List depts, List deptIds) { + return depts.stream() + .filter(dept -> dept.getParentId() != null && deptIds.contains(dept.getParentId())) + .collect(Collectors.toList()); + } + } diff --git a/bs-ui/src/api/task/branch.js b/bs-ui/src/api/task/branch.js index 76dc7bd..f31914b 100644 --- a/bs-ui/src/api/task/branch.js +++ b/bs-ui/src/api/task/branch.js @@ -9,6 +9,24 @@ export function pageListBranch(query) { }) } +// 分页查询任务机构信息列表 +export function pageListByBranch(query) { + return request({ + url: '/task/branch/pageListByBranch', + method: 'get', + params: query + }) +} + +// 分页查询任务机构信息列表 +export function pageListByUser(query) { + return request({ + url: '/task/branch/pageListByUser', + method: 'get', + params: query + }) +} + // 查询任务机构信息列表 export function listBranch(query) { return request({ diff --git a/bs-ui/src/api/task/info.js b/bs-ui/src/api/task/info.js index a7e3c2f..723feb6 100644 --- a/bs-ui/src/api/task/info.js +++ b/bs-ui/src/api/task/info.js @@ -9,6 +9,15 @@ export function pageListInfo(query) { }) } +// 根据部门分页查询任务信息列表 +export function pageListByBranch(query) { + return request({ + url: '/task/info/pageListByBranch', + method: 'get', + params: query + }) +} + // 分页查询任务信息列表 export function pageListByUser(query) { return request({ diff --git a/bs-ui/src/views/task-distribut/feedback/other-task/index.vue b/bs-ui/src/views/task-distribut/feedback/other-task/index.vue index 8df9bfa..4bf4299 100644 --- a/bs-ui/src/views/task-distribut/feedback/other-task/index.vue +++ b/bs-ui/src/views/task-distribut/feedback/other-task/index.vue @@ -14,12 +14,19 @@ /> - + filterable + > + + + + + + + + + + - + filterable + > + + - @@ -108,13 +129,11 @@ min-width="160" prop="taskTitle" /> - + + + + + + + + + + + + + + + + + + + + + + @@ -208,16 +248,16 @@ 未反馈 - - - - - - - - - - + + + import AuditDialog from "@/views/task-distribut/send/other-task/components/AuditDialog"; import TableMixin from "@/mixins/table-mixin"; -import { pageListInfo } from "@/api/task/info"; -import AssignTaskDialog from "./components/AssignTaskDialog"; // 引入新组件 +import { pageListByBranch } from "@/api/task/branch"; +import AssignTaskDialog from "./components/AssignTaskDialog"; import { addByUser, deleteByUser } from "@/api/task/branch"; import { listUser } from "@/api/system/user"; @@ -247,12 +287,11 @@ export default { AuditDialog, AssignTaskDialog, }, + dicts: ['task_type','task_status'], mixins: [TableMixin], pageInfo: { title: "机构任务", - //exportUrl: "/task/info/export", - pageListApi: pageListInfo, - // deleteApi: delOther, + pageListApi: pageListByBranch, defaultQuery: { isPublish: "1", taskId: "", @@ -263,7 +302,6 @@ export default { type: Boolean, default: false, }, - // 查询发布的 isPublish: { type: Boolean, default: true, @@ -272,6 +310,10 @@ export default { type: [Number, String], default: "", }, + isComponentCall: { + type: Boolean, + default: false, + } }, watch: { taskId(val) { @@ -286,23 +328,24 @@ export default { data() { return { dateRange: [], - selectrows: [], // 存储选中的行 + selectrows: [], }; }, methods: { - // isMe(row) { - // return row.userId === this.$store.getters?.userInfo?.userId; - // }, dateRangeChange(val) { this.query.startDate = val?.[0]; this.query.endDate = val?.[1]; }, MXCreated() { - this.$options.pageInfo.defaultQuery.taskId = null, - this.query.taskId = null; + this.$options.pageInfo.defaultQuery.taskId = null; + this.query.taskId = null; this.$options.pageInfo.customLoad = this.customLoad; this.$options.pageInfo.defaultQuery.isPublish = this.isPublish ? "1" : ""; this.query.isPublish = this.$options.pageInfo.defaultQuery.isPublish; + + // 根据是否是组件调用设置 isTask 参数 + this.$options.pageInfo.defaultQuery.isTask = this.isComponentCall ? "0" : "1"; + this.query.isTask = this.$options.pageInfo.defaultQuery.isTask; }, getRowEditTitle(row) { if (row.sdTaskOther && row.sdTaskOther.status === '2') { @@ -323,14 +366,13 @@ export default { } return "查看"; }, - /** 导出按钮操作 */ handleExport() { - this.download('/task/info/export', { + this.download('/task/branch/exportByAssigned', { ...this.queryParams }, `任务交办_${new Date().getTime()}.xlsx`) }, handleSelectionChange(selection) { - this.selectrows = selection; // 更新选中的行 + this.selectrows = selection; }, openAssignTaskDialog() { const taskIds = this.selectrows.map(row => row.id); @@ -354,5 +396,8 @@ export default { } } }, + created() { + this.MXCreated(); + } }; diff --git a/bs-ui/src/views/task-distribut/send/other-task/components/AuditDialog.vue b/bs-ui/src/views/task-distribut/send/other-task/components/AuditDialog.vue index cce7f24..8b32176 100644 --- a/bs-ui/src/views/task-distribut/send/other-task/components/AuditDialog.vue +++ b/bs-ui/src/views/task-distribut/send/other-task/components/AuditDialog.vue @@ -1,4 +1,3 @@ -