From 758252977e85c084452e668bcc0987db5ca64a83 Mon Sep 17 00:00:00 2001 From: ye1023 <12588209+ye1023@user.noreply.gitee.com> Date: Wed, 27 May 2026 16:40:42 +0800 Subject: [PATCH 1/6] =?UTF-8?q?yxk-20260527-=E5=B7=A1=E8=A7=86=E6=95=B4?= =?UTF-8?q?=E6=94=B9=E6=8F=90=E5=8D=87=E5=8F=B0=E8=B4=A6=EF=BC=8C=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E6=B8=85=E5=8D=95=E6=A0=91=E5=BD=A2=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E6=94=B9=E9=80=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DqInspectProblemController.java | 12 ++ .../service/IDqInspectProblemService.java | 15 ++ .../impl/DqInspectProblemServiceImpl.java | 138 +++++++++++++++++- 3 files changed, 164 insertions(+), 1 deletion(-) diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspectproblem/controller/DqInspectProblemController.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspectproblem/controller/DqInspectProblemController.java index 11b26c7..3c1b7a0 100644 --- a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspectproblem/controller/DqInspectProblemController.java +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspectproblem/controller/DqInspectProblemController.java @@ -193,6 +193,18 @@ public class DqInspectProblemController extends JeecgController>> parentOptions(@RequestParam(name = "nodeType") String nodeType) { + return Result.OK(dqInspectProblemService.queryParentOptions(nodeType)); + } + /** * 添加 * diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspectproblem/service/IDqInspectProblemService.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspectproblem/service/IDqInspectProblemService.java index d53b852..6645066 100644 --- a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspectproblem/service/IDqInspectProblemService.java +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspectproblem/service/IDqInspectProblemService.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.common.exception.JeecgBootException; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import java.util.List; +import java.util.Map; /** * @Description: dq_inspect_problem @@ -24,6 +25,12 @@ public interface IDqInspectProblemService extends IService { /**树节点无子节点状态值*/ public static final String NOCHILD = "0"; + String NODE_TYPE_CATEGORY = "category"; + + String NODE_TYPE_SURFACE = "surface"; + + String NODE_TYPE_SPECIFIC = "specific"; + /** * 新增节点 * @@ -71,4 +78,12 @@ public interface IDqInspectProblemService extends IService { */ List queryListByPid(String pid); + /** + * 根据当前节点类型,返回合法的父级候选树。 + * + * @param nodeType 当前节点类型 + * @return 父级候选树 + */ + List> queryParentOptions(String nodeType); + } diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspectproblem/service/impl/DqInspectProblemServiceImpl.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspectproblem/service/impl/DqInspectProblemServiceImpl.java index e4a7236..a04f6c3 100644 --- a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspectproblem/service/impl/DqInspectProblemServiceImpl.java +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspectproblem/service/impl/DqInspectProblemServiceImpl.java @@ -12,7 +12,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashMap; import java.util.List; +import java.util.Map; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -27,6 +29,7 @@ public class DqInspectProblemServiceImpl extends ServiceImpl> queryParentOptions(String nodeType) { + if (NODE_TYPE_SURFACE.equals(nodeType)) { + return queryParentNodesByType(NODE_TYPE_CATEGORY); + } + if (NODE_TYPE_SPECIFIC.equals(nodeType)) { + return querySurfaceParentTree(); + } + return new ArrayList<>(); + } + + /** + * 问题清单固定为三层:问题分类 -> 面上问题 -> 具体问题。 + * 服务层兜底校验层级,避免绕过前端直接提交非法关系。 + */ + private void validateAndNormalizeNode(DqInspectProblem dqInspectProblem, boolean update) { + if (dqInspectProblem == null) { + throw new JeecgBootException("表单数据不能为空"); + } + String nodeType = trimToEmpty(dqInspectProblem.getNodeType()); + if (!NODE_TYPE_CATEGORY.equals(nodeType) && !NODE_TYPE_SURFACE.equals(nodeType) && !NODE_TYPE_SPECIFIC.equals(nodeType)) { + throw new JeecgBootException("请选择正确的问题种类"); + } + dqInspectProblem.setNodeType(nodeType); + + if (NODE_TYPE_CATEGORY.equals(nodeType)) { + dqInspectProblem.setPid(ROOT_PID_VALUE); + clearSpecificFields(dqInspectProblem); + return; + } + + String pid = trimToEmpty(dqInspectProblem.getPid()); + if (oConvertUtils.isEmpty(pid) || ROOT_PID_VALUE.equals(pid)) { + throw new JeecgBootException("请选择上一级问题"); + } + if (update && pid.equals(dqInspectProblem.getId())) { + throw new JeecgBootException("上一级问题不能选择自身"); + } + if (update && isDescendantOf(pid, dqInspectProblem.getId())) { + throw new JeecgBootException("上一级问题不能选择当前节点的下级节点"); + } + + DqInspectProblem parent = baseMapper.selectById(pid); + if (parent == null) { + throw new JeecgBootException("上一级问题不存在"); + } + String expectedParentType = NODE_TYPE_SURFACE.equals(nodeType) ? NODE_TYPE_CATEGORY : NODE_TYPE_SURFACE; + if (!expectedParentType.equals(parent.getNodeType())) { + throw new JeecgBootException("上一级问题类型不正确"); + } + dqInspectProblem.setPid(pid); + + if (!NODE_TYPE_SPECIFIC.equals(nodeType)) { + clearSpecificFields(dqInspectProblem); + } + } + + private void clearSpecificFields(DqInspectProblem dqInspectProblem) { + dqInspectProblem.setInspectAdvice(null); + dqInspectProblem.setQuestionResLeader(null); + dqInspectProblem.setQuestionResDept(null); + } + + private String trimToEmpty(String value) { + return value == null ? "" : value.trim(); + } + + private boolean isDescendantOf(String possibleChildId, String parentId) { + if (oConvertUtils.isEmpty(possibleChildId) || oConvertUtils.isEmpty(parentId)) { + return false; + } + DqInspectProblem node = baseMapper.selectById(possibleChildId); + while (node != null && !ROOT_PID_VALUE.equals(node.getPid())) { + if (parentId.equals(node.getPid())) { + return true; + } + node = baseMapper.selectById(node.getPid()); + } + return false; + } + + private List> queryParentNodesByType(String nodeType) { + List nodes = baseMapper.selectList( + new QueryWrapper() + .eq("node_type", nodeType) + .orderByAsc("sort_no", "create_time") + ); + List> result = new ArrayList<>(); + for (DqInspectProblem node : nodes) { + result.add(toTreeOption(node, false)); + } + return result; + } + + private List> querySurfaceParentTree() { + List categories = baseMapper.selectList( + new QueryWrapper() + .eq("node_type", NODE_TYPE_CATEGORY) + .orderByAsc("sort_no", "create_time") + ); + List> result = new ArrayList<>(); + for (DqInspectProblem category : categories) { + Map categoryOption = toTreeOption(category, true); + List surfaces = baseMapper.selectList( + new QueryWrapper() + .eq("pid", category.getId()) + .eq("node_type", NODE_TYPE_SURFACE) + .orderByAsc("sort_no", "create_time") + ); + List> children = new ArrayList<>(); + for (DqInspectProblem surface : surfaces) { + children.add(toTreeOption(surface, false)); + } + categoryOption.put("children", children); + result.add(categoryOption); + } + return result; + } + + private Map toTreeOption(DqInspectProblem node, boolean disabled) { + Map option = new HashMap<>(); + option.put("key", node.getId()); + option.put("value", node.getId()); + option.put("title", node.getProblemName()); + option.put("label", node.getProblemName()); + option.put("nodeType", node.getNodeType()); + option.put("disabled", disabled); + return option; + } + @Override public List queryListByPid(String pid) { if (oConvertUtils.isEmpty(pid)) { From ab8ed85bd8cb330ceffac340844e2fc08ef4b737 Mon Sep 17 00:00:00 2001 From: ye1023 <12588209+ye1023@user.noreply.gitee.com> Date: Thu, 28 May 2026 14:55:17 +0800 Subject: [PATCH 2/6] =?UTF-8?q?yxk-20260527-=E5=B7=A1=E8=A7=86=E6=95=B4?= =?UTF-8?q?=E6=94=B9=E6=8F=90=E5=8D=87=E5=8F=B0=E8=B4=A6=EF=BC=8C=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E6=B8=85=E5=8D=95=E5=92=8C=E5=B7=A5=E4=BD=9C=E8=BF=9B?= =?UTF-8?q?=E5=B1=95=E5=8F=8D=E9=A6=88=E5=AD=90=E8=A1=A8=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DqInspectTaskController.java | 274 ++++++++++++++++++ .../entity/DqInspectProgress.java | 91 ++++++ .../dqinspecttask/entity/DqInspectTask.java | 144 +++++++++ .../mapper/DqInspectProgressMapper.java | 31 ++ .../mapper/DqInspectTaskMapper.java | 17 ++ .../mapper/xml/DqInspectProgressMapper.xml | 16 + .../mapper/xml/DqInspectTaskMapper.xml | 5 + .../service/IDqInspectProgressService.java | 22 ++ .../service/IDqInspectTaskService.java | 48 +++ .../impl/DqInspectProgressServiceImpl.java | 27 ++ .../impl/DqInspectTaskServiceImpl.java | 77 +++++ .../dqinspecttask/vo/DqInspectTaskPage.java | 144 +++++++++ 12 files changed, 896 insertions(+) create mode 100644 jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/controller/DqInspectTaskController.java create mode 100644 jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/entity/DqInspectProgress.java create mode 100644 jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/entity/DqInspectTask.java create mode 100644 jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/mapper/DqInspectProgressMapper.java create mode 100644 jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/mapper/DqInspectTaskMapper.java create mode 100644 jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/mapper/xml/DqInspectProgressMapper.xml create mode 100644 jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/mapper/xml/DqInspectTaskMapper.xml create mode 100644 jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/service/IDqInspectProgressService.java create mode 100644 jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/service/IDqInspectTaskService.java create mode 100644 jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/service/impl/DqInspectProgressServiceImpl.java create mode 100644 jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/service/impl/DqInspectTaskServiceImpl.java create mode 100644 jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/vo/DqInspectTaskPage.java diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/controller/DqInspectTaskController.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/controller/DqInspectTaskController.java new file mode 100644 index 0000000..e256837 --- /dev/null +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/controller/DqInspectTaskController.java @@ -0,0 +1,274 @@ +package org.jeecg.modules.demo.dqinspecttask.controller; + +import java.io.UnsupportedEncodingException; +import java.io.IOException; +import java.net.URLDecoder; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.HashMap; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +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.vo.LoginUser; +import org.apache.shiro.SecurityUtils; +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.demo.dqinspecttask.entity.DqInspectProgress; +import org.jeecg.modules.demo.dqinspecttask.entity.DqInspectTask; +import org.jeecg.modules.demo.dqinspecttask.vo.DqInspectTaskPage; +import org.jeecg.modules.demo.dqinspecttask.service.IDqInspectTaskService; +import org.jeecg.modules.demo.dqinspecttask.service.IDqInspectProgressService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +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 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: dq_inspect_task + * @Author: jeecg-boot + * @Date: 2026-05-28 + * @Version: V1.0 + */ +@Tag(name="dq_inspect_task") +@RestController +@RequestMapping("/dqinspecttask/dqInspectTask") +@Slf4j +public class DqInspectTaskController { + @Autowired + private IDqInspectTaskService dqInspectTaskService; + @Autowired + private IDqInspectProgressService dqInspectProgressService; + + /** + * 分页列表查询 + * + * @param dqInspectTask + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "dq_inspect_task-分页列表查询") + @Operation(summary="dq_inspect_task-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(DqInspectTask dqInspectTask, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(dqInspectTask, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = dqInspectTaskService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param dqInspectTaskPage + * @return + */ + @AutoLog(value = "dq_inspect_task-添加") + @Operation(summary="dq_inspect_task-添加") + @RequiresPermissions("dqinspecttask:dq_inspect_task:add") + @PostMapping(value = "/add") + public Result add(@RequestBody DqInspectTaskPage dqInspectTaskPage) { + DqInspectTask dqInspectTask = new DqInspectTask(); + BeanUtils.copyProperties(dqInspectTaskPage, dqInspectTask); + dqInspectTask.setBpmStatus("1"); + if (oConvertUtils.isEmpty(dqInspectTask.getDelFlag())) { + dqInspectTask.setDelFlag("0"); + } + dqInspectTaskService.saveMain(dqInspectTask, dqInspectTaskPage.getDqInspectProgressList()); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param dqInspectTaskPage + * @return + */ + @AutoLog(value = "dq_inspect_task-编辑") + @Operation(summary="dq_inspect_task-编辑") + @RequiresPermissions("dqinspecttask:dq_inspect_task:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody DqInspectTaskPage dqInspectTaskPage) { + DqInspectTask dqInspectTask = new DqInspectTask(); + BeanUtils.copyProperties(dqInspectTaskPage, dqInspectTask); + DqInspectTask dqInspectTaskEntity = dqInspectTaskService.getById(dqInspectTask.getId()); + if(dqInspectTaskEntity==null) { + return Result.error("未找到对应数据"); + } + dqInspectTaskService.updateMain(dqInspectTask, dqInspectTaskPage.getDqInspectProgressList()); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "dq_inspect_task-通过id删除") + @Operation(summary="dq_inspect_task-通过id删除") + @RequiresPermissions("dqinspecttask:dq_inspect_task:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + dqInspectTaskService.delMain(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "dq_inspect_task-批量删除") + @Operation(summary="dq_inspect_task-批量删除") + @RequiresPermissions("dqinspecttask:dq_inspect_task:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.dqInspectTaskService.delBatchMain(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "dq_inspect_task-通过id查询") + @Operation(summary="dq_inspect_task-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + DqInspectTask dqInspectTask = dqInspectTaskService.getById(id); + if(dqInspectTask==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(dqInspectTask); + + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "工作进展反馈通过主表ID查询") + @Operation(summary="工作进展反馈主表ID查询") + @GetMapping(value = "/queryDqInspectProgressByMainId") + public Result> queryDqInspectProgressListByMainId(@RequestParam(name="id",required=true) String id) { + List dqInspectProgressList = dqInspectProgressService.selectByMainId(id); + return Result.OK(dqInspectProgressList); + } + + /** + * 导出excel + * + * @param request + * @param dqInspectTask + */ + @RequiresPermissions("dqinspecttask:dq_inspect_task:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, DqInspectTask dqInspectTask) { + + // Step.1 组装查询条件查询数据 + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(dqInspectTask, request.getParameterMap()); + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + + //配置选中数据查询条件 + String selections = request.getParameter("selections"); + if(oConvertUtils.isNotEmpty(selections)) { + List selectionList = Arrays.asList(selections.split(",")); + queryWrapper.in("id",selectionList); + } + //Step.2 获取导出数据 + List dqInspectTaskList = dqInspectTaskService.list(queryWrapper); + + // Step.3 组装pageList + List pageList = new ArrayList(); + for (DqInspectTask main : dqInspectTaskList) { + DqInspectTaskPage vo = new DqInspectTaskPage(); + BeanUtils.copyProperties(main, vo); + List dqInspectProgressList = dqInspectProgressService.selectByMainId(main.getId()); + vo.setDqInspectProgressList(dqInspectProgressList); + pageList.add(vo); + } + + // Step.4 AutoPoi 导出Excel + ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); + mv.addObject(NormalExcelConstants.FILE_NAME, "dq_inspect_task列表"); + mv.addObject(NormalExcelConstants.CLASS, DqInspectTaskPage.class); + mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("dq_inspect_task数据", "导出人:"+sysUser.getRealname(), "dq_inspect_task")); + mv.addObject(NormalExcelConstants.DATA_LIST, pageList); + return mv; + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("dqinspecttask:dq_inspect_task:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; + Map fileMap = multipartRequest.getFileMap(); + for (Map.Entry entity : fileMap.entrySet()) { + // 获取上传文件对象 + MultipartFile file = entity.getValue(); + ImportParams params = new ImportParams(); + params.setTitleRows(2); + params.setHeadRows(1); + params.setNeedSave(true); + try { + List list = ExcelImportUtil.importExcel(file.getInputStream(), DqInspectTaskPage.class, params); + for (DqInspectTaskPage page : list) { + DqInspectTask po = new DqInspectTask(); + BeanUtils.copyProperties(page, po); + dqInspectTaskService.saveMain(po, page.getDqInspectProgressList()); + } + return Result.OK("文件导入成功!数据行数:" + list.size()); + } catch (Exception e) { + log.error(e.getMessage(),e); + return Result.error("文件导入失败:"+e.getMessage()); + } finally { + try { + file.getInputStream().close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + return Result.OK("文件导入失败!"); + } + +} diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/entity/DqInspectProgress.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/entity/DqInspectProgress.java new file mode 100644 index 0000000..849c5e0 --- /dev/null +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/entity/DqInspectProgress.java @@ -0,0 +1,91 @@ +package org.jeecg.modules.demo.dqinspecttask.entity; + +import java.io.Serializable; +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 java.util.Date; +import io.swagger.v3.oas.annotations.media.Schema; +import java.io.UnsupportedEncodingException; + +/** + * @Description: 工作进展反馈 + * @Author: jeecg-boot + * @Date: 2026-05-28 + * @Version: V1.0 + */ +@Schema(description="工作进展反馈") +@Data +@TableName("dq_inspect_progress") +public class DqInspectProgress implements Serializable { + private static final long serialVersionUID = 1L; + + /**id*/ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description = "id") + 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; + /**反馈部门ID*/ + @Excel(name = "反馈部门ID", width = 15) + @Schema(description = "反馈部门ID") + private java.lang.String feedbackDeptId; + /**反馈部门名称*/ + @Excel(name = "反馈部门名称", width = 15) + @Schema(description = "反馈部门名称") + private java.lang.String feedbackDeptName; + /**反馈人ID*/ + @Excel(name = "反馈人ID", width = 15) + @Schema(description = "反馈人ID") + private java.lang.String feedbackPersonId; + /**反馈人姓名*/ + @Excel(name = "反馈人姓名", width = 15) + @Schema(description = "反馈人姓名") + private java.lang.String feedbackPersonName; + /**实际完成时间*/ + @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 actualTime; + /**工作进展*/ + @Excel(name = "工作进展", width = 15) + @Schema(description = "工作进展") + private java.lang.String workProgress; + /**进展状态*/ + @Excel(name = "进展状态", width = 15, dicCode = "feedback_status") + @Schema(description = "进展状态") + private java.lang.String bpmStatus; + /**删除标识*/ + @Excel(name = "删除标识", width = 15) + @Schema(description = "删除标识") + @TableLogic + private java.lang.String delFlag; + /**整改措施任务ID*/ + @Schema(description = "整改措施任务ID") + private java.lang.String mainId; +} diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/entity/DqInspectTask.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/entity/DqInspectTask.java new file mode 100644 index 0000000..c55e0c3 --- /dev/null +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/entity/DqInspectTask.java @@ -0,0 +1,144 @@ +package org.jeecg.modules.demo.dqinspecttask.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +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; + +/** + * @Description: dq_inspect_task + * @Author: jeecg-boot + * @Date: 2026-05-28 + * @Version: V1.0 + */ +@Schema(description="dq_inspect_task") +@Data +@TableName("dq_inspect_task") +public class DqInspectTask implements Serializable { + private static final long serialVersionUID = 1L; + + /**id*/ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description = "id") + 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; + /**具体问题ID*/ + @Excel(name = "具体问题ID", width = 15) + @Schema(description = "具体问题ID") + private java.lang.String problemId; + /**密级*/ + @Excel(name = "密级", width = 15, dicCode = "secret_level") + @Dict(dicCode = "secret_level") + @Schema(description = "密级") + private java.lang.String secretLevel; + /**整改措施*/ + @Excel(name = "整改措施", width = 15) + @Schema(description = "整改措施") + private java.lang.String improveMeasure; + /**完成时限*/ + @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 deadline; + /**目标节点*/ + @Excel(name = "目标节点", width = 15) + @Schema(description = "目标节点") + private java.lang.String targetNode; + /**措施责任领导*/ + @Excel(name = "措施责任领导", width = 15, dictTable = "sys_user", dicText = "realname", dicCode = "username") + @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "username") + @Schema(description = "措施责任领导") + private java.lang.String measureResLeader; + /**措施责任部门*/ + @Excel(name = "措施责任部门", width = 15, dictTable = "sys_depart", dicText = "depart_name", dicCode = "id") + @Dict(dictTable = "sys_depart", dicText = "depart_name", dicCode = "id") + @Schema(description = "措施责任部门") + private java.lang.String measureResDept; + /**整改交付成果*/ + @Excel(name = "整改交付成果", width = 15) + @Schema(description = "整改交付成果") + private java.lang.String rectificationEvidence; + /**成效评价标准*/ + @Excel(name = "成效评价标准", width = 15) + @Schema(description = "成效评价标准") + private java.lang.String evaluationCriterion; + /**是否需要党群领导审批*/ + @Excel(name = "是否需要党群领导审批", width = 15, dicCode = "yn") + @Dict(dicCode = "yn") + @Schema(description = "是否需要党群领导审批") + private java.lang.String isNeedAppro; + /**党群领导*/ + @Excel(name = "党群领导", width = 15, dictTable = "sys_user", dicText = "realname", dicCode = "username") + @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "username") + @Schema(description = "党群领导") + private java.lang.String supDeptleaderid; + /**检查情况*/ + @Excel(name = "检查情况", width = 15) + @Schema(description = "检查情况") + private java.lang.String inspectionStatus; + /**监督意见*/ + @Excel(name = "监督意见", width = 15) + @Schema(description = "监督意见") + private java.lang.String supervisoryOpinion; + /**措施数量*/ + @Excel(name = "措施数量", width = 15) + @Schema(description = "措施数量") + private java.lang.Integer measureCount; + /**流程实例ID*/ + @Excel(name = "流程实例ID", width = 15) + @Schema(description = "流程实例ID") + private java.lang.String bpmProcessId; + /**流程状态*/ + @Excel(name = "流程状态", width = 15, dicCode = "super_status") + @Dict(dicCode = "super_status") + @Schema(description = "流程状态") + private java.lang.String bpmStatus; + /**整改状态*/ + @Excel(name = "整改状态", width = 15) + @Schema(description = "整改状态") + private java.lang.String taskStatus; + /**督办次数*/ + @Excel(name = "督办次数", width = 15) + @Schema(description = "督办次数") + private java.lang.String superviseCount; + /**排序*/ + @Excel(name = "排序", width = 15) + @Schema(description = "排序") + private java.lang.Integer sortNo; + /**删除标识*/ + @Excel(name = "删除标识", width = 15) + @Schema(description = "删除标识") + @TableLogic + private java.lang.String delFlag; +} diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/mapper/DqInspectProgressMapper.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/mapper/DqInspectProgressMapper.java new file mode 100644 index 0000000..41ec189 --- /dev/null +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/mapper/DqInspectProgressMapper.java @@ -0,0 +1,31 @@ +package org.jeecg.modules.demo.dqinspecttask.mapper; + +import java.util.List; +import org.jeecg.modules.demo.dqinspecttask.entity.DqInspectProgress; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +/** + * @Description: 工作进展反馈 + * @Author: jeecg-boot + * @Date: 2026-05-28 + * @Version: V1.0 + */ +public interface DqInspectProgressMapper extends BaseMapper { + + /** + * 通过主表id删除子表数据 + * + * @param mainId 主表id + * @return boolean + */ + public boolean deleteByMainId(@Param("mainId") String mainId); + + /** + * 通过主表id查询子表数据 + * + * @param mainId 主表id + * @return List + */ + public List selectByMainId(@Param("mainId") String mainId); +} diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/mapper/DqInspectTaskMapper.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/mapper/DqInspectTaskMapper.java new file mode 100644 index 0000000..a446fd3 --- /dev/null +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/mapper/DqInspectTaskMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.demo.dqinspecttask.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.demo.dqinspecttask.entity.DqInspectTask; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: dq_inspect_task + * @Author: jeecg-boot + * @Date: 2026-05-28 + * @Version: V1.0 + */ +public interface DqInspectTaskMapper extends BaseMapper { + +} diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/mapper/xml/DqInspectProgressMapper.xml b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/mapper/xml/DqInspectProgressMapper.xml new file mode 100644 index 0000000..dc6c9ba --- /dev/null +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/mapper/xml/DqInspectProgressMapper.xml @@ -0,0 +1,16 @@ + + + + + + DELETE + FROM dq_inspect_progress + WHERE + main_id = #{mainId} + + + diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/mapper/xml/DqInspectTaskMapper.xml b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/mapper/xml/DqInspectTaskMapper.xml new file mode 100644 index 0000000..7abca71 --- /dev/null +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/mapper/xml/DqInspectTaskMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/service/IDqInspectProgressService.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/service/IDqInspectProgressService.java new file mode 100644 index 0000000..e5706d0 --- /dev/null +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/service/IDqInspectProgressService.java @@ -0,0 +1,22 @@ +package org.jeecg.modules.demo.dqinspecttask.service; + +import org.jeecg.modules.demo.dqinspecttask.entity.DqInspectProgress; +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + +/** + * @Description: 工作进展反馈 + * @Author: jeecg-boot + * @Date: 2026-05-28 + * @Version: V1.0 + */ +public interface IDqInspectProgressService extends IService { + + /** + * 通过主表id查询子表数据 + * + * @param mainId 主表id + * @return List + */ + public List selectByMainId(String mainId); +} diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/service/IDqInspectTaskService.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/service/IDqInspectTaskService.java new file mode 100644 index 0000000..61f9eb1 --- /dev/null +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/service/IDqInspectTaskService.java @@ -0,0 +1,48 @@ +package org.jeecg.modules.demo.dqinspecttask.service; + +import org.jeecg.modules.demo.dqinspecttask.entity.DqInspectProgress; +import org.jeecg.modules.demo.dqinspecttask.entity.DqInspectTask; +import com.baomidou.mybatisplus.extension.service.IService; +import java.io.Serializable; +import java.util.Collection; +import java.util.List; + +/** + * @Description: dq_inspect_task + * @Author: jeecg-boot + * @Date: 2026-05-28 + * @Version: V1.0 + */ +public interface IDqInspectTaskService extends IService { + + /** + * 添加一对多 + * + * @param dqInspectTask + * @param dqInspectProgressList + */ + public void saveMain(DqInspectTask dqInspectTask,List dqInspectProgressList) ; + + /** + * 修改一对多 + * + * @param dqInspectTask + * @param dqInspectProgressList + */ + public void updateMain(DqInspectTask dqInspectTask,List dqInspectProgressList); + + /** + * 删除一对多 + * + * @param id + */ + public void delMain (String id); + + /** + * 批量删除一对多 + * + * @param idList + */ + public void delBatchMain (Collection idList); + +} diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/service/impl/DqInspectProgressServiceImpl.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/service/impl/DqInspectProgressServiceImpl.java new file mode 100644 index 0000000..2c9fea1 --- /dev/null +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/service/impl/DqInspectProgressServiceImpl.java @@ -0,0 +1,27 @@ +package org.jeecg.modules.demo.dqinspecttask.service.impl; + +import org.jeecg.modules.demo.dqinspecttask.entity.DqInspectProgress; +import org.jeecg.modules.demo.dqinspecttask.mapper.DqInspectProgressMapper; +import org.jeecg.modules.demo.dqinspecttask.service.IDqInspectProgressService; +import org.springframework.stereotype.Service; +import java.util.List; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description: 工作进展反馈 + * @Author: jeecg-boot + * @Date: 2026-05-28 + * @Version: V1.0 + */ +@Service +public class DqInspectProgressServiceImpl extends ServiceImpl implements IDqInspectProgressService { + + @Autowired + private DqInspectProgressMapper dqInspectProgressMapper; + + @Override + public List selectByMainId(String mainId) { + return dqInspectProgressMapper.selectByMainId(mainId); + } +} diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/service/impl/DqInspectTaskServiceImpl.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/service/impl/DqInspectTaskServiceImpl.java new file mode 100644 index 0000000..4386c7c --- /dev/null +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/service/impl/DqInspectTaskServiceImpl.java @@ -0,0 +1,77 @@ +package org.jeecg.modules.demo.dqinspecttask.service.impl; + +import org.jeecg.modules.demo.dqinspecttask.entity.DqInspectTask; +import org.jeecg.modules.demo.dqinspecttask.entity.DqInspectProgress; +import org.jeecg.modules.demo.dqinspecttask.mapper.DqInspectProgressMapper; +import org.jeecg.modules.demo.dqinspecttask.mapper.DqInspectTaskMapper; +import org.jeecg.modules.demo.dqinspecttask.service.IDqInspectTaskService; +import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; +import java.io.Serializable; +import java.util.List; +import java.util.Collection; + +/** + * @Description: dq_inspect_task + * @Author: jeecg-boot + * @Date: 2026-05-28 + * @Version: V1.0 + */ +@Service +public class DqInspectTaskServiceImpl extends ServiceImpl implements IDqInspectTaskService { + + @Autowired + private DqInspectTaskMapper dqInspectTaskMapper; + @Autowired + private DqInspectProgressMapper dqInspectProgressMapper; + + @Override + @Transactional(rollbackFor = Exception.class) + public void saveMain(DqInspectTask dqInspectTask, List dqInspectProgressList) { + dqInspectTaskMapper.insert(dqInspectTask); + if(dqInspectProgressList!=null && dqInspectProgressList.size()>0) { + for(DqInspectProgress entity:dqInspectProgressList) { + //外键设置 + entity.setMainId(dqInspectTask.getId()); + dqInspectProgressMapper.insert(entity); + } + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateMain(DqInspectTask dqInspectTask,List dqInspectProgressList) { + dqInspectTaskMapper.updateById(dqInspectTask); + + //1.先删除子表数据 + dqInspectProgressMapper.deleteByMainId(dqInspectTask.getId()); + + //2.子表数据重新插入 + if(dqInspectProgressList!=null && dqInspectProgressList.size()>0) { + for(DqInspectProgress entity:dqInspectProgressList) { + //外键设置 + entity.setMainId(dqInspectTask.getId()); + dqInspectProgressMapper.insert(entity); + } + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delMain(String id) { + dqInspectProgressMapper.deleteByMainId(id); + dqInspectTaskMapper.deleteById(id); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delBatchMain(Collection idList) { + for(Serializable id:idList) { + dqInspectProgressMapper.deleteByMainId(id.toString()); + dqInspectTaskMapper.deleteById(id); + } + } + +} diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/vo/DqInspectTaskPage.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/vo/DqInspectTaskPage.java new file mode 100644 index 0000000..35ab554 --- /dev/null +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/vo/DqInspectTaskPage.java @@ -0,0 +1,144 @@ +package org.jeecg.modules.demo.dqinspecttask.vo; + +import java.util.List; +import org.jeecg.modules.demo.dqinspecttask.entity.DqInspectTask; +import org.jeecg.modules.demo.dqinspecttask.entity.DqInspectProgress; +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecgframework.poi.excel.annotation.ExcelEntity; +import org.jeecgframework.poi.excel.annotation.ExcelCollection; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import java.util.Date; +import org.jeecg.common.aspect.annotation.Dict; +import org.jeecg.common.constant.ProvinceCityArea; +import org.jeecg.common.util.SpringContextUtils; + +import io.swagger.v3.oas.annotations.media.Schema; + +/** + * @Description: dq_inspect_task + * @Author: jeecg-boot + * @Date: 2026-05-28 + * @Version: V1.0 + */ +@Data +@Schema(description="dq_inspect_task") +public class DqInspectTaskPage { + + /**id*/ + @Schema(description = "id") + 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; + /**具体问题ID*/ + @Excel(name = "具体问题ID", width = 15) + @Schema(description = "具体问题ID") + private java.lang.String problemId; + /**密级*/ + @Excel(name = "密级", width = 15, dicCode = "secret_level") + @Dict(dicCode = "secret_level") + @Schema(description = "密级") + private java.lang.String secretLevel; + /**整改措施*/ + @Excel(name = "整改措施", width = 15) + @Schema(description = "整改措施") + private java.lang.String improveMeasure; + /**完成时限*/ + @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 deadline; + /**目标节点*/ + @Excel(name = "目标节点", width = 15) + @Schema(description = "目标节点") + private java.lang.String targetNode; + /**措施责任领导*/ + @Excel(name = "措施责任领导", width = 15, dictTable = "sys_user", dicText = "realname", dicCode = "username") + @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "username") + @Schema(description = "措施责任领导") + private java.lang.String measureResLeader; + /**措施责任部门*/ + @Excel(name = "措施责任部门", width = 15, dictTable = "sys_depart", dicText = "depart_name", dicCode = "id") + @Dict(dictTable = "sys_depart", dicText = "depart_name", dicCode = "id") + @Schema(description = "措施责任部门") + private java.lang.String measureResDept; + /**整改交付成果*/ + @Excel(name = "整改交付成果", width = 15) + @Schema(description = "整改交付成果") + private java.lang.String rectificationEvidence; + /**成效评价标准*/ + @Excel(name = "成效评价标准", width = 15) + @Schema(description = "成效评价标准") + private java.lang.String evaluationCriterion; + /**是否需要党群领导审批*/ + @Excel(name = "是否需要党群领导审批", width = 15, dicCode = "yn") + @Dict(dicCode = "yn") + @Schema(description = "是否需要党群领导审批") + private java.lang.String isNeedAppro; + /**党群领导*/ + @Excel(name = "党群领导", width = 15, dictTable = "sys_user", dicText = "realname", dicCode = "username") + @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "username") + @Schema(description = "党群领导") + private java.lang.String supDeptleaderid; + /**检查情况*/ + @Excel(name = "检查情况", width = 15) + @Schema(description = "检查情况") + private java.lang.String inspectionStatus; + /**监督意见*/ + @Excel(name = "监督意见", width = 15) + @Schema(description = "监督意见") + private java.lang.String supervisoryOpinion; + /**措施数量*/ + @Excel(name = "措施数量", width = 15) + @Schema(description = "措施数量") + private java.lang.Integer measureCount; + /**流程实例ID*/ + @Excel(name = "流程实例ID", width = 15) + @Schema(description = "流程实例ID") + private java.lang.String bpmProcessId; + /**流程状态*/ + @Excel(name = "流程状态", width = 15, dicCode = "super_status") + @Dict(dicCode = "super_status") + @Schema(description = "流程状态") + private java.lang.String bpmStatus; + /**整改状态*/ + @Excel(name = "整改状态", width = 15) + @Schema(description = "整改状态") + private java.lang.String taskStatus; + /**督办次数*/ + @Excel(name = "督办次数", width = 15) + @Schema(description = "督办次数") + private java.lang.String superviseCount; + /**排序*/ + @Excel(name = "排序", width = 15) + @Schema(description = "排序") + private java.lang.Integer sortNo; + /**删除标识*/ + @Excel(name = "删除标识", width = 15) + @Schema(description = "删除标识") + private java.lang.String delFlag; + + @ExcelCollection(name="工作进展反馈") + @Schema(description = "工作进展反馈") + private List dqInspectProgressList; + +} From 064839e17865239a4a8a82b122f7b6dcd4051e52 Mon Sep 17 00:00:00 2001 From: ye1023 <12588209+ye1023@user.noreply.gitee.com> Date: Thu, 28 May 2026 15:31:41 +0800 Subject: [PATCH 3/6] =?UTF-8?q?yxk-20260527-=E5=B7=A1=E8=A7=86=E6=95=B4?= =?UTF-8?q?=E6=94=B9=E6=8F=90=E5=8D=87=E5=8F=B0=E8=B4=A6=EF=BC=8C=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E6=B8=85=E5=8D=95=E6=96=B0=E5=A2=9E=201=E3=80=81?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E6=B8=85=E5=8D=95=20dq=5Finspect=5Ftask.prob?= =?UTF-8?q?lem=5Fid=20=E5=BF=85=E9=A1=BB=E5=85=B3=E8=81=94=20dq=5Finspect?= =?UTF-8?q?=5Fproblem.id=EF=BC=8C=E4=B8=94=E8=A2=AB=E5=85=B3=E8=81=94?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98=E8=8A=82=E7=82=B9=20node=5Ftype=20?= =?UTF-8?q?=3D=20specific=E3=80=82=202=E3=80=81=E5=89=8D=E7=AB=AF=E6=8A=8A?= =?UTF-8?q?=E5=BD=93=E5=89=8D=E6=89=8B=E5=A1=AB=E2=80=9C=E5=85=B7=E4=BD=93?= =?UTF-8?q?=E9=97=AE=E9=A2=98ID=E2=80=9D=E6=94=B9=E6=88=90=E6=A0=91?= =?UTF-8?q?=E5=BD=A2=E9=80=89=E6=8B=A9=EF=BC=8C=E5=8F=AA=E5=85=81=E8=AE=B8?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E2=80=9C=E5=85=B7=E4=BD=93=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E2=80=9D=E8=8A=82=E7=82=B9=E3=80=82=20=E5=90=8E=E7=AB=AF?= =?UTF-8?q?=E5=9C=A8=E6=96=B0=E5=A2=9E=E3=80=81=E7=BC=96=E8=BE=91=E3=80=81?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=E6=97=B6=E7=BB=9F=E4=B8=80=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=EF=BC=8C=E9=98=B2=E6=AD=A2=E7=BB=95=E8=BF=87=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E9=9D=9E=E6=B3=95=20problemId=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DqInspectProblemController.java | 9 ++++ .../service/IDqInspectProblemService.java | 7 ++++ .../impl/DqInspectProblemServiceImpl.java | 42 +++++++++++++++++++ .../dqinspecttask/entity/DqInspectTask.java | 3 +- .../impl/DqInspectTaskServiceImpl.java | 24 +++++++++++ .../dqinspecttask/vo/DqInspectTaskPage.java | 3 +- 6 files changed, 86 insertions(+), 2 deletions(-) diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspectproblem/controller/DqInspectProblemController.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspectproblem/controller/DqInspectProblemController.java index 3c1b7a0..19ca86d 100644 --- a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspectproblem/controller/DqInspectProblemController.java +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspectproblem/controller/DqInspectProblemController.java @@ -204,6 +204,15 @@ public class DqInspectProblemController extends JeecgController>> parentOptions(@RequestParam(name = "nodeType") String nodeType) { return Result.OK(dqInspectProblemService.queryParentOptions(nodeType)); } + + /** + * 任务清单选择具体问题时使用,分类和面上问题仅用于分组展示,不可选择。 + */ + @Operation(summary="dq_inspect_problem-具体问题候选") + @GetMapping(value = "/specificOptions") + public Result>> specificOptions() { + return Result.OK(dqInspectProblemService.querySpecificOptions()); + } /** * 添加 diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspectproblem/service/IDqInspectProblemService.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspectproblem/service/IDqInspectProblemService.java index 6645066..3acd86b 100644 --- a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspectproblem/service/IDqInspectProblemService.java +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspectproblem/service/IDqInspectProblemService.java @@ -86,4 +86,11 @@ public interface IDqInspectProblemService extends IService { */ List> queryParentOptions(String nodeType); + /** + * 返回任务清单可选择的具体问题树:问题分类 -> 面上问题 -> 具体问题。 + * + * @return 具体问题候选树 + */ + List> querySpecificOptions(); + } diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspectproblem/service/impl/DqInspectProblemServiceImpl.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspectproblem/service/impl/DqInspectProblemServiceImpl.java index a04f6c3..d61643e 100644 --- a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspectproblem/service/impl/DqInspectProblemServiceImpl.java +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspectproblem/service/impl/DqInspectProblemServiceImpl.java @@ -156,6 +156,11 @@ public class DqInspectProblemServiceImpl extends ServiceImpl(); } + @Override + public List> querySpecificOptions() { + return querySpecificProblemTree(); + } + /** * 问题清单固定为三层:问题分类 -> 面上问题 -> 具体问题。 * 服务层兜底校验层级,避免绕过前端直接提交非法关系。 @@ -264,6 +269,43 @@ public class DqInspectProblemServiceImpl extends ServiceImpl> querySpecificProblemTree() { + List categories = baseMapper.selectList( + new QueryWrapper() + .eq("node_type", NODE_TYPE_CATEGORY) + .orderByAsc("sort_no", "create_time") + ); + List> result = new ArrayList<>(); + for (DqInspectProblem category : categories) { + Map categoryOption = toTreeOption(category, true); + List surfaces = baseMapper.selectList( + new QueryWrapper() + .eq("pid", category.getId()) + .eq("node_type", NODE_TYPE_SURFACE) + .orderByAsc("sort_no", "create_time") + ); + List> surfaceOptions = new ArrayList<>(); + for (DqInspectProblem surface : surfaces) { + Map surfaceOption = toTreeOption(surface, true); + List specifics = baseMapper.selectList( + new QueryWrapper() + .eq("pid", surface.getId()) + .eq("node_type", NODE_TYPE_SPECIFIC) + .orderByAsc("sort_no", "create_time") + ); + List> specificOptions = new ArrayList<>(); + for (DqInspectProblem specific : specifics) { + specificOptions.add(toTreeOption(specific, false)); + } + surfaceOption.put("children", specificOptions); + surfaceOptions.add(surfaceOption); + } + categoryOption.put("children", surfaceOptions); + result.add(categoryOption); + } + return result; + } + private Map toTreeOption(DqInspectProblem node, boolean disabled) { Map option = new HashMap<>(); option.put("key", node.getId()); diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/entity/DqInspectTask.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/entity/DqInspectTask.java index c55e0c3..12df303 100644 --- a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/entity/DqInspectTask.java +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/entity/DqInspectTask.java @@ -53,7 +53,8 @@ public class DqInspectTask implements Serializable { @Schema(description = "所属部门") private java.lang.String sysOrgCode; /**具体问题ID*/ - @Excel(name = "具体问题ID", width = 15) + @Excel(name = "具体问题", width = 15, dictTable = "dq_inspect_problem", dicText = "problem_name", dicCode = "id") + @Dict(dictTable = "dq_inspect_problem", dicText = "problem_name", dicCode = "id") @Schema(description = "具体问题ID") private java.lang.String problemId; /**密级*/ diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/service/impl/DqInspectTaskServiceImpl.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/service/impl/DqInspectTaskServiceImpl.java index 4386c7c..48627f2 100644 --- a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/service/impl/DqInspectTaskServiceImpl.java +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/service/impl/DqInspectTaskServiceImpl.java @@ -1,5 +1,9 @@ package org.jeecg.modules.demo.dqinspecttask.service.impl; +import org.jeecg.common.exception.JeecgBootException; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.demo.dqinspectproblem.entity.DqInspectProblem; +import org.jeecg.modules.demo.dqinspectproblem.service.IDqInspectProblemService; import org.jeecg.modules.demo.dqinspecttask.entity.DqInspectTask; import org.jeecg.modules.demo.dqinspecttask.entity.DqInspectProgress; import org.jeecg.modules.demo.dqinspecttask.mapper.DqInspectProgressMapper; @@ -26,10 +30,13 @@ public class DqInspectTaskServiceImpl extends ServiceImpl dqInspectProgressList) { + validateProblemId(dqInspectTask); dqInspectTaskMapper.insert(dqInspectTask); if(dqInspectProgressList!=null && dqInspectProgressList.size()>0) { for(DqInspectProgress entity:dqInspectProgressList) { @@ -43,6 +50,7 @@ public class DqInspectTaskServiceImpl extends ServiceImpl dqInspectProgressList) { + validateProblemId(dqInspectTask); dqInspectTaskMapper.updateById(dqInspectTask); //1.先删除子表数据 @@ -73,5 +81,21 @@ public class DqInspectTaskServiceImpl extends ServiceImpl Date: Fri, 29 May 2026 15:33:45 +0800 Subject: [PATCH 4/6] =?UTF-8?q?yxk-20260529-=E5=B7=A1=E8=A7=86=E6=95=B4?= =?UTF-8?q?=E6=94=B9=E6=8F=90=E5=8D=87=E5=8F=B0=E8=B4=A6=EF=BC=8C=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E6=B8=85=E5=8D=95=201=E3=80=81=E5=B0=86=E6=95=B4?= =?UTF-8?q?=E6=94=B9=E4=BB=BB=E5=8A=A1=E5=88=97=E8=A1=A8=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E4=B8=BA=E2=80=9C=E9=97=AE=E9=A2=98=E6=B8=85=E5=8D=95=20+=20?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E6=B8=85=E5=8D=95=E2=80=9D=E7=9A=84=E6=89=81?= =?UTF-8?q?=E5=B9=B3=E5=8F=B0=E8=B4=A6=E3=80=82=202=E3=80=81=E6=AF=8F?= =?UTF-8?q?=E4=B8=80=E8=A1=8C=E4=BB=8D=E4=BB=A3=E8=A1=A8=E4=B8=80=E6=9D=A1?= =?UTF-8?q?=E6=95=B4=E6=94=B9=E4=BB=BB=E5=8A=A1=EF=BC=8C=E8=A1=A5=E9=BD=90?= =?UTF-8?q?=E5=B1=95=E7=A4=BA=E5=85=B6=E6=89=80=E5=B1=9E=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E5=88=86=E7=B1=BB=E3=80=81=E9=9D=A2=E4=B8=8A=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E3=80=81=E5=85=B7=E4=BD=93=E9=97=AE=E9=A2=98=E3=80=82?= =?UTF-8?q?=203=E3=80=81=E7=9B=B8=E5=90=8C=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E5=88=86=E7=B1=BB=E3=80=81=E9=9D=A2=E4=B8=8A=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E3=80=81=E5=85=B7=E4=BD=93=E9=97=AE=E9=A2=98=E5=9C=A8=E8=A1=A8?= =?UTF-8?q?=E6=A0=BC=E4=B8=AD=E4=BD=BF=E7=94=A8=20rowSpan=20=E5=90=88?= =?UTF-8?q?=E5=B9=B6=E5=8D=95=E5=85=83=E6=A0=BC=EF=BC=8C=E5=BD=A2=E6=88=90?= =?UTF-8?q?=E7=9B=B4=E8=A7=82=E5=8F=B0=E8=B4=A6=E3=80=82=204=E3=80=81?= =?UTF-8?q?=E5=8F=91=E8=B5=B7=E6=B5=81=E7=A8=8B=E4=BB=8D=E4=BB=A5=E2=80=9C?= =?UTF-8?q?=E6=95=B4=E6=94=B9=E4=BB=BB=E5=8A=A1=E2=80=9D=E4=B8=BA=E7=B2=92?= =?UTF-8?q?=E5=BA=A6=EF=BC=8C=E5=8D=B3=E6=AF=8F=E6=9D=A1=E6=95=B4=E6=94=B9?= =?UTF-8?q?=E6=8E=AA=E6=96=BD=E5=8D=95=E7=8B=AC=E5=8F=91=E8=B5=B7=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DqInspectTaskController.java | 19 +++ .../mapper/DqInspectTaskMapper.java | 12 ++ .../mapper/xml/DqInspectTaskMapper.xml | 69 ++++++++++- .../service/IDqInspectTaskService.java | 12 ++ .../impl/DqInspectTaskServiceImpl.java | 8 ++ .../vo/DqInspectTaskLedgerVo.java | 113 ++++++++++++++++++ 6 files changed, 232 insertions(+), 1 deletion(-) create mode 100644 jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/vo/DqInspectTaskLedgerVo.java diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/controller/DqInspectTaskController.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/controller/DqInspectTaskController.java index e256837..23c1f04 100644 --- a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/controller/DqInspectTaskController.java +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/controller/DqInspectTaskController.java @@ -26,6 +26,7 @@ import org.jeecg.common.system.query.QueryRuleEnum; import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.demo.dqinspecttask.entity.DqInspectProgress; import org.jeecg.modules.demo.dqinspecttask.entity.DqInspectTask; +import org.jeecg.modules.demo.dqinspecttask.vo.DqInspectTaskLedgerVo; import org.jeecg.modules.demo.dqinspecttask.vo.DqInspectTaskPage; import org.jeecg.modules.demo.dqinspecttask.service.IDqInspectTaskService; import org.jeecg.modules.demo.dqinspecttask.service.IDqInspectProgressService; @@ -83,6 +84,24 @@ public class DqInspectTaskController { IPage pageList = dqInspectTaskService.page(page, queryWrapper); return Result.OK(pageList); } + + /** + * 整改任务台账:一行一条整改任务,补齐问题分类、面上问题、具体问题。 + * + * @param dqInspectTask + * @param pageNo + * @param pageSize + * @return + */ + @Operation(summary="dq_inspect_task-台账分页列表查询") + @GetMapping(value = "/ledgerList") + public Result> queryLedgerList(DqInspectTask dqInspectTask, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize) { + Page page = new Page(pageNo, pageSize); + IPage pageList = dqInspectTaskService.queryLedgerPage(page, dqInspectTask); + return Result.OK(pageList); + } /** * 添加 diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/mapper/DqInspectTaskMapper.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/mapper/DqInspectTaskMapper.java index a446fd3..a54d3fc 100644 --- a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/mapper/DqInspectTaskMapper.java +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/mapper/DqInspectTaskMapper.java @@ -2,9 +2,12 @@ package org.jeecg.modules.demo.dqinspecttask.mapper; import java.util.List; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Param; import org.jeecg.modules.demo.dqinspecttask.entity.DqInspectTask; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.jeecg.modules.demo.dqinspecttask.vo.DqInspectTaskLedgerVo; /** * @Description: dq_inspect_task @@ -14,4 +17,13 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface DqInspectTaskMapper extends BaseMapper { + /** + * 查询整改任务台账,补齐问题分类、面上问题、具体问题信息。 + * + * @param page 分页参数 + * @param task 查询条件 + * @return 台账分页 + */ + IPage queryLedgerPage(Page page, @Param("task") DqInspectTask task); + } diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/mapper/xml/DqInspectTaskMapper.xml b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/mapper/xml/DqInspectTaskMapper.xml index 7abca71..2b15231 100644 --- a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/mapper/xml/DqInspectTaskMapper.xml +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/mapper/xml/DqInspectTaskMapper.xml @@ -2,4 +2,71 @@ - \ No newline at end of file + + + diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/service/IDqInspectTaskService.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/service/IDqInspectTaskService.java index 61f9eb1..4c2b977 100644 --- a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/service/IDqInspectTaskService.java +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/service/IDqInspectTaskService.java @@ -1,8 +1,11 @@ package org.jeecg.modules.demo.dqinspecttask.service; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.jeecg.modules.demo.dqinspecttask.entity.DqInspectProgress; import org.jeecg.modules.demo.dqinspecttask.entity.DqInspectTask; import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.demo.dqinspecttask.vo.DqInspectTaskLedgerVo; import java.io.Serializable; import java.util.Collection; import java.util.List; @@ -44,5 +47,14 @@ public interface IDqInspectTaskService extends IService { * @param idList */ public void delBatchMain (Collection idList); + + /** + * 查询整改任务台账。 + * + * @param page 分页参数 + * @param dqInspectTask 查询条件 + * @return 台账分页 + */ + IPage queryLedgerPage(Page page, DqInspectTask dqInspectTask); } diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/service/impl/DqInspectTaskServiceImpl.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/service/impl/DqInspectTaskServiceImpl.java index 48627f2..5340aea 100644 --- a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/service/impl/DqInspectTaskServiceImpl.java +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/service/impl/DqInspectTaskServiceImpl.java @@ -9,7 +9,10 @@ import org.jeecg.modules.demo.dqinspecttask.entity.DqInspectProgress; import org.jeecg.modules.demo.dqinspecttask.mapper.DqInspectProgressMapper; import org.jeecg.modules.demo.dqinspecttask.mapper.DqInspectTaskMapper; import org.jeecg.modules.demo.dqinspecttask.service.IDqInspectTaskService; +import org.jeecg.modules.demo.dqinspecttask.vo.DqInspectTaskLedgerVo; import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; @@ -82,6 +85,11 @@ public class DqInspectTaskServiceImpl extends ServiceImpl queryLedgerPage(Page page, DqInspectTask dqInspectTask) { + return dqInspectTaskMapper.queryLedgerPage(page, dqInspectTask); + } + /** * 整改任务必须挂在问题清单的“具体问题”节点下,避免接口绕过前端产生非法层级数据。 */ diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/vo/DqInspectTaskLedgerVo.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/vo/DqInspectTaskLedgerVo.java new file mode 100644 index 0000000..4b31dee --- /dev/null +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/dqinspecttask/vo/DqInspectTaskLedgerVo.java @@ -0,0 +1,113 @@ +package org.jeecg.modules.demo.dqinspecttask.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.jeecg.common.aspect.annotation.Dict; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; + +/** + * 整改任务台账行:一行对应一条整改任务,同时带出所属的问题层级信息。 + */ +@Data +@Schema(description = "整改任务台账") +public class DqInspectTaskLedgerVo implements Serializable { + private static final long serialVersionUID = 1L; + + @Schema(description = "任务ID") + private String id; + + @Schema(description = "问题分类ID") + private String categoryId; + + @Schema(description = "问题分类") + private String categoryName; + + @Schema(description = "面上问题ID") + private String surfaceId; + + @Schema(description = "面上问题") + private String surfaceName; + + @Schema(description = "具体问题ID") + private String specificId; + + @Schema(description = "具体问题") + private String specificName; + + @Schema(description = "具体问题ID") + private String problemId; + + @Schema(description = "巡视建议") + private String inspectAdvice; + + @Dict(dicCode = "secret_level") + @Schema(description = "密级") + private String secretLevel; + + @Schema(description = "整改措施") + private String improveMeasure; + + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @Schema(description = "完成时限") + private Date deadline; + + @Schema(description = "目标节点") + private String targetNode; + + @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "username") + @Schema(description = "措施责任领导") + private String measureResLeader; + + @Dict(dictTable = "sys_depart", dicText = "depart_name", dicCode = "id") + @Schema(description = "措施责任部门") + private String measureResDept; + + @Schema(description = "整改交付成果") + private String rectificationEvidence; + + @Schema(description = "成效评价标准") + private String evaluationCriterion; + + @Dict(dicCode = "yn") + @Schema(description = "是否需要党群领导审批") + private String isNeedAppro; + + @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "username") + @Schema(description = "党群领导") + private String supDeptleaderid; + + @Schema(description = "检查情况") + private String inspectionStatus; + + @Schema(description = "监督意见") + private String supervisoryOpinion; + + @Schema(description = "措施数量") + private Integer measureCount; + + @Schema(description = "流程实例ID") + private String bpmProcessId; + + @Dict(dicCode = "super_status") + @Schema(description = "流程状态") + private String bpmStatus; + + @Schema(description = "整改状态") + private String taskStatus; + + @Schema(description = "督办次数") + private String superviseCount; + + @Schema(description = "排序") + private Integer sortNo; + + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Schema(description = "创建时间") + private Date createTime; +} From 8ab0c4efd8e121e43b2f3a7f6a0923118ff88b56 Mon Sep 17 00:00:00 2001 From: ye1023 <12588209+ye1023@user.noreply.gitee.com> Date: Mon, 1 Jun 2026 10:34:10 +0800 Subject: [PATCH 5/6] =?UTF-8?q?yxk-20260601-=E6=89=80=E5=8A=A1=E4=BC=9A?= =?UTF-8?q?=E5=8F=B0=E8=B4=A6=E5=8F=8A=E5=8F=91=E8=B5=B7=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/BgPartymatterController.java | 47 ++++++++++++++++--- .../bgpartymatter/entity/BgPartymatter.java | 4 ++ .../V20260529_1__add_officematter_ledger.sql | 40 ++++++++++++++++ 3 files changed, 84 insertions(+), 7 deletions(-) create mode 100644 jeecg-module-system/jeecg-system-start/src/main/resources/flyway/sql/mysql/v380/V20260529_1__add_officematter_ledger.sql diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/bgpartymatter/controller/BgPartymatterController.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/bgpartymatter/controller/BgPartymatterController.java index 6bbb384..0b66ed5 100644 --- a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/bgpartymatter/controller/BgPartymatterController.java +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/bgpartymatter/controller/BgPartymatterController.java @@ -40,6 +40,7 @@ import java.text.SimpleDateFormat; import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import org.apache.shiro.authz.annotation.Logical; import org.apache.shiro.authz.annotation.RequiresPermissions; /** * @Description: 党委会 @@ -53,6 +54,8 @@ import org.apache.shiro.authz.annotation.RequiresPermissions; @Slf4j public class BgPartymatterController extends JeecgController { + private static final String DEFAULT_MEETING_TYPE = "party"; + @Autowired private IBgPartymatterService bgPartymatterService; @@ -101,12 +104,13 @@ public class BgPartymatterController extends JeecgController add(@RequestBody BgPartymatter bgPartymatter) { if (oConvertUtils.isEmpty(bgPartymatter.getDelFlag())) { bgPartymatter.setDelFlag("0"); } + fillDefaultMeetingTypeForCreate(bgPartymatter); fillGeneratedNumber(bgPartymatter); bgPartymatterService.save(bgPartymatter); return Result.OK("添加成功!"); @@ -119,9 +123,10 @@ public class BgPartymatterController extends JeecgController edit(@RequestBody BgPartymatter bgPartymatter) { + fillMeetingTypeForUpdate(bgPartymatter); fillGeneratedNumber(bgPartymatter); bgPartymatterService.updateById(bgPartymatter); return Result.OK("编辑成功!"); @@ -142,12 +147,39 @@ public class BgPartymatterController extends JeecgController delete(@RequestParam(name="id",required=true) String id) { bgPartymatterService.delMain(id); @@ -181,7 +213,7 @@ public class BgPartymatterController extends JeecgController deleteBatch(@RequestParam(name="ids",required=true) String ids) { this.bgPartymatterService.delBatchMain(Arrays.asList(ids.split(","))); @@ -192,17 +224,18 @@ public class BgPartymatterController extends JeecgController importExcel(HttpServletRequest request, HttpServletResponse response) { return super.importExcel(request, response, BgPartymatter.class); diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/bgpartymatter/entity/BgPartymatter.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/bgpartymatter/entity/BgPartymatter.java index 1b9d692..b965a56 100644 --- a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/bgpartymatter/entity/BgPartymatter.java +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/bgpartymatter/entity/BgPartymatter.java @@ -57,6 +57,10 @@ public class BgPartymatter implements Serializable { @Excel(name = "年份", width = 15) @Schema(description = "年份") private java.lang.String year; + /**会议类型*/ + @Schema(description = "会议类型:party党委会,office所务会") + @TableField("meeting_type") + private java.lang.String meetingType; /**密级*/ @Excel(name = "密级", width = 15) @Dict(dicCode = "secret_level") diff --git a/jeecg-module-system/jeecg-system-start/src/main/resources/flyway/sql/mysql/v380/V20260529_1__add_officematter_ledger.sql b/jeecg-module-system/jeecg-system-start/src/main/resources/flyway/sql/mysql/v380/V20260529_1__add_officematter_ledger.sql new file mode 100644 index 0000000..f09cc32 --- /dev/null +++ b/jeecg-module-system/jeecg-system-start/src/main/resources/flyway/sql/mysql/v380/V20260529_1__add_officematter_ledger.sql @@ -0,0 +1,40 @@ +-- 所务会台账:党委会和所务会共用 bg_partymatter,通过 meeting_type 隔离数据。 +SET @add_meeting_type_sql = IF( + (SELECT COUNT(1) + FROM information_schema.columns + WHERE table_schema = DATABASE() + AND table_name = 'bg_partymatter' + AND column_name = 'meeting_type') = 0, + 'ALTER TABLE `bg_partymatter` ADD COLUMN `meeting_type` varchar(20) DEFAULT ''party'' COMMENT ''会议类型:party党委会,office所务会''', + 'SELECT 1' +); +PREPARE add_meeting_type_stmt FROM @add_meeting_type_sql; +EXECUTE add_meeting_type_stmt; +DEALLOCATE PREPARE add_meeting_type_stmt; + +UPDATE `bg_partymatter` +SET `meeting_type` = 'party' +WHERE `meeting_type` IS NULL OR `meeting_type` = ''; + +-- 所务会菜单 +INSERT IGNORE INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('2026052900010000000', NULL, '所务会', '/bg/bgpartymatter/bgOfficematterList', 'bg/bgpartymatter/BgOfficematterList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2026-05-29 00:00:00', NULL, NULL, 0); + +-- 所务会权限控制 +INSERT IGNORE INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2026052900010000001', '2026052900010000000', '添加所务会', NULL, NULL, 0, NULL, NULL, 2, 'bgofficematter:bg_officematter:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-29 00:00:00', NULL, NULL, 0, 0, '1', 0); + +INSERT IGNORE INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2026052900010000002', '2026052900010000000', '编辑所务会', NULL, NULL, 0, NULL, NULL, 2, 'bgofficematter:bg_officematter:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-29 00:00:00', NULL, NULL, 0, 0, '1', 0); + +INSERT IGNORE INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2026052900010000003', '2026052900010000000', '删除所务会', NULL, NULL, 0, NULL, NULL, 2, 'bgofficematter:bg_officematter:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-29 00:00:00', NULL, NULL, 0, 0, '1', 0); + +INSERT IGNORE INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2026052900010000004', '2026052900010000000', '批量删除所务会', NULL, NULL, 0, NULL, NULL, 2, 'bgofficematter:bg_officematter:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-29 00:00:00', NULL, NULL, 0, 0, '1', 0); + +INSERT IGNORE INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2026052900010000005', '2026052900010000000', '导出excel_所务会', NULL, NULL, 0, NULL, NULL, 2, 'bgofficematter:bg_officematter:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-29 00:00:00', NULL, NULL, 0, 0, '1', 0); + +INSERT IGNORE INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2026052900010000006', '2026052900010000000', '导入excel_所务会', NULL, NULL, 0, NULL, NULL, 2, 'bgofficematter:bg_officematter:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2026-05-29 00:00:00', NULL, NULL, 0, 0, '1', 0); From 1389e98907f18502beff9fcfb0aa685356e5f39f Mon Sep 17 00:00:00 2001 From: ye1023 <12588209+ye1023@user.noreply.gitee.com> Date: Mon, 1 Jun 2026 14:24:46 +0800 Subject: [PATCH 6/6] =?UTF-8?q?yxk-20260601-bug=E4=BF=AE=E5=A4=8D=201?= =?UTF-8?q?=E3=80=81=E9=80=9A=E7=94=A8=E6=9F=A5=E8=AF=A2=E7=9D=A3=E5=8A=9E?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=EF=BC=9A=E9=83=A8=E9=97=A8=E5=AD=97=E5=85=B8?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E5=BC=82=E5=B8=B8=202=E3=80=81=E9=80=9A?= =?UTF-8?q?=E7=94=A8=E6=9F=A5=E8=AF=A2=E7=9D=A3=E5=8A=9E=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=EF=BC=9A=E6=96=B0=E5=88=9B=E5=BB=BA=E7=9A=84=E7=9D=A3=E5=8A=9E?= =?UTF-8?q?=E5=9C=A8=E6=9C=80=E4=B8=8B=E9=9D=A2=EF=BC=8C=E9=9C=80=E8=A6=81?= =?UTF-8?q?=E6=8A=8A=E6=9C=80=E6=96=B0=E7=9A=84=E6=94=BE=E5=9C=A8=E6=9C=80?= =?UTF-8?q?=E4=B8=8A=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/TaskTaskController.java | 13 ++++++------- .../tasktask/service/ITaskTaskService.java | 6 +++--- .../service/impl/TaskTaskServiceImpl.java | 18 ++++++++++++------ 3 files changed, 21 insertions(+), 16 deletions(-) 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 index 82a2f6e..d52b703 100644 --- 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 @@ -39,7 +39,6 @@ import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; import org.jeecg.common.system.base.controller.JeecgController; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; @@ -198,12 +197,12 @@ public class TaskTaskController extends JeecgController> queryByBusinessId(@RequestParam(name = "businessId", required = true) String businessId) throws Exception { - List taskTaskList = taskTaskService.getTaskTaskListByBusinessId(businessId); - if (CollectionUtils.isEmpty(taskTaskList)) { - return Result.error("未找到对应数据"); - } - return Result.OK(taskTaskList); + public Result> queryByBusinessId(@RequestParam(name = "businessId", required = true) String businessId, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) throws Exception { + Page page = new Page<>(pageNo, pageSize); + IPage pageList = taskTaskService.getTaskTaskPageByBusinessId(page, businessId); + return Result.OK(pageList); } /** 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 index 29ee58d..ad36ed7 100644 --- 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 @@ -2,10 +2,10 @@ package org.jeecg.modules.tasktask.service; import org.jeecg.common.api.vo.Result; import org.jeecg.modules.tasktask.entity.TaskTask; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import java.util.List; - /** * @Description: 事项任务计划表(发起流程) * @Author: jeecg-boot @@ -16,7 +16,7 @@ public interface ITaskTaskService extends IService { boolean singleFlowStart(TaskTask taskTask,String userName) throws Exception; boolean multiFlowStart(TaskTask taskTask,String userName,Integer intervalType, Integer startCount) throws Exception; Result handleFlowStart(TaskTask taskTask, String username, Integer intervalType, Integer startCount)throws Exception; - List getTaskTaskListByBusinessId(String businessId) throws Exception; + IPage getTaskTaskPageByBusinessId(Page page, String businessId) throws Exception; boolean updateDeptHandlerName(String processInstanceId, String deptHandlerName); boolean deleteSingleProcess(String processInstId); } 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 index 1178c96..918375c 100644 --- 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 @@ -2,6 +2,8 @@ package org.jeecg.modules.tasktask.service.impl; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.apache.shiro.util.Assert; @@ -50,7 +52,8 @@ public class TaskTaskServiceImpl extends ServiceImpl i TaskTask newTask = new TaskTask(); BeanUtils.copyProperties(taskTask, newTask); newTask.setId(null); - newTask.setStartTime(null); + // 立即发起流程以实际发起时刻为准,避免流程记录缺少开始时间。 + newTask.setStartTime(new Date()); this.save(newTask); Result res = bpmBaseExtApiImpl.startMutilProcess(taskTask.getFlowCode(), newTask.getId(), taskTask.getFormUrl(), taskTask.getFormUrl(), userName, jsonString); String procId = res.getResult(); @@ -140,14 +143,17 @@ public class TaskTaskServiceImpl extends ServiceImpl i return Result.ok(); } - public List getTaskTaskListByBusinessId(String businessId) throws Exception{ + @Override + public IPage getTaskTaskPageByBusinessId(Page page, String businessId) throws Exception{ if (StringUtils.isBlank(businessId)) { - return Collections.emptyList(); + return page; } LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(TaskTask::getBusinessId, businessId); - // 2. 查询不到数据 → MP 本身会返回空集合,不是 null - return this.list(queryWrapper); + queryWrapper.eq(TaskTask::getBusinessId, businessId) + // Show the latest started or created process first for the current business. + .orderByDesc(TaskTask::getStartTime) + .orderByDesc(TaskTask::getCreateTime); + return this.page(page, queryWrapper); } @Override