diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/controller/TaskTaskController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/controller/TaskTaskController.java new file mode 100644 index 0000000..3a1d9de --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/controller/TaskTaskController.java @@ -0,0 +1,187 @@ +package org.jeecg.modules.tasktask.controller; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.query.QueryRuleEnum; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.tasktask.entity.TaskTask; +import org.jeecg.modules.tasktask.service.ITaskTaskService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + /** + * @Description: 事项任务计划表(发起流程) + * @Author: jeecg-boot + * @Date: 2026-04-17 + * @Version: V1.0 + */ +@Tag(name="事项任务计划表(发起流程)") +@RestController +@RequestMapping("/tasktask/taskTask") +@Slf4j +public class TaskTaskController extends JeecgController { + @Autowired + private ITaskTaskService taskTaskService; + + /** + * 分页列表查询 + * + * @param taskTask + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "事项任务计划表(发起流程)-分页列表查询") + @Operation(summary="事项任务计划表(发起流程)-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(TaskTask taskTask, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + + + // 自定义查询规则 + Map customeRuleMap = new HashMap<>(); + // 自定义多选的查询规则为:LIKE_WITH_OR + customeRuleMap.put("urgencyLevel", QueryRuleEnum.LIKE_WITH_OR); + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(taskTask, req.getParameterMap(),customeRuleMap); + Page page = new Page(pageNo, pageSize); + IPage pageList = taskTaskService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param taskTask + * @return + */ + @AutoLog(value = "事项任务计划表(发起流程)-添加") + @Operation(summary="事项任务计划表(发起流程)-添加") + @RequiresPermissions("tasktask:task_task:add") + @PostMapping(value = "/add") + public Result add(@RequestBody TaskTask taskTask) { + taskTask.setBpmStatus("1"); + taskTaskService.save(taskTask); + + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param taskTask + * @return + */ + @AutoLog(value = "事项任务计划表(发起流程)-编辑") + @Operation(summary="事项任务计划表(发起流程)-编辑") + @RequiresPermissions("tasktask:task_task:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody TaskTask taskTask) { + taskTaskService.updateById(taskTask); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "事项任务计划表(发起流程)-通过id删除") + @Operation(summary="事项任务计划表(发起流程)-通过id删除") + @RequiresPermissions("tasktask:task_task:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + taskTaskService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "事项任务计划表(发起流程)-批量删除") + @Operation(summary="事项任务计划表(发起流程)-批量删除") + @RequiresPermissions("tasktask:task_task:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.taskTaskService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "事项任务计划表(发起流程)-通过id查询") + @Operation(summary="事项任务计划表(发起流程)-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + TaskTask taskTask = taskTaskService.getById(id); + if(taskTask==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(taskTask); + } + + /** + * 导出excel + * + * @param request + * @param taskTask + */ + @RequiresPermissions("tasktask:task_task:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, TaskTask taskTask) { + return super.exportXls(request, taskTask, TaskTask.class, "事项任务计划表(发起流程)"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("tasktask:task_task:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, TaskTask.class); + } + +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/entity/TaskTask.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/entity/TaskTask.java new file mode 100644 index 0000000..9b95926 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/entity/TaskTask.java @@ -0,0 +1,260 @@ +package org.jeecg.modules.tasktask.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableLogic; +import org.jeecg.common.constant.ProvinceCityArea; +import org.jeecg.common.util.SpringContextUtils; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 事项任务计划表(发起流程) + * @Author: jeecg-boot + * @Date: 2026-04-17 + * @Version: V1.0 + */ +@Data +@TableName("task_task") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@Schema(description="事项任务计划表(发起流程)") +public class TaskTask implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description = "主键") + private java.lang.String id; + /**创建人*/ + @Schema(description = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @Schema(description = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "更新日期") + private java.util.Date updateTime; + /**所属部门*/ + @Schema(description = "所属部门") + private java.lang.String sysOrgCode; + /**流程编码*/ + @Excel(name = "流程编码", width = 15) + @Schema(description = "流程编码") + private java.lang.String flowCode; + /**流程名称*/ + @Excel(name = "流程名称", width = 15) + @Schema(description = "流程名称") + private java.lang.String flowName; + /**流程实例ID*/ + @Excel(name = "流程实例ID", width = 15) + @Schema(description = "流程实例ID") + private java.lang.String processInstId; + /**流程类型*/ + @Excel(name = "流程类型", width = 15) + @Schema(description = "流程类型") + private java.lang.String processType; + /**流程状态*/ + @Excel(name = "流程状态", width = 15) + @Schema(description = "流程状态") + private java.lang.String bpmStatus; + /**关联台账事项ID*/ + @Excel(name = "关联台账事项ID", width = 15) + @Schema(description = "关联台账事项ID") + private java.lang.String businessId; + /**关联台账根节点id*/ + @Excel(name = "关联台账根节点id", width = 15) + @Schema(description = "关联台账根节点id") + private java.lang.String parentBusinessId; + /**关联台账表名*/ + @Excel(name = "关联台账表名", width = 15) + @Schema(description = "关联台账表名") + private java.lang.String businessTablename; + /**外部来源 ID*/ + @Excel(name = "外部来源 ID", width = 15) + @Schema(description = "外部来源 ID") + private java.lang.String sourceId; + /**任务标题*/ + @Excel(name = "任务标题", width = 15) + @Schema(description = "任务标题") + private java.lang.String title; + /**任务内容*/ + @Excel(name = "任务内容", width = 15) + @Schema(description = "任务内容") + private java.lang.String content; + /**紧急程度(一般/紧急/特急)*/ + @Excel(name = "紧急程度(一般/紧急/特急)", width = 15, dicCode = "urgency_level") + @Dict(dicCode = "urgency_level") + @Schema(description = "紧急程度(一般/紧急/特急)") + private java.lang.String urgencyLevel; + /**自定义分组*/ + @Excel(name = "自定义分组", width = 15) + @Schema(description = "自定义分组") + private java.lang.String customGroup; + /**所属任务清单 ID*/ + @Excel(name = "所属任务清单 ID", width = 15) + @Schema(description = "所属任务清单 ID") + private java.lang.String taskListId; + /**所属任务清单名称*/ + @Excel(name = "所属任务清单名称", width = 15) + @Schema(description = "所属任务清单名称") + private java.lang.String taskListName; + /**是否为里程碑节点*/ + @Excel(name = "是否为里程碑节点", width = 15) + @Schema(description = "是否为里程碑节点") + private java.lang.String milestone; + /**任务完成方式*/ + @Excel(name = "任务完成方式", width = 15) + @Schema(description = "任务完成方式") + private java.lang.String finishMethod; + /**被督办部门id*/ + @Excel(name = "被督办部门id", width = 15) + @Schema(description = "被督办部门id") + private java.lang.String deptId; + /**被督办部门名称(冗余)*/ + @Excel(name = "被督办部门名称(冗余)", width = 15) + @Schema(description = "被督办部门名称(冗余)") + private java.lang.String deptName; + /**部门负责人id*/ + @Excel(name = "部门负责人id", width = 15, dictTable = "sys_user", dicText = "realname", dicCode = "username") + @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "username") + @Schema(description = "部门负责人id") + private java.lang.String deptLeaderId; + /**部门负责人姓名(冗余)*/ + @Excel(name = "部门负责人姓名(冗余)", width = 15) + @Schema(description = "部门负责人姓名(冗余)") + private java.lang.String deptLeaderName; + /**部门经办人id(负责人指派后填入)*/ + @Excel(name = "部门经办人id(负责人指派后填入)", width = 15, dictTable = "sys_depart", dicText = "depart_name", dicCode = "id") + @Dict(dictTable = "sys_depart", dicText = "depart_name", dicCode = "id") + @Schema(description = "部门经办人id(负责人指派后填入)") + private java.lang.String deptHandlerId; + /**部门经办人姓名(冗余)*/ + @Excel(name = "部门经办人姓名(冗余)", width = 15) + @Schema(description = "部门经办人姓名(冗余)") + private java.lang.String deptHandlerName; + /**关注人 ID 列表*/ + @Excel(name = "关注人 ID 列表", width = 15) + @Schema(description = "关注人 ID 列表") + private java.lang.String followerIds; + /**关注人姓名列表,冗余*/ + @Excel(name = "关注人姓名列表,冗余", width = 15) + @Schema(description = "关注人姓名列表,冗余") + private java.lang.String followerNames; + /**要求完成日期(业务层面的硬性要求)*/ + @Excel(name = "要求完成日期(业务层面的硬性要求)", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @Schema(description = "要求完成日期(业务层面的硬性要求)") + private java.util.Date requireFinishDate; + /**督办开始时间*/ + @Excel(name = "督办开始时间", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "督办开始时间") + private java.util.Date startTime; + /**截止时间(精确到时分,与 require_finish_date 互补)*/ + @Excel(name = "截止时间(精确到时分,与 require_finish_date 互补)", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "截止时间(精确到时分,与 require_finish_date 互补)") + private java.util.Date deadline; + /**实际完成时间*/ + @Excel(name = "实际完成时间", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "实际完成时间") + private java.util.Date actualFinishTime; + /**是否已逾期*/ + @Excel(name = "是否已逾期", width = 15) + @Schema(description = "是否已逾期") + private java.lang.String isOverdue; + /**逾期时长*/ + @Excel(name = "逾期时长", width = 15) + @Schema(description = "逾期时长") + private java.lang.Double overdueDuration; + /**持续时长*/ + @Excel(name = "持续时长", width = 15) + @Schema(description = "持续时长") + private java.lang.Double duration; + /**子任务完成进度(0.00~100.00,参考飞书子任务进度)*/ + @Excel(name = "子任务完成进度(0.00~100.00,参考飞书子任务进度)", width = 15) + @Schema(description = "子任务完成进度(0.00~100.00,参考飞书子任务进度)") + private java.lang.Double subTaskProgress; + /**父任务 ID*/ + @Excel(name = "父任务 ID", width = 15) + @Schema(description = "父任务 ID") + private java.lang.String parentTaskId; + /**前置任务 ID 列表,逗号分隔*/ + @Excel(name = "前置任务 ID 列表,逗号分隔", width = 15) + @Schema(description = "前置任务 ID 列表,逗号分隔") + private java.lang.String preTaskIds; + /**后置任务 ID 列表,逗号分隔*/ + @Excel(name = "后置任务 ID 列表,逗号分隔", width = 15) + @Schema(description = "后置任务 ID 列表,逗号分隔") + private java.lang.String nextTaskIds; + /**子任务数*/ + @Excel(name = "子任务数", width = 15) + @Schema(description = "子任务数") + private java.lang.Double subTaskCount; + /**删除标识*/ + @Excel(name = "删除标识", width = 15) + @Schema(description = "删除标识") + @TableLogic + private java.lang.String delFlag; + /**流程序列号*/ + @Excel(name = "流程序列号", width = 15) + @Schema(description = "流程序列号") + private java.lang.String processCodenumber; + /**表单组件路径*/ + @Excel(name = "表单组件路径", width = 15) + @Schema(description = "表单组件路径") + private java.lang.String formUrl; + /**流程变量*/ + @Excel(name = "流程变量", width = 15) + private transient java.lang.String jsonDataString; + + private byte[] jsonData; + + public byte[] getJsonData(){ + if(jsonDataString==null){ + return null; + } + try { + return jsonDataString.getBytes("UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return null; + } + + public String getJsonDataString(){ + if(jsonData==null || jsonData.length==0){ + return ""; + } + try { + return new String(jsonData,"UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return ""; + } +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/mapper/TaskTaskMapper.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/mapper/TaskTaskMapper.java new file mode 100644 index 0000000..2159343 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/mapper/TaskTaskMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.tasktask.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.tasktask.entity.TaskTask; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 事项任务计划表(发起流程) + * @Author: jeecg-boot + * @Date: 2026-04-17 + * @Version: V1.0 + */ +public interface TaskTaskMapper extends BaseMapper { + +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/mapper/xml/TaskTaskMapper.xml b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/mapper/xml/TaskTaskMapper.xml new file mode 100644 index 0000000..39d87be --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/mapper/xml/TaskTaskMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/service/ITaskTaskService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/service/ITaskTaskService.java new file mode 100644 index 0000000..fc6a9f9 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/service/ITaskTaskService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.tasktask.service; + +import org.jeecg.modules.tasktask.entity.TaskTask; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 事项任务计划表(发起流程) + * @Author: jeecg-boot + * @Date: 2026-04-17 + * @Version: V1.0 + */ +public interface ITaskTaskService extends IService { + +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/service/impl/TaskTaskServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/service/impl/TaskTaskServiceImpl.java new file mode 100644 index 0000000..49b7ce2 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/tasktask/service/impl/TaskTaskServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.tasktask.service.impl; + +import org.jeecg.modules.tasktask.entity.TaskTask; +import org.jeecg.modules.tasktask.mapper.TaskTaskMapper; +import org.jeecg.modules.tasktask.service.ITaskTaskService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 事项任务计划表(发起流程) + * @Author: jeecg-boot + * @Date: 2026-04-17 + * @Version: V1.0 + */ +@Service +public class TaskTaskServiceImpl extends ServiceImpl implements ITaskTaskService { + +}