case-info 1.8.30 升级
case-info
当前线上最低版本为 廊坊地区1.7.40;
1.7 到1.8版本需要上nacos版本;
本次升级包对应版本:
case-info-1.8.30: http://wh.everydo.com:9040/app/detail?id=1125
basic-1.6.0: http://wh.everydo.com:9040/app/detail?id=1108
user-1.5.10: http://wh.everydo.com:9040/app/detail?id=1119
gateway-1.1.3: http://wh.everydo.com:9040/app/detail?id=996
review(阅卷)-1.8.18:http://wh.everydo.com:9040/app/detail?id=1111
platform(分类)-1.1.11:http://wh.everydo.com:9040/app/detail?id=1083
classify(分类)-1.9.12:http://wh.everydo.com:9040/app/detail?id=1112
admin-managemen(平台设置)-1.0.12: http://wh.everydo.com:9040/app/detail?id=1002
1.7.43
适配 RabbitMQ 多数据源,使用全省库监听服务,获取全省库 case_info 表数据到卷宗库 case_info 表数据
[yml配置文件新增]
whrp.rabbitmq.id: 服务器ip最后一个值
spring.rabbitmq.slave.host: 192.168.0.xx(全省库监听服务配置的RabbitMQ的Ip地址)
spring.rabbitmq.slave.port: 5678xx(全省库监听服务配置的RabbitMQ的端口)
spring.rabbitmq.slave.username: whrp_mq (全省库监听服务配置的RabbitMQ的账号)
spring.rabbitmq.slave.password: c2gv9rK9KzXaRnT9(全省库监听服务配置的RabbitMQ的密码)
spring.rabbitmq.slave.virtual-host: message(全省库监听服务配置的RabbitMQ的virtual-host)
1.7.47
1、新增配置开关 微服务是否同一临时目录。根据调研保定,发现编目GPU占用率不高,怀疑其编目过程中,下载文件导致的。
现新增配置,可以把上传的本地文件,传入basic服务中,不用去存储下载文件。
update common_property set property_value = JSON_SET(property_value,'$.useSameTmp',true) where property_name = 'fileSettings'
达梦:当前版本无该配置,直接新增
INSERT INTO
common_property(
property_id,
property_name,
property_value,
property_desc,
create_time,
create_user_id,
update_flag,
display
)
VALUES
(
'507',
'fileSettings',
'{"useSameTmp": true, "syncStorage": true, "appendPrefix": {"review": {"dir": true, "file": true}, "classify": {"dir": true, "file": false}}, "convertPDF2Flag": false}',
'syncStorage:上传文件,是否实时同步推送到S3存储,默认值为true nconvertPDF2Flag:是否转换双层pdf,默认值为falsenuseSameTmp: 微服务是否使用同一临时目录,默认为falsenappendPrefix: 整卷下载是否在目录和文件下载添加前缀nreview:阅卷系统nclasify:分类系统ndir: 目录是否添加前缀nfile: 文件是否添加前缀',
NULL,
NULL,
0,
0
);
useSameTmp: 微服务是否使用同一临时目录,默认为false
开启该功能,必须保证caseinfo与basic服务,共用同一个tmp目录,如果是多服务器部署,必须用NFS
1.7.48
更新内容:
推送去除合并失败抛出的异常,而且将未转换的数据标记到caseinfo表的extra的mergeXmlFlag里面
文件转换状态只判断image类型是否转换了缩略图与pdf,音视频与pdf等不再判断,解决推送问题;
推送时,未合并的华宇xml不会抛异常,并在caseinfo表extra字段,增加 mergeXmlFlag标记,合并成功的不会有该标记。
可以通过 extra->’$.mergeXmlFlag’ is not null 查找未合并的xml的案件:
select * from case_info where update_time > '2023-09-05 00:00:00' and extra->'$.mergeXmlFlag' is not null
1.7.52
更新内容:
- 推送将润普 卷宗封面 卷底 备考表 卷内目录下的材料修改为特殊节点数据(仅邯郸地区升级此功能)
查询 storageConfig 配置是否存在:
select * from common_property where property_name = 'storageConfig';
不存在则插入:
INSERT INTO `common_property` (`property_id`, `property_name`, `property_value`, `property_desc`, `create_time`, `create_user_id`, `update_flag`, `display`) VALUES (322, 'storageConfig', '{ \"pushSpecialNodes\": true,\"specialNodesMapping\":{\"卷宗封面\":\"封皮\",\"卷底\":\"封底\",\"备考表\":\"备考表\",\"卷内目录\":\"卷内目录\"}}', '统一存储配置:checkFileSize=计算存储文件大小,notifyCaller = 是否推送华宇, pushSpecialNodes:true:将润普 卷宗封面 卷底 备考表 卷内目录下的材料修改为特殊节点数据进行推送 false:按照原本数据结构推送', NULL, 1, 0, 0);
若存在,则更新:
update `common_property` set property_value = json_set(ifnull(property_value,'{}'), '$.pushSpecialNodes',false,'$.specialNodesMapping',CAST('{"卷宗封面":"封皮","卷底":"封底","备考表":"备考表","卷内目录":"卷内目录"}' as JSON)
) where property_name = 'storageConfig';
达梦数据库:
-- 删除原有的配置
delete from common_property where property_name = 'storageConfig';
-- 新增
INSERT INTO
common_property(
property_id,
property_name,
property_value,
property_desc,
create_time,
create_user_id,
update_flag,
display
)
VALUES
(
505,
'storageConfig',
'{"isRerank": false, "calcFileSize": false, "notifyCaller": false, "pushSpecialNodes": false, "specialNodesMapping": {"卷底": "封底", "备考表": "备考表", "卷内目录": "卷内目录", "卷宗封面": "封皮"}}',
'统一存储配置:ncheckFileSize=计算存储文件大小,nnotifyCaller = 是否推送华宇, npushSpecialNodes:ntrue:将润普 卷宗封面 卷底 备考表 卷内目录下的材料修改为特殊节点数据进行推送 nfalse:按照原本数据结构推送, nisRerank = true :统一存储开启刷新装订排序功能 反之关闭 不配置默认开启',
NULL,
1,
0,
0
);
- 统一存储配置:checkFileSize=计算存储文件大小,
- notifyCaller = 是否推送华宇,
- pushSpecialNodes:
- true:将润普 卷宗封面 卷底 备考表 卷内目录下的材料修改为特殊节点数据进行推送
- false:按照原本数据结构推送’
1.7.58
更新内容:
- 省院扫描环境发现通过润普上传的材料推送华宇后卷的排序是混乱的,排查后发现润普推送的xml卷排序都是1无法判断先后顺序造成华宇乱序。
校正数据执行下面SQL :
-- 第一条语句
INSERT INTO sys_dict
(id, pid, category, label, value, sn, create_time, update_time, deleted)
VALUES(1681937547180167200, 0, 'script', '表达式库', NULL, 0, '2023-08-01 15:12:06', '2023-08-21 11:25:42', 0);
INSERT INTO sys_dict
(id, pid, category, label, value, sn, create_time, update_time, deleted)
VALUES(1695377034627842742, 1681937547180167200, 'script', 'fixDirectoryIndex', 'package com.whrp.dossier.caseinfo.groovy
import cn.hutool.extra.spring.SpringUtil
import com.whrp.dossier.caseinfo.service.impl.CaseInfoServiceImpl
import org.springframework.jdbc.core.JdbcTemplate
def main(param){
JdbcTemplate jdbcTemplate = SpringUtil.getBean(JdbcTemplate.class);
CaseInfoServiceImpl caseInfoService = SpringUtil.getBean(CaseInfoServiceImpl.class);
caseInfoService.batchExecute(param[''condition''],1000,caseinfo->{
jdbcTemplate.update(''update archive_directory_info set directory_index = CAST( regexp_replace(directory_name ,\\''.[^\\\\d]\\'',\\''\\'') as UNSIGNED) + 1 \\n'' +
'' where case_id = ? and parent_id = 0 and directory_name regexp \\''[0-9]+$\\'' and display = 0'',caseinfo.getCaseId());
return true;
})
}
', 0, '2023-10-31 14:36:19', '2023-10-31 15:17:56', 0);
-- 第二条语句
UPDATE sys_dict
SET value='package com.whrp.dossier.caseinfo.groovy
import cn.hutool.extra.spring.SpringUtil
import com.whrp.dossier.caseinfo.service.impl.CaseInfoServiceImpl
import org.springframework.jdbc.core.JdbcTemplate
def main(param){
JdbcTemplate jdbcTemplate = SpringUtil.getBean(JdbcTemplate.class)
CaseInfoServiceImpl caseInfoService = SpringUtil.getBean(CaseInfoServiceImpl.class)
caseInfoService.batchExecute(param[''condition''] as String,1000, caseinfo->{
def list = jdbcTemplate.queryForList("select directory_name,directory_index FROM archive_directory_info where case_id =? and display = 0 and parent_id = 0 and directory_name like ''%卷''", caseinfo.getCaseId());
def sql_field = " case "
for(map in list){
sql_field += " when directory_name like ''"+map[''directory_name'']+"%'' then " + map[''directory_index'']
}
sql_field += " else 1 end"
jdbcTemplate.update(''update archive_directory_info set directory_index = CAST( regexp_replace(directory_name ,\\''.[^\\\\d]\\'',\\''\\'') as UNSIGNED) + \\n'' +sql_field+
'' where case_id = ? and parent_id = 0 and directory_name regexp \\''[0-9]+$\\'' and display = 0'',caseinfo.getCaseId())
return true
})
}
'
WHERE id=1695377034627842742;
1.7.60
更新内容:
- 增加整卷下载的目录和文件是否添加前缀的逻辑(目前只有分类界面可以通过配置控制,阅卷整卷下载还没修改)
如果没有此条数据就新增即(property_name = ‘fileSettings’)
INSERT INTO `common_property` ( `property_id`, `property_name`, `property_value`, `property_desc`, `create_time`, `create_user_id`, `update_flag`, `display` )
VALUES
( 317, 'fileSettings', '{\"appendPrefix\":{\n \"review\":{\"dir\":true,\"file\":true},\n \"classify\":{\"dir\":true,\"file\":false}\n }\n}', '\nappendPrefix:整卷下载是否在目录和文件下载添加前缀,review:阅卷系统, classify:分类系统,dir:目录是否添加前缀,file:文件是否添加前缀', NULL, NULL, 0, 0 );
存在就修改
UPDATE common_property
SET property_value = JSON_SET(
ifnull( property_value, '{}' ),
'$.appendPrefix',
CAST( '{
"review":{"dir":true,"file":true},
"classify":{"dir":true,"file":false}
}' AS JSON ))
WHERE
property_name = 'fileSettings';
sql里面的配置说明:
- appendPrefix:整卷下载是否在目录和文件下载添加前缀,
- review:阅卷系统,
- classify:分类系统,
- dir:目录是否添加前缀,
- file:文件是否添加前缀
1.7.63
更新内容:
长文本分析 修改配置
更新配置 paddleServiceConfig:
UPDATE common_property SET property_value = '{\n \"nlp-card\": {\n \"enable\": true,\n \"url\": \"http://192.168.0.31:8009\"\n },\n \"nlp-doc\": {\n \"enable\": true,\n \"url\": \"http://192.168.0.31:8009\"\n }\n}', property_desc = '飞桨服务配置:\nnlp-doc:长文本分析 nlp-card:卡证要素提取\nurl:服务地址\nenable:功能开关 true开启 / false关闭' WHERE property_name = "paddleServiceConfig";
达梦:新增该配置
INSERT INTO
common_property(
property_id,
property_name,
property_value,
property_desc,
create_time,
create_user_id,
update_flag,
display
)
VALUES
(
508,
'paddleServiceConfig',
'{ "nlp-card": { "enable": false, "url": "http://131.16.104.108:8002" }, "nlp-doc": { "enable": false, "url": "http://131.16.104.108:8001" }, "nlp-long-text": { "enable": false, "url": "http://131.16.104.108:8001" }}',
'飞桨服务配置:nlp-doc: 文书要素提取 (编目提取要素)nlp-card:卡证要素提取nlp-long-text:长文本分析url:服务地址enable:功能开关 true开启 / false关闭',
NULL,
1,
0,
0
);
- 根据线上实际情况配置ip地址与功能开关;
1.7.67
1、对接华宇查询卷宗接口,新增/caseinfo/hb-extra/full-case接口提供给第三方,如果这个润普没有数据,则去华宇查询数据进行返回
2、/caseinfo/hb-extra/case接口现在查询的时候如果润普没有案件,则通过组合查询方式进行查询后返回
//华宇卷宗接口地址
省院联调地址:131.16.100.235:17682
廊坊 http://131.106.7.12:9395/dzjz
石家庄 http://131.101.2.53:53108/dzjz
保定 http://131.102.1.148:9395/dzjz
沧州 http://131.107.28.187:8002/dzjz
雄安 http://131.115.2.92:58017/dzjz
衡水 http://131.108.3.240:10001/dzjz
唐山 http://131.105.191.13:10001/dzjz
邢台 http://131.109.10.120:9395/dzjz
承德 http://131.104.6.100:10001/dzjz
邯郸 http://131.100.0.10:10001/dzjz
秦皇岛 http://131.110.1.241:10001/dzjz
张家口 http://131.103.2.243:10001/dzjz
INSERT INTO `common_property` (`property_id`, `property_name`, `property_value`, `property_desc`, `create_time`, `create_user_id`, `update_flag`, `display`) VALUES (339, 'getHYDossierUrl', 'http://ip:port/dzjz/api/v5/dossiers/tree', '获取华宇卷宗信息接口', NULL, 1, 0, 0);
达梦:
INSERT INTO
common_property(
property_id,
property_name,
property_value,
property_desc,
create_time,
create_user_id,
update_flag,
display
)
VALUES
(
509,
'getHYDossierUrl',
'http://131.106.7.12:9395/dzjz/api/v5/dossiers/tree',
'获取华宇卷宗信息接口',
NULL,
1,
0,
0
);
配置请求头,全省都是这个
mysql:
INSERT INTO `common_property` (`property_id`, `property_name`, `property_value`, `property_desc`, `create_time`, `create_user_id`, `update_flag`, `display`) VALUES (341, 'HBHYCaseDossierHeader', '{\n \"systemId\": \"rpxt\",\n \"authcode\": \"e2ba422986a44e40b2a87f0ef916f448\"\n}\n\n', '河北华宇获取卷宗信息请求头', NULL, 1, 0, 0);
达梦:
INSERT INTO
common_property(
property_id,
property_name,
property_value,
property_desc,
create_time,
create_user_id,
update_flag,
display
)
VALUES
(
510,
'HBHYCaseDossierHeader',
'{"systemId": "rpxt", "authcode": "e2ba422986a44e40b2a87f0ef916f448"}',
'河北华宇获取卷宗信息请求头',
NULL,
1,
0,
0
);
添加接口资源:
mysql:
INSERT INTO `sys_resource` (`id`, `name`, `url`, `method`, `pid`, `description`, `create_time`, `update_time`) VALUES (1740314266691497986, '获取完整案件信息', '/caseinfo/hb-extra/full-case', 'GET', 109, '获取完整案件信息', '2023-12-28 18:10:29', '2023-12-28 18:10:29');
达梦:
INSERT INTO
sys_resource(
id,
name,
url,
method,
pid,
description
)
VALUES
(
1787769457683337216,
'获取完整案件信息',
'/caseinfo/hb-extra/full-case',
'GET',
109,
'获取完整案件信息'
);
在nacos可视化页面更改gateway配置文件:
caseinfo-service下:
filters:
- Authentication
- StripPrefix=0
- RewritePath=/caseinfo/full-case, /caseinfo/hb-extra/full-case (添加本行内容)
1.8.2
更新内容:
- 自动分案;
- 修改案件分配规则;
- 新增用户登出后自动关闭分案开关
- 用户服务须要升级到v.1.5.2版本; gateway需升级到 1.1.1
新增资源SQL:(平台设置-角色管理模块新增接口资源)
mysql:
INSERT INTO `business`.`sys_resource`(`id`, `name`, `url`, `method`, `pid`, `description`, `create_time`, `update_time`) VALUES (1742107181213335553, '角色页面中的数据权限接口', '/basic/dict/tree', 'GET', 85, '角色页面中的数据权限 ', '2024-01-02 16:54:53', '2024-01-02 16:54:53');
达梦:
INSERT INTO
sys_resource(
id,
name,
url,
method,
pid,
description
)
VALUES
(
1787769457683337217,
'角色页面中的数据权限接口',
'/basic/dict/tree',
'GET',
85,
'角色页面中的数据权限 '
);
1.8.7
更新内容:
- 移动阅卷服务(唐山地区)
1.caseinfo表添加索引
mysql:
alter table case_info add index `idx_case_info_la_date_update_date` (`la_date`,`update_time`) USING BTREE;
alter table case_info add index `idx_case_info_case_type_id_display` (`display`,`case_type_id`) USING BTREE;
caseinfo的docker-compose.yml中开启第三方服务,或者在appliaction.yml中对应位置添加也一样:
-Dwhrp.third-party-services=classify,hbhy,runpu,iview,nlp添加资源表资源
查询一下sys_resource表中,是否有移动阅卷服务相关接口资源select * from sys_resource where pid = (select id from sys_resource where name = '移动阅卷服务') or id = (select id from sys_resource where name = '移动阅卷服务')
上诉sql中查询出来的结果,如果有数据,应该共有13条,如果不满足13条,或者查询结果为空,先将查询出来的结果,全部删除,然后执行以下sql
mysql、达梦:
INSERT INTO sys_resource (id, name, url, method, pid, description, create_time, update_time) VALUES (1628678246916505602, '移动阅卷服务', NULL, 'GET', 0, NULL, '2023-03-07 14:13:25', '2023-03-07 14:13:25');
INSERT INTO sys_resource (id, name, url, method, pid, description, create_time, update_time) VALUES (1632988780743163906, '卷宗库服务,按照案件类型,搜索条件做分页查询', '/caseinfo/lib/query-page', 'GET', 1628678246916505602, '卷宗库服务,按照案件类型,搜索条件做分页查询', '2023-03-07 14:17:19', '2023-03-07 14:17:19');
INSERT INTO sys_resource (id, name, url, method, pid, description, create_time, update_time) VALUES (1632989720720244738, '我的卷宗服务,分页查询卷宗', '/caseinfo/dossier/query-page', 'GET', 1628678246916505602, '我的卷宗服务,分页查询卷宗', '2023-03-07 14:21:03', '2023-03-07 14:21:03');
INSERT INTO sys_resource (id, name, url, method, pid, description, create_time, update_time) VALUES (1632989938815664130, '保存浏览历史', '/caseinfo/record/save', 'GET', 1628678246916505602, '保存浏览历史', '2023-03-07 14:21:55', '2023-03-07 14:21:55');
INSERT INTO sys_resource (id, name, url, method, pid, description, create_time, update_time) VALUES (1632990134467362818, '删除浏览历史', '/caseinfo/record/deleted', 'GET', 1628678246916505602, '删除浏览历史', '2023-03-07 14:22:42', '2023-03-07 14:22:42');
INSERT INTO sys_resource (id, name, url, method, pid, description, create_time, update_time) VALUES (1632990297109889025, '分页查询浏览历史', '/caseinfo/record/query-page', 'GET', 1628678246916505602, '分页查询浏览历史', '2023-03-07 14:23:20', '2023-03-07 14:23:20');
INSERT INTO sys_resource (id, name, url, method, pid, description, create_time, update_time) VALUES (1632990581018132482, '添加卷宗', '/caseinfo/shelf/add', 'GET', 1628678246916505602, '添加卷宗', '2023-03-07 14:24:28', '2023-03-07 14:24:28');
INSERT INTO sys_resource (id, name, url, method, pid, description, create_time, update_time) VALUES (1632990735859253249, '删除卷宗', '/caseinfo/shelf/delete', 'GET', 1628678246916505602, '删除卷宗', '2023-03-07 14:25:05', '2023-03-07 14:25:05');
INSERT INTO sys_resource (id, name, url, method, pid, description, create_time, update_time) VALUES (1632991042664202241, '我的书架服务,分页查询卷宗', '/caseinfo/shelf/query-page', 'GET', 1628678246916505602, '我的书架服务,分页查询卷宗', '2023-03-07 14:26:18', '2023-03-07 14:26:18');
INSERT INTO sys_resource (id, name, url, method, pid, description, create_time, update_time) VALUES (1632991220251033602, '保存卷宗阅读进度', '/caseinfo/progress/save', 'GET', 1628678246916505602, '保存卷宗阅读进度', '2023-03-07 14:27:01', '2023-03-07 14:27:01');
INSERT INTO sys_resource (id, name, url, method, pid, description, create_time, update_time) VALUES (1717023423141052417, '删除卷宗阅读进度', '/caseinfo/progress/delete', 'GET', 1628678246916505602, '删除卷宗阅读进度', '2023-10-25 11:40:59', '2023-10-25 11:40:59');
INSERT INTO sys_resource (id, name, url, method, pid, description, create_time, update_time) VALUES (1731913168438493185, '删除全部浏览历史', '/caseinfo/record/deleted-all', 'GET', 1628678246916505602, '删除全部浏览历史', '2023-12-05 13:47:31', '2023-12-05 13:47:31');
INSERT INTO sys_resource (id, name, url, method, pid, description, create_time, update_time) VALUES (1732651592208416769, '查询卷宗库详细信息', '/caseinfo/lib/query-details', 'GET', 1628678246916505602, '查询卷宗库详细信息', '2023-12-07 14:41:45', '2023-12-07 14:41:45');
上诉sql执行完成后,去新平台设置中,给角色配上移动阅卷服务对应的权限组权限,然后刷新 用户-角色(sys_user_role)缓存和角色-资源(sys_role_resource)缓存
唐山地区以后升级需要注意这些资源的id以及pid,唐山升级的时候修改了id和pid
- 添加两个表review_progress和review_user_case
-- 创建表 review_progress
CREATE TABLE `review_progress` (
`id` bigint(20) NOT NULL,
`user_id` bigint(20) NOT NULL COMMENT '用户id',
`case_id` bigint(20) NOT NULL COMMENT '案件id',
`file_id` bigint(20) DEFAULT NULL COMMENT '文件id',
`read_page` varchar(20) DEFAULT NULL COMMENT '卷宗阅读进度',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `idx_review_progress_user_id_case_id` (`user_id`,`case_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC
-- 创建表 review_user_case
CREATE TABLE `review_user_case` (
`id` bigint(20) NOT NULL COMMENT '主键id',
`user_id` bigint(20) NOT NULL COMMENT '用户id',
`case_id` bigint(20) NOT NULL COMMENT '案件id',
`type` enum('SHELF','RECORD') DEFAULT NULL COMMENT '关联类型,SHELF:我的书架,RECORD:浏览记录',
`create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '生成时间',
`update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `idx_user_case_type` (`user_id`,`case_id`,`type`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC
1.8.12
更新内容:
- 添加原审案件功能
user-service.yml配置修改:
mvc:
enabled: true # 开始 Mvc 配置
excludes: /role/modify
1、新增的两个角色
注意:不要配置两个有数据权限的角色在同一个用户上,会导致查询很慢,界面卡死,目前还没找到解决方法(如法院法官和阅卷中院管理员不要配置在一起)
mysql:
INSERT INTO `business`.`sys_role`(`id`, `pid`, `code`, `name`, `description`, `deleted`, `privilege`, `privileges`, `dir_privilege`, `org_privilege`, `update_time`, `create_time`, `lft`, `rgt`, `fixed`, `extra`) VALUES (1747886474079039489, 0, 'MIDDLE_MAINTAINER', '阅卷中院管理员', '数据范围: 能查看本法院的所有案件 + 其下级基层院的所有案件\n操作权限: 本院案件=》制卷权限;其他法院案件=》阅卷权限', 0, '', '{\"ORG\": \"\", \"HRMS\": \"\", \"USER\": \"\", \"TRANSFER\": \"\"}', NULL, NULL, '2024-01-26 09:22:50', '2024-01-18 15:39:44', 19, 20, 0, '{\"orgId\": \"100\", \"systemIds\": [\"1574286870436925449\"], \"roleNameCount\": 0}');
INSERT INTO `business`.`sys_role`(`id`, `pid`, `code`, `name`, `description`, `deleted`, `privilege`, `privileges`, `dir_privilege`, `org_privilege`, `update_time`, `create_time`, `lft`, `rgt`, `fixed`, `extra`) VALUES (1747895883324780546, 0, 'MIDDLE_LEADER', '阅卷中院领导', '数据范围:能查看本法院的所有案件 + 其下级基层院的所有案件\n操作权限: 阅卷权限', 0, '', '{\"ORG\": \"\", \"HRMS\": \"\", \"USER\": \"\", \"TRANSFER\": \"\"}', NULL, NULL, '2024-01-26 09:22:50', '2024-01-18 16:17:07', 21, 22, 0, '{\"orgId\": \"100\", \"systemIds\": [\"1574286870436925449\"], \"roleNameCount\": 0}');
INSERT INTO `business`.`sys_role`(`id`, `pid`, `code`, `name`, `description`, `deleted`, `privilege`, `privileges`, `dir_privilege`, `org_privilege`, `update_time`, `create_time`, `lft`, `rgt`, `fixed`, `extra`) VALUES (1748273861237993473, 0, 'BASIC_MAINTAINER', '阅卷基层院管理员', '数据范围:只能查看本法院的所有案件\n操作权限: 制卷权限', 0, '', '{\"ORG\": \"\", \"HRMS\": \"\", \"USER\": \" a.court_id = (SELECT s.CODE FROM sys_org s JOIN sys_user u ON s.id = u.org_id AND u.deleted = 0 WHERE u.id = {id} AND s.deleted = 0)\", \"TRANSFER\": \"\"}', NULL, NULL, '2024-02-27 16:48:20', '2024-01-19 17:19:04', 23, 24, 0, '{\"orgId\": \"100\", \"systemIds\": [\"1574286870436925449\"], \"roleNameCount\": 0}');
INSERT INTO `business`.`sys_role`(`id`, `pid`, `code`, `name`, `description`, `deleted`, `privilege`, `privileges`, `dir_privilege`, `org_privilege`, `update_time`, `create_time`, `lft`, `rgt`, `fixed`, `extra`) VALUES (1748274324989603842, 0, 'BASIC_LEADER', '阅卷基层院领导', '数据范围:只能查看本法院的所有案件\n操作权限: 阅卷权限', 0, '', '{\"ORG\": \"\", \"HRMS\": \"\", \"USER\": \" a.court_id = (SELECT s.CODE FROM sys_org s JOIN sys_user u ON s.id = u.org_id AND u.deleted = 0 WHERE u.id = {id} AND s.deleted = 0)\", \"TRANSFER\": \"\"}', NULL, NULL, '2024-02-27 16:47:56', '2024-01-19 17:20:55', 25, 26, 0, '{\"orgId\": \"100\", \"systemIds\": [\"1574286870436925449\"], \"roleNameCount\": 0}');
达梦:
INSERT INTO sys_role(id, pid, code, name, description, deleted, privilege, "privileges", dir_privilege, org_privilege, update_time, create_time, lft, rgt, fixed, extra) VALUES (1747886474079039489, 0, 'MIDDLE_MAINTAINER', '阅卷中院管理员', '数据范围: 能查看本法院的所有案件 + 其下级基层院的所有案件操作权限: 本院案件=》制卷权限;其他法院案件=》阅卷权限', 0, '', '{"ORG": "", "HRMS": "", "USER": "", "TRANSFER": ""}', NULL, NULL, '2024-01-26 09:22:50', '2024-01-18 15:39:44', 19, 20, 0, '{"orgId": "100", "systemIds": ["1574286870436925449"], "roleNameCount": 0}');
INSERT INTO sys_role(id, pid, code, name, description, deleted, privilege, "privileges", dir_privilege, org_privilege, update_time, create_time, lft, rgt, fixed, extra) VALUES (1747895883324780546, 0, 'MIDDLE_LEADER', '阅卷中院领导', '数据范围:能查看本法院的所有案件 + 其下级基层院的所有案件操作权限: 阅卷权限', 0, '', '{"ORG": "", "HRMS": "", "USER": "", "TRANSFER": ""}', NULL, NULL, '2024-01-26 09:22:50', '2024-01-18 16:17:07', 21, 22, 0, '{"orgId": "100", "systemIds": ["1574286870436925449"], "roleNameCount": 0}');
INSERT INTO sys_role(id, pid, code, name, description, deleted, privilege, "privileges", dir_privilege, org_privilege, update_time, create_time, lft, rgt, fixed, extra) VALUES (1748273861237993473, 0, 'BASIC_MAINTAINER', '阅卷基层院管理员', '数据范围:只能查看本法院的所有案件操作权限: 制卷权限', 0, '', '{"ORG": "", "HRMS": "", "USER": " a.court_id = (SELECT s.CODE FROM sys_org s JOIN sys_user u ON s.id = u.org_id AND u.deleted = 0 WHERE u.id = {id} AND s.deleted = 0)", "TRANSFER": ""}', NULL, NULL, '2024-02-27 16:48:20', '2024-01-19 17:19:04', 23, 24, 0, '{"orgId": "100", "systemIds": ["1574286870436925449"], "roleNameCount": 0}');
INSERT INTO sys_role(id, pid, code, name, description, deleted, privilege, "privileges", dir_privilege, org_privilege, update_time, create_time, lft, rgt, fixed, extra) VALUES (1748274324989603842, 0, 'BASIC_LEADER', '阅卷基层院领导', '数据范围:只能查看本法院的所有案件操作权限: 阅卷权限', 0, '', '{"ORG": "", "HRMS": "", "USER": " a.court_id = (SELECT s.CODE FROM sys_org s JOIN sys_user u ON s.id = u.org_id AND u.deleted = 0 WHERE u.id = {id} AND s.deleted = 0)", "TRANSFER": ""}', NULL, NULL, '2024-02-27 16:47:56', '2024-01-19 17:20:55', 25, 26, 0, '{"orgId": "100", "systemIds": ["1574286870436925449"], "roleNameCount": 0}');
接口资源
INSERT INTO `sys_resource` (`id`, `name`, `url`, `method`, `pid`, `description`, `create_time`, `update_time`) VALUES (1747518789419855873, '查询原审案件列表', '/caseinfo/query-original-case', 'GET', 1, '查询原审案件列表', '2024-01-17 15:18:41', '2024-01-17 15:18:41');
达梦:
INSERT INTO sys_resource (id, name, url, method, pid, description, create_time, update_time) VALUES (1747518789419855873, '查询原审案件列表', '/caseinfo/query-original-case', 'GET', 1, '查询原审案件列表', '2024-01-17 15:18:41', '2024-01-17 15:18:41');
策略(不用添加):
INSERT INTO `business`.`sys_data_acl`(`id`, `resource_ids`, `urls`, `expression`, `description`, `update_time`, `create_time`) VALUES (4, NULL, '/caseinfo/file/upload,/caseinfo/file/classify,/caseinfo/file/move,/caseinfo/file/remove,/caseinfo/file/rename,/caseinfo/directory/create,/caseinfo/directory/modify,/caseinfo/directory/move,/caseinfo/directory/remove,/caseinfo/file/clear,/caseinfo/file/restore,/caseinfo/file/hard-remove,/caseinfo/save-extra,/caseinfo/classify/save,', 'package com.whrp.dossier.caseinfo.groovy\r\n\r\nimport cn.hutool.extra.spring.SpringUtil\r\nimport com.whrp.dossier.caseinfo.entity.CaseInfo\r\nimport com.whrp.dossier.caseinfo.service.impl.CaseInfoServiceImpl\r\nimport com.whrp.dossier.user.client.RoleClient\r\nimport com.whrp.dossier.user.client.UserClient\r\nimport com.whrp.dossier.user.entity.Organization\r\nimport com.whrp.dossier.user.entity.Role\r\nimport com.whrp.dossier.user.entity.User\r\nimport com.whrp.framework.common.UserInfo\r\nimport com.whrp.framework.core.mvc.ResponseResourceBundle\r\nimport org.apache.logging.log4j.LogManager\r\nimport org.apache.logging.log4j.Logger\r\nimport org.springframework.jdbc.core.JdbcTemplate\r\nimport org.springframework.util.ObjectUtils\r\nimport org.springframework.util.StringUtils\r\n\r\ndef hasPermission(Long caseId, UserInfo userInfo){\r\n JdbcTemplate jdbcTemplate = SpringUtil.getBean(JdbcTemplate.class)\r\n CaseInfo caseInfo = SpringUtil.getBean(CaseInfoServiceImpl.class).queryById(caseId);\r\n ResponseResourceBundle bundle = SpringUtil.getBean(ResponseResourceBundle.class);\r\n Logger logger = LogManager.getLogger();\r\n if (caseInfo==null){\r\n throw bundle.exception(13020);\r\n }\r\n if(userInfo == null){\r\n logger.error(\"用户信息为空,不能操作卷宗\")\r\n return false;\r\n }\r\n\r\n if(userInfo.getUserId() == null){\r\n logger.error(\"用户信息id,不能操作卷宗\")\r\n return false;\r\n }\r\n\r\n //获取当前用户信息\r\n //判断角色,有的角色可以制卷\r\n RoleClient client = SpringUtil.getBean(RoleClient.class);\r\n if(client != null){\r\n //logger.info(\"获取角色信息\")\r\n List<Role> roleList = client.queryByUserId(userInfo.getUserId());\r\n if(!ObjectUtils.isEmpty(roleList)){\r\n for(Role role : roleList){\r\n //logger.info(\"获取角色信息:{}\",role.getCode())\r\n if(\"ADMIN\".equals(role.getCode())){\r\n return true;\r\n }\r\n if(\"MIDDLE_MAINTAINER\".equals(role.getCode()) || \"BASIC_MAINTAINER\".equals(role.getCode())){\r\n //判断该案件是否属于本法院\r\n UserClient userClient = SpringUtil.getBean(UserClient.class);\r\n if(client != null){\r\n User user = userClient.queryById(userInfo.getUserId());\r\n if(user != null){\r\n //logger.info(\"获取用户信息:{}\",user.getRealName())\r\n Organization organization = user.getOrg();\r\n if(organization != null){\r\n //logger.info(\"获取用组织:{},案件组织:{}\",organization.getId(),caseInfo.getCourt().getId())\r\n if(StringUtils.hasText(organization.getCode())){\r\n if(Long.parseLong(organization.getCode()).compareTo(caseInfo.getCourt().getId()) == 0)\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if(!StringUtils.hasText(userInfo.getUserCode())){\r\n logger.error(\"用户信息code,不能操作卷宗\")\r\n return false;\r\n }\r\n //承办人,合仪成员,书记员有制卷权限\r\n if((jdbcTemplate.queryForObject(\"select count(0) as count from \" +\r\n \"case_trial_member where case_id = ? and type in(1,2,4,6) and user_code = ?\", Integer.class, caseId, userInfo.getUserCode()) > 0) ||\r\n (caseInfo.getJudge() != null ? (caseInfo.getJudge().getId().compareTo(Long.parseLong(userInfo.getUserCode())) == 0) : false)){\r\n return true;\r\n }\r\n\r\n return false;\r\n}', '原审案件是否拥有制卷权限', '2024-01-24 11:19:56', '2024-01-04 15:09:51');
添加索引
mysql:
ALTER TABLE case_info ADD INDEX idx_court_id (court_id);
达梦:
CREATE INDEX idx_court_id ON SYSDBA.case_info (court_id);
1.8.16
更新内容:
推送统一存储逻辑:合并的时候只新增合并;
分类保存新增逻辑:在保存之前合并华宇xml;
执行sql:
-- 先查询 isRerank 节点是否存在:
select * from common_property where property_name = 'storageConfig'
-- 不存在,增加 isRerank 节点
update common_property set property_value = JSON_SET(ifnull(property_value, '{}'), '$.isRerank', false),property_desc = '统一存储配置:checkFileSize=计算存储文件大小,notifyCaller = 是否推送华宇, pushSpecialNodes:false:将润普 卷宗封面 卷底 备考表 卷内目录下的材料修改为特殊节点数据进行推送 false:按照原本数据结构推送, isRerank = false :统一存储开启刷新装订排序功能 反之关闭 不配置默认开启' where property_name = 'storageConfig'
- isRerank: 统一存储是否开启刷新装订排序功能,
- false:对于已装订案件,需要手动点击整体排序,并保存;
1.8.19
更新内容:
- 组合查询增加减刑假释案件获取
执行sql:
1、配置表新增请求头
-- 查询是否有减刑假释请求头配置:
select * from common_property where property_name = 'HBHYCaseJXJSHeader';
-- 没有则新增该配置,全省请求头是统一个配置
INSERT INTO `common_property` (`property_name`, `property_value`, `property_desc`, `create_time`, `create_user_id`, `update_flag`, `display`) VALUES ('HBHYCaseJXJSHeader', '{\n \"appToken\": \"153b9b105e9842aa9a4e1fea733180d6\",\n \"x-openapi-app-id\": \"api-clszf\"\n}\n\n', '减刑假释调用华宇接口请求头', NULL, 1, 0, 0);
达梦:
INSERT INTO
common_property(
property_id,
property_name,
property_value,
property_desc,
create_time,
create_user_id,
update_flag,
display
)
VALUES
(
511,
'HBHYCaseJXJSHeader',
'{"appToken": "153b9b105e9842aa9a4e1fea733180d6","x-openapi-app-id": "api-clszf"}',
'减刑假释调用华宇接口请求头',
NULL,
1,
0,
0
);
2、配置管理中,getCasesSettings 新增减刑假释接口:
"1-12": {
"url": "http://131.16.200.228:9080/jxjs/mvc/api/v1/aj/getAjxxList",
"parseHandler": "HBHYCaseJXJSService"
},
"1-20802": {
"url": "http://131.16.200.228:9080/jxjs/mvc/api/v1/aj/getAjxxList",
"parseHandler": "HBHYCaseJXJSService"
},
"1-226": {
"url": "http://131.16.200.228:9080/jxjs/mvc/api/v1/aj/getAjxxList",
"parseHandler": "HBHYCaseJXJSService"
}
- 1-12(格式:案件类型-审判程序): 邢更
- 1-20802:刑更监
- 1-226:刑更备
- “parseHandler”: “HBHYCaseJXJSService”: 减刑假释案件标识
1.8.21
更新内容:
- 新增查询案件巡查列表接口;
- 新增刷新案件表质检结果字段的groovy脚本;
- 新增推送质检实时结果给第三方系统功能。
- 包质检包:casecheckapp-1.0.22 ,电子卷宗caseinfo:caseinfo-web-1.8.21 ,客户端:com.whrp.courtscan 2.0.6.0
执行sql:
sys_resource表新增sql
给超级管理员、书记员角色勾选该权限;
mysql、达梦:
-- 先查询id
select id from sys_resource where name = '卷宗服务';
-- 插入资源,其中pid为上面查到的id
INSERT INTO sys_resource (id, name, url, method, pid, description, create_time, update_time) VALUES (1767739865681629185, '查询案件巡查列表', '/caseinfo/query-inspection-result', 'GET', 1, '查询案件巡查列表', '2024-03-13 10:30:01', '2024-03-13 10:30:01');
-- 先查询id
select id from sys_resource where name = '内部服务';
-- 插入资源,其中pid为上面查到的id
INSERT INTO sys_resource (id, name, url, method, pid, description, create_time, update_time) VALUES (1767741332719144961, '更新案件质检结果', '/caseinfo/runpu/update-case-check-result', 'GET', 1504368641097302019, '更新案件质检结果', '2024-03-13 10:35:51', '2024-03-13 10:35:51');
- 执行以下SQL,初始化案件表中check_case_result字段的值,巡检结果:0合格,1不合格
update case_info set check_case_result = null;
- 看看sys_dict表中是否有bak 和 label_bak这个字段,如果没有执行以下SQL
mysql:
ALTER TABLE sys_dict add bak BIGINT after deleted;
ALTER TABLE sys_dict add label_bak varchar(255);
达梦:
ALTER TABLE sys_dict add bak BIGINT;
ALTER TABLE sys_dict add label_bak varchar(255);
- 查询字典表中 script 字段是否存在,不存在则新增
mysql、达梦:
-- 先查询该字段是否存在
SELECT * FROM sys_dict where category = 'script' and pid = 0
-- 不存在,则新增
INSERT INTO sys_dict (id, pid, category, label, value, sn, create_time, update_time, deleted, label_bak) VALUES (1681937547180167200, 0, 'script', '表达式库', NULL, 0, '2023-08-01 15:12:06', '2023-08-21 11:25:42', 0, NULL);
- sys_dict表新增sql,SQL执行完成后,去新平台设置中刷新sys_dict缓存
-- 其中 pid 为上面 script 的 id
INSERT INTO `sys_dict`(`pid`, `category`, `label`, `value`, `sn`, `create_time`, `update_time`, `deleted`, `bak`, `label_bak`) VALUES (1681937547180167200, 'script', 'syncInspectionStatus', 'package com.whrp.dossier.caseinfo.groovy\r\n\r\nimport cn.hutool.extra.spring.SpringUtil\r\nimport com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper\r\nimport com.fasterxml.jackson.core.type.TypeReference\r\nimport com.fasterxml.jackson.databind.JsonNode\r\nimport com.fasterxml.jackson.databind.ObjectMapper\r\nimport com.whrp.dossier.caseinfo.entity.CaseInfo\r\nimport com.whrp.dossier.caseinfo.service.impl.CaseInfoServiceImpl\r\nimport com.whrp.framework.common.util.CStringUtils\r\nimport okhttp3.OkHttpClient\r\nimport okhttp3.Request\r\nimport okhttp3.Response\r\nimport org.apache.logging.log4j.LogManager\r\nimport org.apache.logging.log4j.Logger\r\nimport org.springframework.util.StringUtils\r\n\r\nimport java.util.function.Supplier\r\nimport java.util.stream.Collectors\r\n\r\ndef main(param) {\r\n Logger log = LogManager.getLogger();\r\n OkHttpClient okHttpClient = SpringUtil.getBean(OkHttpClient.class);\r\n ObjectMapper jsonMapper = SpringUtil.getBean(ObjectMapper.class);\r\n Map<String, Supplier> config = (Map<String, Supplier>) SpringUtil.getBean(\"config\");\r\n CaseInfoServiceImpl caseInfoService = SpringUtil.getBean(CaseInfoServiceImpl.class);\r\n JsonNode _jsonNode = jsonMapper.convertValue(param,new TypeReference<JsonNode>() {})\r\n String condition = _jsonNode.at(\"/condition\").asText();\r\n caseInfoService.batchExecutes(StringUtils.hasText(condition) ? condition : null, 100, caseInfos -> {\r\n List<String> caseIdList = caseInfos.stream().map(caseinfo -> caseinfo.getCaseId().toString()).collect(Collectors.toList());\r\n if (caseIdList.size() > 0) {\r\n String caseIdsStr = String.join(\",\", caseIdList);\r\n Request request = new Request.Builder().url(CStringUtils.pathConcat(config.get(\"caseCheckServiceIp\").toString(), \"court/caseInfo/queryCaseInfoByCaseIds\") + \"?caseIds=\" + caseIdsStr).build();\r\n try (Response response = okHttpClient.newCall(request).execute()) {\r\n if (response.isSuccessful()) {\r\n JsonNode caseCheckResultNode = jsonMapper.readTree(response.body().string());\r\n List<String> passCheckCaseId = new ArrayList<>();\r\n List<String> failCheckedCaseId = new ArrayList<>();\r\n if (caseCheckResultNode != null && caseCheckResultNode.size() > 0) {\r\n for (JsonNode jsonNode : caseCheckResultNode) {\r\n if (jsonNode.at(\"/checkCaseResult\").asInt() == 0) {\r\n passCheckCaseId.add(jsonNode.at(\"/caseId\").asText());\r\n }\r\n if (jsonNode.at(\"/checkCaseResult\").asInt() == 1) {\r\n failCheckedCaseId.add(jsonNode.at(\"/caseId\").asText());\r\n }\r\n }\r\n\r\n if (passCheckCaseId.size() > 0) {\r\n caseInfoService.update(new UpdateWrapper<CaseInfo>().set(\"check_case_result\", 0).in(\"case_id\", passCheckCaseId));\r\n }\r\n\r\n if (failCheckedCaseId.size() > 0) {\r\n caseInfoService.update(new UpdateWrapper<CaseInfo>().set(\"check_case_result\", 1).in(\"case_id\", failCheckedCaseId));\r\n }\r\n }\r\n }\r\n\r\n\r\n } catch (IOException e) {\r\n log.error(\"\", e);\r\n }\r\n }\r\n return true;\r\n });\r\n log.info(\"跑完了\");\r\n}\r\n', 0, '2024-03-12 16:56:19', '2024-03-12 17:22:48', 0, NULL, NULL);
- 配置表新增质检ip,有质检服务的地区配置相应的ip,没有质检服务的地区,则设置property_value为空字符串;
mysql
-- 查询是否有该配置
select * from common_property where property_name = 'caseCheckServiceIp'
-- 没有则插入
INSERT INTO common_property (property_id, property_name, property_value, property_desc, create_time, create_user_id, update_flag, display) VALUES (80, 'caseCheckServiceIp', 'http://192.168.0.31:8087', '质检服务Ip地址', 1587912520429, 1, 0, 0);
达梦:
已存在,直接置为空
update common_property set property_value = '',property_desc='质检推送' where property_name = 'caseCheckServiceIp'
- 客户端【巡检结果】模块展示的配置,有质检服务的地区设置为true,否则设置为false。
update common_property set property_value = JSON_SET(property_value, '$.module."qc-list"', false) where property_name = 'clientConfig';
达梦:
update common_property set property_value = JSONB_SET(property_value, '{module,qc-list}', 'false'),property_desc='新客户端版本>=1.9.14使用,
module = 客户端功能模块开关:
combination-query:组合查询
operation-records: 操作日志
batch-upload:批量上传,
qc-list: 巡检结果
extra.yy_scanner_license = 影源扫描仪license,
extra.ca_appkey = CA AppKey' where property_name = 'clientConfig';
8、清洗质检检测结果到卷宗 caseinfo 表:(上质检系统地区需要执行)
将卷宗库中案件表的 check_case_result 字段清洗一次:
打开 case_info 的 swagger 前端页面,搜索 script
,然后修改接口地址为 /caseinfo/script/syncInspectionStatus
,执行一次;
质检推送实时检测结果更新说明:
1、在卷宗服务中新建开发者账号,并给该账号配置接口资源:/caseinfo/runpu/update-case-check-result
2、调用质检服务接口,注册地址后,将质检完成后的结果实时推送给卷宗;
衡水质检服务swagger地址:http://131.108.2.9:8087/court/doc.html#/home,其他地区换成对应ip
注册成功后可以在质检redis中看到结果,示例如下:
1.8.22
更新内容:
- 第三方入卷新增批次,判断是否进行编目,自动分类的批次管理显示第三方入卷批次和其来源
修改内容:
1、caseinfo-service.yml 新增配置:
#统一存储华宇推送,共用的用户
hy-user-name: hydossier
如图位置:
2、查看sys_user表,如果没有华宇用户,新增一个
-- 查询是否存在该用户
select * from sys_user where user_name = 'hydossier';
-- 没有则新增
INSERT INTO `sys_user`( `code`, `user_name`, `password`, `real_name`, `email`, `last_login_ip`, `last_login_time`, `org_id`, `deleted`, `user_type`, `create_time`, `update_time`, `settings`, `phone`, `status`, `user_name_bak`) VALUES ('456', 'hydossier', '123456', 'HUAYU', '', NULL, NULL, 101, 0, 'DEVELOPER', '2024-01-11 14:56:04', '2024-04-21 11:22:44', '{\"NOTIFY\": {\"url\": \"http://192.168.0.27:8220/user/base/print\", \"headers\": {\"ClientID\": \"whrp\", \"ClientSecret\": \"0*Fghj&MZ60Pfts%a%oZ9MB3RY&2#NMT\"}, \"switches\": [{\"enabled\": false, \"courtCode\": [], \"serviceName\": \"rename\"}], \"successHandler\": \"\"}}', '', 'EFFECTIVE', NULL);
达梦:
INSERT INTO
sys_user(
id,
code,
user_name,
password,
real_name,
email,
last_login_ip,
last_login_time,
org_id,
deleted,
user_type,
create_time,
update_time,
settings,
phone,
status,
user_name_bak
)
VALUES
(
'1788372574556786688',
'456',
'hydossier',
'123456',
'HUAYU',
'',
NULL,
NULL,
101,
0,
'DEVELOPER',
'2024-01-11 14:56:04',
'2024-04-21 11:22:44',
'{"NOTIFY": {"url": "http://192.168.0.27:8220/user/base/print", "headers": {"ClientID": "whrp", "ClientSecret": "0*Fghj&MZ60Pfts%a%oZ9MB3RY&2#NMT"}, "switches": [{"enabled": false, "courtCode": [], "serviceName": "rename"}], "successHandler": ""}}',
'',
'EFFECTIVE',
NULL
);
- serviceName: rename : 第三方入卷编目标识
- enabled:编目开关,
- 为false时,该用户不编目;
- 为true,如果 courtCode为空或者没有该节点,所有法院都编目,如果courtCode中有值,如[“193”,”194”],则只编目这两个法院;
3、修改批次名称,修改完成后去平台设置清理字典表的缓存;
-- 查询批次
select * from sys_dict where category = 'case_batch_source';
-- 不存在则插入
INSERT INTO `sys_dict` (`id`, `pid`, `category`, `label`, `value`, `sn`, `create_time`, `update_time`, `deleted`, `label_bak`) VALUES (1508720275485622272, 0, 'case_batch_source', '案件批次来源', NULL, 0, '2022-03-21 10:55:00', '2022-03-21 11:31:48', 0, NULL);
-- 插入批次,如果已经存在,则修改其label值,和下面对应
-- 如将【客户端】改为【润普扫描客户端】
INSERT INTO `sys_dict` (`id`, `pid`, `category`, `label`, `value`, `sn`, `create_time`, `update_time`, `deleted`, `label_bak`) VALUES (1508720275485622273, 1508720275485622272, 'case_batch_source', '润普扫描客户端', 'CLIENT', 0, '2022-03-21 10:55:00', '2024-03-18 15:22:58', 0, NULL);
INSERT INTO `sys_dict` (`id`, `pid`, `category`, `label`, `value`, `sn`, `create_time`, `update_time`, `deleted`, `label_bak`) VALUES (1508720275485622274, 1508720275485622272, 'case_batch_source', '润普阅卷系统', 'REVIEW', 0, '2022-03-21 10:55:00', '2024-03-18 15:23:05', 0, NULL);
INSERT INTO `sys_dict` (`id`, `pid`, `category`, `label`, `value`, `sn`, `create_time`, `update_time`, `deleted`, `label_bak`) VALUES (1508720275485622275, 1508720275485622272, 'case_batch_source', '华宇电子卷宗系统', 'HUAYU', 0, '2022-03-21 10:55:00', '2024-03-18 15:23:07', 0, NULL);
INSERT INTO `sys_dict` (`id`, `pid`, `category`, `label`, `value`, `sn`, `create_time`, `update_time`, `deleted`, `label_bak`) VALUES (1508720275485622276, 1508720275485622272, 'case_batch_source', '未知', 'UNKNOWN', 0, '2022-03-21 10:55:00', '2022-03-29 16:20:35', 0, NULL);
清理缓存:
对应关系:
其中 sys_dict 表中 category = case_batch_source中value值 与 sys_user 表中的 real_name值相等,如图:
如果还有其他第三方入卷用户,如华夏,则查询该用户的real_name值,在 sys_dict.category=case_batch_source,新增对应的来源,其value值为 real_name的值;
4、修改批次表字段类型
ALTER TABLE sub_case_info MODIFY source VARCHAR(50);
1.8.26
更新内容:
- 第三方入卷时将file_type为OCR-JSON,OCR-TEXT,THUMBNAIL,PDF转换成json,txt,jpg,pdf,与上传保持一致;
修改内容:
1、修正数据
-- 查询storage_file表的file_type字段是否有OCR-JSON,OCR-TEXT,THUMBNAIL,PDF这几个值
select * from storage_file where BINARY file_type in ('THUMBNAIL', 'PDF', 'OCR-JSON', 'OCR-TEXT') ;
-- 如果有需要将值修改为json,txt,jpg,pdf
update storage_file set file_type = case when file_type = 'THUMBNAIL' then 'jpg' when file_type = 'OCR-TEXT' then 'txt'
when file_type = 'OCR-JSON' then 'json'
when file_type = 'PDF' then 'pdf'
else file_type end where BINARY file_type in ('THUMBNAIL', 'PDF', 'OCR-JSON', 'OCR-TEXT')
2、storage_file.ext_type 字段长度改为:50
ALTER TABLE `storage_file` MODIFY COLUMN `ext_type` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '扩展类型;PDF:单层pdf,SearchablePDF:双层pdf' AFTER `file_type`;
1.8.27
更新内容:
- 连页文书提取要素,连页文书的第一页可以正常提取到要素,那么连页文书后面的图片也要按照第一页的要素进行编目。
basic更新包:http://wh.everydo.com:9040/app/detail?id=1108
caseinfo1.8.27 更新包:http://wh.everydo.com:9040/app/detail?id=1107
1.8.28
更新内容:
获取华宇代入卷数据,到正卷待分类区;
分类页面添加跨卷移动功能
华宇统一接口:
省院地址:http://131.16.100.235:17682/dzjz
廊坊 http://131.106.7.12:9395/dzjz
石家庄 http://131.101.2.53:53108/dzjz
保定 http://131.102.1.148:9395/dzjz
沧州 http://131.107.28.187:8002/dzjz
雄安 http://131.115.2.92:58017/dzjz
衡水 http://131.108.3.240:10001/dzjz
唐山 http://131.105.191.13:10001/dzjz
邢台 http://131.109.10.120:9395/dzjz
承德 http://131.104.6.100:10001/dzjz
邯郸 http://131.100.0.10:10001/dzjz
秦皇岛 http://131.110.1.241:10001/dzjz
张家口 http://131.103.2.243:10001/dzjz
增加华宇统一接口地址,其中的ip换成对应地区的ip:
-- 查询该配置是否存在:
select * from common_property where property_name = 'getHYDossierUrl';
-- 不存在则插入
INSERT INTO `common_property` ( `property_name`, `property_value`, `property_desc`, `create_time`, `create_user_id`, `update_flag`, `display`) VALUES ('getHYDossierUrl', 'http://ip:port/dzjz/api/v5/dossiers/tree', '获取华宇卷宗信息接口', NULL, 1, 0, 0);
配置请求头,全省是同一个请求头
-- 查询该配置是否存在:
select * from common_property where property_name = 'HBHYCaseDossierHeader';
-- 不存在则插入
INSERT INTO `common_property` ( `property_name`, `property_value`, `property_desc`, `create_time`, `create_user_id`, `update_flag`, `display`) VALUES ('HBHYCaseDossierHeader', '{\n \"systemId\": \"rpxt\",\n \"authcode\": \"e2ba422986a44e40b2a87f0ef916f448\"\n}\n\n', '河北华宇获取卷宗信息请求头', NULL, 1, 0, 0);
增加接口资源
-- 先查询需要增加接口的父id
select id from sys_resource where name = '河北华宇';
-- 插入资源,其中父id 是上面语句查到的id,
-- 增加该权限后,给超级管理员、书记员角色勾选上该权限
INSERT INTO `sys_resource` (`name`, `url`, `method`, `pid`, `description`, `create_time`, `update_time`) VALUES ('获取华宇待入卷数据', '/caseinfo/hb-extra/sync-hy-drj', 'GET', 109, '获取华宇待入卷数据', '2024-04-12 11:26:56', '2024-04-12 11:26:56');
达梦:
INSERT INTO
sys_resource (
id,
name,
url,
method,
pid,
description,
create_time,
update_time
)
VALUES
(
'1788486421544308736',
'获取华宇待入卷数据',
'/caseinfo/hb-extra/sync-hy-drj',
'GET',
109,
'获取华宇待入卷数据',
'2024-04-12 11:26:56',
'2024-04-12 11:26:56'
);
确认case-info 的yml配置,yml中 whrp.storage.default-header
存储头与配置表一致,并且获取华宇待入卷的文件存储头一致;
该存储头用于待入卷里面去除文件地址存储头,非此存储头(数据库地址出现多头情况),华宇待入卷的目前编目归目会失败
查看配置表中存储头:
select property_value from common_property where property_name = 'storageFlagId'
查看yml中存储头,如果与配置表不一致,则改为和配置表中一致:
只有统一存储有默认存储头,非统一存储地区关闭该配置
验证待入卷功能(需要给角色配置上权限):
1.8.29
更新内容:
自动编目序号调整功能合并代码
长文本分析,单独定义服务地址,增加nlp-long-text节点
修改内容:
配置管理中,搜索 paddleServiceConfig
字段:
根据各地实际情况配置功能的开关与ip地址
{
"nlp-card": {
"enable": false,
"url": "http://192.168.0.31:8009"
},
"nlp-doc": {
"enable": false,
"url": "http://192.168.0.31:8009"
},
"nlp-long-text": {
"enable": false,
"url": "http://192.168.0.31:8009"
}
}
- nlp-card: 卡证要素提取
- nlp-doc:文书要素提取
- nlp-long-text:长文本分析
1.8.30
1、编目归目完成之后推送华宇使用队列,队列名称:generate.push.xml.queue,队列并发数配置:
generate-push-xml-concurrency: 2 #编目归目完成之后推送华宇使用队列
并发数配置如图:
更新包后,mq中会自动新增一个队列:
2、/caseinfo/detail-info 增加两个字段executeDocNumber – 执行依据文书文号,executeUnit – 作出执行依据单位(无需操作,张丛帅工单:202404020005:给沧州厂商提供接口文档,调用接口获取封皮信息)
3、统计个人当月以及当日的批次页数统计接口,增加0批次数据;第三方入卷统计page_total_num
旧数据要修改执行sql:(保定地区需要执行,2024-04-15以后批次表中新增的华宇批次)
UPDATE sub_case_info a,
( SELECT case_id, sub_case_id, COUNT( file_id ) AS file_total FROM file_info WHERE case_id = 15623043370 AND display = 0 GROUP BY sub_case_id ) b
SET a.page_total_num =
CASE
WHEN a.sub_case_id = b.sub_case_id THEN
b.file_total ELSE a.page_total_num
END
WHERE
a.case_id = 15623043370
AND a.invalid_flag = 0
AND a.sub_index = 0
AND a.sub_case_id = b.sub_case_id;
- case_id按照自己需求修改,进行更新
basic
basic 当前线上地区最低版本为 1.4.6,升级到 1.6.0 需要修改内容:
1.5.0
需要更新的包:caseinfo – 1.7.38版本, basic – 1.5.0版本
1、上传因为双层pdf转换更不上文件上传的速度,导致转换双层pdf转换有积压,造成推送华宇任务卡住,故现在流程变成在上传的时候转换的是单层pdf,这个时候生成一个延时任务,将单层pdf转换为双层pdf。因为已经有单层pdf生成,所以不会耽误推送华宇
修改内容:
修改basic----application.yml
(1).需要开启app.convert.services.Image2PDFService的转换服务,并且将这个转换服务的权重设置成1级,另外开启PaddlePDFService转换双层pdf的服务,一共后面生成双层pdf使用
如;
Image2PDFService:
enabled: true # "jpg","png","jpeg","tif","tiff","gif","bmp" 转 单层 pdf
order: 1
PaddlePDFService: #双层PDF
enabled: true
(2)pdf服务使用的生成器选择NonOCR
pdf:
# 并发数
concurrency: 3
# PDF生成器,可选为 Tesseract FourthParadigm
builder: NonOCR
1.5.4
1、修改PDF生成图片的dpi值:读取配置,如果配置不存在则自动计算
2、新增配置:
INSERT INTO `common_property` (`property_name`, `property_value`, `property_desc`, `create_time`, `create_user_id`, `update_flag`, `display`) VALUES ('PDF2ImageDPI', '96', 'PDF转图片 图片dpi值', NULL, 1, 0, 0);
达梦:
INSERT INTO
common_property (
property_id,
property_name,
property_value,
property_desc,
create_time,
create_user_id,
update_flag,
display
)
VALUES
(
'512',
'PDF2ImageDPI',
'96',
'PDF转图片 图片dpi值',
NULL,
1,
0,
0
);
备注:① DPI取值范围:96 - 300; ② 该配置只针对PDF不拆分上传。拆分上传拆出来的图片caseinfo自动计算DPI值;
3、PDF生成缩略图后,出现数字栏位变成“方框”,解决办法:需要更新basic服务的镜像 tesseract-openidk:4.0-1.8-2.tar
1.5.7
集成第三版预处理;
如果使用第三版预处理,需要先上线第三版预处理服务;
basic新增yml配置:
service3: #第三版预处理
url: http://131.103.2.98:8111i
detect: #检测
detect_blank: # 图像空白检测 { "isBlank": 1 }
enabled: true
blank_thresh: 0.5 # 默认值为0.5, 范围[0,1], 深色区域在图像中的面积占比; 值越大图像越容易被判定为空白.
detect_black_edge: # 图像黑边检测 { "haveBlack": 1 }
enabled: false
black_thresh: 0.01 # 默认为0.03, 范围[0, 0.5], 黑边判定边界范围; 值越大越容易判定为有黑边, 但错误消除的概率会增加.
black_area_thresh: 3000 # 默认为3000, 范围小于图片面积即可; 黑边面积阈值, 大于阈值的区域不被判定为黑边.
detect_binder: # 图像印痕检测 { "haveBinder": 1}
enabled: false
binder_thresh: 0.15 # 默认为0.15, 范围[0, 0.5], 印痕判定边界范围; 值越大被判定为印痕的区域数量越多, 但错误消除的概率会增加.
detect_skew: # 图像歪斜检测 { "isSkew": 1 }
enabled: false
skew_thresh: 0.5 # 默认为0.5, 范围[0, 90), 图像偏转角度阈值; 图像偏转角度大于阈值为歪斜.
detect_orientation: # 颠倒检测 { "direc": 0 } 0:图片为正 1:图片为倒 2:图片顺时针旋转90度 3:图片逆时针旋转90度
enabled: false
detect_noise: # 噪声检测 { "haveNoise": 1 }
enabled: false
noise_thresh: 0.5 # 默认:0.5 范围:[0,1], 值越小越容易判定为有噪声.
detect_stamps_fingerprint: # 图像印章指纹检测 { "haveStampsFingerprint": 1 }
enabled: false
lower_area: 0.1 # 默认:0.1, 范围:[0,100](比upper_area小), 印章和指纹与原图的面积比下限.
upper_area: 5 # 默认:0.1, 范围:[0,100](比lower_area大), 印章和指纹与原图的面积比下限.
detect_content: # 图像内容识别检测 { "rect": [214, 527, 2122, 1629] }
enabled: false
ignore_range: 0.5 # 默认0.5, 范围[0, 1], 值越大检测的范围细,但可能会产生缺失.
detect_blur: # 图像虚化检测 { "isBlur": 1 }
enabled: false
blur_thresh: 0.2 # 默认0.2, 范围[0,1], 越大越容易被判定为虚化.
remove: #优化
remove_black_edge: # 图像去黑边
enabled: true
black_thresh: 0.01 # 默认为0.03, 范围[0, 0.5], 黑边判定边界范围; 值越大越容易判定为有黑边, 但错误消除的概率会增加.
black_area_thresh: 3000 # 默认为3000, 范围小于图片面积即可; 黑边面积阈值, 大于阈值的区域不被判定为黑边.
remove_binder: # 图像去除印痕
enabled: true
binder_thresh: 0.15 # 默认为0.15, 范围[0, 0.5], 印痕判定边界范围; 值越大被判定为印痕的区域数量越多, 但错误消除的概率会增加.
remove_skew: # 图像歪斜矫正
enabled: true
skew_thresh: 0.5 # 默认为0.5, 范围[0, 90), 图像偏转角度阈值; 图像偏转角度大于阈值为歪斜.
correct_orientation: # 颠倒矫正
enabled: false
remove_noise: # 噪声去除
enabled: false
noise_thresh: 0.5 # 默认:0.5 范围:[0,1], 值越小越容易判定为有噪声.
remove_stamps_fingerprint: # 图像印章指纹消除
enabled: false
lower_area: 0.1 # 默认:0.1, 范围:[0,100](比upper_area小), 印章和指纹与原图的面积比下限.
upper_area": 5 # 默认:0.1, 范围:[0,100](比lower_area大), 印章和指纹与原图的面积比下限.
remove_blur: # 图像去模糊
enabled: false
blur_thresh: 0.2 # 默认0.2, 范围[0,1], 越大越容易被判定为虚化.
trapezoid_correct: # 图像梯形矫正
enabled: false
points: "[[0,0],[1,0],[1,1],[0,1]]" # 梯形四个顶点坐标,顺序为左上,右上,右下,左下
get_A4: # A4填充
enabled: false
dpi: -1 # 指定生成的A4图片dpi大小,若值为-1,则保留原图dpi,若原图无dpi属性信息,则dpi默认为200.
erase: # 图像污点擦出
enabled: false
rect: "[[0,0],[0,0]]" # 需要擦除的矩形的左上,右下两个点坐标
1.6.0
- 要素提取支持卡证 自定义 指定服务
- 编目规则关键字,支持模糊匹配,以最长值匹配优先
basic-service.yml文件新增: (要素提取在OCR下有engine默认值,ticket下可自定义某类别,比如第四范式…)
卡证提取支持第四范式服务(FourthParadigm),线上无第四范式服务,不用增加该配置
# 上了第四范式的地区才配置
app:
# 自定义要素提取服务
ticket:
sfz: FourthParadigm # 身份证
yyzz: FourthParadigm # 营业执照
jhz: FourthParadigm # 结婚证
jsz: FourthParadigm # 驾驶证
xsz: FourthParadigm # 行驶证
hkb: FourthParadigm # 户口本
支持以下卡证:
FP(“A”,”fp”,”invoice”,”发票”),
XSZ(“B”,”xsz”,”vehicle_license”,”行驶证”),
HKB(“C”,”hkb”,”hukouben”,”户口本”),
JSZ(“D”,”jsz”,”driver_license”,”驾驶证”),
JHZ(“F”,”jhz”,”jiehunzheng”,”结婚证”),
KDD(“G”,”kdd”,”express”,”快递单”),
LSZ(“H”,”lsz”,null,”律师证”),
SFZ(“I”,”sfz”,”idcard”,”身份证”),
YYZZ(“J”,”yyzz”,”business”,”营业执照”),
ZZJGDMZ(“K”,”zzjgdmz”,”zuzhijigoudaimazheng”,”组织机构代码证”),
user
basic 当前线上地区最低版本为 1.4.22,升级到 1.5.10 需要修改内容:
1.4.25
新增同步华宇uim组织架构和用户接口定时调度任务:
uimSyncOrgSingle:只含当前法院及当前法院下的庭室和部门,不含下属法院等信息
uimSyncUserSingle:只含本法院组织下的用户
1.5.0
角色表新增数据权限字段:
mysql:
ALTER TABLE sys_role ADD COLUMN `privileges` JSON DEFAULT NULL COMMENT '数据权限' after privilege;
达梦:
ALTER TABLE sys_role ADD COLUMN "privileges" TEXT
将原权限字段更新到新增的权限字段:
update sys_role set privileges=JSON_SET(IFNULL(privileges,'{}'), '$.USER', privilege) where privilege is not null and privilege <> '' and privilege <> 'null';
mysql、达梦:
INSERT INTO sys_dict
(id, pid, category, label, value, sn, create_time, update_time, deleted)
VALUES(1695377034627842744, 0, 'data_privilege_type', '数据权限类别', NULL, 0, '2023-11-22 16:54:59', '2023-11-23 16:22:59', 0);
INSERT INTO sys_dict
(id, pid, category, label, value, sn, create_time, update_time, deleted)
VALUES(1695377034627842745, 1695377034627842744, 'data_privilege_type', '用户权限', 'USER', 0, '2023-11-22 16:58:03', '2023-11-23 16:22:59', 0);
INSERT INTO sys_dict
(id, pid, category, label, value, sn, create_time, update_time, deleted)
VALUES(1695377034627842746, 1695377034627842744, 'data_privilege_type', '组织权限', 'ORG', 0, '2023-11-22 16:58:03', '2023-11-23 16:22:59', 0);
INSERT INTO sys_dict
(id, pid, category, label, value, sn, create_time, update_time, deleted)
VALUES(1695377034627842747, 1695377034627842744, 'data_privilege_type', '省院人事权限', 'HRMS', 0, '2023-11-22 16:58:03', '2023-11-23 16:22:59', 0);
INSERT INTO sys_dict
(id, pid, category, label, value, sn, create_time, update_time, deleted)
VALUES(1695377034627842749, 1695377034627842744, 'data_privilege_type', '流转权限', 'TRANSFER', 0, '2023-11-22 16:58:03', '2023-11-23 16:22:59', 0);
1.5.7
人事管理系统 创建定时调度任务 调度任务名称:deleteTmpFile(此定时调度任务会删除hr_file表中is_used值为0的数据,is_used值为0表示该文件未被启用)
gateway
basic 当前线上地区最低版本为 1.0.0,升级到 1.1.3 需要修改内容:
直接换包
最后编辑:hbrunpu 更新时间:2024-08-19 10:49