Merge branch 'master' into dev

This commit is contained in:
wsm
2026-06-05 17:22:06 +08:00
13 changed files with 1111 additions and 0 deletions
@@ -0,0 +1,380 @@
package org.jeecg.modules.demo.bqtakepulse.controller;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.HashMap;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson.JSONObject;
import org.flowable.engine.RuntimeService;
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.bqtakepulse.dto.BgTakepulseBpmSaveDTO;
import org.jeecg.modules.demo.bqtakepulse.entity.BgTakepulseFeedback;
import org.jeecg.modules.demo.bqtakepulse.entity.BgTakepulse;
import org.jeecg.modules.demo.bqtakepulse.vo.BgTakepulsePage;
import org.jeecg.modules.demo.bqtakepulse.service.IBgTakepulseService;
import org.jeecg.modules.demo.bqtakepulse.service.IBgTakepulseFeedbackService;
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 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-06-05
* @Version: V1.0
*/
@Tag(name="我为四所把把脉")
@RestController
@RequestMapping("/bqtakepulse/bgTakepulse")
@Slf4j
public class BgTakepulseController {
@Autowired
private IBgTakepulseService bgTakepulseService;
@Autowired
private IBgTakepulseFeedbackService bgTakepulseFeedbackService;
@Autowired
protected RuntimeService runtimeService;
/**
* 分页列表查询
*
* @param bgTakepulse
* @param pageNo
* @param pageSize
* @param req
* @return
*/
//@AutoLog(value = "我为四所把把脉-分页列表查询")
@Operation(summary="我为四所把把脉-分页列表查询")
@GetMapping(value = "/list")
public Result<IPage<BgTakepulse>> queryPageList(BgTakepulse bgTakepulse,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
// 自定义查询规则
Map<String, QueryRuleEnum> customeRuleMap = new HashMap<>();
// 自定义多选的查询规则为:LIKE_WITH_OR
customeRuleMap.put("year", QueryRuleEnum.LIKE_WITH_OR);
customeRuleMap.put("taskType", QueryRuleEnum.LIKE_WITH_OR);
QueryWrapper<BgTakepulse> queryWrapper = QueryGenerator.initQueryWrapper(bgTakepulse, req.getParameterMap(),customeRuleMap);
Page<BgTakepulse> page = new Page<BgTakepulse>(pageNo, pageSize);
IPage<BgTakepulse> pageList = bgTakepulseService.page(page, queryWrapper);
return Result.OK(pageList);
}
/**
* 添加
*
* @param bgTakepulsePage
* @return
*/
@AutoLog(value = "我为四所把把脉-添加")
@Operation(summary="我为四所把把脉-添加")
@RequiresPermissions("bqtakepulse:bg_takepulse:add")
@PostMapping(value = "/add")
public Result<String> add(@RequestBody BgTakepulsePage bgTakepulsePage) {
BgTakepulse bgTakepulse = new BgTakepulse();
BeanUtils.copyProperties(bgTakepulsePage, bgTakepulse);
bgTakepulse.setBpmStatus("1");
bgTakepulseService.saveMain(bgTakepulse, bgTakepulsePage.getBgTakepulseFeedbackList());
return Result.OK("添加成功!");
}
/**
* 编辑
*
* @param bgTakepulsePage
* @return
*/
@AutoLog(value = "我为四所把把脉-编辑")
@Operation(summary="我为四所把把脉-编辑")
@RequiresPermissions("bqtakepulse:bg_takepulse:edit")
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<String> edit(@RequestBody BgTakepulsePage bgTakepulsePage) {
BgTakepulse bgTakepulse = new BgTakepulse();
BeanUtils.copyProperties(bgTakepulsePage, bgTakepulse);
BgTakepulse bgTakepulseEntity = bgTakepulseService.getById(bgTakepulse.getId());
if(bgTakepulseEntity==null) {
return Result.error("未找到对应数据");
}
// 列表发起督办后只回写主表状态和督办次数,不应因为未传子表而清空已有反馈。
if (bgTakepulsePage.getBgTakepulseFeedbackList() == null) {
bgTakepulseService.updateById(bgTakepulse);
} else {
bgTakepulseService.updateMain(bgTakepulse, bgTakepulsePage.getBgTakepulseFeedbackList());
}
return Result.OK("编辑成功!");
}
/**
* 保存BPM办理页主表,同时同步流程变量json_data。
*
* @param dto BPM表单数据
* @return
*/
@AutoLog(value = "保存我为四所把把脉业务数据同时更新流程变量jsonData")
@Operation(summary="保存我为四所把把脉业务数据同时更新流程变量jsonData")
@PostMapping(value = "/saveBpmForm")
public Result<String> saveBpmForm(@RequestBody BgTakepulseBpmSaveDTO dto) {
if (dto == null || dto.getFormData() == null || oConvertUtils.isEmpty(dto.getFormData().getId())) {
return Result.error("表单数据不存在");
}
if (oConvertUtils.isEmpty(dto.getProcessInstanceId())) {
return Result.error("流程实例ID不能为空");
}
String varField = oConvertUtils.isEmpty(dto.getVarField()) ? "json_data" : dto.getVarField();
bgTakepulseService.updateById(dto.getFormData());
runtimeService.setVariable(dto.getProcessInstanceId(), varField, JSONObject.toJSONString(dto.getFormData()));
return Result.OK("保存成功");
}
/**
* 通过id删除
*
* @param id
* @return
*/
@AutoLog(value = "我为四所把把脉-通过id删除")
@Operation(summary="我为四所把把脉-通过id删除")
@RequiresPermissions("bqtakepulse:bg_takepulse:delete")
@DeleteMapping(value = "/delete")
public Result<String> delete(@RequestParam(name="id",required=true) String id) {
bgTakepulseService.delMain(id);
return Result.OK("删除成功!");
}
/**
* 批量删除
*
* @param ids
* @return
*/
@AutoLog(value = "我为四所把把脉-批量删除")
@Operation(summary="我为四所把把脉-批量删除")
@RequiresPermissions("bqtakepulse:bg_takepulse:deleteBatch")
@DeleteMapping(value = "/deleteBatch")
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.bgTakepulseService.delBatchMain(Arrays.asList(ids.split(",")));
return Result.OK("批量删除成功!");
}
/**
* 通过id查询
*
* @param id
* @return
*/
//@AutoLog(value = "我为四所把把脉-通过id查询")
@Operation(summary="我为四所把把脉-通过id查询")
@GetMapping(value = "/queryById")
public Result<BgTakepulse> queryById(@RequestParam(name="id",required=true) String id) {
BgTakepulse bgTakepulse = bgTakepulseService.getById(id);
if(bgTakepulse==null) {
return Result.error("未找到对应数据");
}
return Result.OK(bgTakepulse);
}
/**
* 通过id查询
*
* @param id
* @return
*/
//@AutoLog(value = "执行情况反馈通过主表ID查询")
@Operation(summary="执行情况反馈主表ID查询")
@GetMapping(value = "/queryBgTakepulseFeedbackByMainId")
public Result<List<BgTakepulseFeedback>> queryBgTakepulseFeedbackListByMainId(@RequestParam(name="id",required=true) String id) {
List<BgTakepulseFeedback> bgTakepulseFeedbackList = bgTakepulseFeedbackService.selectByMainId(id);
return Result.OK(bgTakepulseFeedbackList);
}
/**
* BPM办理页按主表和流程实例分页查询反馈。
*
* @return
*/
@Operation(summary="执行情况反馈-通过主表ID和流程实例ID查询")
@GetMapping(value = "/listBgTakepulseFeedbackByMainId")
public Result<IPage<BgTakepulseFeedback>> listBgTakepulseFeedbackByMainId(BgTakepulseFeedback bgTakepulseFeedback,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<BgTakepulseFeedback> queryWrapper = QueryGenerator.initQueryWrapper(bgTakepulseFeedback, req.getParameterMap());
Page<BgTakepulseFeedback> page = new Page<BgTakepulseFeedback>(pageNo, pageSize);
IPage<BgTakepulseFeedback> pageList = bgTakepulseFeedbackService.page(page, queryWrapper);
return Result.OK(pageList);
}
/**
* 新增执行情况反馈。
*
* @param bgTakepulseFeedback
* @return
*/
@AutoLog(value = "执行情况反馈-添加")
@Operation(summary="执行情况反馈-添加")
@PostMapping(value = "/addBgTakepulseFeedback")
public Result<String> addBgTakepulseFeedback(@RequestBody BgTakepulseFeedback bgTakepulseFeedback) {
if (oConvertUtils.isEmpty(bgTakepulseFeedback.getDelFlag())) {
bgTakepulseFeedback.setDelFlag("0");
}
bgTakepulseFeedbackService.save(bgTakepulseFeedback);
return Result.OK("添加成功!");
}
/**
* 编辑执行情况反馈。
*
* @param bgTakepulseFeedback
* @return
*/
@AutoLog(value = "执行情况反馈-编辑")
@Operation(summary="执行情况反馈-编辑")
@RequestMapping(value = "/editBgTakepulseFeedback", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<String> editBgTakepulseFeedback(@RequestBody BgTakepulseFeedback bgTakepulseFeedback) {
bgTakepulseFeedbackService.updateById(bgTakepulseFeedback);
return Result.OK("编辑成功!");
}
/**
* 通过id删除执行情况反馈。
*
* @param id
* @return
*/
@AutoLog(value = "执行情况反馈-通过id删除")
@Operation(summary="执行情况反馈-通过id删除")
@DeleteMapping(value = "/deleteBgTakepulseFeedback")
public Result<String> deleteBgTakepulseFeedback(@RequestParam(name="id",required=true) String id) {
bgTakepulseFeedbackService.removeById(id);
return Result.OK("删除成功!");
}
/**
* 批量删除执行情况反馈。
*
* @param ids
* @return
*/
@AutoLog(value = "执行情况反馈-批量删除")
@Operation(summary="执行情况反馈-批量删除")
@DeleteMapping(value = "/deleteBatchBgTakepulseFeedback")
public Result<String> deleteBatchBgTakepulseFeedback(@RequestParam(name="ids",required=true) String ids) {
bgTakepulseFeedbackService.removeByIds(Arrays.asList(ids.split(",")));
return Result.OK("批量删除成功!");
}
/**
* 导出excel
*
* @param request
* @param bgTakepulse
*/
@RequiresPermissions("bqtakepulse:bg_takepulse:exportXls")
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, BgTakepulse bgTakepulse) {
// Step.1 组装查询条件查询数据
QueryWrapper<BgTakepulse> queryWrapper = QueryGenerator.initQueryWrapper(bgTakepulse, request.getParameterMap());
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
//配置选中数据查询条件
String selections = request.getParameter("selections");
if(oConvertUtils.isNotEmpty(selections)) {
List<String> selectionList = Arrays.asList(selections.split(","));
queryWrapper.in("id",selectionList);
}
//Step.2 获取导出数据
List<BgTakepulse> bgTakepulseList = bgTakepulseService.list(queryWrapper);
// Step.3 组装pageList
List<BgTakepulsePage> pageList = new ArrayList<BgTakepulsePage>();
for (BgTakepulse main : bgTakepulseList) {
BgTakepulsePage vo = new BgTakepulsePage();
BeanUtils.copyProperties(main, vo);
List<BgTakepulseFeedback> bgTakepulseFeedbackList = bgTakepulseFeedbackService.selectByMainId(main.getId());
vo.setBgTakepulseFeedbackList(bgTakepulseFeedbackList);
pageList.add(vo);
}
// Step.4 AutoPoi 导出Excel
ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
mv.addObject(NormalExcelConstants.FILE_NAME, "我为四所把把脉列表");
mv.addObject(NormalExcelConstants.CLASS, BgTakepulsePage.class);
mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("我为四所把把脉数据", "导出人:"+sysUser.getRealname(), "我为四所把把脉"));
mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
return mv;
}
/**
* 通过excel导入数据
*
* @param request
* @param response
* @return
*/
@RequiresPermissions("bqtakepulse:bg_takepulse:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
// 获取上传文件对象
MultipartFile file = entity.getValue();
ImportParams params = new ImportParams();
params.setTitleRows(2);
params.setHeadRows(1);
params.setNeedSave(true);
try {
List<BgTakepulsePage> list = ExcelImportUtil.importExcel(file.getInputStream(), BgTakepulsePage.class, params);
for (BgTakepulsePage page : list) {
BgTakepulse po = new BgTakepulse();
BeanUtils.copyProperties(page, po);
bgTakepulseService.saveMain(po, page.getBgTakepulseFeedbackList());
}
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("文件导入失败!");
}
}
@@ -0,0 +1,23 @@
package org.jeecg.modules.demo.bqtakepulse.dto;
import java.io.Serializable;
import org.jeecg.modules.demo.bqtakepulse.entity.BgTakepulse;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(description = "BgTakepulse BPM form save DTO")
public class BgTakepulseBpmSaveDTO implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(description = "Process instance id")
private String processInstanceId;
@Schema(description = "Process variable name")
private String varField;
@Schema(description = "BgTakepulse form data")
private BgTakepulse formData;
}
@@ -0,0 +1,181 @@
package org.jeecg.modules.demo.bqtakepulse.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: 我为四所把把脉
* @Author: jeecg-boot
* @Date: 2026-06-05
* @Version: V1.0
*/
@Schema(description="我为四所把把脉")
@Data
@TableName("bg_takepulse")
public class BgTakepulse 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;
/**密级*/
@Excel(name = "密级", width = 15, dicCode = "secret_level")
@Dict(dicCode = "secret_level")
@Schema(description = "密级")
private java.lang.String secretLevel;
/**年份*/
@Excel(name = "年份", width = 15, dicCode = "super_year")
@Dict(dicCode = "super_year")
@Schema(description = "年份")
private java.lang.String year;
/**序号*/
@Excel(name = "序号", width = 15)
@Schema(description = "序号")
private java.lang.String number;
/**会议类型:行政线、技术线*/
@Excel(name = "会议类型:行政线、技术线", width = 15, dicCode = "super_takepulse_type")
@Dict(dicCode = "super_takepulse_type")
@Schema(description = "会议类型:行政线、技术线")
private java.lang.String taskType;
/**类别:党的建设等其他*/
@Excel(name = "类别:党的建设等其他", width = 15)
@Schema(description = "类别:党的建设等其他")
private java.lang.String type;
/**提出人*/
@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 proposer;
/**意见主题*/
@Excel(name = "意见主题", width = 15)
@Schema(description = "意见主题")
private java.lang.String title;
/**具体意见*/
@Excel(name = "具体意见", width = 15)
@Schema(description = "具体意见")
private java.lang.String content;
/**责任领导*/
@Excel(name = "责任领导", width = 15, dictTable = "sys_user", dicText = "realname", dicCode = "username")
@Dict(dictTable = "sys_user", dicText = "realname", dicCode = "username")
@Schema(description = "责任领导")
private java.lang.String suoleader;
/**牵头部门*/
@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 responDeptid;
/**协办部门*/
@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 assistDeptid;
/**落实部门*/
@Excel(name = "落实部门", width = 15)
@Schema(description = "落实部门")
private java.lang.String implementDeptid;
/**是否采纳*/
@Excel(name = "是否采纳", width = 15,replace = {"是_Y","否_N"} )
@Schema(description = "是否采纳")
private java.lang.String isAdopt;
/**落实措施/解释说明*/
@Excel(name = "落实措施/解释说明", width = 15)
@Schema(description = "落实措施/解释说明")
private java.lang.String measure;
/**措施数量*/
@Excel(name = "措施数量", width = 15)
@Schema(description = "措施数量")
private java.lang.Integer measureNumber;
/**成果形式*/
@Excel(name = "成果形式", width = 15)
@Schema(description = "成果形式")
private java.lang.String achievement;
/**要求完成日期*/
@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 remark;
/**执行情况*/
@Excel(name = "执行情况", width = 15)
@Schema(description = "执行情况")
private java.lang.String actualExect;
/**实际完成时间*/
@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 proposerConfirm;
/**完成状态*/
@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 actSt;
/**督办次数*/
@Excel(name = "督办次数", width = 15)
@Schema(description = "督办次数")
private java.lang.String superviseCount;
/**紧急程度*/
@Excel(name = "紧急程度", width = 15)
@Schema(description = "紧急程度")
private java.lang.String urgencyLevel;
/**是否需要所办领导审批*/
@Excel(name = "是否需要所办领导审批", width = 15,replace = {"是_Y","否_N"} )
@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 = "删除标识")
@TableLogic
private java.lang.String delFlag;
}
@@ -0,0 +1,103 @@
package org.jeecg.modules.demo.bqtakepulse.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-06-05
* @Version: V1.0
*/
@Schema(description="执行情况反馈")
@Data
@TableName("bg_takepulse_feedback")
public class BgTakepulseFeedback 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 responDeptid;
/**责任部门名称*/
@Excel(name = "责任部门名称", width = 15)
@Schema(description = "责任部门名称")
private java.lang.String responDeptname;
/**反馈人id*/
@Excel(name = "反馈人id", width = 15)
@Schema(description = "反馈人id")
private java.lang.String responPersonid;
/**反馈人姓名*/
@Excel(name = "反馈人姓名", width = 15)
@Schema(description = "反馈人姓名")
private java.lang.String responPersonname;
/**实际执行情况*/
@Excel(name = "实际执行情况", width = 15)
@Schema(description = "实际执行情况")
private java.lang.String actualExect;
/**实际完成时间*/
@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 actSt;
/**完成状态*/
@Excel(name = "完成状态", width = 15)
@Schema(description = "完成状态")
private java.lang.String bpmStatus;
/**提出人确认*/
@Excel(name = "提出人确认", width = 15)
@Schema(description = "提出人确认")
private java.lang.String proposerConfirm;
/**流程实例id*/
@Excel(name = "流程实例id", width = 15)
@Schema(description = "流程实例id")
private java.lang.String bpmProcessId;
/**删除标识*/
@Excel(name = "删除标识", width = 15)
@Schema(description = "删除标识")
@TableLogic
private java.lang.String delFlag;
/**外键*/
@Schema(description = "外键")
private java.lang.String mainId;
}
@@ -0,0 +1,31 @@
package org.jeecg.modules.demo.bqtakepulse.mapper;
import java.util.List;
import org.jeecg.modules.demo.bqtakepulse.entity.BgTakepulseFeedback;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
* @Description: 执行情况反馈
* @Author: jeecg-boot
* @Date: 2026-06-05
* @Version: V1.0
*/
public interface BgTakepulseFeedbackMapper extends BaseMapper<BgTakepulseFeedback> {
/**
* 通过主表id删除子表数据
*
* @param mainId 主表id
* @return boolean
*/
public boolean deleteByMainId(@Param("mainId") String mainId);
/**
* 通过主表id查询子表数据
*
* @param mainId 主表id
* @return List<BgTakepulseFeedback>
*/
public List<BgTakepulseFeedback> selectByMainId(@Param("mainId") String mainId);
}
@@ -0,0 +1,17 @@
package org.jeecg.modules.demo.bqtakepulse.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.demo.bqtakepulse.entity.BgTakepulse;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 我为四所把把脉
* @Author: jeecg-boot
* @Date: 2026-06-05
* @Version: V1.0
*/
public interface BgTakepulseMapper extends BaseMapper<BgTakepulse> {
}
@@ -0,0 +1,16 @@
<?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.demo.bqtakepulse.mapper.BgTakepulseFeedbackMapper">
<delete id="deleteByMainId" parameterType="java.lang.String">
DELETE
FROM bg_takepulse_feedback
WHERE
main_id = #{mainId} </delete>
<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.demo.bqtakepulse.entity.BgTakepulseFeedback">
SELECT *
FROM bg_takepulse_feedback
WHERE
main_id = #{mainId} </select>
</mapper>
@@ -0,0 +1,5 @@
<?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.demo.bqtakepulse.mapper.BgTakepulseMapper">
</mapper>
@@ -0,0 +1,22 @@
package org.jeecg.modules.demo.bqtakepulse.service;
import org.jeecg.modules.demo.bqtakepulse.entity.BgTakepulseFeedback;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* @Description: 执行情况反馈
* @Author: jeecg-boot
* @Date: 2026-06-05
* @Version: V1.0
*/
public interface IBgTakepulseFeedbackService extends IService<BgTakepulseFeedback> {
/**
* 通过主表id查询子表数据
*
* @param mainId 主表id
* @return List<BgTakepulseFeedback>
*/
public List<BgTakepulseFeedback> selectByMainId(String mainId);
}
@@ -0,0 +1,48 @@
package org.jeecg.modules.demo.bqtakepulse.service;
import org.jeecg.modules.demo.bqtakepulse.entity.BgTakepulseFeedback;
import org.jeecg.modules.demo.bqtakepulse.entity.BgTakepulse;
import com.baomidou.mybatisplus.extension.service.IService;
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
/**
* @Description: 我为四所把把脉
* @Author: jeecg-boot
* @Date: 2026-06-05
* @Version: V1.0
*/
public interface IBgTakepulseService extends IService<BgTakepulse> {
/**
* 添加一对多
*
* @param bgTakepulse
* @param bgTakepulseFeedbackList
*/
public void saveMain(BgTakepulse bgTakepulse,List<BgTakepulseFeedback> bgTakepulseFeedbackList) ;
/**
* 修改一对多
*
* @param bgTakepulse
* @param bgTakepulseFeedbackList
*/
public void updateMain(BgTakepulse bgTakepulse,List<BgTakepulseFeedback> bgTakepulseFeedbackList);
/**
* 删除一对多
*
* @param id
*/
public void delMain (String id);
/**
* 批量删除一对多
*
* @param idList
*/
public void delBatchMain (Collection<? extends Serializable> idList);
}
@@ -0,0 +1,27 @@
package org.jeecg.modules.demo.bqtakepulse.service.impl;
import org.jeecg.modules.demo.bqtakepulse.entity.BgTakepulseFeedback;
import org.jeecg.modules.demo.bqtakepulse.mapper.BgTakepulseFeedbackMapper;
import org.jeecg.modules.demo.bqtakepulse.service.IBgTakepulseFeedbackService;
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-06-05
* @Version: V1.0
*/
@Service
public class BgTakepulseFeedbackServiceImpl extends ServiceImpl<BgTakepulseFeedbackMapper, BgTakepulseFeedback> implements IBgTakepulseFeedbackService {
@Autowired
private BgTakepulseFeedbackMapper bgTakepulseFeedbackMapper;
@Override
public List<BgTakepulseFeedback> selectByMainId(String mainId) {
return bgTakepulseFeedbackMapper.selectByMainId(mainId);
}
}
@@ -0,0 +1,77 @@
package org.jeecg.modules.demo.bqtakepulse.service.impl;
import org.jeecg.modules.demo.bqtakepulse.entity.BgTakepulse;
import org.jeecg.modules.demo.bqtakepulse.entity.BgTakepulseFeedback;
import org.jeecg.modules.demo.bqtakepulse.mapper.BgTakepulseFeedbackMapper;
import org.jeecg.modules.demo.bqtakepulse.mapper.BgTakepulseMapper;
import org.jeecg.modules.demo.bqtakepulse.service.IBgTakepulseService;
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: 我为四所把把脉
* @Author: jeecg-boot
* @Date: 2026-06-05
* @Version: V1.0
*/
@Service
public class BgTakepulseServiceImpl extends ServiceImpl<BgTakepulseMapper, BgTakepulse> implements IBgTakepulseService {
@Autowired
private BgTakepulseMapper bgTakepulseMapper;
@Autowired
private BgTakepulseFeedbackMapper bgTakepulseFeedbackMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public void saveMain(BgTakepulse bgTakepulse, List<BgTakepulseFeedback> bgTakepulseFeedbackList) {
bgTakepulseMapper.insert(bgTakepulse);
if(bgTakepulseFeedbackList!=null && bgTakepulseFeedbackList.size()>0) {
for(BgTakepulseFeedback entity:bgTakepulseFeedbackList) {
//外键设置
entity.setMainId(bgTakepulse.getId());
bgTakepulseFeedbackMapper.insert(entity);
}
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateMain(BgTakepulse bgTakepulse,List<BgTakepulseFeedback> bgTakepulseFeedbackList) {
bgTakepulseMapper.updateById(bgTakepulse);
//1.先删除子表数据
bgTakepulseFeedbackMapper.deleteByMainId(bgTakepulse.getId());
//2.子表数据重新插入
if(bgTakepulseFeedbackList!=null && bgTakepulseFeedbackList.size()>0) {
for(BgTakepulseFeedback entity:bgTakepulseFeedbackList) {
//外键设置
entity.setMainId(bgTakepulse.getId());
bgTakepulseFeedbackMapper.insert(entity);
}
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delMain(String id) {
bgTakepulseFeedbackMapper.deleteByMainId(id);
bgTakepulseMapper.deleteById(id);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delBatchMain(Collection<? extends Serializable> idList) {
for(Serializable id:idList) {
bgTakepulseFeedbackMapper.deleteByMainId(id.toString());
bgTakepulseMapper.deleteById(id);
}
}
}
@@ -0,0 +1,181 @@
package org.jeecg.modules.demo.bqtakepulse.vo;
import java.util.List;
import org.jeecg.modules.demo.bqtakepulse.entity.BgTakepulse;
import org.jeecg.modules.demo.bqtakepulse.entity.BgTakepulseFeedback;
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: 我为四所把把脉
* @Author: jeecg-boot
* @Date: 2026-06-05
* @Version: V1.0
*/
@Data
@Schema(description="我为四所把把脉")
public class BgTakepulsePage {
/**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;
/**密级*/
@Excel(name = "密级", width = 15, dicCode = "secret_level")
@Dict(dicCode = "secret_level")
@Schema(description = "密级")
private java.lang.String secretLevel;
/**年份*/
@Excel(name = "年份", width = 15, dicCode = "super_year")
@Dict(dicCode = "super_year")
@Schema(description = "年份")
private java.lang.String year;
/**序号*/
@Excel(name = "序号", width = 15)
@Schema(description = "序号")
private java.lang.String number;
/**会议类型:行政线、技术线*/
@Excel(name = "会议类型:行政线、技术线", width = 15, dicCode = "super_takepulse_type")
@Dict(dicCode = "super_takepulse_type")
@Schema(description = "会议类型:行政线、技术线")
private java.lang.String taskType;
/**类别:党的建设等其他*/
@Excel(name = "类别:党的建设等其他", width = 15)
@Schema(description = "类别:党的建设等其他")
private java.lang.String type;
/**提出人*/
@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 proposer;
/**意见主题*/
@Excel(name = "意见主题", width = 15)
@Schema(description = "意见主题")
private java.lang.String title;
/**具体意见*/
@Excel(name = "具体意见", width = 15)
@Schema(description = "具体意见")
private java.lang.String content;
/**责任领导*/
@Excel(name = "责任领导", width = 15, dictTable = "sys_user", dicText = "realname", dicCode = "username")
@Dict(dictTable = "sys_user", dicText = "realname", dicCode = "username")
@Schema(description = "责任领导")
private java.lang.String suoleader;
/**牵头部门*/
@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 responDeptid;
/**协办部门*/
@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 assistDeptid;
/**落实部门*/
@Excel(name = "落实部门", width = 15)
@Schema(description = "落实部门")
private java.lang.String implementDeptid;
/**是否采纳*/
@Schema(description = "是否采纳")
@Excel(name = "是否采纳", width = 15,replace = {"是_Y","否_N"} )
private java.lang.String isAdopt;
/**落实措施/解释说明*/
@Excel(name = "落实措施/解释说明", width = 15)
@Schema(description = "落实措施/解释说明")
private java.lang.String measure;
/**措施数量*/
@Excel(name = "措施数量", width = 15)
@Schema(description = "措施数量")
private java.lang.Integer measureNumber;
/**成果形式*/
@Excel(name = "成果形式", width = 15)
@Schema(description = "成果形式")
private java.lang.String achievement;
/**要求完成日期*/
@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 remark;
/**执行情况*/
@Excel(name = "执行情况", width = 15)
@Schema(description = "执行情况")
private java.lang.String actualExect;
/**实际完成时间*/
@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 proposerConfirm;
/**完成状态*/
@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 actSt;
/**督办次数*/
@Excel(name = "督办次数", width = 15)
@Schema(description = "督办次数")
private java.lang.String superviseCount;
/**紧急程度*/
@Excel(name = "紧急程度", width = 15)
@Schema(description = "紧急程度")
private java.lang.String urgencyLevel;
/**是否需要所办领导审批*/
@Schema(description = "是否需要所办领导审批")
@Excel(name = "是否需要所办领导审批", width = 15,replace = {"是_Y","否_N"} )
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 delFlag;
@ExcelCollection(name="执行情况反馈")
@Schema(description = "执行情况反馈")
private List<BgTakepulseFeedback> bgTakepulseFeedbackList;
}