From 663d0970956af1a9b555b86f68d4d8d943647470 Mon Sep 17 00:00:00 2001 From: wsm <8454518+new-twice@user.noreply.gitee.com> Date: Thu, 13 Aug 2026 03:15:42 +0000 Subject: [PATCH] =?UTF-8?q?!127=20fix(xispeak):=20=E7=B2=BE=E7=AE=80?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E5=88=97=EF=BC=8C=E6=B3=A8=E9=87=8A=E9=83=A8?= =?UTF-8?q?=E5=88=86=E9=9D=9E=E5=BF=85=E8=A6=81=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(xispeak): 精简导出列,注释部分非必要字段 * fix(xispeak): 反馈增删改同步主表落实条数与已闭环数 * fix(xispeak): 导出切 EasyExcel 端点,反馈闭环口径改为已完成 --- .../controller/BgXiSpeakController.java | 15 +++++++++-- .../BgXiSpeakFeedbackController.java | 21 ++++++++++++++- .../supervision/xispeak/entity/BgXiSpeak.java | 8 +++--- .../service/IBgXiSpeakFeedbackService.java | 7 +++++ .../impl/BgXiSpeakFeedbackServiceImpl.java | 26 +++++++++++++++++++ 5 files changed, 70 insertions(+), 7 deletions(-) diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/supervision/xispeak/controller/BgXiSpeakController.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/supervision/xispeak/controller/BgXiSpeakController.java index b94120b..734db12 100644 --- a/jeecg-module-supervision/src/main/java/org/jeecg/modules/supervision/xispeak/controller/BgXiSpeakController.java +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/supervision/xispeak/controller/BgXiSpeakController.java @@ -470,6 +470,17 @@ public class BgXiSpeakController extends JeecgController counts = result.get(fb.getMainId()); if (counts != null) { counts.put("total", counts.get("total") + 1); - // 已完成兼容两种取值:CompletionStatus.FINISHED=1(监听器写入)与 feedback_status 字典的 3(表单提交) - if ("1".equals(fb.getCompletionStatus()) || "3".equals(fb.getCompletionStatus())) { + // feedback_status 字典:3=已完成(闭环) + if ("3".equals(fb.getCompletionStatus())) { counts.put("closed", counts.get("closed") + 1); } } diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/supervision/xispeak/controller/BgXiSpeakFeedbackController.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/supervision/xispeak/controller/BgXiSpeakFeedbackController.java index afc9f60..297d01e 100644 --- a/jeecg-module-supervision/src/main/java/org/jeecg/modules/supervision/xispeak/controller/BgXiSpeakFeedbackController.java +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/supervision/xispeak/controller/BgXiSpeakFeedbackController.java @@ -1,7 +1,9 @@ package org.jeecg.modules.supervision.xispeak.controller; import java.util.Arrays; +import java.util.HashSet; import java.util.List; +import java.util.Set; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; @@ -129,6 +131,7 @@ public class BgXiSpeakFeedbackController extends JeecgController add(@RequestBody BgXiSpeakFeedback bgXiSpeakFeedback) { bgXiSpeakFeedbackService.save(bgXiSpeakFeedback); + bgXiSpeakFeedbackService.syncFeedbackCounts(bgXiSpeakFeedback.getMainId()); return Result.OK("添加成功!"); } @@ -143,6 +146,7 @@ public class BgXiSpeakFeedbackController extends JeecgController edit(@RequestBody BgXiSpeakFeedback bgXiSpeakFeedback) { bgXiSpeakFeedbackService.updateById(bgXiSpeakFeedback); + bgXiSpeakFeedbackService.syncFeedbackCounts(bgXiSpeakFeedback.getMainId()); return Result.OK("编辑成功!"); } @@ -156,7 +160,11 @@ public class BgXiSpeakFeedbackController extends JeecgController delete(@RequestParam(name="id",required=true) String id) { + BgXiSpeakFeedback fb = bgXiSpeakFeedbackService.getById(id); bgXiSpeakFeedbackService.removeById(id); + if (fb != null) { + bgXiSpeakFeedbackService.syncFeedbackCounts(fb.getMainId()); + } return Result.OK("删除成功!"); } @@ -170,7 +178,18 @@ public class BgXiSpeakFeedbackController extends JeecgController deleteBatch(@RequestParam(name="ids",required=true) String ids) { - this.bgXiSpeakFeedbackService.removeByIds(Arrays.asList(ids.split(","))); + List idList = Arrays.asList(ids.split(",")); + List list = bgXiSpeakFeedbackService.listByIds(idList); + Set mainIds = new HashSet<>(); + for (BgXiSpeakFeedback fb : list) { + if (oConvertUtils.isNotEmpty(fb.getMainId())) { + mainIds.add(fb.getMainId()); + } + } + this.bgXiSpeakFeedbackService.removeByIds(idList); + for (String mainId : mainIds) { + bgXiSpeakFeedbackService.syncFeedbackCounts(mainId); + } return Result.OK("批量删除成功!"); } diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/supervision/xispeak/entity/BgXiSpeak.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/supervision/xispeak/entity/BgXiSpeak.java index 8e01b5f..59c866e 100644 --- a/jeecg-module-supervision/src/main/java/org/jeecg/modules/supervision/xispeak/entity/BgXiSpeak.java +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/supervision/xispeak/entity/BgXiSpeak.java @@ -125,7 +125,7 @@ public class BgXiSpeak implements Serializable { private java.lang.Integer numberOfResolutions; /**落实情况*/ @Excel(name = "落实情况", width = 15) - @ExcelColumn(name = "落实情况", width = 15) +// @ExcelColumn(name = "落实情况", width = 15) @Schema(description = "落实情况") private java.lang.String implStatus; /**落实条数*/ @@ -145,12 +145,12 @@ public class BgXiSpeak implements Serializable { private java.lang.String reportFeedbackStatus; /**是否存在完成风险(0不存在,1存在)*/ @Excel(name = "是否存在完成风险(请填入是/否)", width = 15, dicCode = "true_or_flase") - @ExcelColumn(name = "是否存在完成风险(请填入是/否)", width = 15, dicCode = "true_or_flase") +// @ExcelColumn(name = "是否存在完成风险(请填入是/否)", width = 15, dicCode = "true_or_flase") @Schema(description = "是否存在完成风险(0不存在,1存在)") private java.lang.Integer isCompletionRisk; /**拖期风险应对措施*/ @Excel(name = "拖期风险应对措施", width = 15) - @ExcelColumn(name = "拖期风险应对措施", width = 15) +// @ExcelColumn(name = "拖期风险应对措施", width = 15) @Schema(description = "拖期风险应对措施") private java.lang.String delayRiskMitigation; /**完成状态(0推进中,1已完成)*/ @@ -171,7 +171,7 @@ public class BgXiSpeak implements Serializable { private java.lang.Integer treeDepth; /**同级数据排序号*/ @Excel(name = "同级数据排序号", width = 15) - @ExcelColumn(name = "同级数据排序号", width = 15) +// @ExcelColumn(name = "同级数据排序号", width = 15) @Schema(description = "同级数据排序号") private java.lang.Integer sortOrder; /**逻辑删除flag(0保留,1删除)*/ diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/supervision/xispeak/service/IBgXiSpeakFeedbackService.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/supervision/xispeak/service/IBgXiSpeakFeedbackService.java index c4685d0..8081ff9 100644 --- a/jeecg-module-supervision/src/main/java/org/jeecg/modules/supervision/xispeak/service/IBgXiSpeakFeedbackService.java +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/supervision/xispeak/service/IBgXiSpeakFeedbackService.java @@ -18,4 +18,11 @@ public interface IBgXiSpeakFeedbackService extends IService { * @return 实体对象 */ BgXiSpeakFeedback getByIdForUpdate(String id); + + /** + * 重新统计指定主表下的反馈总条数与已闭环条数(completionStatus=3),同步回主表 implCount/closedCount + * + * @param mainId 主表ID + */ + void syncFeedbackCounts(String mainId); } \ No newline at end of file diff --git a/jeecg-module-supervision/src/main/java/org/jeecg/modules/supervision/xispeak/service/impl/BgXiSpeakFeedbackServiceImpl.java b/jeecg-module-supervision/src/main/java/org/jeecg/modules/supervision/xispeak/service/impl/BgXiSpeakFeedbackServiceImpl.java index c3178ab..1c0476e 100644 --- a/jeecg-module-supervision/src/main/java/org/jeecg/modules/supervision/xispeak/service/impl/BgXiSpeakFeedbackServiceImpl.java +++ b/jeecg-module-supervision/src/main/java/org/jeecg/modules/supervision/xispeak/service/impl/BgXiSpeakFeedbackServiceImpl.java @@ -1,10 +1,15 @@ package org.jeecg.modules.supervision.xispeak.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.supervision.xispeak.entity.BgXiSpeak; import org.jeecg.modules.supervision.xispeak.entity.BgXiSpeakFeedback; import org.jeecg.modules.supervision.xispeak.mapper.BgXiSpeakFeedbackMapper; +import org.jeecg.modules.supervision.xispeak.mapper.BgXiSpeakMapper; import org.jeecg.modules.supervision.xispeak.service.IBgXiSpeakFeedbackService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -17,10 +22,31 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @Service public class BgXiSpeakFeedbackServiceImpl extends ServiceImpl implements IBgXiSpeakFeedbackService { + @Autowired + private BgXiSpeakMapper bgXiSpeakMapper; + @Override public BgXiSpeakFeedback getByIdForUpdate(String id) { return this.getOne(new LambdaQueryWrapper() .eq(BgXiSpeakFeedback::getId, id) .last("for update")); } + + @Override + @Transactional(rollbackFor = Exception.class) + public void syncFeedbackCounts(String mainId) { + if (oConvertUtils.isEmpty(mainId)) { + return; + } + long total = this.count(new LambdaQueryWrapper() + .eq(BgXiSpeakFeedback::getMainId, mainId)); + long closed = this.count(new LambdaQueryWrapper() + .eq(BgXiSpeakFeedback::getMainId, mainId) + .eq(BgXiSpeakFeedback::getCompletionStatus, "3")); + BgXiSpeak update = new BgXiSpeak(); + update.setId(mainId); + update.setImplCount((int) total); + update.setClosedCount((int) closed); + bgXiSpeakMapper.updateById(update); + } } \ No newline at end of file