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; +}