Merge remote-tracking branch 'origin/fix_bug_first_stage' into fix_bug_first_stage
This commit is contained in:
@@ -386,7 +386,7 @@ ALTER TABLE `laws_weilai`.`sys_user`
|
||||
DROP INDEX `uniq_sys_user_phone`,
|
||||
DROP INDEX `uniq_sys_user_email`;
|
||||
|
||||
-- 参数项清单 修改字段长度 2022-07-17
|
||||
-- 参数项清单 修改字段长度 2022-07-17 2022-07-20 已同步生产环境
|
||||
ALTER TABLE `laws_weilai`.`params_info`
|
||||
MODIFY COLUMN `params_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '参数名称' AFTER `is_must`,
|
||||
MODIFY COLUMN `description` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '参数说明' AFTER `duty_territory`;
|
||||
@@ -417,4 +417,80 @@ ALTER TABLE `laws_weilai`.`params_report_detail`
|
||||
|
||||
ALTER TABLE `laws_weilai`.`report_cert_category_params_info`
|
||||
MODIFY COLUMN `params_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '参数名称' AFTER `params_number`,
|
||||
MODIFY COLUMN `description` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '参数说明' AFTER `params_name`;
|
||||
MODIFY COLUMN `description` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '参数说明' AFTER `params_name`;
|
||||
|
||||
-- 文档翻译表 2022-07-20 已同步生产环境
|
||||
CREATE TABLE `laws_weilai`.`doc_translation` (
|
||||
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人',
|
||||
`create_time` datetime NULL DEFAULT NULL COMMENT '创建日期',
|
||||
`update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人',
|
||||
`update_time` datetime NULL DEFAULT NULL COMMENT '更新日期',
|
||||
`sys_org_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '所属部门',
|
||||
`buss_document_library_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '文档库id',
|
||||
`text_status` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '文本状态',
|
||||
`file_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '文件名称',
|
||||
`source_language` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '翻译前语言(源语言)',
|
||||
`target_language` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '翻译后语言(目标语言)',
|
||||
`translation_result` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '翻译结果',
|
||||
`translation_time` datetime NULL DEFAULT NULL COMMENT '转换时间',
|
||||
`release_condition` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '发布情况',
|
||||
`source_file_id` varchar(4000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '源文件id',
|
||||
`target_file_id` varchar(4000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '目标文件id',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '文档翻译表' ROW_FORMAT = Dynamic;
|
||||
|
||||
-- 文档翻译-源语言数据字典
|
||||
INSERT INTO `laws_weilai`.`sys_dict` (`id`, `dict_name`, `dict_code`, `description`, `del_flag`, `create_by`, `create_time`, `update_by`, `update_time`, `type`, `dict_en_name`, `is_tag_dict`, `is_read_only`, `attribute_type`, `order_num`) VALUES ('1550306517749547010', '文档翻译-翻译语言-源语言', 'source_language', '文档翻译-翻译语言-源语言', 0, 'admin', '2022-07-22 10:27:32', 'admin', '2022-07-22 10:29:17', NULL, NULL, 1, 0, '1', 2);
|
||||
|
||||
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('155030756958032691412', '1550306517749547010', '中文', 'zh', '中文', 2, 1, 'admin', '2022-07-22 10:31:43', 'admin', '2022-07-22 10:31:59', 1, NULL, NULL, '0', 'Chinese');
|
||||
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('155030763691987763313', '1550306517749547010', '英文', 'en', '英文', 1, 1, 'admin', '2022-07-22 10:31:59', NULL, NULL, 1, NULL, NULL, '0', 'English');
|
||||
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('155030778369954611414', '1550306517749547010', '日语', 'ja', '日语', 3, 1, 'admin', '2022-07-22 10:32:34', NULL, NULL, 1, NULL, NULL, '0', 'Japanese');
|
||||
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('155030790598028493015', '1550306517749547010', '俄语', 'ru', '俄语', 4, 1, 'admin', '2022-07-22 10:33:03', NULL, NULL, 1, NULL, NULL, '0', 'Russian');
|
||||
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('155030797657042124916', '1550306517749547010', '德语', 'de', '德语', 5, 1, 'admin', '2022-07-22 10:33:20', 'admin', '2022-07-22 10:34:58', 1, NULL, NULL, '0', 'German');
|
||||
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('15503088022275522577', '1550306517749547010', '法语', 'fr', '法语', 6, 1, 'admin', '2022-07-22 10:36:36', NULL, NULL, 1, NULL, NULL, '0', 'French');
|
||||
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('15503112074344038418', '1550306517749547010', '意大利语', 'it', '意大利语', 7, 1, 'admin', '2022-07-22 10:46:10', NULL, NULL, 1, NULL, NULL, '0', 'Italian');
|
||||
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('15503112704622100509', '1550306517749547010', '波兰语', 'pl', '波兰语', 8, 1, 'admin', '2022-07-22 10:46:25', NULL, NULL, 1, NULL, NULL, '0', 'Polish');
|
||||
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('15503114101073674251', '1550306517749547010', '泰语', 'th', '泰语', 9, 1, 'admin', '2022-07-22 10:46:58', NULL, NULL, 1, NULL, NULL, '0', 'Thai language');
|
||||
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('15503115557294080012', '1550306517749547010', '印地语', 'hi', '印地语', 11, 1, 'admin', '2022-07-22 10:47:33', NULL, NULL, 1, NULL, NULL, '0', 'Hindi');
|
||||
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('15503116395022417943', '1550306517749547010', '印尼语', 'id', '印尼语', 12, 1, 'admin', '2022-07-22 10:47:53', NULL, NULL, 1, NULL, NULL, '0', 'Indonesian');
|
||||
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('15503117185522892814', '1550306517749547010', '西班牙语', 'es', '西班牙语', 13, 1, 'admin', '2022-07-22 10:48:12', NULL, NULL, 1, NULL, NULL, '0', 'Spanish language');
|
||||
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('15503118402584084505', '1550306517749547010', '葡萄牙语', 'pt', '葡萄牙语', 17, 1, 'admin', '2022-07-22 10:48:41', 'admin', '2022-07-22 10:49:21', 1, NULL, NULL, '0', 'Portuguese');
|
||||
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('15503119403009474586', '1550306517749547010', '朝鲜语', 'ko', '朝鲜语', 15, 1, 'admin', '2022-07-22 10:49:05', NULL, NULL, 1, NULL, NULL, '0', 'Korean');
|
||||
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('15503120084961361947', '1550306517749547010', '越南语', 'vi', '越南语', 16, 1, 'admin', '2022-07-22 10:49:21', NULL, NULL, 1, NULL, NULL, '0', 'Vietnamese');
|
||||
|
||||
-- 文档翻译-目标语言数据字典
|
||||
INSERT INTO `laws_weilai`.`sys_dict` (`id`, `dict_name`, `dict_code`, `description`, `del_flag`, `create_by`, `create_time`, `update_by`, `update_time`, `type`, `dict_en_name`, `is_tag_dict`, `is_read_only`, `attribute_type`, `order_num`) VALUES ('1550306581909815297', '文档翻译-翻译语言-目标语言', 'target_language', '文档翻译-翻译语言-目标语言', 0, 'admin', '2022-07-22 10:27:47', 'admin', '2022-07-22 10:29:13', NULL, NULL, 1, 0, '1', 1);
|
||||
|
||||
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('15503075695803269141', '1550306581909815297', '中文', 'zh', '中文', 2, 1, 'admin', '2022-07-22 10:31:43', 'admin', '2022-07-22 10:31:59', 1, NULL, NULL, '0', 'Chinese');
|
||||
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('15503076369198776331', '1550306581909815297', '英文', 'en', '英文', 1, 1, 'admin', '2022-07-22 10:31:59', NULL, NULL, 1, NULL, NULL, '0', 'English');
|
||||
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('15503077836995461141', '1550306581909815297', '日语', 'ja', '日语', 3, 1, 'admin', '2022-07-22 10:32:34', NULL, NULL, 1, NULL, NULL, '0', 'Japanese');
|
||||
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('15503079059802849301', '1550306581909815297', '俄语', 'ru', '俄语', 4, 1, 'admin', '2022-07-22 10:33:03', NULL, NULL, 1, NULL, NULL, '0', 'Russian');
|
||||
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('15503079765704212491', '1550306581909815297', '德语', 'de', '德语', 5, 1, 'admin', '2022-07-22 10:33:20', 'admin', '2022-07-22 10:34:58', 1, NULL, NULL, '0', 'German');
|
||||
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('1550308802227552257', '1550306581909815297', '法语', 'fr', '法语', 6, 1, 'admin', '2022-07-22 10:36:36', NULL, NULL, 1, NULL, NULL, '0', 'French');
|
||||
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('1550311207434403841', '1550306581909815297', '意大利语', 'it', '意大利语', 7, 1, 'admin', '2022-07-22 10:46:10', NULL, NULL, 1, NULL, NULL, '0', 'Italian');
|
||||
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('1550311270462210050', '1550306581909815297', '波兰语', 'pl', '波兰语', 8, 1, 'admin', '2022-07-22 10:46:25', NULL, NULL, 1, NULL, NULL, '0', 'Polish');
|
||||
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('1550311410107367425', '1550306581909815297', '泰语', 'th', '泰语', 9, 1, 'admin', '2022-07-22 10:46:58', NULL, NULL, 1, NULL, NULL, '0', 'Thai language');
|
||||
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('1550311555729408001', '1550306581909815297', '印地语', 'hi', '印地语', 11, 1, 'admin', '2022-07-22 10:47:33', NULL, NULL, 1, NULL, NULL, '0', 'Hindi');
|
||||
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('1550311639502241794', '1550306581909815297', '印尼语', 'id', '印尼语', 12, 1, 'admin', '2022-07-22 10:47:53', NULL, NULL, 1, NULL, NULL, '0', 'Indonesian');
|
||||
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('1550311718552289281', '1550306581909815297', '西班牙语', 'es', '西班牙语', 13, 1, 'admin', '2022-07-22 10:48:12', NULL, NULL, 1, NULL, NULL, '0', 'Spanish language');
|
||||
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('1550311840258408450', '1550306581909815297', '葡萄牙语', 'pt', '葡萄牙语', 17, 1, 'admin', '2022-07-22 10:48:41', 'admin', '2022-07-22 10:49:21', 1, NULL, NULL, '0', 'Portuguese');
|
||||
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('1550311940300947458', '1550306581909815297', '朝鲜语', 'ko', '朝鲜语', 15, 1, 'admin', '2022-07-22 10:49:05', NULL, NULL, 1, NULL, NULL, '0', 'Korean');
|
||||
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('1550312008496136194', '1550306581909815297', '越南语', 'vi', '越南语', 16, 1, 'admin', '2022-07-22 10:49:21', NULL, NULL, 1, NULL, NULL, '0', 'Vietnamese');
|
||||
|
||||
-- 文档翻译-发布情况数据字典
|
||||
INSERT INTO `laws_weilai`.`sys_dict` (`id`, `dict_name`, `dict_code`, `description`, `del_flag`, `create_by`, `create_time`, `update_by`, `update_time`, `type`, `dict_en_name`, `is_tag_dict`, `is_read_only`, `attribute_type`, `order_num`) VALUES ('1550314527293128705', '文档翻译-发布情况', 'release_condition', '文档翻译-发布情况', 0, 'admin', '2022-07-22 10:59:21', 'admin', '2022-07-22 11:01:07', NULL, NULL, 1, 0, '1', 2);
|
||||
|
||||
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('1550314666682433537', '1550314527293128705', '已发布', 'published', '已发布', 1, 1, 'admin', '2022-07-22 10:59:55', NULL, NULL, 1, NULL, NULL, '0', 'Have published');
|
||||
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('1550314731320852482', '1550314527293128705', '草稿', 'draft', '草稿', 2, 1, 'admin', '2022-07-22 11:00:10', NULL, NULL, 1, NULL, NULL, '0', 'Draft');
|
||||
|
||||
-- 文档翻译-翻译结果数据字典
|
||||
INSERT INTO `laws_weilai`.`sys_dict` (`id`, `dict_name`, `dict_code`, `description`, `del_flag`, `create_by`, `create_time`, `update_by`, `update_time`, `type`, `dict_en_name`, `is_tag_dict`, `is_read_only`, `attribute_type`, `order_num`) VALUES ('1550314971079852034', '文档翻译-翻译结果', 'translation_result', '文档翻译-翻译结果', 0, 'admin', '2022-07-22 11:01:07', NULL, NULL, NULL, NULL, 1, 0, '1', 1);
|
||||
|
||||
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('1550315090797871105', '1550314971079852034', '翻译中', 'In the translation', '翻译中', 1, 1, 'admin', '2022-07-22 11:01:36', NULL, NULL, 1, NULL, NULL, '0', 'In the translation');
|
||||
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('1550315193285689345', '1550314971079852034', '翻译完成', 'Translation done', '翻译完成', 2, 1, 'admin', '2022-07-22 11:02:00', NULL, NULL, 1, NULL, NULL, '0', 'Translation done');
|
||||
|
||||
-- 文档翻译表-增加字段 编号、标题
|
||||
ALTER TABLE `laws_weilai`.`doc_translation`
|
||||
ADD COLUMN `serial_number` varchar(255) NULL COMMENT '编号' AFTER `buss_document_library_id`,
|
||||
ADD COLUMN `title` varchar(255) NULL COMMENT '标题' AFTER `serial_number`;
|
||||
|
||||
+26
-8
@@ -381,13 +381,24 @@ public class ParamsCollectManifestEOController extends JeroController<ParamsColl
|
||||
@ApiOperation(value="参数项收集清单-下发收集", notes="参数项收集清单-下发收集")
|
||||
@PostMapping(value = "/issueCollection")
|
||||
// @RequiresPermissions("params:collectManifest:issue")
|
||||
public Result<?> issueCollection(ParamsCollectManifestVO paramsCollectManifestVO) {
|
||||
boolean isSuccess = paramsCollectManifestEOService.issueCollection(paramsCollectManifestVO);
|
||||
if (isSuccess) {
|
||||
return Result.OK("下发收集成功!");
|
||||
} else {
|
||||
return Result.error("下发收集失败!");
|
||||
}
|
||||
public Result<List<String>> issueCollection(ParamsCollectManifestVO paramsCollectManifestVO) {
|
||||
List<String> msgList = paramsCollectManifestEOService.issueCollection(paramsCollectManifestVO);
|
||||
return Result.OK(msgList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一键下发收集
|
||||
*
|
||||
* @param paramsCollectManifestVO
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "参数项收集清单-一键下发收集")
|
||||
@ApiOperation(value="参数项收集清单-一键下发收集", notes="参数项收集清单-一键下发收集")
|
||||
@PostMapping(value = "/issueCollectionAll")
|
||||
// @RequiresPermissions("params:collectManifest:issue")
|
||||
public Result<List<String>> issueCollectionAll(ParamsCollectManifestVO paramsCollectManifestVO) {
|
||||
List<String> msgList = paramsCollectManifestEOService.issueCollectionAll(paramsCollectManifestVO);
|
||||
return Result.OK(msgList);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -511,7 +522,14 @@ public class ParamsCollectManifestEOController extends JeroController<ParamsColl
|
||||
return Result.OK("带入工程接口人成功!");
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation(value = "参数项收集清单-全部导出")
|
||||
@GetMapping(value = "/exportAll")
|
||||
// @RequiresPermissions("report:detail:export:normal")
|
||||
public void exportAll(ParamsCollectManifestVO paramsCollectManifestVO,
|
||||
HttpServletResponse response,
|
||||
HttpServletRequest request) {
|
||||
paramsCollectManifestEOService.exportAll(paramsCollectManifestVO, response, request);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
+1
@@ -83,6 +83,7 @@ public class ParamsManifestEOController extends JeroController<ParamsManifestEO,
|
||||
// 处理 状态 中英文
|
||||
Map<String, String> stateMap = ManifestStateEnum.toMap(cut);
|
||||
rows.forEach(manifestEO -> {
|
||||
manifestEO.setProjectName(paramsManifestEOService.getProjectById(manifestEO.getProjectId()).getProjectName());
|
||||
manifestEO.setState(stateMap.get(manifestEO.getState()));
|
||||
});
|
||||
return Result.OK(cut, pageList);
|
||||
|
||||
-3
@@ -1,8 +1,6 @@
|
||||
package com.jero.modules.cert.collect.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.FieldStrategy;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
@@ -121,7 +119,6 @@ public class ParamsCollectManifestBaseEO implements Serializable {
|
||||
/**工程接口人*/
|
||||
@Excel(name = "工程接口人", width = 15)
|
||||
@ApiModelProperty(value = "工程接口人")
|
||||
@TableField(updateStrategy = FieldStrategy.IGNORED)
|
||||
private String sdt;
|
||||
|
||||
/**填写人*/
|
||||
|
||||
+3
@@ -100,4 +100,7 @@ public class ParamsManifestEO implements Serializable {
|
||||
@TableField(exist = false)
|
||||
private String cut;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String projectName;
|
||||
|
||||
}
|
||||
|
||||
+3
@@ -6,6 +6,7 @@ import com.jero.modules.cert.collect.entity.ParamsCollectManifestEO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Description: 参数收集清单
|
||||
@@ -17,6 +18,8 @@ public interface ParamsCollectManifestEOMapper extends BaseMapper<ParamsCollectM
|
||||
|
||||
List<ParamsCollectManifestEO> listInfo(@Param("paramsCollectManifestEO") ParamsCollectManifestEO paramsCollectManifestEO);
|
||||
|
||||
List<Map<String, Object>> listInfoForExport(@Param("paramsCollectManifestEO") ParamsCollectManifestEO paramsCollectManifestEO);
|
||||
|
||||
// 查询控件类型为 标题的 参数项
|
||||
List<ParamsCollectManifestEO> listInfoOfTitle(@Param("paramsManifestId") String paramsManifestId);
|
||||
|
||||
|
||||
+2
@@ -23,4 +23,6 @@ public interface ParamsManifestEOMapper extends BaseMapper<ParamsManifestEO> {
|
||||
|
||||
List<ParamsManifestVO> listInfoAll(@Param("idList") List<String> idList);
|
||||
|
||||
ParamsManifestVO getProjectById(@Param("projectId") String projectId);
|
||||
|
||||
}
|
||||
|
||||
+8
@@ -80,6 +80,14 @@
|
||||
order by del_flag desc, add_flag desc, change_flag desc, nio_number asc
|
||||
</select>
|
||||
|
||||
<select id="listInfoForExport" resultType="java.util.LinkedHashMap">
|
||||
select *
|
||||
from params_collect_manifest
|
||||
<include refid="BaseQuerySql"/>
|
||||
and control_type != '11'
|
||||
order by del_flag desc, add_flag desc, change_flag desc, nio_number asc
|
||||
</select>
|
||||
|
||||
<select id="listInfoOfTitle" resultMap="ParamsCollectManifestEOResultMap">
|
||||
select *
|
||||
from params_collect_manifest
|
||||
|
||||
+12
@@ -112,4 +112,16 @@
|
||||
</foreach>
|
||||
|
||||
</select>
|
||||
|
||||
<select id="getProjectById" resultMap="ParamsManifestEOResultMapForCopy">
|
||||
select tmp_tb.* from(
|
||||
select
|
||||
plb.id as project_id,
|
||||
concat(pni.project_name,'-',pyni.year_name,' ',target_market) as project_name
|
||||
from project_library_base plb
|
||||
left join project_name_info as pni on plb.project_name_id = pni.id
|
||||
left join project_year_name_info as pyni on plb.year_name_id = pyni.id
|
||||
) tmp_tb
|
||||
where project_id = #{projectId}
|
||||
</select>
|
||||
</mapper>
|
||||
+8
-1
@@ -6,6 +6,7 @@ import com.jero.modules.cert.collect.entity.ParamsCollectManifestEO;
|
||||
import com.jero.modules.cert.collect.vo.ParamsCollectManifestVO;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -126,7 +127,10 @@ public interface IParamsCollectManifestEOService extends IService<ParamsCollectM
|
||||
boolean updateDreBatch(ParamsCollectManifestVO paramsCollectManifestVO);
|
||||
|
||||
// 下发收集
|
||||
boolean issueCollection(ParamsCollectManifestVO paramsCollectManifestVO);
|
||||
List<String> issueCollection(ParamsCollectManifestVO paramsCollectManifestVO);
|
||||
|
||||
// 一键下发收集
|
||||
List<String> issueCollectionAll(ParamsCollectManifestVO paramsCollectManifestVO);
|
||||
|
||||
// 配置-下拉选项
|
||||
List<Map<String, String>> getConfigLabelList(ParamsCollectManifestVO paramsCollectManifestVO);
|
||||
@@ -145,4 +149,7 @@ public interface IParamsCollectManifestEOService extends IService<ParamsCollectM
|
||||
|
||||
// 带入工程接口人
|
||||
boolean bringSdtInto(ParamsCollectManifestVO paramsCollectManifestVO);
|
||||
|
||||
// 全部导出
|
||||
void exportAll(ParamsCollectManifestVO paramsCollectManifestVO, HttpServletResponse response, HttpServletRequest request);
|
||||
}
|
||||
|
||||
+3
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.jero.modules.cert.collect.entity.ParamsManifestEO;
|
||||
import com.jero.modules.cert.collect.vo.ParamsManifestHistoryVO;
|
||||
import com.jero.modules.cert.collect.vo.ParamsManifestVO;
|
||||
import com.jero.modules.cert.template.entity.ParamsTemplateEO;
|
||||
|
||||
import java.util.List;
|
||||
@@ -79,4 +80,6 @@ public interface IParamsManifestEOService extends IService<ParamsManifestEO> {
|
||||
IPage getAllManifest(IPage page, String projectName);
|
||||
|
||||
ParamsManifestEO copy(ParamsManifestEO paramsManifestEO, String sourceManifestId);
|
||||
|
||||
ParamsManifestVO getProjectById(String projectId);
|
||||
}
|
||||
|
||||
+797
-71
File diff suppressed because it is too large
Load Diff
+6
@@ -20,6 +20,7 @@ import com.jero.modules.cert.collect.mapper.ParamsConfigEOMapper;
|
||||
import com.jero.modules.cert.collect.mapper.ParamsManifestEOMapper;
|
||||
import com.jero.modules.cert.collect.service.*;
|
||||
import com.jero.modules.cert.collect.vo.ParamsManifestHistoryVO;
|
||||
import com.jero.modules.cert.collect.vo.ParamsManifestVO;
|
||||
import com.jero.modules.cert.report.service.IParamsReportEOService;
|
||||
import com.jero.modules.cert.template.entity.ParamsInfoPublishEO;
|
||||
import com.jero.modules.cert.template.entity.ParamsTemplateEO;
|
||||
@@ -618,4 +619,9 @@ public class ParamsManifestEOServiceImpl extends ServiceImpl<ParamsManifestEOMap
|
||||
|
||||
return paramsManifestEO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ParamsManifestVO getProjectById(String projectId) {
|
||||
return paramsManifestEOMapper.getProjectById(projectId);
|
||||
}
|
||||
}
|
||||
|
||||
+7
-1
@@ -22,7 +22,7 @@ public class ParamsCollectManifestVO {
|
||||
private String paramsTemplateId; // 参数模板id
|
||||
|
||||
@ApiModelProperty(value = "参数模板发布版本")
|
||||
private String paramsTemplatePublishVersion; // 参数模板发布版本
|
||||
private Integer paramsTemplatePublishVersion; // 参数模板发布版本
|
||||
|
||||
@ApiModelProperty(value = "nio编号")
|
||||
private String nioNumber; // nio编号
|
||||
@@ -71,4 +71,10 @@ public class ParamsCollectManifestVO {
|
||||
private String targetConfigIds; // 引用参数专用
|
||||
|
||||
private String cut; // 引用参数专用
|
||||
|
||||
private String exportName; // 导出文件名
|
||||
|
||||
@ApiModelProperty(value = "用户类型")
|
||||
private String userTypes; // 用户类型
|
||||
|
||||
}
|
||||
|
||||
+2
-2
@@ -65,11 +65,11 @@ public class ParamsExportTemplateEOController extends JeroController<ParamsExpor
|
||||
.orderByDesc(ParamsExportTemplateEO::getCreateTime);
|
||||
Page<ParamsExportTemplateEO> page = new Page<ParamsExportTemplateEO>(pageNo, pageSize);
|
||||
IPage<ParamsExportTemplateEO> pageList = paramsExportTemplateEOService.page(page, queryWrapper);
|
||||
List<ParamsExportTemplateEO> rows = pageList.getRecords();
|
||||
// 处理 状态 中英文
|
||||
List<ParamsExportTemplateEO> rows = pageList.getRecords();
|
||||
Map<String, String> stateMap = ExportTemplateStateEnum.toMap(cut);
|
||||
rows.forEach(exportTemplateEO -> {
|
||||
exportTemplateEO.setState(stateMap.get(exportTemplateEO.getState()));
|
||||
exportTemplateEO.setState_dictText(stateMap.get(exportTemplateEO.getState()));
|
||||
});
|
||||
return Result.OK(pageList);
|
||||
}
|
||||
|
||||
+30
-10
@@ -1,15 +1,21 @@
|
||||
package com.jero.modules.cert.report.controller;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.jero.common.api.vo.Result;
|
||||
import com.jero.common.aspect.annotation.AutoLog;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.common.system.base.controller.JeroController;
|
||||
import com.jero.modules.cert.report.entity.ParamsExportTemplateEO;
|
||||
import com.jero.modules.cert.report.entity.ParamsReportConfigEO;
|
||||
import com.jero.modules.cert.report.entity.ParamsReportDetailEO;
|
||||
import com.jero.modules.cert.report.service.IParamsExportTemplateEOService;
|
||||
import com.jero.modules.cert.report.service.IParamsReportConfigEOService;
|
||||
import com.jero.modules.cert.report.service.IParamsReportDetailEOService;
|
||||
import com.jero.modules.cert.report.vo.ParamsReportDetailVO;
|
||||
import com.jero.modules.oss.entity.OSSFile;
|
||||
import com.jero.modules.oss.service.IOSSFileService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -43,6 +49,13 @@ public class ParamsReportDetailEOController extends JeroController<ParamsReportD
|
||||
@Autowired
|
||||
private IParamsReportConfigEOService paramsReportConfigEOService;
|
||||
|
||||
@Autowired
|
||||
private IOSSFileService ossFileService;
|
||||
|
||||
@Autowired
|
||||
private IParamsExportTemplateEOService paramsExportTemplateEOService;
|
||||
|
||||
|
||||
/**
|
||||
* 表头中英文切换
|
||||
*
|
||||
@@ -150,17 +163,24 @@ public class ParamsReportDetailEOController extends JeroController<ParamsReportD
|
||||
public void exportCustom(ParamsReportDetailVO paramsReportDetailVO,
|
||||
HttpServletResponse response,
|
||||
HttpServletRequest request) {
|
||||
paramsReportDetailEOService.exportCustom(paramsReportDetailVO, response, request);
|
||||
}
|
||||
// 判断模板类型是word 还是 excel
|
||||
ParamsExportTemplateEO paramsExportTemplateEO = paramsExportTemplateEOService.getById(paramsReportDetailVO.getExportTemplateId());
|
||||
List<OSSFile> ossFiles = ossFileService.getFileInfosByConnectId(paramsExportTemplateEO.getFileConnectId());
|
||||
if (CollectionUtil.isNotEmpty(ossFiles)) {
|
||||
String fileName = ossFiles.get(0).getFileName();
|
||||
String templateFileType = fileName.substring(fileName.lastIndexOf("."));
|
||||
if (".doc,.DOC,.docx,.DOCX".contains(templateFileType)) {
|
||||
paramsReportDetailEOService.exportCustomWord(paramsReportDetailVO, response, request);
|
||||
|
||||
// @ApiOperation(value = "上报库参数项-自定义导出excel")
|
||||
// @GetMapping(value = "/exportCustomExcel")
|
||||
//// @RequiresPermissions("report:detail:export:custom")
|
||||
// public void exportCustomExcel(ParamsReportDetailVO paramsReportDetailVO,
|
||||
// HttpServletResponse response,
|
||||
// HttpServletRequest request) {
|
||||
// paramsReportDetailEOService.exportCustomExcel(paramsReportDetailVO, response, request);
|
||||
// }
|
||||
} else if (".xls, .XLS,.xlsx,.XLSX".contains(templateFileType)) {
|
||||
paramsReportDetailEOService.exportCustomExcel(paramsReportDetailVO, response, request);
|
||||
|
||||
}
|
||||
} else {
|
||||
throw new JeroBootException("没有找到导出模板!");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 列表查询
|
||||
|
||||
+3
@@ -82,4 +82,7 @@ public class ParamsExportTemplateEO implements Serializable {
|
||||
@TableField(exist = false)
|
||||
private String cut;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String state_dictText;
|
||||
|
||||
}
|
||||
|
||||
+4
-1
@@ -50,6 +50,9 @@ public interface IParamsReportDetailEOService extends IService<ParamsReportDetai
|
||||
// 导出模板下拉选项
|
||||
List<Map<String, String>> getTemplateLabelList();
|
||||
|
||||
void exportCustom(ParamsReportDetailVO paramsReportDetailVO, HttpServletResponse response, HttpServletRequest request);
|
||||
// 自定义导出-word模板
|
||||
void exportCustomWord(ParamsReportDetailVO paramsReportDetailVO, HttpServletResponse response, HttpServletRequest request);
|
||||
|
||||
void exportCustomExcel(ParamsReportDetailVO paramsReportDetailVO, HttpServletResponse response, HttpServletRequest request);
|
||||
|
||||
}
|
||||
|
||||
+220
-59
@@ -23,23 +23,25 @@ import com.jero.modules.cert.report.entity.*;
|
||||
import com.jero.modules.cert.report.enums.ExportTypeEnum;
|
||||
import com.jero.modules.cert.report.mapper.ParamsReportDetailEOMapper;
|
||||
import com.jero.modules.cert.report.service.*;
|
||||
import com.jero.modules.cert.report.util.Docx4jUtil;
|
||||
import com.jero.modules.cert.report.vo.ParamsReportDetailVO;
|
||||
import com.jero.modules.cert.template.enums.ControlTypeEnum;
|
||||
import com.jero.modules.ocr.util.LineHumpUtil;
|
||||
import com.jero.modules.oss.entity.OSSFile;
|
||||
import com.jero.modules.oss.service.IOSSFileService;
|
||||
import com.jero.modules.project.util.ExcelUtil;
|
||||
import com.jero.modules.project.util.WordUtil;
|
||||
import com.jero.modules.split.common.ReadExcel;
|
||||
import com.jero.modules.system.entity.SysDictItem;
|
||||
import com.jero.modules.system.service.ISysDictItemService;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.http.entity.ContentType;
|
||||
import org.apache.poi.hssf.util.HSSFColor;
|
||||
import org.apache.poi.util.IOUtils;
|
||||
import org.apache.poi.xssf.usermodel.*;
|
||||
import org.aspectj.util.FileUtil;
|
||||
import org.docx4j.Docx4J;
|
||||
import org.docx4j.openpackaging.exceptions.Docx4JException;
|
||||
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
@@ -504,7 +506,7 @@ public class ParamsReportDetailEOServiceImpl extends ServiceImpl<ParamsReportDet
|
||||
//创建临时文件夹
|
||||
String fileNowPath = uploadpath + "/tempZip/" + UUID.randomUUID().toString().replace("-","") + File.separator + fileOriName;
|
||||
File nowFile = new File(fileNowPath);
|
||||
if (nowFile.exists()){
|
||||
if (nowFile.exists()) {
|
||||
nowFile.delete();
|
||||
}
|
||||
nowFile.mkdirs();
|
||||
@@ -669,7 +671,7 @@ public class ParamsReportDetailEOServiceImpl extends ServiceImpl<ParamsReportDet
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exportCustom(ParamsReportDetailVO paramsReportDetailVO, HttpServletResponse response, HttpServletRequest request) {
|
||||
public void exportCustomWord(ParamsReportDetailVO paramsReportDetailVO, HttpServletResponse response, HttpServletRequest request) {
|
||||
OutputStream os = null;
|
||||
OutputStream wordOS = null;
|
||||
String fileOriName = "上报库参数项自定义导出信息";
|
||||
@@ -691,6 +693,7 @@ public class ParamsReportDetailEOServiceImpl extends ServiceImpl<ParamsReportDet
|
||||
// 查询导出数据
|
||||
List<Map> allParamsInfoList = queryForExportCustom(paramsReportDetailVO);
|
||||
Map<String, String> params = allParamsInfoList.get(0);
|
||||
List<Map<String, Object>> imgListAll = (List<Map<String, Object>>) allParamsInfoList.get(1).get("imgListAll");
|
||||
|
||||
String templateUrl = "";
|
||||
ParamsExportTemplateEO paramsExportTemplateEO = paramsExportTemplateEOService.getById(paramsReportDetailVO.getExportTemplateId());
|
||||
@@ -702,7 +705,7 @@ public class ParamsReportDetailEOServiceImpl extends ServiceImpl<ParamsReportDet
|
||||
// 替换模板中的占位符
|
||||
try {
|
||||
//下载关联文件内容
|
||||
List<OSSFile> allRelevFileList = (List<OSSFile>) allParamsInfoList.get(1).get("fileListAll");
|
||||
List<OSSFile> allRelevFileList = (List<OSSFile>) allParamsInfoList.get(2).get("fileListAll");
|
||||
if (allRelevFileList != null && !allRelevFileList.isEmpty()) {
|
||||
allRelevFileList = allRelevFileList.stream().distinct().collect(Collectors.toList());
|
||||
downLoadFileList(allRelevFileList,fileNowPath + File.separator + "导出文件");
|
||||
@@ -713,23 +716,15 @@ public class ParamsReportDetailEOServiceImpl extends ServiceImpl<ParamsReportDet
|
||||
wordOS = new FileOutputStream(fileNowPath + File.separator + repFileName);
|
||||
if (CosBootUtil.doesObjectExist(templateUrl)) {
|
||||
InputStream wordTemplate = CosBootUtil.download(templateUrl);
|
||||
com.qcloud.cos.utils.IOUtils.copy(wordTemplate, wordOS);
|
||||
}
|
||||
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(wordTemplate);
|
||||
// 替换占位符内容
|
||||
WordUtil.replacePictureBatch(wordMLPackage, imgListAll);
|
||||
WordUtil.replaceVariable(wordMLPackage, params);
|
||||
Docx4J.save(wordMLPackage, wordOS);
|
||||
|
||||
// 替换占位符内容
|
||||
byte[] wordContent = Docx4jUtil.of(fileNowPath + File.separator + repFileName)
|
||||
.addParams(params)
|
||||
.get();
|
||||
ByteArrayInputStream wordis = new ByteArrayInputStream(wordContent);
|
||||
OutputStream wordFileOS = new FileOutputStream(fileNowPath + File.separator + repFileName);
|
||||
int len1 = 0;
|
||||
while ((len1 = wordis.read()) != -1) {
|
||||
wordFileOS.write(len1);
|
||||
wordOS.flush();
|
||||
wordOS.close();
|
||||
}
|
||||
wordOS.flush();
|
||||
wordOS.close();
|
||||
wordFileOS.flush();
|
||||
wordFileOS.close();
|
||||
|
||||
// 打包导出压缩包
|
||||
response.setHeader("Content-Disposition",
|
||||
@@ -745,16 +740,18 @@ public class ParamsReportDetailEOServiceImpl extends ServiceImpl<ParamsReportDet
|
||||
}
|
||||
|
||||
// 添加导出历史
|
||||
/*String uploadFileName = fileOriName + ".zip";
|
||||
MultipartFile mFile = new MockMultipartFile(uploadFileName, uploadFileName, ContentType.APPLICATION_OCTET_STREAM.toString(), fis); // 用于上传
|
||||
String uploadFileName = fileOriName + ".zip";
|
||||
InputStream uploadFileio = new FileInputStream(new File(fileNowPath+".zip"));
|
||||
MultipartFile mFile = new MockMultipartFile(uploadFileName, uploadFileName, "text/plain", uploadFileio); // 用于上传
|
||||
OSSFile ossFile = ossFileService.uploadLocalOfCos(mFile, "/report", "", CutEnum.CN.getValue()); // 上传导出的压缩包
|
||||
ParamsReportExportHistoryEO paramsReportExportHistoryEO = new ParamsReportExportHistoryEO();
|
||||
paramsReportExportHistoryEO.setExportType(ExportTypeEnum.NORMAL.getValue());
|
||||
paramsReportExportHistoryEO.setExportType(ExportTypeEnum.CUSTOM.getValue());
|
||||
paramsReportExportHistoryEO.setExportFileId(ossFile.getId());
|
||||
paramsReportExportHistoryEO.setParamsManifestId(paramsReportDetailVO.getParamsManifestId());
|
||||
paramsReportExportHistoryEO.setExportTime(new Date());
|
||||
paramsReportExportHistoryEOService.add(paramsReportExportHistoryEO);*/
|
||||
paramsReportExportHistoryEOService.add(paramsReportExportHistoryEO);
|
||||
|
||||
uploadFileio.close();
|
||||
os.flush();
|
||||
os.close(); // 后开先关
|
||||
fis.close(); // 先开后关
|
||||
@@ -775,6 +772,102 @@ public class ParamsReportDetailEOServiceImpl extends ServiceImpl<ParamsReportDet
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exportCustomExcel(ParamsReportDetailVO paramsReportDetailVO, HttpServletResponse response, HttpServletRequest request) {
|
||||
OutputStream os = null;
|
||||
OutputStream wordOS = null;
|
||||
String fileOriName = "上报库参数项自定义导出信息";
|
||||
if (CutEnum.EN.getValue().equals(paramsReportDetailVO.getCut())) {
|
||||
fileOriName = "Params report custom data";
|
||||
}
|
||||
if (StringUtils.isNotEmpty(paramsReportDetailVO.getExportName())) {
|
||||
fileOriName = paramsReportDetailVO.getExportName();
|
||||
}
|
||||
//创建临时文件夹
|
||||
String fileNowPath = uploadpath + "/tempZip/" + UUID.randomUUID().toString().replace("-","") + File.separator + fileOriName;
|
||||
File nowFile = new File(fileNowPath);
|
||||
if (nowFile.exists()){
|
||||
nowFile.delete();
|
||||
}
|
||||
nowFile.mkdirs();
|
||||
String fileName = fileOriName + ".xlsx";
|
||||
|
||||
// 查询导出数据
|
||||
List<Map> allParamsInfoList = queryForExportCustom(paramsReportDetailVO);
|
||||
HashMap<String, String> params = (HashMap<String, String>) allParamsInfoList.get(0);
|
||||
|
||||
String templateUrl = "";
|
||||
ParamsExportTemplateEO paramsExportTemplateEO = paramsExportTemplateEOService.getById(paramsReportDetailVO.getExportTemplateId());
|
||||
List<OSSFile> ossFiles = ossFileService.getFileInfosByConnectId(paramsExportTemplateEO.getFileConnectId());
|
||||
if (CollectionUtil.isNotEmpty(ossFiles)) {
|
||||
templateUrl = ossFiles.get(0).getUrl();
|
||||
}
|
||||
|
||||
// 替换模板中的占位符
|
||||
try {
|
||||
|
||||
//下载关联文件内容
|
||||
List<OSSFile> allRelevFileList = (List<OSSFile>) allParamsInfoList.get(2).get("fileListAll");
|
||||
if (allRelevFileList != null && !allRelevFileList.isEmpty()) {
|
||||
allRelevFileList = allRelevFileList.stream().distinct().collect(Collectors.toList());
|
||||
downLoadFileList(allRelevFileList,fileNowPath + File.separator + "导出文件");
|
||||
}
|
||||
|
||||
// 拿取模板
|
||||
String repFileName = fileName.replaceAll("/","_");
|
||||
wordOS = new FileOutputStream(fileNowPath + File.separator + repFileName);
|
||||
if (CosBootUtil.doesObjectExist(templateUrl)) {
|
||||
InputStream wordTemplate = CosBootUtil.download(templateUrl);
|
||||
// com.qcloud.cos.utils.IOUtils.copy(wordTemplate, wordOS);
|
||||
|
||||
ExcelUtil.variableReplace(wordTemplate, wordOS, params);
|
||||
|
||||
}
|
||||
|
||||
// 替换占位符内容
|
||||
// poi方式
|
||||
// TemplateExportParams templateExportParams = new TemplateExportParams();
|
||||
// templateExportParams.setTemplateUrl(fileNowPath + File.separator + repFileName);
|
||||
// Workbook workbook = ExcelExportUtil.exportExcel(templateExportParams, params);
|
||||
|
||||
|
||||
// OutputStream word = new FileOutputStream(fileNowPath + File.separator + repFileName);
|
||||
// workbook.write(word);
|
||||
wordOS.flush();
|
||||
wordOS.close();
|
||||
// word.flush();
|
||||
// word.close();
|
||||
|
||||
// 打包导出压缩包
|
||||
response.setHeader("Content-Disposition",
|
||||
"attachment; filename=\""+ ReadExcel.encodeFileName(fileOriName+".zip", request) +"\"");
|
||||
response.setContentType("application/force-download");
|
||||
response.flushBuffer();
|
||||
os = response.getOutputStream();
|
||||
ZipUtil.zip(fileNowPath,fileNowPath+".zip");
|
||||
FileInputStream fis = new FileInputStream(fileNowPath+".zip");
|
||||
int len2 = 0;
|
||||
while ((len2 = fis.read()) != -1) {
|
||||
os.write(len2);
|
||||
}
|
||||
|
||||
os.flush();
|
||||
os.close(); // 后开先关
|
||||
fis.close(); // 先开后关
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
throw new JeroBootException("下载文件失败,请重试");
|
||||
|
||||
} finally {
|
||||
IOUtils.closeQuietly(os);
|
||||
IOUtils.closeQuietly(wordOS);
|
||||
File tempZipFile = new File(uploadpath + "/tempZip");
|
||||
FileUtil.deleteContents(tempZipFile);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void downLoadFileList(List<OSSFile> allRelevFileList,String fileNowPath) {
|
||||
File nowFile = new File(fileNowPath);
|
||||
if (nowFile.exists()){
|
||||
@@ -852,23 +945,23 @@ public class ParamsReportDetailEOServiceImpl extends ServiceImpl<ParamsReportDet
|
||||
ParamsReportConfigDataEO paramsConfigDataEO = paramsReportConfigDataEOService.queryByConfigIdAndCollectManifestId(paramsConfigId, paramsCollectManifestId); // 参数配置数据
|
||||
StringBuilder configDataBuilder = new StringBuilder(); // 重新组合配置数据
|
||||
if (StringUtils.isNotEmpty(paramsConfigDataEO.getTextData())) {
|
||||
configDataBuilder.append(paramsConfigDataEO.getTextData()).append("&");
|
||||
configDataBuilder.append(paramsConfigDataEO.getTextData()).append("#");
|
||||
}
|
||||
if (StringUtils.isNotEmpty(paramsConfigDataEO.getPullData())) {
|
||||
configDataBuilder.append(paramsConfigDataEO.getPullData()).append("&");
|
||||
configDataBuilder.append(paramsConfigDataEO.getPullData()).append("#");
|
||||
}
|
||||
if (StringUtils.isNotEmpty(paramsConfigDataEO.getFileConnectId())) {
|
||||
List<OSSFile> ossFileList = ossFileService.getFileInfosByConnectId(paramsConfigDataEO.getFileConnectId());
|
||||
if (CollectionUtil.isNotEmpty(ossFileList)) {
|
||||
configDataBuilder.append(ossFileList.get(0).getFileName()).append("&");
|
||||
configDataBuilder.append(ossFileList.get(0).getFileName()).append("#");
|
||||
|
||||
fileList.addAll(ossFileList);
|
||||
}
|
||||
}
|
||||
|
||||
String configData = configDataBuilder.toString();
|
||||
if (configData.contains("&")) {
|
||||
configData = configData.substring(0, configData.lastIndexOf("&"));
|
||||
if (configData.contains("#")) {
|
||||
configData = configData.substring(0, configData.lastIndexOf("#"));
|
||||
}
|
||||
|
||||
record1.put(paramsConfigEO.getId(), configData);
|
||||
@@ -902,17 +995,17 @@ public class ParamsReportDetailEOServiceImpl extends ServiceImpl<ParamsReportDet
|
||||
|
||||
StringBuilder configDataBuilder = new StringBuilder(); // 重新组合配置数据
|
||||
if (StringUtils.isNotEmpty(textDatas)) {
|
||||
configDataBuilder.append(textDatas).append("&");
|
||||
configDataBuilder.append(textDatas).append("#");
|
||||
}
|
||||
if (StringUtils.isNotEmpty(pullDatas)) {
|
||||
configDataBuilder.append(pullDatas).append("&");
|
||||
configDataBuilder.append(pullDatas).append("#");
|
||||
}
|
||||
if (CollectionUtil.isNotEmpty(fileNameList)) {
|
||||
configDataBuilder.append(StringUtils.join(fileNameList, paramsReportDetailVO.getSeparator())).append("&");
|
||||
configDataBuilder.append(StringUtils.join(fileNameList, paramsReportDetailVO.getSeparator())).append("#");
|
||||
}
|
||||
configData = configDataBuilder.toString();
|
||||
if (configData.contains("&")) {
|
||||
configData = configData.substring(0, configData.lastIndexOf("&"));
|
||||
if (configData.contains("#")) {
|
||||
configData = configData.substring(0, configData.lastIndexOf("#"));
|
||||
}
|
||||
record1.put("params_value", configData);
|
||||
|
||||
@@ -925,77 +1018,145 @@ public class ParamsReportDetailEOServiceImpl extends ServiceImpl<ParamsReportDet
|
||||
}
|
||||
|
||||
private List<Map> queryForExportCustom(ParamsReportDetailVO paramsReportDetailVO) {
|
||||
paramsReportDetailVO.setSeparator("&"); // 设置分隔符
|
||||
paramsReportDetailVO.setSeparator("*"); // 设置分隔符
|
||||
|
||||
List<String> idList = new ArrayList<>();
|
||||
if (StringUtils.isNotEmpty(paramsReportDetailVO.getIds())) {
|
||||
idList = Arrays.asList(paramsReportDetailVO.getIds().split(","));
|
||||
}
|
||||
List<String> configIdList = Arrays.asList(paramsReportDetailVO.getConfigIds().split(","));
|
||||
List<Map<String, Object>> dataList = paramsReportDetailEOMapper.listInfoForExport(idList, paramsReportDetailVO);
|
||||
List<String> configIdList = Arrays.asList(paramsReportDetailVO.getConfigIds().split(",")); // 需要导出的配置列
|
||||
List<Map<String, Object>> dataList = paramsReportDetailEOMapper.listInfoForExport(idList, paramsReportDetailVO); // 查询需要导出的数据
|
||||
|
||||
List<ParamsReportConfigEO> paramsConfigEOList = paramsReportConfigEOService.queryList(paramsReportDetailVO.getParamsManifestId()); // 查询所有配置列
|
||||
|
||||
List<Map> resultList = new ArrayList<>();
|
||||
Map<String, Object> resultMap = new HashMap<>();
|
||||
List<OSSFile> fileListAll = new ArrayList<>();
|
||||
|
||||
List<Map<String, Object>> imgListAll = new ArrayList<>(); // 存放图片信息
|
||||
List<OSSFile> fileListAll = new ArrayList<>(); // 存放文件
|
||||
String fileTypeStr = ".png,.PNG,.jfif,.JFIF,.pjpeg,.PJPEG,.jpeg,.JPEG,.pjp,.PJP,.jpg,.JPG";
|
||||
// 查询配置列数据
|
||||
for (Map<String, Object> record1 : dataList) {
|
||||
|
||||
String paramsCollectManifestId = (String) record1.get("id");
|
||||
String nioNumber = (String) record1.get("nio_number");
|
||||
String controlType = (String) record1.get("control_type");
|
||||
|
||||
if (CollectionUtil.isNotEmpty(paramsConfigEOList)) {
|
||||
List<OSSFile> fileList = new ArrayList<>();
|
||||
List<OSSFile> imgFileList = new ArrayList<>();
|
||||
|
||||
// 合并配置数据
|
||||
String configData = "";
|
||||
List<ParamsReportConfigDataEO> paramsReportConfigDataEOS = paramsReportConfigDataEOService.queryByConfigIdListAndCollectManifestId(configIdList, paramsCollectManifestId);
|
||||
|
||||
String textDatas = paramsReportConfigDataEOS.stream().filter(e->StringUtils.isNotEmpty(e.getTextData()))
|
||||
.map(ParamsReportConfigDataEO::getTextData).distinct().collect(Collectors.joining(paramsReportDetailVO.getSeparator()));
|
||||
.map(ParamsReportConfigDataEO::getTextData).distinct().collect(Collectors.joining(paramsReportDetailVO.getSeparator())); // 整合文本数据
|
||||
|
||||
String pullDatas = paramsReportConfigDataEOS.stream().filter(e->StringUtils.isNotEmpty(e.getPullData()))
|
||||
.map(ParamsReportConfigDataEO::getPullData).distinct().collect(Collectors.joining(paramsReportDetailVO.getSeparator()));
|
||||
.map(ParamsReportConfigDataEO::getPullData).distinct().collect(Collectors.joining(paramsReportDetailVO.getSeparator())); // 整合下拉数据
|
||||
|
||||
List<String> fileNameList = new ArrayList<>();
|
||||
paramsReportConfigDataEOS.forEach(paramsReportConfigDataEO -> {
|
||||
for (ParamsReportConfigDataEO paramsReportConfigDataEO : paramsReportConfigDataEOS) { // 获取”导出文件夹“下的文件
|
||||
if (StringUtils.isNotEmpty(paramsReportConfigDataEO.getFileConnectId())) {
|
||||
List<OSSFile> ossFileList = ossFileService.getFileInfosByConnectId(paramsReportConfigDataEO.getFileConnectId());
|
||||
if (CollectionUtil.isNotEmpty(ossFileList)) {
|
||||
fileNameList.add(ossFileList.get(0).getFileName());
|
||||
String fileName = ossFileList.get(0).getFileName();
|
||||
if (!fileTypeStr.contains(fileName.substring(fileName.lastIndexOf(".")))) { // 图片不放入”导出文件夹“下,直接插入正文
|
||||
fileNameList.add(ossFileList.get(0).getFileName());
|
||||
|
||||
fileList.addAll(ossFileList);
|
||||
fileList.addAll(ossFileList);
|
||||
} else {
|
||||
imgFileList.addAll(ossFileList);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
fileListAll.addAll(fileList);
|
||||
|
||||
StringBuilder configDataBuilder = new StringBuilder(); // 重新组合配置数据
|
||||
if (StringUtils.isNotEmpty(textDatas)) {
|
||||
configDataBuilder.append(textDatas).append("&");
|
||||
}
|
||||
if (StringUtils.isNotEmpty(pullDatas)) {
|
||||
configDataBuilder.append(pullDatas).append("&");
|
||||
}
|
||||
if (CollectionUtil.isNotEmpty(fileNameList)) {
|
||||
configDataBuilder.append(StringUtils.join(fileNameList, ",")).append("&");
|
||||
}
|
||||
configData = configDataBuilder.toString();
|
||||
if (configData.contains("&")) {
|
||||
configData = configData.substring(0, configData.lastIndexOf("&"));
|
||||
}
|
||||
resultMap.put(nioNumber, configData);
|
||||
if ((ControlTypeEnum.FILE.getValue().equals(controlType)
|
||||
|| ControlTypeEnum.TEXT_FILE.getValue().equals(controlType)
|
||||
|| ControlTypeEnum.PULL_SINGLE_FILE.getValue().equals(controlType)
|
||||
|| ControlTypeEnum.PULL_MORE_FILE.getValue().equals(controlType)
|
||||
|| ControlTypeEnum.TEXT_PULL_SINGLE_FILE.getValue().equals(controlType)) && CollectionUtil.isNotEmpty(imgFileList)) {
|
||||
|
||||
// 获取图片字节
|
||||
// 附件为图片类型的配置数据,直接插入正文
|
||||
Map<String, Object> imgMap = new HashMap<>();
|
||||
List<byte[]> bytesList =new ArrayList<>();
|
||||
|
||||
fileListAll.addAll(fileList);
|
||||
int lengthTotal = 0; // 总长度
|
||||
for (OSSFile ossFile : imgFileList){
|
||||
if (CosBootUtil.doesObjectExist(ossFile.getUrl())) {
|
||||
InputStream is = CosBootUtil.download(ossFile.getUrl());
|
||||
ByteArrayOutputStream os = new ByteArrayOutputStream();
|
||||
try {
|
||||
IOUtils.copy(is, os);
|
||||
} catch (IOException e) {
|
||||
log.error(e.getMessage(), e);
|
||||
throw new JeroBootException(e.getMessage());
|
||||
}
|
||||
byte[] bytes = os.toByteArray();
|
||||
lengthTotal += bytes.length;
|
||||
bytesList.add(bytes);
|
||||
}
|
||||
}
|
||||
|
||||
// 合并多个bytes
|
||||
byte[] totalByte = new byte[lengthTotal];
|
||||
int begin = 0;
|
||||
for (byte[] bytes : bytesList){
|
||||
System.arraycopy(bytes, 0, totalByte, begin, bytes.length);
|
||||
begin += bytes.length;
|
||||
}
|
||||
|
||||
if (StringUtils.isNotEmpty(textDatas)) {
|
||||
configDataBuilder.append(textDatas).append("#"); //
|
||||
}
|
||||
if (StringUtils.isNotEmpty(pullDatas)) {
|
||||
configDataBuilder.append(pullDatas).append("#"); //
|
||||
}
|
||||
configData = configDataBuilder.toString();
|
||||
if (configData.contains("#")) { //
|
||||
configData = configData.substring(0, configData.lastIndexOf("#"));
|
||||
}
|
||||
|
||||
imgMap.put("key", nioNumber);
|
||||
imgMap.put("text", configData);
|
||||
imgMap.put("bytes", totalByte);
|
||||
|
||||
imgListAll.add(imgMap);
|
||||
|
||||
} else {
|
||||
|
||||
if (StringUtils.isNotEmpty(textDatas)) {
|
||||
configDataBuilder.append(textDatas).append("#");
|
||||
}
|
||||
if (StringUtils.isNotEmpty(pullDatas)) {
|
||||
configDataBuilder.append(pullDatas).append("#");
|
||||
}
|
||||
if (CollectionUtil.isNotEmpty(fileNameList)) {
|
||||
configDataBuilder.append(StringUtils.join(fileNameList, ",")).append("#");
|
||||
}
|
||||
configData = configDataBuilder.toString();
|
||||
if (configData.contains("#")) {
|
||||
configData = configData.substring(0, configData.lastIndexOf("#"));
|
||||
}
|
||||
|
||||
resultMap.put(nioNumber, configData);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Map<String, Object> imgMap = new HashMap<>();
|
||||
imgMap.put("imgListAll", imgListAll);
|
||||
Map<String, Object> fileMap = new HashMap<>();
|
||||
fileMap.put("fileListAll", fileListAll);
|
||||
|
||||
resultList.add(resultMap);
|
||||
resultList.add(imgMap);
|
||||
resultList.add(fileMap);
|
||||
return resultList;
|
||||
}
|
||||
|
||||
+2
@@ -151,4 +151,6 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
|
||||
List<SysUser> queryByDepIds(@Param("departIds")List<String> departIds,@Param("username") String username);
|
||||
|
||||
List<SysUser> getPPEmployeeList(@Param("thirdType") String thirdType);
|
||||
|
||||
void updateByIdPP (SysUser sysUser);
|
||||
}
|
||||
|
||||
+22
@@ -200,4 +200,26 @@
|
||||
select * from sys_user where third_type = #{thirdType}
|
||||
</select>
|
||||
|
||||
<update id="updateByIdPP">
|
||||
UPDATE
|
||||
sys_user
|
||||
SET
|
||||
username = #{username},
|
||||
realname = #{realname},
|
||||
status = #{status},
|
||||
del_flag = #{delFlag},
|
||||
third_id = #{thirdId},
|
||||
work_no = #{workNo},
|
||||
worker_type = #{workerType},
|
||||
create_time = #{createTime},
|
||||
update_time = #{updateTime},
|
||||
job_code = #{jobCode},
|
||||
job_title = #{jobTitle},
|
||||
org_code = #{orgCode},
|
||||
email = #{email},
|
||||
telephone = #{telephone}
|
||||
WHERE
|
||||
id = #{id}
|
||||
</update>
|
||||
|
||||
</mapper>
|
||||
|
||||
+2
-2
@@ -519,7 +519,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
||||
sysUserDepartMapper.insert(sysUserDepart);
|
||||
|
||||
// 添加用户角色关系
|
||||
SysUserRole userRole = new SysUserRole(sysUser.getId(), "1534020318437208065"); // 新增用户默认角色均为工程师
|
||||
SysUserRole userRole = new SysUserRole(sysUser.getId(), "1550369502225551361"); // 新增用户默认角色均为一般用户
|
||||
sysUserRoleMapper.insert(userRole);
|
||||
|
||||
// 添加用户信息
|
||||
@@ -562,7 +562,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
||||
}
|
||||
}
|
||||
|
||||
updateById(sysUser);
|
||||
this.baseMapper.updateByIdPP(sysUser);
|
||||
|
||||
}
|
||||
|
||||
|
||||
+171
@@ -0,0 +1,171 @@
|
||||
package com.jero.modules.docTranslation.controller;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import com.jero.common.api.vo.Result;
|
||||
import com.jero.common.system.query.QueryGenerator;
|
||||
import com.jero.modules.docTranslation.entity.DocTranslationEO;
|
||||
import com.jero.modules.docTranslation.service.IDocTranslationEOService;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import com.jero.common.system.base.controller.JeroController;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import com.jero.common.aspect.annotation.AutoLog;
|
||||
|
||||
|
||||
/**
|
||||
* @Description: 文档翻译表
|
||||
* @Author: jero-boot
|
||||
* @Date: 2022-07-20
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Api(tags="文档翻译表")
|
||||
@RestController
|
||||
@RequestMapping("/docTranslation/docTranslationEO")
|
||||
@Slf4j
|
||||
public class DocTranslationEOController extends JeroController<DocTranslationEO, IDocTranslationEOService> {
|
||||
@Autowired
|
||||
private IDocTranslationEOService docTranslationEOService;
|
||||
|
||||
/**
|
||||
* 分页列表查询
|
||||
*
|
||||
* @param docTranslationEO
|
||||
* @param pageNo
|
||||
* @param pageSize
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "文档翻译表-分页列表查询")
|
||||
@ApiOperation(value="文档翻译表-分页列表查询", notes="文档翻译表-分页列表查询")
|
||||
@GetMapping(value = "/page")
|
||||
public Result<?> queryPageList(DocTranslationEO docTranslationEO,
|
||||
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
|
||||
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
|
||||
@RequestParam(name="cut", defaultValue="cn") String cut,
|
||||
HttpServletRequest req) {
|
||||
QueryWrapper<DocTranslationEO> queryWrapper = QueryGenerator.initQueryWrapper(docTranslationEO, req.getParameterMap());
|
||||
Page<DocTranslationEO> page = new Page<DocTranslationEO>(pageNo, pageSize);
|
||||
IPage<DocTranslationEO> pageList = docTranslationEOService.page(page, queryWrapper);
|
||||
return Result.OK(cut,pageList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 列表查询
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "文档翻译表-列表查询")
|
||||
@ApiOperation(value="文档翻译表-列表查询", notes="文档翻译表-列表查询")
|
||||
@GetMapping(value = "/list")
|
||||
public Result<List<DocTranslationEO>> queryList() {
|
||||
List<DocTranslationEO> list = docTranslationEOService.queryList();
|
||||
return Result.OK(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加
|
||||
*
|
||||
* @param docTranslationEO
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "文档翻译表-添加")
|
||||
@ApiOperation(value="文档翻译表-添加", notes="文档翻译表-添加")
|
||||
@PostMapping(value = "/add")
|
||||
public Result<?> add(@Validated @RequestBody DocTranslationEO docTranslationEO) {
|
||||
docTranslationEOService.add(docTranslationEO);
|
||||
return Result.OK("添加成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
* @param docTranslationEO
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "文档翻译表-编辑")
|
||||
@ApiOperation(value="文档翻译表-编辑", notes="文档翻译表-编辑")
|
||||
@PutMapping(value = "/edit")
|
||||
public Result<?> edit(@Validated @RequestBody DocTranslationEO docTranslationEO) {
|
||||
docTranslationEOService.editById(docTranslationEO);
|
||||
return Result.OK("编辑成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "文档翻译表-通过id删除")
|
||||
@ApiOperation(value="文档翻译表-通过id删除", notes="文档翻译表-通过id删除")
|
||||
@DeleteMapping(value = "/delete")
|
||||
public Result<?> delete(@RequestParam(name="id",required=true) String id) {
|
||||
docTranslationEOService.deleteById(id);
|
||||
return Result.OK("删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "文档翻译表-批量删除")
|
||||
@ApiOperation(value="文档翻译表-批量删除", notes="文档翻译表-批量删除")
|
||||
@DeleteMapping(value = "/deleteBatch")
|
||||
public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
|
||||
this.docTranslationEOService.deleteByIds(Arrays.asList(ids.split(",")));
|
||||
return Result.OK("批量删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "文档翻译表-通过id查询")
|
||||
@ApiOperation(value="文档翻译表-通过id查询", notes="文档翻译表-通过id查询")
|
||||
@GetMapping(value = "/queryById")
|
||||
public Result<?> queryById(@RequestParam(name="id",required=true) String id) {
|
||||
DocTranslationEO docTranslationEO = docTranslationEOService.queryById(id);
|
||||
if(docTranslationEO==null) {
|
||||
return Result.error("未找到对应数据");
|
||||
}
|
||||
return Result.OK(docTranslationEO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出excel
|
||||
*
|
||||
* @param request
|
||||
* @param docTranslationEO
|
||||
*/
|
||||
@RequestMapping(value = "/exportXls")
|
||||
public ModelAndView exportXls(HttpServletRequest request, DocTranslationEO docTranslationEO) {
|
||||
return super.exportXls(request, docTranslationEO, DocTranslationEO.class, "文档翻译表");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过excel导入数据
|
||||
*
|
||||
* @param request
|
||||
* @param response
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
|
||||
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
|
||||
return super.importExcel(request, response, DocTranslationEO.class);
|
||||
}
|
||||
|
||||
}
|
||||
+127
@@ -0,0 +1,127 @@
|
||||
package com.jero.modules.docTranslation.entity;
|
||||
|
||||
import java.io.Serializable;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||
import com.jero.common.aspect.annotation.Dict;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* @Description: 文档翻译表
|
||||
* @Author: jero-boot
|
||||
* @Date: 2022-07-20
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Data
|
||||
@TableName("doc_translation")
|
||||
@Accessors(chain = true)
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@ApiModel(value="doc_translation对象", description="文档翻译表")
|
||||
public class DocTranslationEO implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**主键*/
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
@ApiModelProperty(value = "主键")
|
||||
private java.lang.String id;
|
||||
|
||||
/**创建人*/
|
||||
@ApiModelProperty(value = "创建人")
|
||||
private java.lang.String createBy;
|
||||
|
||||
/**创建日期*/
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||
@ApiModelProperty(value = "创建日期")
|
||||
private java.util.Date createTime;
|
||||
|
||||
/**更新人*/
|
||||
@ApiModelProperty(value = "更新人")
|
||||
private java.lang.String updateBy;
|
||||
|
||||
/**更新日期*/
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||
@ApiModelProperty(value = "更新日期")
|
||||
private java.util.Date updateTime;
|
||||
|
||||
/**所属部门*/
|
||||
@ApiModelProperty(value = "所属部门")
|
||||
private java.lang.String sysOrgCode;
|
||||
|
||||
/**文档库id*/
|
||||
@Excel(name = "文档库id", width = 15)
|
||||
@ApiModelProperty(value = "文档库id")
|
||||
private java.lang.String bussDocumentLibraryId;
|
||||
|
||||
/**编号*/
|
||||
@Excel(name = "编号", width = 15)
|
||||
@ApiModelProperty(value = "编号")
|
||||
private String serialNumber;
|
||||
|
||||
/**标题*/
|
||||
@Excel(name = "标题", width = 15)
|
||||
@ApiModelProperty(value = "标题")
|
||||
private String title;
|
||||
|
||||
/**文本状态*/
|
||||
@Dict(dicCode = "state")
|
||||
@Excel(name = "文本状态", width = 15)
|
||||
@ApiModelProperty(value = "文本状态")
|
||||
private java.lang.String textStatus;
|
||||
|
||||
/**文件名称*/
|
||||
@Excel(name = "文件名称", width = 15)
|
||||
@ApiModelProperty(value = "文件名称")
|
||||
private java.lang.String fileName;
|
||||
|
||||
/**翻译前语言(源语言)*/
|
||||
@Dict(dicCode = "source_language")
|
||||
@Excel(name = "翻译前语言(源语言)", width = 15)
|
||||
@ApiModelProperty(value = "翻译前语言(源语言)")
|
||||
private java.lang.String sourceLanguage;
|
||||
|
||||
/**翻译后语言(目标语言)*/
|
||||
@Dict(dicCode = "target_language")
|
||||
@Excel(name = "翻译后语言(目标语言)", width = 15)
|
||||
@ApiModelProperty(value = "翻译后语言(目标语言)")
|
||||
private java.lang.String targetLanguage;
|
||||
|
||||
/**翻译结果*/
|
||||
@Dict(dicCode = "translation_result")
|
||||
@Excel(name = "翻译结果", width = 15)
|
||||
@ApiModelProperty(value = "翻译结果")
|
||||
private java.lang.String translationResult;
|
||||
|
||||
/**转换时间*/
|
||||
@Excel(name = "转换时间", width = 15, format = "yyyy-MM-dd")
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd")
|
||||
@ApiModelProperty(value = "转换时间")
|
||||
private java.util.Date translationTime;
|
||||
|
||||
/**发布情况*/
|
||||
@Dict(dicCode = "release_condition")
|
||||
@Excel(name = "发布情况", width = 15)
|
||||
@ApiModelProperty(value = "发布情况")
|
||||
private java.lang.String releaseCondition;
|
||||
|
||||
/**源文件id*/
|
||||
@Excel(name = "源文件id", width = 15)
|
||||
@ApiModelProperty(value = "源文件id")
|
||||
private java.lang.String sourceFileId;
|
||||
|
||||
/**目标文件id*/
|
||||
@Excel(name = "目标文件id", width = 15)
|
||||
@ApiModelProperty(value = "目标文件id")
|
||||
private java.lang.String targetFileId;
|
||||
|
||||
}
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
package com.jero.modules.docTranslation.enums;
|
||||
|
||||
import com.jero.common.constant.enums.CutEnum;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
/**
|
||||
* 发布情况枚举类
|
||||
*/
|
||||
public enum ReleaseConditionEnum {
|
||||
|
||||
PUBLISHED("已发布","published","Have published"),
|
||||
DRAFT("草稿","draft","Draft"),
|
||||
;
|
||||
|
||||
|
||||
String cnName;
|
||||
String enName;
|
||||
String value;
|
||||
|
||||
private ReleaseConditionEnum(String cnName, String value, String enName) {
|
||||
this.cnName = cnName;
|
||||
this.value = value;
|
||||
this.enName = enName;
|
||||
}
|
||||
|
||||
public String getCnName() {
|
||||
return cnName;
|
||||
}
|
||||
|
||||
public void setCnName(String cnName) {
|
||||
this.cnName = cnName;
|
||||
}
|
||||
|
||||
public String getEnName() {
|
||||
return enName;
|
||||
}
|
||||
|
||||
public void setEnName(String enName) {
|
||||
this.enName = enName;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public static String getTextByValue(String value,String cut) {
|
||||
ReleaseConditionEnum[] values = values();
|
||||
for (ReleaseConditionEnum releaseConditionEnum : values) {
|
||||
if (releaseConditionEnum.value.equals(value)) {
|
||||
if(StringUtils.equals(cut, CutEnum.CN.getValue())){
|
||||
return releaseConditionEnum.cnName;
|
||||
}else if(StringUtils.equals(cut, CutEnum.EN.getValue())){
|
||||
return releaseConditionEnum.enName;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
package com.jero.modules.docTranslation.enums;
|
||||
|
||||
import com.jero.common.constant.enums.CutEnum;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
/**
|
||||
* 翻译结果枚举类
|
||||
*/
|
||||
public enum TranslationResultEnum {
|
||||
|
||||
IN_THE_TRANSLATION("翻译中","In the translation","In the translation"),
|
||||
TRANSLATION_DONE("翻译完成","Translation done","Translation done"),
|
||||
;
|
||||
|
||||
|
||||
String cnName;
|
||||
String enName;
|
||||
String value;
|
||||
|
||||
private TranslationResultEnum(String cnName, String value, String enName) {
|
||||
this.cnName = cnName;
|
||||
this.value = value;
|
||||
this.enName = enName;
|
||||
}
|
||||
|
||||
public String getCnName() {
|
||||
return cnName;
|
||||
}
|
||||
|
||||
public void setCnName(String cnName) {
|
||||
this.cnName = cnName;
|
||||
}
|
||||
|
||||
public String getEnName() {
|
||||
return enName;
|
||||
}
|
||||
|
||||
public void setEnName(String enName) {
|
||||
this.enName = enName;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public static String getTextByValue(String value,String cut) {
|
||||
TranslationResultEnum[] values = values();
|
||||
for (TranslationResultEnum translationResultEnum : values) {
|
||||
if (translationResultEnum.value.equals(value)) {
|
||||
if(StringUtils.equals(cut, CutEnum.CN.getValue())){
|
||||
return translationResultEnum.cnName;
|
||||
}else if(StringUtils.equals(cut, CutEnum.EN.getValue())){
|
||||
return translationResultEnum.enName;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
package com.jero.modules.docTranslation.mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import com.jero.modules.docTranslation.entity.DocTranslationEO;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
/**
|
||||
* @Description: 文档翻译表
|
||||
* @Author: jero-boot
|
||||
* @Date: 2022-07-20
|
||||
* @Version: V1.0
|
||||
*/
|
||||
public interface DocTranslationEOMapper extends BaseMapper<DocTranslationEO> {
|
||||
|
||||
}
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.jero.modules.docTranslation.mapper.DocTranslationEOMapper">
|
||||
<resultMap id="DocTranslationEOResultMap" type="com.jero.modules.docTranslation.entity.DocTranslationEO">
|
||||
<id column="id" property="id" />
|
||||
<result column="create_by" property="createBy" />
|
||||
<result column="create_time" property="createTime" />
|
||||
<result column="update_by" property="updateBy" />
|
||||
<result column="update_time" property="updateTime" />
|
||||
<result column="sys_org_code" property="sysOrgCode" />
|
||||
<result column="buss_document_library_id" property="bussDocumentLibraryId" />
|
||||
<result column="text_status" property="textStatus" />
|
||||
<result column="file_name" property="fileName" />
|
||||
<result column="source_language" property="sourceLanguage" />
|
||||
<result column="target_language" property="targetLanguage" />
|
||||
<result column="translation_result" property="translationResult" />
|
||||
<result column="translation_time" property="translationTime" />
|
||||
<result column="release_condition" property="releaseCondition" />
|
||||
<result column="source_file_id" property="sourceFileId" />
|
||||
<result column="target_file_id" property="targetFileId" />
|
||||
</resultMap>
|
||||
</mapper>
|
||||
+61
@@ -0,0 +1,61 @@
|
||||
package com.jero.modules.docTranslation.service;
|
||||
|
||||
import com.jero.modules.docTranslation.entity.DocTranslationEO;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description: 文档翻译表
|
||||
* @Author: jero-boot
|
||||
* @Date: 2022-07-20
|
||||
* @Version: V1.0
|
||||
*/
|
||||
public interface IDocTranslationEOService extends IService<DocTranslationEO> {
|
||||
|
||||
/**
|
||||
* 保存
|
||||
*
|
||||
* @param docTranslationEO
|
||||
* @return
|
||||
*/
|
||||
void add(DocTranslationEO docTranslationEO);
|
||||
|
||||
/**
|
||||
* 更新
|
||||
*
|
||||
* @param docTranslationEO
|
||||
* @return
|
||||
*/
|
||||
void editById(DocTranslationEO docTranslationEO);
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
void deleteById(String id);
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
void deleteByIds(List<String> ids);
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
DocTranslationEO queryById(String id);
|
||||
|
||||
/**
|
||||
* 列表查询
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
List<DocTranslationEO> queryList();
|
||||
}
|
||||
+106
@@ -0,0 +1,106 @@
|
||||
package com.jero.modules.docTranslation.service.impl;
|
||||
|
||||
import com.jero.modules.docTranslation.entity.DocTranslationEO;
|
||||
import com.jero.modules.docTranslation.enums.ReleaseConditionEnum;
|
||||
import com.jero.modules.docTranslation.enums.TranslationResultEnum;
|
||||
import com.jero.modules.docTranslation.mapper.DocTranslationEOMapper;
|
||||
import com.jero.modules.docTranslation.service.IDocTranslationEOService;
|
||||
import com.jero.modules.docTranslation.utils.TranslationDocumentUtils;
|
||||
import com.jero.modules.oss.entity.OSSFile;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
* @Description: 文档翻译表
|
||||
* @Author: jero-boot
|
||||
* @Date: 2022-07-20
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Service
|
||||
@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
|
||||
public class DocTranslationEOServiceImpl extends ServiceImpl<DocTranslationEOMapper, DocTranslationEO> implements IDocTranslationEOService {
|
||||
|
||||
/**
|
||||
* 保存
|
||||
*
|
||||
* @param docTranslationEO
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public void add(DocTranslationEO docTranslationEO) {
|
||||
Date now = new Date();
|
||||
docTranslationEO.setCreateTime(now);
|
||||
docTranslationEO.setUpdateTime(now);
|
||||
docTranslationEO.setTranslationTime(now);
|
||||
docTranslationEO.setReleaseCondition(ReleaseConditionEnum.DRAFT.getValue());
|
||||
//翻译文档,将翻译后的文件id设置到当前对象中。
|
||||
OSSFile translateAfterFile = TranslationDocumentUtils.translationDocument(docTranslationEO);
|
||||
//如果翻译后的文件不为空,则证明翻译成功
|
||||
if(!Objects.isNull(translateAfterFile)){
|
||||
docTranslationEO.setTargetFileId(translateAfterFile.getId());
|
||||
docTranslationEO.setTranslationResult(TranslationResultEnum.TRANSLATION_DONE.getValue());
|
||||
}
|
||||
save(docTranslationEO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新
|
||||
*
|
||||
* @param docTranslationEO
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public void editById(DocTranslationEO docTranslationEO) {
|
||||
Date now = new Date();
|
||||
docTranslationEO.setUpdateTime(now);
|
||||
saveOrUpdate(docTranslationEO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public void deleteById(String id) {
|
||||
removeById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public void deleteByIds(List<String> ids) {
|
||||
removeByIds(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public DocTranslationEO queryById(String id) {
|
||||
return getById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 列表查询
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<DocTranslationEO> queryList() {
|
||||
return list();
|
||||
}
|
||||
}
|
||||
+180
@@ -0,0 +1,180 @@
|
||||
package com.jero.modules.docTranslation.utils;
|
||||
|
||||
import com.jero.modules.docTranslation.entity.DocTranslationEO;
|
||||
import com.jero.modules.document.utils.ReadWordUtil;
|
||||
import com.jero.modules.feishu.service.IFeishuService;
|
||||
import com.jero.modules.oss.entity.OSSFile;
|
||||
import com.jero.modules.oss.service.IOSSFileService;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.http.entity.ContentType;
|
||||
import org.aspectj.util.FileUtil;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 翻译文档工具类
|
||||
* @Author: wzj
|
||||
* @Date: 2022/7/22 13:53
|
||||
**/
|
||||
@Component
|
||||
public class TranslationDocumentUtils {
|
||||
private final static Logger logger= LoggerFactory.getLogger(TranslationDocumentUtils.class);
|
||||
|
||||
|
||||
private static String uploadpath;
|
||||
@Value(value = "${jero.path.upload}")
|
||||
public void setUploadpath(String uploadpath){
|
||||
TranslationDocumentUtils.uploadpath = uploadpath;
|
||||
}
|
||||
|
||||
private static IOSSFileService iossFileService;
|
||||
@Autowired
|
||||
public void setIossFileService(IOSSFileService iossFileService){
|
||||
TranslationDocumentUtils.iossFileService = iossFileService;
|
||||
}
|
||||
|
||||
private static IFeishuService feishuService;
|
||||
@Autowired
|
||||
public void setFeishuService(IFeishuService feishuService){
|
||||
TranslationDocumentUtils.feishuService = feishuService;
|
||||
}
|
||||
|
||||
/**
|
||||
* 翻译文档
|
||||
* @param docTranslationEO
|
||||
*/
|
||||
public static OSSFile translationDocument(DocTranslationEO docTranslationEO){
|
||||
OSSFile translateAfterFile = null;
|
||||
//翻译文档
|
||||
String sourceFileId = docTranslationEO.getSourceFileId();
|
||||
List<OSSFile> sourceFileList = iossFileService.getFileInfos(sourceFileId);
|
||||
|
||||
if(CollectionUtils.isNotEmpty(sourceFileList)){
|
||||
OSSFile sourceOssFile = sourceFileList.get(0);
|
||||
String translateFrontText = ReadWordUtil.readWord(sourceOssFile.getUrl(),uploadpath);
|
||||
|
||||
String translateAfter ="";
|
||||
StringBuffer translateAfterSb = new StringBuffer();
|
||||
|
||||
String tenantAccessToken = "";
|
||||
try {
|
||||
tenantAccessToken = feishuService.getTenantAccessToken();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
Map<String,Object> feishuTranslateParamsMap = new HashMap<>();
|
||||
feishuTranslateParamsMap.put("sourceLanguage",docTranslationEO.getSourceLanguage());
|
||||
feishuTranslateParamsMap.put("targetLanguage",docTranslationEO.getTargetLanguage());
|
||||
feishuTranslateParamsMap.put("tenantAccessToken",tenantAccessToken);
|
||||
|
||||
//分隔长度
|
||||
int splitLength = 1000;
|
||||
if(translateFrontText.length() > splitLength){
|
||||
//计算出能分隔几次
|
||||
int translateArrLength = translateFrontText.length() / splitLength + 1;
|
||||
String translateFrontTextSplit = "";
|
||||
for (int i = 0; i < translateArrLength; i ++){
|
||||
if(i == 0){
|
||||
translateFrontTextSplit = translateFrontText.substring(0,splitLength);
|
||||
}else {
|
||||
//如果长度不够根据splitLength再截取一次。
|
||||
if(translateFrontText.length() < i*splitLength+(splitLength+1)){
|
||||
translateFrontTextSplit = translateFrontText.substring(i*(splitLength + 1),translateFrontText.length());
|
||||
}else {
|
||||
translateFrontTextSplit = translateFrontText.substring(i*(splitLength + 1),i*splitLength+(splitLength+1));
|
||||
}
|
||||
}
|
||||
|
||||
feishuTranslateParamsMap.put("translateFrontText",translateFrontTextSplit);
|
||||
translateAfter = feishuService.translateText(feishuTranslateParamsMap);
|
||||
translateAfterSb.append(translateAfter);
|
||||
}
|
||||
}else {
|
||||
feishuTranslateParamsMap.put("translateFrontText",translateFrontText);
|
||||
translateAfter = feishuService.translateText(feishuTranslateParamsMap);
|
||||
translateAfterSb.append(translateAfter);
|
||||
}
|
||||
|
||||
logger.debug("源文本:\n" + translateFrontText);
|
||||
logger.debug("翻译后文本:\n" + translateAfter);
|
||||
|
||||
//翻译后的文件路径
|
||||
String translateAfterFilePath = uploadpath + "/tempZip/translationTempFile";
|
||||
try {
|
||||
translateAfterFile = createTranslateAfterFile(translateAfterFilePath, translateAfterSb.toString(),sourceOssFile.getFileName());
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
logger.error("翻译文档-写入文档失败:" + ex.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
return translateAfterFile;
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建翻译后的文件,把翻译后的语言放进去。
|
||||
* @param translateAfterFilePath
|
||||
* @throws Exception
|
||||
*/
|
||||
public static OSSFile createTranslateAfterFile(String translateAfterFilePath,String translateAfter,String fileName) throws Exception{
|
||||
OSSFile ossFile = null;
|
||||
File newFilePath = new File(translateAfterFilePath);
|
||||
if (!newFilePath.exists()) {
|
||||
newFilePath.mkdirs();
|
||||
}
|
||||
translateAfterFilePath = translateAfterFilePath + "/" + fileName;
|
||||
File newFile = new File(translateAfterFilePath);
|
||||
if (!newFile.exists()) {
|
||||
newFile.createNewFile();
|
||||
}
|
||||
try {
|
||||
FileOutputStream out = new FileOutputStream(newFile);
|
||||
|
||||
MultipartFile multipartFile = createMfileByPath(translateAfterFilePath);
|
||||
ossFile = iossFileService.uploadLocalOfCos(multipartFile, "", null, null);
|
||||
out.write(translateAfter.getBytes("UTF-8"));
|
||||
out.close();
|
||||
} catch (FileNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
//将翻译后的本地文件删除
|
||||
File file = new File(translateAfterFilePath);
|
||||
FileUtil.deleteContents(file);
|
||||
}
|
||||
return ossFile;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据路径创建文件
|
||||
* @param translateAfterFilePath
|
||||
* @return
|
||||
*/
|
||||
private static MultipartFile createMfileByPath(String translateAfterFilePath) {
|
||||
MultipartFile mFile = null;
|
||||
try {
|
||||
File file = new File(translateAfterFilePath);
|
||||
FileInputStream fileInputStream = new FileInputStream(file);
|
||||
|
||||
String fileName = file.getName();
|
||||
fileName = fileName.substring((fileName.lastIndexOf(File.separator) + 1));
|
||||
mFile = new MockMultipartFile(fileName, fileName, ContentType.APPLICATION_OCTET_STREAM.toString(), fileInputStream);
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
logger.error("封装文件出现错误:{}", ex.getMessage());
|
||||
}
|
||||
return mFile;
|
||||
}
|
||||
}
|
||||
-2
@@ -12,8 +12,6 @@ public enum SearchEnum {
|
||||
FULL_TEXT_SEARCH_CN("全部中文","fulltextsearchcn"),
|
||||
FULL_TEXT_SEARCH_EN("全部英文","fulltextsearchen");
|
||||
|
||||
|
||||
|
||||
String name;
|
||||
String value;
|
||||
|
||||
|
||||
+8
@@ -3,6 +3,7 @@ package com.jero.modules.feishu.service;
|
||||
import com.jero.modules.feishu.vo.FeishuMsgVo;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Author: liyawei
|
||||
@@ -35,4 +36,11 @@ public interface IFeishuService {
|
||||
* @return
|
||||
*/
|
||||
String sendCardMsg(String[] userIds, FeishuMsgVo feishuMsgVo) throws IOException;
|
||||
|
||||
/**
|
||||
* 翻译文本
|
||||
* @param params
|
||||
* @return
|
||||
*/
|
||||
String translateText(Map<String,Object> params);
|
||||
}
|
||||
|
||||
+68
@@ -37,6 +37,9 @@ public class FeishuServiceImpl implements IFeishuService {
|
||||
@Value("${Feishu.batchSendMessageUrl}")
|
||||
private String batchSendMessageUrl;
|
||||
|
||||
@Value("${Feishu.translateTextUrl}")
|
||||
private String translateTextUrl;
|
||||
|
||||
/**
|
||||
* 获取token
|
||||
* @return
|
||||
@@ -238,4 +241,69 @@ public class FeishuServiceImpl implements IFeishuService {
|
||||
return tokenJson.get("msg").toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 翻译文本
|
||||
* 参数:
|
||||
* params:{
|
||||
* "translateFrontText":"翻译前文本",
|
||||
* "sourceLanguage":"源语言",
|
||||
* "targetLanguage":"目标语言",
|
||||
* "tenantAccessToken":"登录令牌(飞书token)",
|
||||
* }
|
||||
*/
|
||||
@Override
|
||||
public String translateText(Map<String, Object> params) {
|
||||
String result = null;
|
||||
|
||||
String translateFrontText = (String) params.get("translateFrontText");
|
||||
String sourceLanguage = (String) params.get("sourceLanguage");
|
||||
String targetLanguage = (String) params.get("targetLanguage");
|
||||
String tenantAccessToken = (String) params.get("tenantAccessToken");
|
||||
|
||||
Map<String, String> headerMap = new HashMap<>();
|
||||
headerMap.put("Content-Type", "application/json; charset=utf-8");
|
||||
headerMap.put("Authorization", "Bearer "+tenantAccessToken);
|
||||
|
||||
List<Map<String,Object>> glossaryList = new ArrayList<>();
|
||||
Map<String,Object> glossaryMap = new HashMap<>();
|
||||
glossaryMap.put("from","飞书");
|
||||
glossaryMap.put("to","Lark");
|
||||
glossaryList.add(glossaryMap);
|
||||
|
||||
Map<String, Object> paramsMap = new HashMap<>();
|
||||
//请求级术语表,携带术语,仅在本次翻译中生效(最多能携带 128个术语词)
|
||||
paramsMap.put("glossary", glossaryList);
|
||||
//源语言
|
||||
paramsMap.put("source_language", sourceLanguage);
|
||||
//源文本
|
||||
paramsMap.put("text", translateFrontText);
|
||||
//目标语言
|
||||
paramsMap.put("target_language", targetLanguage);
|
||||
|
||||
try {
|
||||
String response = null;
|
||||
response = HttpRequestUtil.getResponseOfPOST(translateTextUrl, headerMap, JSON.toJSONString(paramsMap));
|
||||
//返回结果样例: {"code":0,"data":{"text":"Try using Lark."},"msg":"Success"}
|
||||
JSONObject translateAfterJson = JSONObject.parseObject(response);
|
||||
|
||||
if(response != null && translateAfterJson != null){
|
||||
if(!translateAfterJson.get("code").toString().equals("0")) {
|
||||
result = null;
|
||||
}
|
||||
result = JSONObject.parseObject(translateAfterJson.get("data").toString()).getString("text");
|
||||
}else {
|
||||
//如果出现了异常,把翻译前的文本返回
|
||||
result = translateFrontText;
|
||||
}
|
||||
|
||||
} catch (IOException ex) {
|
||||
//如果出现了异常,把翻译前的文本返回
|
||||
result = translateFrontText;
|
||||
ex.printStackTrace();
|
||||
log.error("飞书翻译-文本翻译失败:{}",ex.getMessage());
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+3
@@ -36,6 +36,8 @@ import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
@@ -47,6 +49,7 @@ import javax.servlet.http.HttpServletResponse;
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Service
|
||||
@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
|
||||
public class LawsOpinionAssessmentResultEOServiceImpl extends ServiceImpl<LawsOpinionAssessmentResultEOMapper, LawsOpinionAssessmentResultEO> implements ILawsOpinionAssessmentResultEOService {
|
||||
|
||||
@Value(value = "${jero.path.upload}")
|
||||
|
||||
+3
@@ -23,6 +23,8 @@ import java.util.Date;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
* @Description: 法规意见收集表
|
||||
@@ -31,6 +33,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Service
|
||||
@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
|
||||
public class LawsOpinionGatherEOServiceImpl extends ServiceImpl<LawsOpinionGatherEOMapper, LawsOpinionGatherEO> implements ILawsOpinionGatherEOService {
|
||||
|
||||
@Autowired
|
||||
|
||||
+3
@@ -28,6 +28,8 @@ import java.util.Date;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
@@ -38,6 +40,7 @@ import javax.servlet.http.HttpServletRequest;
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Service
|
||||
@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
|
||||
public class LawsProcessHistoryEOServiceImpl extends ServiceImpl<LawsProcessHistoryEOMapper, LawsProcessHistoryEO> implements ILawsProcessHistoryEOService {
|
||||
|
||||
@Autowired
|
||||
|
||||
+27
-6
@@ -9,11 +9,10 @@ import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.sf.json.JSONObject;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.Map;
|
||||
|
||||
@Api(tags="法规符合性看板")
|
||||
@@ -27,8 +26,8 @@ public class LawsComplianceBoardController {
|
||||
|
||||
@AutoLog(value = "项目库-法规符合性看板列表分页查询")
|
||||
@ApiOperation(value="项目库-法规符合性看板列表分页查询", notes="项目库-法规符合性看板列表分页查询")
|
||||
@GetMapping(value = "/page")
|
||||
public JSONObject queryPageList(@RequestParam Map<String,Object> params){
|
||||
@PostMapping(value = "/page")
|
||||
public JSONObject queryPageList(@RequestBody Map<String,Object> params){
|
||||
IPage infoPage = this.lawsComplianceBoardService.queryPageList(params);
|
||||
Result<IPage> ok = Result.OK(infoPage);
|
||||
JSONObject jsonResult = JSONObject.fromObject(ok);
|
||||
@@ -42,4 +41,26 @@ public class LawsComplianceBoardController {
|
||||
JSONObject result = this.lawsComplianceBoardService.queryComplianceResultList(params);
|
||||
return Result.OK(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出符合性结果
|
||||
* @param response
|
||||
* @param request
|
||||
* @param params
|
||||
*/
|
||||
@RequestMapping(value = "/exportComplianceResult")
|
||||
public void exportComplianceResult(HttpServletResponse response, HttpServletRequest request,@RequestParam Map<String,Object> params){
|
||||
this.lawsComplianceBoardService.exportComplianceResult(response,request,params);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出符合性结果明细
|
||||
* @param response
|
||||
* @param request
|
||||
* @param params
|
||||
*/
|
||||
@RequestMapping(value = "/exportComplianceResultDetail")
|
||||
public void exportComplianceResultDetail(HttpServletResponse response, HttpServletRequest request,@RequestParam Map<String,Object> params){
|
||||
this.lawsComplianceBoardService.exportComplianceResultDetail(response,request,params);
|
||||
}
|
||||
}
|
||||
|
||||
+8
-1
@@ -8,7 +8,7 @@ import java.util.Map;
|
||||
|
||||
public interface LawsComplianceBoardMapper {
|
||||
/**
|
||||
* 查询出 启动过 设计、prehomo、验证符合性、法规技术评估、法规意见收集其中一个流程 的数据
|
||||
* 分页查询出 启动过 设计、prehomo、验证符合性、法规技术评估、法规意见收集其中一个流程 的数据
|
||||
* @param page
|
||||
* @param params
|
||||
* @return
|
||||
@@ -21,4 +21,11 @@ public interface LawsComplianceBoardMapper {
|
||||
* @return
|
||||
*/
|
||||
List<Map<String, Object>> queryComplianceResultList(@Param("params") Map<String, Object> params);
|
||||
|
||||
/**
|
||||
* 查询出 启动过 设计、prehomo、验证符合性、法规技术评估、法规意见收集其中一个流程 的数据列表
|
||||
* @param params
|
||||
* @return
|
||||
*/
|
||||
List<Map<String, Object>> queryList(@Param("params") Map<String, Object> params);
|
||||
}
|
||||
|
||||
+43
-6
@@ -38,7 +38,7 @@
|
||||
pyni.year_name as "yearName",
|
||||
pti.design_status as "designStatus",
|
||||
pti.design_p_id as "designPId",
|
||||
pti.prehomo_status as "prehomoStatsu",
|
||||
pti.prehomo_status as "prehomoStatus",
|
||||
pti.prehomo_p_id as "prehomoPId",
|
||||
pti.verify_status as "verifyStatus",
|
||||
pti.verify_p_id as "verifyPId",
|
||||
@@ -50,16 +50,53 @@
|
||||
LEFT JOIN project_name_info pni ON ( pni.id = plb.project_name_id )
|
||||
LEFT JOIN project_year_name_info pyni ON ( pyni.id = plb.year_name_id )
|
||||
WHERE
|
||||
pli.stand_id = #{params.id}
|
||||
AND( pti.design_p_id IS NOT NULL OR pti.prehomo_p_id IS NOT NULL OR pti.verify_p_id IS NOT NULL )
|
||||
<if test="params.dutyTerritory != null params.dutyTerritory != '' ">
|
||||
1=1
|
||||
<if test="params.id != null and params.id != null">
|
||||
and pli.stand_id = #{params.id}
|
||||
</if>
|
||||
and ( pti.design_p_id is not null or pti.prehomo_p_id is not null or pti.verify_p_id is not null )
|
||||
<if test="params.dutyTerritory != '' and params.dutyTerritory != null ">
|
||||
and pli.duty_territory like CONCAT(CONCAT('%',#{params.dutyTerritory}),'%')
|
||||
</if>
|
||||
<if test="params.projectNameId != null params.projectNameId != '' ">
|
||||
<if test="params.projectNameId != '' and params.projectNameId != null ">
|
||||
and pni.id like CONCAT(CONCAT('%',#{params.projectNameId}),'%')
|
||||
</if>
|
||||
<if test="params.projectName != null params.projectName != '' ">
|
||||
<if test="params.projectName != '' and params.projectName != null ">
|
||||
and pni.project_name like CONCAT(CONCAT('%',#{params.projectName}),'%')
|
||||
</if>
|
||||
<if test="params.idList != null">
|
||||
and pli.stand_id in
|
||||
<foreach collection="params.idList" index="index" item="item" open="(" separator="," close=")">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
order by pli.create_time desc
|
||||
</select>
|
||||
|
||||
<select id="queryList" resultType="hashMap">
|
||||
SELECT
|
||||
bdl.id as "id",
|
||||
bdl.serial_number as "serialNumber",
|
||||
bdl.title as "title",
|
||||
bdl.technology_territory as "technologyTerritory",
|
||||
bdl.state as "state",
|
||||
bdl.create_time as "createTime"
|
||||
FROM
|
||||
buss_document_library bdl
|
||||
LEFT JOIN project_laws_inventory pli ON ( pli.stand_id = bdl.id )
|
||||
LEFT JOIN project_task_inventory pti ON ( pli.id = pti.project_laws_inventory_id )
|
||||
WHERE
|
||||
(
|
||||
bdl.id IN ( SELECT DISTINCT stand_id FROM laws_opinion_gather)
|
||||
OR bdl.id IN ( SELECT DISTINCT stand_id FROM laws_technology_evaluation)
|
||||
or pti.design_p_id IS NOT NULL
|
||||
OR pti.prehomo_p_id IS NOT NULL
|
||||
OR pti.verify_p_id IS NOT NULL
|
||||
)
|
||||
<if test="params.condition != '' ">
|
||||
${params.condition}
|
||||
</if>
|
||||
GROUP BY bdl.id
|
||||
order by bdl.create_time desc
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
+26
@@ -4,6 +4,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.jero.common.api.vo.Result;
|
||||
import net.sf.json.JSONObject;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public interface ILawsComplianceBoardService {
|
||||
@@ -15,4 +18,27 @@ public interface ILawsComplianceBoardService {
|
||||
* @return
|
||||
*/
|
||||
JSONObject queryComplianceResultList(Map<String, Object> params);
|
||||
|
||||
/**
|
||||
* 导出符合性结果
|
||||
* @param response
|
||||
* @param request
|
||||
* @param params
|
||||
*/
|
||||
void exportComplianceResult(HttpServletResponse response, HttpServletRequest request, Map<String, Object> params);
|
||||
|
||||
/**
|
||||
* 导出符合性结果明细
|
||||
* @param response
|
||||
* @param request
|
||||
* @param params
|
||||
*/
|
||||
void exportComplianceResultDetail(HttpServletResponse response, HttpServletRequest request, Map<String, Object> params);
|
||||
|
||||
/**
|
||||
* 法规符合性列表数据处理
|
||||
* @param datas
|
||||
* @param cut
|
||||
*/
|
||||
void disposeData(List datas,String cut);
|
||||
}
|
||||
|
||||
+456
-13
@@ -3,6 +3,9 @@ package com.jero.modules.project.service.impl;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.jero.common.constant.enums.CutEnum;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.common.system.query.QueryRuleEnum;
|
||||
import com.jero.modules.document.enums.FieldTypeEnum;
|
||||
import com.jero.modules.document.service.IBussDocumentLibraryEOService;
|
||||
import com.jero.modules.document.vo.QueryConditionVO;
|
||||
@@ -10,20 +13,32 @@ import com.jero.modules.lawsOpinionGather.entity.LawsOpinionGatherEO;
|
||||
import com.jero.modules.lawsOpinionGather.service.ILawsOpinionGatherEOService;
|
||||
import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationEO;
|
||||
import com.jero.modules.lawsTechnologyEvaluation.service.ILawsTechnologyEvaluationEOService;
|
||||
import com.jero.modules.project.enums.DesignComplianceStatusEnum;
|
||||
import com.jero.modules.project.mapper.LawsComplianceBoardMapper;
|
||||
import com.jero.modules.project.service.ILawsComplianceBoardService;
|
||||
import com.jero.modules.system.entity.SysCategory;
|
||||
import com.jero.modules.system.entity.SysDictItem;
|
||||
import com.jero.modules.system.service.ISysDictItemService;
|
||||
import com.jero.modules.system.service.impl.SysCategoryServiceImpl;
|
||||
import com.jero.modules.system.service.impl.SysDictItemServiceImpl;
|
||||
import com.jero.modules.system.util.StringUtils;
|
||||
import net.sf.json.JSONObject;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.apache.poi.hssf.usermodel.HSSFSheet;
|
||||
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
||||
import org.apache.poi.ss.usermodel.*;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
|
||||
@@ -37,11 +52,18 @@ public class LawsComplianceBoardServiceImpl implements ILawsComplianceBoardServi
|
||||
private ILawsTechnologyEvaluationEOService lawsTechnologyEvaluationEOService;
|
||||
@Autowired
|
||||
private IBussDocumentLibraryEOService bussDocumentLibraryEOService;
|
||||
@Autowired
|
||||
private SysDictItemServiceImpl sysDictItemServiceImpl;
|
||||
@Autowired
|
||||
private SysCategoryServiceImpl sysCategoryService;
|
||||
@Autowired
|
||||
private ISysDictItemService sysDictItemService;
|
||||
|
||||
@Override
|
||||
public IPage queryPageList(Map<String, Object> params) {
|
||||
int pageNo = Integer.parseInt(params.get("pageNo").toString());
|
||||
int pageSize = Integer.parseInt(params.get("pageSize").toString());
|
||||
String cut = (String) params.get("cut");
|
||||
|
||||
//封装查询条件(包含高级搜索)
|
||||
String condition = this.getConditionStr(params);
|
||||
@@ -49,14 +71,58 @@ public class LawsComplianceBoardServiceImpl implements ILawsComplianceBoardServi
|
||||
IPage page = new Page(pageNo, pageSize);
|
||||
IPage infoPage = this.lawsComplianceBoardMapper.queryPageList(page, params);
|
||||
List records = infoPage.getRecords();
|
||||
this.disposeData(records);
|
||||
this.disposeData(records,cut);
|
||||
return infoPage;
|
||||
}
|
||||
|
||||
public void disposeData(List datas){
|
||||
@Override
|
||||
public void disposeData(List datas, String cut){
|
||||
if (CollectionUtils.isNotEmpty(datas)) {
|
||||
//获取数据字典
|
||||
List<SysDictItem> sysDictItems = sysDictItemServiceImpl.selectItemsAll();
|
||||
//树形数据字典
|
||||
List<SysCategory> technologyTerritoryList = sysCategoryService.list();
|
||||
|
||||
List<SysDictItem> stateSysDictItems = sysDictItems.stream().filter(sysDictItem -> {
|
||||
boolean flag = false;
|
||||
if (StringUtils.equals(sysDictItem.getDictCode(), "state")) {
|
||||
flag = true;
|
||||
}
|
||||
return flag;
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
for (Object data : datas) {
|
||||
Map<String,Object> dataMap = (Map<String, Object>) data;
|
||||
dataMap.entrySet().forEach(map -> {
|
||||
if(map.getValue() == null){
|
||||
map.setValue("");
|
||||
}
|
||||
});
|
||||
if(dataMap.get("state") != null){
|
||||
String state_dicText = "";
|
||||
if(StringUtils.equals(cut,CutEnum.CN.getValue())){
|
||||
state_dicText = stateSysDictItems.stream().filter(sysDictItem -> {
|
||||
boolean flag = false;
|
||||
if(StringUtils.equals(dataMap.get("state").toString(),sysDictItem.getItemValue())){
|
||||
flag = true;
|
||||
}
|
||||
return flag;
|
||||
}).map(SysDictItem::getItemText).distinct().collect(Collectors.joining(","));
|
||||
}else {
|
||||
state_dicText = stateSysDictItems.stream().filter(sysDictItem -> {
|
||||
boolean flag = false;
|
||||
if(StringUtils.equals(dataMap.get("state").toString(),sysDictItem.getItemValue())){
|
||||
flag = true;
|
||||
}
|
||||
return flag;
|
||||
}).map(SysDictItem::getEnName).distinct().collect(Collectors.joining(","));
|
||||
}
|
||||
dataMap.put("state_dicText",state_dicText);
|
||||
}
|
||||
if(dataMap.get("technologyTerritory") != null){
|
||||
String technologyTerritory_dictText = disposeTechnologyTerritory(technologyTerritoryList, dataMap.get("technologyTerritory").toString(), cut);
|
||||
dataMap.put("technologyTerritory_dicText",technologyTerritory_dictText);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -66,8 +132,9 @@ public class LawsComplianceBoardServiceImpl implements ILawsComplianceBoardServi
|
||||
JSONObject result = new JSONObject();
|
||||
String id = (String) params.get("id");
|
||||
String cut = (String) params.get("cut");
|
||||
List<Map<String,Object>> cmplianceResultList = this.lawsComplianceBoardMapper.queryComplianceResultList(params);
|
||||
result.put("cmplianceResultList",cmplianceResultList);
|
||||
List<Map<String,Object>> complianceResultList = this.lawsComplianceBoardMapper.queryComplianceResultList(params);
|
||||
this.disposeComplianceResult(complianceResultList,cut);
|
||||
result.put("complianceResultList",complianceResultList);
|
||||
|
||||
//查询当前数据是否有法规意见收集流程数据
|
||||
QueryWrapper<LawsOpinionGatherEO> opinionGatherEOQueryWrapper = new QueryWrapper<>();
|
||||
@@ -83,6 +150,258 @@ public class LawsComplianceBoardServiceImpl implements ILawsComplianceBoardServi
|
||||
return result;
|
||||
}
|
||||
|
||||
public void disposeComplianceResult(List<Map<String,Object>> complianceResultList,String cut){
|
||||
if(CollectionUtils.isNotEmpty(complianceResultList)){
|
||||
List<SysDictItem> dutyTerritoryDictItemList = sysDictItemService.selectItemsByDictCode("duty_territory");
|
||||
for (Map<String, Object> complianceResult : complianceResultList) {
|
||||
if (complianceResult.get("designStatus") != null) {
|
||||
String textByValue = DesignComplianceStatusEnum.getTextByValue(complianceResult.get("designStatus").toString(), cut);
|
||||
complianceResult.put("designStatus_dicText",textByValue);
|
||||
}
|
||||
if (complianceResult.get("prehomoStatus") != null && complianceResult.get("prehomoStatus") != "") {
|
||||
String textByValue = DesignComplianceStatusEnum.getTextByValue(complianceResult.get("prehomoStatus").toString(), cut);
|
||||
complianceResult.put("prehomoStatus_dicText",textByValue);
|
||||
}
|
||||
if (complianceResult.get("verifyStatus") != null) {
|
||||
String textByValue = DesignComplianceStatusEnum.getTextByValue(complianceResult.get("verifyStatus").toString(), cut);
|
||||
complianceResult.put("verifyStatus_dicText",textByValue);
|
||||
}
|
||||
if (complianceResult.get("dutyTerritory") != null) {
|
||||
String dutyTerritory_dicText = "";
|
||||
if (CutEnum.EN.getValue().equals(cut)) {
|
||||
dutyTerritory_dicText = dutyTerritoryDictItemList.stream().filter(dictItem -> {
|
||||
boolean flag = false;
|
||||
String[] dutyTerritoryArr = complianceResult.get("dutyTerritory").toString().split(",");
|
||||
for (String duty : dutyTerritoryArr) {
|
||||
if(StringUtils.equals(dictItem.getItemValue(),duty)){
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}).map(SysDictItem::getEnName).collect(Collectors.joining(","));
|
||||
} else {
|
||||
dutyTerritory_dicText = dutyTerritoryDictItemList.stream().filter(dictItem -> {
|
||||
boolean flag = false;
|
||||
String[] dutyTerritoryArr = complianceResult.get("dutyTerritory").toString().split(",");
|
||||
for (String duty : dutyTerritoryArr) {
|
||||
if(StringUtils.equals(dictItem.getItemValue(),duty)){
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}).map(SysDictItem::getItemText).collect(Collectors.joining(","));
|
||||
}
|
||||
complianceResult.put("dutyTerritory_dicText",dutyTerritory_dicText);
|
||||
}
|
||||
|
||||
Map<String,Object> dataMap = (Map<String, Object>) complianceResult;
|
||||
dataMap.entrySet().forEach(map -> {
|
||||
if(map.getValue() == null){
|
||||
map.setValue("");
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exportComplianceResult(HttpServletResponse response, HttpServletRequest request, Map<String, Object> params) {
|
||||
String cut = (String) params.get("cut");
|
||||
String exportAll = (String) params.get("exportAll");
|
||||
String condition = this.getConditionStr(params);
|
||||
params.put("condition",StringUtils.isNotEmpty(condition) ? condition : "");
|
||||
List<Map<String,Object>> exportData = new ArrayList<>();
|
||||
if(StringUtils.equals(exportAll,"no")){
|
||||
IPage page = this.queryPageList(params);
|
||||
exportData = page.getRecords();
|
||||
}else {
|
||||
exportData = this.lawsComplianceBoardMapper.queryList(params);
|
||||
}
|
||||
this.disposeData(exportData,cut);
|
||||
if(CollectionUtils.isNotEmpty(exportData)){
|
||||
List<String> idList = new ArrayList<>();
|
||||
exportData.forEach(data -> {
|
||||
idList.add(data.get("id").toString());
|
||||
});
|
||||
params.put("idList",idList);
|
||||
List<Map<String,Object>> complianceResultList = new ArrayList<>();
|
||||
if(CollectionUtils.isNotEmpty(idList)){
|
||||
complianceResultList = this.lawsComplianceBoardMapper.queryComplianceResultList(params);
|
||||
this.disposeComplianceResult(complianceResultList,cut);
|
||||
}
|
||||
|
||||
String title = "";
|
||||
String fileName = "";
|
||||
if(StringUtils.equals(cut, CutEnum.CN.getValue())){
|
||||
title = "编号,标题,状态,技术领域,责任领域,相关项目,设计符合性,Pre-Homo确认,验证符合性";
|
||||
fileName = "符合性结果" + ".xlsx";
|
||||
}else if(StringUtils.equals(cut,CutEnum.EN.getValue())){
|
||||
title = "Serial number,Title,State,Technology territory,Responsible Field,Relevant project,Design conformance,Pre-Homo Confirm,Verify conformance";
|
||||
fileName = "Compliance results" + ".xlsx";
|
||||
}
|
||||
OutputStream os = null;
|
||||
HSSFWorkbook workbook = new HSSFWorkbook();
|
||||
|
||||
try {
|
||||
response.setHeader("Content-Disposition",
|
||||
"attachment; filename=" + fileName);
|
||||
response.setContentType("application/force-download");
|
||||
|
||||
HSSFSheet sheet = workbook.createSheet("sheet1");
|
||||
|
||||
CellStyle titleCellStyle = workbook.createCellStyle();
|
||||
titleCellStyle.setAlignment(HorizontalAlignment.CENTER);//垂直居中
|
||||
titleCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//水平居中
|
||||
titleCellStyle.setWrapText(true);//自动换行
|
||||
|
||||
//创建表头
|
||||
String[] firstLineTitleArr = title.split(",");
|
||||
Row firstRow = sheet.createRow(0);
|
||||
|
||||
//设置居中、表头值。
|
||||
for (int i = 0; i < firstLineTitleArr.length; i++){
|
||||
sheet.setColumnWidth(i,5000);
|
||||
Cell cell = firstRow.createCell(i);
|
||||
cell.setCellStyle(titleCellStyle);
|
||||
cell.setCellValue(firstLineTitleArr[i]);
|
||||
}
|
||||
|
||||
//设置导出数据
|
||||
if(CollectionUtils.isNotEmpty(exportData)) {
|
||||
int rowIndex = 1;
|
||||
for (int dataIndex = 0; dataIndex < exportData.size(); dataIndex++) {
|
||||
|
||||
List<Map<String, Object>> byStandIdcomplianceResultList = new ArrayList<>();
|
||||
if(CollectionUtils.isNotEmpty(complianceResultList)){
|
||||
for (Map<String, Object> comlianceResult : complianceResultList) {
|
||||
if (StringUtils.equals(comlianceResult.get("standId").toString(), exportData.get(dataIndex).get("id").toString())) {
|
||||
byStandIdcomplianceResultList.add(comlianceResult);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(CollectionUtils.isNotEmpty(byStandIdcomplianceResultList)){
|
||||
int byStandIdComlianceResultSize = byStandIdcomplianceResultList.size();
|
||||
for (int i=0; i<byStandIdComlianceResultSize; i++){
|
||||
Row dataRow = sheet.createRow(rowIndex);
|
||||
dataRow.createCell(0).setCellValue(checkValueIsNotNull(exportData.get(dataIndex).get("serialNumber")));
|
||||
dataRow.createCell(1).setCellValue(checkValueIsNotNull(exportData.get(dataIndex).get("title")));
|
||||
dataRow.createCell(2).setCellValue(checkValueIsNotNull(exportData.get(dataIndex).get("state_dicText")));
|
||||
dataRow.createCell(3).setCellValue(checkValueIsNotNull(exportData.get(dataIndex).get("technologyTerritory_dicText")));
|
||||
|
||||
dataRow.createCell(4).setCellValue(checkValueIsNotNull(byStandIdcomplianceResultList.get(i).get("dutyTerritory_dicText")));
|
||||
String projectName = checkValueIsNotNull(byStandIdcomplianceResultList.get(i).get("projectName")) + "-" + checkValueIsNotNull(byStandIdcomplianceResultList.get(i).get("yearName"));
|
||||
dataRow.createCell(5).setCellValue(projectName);
|
||||
dataRow.createCell(6).setCellValue(checkValueIsNotNull(byStandIdcomplianceResultList.get(i).get("designStatus_dicText")));
|
||||
dataRow.createCell(7).setCellValue(checkValueIsNotNull(byStandIdcomplianceResultList.get(i).get("prehomoStatus_dicText")));
|
||||
dataRow.createCell(8).setCellValue(checkValueIsNotNull(byStandIdcomplianceResultList.get(i).get("verifyStatus_dicText")));
|
||||
if(byStandIdComlianceResultSize > 1 && i != (byStandIdComlianceResultSize - 1)){
|
||||
rowIndex ++;
|
||||
}
|
||||
}
|
||||
}else {
|
||||
Row dataRow = sheet.createRow(rowIndex);
|
||||
dataRow.createCell(0).setCellValue(checkValueIsNotNull(exportData.get(dataIndex).get("serialNumber")));
|
||||
dataRow.createCell(1).setCellValue(checkValueIsNotNull(exportData.get(dataIndex).get("title")));
|
||||
dataRow.createCell(2).setCellValue(checkValueIsNotNull(exportData.get(dataIndex).get("state_dicText")));
|
||||
dataRow.createCell(3).setCellValue(checkValueIsNotNull(exportData.get(dataIndex).get("technologyTerritory_dicText")));
|
||||
}
|
||||
rowIndex ++;
|
||||
}
|
||||
}
|
||||
os = response.getOutputStream();
|
||||
workbook.write(os);
|
||||
os.flush();
|
||||
}catch (IOException ex){
|
||||
if(CutEnum.CN.getValue().equals(cut)){
|
||||
throw new JeroBootException("下载文件失败");
|
||||
}else{
|
||||
throw new JeroBootException("Failed to download file");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证值是否是null
|
||||
* @param str
|
||||
* @return
|
||||
*/
|
||||
public String checkValueIsNotNull(Object str){
|
||||
String result = "";
|
||||
if(str != null){
|
||||
result = str.toString();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exportComplianceResultDetail(HttpServletResponse response, HttpServletRequest request, Map<String, Object> params) {
|
||||
String cut = (String) params.get("cut");
|
||||
List<Map<String,Object>> exportData = this.lawsComplianceBoardMapper.queryComplianceResultList(params);
|
||||
this.disposeComplianceResult(exportData,cut);
|
||||
if(CollectionUtils.isNotEmpty(exportData)){
|
||||
String title = "";
|
||||
String fileName = "";
|
||||
if(StringUtils.equals(cut, CutEnum.CN.getValue())){
|
||||
title = "责任领域,相关项目,设计符合性,Pre-Homo确认,验证符合性";
|
||||
fileName = "符合性结果" + ".xlsx";
|
||||
}else if(StringUtils.equals(cut,CutEnum.EN.getValue())){
|
||||
title = "Responsible Field,Relevant project,Design conformance,Pre-Homo Confirm,Verify conformance";
|
||||
fileName = "Compliance results" + ".xlsx";
|
||||
}
|
||||
OutputStream os = null;
|
||||
HSSFWorkbook workbook = new HSSFWorkbook();
|
||||
|
||||
try {
|
||||
response.setHeader("Content-Disposition",
|
||||
"attachment; filename=" + fileName);
|
||||
response.setContentType("application/force-download");
|
||||
|
||||
HSSFSheet sheet = workbook.createSheet("sheet1");
|
||||
|
||||
CellStyle titleCellStyle = workbook.createCellStyle();
|
||||
titleCellStyle.setAlignment(HorizontalAlignment.CENTER);//垂直居中
|
||||
titleCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//水平居中
|
||||
titleCellStyle.setWrapText(true);//自动换行
|
||||
|
||||
//创建表头
|
||||
String[] firstLineTitleArr = title.split(",");
|
||||
Row firstRow = sheet.createRow(0);
|
||||
|
||||
//设置居中、表头值。
|
||||
for (int i = 0; i < firstLineTitleArr.length; i++){
|
||||
sheet.setColumnWidth(i,5000);
|
||||
Cell cell = firstRow.createCell(i);
|
||||
cell.setCellStyle(titleCellStyle);
|
||||
cell.setCellValue(firstLineTitleArr[i]);
|
||||
}
|
||||
|
||||
//设置导出数据
|
||||
if(CollectionUtils.isNotEmpty(exportData)) {
|
||||
int rowIndex = 1;
|
||||
for (int dataIndex = 0; dataIndex < exportData.size(); dataIndex++) {
|
||||
Row dataRow = sheet.createRow(rowIndex);
|
||||
dataRow.createCell(0).setCellValue(checkValueIsNotNull(exportData.get(dataIndex).get("dutyTerritory_dicText")));
|
||||
dataRow.createCell(1).setCellValue(checkValueIsNotNull(exportData.get(dataIndex).get("projectName")));
|
||||
dataRow.createCell(2).setCellValue(checkValueIsNotNull(exportData.get(dataIndex).get("designStatus_dicText")));
|
||||
dataRow.createCell(3).setCellValue(checkValueIsNotNull(exportData.get(dataIndex).get("prehomoStatus_dicText")));
|
||||
dataRow.createCell(4).setCellValue(checkValueIsNotNull(exportData.get(dataIndex).get("verifyStatus_dicText")));
|
||||
rowIndex ++;
|
||||
}
|
||||
}
|
||||
os = response.getOutputStream();
|
||||
workbook.write(os);
|
||||
os.flush();
|
||||
}catch (IOException ex){
|
||||
if(CutEnum.CN.getValue().equals(cut)){
|
||||
throw new JeroBootException("下载文件失败");
|
||||
}else{
|
||||
throw new JeroBootException("Failed to download file");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@NotNull
|
||||
public String getConditionStr(Map<String, Object> parameter) {
|
||||
@@ -113,7 +432,7 @@ public class LawsComplianceBoardServiceImpl implements ILawsComplianceBoardServi
|
||||
if (value.contains("%")) {
|
||||
value = value.replace("%", "/%");
|
||||
}
|
||||
conditionSb.append(" and " + key + " like concat(concat('%','" + value + "'),'%') ESCAPE '/'");
|
||||
conditionSb.append(" and bdl." + key + " like concat(concat('%','" + value + "'),'%') ESCAPE '/'");
|
||||
} else if (FieldTypeEnum.PULL_SINGLE.getValue().equals(fieldType)
|
||||
|| FieldTypeEnum.PULL_MORE.getValue().equals(fieldType)
|
||||
|| FieldTypeEnum.TREE.getValue().equals(fieldType)) {
|
||||
@@ -121,27 +440,27 @@ public class LawsComplianceBoardServiceImpl implements ILawsComplianceBoardServi
|
||||
StringBuilder condition = new StringBuilder();
|
||||
for (String valueTemp : value.split(",")) {
|
||||
valueSb.append("'" + valueTemp + "',");
|
||||
condition.append(" or " + key + " like concat(concat('%','" + valueTemp + "'),'%')");
|
||||
condition.append(" or bdl." + key + " like concat(concat('%','" + valueTemp + "'),'%')");
|
||||
}
|
||||
condition.append(")");
|
||||
String substring = valueSb.substring(0, valueSb.length() - 1);
|
||||
//下拉单选或下拉多选
|
||||
conditionSb.append(" and (" + key + " in(" + substring + ")" + condition.toString());
|
||||
conditionSb.append(" and (bdl." + key + " in(" + substring + ")" + condition.toString());
|
||||
|
||||
} else if (FieldTypeEnum.DATE_SINGLE.getValue().equals(fieldType)) {
|
||||
//日期(区分单日期还时间范围)
|
||||
if (value.contains(",")) {
|
||||
conditionSb.append(" and " + "date_format(" + key + ",'%Y-%m-%d') >= '" + value.split(",")[0] + "'"
|
||||
conditionSb.append(" and " + "date_format(bdl." + key + ",'%Y-%m-%d') >= '" + value.split(",")[0] + "'"
|
||||
+ " and " + "date_format(" + key + ",'%Y-%m-%d') <= '" + value.split(",")[1] + "'");
|
||||
} else {
|
||||
conditionSb.append(" and " + "date_format(" + key + ",'%Y-%m-%d') = '" + value + "'");
|
||||
conditionSb.append(" and " + "date_format(bdl." + key + ",'%Y-%m-%d') = '" + value + "'");
|
||||
}
|
||||
} else if (FieldTypeEnum.PERSON.getValue().equals(fieldType)) {
|
||||
//输入框 LIKE CONCAT("%", '/%', "%") ESCAPE '/'
|
||||
if (value.contains("%")) {
|
||||
value = value.replace("%", "/%");
|
||||
}
|
||||
conditionSb.append(" and " + key + " like concat(concat('%','" + value + "'),'%') ESCAPE '/'");
|
||||
conditionSb.append(" and bdl." + key + " like concat(concat('%','" + value + "'),'%') ESCAPE '/'");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -177,13 +496,26 @@ public class LawsComplianceBoardServiceImpl implements ILawsComplianceBoardServi
|
||||
String queryConditionVOListStr = (String) parameter.get("queryConditionVOList");
|
||||
List<QueryConditionVO> queryConditionVOList = com.alibaba.fastjson.JSONObject.parseArray(queryConditionVOListStr, QueryConditionVO.class);
|
||||
if(ObjectUtils.isNotEmpty(queryConditionVOList)){
|
||||
String queryCondition = this.bussDocumentLibraryEOService.sqlJoint(queryConditionVOList);
|
||||
String queryCondition = this.sqlJoint(queryConditionVOList);
|
||||
if(StringUtils.isNotBlank(queryCondition)){
|
||||
conditionSb.append(" and " + queryCondition);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
String ids = (String) parameter.get("ids");
|
||||
if(StringUtils.isNotEmpty(ids)){
|
||||
List<String> idList = Arrays.asList(ids.split(","));
|
||||
String idStr = "";
|
||||
for (String id : idList) {
|
||||
idStr += "'"+id+"',";
|
||||
}
|
||||
if(StringUtils.isNotEmpty(idStr)){
|
||||
idStr = idStr.substring(0,idStr.length()-1);
|
||||
conditionSb.append(" and id in("+idStr+")");
|
||||
}
|
||||
}
|
||||
|
||||
//处理列表表头排序
|
||||
/*if (StringUtils.isNotBlank((String) parameter.get("orderByField"))) {
|
||||
conditionSb.append(" order by " + (String) parameter.get("orderByField"));
|
||||
@@ -198,4 +530,115 @@ public class LawsComplianceBoardServiceImpl implements ILawsComplianceBoardServi
|
||||
String condition = conditionSb.toString();
|
||||
return condition;
|
||||
}
|
||||
|
||||
public String sqlJoint(List<QueryConditionVO> queryConditionVOList){
|
||||
StringBuilder sb = new StringBuilder();
|
||||
if(queryConditionVOList.size() != 0){
|
||||
int count =0;
|
||||
for (QueryConditionVO queryConditionVO : queryConditionVOList) {
|
||||
String type = queryConditionVO.getType();//and或or
|
||||
String rule = queryConditionVO.getRule();
|
||||
String ruleLike = "";
|
||||
if(QueryRuleEnum.LEFT_LIKE.getCondition().equals(rule) || QueryRuleEnum.RIGHT_LIKE.getCondition().equals(rule)){
|
||||
ruleLike = QueryRuleEnum.LIKE.getCondition();
|
||||
}
|
||||
String field = queryConditionVO.getField();
|
||||
String val = queryConditionVO.getVal();
|
||||
//如果查询字段对应的搜索条件值为空,则不作处理
|
||||
if(StringUtils.isNotBlank(val)) {
|
||||
field = "bdl." + field;
|
||||
count++;//从第二个查询条件开始拼接type(and或or)
|
||||
if (count > 1) {
|
||||
sb.append(" " + type + " ");
|
||||
}
|
||||
sb.append(" " + field + " ");
|
||||
//查询类型
|
||||
String ruleTemp = queryType(rule);
|
||||
if (StringUtils.isNotBlank(ruleLike)) {
|
||||
sb.append(ruleLike + " ");
|
||||
} else {
|
||||
sb.append(ruleTemp + " ");
|
||||
}
|
||||
//like和in需要特殊处理
|
||||
if (QueryRuleEnum.IN.getCondition().equals(rule)) {
|
||||
if (val.contains(",")) {
|
||||
StringBuilder sbTemp = new StringBuilder();
|
||||
for (String valTemp : val.split(",")) {
|
||||
sbTemp.append("'" + valTemp + "' ,");
|
||||
}
|
||||
if (StringUtils.isNotBlank(sbTemp)) {
|
||||
String substring = sbTemp.substring(0, sbTemp.length() - 1);
|
||||
sb.append("(" + substring + ")");
|
||||
}
|
||||
}
|
||||
sb.append("('" + val + "')");
|
||||
} else if (QueryRuleEnum.LIKE.getCondition().equals(rule)) {
|
||||
sb.append("'%" + val + "%'");
|
||||
} else if (QueryRuleEnum.LEFT_LIKE.getCondition().equals(rule)) {
|
||||
sb.append("'%" + val + "'");
|
||||
} else if (QueryRuleEnum.RIGHT_LIKE.getCondition().equals(rule)) {
|
||||
sb.append("'" + val + "%'");
|
||||
} else {
|
||||
sb.append("'" + val + "'");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public String queryType(String rule){
|
||||
String value ="";
|
||||
if(QueryRuleEnum.GT.getCondition().equals(rule)){
|
||||
value = QueryRuleEnum.GT.getValue();
|
||||
}else if(QueryRuleEnum.GE.getCondition().equals(rule)){
|
||||
value = QueryRuleEnum.GE.getValue();
|
||||
}else if(QueryRuleEnum.LT.getCondition().equals(rule)){
|
||||
value = QueryRuleEnum.LT.getValue();
|
||||
}else if(QueryRuleEnum.LE.getCondition().equals(rule)){
|
||||
value = QueryRuleEnum.LE.getValue();
|
||||
}else if(QueryRuleEnum.EQ.getCondition().equals(rule)){
|
||||
value = QueryRuleEnum.EQ.getValue();
|
||||
}else if(QueryRuleEnum.NE.getCondition().equals(rule)){
|
||||
value = QueryRuleEnum.NE.getValue();
|
||||
}else if(QueryRuleEnum.LIKE.getCondition().equals(rule)){
|
||||
value = QueryRuleEnum.LIKE.getValue();
|
||||
}else if(QueryRuleEnum.LEFT_LIKE.getCondition().equals(rule)){
|
||||
value = QueryRuleEnum.LEFT_LIKE.getValue();
|
||||
}else if(QueryRuleEnum.RIGHT_LIKE.getCondition().equals(rule)){
|
||||
value = QueryRuleEnum.RIGHT_LIKE.getValue();
|
||||
}else if(QueryRuleEnum.IN.getCondition().equals(rule)){
|
||||
value = QueryRuleEnum.IN.getValue();
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理技术领域展示字段
|
||||
* @param technologyTerritoryList
|
||||
* @param technologyTerritory
|
||||
* @param cut
|
||||
* @return
|
||||
*/
|
||||
public String disposeTechnologyTerritory(List<SysCategory> technologyTerritoryList, String technologyTerritory, String cut){
|
||||
String result = "";
|
||||
// technology_territory
|
||||
if(org.apache.commons.lang3.StringUtils.isNotEmpty(technologyTerritory)){
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (String technologyTerritoryId : technologyTerritory.split(",")) {
|
||||
List<SysCategory> collect = technologyTerritoryList.stream().filter(e -> e.getId().equals(technologyTerritoryId)).collect(Collectors.toList());
|
||||
if(collect.size() != 0){
|
||||
if(CutEnum.CN.getValue().equals(cut)){
|
||||
sb.append(collect.get(0).getName()+",");
|
||||
}else{
|
||||
sb.append(collect.get(0).getEnName()+",");
|
||||
}
|
||||
}
|
||||
}
|
||||
if(org.apache.commons.lang3.StringUtils.isNotEmpty(sb)){
|
||||
result = sb.substring(0, sb.length() - 1);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
+4
-11
@@ -55,14 +55,7 @@ import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.TreeSet;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -1047,7 +1040,7 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
|
||||
StringBuilder midId = new StringBuilder();
|
||||
for (String data : lawEngineerNameList) {
|
||||
if (StringUtils.isNotEmpty(lawEngineerName)) {
|
||||
lawEngineerId = lawEngineerUsers.stream().filter(e -> data.equals(e.getUsername()))
|
||||
lawEngineerId = lawEngineerUsers.stream().filter(e -> data.toLowerCase().equals(e.getUsername().toLowerCase()))
|
||||
.map(sysUser -> sysUser.getId()).collect(Collectors.joining(","));
|
||||
}
|
||||
midId.append(lawEngineerId).append(",");
|
||||
@@ -1081,7 +1074,7 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
|
||||
StringBuilder midId = new StringBuilder();
|
||||
for (String data : engineeringInterfacePersonNameList) {
|
||||
if (StringUtils.isNotEmpty(engineeringInterfacePersonName)) {
|
||||
engineeringInterfacePersonId = engineeringInterfacePersonUsers.stream().filter(e -> data.equals(e.getUsername()))
|
||||
engineeringInterfacePersonId = engineeringInterfacePersonUsers.stream().filter(e -> data.toLowerCase().equals(e.getUsername().toLowerCase()))
|
||||
.map(sysUser -> sysUser.getId()).collect(Collectors.joining(","));
|
||||
}
|
||||
midId.append(engineeringInterfacePersonId).append(",");
|
||||
@@ -1130,7 +1123,7 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
|
||||
StringBuilder midId = new StringBuilder();
|
||||
for (String data : certificationEngineerNameList) {
|
||||
if (StringUtils.isNotEmpty(certificationEngineerName)) {
|
||||
certificationEngineerId = certificationEngineerUsers.stream().filter(e -> data.equals(e.getUsername()))
|
||||
certificationEngineerId = certificationEngineerUsers.stream().filter(e -> data.toLowerCase().equals(e.getUsername().toLowerCase()))
|
||||
.map(sysUser -> sysUser.getId()).collect(Collectors.joining(","));
|
||||
}
|
||||
midId.append(certificationEngineerId).append(",");
|
||||
|
||||
+268
@@ -0,0 +1,268 @@
|
||||
package com.jero.modules.project.util;
|
||||
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.docx4j.XmlUtils;
|
||||
import org.docx4j.dml.*;
|
||||
import org.docx4j.dml.spreadsheetdrawing.*;
|
||||
import org.docx4j.openpackaging.io.SaveToZipFile;
|
||||
import org.docx4j.openpackaging.packages.SpreadsheetMLPackage;
|
||||
import org.docx4j.openpackaging.parts.DrawingML.Drawing;
|
||||
import org.docx4j.openpackaging.parts.PartName;
|
||||
import org.docx4j.openpackaging.parts.SpreadsheetML.JaxbSmlPart;
|
||||
import org.docx4j.openpackaging.parts.SpreadsheetML.WorksheetPart;
|
||||
import org.docx4j.openpackaging.parts.WordprocessingML.BinaryPartAbstractImage;
|
||||
import org.docx4j.relationships.Relationship;
|
||||
|
||||
import javax.xml.bind.JAXBException;
|
||||
import javax.xml.bind.util.JAXBResult;
|
||||
import javax.xml.transform.Source;
|
||||
import javax.xml.transform.Templates;
|
||||
import javax.xml.transform.TransformerFactory;
|
||||
import javax.xml.transform.stream.StreamSource;
|
||||
import java.io.File;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class ExcelUtil {
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
String inputfilepath = "D:\\text\\072001自定义模板.xlsx";
|
||||
SpreadsheetMLPackage pkg = SpreadsheetMLPackage.load(new File(inputfilepath));
|
||||
WorksheetPart worksheet = pkg.getWorkbookPart().getWorksheet(0);
|
||||
JAXBResult result = XmlUtils.prepareJAXBResult(worksheet.getJAXBContext());
|
||||
Map<String, Object> transformParameters = new HashMap<>();
|
||||
transformParameters.put("NIO 07200103", "dfasdfas");
|
||||
|
||||
// InputStream smlPart = pkg.getParts().get(new PartName("/xl/sharedStrings.xml")); // 获取所有sheet
|
||||
|
||||
Source xsltSource = new StreamSource(new File("D:\\text\\sharedStrings.xml"));
|
||||
TransformerFactory transFact = TransformerFactory.newInstance();
|
||||
Templates cachedXSLT = transFact.newTemplates(xsltSource);
|
||||
|
||||
pkg.getWorkbookPart().transform(cachedXSLT,transformParameters,result);
|
||||
|
||||
// variableReplace();
|
||||
// xlsx4JAddImage();
|
||||
}
|
||||
|
||||
public static void xlsx4JAddImage() throws Exception {
|
||||
|
||||
String inputfilepath = "D:\\text\\072001自定义模板.xlsx";
|
||||
String outputfilepath = "D:\\text\\mytest.xlsx";
|
||||
String imagefilePath = "D:\\text\\jpg2.jpg" ;
|
||||
|
||||
SpreadsheetMLPackage pkg = SpreadsheetMLPackage.createPackage();
|
||||
WorksheetPart worksheet = pkg.createWorksheetPart(new PartName("/xl/worksheets/sheet1.xml"), "Sheet1", 1);
|
||||
|
||||
|
||||
// Create Drawing part and add to sheet
|
||||
Drawing drawingPart = new Drawing();
|
||||
Relationship drawingRel = worksheet.addTargetPart(drawingPart);
|
||||
|
||||
// Add anchor XML to worksheet
|
||||
org.xlsx4j.sml.CTDrawing drawing = org.xlsx4j.jaxb.Context.getsmlObjectFactory().createCTDrawing();
|
||||
worksheet.getJaxbElement().setDrawing(drawing);
|
||||
drawing.setId( drawingRel.getId() );
|
||||
|
||||
// Create image part and add to Drawing part
|
||||
BinaryPartAbstractImage imagePart
|
||||
= BinaryPartAbstractImage.createImagePart(pkg, drawingPart,
|
||||
FileUtils.readFileToByteArray(new File(imagefilePath) ));
|
||||
String imageRelID = imagePart.getSourceRelationship().getId();
|
||||
|
||||
// Create and set drawing part content
|
||||
// Take your pick ..
|
||||
// .. build it using code
|
||||
drawingPart.setJaxbElement(
|
||||
buildDrawingPartContentUsingCode(imageRelID));
|
||||
// .. or build it from an XML string
|
||||
// drawingPart.setJaxbElement(
|
||||
// buildDrawingPartContentFromXmlString(imageRelID));
|
||||
|
||||
|
||||
// Save the xlsx
|
||||
SaveToZipFile saver = new SaveToZipFile(pkg);
|
||||
saver.save(outputfilepath);
|
||||
System.out.println("\n\n done .. " + outputfilepath);
|
||||
}
|
||||
|
||||
public static void variableReplace(InputStream is, OutputStream os, HashMap<String, String> mappings) throws Exception {
|
||||
|
||||
SpreadsheetMLPackage opcPackagepkg = SpreadsheetMLPackage.load(is);
|
||||
|
||||
// Be sure to get the part which actually contains your variables!
|
||||
JaxbSmlPart smlPart = (JaxbSmlPart)opcPackagepkg.getParts().get(new PartName("/xl/sharedStrings.xml")); // 获取所有sheet
|
||||
//JaxbSmlPart smlPart = (JaxbSmlPart)opcPackagepkg.getParts().get(new PartName("/xl/worksheets/sheet1.xml"));
|
||||
smlPart.variableReplace(mappings);
|
||||
|
||||
// Save it
|
||||
opcPackagepkg.save(os);
|
||||
}
|
||||
|
||||
/**
|
||||
* This code generated using http://webapp.docx4java.org/OnlineDemo/PartsList.html
|
||||
* "Method 1"
|
||||
*/
|
||||
public static CTDrawing buildDrawingPartContentUsingCode(String imageRelID) {
|
||||
|
||||
org.docx4j.dml.spreadsheetdrawing.ObjectFactory dmlspreadsheetdrawingObjectFactory = new org.docx4j.dml.spreadsheetdrawing.ObjectFactory();
|
||||
|
||||
CTDrawing drawing = dmlspreadsheetdrawingObjectFactory.createCTDrawing();
|
||||
// JAXBElement<org.docx4j.dml.spreadsheetdrawing.CTDrawing> drawingWrapped = dmlspreadsheetdrawingObjectFactory.createWsDr(drawing);
|
||||
// Create object for twoCellAnchor
|
||||
CTTwoCellAnchor twocellanchor = dmlspreadsheetdrawingObjectFactory.createCTTwoCellAnchor();
|
||||
drawing.getEGAnchor().add( twocellanchor);
|
||||
// Create object for clientData
|
||||
CTAnchorClientData anchorclientdata = dmlspreadsheetdrawingObjectFactory.createCTAnchorClientData();
|
||||
twocellanchor.setClientData(anchorclientdata);
|
||||
// Create object for pic
|
||||
CTPicture picture = dmlspreadsheetdrawingObjectFactory.createCTPicture();
|
||||
twocellanchor.setPic(picture);
|
||||
org.docx4j.dml.ObjectFactory dmlObjectFactory = new org.docx4j.dml.ObjectFactory();
|
||||
// Create object for blipFill
|
||||
CTBlipFillProperties blipfillproperties = dmlObjectFactory.createCTBlipFillProperties();
|
||||
picture.setBlipFill(blipfillproperties);
|
||||
// Create object for blip
|
||||
CTBlip blip = dmlObjectFactory.createCTBlip();
|
||||
blipfillproperties.setBlip(blip);
|
||||
blip.setCstate(org.docx4j.dml.STBlipCompression.NONE);
|
||||
blip.setEmbed( imageRelID );
|
||||
// Create object for extLst
|
||||
CTOfficeArtExtensionList officeartextensionlist = dmlObjectFactory.createCTOfficeArtExtensionList();
|
||||
blip.setExtLst(officeartextensionlist);
|
||||
// Create object for ext
|
||||
CTOfficeArtExtension officeartextension = dmlObjectFactory.createCTOfficeArtExtension();
|
||||
officeartextensionlist.getExt().add( officeartextension);
|
||||
officeartextension.setUri( "{28A0092B-C50C-407E-A947-70E740481C1C}");
|
||||
blip.setLink( "");
|
||||
// Create object for stretch
|
||||
CTStretchInfoProperties stretchinfoproperties = dmlObjectFactory.createCTStretchInfoProperties();
|
||||
blipfillproperties.setStretch(stretchinfoproperties);
|
||||
// Create object for fillRect
|
||||
CTRelativeRect relativerect = dmlObjectFactory.createCTRelativeRect();
|
||||
stretchinfoproperties.setFillRect(relativerect);
|
||||
relativerect.setR( new Integer(0) );
|
||||
relativerect.setT( new Integer(0) );
|
||||
relativerect.setL( new Integer(0) );
|
||||
relativerect.setB( new Integer(0) );
|
||||
// Create object for spPr
|
||||
CTShapeProperties shapeproperties = dmlObjectFactory.createCTShapeProperties();
|
||||
picture.setSpPr(shapeproperties);
|
||||
// Create object for xfrm
|
||||
CTTransform2D transform2d = dmlObjectFactory.createCTTransform2D();
|
||||
shapeproperties.setXfrm(transform2d);
|
||||
transform2d.setRot( new Integer(0) );
|
||||
// Create object for off
|
||||
CTPoint2D point2d = dmlObjectFactory.createCTPoint2D();
|
||||
transform2d.setOff(point2d);
|
||||
point2d.setY( 0 );
|
||||
point2d.setX( 0 );
|
||||
// Create object for ext
|
||||
CTPositiveSize2D positivesize2d = dmlObjectFactory.createCTPositiveSize2D();
|
||||
transform2d.setExt(positivesize2d);
|
||||
positivesize2d.setCx( 714375 );
|
||||
positivesize2d.setCy( 714375 );
|
||||
// Create object for prstGeom
|
||||
CTPresetGeometry2D presetgeometry2d = dmlObjectFactory.createCTPresetGeometry2D();
|
||||
shapeproperties.setPrstGeom(presetgeometry2d);
|
||||
// Create object for avLst
|
||||
CTGeomGuideList geomguidelist = dmlObjectFactory.createCTGeomGuideList();
|
||||
presetgeometry2d.setAvLst(geomguidelist);
|
||||
presetgeometry2d.setPrst(org.docx4j.dml.STShapeType.RECT);
|
||||
// Create object for nvPicPr
|
||||
CTPictureNonVisual picturenonvisual = dmlspreadsheetdrawingObjectFactory.createCTPictureNonVisual();
|
||||
picture.setNvPicPr(picturenonvisual);
|
||||
// Create object for cNvPr
|
||||
CTNonVisualDrawingProps nonvisualdrawingprops = dmlObjectFactory.createCTNonVisualDrawingProps();
|
||||
picturenonvisual.setCNvPr(nonvisualdrawingprops);
|
||||
nonvisualdrawingprops.setDescr( "");
|
||||
nonvisualdrawingprops.setName( "Picture 1");
|
||||
nonvisualdrawingprops.setId( 2 );
|
||||
// Create object for cNvPicPr
|
||||
CTNonVisualPictureProperties nonvisualpictureproperties = dmlObjectFactory.createCTNonVisualPictureProperties();
|
||||
picturenonvisual.setCNvPicPr(nonvisualpictureproperties);
|
||||
// Create object for picLocks
|
||||
CTPictureLocking picturelocking = dmlObjectFactory.createCTPictureLocking();
|
||||
nonvisualpictureproperties.setPicLocks(picturelocking);
|
||||
picture.setMacro( "");
|
||||
// Create object for to
|
||||
CTMarker marker = dmlspreadsheetdrawingObjectFactory.createCTMarker();
|
||||
twocellanchor.setTo(marker);
|
||||
marker.setCol(1);
|
||||
marker.setColOff( 104775 );
|
||||
marker.setRow(3);
|
||||
marker.setRowOff( 142875 );
|
||||
// Create object for from
|
||||
CTMarker marker2 = dmlspreadsheetdrawingObjectFactory.createCTMarker();
|
||||
twocellanchor.setFrom(marker2);
|
||||
marker2.setCol(0);
|
||||
marker2.setColOff( 0 );
|
||||
marker2.setRow(0);
|
||||
marker2.setRowOff( 0 );
|
||||
twocellanchor.setEditAs(STEditAs.fromValue("name"));
|
||||
|
||||
// return drawingWrapped;
|
||||
return drawing;
|
||||
}
|
||||
|
||||
/**
|
||||
* This code generated using http://webapp.docx4java.org/OnlineDemo/PartsList.html
|
||||
* "Method 2"
|
||||
*/
|
||||
public static CTDrawing buildDrawingPartContentFromXmlString(String imageRelID) throws JAXBException {
|
||||
|
||||
String openXML = "<xdr:wsDr xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:a14=\"http://schemas.microsoft.com/office/drawing/2010/main\" xmlns:xdr=\"http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\">"
|
||||
+ "<xdr:twoCellAnchor editAs=\"oneCell\">"
|
||||
+ "<xdr:from>"
|
||||
+ "<xdr:col>0</xdr:col>"
|
||||
+ "<xdr:colOff>0</xdr:colOff>"
|
||||
+ "<xdr:row>0</xdr:row>"
|
||||
+ "<xdr:rowOff>0</xdr:rowOff>"
|
||||
+"</xdr:from>"
|
||||
+ "<xdr:to>"
|
||||
+ "<xdr:col>1</xdr:col>"
|
||||
+ "<xdr:colOff>104775</xdr:colOff>"
|
||||
+ "<xdr:row>3</xdr:row>"
|
||||
+ "<xdr:rowOff>142875</xdr:rowOff>"
|
||||
+"</xdr:to>"
|
||||
+ "<xdr:pic>"
|
||||
+ "<xdr:nvPicPr>"
|
||||
+ "<xdr:cNvPr id=\"2\" name=\"Picture 1\"/>"
|
||||
+ "<xdr:cNvPicPr>"
|
||||
+ "<a:picLocks noChangeAspect=\"1\"/>"
|
||||
+"</xdr:cNvPicPr>"
|
||||
+"</xdr:nvPicPr>"
|
||||
+ "<xdr:blipFill>"
|
||||
+ "<a:blip r:embed=\"" + imageRelID + "\">"
|
||||
+ "<a:extLst>"
|
||||
+ "<a:ext uri=\"{28A0092B-C50C-407E-A947-70E740481C1C}\">"
|
||||
+ "<a14:useLocalDpi val=\"0\"/>"
|
||||
+"</a:ext>"
|
||||
+"</a:extLst>"
|
||||
+"</a:blip>"
|
||||
+ "<a:stretch>"
|
||||
+ "<a:fillRect/>"
|
||||
+"</a:stretch>"
|
||||
+"</xdr:blipFill>"
|
||||
+ "<xdr:spPr>"
|
||||
+ "<a:xfrm>"
|
||||
+ "<a:off x=\"0\" y=\"0\"/>"
|
||||
+ "<a:ext cx=\"714375\" cy=\"714375\"/>"
|
||||
+"</a:xfrm>"
|
||||
+ "<a:prstGeom prst=\"rect\">"
|
||||
+ "<a:avLst/>"
|
||||
+"</a:prstGeom>"
|
||||
+"</xdr:spPr>"
|
||||
+"</xdr:pic>"
|
||||
+ "<xdr:clientData/>"
|
||||
+"</xdr:twoCellAnchor>"
|
||||
+"</xdr:wsDr>";
|
||||
|
||||
return (CTDrawing) XmlUtils.unwrap(
|
||||
XmlUtils.unmarshalString(openXML));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+278
-23
@@ -1,14 +1,5 @@
|
||||
package com.jero.modules.project.util;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.docx4j.Docx4J;
|
||||
import org.docx4j.TraversalUtil;
|
||||
import org.docx4j.XmlUtils;
|
||||
@@ -20,23 +11,24 @@ import org.docx4j.finders.RangeFinder;
|
||||
import org.docx4j.fonts.IdentityPlusMapper;
|
||||
import org.docx4j.fonts.Mapper;
|
||||
import org.docx4j.fonts.PhysicalFonts;
|
||||
import org.docx4j.jaxb.Context;
|
||||
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
|
||||
import org.docx4j.openpackaging.parts.WordprocessingML.BinaryPartAbstractImage;
|
||||
import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart;
|
||||
import org.docx4j.wml.Body;
|
||||
import org.docx4j.wml.CTBookmark;
|
||||
import org.docx4j.wml.Document;
|
||||
import org.docx4j.wml.Drawing;
|
||||
import org.docx4j.wml.ObjectFactory;
|
||||
import org.docx4j.wml.P;
|
||||
import org.docx4j.wml.R;
|
||||
import org.docx4j.wml.Tbl;
|
||||
import org.docx4j.wml.Text;
|
||||
import org.docx4j.wml.Tr;
|
||||
import org.docx4j.wml.*;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.util.FileCopyUtils;
|
||||
|
||||
import javax.xml.bind.JAXBElement;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.util.*;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class WordUtil {
|
||||
private static final Logger log = LoggerFactory.getLogger(WordUtil.class);
|
||||
|
||||
@@ -126,7 +118,16 @@ public class WordUtil {
|
||||
table.getContent().remove(rowNum - 1);
|
||||
}
|
||||
|
||||
public static void replacePicture(WordprocessingMLPackage wordMLPackage, String bookmarkName, InputStream inputStream) throws Exception {
|
||||
/**
|
||||
* 通过书签识别需要插入的图片位置,并替换书签对应的文本为图片
|
||||
* @param wordMLPackage
|
||||
* @param bookmarkName 书签名称
|
||||
* @param text 图片前需要加的文本
|
||||
* @param bytes 图片
|
||||
* @throws Exception
|
||||
* @author liyawei
|
||||
*/
|
||||
public static void replacePictureBM(WordprocessingMLPackage wordMLPackage, String bookmarkName, Object text, byte[] bytes) throws Exception {
|
||||
try {
|
||||
MainDocumentPart mainDocumentPart = wordMLPackage.getMainDocumentPart();
|
||||
Document wmlDoc = (Document)mainDocumentPart.getJaxbElement();
|
||||
@@ -139,23 +140,277 @@ public class WordUtil {
|
||||
while(var8.hasNext()) {
|
||||
CTBookmark bm = (CTBookmark)var8.next();
|
||||
if (bm.getName().equals(bookmarkName)) {
|
||||
byte[] bytes = IOUtils.toByteArray(inputStream);
|
||||
BinaryPartAbstractImage imagePart = BinaryPartAbstractImage.createImagePart(wordMLPackage, bytes);
|
||||
Inline inline = imagePart.createImageInline("", "", 0, 1, true);
|
||||
P p = (P)((P)bm.getParent());
|
||||
ObjectFactory factory = new ObjectFactory();
|
||||
R run = factory.createR();
|
||||
Drawing drawing = factory.createDrawing();
|
||||
drawing.getAnchorOrInline().add(inline);
|
||||
run.getContent().add(drawing);
|
||||
p.getContent().add(run);
|
||||
replaceTextToImage(bm, text, wordMLPackage, bytes);
|
||||
}
|
||||
}
|
||||
} catch (Exception var17) {
|
||||
log.error(var17.getMessage(), var17);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过 占位符的key 识别需要插入的图片位置,并替换占位符为图片
|
||||
* @param wordMLPackage
|
||||
* @param key 占位符的key ${key}
|
||||
* @param text 图片前需要加的文本
|
||||
* @param bytes 图片
|
||||
* @throws Exception
|
||||
*/
|
||||
public static void replacePicture(WordprocessingMLPackage wordMLPackage, String key, Object text, byte[] bytes) throws Exception {
|
||||
try {
|
||||
MainDocumentPart mainDocumentPart = wordMLPackage.getMainDocumentPart();
|
||||
Docx4jUtils.cleanDocumentPart(mainDocumentPart);
|
||||
Document wmlDoc = (Document)mainDocumentPart.getJaxbElement();
|
||||
Body body = wmlDoc.getBody();
|
||||
Iterator var8 = getAllPlaceholderElementFromObject(body).iterator();
|
||||
|
||||
while(var8.hasNext()) {
|
||||
Text bm = (Text) var8.next();
|
||||
if (bm.getValue().equals("${" + key + "}")) {
|
||||
BinaryPartAbstractImage imagePart = BinaryPartAbstractImage.createImagePart(wordMLPackage, bytes);
|
||||
Inline inline = imagePart.createImageInline("", "", 0, 1, true);
|
||||
ObjectFactory factory = new ObjectFactory();
|
||||
R run = factory.createR();
|
||||
Drawing drawing = factory.createDrawing();
|
||||
drawing.getAnchorOrInline().add(inline);
|
||||
run.getContent().add(drawing);
|
||||
replaceTextToImage(bm, text, wordMLPackage, bytes);
|
||||
}
|
||||
}
|
||||
} catch (Exception var17) {
|
||||
log.error(var17.getMessage(), var17);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过 占位符的key 识别需要插入的图片位置,并替换占位符为图片
|
||||
* 批量替换
|
||||
* @param wordMLPackage
|
||||
* @param picList
|
||||
* @throws Exception
|
||||
*/
|
||||
public static void replacePictureBatch(WordprocessingMLPackage wordMLPackage, List<Map<String, Object>> picList) throws Exception {
|
||||
try {
|
||||
MainDocumentPart mainDocumentPart = wordMLPackage.getMainDocumentPart();
|
||||
Docx4jUtils.cleanDocumentPart(mainDocumentPart);
|
||||
Document wmlDoc = (Document)mainDocumentPart.getJaxbElement();
|
||||
Body body = wmlDoc.getBody();
|
||||
List<Text> textList = getAllPlaceholderElementFromObject(body); // 获取文档中所有占位符
|
||||
|
||||
for (Map<String, Object> picMap :picList) {
|
||||
String key = (String) picMap.get("key");
|
||||
Object text = picMap.get("text");
|
||||
byte[] bytes = (byte[]) picMap.get("bytes");
|
||||
|
||||
for(Text bm : textList) {
|
||||
if (bm.getValue().equals("${" + key + "}")) {
|
||||
BinaryPartAbstractImage imagePart = BinaryPartAbstractImage.createImagePart(wordMLPackage, bytes);
|
||||
Inline inline = imagePart.createImageInline("", "", 0, 1, true);
|
||||
ObjectFactory factory = new ObjectFactory();
|
||||
R run = factory.createR();
|
||||
Drawing drawing = factory.createDrawing();
|
||||
drawing.getAnchorOrInline().add(inline);
|
||||
run.getContent().add(drawing);
|
||||
replaceTextToImage(bm, text, wordMLPackage, bytes);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception var17) {
|
||||
log.error(var17.getMessage(), var17);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 发现docx文档包含占位符的文本节点
|
||||
* 未解决问题:两个连着的相同占位符会识别成一个。如 原文:${key1}${key1}
|
||||
* @param obj
|
||||
* @return
|
||||
* @author liyawei
|
||||
*/
|
||||
private static List<Text> getAllPlaceholderElementFromObject(Object obj) {
|
||||
List<Text> result = new ArrayList<>();
|
||||
Class<Text> toSearch = Text.class;
|
||||
Text textPlaceholder;
|
||||
if (obj instanceof JAXBElement) {
|
||||
obj = ((JAXBElement<?>) obj).getValue();
|
||||
}
|
||||
if (obj.getClass().equals(toSearch)) {
|
||||
textPlaceholder = (Text) obj;
|
||||
if (isPlaceholder(textPlaceholder.getValue())) {
|
||||
result.add((Text) obj);
|
||||
}
|
||||
} else if (obj instanceof ContentAccessor) {
|
||||
List<?> children = ((ContentAccessor) obj).getContent();
|
||||
for (Object child : children) {
|
||||
result.addAll(getAllPlaceholderElementFromObject(child));
|
||||
}
|
||||
}
|
||||
return result;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断字符串是否有${}占位符
|
||||
*
|
||||
* @param str 需要判断的字符串
|
||||
* @return 是否字符串是否有${}占位符
|
||||
* @author liyawei
|
||||
*/
|
||||
private static boolean isPlaceholder(String str) {
|
||||
if (str != null && !str.isEmpty()) {
|
||||
Pattern pattern = Pattern.compile("([$]\\{[A-Za-z0-9./ -]+\\})"); // 识别范围 认证模块专用
|
||||
Matcher m = pattern.matcher(str);
|
||||
return m.find();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 在标签处插入替换内容
|
||||
*
|
||||
* @param bm
|
||||
* @param object
|
||||
* @throws Exception
|
||||
* @author liyawei
|
||||
*/
|
||||
public static void replaceTextToImage(CTBookmark bm, Object object, WordprocessingMLPackage wordMLPackage , byte[] bytes) throws Exception {
|
||||
if (wordMLPackage == null) {
|
||||
return;
|
||||
}
|
||||
if (bm.getName() == null){
|
||||
return;
|
||||
}
|
||||
String text = object.toString();
|
||||
try {
|
||||
List<Object> theList = null;
|
||||
ParaRPr rpr = null;
|
||||
if (bm.getParent() instanceof P) {
|
||||
PPr pprTemp = ((P) (bm.getParent())).getPPr();
|
||||
if (pprTemp == null) {
|
||||
rpr = null;
|
||||
} else {
|
||||
rpr = ((P) (bm.getParent())).getPPr().getRPr();
|
||||
}
|
||||
theList = ((ContentAccessor) (bm.getParent())).getContent();
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
int rangeStart = -1;
|
||||
int rangeEnd = -1;
|
||||
int i = 0;
|
||||
for (Object ox : theList) {
|
||||
Object listEntry = XmlUtils.unwrap(ox);
|
||||
if (listEntry.equals(bm)) {
|
||||
if (((CTBookmark) listEntry).getName() != null) {
|
||||
rangeStart = i + 1;
|
||||
}
|
||||
} else if (listEntry instanceof CTMarkupRange) {
|
||||
if (((CTMarkupRange) listEntry).getId().equals(bm.getId())) {
|
||||
rangeEnd = i - 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
i++;
|
||||
}
|
||||
int x = i - 1;
|
||||
for (int j = x; j >= rangeStart; j--) {
|
||||
theList.remove(j);
|
||||
}
|
||||
|
||||
BinaryPartAbstractImage imagePart = BinaryPartAbstractImage.createImagePart(wordMLPackage, bytes);
|
||||
Inline inline = imagePart.createImageInline("", "", 0, 1, true);
|
||||
ObjectFactory factory = Context.getWmlObjectFactory();
|
||||
R run = factory.createR();
|
||||
Drawing drawing = factory.createDrawing();
|
||||
if(text != null){
|
||||
Text txt = factory.createText();
|
||||
txt.setValue(text);
|
||||
run.getContent().add(txt);
|
||||
}
|
||||
run.getContent().add(drawing);
|
||||
drawing.getAnchorOrInline().add(inline);
|
||||
theList.add(rangeStart, run);
|
||||
} catch (ClassCastException cce) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 在占位符处插入替换内容
|
||||
*
|
||||
* @param bm
|
||||
* @param object
|
||||
* @throws Exception
|
||||
* @author liyawei
|
||||
*/
|
||||
public static void replaceTextToImage(Text bm, Object object, WordprocessingMLPackage wordMLPackage , byte[] bytes) throws Exception {
|
||||
if (wordMLPackage == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
String text = object.toString();
|
||||
try {
|
||||
List<Object> theList = null;
|
||||
ParaRPr rpr = null;
|
||||
if (bm.getParent() instanceof P) {
|
||||
PPr pprTemp = ((P) (bm.getParent())).getPPr();
|
||||
if (pprTemp == null) {
|
||||
rpr = null;
|
||||
} else {
|
||||
rpr = ((P) (bm.getParent())).getPPr().getRPr();
|
||||
}
|
||||
theList = ((ContentAccessor) (bm.getParent())).getContent();
|
||||
} else {
|
||||
R r = (R) bm.getParent();
|
||||
if (r.getParent() instanceof P) {
|
||||
theList = ((ContentAccessor) (r.getParent())).getContent();
|
||||
|
||||
int rangeStart = -1; // 记录占位符run位置
|
||||
int i = 0;
|
||||
for (Object ox : theList) {
|
||||
Object listEntry = XmlUtils.unwrap(ox);
|
||||
if (listEntry.equals(r)) {
|
||||
rangeStart = i;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
theList.remove(rangeStart); // 移除原占位符
|
||||
|
||||
BinaryPartAbstractImage imagePart = BinaryPartAbstractImage.createImagePart(wordMLPackage, bytes);
|
||||
Inline inline = imagePart.createImageInline("", "", 0, 1, true);
|
||||
ObjectFactory factory = Context.getWmlObjectFactory();
|
||||
R run = factory.createR();
|
||||
Drawing drawing = factory.createDrawing();
|
||||
if(text != null){
|
||||
Text txt = factory.createText();
|
||||
txt.setValue(text);
|
||||
run.getContent().add(txt);
|
||||
}
|
||||
run.getContent().add(drawing);
|
||||
drawing.getAnchorOrInline().add(inline);
|
||||
theList.add(rangeStart, run); // 添加图片到原占位符位置
|
||||
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
} catch (ClassCastException cce) {
|
||||
log.error(cce.getMessage(), cce);
|
||||
}
|
||||
}
|
||||
|
||||
public static void replaceForTemplate(String templatePath, Map<String, String> map, int tableNum, List<Map<String, Object>> dataList, String outPath) throws Exception {
|
||||
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(new File(templatePath));
|
||||
MainDocumentPart mainDocumentPart = wordMLPackage.getMainDocumentPart();
|
||||
|
||||
@@ -410,14 +410,18 @@ people:
|
||||
## Feishu
|
||||
Feishu:
|
||||
# 测试
|
||||
appId: cli_a16d47ca9f381013
|
||||
appSecret: DSfCrj70xku2VUjqwHBIuuY6HZnz7ppe
|
||||
# appId: cli_a16d47ca9f381013
|
||||
# appSecret: DSfCrj70xku2VUjqwHBIuuY6HZnz7ppe
|
||||
|
||||
appId: cli_a25c9fdae5bc100c
|
||||
appSecret: zIS7BLzcWaFvlpdz7CqRJbwVml4g4ESy
|
||||
|
||||
# 正式
|
||||
# appId: cli_a2a1a6014679500d
|
||||
# appSecret: AeHwisC82S0fhiREJg6bkdxhIZMevnZZ
|
||||
getTenantAccessTokenUrl: https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal
|
||||
batchSendMessageUrl: https://open.feishu.cn/open-apis/message/v4/batch_send/
|
||||
translateTextUrl: https://open.feishu.cn/open-apis/translation/v1/text/translate
|
||||
local-tool:
|
||||
uri: http://139.9.235.66:9022
|
||||
opensso:
|
||||
|
||||
Reference in New Issue
Block a user