From 3056b4555f5fb14bb22d3ac65f88f86d38796aee Mon Sep 17 00:00:00 2001 From: fengyuan_yang <1976974459@qq.com> Date: Fri, 17 Jul 2026 17:23:37 +0800 Subject: [PATCH] =?UTF-8?q?2026-07-17=20=E5=BC=82=E5=B8=B8=E8=A7=84?= =?UTF-8?q?=E5=88=99=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ScheduleController.java | 24 ++++ .../mapper/ScheduleTodoMessageMapper.java | 9 ++ .../schedule/service/ScheduleService.java | 16 +++ .../service/impl/ScheduleServiceImpl.java | 74 +++++++++++++ .../schedule/ScheduleTodoMessageMapper.xml | 104 ++++++++++++++++++ 5 files changed, 227 insertions(+) diff --git a/src/main/java/com/gaotao/modules/schedule/controller/ScheduleController.java b/src/main/java/com/gaotao/modules/schedule/controller/ScheduleController.java index 878450b..ff0a8f9 100644 --- a/src/main/java/com/gaotao/modules/schedule/controller/ScheduleController.java +++ b/src/main/java/com/gaotao/modules/schedule/controller/ScheduleController.java @@ -1330,6 +1330,30 @@ public class ScheduleController extends AbstractController { .put("msg", getLanguageMsg(SysMsgConstant.OBJECT_ID_200000)); } + /** + * 功能代办中心:统计 + */ + @PostMapping(value = "getTodoCenterStats") + public R getTodoCenterStats(@RequestBody Map inData) { + Map resultMap = scheduleService.getTodoCenterStats(inData); + return R.ok() + .put("code", 200) + .put("msg", getLanguageMsg(SysMsgConstant.OBJECT_ID_200000)) + .put("resultMap", resultMap); + } + + /** + * 功能代办中心:分页查询 + */ + @PostMapping(value = "searchTodoCenterList") + public R searchTodoCenterList(@RequestBody Map inData) { + PageUtils page = scheduleService.searchTodoCenterList(inData); + return R.ok() + .put("code", 200) + .put("msg", getLanguageMsg(SysMsgConstant.OBJECT_ID_200000)) + .put("page", page); + } + /** * @Author LR * @Description 执行创建分卷的业务逻辑 diff --git a/src/main/java/com/gaotao/modules/schedule/mapper/ScheduleTodoMessageMapper.java b/src/main/java/com/gaotao/modules/schedule/mapper/ScheduleTodoMessageMapper.java index 473eb52..cafb617 100644 --- a/src/main/java/com/gaotao/modules/schedule/mapper/ScheduleTodoMessageMapper.java +++ b/src/main/java/com/gaotao/modules/schedule/mapper/ScheduleTodoMessageMapper.java @@ -4,6 +4,9 @@ import com.gaotao.modules.schedule.entity.ScheduleTodoMessageEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; +import java.util.Map; + @Mapper public interface ScheduleTodoMessageMapper { @@ -20,4 +23,10 @@ public interface ScheduleTodoMessageMapper { @Param("orderNo") String orderNo, @Param("seqNo") String seqNo, @Param("messageSourceLike") String messageSourceLike); + + List> searchTodoCenterList(@Param("query") Map query); + + Integer countTodoCenterList(@Param("query") Map query); + + Map getTodoCenterStats(@Param("query") Map query); } diff --git a/src/main/java/com/gaotao/modules/schedule/service/ScheduleService.java b/src/main/java/com/gaotao/modules/schedule/service/ScheduleService.java index a86de04..5f6ff56 100644 --- a/src/main/java/com/gaotao/modules/schedule/service/ScheduleService.java +++ b/src/main/java/com/gaotao/modules/schedule/service/ScheduleService.java @@ -779,6 +779,22 @@ public interface ScheduleService { */ void completeSplitRuleTodoOperation(SearchScheduleData inData); + /** + * 功能代办中心:查询统计信息 + * + * @param inData 查询条件(site/buNo/keyword等) + * @return 统计数据 + */ + Map getTodoCenterStats(Map inData); + + /** + * 功能代办中心:分页查询代办列表 + * + * @param inData 查询条件(page/limit/site/buNo/status等) + * @return 分页结果 + */ + PageUtils searchTodoCenterList(Map inData); + /** * @return void * @Author LR diff --git a/src/main/java/com/gaotao/modules/schedule/service/impl/ScheduleServiceImpl.java b/src/main/java/com/gaotao/modules/schedule/service/impl/ScheduleServiceImpl.java index da2d862..17a3abc 100644 --- a/src/main/java/com/gaotao/modules/schedule/service/impl/ScheduleServiceImpl.java +++ b/src/main/java/com/gaotao/modules/schedule/service/impl/ScheduleServiceImpl.java @@ -3714,6 +3714,80 @@ public class ScheduleServiceImpl implements ScheduleService { } } + @Override + public Map getTodoCenterStats(Map inData) { + Map query = buildTodoCenterQuery(inData, false); + Map dbStats = scheduleTodoMessageMapper.getTodoCenterStats(query); + Map result = new HashMap<>(); + result.put("totalCount", toDefaultInt(dbStats == null ? null : dbStats.get("totalCount"), 0)); + result.put("pendingAuditCount", toDefaultInt(dbStats == null ? null : dbStats.get("pendingAuditCount"), 0)); + result.put("pendingOperateCount", toDefaultInt(dbStats == null ? null : dbStats.get("pendingOperateCount"), 0)); + result.put("lockPendingCount", toDefaultInt(dbStats == null ? null : dbStats.get("lockPendingCount"), 0)); + result.put("pendingTotalCount", toDefaultInt(dbStats == null ? null : dbStats.get("pendingTotalCount"), 0)); + result.put("completedCount", toDefaultInt(dbStats == null ? null : dbStats.get("completedCount"), 0)); + return result; + } + + @Override + public PageUtils searchTodoCenterList(Map inData) { + Map query = buildTodoCenterQuery(inData, true); + int pageNo = toPositiveInt(inData == null ? null : inData.get("page"), 1); + int pageSize = toPositiveInt(inData == null ? null : inData.get("limit"), 15); + + Integer totalCount = scheduleTodoMessageMapper.countTodoCenterList(query); + List> list = new ArrayList<>(); + if (totalCount != null && totalCount > 0) { + list = scheduleTodoMessageMapper.searchTodoCenterList(query); + } + return new PageUtils(list, totalCount == null ? 0 : totalCount, pageSize, pageNo); + } + + private Map buildTodoCenterQuery(Map inData, boolean includePaging) { + Map query = new HashMap<>(); + query.put("site", trimToEmpty(inData == null ? null : inData.get("site"))); + query.put("buNo", trimToEmpty(inData == null ? null : inData.get("buNo"))); + query.put("infoCode", trimToEmpty(inData == null ? null : inData.get("infoCode"))); + query.put("orderNo", trimToEmpty(inData == null ? null : inData.get("orderNo"))); + query.put("seqNo", trimToEmpty(inData == null ? null : inData.get("seqNo"))); + query.put("responsibilityDept", trimToEmpty(inData == null ? null : inData.get("responsibilityDept"))); + query.put("keyword", trimToEmpty(inData == null ? null : inData.get("keyword"))); + query.put("forceType", trimToEmpty(inData == null ? null : inData.get("forceType"))); + query.put("todoStatus", trimToEmpty(inData == null ? null : inData.get("todoStatus"))); + query.put("status", trimToEmpty(inData == null ? null : inData.get("status"))); + + if (includePaging) { + int pageNo = toPositiveInt(inData == null ? null : inData.get("page"), 1); + int pageSize = toPositiveInt(inData == null ? null : inData.get("limit"), 15); + query.put("offset", (pageNo - 1) * pageSize); + query.put("limit", pageSize); + } + return query; + } + + private int toPositiveInt(Object value, int defaultValue) { + Integer parsed = toInteger(value); + if (parsed == null || parsed <= 0) { + return defaultValue; + } + return parsed; + } + + private int toDefaultInt(Object value, int defaultValue) { + Integer parsed = toInteger(value); + if (parsed == null) { + return defaultValue; + } + return parsed; + } + + private String trimToEmpty(Object value) { + if (value == null) { + return ""; + } + String text = String.valueOf(value).trim(); + return StringUtils.hasText(text) ? text : ""; + } + private List buildSplitRollMetricContexts(SearchScheduleData inData) { List contextList = new ArrayList<>(); List> rollRows = inData.getRollRows(); diff --git a/src/main/resources/mapper/schedule/ScheduleTodoMessageMapper.xml b/src/main/resources/mapper/schedule/ScheduleTodoMessageMapper.xml index b9f1b19..dc8efb0 100644 --- a/src/main/resources/mapper/schedule/ScheduleTodoMessageMapper.xml +++ b/src/main/resources/mapper/schedule/ScheduleTodoMessageMapper.xml @@ -76,4 +76,108 @@ ORDER BY created_time DESC, info_code DESC ) + + + + 1 = 1 + + AND stm.site = #{query.site} + + + AND stm.bu_no = #{query.buNo} + + + AND stm.info_code LIKE '%' + #{query.infoCode} + '%' + + + AND stm.order_no LIKE '%' + #{query.orderNo} + '%' + + + AND stm.seq_no LIKE '%' + #{query.seqNo} + '%' + + + AND stm.responsibility_dept = #{query.responsibilityDept} + + + AND ( + stm.info_code LIKE '%' + #{query.keyword} + '%' + OR stm.order_no LIKE '%' + #{query.keyword} + '%' + OR stm.seq_no LIKE '%' + #{query.keyword} + '%' + OR stm.message_source LIKE '%' + #{query.keyword} + '%' + OR sr.role_name LIKE '%' + #{query.keyword} + '%' + ) + + + + + AND stm.lock_flag = 'Y' + + + AND (stm.lock_flag IS NULL OR stm.lock_flag != 'Y') + + + + + + + AND stm.audit_flag = 'N' + AND stm.operate_flag = 'N' + + + AND stm.audit_flag = 'Y' + AND stm.operate_flag = 'N' + + + AND stm.audit_flag = 'Y' + AND stm.operate_flag = 'Y' + + + + + + + + + + +