From cfcd17b9bd1384257f81b6332cced93774e2274a Mon Sep 17 00:00:00 2001 From: ye1023 <12588209+ye1023@user.noreply.gitee.com> Date: Fri, 5 Jun 2026 16:51:04 +0800 Subject: [PATCH] =?UTF-8?q?yxk-20260605-=E6=88=91=E4=B8=BA=E5=9B=9B?= =?UTF-8?q?=E6=89=80=E6=8A=8A=E6=8A=8A=E8=84=89=201=E3=80=81=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=20BgTakepulseBpmSaveDTO=EF=BC=8C=E7=94=A8=E4=BA=8E=20?= =?UTF-8?q?BPM=20=E8=A1=A8=E5=8D=95=E4=BF=9D=E5=AD=98=E6=97=B6=E4=BC=A0?= =?UTF-8?q?=E9=80=92=E6=B5=81=E7=A8=8B=E5=AE=9E=E4=BE=8B=20ID=E3=80=81?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=8F=98=E9=87=8F=E5=90=8D=E5=92=8C=E4=B8=9A?= =?UTF-8?q?=E5=8A=A1=E8=A1=A8=E5=8D=95=E6=95=B0=E6=8D=AE=E3=80=82=202?= =?UTF-8?q?=E3=80=81=E5=9C=A8=20BgTakepulseController=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=20/saveBpmForm=20=E6=8E=A5=E5=8F=A3=EF=BC=8C=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E4=B8=BB=E8=A1=A8=E4=B8=9A=E5=8A=A1=E6=95=B0=E6=8D=AE=E7=9A=84?= =?UTF-8?q?=E5=90=8C=E6=97=B6=E5=90=8C=E6=AD=A5=E6=B5=81=E7=A8=8B=E5=8F=98?= =?UTF-8?q?=E9=87=8F=20json=5Fdata=E3=80=82=203=E3=80=81=E5=9C=A8=20BgTake?= =?UTF-8?q?pulseController=20=E6=96=B0=E5=A2=9E=E5=8F=8D=E9=A6=88=E5=88=86?= =?UTF-8?q?=E9=A1=B5=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3=20/listBgTakepuls?= =?UTF-8?q?eFeedbackByMainId=EF=BC=8C=E6=94=AF=E6=8C=81=E6=8C=89=E4=B8=BB?= =?UTF-8?q?=E8=A1=A8=20ID=20=E5=92=8C=E6=B5=81=E7=A8=8B=E5=AE=9E=E4=BE=8B?= =?UTF-8?q?=20ID=20=E6=9F=A5=E8=AF=A2=E5=8F=8D=E9=A6=88=E3=80=82=204?= =?UTF-8?q?=E3=80=81=E6=96=B0=E5=A2=9E=E5=8F=8D=E9=A6=88=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E3=80=81=E7=BC=96=E8=BE=91=E3=80=81=E5=88=A0=E9=99=A4=E3=80=81?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E5=88=A0=E9=99=A4=E6=8E=A5=E5=8F=A3=EF=BC=8C?= =?UTF-8?q?=E6=94=AF=E6=92=91=20BPM=20=E5=8A=9E=E7=90=86=E9=A1=B5=E9=87=8C?= =?UTF-8?q?=E7=9A=84=E5=8F=8D=E9=A6=88=E7=BB=B4=E6=8A=A4=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E3=80=82=205=E3=80=81=E8=B0=83=E6=95=B4=E5=8E=9F=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E6=8E=A5=E5=8F=A3=E9=80=BB=E8=BE=91=EF=BC=9A=E5=BD=93?= =?UTF-8?q?=E5=8F=AA=E5=9B=9E=E5=86=99=E4=B8=BB=E8=A1=A8=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E5=92=8C=E7=9D=A3=E5=8A=9E=E6=AC=A1=E6=95=B0=E3=80=81=E6=9C=AA?= =?UTF-8?q?=E4=BC=A0=E5=AD=90=E8=A1=A8=E6=95=B0=E6=8D=AE=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E5=8F=AA=E6=9B=B4=E6=96=B0=E4=B8=BB=E8=A1=A8=EF=BC=8C=E9=81=BF?= =?UTF-8?q?=E5=85=8D=E8=AF=AF=E5=88=A0=E5=B7=B2=E6=9C=89=E5=8F=8D=E9=A6=88?= =?UTF-8?q?=E5=AD=90=E8=A1=A8=E6=95=B0=E6=8D=AE=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/BgTakepulseController.java | 114 +++++++++++++++++- .../dto/BgTakepulseBpmSaveDTO.java | 23 ++++ 2 files changed, 132 insertions(+), 5 deletions(-) create mode 100644 jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/bqtakepulse/dto/BgTakepulseBpmSaveDTO.java diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/bqtakepulse/controller/BgTakepulseController.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/bqtakepulse/controller/BgTakepulseController.java index 8ce84a7..230ed8d 100644 --- a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/bqtakepulse/controller/BgTakepulseController.java +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/bqtakepulse/controller/BgTakepulseController.java @@ -1,18 +1,17 @@ package org.jeecg.modules.demo.bqtakepulse.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 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; @@ -24,6 +23,7 @@ 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; @@ -39,7 +39,6 @@ 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; @@ -61,6 +60,8 @@ public class BgTakepulseController { private IBgTakepulseService bgTakepulseService; @Autowired private IBgTakepulseFeedbackService bgTakepulseFeedbackService; + @Autowired + protected RuntimeService runtimeService; /** * 分页列表查询 @@ -124,9 +125,36 @@ public class BgTakepulseController { if(bgTakepulseEntity==null) { return Result.error("未找到对应数据"); } - bgTakepulseService.updateMain(bgTakepulse, bgTakepulsePage.getBgTakepulseFeedbackList()); + // 列表发起督办后只回写主表状态和督办次数,不应因为未传子表而清空已有反馈。 + 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 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删除 @@ -190,6 +218,82 @@ public class BgTakepulseController { return Result.OK(bgTakepulseFeedbackList); } + /** + * BPM办理页按主表和流程实例分页查询反馈。 + * + * @return + */ + @Operation(summary="执行情况反馈-通过主表ID和流程实例ID查询") + @GetMapping(value = "/listBgTakepulseFeedbackByMainId") + public Result> listBgTakepulseFeedbackByMainId(BgTakepulseFeedback bgTakepulseFeedback, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(bgTakepulseFeedback, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = bgTakepulseFeedbackService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 新增执行情况反馈。 + * + * @param bgTakepulseFeedback + * @return + */ + @AutoLog(value = "执行情况反馈-添加") + @Operation(summary="执行情况反馈-添加") + @PostMapping(value = "/addBgTakepulseFeedback") + public Result 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 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 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 deleteBatchBgTakepulseFeedback(@RequestParam(name="ids",required=true) String ids) { + bgTakepulseFeedbackService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + /** * 导出excel * diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/bqtakepulse/dto/BgTakepulseBpmSaveDTO.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/bqtakepulse/dto/BgTakepulseBpmSaveDTO.java new file mode 100644 index 0000000..971bcbc --- /dev/null +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/demo/bqtakepulse/dto/BgTakepulseBpmSaveDTO.java @@ -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; +}