diff --git a/其他文件/河北-省平台-双控.docx b/其他文件/河北-省平台-双控.docx new file mode 100644 index 0000000..7a83fc8 --- /dev/null +++ b/其他文件/河北-省平台-双控.docx @@ -0,0 +1,1300 @@ + + + + + + + + + + + + + + + + + + + + + + +危险化学品生产经营企业双重预防机制数据交换规范 + + + + + + + + + + + + + + + + 中石化管理体系认证(青岛)有限公司 + + + 2024年4月 + + 修订记录 + + 日期 +版本 + 修订章节 + 修订内容 + 作者 +2022-04-26 +3.1 + +排版格式调整 +刘 +2022-04-27 +3.2 + +接口、错误代码优化 +刘 + +2022-05-13 + +3.3 + +去掉创建时间范围限制;支持批 次ID列表 + +刘 +2022-05-19 +3.5 + +提供加密工具 +刘 +2022-06-06 +3.6 + +对部分描述进行修订 +叶 +2022-06-14 +3.7 + +提供加解密示例,丰富加密内容 +刘 + +2023-05-30 + +4.0 + +增加包保责任履职及停工检修 内容 + +张 +2023-06-10 +4.1 + +增加任务开始时间 +张 + + + +2024-04-11 + + + +5.0 + +上报接口增加3.7、3.9专项检 + 查章节,查询接口增加4.3、4.4、 +4.5章节,删除查询最近调用结 果查询接口 + + + +徐 + + + + + + + + + + + + 目 录 + 一 、 概述 1 + 1.1 说明 1 + 1.2 预期读者 1 + 二 、 设计概述 1 + 2.1 处理流程 1 + 2.2 请求规则 3 + 2.2.1 请求频率限制 3 + 2.2.2 请求大小限制 3 + 2.2.3 token 校验规则 3 + 2.3 请求体规则 3 + 2.3.1 加密规则 3 + 2.3.2 参数校验规则 4 + 2.4 查看上报结果 4 + 三 、上 报 接 口 4 + 3.1 上报安全风险单元数据 4 + 3.2 上报安全风险事件数据 5 + 3.3 上报安全风险管控措施数据 6 + 3.4 上报隐患排查任务数据 8 + 3.5 上报隐患排查记录 9 + 3.6 上报隐患信息数据 10 + 3.7 上报专项检查隐患信息 12 + 3.8 上报停用/检修记录 14 + 3.9 上报检查情况记录 15 + 四 、 查询接口 16 + 4.1 按批次 id 查询处理结果 16 + 4.2 按错误 id 查询错误详细信息 17 + 4.3 查询专项检查任务信息 18 + 4.4 查询检查项信息 19 + + 4.5 查询检查项评分细则信息 20 + 五 、 返回值含义 21 + 六 、 数据字典 2 + 七 、 加解密示例与工具 25 + 八 、 常见问题指南 29 + + + +一 、 概述 +1.1 说明 + +本技术文档依据《危险化学品生产经营企业双重预防机制数字化建设数据交 换规范(2024年修订版》编制,企业需按照文档要求通过RESTful 接口规范上传 风险单元、风险事件、管控措施、隐患信息、隐患排查任务、隐患排查记录、停 工/检维修等数据。 +1.2 预期读者 + + 自建危险化学品双重预防机制数字化系统的政府、企业及其开发单位。 +二、 设计概述 + +为有效利用政府端资源,保障数据的规范性、有序性、完整性,政府端接收 服务分为数据接收与数据消费。数据接收主要负责提供接收数据的接口,并将通 过初步过滤的数据放置到消息队列中;数据消费主要负责消费放置在消息队列里 的数据,解析后进行二次逐条过滤。 +2.1 处理流程 + + 下面是处理流程的时序图: + + 数据接收 消息队列 数据消费 + + + 请求接口一 + + + 验证不通过. 请求失败 + + 过滤请求频率 请求大小、 数据权限 + 验证成功 放置到队列 + + + + 读取消息 - - + 解密,逐条做数据验证 + 某记录验证不通过 + 记录错误日志 + +当收到接口请求后,数据接收先对请求的频率、请求的大小、数据权限进行 验证,验证不通过的请求直接请求失败,不进一步解析请求体内的数据。当上 + +述验证都通过之后,将会返回一个用于查询消费进度的批次 id, 同时将请求内容 放置到消息队列中,由订阅了消息队列的数据消费程序对内容进行解密并逐条做 数据验证。 + 数据消费程序先解密请求体,解密失败等同于请求失败,不进一步解析数据。 解密成功进行逐条数据验证时,某条验证通过将会保存,某条验证失败将会记录 到错误日志中,不会影响验证成功的记录正常保存,仅仅是验证失败的那 一 条会 失败。通过使用查询相关接口,可以查询到批次处理结果。用流程图的方式表达 见下图: + 开始 + + 数据接收服务 收到接口请求 + + 请求预率验证 是否通过 + Y + 请求大小验证 是否通过 + Y + token 验证 是否通过 + Y + 返回批次id 进入消息队列 + + +数据消费获取数据 + + 解密 + 是否通过 + Y + + 数组是否 还有记录 + N + Y + 重 + 保存该条数据 向该批次记录错误 + + + 结束 +某 条 校 验 +是 否 通 过 +返回失败信息 + -- N< +N +-N + +2.2 请求规则 + +2.2.1 请求频率限制 + +对于上报接口的请求频率上,一个 token 在限定时间内请求次数过多将会返 回 HTTP 状态码403。 +2.2.2请求大小限制 + +对于上报接口,请求的大小要在15M 以内,超过将会返回HTTP 状态码413。 + +2.2.3 token 校验规则 + +token是一串长度为10的字符串,这个认证信息约束了可以上报的数据权限 范围。新申请接入的企业可向属地应急管理部门业务负责人申请,已申请过的企 业沿用之前的 token。 +接口的定义中,会看到HTTP Header中需要传Authorization作为身份认证 信息。将长度为10的token与当前时间(格式yyyyMMddHHmmssSSS, 时 区 东 八区)拼接得来的。例如,认证信息是A5ewTio3NX, 当前时间是2022-04-24 15:00:35.407,那么拼接后的 token 是 A5ewTio3NX20220424150035407 。这个结 果作为HTTP Header 中的Authorization 的值。 +无法正常解析 token 的,返回HTTP 状态码400;经解析发现 token 无效的, 返回HTTP 状态码401;经解析发现时间戳在当前时间之前1小时外的,返回 HTTP 状态码425。 +2 .3请求体规则 + +2.3.1 加 密 规 则 + + 请求体采用AES 加密方式,AES 加密需申请Key 和 IV, 新申请接入的企业 可向属地应急管理部门业务负责人申请,已申请过的企业沿用之前的Key 和 IV。 请求时,先用AES 加密,再用Base64 对请求体的data 内容进行加密(加密Java 示例代码见第七节),最终效果为{"data":"加密字符串"}。对于无法正常解密的, 记录错误日志。 + +2.3.2参数校验规则 + +以下规则在参数校验时不通过,将会记录到错误记录中,可通过查询接口查 看错误记录: + 必填项为空时; + 字典项不符合字典枚举时; + 日期、时间不符合格式时; + 字符超长时; +id 不 符 合uuid 正 则 (xxxxxXXx-XXXX-XXXX-XXXX-XXXXXXXXXXXX 或32位字符 串 ) 时 ; + companyCode 不 在token 限定的数据范围之内。 + +2.4查看上报结果 + +第三章的上报接口中,返回结果里有批次 id,通 过 该 id 调用第四章的查询 接口,可查询到当前批次 id 的处理结果。 +三 、 上报接口 + +注意://xxx 表示对该字段的说明解释性文字,实际发送数据时不能加这些 内容。 +3.1 上报安全风险单元数据 + +接口路径 +/v2/data/receive/receiveUnitList +请求方式 +POST +请求头 +Content-Type:application/json;charset=utf8 Authorization:A5ewTio3NX20220424150035407 +明文格式举例 与解释 +{ + +"data":[{ +"id":"bfcc9012-3ele-440f-9e6c-e9d6b5cc5e9b",//唯一编码,36位 uuid,必填 + "companyCode":"440000000",//企业编码,同"危险化学品登记综 + + + + + } +合服务系统"中的企业编码一致,必填"hazardCode":"440000000008",/I风险分析对象编码,同"危险化学 + 品登记综合服务系统"中的危险源编码一致,必填 + "riskUnitName":"反应器",//风险分析单元名称,必填 + "hazardDep":"分离加氢部",//责任部门,必填 + "hazardLiablePerson":"李小强",//责任部门负责人姓名,必填 "deleted":"0",//删除状态,字典含义见数据字典deleted,必填 +"createDate":"2020-11-2811:44:58",//创建时间,必填,时间格式 yyyy-MM-dd HH:mm:ss + "createBy":"某化工企业管理员",//创建人姓名,必填 + "updateDate":"2020-11-2811:44:58",/I修改时间,用于增量同步,必 填,时间格式yyyy-MM-dd HH:mm:ss + "updateBy":"王红"/1修改人姓名,必填 }] +返回格式举例 与解释 +t f +{ +t f + + "obj":{ +"batchld":"efdff4eb449f4aOc9f96adlcd97cd0e9"//新增/修改的批次 id +3.2 上报安全风险事件数据 + +接口路径 +/v2/data/receive/receiveEventList +请求方式 +POST +请求头 +Content-Type:application/json;charset=utf8 Authorization:A5ewTio3NX20220424150035407 +明文格式举例 与解释 +{ +"data":[{ + + + + +} +"id":"bfcc9012-3ele-440f-9e6c-e9d6b5cc5e9b",//唯一编码,36位 uuid,必填"companyCode":"440000000",//企业编码,同"危险化学品登记综 合服务系统"中的企业编码一致,必填 +"riskUnitId":"6a183cdd-d1de-a733-7c13-dfd2c26db26d",/I风险分析 单元ID,必填 + "riskEventName":"储罐泄漏造成火灾爆炸",//风险事件名称,必填 "deleted":"0",//删除状态,字典含义见数据字典deleted,必填 +"createDate":"2020-11-2811:44:58",//创建时间,必填,时间格式 yyyy-MM-dd HH:mm:ss + "createBy":"某化工企业管理员",//创建人姓名,必填 +"updateDate":"2020-11-2811:44:58",/I修改时间,用于增量同步,必 填,时间格式yyyy-MM-dd HH:mm:ss + "updateBy":"王红"//修改人姓名,必填 3] +返回格式举例 与解释 +{ +t +t f + + "obj":{ +"batchld":"efdff4eb449f4aOc9f96ad1cd97cd0e9"//新增/修改的批次 id + 3.3 上报安全风险管控措施数据 + +接口路径 +/v2/data/receive/receiveControlMeasuresList +请求方式 +POST +请求头 +Content-Type:application/json;charset=utf8 Authorization:A5ewTio3NX20220424150035407 +明文格式举例 + + + + + + + + + + + + + + + + + + + + + + + + + + + { + + + +与解释 + } +"data":[{"id":"bfcc9012-3ele-440f-9e6c-e9d6b5cc5e9b",//唯一编码,36位 uuid,必填 +"companyCode":"440000000",//企业编码,同"危险化学品登记综 合服务系统"中的企业编码一致,必填 +"riskEventId":"41505423-5dcI-d0f9-c2a9-9d95507e392c",//风险事件 ID,必填 + "dataSrc":"2",//管控方式,字典含义见数据字典dataSrc +"riskMeasureDesc":"定期进行设备检修、报检",//管控措施描述,必 填 +"troubleshootContent":"1、静设备是否定期检修、报检。",J//隐患排 查内容,必填 +"classify1":"2",//管控措施分类1,必填,字典含义见数据字典 classify1 +"classify2":"2-2",//管控措施分类2,必填,字典含义见数据字典 classify2 + "classify3":"环保设施",//管控措施分类3 + "deleted":"0",/1删除状态,字典含义见数据字典deleted,必填 +"createDate":"2020-11-2811:44:58",//创建时间,必填,时间格式 yyyy-MM-dd HH:mm:ss + "createBy":"某化工企业管理员",//创建人姓名,必填 +"updateDate":"2020-11-2811:44:58",//修改时间,用于增量同步,必 填,时间格式yyyy-MM-dd HH:mm:ss + "updateBy":"王红"//修改人姓名,必填 }] +返回格式举例 与解释 +{ + +"obj":{ +"batchld":"efdff4eb449f4aOc9f96ad1cd97cd0e9"//新增/修改的批次 + + + + +{ +} +id3.4上报隐患排查任务数据 + +接口路径 +/v2/data/receive/receiveMeasuresTaskList +请求方式 +POST +请求头 +Content-Type:application/json;charset-utf8 Authorization:A5ewTio3NX20220424150035407 +明文格式举例 与解释 +{ + + "data":[{ +"id":"bfcc9012-3ele-440f-9e6c-e9d6b5cc5e9b",//唯一编码,36位 uuid,必填 +"companyCode":"440000000",/I企业编码,同"危险化学品登记综 合服务系统"中的企业编码一致,必填 +"riskMeasureld":"3bcf96f3-9a80-0de0-b56b-9563a693455a",//管控措 施ID,必填 +"troubleshootContent":"储罐泄漏造成火灾爆炸",//隐患排查内容, 必填 + "checkCycle":4,//巡检周期,必填,大于0的正整数 +"checkCycleUnit":"小时",//巡检周期单位,必填,字典含义见数据 字典checkCycleUnit +"taskStartTime":"2020-11-2811:44:58",J/任务开始时间,指该任务首 次开始执行的时间,必填,时间格式yyyy-MM-dd HH:mm:ss +"workStartTime":"8:00:00",/I工作开始时间,指每日该任务开始执行 的时间,当巡检周期是小时的时候为必填,时间格式例如:8:00:00 +"workEndTime":"8:00:00",J/工作结束时间,指每日该任务结束执行 的时间,当巡检周期是小时的时候为必填,时间格式例如:8:00:00 + "workDayType":"0",//工作日类型(每天:0;法定工作日(我国 + + + + + { +职工的标准工作日,即国家机关、事业单位实行的统一工作时间):1; 非法定工作日(法定节假日及非调休周末,即除法定工作日外的时间):2) + "workType":"0",/1任务类型(日常任务:0;主要负责人任务:1; 技术负责人任务:2;操作负责人任务:3;)默认为日常任务:0,必填 +"taskNum":"1"//包保任务对应项,当任务类型为主要负责人任务、 技术负责人任务、操作负责人任务时,此项为必填。 + "deleted":"0",//删除状态,字典含义见数据字典deleted,必填 +"createDate":"2020-11-2811:44:58",//创建时间,必填,时间格式 yyyy-MM-dd HH:mm:ss + "createBy":"某化工企业管理员",//创建人姓名,必填 +"updateDate":"2020-11-2811:44:58"JI修改时间,用于增量同步,必 填,时间格式yyyy-MM-dd HH:mm:ss + "updateBy":"王红",JI修改人姓名,必填 3] +返回格式举例 与解释 +{ +{ +} + + "obj":{ +"batchld":"efdff4eb449f4aOc9f96ad1cd97cd0e9"//新增/修改的批次 id +3.5上报隐患排查记录 + +接口路径 +/v2/data/receive/receiveMeasuresTaskRecordList +请求方式 +POST +请求头 +Content-Type:application/json;charset=utf8 Authorization:A5ewTio3NX20220424150035407 +明文格式举例 + + + + + + + + + + + + + + + + + + + + + + + + + + + { + + + +与解释 + t } +"data":[{"id":"bfcc9012-3ele-440f-9e6c-e9d6b5cc5e9b",//唯一编码,36位 uuid,必填 +"companyCode";"440000000",J/1企业编码,同"危险化学品登记综 合服务系统"中的企业编码一致,必填 +"checkTaskId":"4bae2b00-9e5e-3fea-7722-3c66917a8c82",//隐患排 查任务ID,必填 +"checkTime":"2020-11-2010:13:35",//排查时间,必填,时间格式 yyyy-MM-dd HH:mm:ss + "mobileMe":"868993065120435",//手机识别码IMEI,必填,说明: +对于版本过高、技术架构老等无法自动获取IMEI码的情况,可采取人 工查询、手动绑定本机IMEI码的方式,且务必保证IMEI码的真实性。 +"isDefend":"1"//是否包保责任人任务标识(是:1;否:0),必 填 + "createBy":"某化工企业管理员",J/创建人姓名,必填 + "createByMobile":"13512341234",//创建人手机号,必填 ] +返回格式举例 与解释 +} +{"obj":{ +"batchld":"efdff4eb449f4aOc9f96adlcd97cd0e9"//新增/修改的批次 id +3.6上报隐患信息数据 + +接口路径 +/v2/data/receive/receiveDangerlnvestigationList +请求方式 +POST +请求头 +Content-Type:application/json;charset=utf8 + + + + +Authorization:A5ewTio3NX20220424150035407 +明文格式举例 与解释 +{ + "data":[{ +"id":"bfcc9012-3e1e-440f-9e6c-e9d6b5cc5e9b",//唯一编码,36位 uuid,必填 +"companyCode":"440000000"",//企业编码,同"危险化学品登记综 合服务系统"中的企业编码一致,必填 +"hazardCode":"440000000008",//危险源编码,同"危险化学品登记 综合服务系统"中的危险源编码一致,必填 +"riskMeasureld":"3bcf96f3-9a80-0de0-b56b-9563a693455a",//管控措 施ID +"checkRecordld":"516d8193-2e3-55e6-4b48-afce5da37677",//隐患 排查记录ID + "dangerName":"液位计红线模糊",//隐患名称,必填 +"dangerLevel":"0"",/1隐患等级,字典含义见数据字典dangerLevel, 必填 + "dangerSrc":"1",//隐患来源,字典含义见数据字典dangerSrc,必填 +"dangerManageType":"1",//隐患治理类型,字典含义见数据字典 dangerManageType,必填 + "dangerDesc":"液位计红线模糊",//隐患描述,必填 + "dangerReason":"油漆老化",//隐患产生原因 + "controlMeasures":"控制措施",//控制措施 + "cost":"10",//资金,单位::万元 +"dangerManageDeadline":"2020-09-1500:00:00",//隐患治理期限,必 填,时间格式yyyy-MM-dd HH:mm:ss +"dangerState":"1",//隐患状态,必填,字典含义见数据字典 dangerState +"hazardDangerType":"1",//隐患类型,必填,字典含义见数据字典 hazardDangerType + + + + + 双重预防机制接口技术文档 + + +{ +"hazardCategory":0/1隐患类别(其他隐患:0主要负责人隐患:1 技术负责人隐患:2操作负责人隐患:3)默认为其他隐患:0,必填 "registrant":"张三",//登记人姓名,必填 +"registTime":"2020-08-2700:00:00",/I登记时间,必填,时间格式 yyyy-MM-dd HH:mm:ss + "liablePerson":"李小强",//整改责任人姓名,必填 +"checkAcceptPerson":"李小强",J/1验收人,该项只在隐患状态为已验 收时必填 + "checkAcceptComment":"验收情况",//验收情况 +"checkAcceptTime":"2020-11-2710:29:31",//验收时间,该项只在隐 患状态为已验收时必填,时间格式yyyy-MM-dd HH:mm:ss + "deleted":"0",J/1删除状态,字典含义见数据字典deleted,必填 +"createDate":"2020-11-2811:44:58",//创建时间,必填,时间格式 yyyy-MM-dd HH:mm:ss + "createBy":"某化工企业管理员",/I创建人姓名,必填 +"updateDate":"2020-11-2811:44:58",//修改时间,用于增量同步,必 填,时间格式yyy-MM-dd HH:mm:ss + "updateBy":"王红"//修改人姓名,必填 }] +返回格式举例 与解释 +t +{ +} + + "obj":{ +"batchld":"efdff4eb449f4aOc9f96ad1cd97cd0e9"//新增/修改的批次 id +3.7上报专项检查隐患信息 + +接口路径 +/v2/data/receive/receiveCheckDangerList + + + +请求方式 + POST +请求头 + Content-Type:application/json;charset=utf8 Authorization:A5ewTio3NX20220424150035407 +明文格式举例 与解释 +{ +"data":[{ +"id":"4e403ba4-53bd-4d6c-9d57-83bb01bdddd",//唯一编码,36位uuid, 必填 + "companyCode":"220180301",/1企业编码,同"危险化学品登记综合服 务系统"中的企业编码一致,必填 +"dangerld":"4e403ba4-53bd-4d6c-9d57-f83bb01bdddd",//隐患主键,必 填 +"taskId":"bfcc9012-3ele-440f-9e6c-e9d6b5cc5e9b",//检查任务主键 ID,章节4.3查询的检查任务ID,必填 +"checkType":"1",/检查类型(企业自查:1;市级及以下检查:2;省 级检查:3;部级检查:4),必填 +"checkItemld":"da4612c8-0e73-4839-a0fb-bff79c23f29b",//检查项主键 ID,章节4.4查询的检查项ID,必填 +"checkScoreld":"be942b6d-aff7-46d3-b3ce-ed6d13dfa044",//检查项评 分细则主键ID,章节4.5查询的评分细则ID,必填 + "checkDate":"2023-05-15",//检查时间,yyyy-MM-dd,必填 "checkPay":"2000",//罚款金额,单位:元 + "harmType":"1",/1危害类型,事故隐患:1;火灾隐患:2;当任务类 + 型为"危险化学品重大危险源企业安全专项检查督导"时此项为必填项 "deleted":"0",//删除状态,字典含义见数据字典deleted,必填 + "createBy":"sys",//创建人,必填 + "createDate":"2023-05-1515:00:00",/1创建时间,必填 + "updateBy":"sys",//最后修改人,必填 + "updateDate":"2023-05-1515:05:00"//最后修改时间,必填 + }] + + + + +} +返回格式举例 与解释 +} +} +{ "obj":{ +"batchld":"efdff4eb449f4a0c9f96ad1cd97cd0e9"//新增/修改的批次 id +3.8上报停用/检修记录 + +接口路径 +/v2/data/receive/receiveUnitStopList +请求方式 +POST +请求头 +Content-Type:application/json;charset=utf8 Authorization:A5ewTio3NX20220424150035407 +明文格式举例 与解释 +{ + +"data":[{ +"id":"4e403ba4-53bd-4d6c-9d57-f83bb01bdddd",//唯一编码,36位uuid, 必填 +"companyCode":"220180301",/1企业编码,同"危险化学品登记综合服 务系统"中的企业编码一致,必填 +"hazardCode":"220180301001",I风险分析对象编码,同"危险化学品 登记综合服务系统"中的危险源编码一致,必填 +"riskUnitId":"4e403ba4-53bd-4d6c-9d57-f83bb0lpnddd",/I所属风险单 元ID,必填 +"stopStartTime":"2023-05-1510:35:00",//装置停用或者检维修开始时 间,必填 + "stopEndTime":"2023-05-1510:35:00",//装置停用或者检维修结束时间 "stopReason":"停工检修",//描述停用原因,必填 + "createBy":"sys",//创建人,必填 + "createDate":"2023-05-1515:00:00",//创建时间,必填 + + + + +{ +"updateBy":"sys",//最后修改人,必填"updateDate":"2023-05-1515:05:00"//最后修改时间,必填 }] +返回格式举例 与解释 +} +} +{ "obj":{ +"batchld":"efdff4eb449f4aOc9f96ad1cd97cd0e9"//新增/修改的批次 id +3.9 上报检查情况记录 + +接口路径 +/v2/data/receive/receiveCheckRecordList +请求方式 +POST +请求头 +Content-Type:application/json;charset=utf8 Authorization:A5ewTio3NX20220424150035407 +明文格式举例 与解释 +{ +"data":[{ +"id":"4e403ba4-53bd-4d6c-9d57-83bb01bdddd",//唯一编码,36位uuid, 必填 +"companyCode":"220180301",//企业编码,同"危险化学品登记综合服 务系统"中的企业编码一致,必填 +"hazardCode":"220180301001",/1危险化学品登记综合服务系统中的 危险源编码;当任务类型为"危险化学品重大危险源企业安全专项检查 督导"时此项为必填项 +"taskId":"bfcc9012-3ele-440f-9e6c-e9d6b5cc5e9b",//检查任务主键 ID,章节4.3查询的检查任务ID,必填 +"checkType":"1",/检查类型(企业自查:1;市级及以下检查:2;省 级检查:3;部级检查:4),必填 + + + + + { +"checkDate":"2023-05-15",//检查日期,yyyy-MM-dd,必填 "resultStatus":"0",//是否停产整顿,正常:0,停产整顿:1 "createBy":"sys",//创建人,必填 + "createDate":"2023-05-1515:00:00",//创建时间,必填 + "updateBy":"sys",//最后修改人,必填 + "updateDate":"2023-05-1515:05:00"//最后修改时间,必填 }] +返回格式举例 与解释 +t f +} +{ "obj":{ +"batchld":"efdff4eb449f4aOc9f96ad1cd97cd0e9"//新增/修改的批次 id +四 、 查询接口 + + 注意://xxx 表示对该字段的说明解释性文字,实际发送数据时不能加这些 内 容 。 +4.1 按批次 id查询处理结果 + +接口路径 +/v2/data/receive/getLog +请求方式 +POST +请求头 +Content-Type:application/json;charset=utf8 Authorization:A5ewTio3NX20220424150035407 +报文格式举例 与解释 +{ +"batchld":["efdff4eb449f4a0c9f96ad1cd97cd0e9"]//批次ID列表,必填 } +返回格式举例 与解释 +{ + +"obj":[{ + + + + + } +"batchld":"efdff4eb449f4aOc9f96ad1cd97cd0e9",//批次ID "status":"1",//批次处理状态,字典含义见数据字典batchStatus "statistics":{11统计情况,若批次在处理中,数值会不断递增 + "totalCount":100,/1批次总条数,和data数组大小一致 "errorCount":10//该批次错误条数 + }, + "errorlds":[ + "bfcc9012-3e1e-440f-9e6c-e9d6b5cc5e9b", + "bfcc9012-3ele-440f-9e6c-e9d6b5cc5e9c" ]/1有错误的ID列表 + }] +4.2按错误 id 查询错误详细信息 + +接口路径 +/v2/data/receive/getRequestLog +请求方式 +POST +请求头 +Content-Type:application/json;charset=utf8 Authorization:A5ewTio3NX20220424150035407 +报文格式举例 与解释 +{ +} + + "errorlds":[ + "bfcc9012-3ele-440f-9e6c-e9d6b5cc5e9b", + "bfcc9012-3ele-440f-9e6c-e9d6b5cc5e9c" ]//有错误的ID列表 +返回格式举例 与解释 +{ + + "obj":[{ + "id":"bfcc9012-3ele-440f-9e6c-e9d6b5cc5e9b",//有错误的ID "batchld":"efdff4eb449f4a0c9f96ad1cd97cd0e9",/1所属批次ID "companyCode":"440000000",/I有错误的企业编码 + + + + + t f +"requestType":"1¹",/I请求类型,字典含义见数据字典requestType "receiveData":"xxx",//接收的内容 "failReason":"xxx不能为空"//失败原因,多个原因用换行符隔开 "resultTime":"2020-11-2811:44:58",//接收结果产生时间,时间格式 + yyyy-MM-dd HH:mm:ss }] +4.3 查询专项检查任务信息 + +接口路径 + /v2/data/receive/getCheckTask +请求方式 + POST +请求头 + Content-Type:application/json;charset=utf8 Authorization:A5ewTio3NX20220424150035407 +报文格式举例 与解释 +{ +f + + "companyCodes":[ "220180301", + "220180302" + ]/l企业编码列表,必填,每次最多查询10家企业 +返回格式举例 +与解释 +{ + "obj":[{ + "id":"bfcc9012-3ele-440f-9e6c-e9d6b5cc5e9b",//检查任务ID +"companyCode":"440000000",J/I企业编码,同"危险化学品登记综 合服务系统"中的企业编码一致 +"taskName":"2024危险化学品危险源企业安全专项检查督导",/I任 务名称 +"taskStartTime":"2022-11-28",/1任务开始日期,日期格式 yyyy-MM-dd + "taskEndTime":"2023-11-28",//任务结束日期,日期格式 + + + + +} +yyyy-MM-dd"taskTypeName":"危险化学品重大危险源企业安全专项检查督导",// 区分检查任务 +"taskContent":"危险化学品重大危险源企业2024年专项督查核查",// 描述任务内容 + "deleted":"0",/1删除状态,字典含义见数据字典deleted +"createDate":"2020-11-2811:44:58",//创建时间,时间格式 yyyy-MM-dd HH:mm:ss +"updateDate":"2020-11-2811:44:58",//修改时间,时间格式 yyyy-MM-dd HH:mm:ss + }] + 注:查询结果为即将开始或正在进行的任务。 + +4.4查询检查项信息 + +接口路径 +/v2/data/receive/getCheckltem +请求方式 +POST +请求头 +Content-Type:application/json;charset=utf8 Authorization:A5ewTio3NX20220424150035407 +报文格式举例 与解释 +{ +{ + +"taskId":"bfcc9012-3ele-440f-9e6c-e9d6b5cc5e9b",//检查任务ID,必 填 + "page":{ + "current":1,/1分页页码 + "size":100/1分页大小,最小10最大1000 } +返回格式举例 与解释 +{ + "total":100,/1总数 + + + + + 双重预防机制接口技术文档 + + + t +"current":1,/1当前分页 "size":100,/1分页大小 "obj":[{ "id":"da4612c8-0e73-4839-a0fb-bff79c23f29b",//检查项ID + "taskld":"bfcc9012-3ele-440f-9e6c-e9d6b5cc5e9b",//检查任务ID "checkName":"1.1",//检查序号 +"checkContent":"重大危险源的主要负责人依法经考核合格",J/检查 内容 + "checkBasis":"《危险化学品企业重大危险源安全包保责任制办法 + (试行)》(应急厅〔2021)12号〕",//检查依据 + "applicablePlace":"储存单元、生产单元"//适用场所 + "deleted":"0",//删除状态,字典含义见数据字典deleted + "createDate":"2020-11-2811:44:58",//创建时间,时间格式 +yyyy-MM-dd HH:mm:ss + "updateDate":"2020-11-2811:44:58",/1修改时间,时间格式 + yyyy-MM-dd HH:mm:ss }] +4.5 查询检查项评分细则信息 + +接口路径 +/v2/data/receive/getCheckScore +请求方式 +POST +请求头 +Content-Type:application/json;charset=utf8 Authorization:A5ewTio3NX20220424150035407 +报文格式举例 与解释 +{ + +"taskId":"bfcc9012-3e1e-440f-9e6c-e9d6b5cc5e9b",//检查任务ID,必 填 +"checklItemld":"da4612c8-0e73-4839-a0fb-bff79c23f29b",//检查项ID "page":{ + + + + + { +"current":1,/1分页页码 "size":100/1分页大小,最小10最大1000 } +返回格式举例 与解释 +{ +t f + + "total":100,//总数 + "current":1,//当前分页 "size":100,/1分页大小 "obj":[{ + "id":"be942b6d-aff7-46d3-b3ce-ed6d13dfa044",//评分细则ID + "checkItemld":"da4612c8-0e73-4839-a0fb-bff79c23f29b",//检查项ID "isReject":"0",/I是否为否决项(是:1;否:0) + "deductPoint":"5",//扣分分值 + "deductIllustrate":"xxx",//扣分说明 + "deleted":"0",//删除状态,字典含义见数据字典deleted +"createDate":"2020-11-2811:44:58".//1创建时间,时间格式 yyyy-MM-dd HH:mm:ss + "updateDate":"2020-11-2811:44:58",//修改时间,时间格式 + yyyy-MM-dd HH:mm:ss }] + 五、 返回值含义 + + 以下返回的HTTP 状态码为数据接收立即返回的,由数据接收返回的错误是 整个请求完全失败的。 +HTTP 状态码 + 返回消息 + 说明 +200 +正确 +请求成功,obj会返回批次id +400 +无法解析的token +无法正常解析的token,请求失败 +401 +无效的token +token是无效的,请求失败 + + + +403 +请求过于频繁 +一个token在限定时间内请求次数过多,请 求失败 +413 +请求的大小过大 +请求的大小限制在15M以内,请求失败 +425 +过时的token +时间戳在当前时间之前1小时开外,请求 失败 +500 +系统错误 +系统内部发生错误,请联系系统管理员, 请求失败 +504 +请求超时 +请求超时,请求失败 +以下错误日志信息为数据消费返回的,由数据消费返回的错误请求是成功的, 解析为明文后,逐条进行数据验证的,仅验证不通过的记录是失败的,验证通过 的记录是成功写入的。数据消费返回的错误需要通过调用查询接口得到。 + 错误日志信息 + 说明 +系统错误 +系统内部发生错误,请联系系统管理员 +请求超时 +请求超时 +无法解密 +无法根据Key和IV对请求体进行解密,请求失败 +权限错误 +请求中的数据权限范围不在token限制的数据权限范围 之内,请求失败 +危险源不存在 +危险源不存在,仅该条记录失败 +xxx为空 + 违反非空约束,xxx为具体字段名称,仅该条记录失败 +xxx字典项不符合字典枚举 +字典值无效,xxx为具体字段名称,仅该条记录失败 +Xxx时间不符合格式 + 时间格式无效,xxx为具体字段名称,仅该条记录失败 +xxx长度过长 +字段超长,xxx为具体字段名称,仅该条记录失败 +xxx不符合正则 +不符合正则,xxx为具体字段名称,仅该条记录失败 +无效的批次id +查询的批次id不存在 +查询的时间范围超过24小时 +查询的时间范围超过24小时 +六、 数据字典 + + 字典键 + 字典值 + 字典类型 + 0 + 未删除 + deleted + + + + + + +1 + 已删除 + deleted + + + +1 + 自动化监控 + dataSrc + 2 + 隐患排查 + dataSrc + 3 + 其他 + dataSrc + 1 + 工程技术 + classify1 + 2 + 维护保养 + classify1 + 3 + 操作行为 + classify1 + 4 + 应急设施 + classify1 + 1-1 + 工艺控制 + classify2 + 1-2 + 关键设备/部件 + classify2 + 1-3 + 安全附件 + classify2 + 1-4 + 安全仪表 + classify2 + 1-5 + 其它 + classify2 + 2-1 + 动设备 + classify2 + 2-2 + 静设备 + classify2 + 2-3 + 其它 + classify2 + 3-1 + 人员资质 + classify2 + 3-2 + 操作记录 + classify2 + 3-3 + 交接班 + classify2 + 3-4 + 其它 + classify2 + 4-1 + 应急设施 + classify2 + 4-2 + 个体防护 + classify2 + 4-3 + 消防设施 + classify2 + 4-4 + 应急预案 + classify2 + 4-5 + 其它 + classify2 + 0 + 一般隐患 + dangerLevel + + + +1 + 重大隐患 + dangerLevel + + + +1 + 日常排查 + dangerSrc + + + + 2 + 综合性排查 + dangerSrc + 3 + 专业性排查 + dangerSrc + 4 + 季节性排查 + dangerSrc + 5 + 重点时段及节假日前排查 + dangerSrc + 6 + 事故类比排查 + dangerSrc + 7 + 复产复工前排查 + dangerSrc + 8 + 外聘专家诊断式排查 + dangerSrc + 9 + 管控措施实效 + dangerSrc + 10 + 其他 + dangerSrc + 0 + 即查即改 + dangerManageType + + + +1 + 限期整改 + dangerManageType + 0 + 整改中 + dangerState + + + +1 + 待验收 + dangerState + 9 + 已验收 + dangerState + + + +1 + 安全 + hazardDangerType + 2 + 工艺 + hazardDangerType + + + +3 + 电气 + hazardDangerType + 4 + 仪表 + hazardDangerType + + + +5 + 消防 + hazardDangerType + 6 + 总图 + hazardDangerType + 7 + 设备 + hazardDangerType + 8 + 其他 + hazardDangerType + 小时 + 小时 + checkCycleUnit + 天 + 天 + checkCycleUnit + 月 + 月 + checkCycleUnit + 年 + 年 + checkCycleUnit + 1 + 风险单元 + requestType + 2 + 风险事件 + requestType + + + + 3 + 管控措施 + requestType + 4 + 隐患信息 + requestType + 5 + 隐患排查任务 + requestType + 6 + 隐患排查记录 + requestType + 7 + 装置停工检修记录 + requestType + 8 + 专项检查隐患 + requestType + 9 + 检查情况记录 + requestType + + + +1 + 处理中 + batchStatus + 2 + 处理完成且成功 + batchStatus + 3 + 处理完成且失败 + batchStatus +七、 加解密示例与工具 + + 现将AES-GCM-256 加解密工具类的 Java 代码展示如下: +import org.bouncycastle.crypto.DataLengthException; +import org.bouncycastle.crypto.InvalidCipherTextException; +import org.bouncycastle.crypto.engines.AESFastEngine; +import org.bouncycastle.crypto.modes.GCMBlockCipher; +import org.bouncycastle.crypto.params.AEADParameters; +import org.bouncycastle.crypto.params.KeyParameter; + +importjava.nio.charset.StandardCharsets; +import java.security.SecureRandom; +import java.util.Base64; + +/** + *AES-GCM-256 工具类 + *加解密方法中已调用Base64 方法 */ +public class AesGcm256Util{ + +private static final SecureRandom SECURE_RANDOM=new SecureRandom(); + + public static final int NONCE_BIT_SIZE=128; + public static final int MAC_BIT_SIZE=128; + public static final int KEY_BIT_SIZE=256; + + private AesGcm256Util(){ +飞 +f + + /** + * 创建密钥 + * + *@return 密钥 */ + public static byte[]key(){ + byte[]key =new byte[KEY_BIT_SIZE/8]; + SECURE_RANDOM.nextBytes(key); + return key; f + /** + * 创 建 向 量 + * + *@return 向量 */ + public static byte[]iv(){ + byte[]iv=new byte[NONCE_BIT_SIZE/8]; + SECURE_RANDOM.nextBytes(iv); + return iv; + } + + /** + * 编码 * + *@param hexStr 文本 + * @return 字节数组 + */ + public static byte[]hexToByte(String hexStr){ int len =hexStr.length(); + byte[]data =new byte[len/2]; + for (int i=0;i + org.bouncycastle bcprov-jdk15on 1.56 + + +加密解密Java 示例代码如下,加解密方法中已调用Base64 加解密方法: +String encryptedStr=AesGcm256Util.encrypt(originData, + AesGcm256Util.hexToByte(AES_KEY), + AesGcm256Util.hexToByte(AES_IV)); +String resultStr=AesGcm256Util.decrypt(encryptedStr, + AesGcm256Util.hexToByte(AES_KEY), + AesGcm256Util.hexToByte(AES_IV)); +八、 常见问题指南 + 1、上传接口返回成功,政府端却没有数据。 +文档【2.1处理流程】中说明,接收端的服务分为两个,数据接收和数据消 费,数据接收只对请求的频率、请求的大小、数据权限进行验证,不对请求体内 的数据进行校验,所以调用完接口返回成功只代表请求的数据权限、大小和频率 是符合要求的。详细的数据状态需要根据文档【4.1按批次 id 查询处理结果】 进行结果查询,查询结果中错误条数errorCount 不为0,则存在错误的信息,详 细错误信息通过【4.2按错误 id 查询错误详细信息】进行查询。 + 2、根据查询接口查询到结果为处理完成且成功,政府端却没有数据。 +风险单元、风险事件、管控措施、排查任务为相互关联、缺一不可的。企业 需要确认传输的排查任务是否已经传输了相互关联的管控清单、风险事件及风险 单元,当任一数据缺失关联,政府端都无法进行展示。 + 3、查询结果中状态一直为处理中。 +当企业根据文档【4.1按批次 id 查询处理结果】进行查询,返回的结果中 status='1'时,表示政府端数据还没有进行消费,企业可等待一段时间后再查 询,当连续几天status都为1时,可上报至企业属地应急管理厅有关负责人处, 拨打客服热线400-9988777进行反馈。 + 4、企业编码和风险分析对象编码获取方式。 +企业编码和风险分析对象编码是企业在"危险化学品登记综合服务系统"登 记后系统自动生成的企业编码和危险源编码,应由企业人员登录到"危险化学品 登记综合服务系统"中登记并获取。 + 5、上传的测试数据、错误数据的删除方式。 +风险单元、风险事件、管控措施、隐患排查任务、隐患信息、停用/检修记 录接口中都包含了"deleted"字段,当deleted='1'时,即代表此条数据已删除, + +所以企业可以通过更新接口中的 deleted字段来进行数据的删除,注意当更新接 口中的任一信息时,需要同步更新修改时间updateDate。 + 排查记录不允许修改和删除, 一旦上传不允许进行删除。 + 6、政府端数据运行效果为优,部里是差,省部数据不一致问题。 +风险单元、风险事件、管控措施、隐患排查任务、隐患信息、停用/检修记 录数据是通过应急管理部数据抽取的方式定时抽取增量数据到应急管理部业务 系统,抽取根据修改时间updateDate进行抽取,当企业传输的 updateDate 错误或 者传输的updateDate 时间和实际时间不符合,会导致数据无法抽取到应急管理部 业务系统中。 + 7、安卓版本太高,无法获取到IMEI 码 。 +对于版本过高、技术架构老等无法自动获取 IMEI 码的情况,可采取人工 查询、手动绑定本机 IMEI 码的方式,且务必保证 IMEI 码的真实性。 + 8、接口是否有其他限制条件。 +风险单元、风险事件、管控措施、隐患排查任务、隐患信息、停用/检修记 录接口为增量更新,当政府端监控到企业多次全量更新的时候,会面临token 被 取消的情况。排查记录为增量传输,不允许修改,企业一旦传输无法进行修改, 当企业传输的数据中存在已经传输过的数据,会面临整个包的数据无法消费的情 况,请企业严格按照增量传输。 + 9、政府端是否有测试地址。 +由于搭建数据接收环境需要较高的服务器配置,所以各省都没有测试地址, 请企业改造完成后上传真实数据,如果上传了测试数据,企业需自行进行删除。