+298
@@ -0,0 +1,298 @@
|
||||
package org.jeecg.modules.dj.inspectimprove.controller;
|
||||
|
||||
import java.util.Arrays;
|
||||
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.util.oConvertUtils;
|
||||
import org.jeecg.common.system.vo.SelectTreeModel;
|
||||
import org.jeecg.modules.dj.inspectimprove.entity.DjInspectImprove;
|
||||
import org.jeecg.modules.dj.inspectimprove.service.IDjInspectImproveService;
|
||||
|
||||
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-05-18
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Tag(name="巡视整改台账")
|
||||
@RestController
|
||||
@RequestMapping("/dj/inspectimprove/djInspectImprove")
|
||||
@Slf4j
|
||||
public class DjInspectImproveController extends JeecgController<DjInspectImprove, IDjInspectImproveService>{
|
||||
@Autowired
|
||||
private IDjInspectImproveService djInspectImproveService;
|
||||
|
||||
/**
|
||||
* 分页列表查询
|
||||
*
|
||||
* @param djInspectImprove
|
||||
* @param pageNo
|
||||
* @param pageSize
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "巡视整改台账-分页列表查询")
|
||||
@Operation(summary="巡视整改台账-分页列表查询")
|
||||
@GetMapping(value = "/rootList")
|
||||
public Result<IPage<DjInspectImprove>> queryPageList(DjInspectImprove djInspectImprove,
|
||||
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
|
||||
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
|
||||
HttpServletRequest req) {
|
||||
String hasQuery = req.getParameter("hasQuery");
|
||||
if(hasQuery != null && "true".equals(hasQuery)){
|
||||
QueryWrapper<DjInspectImprove> queryWrapper = QueryGenerator.initQueryWrapper(djInspectImprove, req.getParameterMap());
|
||||
List<DjInspectImprove> list = djInspectImproveService.queryTreeListNoPage(queryWrapper);
|
||||
IPage<DjInspectImprove> pageList = new Page<>(1, 10, list.size());
|
||||
pageList.setRecords(list);
|
||||
return Result.OK(pageList);
|
||||
}else{
|
||||
String parentId = djInspectImprove.getPid();
|
||||
if (oConvertUtils.isEmpty(parentId)) {
|
||||
parentId = "0";
|
||||
}
|
||||
djInspectImprove.setPid(null);
|
||||
QueryWrapper<DjInspectImprove> queryWrapper = QueryGenerator.initQueryWrapper(djInspectImprove, req.getParameterMap());
|
||||
// 使用 eq 防止模糊查询
|
||||
queryWrapper.eq("pid", parentId);
|
||||
Page<DjInspectImprove> page = new Page<DjInspectImprove>(pageNo, pageSize);
|
||||
IPage<DjInspectImprove> pageList = djInspectImproveService.page(page, queryWrapper);
|
||||
return Result.OK(pageList);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 【vue3专用】加载节点的子数据
|
||||
*
|
||||
* @param pid
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping(value = "/loadTreeChildren", method = RequestMethod.GET)
|
||||
public Result<List<SelectTreeModel>> loadTreeChildren(@RequestParam(name = "pid") String pid) {
|
||||
Result<List<SelectTreeModel>> result = new Result<>();
|
||||
try {
|
||||
List<SelectTreeModel> ls = djInspectImproveService.queryListByPid(pid);
|
||||
result.setResult(ls);
|
||||
result.setSuccess(true);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
result.setMessage(e.getMessage());
|
||||
result.setSuccess(false);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 【vue3专用】加载一级节点/如果是同步 则所有数据
|
||||
*
|
||||
* @param async
|
||||
* @param pcode
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping(value = "/loadTreeRoot", method = RequestMethod.GET)
|
||||
public Result<List<SelectTreeModel>> loadTreeRoot(@RequestParam(name = "async") Boolean async, @RequestParam(name = "pcode") String pcode) {
|
||||
Result<List<SelectTreeModel>> result = new Result<>();
|
||||
try {
|
||||
List<SelectTreeModel> ls = djInspectImproveService.queryListByCode(pcode);
|
||||
if (!async) {
|
||||
loadAllChildren(ls);
|
||||
}
|
||||
result.setResult(ls);
|
||||
result.setSuccess(true);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
result.setMessage(e.getMessage());
|
||||
result.setSuccess(false);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 【vue3专用】递归求子节点 同步加载用到
|
||||
*
|
||||
* @param ls
|
||||
*/
|
||||
private void loadAllChildren(List<SelectTreeModel> ls) {
|
||||
for (SelectTreeModel tsm : ls) {
|
||||
List<SelectTreeModel> temp = djInspectImproveService.queryListByPid(tsm.getKey());
|
||||
if (temp != null && temp.size() > 0) {
|
||||
tsm.setChildren(temp);
|
||||
loadAllChildren(temp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取子数据
|
||||
* @param djInspectImprove
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "巡视整改台账-获取子数据")
|
||||
@Operation(summary="巡视整改台账-获取子数据")
|
||||
@GetMapping(value = "/childList")
|
||||
public Result<IPage<DjInspectImprove>> queryPageList(DjInspectImprove djInspectImprove,HttpServletRequest req) {
|
||||
QueryWrapper<DjInspectImprove> queryWrapper = QueryGenerator.initQueryWrapper(djInspectImprove, req.getParameterMap());
|
||||
List<DjInspectImprove> list = djInspectImproveService.list(queryWrapper);
|
||||
IPage<DjInspectImprove> pageList = new Page<>(1, 10, list.size());
|
||||
pageList.setRecords(list);
|
||||
return Result.OK(pageList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量查询子节点
|
||||
* @param parentIds 父ID(多个采用半角逗号分割)
|
||||
* @return 返回 IPage
|
||||
* @param parentIds
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "巡视整改台账-批量获取子数据")
|
||||
@Operation(summary="巡视整改台账-批量获取子数据")
|
||||
@GetMapping("/getChildListBatch")
|
||||
public Result getChildListBatch(@RequestParam("parentIds") String parentIds) {
|
||||
try {
|
||||
QueryWrapper<DjInspectImprove> queryWrapper = new QueryWrapper<>();
|
||||
List<String> parentIdList = Arrays.asList(parentIds.split(","));
|
||||
queryWrapper.in("pid", parentIdList);
|
||||
List<DjInspectImprove> list = djInspectImproveService.list(queryWrapper);
|
||||
IPage<DjInspectImprove> pageList = new Page<>(1, 10, list.size());
|
||||
pageList.setRecords(list);
|
||||
return Result.OK(pageList);
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
return Result.error("批量查询子节点失败:" + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加
|
||||
*
|
||||
* @param djInspectImprove
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "巡视整改台账-添加")
|
||||
@Operation(summary="巡视整改台账-添加")
|
||||
@RequiresPermissions("dj.inspectimprove:dj_inspect_improve:add")
|
||||
@PostMapping(value = "/add")
|
||||
public Result<String> add(@RequestBody DjInspectImprove djInspectImprove) {
|
||||
djInspectImproveService.addDjInspectImprove(djInspectImprove);
|
||||
return Result.OK("添加成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
* @param djInspectImprove
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "巡视整改台账-编辑")
|
||||
@Operation(summary="巡视整改台账-编辑")
|
||||
@RequiresPermissions("dj.inspectimprove:dj_inspect_improve:edit")
|
||||
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
|
||||
public Result<String> edit(@RequestBody DjInspectImprove djInspectImprove) {
|
||||
djInspectImproveService.updateDjInspectImprove(djInspectImprove);
|
||||
return Result.OK("编辑成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "巡视整改台账-通过id删除")
|
||||
@Operation(summary="巡视整改台账-通过id删除")
|
||||
@RequiresPermissions("dj.inspectimprove:dj_inspect_improve:delete")
|
||||
@DeleteMapping(value = "/delete")
|
||||
public Result<String> delete(@RequestParam(name="id",required=true) String id) {
|
||||
djInspectImproveService.deleteDjInspectImprove(id);
|
||||
return Result.OK("删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "巡视整改台账-批量删除")
|
||||
@Operation(summary="巡视整改台账-批量删除")
|
||||
@RequiresPermissions("dj.inspectimprove:dj_inspect_improve:deleteBatch")
|
||||
@DeleteMapping(value = "/deleteBatch")
|
||||
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
|
||||
this.djInspectImproveService.removeByIds(Arrays.asList(ids.split(",")));
|
||||
return Result.OK("批量删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "巡视整改台账-通过id查询")
|
||||
@Operation(summary="巡视整改台账-通过id查询")
|
||||
@GetMapping(value = "/queryById")
|
||||
public Result<DjInspectImprove> queryById(@RequestParam(name="id",required=true) String id) {
|
||||
DjInspectImprove djInspectImprove = djInspectImproveService.getById(id);
|
||||
if(djInspectImprove==null) {
|
||||
return Result.error("未找到对应数据");
|
||||
}
|
||||
return Result.OK(djInspectImprove);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出excel
|
||||
*
|
||||
* @param request
|
||||
* @param djInspectImprove
|
||||
*/
|
||||
@RequiresPermissions("dj.inspectimprove:dj_inspect_improve:exportXls")
|
||||
@RequestMapping(value = "/exportXls")
|
||||
public ModelAndView exportXls(HttpServletRequest request, DjInspectImprove djInspectImprove) {
|
||||
return super.exportXls(request, djInspectImprove, DjInspectImprove.class, "巡视整改台账");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过excel导入数据
|
||||
*
|
||||
* @param request
|
||||
* @param response
|
||||
* @return
|
||||
*/
|
||||
@RequiresPermissions("dj.inspectimprove:dj_inspect_improve:importExcel")
|
||||
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
|
||||
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
|
||||
return super.importExcel(request, response, DjInspectImprove.class);
|
||||
}
|
||||
|
||||
}
|
||||
+136
@@ -0,0 +1,136 @@
|
||||
package org.jeecg.modules.dj.inspectimprove.entity;
|
||||
|
||||
import java.io.Serializable;
|
||||
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 java.io.UnsupportedEncodingException;
|
||||
|
||||
/**
|
||||
* @Description: 巡视整改台账
|
||||
* @Author: jeecg-boot
|
||||
* @Date: 2026-05-18
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Data
|
||||
@TableName("dj_inspect_improve")
|
||||
@Schema(description="巡视整改台账")
|
||||
public class DjInspectImprove 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;
|
||||
/**树形表单父id*/
|
||||
@Excel(name = "树形表单父id", width = 15)
|
||||
@Schema(description = "树形表单父id")
|
||||
private java.lang.String pid;
|
||||
/**是否有子节点*/
|
||||
@Excel(name = "是否有子节点", width = 15, dicCode = "yn")
|
||||
@Dict(dicCode = "yn")
|
||||
@Schema(description = "是否有子节点")
|
||||
private java.lang.String hasChild;
|
||||
/**问题分类*/
|
||||
@Excel(name = "问题分类", width = 15)
|
||||
@Schema(description = "问题分类")
|
||||
@Dict(dicCode = "inspect_improve_type")
|
||||
private java.lang.Integer questionCategory;
|
||||
/**面上问题*/
|
||||
@Excel(name = "面上问题", width = 15)
|
||||
@Schema(description = "面上问题")
|
||||
private java.lang.String mianshangQuestion;
|
||||
/**具体问题*/
|
||||
@Excel(name = "具体问题", width = 15)
|
||||
@Schema(description = "具体问题")
|
||||
private java.lang.String specicalQuestion;
|
||||
/**巡视建议*/
|
||||
@Excel(name = "巡视建议", width = 15)
|
||||
@Schema(description = "巡视建议")
|
||||
private java.lang.String inspectAdvice;
|
||||
/**整改措施*/
|
||||
@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)
|
||||
@Schema(description = "问题责任领导")
|
||||
private java.lang.String questionResLeader;
|
||||
/**问题责任部门*/
|
||||
@Excel(name = "问题责任部门", width = 15)
|
||||
@Schema(description = "问题责任部门")
|
||||
private java.lang.String questionResDept;
|
||||
/**措施责任领导*/
|
||||
@Excel(name = "措施责任领导", width = 15)
|
||||
@Schema(description = "措施责任领导")
|
||||
private java.lang.String measureResLeader;
|
||||
/**措施责任部门*/
|
||||
@Excel(name = "措施责任部门", width = 15)
|
||||
@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)
|
||||
@Schema(description = "工作进展")
|
||||
private java.lang.String workProgress;
|
||||
/**检查情况*/
|
||||
@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;
|
||||
}
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
package org.jeecg.modules.dj.inspectimprove.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.jeecg.common.system.vo.SelectTreeModel;
|
||||
import org.jeecg.modules.dj.inspectimprove.entity.DjInspectImprove;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Description: 巡视整改台账
|
||||
* @Author: jeecg-boot
|
||||
* @Date: 2026-05-18
|
||||
* @Version: V1.0
|
||||
*/
|
||||
public interface DjInspectImproveMapper extends BaseMapper<DjInspectImprove> {
|
||||
|
||||
/**
|
||||
* 编辑节点状态
|
||||
* @param id
|
||||
* @param status
|
||||
*/
|
||||
void updateTreeNodeStatus(@Param("id") String id,@Param("status") String status);
|
||||
|
||||
/**
|
||||
* 【vue3专用】根据父级ID查询树节点数据
|
||||
*
|
||||
* @param pid
|
||||
* @param query
|
||||
* @return
|
||||
*/
|
||||
List<SelectTreeModel> queryListByPid(@Param("pid") String pid, @Param("query") Map<String, String> query);
|
||||
|
||||
}
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.jeecg.modules.dj.inspectimprove.mapper.DjInspectImproveMapper">
|
||||
|
||||
<update id="updateTreeNodeStatus" parameterType="java.lang.String">
|
||||
update dj_inspect_improve set has_child = #{status} where id = #{id}
|
||||
</update>
|
||||
|
||||
<!-- 【vue3专用】 -->
|
||||
<select id="queryListByPid" parameterType="java.lang.Object" resultType="org.jeecg.common.system.vo.SelectTreeModel">
|
||||
select
|
||||
id as "key",
|
||||
specical_question as "title",
|
||||
(case when has_child = '1' then 0 else 1 end) as isLeaf,
|
||||
pid as parentId
|
||||
from dj_inspect_improve
|
||||
where pid = #{pid}
|
||||
<if test="query != null">
|
||||
<foreach collection="query.entrySet()" item="value" index="key">
|
||||
and ${key} = #{value}
|
||||
</foreach>
|
||||
</if>
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
package org.jeecg.modules.dj.inspectimprove.service;
|
||||
|
||||
import org.jeecg.common.system.vo.SelectTreeModel;
|
||||
import org.jeecg.modules.dj.inspectimprove.entity.DjInspectImprove;
|
||||
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;
|
||||
|
||||
/**
|
||||
* @Description: 巡视整改台账
|
||||
* @Author: jeecg-boot
|
||||
* @Date: 2026-05-18
|
||||
* @Version: V1.0
|
||||
*/
|
||||
public interface IDjInspectImproveService extends IService<DjInspectImprove> {
|
||||
|
||||
/**根节点父ID的值*/
|
||||
public static final String ROOT_PID_VALUE = "0";
|
||||
|
||||
/**树节点有子节点状态值*/
|
||||
public static final String HASCHILD = "1";
|
||||
|
||||
/**树节点无子节点状态值*/
|
||||
public static final String NOCHILD = "0";
|
||||
|
||||
/**
|
||||
* 新增节点
|
||||
*
|
||||
* @param djInspectImprove
|
||||
*/
|
||||
void addDjInspectImprove(DjInspectImprove djInspectImprove);
|
||||
|
||||
/**
|
||||
* 修改节点
|
||||
*
|
||||
* @param djInspectImprove
|
||||
* @throws JeecgBootException
|
||||
*/
|
||||
void updateDjInspectImprove(DjInspectImprove djInspectImprove) throws JeecgBootException;
|
||||
|
||||
/**
|
||||
* 删除节点
|
||||
*
|
||||
* @param id
|
||||
* @throws JeecgBootException
|
||||
*/
|
||||
void deleteDjInspectImprove(String id) throws JeecgBootException;
|
||||
|
||||
/**
|
||||
* 查询所有数据,无分页
|
||||
*
|
||||
* @param queryWrapper
|
||||
* @return List<DjInspectImprove>
|
||||
*/
|
||||
List<DjInspectImprove> queryTreeListNoPage(QueryWrapper<DjInspectImprove> queryWrapper);
|
||||
|
||||
/**
|
||||
* 【vue3专用】根据父级编码加载分类字典的数据
|
||||
*
|
||||
* @param parentCode
|
||||
* @return
|
||||
*/
|
||||
List<SelectTreeModel> queryListByCode(String parentCode);
|
||||
|
||||
/**
|
||||
* 【vue3专用】根据pid查询子节点集合
|
||||
*
|
||||
* @param pid
|
||||
* @return
|
||||
*/
|
||||
List<SelectTreeModel> queryListByPid(String pid);
|
||||
|
||||
}
|
||||
+219
@@ -0,0 +1,219 @@
|
||||
package org.jeecg.modules.dj.inspectimprove.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import org.jeecg.common.exception.JeecgBootException;
|
||||
import org.jeecg.common.util.oConvertUtils;
|
||||
import org.jeecg.common.system.vo.SelectTreeModel;
|
||||
import org.jeecg.modules.dj.inspectimprove.entity.DjInspectImprove;
|
||||
import org.jeecg.modules.dj.inspectimprove.mapper.DjInspectImproveMapper;
|
||||
import org.jeecg.modules.dj.inspectimprove.service.IDjInspectImproveService;
|
||||
import org.springframework.stereotype.Service;
|
||||
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.List;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
|
||||
/**
|
||||
* @Description: 巡视整改台账
|
||||
* @Author: jeecg-boot
|
||||
* @Date: 2026-05-18
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Service
|
||||
public class DjInspectImproveServiceImpl extends ServiceImpl<DjInspectImproveMapper, DjInspectImprove> implements IDjInspectImproveService {
|
||||
|
||||
@Override
|
||||
public void addDjInspectImprove(DjInspectImprove djInspectImprove) {
|
||||
//新增时设置hasChild为0
|
||||
djInspectImprove.setHasChild(IDjInspectImproveService.NOCHILD);
|
||||
if(oConvertUtils.isEmpty(djInspectImprove.getPid())){
|
||||
djInspectImprove.setPid(IDjInspectImproveService.ROOT_PID_VALUE);
|
||||
}else{
|
||||
//如果当前节点父ID不为空 则设置父节点的hasChildren 为1
|
||||
DjInspectImprove parent = baseMapper.selectById(djInspectImprove.getPid());
|
||||
if(parent!=null && !"1".equals(parent.getHasChild())){
|
||||
parent.setHasChild("1");
|
||||
baseMapper.updateById(parent);
|
||||
}
|
||||
}
|
||||
baseMapper.insert(djInspectImprove);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateDjInspectImprove(DjInspectImprove djInspectImprove) {
|
||||
DjInspectImprove entity = this.getById(djInspectImprove.getId());
|
||||
if(entity==null) {
|
||||
throw new JeecgBootException("未找到对应实体");
|
||||
}
|
||||
String old_pid = entity.getPid();
|
||||
String new_pid = djInspectImprove.getPid();
|
||||
if(!old_pid.equals(new_pid)) {
|
||||
updateOldParentNode(old_pid);
|
||||
if(oConvertUtils.isEmpty(new_pid)){
|
||||
djInspectImprove.setPid(IDjInspectImproveService.ROOT_PID_VALUE);
|
||||
}
|
||||
if(!IDjInspectImproveService.ROOT_PID_VALUE.equals(djInspectImprove.getPid())) {
|
||||
baseMapper.updateTreeNodeStatus(djInspectImprove.getPid(), IDjInspectImproveService.HASCHILD);
|
||||
}
|
||||
}
|
||||
baseMapper.updateById(djInspectImprove);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void deleteDjInspectImprove(String id) throws JeecgBootException {
|
||||
//查询选中节点下所有子节点一并删除
|
||||
id = this.queryTreeChildIds(id);
|
||||
if(id.indexOf(",")>0) {
|
||||
StringBuffer sb = new StringBuffer();
|
||||
String[] idArr = id.split(",");
|
||||
for (String idVal : idArr) {
|
||||
if(idVal != null){
|
||||
DjInspectImprove djInspectImprove = this.getById(idVal);
|
||||
String pidVal = djInspectImprove.getPid();
|
||||
//查询此节点上一级是否还有其他子节点
|
||||
List<DjInspectImprove> dataList = baseMapper.selectList(new QueryWrapper<DjInspectImprove>().eq("pid", pidVal).notIn("id",Arrays.asList(idArr)));
|
||||
boolean flag = (dataList == null || dataList.size() == 0) && !Arrays.asList(idArr).contains(pidVal) && !sb.toString().contains(pidVal);
|
||||
if(flag){
|
||||
//如果当前节点原本有子节点 现在木有了,更新状态
|
||||
sb.append(pidVal).append(",");
|
||||
}
|
||||
}
|
||||
}
|
||||
//批量删除节点
|
||||
baseMapper.deleteBatchIds(Arrays.asList(idArr));
|
||||
//修改已无子节点的标识
|
||||
String[] pidArr = sb.toString().split(",");
|
||||
for(String pid : pidArr){
|
||||
this.updateOldParentNode(pid);
|
||||
}
|
||||
}else{
|
||||
DjInspectImprove djInspectImprove = this.getById(id);
|
||||
if(djInspectImprove==null) {
|
||||
throw new JeecgBootException("未找到对应实体");
|
||||
}
|
||||
updateOldParentNode(djInspectImprove.getPid());
|
||||
baseMapper.deleteById(id);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DjInspectImprove> queryTreeListNoPage(QueryWrapper<DjInspectImprove> queryWrapper) {
|
||||
List<DjInspectImprove> dataList = baseMapper.selectList(queryWrapper);
|
||||
List<DjInspectImprove> mapList = new ArrayList<>();
|
||||
for(DjInspectImprove data : dataList){
|
||||
String pidVal = data.getPid();
|
||||
//递归查询子节点的根节点
|
||||
if(pidVal != null && !IDjInspectImproveService.NOCHILD.equals(pidVal)){
|
||||
DjInspectImprove rootVal = this.getTreeRoot(pidVal);
|
||||
if(rootVal != null && !mapList.contains(rootVal)){
|
||||
mapList.add(rootVal);
|
||||
}
|
||||
}else{
|
||||
if(!mapList.contains(data)){
|
||||
mapList.add(data);
|
||||
}
|
||||
}
|
||||
}
|
||||
return mapList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SelectTreeModel> queryListByCode(String parentCode) {
|
||||
String pid = ROOT_PID_VALUE;
|
||||
if (oConvertUtils.isNotEmpty(parentCode)) {
|
||||
LambdaQueryWrapper<DjInspectImprove> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(DjInspectImprove::getPid, parentCode);
|
||||
List<DjInspectImprove> list = baseMapper.selectList(queryWrapper);
|
||||
if (list == null || list.size() == 0) {
|
||||
throw new JeecgBootException("该编码【" + parentCode + "】不存在,请核实!");
|
||||
}
|
||||
if (list.size() > 1) {
|
||||
throw new JeecgBootException("该编码【" + parentCode + "】存在多个,请核实!");
|
||||
}
|
||||
pid = list.get(0).getId();
|
||||
}
|
||||
return baseMapper.queryListByPid(pid, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SelectTreeModel> queryListByPid(String pid) {
|
||||
if (oConvertUtils.isEmpty(pid)) {
|
||||
pid = ROOT_PID_VALUE;
|
||||
}
|
||||
return baseMapper.queryListByPid(pid, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据所传pid查询旧的父级节点的子节点并修改相应状态值
|
||||
* @param pid
|
||||
*/
|
||||
private void updateOldParentNode(String pid) {
|
||||
if(!IDjInspectImproveService.ROOT_PID_VALUE.equals(pid)) {
|
||||
Long count = baseMapper.selectCount(new QueryWrapper<DjInspectImprove>().eq("pid", pid));
|
||||
if(count==null || count<=1) {
|
||||
baseMapper.updateTreeNodeStatus(pid, IDjInspectImproveService.NOCHILD);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 递归查询节点的根节点
|
||||
* @param pidVal
|
||||
* @return
|
||||
*/
|
||||
private DjInspectImprove getTreeRoot(String pidVal){
|
||||
DjInspectImprove data = baseMapper.selectById(pidVal);
|
||||
if(data != null && !IDjInspectImproveService.ROOT_PID_VALUE.equals(data.getPid())){
|
||||
return this.getTreeRoot(data.getPid());
|
||||
}else{
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据id查询所有子节点id
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
private String queryTreeChildIds(String ids) {
|
||||
//获取id数组
|
||||
String[] idArr = ids.split(",");
|
||||
StringBuffer sb = new StringBuffer();
|
||||
for (String pidVal : idArr) {
|
||||
if(pidVal != null){
|
||||
if(!sb.toString().contains(pidVal)){
|
||||
if(sb.toString().length() > 0){
|
||||
sb.append(",");
|
||||
}
|
||||
sb.append(pidVal);
|
||||
this.getTreeChildIds(pidVal,sb);
|
||||
}
|
||||
}
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 递归查询所有子节点
|
||||
* @param pidVal
|
||||
* @param sb
|
||||
* @return
|
||||
*/
|
||||
private StringBuffer getTreeChildIds(String pidVal,StringBuffer sb){
|
||||
List<DjInspectImprove> dataList = baseMapper.selectList(new QueryWrapper<DjInspectImprove>().eq("pid", pidVal));
|
||||
if(dataList != null && dataList.size()>0){
|
||||
for(DjInspectImprove tree : dataList) {
|
||||
if(!sb.toString().contains(tree.getId())){
|
||||
sb.append(",").append(tree.getId());
|
||||
}
|
||||
this.getTreeChildIds(tree.getId(),sb);
|
||||
}
|
||||
}
|
||||
return sb;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user