# 服务监督模块,大屏展示-接口设计 > createTime 2024-11-21 ## 大屏尺寸 ![image-20241104094218224](img/image-20241104094218224.png) ## 效果图 ![微信图片_20241108231049](img/微信图片_20241108231049.png) ![微信图片_20241108231155](img/微信图片_20241108231155.png) ![微信图片_20241108231158](img/微信图片_20241108231158.png) ## 接口设计 ### 基础数据 #### (1)数据字典 (ok) - 接口地址:/system/dict/data/list?pageNum=&pageSize=&dictType= - 请求方式:GET - 请求参数: | 参数名 | 含义 | 类型 | 是否必填 | 备注 | | -------- | ---------- | ------ | -------- | ------- | | dictType | 字典类型 | 字符串 | 必填 | | | pageNum | 第几页 | int | | 默认1 | | pageSize | 一页记录数 | int | | 默认 ? | - 返回结果: | 中文名 | 字段名 | 类型 | 备注 | | ------------- | ------ | ------ | ------------------- | | 状态码 | code | int | 200:成功,其他:错误 | | 成功/错误消息 | msg | string | | | 总记录数 | total | int | | | 结果集 | rows | 数组 | | - rows 结果集 | 字段名 | 含义 | 类型 | 备注 | | --------- | ------ | ------ | ---- | | dictValue | 代码值 | 字符串 | | | dictLabel | 标题 | 字符串 | | | dictSort | 排序 | int | | #### (2)诉求来源列表(ok) - 接口地址:/supervision/appealSource/list?pageNum=1&pageSize=20&orderByColumn=createTime&isAsc=descending - 请求方式:GET - 请求参数: | 参数名 | 含义 | 类型 | 是否必填 | 备注 | | ------------- | ---------- | ------ | -------- | ------------------------- | | pageNum | 第几页 | int | 否 | | | pageSize | 一页几条 | int | 否 | | | orderByColumn | 排序字段名 | String | | | | isAsc | 是否升序 | String | | descending 降序,默认升序 | - 返回结果: | 中文名 | 字段名 | 类型 | 备注 | | ------------- | ------ | ------ | ------------------- | | 状态码 | code | int | 200:成功,其他:错误 | | 成功/错误消息 | msg | string | | | 总记录数 | total | int | | | 结果集 | rows | 数组 | | - rows 结果集 | 字段名 | 含义 | 类型 | 备注 | | ------------ | -------- | ------ | ---------------- | | id | id | Long | | | sourceName | 来源名称 | 字符串 | | | sourceRemark | 备注 | 字符串 | | | delFlag | 删除标记 | 字符串 | 0:没删,1:已删 | | createTime | 创建时间 | | | #### (3)诉求类型列表(ok) 调用数据字典接口,字典类型,传入: supervision_appeal_type ### 服务监督模块 #### (1)各诉求来源,某诉求类型一段时间内,诉求件数统计 (yes) ------(段) ![image-20241121163908061](img/image-20241121163908061.png) 参数:诉求类型字典号,开始日期,结束日期 结果:来源id,来源名称,诉求件数(int),占比(字符串,比如 25%) > 注意点:所有来源的占比,加起来 = 100% - 接口地址:/interface4ext/supervision/appealStatement/getAppealSourceCount - 请求方式:POST - 请求参数: | 参数名 | 含义 | 类型 | 是否必填 | 备注 | | ------------- | ---------- | ------ | -------- | ------------------------- | | appealType | 诉求类型 | int | 否 | | | startTime | 开始日期(时间格式为yyyy-MM-dd) | String | 是 | | | endTime | 结束日期(时间格式为yyyy-MM-dd) | String | 是 | | - 返回结果: | 中文名 | 字段名 | 类型 | 备注 | | ------------- | ------ | ------ | ------------------- | | 状态码 | code | int | 200:成功,其他:错误 | | 成功/错误消息 | msg | string | | | 结果集 | data | 对象 | | - rows 结果集 | 字段名 | 含义 | 类型 | 备注 | | ------------ | -------- | ------ | ---------------- | | id | id | Long | | | sourceName | 来源名称 | 字符串 | | | manageUnit | 主管单位 | 字符串 | | | sourceCount | 诉求总件数 | Long | | | createTime | 创建时间 | | | { "msg": "操作成功", "code": 200, "data": [ { "searchValue": null, "createBy": null, "createByUser": null, "createByNickName": null, "deptIdOfCreateBy": null, "deptNameOfCreateBy": null, "deptAncestorOfCreateBy": null, "deptAncestorsNamesOfCreateBy": null, "createTime": "2024-08-30 14:54:51", "updateBy": null, "updateTime": "2024-10-14 23:19:33", "remark": null, "ccedList": null, "sysAttachmentList": null, "params": {}, "id": 2, "delFlag": "0", "sourceName": "市12345", "bindExcelFlag": 1, "manageUnit": "南京市政府", "sourceLinkTel": "12345", "sourceRemark": null, "weManageDept": "江宁公交集团", "weManageDeptId": "100", "weManageUser": "汪晶晶", "weManageUserId": "571", "sourceCount": 2, "attachmentIds": null, "bindExcelFile": null }, ...... ] } #### (2)各诉求类型,一段时间内,诉求件数统计(yes)--(厉) ![image-20241121163714250](img/image-20241121163714250.png) 参数:开始日期,结束日期 结果:诉求类型字典代码,诉求类型名称,诉求件数,占比(字符串,比如:12%) 注意:所有占比加起来必须=100% - 接口地址:/interface4ext/supervision/appealStatement/getAppealTypeStatement - 请求方式:POST - 请求参数: | 参数名 | 含义 | 类型 | 是否必填 | 备注 | | --------- | -------- | ------ | -------- | -------------------- | | startDate | 开始日期 | String | 否 | 时间格式为yyyy-MM-dd | | endDate | 结束日期 | String | 否 | 时间格式为yyyy-MM-dd | - 返回结果: | 中文名 | 字段名 | 类型 | 备注 | | ------------- | ------ | ------ | ------------------- | | 状态码 | code | int | 200:成功,其他:错误 | | 成功/错误消息 | msg | string | | appealTypeName:诉求类型名称,appealType:诉求类型字典值,workorderNum:办理件数 ``` { "msg": "操作成功", "code": 200, "data": [ { "appealTypeName": "意见建议", "appealType": "1", "workorderNum": 6 }, { "appealTypeName": "表扬", "appealType": "2", "workorderNum": 1 }, { "appealTypeName": "求助", "appealType": "3", "workorderNum": 1 }, { "appealTypeName": "咨询", "appealType": "4", "workorderNum": 2 }, { "appealTypeName": "投诉举报", "appealType": "5", "workorderNum": 1 } ] } ``` #### (3)诉求对象按年龄段,统计一段时间内,诉求件数和占比(yes)--(李) ![image-20241121163934191](img/image-20241121163934191.png) 参数:开始日期,结束日期 结果:年龄区间(比如 30以内,30-40,40-50,50-60,60-70,70以上),诉求件数,占比 占比总和必须=100% - 修改为根据性别统计 (男,女,未知) - 接口地址:/interface4ext/supervision/appealStatement/getAppealSex - 请求方式:POST - 请求参数: | 参数名 | 含义 | 类型 | 是否必填 | 备注 | | ------- | -------------------- | ------ | -------- | ---- | | staTime | 开始时间(2024-10-01) | String | 是 | | | endTime | 结束时间(2024-11-30) | String | 是 | | - 返回结果: | 中文名 | 字段名 | 类型 | 备注 | | ------------- | ------ | ------ | ------------------- | | 状态码 | code | int | 200:成功,其他:错误 | | 成功/错误消息 | msg | string | | | 结果集 | data | 对象 | | ```json { "msg": "操作成功", "code": 200, "data": { "totalNum": 11, "finishedNum": null, "pendingNum": null, "execNum": null, "satisfaction": null, "satisfactionNum": null, "finishOnTime": null, "finishOnTimeNum": null, "averageProcessingTimeConsult": null, "averageProcessingTimeNoConsult": null, "type": null, "mom": null, "manNum": 10, "manPercentage": "90.91%", "girlNum": 1, "girlPercentage": "9.09%", "unknownNum": 0, "unknownPercentage": "0.0%" } } ``` ```java package com.legend.supervision.domain; import lombok.Data; /** * @author ls * @date 2024-11-27 10:31 * 诉求总览 */ @Data public class AppealAll { //总件数 private Integer totalNum; //已办 private Integer finishedNum; //待办 private Integer pendingNum; //执行分配中 private Integer execNum; //满意度 private String satisfaction; //满意数量 private Integer satisfactionNum; //按时办结率 private String finishOnTime; //按时办结数量 private Integer finishOnTimeNum; //平均处理时长咨询 private Integer averageProcessingTimeConsult; //平均处理时长非咨询 private Integer averageProcessingTimeNoConsult; //类型 null,0-总览,1-当月 private Integer type; //本月环比 private String mom; //男数量 private Integer manNum; //男占比 private String manPercentage; //女数量 private Integer girlNum; //女占比 private String girlPercentage; //未知数量 private Integer unknownNum; //未知占比 private String unknownPercentage; } ``` #### (4)诉求总览(一段时间内)(yes)--(李) ![image-20241121164214862](img/image-20241121164214862.png) ![image-20241121164243366](img/image-20241121164243366.png) ![image-20241121165338982](img/image-20241121165338982.png) 请求参数:开始日期,结束日期 结果:总件数,已办件数,待处理件数,执行分配中件数, 本月环比(小数,精度3)考虑一下环比的计算公式,是否会出现正负,若有,正负,前端怎么表现? 满意度(0-1的小时,精度3,比如0.985 最后显示的是98.5%),按时办结率(小时,精度3), 咨询类-平均处理时长-值(小数,精度3),咨询类-平均处理时长-单位(1:小时,2:分钟,3:工作日) 非咨询类-平均处理时长-值(小数,精度3),非咨询类-平均处理时长-单位(1:小时,2:分钟,3:工作日) - 接口地址:/interface4ext/supervision/appealStatement/getAppealAllCount - 请求方式:POST - 请求参数: | 参数名 | 含义 | 类型 | 是否必填 | 备注 | | ------- | ----------------------------- | ------ | -------- | -------------------- | | type | 类型(null,0 = 全部, 1 = 上月) | int | 否 | type=0,null 时间必填 | | staTime | 开始时间 | String | 否 | | | endTime | 结束时间 | String | 否 | | - 返回结果: | 中文名 | 字段名 | 类型 | 备注 | | ------------- | ------ | ------ | ------------------- | | 状态码 | code | int | 200:成功,其他:错误 | | 成功/错误消息 | msg | string | | | 结果集 | data | 对象 | | ```json { "msg": "操作成功", "code": 200, "data": { "totalNum": 11, "finishedNum": 4, "pendingNum": 5, "execNum": 2, "satisfaction": "50.0%", "satisfactionNum": 2, "finishOnTime": "100.0%", "finishOnTimeNum": 4, "averageProcessingTimeConsult": 0, "averageProcessingTimeNoConsult": 8, "type": null, "mom": null, "manNum": null, "manPercentage": null, "girlNum": null, "girlPercentage": null, "unknownNum": null, "unknownPercentage": null } } ``` ```java package com.legend.supervision.domain; import lombok.Data; /** * @author ls * @date 2024-11-27 10:31 * 诉求总览 */ @Data public class AppealAll { //总件数 private Integer totalNum; //已办 private Integer finishedNum; //待办 private Integer pendingNum; //执行分配中 private Integer execNum; //满意度 private String satisfaction; //满意数量 private Integer satisfactionNum; //按时办结率 private String finishOnTime; //按时办结数量 private Integer finishOnTimeNum; //平均处理时长咨询 private Integer averageProcessingTimeConsult; //平均处理时长非咨询 private Integer averageProcessingTimeNoConsult; //类型 null,0-总览,1-当月 private Integer type; //本月环比 private String mom; //男数量 private Integer manNum; //男占比 private String manPercentage; //女数量 private Integer girlNum; //女占比 private String girlPercentage; //未知数量 private Integer unknownNum; //未知占比 private String unknownPercentage; } ``` #### (5)诉求办理进展 (yes)--(纪) ![image-20241121165411597](img/image-20241121165411597.png) - 接口地址:/interface4ext/supervision/appealStatement/getAppealWorkorderStatus?pageNum=1&pageSize=8 - 请求方式:POST - 参数:params.startAppealTime 开始日期 格式 yyyy-MM-dd ​ params.endAppealTime 结束日期 格式 yyyy-MM-dd ```json { "params": { "startAppealTime": "2024-01-01", "endAppealTime": "2024-11-30" } } ``` - 返回值 | emergentFlagDictName | 是否紧急-名称 | 字符串 | | | | -------------------- | --------------------- | ------ | ------------------------------------------------------------ | ---- | | emergentFlag | 是否紧急-数据字典code | 字符串 | | | | appealTypeDictName | 诉求类型-字典名称 | | | | | appealType | 诉求类型-字典code | | | | | workorderNo | 工单编号 | | | | | serviceObject | 诉求对象(谁投诉的) | | | | | callTel | 来电号码 | | | | | statusDictName | 工单状态 name | 字符串 | | | | status | 工单状态 code | 字符串 | 0:待交办,1:待(下级)接收,2:(下级)已退回,3:待子公司办结,4:待集团办结,5:已退回(给外面),6:已办结 | | | | | | | | - 调用示例 ```javascript var axios = require('axios'); var data = JSON.stringify({ "params": { "startAppealTime": "2024-01-01", "endAppealTime": "2024-11-30" } }); var config = { method: 'post', url: 'http://192.168.2.16:8182/interface4ext/supervision/appealStatement/getAppealWorkorderStatus', headers: { 'User-Agent': 'Apifox/1.0.0 (https://apifox.com)', 'Content-Type': 'application/json', 'Accept': '*/*', 'Host': '192.168.2.16:8182', 'Connection': 'keep-alive' }, data : data }; axios(config) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); }); ``` ```json { "total": 1, "rows": [ { "createTime": "2024-10-16 17:36:44", "updateTime": "2024-11-07 16:25:37", "id": 1487, "delFlag": "0", "workorderNo": "GD20241016-0002", "sourceId": 9, "sourceName": "宁易行APP", "serviceObject": "孙杰", "serviceObjectSex": 0, "letterFlag": 0, "callTel": "13225210913", "callTime": "2024-10-24 16:23:49", "linkTel1": null, "linkTel2": null, "cardType": null, "cardNo": null, "appealPurpose": "ces11", "appealAddress": null, "appealContent": "拒绝更改d6,方便那些所谓居民,他们不上班换乘怎么了,也就多十几分钟,但是对上班人不一样,要早起半小时,换乘说不定动不动迟到,希望领导大公无私,而不是所谓的卖那边楼", "appealEmotional": null, "appealType": "2", "appealTypeDictName": "表扬", "serviceType": "0", "incidentTime": null, "receiveTime": null, "emergentFlag": 0, "emergentFlagDictName": "不紧急", "classificType": null, "classificTypeSubdivision": "5", "completedDeadlineTime": null, "returnDeadlineTime": null, "assignedDeadlineTime": "2024-10-24 16:24:33", "returnVisitFlag": 0, "status": "1", "statusDictName": "待接收", "organizerUnit": "集团行政综合部", "organizerUnitId": 275, "reviewFlag": 0, "appealFlow": null, "attachmentIds": null, "assistingRelationId": null, "assistingUnit": null, "assistingUnitIds": null, "handleFlag": null, "dealId": null, "dealType": null, "dealTime": null, "dealDept": null, "assistingRelationStatus": null, "appealReturnVisit": null, "appealDeal": null } ], "code": 200, "msg": "查询成功" } ``` #### (6)各单位,一段时间内,全部诉求类型 或者 单个诉求类型 办理诉求件数(yes)--(厉) ![image-20241121165537460](img/image-20241121165537460.png) 请求参数:开始日期,结束日期,诉求类型, 结果:部门id,部门名称,各个诉求类型分别数量 - 接口地址:/interface4ext/supervision/appealStatement/getAppealTypeDeptStatement - 请求方式:POST - 请求参数: | 参数名 | 含义 | 类型 | 是否必填 | 备注 | | -------------- | ------------------ | ------ | -------- | ------------------------------------------------------------ | | startDate | 开始日期 | String | 否 | 时间格式为yyyy-MM-dd | | endDate | 结束日期 | String | 否 | 时间格式为yyyy-MM-dd | | appealTypeDict | 诉求类型数据字典值 | String | 否 | 1:意见建议,2:表扬,3:求助,4:咨询,5:投诉举报,6:其他,7:文明服务,8:线路需求 | - 返回结果: | 中文名 | 字段名 | 类型 | 备注 | | ------------- | ------ | ------ | ------------------- | | 状态码 | code | int | 200:成功,其他:错误 | | 成功/错误消息 | msg | string | | deptName:单位名称,appealTypeName:诉求类型名称,appealType:诉求类型字典值,workorderNum:办理件数 ``` { "msg": "操作成功", "code": 200, "data": { "deptNameList": [ "东山公交服务质量部", "集团行政综合部", "集团党群工作部", "东山公交汽车八队", "集团审计内控部", "公共交通信息科技有限公司", "集团资产合规部" ], "appealTypeMap": { "意见建议": [ { "deptName": "东山公交服务质量部", "deptId": 230, "appealTypeName": "意见建议", "appealType": "1", "workorderNum": 2 }, { "deptName": "集团行政综合部", "deptId": 275, "appealTypeName": "意见建议", "appealType": "1", "workorderNum": 0 }, { "deptName": "集团党群工作部", "deptId": 278, "appealTypeName": "意见建议", "appealType": "1", "workorderNum": 0 }, { "deptName": "东山公交汽车八队", "deptId": 241, "appealTypeName": "意见建议", "appealType": "1", "workorderNum": 2 }, { "deptName": "集团审计内控部", "deptId": 284, "appealTypeName": "意见建议", "appealType": "1", "workorderNum": 0 }, { "deptName": "公共交通信息科技有限公司", "deptId": 101, "appealTypeName": "意见建议", "appealType": "1", "workorderNum": 0 }, { "deptName": "集团资产合规部", "deptId": 281, "appealTypeName": "意见建议", "appealType": "1", "workorderNum": 0 } ], "表扬": [ { "deptName": "东山公交服务质量部", "deptId": 230, "appealTypeName": "表扬", "appealType": "2", "workorderNum": 0 }, { "deptName": "集团行政综合部", "deptId": 275, "appealTypeName": "表扬", "appealType": "2", "workorderNum": 1 }, { "deptName": "集团党群工作部", "deptId": 278, "appealTypeName": "表扬", "appealType": "2", "workorderNum": 0 }, { "deptName": "东山公交汽车八队", "deptId": 241, "appealTypeName": "表扬", "appealType": "2", "workorderNum": 0 }, { "deptName": "集团审计内控部", "deptId": 284, "appealTypeName": "表扬", "appealType": "2", "workorderNum": 1 }, { "deptName": "公共交通信息科技有限公司", "deptId": 101, "appealTypeName": "表扬", "appealType": "2", "workorderNum": 1 }, { "deptName": "集团资产合规部", "deptId": 281, "appealTypeName": "表扬", "appealType": "2", "workorderNum": 0 } ], "求助": [ { "deptName": "东山公交服务质量部", "deptId": 230, "appealTypeName": "求助", "appealType": "3", "workorderNum": 1 }, { "deptName": "集团行政综合部", "deptId": 275, "appealTypeName": "求助", "appealType": "3", "workorderNum": 0 }, { "deptName": "集团党群工作部", "deptId": 278, "appealTypeName": "求助", "appealType": "3", "workorderNum": 0 }, { "deptName": "东山公交汽车八队", "deptId": 241, "appealTypeName": "求助", "appealType": "3", "workorderNum": 1 }, { "deptName": "集团审计内控部", "deptId": 284, "appealTypeName": "求助", "appealType": "3", "workorderNum": 0 }, { "deptName": "公共交通信息科技有限公司", "deptId": 101, "appealTypeName": "求助", "appealType": "3", "workorderNum": 0 }, { "deptName": "集团资产合规部", "deptId": 281, "appealTypeName": "求助", "appealType": "3", "workorderNum": 0 } ], "咨询": [ { "deptName": "东山公交服务质量部", "deptId": 230, "appealTypeName": "咨询", "appealType": "4", "workorderNum": 1 }, { "deptName": "集团行政综合部", "deptId": 275, "appealTypeName": "咨询", "appealType": "4", "workorderNum": 0 }, { "deptName": "集团党群工作部", "deptId": 278, "appealTypeName": "咨询", "appealType": "4", "workorderNum": 1 }, { "deptName": "东山公交汽车八队", "deptId": 241, "appealTypeName": "咨询", "appealType": "4", "workorderNum": 1 }, { "deptName": "集团审计内控部", "deptId": 284, "appealTypeName": "咨询", "appealType": "4", "workorderNum": 1 }, { "deptName": "公共交通信息科技有限公司", "deptId": 101, "appealTypeName": "咨询", "appealType": "4", "workorderNum": 0 }, { "deptName": "集团资产合规部", "deptId": 281, "appealTypeName": "咨询", "appealType": "4", "workorderNum": 1 } ], "投诉举报": [ { "deptName": "东山公交服务质量部", "deptId": 230, "appealTypeName": "投诉举报", "appealType": "5", "workorderNum": 0 }, { "deptName": "集团行政综合部", "deptId": 275, "appealTypeName": "投诉举报", "appealType": "5", "workorderNum": 0 }, { "deptName": "集团党群工作部", "deptId": 278, "appealTypeName": "投诉举报", "appealType": "5", "workorderNum": 0 }, { "deptName": "东山公交汽车八队", "deptId": 241, "appealTypeName": "投诉举报", "appealType": "5", "workorderNum": 0 }, { "deptName": "集团审计内控部", "deptId": 284, "appealTypeName": "投诉举报", "appealType": "5", "workorderNum": 0 }, { "deptName": "公共交通信息科技有限公司", "deptId": 101, "appealTypeName": "投诉举报", "appealType": "5", "workorderNum": 0 }, { "deptName": "集团资产合规部", "deptId": 281, "appealTypeName": "投诉举报", "appealType": "5", "workorderNum": 0 } ], "其他": [ { "deptName": "东山公交服务质量部", "deptId": 230, "appealTypeName": "其他", "appealType": "6", "workorderNum": 0 }, { "deptName": "集团行政综合部", "deptId": 275, "appealTypeName": "其他", "appealType": "6", "workorderNum": 0 }, { "deptName": "集团党群工作部", "deptId": 278, "appealTypeName": "其他", "appealType": "6", "workorderNum": 0 }, { "deptName": "东山公交汽车八队", "deptId": 241, "appealTypeName": "其他", "appealType": "6", "workorderNum": 0 }, { "deptName": "集团审计内控部", "deptId": 284, "appealTypeName": "其他", "appealType": "6", "workorderNum": 0 }, { "deptName": "公共交通信息科技有限公司", "deptId": 101, "appealTypeName": "其他", "appealType": "6", "workorderNum": 0 }, { "deptName": "集团资产合规部", "deptId": 281, "appealTypeName": "其他", "appealType": "6", "workorderNum": 0 } ] } } } ``` #### (7)各单位一段时间内,主办和协办诉求件数排名,根据总数排名(yes)--(厉) ![image-20241121165813972](img/image-20241121165813972.png) 请求参数:开始日期,结束日期,诉求类型,诉求来源 结果:部门id,部门名称,主办件数,协办件数,总件数 - 接口地址:/interface4ext/supervision/appealStatement/getAppealDeptStatement - 请求方式:POST - 请求参数: | 参数名 | 含义 | 类型 | 是否必填 | 备注 | | --------- | -------- | ------ | -------- | -------------------- | | startDate | 开始日期 | String | 否 | 时间格式为yyyy-MM-dd | | endDate | 结束日期 | String | 否 | 时间格式为yyyy-MM-dd | - 返回结果: | 中文名 | 字段名 | 类型 | 备注 | | ------------- | ------ | ------ | ------------------- | | 状态码 | code | int | 200:成功,其他:错误 | | 成功/错误消息 | msg | string | | deptName:单位名称,deptId:单位id,organizerNum:主办件数,assistingNum:协办件数,totalNum:主办协办总数 ``` { "msg": "操作成功", "code": 200, "data": [ { "deptName": "东山公交汽车八队", "deptId": 241, "organizerNum": 0, "assistingNum": 4, "totalNum": 4 }, { "deptName": "东山公交服务质量部", "deptId": 230, "organizerNum": 4, "assistingNum": 0, "totalNum": 4 }, { "deptName": "集团审计内控部", "deptId": 284, "organizerNum": 0, "assistingNum": 2, "totalNum": 2 }, { "deptName": "集团行政综合部", "deptId": 275, "organizerNum": 1, "assistingNum": 0, "totalNum": 1 }, { "deptName": "公共交通信息科技有限公司", "deptId": 101, "organizerNum": 0, "assistingNum": 1, "totalNum": 1 }, { "deptName": "集团党群工作部", "deptId": 278, "organizerNum": 1, "assistingNum": 0, "totalNum": 1 }, { "deptName": "集团资产合规部", "deptId": 281, "organizerNum": 0, "assistingNum": 1, "totalNum": 1 } ] } ``` #### (8)各责任单位一段时间内,涉及诉求件数排名 (yes)--(纪) ![image-20241121165913634](img/image-20241121165913634.png) - 接口地址:/interface4ext/supervision/appealStatement/getDutyDeptWorkorderRank - 请求方式:GET - 请求参数:startDate 开始日期 字符串 yyyy-MM-dd 默认7天前的日期 endDate 结束日期 字符串,yyyy-MM-dd 默认今天的日期 - 结果: dutyDeptId 责任单位部门id Long dutyDeptName 责任单位名称 字符串 workorderSize 涉及诉求工单数,int proportion 占比,(0-1 的小数)float 进度3 - axios 请求示例 比如:http://localhost:8182/interface4ext/supervision/appealStatement/getDutyDeptWorkorderRank?startDate=&endDate= ```javascript var axios = require('axios'); var config = { method: 'get', url: 'http://192.168.2.16:8182/interface4ext/supervision/appealStatement/getDutyDeptWorkorderRank?startDate=&endDate', headers: { 'User-Agent': 'Apifox/1.0.0 (https://apifox.com)', 'Accept': '*/*', 'Host': '192.168.2.16:8182', 'Connection': 'keep-alive' } }; axios(config) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); }); ``` 结果: ```bash { "msg": "操作成功", "code": 200, "data": [ { "startDate": null, "endDate": null, "dutyDeptId": 241, "dutyDeptName": "东山公交汽车八队", "workorderSize": 4, "proportion": 1.0 } ] } ``` #### (9)各责任线路,一段时间内,某诉求类型,涉及诉求件数排名(yes)--(段) ![image-20241121170045090](img/image-20241121170045090.png) 请求参数:开始日期,结束日期,诉求类型,诉求来源 结果:名次,线路code,线路名称,诉求件数 根据名次倒序 - 接口地址:/interface4ext/supervision/appealStatement/getAppealLineCount - 请求方式:POST - 请求参数: | 参数名 | 含义 | 类型 | 是否必填 | 备注 | | ------------- | ---------- | ------ | -------- | ------------------------- | | appealType | 诉求类型 | int | 否 | | | startTime | 开始日期(时间格式为yyyy-MM-dd) | String | 是 | | | endTime | 结束日期(时间格式为yyyy-MM-dd) | String | 是 | | - 返回结果: | 中文名 | 字段名 | 类型 | 备注 | | ------------- | ------ | ------ | ------------------- | | 状态码 | code | int | 200:成功,其他:错误 | | 成功/错误消息 | msg | string | | | 结果集 | data | 对象 | | - rows 结果集 | 字段名 | 含义 | 类型 | 备注 | | ------------ | -------- | ------ | ---------------- | | id | id | Long | | | extLineNames | 线路号 | 字符串 | | | extLineCodes | 线路编号 | 字符串 | | | dealCount | 数量 | Long | | | appealType | 诉求类型数据字典项 | 字符串 | | | appealTypeName | 诉求类型 | 字符串 | | { "msg": "操作成功", "code": 200, "data": [ { "searchValue": null, "createBy": null, "createByUser": null, "createByNickName": null, "deptIdOfCreateBy": null, "deptNameOfCreateBy": null, "deptAncestorOfCreateBy": null, "deptAncestorsNamesOfCreateBy": null, "createTime": null, "updateBy": null, "updateTime": null, "remark": null, "ccedList": null, "sysAttachmentList": null, "params": {}, "id": null, "delFlag": null, "workorderId": null, "dealDept": null, "dealDeptId": null, "dealDeptType": null, "dealDeptTypeList": null, "dealType": null, "dealTime": null, "dealContent": null, "flowId": null, "flowIdList": null, "assistingRelationId": null, "dutyFlag": null, "answerFlag": null, "evaluateFlag": null, "concernLineReamrk": null, "extLineCodes": "453", "extLineNames": "701", "dutyDeptIds": null, "dutyDeptNames": null, "beforeDistributeFlowId": null, "attachmentIds": null, "handleFlag": null, "workorderIds": "1000,1486", "dealCount": 2, "appealType": "1", "appealTypeName": "意见建议" }, ...... ] } ### 外勤检查模块 #### (1)检查任务总览(yes)--(李) ![image-20241121170511141](img/image-20241121170511141.png) 请求参数:开始日期,结束日期 结果:任务总数,未发布任务数,有检查单的任务数, 没有检查单的任务数,已关闭任务数,进行中的(已发布,未关闭)任务数 - 接口地址:/interface4ext/supervision/inspectionStatement/getInspectionTaskAll - 请求方式:POST - 请求参数: | 参数名 | 含义 | 类型 | 是否必填 | 备注 | | ------- | -------- | ------ | -------- | ---- | | staTime | 开始时间 | String | 否 | | | endTime | 结束时间 | String | 否 | | - 返回结果: | 中文名 | 字段名 | 类型 | 备注 | | ------------- | ------ | ------ | ------------------- | | 状态码 | code | int | 200:成功,其他:错误 | | 成功/错误消息 | msg | string | | | 结果集 | data | 对象 | | ``` { "msg": "操作成功", "code": 200, "data": { "totalTasks": 5, "taskWithRecords": 4, "taskWithoutRecords": 1, "taskClose": 1, "taskUnpublished": 0 } } public class InspectionTaskAll { /** 总任务数 **/ private Integer totalTasks; /** 有检查单任务数 **/ private Integer taskWithRecords; /** 没有检查单任务数 **/ private Integer taskWithoutRecords; /** 已关闭任务数 **/ private Integer taskClose; /** 未发布任务数 **/ private Integer taskUnpublished; } ``` #### (2)检查单总览(yes)--(李) ![image-20241121170521068](img/image-20241121170521068.png) 请求参数:开始日期,结束日期 结果:检查单位总数,已结束的检查单总数,有不合格的检查单数,整改中的检查单数量,已整改的检查单数量,已结束的检查单数量 - 接口地址:/interface4ext/supervision/inspectionStatement/getInspectionTaskRecordAll - 请求方式:POST - 请求参数: | 参数名 | 含义 | 类型 | 是否必填 | 备注 | | ------- | -------- | ------ | -------- | ---- | | staTime | 开始时间 | String | 否 | | | endTime | 结束时间 | String | 否 | | - 返回结果: | 中文名 | 字段名 | 类型 | 备注 | | ------------- | ------ | ------ | ------------------- | | 状态码 | code | int | 200:成功,其他:错误 | | 成功/错误消息 | msg | string | | | 结果集 | data | 对象 | | ``` { "msg": "操作成功", "code": 200, "data": { "totalTaskRecord": 13, "taskRecordSubstandard": 13, "taskRecordRectification": 2, "taskRecordRectified": 2, "taskRecordClose": 7 } } public class InspectionTaskRecordAll { /** 检查单总数 **/ private Integer totalTaskRecord; /** 不合格检查单 **/ private Integer taskRecordSubstandard; /** 整改中检查单 **/ private Integer taskRecordRectification; /** 已整改检查单 **/ private Integer taskRecordRectified; /** 已关闭检查单 **/ private Integer taskRecordClose; } ``` #### (3)各整改单位、一段时间内、主办和协办整改的数量排名(正序、倒序) (yes)--(纪) ![image-20241121170730172](img/image-20241121170730172.png) - 接口地址: /interface4ext/supervision/inspectionStatement/getProblemDeptDealRank - 请求方式: GET - 请求参数: ```bash startDate string 开始日期 yyyy-MM-dd endDate string 结束日期 yyyy-MM-dd isTop int 1:倒序(根据总数据量排名,取多的),0:升序(根据总数据量排名,取少的) size int 取多少,默认 20 ``` - 请求示例 axios ```javascript var axios = require('axios'); var config = { method: 'get', url: 'http://192.168.2.16:8182/interface4ext/supervision/inspectionStatement/getProblemDeptDealRank?startDate=2024-01-01&endDate=2024-12-31&isTop=1&size=10', headers: { 'User-Agent': 'Apifox/1.0.0 (https://apifox.com)', 'Accept': '*/*', 'Host': '192.168.2.16:8182', 'Connection': 'keep-alive' } }; axios(config) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); }); ``` - 返回结果: ```java package com.legend.supervision.domain.vo; import lombok.Data; import java.util.Date; /** * 外勤检查,问题整改部门排名vo * @author jixoahua * @createTime 2024-11-27 */ @Data public class ProblemDeptRankVo { /** * 整改部门name */ private String deptName; /** * 整改部门id */ private Long deptId; /** * 主办 整改的检查单数量 */ private Integer mainDealSize = 0; /** * 协办 整改的检查单数量 */ private Integer assistDealSize = 0; /** * 所有的数量 (主办数 + 协办数) */ private Integer totalDealSize = 0; /** * 开始日期 yyyy-MM-dd */ private String startDate; /** * 结束日期 yyyy-MM-dd */ private String endDate; } ``` - 结果示例 ```json { "msg": "操作成功", "code": 200, "data": [ { "deptName": "东山公交服务质量部", "deptId": 230, "mainDealSize": 8, "assistDealSize": 0, "totalDealSize": 8, "startDate": "2024-01-01", "endDate": "2024-12-31" }, { "deptName": "东山公交汽车八队", "deptId": 241, "mainDealSize": 0, "assistDealSize": 1, "totalDealSize": 1, "startDate": "2024-01-01", "endDate": "2024-12-31" } ] } ``` #### (4)被检查单位,一段时间内,检查任务和检查单数量汇总排名 (yes)--(纪) 设计图上:右侧,每日诉求汇总 (标题写错了) ![image-20241121170821784](img/image-20241121170821784.png) 请求参数:开始日期,结束日期,是否倒序(1:倒序,2:升序),排序字段标识(1:检查任务数量,2:检查单数量) - 接口地址: /interface4ext/supervision/inspectionStatement/getCheeckedDeptTaskRecordRank - 请求方式: GET - 请求参数 ```bash startDate 开始日期 yyyy-MM-dd endDate 结束日期 yyyy-MM-dd isTop 1:倒序(根据总数据量排名,取多的),0:升序(根据总数据量排名,取少的) size 取多少,默认 10 ``` - 结果 ```java //开始日期 yyyy-MM-dd String startDate; //结束日期 yyyy-MM-dd String endDate; //检查单位id Long checkedDeptId; //检查单位名称 String checkedDeptName; //检查任务数量 Integer taskSize; //检查单数量 Integer taskRecordSize; ``` - 请求示例 ```javascript var axios = require('axios'); var config = { method: 'get', url: 'http://192.168.2.16:8182/interface4ext/supervision/inspectionStatement/getCheeckedDeptTaskRecordRank?startDate=2024-01-01&endDate=2024-12-31&isTop=1&size=10', headers: { 'User-Agent': 'Apifox/1.0.0 (https://apifox.com)', 'Accept': '*/*', 'Host': '192.168.2.16:8182', 'Connection': 'keep-alive' } }; axios(config) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); }); ``` 返回结果 ```bash { "msg": "操作成功", "code": 200, "data": [ { "startDate": "2024-01-01", "endDate": "2024-12-31", "checkedDeptId": 100, "checkedDeptName": "江宁公交集团", "taskSize": 3, "taskRecordSize": 3, "totalSize": 6 }, { "startDate": "2024-01-01", "endDate": "2024-12-31", "checkedDeptId": 102, "checkedDeptName": "东山公交客运有限公司", "taskSize": 1, "taskRecordSize": 4, "totalSize": 5 } ] } ``` #### (5)被检查单位,一段时间内,合格率排名(yes)--(厉) ![image-20241121171016304](img/image-20241121171016304.png) 请求参数:开始日期,结束日期,是否倒序(1:倒序,2:升序) 结果: - 接口地址:/interface4ext/supervision/inspectionStatement/getInspectionDeptQualifiedRate - 请求方式:POST - 请求参数: | 参数名 | 含义 | 类型 | 是否必填 | 备注 | | --------- | -------- | ------ | -------- | -------------------- | | startDate | 开始日期 | String | 否 | 时间格式为yyyy-MM-dd | | endDate | 结束日期 | String | 否 | 时间格式为yyyy-MM-dd | - 返回结果: | 中文名 | 字段名 | 类型 | 备注 | | ------------- | ------ | ------ | ------------------- | | 状态码 | code | int | 200:成功,其他:错误 | | 成功/错误消息 | msg | string | | deptName:部门名称,qualifiedRate:合格率 ``` { "msg": "操作成功", "code": 200, "data": [ { "deptName": "dddd", "qualifiedRate": 1.0000 }, { "deptName": "测试", "qualifiedRate": 0.6667 }, { "deptName": "公交集团", "qualifiedRate": 0.0000 }, { "deptName": "江宁公交集团", "qualifiedRate": 0.0000 }, { "deptName": "东山公交五队", "qualifiedRate": 0.0000 }, { "deptName": "东山公交", "qualifiedRate": 0.0000 }, { "deptName": "佘山水库-公交场站-111", "qualifiedRate": 0.0000 } ] } ``` #### (6)各类型检查任务数量和占比(yes)--(段) ![image-20241121171057240](img/image-20241121171057240.png) - 接口地址:/interface4ext/supervision/inspectionStatement/getInspectionTaskCount - 请求方式:POST - 请求参数: 无 - 返回结果: | 中文名 | 字段名 | 类型 | 备注 | | ------------- | ------ | ------ | ------------------- | | 状态码 | code | int | 200:成功,其他:错误 | | 成功/错误消息 | msg | string | | | 结果集 | data | 对象 | | - rows 结果集 | 字段名 | 含义 | 类型 | 备注 | | ------------ | -------- | ------ | ---------------- | | taskCount | 各类型任务数量 | Long | | | taskFlagName | 计划类型名称 | 字符串 | | { "msg": "操作成功", "code": 200, "data": [ { "searchValue": null, "createBy": null, "createByUser": null, "createByNickName": null, "deptIdOfCreateBy": null, "deptNameOfCreateBy": null, "deptAncestorOfCreateBy": null, "deptAncestorsNamesOfCreateBy": null, "createTime": null, "updateBy": null, "updateTime": null, "remark": null, "ccedList": null, "sysAttachmentList": null, "params": {}, "id": null, "delFlag": null, "taskTitle": null, "taskContent": null, "taskStartTime": null, "taskEndTime": null, "taskFlag": "0", "publishFlag": null, "taskUserId": null, "taskUserName": null, "extDeptIds": null, "extDeptNames": null, "attachmentIds": null, "taskCount": 5, "taskId": "1001,1003,1004", "taskFlagName": "周计划" }, ...... ] } #### (7)外勤检查人员,一段时间内,在岗、不在岗数量统计(yes)--(纪) ![image-20241121171115762](img/image-20241121171115762.png) 是否在岗,不好做,很难做 改成其他的图形(比如:xxx),统计每日,外勤检查人员总数,和有检查单的人数。 ![image-20241202103737757](img/image-20241202103737757.png) 注意: 结果集里面,日期不要求连续,就统计检查单表里面的创建日期。 - 接口地址: /interface4ext/supervision/inspectionStatement/getCheckingUserSize - 请求方式: GET - 请求参数: ```bash startDate 开始日期 yyyy-MM-dd endDate 结束日期 yyyy-MM-dd ``` - 请求示例 ```javascript var axios = require('axios'); var config = { method: 'get', url: 'http://192.168.2.16:8182/interface4ext/supervision/inspectionStatement/getCheckingUserSize?startDate=2024-01-01&endDate=2024-12-31', headers: { 'User-Agent': 'Apifox/1.0.0 (https://apifox.com)', 'Accept': '*/*', 'Host': '192.168.2.16:8182', 'Connection': 'keep-alive' } }; axios(config) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); }); ``` - 结果: ```java /** * 外勤检查人员 vo 对象 */ @Data public class CheckUserSizeVo { /** * 检查日期 yyyy-MM-dd */ private String workDateStr; private Date workDate; /** * 当天检查人员用户数 */ private Integer workUserSize; /** * 外勤检查人员总数 */ private Integer totalSize; /** * 开始日期 yyyy-MM-dd */ private String startDate; /** * 结束日期 yyyy-MM-dd */ private String endDate; } ``` ```json { "msg": "操作成功", "code": 200, "data": [ { "startDate": "2024-01-01", "endDate": "2024-12-31", "workDateStr": "2024-10-16", "workDate": "2024-10-16T00:00:00.000+08:00", "workUserSize": 1, "totalSize": 7 }, { "startDate": "2024-01-01", "endDate": "2024-12-31", "workDateStr": "2024-10-28", "workDate": "2024-10-28T00:00:00.000+08:00", "workUserSize": 1, "totalSize": 7 }, { "startDate": "2024-01-01", "endDate": "2024-12-31", "workDateStr": "2024-10-29", "workDate": "2024-10-29T00:00:00.000+08:00", "workUserSize": 2, "totalSize": 8 } ] } ```