diff --git a/jero-boot/db/蔚来标准sql/dev_2nd_period.sql b/jero-boot/db/蔚来标准sql/dev_2nd_period.sql
new file mode 100644
index 000000000..3a32c5b11
--- /dev/null
+++ b/jero-boot/db/蔚来标准sql/dev_2nd_period.sql
@@ -0,0 +1,29 @@
+-- 二期一阶段的表变更,必须添加的固定数据以sql形式放到此处
+
+
+-- 项目库添加字段(项目版本,软件版本,说明)---------2022-10-18 未同步生产环境
+ALTER TABLE `laws_weilai`.`project_library_base`
+ADD COLUMN `parent_id` varchar(255) NULL COMMENT '主项目id' AFTER `update_by`,
+ADD COLUMN `project_version` varchar(255) NULL COMMENT '项目版本' AFTER `parent_id`,
+ADD COLUMN `explanation` varchar(2000) NULL COMMENT '说明' AFTER `project_version`,
+ADD COLUMN `software_version` varchar(255) NULL COMMENT '软件版本' AFTER `explanation`;
+
+-- 项目库添加字段(排序)---------2022-10-18 未同步生产环境
+ALTER TABLE `laws_weilai`.`project_library_base`
+ADD COLUMN `sort` varchar(255) NULL COMMENT '排序(用于置顶功能)' AFTER `software_version`,
+ADD COLUMN `flag` varchar(255) NULL COMMENT '置顶(flag为空的时候为置顶, flag为1的时候取消置顶)' AFTER `sort`;
+
+-- 认证参数列表添加字段--------2022-10-20 未同步生产环境
+ALTER TABLE `laws_weilai`.`params_manifest`
+ADD COLUMN `project_version` varchar(255) NULL COMMENT '相关项目版本' AFTER `params_template_name`,
+ADD COLUMN `explanation` varchar(2000) NULL COMMENT '说明' AFTER `project_version`;
+
+-- 项目库修改认证软件版本字段长度---------2022-11-01 未同步生产环境
+ALTER TABLE `laws_weilai`.`project_library_base`
+MODIFY COLUMN `software_version` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '软件版本' AFTER `explanation`;
+
+-- 认证参数历史列表添加字段--------2022-11-02 未同步生产环境
+ALTER TABLE `laws_weilai`.`params_manifest_history`
+ADD COLUMN `project_version` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '相关项目版本' AFTER `params_template_name`,
+ADD COLUMN `explanation` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '说明' AFTER `project_version`;
+
diff --git a/jero-boot/db/蔚来标准sql/dev_third_record.sql b/jero-boot/db/蔚来标准sql/dev_third_record.sql
index 330771cdf..e5eaf7717 100644
--- a/jero-boot/db/蔚来标准sql/dev_third_record.sql
+++ b/jero-boot/db/蔚来标准sql/dev_third_record.sql
@@ -1179,58 +1179,33 @@ update onl_cgform_field set is_query = '1', is_read_only = '1' where id = '09fa6
-- 配置表,增加问题知识库预览图片配置 2022-09-27 已同步生产环境
INSERT INTO `laws_weilai`.`sys_config` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `sys_org_code`, `config`, `config_name`) VALUES ('4', 'admin', '2022-09-28 14:35:30', NULL, NULL, 'A01', 'http://grp.nioint.com/', 'domianWebImgURL');
+--问题知识库,增加字段 发布状态 2022-10-13 已同步生产环境
+ALTER TABLE `laws_weilai`.`problem_knowledge_base`
+ ADD COLUMN `release_status` varchar(50) NULL COMMENT '发布状态' AFTER `release_time`;
--- 待办中心 流程信息表 2022-10-14 未同步生产环境
-CREATE TABLE `laws_weilai`.`process_info` (
- `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 '所属部门',
- `project_library_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '项目库id',
- `project_laws_inventory_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '法规清单id',
- `buss_document_library_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '文档库id/标准id',
- `acti_proc_inst_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '流程实例id',
- `flow_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '流程类型',
- `end_time` datetime NULL DEFAULT NULL COMMENT '截止日期',
- `status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '任务状态',
- PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '流程信息表' ROW_FORMAT = Dynamic;
+--处理问题知识库数据,发布人,发布时间,发布状态数据sql 2022-10-13 已同步生产环境
+update problem_knowledge_base pkd set pkd.release_status = 'Have released',pkd.release_time = pkd.create_time,pkd.release_user_id = (select su.id from sys_user su where su.username = pkd.create_by)
--- 待办中心 流程信息明细表 2022-10-14 未同步生产环境
-CREATE TABLE `laws_weilai`.`process_info_detail` (
- `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 '所属部门',
- `acti_proc_inst_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '流程实例id',
- `task_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '待办id',
- `user_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '处理人id',
- `status` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '任务状态:待办/已办',
- `task_definition_key` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '任务节点定义key',
- `submit_time` datetime NULL DEFAULT NULL COMMENT '提交时间',
- `process_info_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '流程信息id',
- `project_laws_inventory_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '法规清单id',
- `buss_document_library_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '文档库id/标准id',
- `flow_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '流程类型',
- PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '流程信息明细表' ROW_FORMAT = Dynamic;
-
--- 参数项收集清单 添加索引 2022-10-14 未同步生产环境
+-- 参数项收集清单 添加同步上报库时间字段 2022-10-20 已同步生产环境
ALTER TABLE `laws_weilai`.`params_collect_manifest`
- ADD INDEX `index_pcm_nio_number`(`nio_number`) USING BTREE,
- ADD INDEX `index_pcm_state`(`state`) USING BTREE,
- ADD INDEX `index_pcm_sdt_dre`(`sdt`, `dre`) USING BTREE,
- ADD INDEX `index_pcm_manifest_id`(`params_manifest_id`) USING BTREE;
+ ADD COLUMN `report_time` datetime NULL COMMENT '同步上报库时间' AFTER `title_default_value`;
+ALTER TABLE `laws_weilai`.`params_collect_manifest_history`
+ ADD COLUMN `report_time` datetime NULL COMMENT '同步上报库时间' AFTER `title_default_value`;
--- 待办中心 流程信息明细表 增加字段 2022-10-18 未同步生产环境
-ALTER TABLE `laws_weilai`.`process_info_detail`
- ADD COLUMN `end_time` datetime NULL COMMENT '截止时间' AFTER `flow_type`;
+INSERT INTO `laws_weilai`.`onl_cgform_field`(`id`, `cgform_head_id`, `db_field_name`, `db_field_en_name`, `db_field_txt`, `order_num`, `db_field_name_old`, `db_is_key`, `db_is_null`, `db_type`, `db_length`, `db_point_length`, `db_default_val`, `dict_field`, `dict_table`, `dict_text`, `field_show_type`, `field_href`, `field_length`, `field_valid_type`, `field_must_input`, `field_extend_json`, `field_default_value`, `is_query`, `is_show_form`, `is_show_list`, `is_read_only`, `query_mode`, `main_table`, `main_field`, `update_by`, `update_time`, `create_time`, `create_by`, `converter`, `query_def_val`, `query_dict_text`, `query_dict_field`, `query_dict_table`, `query_show_type`, `query_config_flag`, `query_valid_type`, `query_must_input`, `sort_flag`, `show_area`, `is_show_laws_list`, `is_show_search`, `is_delete`, `is_model`, `dict_id`) VALUES ('5afe057bed3412bcedf5bf17565d3ff4', '9ca1773d2a484d2fadae38491ad51aa1', 'report_time', 'Sync Time', '同步上报库时间', 28, NULL, 0, 1, 'Date', 0, 0, '', '', '', '', 'date', '', 120, NULL, '0', '', '', 0, 0, 1, 0, 'single', '', '', NULL, NULL, '2022-10-20 11:08:04', 'admin', '', '', '', '', '', 'text', '0', NULL, NULL, '0', NULL, NULL, NULL, 0, '7', NULL);
--- 待办中心 流程信息明细表 增加字段 2022-10-18 未同步生产环境
-ALTER TABLE `laws_weilai`.`process_info`
- ADD COLUMN `prc_num` varchar(64) NULL COMMENT '流程编号' AFTER `status`,
- ADD COLUMN `prc_name` varchar(255) NULL COMMENT '流程名称' AFTER `prc_num`;
+--法规月报填写修改主要内容中英文字段长度 2022-10-21 已同步生产环境
+ALTER TABLE `laws_weilai`.`laws_monthly_report_write`
+MODIFY COLUMN `content_cn` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '主要内容中文' AFTER `production_car_implement_time`,
+MODIFY COLUMN `content_en` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '主要内容英文' AFTER `content_cn`;
+
+--法规月报填写修改NIO工作进展中英文字段长度 2022-10-21 已同步生产环境
+ALTER TABLE `laws_weilai`.`laws_monthly_report_write`
+MODIFY COLUMN `work_progress_cn` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT 'NIO工作进展中文' AFTER `content_en`,
+MODIFY COLUMN `work_progress_en` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT 'NIO工作进展英文' AFTER `work_progress_cn`;
+
+
+--参数收集清单 添加英文
+UPDATE `laws_weilai`.`onl_cgform_field` SET `db_field_en_name` = 'Control Component' WHERE `id` = '84fec4a260dc646dc570cbf7cb581dab';
+UPDATE `laws_weilai`.`onl_cgform_field` SET `db_field_en_name` = 'Component Value' WHERE `id` = '5d468613746f413a53fa0b485089839b';
+UPDATE `laws_weilai`.`onl_cgform_field` SET `db_field_en_name` = 'Validate Component' WHERE `id` = '608274a6a6dfed0e183093d9ea357436';
\ No newline at end of file
diff --git a/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/constant/enums/MessageType2Enum.java b/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/constant/enums/MessageType2Enum.java
new file mode 100644
index 000000000..bf4544532
--- /dev/null
+++ b/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/constant/enums/MessageType2Enum.java
@@ -0,0 +1,41 @@
+package com.jero.common.constant.enums;
+
+public enum MessageType2Enum {
+
+
+ SUBSCRIPTION_NOTIFICATION("Subscription Notification","订阅通知"),
+ SHARE_FORWARD("Share Forward","转发推送"),
+ REGULATION_EARLY_WARNING("Regulation Early Warning","法规预警"),
+ REGULATION_LIST_CONFIRMATION("Regulation List Confirmation","法规清单确认"),
+ REGULATION_TASK_CONFIRMATION("Regulation Task Confirmation","法规任务确认"),
+ DESIGN_COMPLIANCE_CONFIRMATION("Design Compliance Confirmation","设计符合性确认"),
+ PRE_HOMO_CONFIRMATION("Pre-Homo Confirmation","Pre-Homo确认"),
+ VALIDATION_COMPLIANCE_CONFIRMATION("Validation Compliance Confirmation","验证符合性确认"),
+ REGULATION_OPINION_COLLECTION("Regulation Opinion Collection","法规意见收集"),
+ REGULATION_TECHNICAL_ASSESSMENT("Regulation Technical Assessment","法规技术评估"),
+ HOMO_PARAMETER_COLLECTION("Homo Parameter Collection","认证参数收集");
+
+ String en;
+ String cn;
+
+ MessageType2Enum(String en, String cn) {
+ this.en = en;
+ this.cn = cn;
+ }
+
+ public String getEn() {
+ return en;
+ }
+
+ public void setEn(String en) {
+ this.en = en;
+ }
+
+ public String getCn() {
+ return cn;
+ }
+
+ public void setCn(String cn) {
+ this.cn = cn;
+ }
+}
diff --git a/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/constant/enums/MessageTypeEnum.java b/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/constant/enums/MessageTypeEnum.java
index 3181758a0..f9d101325 100644
--- a/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/constant/enums/MessageTypeEnum.java
+++ b/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/constant/enums/MessageTypeEnum.java
@@ -6,11 +6,11 @@ package com.jero.common.constant.enums;
* @auth zhn
*/
public enum MessageTypeEnum {
- READ("Subscription Notification","1"),
- WARN("Early Warning","2"),
- PUSH("Share / Forward","3"),
- HOMO_TASK("Homo Parameter Task","4"),
- TASK("Regulation Compliance Task", "5"),
+ READ("Subscription Notification","订阅通知","1"),
+ WARN("Regulation Early Warning","法规预警","2"),
+ PUSH("Share / Forward","转发推送","3"),
+ HOMO_TASK("Homo Parameter Task","","4"),
+ TASK("Regulation Compliance Task","", "5"),
//REGULATION_LIST_CONFIRMATION_TASK("Regulation List Confirmation Task", "6"), // 清单确认任务
//REGULATION_LIST_CONFIRMATION_NOTIFICATION("Regulation List Confirmation Notification", "7"), // 清单确认通知
//REGULATION_TASK_CONFIRMATION_TASK("Regulation Task Confirmation", "8"), // 任务确认任务
@@ -21,19 +21,21 @@ public enum MessageTypeEnum {
//DESIGN_COMPLIANCE_NOTIFICATION("Design Compliance Notification", "12"), // 设计符合性通知
//PRE_HOMO_NOTIFICATION("Pre-Homo Notification", "13"), // Pre-Homo通知
//VALIDATION_COMPLIANCE_NOTIFICATION("Validation Compliance Notification", "14"), // 验证符合性通知
- SYSTEMATIC_NOTIFICATION("Systematic Notification", "15"), // 系统通知
- LIST_CONFIRMATION("List Confirmation", "17"), // 清单确认
- TASK_CONFIRMATION("Task Confirmation", "18"), // 任务确认
- COMPLIANCE_CONFIRMATION("Compliance Confirmation", "19"), // 符合性确认
- COLLECTION_OF_LEGISLATIVE_COMMENTS("Collection of Legislative Comments", "20"), // 法规意见收集
- REGULATORY_AND_TECHNICAL_ASSESSMENT("Regulatory and technical assessment", "21"), // 法规技术评估
+ SYSTEMATIC_NOTIFICATION("Systematic Notification","", "15"), // 系统通知
+ LIST_CONFIRMATION("List Confirmation", "","17"), // 清单确认
+ TASK_CONFIRMATION("Task Confirmation", "","18"), // 任务确认
+ COMPLIANCE_CONFIRMATION("Compliance Confirmation","", "19"), // 符合性确认
+ COLLECTION_OF_LEGISLATIVE_COMMENTS("Collection of Legislative Comments","", "20"), // 法规意见收集
+ REGULATORY_AND_TECHNICAL_ASSESSMENT("Regulatory and technical assessment", "","21"), // 法规技术评估
;
String name;
+ String nameCn;
String value;
- private MessageTypeEnum(String name, String value) {
+ private MessageTypeEnum(String name,String nameCn, String value) {
this.name = name;
+ this.nameCn = nameCn;
this.value = value;
}
@@ -52,4 +54,12 @@ public enum MessageTypeEnum {
public void setValue(String value) {
this.value = value;
}
+
+ public String getNameCn() {
+ return nameCn;
+ }
+
+ public void setNameCn(String nameCn) {
+ this.nameCn = nameCn;
+ }
}
diff --git a/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/constant/enums/MsgColorEnum.java b/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/constant/enums/MsgColorEnum.java
new file mode 100644
index 000000000..f8064cc7e
--- /dev/null
+++ b/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/constant/enums/MsgColorEnum.java
@@ -0,0 +1,32 @@
+package com.jero.common.constant.enums;
+
+public enum MsgColorEnum {
+
+ GREEN("其他","green"),
+ RED("任务被拒绝","red"),
+ YELLOW("任务逾期","yellow");
+
+ String label;
+ String value;
+
+ public String getLabel() {
+ return label;
+ }
+
+ public void setLabel(String label) {
+ this.label = label;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ MsgColorEnum(String label, String value) {
+ this.label = label;
+ this.value = value;
+ }
+}
diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/CommonController.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/CommonController.java
index 6e92fa0dd..87b28ce42 100644
--- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/CommonController.java
+++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/CommonController.java
@@ -7,7 +7,6 @@ import com.jero.common.api.vo.Result;
import com.jero.common.constant.enums.CutEnum;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.api.ISysBaseAPI;
-import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.RestUtil;
import com.jero.common.util.TokenUtils;
import com.jero.common.util.oConvertUtils;
@@ -19,7 +18,6 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
-import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpHeaders;
@@ -27,12 +25,7 @@ import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.http.server.ServletServerHttpRequest;
import org.springframework.util.AntPathMatcher;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-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 org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.HandlerMapping;
@@ -41,12 +34,7 @@ import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import java.io.BufferedInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
+import java.io.*;
import java.net.URLDecoder;
import java.text.SimpleDateFormat;
import java.util.Date;
@@ -170,11 +158,11 @@ public class CommonController {
// bizPath = "";
// }
}
- if(file.getOriginalFilename().length()>70){
+ if(file.getOriginalFilename().length()>100){
if(StringUtils.equals(cut,CutEnum.CN.getValue())){
- throw new JeroBootException("文件名长度不能超过70位,请检查!");
+ throw new JeroBootException("文件名长度不能超过100位,请检查!");
}else if(StringUtils.equals(cut,CutEnum.EN.getValue())){
- throw new JeroBootException("File name length cannot exceed 70 characters, please check!");
+ throw new JeroBootException("File name length cannot exceed 100 characters, please check!");
}
}
// OSSFile oSSFile = ossFileService.uploadLocal(file, bizPath,state,cut);
@@ -382,12 +370,13 @@ public class CommonController {
fileName = ossFile.getFileName();
response.setContentType("application/force-download");// 设置强制下载不打开
response.addHeader("Content-Disposition", "attachment;fileName=" + new String(fileName.getBytes("UTF-8"),"iso-8859-1"));
- InputStream download = CosBootUtil.download(filePath);
+
File file = new File(filePath);
if(file.getName().endsWith(".pdf") || file.getName().endsWith(".PDF")){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String currentTime = sdf.format(new Date());
String waterContent = userName+" "+currentTime;
+ InputStream download = CosBootUtil.download(filePath);
newFile = PDFUtils.PDFWatermark(download,uploadpath,file.getName(),waterContent);
inputStream = new FileInputStream(newFile.getPath());
}else{
@@ -432,6 +421,83 @@ public class CommonController {
}
}
+ /**
+ * word,excel预览 cos -pdf无水印
+ *
+ * @param id 传入文件id
+ * @param request
+ * @param response
+ */
+ @GetMapping(value = "/downLoadFileNOMark")
+ public void downLoadFileNoPDFWatermarkCos(String id,HttpServletRequest request, HttpServletResponse response,String userName) {
+ if(StringUtils.isBlank(id)){
+ throw new JeroBootException("参数信息不全");
+ }
+ id = id.split("\\.")[0];
+ // 查询数据表数据是否存在
+ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.eq(OSSFile::getId,id);
+ OSSFile ossFile = ossFileService.getOne(queryWrapper);
+ if( null == ossFile){
+ throw new JeroBootException("文件不存在");
+ }
+ InputStream inputStream = null;
+ OutputStream outputStream = null;
+ File newFile =null;
+ try {
+ String fileName = "";
+ //本地下载
+ String filePath = ossFile.getUrl();
+ if(!CosBootUtil.doesObjectExist(filePath)){
+ response.setStatus(404);
+ throw new RuntimeException("文件不存在..");
+ }
+ // 文件名称
+ fileName = ossFile.getFileName();
+ response.setContentType("application/force-download");// 设置强制下载不打开
+ response.addHeader("Content-Disposition", "attachment;fileName=" + new String(fileName.getBytes("UTF-8"),"iso-8859-1"));
+
+ File file = new File(filePath);
+ inputStream = CosBootUtil.download(filePath);
+ outputStream = response.getOutputStream();
+ byte[] buf = new byte[1024];
+ int len;
+ while ((len = inputStream.read(buf)) > 0) {
+ outputStream.write(buf, 0, len);
+ }
+ response.flushBuffer();
+ } catch (IOException e) {
+ log.error("文件下载失败" + e.getMessage());
+ response.setStatus(404);
+ e.printStackTrace();
+ } finally {
+ if (inputStream != null) {
+ try {
+ inputStream.close();
+ } catch (IOException e) {
+ log.error(e.getMessage(), e);
+ }
+ }
+ if (outputStream != null) {
+ try {
+ outputStream.close();
+ } catch (IOException e) {
+ log.error(e.getMessage(), e);
+ }
+
+ }
+ if (newFile != null) {
+ try {
+ newFile.delete();
+ } catch (Exception e) {
+ log.error(e.getMessage(), e);
+ }
+
+ }
+
+ }
+ }
+
/**
* 文件下载
*
diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysUserController.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysUserController.java
index 4a67f32ad..e4198f9f9 100644
--- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysUserController.java
+++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysUserController.java
@@ -127,10 +127,24 @@ public class SysUserController {
public Result> queryPageList(SysUser user, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) {
Result> result = new Result>();
- QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(user, req.getParameterMap());
+ Map reqMap = req.getParameterMap();
+ Map newReqMap = new HashMap<>();
+ for (String key : reqMap.keySet()){
+ if(!key.equals("orgCode")){
+ newReqMap.put(key,reqMap.get(key));
+ }
+ }
+ user.setOrgCode(null);
+ QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(user, newReqMap);
//TODO 外部模拟登陆临时账号,列表不显示
queryWrapper.ne("username", "_reserve_user_external");
- Page page = new Page(pageNo, pageSize);
+ String[] orgCode = reqMap.get("orgCode");
+ if(null != orgCode && orgCode.length > 0){
+ List orgCodeList = sysDepartService.getSubDepIdsByDepId(orgCode[0]);
+ orgCodeList.add(orgCode[0]);
+ queryWrapper.in("org_code",orgCodeList);
+ }
+ Page page = new Page<>(pageNo, pageSize);
IPage pageList = sysUserService.page(page, queryWrapper);
//批量查询用户的所属部门
@@ -1549,6 +1563,12 @@ public class SysUserController {
for (SysDepartTreeModel sdtm: departTreeModelList) {
dutList.addAll(findChildNode(sdtm));
}
+ SysUser admin = sysUserService.getUserByName("admin");
+ DepartUserTree dut = new DepartUserTree();
+ dut.setId(admin.getId());
+ dut.setName(admin.getUsername());
+ dut.setType("User");
+ dutList.add(dut);
result.setResult(dutList);
result.setSuccess(true);
return result;
diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysAnnouncement.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysAnnouncement.java
index 4da6a9046..fac7280f7 100644
--- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysAnnouncement.java
+++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysAnnouncement.java
@@ -157,4 +157,8 @@ public class SysAnnouncement implements Serializable {
* 发起人
*/
private java.lang.String initiator;
+
+ private java.lang.String msgContentCn;//消息的中文(不带标签)
+
+ private java.lang.String msgContentInfoCn;//消息的中文(带标签)
}
diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/enums/RoleEnum.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/enums/RoleEnum.java
new file mode 100644
index 000000000..0b743f160
--- /dev/null
+++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/enums/RoleEnum.java
@@ -0,0 +1,64 @@
+package com.jero.modules.system.enums;
+
+public enum RoleEnum {
+ ADMIN_ID("R&H Manager","R&H Manager","manager","1534020391015444481",2),
+ MANAGER_ID("系统管理员","Administrator","admin","f6817f48af4fb3af11b9e8bf182f618b",3),
+ COUNTRU_CARD_MANAGE("countryCard管理员","countryCardManage","countryCardManage","1564916346120916993",4),
+ ENGINEERING_INTERFACE_PERSON("工程接口人","engineeringInterfacePerson","engineeringInterfacePerson","1534020084667674626",5),
+ ENGINEER("工程师","engineer","engineer","1534020318437208065",6),
+ ;
+
+ String name;
+ String enName;
+ String value;
+ String id;
+ Integer order;
+
+ RoleEnum(String name, String enName, String value, String id, Integer order) {
+ this.name = name;
+ this.enName = enName;
+ this.value = value;
+ this.id = id;
+ this.order = order;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public String getEnName() {
+ return enName;
+ }
+
+ public void setEnName(String enName) {
+ this.enName = enName;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public Integer getOrder() {
+ return order;
+ }
+
+ public void setOrder(Integer order) {
+ this.order = order;
+ }
+}
diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/mapper/xml/SysAnnouncementSendMapper.xml b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/mapper/xml/SysAnnouncementSendMapper.xml
index eeaf3e484..e8572c2ad 100644
--- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/mapper/xml/SysAnnouncementSendMapper.xml
+++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/mapper/xml/SysAnnouncementSendMapper.xml
@@ -18,6 +18,8 @@
+
+
@@ -111,4 +121,8 @@
order by del_flag desc, add_flag desc, change_flag desc, nio_number asc
-
\ No newline at end of file
+
+
+
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/mapper/xml/ParamsCollectManifestHistoryEOMapper.xml b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/mapper/xml/ParamsCollectManifestHistoryEOMapper.xml
index 07a93e805..e02a6edb6 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/mapper/xml/ParamsCollectManifestHistoryEOMapper.xml
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/mapper/xml/ParamsCollectManifestHistoryEOMapper.xml
@@ -27,6 +27,7 @@
+
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/mapper/xml/ParamsManifestEOMapper.xml b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/mapper/xml/ParamsManifestEOMapper.xml
index 9d72f5d0c..1fc8997c5 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/mapper/xml/ParamsManifestEOMapper.xml
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/mapper/xml/ParamsManifestEOMapper.xml
@@ -16,6 +16,8 @@
+
+
@@ -27,6 +29,8 @@
+
+
@@ -43,6 +47,8 @@
pm.project_id as project_id,
pm.params_template_id as params_template_id,
pm.params_template_publish_version as params_template_publish_version,
+ pm.project_version as project_version,
+ pm.explanation as explanation,
if (pt.params_template_name is not null, pt.params_template_name, pm.params_template_name) as params_template_name
@@ -158,7 +164,7 @@
select tmp_tb.* from(
select
plb.id as project_id,
- concat(pni.project_name,'-',pyni.year_name,' ',target_market) as project_name
+ concat(pni.project_name,'-',pyni.year_name,'-',target_market,'-',project_version) 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
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/IParamsCollectManifestEOService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/IParamsCollectManifestEOService.java
index 8904cd11c..7a20536f8 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/IParamsCollectManifestEOService.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/IParamsCollectManifestEOService.java
@@ -2,11 +2,14 @@ package com.jero.modules.cert.collect.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.jero.common.api.vo.Result;
import com.jero.modules.cert.collect.entity.ParamsCollectManifestEO;
import com.jero.modules.cert.collect.vo.ParamsCollectManifestVO;
+import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
import java.util.List;
import java.util.Map;
@@ -162,6 +165,21 @@ public interface IParamsCollectManifestEOService extends IService importDre(MultipartFile file, String cut, String paramsManifestId) throws IOException;
+
+ Result> importData(List> dataList,
+ String unzipfilepath,
+ String cut,
+ String paramsManifestId) throws IOException;
+
// 调整责任领域
List updateBatchDutyTerritory(ParamsCollectManifestVO paramsCollectManifestVO);
+
+ //监控参数收集任务的截止时间,并根据时间段发送飞书
+ void checkDeadline();
+
}
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/impl/ParamsCollectManifestEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/impl/ParamsCollectManifestEOServiceImpl.java
index 6ffb1fdef..5b39498e7 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/impl/ParamsCollectManifestEOServiceImpl.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/impl/ParamsCollectManifestEOServiceImpl.java
@@ -1,5 +1,6 @@
package com.jero.modules.cert.collect.service.impl;
+import cn.afterturn.easypoi.excel.entity.ImportParams;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.ZipUtil;
@@ -9,12 +10,10 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
+import com.jero.common.api.vo.Result;
import com.jero.common.constant.CommonConstant;
import com.jero.common.constant.WebsocketConst;
-import com.jero.common.constant.enums.CutEnum;
-import com.jero.common.constant.enums.MessageTypeEnum;
-import com.jero.common.constant.enums.ModuleEnum;
-import com.jero.common.constant.enums.YesOrNoEnum;
+import com.jero.common.constant.enums.*;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.query.QueryGenerator;
import com.jero.common.system.vo.LoginUser;
@@ -36,11 +35,12 @@ import com.jero.modules.cert.report.service.*;
import com.jero.modules.cert.template.entity.CertCategoryParamsInfoPublishEO;
import com.jero.modules.cert.template.entity.ParamsInfoPublishEO;
import com.jero.modules.cert.template.enums.ControlTypeEnum;
+import com.jero.modules.cert.template.enums.ControlVerifyEnum;
import com.jero.modules.cert.template.enums.ParamsIsMustEnum;
import com.jero.modules.cert.template.service.ICertCategoryParamsInfoPublishEOService;
import com.jero.modules.cert.template.service.IParamsInfoPublishEOService;
import com.jero.modules.feishu.service.IFeishuService;
-import com.jero.modules.feishu.vo.FeishuMsgVo;
+import com.jero.modules.feishu.vo.FeishuMsg2Vo;
import com.jero.modules.message.websocket.WebSocket;
import com.jero.modules.ocr.service.WebSocketServer;
import com.jero.modules.ocr.util.LineHumpUtil;
@@ -50,6 +50,8 @@ import com.jero.modules.project.entity.ProjectLibraryBase;
import com.jero.modules.project.entity.ProjectRelatedPersonnel;
import com.jero.modules.project.mapper.ProjectLibraryBaseMapper;
import com.jero.modules.project.service.IProjectRelatedPersonnelService;
+import com.jero.modules.split.common.FileUnZip;
+import com.jero.modules.split.common.ReadExcel;
import com.jero.modules.system.entity.SysAnnouncement;
import com.jero.modules.system.entity.SysDictItem;
import com.jero.modules.system.entity.SysUser;
@@ -58,9 +60,12 @@ import com.jero.modules.system.service.ISysAnnouncementService;
import com.jero.modules.system.service.ISysDictItemService;
import com.jero.modules.system.service.ISysUserRoleService;
import com.jero.modules.system.service.ISysUserService;
+import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.util.HSSFColor;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.util.IOUtils;
import org.apache.poi.xssf.usermodel.*;
import org.apache.shiro.SecurityUtils;
@@ -88,6 +93,8 @@ import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
+import static com.jero.modules.split.util.ExcelUtil.checkObjAllFieldsIsNull;
+
/**
* @Description: 参数项收集清单
* @Author: jero-boot
@@ -1278,13 +1285,111 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl engThirdIds = new ArrayList<>();
+ List projectLibraryBases = projectLibraryBaseMapper.queryById(paramsManifestEO.getProjectId());
+ if (ObjectUtils.isNotEmpty(projectLibraryBases)) {
+ String[] ids = projectLibraryBases.get(0).getCertificationEngineer().split(",");
+ if (ObjectUtils.isNotEmpty(ids)) {
+ for (String id : ids) {
+ SysUser engineer = sysUserService.getById(id);
+ if (ObjectUtils.isNotEmpty(engineer)) {
+ engThirdIds.add(engineer.getThirdId());
+ }
+ }
+ }
+ }
+ if (CollectManifestStateEnum.SDT_BACK.getValue().equals(paramsCollectManifestEO.getState())) {
+ //通知认证工程师
+ try {
+ FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo();
+ feishuMsgVo.setTitle(MessageType2Enum.HOMO_PARAMETER_COLLECTION.getCn() + "/" + MessageType2Enum.HOMO_PARAMETER_COLLECTION.getEn());
+ feishuMsgVo.setCnContentUpper("您好,"+ currentUser.getUsername() +"退回了参数NIO-"+ paramsCollectManifestEO.getNioNumber() +",请及时处理");
+ feishuMsgVo.setCnContentLower("项目: " + projectInfo.getProjectName() +
+ "\n发起人: " + currentUser.getUsername() +
+ "\n截止时间: " + deadline);
+ feishuMsgVo.setEnContentUpper("Hello! "+ currentUser.getUsername() +" has returned the Parameter NIO-"+ paramsCollectManifestEO.getNioNumber() +". Please address it in a timely manner");
+ feishuMsgVo.setEnContentLower("Project: " + projectInfo.getProjectName() +
+ "\nInitiator: " + currentUser.getUsername() +
+ "\nDue Date: " + deadline);
+ feishuMsgVo.setUrl(hrefFeishu);
+ feishuMsgVo.setColor(MsgColorEnum.RED.getValue()); // 颜色
+ feishuService.sendCard(engThirdIds.toArray(new String[engThirdIds.size()]), feishuMsgVo);
+ } catch (IOException e) {
+ log.error("飞书消息推送失败");
+ }
+ } else if (CollectManifestStateEnum.DRE_BACK.getValue().equals(paramsCollectManifestEO.getState())) {
+
+ //通知认证工程师
+ /*try {
+ FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo();
+ feishuMsgVo.setTitle(MessageType2Enum.HOMO_PARAMETER_COLLECTION.getCn() + "/" + MessageType2Enum.HOMO_PARAMETER_COLLECTION.getEn());
+ feishuMsgVo.setCnContentUpper("您好,"+ currentUser.getUsername() +"申请撤回参数NIO-"+ paramsCollectManifestEO.getNioNumber() +",请及时处理");
+ feishuMsgVo.setCnContentLower("项目: " + projectInfo.getProjectName() +
+ "\n发起人: " + currentUser.getUsername() +
+ "\n截止时间: " + deadline);
+ feishuMsgVo.setEnContentUpper("Hello! "+ currentUser.getUsername() +" requested for withdrawing Parameter NIO-"+ paramsCollectManifestEO.getNioNumber() +". Please address it in a timely manner");
+ feishuMsgVo.setEnContentLower("Project: " + projectInfo.getProjectName() +
+ "\nInitiator: " + currentUser.getUsername() +
+ "\nDue Date: " + deadline);
+ feishuMsgVo.setUrl(hrefFeishu);
+ feishuMsgVo.setColor(MsgColorEnum.RED.getValue()); // 颜色
+ feishuService.sendCard(engThirdIds.toArray(new String[engThirdIds.size()]), feishuMsgVo);
+ } catch (IOException e) {
+ log.error("飞书消息推送失败");
+ }*/
+ //通知工程接口人
+ List SdtThirdIds = new ArrayList<>();
+ for (String sdt : paramsCollectManifestEO.getSdt().split(",")) {
+ SysUser sdtUser = sysUserService.getUserByName(sdt);
+ if (ObjectUtils.isNotEmpty(sdtUser)) {
+ SdtThirdIds.add(sdtUser.getThirdId());
+ }
+ }
+
+ try {
+ FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo();
+ feishuMsgVo.setTitle(MessageType2Enum.HOMO_PARAMETER_COLLECTION.getCn() + "/" + MessageType2Enum.HOMO_PARAMETER_COLLECTION.getEn());
+ feishuMsgVo.setCnContentUpper("您好,"+ currentUser.getUsername() +"退回了参数NIO-"+ paramsManifestEO.getTitle() +",请及时处理");
+ feishuMsgVo.setCnContentLower("项目: " + projectInfo.getProjectName() +
+ "\n发起人: " + currentUser.getUsername() +
+ "\n截止时间: " + deadline);
+ feishuMsgVo.setEnContentUpper("Hello! "+ currentUser.getUsername() +" has returned the Parameter NIO-"+ paramsManifestEO.getTitle() +". Please address it in a timely manner");
+ feishuMsgVo.setEnContentLower("Project: " + projectInfo.getProjectName() +
+ "\nInitiator: " + currentUser.getUsername() +
+ "\nDue Date: " + deadline);
+ feishuMsgVo.setUrl(hrefFeishu);
+ feishuMsgVo.setColor(MsgColorEnum.RED.getValue()); // 颜色
+ feishuService.sendCard(SdtThirdIds.toArray(new String[SdtThirdIds.size()]), feishuMsgVo);
+ } catch (IOException e) {
+ log.error("飞书消息推送失败");
+ }
+
+ }
+
+ }
+ }
+ return update;
}
@Override
@@ -1437,13 +1542,13 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImplthe link,";
- String content = connectBuilder.substring(0, connectBuilder.toString().length()-1) + " and other parameter items, please enter the link to handle it.";
- String contentInfo = connectBuilder.substring(0, connectBuilder.toString().length()-1) + " and other parameter items, please enter " + href + " and fill in the relevant information.";
- String msgTitle = projectInfo.getProjectName() + ": You have a homo parameter task to complete";
+ //String href = "the link,";
+ //String content = connectBuilder.substring(0, connectBuilder.toString().length()-1) + " and other parameter items, please enter the link to handle it.";
+ //String contentInfo = connectBuilder.substring(0, connectBuilder.toString().length()-1) + " and other parameter items, please enter " + href + " and fill in the relevant information.";
+ //String msgTitle = projectInfo.getProjectName() + ": You have a homo parameter task to complete";
// 发送系统消息
- SysAnnouncement sysAnnouncement = new SysAnnouncement();
+ /*SysAnnouncement sysAnnouncement = new SysAnnouncement();
sysAnnouncement.setDelFlag("0");
sysAnnouncement.setSendStatus("0");
sysAnnouncement.setSendTime(new Date());
@@ -1460,10 +1565,10 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl paramsCollectManifestEOList = listByIds(Arrays.asList(paramsCollectManifestIdStr));
paramsCollectManifestEOList = paramsCollectManifestEOList.stream().sorted(Comparator.comparing(ParamsCollectManifestBaseEO::getNioNumber)).collect(Collectors.toList()); // 按NIO编号升序
- for (ParamsCollectManifestEO paramsCollectManifestEO : paramsCollectManifestEOList) {
+ for (ParamsCollectManifestEO paramsCollectManifestEO : paramsCollectManifestEOList) {
// 判断参数项状态
if (CollectManifestStateEnum.WAIT_COLLECT.getValue().equals(paramsCollectManifestEO.getState())
|| CollectManifestStateEnum.SDT_BACK.getValue().equals(paramsCollectManifestEO.getState())
@@ -1539,19 +1661,19 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl afterUpdateEOList = listByIds(updateEOIdList);
- List sdtList = afterUpdateEOList.stream()
- .map(ParamsCollectManifestEO::getSdt)
- .distinct()
- .collect(Collectors.toList());
- if (CollectionUtil.isEmpty(sdtList)) {
- throw new JeroBootException("没有可下发的工程接口人!");
- }
- for (String sdt : sdtList) {
+ if (isSuccess) {
+ // 消息内容
+ List afterUpdateEOList = listByIds(updateEOIdList);
+ List sdtList = afterUpdateEOList.stream()
+ .map(ParamsCollectManifestEO::getSdt)
+ .distinct()
+ .collect(Collectors.toList());
+ if (CollectionUtil.isEmpty(sdtList)) {
+ throw new JeroBootException("没有可下发的工程接口人!");
+ }
+ for (String sdt : sdtList) {
- StringBuilder connectBuilder = new StringBuilder();
+ /* StringBuilder connectBuilder = new StringBuilder();
connectBuilder.append("You are required to fill in ");
for (int i = 0; i < afterUpdateEOList.size(); i++) {
ParamsCollectManifestEO paramsCollectManifestEO = afterUpdateEOList.get(i);
@@ -1559,19 +1681,19 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImplthe link,";
- String contentInfo = connectBuilder.substring(0, connectBuilder.toString().length() - 1) + " and other parameter items, please enter " + href + " and fill in the relevant information.";
- String msgTitle = projectInfo.getProjectName() + ": You have a homo parameter task to complete";
+ SysUser sysUser = sysUserService.getUserByName(sdt);
+ String[] thirdIds = new String[1];
+ thirdIds[0] = sysUser.getThirdId();
+ String urlParamsStr = parseUrlParams(paramsManifestEO);
+ String hrefFeishu = backUrl + "/ParameterItemCollection" + urlParamsStr;
+ //String href = "the link,";
+ //String contentInfo = connectBuilder.substring(0, connectBuilder.toString().length() - 1) + " and other parameter items, please enter " + href + " and fill in the relevant information.";
+ //String msgTitle = projectInfo.getProjectName() + ": You have a homo parameter task to complete";
- // 发送系统消息
- SysAnnouncement sysAnnouncement = new SysAnnouncement();
+ // 发送系统消息
+ /* SysAnnouncement sysAnnouncement = new SysAnnouncement();
sysAnnouncement.setDelFlag("0");
sysAnnouncement.setSendStatus("0");
sysAnnouncement.setSendTime(new Date());
@@ -1588,24 +1710,28 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImplthe link,";
- String contentInfo = connectBuilder.substring(0, connectBuilder.toString().length() - 1) + " and other parameter items, please enter " + href + " and fill in the relevant information.";
- String msgTitle = projectInfo.getProjectName() + ": You have a homo parameter task to complete";
+ //String href = "the link,";
+ //String contentInfo = connectBuilder.substring(0, connectBuilder.toString().length() - 1) + " and other parameter items, please enter " + href + " and fill in the relevant information.";
+ //String msgTitle = projectInfo.getProjectName() + ": You have a homo parameter task to complete";
// 发送系统消息
- SysAnnouncement sysAnnouncement = new SysAnnouncement();
+ /*SysAnnouncement sysAnnouncement = new SysAnnouncement();
sysAnnouncement.setDelFlag("0");
sysAnnouncement.setSendStatus("0");
sysAnnouncement.setSendTime(new Date());
@@ -1722,19 +1847,23 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl getMsgOfIssueCollection(List> msgMapList, String cut, String operation) {
List msgList = new ArrayList<>();
Map collectManifestStateEnumMap = CollectManifestStateEnum.toMap(cut);
@@ -1761,13 +1891,20 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl").append(nioNumber).append("").append("工程接口人没有填写,请填写完工程接口人再进行下发收集。");
}
- } else {
+ } else if ("2".equals(type)) {
if (CutEnum.EN.getValue().equals(cut)) {
stringBuilder.append("NIO number is ").append(nioNumber).append(",state is ").append("").append(stateName).append("").append(",no operation permission for this button.");
} else {
stringBuilder.append("NIO编号为").append(nioNumber).append(",状态为").append("").append(stateName).append("").append(",没有此按钮的操作权限。");
}
+ } else if ("3".equals(type)) {
+ if (CutEnum.EN.getValue().equals(cut)) {
+ stringBuilder.append("NIO number is ").append(nioNumber).append(",state is ").append("").append(stateName).append("").append(", fail to import.");
+ } else {
+ stringBuilder.append("NIO编号为").append(nioNumber).append(",状态为").append("").append(stateName).append("").append(",导入失败。");
+ }
+
}
msgList.add(stringBuilder.toString());
@@ -2080,6 +2217,7 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl fieldList = Arrays.asList(field.split(",")); // list形式
+
+ // 查询导出数据
+ List> allParamsInfoList = queryForExportDre(paramsCollectManifestVO, request); // id记得去掉
+
+ // 在excel表中添加表头
+ XSSFRow row = sheetItems.createRow(0);
+ for (int i = 0; i < headers.length; i++) {
+ XSSFCell cell = row.createCell(i);
+ XSSFRichTextString text = new XSSFRichTextString(headers[i]);
+ cell.setCellValue(text);
+ cell.setCellStyle(cellStyle1);
+ sheetItems.setColumnWidth(i, 20 * 256); // 设置单元格宽度
+ }
+ // 在excel表中添加添加填写说明
+ String explanation = "";
+ if (CutEnum.EN.getValue().equals(paramsCollectManifestVO.getCut())) {
+ explanation = "Filling explanation\n"
+ + "1.Import data starts at the third line, the first line is the header, the second line is the description, the third line is the example, and the fourth line is the official data\n"
+ + "2.All fields is filled in according to Validate Component and Component Value\n"
+ + "3.If the control type is drop-down multi-selection, multiple entries are separated by English or Chinese exclamation points\n"
+ + "4.Configuration data is filled in according to the control type, and if there are multiple control types, it needs to be separated by \"#\"\n"
+ + "5.When filling in, start in column G and do not modify information such as NIO number and parameter name\n"
+ + "6.File fields are file type, must create a folder in the directory of the same level as the file with the name of the nio number and place the file in the folder. Assume that the file is saved in the A number B.pdf,Should fill in A/B.pdf\n"
+ + "7.When importing into the system, you need to put the Excel into a folder, place other attachment files correctly as required, and finally compress the folder into zip format for import\n";
+ } else {
+ explanation = "填写说明\n"
+ + "1.导入数据从第三行开始,第一行为表头,第二行为填写说明,第三行是示例数据,需要从第四行开始填写\n"
+ + "2.填写时需按照控件校验和控件备选值进行填写\n"
+ + "3.控件类型为下拉多选时,填写多个时采用英文或中文感叹号分割\n"
+ + "4.配置数据按照控件类型进行填写,若存在多种控件类型填写时需要通过“#”隔开\n"
+ + "5.填写时从G列开始,请勿修改NIO编号和参数名称等信息\n"
+ + "6.上传附件为文件属性,填写时需要在本文件同级目录下以NIO编号为名称建立文件夹,并在文件夹下放置文件且该文件夹下只能有一层级,假设在NIO.XXXX下放置了B.pdf,则应填写NIO.XXXX/B.pdf\n"
+ + "7.导入系统时,需要将该Excel放入文件夹内,并按照要求正确放置其他附件文件,最后将文件夹压缩为zip格式进行导入\n";
+ }
+ XSSFRow row2 = sheetItems.createRow(1);
+ row2.setHeight((short) 2500);
+ Cell cell2 = row2.createCell(0);
+ cell2.setCellStyle(cellStyle);
+ cell2.setCellValue(new XSSFRichTextString(explanation));
+
+ // 在excel表中添加添加填写示例
+ String[] exampleRow = titles[2].split(",");
+ XSSFRow row3 = sheetItems.createRow(2);
+ for (int i = 0; i < exampleRow.length; i++) {
+ XSSFCell cell3 = row3.createCell(i);
+ XSSFRichTextString text = new XSSFRichTextString(exampleRow[i]);
+ cell3.setCellValue(text);
+ cell3.setCellStyle(cellStyle);
+ sheetItems.setColumnWidth(i, 20 * 256); // 设置单元格宽度
+ }
+
+ List allRelevFileList = new ArrayList<>();
+ Map fileNowPathMap = new HashMap<>();
+
+ //放文字内容
+ int allRow = 2;
+ for(int rowNum = 0;rowNum < allParamsInfoList.size(); rowNum++){
+ Map exportDto = allParamsInfoList.get(rowNum);
+
+ // 处理文件
+ List fileList = (List) exportDto.get("fileList");
+ if (CollectionUtil.isNotEmpty(fileList)) {
+ allRelevFileList.addAll(fileList);
+ fileList.forEach(file -> {
+ fileNowPathMap.put(file.getId(), fileNowPath + File.separator + exportDto.get("nio_number"));
+ });
+
+ }
+
+ allRow++;
+ XSSFRow row1 = sheetItems.createRow(allRow);
+ for(int cellNum = 0; cellNum < fieldList.size(); cellNum++){
+ if (ObjectUtils.isNotEmpty(exportDto.get(fieldList.get(cellNum)))) {
+ row1.createCell(cellNum).setCellValue(exportDto.get(fieldList.get(cellNum)).toString());
+ row1.getCell(cellNum).setCellStyle(cellStyle);
+
+ }
+ }
+
+ }
+
+ //下载关联文件内容
+ if (allRelevFileList != null && !allRelevFileList.isEmpty()) {
+ allRelevFileList = allRelevFileList.stream().distinct().collect(Collectors.toList());
+ downLoadFileList(allRelevFileList,fileNowPathMap);
+ }
+
+ String repFileName = fileName.replaceAll("/","_");
+ excelOS = new FileOutputStream(fileNowPath + File.separator + repFileName);
+ response.setHeader("Content-Disposition",
+ "attachment; filename=\""+ ReadExcel.encodeFileName(fileOriName+".zip", request) +"\"");
+ response.setContentType("application/force-download");
+ response.flushBuffer();
+ os = response.getOutputStream();
+ workbook.write(excelOS);
+ excelOS.flush();
+ excelOS.close();
+ ZipUtil.zip(fileNowPath,fileNowPath+".zip");
+ fis = new FileInputStream(fileNowPath+".zip");
+ int len = 0;
+ while ((len = fis.read()) != -1) {
+ os.write(len);
+ }
+
+ } catch (Exception e) {
+ if (e instanceof JeroBootException){
+ throw new JeroBootException(e.getMessage());
+ } else {
+ log.error(e.getMessage(), e);
+ if (CutEnum.EN.getValue().equals(paramsCollectManifestVO.getCut())) {
+ throw new JeroBootException("Failed to download file, please try again");
+ } else {
+ throw new JeroBootException("下载文件失败,请重试");
+ }
+
+ }
+ } finally {
+ IOUtils.closeQuietly(os);
+ IOUtils.closeQuietly(fis);
+ try {
+ if (workbook != null) {
+ workbook.close();
+ }
+ } catch (IOException e) {
+ log.error("发生异常,异常信息为:"+e.getMessage(), e);
+ }
+ }
+ }
+
+ @Override
+ public Result> importDre(MultipartFile file, String cut, String paramsManifestId) throws IOException {
+ //验证文件名是否合格
+ /* 截取后缀名 */
+ int pos = file.getOriginalFilename().lastIndexOf(".");
+ String str = file.getOriginalFilename().substring(pos+1).toLowerCase();
+ String filenameorg = file.getOriginalFilename().substring(0,pos);
+ String resultMsg = "";
+ //判断上传文件必须是zip
+ if (!str.equals("zip")) {
+ if(CutEnum.CN.getValue().equals(cut)){
+ resultMsg = "请上传zip文件";
+ }else{
+ resultMsg = "Please upload a zip file";
+ }
+ return Result.error(resultMsg);
+ }
+ String path = uploadpath + File.separator + "modal" + File.separator + filenameorg + System.currentTimeMillis();
+ File saveDirectory = new File(path);
+ if(!saveDirectory.isDirectory()){
+ saveDirectory.mkdir();
+ }
+ try{
+ FileUtils.copyInputStreamToFile(file.getInputStream(), new File(path +File.separator+ file.getOriginalFilename()));
+ //解压缩
+ String zipEntryName = FileUnZip.unZipFiles2(path +File.separator+ file.getOriginalFilename(), path);
+ // 数据相关处理,
+ // 1.获取其中的Excel,
+ List excelfilelist = FileUnZip.readExcelFile(zipEntryName);
+ if(excelfilelist.size()<1){
+ //删除原上传文件
+ FileUnZip.deleteDir(saveDirectory);
+ if(CutEnum.CN.getValue().equals(cut)){
+ resultMsg = "压缩包内没有上传Excel数据";
+ }else{
+ resultMsg = "In the cabinet did not upload the Excel data";
+ }
+ return Result.error(1, resultMsg);
+
+ } else if (excelfilelist.size()>1) {
+ //删除原上传文件
+ FileUnZip.deleteDir(saveDirectory);
+ if(CutEnum.CN.getValue().equals(cut)){
+ resultMsg = "压缩包根目录下仅能存在一个excel为导入数据";
+ }else{
+ resultMsg = "Only one Excel file can be imported in the compressed package root directory";
+ }
+ return Result.error(1, resultMsg);
+ }
+ File excelfile = excelfilelist.get(0);
+ // 导入参数设置,默认即可
+ ImportParams params = new ImportParams();
+ try {
+ // 导入表头
+ ParamsCollectManifestVO paramsCollectManifestVO = new ParamsCollectManifestVO();
+ paramsCollectManifestVO.setCut(cut);
+ paramsCollectManifestVO.setParamsManifestId(paramsManifestId);
+ String titles[] = getWorkbookTitleForExportDre(paramsCollectManifestVO); // 有顺序
+ String headers[] = titles[1].split(",");
+ params.setImportFields(headers);
+
+ List> result = new ArrayList<>();
+ List dbfieldList = Arrays.asList(titles[0].split(",")); // 有顺序
+
+ // 解析excel
+ result = read(excelfile, dbfieldList, headers, cut);
+
+ //excel读取到的数据
+ List> datas = result;
+ if(datas!=null &&!datas.isEmpty()){
+ try {
+// int i = 0 ;
+// List> datasUpdate = new ArrayList<>();
+ //处理空行数据,当读取exceL出现空行过多时,空行数为20以上时中断读取,将数据清洗为新的list
+// for(Map importDto :datas){
+// if(i>20){
+// break;
+// }
+// //判断此行数据是否全部为空
+// if(checkObjAllFieldsIsNull(importDto)){
+// i++;
+// //是则不读取
+// continue;
+// }
+// i = 0;
+// datasUpdate.add(importDto);
+// }
+ String unzipfilepath = zipEntryName;
+ Result> message = importData(datas,unzipfilepath,cut,paramsManifestId);
+ //删除原上传文件
+ FileUnZip.deleteDir(saveDirectory);
+ return message;
+ } catch (NullPointerException e) {
+ //删除原上传文件
+ FileUnZip.deleteDir(saveDirectory);
+ if(CutEnum.CN.getValue().equals(cut)){
+ resultMsg = "读取失败,请严格按照模板文件导入数据";
+ }else{
+ resultMsg = "The data fails to be read. Import data strictly according to the template file";
+ }
+ return Result.error(1, resultMsg);
+ } catch (Exception e) {
+ //删除原上传文件
+ FileUnZip.deleteDir(saveDirectory);
+ return Result.error(e.getMessage());
+ }
+ }else{
+ //删除原上传文件
+ FileUnZip.deleteDir(saveDirectory);
+ if(CutEnum.CN.getValue().equals(cut)){
+ resultMsg = "没有可导入的数据,请检查!";
+ }else{
+ resultMsg = "No data to import, please check";
+ }
+ return Result.error(1, resultMsg);
+ }
+ } catch (NoSuchElementException e){
+ FileUnZip.deleteDir(saveDirectory);
+ if(CutEnum.CN.getValue().equals(cut)){
+ resultMsg = "没有可导入的数据,请检查!";
+ }else{
+ resultMsg = "No data to import, please check";
+ }
+ return Result.error(1, resultMsg);
+ } catch (JeroBootException e){
+ FileUnZip.deleteDir(saveDirectory);
+ return Result.error(1, e.getMessage());
+ } catch (Exception e) {
+ //删除原上传文件
+ FileUnZip.deleteDir(saveDirectory);
+ if(CutEnum.CN.getValue().equals(cut)){
+ resultMsg = "读取失败,请严格按照模板文件导入数据";
+ }else{
+ resultMsg = "The data fails to be read. Import data strictly according to the template file";
+ }
+ return Result.error(1, resultMsg);
+ }
+ } catch (Exception e) {
+ //删除原上传文件
+ FileUnZip.deleteDir(saveDirectory);
+ if(CutEnum.CN.getValue().equals(cut)){
+ resultMsg = "读取失败,请严格按照模板文件导入数据";
+ }else{
+ resultMsg = "The data fails to be read. Import data strictly according to the template file";
+ }
+ return Result.error(1, resultMsg);
+ }
+ }
+
+ @Override
+ public Result> importData(List> dataList,
+ String unzipfilepath,
+ String cut,
+ String paramsManifestId) throws IOException {
+ //验证导入数据是否符合规则
+ Map map = validateImportDatas(dataList,unzipfilepath,cut,paramsManifestId);
+ boolean isOk = (boolean) map.get("result");
+ if (!isOk) {
+ //验证没有通过
+ String message = (String) map.get("message");
+ return Result.error(message);
+ }
+ //将导入数据循环合并整理后 新增至相应表
+ List configDataList = (List) map.get("configDataList");
+ List> notImportNioNumberList = (List>) map.get("notImportNioNumberList");
+
+ for (ParamsConfigDataEO importDto : configDataList) {
+ //判断此行数据是否全部为空,是则不读取
+ if (checkObjAllFieldsIsNull(importDto)) {
+ continue;
+ }
+ // 处理文件
+ if (StringUtils.isNotBlank(importDto.getFileConnectId())) { // 判空,否则报空指针异常
+ List nowFileList = FileUnZip.readFileByFilename(unzipfilepath, importDto.getFileConnectId(), null, null, null, null, null);
+
+ FileInputStream input = new FileInputStream(nowFileList.get(0));
+ MultipartFile multipartFile =
+ new MockMultipartFile(nowFileList.get(0).getName(), nowFileList.get(0).getName(), "text/plain", input);
+ //文件存入文件表
+ OSSFile ossFile = ossFileService.uploadLocalOfCos(multipartFile, "", null, null);
+ if (ObjectUtils.isNotEmpty(ossFile)) {
+ String connectId = UUID.randomUUID().toString().replace("-", "");
+ OSSFile ossFileUpdate = new OSSFile();
+ ossFileUpdate.setId(ossFile.getId());
+ ossFileUpdate.setConnectId(connectId);
+ ossFileService.updateById(ossFileUpdate);
+
+ importDto.setFileConnectId(connectId);
+ }
+ }
+
+ // 处理下拉值
+ if (StringUtils.isNotEmpty(importDto.getPullData())) {
+ String newPullData = importDto.getPullData().replaceAll("!", "!").replaceAll("!", ",");
+ importDto.setPullData(newPullData);
+ }
+ }
+
+ // 批量新增参数项
+ Boolean isSuccess = paramsConfigDataEOService.saveOrUpdateBatch(configDataList);
+
+ String msg = "";
+ if (isSuccess) {
+ if (CollectionUtil.isNotEmpty(notImportNioNumberList)) {
+ List msgList = getMsgOfIssueCollection(notImportNioNumberList, cut, "3");
+ return Result.OK(null, msgList);
+
+ } else {
+ int countSuccess = configDataList.size();
+ if (CutEnum.CN.getValue().equals(cut)) {
+ msg = "成功导入" + countSuccess + "条";
+ } else {
+ msg = "import " + countSuccess + " datas successfully";
+ }
+ return Result.OK(msg, null);
+ }
+ } else {
+ if (CutEnum.CN.getValue().equals(cut)) {
+ msg = "导入失败";
+ } else {
+ msg = "import failed";
+ }
+ return Result.error(1, msg);
+ }
+ }
+
@Override
public List updateBatchDutyTerritory(ParamsCollectManifestVO paramsCollectManifestVO) {
if (StringUtils.isEmpty(paramsCollectManifestVO.getIds())
@@ -2452,6 +2993,96 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl fieldList = onlCgformFieldService.getFieldList(ModuleEnum.PARAMS_COLLECT_MANIFEST.getValue());
+
+ List dbFieldNameList = new LinkedList<>();
+ List dbFieldList = new LinkedList<>();
+ List dbFieldExampleList = new LinkedList<>();
+
+ // 固定列
+ for (int i = 0; i < fieldList.size(); i++) {
+ OnlCgformField onlCgformField = fieldList.get(i);
+ String dbFieldName = onlCgformField.getDbFieldName();
+ if ("nio_number".equals(dbFieldName) || "params_name".equals(dbFieldName) || "description".equals(dbFieldName)
+ || "control_type".equals(dbFieldName) || "control_verify".equals(dbFieldName) || "control_values".equals(dbFieldName)
+ || "is_must".equals(dbFieldName)) {
+ dbFieldList.add(dbFieldName);
+
+ if(CutEnum.CN.getValue().equals(cut)){
+ dbFieldNameList.add(onlCgformField.getDbFieldTxt()); // 字段中文名
+ if("nio_number".equals(dbFieldName)) {
+ dbFieldExampleList.add("例NIO.XXXX");
+ } else if("params_name".equals(dbFieldName) || "description".equals(dbFieldName)) {
+ dbFieldExampleList.add("XXXXX");
+
+ } else if("control_verify".equals(dbFieldName)) {
+ dbFieldExampleList.add("数据来源于参数模版管理中控件校验数据");
+
+ } else if("control_values".equals(dbFieldName)) {
+ dbFieldExampleList.add("数据来源于参数模版管理中控件备选值数据");
+
+ } else if("is_must".equals(dbFieldName)) {
+ dbFieldExampleList.add("是/否");
+
+ } else {
+ dbFieldExampleList.add("下拉多选+文本");
+ }
+ }else{
+ dbFieldNameList.add(onlCgformField.getDbFieldEnName()); // 字段英文名
+ if("nio_number".equals(dbFieldName)) {
+ dbFieldExampleList.add("Example:NIO.XXXX");
+ } else if("params_name".equals(dbFieldName) || "description".equals(dbFieldName)) {
+ dbFieldExampleList.add("XXXXX");
+
+ } else if("control_verify".equals(dbFieldName)) {
+ dbFieldExampleList.add("The data comes from Validate Component in the parameter template management");
+
+ } else if("control_values".equals(dbFieldName)) {
+ dbFieldExampleList.add("The data comes from Component Value in the parameter template management");
+
+ } else if("is_must".equals(dbFieldName)) {
+ dbFieldExampleList.add("Yes/No");
+
+ } else {
+ dbFieldExampleList.add("Pull more+File");
+ }
+ }
+
+
+ }
+ }
+
+ // 配置列
+ List dbFieldNameListConfig = new LinkedList<>();
+ List dbFieldListConfig = new LinkedList<>();
+ List paramsConfigEOList = paramsConfigEOService.queryList(paramsManifestId);
+ for (ParamsConfigEO paramsConfigEO : paramsConfigEOList) {
+ if (ConfigLockEnum.NO.getValue().equals(paramsConfigEO.getIsLock())) { // 只导出未冻结的配置列
+ dbFieldListConfig.add(paramsConfigEO.getId());
+ dbFieldNameListConfig.add(paramsConfigEO.getConfigName());
+ dbFieldExampleList.add("XX!XX!XX#XXXXX");
+ }
+ }
+
+ // 插入配置列
+ dbFieldList.addAll(dbFieldListConfig);
+ dbFieldNameList.addAll(dbFieldNameListConfig);
+
+ String[] title = new String[3];
+ String dbFieldStr = StringUtils.join(dbFieldList, ",");
+ String dbFieldNameStr = StringUtils.join(dbFieldNameList, ",");
+ String dbFieldExampleStr = StringUtils.join(dbFieldExampleList, ",");
+
+ title[0] = dbFieldStr;
+ title[1] = dbFieldNameStr;
+ title[2] = dbFieldExampleStr;
+ return title;
+ }
+
private List> queryForExportAll(ParamsCollectManifestVO paramsCollectManifestVO) {
String paramsManifestId = paramsCollectManifestVO.getParamsManifestId();
String paramsTemplateId = paramsCollectManifestVO.getParamsTemplateId();
@@ -2469,7 +3100,7 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl> dataList = paramsCollectManifestEOMapper.listInfoForExport(queryEO); // 查询导出数据
+ List> dataList = paramsCollectManifestEOMapper.listInfoForExport(queryEO, null); // 查询导出数据
if (dataList == null || dataList.isEmpty()){
// 没有查到数据,进行提示
if (CutEnum.EN.getValue().equals(paramsCollectManifestVO.getCut())) {
@@ -2562,6 +3193,112 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl> queryForExportDre(ParamsCollectManifestVO paramsCollectManifestVO, HttpServletRequest req) {
+ String paramsManifestId = paramsCollectManifestVO.getParamsManifestId();
+ String cut = paramsCollectManifestVO.getCut();
+ List idList = new ArrayList<>();
+ if (StringUtils.isNotBlank(paramsCollectManifestVO.getIds())) {
+ idList = Arrays.asList(paramsCollectManifestVO.getIds().split(","));
+ }
+ List stateList = new ArrayList(){{
+ add(CollectManifestStateEnum.WAIT_FILL.getValue());
+ add(CollectManifestStateEnum.CERT_BACK.getValue());
+ }};
+
+ LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+
+ ParamsCollectManifestEO paramsCollectManifestEO = new ParamsCollectManifestEO();
+ BeanUtils.copyProperties(paramsCollectManifestVO, paramsCollectManifestEO);
+ paramsCollectManifestEO.setParamsManifestId(null);
+ QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(paramsCollectManifestEO, req.getParameterMap());
+ queryWrapper.lambda().eq(ParamsCollectManifestEO::getParamsManifestId, paramsManifestId)
+ .eq(ParamsCollectManifestEO::getDre, loginUser.getUsername())
+ .in(ParamsCollectManifestEO::getState, stateList)
+ .notIn(ParamsCollectManifestEO::getControlType, ControlTypeEnum.Title.getValue())
+ .orderByDesc(ParamsCollectManifestEO::getDelFlag)
+ .orderByDesc(ParamsCollectManifestEO::getAddFlag)
+ .orderByDesc(ParamsCollectManifestEO::getChangeFlag)
+ .orderByAsc(ParamsCollectManifestEO::getNioNumber)
+ .in(CollectionUtil.isNotEmpty(idList), ParamsCollectManifestEO::getId, idList);
+
+ List dataList = list(queryWrapper); // 查询导出数据
+ if (dataList == null || dataList.isEmpty()){
+ // 没有查到数据,进行提示
+ if (CutEnum.EN.getValue().equals(paramsCollectManifestVO.getCut())) {
+ throw new JeroBootException("No data, unable to export");
+ } else {
+ throw new JeroBootException("无数据,无法导出");
+ }
+ }
+
+ List paramsConfigEOList = paramsConfigEOService.queryList(paramsManifestId); // 查询所有配置列
+
+ List paramsConfigIdList = paramsConfigEOList.stream().map(ParamsConfigEO::getId).collect(Collectors.toList());
+ List paramsConfigDataEOList = paramsConfigDataEOService.queryListByConfigIdList(paramsConfigIdList); // 查询所有配置数据
+
+ Map isMustMap = ParamsIsMustEnum.toMapForExport(cut);
+ Map controlVerifyMap = ControlVerifyEnum.toMapForExport(cut);
+ Map controlTypeMap = ControlTypeEnum.toMapForExport(cut);
+ // 插入配置列和认证类别列数据
+ List> result = new ArrayList<>();
+ for (ParamsCollectManifestEO collectManifestEO: dataList) {
+ Map record1 = objectToMapDre(collectManifestEO);
+ String controlType = (String) record1.get("control_type");
+ String controlVerify = (String) record1.get("control_verify");
+ String isMust = (String) record1.get("is_must");
+ String paramsCollectManifestId = (String) record1.get("id");
+ String nioNumber = (String) record1.get("nio_number");
+
+ record1.put("is_must", isMustMap.get(isMust));
+ record1.put("control_type", controlTypeMap.get(controlType));
+ record1.put("control_verify", controlVerifyMap.get(controlVerify));
+
+ // 配置列
+ if (CollectionUtil.isNotEmpty(paramsConfigEOList)) {
+ List fileList = new ArrayList<>();
+
+ paramsConfigEOList.forEach(paramsConfigEO -> { // 参数配置
+
+ String paramsConfigId = paramsConfigEO.getId();
+ List paramsConfigDataEOS = paramsConfigDataEOList.stream().filter(e-> paramsConfigId.equals(e.getParamsConfigId()) && paramsCollectManifestId.equals(e.getParamsCollectManifestId())).collect(Collectors.toList()); // 参数配置数据
+ StringBuilder configDataBuilder = new StringBuilder(); // 重新组合配置数据
+ if (CollectionUtil.isNotEmpty(paramsConfigDataEOS)) {
+ ParamsConfigDataEO paramsConfigDataEO = paramsConfigDataEOS.get(0);
+ if (StringUtils.isNotEmpty(paramsConfigDataEO.getTextData())) {
+ configDataBuilder.append(paramsConfigDataEO.getTextData()).append("#");
+ }
+ if (StringUtils.isNotEmpty(paramsConfigDataEO.getPullData())) {
+ configDataBuilder.append(paramsConfigDataEO.getPullData().replaceAll(",", "!")).append("#");
+ }
+ if (StringUtils.isNotEmpty(paramsConfigDataEO.getFileConnectId())) {
+ List ossFileList = ossFileService.getFileInfosByConnectId(paramsConfigDataEO.getFileConnectId());
+ if (CollectionUtil.isNotEmpty(ossFileList)) {
+ configDataBuilder.append(nioNumber).append("/").append(ossFileList.get(0).getFileName()).append("#");
+
+ fileList.addAll(ossFileList);
+ }
+ }
+
+ }
+
+ String configData = configDataBuilder.toString();
+ if (configData.contains("#")) {
+ configData = configData.substring(0, configData.lastIndexOf("#"));
+ }
+
+ record1.put(paramsConfigEO.getId(), configData);
+ });
+
+ record1.put("fileList", fileList);
+ }
+
+
+ result.add(record1);
+ }
+ return result;
+ }
+
private void downLoadFileList(List fileTemplateList,Map fileNowPathMap) {
for(OSSFile fileExportDto : fileTemplateList){
String fileNowPath = fileNowPathMap.get(fileExportDto.getId());
@@ -2653,7 +3390,7 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl objectToMapDre(Object obj) {
+
+ Map map = new HashMap<>();
+ // 获取f对象对应类中的所有属性域
+ List list = findAllFieldsOfSelfAndSuperClass(obj.getClass());
+ for (Field field : list) {
+
+ String varName = field.getName();
+ try {
+ // 获取原来的访问控制权限
+ boolean accessFlag = field.isAccessible();
+ // 修改访问控制权限
+ field.setAccessible(true);
+ // 获取在对象f中属性fields[i]对应的对象中的变量
+ Object o = field.get(obj);
+ if (o != null) {
+ if (Date.class.equals(field.getType())) {
+ Date date = (Date) o;
+ String pattern = "";
+ if ("deadline".equals(varName) || "reportTime".equals(varName)) {
+ pattern = "yyyy-MM-dd";
+ } else {
+ pattern = "yyyy-MM-dd HH:mm:ss";
+ }
+ SimpleDateFormat formatter=new SimpleDateFormat(pattern);
+ String time=formatter.format(date);
+ map.put(toUnderlineCase(varName), time);
+ } else {
+ map.put(toUnderlineCase(varName), o);
+ }
+ }
+ // 恢复访问控制权限
+ field.setAccessible(accessFlag);
+ } catch (IllegalArgumentException ex) {
+ ex.printStackTrace();
+ } catch (IllegalAccessException ex) {
+ ex.printStackTrace();
+ }
+ }
+ return map;
+
+ }
+
+ /**
+ * 驼峰转 转 下划线
+ * userName ----> user_name
+ * user_name ----> user_name
+ *
+ * @param camelCaseStr 驼峰字符串
+ * @return 带下滑线的String
+ */
+ private String toUnderlineCase(String camelCaseStr) {
+ if (camelCaseStr == null) {
+ return null;
+ }
+ // 将驼峰字符串转换成数组
+ char[] charArray = camelCaseStr.toCharArray();
+ StringBuffer buffer = new StringBuffer();
+ //处理字符串
+ for (int i = 0, l = charArray.length; i < l; i++) {
+ if (charArray[i] >= 65 && charArray[i] <= 90) {
+ buffer.append("_").append(charArray[i] += 32);
+ } else {
+ buffer.append(charArray[i]);
+ }
+ }
+ return buffer.toString();
+ }
+
/**
* 通过实体类获取 URL Params
*
@@ -2730,6 +3541,682 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl> read(File file, List dbfieldList, String[] titles, String cut) throws Exception {
+
+ //最终返回数据
+ List> list = new ArrayList<>();
+
+ Workbook workbook = null;
+ InputStream is = new FileInputStream(file);
+ String name = file.getName().toLowerCase();
+ // 创建excel操作对象
+ if (name.contains(".xlsx")) {
+ workbook = WorkbookFactory.create(is);
+ } else {
+ if(CutEnum.CN.getValue().equals(cut)){
+ throw new JeroBootException("请导入正确模板!");
+ } else {
+ throw new JeroBootException("Please import the correct template");
+ }
+ }
+ //得到一个工作表
+ Sheet sheet = workbook.getSheetAt(0);
+
+ //获得数据的总行数
+ int totalRowNum = sheet.getLastRowNum();
+
+ //获得总列数
+ int cellLength = sheet.getRow(0).getPhysicalNumberOfCells();
+ // 验证模板表头是否正确
+ Row rowTitle = sheet.getRow(0);
+ for (int i = 0; i < cellLength; i++) {
+ if (rowTitle != null) {
+ Cell cell = rowTitle.getCell(i);
+ if(ObjectUtil.isNotNull(cell)){
+ //设置单元格类型
+ cell.setCellType(CellType.STRING);
+ String cellValue = cell.getStringCellValue().substring(cell.getStringCellValue().indexOf("*")+1);
+ if(!cellValue.equals(titles[i])){
+ if(CutEnum.CN.getValue().equals(cut)){
+ throw new JeroBootException("请导入正确模板!");
+ } else {
+ throw new JeroBootException("Please import the correct template");
+ }
+ }
+ } else{
+ if(CutEnum.CN.getValue().equals(cut)){
+ throw new JeroBootException("请导入正确模板!");
+ } else {
+ throw new JeroBootException("Please import the correct template");
+ }
+ }
+ }else{
+ if(CutEnum.CN.getValue().equals(cut)){
+ throw new JeroBootException("请导入正确模板!");
+ } else {
+ throw new JeroBootException("Please import the correct template");
+ }
+ }
+ }
+ Row rowDescription= sheet.getRow(1);
+ if (rowDescription != null) {
+ Cell cell = rowDescription.getCell(0);
+ if(ObjectUtil.isNotNull(cell)){
+ //设置单元格类型
+ cell.setCellType(CellType.STRING);
+ String cellValue = cell.getStringCellValue();
+ if(!cellValue.startsWith("填写说明") && !cellValue.startsWith("Filling explanation")){
+ if(CutEnum.CN.getValue().equals(cut)){
+ throw new JeroBootException("请导入正确模板!");
+ } else {
+ throw new JeroBootException("Please import the correct template");
+ }
+ }
+ } else{
+ if(CutEnum.CN.getValue().equals(cut)){
+ throw new JeroBootException("请导入正确模板!");
+ } else {
+ throw new JeroBootException("Please import the correct template");
+ }
+ }
+ }else{
+ if(CutEnum.CN.getValue().equals(cut)){
+ throw new JeroBootException("请导入正确模板!");
+ } else {
+ throw new JeroBootException("Please import the correct template");
+ }
+ }
+ Row rowExample= sheet.getRow(2);
+ if (rowExample != null) {
+ Cell cell = rowExample.getCell(0);
+ if(ObjectUtil.isNotNull(cell)){
+ //设置单元格类型
+ cell.setCellType(CellType.STRING);
+ String cellValue = cell.getStringCellValue();
+ if(!cellValue.startsWith("例") && !cellValue.startsWith("Example")){
+ if(CutEnum.CN.getValue().equals(cut)){
+ throw new JeroBootException("请导入正确模板!");
+ } else {
+ throw new JeroBootException("Please import the correct template");
+ }
+ }
+ } else{
+ if(CutEnum.CN.getValue().equals(cut)){
+ throw new JeroBootException("请导入正确模板!");
+ } else {
+ throw new JeroBootException("Please import the correct template");
+ }
+ }
+ }else{
+ if(CutEnum.CN.getValue().equals(cut)){
+ throw new JeroBootException("请导入正确模板!");
+ } else {
+ throw new JeroBootException("Please import the correct template");
+ }
+ }
+
+ Map map = null;
+ //获得所有数据
+ //从第4行开始获取,第一行是表头,第二行是填写说明, 第三行是填写示例
+ for (int x = 3; x <= totalRowNum; x++) {
+ map = new LinkedHashMap();
+ //获得第i行对象
+ Row row= sheet.getRow(x);
+ //如果一行里的所有单元格都为空则不放进list里面
+ int a = 0;
+ for (int y = 0; y < cellLength; y++) {
+ if (!(row == null)) {
+ Cell cell = row.getCell(y); // cell 为空时会抛空指针异常
+ if(ObjectUtil.isNull(cell)) {
+ map.put(dbfieldList.get(y), "");
+ } else {
+
+ cell.setCellType(CellType.STRING); //设置单元格类型
+ String cellValue = cell.getStringCellValue();
+ map.put(dbfieldList.get(y), cellValue);
+ }
+ if (map.get(dbfieldList.get(y)) == null || "".equals(map.get(dbfieldList.get(y)))) {
+ a++;
+ }
+ }
+ }
+ // 当前行所有单元格均不为空时
+// if (a != cellLength && row != null) {
+ list.add(map);
+// }
+ }
+ return list;
+ }
+
+ private Map validateImportDatas(List> dataList,
+ String unzipfilepath,
+ String cut,
+ String paramsManifestId) {
+ // 查询清单的配置列信息
+ List paramsConfigEOList = paramsConfigEOService.queryList(paramsManifestId);
+ Map configMap = paramsConfigEOList.stream().collect(Collectors.toMap(ParamsConfigEO::getId, ParamsConfigEO::getConfigName));
+ // 查询清单参数项
+ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.eq(ParamsCollectManifestEO::getParamsManifestId, paramsManifestId);
+ List paramsCollectManifestEOList = paramsCollectManifestEOMapper.selectList(queryWrapper);
+ Map collectManifestMap = paramsCollectManifestEOList.stream().collect(Collectors.toMap(ParamsCollectManifestEO::getNioNumber, ParamsCollectManifestEO::getId));
+ // 查询清单的配置数据
+ List configIdList = paramsConfigEOList.stream().map(ParamsConfigEO::getId).collect(Collectors.toList());
+ List paramsConfigDataEOList = paramsConfigDataEOService.queryListByConfigIdList(configIdList);
+
+ //存放数据验证结果信息
+ List configDataList = new ArrayList<>();
+ List verifyNioNumber = new ArrayList<>();
+ List> notImportNioNumberList = new ArrayList<>();
+ List stringMessage = new ArrayList<>();
+ int i = 3; //记录行号
+ //循环验证数据
+ for (Map dto : dataList) {
+ i++;
+ int countError = 0; //记录失败数据数量
+ String errorMsg = "";
+ if (CutEnum.CN.getValue().equals(cut)) {
+ errorMsg = "第" + i + "行:";
+ } else {
+ errorMsg = i + " line:";
+ }
+
+ Map resultMap = new HashMap<>();
+ String nioNumber = (String) dto.get("nio_number");
+ if (StringUtils.isBlank(nioNumber)) {
+ continue;
+ }
+
+ List listPCM = paramsCollectManifestEOList.stream().filter(e-> nioNumber.equals(e.getNioNumber())).collect(Collectors.toList());
+ if (CollectionUtil.isEmpty(listPCM)) {
+ if (CutEnum.EN.getValue().equals(cut)) {
+ errorMsg += "NIO Number can not find; ";
+ } else{
+ errorMsg += "NIO编号不存在;";
+ }
+ countError++;
+ stringMessage.add(errorMsg);
+ continue;
+ }
+
+ if (!verifyNioNumber.contains(nioNumber)) {
+ verifyNioNumber.add(nioNumber);
+ } else{
+ if (CutEnum.EN.getValue().equals(cut)) {
+ errorMsg += "NIO Number is repeat; ";
+ } else{
+ errorMsg += "NIO编号重复;";
+ }
+ countError ++;
+ stringMessage.add(errorMsg);
+ continue;
+ }
+
+ ParamsCollectManifestEO paramsCollectManifestEO = listPCM.get(0);
+ String state = paramsCollectManifestEO.getState();
+ if (!CollectManifestStateEnum.WAIT_FILL.getValue().equals(state) && !CollectManifestStateEnum.CERT_BACK.getValue().equals(state)) {
+ Map msgMap = new HashMap<>();
+ msgMap.put("nioNumber", nioNumber);
+ msgMap.put("state", state);
+ msgMap.put("type", "3");
+ notImportNioNumberList.add(msgMap);
+ continue;
+ }
+
+ String controlType = paramsCollectManifestEO.getControlType();
+ String controlVerify = paramsCollectManifestEO.getControlVerify();
+ String controlValues = paramsCollectManifestEO.getControlValues();
+ String isMust = paramsCollectManifestEO.getIsMust();
+ for (Map.Entry entry : dto.entrySet()) {
+ String key = entry.getKey();
+ String value = (String) entry.getValue();
+
+ if ("nio_number".equals(key) || "params_name".equals(key) || "description".equals(key)
+ || "control_type".equals(key) || "control_verify".equals(key) || "control_values".equals(key)
+ || "is_must".equals(key)) {
+ continue;
+ }
+ //
+ ParamsConfigDataEO configDataEO = new ParamsConfigDataEO();
+ List list = paramsConfigDataEOList.stream().filter(e-> collectManifestMap.get(nioNumber).equals(e.getParamsCollectManifestId())
+ && key.equals(e.getParamsConfigId())).collect(Collectors.toList());
+ if (CollectionUtil.isNotEmpty(list)) {
+ configDataEO.setId(list.get(0).getId());
+ }
+ configDataEO.setParamsCollectManifestId(collectManifestMap.get(nioNumber));
+ configDataEO.setParamsConfigId(key);
+
+
+ // 校验配置列
+ if (ControlTypeEnum.TEXT.getValue().equals(controlType)) {
+ resultMap = validateText(configMap.get(key), controlVerify, value, isMust, "1000", cut);
+ errorMsg += (String)resultMap.get("errorMsg");
+ countError += (int)resultMap.get("countError");
+
+ configDataEO.setTextData(value);
+
+ } else if (ControlTypeEnum.PULL_SINGLE.getValue().equals(controlType)) {
+ resultMap = validatePull(configMap.get(key), controlValues, value, isMust, true, cut);
+ errorMsg += (String)resultMap.get("errorMsg");
+ countError += (int)resultMap.get("countError");
+
+ configDataEO.setPullData(value);
+
+ } else if (ControlTypeEnum.PULL_MORE.getValue().equals(controlType)) {
+ resultMap = validatePull(configMap.get(key), controlValues, value, isMust, false, cut);
+ errorMsg += (String)resultMap.get("errorMsg");
+ countError += (int)resultMap.get("countError");
+
+ configDataEO.setPullData(value);
+
+ } else if (ControlTypeEnum.FILE.getValue().equals(controlType)) {
+ resultMap = validateFile(configMap.get(key), unzipfilepath, value, isMust , cut);
+ errorMsg += (String)resultMap.get("errorMsg");
+ countError += (int)resultMap.get("countError");
+
+ configDataEO.setFileConnectId(value);
+
+ } else if (ControlTypeEnum.TEXT_PULL_SINGLE.getValue().equals(controlType)) {
+ // 校验必填
+ if (ParamsIsMustEnum.YES.getValue().equals(isMust) && StringUtils.isEmpty(value)) {
+ if(CutEnum.CN.getValue().equals(cut)) {
+ errorMsg += configMap.get(key) + "为必填项,不能为空;";
+ } else {
+ errorMsg += configMap.get(key) + " is mandatory and cannot be empty; ";
+ }
+ countError++;
+ } else {
+ if (value.split("#").length > 1) {
+ resultMap = validatePull(configMap.get(key), controlValues, value.split("#")[1], isMust, true, cut);
+ errorMsg += (String) resultMap.get("errorMsg");
+ countError += (int) resultMap.get("countError");
+ configDataEO.setPullData(value.split("#")[1]);
+
+ resultMap = validateText(configMap.get(key), controlVerify, value.split("#")[0], ParamsIsMustEnum.NO.getValue(), "1000", cut);
+ errorMsg += (String) resultMap.get("errorMsg");
+ countError += (int) resultMap.get("countError");
+ configDataEO.setTextData(value.split("#")[0]);
+
+ } else {
+ resultMap = validatePull(configMap.get(key), controlValues, value.split("#")[0], isMust, true, cut);
+ errorMsg += (String) resultMap.get("errorMsg");
+ countError += (int) resultMap.get("countError");
+ configDataEO.setPullData(value.split("#")[0]);
+ }
+ }
+
+ } else if (ControlTypeEnum.TEXT_PULL_MORE.getValue().equals(controlType)) {
+ // 校验必填
+ if (ParamsIsMustEnum.YES.getValue().equals(isMust) && StringUtils.isEmpty(value)) {
+ if(CutEnum.CN.getValue().equals(cut)) {
+ errorMsg += configMap.get(key) + "为必填项,不能为空;";
+ } else {
+ errorMsg += configMap.get(key) + " is mandatory and cannot be empty; ";
+ }
+ countError++;
+ } else {
+ if (value.split("#").length > 1) {
+ resultMap = validatePull(configMap.get(key), controlValues, value.split("#")[1], isMust, false, cut);
+ errorMsg += (String) resultMap.get("errorMsg");
+ countError += (int) resultMap.get("countError");
+ configDataEO.setPullData(value.split("#")[1]);
+
+ resultMap = validateText(configMap.get(key), controlVerify, value.split("#")[0], ParamsIsMustEnum.NO.getValue(), "1000", cut);
+ errorMsg += (String) resultMap.get("errorMsg");
+ countError += (int) resultMap.get("countError");
+ configDataEO.setTextData(value.split("#")[0]);
+ } else {
+ resultMap = validatePull(configMap.get(key), controlValues, value.split("#")[0], isMust, false, cut);
+ errorMsg += (String) resultMap.get("errorMsg");
+ countError += (int) resultMap.get("countError");
+ configDataEO.setPullData(value.split("#")[0]);
+ }
+ }
+
+ } else if (ControlTypeEnum.TEXT_FILE.getValue().equals(controlType)) {
+ // 校验必填
+ if (ParamsIsMustEnum.YES.getValue().equals(isMust) && StringUtils.isEmpty(value)) {
+ if(CutEnum.CN.getValue().equals(cut)) {
+ errorMsg += configMap.get(key) + "为必填项,不能为空;";
+ } else {
+ errorMsg += configMap.get(key) + " is mandatory and cannot be empty; ";
+ }
+ countError++;
+ } else {
+ resultMap = validateText(configMap.get(key), controlVerify, value.split("#")[0], isMust, "1000", cut);
+ errorMsg += (String) resultMap.get("errorMsg");
+ countError += (int) resultMap.get("countError");
+ configDataEO.setTextData(value.split("#")[0]);
+
+ if (value.split("#").length > 1) {
+ resultMap = validateFile(configMap.get(key), unzipfilepath, value.split("#")[1], ParamsIsMustEnum.NO.getValue(), cut);
+ errorMsg += (String) resultMap.get("errorMsg");
+ countError += (int) resultMap.get("countError");
+ configDataEO.setFileConnectId(value.split("#")[1]);
+ }
+ }
+
+ } else if (ControlTypeEnum.PULL_SINGLE_FILE.getValue().equals(controlType)) {
+ // 校验必填
+ if (ParamsIsMustEnum.YES.getValue().equals(isMust) && StringUtils.isEmpty(value)) {
+ if(CutEnum.CN.getValue().equals(cut)) {
+ errorMsg += configMap.get(key) + "为必填项,不能为空;";
+ } else {
+ errorMsg += configMap.get(key) + " is mandatory and cannot be empty; ";
+ }
+ countError++;
+ } else {
+ resultMap = validatePull(configMap.get(key), controlValues, value.split("#")[0], isMust, true, cut);
+ errorMsg += (String) resultMap.get("errorMsg");
+ countError += (int) resultMap.get("countError");
+ configDataEO.setPullData(value.split("#")[0]);
+
+ if (value.split("#").length > 1) {
+ resultMap = validateFile(configMap.get(key), unzipfilepath, value.split("#")[1], ParamsIsMustEnum.NO.getValue(), cut);
+ errorMsg += (String) resultMap.get("errorMsg");
+ countError += (int) resultMap.get("countError");
+ configDataEO.setFileConnectId(value.split("#")[1]);
+ }
+ }
+
+ } else if (ControlTypeEnum.PULL_MORE_FILE.getValue().equals(controlType)) {
+ // 校验必填
+ if (ParamsIsMustEnum.YES.getValue().equals(isMust) && StringUtils.isEmpty(value)) {
+ if(CutEnum.CN.getValue().equals(cut)) {
+ errorMsg += configMap.get(key) + "为必填项,不能为空;";
+ } else {
+ errorMsg += configMap.get(key) + " is mandatory and cannot be empty; ";
+ }
+ countError++;
+ } else {
+ resultMap = validatePull(configMap.get(key), controlValues, value.split("#")[0], isMust, false, cut);
+ errorMsg += (String) resultMap.get("errorMsg");
+ countError += (int) resultMap.get("countError");
+ configDataEO.setPullData(value.split("#")[0]);
+
+ if (value.split("#").length > 1) {
+ resultMap = validateFile(configMap.get(key), unzipfilepath, value.split("#")[1], ParamsIsMustEnum.NO.getValue(), cut);
+ errorMsg += (String) resultMap.get("errorMsg");
+ countError += (int) resultMap.get("countError");
+ configDataEO.setFileConnectId(value.split("#")[1]);
+ }
+ }
+
+ } else if (ControlTypeEnum.TEXT_PULL_SINGLE_FILE.getValue().equals(controlType)) {
+ // 校验必填
+ if (ParamsIsMustEnum.YES.getValue().equals(isMust) && StringUtils.isEmpty(value)) {
+ if(CutEnum.CN.getValue().equals(cut)) {
+ errorMsg += configMap.get(key) + "为必填项,不能为空;";
+ } else {
+ errorMsg += configMap.get(key) + " is mandatory and cannot be empty; ";
+ }
+ countError++;
+ } else {
+ if (value.split("#").length > 1) {
+ resultMap = validatePull(configMap.get(key), controlValues, value.split("#")[1], isMust, true, cut);
+ errorMsg += (String) resultMap.get("errorMsg");
+ countError += (int) resultMap.get("countError");
+ configDataEO.setPullData(value.split("#")[1]);
+
+ resultMap = validateText(configMap.get(key), controlVerify, value.split("#")[0], ParamsIsMustEnum.NO.getValue(), "1000", cut);
+ errorMsg += (String) resultMap.get("errorMsg");
+ countError += (int) resultMap.get("countError");
+ configDataEO.setTextData(value.split("#")[0]);
+
+ if (value.split("#").length > 2) {
+ resultMap = validateFile(configMap.get(key), unzipfilepath, value.split("#")[2], ParamsIsMustEnum.NO.getValue(), cut);
+ errorMsg += (String) resultMap.get("errorMsg");
+ countError += (int) resultMap.get("countError");
+ configDataEO.setFileConnectId(value.split("#")[2]);
+ }
+ } else {
+ resultMap = validatePull(configMap.get(key), controlValues, value.split("#")[0], isMust, false, cut);
+ errorMsg += (String) resultMap.get("errorMsg");
+ countError += (int) resultMap.get("countError");
+ configDataEO.setPullData(value.split("#")[0]);
+ }
+
+ }
+
+ } else {
+
+ if (CutEnum.EN.getValue().equals(cut)) {
+ errorMsg += configMap.get(key) + "did not match the Control Component in the system; ";
+ countError ++;
+ } else {
+ errorMsg += configMap.get(key) + "未匹配到系统中的控件类型";
+ countError ++;
+ }
+ }
+ configDataList.add(configDataEO);
+ }
+
+ if (countError > 0) {
+ stringMessage.add(errorMsg);
+ }
+
+ }
+ Map map = new HashMap();
+ if (stringMessage.isEmpty()) {
+ map.put("result", true);
+ map.put("configDataList", configDataList);
+ map.put("notImportNioNumberList", notImportNioNumberList);
+ map.put("message", "");
+ } else {
+ map.put("result", false);
+ String html = "";
+ for (String message : stringMessage) {
+ html += message + "";
+ }
+ map.put("message", html);
+ }
+ return map;
+
+ }
+
+ private Map validateFile(String configName, String unzipfilepath, String value, String mustInput, String cut) {
+ String errorMsg = "";
+ int countError= 0;
+ Map resultMap = new HashMap<>();
+
+ // 校验必填
+ if (IsMustEnum.YES.getValue().equals(mustInput) && StringUtils.isEmpty(value)) {
+ if(CutEnum.CN.getValue().equals(cut)) {
+ errorMsg += configName + "为必填项,不能为空;";
+ } else {
+ errorMsg += configName + " is mandatory and cannot be empty; ";
+ }
+ countError++;
+ }
+
+ String fileName = value;
+ if (StringUtils.isNotBlank(fileName)) {
+ fileName = fileName.replace(",", ",");
+ if (fileName.contains(",")) {
+ if (CutEnum.CN.getValue().equals(cut)) {
+ errorMsg += "附件模板只能上传一个文件;";
+ } else {
+ errorMsg += "File template only can upload one; ";
+ }
+ }
+ List nowFileList = FileUnZip.readFileByFilename(unzipfilepath, fileName, null, null, null, null, null);
+// List nowFileList = FileUnZip.readFileByFilename(filepath, fileName);
+ if (nowFileList.size() == 0) {
+ if (CutEnum.CN.getValue().equals(cut)) {
+ errorMsg += "附件模板压缩包中没有" + fileName + "文件; ";
+ } else {
+ errorMsg += "File template " + fileName + "isn't present in the cabinet; ";
+ }
+ countError++;
+ }
+ }
+
+ resultMap.put("errorMsg", errorMsg);
+ resultMap.put("countError", countError);
+ return resultMap;
+ }
+
+ private Map validatePull(String configName, String controlValues, String value, String mustInput, Boolean isSingle, String cut) {
+ String errorMsg = "";
+ int countError= 0;
+ List controlValueList = Arrays.asList(controlValues.replaceAll(",", ",").split(","));
+ Map resultMap = new HashMap<>();
+// StringBuilder newValue = new StringBuilder();
+
+ // 校验必填
+ if (IsMustEnum.YES.getValue().equals(mustInput) && StringUtils.isEmpty(value)) {
+ if(CutEnum.CN.getValue().equals(cut)) {
+ errorMsg += configName + "为必填项,不能为空;";
+ } else {
+ errorMsg += configName + " is mandatory and cannot be empty; ";
+ }
+ countError++;
+ }
+
+ if (StringUtils.isNotEmpty(value)) {
+ //判断是否是单选
+ if (isSingle) {
+ if (StringUtils.isNotBlank(value) && (value.contains("!") ||value.contains("!"))) {
+ if (CutEnum.CN.getValue().equals(cut)) {
+ errorMsg += configName + "为单选项;";
+ } else {
+ errorMsg += configName + " is single type; ";
+ }
+ countError++;
+ } else {
+ // 判断是否符合备选值
+ if (!controlValueList.contains(value)) {
+ if (CutEnum.CN.getValue().equals(cut)) {
+ errorMsg += configName + "下拉单选中的" + value + "不正确;";
+ } else {
+ errorMsg += configName + " " + value + " is not correct; ";
+ }
+ countError++;
+ }
+ }
+ } else {
+ // 判断是否符合备选值
+ value = value.replaceAll("!", "!");
+ List valueList = Arrays.asList(value.split("!"));
+ for (String v : valueList) {
+ if (!controlValueList.contains(v)) {
+ if (CutEnum.CN.getValue().equals(cut)) {
+ errorMsg += configName + "下拉多选中的" + value + "不正确;";
+ } else {
+ errorMsg += configName + " " + value + " is not correct; ";
+ }
+ countError++;
+ }
+// else {
+//
+// newValue.append(v).append(",");
+// }
+ }
+ }
+ }
+
+// resultMap.put("value", newValue.toString());
+ resultMap.put("errorMsg", errorMsg);
+ resultMap.put("countError", countError);
+ return resultMap;
+ }
+
+ private Map validateText(String configName, String controlVerify, String value, String mustInput, String dbLength, String cut) {
+ String errorMsg = "";
+ int countError= 0;
+ Map resultMap = new HashMap<>();
+
+ // 校验必填
+ if (IsMustEnum.YES.getValue().equals(mustInput) && StringUtils.isEmpty(value)) {
+ if(CutEnum.CN.getValue().equals(cut)) {
+ errorMsg += configName + "为必填项,不能为空;";
+ } else {
+ errorMsg += configName + " is mandatory and cannot be empty; ";
+ }
+ countError++;
+ }
+
+ // 校验长度
+ if (StringUtils.isNotBlank(value) && value.length() > Long.parseLong(dbLength)) {
+ if(CutEnum.CN.getValue().equals(cut)) {
+ errorMsg += configName + "不能超过" + dbLength + "个字符;";
+ } else {
+ errorMsg += configName + " can not be more than " + dbLength + " char; ";
+ }
+ countError++;
+ }
+
+ if (StringUtils.isNotEmpty(value)) {
+ String regex = "";
+ Boolean result = false;
+ Boolean flag = false;
+ if (ControlVerifyEnum.NULL.getValue().equals(controlVerify)) {
+ result = true;
+
+ } else if (ControlVerifyEnum.CHINESE.getValue().equals(controlVerify)) {
+ regex = "^[\\u4e00-\\u9fa5]{0,}$";
+ result = value.matches(regex);
+
+ } else if (ControlVerifyEnum.POSITIVE_INTEGER.getValue().equals(controlVerify)) {
+ regex = "^[0-9]*$";
+ result = value.matches(regex);
+
+ } else if (ControlVerifyEnum.POSITIVE_FLOAT.getValue().equals(controlVerify)) {
+ regex = "^[1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*$ 或 ^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$";
+ result = value.matches(regex);
+
+ } else if (ControlVerifyEnum.INTEGER_DECIMAL.getValue().equals(controlVerify)) {
+ regex = "^(\\-|\\+)?\\d+(\\.\\d+)?$";
+ result = value.matches(regex);
+
+ } else if (ControlVerifyEnum.DECIMAL_ONE.getValue().equals(controlVerify)) {
+ regex = "^(\\-)?\\d+(\\.\\d{1})$";
+ result = value.matches(regex);
+
+ } else if (ControlVerifyEnum.DECIMAL_TWO.getValue().equals(controlVerify)) {
+ regex = "^(\\-)?\\d+(\\.\\d{2})$";
+ result = value.matches(regex);
+
+ } else if (ControlVerifyEnum.DECIMAL_THREE.getValue().equals(controlVerify)) {
+ regex = "^(\\-)?\\d+(\\.\\d{3})$";
+ result = value.matches(regex);
+
+ } else if (ControlVerifyEnum.DECIMAL_FOUR.getValue().equals(controlVerify)) {
+ regex = "^(\\-)?\\d+(\\.\\d{4})$";
+ result = value.matches(regex);
+
+ } else {
+ flag = true;
+ }
+
+ if (CutEnum.EN.getValue().equals(cut)) {
+ if (flag) {
+ errorMsg += configName + " did not match the Validate Component in the system; ";
+ countError++;
+ } else {
+ if (!result) {
+ errorMsg += configName + " Validate Component is wrong; ";
+ countError++;
+ }
+ }
+
+ } else {
+ if (flag) {
+ errorMsg += configName + "未匹配到系统中的控件校验;";
+ countError++;
+ } else {
+ if (!result) {
+ errorMsg += configName + "文本的控件校验不正确;";
+ countError++;
+ }
+ }
+ }
+ }
+
+ resultMap.put("errorMsg", errorMsg);
+ resultMap.put("countError", countError);
+ return resultMap;
+ }
/**
* 实体对象转成Map
* @param obj 实体对象
@@ -2753,4 +4240,153 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("state", ManifestStateEnum.COLLECTING.getValue());
+ List manifestEOS = paramsManifestEOService.list(queryWrapper);
+ for (ParamsManifestEO manifestEO : manifestEOS) {
+ //项目名称
+ ParamsManifestVO projectInfo = paramsManifestEOService.getProjectById(manifestEO.getProjectId());
+ if (ObjectUtils.isNotEmpty(projectInfo)) {
+ //url
+ String urlParamsStr = parseUrlParams(manifestEO);
+ String hrefFeishu = backUrl + "/ParameterItemCollection" + urlParamsStr;
+ //查出对应清单
+ List collectManifestEOS = paramsCollectManifestEOMapper.queryByParamManifestId(manifestEO.getId());
+ Map> seven = new HashMap<>();
+ Map> three = new HashMap<>();
+ Map> today = new HashMap<>();
+ for (ParamsCollectManifestEO collectManifestEO : collectManifestEOS) {
+ String thirdId = null;
+ if (CollectManifestStateEnum.WAIT_SDT.getValue().equals(collectManifestEO.getState())
+ ||CollectManifestStateEnum.DRE_BACK.getValue().equals(collectManifestEO.getState())) {
+ //工程接口人
+ if (ObjectUtils.isNotEmpty(collectManifestEO.getSdt())) {
+ SysUser sdt = sysUserService.getUserByName(collectManifestEO.getSdt());
+ if (ObjectUtils.isNotEmpty(sdt)) {
+ thirdId = sdt.getThirdId();
+ }
+ }
+
+ } else if (CollectManifestStateEnum.WAIT_FILL.getValue().equals(collectManifestEO.getState())
+ ||CollectManifestStateEnum.CERT_BACK.getValue().equals(collectManifestEO.getState())) {
+ //填写人
+ if (ObjectUtils.isNotEmpty(collectManifestEO.getDre())) {
+ SysUser dre = sysUserService.getUserByName(collectManifestEO.getDre());
+ if (ObjectUtils.isNotEmpty(dre)) {
+ thirdId = dre.getThirdId();
+ }
+ }
+ }
+ //截止时间
+ if (ObjectUtils.isNotEmpty(thirdId) && ObjectUtils.isNotEmpty(collectManifestEO.getDeadline())) {
+ String deadline =sdf.format(collectManifestEO.getDeadline());
+ //判断日期
+ int days = 0;
+ try {
+ days = (int) (sdf.parse(deadline).getTime() - sdf.parse(now).getTime()) / (24 * 60 * 60 * 1000);
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new JeroBootException("时间获取失败");
+ }
+ if (days == 7) {
+ deadlineDateMap(seven, collectManifestEO, thirdId);
+ } else if (days == 3) {
+ deadlineDateMap(three, collectManifestEO, thirdId);
+ } else if (now.equals(deadline)) {
+ deadlineDateMap(today, collectManifestEO, thirdId);
+ }
+
+ }
+ }
+
+ String title = MessageType2Enum.HOMO_PARAMETER_COLLECTION.getCn() + "/" + MessageType2Enum.HOMO_PARAMETER_COLLECTION.getEn();
+ String cnContentLower = "项目: " + projectInfo.getProjectName() +
+ "\n发起人: 系统通知";
+ String enContentLower = "Project: " + projectInfo.getProjectName() +
+ "\nInitiator: " + MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName();
+ if (!seven.isEmpty()) {
+ for (String key : seven.keySet()) {
+ String[] thirds = new String[1];
+ thirds[0] = key;
+ List stringList = seven.get(key);
+ String join = StringUtils.join(stringList, ",");
+ try {
+ FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo();
+ feishuMsgVo.setTitle(title);
+ feishuMsgVo.setCnContentUpper("您参与填写的参数"+ join +",还有7天到期,请及时查看处理");
+ feishuMsgVo.setCnContentLower(cnContentLower);
+ feishuMsgVo.setEnContentUpper("The parameter "+ join +" you filled in will expire in 7 days. Please check and address it in a timely manner");
+ feishuMsgVo.setEnContentLower(enContentLower);
+ feishuMsgVo.setUrl(hrefFeishu);
+ feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); // 颜色
+ feishuService.sendCard(thirds, feishuMsgVo);
+ } catch (IOException e) {
+ log.error("飞书消息推送失败");
+ }
+ }
+ }
+ if (!three.isEmpty()) {
+ for (String key : three.keySet()) {
+ String[] thirds = new String[1];
+ thirds[0] = key;
+ List stringList = three.get(key);
+ String join = StringUtils.join(stringList, ",");
+ try {
+ FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo();
+ feishuMsgVo.setTitle(title);
+ feishuMsgVo.setCnContentUpper("您参与填写的参数"+ join +",还有3天到期,请及时查看处理");
+ feishuMsgVo.setCnContentLower(cnContentLower);
+ feishuMsgVo.setEnContentUpper("The parameter "+ join +" you filled in will expire in 3 days. Please check and address it in a timely manner");
+ feishuMsgVo.setEnContentLower(enContentLower);
+ feishuMsgVo.setUrl(hrefFeishu);
+ feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); // 颜色
+ feishuService.sendCard(thirds, feishuMsgVo);
+ } catch (IOException e) {
+ log.error("飞书消息推送失败");
+ }
+ }
+ }
+ if (!today.isEmpty()) {
+ for (String key : today.keySet()) {
+ String[] thirds = new String[1];
+ thirds[0] = key;
+ List stringList = today.get(key);
+ String join = StringUtils.join(stringList, ",");
+ try {
+ FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo();
+ feishuMsgVo.setTitle(title);
+ feishuMsgVo.setCnContentUpper("您参与填写的参数"+ join +",将于今天到期,请及时查看处理");
+ feishuMsgVo.setCnContentLower(cnContentLower);
+ feishuMsgVo.setEnContentUpper("The parameter "+ join +" you filled in will expire today. Please check and address it in a timely manner");
+ feishuMsgVo.setEnContentLower(enContentLower);
+ feishuMsgVo.setUrl(hrefFeishu);
+ feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); // 颜色
+ feishuService.sendCard(thirds, feishuMsgVo);
+ } catch (IOException e) {
+ log.error("飞书消息推送失败");
+ }
+ }
+ }
+ }
+ }
+
+ }
+
+ private void deadlineDateMap(Map> today, ParamsCollectManifestEO collectManifestEO, String thirdId) {
+ List stringList = today.get(thirdId);
+ if (ObjectUtils.isEmpty(stringList)) {
+ stringList = new ArrayList<>();
+ stringList.add("NIO-" + collectManifestEO.getNioNumber());
+ today.put(thirdId, stringList);
+ } else {
+ stringList.add("NIO-" + collectManifestEO.getNioNumber());
+ }
+ }
}
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/impl/ParamsCollectManifestHistoryEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/impl/ParamsCollectManifestHistoryEOServiceImpl.java
index 87a0fd9e8..c57b65ae3 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/impl/ParamsCollectManifestHistoryEOServiceImpl.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/impl/ParamsCollectManifestHistoryEOServiceImpl.java
@@ -524,7 +524,7 @@ public class ParamsCollectManifestHistoryEOServiceImpl extends ServiceImpl paramsConfigEOList = paramsConfigVO.getParamsConfigEOList();
+ int count = (int) paramsConfigEOList.stream().map(ParamsConfigEO::getConfigName).distinct().count();
+ if (count < paramsConfigEOList.size()) {
+ if (CutEnum.CN.getValue().equals(paramsConfigVO.getCut())) {
+ throw new JeroBootException("配置名称不能重复!");
+ } else {
+ throw new JeroBootException("Configuration Name cannot be duplicated!");
+ }
+ }
int ind = 1;
List addConfigList = new ArrayList<>(); // 新增的配置
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/impl/ParamsManifestEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/impl/ParamsManifestEOServiceImpl.java
index 7ebdaab76..90ac5c6ba 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/impl/ParamsManifestEOServiceImpl.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/service/impl/ParamsManifestEOServiceImpl.java
@@ -187,6 +187,8 @@ public class ParamsManifestEOServiceImpl extends ServiceImpl> listAll = paramsCollectManifestEOMapper.listInfoForExport(paramsCollectManifestEO);
+ List> listAll = paramsCollectManifestEOMapper.listInfoForExport(paramsCollectManifestEO, null);
// 循环责任领域,计算每个责任领域中的四种状态数据
for (DictModel item : dutyTerritoryDictList) {
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/task/ScheduledTask.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/task/ScheduledTask.java
new file mode 100644
index 000000000..91fb719d8
--- /dev/null
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/task/ScheduledTask.java
@@ -0,0 +1,30 @@
+package com.jero.modules.cert.collect.task;
+
+import com.jero.modules.cert.collect.service.IParamsCollectManifestEOService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+@Component
+@Slf4j
+public class ScheduledTask {
+
+ @Autowired
+ private IParamsCollectManifestEOService paramsCollectManifestEOServicea;
+
+ /**
+ * 监控参数收集任务的截止时间,并根据时间段发送飞书
+ */
+ //@Scheduled(cron = "0 30 14 * * ?")
+ @Scheduled(cron = "0 0 0 */1 * ?")
+ public void checkTime() {
+ log.info("-----checkDeadline-----begin-----------");
+
+ paramsCollectManifestEOServicea.checkDeadline();
+
+ log.info("-----checkDeadline------end-----------");
+ }
+
+
+}
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/vo/ParamsManifestVO.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/vo/ParamsManifestVO.java
index 584936f61..1ffbdaf53 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/vo/ParamsManifestVO.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/collect/vo/ParamsManifestVO.java
@@ -24,4 +24,10 @@ public class ParamsManifestVO {
private String ids;
private String cut;
private String sourceManifestId;
+
+ //相关项目版本
+ private String projectVersion;
+
+ //说明
+ private String explanation;
}
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/report/service/impl/ParamsReportDetailEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/report/service/impl/ParamsReportDetailEOServiceImpl.java
index 3ecc063ea..9528cf673 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/report/service/impl/ParamsReportDetailEOServiceImpl.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/report/service/impl/ParamsReportDetailEOServiceImpl.java
@@ -1263,6 +1263,9 @@ public class ParamsReportDetailEOServiceImpl extends ServiceImpl configIdList = Arrays.asList(paramsReportDetailVO.getConfigIds().split(",")); // 需要导出的配置列
List> dataList = paramsReportDetailEOMapper.listInfoForExport(idList, paramsReportDetailVO); // 查询需要导出的数据
+ dataList = dataList.stream().collect(Collectors.collectingAndThen(
+ Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(p -> (String) p.get("id")))),
+ ArrayList::new)); // 去重
List paramsConfigEOList = paramsReportConfigEOService.queryList(paramsReportDetailVO.getParamsManifestId()); // 查询所有配置列
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/template/enums/ControlTypeEnum.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/template/enums/ControlTypeEnum.java
index 9304ce180..a6948d07d 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/template/enums/ControlTypeEnum.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/template/enums/ControlTypeEnum.java
@@ -70,4 +70,18 @@ public enum ControlTypeEnum {
}
return map;
}
+
+ public static Map toMapForExport(String cut){
+ Map map = new HashMap<>();
+ if (CutEnum.CN.getValue().equals(cut)) {
+ for (ControlTypeEnum controlTypeEnum : ControlTypeEnum.values()) {
+ map.put(controlTypeEnum.getValue(), controlTypeEnum.getName());
+ }
+ } else if (CutEnum.EN.getValue().equals(cut)) {
+ for (ControlTypeEnum controlTypeEnum : ControlTypeEnum.values()) {
+ map.put(controlTypeEnum.getValue(), controlTypeEnum.getEnName());
+ }
+ }
+ return map;
+ }
}
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/template/enums/ControlVerifyEnum.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/template/enums/ControlVerifyEnum.java
index 8bb6ccc20..d51ff4bef 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/template/enums/ControlVerifyEnum.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/template/enums/ControlVerifyEnum.java
@@ -68,4 +68,18 @@ public enum ControlVerifyEnum {
}
return map;
}
+
+ public static Map toMapForExport(String cut){
+ Map map = new HashMap<>();
+ if (CutEnum.CN.getValue().equals(cut)) {
+ for (ControlVerifyEnum controlVerifyEnum : ControlVerifyEnum.values()) {
+ map.put(controlVerifyEnum.getValue(), controlVerifyEnum.getName());
+ }
+ } else if (CutEnum.EN.getValue().equals(cut)) {
+ for (ControlVerifyEnum controlVerifyEnum : ControlVerifyEnum.values()) {
+ map.put(controlVerifyEnum.getValue(), controlVerifyEnum.getEnName());
+ }
+ }
+ return map;
+ }
}
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/template/enums/ParamsIsMustEnum.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/template/enums/ParamsIsMustEnum.java
index 5c8ea1caf..630579765 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/template/enums/ParamsIsMustEnum.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/cert/template/enums/ParamsIsMustEnum.java
@@ -62,4 +62,18 @@ public enum ParamsIsMustEnum {
return map;
}
+ public static Map toMapForExport(String cut){
+ Map map = new HashMap<>();
+ if (CutEnum.CN.getValue().equals(cut)) {
+ for (ParamsIsMustEnum paramsIsMustEnum : ParamsIsMustEnum.values()) {
+ map.put(paramsIsMustEnum.getValue(), paramsIsMustEnum.getName());
+ }
+ } else if (CutEnum.EN.getValue().equals(cut)) {
+ for (ParamsIsMustEnum paramsIsMustEnum : ParamsIsMustEnum.values()) {
+ map.put(paramsIsMustEnum.getValue(), paramsIsMustEnum.getEnName());
+ }
+ }
+ return map;
+ }
+
}
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/compare/entity/SarFileCompareResultVO.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/compare/entity/SarFileCompareResultVO.java
index 9236eebf8..c517ef2bc 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/compare/entity/SarFileCompareResultVO.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/compare/entity/SarFileCompareResultVO.java
@@ -8,8 +8,10 @@ public class SarFileCompareResultVO {
private String infoId;
private String serialNumberLeft;
private String fileNameLeft;
+ private String fileIdLeft;
private String serialNumberRight;
private String fileNameRight;
+ private String fileIdRight;
private List resList;
private String comments;
@@ -78,4 +80,20 @@ public class SarFileCompareResultVO {
public void setComments(String comments) {
this.comments = comments;
}
+
+ public String getFileIdLeft() {
+ return fileIdLeft;
+ }
+
+ public void setFileIdLeft(String fileIdLeft) {
+ this.fileIdLeft = fileIdLeft;
+ }
+
+ public String getFileIdRight() {
+ return fileIdRight;
+ }
+
+ public void setFileIdRight(String fileIdRight) {
+ this.fileIdRight = fileIdRight;
+ }
}
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/compare/enums/AssessConsistencyEnum.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/compare/enums/AssessConsistencyEnum.java
new file mode 100644
index 000000000..8e5eeeab6
--- /dev/null
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/compare/enums/AssessConsistencyEnum.java
@@ -0,0 +1,21 @@
+package com.jero.modules.compare.enums;
+
+public enum AssessConsistencyEnum {
+
+ SAME("一致"),
+ DIFFERENT("差异");
+
+ private String value;
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ AssessConsistencyEnum(String value) {
+ this.value = value;
+ }
+}
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/compare/service/impl/SarFileCompareItemCommentServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/compare/service/impl/SarFileCompareItemCommentServiceImpl.java
index c13dd7034..6558c077b 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/compare/service/impl/SarFileCompareItemCommentServiceImpl.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/compare/service/impl/SarFileCompareItemCommentServiceImpl.java
@@ -2,23 +2,26 @@ package com.jero.modules.compare.service.impl;
import com.aliyuncs.utils.IOUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.constant.enums.CutEnum;
import com.jero.common.exception.JeroBootException;
import com.jero.common.util.oss.CosBootUtil;
import com.jero.modules.compare.entity.*;
+import com.jero.modules.compare.enums.AssessConsistencyEnum;
import com.jero.modules.compare.mapper.SarFileCompareItemCommentMapper;
import com.jero.modules.compare.service.ISarFileCompareInfoService;
import com.jero.modules.compare.service.ISarFileCompareItemCommentService;
import com.jero.modules.compare.service.ISarFileCompareItemService;
+import com.jero.modules.compare.utils.ConvertHtml2Excel;
import com.jero.modules.system.util.StringUtils;
+import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
-import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
-import org.apache.poi.hssf.usermodel.HSSFPatriarch;
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.common.usermodel.HyperlinkType;
+import org.apache.poi.hssf.usermodel.*;
+import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
-import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@@ -27,6 +30,7 @@ import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
+import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.nio.file.Files;
@@ -34,8 +38,7 @@ import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.text.SimpleDateFormat;
import java.util.*;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
+import java.util.List;
/**
* @Description: 文档对比信息条款评论表
@@ -44,6 +47,7 @@ import java.util.regex.Pattern;
* @Version: V1.0
*/
@Service
+@Slf4j
public class SarFileCompareItemCommentServiceImpl extends ServiceImpl implements ISarFileCompareItemCommentService {
@Autowired
@@ -100,7 +104,29 @@ public class SarFileCompareItemCommentServiceImpl extends ServiceImpl left = new QueryWrapper<>();
+ left.eq("items_id_left", itemsIdLeft);
+ if (baseMapper.selectCount(left) == 0) {
+ SarFileCompareItem sarFileCompareItem = SarFileCompareItemServiceImpl.queryById(itemsIdLeft);
+ sarFileCompareItem.setReviewed(0);
+ SarFileCompareItemServiceImpl.saveOrUpdate(sarFileCompareItem);
+ }
+ QueryWrapper right = new QueryWrapper<>();
+ right.eq("items_id_right", itemsIdRight);
+ if (baseMapper.selectCount(right) == 0) {
+ SarFileCompareItem sarFileCompareItem = SarFileCompareItemServiceImpl.queryById(itemsIdRight);
+ sarFileCompareItem.setReviewed(0);
+ SarFileCompareItemServiceImpl.saveOrUpdate(sarFileCompareItem);
+ }
+
}
/**
@@ -142,8 +168,10 @@ public class SarFileCompareItemCommentServiceImpl extends ServiceImpl list = queryListByInfoId(infoId,comment);
@@ -179,7 +207,11 @@ public class SarFileCompareItemCommentServiceImpl extends ServiceImpl queryListByInfoId(String infoId,String comment) {
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
if (ObjectUtils.isNotEmpty(comment)) {
- queryWrapper.eq(SarFileCompareItemComment::getComment, comment);
+ if (AssessConsistencyEnum.SAME.getValue().equals(comment)) {
+ queryWrapper.eq(SarFileCompareItemComment::getComment, comment);
+ } else if (AssessConsistencyEnum.DIFFERENT.getValue().equals(comment)) {
+ queryWrapper.ne(SarFileCompareItemComment::getComment, AssessConsistencyEnum.SAME.getValue());
+ }
}
queryWrapper.eq(SarFileCompareItemComment::getInfoId, infoId);
queryWrapper.orderBy(true, true, SarFileCompareItemComment::getCreateTime);
@@ -200,7 +232,11 @@ public class SarFileCompareItemCommentServiceImpl extends ServiceImpl mergeCells = new ArrayList<>();
@@ -270,76 +314,39 @@ public class SarFileCompareItemCommentServiceImpl extends ServiceImpl", "").replace("
", "\r\n");
- BufferedImage bufferImg = null;
- ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
- addImgdata(text,request.getSession());
- String rowDataAndPath = (String) request.getSession().getAttribute("txtAndImg");
- leftSplit = rowDataAndPath.split("---");
- if (leftSplit.length > 1) {
- for (int j = 0; j < leftSplit.length; j++) {
- if (j > 0) {
- Row row2 = sheet.createRow(j + i);
- if (leftSplit[j].contains(".jpg") || leftSplit[j].contains(".png")) {
- row2.setHeight((short) 5000); //设置行高
- //先将图片下载到本地
- String fileLastName = leftSplit[j].substring(leftSplit[j].lastIndexOf("/") + 1);
- if (CosBootUtil.doesObjectExist(leftSplit[j])) {
- try (InputStream in = CosBootUtil.download(leftSplit[j])) {
- copyFile2(in, dir + File.separator + fileLastName);
- } catch (IOException e) {
- e.printStackTrace();
- log.error(e.getMessage(), e);
+ if (StringUtils.isNotEmpty(text)){
+ log.info("-------------- 开始开始拆分左侧图片、文字、表格 :" + text + "-----------------");
+ String rowDataAndPath = getSplitContent(request, text);
+ log.info("-------------- 左侧图片、文字、表格 拆分成功 :"+ rowDataAndPath +"-----------------");
+ leftSplit = rowDataAndPath.split("---");
+ if (leftSplit.length > 1) {
+ for (int j = 0; j < leftSplit.length; j++) {
+ if (ObjectUtils.isNotEmpty(leftSplit[j])) {
+ ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
+ if (j > 0) {
+ Row row2 = sheet.getRow(j + i);
+ if (ObjectUtils.isEmpty(row2)) {
+ row2 = sheet.createRow(j + i);
}
+ log.info("-------------- 开始开始处理左侧图片、表格 -----------------");
+ handleSpecificData(workbook, dir, patriarch, cellStyleLink, byteArrayOut, row2, i, j, leftSplit[j], 3);
+ log.info("-------------- 左侧图片、表格 处理成功 -----------------");
+ } else {
+ log.info("-------------- 开始开始处理左侧图片、表格 -----------------");
+ handleSpecificData(workbook, dir, patriarch, cellStyleLink, byteArrayOut, row, i, j, leftSplit[j], 3);
+ log.info("-------------- 左侧图片、表格 处理成功 -----------------");
}
- File file = new File(dir + File.separator + fileLastName);
- if (file.exists()) {
- bufferImg = ImageIO.read(file);
- ImageIO.write(bufferImg, "jpg", byteArrayOut);
- //anchor主要用于设置图片的属性
- HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 600, 200, (short) 3, j + i, (short) 3, j + i);
- patriarch.createPicture(anchor, workbook.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));
-
- }
- } else {
- row2.createCell(3).setCellValue(leftSplit[j]);
- }
- } else {
- if (leftSplit[j].contains(".jpg") || leftSplit[j].contains(".png")) {
- row.setHeight((short) 5000); //设置行高
- //先将图片下载到本地
- String fileLastName = leftSplit[j].substring(leftSplit[j].lastIndexOf("/") + 1);
- if (CosBootUtil.doesObjectExist(leftSplit[j])) {
- try (InputStream in = CosBootUtil.download(leftSplit[j])) {
- copyFile2(in, dir + File.separator + fileLastName);
- } catch (IOException e) {
- e.printStackTrace();
- log.error(e.getMessage(), e);
- }
- }
- File file = new File(dir + File.separator + fileLastName);
- if (file.exists()) {
- bufferImg = ImageIO.read(file);
- ImageIO.write(bufferImg, "jpg", byteArrayOut);
- //anchor主要用于设置图片的属性
- HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 600, 200, (short) 3, j + i, (short) 3, j + i);
- patriarch.createPicture(anchor, workbook.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));
-
- }
- } else {
- row.createCell(3).setCellValue(leftSplit[j]);
}
}
+ sarFileCompareExcelMergeCell.setLeftStart(i);
+ sarFileCompareExcelMergeCell.setLeftEnd(i + leftSplit.length - 1);
+ sarFileCompareExcelMergeCell.setRightStart(0);
+ sarFileCompareExcelMergeCell.setRightEnd(0);
+ mergeCells.add(sarFileCompareExcelMergeCell);
+ } else {
+ row.createCell(3).setCellValue(rowDataAndPath);
}
- sarFileCompareExcelMergeCell.setLeftStart(i);
- sarFileCompareExcelMergeCell.setLeftEnd(i + leftSplit.length - 1);
- sarFileCompareExcelMergeCell.setRightStart(0);
- sarFileCompareExcelMergeCell.setRightEnd(0);
- mergeCells.add(sarFileCompareExcelMergeCell);
- } else {
- row.createCell(3).setCellValue(rowDataAndPath);
}
- row.setRowStyle(cellStyle);
}
}
String itemIdRight = itemComment.getItemsIdRight();
@@ -349,84 +356,50 @@ public class SarFileCompareItemCommentServiceImpl extends ServiceImpl", "").replace("", "\r\n");
- BufferedImage bufferImg = null;
- ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
- addImgdata(text,request.getSession());
- String rowDataAndPath = (String) request.getSession().getAttribute("txtAndImg");
- rightSplit = rowDataAndPath.split("---");
- if (rightSplit.length > 1) {
- for (int j = 0; j < rightSplit.length; j++) {
- if (j > 0) {
- Row row2 = sheet.createRow(j + i);
- if (rightSplit[j].contains(".jpg") || rightSplit[j].contains(".png")) {
- row2.setHeight((short) 5000); //设置行高
- //先将图片下载到本地
- String fileLastName = rightSplit[j].substring(rightSplit[j].lastIndexOf("/") + 1);
- if (CosBootUtil.doesObjectExist(rightSplit[j])) {
- try (InputStream in = CosBootUtil.download(rightSplit[j])) {
- copyFile2(in, dir + File.separator + fileLastName);
- } catch (IOException e) {
- e.printStackTrace();
- log.error(e.getMessage(), e);
+ if (StringUtils.isNotEmpty(text)) {
+ log.info("-------------- 开始开始拆分右侧图片、文字、表格 :"+ text +" -----------------");
+ String rowDataAndPath = getSplitContent(request, text);
+ log.info("-------------- 右侧图片、文字、表格 拆分成功 :"+ rowDataAndPath +" -----------------");
+ rightSplit = rowDataAndPath.split("---");
+ if (rightSplit.length > 1) {
+ for (int j = 0; j < rightSplit.length; j++) {
+ if (ObjectUtils.isNotEmpty(rightSplit[j])) {
+ ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
+ if (j > 0) {
+ Row row2 = sheet.getRow(j + i);
+ if (ObjectUtils.isEmpty(row2)) {
+ row2 = sheet.createRow(j + i);
}
+ log.info("-------------- 开始处理右侧图片、表格 -----------------");
+ handleSpecificData(workbook, dir, patriarch, cellStyleLink, byteArrayOut, row2, i, j, rightSplit[j], 7);
+ log.info("-------------- 右侧图片、表格 处理成功 -----------------");
+ } else {
+ log.info("-------------- 开始处理右侧图片、表格 -----------------");
+ handleSpecificData(workbook, dir, patriarch, cellStyleLink, byteArrayOut, row, i, j, rightSplit[j], 7);
+ log.info("-------------- 右侧图片、表格 处理成功 -----------------");
}
- File file = new File(dir + File.separator + fileLastName);
- if (file.exists()) {
- bufferImg = ImageIO.read(file);
- ImageIO.write(bufferImg, "jpg", byteArrayOut);
- //anchor主要用于设置图片的属性
- HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 600, 200, (short) 3, j + i, (short) 3, j + i);
- patriarch.createPicture(anchor, workbook.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));
-
- }
- } else {
- row2.createCell(3).setCellValue(rightSplit[j]);
- }
- } else {
- if (rightSplit[j].contains(".jpg") || rightSplit[j].contains(".png")) {
- row.setHeight((short) 5000); //设置行高
- //先将图片下载到本地
- String fileLastName = rightSplit[j].substring(rightSplit[j].lastIndexOf("/") + 1);
- if (CosBootUtil.doesObjectExist(rightSplit[j])) {
- try (InputStream in = CosBootUtil.download(rightSplit[j])) {
- copyFile2(in, dir + File.separator + fileLastName);
- } catch (IOException e) {
- e.printStackTrace();
- log.error(e.getMessage(), e);
- }
- }
- File file = new File(dir + File.separator + fileLastName);
- if (file.exists()) {
- bufferImg = ImageIO.read(file);
- ImageIO.write(bufferImg, "jpg", byteArrayOut);
- //anchor主要用于设置图片的属性
- HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 600, 200, (short) 3, j + i, (short) 3, j + i);
- patriarch.createPicture(anchor, workbook.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));
-
- }
- } else {
- row.createCell(7).setCellValue(rightSplit[j]);
}
}
+ sarFileCompareExcelMergeCell.setRightStart(i);
+ sarFileCompareExcelMergeCell.setRightEnd(i + rightSplit.length - 1);
+ mergeCells.add(sarFileCompareExcelMergeCell);
+ } else {
+ row.createCell(7).setCellValue(rowDataAndPath);
}
- sarFileCompareExcelMergeCell.setRightStart(i);
- sarFileCompareExcelMergeCell.setRightEnd(i + rightSplit.length - 1);
- mergeCells.add(sarFileCompareExcelMergeCell);
- } else {
- row.createCell(7).setCellValue(rowDataAndPath);
}
- row.setRowStyle(cellStyle);
}
}
row.createCell(8).setCellValue(itemComment.getComment());
- for (int j = 0; j < 7; j++) {
+ row.setRowStyle(cellStyle);
+ for (int j = 0; j < 9; j++) {
Cell cell = row.getCell(j);
if (null != cell) {
cell.setCellStyle(cellStyle);
}
}
- i = i + leftSplit.length;
+ int left_length = ObjectUtils.isEmpty(leftSplit) ? 0 : leftSplit.length;
+ int right_length = ObjectUtils.isEmpty(rightSplit) ? 0 : rightSplit.length;
+ i = left_length > right_length ? i + left_length : i + right_length;
}
if (includeComments || StringUtils.isEmpty(selectIds)) {
Row row = sheet.createRow(i);
@@ -443,27 +416,41 @@ public class SarFileCompareItemCommentServiceImpl extends ServiceImpl mergeCellSet = new HashSet<>(mergeCells);
+ for (SarFileCompareExcelMergeCell mergeCell : mergeCellSet) {
+ Integer leftCount = 0;
+ if (ObjectUtils.isNotEmpty(mergeCell.getLeftEnd())&&ObjectUtils.isNotEmpty(mergeCell.getLeftStart())) {
+ leftCount = mergeCell.getLeftEnd() - mergeCell.getLeftStart() + 1;
+ }
+ Integer rightCount = 0;
+ if (ObjectUtils.isNotEmpty(mergeCell.getRightEnd())&&ObjectUtils.isNotEmpty(mergeCell.getRightStart())) {
+ rightCount = mergeCell.getRightEnd() - mergeCell.getRightStart() + 1;
+ }
Integer start = leftCount - rightCount >= 0 ? mergeCell.getLeftStart() : mergeCell.getRightStart();
+ log.info("-------------- 合并开始行数:" + start + " -----------------");
Integer end = leftCount - rightCount >= 0 ? mergeCell.getLeftEnd() : mergeCell.getRightEnd();
+ log.info("-------------- 合并结束行数: " + end + " -----------------");
//合并
- CellRangeAddress region0 = new CellRangeAddress(start, end, 0, 0);
- sheet.addMergedRegion(region0);
- CellRangeAddress region1 = new CellRangeAddress(start, end, 1, 1);
- sheet.addMergedRegion(region1);
- CellRangeAddress region2 = new CellRangeAddress(start, end, 2, 2);
- sheet.addMergedRegion(region2);
- CellRangeAddress region4 = new CellRangeAddress(start, end, 4, 4);
- sheet.addMergedRegion(region4);
- CellRangeAddress region5 = new CellRangeAddress(start, end, 5, 5);
- sheet.addMergedRegion(region5);
- CellRangeAddress region6 = new CellRangeAddress(start, end, 6, 6);
- sheet.addMergedRegion(region6);
- CellRangeAddress region7 = new CellRangeAddress(start, end, 7, 7);
- sheet.addMergedRegion(region7);
+ if (ObjectUtils.isNotEmpty(start)&&ObjectUtils.isNotEmpty(end)) {
+ CellRangeAddress region0 = new CellRangeAddress(start, end, 0, 0);
+ sheet.addMergedRegion(region0);
+ CellRangeAddress region1 = new CellRangeAddress(start, end, 1, 1);
+ sheet.addMergedRegion(region1);
+ CellRangeAddress region2 = new CellRangeAddress(start, end, 2, 2);
+ sheet.addMergedRegion(region2);
+ CellRangeAddress region4 = new CellRangeAddress(start, end, 4, 4);
+ sheet.addMergedRegion(region4);
+ CellRangeAddress region5 = new CellRangeAddress(start, end, 5, 5);
+ sheet.addMergedRegion(region5);
+ CellRangeAddress region6 = new CellRangeAddress(start, end, 6, 6);
+ sheet.addMergedRegion(region6);
+ CellRangeAddress region7 = new CellRangeAddress(start, end, 8, 8);
+ sheet.addMergedRegion(region7);
+ }
+
}
+ log.info("-------------- 单元格合并成功 -----------------");
}
@@ -471,6 +458,7 @@ public class SarFileCompareItemCommentServiceImpl extends ServiceImpl标签内容中的图片路径,并重新按顺序拼接
+ * 处理图片跟表格类型的数据
+ * @param workbook
+ * @param dir
+ * @param patriarch
+ * @param cellStyleLink
+ * @param byteArrayOut
+ * @param row
+ * @param i
+ * @param j
+ * @param text
+ * @param cellNum
+ * @throws IOException
+ */
+ private void handleSpecificData(Workbook workbook, String dir, HSSFPatriarch patriarch, CellStyle cellStyleLink, ByteArrayOutputStream byteArrayOut, Row row, int i, int j, String text, int cellNum) throws IOException {
+ if (text.contains("/upFiles")) {
+ row.setHeight((short) 3000); //设置行高
+ //先将图片下载到本地
+ log.info("-------------------------将图片下载到本地文件夹中----------------------------");
+ String fileLastName = text.substring(text.lastIndexOf("/") + 1);
+ if (CosBootUtil.doesObjectExist(text)) {
+ try (InputStream in = CosBootUtil.download(text)) {
+ copyFile2(in, dir + File.separator + fileLastName);
+ } catch (IOException e) {
+ e.printStackTrace();
+ log.error(e.getMessage(), e);
+ }
+ }
+ File file = new File(dir + File.separator + fileLastName);
+ log.info("-------------------------图片下载成功:"+ file.getAbsolutePath() +"----------------------------");
+ if (file.exists()) {
+ log.info("-------------------------将图片插入excel指定单元格中----------------------------");
+ BufferedImage bufferImg = ImageIO.read(file);
+ //获取文件后缀
+ String fileName = file.getName();
+ String formatName = fileName.substring(fileName.lastIndexOf(".") + 1);
+ //如果是jpg或者是jpeg,需要重画一下,否则会变色
+ if (formatName.equalsIgnoreCase("jpg") || formatName.equalsIgnoreCase("jpeg")) { //重画一下,要么会变色
+ BufferedImage tag;
+ tag = new BufferedImage(bufferImg.getWidth(), bufferImg.getHeight(), BufferedImage.TYPE_INT_BGR);
+ Graphics g = tag.getGraphics();
+ g.drawImage(bufferImg, 0, 0, null); // 绘制缩小后的图
+ g.dispose();
+ bufferImg = tag;
+ }
+ ImageIO.write(bufferImg, formatName, byteArrayOut);
+ //anchor主要用于设置图片的属性
+ HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 600, 200, (short) cellNum, j + i, (short) cellNum, j + i);
+ patriarch.createPicture(anchor, workbook.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));
+ log.info("-------------------------将图片插入成功----------------------------");
+ }
+ } else {
+ Cell cell = row.createCell(cellNum);
+ if (text.contains("") < 0) {
+ if (tableHtml.indexOf("") < 0) {
+ tableHtml = tableHtml.replaceFirst("", "
");
+ tableHtml = tableHtml.replaceFirst("
", "");
+ } else {
+ tableHtml = tableHtml.replaceFirst("", "");
+ tableHtml = tableHtml.replaceFirst("", "");
+ }
+ }
+ String cnt = "\n";
+ tableHtml = tableHtml.replaceAll("<[\\s]*?br[^>]*?>|<[\\s]*?\\/[\\s]*?br[\\s]*?>", cnt);
+ String tableSheetName = "表格" + System.currentTimeMillis();
+ ConvertHtml2Excel.table2Excel(tableHtml, (HSSFWorkbook) workbook, tableSheetName);
+ log.info("-------------------------表格生产完毕----------------------------");
+ //添加超链接
+ log.info("-------------------------开始添加超链接---------------------------");
+ CreationHelper createHelper = workbook.getCreationHelper();
+ Hyperlink hyperlink1 = createHelper.createHyperlink(HyperlinkType.DOCUMENT);
+ String tableName = "#\'" + tableSheetName + "\'!A1";
+ hyperlink1.setAddress(tableName);
+ cell.setHyperlink(hyperlink1);// 链接
+ cell.setCellStyle(cellStyleLink);
+ log.info("-------------------------超链接添加完毕---------------------------");
+ }
+
+ /**
+ * 获取文字、图片、表格分割后的内容
+ * @param request
* @param text
* @return
*/
- private void addImgdata(String text,HttpSession session) {
- if (text.contains("<") || text.contains(">")) {
- String txtLeft = text.substring(0, text.indexOf("<"));
- String txtRight = text.substring(text.indexOf(">") + 1);
- String img = text.substring(text.indexOf("<"), text.indexOf(">"));
- String path = img.substring(img.lastIndexOf("=") + 1, img.lastIndexOf("\""));
+ private String getSplitContent(HttpServletRequest request, String text) {
+ text = text.replace("", "").replace("
", "\r\n");
+ //分割图片
+ log.info("-------------------------开始分割文字与图片---------------------------");
+ splitImg(text, request.getSession());
+ log.info("-------------------------文字与图片分割完毕---------------------------");
+ //分割表格
+ log.info("-------------------------从剩余文字中开始分割表格---------------------------");
+ String txtAndImg = (String) request.getSession().getAttribute("txtAndImg");
+ txtAndImg = txtAndImg.replaceAll("table", "replaceTable");
+ splitTable(txtAndImg, request.getSession());
+ log.info("-------------------------表格分割完毕---------------------------");
+ return (String) request.getSession().getAttribute("textAndTableAndImg");
+ }
+
+ /**
+ * 分割表格
+ * @param textAndImg
+ * @param session
+ */
+ private void splitTable(String textAndImg,HttpSession session) {
+ if (textAndImg.contains("") + 14);
+ String table = textAndImg.substring(textAndImg.indexOf("")+14);
+ table = table.replaceAll("replaceTable", "table");
+ textAndImg = left + "---" + table + "---" + right;
+ splitTable(textAndImg, session);
+ } else {
+ session.setAttribute("textAndTableAndImg", textAndImg);
+ }
+ }
+
+ /**
+ * 分割图片
+ * @param text
+ * @param session
+ * @return
+ */
+ private void splitImg(String text,HttpSession session) {
+ if (text.contains("
") + 3);
+ String img = text.substring(text.indexOf("
"));
+ String path = img.substring(img.lastIndexOf("=") + 1)+"g";
text = txtLeft + "---" + path + "---" + txtRight;
- addImgdata(text, session);
+ splitImg(text, session);
} else {
session.setAttribute("txtAndImg", text);
}
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/compare/utils/ConvertHtml2Excel.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/compare/utils/ConvertHtml2Excel.java
new file mode 100644
index 000000000..db29bbb5c
--- /dev/null
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/compare/utils/ConvertHtml2Excel.java
@@ -0,0 +1,231 @@
+package com.jero.modules.compare.utils;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.math.NumberUtils;
+import org.apache.poi.hssf.usermodel.HSSFCell;
+import org.apache.poi.hssf.usermodel.HSSFCellStyle;
+import org.apache.poi.hssf.usermodel.HSSFFont;
+import org.apache.poi.hssf.usermodel.HSSFRow;
+import org.apache.poi.hssf.usermodel.HSSFSheet;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.hssf.util.HSSFCellUtil;
+import org.apache.poi.hssf.util.HSSFColor;
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.dom4j.Document;
+import org.dom4j.DocumentException;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
+
+
+/****
+ * html转excel
+ * @author user
+ *
+ */
+public class ConvertHtml2Excel {
+ /**
+ * html表格转excel
+ *
+ * @param tableHtml 如
+ *
+ * @return
+ */
+ public static void table2Excel(String tableHtml, HSSFWorkbook wb,String tableSheetName) {
+ HSSFSheet sheet = wb.createSheet(tableSheetName);
+ List crossRowEleMetaLs = new ArrayList();
+ int rowIndex = 0;
+ try {
+ Document data = DocumentHelper.parseText(tableHtml);
+ // 生成表头
+ Element thead = data.getRootElement().element("thead");
+ HSSFCellStyle titleStyle = getTitleStyle(wb);
+ int ls=0;//列数
+ if (thead != null) {
+ List trLs = thead.elements("tr");
+ for (Element trEle : trLs) {
+ HSSFRow row = sheet.createRow(rowIndex);
+ List thLs = trEle.elements("th");
+ ls=thLs.size();
+ makeRowCell(thLs, rowIndex, row, 0, titleStyle, crossRowEleMetaLs);
+ rowIndex++;
+ }
+ }
+ // 生成表体
+ Element tbody = data.getRootElement().element("tbody");
+ HSSFCellStyle contentStyle = getContentStyle(wb);
+ if (tbody != null) {
+ List trLs = tbody.elements("tr");
+ for (Element trEle : trLs) {
+ HSSFRow row = sheet.createRow(rowIndex);
+ List thLs = trEle.elements("th");
+ int cellIndex = makeRowCell(thLs, rowIndex, row, 0, titleStyle, crossRowEleMetaLs);
+ List tdLs = trEle.elements("td");
+ makeRowCell(tdLs, rowIndex, row, cellIndex, contentStyle, crossRowEleMetaLs);
+ rowIndex++;
+ }
+ }
+ // 合并表头
+ for (CrossRangeCellMeta crcm : crossRowEleMetaLs) {
+ sheet.addMergedRegion(new CellRangeAddress(crcm.getFirstRow(), crcm.getLastRow(), crcm.getFirstCol(), crcm.getLastCol()));
+ setRegionStyle(sheet, new CellRangeAddress(crcm.getFirstRow(), crcm.getLastRow(), crcm.getFirstCol(), crcm.getLastCol()),contentStyle);
+ }
+ for(int i=0;i tdLs, int rowIndex, HSSFRow row, int startCellIndex, HSSFCellStyle cellStyle,
+ List crossRowEleMetaLs) {
+ int i = startCellIndex;
+ for (int eleIndex = 0; eleIndex < tdLs.size(); i++, eleIndex++) {
+ int captureCellSize = getCaptureCellSize(rowIndex, i, crossRowEleMetaLs);
+ while (captureCellSize > 0) {
+ for (int j = 0; j < captureCellSize; j++) {// 当前行跨列处理(补单元格)
+ row.createCell(i);
+ i++;
+ }
+ captureCellSize = getCaptureCellSize(rowIndex, i, crossRowEleMetaLs);
+ }
+ Element thEle = tdLs.get(eleIndex);
+ String val = thEle.getTextTrim();
+ if (StringUtils.isBlank(val)) {
+ Element e = thEle.element("a");
+ if (e != null) {
+ val = e.getTextTrim();
+ }
+ }
+ HSSFCell c = row.createCell(i);
+ if (NumberUtils.isNumber(val)) {
+ c.setCellValue(Double.parseDouble(val));
+ c.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
+ } else {
+ c.setCellValue(val);
+ }
+ int rowSpan = NumberUtils.toInt(thEle.attributeValue("rowspan"), 1);
+ int colSpan = NumberUtils.toInt(thEle.attributeValue("colspan"), 1);
+ c.setCellStyle(cellStyle);
+ if (rowSpan > 1 || colSpan > 1) { // 存在跨行或跨列
+ crossRowEleMetaLs.add(new CrossRangeCellMeta(rowIndex, i, rowSpan, colSpan));
+ }
+ if (colSpan > 1) {// 当前行跨列处理(补单元格)
+ for (int j = 1; j < colSpan; j++) {
+ i++;
+ row.createCell(i);
+ }
+ }
+ }
+ return i;
+ }
+
+ /**
+ * 设置合并单元格的边框样式
+ *
+ * @param sheet
+ * @param region
+ * @param cs
+ */
+ public static void setRegionStyle(HSSFSheet sheet, CellRangeAddress region, HSSFCellStyle cs) {
+ for (int i = region.getFirstRow(); i <= region.getLastRow(); i++) {
+ HSSFRow row = HSSFCellUtil.getRow(i, sheet);
+ for (int j = region.getFirstColumn(); j <= region.getLastColumn(); j++) {
+ HSSFCell cell = HSSFCellUtil.getCell(row, (short) j);
+ cell.setCellStyle(cs);
+ }
+ }
+ }
+
+ /**
+ * 获得因rowSpan占据的单元格
+ *
+ * @param rowIndex 行号
+ * @param colIndex 列号
+ * @param crossRowEleMetaLs 跨行列元数据
+ * @return 当前行在某列需要占据单元格
+ */
+ private static int getCaptureCellSize(int rowIndex, int colIndex, List crossRowEleMetaLs) {
+ int captureCellSize = 0;
+ for (CrossRangeCellMeta crossRangeCellMeta : crossRowEleMetaLs) {
+ if (crossRangeCellMeta.getFirstRow() < rowIndex && crossRangeCellMeta.getLastRow() >= rowIndex) {
+ if (crossRangeCellMeta.getFirstCol() <= colIndex && crossRangeCellMeta.getLastCol() >= colIndex) {
+ captureCellSize = crossRangeCellMeta.getLastCol() - colIndex + 1;
+ }
+ }
+ }
+ return captureCellSize;
+ }
+
+ /**
+ * 获得标题样式
+ *
+ * @param workbook
+ * @return
+ */
+ private static HSSFCellStyle getTitleStyle(HSSFWorkbook workbook) {
+ short titlebackgroundcolor = HSSFColor.GREY_25_PERCENT.index;
+ short fontSize = 12;
+ String fontName = "宋体";
+ HSSFCellStyle style = workbook.createCellStyle();
+ style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
+ style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
+ style.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框
+ style.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框
+ style.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
+ style.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
+ style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
+ style.setFillForegroundColor(titlebackgroundcolor);// 背景色
+
+ HSSFFont font = workbook.createFont();
+ font.setFontName(fontName);
+ font.setFontHeightInPoints(fontSize);
+ font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
+ style.setFont(font);
+ return style;
+ }
+
+ /**
+ * 获得内容样式
+ *
+ * @param wb
+ * @return
+ */
+ private static HSSFCellStyle getContentStyle(HSSFWorkbook wb) {
+ short fontSize = 12;
+ String fontName = "宋体";
+ HSSFCellStyle style = wb.createCellStyle();
+ style.setBorderBottom((short) 1);
+ style.setBorderTop((short) 1);
+ style.setBorderLeft((short) 1);
+ style.setBorderRight((short) 1);
+ HSSFFont font = wb.createFont();
+ font.setFontName(fontName);
+ font.setFontHeightInPoints(fontSize);
+ style.setFont(font);
+ style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中
+ style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中
+
+ return style;
+ }
+}
+
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/compare/utils/CrossRangeCellMeta.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/compare/utils/CrossRangeCellMeta.java
new file mode 100644
index 000000000..acee632aa
--- /dev/null
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/compare/utils/CrossRangeCellMeta.java
@@ -0,0 +1,37 @@
+package com.jero.modules.compare.utils;
+
+public class CrossRangeCellMeta {
+
+ public CrossRangeCellMeta(int firstRowIndex, int firstColIndex, int rowSpan, int colSpan) {
+ super();
+ this.firstRowIndex = firstRowIndex;
+ this.firstColIndex = firstColIndex;
+ this.rowSpan = rowSpan;
+ this.colSpan = colSpan;
+ }
+
+ private int firstRowIndex;
+ private int firstColIndex;
+ private int rowSpan;// 跨越行数
+ private int colSpan;// 跨越列数
+
+ public int getFirstRow() {
+ return firstRowIndex;
+ }
+
+ public int getLastRow() {
+ return firstRowIndex + rowSpan - 1;
+ }
+
+ public int getFirstCol() {
+ return firstColIndex;
+ }
+
+ public int getLastCol() {
+ return firstColIndex + colSpan - 1;
+ }
+
+ public int getColSpan(){
+ return colSpan;
+ }
+}
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/docTranslation/enums/ReleaseConditionEnum.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/docTranslation/enums/ReleaseConditionEnum.java
index bba19ad94..1504bb042 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/docTranslation/enums/ReleaseConditionEnum.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/docTranslation/enums/ReleaseConditionEnum.java
@@ -8,7 +8,7 @@ import org.apache.commons.lang3.StringUtils;
*/
public enum ReleaseConditionEnum {
- PUBLISHED("已发布","published","Have published"),
+ PUBLISHED("已发布","published","Published"),
DRAFT("草稿","draft","Draft"),
;
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/controller/BussDocumentLibraryEOController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/controller/BussDocumentLibraryEOController.java
index 4227e3341..e2864dc65 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/controller/BussDocumentLibraryEOController.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/controller/BussDocumentLibraryEOController.java
@@ -90,6 +90,21 @@ public class BussDocumentLibraryEOController extends JeroController transPageInfo(@RequestBody Map parameter) {
+ IPage infoPage = bussDocumentLibraryEOService.ocrPageInfo(parameter);
+ return Result.OK(infoPage);
+ }
+
/**
* 列表查询
*
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java
index e53b0e1b1..42b30a509 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java
@@ -316,7 +316,14 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl" + serialNumber + "";
+
+ //消息英文--不带标签
+ String contentNo = "In the "+ technologyTerritoryName
+ + " technical field you subscribed to, the "+
+ category + " " + serialNumber +" has been updated.";;
+
+ //消息英文--带标签
+ String contentYes = "In the "+ technologyTerritoryName
+ + " technical field you subscribed to, the "+
+ category + " " + hrefYes +" has been updated.";;
+
+ //消息中文--不带标签
+ String contentInfoNo = "您所订阅的" + technologyTerritoryName + "技术领域中更新了" + category + " " + serialNumber;;
+
+ //消息中文--带标签
+
+ String contentInfoYes = "您所订阅的" + technologyTerritoryName + "技术领域中更新了" + category + " " + hrefYes;;
+
+
//封装消息的实体类
- SysAnnouncement sysAnnouncement = getSysAnnouncement(userIdList, msgTitle, content, contentInfo,MessageTypeEnum.READ.getValue(),MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName());
+ SysAnnouncement sysAnnouncement = getSysAnnouncement(userIdList,
+ msgTitle,
+ contentNo,
+ contentYes,
+ MessageTypeEnum.READ.getValue(),
+ MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName(),
+ contentInfoNo,
+ contentInfoYes);
sysAnnouncementService.saveAnnouncement(sysAnnouncement);
sendWebsocket(idTemp, contentInfo);
//飞书
try {
String contentInfoFeiShu = "In the "+ technologyTerritoryName
- + " technical field you subscribed to, the "
- + serialNumber +" has been updated.";
- iFeishuService.batchSendMessage(thirdIdList.toArray(new String[]{}), contentInfoFeiShu, MessageTypeEnum.PUSH.getName(), hrefTemp);
+ + " technical field you subscribed to, the "+
+ category + " " + serialNumber +" has been updated.";
+ String contentInfoFeiShuCn = "您所订阅的" + technologyTerritoryName + "技术领域中更新了" + category + " " + serialNumber;
+
+ FeishuMsgVo feishuMsgVo = new FeishuMsgVo();
+ feishuMsgVo.setTitle(MessageTypeEnum.READ.getNameCn()+"/"+MessageTypeEnum.READ.getName());
+ feishuMsgVo.setUrl(hrefTemp);
+ feishuMsgVo.setContentEn(contentInfoFeiShu);
+ feishuMsgVo.setContent(contentInfoFeiShuCn);
+
+ iFeishuService.sendCardMsgTerritory(thirdIdList.toArray(new String[]{}), feishuMsgVo);
+// iFeishuService.batchSendMessage(thirdIdList.toArray(new String[]{}), contentInfoFeiShu, MessageTypeEnum.PUSH.getName(), hrefTemp);
} catch (IOException e) {
log.error("飞书消息推送失败");
}
@@ -2980,13 +3027,13 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl map, List> dataList,
+ List fieldList, List fieldDateList,
+ List fieldFileList, List fieldPullList,
+ String cut,String flagTemp) {
+ LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+ //调整dataList中map中字段顺序与表单中的一致
+ Map mapNew = new LinkedHashMap<>();
+ for (OnlCgformField onlCgformField : fieldList) {
+ for (Map.Entry entry : dataList.get(0).entrySet()) {
+ if (onlCgformField.getDbFieldName().equals(entry.getKey())) {
+ mapNew.put(entry.getKey(), entry.getValue());
+ break;
+ }
+ }
+ }
+ dataList.remove(0);
+ dataList.add(mapNew);
+ Map mapTemp = new HashMap<>();
+ mapCopy(map, mapTemp);
+ //时间类型的字段
+ List fieldDate = fieldDateList.stream().map(OnlCgformField::getDbFieldName).collect(Collectors.toList());
+ //文件类型的字段
+ List fieldFile = fieldFileList.stream().map(OnlCgformField::getDbFieldName).collect(Collectors.toList());
+ //下拉类型的字段
+ //过滤出树形字段
+ List treeFieldList = fieldList.stream()
+ .filter(e -> FieldTypeEnum.TREE.getValue().equals(e.getFieldShowType()))
+ .collect(Collectors.toList());
+
+ //数据字典
+ List sysDictItems = sysDictItemServiceImpl.selectItemsAll();
+ //树形数据字典
+ List categoryList = sysCategoryService.list();
+ //下拉选处理数据字典
+ for (Map.Entry entry : dataList.get(0).entrySet()) {
+ //下拉选处理数据字典
+ dictItemCn(sysDictItems, entry, cut, fieldList,flagTemp);
+ treeDictItemCn(categoryList, entry, treeFieldList, cut,flagTemp);
+ }
+ for (Map.Entry entry : mapTemp.entrySet()) {
+ //下拉选处理数据字典
+ dictItemCn(sysDictItems, entry, cut, fieldList,flagTemp);
+ treeDictItemCn(categoryList, entry, treeFieldList, cut,flagTemp);
+ }
+
+ StringBuilder sb = new StringBuilder();
+ dataList.get(0).entrySet().forEach(entry -> {
+ String key = entry.getKey();
+ Object value = entry.getValue();
+ //字段中文名
+ List fields = fieldList.stream().filter(e -> e.getDbFieldName().equals(key)).collect(Collectors.toList());
+
+ if (fields.size() != 0) {
+ String dbFieldTxt = fields.get(0).getDbFieldTxt();
+ if("2".equals(flagTemp)){
+ dbFieldTxt = fields.get(0).getDbFieldTxt();
+ }else{
+ dbFieldTxt = fields.get(0).getDbFieldTxt();
+ }
+ dbFieldTxt = "" + dbFieldTxt + "";
+ if (value == null) {
+ value = "";
+ }
+ for (Map.Entry entryTemp : mapTemp.entrySet()) {
+ String keyTemp = entryTemp.getKey();
+ Object valueTemp = entryTemp.getValue();
+ if (valueTemp == null) {
+ valueTemp = "";
+ }
+ if (!"create_time".equals(key) && !"update_time".equals(key)) {
+ if (key.equals(keyTemp)) {
+ if (fieldDate.contains(key)) {
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+ if (ObjectUtils.isNotEmpty(value)) {
+ value = sdf.format(value);
+ }
+ if (ObjectUtils.isNotEmpty(valueTemp)) {
+ try {
+ valueTemp = sdf.format(sdf.parse((String) valueTemp));
+ } catch (ParseException e) {
+ }
+ }
+ //处理时间类型字段
+ if (ObjectUtils.isNotEmpty(value)) {
+ if (ObjectUtils.isNotEmpty(valueTemp) && !value.equals(valueTemp)) {
+ if("2".equals(flagTemp)){
+ sb.append(dbFieldTxt + "由\"" + value + "\"改为\"“" + valueTemp + "\",");
+ }else{
+ sb.append(dbFieldTxt + "由\"" + value + "\"改为\"“" + valueTemp + "\",");
+ }
+ } else if (ObjectUtils.isEmpty(valueTemp)) {
+ if("2".equals(flagTemp)){
+ sb.append(dbFieldTxt + "由\"" + value + "\"改为空" + ",");
+ }else{
+ sb.append(dbFieldTxt + "由\"" + value + "\"改为空" + ",");
+ }
+ }
+ } else {
+ if (ObjectUtils.isNotEmpty(valueTemp)) {
+ if("2".equals(flagTemp)){
+ sb.append(dbFieldTxt + "由空改为\"" + valueTemp + "\",");
+ }else{
+ sb.append(dbFieldTxt + "由空改为\"" + valueTemp + "\",");
+ }
+
+ }
+ }
+
+ } else if (fieldFile.contains(key)) {
+ //处理文件类型字段
+ List fileNameList = new ArrayList<>();
+ List fileNameListTemp = new ArrayList<>();
+ //之前的文件
+ if (ObjectUtils.isNotEmpty(value)) {
+ List fileInfos = iOSSFileService.getFileInfosByConnectId((String) value);
+ fileNameList = fileInfos.stream().map(OSSFile::getFileName).collect(Collectors.toList());
+ }
+ //修改的文件
+ if (ObjectUtils.isNotEmpty(valueTemp)) {
+ List fileInfosTemp = iOSSFileService.getFileInfos((String) valueTemp);
+ fileNameListTemp = fileInfosTemp.stream().map(OSSFile::getFileName).collect(Collectors.toList());
+ }
+
+ if (ObjectUtils.isNotEmpty(value)) {
+ boolean checkDiffrent = checkDiffrent(fileNameList, fileNameListTemp);
+
+ if (fileNameListTemp.size() != 0 && !checkDiffrent) {
+ if("2".equals(flagTemp)){
+ //sysUser
+ sb.append(dbFieldTxt + "由\"" + StringUtils.join(fileNameList, ",") + "\"改为\"" + StringUtils.join(fileNameListTemp, ",") + "\",");
+ }else{
+ sb.append(dbFieldTxt + "由\"" + StringUtils.join(fileNameList, ",") + "\"改为\"" + StringUtils.join(fileNameListTemp, ",") + "\",");
+ }
+ } else if (fileNameListTemp.size() == 0) {
+ if("2".equals(flagTemp)){
+ sb.append(dbFieldTxt + "由\"" + StringUtils.join(fileNameList, ",") + "\"改为空" + ",");
+ }else{
+ sb.append(dbFieldTxt + "由\"" + StringUtils.join(fileNameList, ",") + "\"改为空" + ",");
+ }
+
+ }
+ } else {
+ if (fileNameListTemp.size() != 0) {
+ if("2".equals(flagTemp)){
+ sb.append(dbFieldTxt + "由空改为\"" + StringUtils.join(fileNameListTemp, ",") + "\",");
+ }else{
+ sb.append(dbFieldTxt + "由空改为\"" + StringUtils.join(fileNameListTemp, ",") + "\",");
+ }
+
+ }
+ }
+ } else {
+// if ("replace_standard".equals(key) || "corresponding_standard".equals(key)) {
+// if (ObjectUtils.isNotEmpty(value)) {
+// value = getReplaceStandardName(value);
+// }
+// if (ObjectUtils.isNotEmpty(valueTemp)) {
+// valueTemp = getReplaceStandardName(valueTemp);
+// }
+// }
+ //其他类型(被代替标准不处理)
+ if (!"replaced_standard".equals(key)) {
+ if (ObjectUtils.isNotEmpty(value)) {
+ if (ObjectUtils.isNotEmpty(valueTemp) && !value.equals(valueTemp)) {
+ if("2".equals(flagTemp)){
+ sb.append(dbFieldTxt + "由\"" + value + "\"改为\"" + valueTemp + "\",");
+ }else{
+ sb.append(dbFieldTxt + "由\"" + value + "\"改为\"" + valueTemp + "\",");
+ }
+ } else if (ObjectUtils.isEmpty(valueTemp)) {
+ if("2".equals(flagTemp)){
+ sb.append(dbFieldTxt + "由\"" + value + "\"改为空" + ",");
+ }else{
+ sb.append(dbFieldTxt + "由\"" + value + "\"改为空" + ",");
+ }
+ }
+ } else {
+ if (ObjectUtils.isNotEmpty(valueTemp)) {
+ if("2".equals(flagTemp)){
+ sb.append(dbFieldTxt + "由空改为\"" + valueTemp + "\",");
}else{
sb.append(dbFieldTxt + "由空改为\"" + valueTemp + "\",");
}
@@ -3114,20 +3357,34 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl fieldFileList,
List fieldPullList,
String cut) {
+ List> dataListTemp = new ArrayList<>();
+ for (Map stringObjectMap : dataList) {
+ Map mapT = new HashMap<>();
+ mapCopy(stringObjectMap, mapT);
+ dataListTemp.add(mapT);
+ }
+
String technologyTerritoryNew = (String) dataList.get(0).get("technology_territory");
//1. 处理订阅的发送消息
//修改的内容
String flag ="1";//消息的标识(英文)
StringBuilder sb = getUpdateInfo(map, dataList, fieldList, fieldDateList, fieldFileList, fieldPullList, null,flag);
+ String flagTemp ="2";//消息的标识(中文--消息采用卡片型式发送, 消息内容包含中英文, 所以此处需要获取消息的中文)
+ StringBuilder sbCn = getUpdateInfoCn(map, dataListTemp, fieldList, fieldDateList, fieldFileList, fieldPullList, null,flagTemp);
//树形数据字典
List categoryList = sysCategoryService.list();
String sbStr = "";
if (ObjectUtils.isNotEmpty(sb)) {
sbStr = sb.substring(0, sb.length() - 1);
}
+ String sbStrCn = "";
+ if (ObjectUtils.isNotEmpty(sbCn)) {
+ sbStrCn = sbCn.substring(0, sbCn.length() - 1);
+ }
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String serialNumber = (String) dataList.get(0).get("serial_number");
String category = (String)map.get("lei4_bie2");
+ String categoryCn = (String)map.get("lei4_bie2");
String technologyTerritory = (String) map.get("technology_territory");
if(StringUtils.isNotBlank(category)){
List dictItemList = sysDictItemServiceImpl.selectItemsAll();
@@ -3137,21 +3394,20 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImplXXX对“GB 7258 进行了修改请及时查看”)
//向订阅领域管理中订阅了该技术领域的人和文档库中订阅了该条文档的人发送消息
+ // 只有技术领域变更为订阅的技术领域这一种情况发消息, 假如订阅了技术领域A,编辑的文档的技术领域也是A,这时编辑的是其他的字段,这种情况不发消息
Map mapTemp = new HashMap<>();
mapTemp.put("domainId", map.get("technology_territory"));
mapTemp.put("documentId", map.get("id"));
//订阅技术领域的人和订阅该条标准的人
-// List userIdList = domainUserRelService.queryDomainUserRelInfo(mapTemp);
//订阅技术领域发消息
List domainUserRelList = domainManageService.list();
-// List thirdIdListAll = new ArrayList<>();
-// List userListAll = new ArrayList<>();
List thirdIdList = new ArrayList<>();
List userList = new ArrayList<>();
String technologyTerritoryNameEn = "";
@@ -3167,12 +3423,6 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl" + serialNumber + "";
String content = "";
- if (StringUtils.isNotBlank(sbStr.toString())) {
+ if (StringUtils.isNotBlank(sbStr.toString()) && StringUtils.isNotBlank(sbStrCn)) {
//去掉a标签
sbStr = sbStr.replaceAll("", "").replaceAll("", "");
//您订阅的XXX已被修改
content = "In the "+category + " " + serialNumber+" you subscribed to, has been modified,Please pay attention to check.";
- String contentInfo = "In the "+category + " " + href+" you subscribed to, "+sysUser.getUsername()+" changed the "+ href + " " + sbStr.toString();
+ //内容详情--英文(不带标签)
+ String contentInfoNo = "In the "+category + " " + serialNumber+" you subscribed to, "+ sbStr.toString();
+
+ //内容详情--英文(带标签)
+ String contentInfoYes = "In the "+category + " " + href+" you subscribed to, "+ sbStr.toString();
+
String msgTitle = serialNumber + " you subscribed to has been updated";
+ //内容详情-中文(不带标签)
+ String sbStrCnTemp = sbStrCn.replaceAll("", "").replaceAll("", "");
+ String contentCnNo = "您所订阅的"+categoryCn+serialNumber+","+sbStrCnTemp;
+
+ //内容详情--中文(带标签)
+ String contentInfoCnReplace = sbStrCn.replaceAll("","").replaceAll("","");
+ String contentInfoCnYes ="您所订阅的"+categoryCn+href+","+contentInfoCnReplace;;
//封装消息的实体类
- SysAnnouncement sysAnnouncement = getSysAnnouncement(userIdListUpdate, msgTitle, content, contentInfo,MessageTypeEnum.READ.getValue(),MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName());
+ SysAnnouncement sysAnnouncement = getSysAnnouncement(userIdListUpdate,
+ msgTitle,
+ contentInfoNo,
+ contentInfoYes,
+ MessageTypeEnum.READ.getValue(),
+ MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName(),
+ contentCnNo,
+ contentInfoCnYes);
sysAnnouncementService.saveAnnouncement(sysAnnouncement);
- sendWebsocket((String) map.get("id"), contentInfo);
+ sendWebsocket((String) map.get("id"), contentInfoYes);
}
//订阅文档的飞书消息
try {
-// String contentInfoFei = "In the " + technologyTerritoryNameEn + " technical field you subscribed to, the " +
-// category + " " + serialNumber+" has been updated.";
- String contentInfoFei = "In the "+category + " " + serialNumber +" you subscribed to, "+sysUser.getUsername()+" changed the " + sbStr.toString();;
+ //英文消息
+ String contentInfoFei = "In the "+category + " " + serialNumber +" you subscribed to, "+ sbStr.toString();;
+ //中文消息
+ String contentInfoFeiCn ="您所订阅的"+categoryCn+ serialNumber +","+ sbStrCn.toString();;
//跳转文档详情
String url = backUrl + "/docManage/library/detail?id=" + id;
- iFeishuService.batchSendMessage(userIdListUpdateFeishu.toArray(new String[]{}), contentInfoFei, MessageTypeEnum.READ.getName(), url);
-// iFeishuService.batchSendMessage(userIdListUpdateFeishu.toArray(new String[]{}), content, MessageTypeEnum.READ.getName(), url);
+ FeishuMsgVo feishuMsgVo = new FeishuMsgVo();
+ feishuMsgVo.setTitle(MessageTypeEnum.READ.getNameCn()+"/"+MessageTypeEnum.READ.getName());
+ feishuMsgVo.setUrl(url);
+ String replaceAll = contentInfoFei.replaceAll("\"", "<");
+ feishuMsgVo.setContentEn(replaceAll);
+
+ String replaceAllCn = contentInfoFeiCn.replaceAll("", "")
+ .replaceAll("","").replaceAll("\"", "<");
+ feishuMsgVo.setContent(replaceAllCn);
+//
+ iFeishuService.sendCardMsgDocument(userIdListUpdateFeishu.toArray(new String[]{}), feishuMsgVo);
+
+// String contentInfoFei = "In the "+category + " " + serialNumber +" you subscribed to, "+sysUser.getUsername()+" changed the " + sbStr.toString();;
+// //跳转文档详情
+// String url = backUrl + "/docManage/library/detail?id=" + id;
+// iFeishuService.batchSendMessage(userIdListUpdateFeishu.toArray(new String[]{}), contentInfoFei, MessageTypeEnum.READ.getName(), url);
} catch (IOException e) {
log.error("文档新增飞书消息推送失败");
}
@@ -3349,7 +3656,13 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl sysDictItems, Map.Entry entry, String cut, List fieldList,String flagTemp) {
+ //通过dictField判断字段是否为下拉选(不为空则为下拉选)
+ List onlCgformFieldList = fieldList.stream().filter(e -> entry.getKey().equals(e.getDbFieldName())).collect(Collectors.toList());
+ //数据字典中文
+ List dictItemsCh = new ArrayList<>();
+ List dictItemsEn = new ArrayList<>();
+ for (OnlCgformField onlCgformField : onlCgformFieldList) {
+ if (FieldTypeEnum.PULL_SINGLE.getValue().equals(onlCgformField.getFieldShowType())
+ || FieldTypeEnum.PULL_MORE.getValue().equals(onlCgformField.getFieldShowType())) {
+ String value = (String) entry.getValue();
+ if (StringUtils.isNotBlank(value) && onlCgformFieldList.size() != 0 && StringUtils.isNotBlank(onlCgformFieldList.get(0).getDictField())) {
+ for (String itemValue : value.split(",")) {
+ //字段的数据字典
+ List dictItemList = sysDictItems.stream()
+ .filter(e -> StringUtils.isNotBlank(e.getDictCode()) && e.getDictCode().equals(onlCgformFieldList.get(0).getDictField()))
+ .collect(Collectors.toList());
+ if (dictItemList.size() != 0) {
+ List dictItems = dictItemList.stream()
+ .filter(e -> itemValue.equals(e.getItemValue()))
+ .collect(Collectors.toList());
+ if (dictItems.size() != 0) {
+ List itemText = new ArrayList<>();
+ if (CutEnum.CN.getValue().equals(cut)) {
+ itemText = dictItems.stream().map(SysDictItem::getItemText).collect(Collectors.toList());
+ } else if(CutEnum.EN.getValue().equals(cut)) {
+ itemText = dictItems.stream().map(SysDictItem::getEnName).collect(Collectors.toList());
+ }else if("2".equals(flagTemp)){
+ itemText = dictItems.stream().map(SysDictItem::getItemText).collect(Collectors.toList());
+ }
+ dictItemsCh.addAll(itemText);
+ dictItemsEn.addAll(itemText);
+ }
+ }
+ }
+ }
+ }
+ }
+
+
+ if (onlCgformFieldList.size() != 0 && StringUtils.isNotBlank(onlCgformFieldList.get(0).getDictField())) {
+ if(FieldTypeEnum.PULL_SINGLE.getValue().equals(onlCgformFieldList.get(0).getFieldShowType())
+ || FieldTypeEnum.PULL_MORE.getValue().equals(onlCgformFieldList.get(0).getFieldShowType())){
+ if (CutEnum.CN.getValue().equals(cut)) {
+ entry.setValue(StringUtils.join(dictItemsCh, ","));
+ } else if(CutEnum.EN.getValue().equals(cut)){
+ entry.setValue(StringUtils.join(dictItemsEn, ","));
+ }else if("2".equals(flagTemp)){
+ entry.setValue(StringUtils.join(dictItemsEn, ","));
+ }
+ }
+ }
+ }
@Override
@@ -4890,8 +5265,20 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl categoryList, Map.Entry entry, List treeFieldList, String cut,String flagTemp) {
+ List treeFields = treeFieldList.stream().map(OnlCgformField::getDbFieldName).collect(Collectors.toList());
+ String key = entry.getKey();
+ if (treeFields.contains(entry.getKey())) {
+ String value = StringUtils.valueOf(entry.getValue());
+ if (StringUtils.isNotBlank(value)) {
+ List idList = Arrays.asList(value.split(","));
+ List sysCategoryList = categoryList.stream().filter(e -> idList.contains(e.getId())).collect(Collectors.toList());
+ List nameList = sysCategoryList.stream().map(SysCategory::getName).collect(Collectors.toList());
+ List nameEnList = sysCategoryList.stream().map(SysCategory::getEnName).collect(Collectors.toList());
+ if (CutEnum.CN.getValue().equals(cut)) {
+ entry.setValue(StringUtils.join(nameList, ","));
+ } else if(CutEnum.EN.getValue().equals(cut)){
+ entry.setValue(StringUtils.join(nameEnList, ","));
+ }else if("2".equals(flagTemp)){
+ entry.setValue(StringUtils.join(nameList, ","));
+ }
+ }
+ }
+ }
@SneakyThrows
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/service/impl/DummyInventoryBaseEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/service/impl/DummyInventoryBaseEOServiceImpl.java
index 6af72e8d9..b4bc7f017 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/service/impl/DummyInventoryBaseEOServiceImpl.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/dummy/service/impl/DummyInventoryBaseEOServiceImpl.java
@@ -29,6 +29,7 @@ import com.jero.modules.dummy.service.IDummyInventoryInfoEOService;
import com.jero.modules.dummy.service.IDummyReadEOService;
import com.jero.modules.dummy.vo.VirtualCreaterVo;
import com.jero.modules.feishu.service.IFeishuService;
+import com.jero.modules.feishu.vo.FeishuMsgVo;
import com.jero.modules.oss.entity.OSSFile;
import com.jero.modules.oss.service.IOSSFileService;
import com.jero.modules.system.entity.SysAnnouncement;
@@ -41,6 +42,7 @@ import com.jero.modules.system.service.ISysUserService;
import com.jero.modules.system.service.impl.SysCategoryServiceImpl;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -250,10 +252,14 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl getPageInfo(Page page, QueryWrapper queryWrapper) {
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
- queryWrapper.and(query->{
- query.in("create_by",sysUser.getUsername()).in("state",InventoryStateEnum.DRAFT.getValue())
- .or().in("state",InventoryStateEnum.ISSUE.getValue());
- });
+ //系统管理
+ boolean administrator = sysUserService.isAdministrator();
+ if(!administrator){
+ queryWrapper.and(query->{
+ query.in("create_by",sysUser.getUsername()).in("state",InventoryStateEnum.DRAFT.getValue())
+ .or().in("state",InventoryStateEnum.ISSUE.getValue());
+ });
+ }
// queryWrapper.or(query->{
// query.in("state",InventoryStateEnum.ISSUE.getValue());
// });
@@ -319,19 +325,19 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl createByNameList =new ArrayList<>();
- if (StringUtils.isNotBlank(baseEO.getCreateBy())) {
- createByNameList = Arrays.asList(baseEO.getCreateBy().split(","));
-
- if (CollectionUtils.isNotEmpty(createByNameList)){
- if (!createByNameList.contains(loginUserName)) {
- if (CutEnum.CN.getValue().equals(dummyInventoryBaseEO.getCut())) {
- throw new JeroBootException("当前用户非创建者,无法发布");
- } else {
- throw new JeroBootException("The current user is not the creator and cannot be issued.");
- }
- }
- }
- }
+// if (StringUtils.isNotBlank(baseEO.getCreateBy())) {
+// createByNameList = Arrays.asList(baseEO.getCreateBy().split(","));
+//
+// if (CollectionUtils.isNotEmpty(createByNameList)){
+// if (!createByNameList.contains(loginUserName)) {
+// if (CutEnum.CN.getValue().equals(dummyInventoryBaseEO.getCut())) {
+// throw new JeroBootException("当前用户非创建者,无法发布");
+// } else {
+// throw new JeroBootException("The current user is not the creator and cannot be issued.");
+// }
+// }
+// }
+// }
Date now = new Date();
UpdateWrapper baseWrapper=new UpdateWrapper<>();
baseWrapper.set("state",dummyInventoryBaseEO.getState());
@@ -366,6 +372,7 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl dummyInventoryInfoEOList = iDummyInventoryInfoEOService.list(lambdaQueryWrapper);
String contentLog = "The "+ baseEO.getName()+" virtual list you subscribed to has been updated as follows:" + "";
String contentLogFeishu = "The "+ baseEO.getName()+" virtual list you subscribed to has been updated as follows:" + " ";
+ String contentLogFeishuTemp = "The "+ baseEO.getName()+" virtual list you subscribed to has been updated as follows:" + " ";
if(dummyContentChangeEOList.size() == 0){
//没有添加过需要进行第一次添加
@@ -407,31 +414,83 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl hrefListAdd = new ArrayList<>();
if(serialNumberAddList.size() != 0){
- List hrefList = new ArrayList<>();
+
for (DummyInventoryInfoEO dummyInventoryInfoEO : collectAdd) {
String href = "" + dummyInventoryInfoEO.getSerialNumber() + "";
- hrefList.add(href);
+ hrefListAdd.add(href);
}
- contentLog += count+". New regulations: " + StringUtils.join(hrefList,",") + "";
+ contentLog += count+". New regulations: " + StringUtils.join(hrefListAdd,",") + "";
contentLogFeishu += count+". New regulations: " + StringUtils.join(serialNumberAddList,",") + " ";
count++;
}
+ List hrefListDelete = new ArrayList<>();
if(serialNumberDeleteList.size() != 0){
- List hrefList = new ArrayList<>();
for (DummyInventoryInfoEO dummyInventoryInfoEO : collectDelete) {
String href = "" + dummyInventoryInfoEO.getSerialNumber() + "";
- hrefList.add(href);
+ hrefListDelete.add(href);
}
- contentLog += count + ". Remove regulations: " + StringUtils.join(hrefList,",") + "";
+ contentLog += count + ". Remove regulations: " + StringUtils.join(hrefListDelete,",") + "";
contentLogFeishu += count + ". Remove regulations: " + StringUtils.join(serialNumberDeleteList,",") + " ";
}
if(serialNumberAddList.size() != 0 || serialNumberDeleteList.size() != 0){
+ int countNo = 1;
+ StringBuilder sbContentNo = new StringBuilder();
+ if(ObjectUtils.isNotEmpty(serialNumberAddList)){
+ sbContentNo.append(countNo+". New regulations: "+StringUtils.join(serialNumberAddList,",")+", ");
+ countNo ++;
+ }
+ if(ObjectUtils.isNotEmpty(serialNumberDeleteList)){
+ sbContentNo.append(countNo+". Remove regulations: "+StringUtils.join(serialNumberDeleteList,","));
+ }
+
+ int countYes = 1;
+ StringBuilder sbContentYes = new StringBuilder();
+ if(ObjectUtils.isNotEmpty(serialNumberAddList)){
+ sbContentYes.append(countYes+". New regulations: "+StringUtils.join(hrefListAdd,",")+"");
+ countYes ++;
+ }
+ if(ObjectUtils.isNotEmpty(serialNumberDeleteList)){
+ sbContentYes.append(countYes+". Remove regulations: "+StringUtils.join(hrefListDelete,","));
+ }
+ //消息英文--不带标签
+ String contentNo = "The "+ baseEO.getName()+" virtual list you subscribed to has been updated as follows:" + sbContentNo;
+ //消息英文--带标签
+ String contentYes = "The "+ baseEO.getName()+" virtual list you subscribed to has been updated as follows:"+ "" + sbContentYes;;
+
+ int countInfoNo = 1;
+ StringBuilder sbContentINfoNo = new StringBuilder();
+ if(ObjectUtils.isNotEmpty(serialNumberAddList)){
+ sbContentINfoNo.append(countInfoNo+". 新增文档: "+StringUtils.join(serialNumberAddList,",")+", ");
+ countInfoNo ++;
+ }
+ if(ObjectUtils.isNotEmpty(serialNumberDeleteList)){
+ sbContentINfoNo.append(countInfoNo+". 删除文档: "+StringUtils.join(serialNumberDeleteList,","));
+ }
+
+ int countInfoYes = 1;
+ StringBuilder sbContentInfoYes = new StringBuilder();
+ if(ObjectUtils.isNotEmpty(serialNumberAddList)){
+ sbContentInfoYes.append(countInfoYes+". 新增文档: "+StringUtils.join(hrefListAdd,",")+"");
+ countInfoYes ++;
+ }
+ if(ObjectUtils.isNotEmpty(serialNumberDeleteList)){
+ sbContentInfoYes.append(countInfoYes+". 删除文档: "+StringUtils.join(hrefListDelete,","));
+ }
+
+ //消息中文--不带标签
+ String contentInfoNo = "您所订阅的"+baseEO.getName()+"虚拟清单已更新,更新内容如下:"+sbContentINfoNo;
+ //消息中文--带标签
+ String contentInfoYes = "您所订阅的"+baseEO.getName()+"虚拟清单已更新,更新内容如下:"+""+sbContentInfoYes;
+
+
+
List userNameList = dummyReadEOService.queryReadUserInfo(dummyInventoryBaseEO.getId());
List thirdIdList = new ArrayList<>();
if(userNameList.size() != 0){
@@ -440,7 +499,14 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl pageList = extRepoDataService.page(page, queryWrapper);
- ExtRepoDataPage res = new ExtRepoDataPage(extRepoFolderService.haveManageAuth(extRepoData.getSupFolder()), pageList);
+ //判断当前文件夹或者上级文件夹是否有权限
+ HttpSession session = req.getSession();
+ session.setAttribute("haveSuperiorManageAuth", false);
+ extRepoFolderService.haveSuperiorManageAuth(extRepoData.getSupFolder(),session);
+ ExtRepoDataPage res = new ExtRepoDataPage((Boolean)session.getAttribute("haveSuperiorManageAuth"), pageList);
return Result.OK(res);
}
@@ -118,9 +123,12 @@ public class ExtRepoDataController extends JeroController add(@Validated @RequestBody ExtRepoData extRepoData) {
+ public Result> add(@Validated @RequestBody ExtRepoData extRepoData,HttpSession session) {
Result result = new Result();
- if (extRepoFolderService.haveManageAuth(extRepoData.getSupFolder())) {
+ //判断当前文件夹或者上级文件夹是否有权限
+ session.setAttribute("haveSuperiorManageAuth", false);
+ extRepoFolderService.haveSuperiorManageAuth(extRepoData.getSupFolder(),session);
+ if ((Boolean)session.getAttribute("haveSuperiorManageAuth")) {
log.info("对外报告数据表收到文件添加请求,开始处理文件:【" + sdf.format(new Date()) + "】");
int res = extRepoDataService.add(extRepoData);
if (CutEnum.CN.getValue().equals(extRepoData.getCut())) {
@@ -148,11 +156,14 @@ public class ExtRepoDataController extends JeroController edit(@Validated @RequestBody ExtRepoData extRepoData) {
+ public Result> edit(@Validated @RequestBody ExtRepoData extRepoData,HttpSession session) {
Result result = new Result();
ExtRepoData erd = extRepoDataService.queryById(extRepoData.getId());
- LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
- if (extRepoFolderService.isManager() || sysUser.getUsername().equals(erd.getCreateBy())) {
+ //LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+ //判断当前文件夹或者上级文件夹是否有权限
+ session.setAttribute("haveSuperiorManageAuth", false);
+ extRepoFolderService.haveSuperiorManageAuth(erd.getSupFolder(),session);
+ if (extRepoFolderService.isManager() || (Boolean)session.getAttribute("haveSuperiorManageAuth")) {
extRepoData.setSupFolder(erd.getSupFolder());
extRepoDataService.editById(extRepoData);
if (CutEnum.CN.getValue().equals(extRepoData.getCut())) {
@@ -180,12 +191,15 @@ public class ExtRepoDataController extends JeroController delete(@RequestParam("id") String id,
- @RequestParam(name = "cut", defaultValue = "cn") String cut) {
+ @RequestParam(name = "cut", defaultValue = "cn") String cut,HttpSession session) {
Result result = new Result();
ExtRepoData erd = extRepoDataService.queryById(id);
if (null != erd) {
- LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
- if (extRepoFolderService.isManager() || sysUser.getUsername().equals(erd.getCreateBy())) {
+ //LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+ //判断当前文件夹或者上级文件夹是否有权限
+ session.setAttribute("haveSuperiorManageAuth", false);
+ extRepoFolderService.haveSuperiorManageAuth(erd.getSupFolder(),session);
+ if (extRepoFolderService.isManager() || (Boolean)session.getAttribute("haveSuperiorManageAuth")) {
extRepoDataService.deleteById(id);
CosBootUtil.delete(erd.getFileKey());
if (CutEnum.CN.getValue().equals(cut)) {
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/controller/ExtRepoFolderController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/controller/ExtRepoFolderController.java
index deab4288f..7ad386fa8 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/controller/ExtRepoFolderController.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/controller/ExtRepoFolderController.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.constant.enums.CutEnum;
+import com.jero.common.exception.JeroBootException;
import com.jero.common.system.base.controller.JeroController;
import com.jero.modules.extRepo.entity.ERFTreeDataVO;
import com.jero.modules.extRepo.entity.ExtRepoData;
@@ -49,7 +50,7 @@ public class ExtRepoFolderController extends JeroController queryList() {
ERFTreeDataVO dataVO = new ERFTreeDataVO();
- dataVO.setManager(extRepoFolderService.isManager());
+ //dataVO.setManager(extRepoFolderService.isManager());
dataVO.setList(extRepoFolderService.queryTreeList());
return Result.OK(dataVO);
}
@@ -66,11 +67,20 @@ public class ExtRepoFolderController extends JeroController add(@Validated @RequestBody ExtRepoFolder extRepoFolder, HttpSession session) {
Result result = new Result();
session.setAttribute("haveSuperiorManageAuth", false);
- extRepoFolderService.haveSuperiorManageAuth(extRepoFolder.getSupFolder(),session);
- if (ObjectUtils.isNotEmpty(session.getAttribute("haveSuperiorManageAuth"))&&(Boolean) session.getAttribute("haveSuperiorManageAuth")) {
+ ExtRepoFolder folder = extRepoFolderService.queryById(extRepoFolder.getSupFolder());
+ extRepoFolderService.haveSuperiorManageAuth(folder.getSupFolder(),session);
+ //上层是否有权限
+ boolean boo = (Boolean)session.getAttribute("haveSuperiorManageAuth");
+ if (boo||extRepoFolderService.haveManageAuth(extRepoFolder.getSupFolder())) {
if (!extRepoFolder.isAddSub()) {
//增加同级文件夹
- ExtRepoFolder folder = extRepoFolderService.queryById(extRepoFolder.getSupFolder());
+ if (!boo) {
+ if (CutEnum.CN.getValue().equals(extRepoFolder.getCut())) {
+ throw new JeroBootException("无法创建同级文件夹!请联系管理员!");
+ } else {
+ throw new JeroBootException("Unable to create a sibling folder ! Please Contact your administrator !");
+ }
+ }
extRepoFolder.setSupFolder(folder.getSupFolder());
}
extRepoFolderService.add(extRepoFolder);
@@ -89,6 +99,41 @@ public class ExtRepoFolderController extends JeroController isAllowSiblingFolder(@Validated @RequestBody ExtRepoFolder extRepoFolder,
+ HttpSession session) {
+ Result result = new Result();
+ session.setAttribute("haveSuperiorManageAuth", false);
+ ExtRepoFolder folder = extRepoFolderService.queryById(extRepoFolder.getId());
+ extRepoFolderService.haveSuperiorManageAuth(folder.getSupFolder(),session);
+ //上层是否有权限
+ boolean boo = (Boolean)session.getAttribute("haveSuperiorManageAuth");
+ if (boo || extRepoFolderService.haveManageAuth(extRepoFolder.getId())) {
+ if (!boo) {
+ if (CutEnum.CN.getValue().equals(extRepoFolder.getCut())) {
+ return result.error500("无法创建同级文件夹!请联系管理员!");
+ } else {
+ return result.error500("Unable to create a sibling folder ! Please Contact your administrator !");
+ }
+ }
+ } else {
+ if (CutEnum.CN.getValue().equals(extRepoFolder.getCut())) {
+ return result.error500("没有权限!");
+ } else {
+ return result.error500("You do not have permission !");
+ }
+ }
+ return result.success("");
+ }
+
/**
* 编辑
*
@@ -101,7 +146,7 @@ public class ExtRepoFolderController extends JeroController edit(@Validated @RequestBody ExtRepoFolder extRepoFolder, HttpSession session) {
Result result = new Result();
session.setAttribute("haveSuperiorManageAuth", false);
- extRepoFolderService.haveSuperiorManageAuth(extRepoFolder.getSupFolder(),session);
+ extRepoFolderService.haveSuperiorManageAuth(extRepoFolder.getId(),session);
if (ObjectUtils.isNotEmpty(session.getAttribute("haveSuperiorManageAuth"))&&(Boolean) session.getAttribute("haveSuperiorManageAuth")) {
extRepoFolderService.editById(extRepoFolder);
if (CutEnum.CN.getValue().equals(extRepoFolder.getCut())) {
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/entity/ERFTreeData.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/entity/ERFTreeData.java
index 0b0152705..04a4af70d 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/entity/ERFTreeData.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/entity/ERFTreeData.java
@@ -56,6 +56,19 @@ public class ERFTreeData implements Comparable {
*/
private String authManageIds = "";
+ /**
+ * 是否能点击右键
+ */
+ private boolean isManager;
+
+ public boolean isManager() {
+ return isManager;
+ }
+
+ public void setManager(boolean manager) {
+ isManager = manager;
+ }
+
/**
* 子文件夹
*/
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/entity/ERFTreeDataVO.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/entity/ERFTreeDataVO.java
index ba073d51e..23ca44b3b 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/entity/ERFTreeDataVO.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/entity/ERFTreeDataVO.java
@@ -3,19 +3,19 @@ package com.jero.modules.extRepo.entity;
import java.util.List;
public class ERFTreeDataVO {
- boolean isManager;
+// boolean isManager;
List list;
public ERFTreeDataVO() {
}
- public boolean isManager() {
- return isManager;
- }
+// public boolean isManager() {
+// return isManager;
+// }
- public void setManager(boolean manager) {
- isManager = manager;
- }
+// public void setManager(boolean manager) {
+// isManager = manager;
+// }
public List getList() {
return list;
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/service/impl/ExtRepoFolderServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/service/impl/ExtRepoFolderServiceImpl.java
index f9ad6ac17..442ab9d67 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/service/impl/ExtRepoFolderServiceImpl.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/service/impl/ExtRepoFolderServiceImpl.java
@@ -241,18 +241,21 @@ public class ExtRepoFolderServiceImpl extends ServiceImpl resList = new ArrayList<>();
for (ExtRepoFolder erf : list) {
if (supId.equals(erf.getSupFolder())) {
- int childLevel = level + 1;
if (haveViewAuth(erf.getId())) {
ERFTreeData date = new ERFTreeData(erf.getFolderName(), erf.getId(), level, erf.getOrderId());
+ boolean parentRightClick = haveManageAuth(erf.getId());
+ if (parentRightClick) {
+ date.setManager(true);
+ }
date.setAuthManageIdsName(erf.getAuthManageIdsName());
date.setAuthManageIds(erf.getAuthManageIds());
date.setAuthViewIdsName(erf.getAuthViewIdsName());
date.setAuthViewIds(erf.getAuthViewIds());
- date.setChildren(subFolderTree(erf.getId(),new ArrayList(),childLevel));
+ date.setChildren(subFolderTree(new ArrayList(),date));
date.sortChildren();
resList.add(date);
} else {
- resList.addAll(getSubFolder(erf.getId(), list, childLevel));
+ resList.addAll(getSubFolder(erf.getId(), list, level));
}
}
}
@@ -261,20 +264,36 @@ public class ExtRepoFolderServiceImpl extends ServiceImpl subFolderTree(String folder,List childTree,int level) {
- int childLevel = level + 1;
- List listBySupFolder = getListBySupFolder(folder);
+ private List subFolderTree(List childTree,ERFTreeData father) {
+ int childLevel = father.getLevel() + 1;
+ List listBySupFolder = getListBySupFolder(father.getKey());
for (ExtRepoFolder extRepoFolder : listBySupFolder) {
ERFTreeData date = new ERFTreeData(extRepoFolder.getFolderName(), extRepoFolder.getId(), childLevel, extRepoFolder.getOrderId());
- date.setAuthManageIdsName(extRepoFolder.getAuthManageIdsName());
- date.setAuthManageIds(extRepoFolder.getAuthManageIds());
- date.setAuthViewIdsName(extRepoFolder.getAuthViewIdsName());
- date.setAuthViewIds(extRepoFolder.getAuthViewIds());
- date.setChildren(subFolderTree(extRepoFolder.getId(), new ArrayList(),childLevel));
+ //是否有管理权限
+ boolean childRightClick = haveManageAuth(extRepoFolder.getId());
+ if (father.isManager()||childRightClick) {
+ date.setManager(true);
+ }
+ //如果参数为空则延续父文件夹权限,反之用自己的
+ if (ObjectUtils.isNotEmpty(extRepoFolder.getAuthManageIds()) && ObjectUtils.isNotEmpty(extRepoFolder.getAuthManageIdsName())) {
+ date.setAuthManageIdsName(extRepoFolder.getAuthManageIdsName());
+ date.setAuthManageIds(extRepoFolder.getAuthManageIds());
+ } else {
+ date.setAuthManageIdsName(father.getAuthManageIdsName());
+ date.setAuthManageIds(father.getAuthManageIds());
+ }
+ if (ObjectUtils.isNotEmpty(extRepoFolder.getAuthViewIds()) && ObjectUtils.isNotEmpty(extRepoFolder.getAuthViewIdsName())) {
+ date.setAuthViewIdsName(extRepoFolder.getAuthViewIdsName());
+ date.setAuthViewIds(extRepoFolder.getAuthViewIds());
+ } else {
+ date.setAuthViewIdsName(father.getAuthViewIdsName());
+ date.setAuthViewIds(father.getAuthViewIds());
+ }
+ date.setChildren(subFolderTree(new ArrayList(),date));
date.sortChildren();
childTree.add(date);
}
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/feishu/service/IFeishuService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/feishu/service/IFeishuService.java
index a1999a118..38f3c1234 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/feishu/service/IFeishuService.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/feishu/service/IFeishuService.java
@@ -1,9 +1,11 @@
package com.jero.modules.feishu.service;
import com.alibaba.fastjson.JSONObject;
+import com.jero.modules.feishu.vo.FeishuMsg2Vo;
import com.jero.modules.feishu.vo.FeishuMsgVo;
import java.io.IOException;
+import java.util.List;
import java.util.Map;
/**
@@ -38,6 +40,42 @@ public interface IFeishuService {
*/
String sendCardMsg(String[] userIds, FeishuMsgVo feishuMsgVo) throws IOException;
+ /**
+ * 文档库卡片消息
+ * @param userIds
+ * @param feishuMsgVo
+ * @return
+ * @throws IOException
+ */
+ String sendCardMsgDocument(String[] userIds, FeishuMsgVo feishuMsgVo) throws IOException;
+
+ /**
+ * 订阅领域(飞书消息)
+ * @param userIds
+ * @param feishuMsgVo
+ * @return
+ * @throws IOException
+ */
+ String sendCardMsgTerritory(String[] userIds, FeishuMsgVo feishuMsgVo) throws IOException;
+
+ /**
+ * 预警推送(飞书消息)
+ * @param userIds
+ * @param feishuMsgVo
+ * @return
+ * @throws IOException
+ */
+ String sendCardMsgWarn(String[] userIds, FeishuMsgVo feishuMsgVo) throws IOException;
+
+ /**
+ * 虚拟清单(飞书消息)
+ * @param userIds
+ * @param feishuMsgVo
+ * @return
+ * @throws IOException
+ */
+ String sendCardMsgVirtua(String[] userIds, FeishuMsgVo feishuMsgVo, List serialNumberAddList,List serialNumberDeleteList) throws IOException;
+
/**
* 翻译文本
* @param params
@@ -62,4 +100,7 @@ public interface IFeishuService {
* @param split
*/
void sendKnowledgeBaseTypeChargePersonCard(String[] split);
+
+ void sendCard(String[] thirdIds, FeishuMsg2Vo feishuMsgVo) throws IOException;
+
}
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/feishu/service/impl/FeishuServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/feishu/service/impl/FeishuServiceImpl.java
index b3367fda2..72761116a 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/feishu/service/impl/FeishuServiceImpl.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/feishu/service/impl/FeishuServiceImpl.java
@@ -8,6 +8,7 @@ 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.modules.feishu.service.IFeishuService;
+import com.jero.modules.feishu.vo.FeishuMsg2Vo;
import com.jero.modules.feishu.vo.FeishuMsgVo;
import com.jero.modules.problemKnowledgeBase.entity.ProblemKnowledgeBaseClassifyEO;
import com.jero.modules.problemKnowledgeBase.entity.ProblemKnowledgeBaseEO;
@@ -24,6 +25,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
+import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@@ -280,6 +282,476 @@ public class FeishuServiceImpl implements IFeishuService {
return tokenJson.get("msg").toString();
}
+ /**
+ * 文档库卡片消息
+ * @param userIds
+ * @param feishuMsgVo
+ * @return
+ * @throws IOException
+ */
+ public String sendCardMsgDocument(String[] userIds, FeishuMsgVo feishuMsgVo) throws IOException {
+ String token = getTenantAccessToken();
+ // 设置请求头
+ Map headerMap = new HashMap<>();
+ headerMap.put("Authorization", "Bearer " + token);
+ headerMap.put("Content-Type", "application/json; charset=utf-8");
+
+ // 示例
+ StringBuilder contentSb = new StringBuilder();
+ contentSb.append("{");
+ contentSb.append("\"elements\": [");
+ // 内容中文
+ if (StrUtil.isNotEmpty(feishuMsgVo.getContent())){
+ contentSb.append("{");
+ contentSb.append("\"tag\": \"div\",");
+ contentSb.append("\"text\": {");
+ contentSb.append("\"content\": \"" + feishuMsgVo.getContent() + "\",");
+ contentSb.append("\"tag\": \"lark_md\"");
+ contentSb.append("}");
+ contentSb.append("},");
+ };
+ contentSb.append("{\"tag\": \"hr\"},");
+
+ //内容英文
+ if (StrUtil.isNotEmpty(feishuMsgVo.getContentEn())){
+ contentSb.append("{");
+ contentSb.append("\"tag\": \"div\",");
+ contentSb.append("\"text\": {");
+ contentSb.append("\"content\": \"" + feishuMsgVo.getContentEn() + "\",");
+ contentSb.append("\"tag\": \"lark_md\"");
+ contentSb.append("}");
+ contentSb.append("},");
+ };
+
+
+
+ contentSb.append("{");
+ contentSb.append("\"actions\": [");
+ contentSb.append("{");
+ contentSb.append("\"tag\": \"button\",");
+ contentSb.append("\"text\": {");
+ contentSb.append("\"content\": \"view\",");
+ contentSb.append("\"tag\": \"plain_text\"");
+ contentSb.append("},");
+ contentSb.append("\"type\": \"primary\",");
+ contentSb.append("\"url\": \" "+ feishuMsgVo.getUrl() +" \"");
+ contentSb.append("}");
+ contentSb.append("],");
+ contentSb.append("\"tag\": \"action\"");
+ contentSb.append("}");
+ contentSb.append("],");
+
+
+
+ contentSb.append("\"header\": {");
+ contentSb.append("\"template\": \"green\",");
+ contentSb.append("\"title\": {");
+ contentSb.append("\"content\": \" " + feishuMsgVo.getTitle() + " \",");
+ contentSb.append("\"tag\": \"plain_text\"");
+ contentSb.append("}");
+ contentSb.append("}");
+ contentSb.append("}");
+
+ JSONObject jsonObject = JSONObject.parseObject(contentSb.toString());
+
+ String content = JSONObject.parseObject(
+ JSONObject.parseObject(JSONArray.parseArray(jsonObject.get("elements").toString()).get(0).toString()).get("text").toString())
+ .get("content").toString();
+ String contentEn = JSONObject.parseObject(
+ JSONObject.parseObject(JSONArray.parseArray(jsonObject.get("elements").toString()).get(2).toString()).get("text").toString())
+ .get("content").toString();
+
+ JSONObject elementTwo =
+ JSONObject.parseObject(JSONArray.parseArray(jsonObject.get("elements").toString()).get(1).toString());
+ JSONObject elementFour =
+ JSONObject.parseObject(JSONArray.parseArray(jsonObject.get("elements").toString()).get(3).toString());
+
+ //处理内容中的双引号(将尖括号替换成双引号)
+ JSONObject elementOne = getJsonObject(jsonObject, content);
+ JSONObject elementThree = getJsonObject(jsonObject, contentEn);
+
+ JSONArray jsonArray = new JSONArray();
+ jsonArray.add(elementOne);
+ jsonArray.add(elementTwo);
+ jsonArray.add(elementThree);
+ jsonArray.add(elementFour);
+ jsonObject.put("elements",jsonArray);
+
+ // 设置请求参数
+ JSONObject paramsMap = new JSONObject();
+ paramsMap.put("user_ids", userIds);
+ paramsMap.put("msg_type", "interactive");
+ paramsMap.put("card", jsonObject);
+
+ // 发送请求给飞书
+ String response = HttpRequestUtil.getResponseOfPOST(batchSendMessageUrl, headerMap, paramsMap.toJSONString());
+ // 获取返回结果
+ JSONObject tokenJson = JSONObject.parseObject(response);
+ if(!tokenJson.get("code").toString().equals("0")) {
+ log.error("请求出现异常:" + tokenJson.get("msg") + " " + tokenJson);
+ }
+ return tokenJson.get("msg").toString();
+ }
+
+
+ /**
+ * 订阅领域(飞书消息)
+ * @param userIds
+ * @param feishuMsgVo
+ * @return
+ * @throws IOException
+ */
+ public String sendCardMsgTerritory(String[] userIds, FeishuMsgVo feishuMsgVo) throws IOException {
+ String token = getTenantAccessToken();
+ // 设置请求头
+ Map headerMap = new HashMap<>();
+ headerMap.put("Authorization", "Bearer " + token);
+ headerMap.put("Content-Type", "application/json; charset=utf-8");
+
+ // 示例
+ StringBuilder contentSb = new StringBuilder();
+ contentSb.append("{");
+ contentSb.append("\"elements\": [");
+ // 内容中文
+ if (StrUtil.isNotEmpty(feishuMsgVo.getContent())){
+ contentSb.append("{");
+ contentSb.append("\"tag\": \"div\",");
+ contentSb.append("\"text\": {");
+ contentSb.append("\"content\": \"" + feishuMsgVo.getContent() + "\",");
+ contentSb.append("\"tag\": \"lark_md\"");
+ contentSb.append("}");
+ contentSb.append("},");
+ };
+ contentSb.append("{\"tag\": \"hr\"},");
+
+ //内容英文
+ if (StrUtil.isNotEmpty(feishuMsgVo.getContentEn())){
+ contentSb.append("{");
+ contentSb.append("\"tag\": \"div\",");
+ contentSb.append("\"text\": {");
+ contentSb.append("\"content\": \"" + feishuMsgVo.getContentEn() + "\",");
+ contentSb.append("\"tag\": \"lark_md\"");
+ contentSb.append("}");
+ contentSb.append("},");
+ };
+
+ contentSb.append("{");
+ contentSb.append("\"actions\": [");
+ contentSb.append("{");
+ contentSb.append("\"tag\": \"button\",");
+ contentSb.append("\"text\": {");
+ contentSb.append("\"content\": \"view\",");
+ contentSb.append("\"tag\": \"plain_text\"");
+ contentSb.append("},");
+ contentSb.append("\"type\": \"primary\",");
+ contentSb.append("\"url\": \" "+ feishuMsgVo.getUrl() +" \"");
+ contentSb.append("}");
+ contentSb.append("],");
+ contentSb.append("\"tag\": \"action\"");
+ contentSb.append("}");
+ contentSb.append("],");
+
+
+
+ contentSb.append("\"header\": {");
+ contentSb.append("\"template\": \"green\",");
+ contentSb.append("\"title\": {");
+ contentSb.append("\"content\": \" " + feishuMsgVo.getTitle() + " \",");
+ contentSb.append("\"tag\": \"plain_text\"");
+ contentSb.append("}");
+ contentSb.append("}");
+ contentSb.append("}");
+
+ JSONObject jsonObject = JSONObject.parseObject(contentSb.toString());
+
+ // 设置请求参数
+ JSONObject paramsMap = new JSONObject();
+ paramsMap.put("user_ids", userIds);
+ paramsMap.put("msg_type", "interactive");
+ paramsMap.put("card", jsonObject);
+
+ // 发送请求给飞书
+ String response = HttpRequestUtil.getResponseOfPOST(batchSendMessageUrl, headerMap, paramsMap.toJSONString());
+ // 获取返回结果
+ JSONObject tokenJson = JSONObject.parseObject(response);
+ if(!tokenJson.get("code").toString().equals("0")) {
+ log.error("请求出现异常:" + tokenJson.get("msg") + " " + tokenJson);
+ }
+ return tokenJson.get("msg").toString();
+ }
+ /**
+ * 预警推送(飞书消息)
+ * @param userIds
+ * @param feishuMsgVo
+ * @return
+ * @throws IOException
+ */
+ public String sendCardMsgWarn(String[] userIds, FeishuMsgVo feishuMsgVo) throws IOException {
+ String token = getTenantAccessToken();
+ // 设置请求头
+ Map headerMap = new HashMap<>();
+ headerMap.put("Authorization", "Bearer " + token);
+ headerMap.put("Content-Type", "application/json; charset=utf-8");
+
+ // 示例
+ StringBuilder contentSb = new StringBuilder();
+ contentSb.append("{");
+ contentSb.append("\"elements\": [");
+ // 内容中文
+ if (StrUtil.isNotEmpty(feishuMsgVo.getContent())){
+ contentSb.append("{");
+ contentSb.append("\"tag\": \"div\",");
+ contentSb.append("\"text\": {");
+ contentSb.append("\"content\": \"" + feishuMsgVo.getContent() + "\"\n,");
+ contentSb.append("\"tag\": \"lark_md\"");
+ contentSb.append("}");
+ contentSb.append("},");
+ };
+ // 编号,标题,新车型实施日期,在产车实施日期
+ contentSb.append("{");
+ contentSb.append("\"tag\": \"div\",");
+ contentSb.append("\"text\": {");
+ contentSb.append("\"content\": \"" + "编号: " + feishuMsgVo.getRegulationNo() + "\n")
+ .append("标题: "+feishuMsgVo.getDocumentTitleCn() + "\n");
+ if (StringUtils.isNotBlank(feishuMsgVo.getNewTypeExecutionDate())) {
+ contentSb.append("新车型实施日期: " + feishuMsgVo.getNewTypeExecutionDate() + "\n");
+ } else {
+ contentSb.append("新车型实施日期: "+ "\n");
+ }
+ if (StringUtils.isNotBlank(feishuMsgVo.getNewVehicleExecutionDate())) {
+ contentSb.append("在产车实施日期: " + feishuMsgVo.getNewVehicleExecutionDate());
+ } else {
+ contentSb.append("在产车实施日期: ");
+ }
+ contentSb.append("\",");
+
+ contentSb.append("\"tag\": \"lark_md\"");
+ contentSb.append("}");
+ contentSb.append("},");
+ contentSb.append("{\"tag\": \"hr\"},");
+
+ //内容英文
+ if (StrUtil.isNotEmpty(feishuMsgVo.getContentEn())){
+ contentSb.append("{");
+ contentSb.append("\"tag\": \"div\",");
+ contentSb.append("\"text\": {");
+ contentSb.append("\"content\": \"" + feishuMsgVo.getContentEn() + "\"\n,");
+ contentSb.append("\"tag\": \"lark_md\"");
+ contentSb.append("}");
+ contentSb.append("},");
+ };
+ // 编号,标题,新车型实施日期,在产车实施日期
+ contentSb.append("{");
+ contentSb.append("\"tag\": \"div\",");
+ contentSb.append("\"text\": {");
+ contentSb.append("\"content\": \"" + "Regulation No: " + feishuMsgVo.getRegulationNo() + "\n")
+ .append("Title: " + feishuMsgVo.getDocumentTitleEn() + "\n");
+ if (StringUtils.isNotBlank(feishuMsgVo.getNewTypeExecutionDate())) {
+ contentSb.append("New Type Execution Date: " + feishuMsgVo.getNewTypeExecutionDate() + "\n");
+ } else {
+ contentSb.append("New Type Execution Date: "+ "\n");
+ }
+ if (StringUtils.isNotBlank(feishuMsgVo.getNewVehicleExecutionDate())) {
+ contentSb.append("New Vehicle Execution Date: " + feishuMsgVo.getNewVehicleExecutionDate());
+ } else {
+ contentSb.append("New Vehicle Execution Date: ");
+ }
+ contentSb.append("\",");
+ contentSb.append("\"tag\": \"lark_md\"");
+ contentSb.append("}");
+ contentSb.append("},");
+
+
+ contentSb.append("{");
+ contentSb.append("\"actions\": [");
+ contentSb.append("{");
+ contentSb.append("\"tag\": \"button\",");
+ contentSb.append("\"text\": {");
+ contentSb.append("\"content\": \"view\",");
+ contentSb.append("\"tag\": \"plain_text\"");
+ contentSb.append("},");
+ contentSb.append("\"type\": \"primary\",");
+ contentSb.append("\"url\": \" "+ feishuMsgVo.getUrl() +" \"");
+ contentSb.append("}");
+ contentSb.append("],");
+ contentSb.append("\"tag\": \"action\"");
+ contentSb.append("}");
+ contentSb.append("],");
+
+
+
+ contentSb.append("\"header\": {");
+ contentSb.append("\"template\": \"green\",");
+ contentSb.append("\"title\": {");
+ contentSb.append("\"content\": \" " + feishuMsgVo.getTitle() + " \",");
+ contentSb.append("\"tag\": \"plain_text\"");
+ contentSb.append("}");
+ contentSb.append("}");
+ contentSb.append("}");
+
+ JSONObject jsonObject = JSONObject.parseObject(contentSb.toString());
+
+ // 设置请求参数
+ JSONObject paramsMap = new JSONObject();
+ paramsMap.put("user_ids", userIds);
+ paramsMap.put("msg_type", "interactive");
+ paramsMap.put("card", jsonObject);
+
+ // 发送请求给飞书
+ String response = HttpRequestUtil.getResponseOfPOST(batchSendMessageUrl, headerMap, paramsMap.toJSONString());
+ // 获取返回结果
+ JSONObject tokenJson = JSONObject.parseObject(response);
+ if(!tokenJson.get("code").toString().equals("0")) {
+ log.error("请求出现异常:" + tokenJson.get("msg") + " " + tokenJson);
+ }
+ return tokenJson.get("msg").toString();
+ }
+ /**
+ * 虚拟清单发布(飞书消息)
+ * @param userIds
+ * @param feishuMsgVo
+ * @return
+ * @throws IOException
+ */
+ public String sendCardMsgVirtua(String[] userIds, FeishuMsgVo feishuMsgVo,
+ List serialNumberAddList,List serialNumberDeleteList) throws IOException {
+ String token = getTenantAccessToken();
+ // 设置请求头
+ Map headerMap = new HashMap<>();
+ headerMap.put("Authorization", "Bearer " + token);
+ headerMap.put("Content-Type", "application/json; charset=utf-8");
+
+ // 示例
+ StringBuilder contentSb = new StringBuilder();
+ contentSb.append("{");
+ contentSb.append("\"elements\": [");
+ // 内容中文
+ if (StrUtil.isNotEmpty(feishuMsgVo.getContent())){
+ contentSb.append("{");
+ contentSb.append("\"tag\": \"div\",");
+ contentSb.append("\"text\": {");
+ contentSb.append("\"content\": \"" + feishuMsgVo.getContent() + "\"\n,");
+ contentSb.append("\"tag\": \"lark_md\"");
+ contentSb.append("}");
+ contentSb.append("},");
+ };
+ if(ObjectUtils.isNotEmpty(serialNumberAddList)){
+ int count = 1;
+ contentSb.append("{");
+ contentSb.append("\"tag\": \"div\",");
+ contentSb.append("\"text\": {");
+ contentSb.append("\"content\": \"" + count + ". 新增文档: " + StringUtils.join(serialNumberAddList,",") + "\"\n,");
+ contentSb.append("\"tag\": \"lark_md\"");
+ contentSb.append("}");
+ contentSb.append("},");
+ }
+ if(ObjectUtils.isNotEmpty(serialNumberDeleteList)){
+ int count = 2;
+ contentSb.append("{");
+ contentSb.append("\"tag\": \"div\",");
+ contentSb.append("\"text\": {");
+ contentSb.append("\"content\": \"" + count + ". 删除文档: " + StringUtils.join(serialNumberDeleteList,",") + "\"\n,");
+ contentSb.append("\"tag\": \"lark_md\"");
+ contentSb.append("}");
+ contentSb.append("},");
+ }
+ contentSb.append("{\"tag\": \"hr\"},");
+
+ //内容英文
+ if (StrUtil.isNotEmpty(feishuMsgVo.getContentEn())){
+ contentSb.append("{");
+ contentSb.append("\"tag\": \"div\",");
+ contentSb.append("\"text\": {");
+ contentSb.append("\"content\": \"" + feishuMsgVo.getContentEn() + "\"\n,");
+ contentSb.append("\"tag\": \"lark_md\"");
+ contentSb.append("}");
+ contentSb.append("},");
+ };
+
+ if (ObjectUtils.isNotEmpty(serialNumberAddList)) {
+ int count = 1;
+ contentSb.append("{");
+ contentSb.append("\"tag\": \"div\",");
+ contentSb.append("\"text\": {");
+ contentSb.append("\"content\": \"" + count + ". New regulations: " + StringUtils.join(serialNumberAddList,",") + "\"\n,");
+ contentSb.append("\"tag\": \"lark_md\"");
+ contentSb.append("}");
+ contentSb.append("},");
+ }
+ if (ObjectUtils.isNotEmpty(serialNumberDeleteList)) {
+ int count = 2;
+ contentSb.append("{");
+ contentSb.append("\"tag\": \"div\",");
+ contentSb.append("\"text\": {");
+ contentSb.append("\"content\": \"" + count + ". Remove regulations: " + StringUtils.join(serialNumberDeleteList,",") + "\"\n,");
+ contentSb.append("\"tag\": \"lark_md\"");
+ contentSb.append("}");
+ contentSb.append("},");
+ }
+
+ contentSb.append("{");
+ contentSb.append("\"actions\": [");
+ contentSb.append("{");
+ contentSb.append("\"tag\": \"button\",");
+ contentSb.append("\"text\": {");
+ contentSb.append("\"content\": \"view\",");
+ contentSb.append("\"tag\": \"plain_text\"");
+ contentSb.append("},");
+ contentSb.append("\"type\": \"primary\",");
+ contentSb.append("\"url\": \" "+ feishuMsgVo.getUrl() +" \"");
+ contentSb.append("}");
+ contentSb.append("],");
+ contentSb.append("\"tag\": \"action\"");
+ contentSb.append("}");
+ contentSb.append("],");
+
+
+
+ contentSb.append("\"header\": {");
+ contentSb.append("\"template\": \"green\",");
+ contentSb.append("\"title\": {");
+ contentSb.append("\"content\": \" " + feishuMsgVo.getTitle() + " \",");
+ contentSb.append("\"tag\": \"plain_text\"");
+ contentSb.append("}");
+ contentSb.append("}");
+ contentSb.append("}");
+
+ JSONObject jsonObject = JSONObject.parseObject(contentSb.toString());
+
+ // 设置请求参数
+ JSONObject paramsMap = new JSONObject();
+ paramsMap.put("user_ids", userIds);
+ paramsMap.put("msg_type", "interactive");
+ paramsMap.put("card", jsonObject);
+
+ // 发送请求给飞书
+ String response = HttpRequestUtil.getResponseOfPOST(batchSendMessageUrl, headerMap, paramsMap.toJSONString());
+ // 获取返回结果
+ JSONObject tokenJson = JSONObject.parseObject(response);
+ if(!tokenJson.get("code").toString().equals("0")) {
+ log.error("请求出现异常:" + tokenJson.get("msg") + " " + tokenJson);
+ }
+ return tokenJson.get("msg").toString();
+ }
+
+ @NotNull
+ private JSONObject getJsonObject(JSONObject jsonObject, String content) {
+ String contentReplaceAll = content.replaceAll("<", "\"");
+
+ JSONObject jsonObject1 = JSONObject.parseObject(
+ JSONObject.parseObject(
+ JSONArray.parseArray(jsonObject.get("elements").toString()).get(0).toString())
+ .get("text").toString());
+ jsonObject1.put("content",contentReplaceAll);
+
+
+ JSONObject elementOne =
+ JSONObject.parseObject(JSONArray.parseArray(jsonObject.get("elements").toString()).get(0).toString());
+
+ elementOne.put("text",jsonObject1);
+ return elementOne;
+ }
+
/**
* 翻译文本
* 参数:
@@ -674,4 +1146,86 @@ public class FeishuServiceImpl implements IFeishuService {
}
}
+ /**
+ * 发送消息
+ * @param thirdIds
+ * @param feishuMsgVo
+ */
+ @Override
+ public void sendCard(String[] thirdIds, FeishuMsg2Vo feishuMsgVo) throws IOException {
+ String token = getTenantAccessToken();
+ // 设置请求头
+ Map headerMap = new HashMap<>();
+ headerMap.put("Authorization", "Bearer " + token);
+ headerMap.put("Content-Type", "application/json; charset=utf-8");
+
+
+ String sendJson = "{\n" +
+ " \"config\": {\n" +
+ " \"wide_screen_mode\": true\n" +
+ " },\n" +
+ " \"elements\": [\n" +
+ " {\n" +
+ " \"tag\": \"markdown\",\n" +
+ " \"content\": \"" + feishuMsgVo.getCnContentUpper() + "\"\n" +
+ " },\n" +
+ " {\n" +
+ " \"tag\": \"markdown\",\n" +
+ " \"content\": \"" + feishuMsgVo.getCnContentLower() + "\"\n" +
+ " },\n" +
+ " {\n" +
+ " \"tag\": \"hr\"\n" +
+ " },\n" +
+ " {\n" +
+ " \"tag\": \"markdown\",\n" +
+ " \"content\": \"" + feishuMsgVo.getEnContentUpper() + "\"\n" +
+ " },\n" +
+ " {\n" +
+ " \"tag\": \"markdown\",\n" +
+ " \"content\": \"" + feishuMsgVo.getEnContentLower() + "\"\n" +
+ " },\n" +
+ " {\n" +
+ " \"actions\": [\n" +
+ " {\n" +
+ " \"tag\": \"button\",\n" +
+ " \"text\": {\n" +
+ " \"content\": \"View\",\n" +
+ " \"tag\": \"plain_text\"\n" +
+ " },\n" +
+ " \"type\": \"primary\",\n" +
+ " \"url\": \"" + feishuMsgVo.getUrl() + "\"\n" +
+ " }\n" +
+ " ],\n" +
+ " \"tag\": \"action\"\n" +
+ " }\n" +
+ " ],\n" +
+ " \"header\": {\n" +
+ " \"template\": \"" + feishuMsgVo.getColor() + "\",\n" +
+ " \"title\": {\n" +
+ " \"content\": \"" + feishuMsgVo.getTitle() + "\",\n" +
+ " \"tag\": \"plain_text\"\n" +
+ " }\n" +
+ " }\n" +
+ "}";
+
+ JSONObject jsonObject = JSONObject.parseObject(sendJson.toString());
+
+ // 设置请求参数
+ JSONObject paramsMap = new JSONObject();
+
+ paramsMap.put("user_ids", thirdIds);
+
+ paramsMap.put("msg_type", "interactive");
+ paramsMap.put("card", jsonObject);
+
+ // 发送请求给飞书
+ String response = HttpRequestUtil.getResponseOfPOST(batchSendMessageUrl, headerMap, paramsMap.toJSONString());
+ // 获取返回结果
+ JSONObject tokenJson = JSONObject.parseObject(response);
+ if (!tokenJson.get("code").toString().equals("0")) {
+ log.error("请求出现异常:" + tokenJson.get("msg") + " " + tokenJson);
+ }
+
+ }
+
}
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/feishu/vo/FeishuMsg2Vo.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/feishu/vo/FeishuMsg2Vo.java
new file mode 100644
index 000000000..11d701482
--- /dev/null
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/feishu/vo/FeishuMsg2Vo.java
@@ -0,0 +1,20 @@
+package com.jero.modules.feishu.vo;
+
+import lombok.Data;
+
+@Data
+public class FeishuMsg2Vo {
+
+ private String title; //标题
+
+ private String color; //颜色
+
+ private String enContentUpper; //英文内容上部
+ private String enContentLower; //英文内容下部
+
+ private String cnContentUpper; //中文内容上部
+ private String cnContentLower; //中文内容下部
+
+ private String url; //回调的网址
+
+}
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/feishu/vo/FeishuMsgVo.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/feishu/vo/FeishuMsgVo.java
index 0aee3596c..98bccf88f 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/feishu/vo/FeishuMsgVo.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/feishu/vo/FeishuMsgVo.java
@@ -12,6 +12,8 @@ public class FeishuMsgVo {
private String content; //内容
+ private String contentEn; //内容英文
+
private String taskType; //任务类型
private String regulationNo; //法规编号
@@ -26,5 +28,14 @@ public class FeishuMsgVo {
private String assignee; //评估人 适用范围:责任人提交通知发起人(设计符合性,pre-homo符合性,验证符合性)
+ private String documentTitleCn; //文档标题中文
+
+ private String documentTitleEn; //文档标题英文
+
+ private String newTypeExecutionDate; //新车型实施日期
+
+ private String newVehicleExecutionDate; //在产车实施日期
+
+
}
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsOpinionGather/controller/LawsOpinionGatherEOController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsOpinionGather/controller/LawsOpinionGatherEOController.java
index 6eec32d23..69864ff66 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsOpinionGather/controller/LawsOpinionGatherEOController.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsOpinionGather/controller/LawsOpinionGatherEOController.java
@@ -8,13 +8,16 @@ import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson.JSONObject;
import com.jero.common.api.vo.Result;
import com.jero.common.system.query.QueryGenerator;
+import com.jero.common.system.vo.LoginUser;
import com.jero.modules.lawsOpinionGather.entity.LawsOpinionGatherEO;
import com.jero.modules.lawsOpinionGather.service.ILawsOpinionGatherEOService;
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.modules.system.service.ISysUserService;
import lombok.extern.slf4j.Slf4j;
import com.jero.common.system.base.controller.JeroController;
+import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -37,6 +40,8 @@ import com.jero.common.aspect.annotation.AutoLog;
public class LawsOpinionGatherEOController extends JeroController {
@Autowired
private ILawsOpinionGatherEOService lawsOpinionGatherEOService;
+ @Autowired
+ private ISysUserService sysUserService;
/**
* 分页列表查询
@@ -57,6 +62,19 @@ public class LawsOpinionGatherEOController extends JeroController queryWrapper = QueryGenerator.initQueryWrapper(lawsOpinionGatherEO, req.getParameterMap());
queryWrapper.orderByDesc("start_time");
+ /**
+ * 创建查询数据权限,超级管理员可以看到所有的数据,并且能删除,其它用户只能看到自己创建、或自己为评估人的数据。
+ */
+ boolean administrator = this.sysUserService.isAdministrator();
+ if(!administrator){
+ LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+ //如果不是超级管理员,获取自己所有参与过的法规意见收集
+ queryWrapper.and(query -> {
+ query.eq("create_by",currentUser.getUsername());
+ query.or().like("evaluator_ids",currentUser.getId());
+ });
+ }
+
Page page = new Page(pageNo, pageSize);
IPage pageList = lawsOpinionGatherEOService.page(page, queryWrapper);
this.lawsOpinionGatherEOService.disposeData(pageList.getRecords(),cut);
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsOpinionGather/entity/LawsOpinionGatherEO.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsOpinionGather/entity/LawsOpinionGatherEO.java
index 78205d522..91adffa7a 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsOpinionGather/entity/LawsOpinionGatherEO.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsOpinionGather/entity/LawsOpinionGatherEO.java
@@ -122,4 +122,8 @@ public class LawsOpinionGatherEO implements Serializable {
@ApiModelProperty(value = "评估人ids,多个之间使用英文逗号分隔")
private String evaluatorIds;
+
+ /**删除标识 true 可以删除,false,没有权限删除**/
+ @TableField(exist = false)
+ private boolean deleteFlag = false;
}
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsOpinionGather/job/LawsOpinionGatherRemindJob.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsOpinionGather/job/LawsOpinionGatherRemindJob.java
index 9bbfc9b96..fe112748e 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsOpinionGather/job/LawsOpinionGatherRemindJob.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsOpinionGather/job/LawsOpinionGatherRemindJob.java
@@ -2,6 +2,7 @@ package com.jero.modules.lawsOpinionGather.job;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.jero.common.exception.JeroBootException;
import com.jero.modules.lawsOpinionGather.entity.LawsOpinionGatherEO;
import com.jero.modules.lawsOpinionGather.enums.GatherResultEnum;
import com.jero.modules.lawsOpinionGather.service.ILawsOpinionGatherEOService;
@@ -41,18 +42,45 @@ public class LawsOpinionGatherRemindJob implements Job {
if(CollectionUtils.isNotEmpty(lawsOpinionGatherEOList)){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- Date currentDate = new Date();
-
+ //Date currentDate = new Date();
+ String now = sdf.format(new Date());
//获取后一天的时间
- Calendar calendar=new GregorianCalendar();
- calendar.setTime(new Date());
- calendar.add(Calendar.DATE,1);
- Date nextDay = calendar.getTime();
+ //Calendar calendar=new GregorianCalendar();
+ //calendar.setTime(new Date());
+ //calendar.add(Calendar.DATE,1);
+ //Date nextDay = calendar.getTime();
- String nextDayStr = sdf.format(nextDay);
+ //String nextDayStr = sdf.format(nextDay);
lawsOpinionGatherEOList.forEach(lawsOpinionGatherEO -> {
- if(StringUtils.equals(nextDayStr,sdf.format(lawsOpinionGatherEO.getEndTime()))){
+ String endTime = sdf.format(lawsOpinionGatherEO.getEndTime());
+ int days = 0;
+ try {
+ days = (int) (sdf.parse(endTime).getTime() - sdf.parse(now).getTime()) / (24 * 60 * 60 * 1000);
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new JeroBootException("日期转换错误");
+ }
+ if (days == 3) {
+ List userIdList = this.workFlowFeignClient.getLawsOpinionGatherFlowAssigneeList(lawsOpinionGatherEO.getId());
+ if(CollectionUtils.isNotEmpty(userIdList)){
+ JSONObject sendJsonObject = new JSONObject();
+ sendJsonObject.put("msgType", MsgTypeEnum.LAWS_OPOMOPM_GATHER_ENALUATOR_EXPIRE_REMIND_THREE_DAYS_BEFORE_MSG.getValue());
+ sendJsonObject.put("lawsOpinionGatherId",lawsOpinionGatherEO.getId());
+ sendJsonObject.put("userIdList",userIdList);
+ this.lawsOpinionGatherEOService.workFlowSendMsg(sendJsonObject);
+ }
+ } else if (endTime.equals(now)) {
+ List userIdList = this.workFlowFeignClient.getLawsOpinionGatherFlowAssigneeList(lawsOpinionGatherEO.getId());
+ if(CollectionUtils.isNotEmpty(userIdList)){
+ JSONObject sendJsonObject = new JSONObject();
+ sendJsonObject.put("msgType", MsgTypeEnum.LAWS_OPOMOPM_GATHER_ENALUATOR_EXPIRE_REMIND_TODAY_MSG.getValue());
+ sendJsonObject.put("lawsOpinionGatherId",lawsOpinionGatherEO.getId());
+ sendJsonObject.put("userIdList",userIdList);
+ this.lawsOpinionGatherEOService.workFlowSendMsg(sendJsonObject);
+ }
+ }
+ /*if(StringUtils.equals(nextDayStr,sdf.format(lawsOpinionGatherEO.getEndTime()))){
List userIdList = this.workFlowFeignClient.getLawsOpinionGatherFlowAssigneeList(lawsOpinionGatherEO.getId());
if(CollectionUtils.isNotEmpty(userIdList)){
JSONObject sendJsonObject = new JSONObject();
@@ -62,7 +90,7 @@ public class LawsOpinionGatherRemindJob implements Job {
sendJsonObject.put("userIdList",userIdList);
this.lawsOpinionGatherEOService.workFlowSendMsg(sendJsonObject);
}
- }
+ }*/
});
}
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsOpinionGather/service/impl/LawsOpinionAssessmentResultEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsOpinionGather/service/impl/LawsOpinionAssessmentResultEOServiceImpl.java
index df0bd1d1a..8722fb974 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsOpinionGather/service/impl/LawsOpinionAssessmentResultEOServiceImpl.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsOpinionGather/service/impl/LawsOpinionAssessmentResultEOServiceImpl.java
@@ -191,14 +191,23 @@ public class LawsOpinionAssessmentResultEOServiceImpl extends ServiceImpl lawsOpinionGatherEOList,String cut) {
if(CollectionUtils.isNotEmpty(lawsOpinionGatherEOList)){
+ boolean administrator = this.sysUserService.isAdministrator();
+ LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
//树形数据字典
List technologyTerritoryList = sysCategoryService.list();
lawsOpinionGatherEOList.forEach(lawsOpinionGather -> {
@@ -220,6 +243,10 @@ public class LawsOpinionGatherEOServiceImpl extends ServiceImpl opinionArchiveFileList = iOSSFileService.getFileInfosByConnectId(StringUtils.join(lawsOpinionGather.getOpinionArchiveId(), ","));
lawsOpinionGather.setOpinionArchiveFileList(opinionArchiveFileList);
}
+ //如果当前用户是超级管理员,或是这条数据的创建人,给删除权限。
+ if(StringUtils.equals(lawsOpinionGather.getCreateBy(),currentUser.getUsername()) || administrator){
+ lawsOpinionGather.setDeleteFlag(true);
+ }
});
}
}
@@ -265,51 +292,143 @@ public class LawsOpinionGatherEOServiceImpl extends ServiceImpl userIdList = new ArrayList<>();
- String msgContentEN = "";
- String msgTitle = "";
+ //String msgContentEN = "";
+ //String msgTitle = "";
+
+ LawsOpinionGatherEO lawsOpinionGatherEO = queryById(lawsOpinionGatherId);
+ //英文标题
+ BussDocumentLibraryEO bussDocumentLibraryEO = bussDocumentLibraryEOService.queryById(lawsOpinionGatherEO.getStandId());
+
+ //Map lawsOpinionGatherPrcInfo = this.workFlowFeignClient.getLawsOpinionGatherPrcInfo(lawsOpinionGatherId);
String initiator = "";
+ String title = MessageType2Enum.REGULATION_OPINION_COLLECTION.getCn() + "/" + MessageType2Enum.REGULATION_OPINION_COLLECTION.getEn();
+ String endTime = new SimpleDateFormat("yyyy-MM-dd").format(lawsOpinionGatherEO.getEndTime());//截止日期
+ //String prcNum = lawsOpinionGatherPrcInfo.get("prcNum");
+ //String prcName = lawsOpinionGatherPrcInfo.get("prcName");
+ String cnContentUpper = "";
+ String cnContentLower = "";
+ String enContentUpper = "";
+ String enContentLower = "";
if(StringUtils.equals(msgType,MsgTypeEnum.LAWS_OPOMOPM_GATHER_START_MSG.getValue())){
userIdList.addAll(Arrays.asList(jsonObject.getString("evaluatorIds").split(",")));
- String endTime = jsonObject.getString("endTime"); //截止日期
- msgContentEN = "You recieved the Collection of Legislative Comments of "+serialNumber+" . The due date is "+endTime+". Please check and address it in a timely manner.";
- msgTitle = "You have a Collection of Legislative Comments task to complete";
+
+ //msgContentEN = "You recieved the Collection of Legislative Comments of "+serialNumber+" . The due date is "+endTime+". Please check and address it in a timely manner.";
+ //msgTitle = "You have a Collection of Legislative Comments task to complete";
String currentUserId = jsonObject.getString("currentUserId"); //当前操作用户id
SysUser currentUser = sysUserService.getBaseMapper().selectOne(new QueryWrapper().lambda().eq(SysUser::getId, currentUserId));
initiator = currentUser.getUsername();
+ cnContentUpper = "您好,请及时查看处理此项任务,谢谢!";
+ cnContentLower = "编号: " + lawsOpinionGatherEO.getSerialNumber() +
+ "\n标题: " + lawsOpinionGatherEO.getTitle() +
+ "\n发起人: " + initiator +
+ "\n截止时间: " + endTime;
+ enContentUpper = "Hello! Please check and address the task in a timely manner. Thank you!";
+ enContentLower = "Regulation No: " + lawsOpinionGatherEO.getSerialNumber() +
+ "\nTitle: " + bussDocumentLibraryEO.getTitleEn() +
+ "\nInitiator: " + initiator +
+ "\nDue Date: " + endTime;
+
}else if(StringUtils.equals(msgType,MsgTypeEnum.LAWS_OPOMOPM_GATHER_ENALUATOR_SUBMIT_MSG.getValue())){
String currentUserId = jsonObject.getString("currentUserId"); //当前操作用户id
SysUser currentUser = sysUserService.getBaseMapper().selectOne(new QueryWrapper().lambda().eq(SysUser::getId, currentUserId));
userIdList.add(jsonObject.getString("initiatorUserId"));
- msgContentEN = currentUser.getUsername() + " has submitted the collection process of Collection of Legislative Comments of "+serialNumber+", please check it in time.";
- msgTitle = "You have a Collection of Legislative Comments task completed";
+ //msgContentEN = currentUser.getUsername() + " has submitted the collection process of Collection of Legislative Comments of "+serialNumber+", please check it in time.";
+ //msgTitle = "You have a Collection of Legislative Comments task completed";
- initiator = MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName();
- }else if(StringUtils.equals(msgType, MsgTypeEnum.LAWS_OPOMOPM_GATHER_ENALUATOR_EXPIRE_REMIND_MSG.getValue())){
+ initiator = currentUser.getUsername();
+ cnContentUpper = "您好,"+ currentUser.getUsername() +"已提交反馈意见,请查看";
+ cnContentLower = "编号: " + lawsOpinionGatherEO.getSerialNumber() +
+ "\n标题: " + lawsOpinionGatherEO.getTitle() +
+ "\n发起人: " + initiator +
+ "\n截止时间: " + endTime;
+ enContentUpper = "Hello! "+ currentUser.getUsername() +" has submitted the comments. Please check it";
+ enContentLower = "Regulation No: " + lawsOpinionGatherEO.getSerialNumber() +
+ "\nTitle: " + bussDocumentLibraryEO.getTitleEn() +
+ "\nInitiator: " + initiator +
+ "\nDue Date: " + endTime;
+
+ } else if (StringUtils.equals(msgType, MsgTypeEnum.LAWS_OPOMOPM_GATHER_ENALUATOR_EXPIRE_REMIND_THREE_DAYS_BEFORE_MSG.getValue())) {
userIdList = (List) jsonObject.get("userIdList");
- msgContentEN = "The the Collection of Legislative Comments of "+serialNumber+" will expire tomorrow . Please check and address it in time.";
- msgTitle = "You have a Collection of Legislative Comments task to complete";
+
+ cnContentUpper = "您好,该任务将于3天后到期,请及时查看处理,谢谢!";
+ cnContentLower = "编号: " + lawsOpinionGatherEO.getSerialNumber() +
+ "\n标题: " + lawsOpinionGatherEO.getTitle() +
+ "\n发起人: 系统通知" ;
+ enContentUpper = "Hello! This task will expire in 3 days. Please check and address the task in a timely manner. Thank you!";
+ enContentLower = "Regulation No: " + lawsOpinionGatherEO.getSerialNumber() +
+ "\nTitle: " + bussDocumentLibraryEO.getTitleEn() +
+ "\nInitiator: " + MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName();
+
+ } else if (StringUtils.equals(msgType, MsgTypeEnum.LAWS_OPOMOPM_GATHER_ENALUATOR_EXPIRE_REMIND_TODAY_MSG.getValue())){
+ userIdList = (List) jsonObject.get("userIdList");
+
+ cnContentUpper = "您好,该任务将于今天到期,请尽快查看处理,谢谢!";
+ cnContentLower = "编号: " + lawsOpinionGatherEO.getSerialNumber() +
+ "\n标题: " + lawsOpinionGatherEO.getTitle() +
+ "\n发起人: 系统通知";
+ enContentUpper = "Hello! This task will expire today. Please check and address the task ASAP. Thank you!";
+ enContentLower = "Regulation No: " + lawsOpinionGatherEO.getSerialNumber() +
+ "\nTitle: " + bussDocumentLibraryEO.getTitleEn() +
+ "\nInitiator: " + MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName();
+
+ } else if (StringUtils.equals(msgType, MsgTypeEnum.LAWS_OPOMOPM_GATHER_COMPLETE_MSG.getValue())) {
+ userIdList.add((String) jsonObject.get("initiatorUserId"));
+
+ cnContentUpper = "您好,该任务已完成,请查看";
+ cnContentLower = "编号: " + lawsOpinionGatherEO.getSerialNumber() +
+ "\n标题: " + lawsOpinionGatherEO.getTitle() +
+ "\n发起人: 系统通知"+
+ "\n截止时间: " + endTime;
+ enContentUpper = "Hello! The task is completed. Please check it.";
+ enContentLower = "Regulation No: " + lawsOpinionGatherEO.getSerialNumber() +
+ "\nTitle: " + bussDocumentLibraryEO.getTitleEn() +
+ "\nInitiator: " + MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName() +
+ "\nDue Date: " + endTime;
+ }
+ /*else if(StringUtils.equals(msgType, MsgTypeEnum.LAWS_OPOMOPM_GATHER_ENALUATOR_EXPIRE_REMIND_MSG.getValue())){
+ userIdList = (List) jsonObject.get("userIdList");
+ //msgContentEN = "The the Collection of Legislative Comments of "+serialNumber+" will expire tomorrow . Please check and address it in time.";
+ //msgTitle = "You have a Collection of Legislative Comments task to complete";
initiator = MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName();
+ }*/
+
+ List thirdIdList = new ArrayList<>();
+ List sysUsers = sysUserService.listByIds(userIdList);
+ if (ObjectUtils.isNotEmpty(sysUsers)) {
+ thirdIdList = sysUsers.stream().map(SysUser::getThirdId).collect(Collectors.toList());
}
-
//飞书跳转链接
- String hrefFeishu = backUrl + JumpLinkEnum.TASK_AFFIRM_LINK.getLink();
+ String hrefFeishu = backUrl + JumpLinkEnum.FGPG_TODO_CENTER_LINK.getLink();
+ try {
+ FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo();
+ feishuMsgVo.setTitle(title);
+ feishuMsgVo.setCnContentUpper(cnContentUpper);
+ feishuMsgVo.setCnContentLower(cnContentLower);
+ feishuMsgVo.setEnContentUpper(enContentUpper);
+ feishuMsgVo.setEnContentLower(enContentLower);
+ feishuMsgVo.setUrl(hrefFeishu);
+ feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); // 颜色
+ feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo);
+ } catch (IOException e) {
+ log.error("飞书消息推送失败");
+ }
//系统内部跳转链接
- String href = "" + " View details" + "";
- String contentInfo = msgContentEN + " " + href;
+ //String href = "" + " View details" + "";
+ //String contentInfo = msgContentEN + " " + href;
- Map sendMessageMap = new HashMap<>();
- sendMessageMap.put("hrefFeishu",hrefFeishu);
- sendMessageMap.put("contentInfo",contentInfo);
+ //Map sendMessageMap = new HashMap<>();
+ //sendMessageMap.put("hrefFeishu",hrefFeishu);
+ //sendMessageMap.put("contentInfo",contentInfo);
- SendMessageUtils.sendMessage(msgTitle,msgContentEN,userIdList,lawsOpinionGatherId,sendMessageMap,null,MessageTypeEnum.COLLECTION_OF_LEGISLATIVE_COMMENTS,initiator);
+ //SendMessageUtils.sendMessage(msgTitle,msgContentEN,userIdList,lawsOpinionGatherId,sendMessageMap,null,MessageTypeEnum.COLLECTION_OF_LEGISLATIVE_COMMENTS,initiator);
}
@Override
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/controller/LawsTechnologyEvaluationEOController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/controller/LawsTechnologyEvaluationEOController.java
index ca025a19e..eb3ec59fd 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/controller/LawsTechnologyEvaluationEOController.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/controller/LawsTechnologyEvaluationEOController.java
@@ -3,19 +3,26 @@ package com.jero.modules.lawsTechnologyEvaluation.controller;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson.JSONObject;
import com.jero.common.api.vo.Result;
import com.jero.common.system.query.QueryGenerator;
+import com.jero.common.system.vo.LoginUser;
import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationEO;
+import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationFlowDetailEO;
import com.jero.modules.lawsTechnologyEvaluation.service.ILawsTechnologyEvaluationEOService;
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.modules.lawsTechnologyEvaluation.service.ILawsTechnologyEvaluationFlowDetailEOService;
+import com.jero.modules.system.service.ISysUserService;
import lombok.extern.slf4j.Slf4j;
import com.jero.common.system.base.controller.JeroController;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
@@ -40,6 +47,10 @@ import com.jero.common.aspect.annotation.AutoLog;
public class LawsTechnologyEvaluationEOController extends JeroController {
@Autowired
private ILawsTechnologyEvaluationEOService lawsTechnologyEvaluationEOService;
+ @Autowired
+ private ISysUserService sysUserService;
+ @Autowired
+ private ILawsTechnologyEvaluationFlowDetailEOService lawsTechnologyEvaluationFlowDetailEOService;
/**
* 分页列表查询
@@ -60,6 +71,10 @@ public class LawsTechnologyEvaluationEOController extends JeroController queryWrapper = QueryGenerator.initQueryWrapper(lawsTechnologyEvaluationEO, req.getParameterMap());
queryWrapper.orderByDesc("start_time");
+ boolean administrator = this.sysUserService.isAdministrator();
+ if(!administrator){
+ this.lawsTechnologyEvaluationEOService.createQueryPermission(queryWrapper,lawsTechnologyEvaluationEO,administrator);
+ }
Page page = new Page(pageNo, pageSize);
IPage pageList = lawsTechnologyEvaluationEOService.page(page, queryWrapper);
this.lawsTechnologyEvaluationEOService.disposeData(pageList.getRecords(),cut);
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/entity/LawsTechnologyEvaluationEO.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/entity/LawsTechnologyEvaluationEO.java
index 37a7d210f..5cb9f2248 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/entity/LawsTechnologyEvaluationEO.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/entity/LawsTechnologyEvaluationEO.java
@@ -149,4 +149,7 @@ public class LawsTechnologyEvaluationEO implements Serializable {
@ApiModelProperty(value = "流程编号")
private String prcNum;
+ /**删除标识 true 可以删除,false,没有权限删除**/
+ @TableField(exist = false)
+ private boolean deleteFlag = false;
}
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/job/LawsTechnologyEvaluationRemindJob.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/job/LawsTechnologyEvaluationRemindJob.java
index 66cc0531d..e2cdfab4b 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/job/LawsTechnologyEvaluationRemindJob.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/job/LawsTechnologyEvaluationRemindJob.java
@@ -2,6 +2,7 @@ package com.jero.modules.lawsTechnologyEvaluation.job;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.jero.common.exception.JeroBootException;
import com.jero.modules.lawsOpinionGather.enums.GatherResultEnum;
import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationEO;
import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationFlowDetailEO;
@@ -52,14 +53,16 @@ public class LawsTechnologyEvaluationRemindJob implements Job {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//获取后一天的时间
- Calendar calendar=new GregorianCalendar();
- calendar.setTime(new Date());
- calendar.add(Calendar.DATE,1);
- Date nextDay = calendar.getTime();
+ //Calendar calendar=new GregorianCalendar();
+ //calendar.setTime(new Date());
+ //calendar.add(Calendar.DATE,1);
+ //Date nextDay = calendar.getTime();
- String nextDayStr = sdf.format(nextDay);
+ //String nextDayStr = sdf.format(nextDay);
+
+ String now = sdf.format(new Date());
LawsTechnologyEvaluationEOList.forEach(lawsTechnologyEvaluationEO -> {
- if(StringUtils.equals(nextDayStr,sdf.format(lawsTechnologyEvaluationEO.getEndTime()))){
+ /*if(StringUtils.equals(nextDayStr,sdf.format(lawsTechnologyEvaluationEO.getEndTime()))){
String actiProcInstIds = flowDetailList.stream().filter(flowDetail -> {
boolean flag = false;
@@ -80,6 +83,56 @@ public class LawsTechnologyEvaluationRemindJob implements Job {
this.lawsTechnologyEvaluationEOService.workFlowSendMsg(sendJsonObject);
}
}
+ }*/
+ String endTime = sdf.format(lawsTechnologyEvaluationEO.getEndTime());
+ int days = 0;
+ try {
+ days = (int) (sdf.parse(endTime).getTime() - sdf.parse(now).getTime()) / (24 * 60 * 60 * 1000);
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new JeroBootException("日期转换错误");
+ }
+
+ if (days == 3) {
+ //到期前3天
+ String actiProcInstIds = flowDetailList.stream().filter(flowDetail -> {
+ boolean flag = false;
+ if (StringUtils.equals(lawsTechnologyEvaluationEO.getId(), flowDetail.getLawsTechnologyEvaluationId())) {
+ flag = true;
+ }
+ return flag;
+ }).map(LawsTechnologyEvaluationFlowDetailEO::getActiProcInstId).distinct().collect(Collectors.joining(","));
+
+ if(StringUtils.isNotEmpty(actiProcInstIds)){
+ List userIdList = this.workFlowFeignClient.getTaskAssigneeListByPrcIds(actiProcInstIds);
+ if(CollectionUtils.isNotEmpty(userIdList)){
+ JSONObject sendJsonObject = new JSONObject();
+ sendJsonObject.put("msgType", MsgTypeEnum.LAWS_TECHNOLOGY_EVALUATION_EXPIRE_REMIND_THREE_DAYS_BEFORE_MSG.getValue());
+ sendJsonObject.put("lawsTechnologyEvaluationId",lawsTechnologyEvaluationEO.getId());
+ sendJsonObject.put("userIdList",userIdList);
+ this.lawsTechnologyEvaluationEOService.workFlowSendMsg(sendJsonObject);
+ }
+ }
+ } else if (endTime.equals(now)){
+ //当天
+ String actiProcInstIds = flowDetailList.stream().filter(flowDetail -> {
+ boolean flag = false;
+ if (StringUtils.equals(lawsTechnologyEvaluationEO.getId(), flowDetail.getLawsTechnologyEvaluationId())) {
+ flag = true;
+ }
+ return flag;
+ }).map(LawsTechnologyEvaluationFlowDetailEO::getActiProcInstId).distinct().collect(Collectors.joining(","));
+
+ if(StringUtils.isNotEmpty(actiProcInstIds)){
+ List userIdList = this.workFlowFeignClient.getTaskAssigneeListByPrcIds(actiProcInstIds);
+ if(CollectionUtils.isNotEmpty(userIdList)){
+ JSONObject sendJsonObject = new JSONObject();
+ sendJsonObject.put("msgType", MsgTypeEnum.LAWS_TECHNOLOGY_EVALUATION_EXPIRE_REMIND_TODAY_MSG.getValue());
+ sendJsonObject.put("lawsTechnologyEvaluationId",lawsTechnologyEvaluationEO.getId());
+ sendJsonObject.put("userIdList",userIdList);
+ this.lawsTechnologyEvaluationEOService.workFlowSendMsg(sendJsonObject);
+ }
+ }
}
});
}
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/mapper/LawsTechnologyEvaluationFlowDetailEOMapper.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/mapper/LawsTechnologyEvaluationFlowDetailEOMapper.java
index da6be153c..f2c103e1f 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/mapper/LawsTechnologyEvaluationFlowDetailEOMapper.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/mapper/LawsTechnologyEvaluationFlowDetailEOMapper.java
@@ -14,4 +14,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public interface LawsTechnologyEvaluationFlowDetailEOMapper extends BaseMapper {
+ LawsTechnologyEvaluationFlowDetailEO queryByEvaluationId(@Param("lawsTechnologyEvaluationId") String lawsTechnologyEvaluationId);
+
}
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/mapper/xml/LawsTechnologyEvaluationFlowDetailEOMapper.xml b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/mapper/xml/LawsTechnologyEvaluationFlowDetailEOMapper.xml
index 72cc2a9f6..c1fdf969b 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/mapper/xml/LawsTechnologyEvaluationFlowDetailEOMapper.xml
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/mapper/xml/LawsTechnologyEvaluationFlowDetailEOMapper.xml
@@ -14,4 +14,11 @@
-
\ No newline at end of file
+
+
+
+
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/service/ILawsTechnologyEvaluationEOService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/service/ILawsTechnologyEvaluationEOService.java
index b2bad56ff..83138cd5f 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/service/ILawsTechnologyEvaluationEOService.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/service/ILawsTechnologyEvaluationEOService.java
@@ -1,6 +1,7 @@
package com.jero.modules.lawsTechnologyEvaluation.service;
import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.common.api.vo.Result;
import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationEO;
@@ -92,4 +93,6 @@ public interface ILawsTechnologyEvaluationEOService extends IService batchCompleteTask(JSONObject jsonObject);
+
+ void createQueryPermission(QueryWrapper queryWrapper, LawsTechnologyEvaluationEO lawsTechnologyEvaluationEO,boolean administrator);
}
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/service/impl/LawsTechnologyEvaluationComplianceResultEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/service/impl/LawsTechnologyEvaluationComplianceResultEOServiceImpl.java
index cc0ed5c10..6dff7f905 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/service/impl/LawsTechnologyEvaluationComplianceResultEOServiceImpl.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/service/impl/LawsTechnologyEvaluationComplianceResultEOServiceImpl.java
@@ -11,11 +11,13 @@ import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.FileUtils;
import com.jero.common.util.oss.CosBootUtil;
import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationComplianceResultEO;
+import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationEO;
import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationFlowDetailEO;
import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationResultEO;
import com.jero.modules.lawsTechnologyEvaluation.enums.ComplianceResultEnum;
import com.jero.modules.lawsTechnologyEvaluation.mapper.LawsTechnologyEvaluationComplianceResultEOMapper;
import com.jero.modules.lawsTechnologyEvaluation.service.ILawsTechnologyEvaluationComplianceResultEOService;
+import com.jero.modules.lawsTechnologyEvaluation.service.ILawsTechnologyEvaluationEOService;
import com.jero.modules.lawsTechnologyEvaluation.service.ILawsTechnologyEvaluationFlowDetailEOService;
import com.jero.modules.lawsTechnologyEvaluation.service.ILawsTechnologyEvaluationResultEOService;
import com.jero.modules.oss.entity.OSSFile;
@@ -64,6 +66,8 @@ public class LawsTechnologyEvaluationComplianceResultEOServiceImpl extends Servi
private ILawsTechnologyEvaluationFlowDetailEOService lawsTechnologyEvaluationFlowDetailEOService;
@Autowired
private ISysUserService sysUserService;
+ @Autowired
+ private ILawsTechnologyEvaluationEOService lawsTechnologyEvaluationEOService;
/**
* 保存
@@ -173,6 +177,15 @@ public class LawsTechnologyEvaluationComplianceResultEOServiceImpl extends Servi
Map params) {
String ids = (String)params.get("ids");
String cut = (String)params.get("cut");
+ String lawsTechnologyEvaluationId = (String)params.get("lawsTechnologyEvaluationId");
+ if(StringUtils.isEmpty(lawsTechnologyEvaluationId)){
+ if(StringUtils.equals(cut,CutEnum.CN.getValue())){
+ throw new JeroBootException("法规技术评估id为空,请检查!");
+ }else if(StringUtils.equals(cut,CutEnum.EN.getValue())){
+ throw new JeroBootException("The lawsTechnologyEvaluationId is empty, please check!");
+ }
+ }
+ LawsTechnologyEvaluationEO lawsTechnologyEvaluationEO = this.lawsTechnologyEvaluationEOService.queryById(lawsTechnologyEvaluationId);
if(!StringUtils.isEmpty(ids)){
lawsTechnologyEvaluationComplianceResultEO.setIds(ids);
@@ -187,12 +200,12 @@ public class LawsTechnologyEvaluationComplianceResultEOServiceImpl extends Servi
if(org.apache.commons.lang3.StringUtils.equals(cut, CutEnum.CN.getValue())){
title = "相关章节,问题说明,附件";
bottomTitle = "符合性结果:";
- fileName = "评估结果" + ".xls";
+ fileName = lawsTechnologyEvaluationEO.getSerialNumber() + " 评估结果" + ".xls";
sheetName = "反馈结果";
}else if(org.apache.commons.lang3.StringUtils.equals(cut,CutEnum.EN.getValue())){
title = "Related section,Problem description,Accessory";
bottomTitle = "Compliance results:";
- fileName = "Evaluation results" + ".xls";
+ fileName = lawsTechnologyEvaluationEO.getSerialNumber() + " Evaluation results" + ".xls";
sheetName = "Feedback result";
}
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/service/impl/LawsTechnologyEvaluationEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/service/impl/LawsTechnologyEvaluationEOServiceImpl.java
index b1e7617bd..39dfd81ee 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/service/impl/LawsTechnologyEvaluationEOServiceImpl.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/service/impl/LawsTechnologyEvaluationEOServiceImpl.java
@@ -6,19 +6,22 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
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.constant.enums.CutEnum;
-import com.jero.common.constant.enums.MessageTypeEnum;
-import com.jero.common.constant.enums.ModuleEnum;
+import com.jero.common.constant.enums.*;
import com.jero.common.exception.JeroBootException;
+import com.jero.common.system.vo.LoginUser;
import com.jero.generater.modules.online.cgform.entity.OnlCgformField;
import com.jero.generater.modules.online.cgform.service.impl.OnlCgformFieldServiceImpl;
+import com.jero.modules.document.entity.BussDocumentLibraryEO;
import com.jero.modules.document.enums.FieldTypeEnum;
import com.jero.modules.document.mapper.BussDocumentLibraryEOMapper;
import com.jero.modules.document.service.impl.BussDocumentLibraryEOServiceImpl;
+import com.jero.modules.feishu.service.IFeishuService;
+import com.jero.modules.feishu.vo.FeishuMsg2Vo;
import com.jero.modules.lawsOpinionGather.enums.GatherResultEnum;
import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationEO;
import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationFlowDetailEO;
import com.jero.modules.lawsTechnologyEvaluation.mapper.LawsTechnologyEvaluationEOMapper;
+import com.jero.modules.lawsTechnologyEvaluation.mapper.LawsTechnologyEvaluationFlowDetailEOMapper;
import com.jero.modules.lawsTechnologyEvaluation.service.*;
import com.jero.modules.project.enums.JumpLinkEnum;
import com.jero.modules.project.enums.MsgTypeEnum;
@@ -40,17 +43,21 @@ import com.jero.modules.wkflow.enums.FlowTypeEnum;
import com.jero.modules.wkflow.feginClient.WorkFlowFeignClient;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
+import org.apache.shiro.SecurityUtils;
import org.jeecg.modules.jmreport.common.constant.CommonConstant;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.io.File;
+import java.io.IOException;
import java.io.OutputStream;
+import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@@ -103,6 +110,11 @@ public class LawsTechnologyEvaluationEOServiceImpl extends ServiceImpl datas, String cut) {
if(CollectionUtils.isNotEmpty(datas)){
+ boolean administrator = this.sysUserService.isAdministrator();
+ LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
List categoryList = sysCategoryService.list();
for (LawsTechnologyEvaluationEO data : datas) {
if(StringUtils.isNotEmpty(data.getEvaluationMethods())){
@@ -254,6 +268,9 @@ public class LawsTechnologyEvaluationEOServiceImpl extends ServiceImpl userIdList = new ArrayList<>();
- String msgContentEN = "";
- String msgTitle = "";
+ //String msgContentEN = "";
+ //String msgTitle = "";
String initiator = "";
+ String lawsTechnologyEvaluationId = jsonObject.getString("lawsTechnologyEvaluationId");
+ LawsTechnologyEvaluationEO lawsTechnologyEvaluationEO = queryById(lawsTechnologyEvaluationId);
+ //LawsTechnologyEvaluationFlowDetailEO flowDetailEO = flowDetailEOMapper.queryByEvaluationId(lawsTechnologyEvaluationId);
+ //String number = flowDetailEO.getPrcNum();
+ //String name = flowDetailEO.getPrcName();
+ String endTime = new SimpleDateFormat("yyyy-MM-dd").format(lawsTechnologyEvaluationEO.getEndTime());
+
+ //英文标题
+ BussDocumentLibraryEO bussDocumentLibraryEO = bussDocumentLibraryEOService.queryById(lawsTechnologyEvaluationEO.getStandId());
+
+ String title = MessageType2Enum.REGULATION_TECHNICAL_ASSESSMENT.getCn() + "/" + MessageType2Enum.REGULATION_TECHNICAL_ASSESSMENT.getEn();
+ String cnContentUpper = "";
+ String cnContentLower = "";
+ String enContentUpper = "";
+ String enContentLower = "";
if(StringUtils.equals(msgType, MsgTypeEnum.LAWS_TECHNOLOGY_EVALUATION_START_MSG.getValue())){
userIdList.add(jsonObject.getString("evaluationId"));
- String endTime = jsonObject.getString("endTime"); //截止日期
+ //String endTime = jsonObject.getString("endTime"); //截止日期
//您收到GB 7258 的法规技术评估流程任务,请及时查看处理。
- msgContentEN = "You recieved the Regulatory and technical assessment of "+serialNumber+" . The due date is "+endTime+". Please check and address it in a timely manner.";
- msgTitle = "You have a Regulatory and technical assessment task to complete";
+ //msgContentEN = "You recieved the Regulatory and technical assessment of "+serialNumber+" . The due date is "+endTime+". Please check and address it in a timely manner.";
+ //msgTitle = "You have a Regulatory and technical assessment task to complete";
String currentUserId = jsonObject.getString("currentUserId"); //当前操作用户id
SysUser currentUser = sysUserService.getBaseMapper().selectOne(new QueryWrapper().lambda().eq(SysUser::getId, currentUserId));
initiator = currentUser.getUsername();
+ cnContentUpper = "您好,请及时查看处理此项任务,谢谢!";
+ cnContentLower = "编号:" + lawsTechnologyEvaluationEO.getSerialNumber() +
+ "\n标题: " + lawsTechnologyEvaluationEO.getTitle() +
+ "\n发起人: " + initiator +
+ "\n截止时间: " + endTime;
+ enContentUpper = "Hello! Please check and address the task in a timely manner. Thank you!";
+ enContentLower = "Regulation No :" + lawsTechnologyEvaluationEO.getSerialNumber() +
+ "\nTitle: " + bussDocumentLibraryEO.getTitleEn() +
+ "\nInitiator: " + initiator +
+ "\nDue Date: " + endTime;
}else if(StringUtils.equals(msgType,MsgTypeEnum.LAWS_TECHNOLOGY_EVALUATION_ENALUATOR_SUBMIT_MSG.getValue())){
String currentUserId = jsonObject.getString("currentUserId"); //当前操作用户id
SysUser currentUser = this.sysUserService.getBaseMapper().selectOne(new QueryWrapper().lambda().eq(SysUser::getId, currentUserId));
userIdList.add(jsonObject.getString("initiatorUserId"));
//XXX(人员账号)已提交GB 7258 的法规意见收集流程,请及时查看审核。
- msgContentEN = currentUser.getUsername() + " has submitted the collection process of Regulatory and technical assessment of "+serialNumber+", Please check and address it in time.";
- msgTitle = "You have a Regulatory and technical assessment task to complete";
+ //msgContentEN = currentUser.getUsername() + " has submitted the collection process of Regulatory and technical assessment of "+serialNumber+", Please check and address it in time.";
+ //msgTitle = "You have a Regulatory and technical assessment task to complete";
- initiator = MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName();
+ initiator = currentUser.getUsername();
+ cnContentUpper = "您好,"+ currentUser.getUsername() +"已提交评估结果,请审核";
+ cnContentLower = "编号:" + lawsTechnologyEvaluationEO.getSerialNumber() +
+ "\n标题: " + lawsTechnologyEvaluationEO.getTitle() +
+ "\n发起人: " + initiator +
+ "\n截止时间: " + endTime;
+ enContentUpper = "Hello! "+ currentUser.getUsername() +" has submitted the assessment result. Please review it";
+ enContentLower = "Regulation No :" + lawsTechnologyEvaluationEO.getSerialNumber() +
+ "\nTitle: " + bussDocumentLibraryEO.getTitleEn() +
+ "\nInitiator: " + initiator +
+ "\nDue Date: " + endTime;
}else if(StringUtils.equals(msgType, MsgTypeEnum.LAWS_TECHNOLOGY_EVALUATION_AUDIT_ACCEPTED_MSG.getValue())){
userIdList.add(jsonObject.getString("evaluationId"));
//您提交的GB 7258 的法规技术评估流程已通过。
- msgContentEN = "The regulatory and technical assessment process for "+serialNumber+" you submitted has passed.";
- msgTitle = "You have a Regulatory and technical assessment task completed";
-
- initiator = MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName();
+ //msgContentEN = "The regulatory and technical assessment process for "+serialNumber+" you submitted has passed.";
+ //msgTitle = "You have a Regulatory and technical assessment task completed";
+ String currentUserId = jsonObject.getString("currentUserId"); //当前操作用户id
+ SysUser currentUser = this.sysUserService.getBaseMapper().selectOne(new QueryWrapper().lambda().eq(SysUser::getId, currentUserId));
+ initiator = currentUser.getUsername();
+ cnContentUpper = "您好,您提交的评估结果已通过";
+ cnContentLower = "编号:" + lawsTechnologyEvaluationEO.getSerialNumber() +
+ "\n标题: " + lawsTechnologyEvaluationEO.getTitle() +
+ "\n发起人: " + initiator +
+ "\n截止时间: " + endTime;
+ enContentUpper = "Hello! The assessment result you submitted has passed";
+ enContentLower = "Regulation No :" + lawsTechnologyEvaluationEO.getSerialNumber() +
+ "\nTitle: " + bussDocumentLibraryEO.getTitleEn() +
+ "\nInitiator: " + initiator +
+ "\nDue Date: " + endTime;
}else if(StringUtils.equals(msgType, MsgTypeEnum.LAWS_TECHNOLOGY_EVALUATION_AUDIT_REJECTED_MSG.getValue())){
userIdList.add(jsonObject.getString("evaluationId"));
//您提交的GB 7258 的法规技术评估流程已被退回,请及时查看处理。
- msgContentEN = "The regulatory and technical assessment process of "+serialNumber+" you submitted has been returned, Please check and address it in time.";
- msgTitle = "You have a Regulatory and technical assessment task to complete";
+ //msgContentEN = "The regulatory and technical assessment process of "+serialNumber+" you submitted has been returned, Please check and address it in time.";
+ //msgTitle = "You have a Regulatory and technical assessment task to complete";
+ String currentUserId = jsonObject.getString("currentUserId"); //当前操作用户id
+ SysUser currentUser = this.sysUserService.getBaseMapper().selectOne(new QueryWrapper().lambda().eq(SysUser::getId, currentUserId));
+ initiator = currentUser.getUsername();
+ cnContentUpper = "您好,您提交的评估结果被退回,请及时查看处理";
+ cnContentLower = "编号:" + lawsTechnologyEvaluationEO.getSerialNumber() +
+ "\n标题: " + lawsTechnologyEvaluationEO.getTitle() +
+ "\n发起人: " + initiator +
+ "\n截止时间: " + endTime;
+ enContentUpper = "Hello! The assessment result you submitted has been rejected. Please check and address it in a timely manner";
+ enContentLower = "Regulation No :" + lawsTechnologyEvaluationEO.getSerialNumber() +
+ "\nTitle: " + bussDocumentLibraryEO.getTitleEn() +
+ "\nInitiator: " + initiator +
+ "\nDue Date: " + endTime;
+ } else if (StringUtils.equals(msgType, MsgTypeEnum.LAWS_TECHNOLOGY_EVALUATION_EXPIRE_REMIND_THREE_DAYS_BEFORE_MSG.getValue())) {
+ cnContentUpper = "您好,该任务将于3天后到期,请及时查看处理,谢谢!";
+ cnContentLower = "编号:" + lawsTechnologyEvaluationEO.getSerialNumber() +
+ "\n标题: " + lawsTechnologyEvaluationEO.getTitle() +
+ "\n发起人: 系统通知";
+ enContentUpper = "Hello! This task will expire in 3 days. Please check and address the task in a timely manner. Thank you!";
+ enContentLower = "Regulation No :" + lawsTechnologyEvaluationEO.getSerialNumber() +
+ "\nTitle: " + bussDocumentLibraryEO.getTitleEn() +
+ "\nInitiator: " + MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName();
+ userIdList = (List) jsonObject.get("userIdList");
- initiator = MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName();
- }else if(StringUtils.equals(msgType, MsgTypeEnum.LAWS_TECHNOLOGY_EVALUATION_EXPIRE_REMIND_MSG.getValue())){
+ } else if (StringUtils.equals(msgType, MsgTypeEnum.LAWS_TECHNOLOGY_EVALUATION_EXPIRE_REMIND_TODAY_MSG.getValue())) {
+ cnContentUpper = "您好,该任务将于今天到期,请尽快查看处理,谢谢!";
+ cnContentLower = "编号:" + lawsTechnologyEvaluationEO.getSerialNumber() +
+ "\n标题: " + lawsTechnologyEvaluationEO.getTitle() +
+ "\n发起人: 系统通知";
+ enContentUpper = "Hello! This task will expire today. Please check and address the task ASAP. Thank you!";
+ enContentLower = "Regulation No :" + lawsTechnologyEvaluationEO.getSerialNumber() +
+ "\nTitle: " + bussDocumentLibraryEO.getTitleEn() +
+ "\nInitiator: " + MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName();
+ userIdList = (List) jsonObject.get("userIdList");
+
+ } /*else if (StringUtils.equals(msgType, MsgTypeEnum.LAWS_TECHNOLOGY_EVALUATION_EXPIRE_REMIND_MSG.getValue())) {
userIdList = (List) jsonObject.get("userIdList");
//您GB 7258的法规技术评估流程将于明天结束,请及时查看处理
- msgContentEN = "The the Regulatory and technical assessment of "+serialNumber+" will expire tomorrow. Please check and address it in time.";
- msgTitle = "You have a Regulatory and technical assessment task to complete";
+ //msgContentEN = "The the Regulatory and technical assessment of "+serialNumber+" will expire tomorrow. Please check and address it in time.";
+ //msgTitle = "You have a Regulatory and technical assessment task to complete";
initiator = MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName();
+ } */
+
+ List thirdIdList = new ArrayList<>();
+ List sysUsers = sysUserService.listByIds(userIdList);
+ if (ObjectUtils.isNotEmpty(sysUsers)) {
+ thirdIdList = sysUsers.stream().map(SysUser::getThirdId).collect(Collectors.toList());
}
-
//飞书跳转链接
- String hrefFeishu = backUrl + JumpLinkEnum.TASK_AFFIRM_LINK.getLink();
+ String hrefFeishu = backUrl + JumpLinkEnum.FGPG_TODO_CENTER_LINK.getLink();
+ try {
+ FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo();
+ feishuMsgVo.setTitle(title);
+ feishuMsgVo.setCnContentUpper(cnContentUpper);
+ feishuMsgVo.setCnContentLower(cnContentLower);
+ feishuMsgVo.setEnContentUpper(enContentUpper);
+ feishuMsgVo.setEnContentLower(enContentLower);
+ feishuMsgVo.setUrl(hrefFeishu);
+ feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); // 颜色
+ feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo);
+ } catch (IOException e) {
+ log.error("飞书消息推送失败");
+ }
//系统内部跳转链接
- String href = "" + " View details" + "";
- String contentInfo = msgContentEN + " " + href;
+ //String href = "" + " View details" + "";
+ //String contentInfo = msgContentEN + " " + href;
- Map sendMessageMap = new HashMap<>();
- sendMessageMap.put("hrefFeishu",hrefFeishu);
- sendMessageMap.put("contentInfo",contentInfo);
+ //Map sendMessageMap = new HashMap<>();
+ //sendMessageMap.put("hrefFeishu",hrefFeishu);
+ //sendMessageMap.put("contentInfo",contentInfo);
- SendMessageUtils.sendMessage(msgTitle,msgContentEN,userIdList,lawsTechnologyEvaluationId,sendMessageMap,null, MessageTypeEnum.REGULATORY_AND_TECHNICAL_ASSESSMENT,initiator);
+ //SendMessageUtils.sendMessage(msgTitle,msgContentEN,userIdList,lawsTechnologyEvaluationId,sendMessageMap,null, MessageTypeEnum.REGULATORY_AND_TECHNICAL_ASSESSMENT,initiator);
}
@Override
@@ -713,6 +827,31 @@ public class LawsTechnologyEvaluationEOServiceImpl extends ServiceImpl().success("手动结束成功!");
}
+ @Override
+ public void createQueryPermission(QueryWrapper queryWrapper, LawsTechnologyEvaluationEO lawsTechnologyEvaluationEO,boolean administrator) {
+ if(!administrator){
+ //如果不是超级管理员,获取自己创建的和所有参与过的法规技术评估数据。
+ LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+
+ QueryWrapper flowDetailQueryWrap = new QueryWrapper<>();
+ flowDetailQueryWrap.lambda().eq(LawsTechnologyEvaluationFlowDetailEO::getEvaluatorId,currentUser.getId());
+ List flowDetailEOList = this.lawsTechnologyEvaluationFlowDetailEOService.list(flowDetailQueryWrap);
+
+ queryWrapper.and(query -> {
+ query.eq("create_by",currentUser.getUsername());
+ if(CollectionUtils.isNotEmpty(flowDetailEOList)){
+ List lawsTechnologyEvaluationIdList = flowDetailEOList.stream().map(LawsTechnologyEvaluationFlowDetailEO::getLawsTechnologyEvaluationId).distinct().collect(Collectors.toList());
+ query.or(q -> {
+ for (String lawsTechnologyEvaluationId : lawsTechnologyEvaluationIdList) {
+ q.or().like("id",lawsTechnologyEvaluationId);
+ }
+ });
+ }
+ });
+
+ }
+ }
+
private String getTreeName(String cut, List categoryList, List technologyTerritoryList) {
StringBuilder sb = new StringBuilder();
for (String technologyTerritory : technologyTerritoryList) {
@@ -769,20 +908,15 @@ public class LawsTechnologyEvaluationEOServiceImpl extends ServiceImpl 100){
+ if(StringUtils.equals(cut,CutEnum.CN.getValue())){
+ errorMsg += "条款名称长度不能超过100;";
+ }else if (StringUtils.equals(cut,CutEnum.EN.getValue())){
+ errorMsg += "Item Name length of the cannot exceed 100;";
+ }
+ countError++;
}
- countError++;
- }else if(itemName.length() > 100){
- if(StringUtils.equals(cut,CutEnum.CN.getValue())){
- errorMsg += "条款名称长度不能超过100;";
- }else if (StringUtils.equals(cut,CutEnum.EN.getValue())){
- errorMsg += "Item Name length of the cannot exceed 100;";
- }
- countError++;
}
if(StringUtils.isEmpty(itemContent)){
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/service/impl/LawsTechnologyEvaluationItemResultEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/service/impl/LawsTechnologyEvaluationItemResultEOServiceImpl.java
index 177e76a01..8664dec9c 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/service/impl/LawsTechnologyEvaluationItemResultEOServiceImpl.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/service/impl/LawsTechnologyEvaluationItemResultEOServiceImpl.java
@@ -255,6 +255,14 @@ public class LawsTechnologyEvaluationItemResultEOServiceImpl extends ServiceImpl
public void exportZip(HttpServletResponse response, HttpServletRequest request, LawsTechnologyEvaluationItemResultEO lawsTechnologyEvaluationItemResultEO, Map params) {
String ids = (String)params.get("ids");
String cut = (String)params.get("cut");
+ String serialNumber = (String)params.get("serialNumber");
+ if(StringUtils.isEmpty(serialNumber)){
+ if(StringUtils.equals(cut,CutEnum.CN.getValue())){
+ throw new JeroBootException("编号为空,请检查!");
+ }else if(StringUtils.equals(cut,CutEnum.EN.getValue())){
+ throw new JeroBootException("The serialNumber is empty, please check!");
+ }
+ }
QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(lawsTechnologyEvaluationItemResultEO, request.getParameterMap());
if(StringUtils.isNotEmpty(ids)){
List idList = Arrays.asList(ids.split(","));
@@ -267,10 +275,10 @@ public class LawsTechnologyEvaluationItemResultEOServiceImpl extends ServiceImpl
String fileName = "";
if(StringUtils.equals(cut, CutEnum.CN.getValue())){
title = "条款号,条款名称,条款内容,评估人,评估方式,技术文件名称,章节,符合性结果,意见,附件,反馈时间";
- fileName = "条款评估结果" + ".xls";
+ fileName = serialNumber + " 条款评估结果" + ".xls";
}else if(StringUtils.equals(cut,CutEnum.EN.getValue())){
title = "Item No.,Item Name,Item Content,Assessor,Evaluation method,Name of technical document,Chapter,Compliance Results,Opinion,Enclosure,Feedback Time";
- fileName = "Item Evaluation results" + ".xls";
+ fileName = serialNumber + " Item Evaluation results" + ".xls";
}
OutputStream os = null;
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/controller/ProblemKnowledgeBaseEOController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/controller/ProblemKnowledgeBaseEOController.java
index ec31393a5..3ab0e2c98 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/controller/ProblemKnowledgeBaseEOController.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/controller/ProblemKnowledgeBaseEOController.java
@@ -13,6 +13,7 @@ import com.jero.modules.problemKnowledgeBase.service.IProblemKnowledgeBaseEOServ
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.modules.system.service.ISysUserService;
import lombok.extern.slf4j.Slf4j;
import com.jero.common.system.base.controller.JeroController;
import org.springframework.beans.factory.annotation.Autowired;
@@ -37,6 +38,8 @@ import com.jero.common.aspect.annotation.AutoLog;
public class ProblemKnowledgeBaseEOController extends JeroController {
@Autowired
private IProblemKnowledgeBaseEOService problemKnowledgeBaseEOService;
+ @Autowired
+ private ISysUserService sysUserService;
/**
* 分页列表查询
@@ -54,6 +57,11 @@ public class ProblemKnowledgeBaseEOController extends JeroController queryWrapper = QueryGenerator.initQueryWrapper(problemKnowledgeBaseEO, req.getParameterMap());
this.problemKnowledgeBaseEOService.createQueryPermission(queryWrapper,problemKnowledgeBaseEO);
queryWrapper.orderByDesc("create_time");
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/entity/ProblemKnowledgeBaseEO.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/entity/ProblemKnowledgeBaseEO.java
index 870abb198..81caaff2c 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/entity/ProblemKnowledgeBaseEO.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/entity/ProblemKnowledgeBaseEO.java
@@ -1,6 +1,7 @@
package com.jero.modules.problemKnowledgeBase.entity;
import java.io.Serializable;
+import java.util.Date;
import java.util.List;
import com.baomidou.mybatisplus.annotation.IdType;
@@ -156,7 +157,7 @@ public class ProblemKnowledgeBaseEO implements Serializable {
/**发布日期*/
@Excel(name = "发布日期", width = 15)
@ApiModelProperty(value = "发布日期")
- private java.lang.String releaseTime;
+ private Date releaseTime;
/**点赞总数量*/
@TableField(exist = false)
@@ -195,4 +196,9 @@ public class ProblemKnowledgeBaseEO implements Serializable {
/**附件展示数组*/
@TableField(exist = false)
private List accessoryFileNameList;
+
+ /**发布状态*/
+ @Excel(name = "发布状态", width = 15)
+ @ApiModelProperty(value = "发布状态")
+ private String releaseStatus;
}
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/impl/ProblemKnowledgeBaseCommentEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/impl/ProblemKnowledgeBaseCommentEOServiceImpl.java
index 7395b1b6c..a5a6e52ac 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/impl/ProblemKnowledgeBaseCommentEOServiceImpl.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/impl/ProblemKnowledgeBaseCommentEOServiceImpl.java
@@ -1,29 +1,43 @@
package com.jero.modules.problemKnowledgeBase.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jero.common.constant.enums.MessageTypeEnum;
import com.jero.common.system.query.QueryGenerator;
+import com.jero.common.system.vo.LoginUser;
+import com.jero.modules.document.service.impl.BussDocumentLibraryEOServiceImpl;
+import com.jero.modules.feishu.service.IFeishuService;
+import com.jero.modules.feishu.vo.FeishuMsgVo;
import com.jero.modules.problemKnowledgeBase.entity.ProblemKnowledgeBaseCommentEO;
+import com.jero.modules.problemKnowledgeBase.entity.ProblemKnowledgeBaseEO;
import com.jero.modules.problemKnowledgeBase.mapper.ProblemKnowledgeBaseCommentEOMapper;
import com.jero.modules.problemKnowledgeBase.service.IProblemKnowledgeBaseCommentEOService;
+import com.jero.modules.problemKnowledgeBase.service.IProblemKnowledgeBaseEOService;
import com.jero.modules.problemKnowledgeBase.vo.ProblemKnowledgeBaseCommentVO;
import com.jero.modules.project.entity.ProblemKnowledgeBaseReplyEO;
import com.jero.modules.project.service.IProblemKnowledgeBaseReplyEOService;
+import com.jero.modules.system.entity.SysAnnouncement;
+import com.jero.modules.system.entity.SysUser;
+import com.jero.modules.system.service.ISysAnnouncementService;
+import com.jero.modules.system.service.ISysUserService;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
+import org.apache.shiro.SecurityUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.List;
-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.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
/**
* @Description: 问题知识库评论表
@@ -37,6 +51,24 @@ public class ProblemKnowledgeBaseCommentEOServiceImpl extends ServiceImpl queryWrapper,ProblemKnowledgeBaseEO problemKnowledgeBaseEO) {
/**
- * 查询权限
- * 公开:所有人都可以看到。
- * 私密:只有配置了的权限用户可以看到。
+ * 2022-10-13增加权限,超级管理员可以看到所有的问题知识库数据。
*/
- LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
- QueryWrapper userPermissionQueryWrapper = new QueryWrapper<>();
- userPermissionQueryWrapper.lambda().eq(ProblemKnowledgeBaseUserEO::getUserId,currentUser.getId());
- List problemKnowledgeBaseUserEOList = problemKnowledgeBaseUserEOService.list(userPermissionQueryWrapper);
+ boolean administrator = this.sysUserService.isAdministrator();
+ if(!administrator){
+ /**
+ * 查询权限
+ * 公开:所有人都可以看到。
+ * 私密:只有配置了的权限用户可以看到。
+ */
+ LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+ QueryWrapper userPermissionQueryWrapper = new QueryWrapper<>();
+ userPermissionQueryWrapper.lambda().eq(ProblemKnowledgeBaseUserEO::getUserId,currentUser.getId());
+ List problemKnowledgeBaseUserEOList = problemKnowledgeBaseUserEOService.list(userPermissionQueryWrapper);
- List problemKnowledgeBaseIdList = problemKnowledgeBaseUserEOList.stream().map(ProblemKnowledgeBaseUserEO::getProblemKnowledgeBaseId).distinct().collect(Collectors.toList());
+ List problemKnowledgeBaseIdList = problemKnowledgeBaseUserEOList.stream().map(ProblemKnowledgeBaseUserEO::getProblemKnowledgeBaseId).distinct().collect(Collectors.toList());
- queryWrapper.lambda().and(query -> {
- query.eq(ProblemKnowledgeBaseEO::getShowPermissions,ShowPermissionsEnum.OPEN.getValue());
+ queryWrapper.lambda().and(query -> {
+ query.eq(ProblemKnowledgeBaseEO::getShowPermissions,ShowPermissionsEnum.OPEN.getValue());
if(CollectionUtils.isNotEmpty(problemKnowledgeBaseIdList)){
query.or(o -> {
o.eq(ProblemKnowledgeBaseEO::getShowPermissions,ShowPermissionsEnum.PRIVACY.getValue());
o.in(ProblemKnowledgeBaseEO::getId,problemKnowledgeBaseIdList);
});
}
- });
+ });
+ }
String searchStr = problemKnowledgeBaseEO.getSearchStr();
if(StringUtils.isNotEmpty(searchStr)){
@@ -863,13 +883,42 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl" + " View details" + "";
String contentInfo = msgContentEN + " " + href;
+
+ String ContentENNo = currentUser.getUsername()+" shared " + problemKnowledgeBaseTitle + " with you.Please be reminded to check it out.";
+ String ContentInfoENYes = currentUser.getUsername()+" shared " + problemKnowledgeBaseTitle + " with you.Please be reminded to check it out."+ " " + href;
+
+ String contentCnNo = currentUser.getUsername()+"向您分享了"+problemKnowledgeBaseTitle+",请查看.";
+ String contentInfoCnYes = currentUser.getUsername()+"向您分享了"+problemKnowledgeBaseTitle+",请查看"+ " " + href;
+
+
//封装消息的实体类
- SysAnnouncement sysAnnouncement = getSysAnnouncement(userIdList, msgTitle, msgContentEN, contentInfo,MessageTypeEnum.PUSH.getValue(),MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName());
+ SysAnnouncement sysAnnouncement = getSysAnnouncement(userIdList,
+ msgTitle,
+ ContentENNo,
+ ContentInfoENYes,
+ MessageTypeEnum.PUSH.getValue(),
+ MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName(),
+ contentCnNo,
+ contentInfoCnYes);
+
this.sysAnnouncementService.saveAnnouncement(sysAnnouncement);
this.sendWebsocket(StringUtils.join(thirdIdList, ","), contentInfo);
//飞书
try {
- this.iFeishuService.batchSendMessage(thirdIdList.toArray(new String[]{}), msgContentEN, MessageTypeEnum.PUSH.getName(), hrefFeishu);
+ //XXX向您分享了XXXXXXXXX,请查看。
+ //XXX shared xxxxxxxx with you. Please be reminded to check it out.
+
+ String contentInfoFeiCn = currentUser.getUsername()+"向您分享了"+problemKnowledgeBaseTitle+",请查看";
+ String msgContentENTemp = currentUser.getUsername()+" shared " + problemKnowledgeBaseTitle + " with you.Please be reminded to check it out.";
+ FeishuMsgVo feishuMsgVo = new FeishuMsgVo();
+ feishuMsgVo.setTitle(MessageTypeEnum.PUSH.getNameCn()+"/"+MessageTypeEnum.PUSH.getName());
+ feishuMsgVo.setUrl(hrefFeishu);
+ feishuMsgVo.setContentEn(msgContentENTemp);
+ feishuMsgVo.setContent(contentInfoFeiCn);
+
+ this.iFeishuService.sendCardMsgTerritory(thirdIdList.toArray(new String[]{}), feishuMsgVo);
+
+// this.iFeishuService.batchSendMessage(thirdIdList.toArray(new String[]{}), msgContentEN, MessageTypeEnum.PUSH.getName(), hrefFeishu);
} catch (IOException e) {
log.error("飞书推送失败");
}
@@ -891,7 +940,9 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl taskUrg(@RequestBody ProjectTaskUrgVo projectTaskUrgVo) {
+ return this.projectLawsInventoryEOService.taskUrg(projectTaskUrgVo);
+ }
+
+
}
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectLibraryBaseController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectLibraryBaseController.java
index 46058eaca..7d87ac22d 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectLibraryBaseController.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/controller/ProjectLibraryBaseController.java
@@ -1,6 +1,6 @@
package com.jero.modules.project.controller;
-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.system.base.controller.JeroController;
@@ -12,7 +12,15 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
@@ -46,8 +54,9 @@ public class ProjectLibraryBaseController extends JeroController queryPageList(@RequestBody Map params) {
- IPage pageList= projectLibraryBaseService.queryPageList(params);
- return Result.OK(params.get("cut").toString(),pageList);
+ List pageList= projectLibraryBaseService.queryPageList(params);
+ Page pages = projectLibraryBaseService.getPages(Integer.parseInt(params.get("pageNo").toString()), Integer.parseInt(params.get("pageSize").toString()), pageList);
+ return Result.OK(params.get("cut").toString(),pages);
}
/**
@@ -77,6 +86,20 @@ public class ProjectLibraryBaseController extends JeroController addChild(@Validated @RequestBody ProjectLibraryBase projectLibraryBase) throws ParseException {
+ projectLibraryBaseService.addChild(projectLibraryBase);
+ return Result.OK("添加成功!");
+ }
/**
* 编辑
@@ -137,7 +160,7 @@ public class ProjectLibraryBaseController extends JeroController queryById(@RequestParam(name="id",required=true) String id,
@RequestParam(name="cut",required=true) String cut) {
- List data = projectLibraryBaseService.queryById(id);
+ List data = projectLibraryBaseService.queryById(id,cut);
if(data==null) {
return Result.error("未找到对应数据");
}
@@ -205,4 +228,45 @@ public class ProjectLibraryBaseController extends JeroController top(String id,String flag) {
+ projectLibraryBaseService.top(id,flag);
+ return Result.OK("编辑成功!");
+ }
+
+ /**
+ * 获取项目所有的版本(主版本和子版本的集合)
+ * @param id 项目id
+ * @return
+ */
+ @AutoLog(value = "获取项目所有的版本(主版本和子版本的集合)")
+ @ApiOperation(value="获取项目所有的版本(主版本和子版本的集合)", notes="获取项目所有的版本(主版本和子版本的集合)")
+ @GetMapping(value = "/getVersionsInfo")
+ public Result> getVersionsInfo(String id) {
+ List versionsInfoList = projectLibraryBaseService.getVersionsInfo(id);
+ return Result.OK(versionsInfoList);
+ }
+
+ /**
+ * 版本统计
+ * @return
+ */
+ @AutoLog(value = "版本统计")
+ @ApiOperation(value="版本统计)", notes="版本统计")
+ @PostMapping(value = "/versionStatistics")
+ public Result> versionStatistics(@RequestBody Map params) {
+ List projectLibraryBasesList = projectLibraryBaseService.versionStatistics(String.valueOf(params.get("id")));
+ Page pages = projectLibraryBaseService.getPages(Integer.parseInt(params.get("pageNo").toString()), Integer.parseInt(params.get("pageSize").toString()), projectLibraryBasesList);
+ return Result.OK(pages);
+ }
+
+
}
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProjectLibraryBase.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProjectLibraryBase.java
index b5eeb4c7e..d831a5896 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProjectLibraryBase.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProjectLibraryBase.java
@@ -12,7 +12,7 @@ import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
-import java.io.Serializable;
+import java.util.List;
/**
@@ -25,7 +25,7 @@ import java.io.Serializable;
@TableName("project_library_base")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
-public class ProjectLibraryBase implements Serializable {
+public class ProjectLibraryBase implements Comparable {
private static final long serialVersionUID = 1L;
/**主键*/
@@ -109,4 +109,36 @@ public class ProjectLibraryBase implements Serializable {
/**目标市场展示名称*/
@TableField(exist = false)
private java.lang.String targetMarketName;
+
+ //主项目id parent_id
+ private String parentId;
+
+ //项目版本
+ private String projectVersion;
+
+ //软件版本
+ private String softwareVersion;
+
+ //最后一个版本
+ @TableField(exist = false)
+ private String versionLast;
+
+ //说明
+ private String explanation;
+
+ //排序(用于项目置顶)
+ private String sort;
+
+ //置顶标识(flag为空的时候为置顶, flag为1的时候取消置顶)
+ private String flag;
+
+ @TableField(exist = false)
+ private List children;
+
+ @Override
+ public int compareTo(ProjectLibraryBase o) {
+ return Integer.valueOf(this.projectVersion)-Integer.valueOf(o.projectVersion);//升序
+// return o.id-this.id;//降序
+ }
+
}
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProjectTaskInventoryFeedbackEO.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProjectTaskInventoryFeedbackEO.java
index 9b90ffa39..abbedd475 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProjectTaskInventoryFeedbackEO.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProjectTaskInventoryFeedbackEO.java
@@ -108,4 +108,6 @@ public class ProjectTaskInventoryFeedbackEO implements Serializable {
@ApiModelProperty(value = "序号")
private String serialNumber;
+ @TableField(exist = false)
+ private String userId;
}
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/JumpLinkEnum.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/JumpLinkEnum.java
index 85f2b4d9f..3a763eed5 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/JumpLinkEnum.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/JumpLinkEnum.java
@@ -18,6 +18,8 @@ public enum JumpLinkEnum {
VERIFY_AFFIRM_LINK("验证符合性确认链接","3","/ProjectDetails?id=","&type=103"),
DESIGN_AFFIRM_LINK("设计符合性确认链接","4","/ProjectDetails?id=","&type=103"),
TASK_AFFIRM_LINK("任务确认链接","2","/ProcessCenter",""),
+ FGPG_TODO_CENTER_LINK("法规评估任务待办中心链接","88","/regulatoryAssessmentTasks",""),
+ XMCS_TODO_CENTER_LINK("项目参数任务待办中心链接","99","/projectParameterTasks",""),
COMPLIANCE_PROCESS_DETAIL_LINK("符合性流程明细页路由","2","/taskListProcess",""),
PROBLEM_KNOWLEDGE_BASE_DETAIL("问题知识库,详情页","","/problemKnowledgeBaseView",""),
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/MsgTypeEnum.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/MsgTypeEnum.java
index c78462df3..6d7ec78d3 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/MsgTypeEnum.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/MsgTypeEnum.java
@@ -34,12 +34,18 @@ public enum MsgTypeEnum {
LAWS_OPOMOPM_GATHER_START_MSG("法规意见收集发起消息","lawsOpomopmGatherStartMsg"),
LAWS_OPOMOPM_GATHER_ENALUATOR_SUBMIT_MSG("法规意见收集评估人提交任务消息","lawsOpomopmGatherEnaluatorSubmitMsg"),
LAWS_OPOMOPM_GATHER_ENALUATOR_EXPIRE_REMIND_MSG("法规意见收集到期前一天消息","lawsOpomopmGatherExpireRemindMsg"),
+ LAWS_OPOMOPM_GATHER_ENALUATOR_EXPIRE_REMIND_THREE_DAYS_BEFORE_MSG("法规意见收集到期前三天消息","lawsOpomopmGatherExpireRemindThreeDaysBeforeMsg"),
+ LAWS_OPOMOPM_GATHER_ENALUATOR_EXPIRE_REMIND_TODAY_MSG("法规意见收集到期当天消息","lawsOpomopmGatherExpireRemindTodayMsg"),
+ LAWS_OPOMOPM_GATHER_COMPLETE_MSG("法规意见收集任务完成通知消息","lawsOpomopmGatherCompleteMsg"),
+
LAWS_TECHNOLOGY_EVALUATION_START_MSG("法规技术评估发起消息","lawsTechnologyEvaluationStartMsg"),
LAWS_TECHNOLOGY_EVALUATION_ENALUATOR_SUBMIT_MSG("法规技术评估,评估人提交任务消息","lawsTechnologyEvaluationEnaluatorSubmitMsg"),
LAWS_TECHNOLOGY_EVALUATION_AUDIT_ACCEPTED_MSG("法规技术评估,发起人审核通过消息","lawsTechnologyEvaluationAuditAcceptedMsg"),
LAWS_TECHNOLOGY_EVALUATION_AUDIT_REJECTED_MSG("法规技术评估,发起人审核拒绝消息","lawsTechnologyEvaluationAuditRejectedMsg"),
LAWS_TECHNOLOGY_EVALUATION_EXPIRE_REMIND_MSG("法规技术评估到期前一天消息","lawsTechnologyEvaluationExpireRemindMsg"),
+ LAWS_TECHNOLOGY_EVALUATION_EXPIRE_REMIND_THREE_DAYS_BEFORE_MSG("法规技术评估到期前三天消息","lawsTechnologyEvaluationExpireRemindThreeDaysBeforeMsg"),
+ LAWS_TECHNOLOGY_EVALUATION_EXPIRE_REMIND_TODAY_MSG("法规技术评估到期当天消息","lawsTechnologyEvaluationExpireRemindTodayMsg"),
;
String name;
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/TopEnum.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/TopEnum.java
new file mode 100644
index 000000000..f54bbb021
--- /dev/null
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/TopEnum.java
@@ -0,0 +1,44 @@
+package com.jero.modules.project.enums;
+
+/**
+ * 任务状态枚举类
+ */
+public enum TopEnum {
+ TOP_CANCEL("取消置顶","1"),
+ ;
+
+
+ String name;
+ String value;
+
+ private TopEnum(String name, String value) {
+ this.name = name;
+ this.value = value;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public static String getTextByValue(String value) {
+ TopEnum[] values = values();
+ for (TopEnum taskStatusEnum : values) {
+ if (taskStatusEnum.value.equals(value)) {
+ return taskStatusEnum.name;
+ }
+ }
+ return null;
+ }
+}
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/InventoryAffirmJob.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/InventoryAffirmJob.java
index 1fbef43a5..dae07a815 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/InventoryAffirmJob.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/InventoryAffirmJob.java
@@ -1,7 +1,13 @@
package com.jero.modules.project.job;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.jero.common.constant.enums.MessageType2Enum;
import com.jero.common.constant.enums.MessageTypeEnum;
+import com.jero.common.constant.enums.MsgColorEnum;
+import com.jero.modules.document.entity.BussDocumentLibraryEO;
+import com.jero.modules.document.service.IBussDocumentLibraryEOService;
+import com.jero.modules.feishu.service.IFeishuService;
+import com.jero.modules.feishu.vo.FeishuMsg2Vo;
import com.jero.modules.feishu.vo.FeishuMsgVo;
import com.jero.modules.project.entity.ProjectLawsInventoryEO;
import com.jero.modules.project.entity.ProjectLibraryBase;
@@ -15,8 +21,11 @@ import com.jero.modules.project.mapper.ProjectLibraryBaseMapper;
import com.jero.modules.project.mapper.ProjectNameInfoEOMapper;
import com.jero.modules.project.mapper.ProjectYearNameInfoEOMapper;
import com.jero.modules.project.service.IProjectLawsInventoryEOService;
+import com.jero.modules.system.entity.SysUser;
+import com.jero.modules.system.service.ISysUserService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
@@ -24,6 +33,7 @@ import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
+import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@@ -49,16 +59,24 @@ public class InventoryAffirmJob implements Job {
@Autowired
private ProjectYearNameInfoEOMapper projectYearNameInfoEOMapper;
+ @Autowired
+ private IFeishuService feishuService;
+
@Value(value = "${jero.backUrl}")
private String backUrl;
+ @Autowired
+ private ISysUserService sysUserService;
+ @Autowired
+ private IBussDocumentLibraryEOService bussDocumentLibraryEOService;
+
/**
* 清单任务到达截止时间后,给用户发送消息
*/
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
- log.info("清单确认流程,定时任务开启 =====================================================");
- //获取状态为待确认的数据
+ log.info("清单确认流程,定时任务开启 =====================================================");
+ /* //获取状态为待确认的数据
QueryWrapper queryWrapperInventory = new QueryWrapper<>();
queryWrapperInventory.lambda().eq(ProjectLawsInventoryEO::getInventoryAffirmStatus, InventoryAffirmStatusEnum.LIST_TO_CONFIRM.getValue());
List projectLawsInventoryEOList = projectLawsInventoryEOMapper.selectList(queryWrapperInventory);
@@ -96,125 +114,269 @@ public class InventoryAffirmJob implements Job {
projectYearInfoEOQueryWrapper.lambda().eq(ProjectYearNameInfoEO::getId,projectLibraryBase.getYearNameId());
ProjectYearNameInfoEO projectYearNameInfoEO = projectYearNameInfoEOMapper.selectOne(projectYearInfoEOQueryWrapper);
- List threeDaysUserIdList = new ArrayList<>();
- List currentDaysUserIdList = new ArrayList<>();
+
+ Map> threeDaysMap = new HashMap<>();
+ Map> currentDaysMap = new HashMap<>();
+ Map> overdueMap = new HashMap<>();
for (ProjectLawsInventoryEO projectLawsInventoryEO : projectLawsInventoryEOList) {
if(StringUtils.equals(projectLibraryBase.getId(),projectLawsInventoryEO.getProjectLibraryId())){
if(projectLawsInventoryEO.getInventoryAffirmDueDate() != null){
//如果清单确认结束日期是当前日期
if(StringUtils.equals(currentDateStr,sdf.format(projectLawsInventoryEO.getInventoryAffirmDueDate()))){
+ List currentDaysUserIdList = new ArrayList<>();
if(StringUtils.isEmpty(projectLawsInventoryEO.getSendMsgFlag())){
- if(StringUtils.isNotEmpty(projectLawsInventoryEO.getRegulationOwnerId()) && StringUtils.isEmpty(projectLawsInventoryEO.getRegulationOwnerSubmitStatus())){
- currentDaysUserIdList.add(projectLawsInventoryEO.getRegulationOwnerId());
- }
- if(StringUtils.isNotEmpty(projectLawsInventoryEO.getHomologationEngineerId()) && StringUtils.isEmpty(projectLawsInventoryEO.getHomologationEngineerSubmitStatus())){
- currentDaysUserIdList.add(projectLawsInventoryEO.getHomologationEngineerId());
+ //if(StringUtils.isNotEmpty(projectLawsInventoryEO.getRegulationOwnerId()) && StringUtils.isEmpty(projectLawsInventoryEO.getRegulationOwnerSubmitStatus())){
+ // currentDaysUserIdList.add(projectLawsInventoryEO.getRegulationOwnerId());
+ //}
+ //if(StringUtils.isNotEmpty(projectLawsInventoryEO.getHomologationEngineerId()) && StringUtils.isEmpty(projectLawsInventoryEO.getHomologationEngineerSubmitStatus())){
+ // currentDaysUserIdList.add(projectLawsInventoryEO.getHomologationEngineerId());
+ //}
+ if (StringUtils.isNotEmpty(projectLawsInventoryEO.getHomologationEngineerSubmitStatus())||StringUtils.isNotEmpty(projectLawsInventoryEO.getRegulationOwnerSubmitStatus())) {
+ if (StringUtils.isNotEmpty(projectLawsInventoryEO.getEngineeringInterfacePerson())) {
+ currentDaysUserIdList.add(projectLawsInventoryEO.getEngineeringInterfacePerson());
+ }
}
projectLawsInventoryEO.setSendMsgFlag(SendMsgFlagEnum.FALSE.getValue());
projectLawsInventoryEOMapper.updateById(projectLawsInventoryEO);
}
+ if (ObjectUtils.isNotEmpty(currentDaysUserIdList)) {
+ currentDaysMap.put(projectLawsInventoryEO.getId(), currentDaysUserIdList);
+ }
}
//如果清单确认结束时间是当前系统时间后三天
if(StringUtils.equals(threeDaysStr,sdf.format(projectLawsInventoryEO.getInventoryAffirmDueDate()))){
+ List threeDaysUserIdList = new ArrayList<>();
if(StringUtils.isEmpty(projectLawsInventoryEO.getSendMsgCurrentFlag())){
- if(StringUtils.isNotEmpty(projectLawsInventoryEO.getRegulationOwnerId()) && StringUtils.isEmpty(projectLawsInventoryEO.getRegulationOwnerSubmitStatus())){
- threeDaysUserIdList.add(projectLawsInventoryEO.getRegulationOwnerId());
- }
- if(StringUtils.isNotEmpty(projectLawsInventoryEO.getHomologationEngineerId()) && StringUtils.isEmpty(projectLawsInventoryEO.getHomologationEngineerSubmitStatus())){
- threeDaysUserIdList.add(projectLawsInventoryEO.getHomologationEngineerId());
+ //if(StringUtils.isNotEmpty(projectLawsInventoryEO.getRegulationOwnerId()) && StringUtils.isEmpty(projectLawsInventoryEO.getRegulationOwnerSubmitStatus())){
+ // threeDaysUserIdList.add(projectLawsInventoryEO.getRegulationOwnerId());
+ //}
+ //if(StringUtils.isNotEmpty(projectLawsInventoryEO.getHomologationEngineerId()) && StringUtils.isEmpty(projectLawsInventoryEO.getHomologationEngineerSubmitStatus())){
+ // threeDaysUserIdList.add(projectLawsInventoryEO.getHomologationEngineerId());
+ //}
+ if (StringUtils.isNotEmpty(projectLawsInventoryEO.getHomologationEngineerSubmitStatus())||StringUtils.isNotEmpty(projectLawsInventoryEO.getRegulationOwnerSubmitStatus())) {
+ if (StringUtils.isNotEmpty(projectLawsInventoryEO.getEngineeringInterfacePerson())) {
+ threeDaysUserIdList.add(projectLawsInventoryEO.getEngineeringInterfacePerson());
+ }
}
projectLawsInventoryEO.setSendMsgCurrentFlag(SendMsgFlagEnum.FALSE.getValue());
projectLawsInventoryEOMapper.updateById(projectLawsInventoryEO);
}
+ if (ObjectUtils.isNotEmpty(threeDaysUserIdList)) {
+ threeDaysMap.put(projectLawsInventoryEO.getId(), threeDaysUserIdList);
+ }
}
+
+ //逾期3天、七天、14天
+ Calendar day3Later=new GregorianCalendar();
+ day3Later.setTime(projectLawsInventoryEO.getInventoryAffirmDueDate());
+ day3Later.add(Calendar.DATE,3);
+ Date overdue3Days = day3Later.getTime();
+
+ Calendar day7Later=new GregorianCalendar();
+ day7Later.setTime(projectLawsInventoryEO.getInventoryAffirmDueDate());
+ day7Later.add(Calendar.DATE,7);
+ Date overdue7Days = day7Later.getTime();
+
+ Calendar day14Later=new GregorianCalendar();
+ day14Later.setTime(projectLawsInventoryEO.getInventoryAffirmDueDate());
+ day14Later.add(Calendar.DATE,14);
+ Date overdue14Days = day14Later.getTime();
+
+ if(StringUtils.equals(sdf.format(overdue3Days),sdf.format(projectLawsInventoryEO.getInventoryAffirmDueDate()))
+ ||StringUtils.equals(sdf.format(overdue7Days),sdf.format(projectLawsInventoryEO.getInventoryAffirmDueDate()))
+ ||StringUtils.equals(sdf.format(overdue14Days),sdf.format(projectLawsInventoryEO.getInventoryAffirmDueDate()))){
+ List overdueUserIdList = new ArrayList<>();
+ if (StringUtils.isNotEmpty(projectLawsInventoryEO.getHomologationEngineerSubmitStatus())||StringUtils.isNotEmpty(projectLawsInventoryEO.getRegulationOwnerSubmitStatus())) {
+ if (StringUtils.isNotEmpty(projectLawsInventoryEO.getEngineeringInterfacePerson())) {
+ overdueUserIdList.add(projectLawsInventoryEO.getEngineeringInterfacePerson());
+ }
+ }
+ if (ObjectUtils.isNotEmpty(overdueUserIdList)) {
+ overdueMap.put(projectLawsInventoryEO.getId(), overdueUserIdList);
+ }
+ }
+
}
}
}
- if(CollectionUtils.isNotEmpty(threeDaysUserIdList)){
- threeDaysUserIdList = threeDaysUserIdList.stream().distinct().collect(Collectors.toList());
+ //飞书跳转链接
+ String hrefFeishu = backUrl
+ + JumpLinkEnum.INVENTORY_AFFIRM_LINK.getLink()
+ + projectLibraryBase.getId()
+ + JumpLinkEnum.INVENTORY_AFFIRM_LINK.getType()
+ + "&projectName=" + projectNameInfoEO.getProjectName() + "-"
+ + projectYearNameInfoEO.getYearName()
+ + "&targetMarket=" + projectLibraryBase.getTargetMarket();
- /*String msgContentCN = "您" + projectLibraryBase.getProjectName() + "(项目名称)法规清单的任务确认剩余处理时间还有3天,请及时查看处理";*/
+ //项目名称
+ String PRN = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + "-" + projectLibraryBase.getTargetMarket() + "-" + projectLibraryBase.getProjectVersion();
+ if(!threeDaysMap.isEmpty()){
+ for (String key : threeDaysMap.keySet()) {
+ List threeDaysUserIdList = threeDaysMap.get(key);
+ threeDaysUserIdList = threeDaysUserIdList.stream().distinct().collect(Collectors.toList());
+ List thirdIdList = new ArrayList<>();
+ List sysUsers = sysUserService.listByIds(threeDaysUserIdList);
+ if (ObjectUtils.isNotEmpty(sysUsers)) {
+ thirdIdList = sysUsers.stream().map(SysUser::getThirdId).collect(Collectors.toList());
+ }
+ //法规中英文
+ ProjectLawsInventoryEO projectLawsInventoryEO = projectLawsInventoryEOMapper.selectById(key);
+ BussDocumentLibraryEO bussDocumentLibraryEO = bussDocumentLibraryEOService.queryById(projectLawsInventoryEO.getStandId());
+ try {
+ FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo();
+ feishuMsgVo.setTitle(MessageType2Enum.REGULATION_TASK_CONFIRMATION.getCn() + "/" + MessageType2Enum.REGULATION_TASK_CONFIRMATION.getEn());
+ feishuMsgVo.setCnContentUpper("您好,该任务将于3天后到期,请及时查看处理,谢谢!");
+ feishuMsgVo.setCnContentLower("项目: " + PRN +
+ "\n法规: " + projectLawsInventoryEO.getSerialNumber() + " " + projectLawsInventoryEO.getTitle() +
+ "\n发起人: 系统通知");
+ feishuMsgVo.setEnContentUpper("Hello! This task will expire in 3 days. Please check and address it in a timely manner. Thank you!");
+ feishuMsgVo.setEnContentLower("Project:" + PRN +
+ "\nRegulation No: " + projectLawsInventoryEO.getSerialNumber() + " " + bussDocumentLibraryEO.getTitleEn() +
+ "\nInitiator: " + MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName());
+ feishuMsgVo.setUrl(hrefFeishu);
+ feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); // 颜色
+ feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo);
+ } catch (IOException e) {
+ log.error("飞书消息推送失败");
+ }
+
+ }
+
+
+ *//*String msgContentCN = "您" + projectLibraryBase.getProjectName() + "(项目名称)法规清单的任务确认剩余处理时间还有3天,请及时查看处理";*//*
// XXX .
- String msgContentEN = "The remaining processing time for the regulation task confirmation for "
- + projectNameInfoEO.getProjectName() + "-"
- + projectYearNameInfoEO.getYearName()+ " "
- + projectLibraryBase.getTargetMarket()
- + " are 3 days. Please check and address it in a timely manner.";
- String msgTitle = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName()+ " " + projectLibraryBase.getTargetMarket()
- + ": You have a regulation task confirmation to complete";
+ //String msgContentEN = "The remaining processing time for the regulation task confirmation for "
+ // + projectNameInfoEO.getProjectName() + "-"
+ // + projectYearNameInfoEO.getYearName()+ " "
+ // + projectLibraryBase.getTargetMarket()
+ // + " are 3 days. Please check and address it in a timely manner.";
+ //String msgTitle = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName()+ " " + projectLibraryBase.getTargetMarket()
+ // + ": You have a regulation task confirmation to complete";
+
+ //FeishuMsgVo feishuMsgVo = new FeishuMsgVo();
+ //feishuMsgVo.setContent("Hello! The remaining processing time for the task are 3 days. Please check and address it in a timely manner.");
+ //feishuMsgVo.setTaskType("Regulation Task Confirmation");
+ //feishuMsgVo.setProject(projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket());
- FeishuMsgVo feishuMsgVo = new FeishuMsgVo();
- feishuMsgVo.setContent("Hello! The remaining processing time for the task are 3 days. Please check and address it in a timely manner.");
- feishuMsgVo.setTaskType("Regulation Task Confirmation");
- feishuMsgVo.setProject(projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket());
- //飞书跳转链接
- String hrefFeishu = backUrl
- + JumpLinkEnum.INVENTORY_AFFIRM_LINK.getLink()
- + projectLibraryBase.getId()
- + JumpLinkEnum.INVENTORY_AFFIRM_LINK.getType()
- + "&projectName=" + projectNameInfoEO.getProjectName() + "-"
- + projectYearNameInfoEO.getYearName()
- + "&targetMarket=" + projectLibraryBase.getTargetMarket();
//系统内部跳转链接
- String href = "" + " View details" + "";
- String contentInfo = msgContentEN + " " + href;
- Map sendMessageMap = new HashMap<>();
- sendMessageMap.put("hrefFeishu",hrefFeishu);
- sendMessageMap.put("contentInfo",contentInfo);
+ //String href = "" + " View details" + "";
+ //String contentInfo = msgContentEN + " " + href;
+ //Map sendMessageMap = new HashMap<>();
+ // sendMessageMap.put("hrefFeishu",hrefFeishu);
+ //sendMessageMap.put("contentInfo",contentInfo);
//发送消息
- projectLawsInventoryEOService.sendMessage(msgTitle, msgContentEN, threeDaysUserIdList, projectLibraryBase.getId(), sendMessageMap, feishuMsgVo, MessageTypeEnum.LIST_CONFIRMATION,MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName());
+ //projectLawsInventoryEOService.sendMessage(msgTitle, msgContentEN, threeDaysUserIdList, projectLibraryBase.getId(), sendMessageMap, feishuMsgVo, MessageTypeEnum.LIST_CONFIRMATION,MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName());
}
- if(CollectionUtils.isNotEmpty(currentDaysUserIdList)){
- currentDaysUserIdList = currentDaysUserIdList.stream().distinct().collect(Collectors.toList());
+ if(!currentDaysMap.isEmpty()){
+ for (String key : currentDaysMap.keySet()) {
+ List currentDaysUserIdList = currentDaysMap.get(key);
+ currentDaysUserIdList = currentDaysUserIdList.stream().distinct().collect(Collectors.toList());
+ List thirdIdList = new ArrayList<>();
+ List sysUsers = sysUserService.listByIds(currentDaysUserIdList);
+ if (ObjectUtils.isNotEmpty(sysUsers)) {
+ thirdIdList = sysUsers.stream().map(SysUser::getThirdId).collect(Collectors.toList());
+ }
+ //法规中英文
+ ProjectLawsInventoryEO projectLawsInventoryEO = projectLawsInventoryEOMapper.selectById(key);
+ BussDocumentLibraryEO bussDocumentLibraryEO = bussDocumentLibraryEOService.queryById(projectLawsInventoryEO.getStandId());
+ try {
+ FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo();
+ feishuMsgVo.setTitle(MessageType2Enum.REGULATION_TASK_CONFIRMATION.getCn() + "/" + MessageType2Enum.REGULATION_TASK_CONFIRMATION.getEn());
+ feishuMsgVo.setCnContentUpper("您好,该任务今天即将到期,请尽快查看处理,谢谢!");
+ feishuMsgVo.setCnContentLower("项目: " + PRN +
+ "\n法规: " + projectLawsInventoryEO.getSerialNumber() + " " +projectLawsInventoryEO.getTitle() +
+ "\n发起人: 系统通知");
+ feishuMsgVo.setEnContentUpper("Hello! This task will expire today. Please check and address the task ASAP. Thank you!");
+ feishuMsgVo.setEnContentLower("Project:" + PRN +
+ "\nRegulation No: " + projectLawsInventoryEO.getSerialNumber() + " " + bussDocumentLibraryEO.getTitleEn() +
+ "\nInitiator: " + MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName());
+ feishuMsgVo.setUrl(hrefFeishu);
+ feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); // 颜色
+ feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo);
+ } catch (IOException e) {
+ log.error("飞书消息推送失败");
+ }
+ }
- /*String msgContentCN = "您" + projectLibraryBase.getProjectName() + "(项目名称)法规清单的任务今天即将结束,请及时查看处理*/
- String msgContentEN = "The regulation task confirmation for "
- + projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket()
- + " will expire today. Please check and address it in a timely manner.";
- String msgTitle = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName()+ " " + projectLibraryBase.getTargetMarket()
- + ": You have a regulation task confirmation to complete";
- FeishuMsgVo feishuMsgVo = new FeishuMsgVo();
- feishuMsgVo.setContent("Hello! The task will expire today. Please check and address it in a timely manner.");
- feishuMsgVo.setTaskType("Regulation Task Confirmation");
- feishuMsgVo.setProject(projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket());
+ *//*String msgContentCN = "您" + projectLibraryBase.getProjectName() + "(项目名称)法规清单的任务今天即将结束,请及时查看处理*//*
+ //String msgContentEN = "The regulation task confirmation for "
+ // + projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket()
+ // + " will expire today. Please check and address it in a timely manner.";
+ //String msgTitle = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName()+ " " + projectLibraryBase.getTargetMarket()
+ // + ": You have a regulation task confirmation to complete";
+
+ //FeishuMsgVo feishuMsgVo = new FeishuMsgVo();
+ //feishuMsgVo.setContent("Hello! The task will expire today. Please check and address it in a timely manner.");
+ //feishuMsgVo.setTaskType("Regulation Task Confirmation");
+ //feishuMsgVo.setProject(projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket());
+
- //飞书跳转链接
- String hrefFeishu = backUrl
- + JumpLinkEnum.INVENTORY_AFFIRM_LINK.getLink()
- + projectLibraryBase.getId()
- + JumpLinkEnum.INVENTORY_AFFIRM_LINK.getType()
- + "&projectName=" + projectNameInfoEO.getProjectName() + "-"
- + projectYearNameInfoEO.getYearName()
- + "&targetMarket=" + projectLibraryBase.getTargetMarket();
//系统内部跳转链接
- String href = "" + " View details" + "";
- String contentInfo = msgContentEN + " " + href;
- Map sendMessageMap = new HashMap<>();
- sendMessageMap.put("hrefFeishu",hrefFeishu);
- sendMessageMap.put("contentInfo",contentInfo);
+ //String href = "" + " View details" + "";
+ //String contentInfo = msgContentEN + " " + href;
+ //Map sendMessageMap = new HashMap<>();
+ //sendMessageMap.put("hrefFeishu",hrefFeishu);
+ //sendMessageMap.put("contentInfo",contentInfo);
//发送消息
- projectLawsInventoryEOService.sendMessage(msgTitle, msgContentEN, currentDaysUserIdList, projectLibraryBase.getId(), sendMessageMap, feishuMsgVo, MessageTypeEnum.LIST_CONFIRMATION,MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName());
+ //projectLawsInventoryEOService.sendMessage(msgTitle, msgContentEN, currentDaysUserIdList, projectLibraryBase.getId(), sendMessageMap, feishuMsgVo, MessageTypeEnum.LIST_CONFIRMATION,MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName());
}
+
+ if(!overdueMap.isEmpty()){
+ for (String key : overdueMap.keySet()) {
+ List overdueUserIdList = overdueMap.get(key);
+ overdueUserIdList = overdueUserIdList.stream().distinct().collect(Collectors.toList());
+ List thirdIdList = new ArrayList<>();
+ List sysUsers = sysUserService.listByIds(overdueUserIdList);
+ if (ObjectUtils.isNotEmpty(sysUsers)) {
+ thirdIdList = sysUsers.stream().map(SysUser::getThirdId).collect(Collectors.toList());
+ }
+ //法规中英文
+ ProjectLawsInventoryEO projectLawsInventoryEO = projectLawsInventoryEOMapper.selectById(key);
+ BussDocumentLibraryEO bussDocumentLibraryEO = bussDocumentLibraryEOService.queryById(projectLawsInventoryEO.getStandId());
+
+ String dueDate = sdf.format(projectLawsInventoryEO.getInventoryAffirmDueDate());
+ try {
+ FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo();
+ feishuMsgVo.setTitle(MessageType2Enum.REGULATION_TASK_CONFIRMATION.getCn() + "/" + MessageType2Enum.REGULATION_TASK_CONFIRMATION.getEn());
+ feishuMsgVo.setCnContentUpper("您好,该任务已逾期,请尽快处理,谢谢!");
+ feishuMsgVo.setCnContentLower("项目: " + PRN +
+ "\n法规: " + projectLawsInventoryEO.getSerialNumber() + " " + projectLawsInventoryEO.getTitle() +
+ "\n发起人: 系统通知" +
+ "\n截止时间: " + dueDate);
+ feishuMsgVo.setEnContentUpper("Hello! This task is overdue. Please address it ASAP. Thank you!");
+ feishuMsgVo.setEnContentLower("Project:" + PRN +
+ "\nRegulation No: " + projectLawsInventoryEO.getSerialNumber() + " " + bussDocumentLibraryEO.getTitleEn() +
+ "\nInitiator: " + MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName() +
+ "\nDue Date: " + dueDate);
+ feishuMsgVo.setUrl(hrefFeishu);
+ feishuMsgVo.setColor(MsgColorEnum.YELLOW.getValue()); // 颜色
+ feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo);
+ } catch (IOException e) {
+ log.error("飞书消息推送失败");
+ }
+ }
+ }
+
}
}
- }
+ }*/
log.info("清单确认流程,定时任务结束 =====================================================");
}
}
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/PrehomoJob.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/PrehomoJob.java
index ac17549ce..915893fa7 100644
--- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/PrehomoJob.java
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/PrehomoJob.java
@@ -1,7 +1,13 @@
package com.jero.modules.project.job;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.jero.common.constant.enums.MessageType2Enum;
import com.jero.common.constant.enums.MessageTypeEnum;
+import com.jero.common.constant.enums.MsgColorEnum;
+import com.jero.modules.document.entity.BussDocumentLibraryEO;
+import com.jero.modules.document.service.IBussDocumentLibraryEOService;
+import com.jero.modules.feishu.service.IFeishuService;
+import com.jero.modules.feishu.vo.FeishuMsg2Vo;
import com.jero.modules.feishu.vo.FeishuMsgVo;
import com.jero.modules.project.entity.*;
import com.jero.modules.project.enums.DesignComplianceStatusEnum;
@@ -14,8 +20,11 @@ import com.jero.modules.project.mapper.ProjectNameInfoEOMapper;
import com.jero.modules.project.mapper.ProjectYearNameInfoEOMapper;
import com.jero.modules.project.service.IProjectLawsInventoryEOService;
import com.jero.modules.project.service.IProjectTaskInventoryEOService;
+import com.jero.modules.system.entity.SysUser;
+import com.jero.modules.system.service.ISysUserService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
@@ -23,6 +32,7 @@ import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
+import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@@ -53,6 +63,13 @@ public class PrehomoJob implements Job {
@Value(value = "${jero.backUrl}")
private String backUrl;
+ @Autowired
+ private IBussDocumentLibraryEOService bussDocumentLibraryEOService;
+ @Autowired
+ private ISysUserService sysUserService;
+ @Autowired
+ private IFeishuService feishuService;
+
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
log.info("prehomo流程,定时任务开启 =====================================================");
@@ -60,7 +77,10 @@ public class PrehomoJob implements Job {
//查询出已经启动了prehomo流程的数据。 并且流程没有结束。
QueryWrapper queryProjectTaskInventoryWrapper = new QueryWrapper<>();
queryProjectTaskInventoryWrapper.isNotNull("prehomo_p_id");
- queryProjectTaskInventoryWrapper.lambda().ne(ProjectTaskInventoryEO::getPrehomoStatus, DesignComplianceStatusEnum.REVIEW_COMPLETED.getValue());
+ List status = new ArrayList<>();
+ status.add(DesignComplianceStatusEnum.TO_SUBMIT.getValue());
+ status.add(DesignComplianceStatusEnum.REVIEW_THE_RETURN.getValue());
+ queryProjectTaskInventoryWrapper.lambda().in(ProjectTaskInventoryEO::getPrehomoStatus, status);
List projectTaskInventoryEOList = projectTaskInventoryEOService.getBaseMapper().selectList(queryProjectTaskInventoryWrapper);
if(CollectionUtils.isNotEmpty(projectTaskInventoryEOList)){
@@ -81,15 +101,24 @@ public class PrehomoJob implements Job {
Date currentDate = new Date();
- //获取后三天前的时间
- Calendar calendar=new GregorianCalendar();
- calendar.setTime(new Date());
- calendar.add(Calendar.DATE,3);
- Date threeDays = calendar.getTime();
-
- String threeDaysStr = sdf.format(threeDays);
+ //两周
+ Calendar twoWeeksLaterCalendar=new GregorianCalendar();
+ twoWeeksLaterCalendar.setTime(new Date());
+ twoWeeksLaterCalendar.add(Calendar.DATE,14);
+ Date twoWeeksLaterDays = twoWeeksLaterCalendar.getTime();
+ String twoWeeksLaterDaysStr = sdf.format(twoWeeksLaterDays);
+ //一周
+ Calendar oneWeekLaterCalendar=new GregorianCalendar();
+ oneWeekLaterCalendar.setTime(new Date());
+ oneWeekLaterCalendar.add(Calendar.DATE,7);
+ Date oneWeekLaterDays = oneWeekLaterCalendar.getTime();
+ String oneWeekLaterDaysStr = sdf.format(oneWeekLaterDays);
+ //当天
String currentDateStr = sdf.format(currentDate);
+ String msgTitle = MessageType2Enum.PRE_HOMO_CONFIRMATION.getCn() + "/" + MessageType2Enum.PRE_HOMO_CONFIRMATION.getEn();
+
+
for (ProjectLibraryBase projectLibraryBase : projectLibraryBaseList) {
QueryWrapper projectNameInfoEOQueryWrapper = new QueryWrapper<>();
projectNameInfoEOQueryWrapper.lambda().eq(ProjectNameInfoEO::getId,projectLibraryBase.getProjectNameId());
@@ -99,115 +128,234 @@ public class PrehomoJob implements Job {
projectYearInfoEOQueryWrapper.lambda().eq(ProjectYearNameInfoEO::getId,projectLibraryBase.getYearNameId());
ProjectYearNameInfoEO projectYearNameInfoEO = projectYearNameInfoEOMapper.selectOne(projectYearInfoEOQueryWrapper);
+ //项目名称
+ String projectVersion = (com.jero.modules.system.util.StringUtils.isBlank(projectLibraryBase.getParentId()) && com.jero.modules.system.util.StringUtils.isBlank(projectLibraryBase.getProjectVersion())) ? "00" : projectLibraryBase.getProjectVersion();
+ String projectName = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + "-" + projectLibraryBase.getTargetMarket() + "-" + projectVersion;
for (ProjectLawsInventoryEO projectLawsInventoryEO: projectLawsInventoryEOList) {
- List threeDaysUserIdList = new ArrayList<>();
- List currentDaysUserIdList = new ArrayList<>();
- for (ProjectTaskInventoryEO projectTaskInventoryEO : projectTaskInventoryEOList) {
- if(StringUtils.equals(projectTaskInventoryEO.getProjectLawsInventoryId(),projectLawsInventoryEO.getId())){
- if(projectLawsInventoryEO.getPrehomoDueDate() != null){
- //如果prehomo - 结束日期是当前日期
- if(StringUtils.equals(currentDateStr,sdf.format(projectLawsInventoryEO.getPrehomoDueDate()))){
- if(StringUtils.isEmpty(projectTaskInventoryEO.getPrehomoSendMsgFlag())){
- if(StringUtils.isNotEmpty(projectLawsInventoryEO.getPrehomoDutyId())){
- currentDaysUserIdList.add(projectLawsInventoryEO.getPrehomoDutyId());
- }if(StringUtils.isNotEmpty(projectLawsInventoryEO.getPrehomoInitiatorId())){
- currentDaysUserIdList.add(projectLawsInventoryEO.getPrehomoInitiatorId());
- }
- projectTaskInventoryEO.setPrehomoSendMsgFlag(SendMsgFlagEnum.FALSE.getValue());
- projectTaskInventoryEOService.updateById(projectTaskInventoryEO);
- }
+ //法规中英文
+ String LAW_CN = projectLawsInventoryEO.getSerialNumber() + " " + projectLawsInventoryEO.getTitle();//法规
+ BussDocumentLibraryEO bussDocumentLibraryEO = bussDocumentLibraryEOService.queryById(projectLawsInventoryEO.getStandId());
+ String LAW_EN = "";
+ if (ObjectUtils.isEmpty(bussDocumentLibraryEO)) {
+ LAW_EN = LAW_CN;
+ } else {
+ LAW_EN = projectLawsInventoryEO.getSerialNumber() + " " + bussDocumentLibraryEO.getTitleEn();//法规
+ }
+
+ List twoWeeksLaterUserIdList = new ArrayList<>();
+ List oneWeeksLaterUserIdList = new ArrayList<>();
+ List currentDaysUserIdList = new ArrayList<>();
+ List dueUserIdList = new ArrayList<>();
+
+ if(StringUtils.equals(projectLawsInventoryEO.getProjectLibraryId(),projectLibraryBase.getId())){
+ if(projectLawsInventoryEO.getPrehomoDueDate() != null){
+ //如果prehomo - 结束日期是当前日期
+ if(StringUtils.equals(currentDateStr,sdf.format(projectLawsInventoryEO.getPrehomoDueDate()))){
+ if(StringUtils.isNotEmpty(projectLawsInventoryEO.getPrehomoDutyId())){
+ currentDaysUserIdList.add(projectLawsInventoryEO.getPrehomoDutyId());
}
- //如果prehomo - 结束日期是三天后的日期
- if(StringUtils.equals(threeDaysStr,sdf.format(projectLawsInventoryEO.getPrehomoDueDate()))){
- if(StringUtils.isEmpty(projectTaskInventoryEO.getPrehomoSendMsgCurrentFlag())){
- if(StringUtils.isNotEmpty(projectLawsInventoryEO.getPrehomoDutyId())){
- threeDaysUserIdList.add(projectLawsInventoryEO.getPrehomoDutyId());
- }if(StringUtils.isNotEmpty(projectLawsInventoryEO.getPrehomoInitiatorId())){
- threeDaysUserIdList.add(projectLawsInventoryEO.getPrehomoInitiatorId());
- }
- projectTaskInventoryEO.setPrehomoSendMsgCurrentFlag(SendMsgFlagEnum.FALSE.getValue());
- projectTaskInventoryEOService.updateById(projectTaskInventoryEO);
- }
+ }
+ //如果prehomo - 结束日期是两周后的日期
+ if(StringUtils.equals(twoWeeksLaterDaysStr,sdf.format(projectLawsInventoryEO.getPrehomoDueDate()))){
+ if(StringUtils.isNotEmpty(projectLawsInventoryEO.getPrehomoDutyId())){
+ twoWeeksLaterUserIdList.add(projectLawsInventoryEO.getPrehomoDutyId());
+ }
+ }
+ //如果prehomo - 结束日期是一周后的日期
+ if(StringUtils.equals(oneWeekLaterDaysStr,sdf.format(projectLawsInventoryEO.getDesignDueDate()))){
+ if(StringUtils.isNotEmpty(projectLawsInventoryEO.getDesignDutyId())){
+ oneWeeksLaterUserIdList.add(projectLawsInventoryEO.getDesignDutyId());
+ }
+ }
+ //如果prehomo - 逾期后每天通知
+ if (!StringUtils.equals(currentDateStr,sdf.format(projectLawsInventoryEO.getPrehomoDueDate()))&&projectLawsInventoryEO.getDesignDueDate().before(currentDate)) {
+ if(StringUtils.isNotEmpty(projectLawsInventoryEO.getDesignDutyId())){
+ dueUserIdList.add(projectLawsInventoryEO.getDesignDutyId());
}
}
}
}
- if(CollectionUtils.isNotEmpty(threeDaysUserIdList)){
- threeDaysUserIdList = threeDaysUserIdList.stream().distinct().collect(Collectors.toList());
+
+ String hrefFeishu = backUrl
+ + JumpLinkEnum.PREHOMO_AFFIRM_LINK.getLink()
+ + projectLibraryBase.getId()
+ + JumpLinkEnum.PREHOMO_AFFIRM_LINK.getType()
+ + "&projectName=" + projectNameInfoEO.getProjectName();
+
+ if (ObjectUtils.isNotEmpty(dueUserIdList)) {
+ dueUserIdList = dueUserIdList.stream().distinct().collect(Collectors.toList());
+ List sysUsers = sysUserService.listByIds(dueUserIdList);
+ List thirdIdList = new ArrayList<>();
+ if(CollectionUtils.isNotEmpty(sysUsers)){
+ thirdIdList = sysUsers.stream().map(SysUser::getThirdId).collect(Collectors.toList());
+ }
+ try {
+ FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo();
+ feishuMsgVo.setTitle(msgTitle);
+ feishuMsgVo.setCnContentUpper("您好,您的任务已逾期,请尽快查看处理");
+ feishuMsgVo.setCnContentLower("项目: " + projectName +
+ "\n法规: " + LAW_CN +
+ "\n发起人: 系统通知"+
+ "\n截止时间: "+ sdf.format(projectLawsInventoryEO.getDesignDueDate()));
+ feishuMsgVo.setEnContentUpper("Hello! Your task is overdue. Please check and address it ASAP");
+ feishuMsgVo.setEnContentLower("Project: " + projectName +
+ "\nRegulation No: " + LAW_EN +
+ "\nInitiator: " + MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName()+
+ "\nDue Date: "+ sdf.format(projectLawsInventoryEO.getDesignDueDate()));
+ feishuMsgVo.setUrl(hrefFeishu);
+ feishuMsgVo.setColor(MsgColorEnum.YELLOW.getValue()); // 颜色
+ feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo);
+ } catch (IOException e) {
+ log.error("飞书消息推送失败");
+ }
+ }
+
+ if (ObjectUtils.isNotEmpty(oneWeeksLaterUserIdList)) {
+ oneWeeksLaterUserIdList = oneWeeksLaterUserIdList.stream().distinct().collect(Collectors.toList());
+ List sysUsers = sysUserService.listByIds(oneWeeksLaterUserIdList);
+ List thirdIdList = new ArrayList<>();
+ if(CollectionUtils.isNotEmpty(sysUsers)){
+ thirdIdList = sysUsers.stream().map(SysUser::getThirdId).collect(Collectors.toList());
+ }
+ try {
+ FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo();
+ feishuMsgVo.setTitle(msgTitle);
+ feishuMsgVo.setCnContentUpper("您好,您的任务将于7天后结束,请及时查看处理");
+ feishuMsgVo.setCnContentLower("项目: " + projectName +
+ "\n法规: " + LAW_CN +
+ "\n发起人: 系统通知");
+ feishuMsgVo.setEnContentUpper("Hello! Your task will end in 7 days. Please check and address it in a timely manner");
+ feishuMsgVo.setEnContentLower("Project: " + projectName +
+ "\nRegulation No: " + LAW_EN +
+ "\nInitiator: " + MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName());
+ feishuMsgVo.setUrl(hrefFeishu);
+ feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); // 颜色
+ feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo);
+ } catch (IOException e) {
+ log.error("飞书消息推送失败");
+ }
+ }
+
+ if(CollectionUtils.isNotEmpty(twoWeeksLaterUserIdList)){
+ twoWeeksLaterUserIdList = twoWeeksLaterUserIdList.stream().distinct().collect(Collectors.toList());
+ List sysUsers = sysUserService.listByIds(twoWeeksLaterUserIdList);
+ List thirdIdList = new ArrayList<>();
+ if(CollectionUtils.isNotEmpty(sysUsers)){
+ thirdIdList = sysUsers.stream().map(SysUser::getThirdId).collect(Collectors.toList());
+ }
+ try {
+ FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo();
+ feishuMsgVo.setTitle(msgTitle);
+ feishuMsgVo.setCnContentUpper("您好,您的任务将于14天后结束,请及时查看处理");
+ feishuMsgVo.setCnContentLower("项目: " + projectName +
+ "\n法规: " + LAW_CN +
+ "\n发起人: 系统通知");
+ feishuMsgVo.setEnContentUpper("Hello! Your task will end in 14 days. Please check and address it in a timely manner");
+ feishuMsgVo.setEnContentLower("Project: " + projectName +
+ "\nRegulation No: " + LAW_EN +
+ "\nInitiator: " + MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName());
+ feishuMsgVo.setUrl(hrefFeishu);
+ feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); // 颜色
+ feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo);
+ } catch (IOException e) {
+ log.error("飞书消息推送失败");
+ }
//您XXX(项目名称)中GB 7258的Pre-Homo确认剩余处理时间还有3天,请及时查看处理
//The remaining processing time for the Pre-Homo confirmation of GB 7258 in XXX (project name) is 3 days. Please check and handle it in time.
- String msgContentEN = "The remaining processing time for the Pre-Homo confirmation of "
- + projectLawsInventoryEO.getSerialNumber() + " in " + projectNameInfoEO.getProjectName() + "-"
- + projectYearNameInfoEO.getYearName()+ " "
- + projectLibraryBase.getTargetMarket()
- + " are 3 days. Please check and handle it in time.";
- String msgTitle = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName()+ " " + projectLibraryBase.getTargetMarket()
- + ": You have a Pre-Homo task to complete";
+ //String msgContentEN = "The remaining processing time for the Pre-Homo confirmation of "
+ // + projectLawsInventoryEO.getSerialNumber() + " in " + projectNameInfoEO.getProjectName() + "-"
+ // + projectYearNameInfoEO.getYearName()+ " "
+ // + projectLibraryBase.getTargetMarket()
+ // + " are 3 days. Please check and handle it in time.";
+ //String msgTitle = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName()+ " " + projectLibraryBase.getTargetMarket()
+ // + ": You have a Pre-Homo task to complete";
- FeishuMsgVo feishuMsgVo = new FeishuMsgVo();
- feishuMsgVo.setContent("Hello! The remaining processing time for the task are 3 days. Please check and address it in a timely manner.");
- feishuMsgVo.setTaskType("Pre-Homo Confirmation");
- feishuMsgVo.setRegulationNo(projectLawsInventoryEO.getSerialNumber());
- feishuMsgVo.setProject(projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket());
+ //FeishuMsgVo feishuMsgVo = new FeishuMsgVo();
+ //feishuMsgVo.setContent("Hello! The remaining processing time for the task are 3 days. Please check and address it in a timely manner.");
+ //feishuMsgVo.setTaskType("Pre-Homo Confirmation");
+ //feishuMsgVo.setRegulationNo(projectLawsInventoryEO.getSerialNumber());
+ //feishuMsgVo.setProject(projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket());
//飞书跳转链接
- String hrefFeishu = backUrl
- + JumpLinkEnum.PREHOMO_AFFIRM_LINK.getLink()
- + projectLibraryBase.getId()
- + JumpLinkEnum.PREHOMO_AFFIRM_LINK.getType()
- + "&projectName=" + projectNameInfoEO.getProjectName();
+ //String hrefFeishu = backUrl
+ // + JumpLinkEnum.PREHOMO_AFFIRM_LINK.getLink()
+ // + projectLibraryBase.getId()
+ // + JumpLinkEnum.PREHOMO_AFFIRM_LINK.getType()
+ // + "&projectName=" + projectNameInfoEO.getProjectName();
//系统内部跳转链接
- String href = "" + " View details" + "";
- String contentInfo = msgContentEN + " " + href;
- Map sendMessageMap = new HashMap<>();
- sendMessageMap.put("hrefFeishu",hrefFeishu);
- sendMessageMap.put("contentInfo",contentInfo);
+ //String href = "" + " View details" + "";
+ //String contentInfo = msgContentEN + " " + href;
+ // Map sendMessageMap = new HashMap<>();
+ //sendMessageMap.put("hrefFeishu",hrefFeishu);
+ //sendMessageMap.put("contentInfo",contentInfo);
//发送消息
- projectLawsInventoryEOService.sendMessage(msgTitle, msgContentEN,threeDaysUserIdList,projectLawsInventoryEO.getId(),sendMessageMap, feishuMsgVo, MessageTypeEnum.COMPLIANCE_CONFIRMATION,MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName());
+ //projectLawsInventoryEOService.sendMessage(msgTitle, msgContentEN,threeDaysUserIdList,projectLawsInventoryEO.getId(),sendMessageMap, feishuMsgVo, MessageTypeEnum.COMPLIANCE_CONFIRMATION,MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName());
}
if(CollectionUtils.isNotEmpty(currentDaysUserIdList)){
currentDaysUserIdList = currentDaysUserIdList.stream().distinct().collect(Collectors.toList());
+ List sysUsers = sysUserService.listByIds(currentDaysUserIdList);
+ List thirdIdList = new ArrayList<>();
+ if(CollectionUtils.isNotEmpty(sysUsers)){
+ thirdIdList = sysUsers.stream().map(SysUser::getThirdId).collect(Collectors.toList());
+ }
+ try {
+ FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo();
+ feishuMsgVo.setTitle(msgTitle);
+ feishuMsgVo.setCnContentUpper("您好,您的任务将于今天到期,请及时查看处理");
+ feishuMsgVo.setCnContentLower("项目: " + projectName +
+ "\n法规: " + LAW_CN +
+ "\n发起人: 系统通知");
+ feishuMsgVo.setEnContentUpper("Hello! Your task will expire today. Please check and address it ASAP");
+ feishuMsgVo.setEnContentLower("Project: " + projectName +
+ "\nRegulation No: " + LAW_EN +
+ "\nInitiator: " + MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName());
+ feishuMsgVo.setUrl(hrefFeishu);
+ feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); // 颜色
+ feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo);
+ } catch (IOException e) {
+ log.error("飞书消息推送失败");
+ }
//您XXX(项目名称)中GB 7258的Pre-Homo确认任务今天即将结束,请及时查看处理
//The the Pre-Homo confirmation of GB 7258 in XXX (project name) is coming to an end today. Please check and deal with it in time
- String msgContentEN = "The the Pre-Homo confirmation of "
- + projectLawsInventoryEO.getSerialNumber() + " in " + projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket()
- + " will expire today. Please check and address it in time.";
- String msgTitle = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName()+ " " + projectLibraryBase.getTargetMarket()
- + ": You have a Pre-Homo task to complete";
+ //String msgContentEN = "The the Pre-Homo confirmation of "
+ // + projectLawsInventoryEO.getSerialNumber() + " in " + projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket()
+ // + " will expire today. Please check and address it in time.";
+ //String msgTitle = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName()+ " " + projectLibraryBase.getTargetMarket()
+ // + ": You have a Pre-Homo task to complete";
- FeishuMsgVo feishuMsgVo = new FeishuMsgVo();
- feishuMsgVo.setContent("Hello! The task will expire today. Please check and address it in a timely manner.");
- feishuMsgVo.setTaskType("Pre-Homo Confirmation");
- feishuMsgVo.setRegulationNo(projectLawsInventoryEO.getSerialNumber());
- feishuMsgVo.setProject(projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket());
+ //FeishuMsgVo feishuMsgVo = new FeishuMsgVo();
+ //feishuMsgVo.setContent("Hello! The task will expire today. Please check and address it in a timely manner.");
+ //feishuMsgVo.setTaskType("Pre-Homo Confirmation");
+ //feishuMsgVo.setRegulationNo(projectLawsInventoryEO.getSerialNumber());
+ //feishuMsgVo.setProject(projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket());
//飞书跳转链接
- String hrefFeishu = backUrl
- + JumpLinkEnum.PREHOMO_AFFIRM_LINK.getLink()
- + projectLibraryBase.getId()
- + JumpLinkEnum.PREHOMO_AFFIRM_LINK.getType()
- + "&projectName=" + projectNameInfoEO.getProjectName();
+ // String hrefFeishu = backUrl
+ // + JumpLinkEnum.PREHOMO_AFFIRM_LINK.getLink()
+ // + projectLibraryBase.getId()
+ // + JumpLinkEnum.PREHOMO_AFFIRM_LINK.getType()
+ // + "&projectName=" + projectNameInfoEO.getProjectName();
//系统内部跳转链接
- String href = "" + " View details" + "";
- String contentInfo = msgContentEN + " " + href;
- Map sendMessageMap = new HashMap<>();
- sendMessageMap.put("hrefFeishu",hrefFeishu);
- sendMessageMap.put("contentInfo",contentInfo);
+ //String href = "" + " View details" + "";
+ //String contentInfo = msgContentEN + " " + href;
+ //Map sendMessageMap = new HashMap<>();
+ //sendMessageMap.put("hrefFeishu",hrefFeishu);
+ //sendMessageMap.put("contentInfo",contentInfo);
//发送消息
- projectLawsInventoryEOService.sendMessage(msgTitle, msgContentEN,currentDaysUserIdList,projectLawsInventoryEO.getId(),sendMessageMap, feishuMsgVo, MessageTypeEnum.COMPLIANCE_CONFIRMATION,MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName());
+ //projectLawsInventoryEOService.sendMessage(msgTitle, msgContentEN,currentDaysUserIdList,projectLawsInventoryEO.getId(),sendMessageMap, feishuMsgVo, MessageTypeEnum.COMPLIANCE_CONFIRMATION,MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName());
}
}
}
diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/TaskAffirmJob.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/TaskAffirmJob.java
new file mode 100644
index 000000000..a865ab379
--- /dev/null
+++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/TaskAffirmJob.java
@@ -0,0 +1,268 @@
+package com.jero.modules.project.job;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.jero.common.constant.enums.MessageType2Enum;
+import com.jero.common.constant.enums.MessageTypeEnum;
+import com.jero.common.constant.enums.MsgColorEnum;
+import com.jero.modules.document.entity.BussDocumentLibraryEO;
+import com.jero.modules.document.service.IBussDocumentLibraryEOService;
+import com.jero.modules.feishu.service.IFeishuService;
+import com.jero.modules.feishu.vo.FeishuMsg2Vo;
+import com.jero.modules.project.entity.ProjectLawsInventoryEO;
+import com.jero.modules.project.entity.ProjectLibraryBase;
+import com.jero.modules.project.entity.ProjectNameInfoEO;
+import com.jero.modules.project.entity.ProjectYearNameInfoEO;
+import com.jero.modules.project.enums.InventoryAffirmStatusEnum;
+import com.jero.modules.project.enums.JumpLinkEnum;
+import com.jero.modules.project.mapper.ProjectLawsInventoryEOMapper;
+import com.jero.modules.project.mapper.ProjectLibraryBaseMapper;
+import com.jero.modules.project.mapper.ProjectNameInfoEOMapper;
+import com.jero.modules.project.mapper.ProjectYearNameInfoEOMapper;
+import com.jero.modules.system.entity.SysUser;
+import com.jero.modules.system.service.ISysUserService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Slf4j
+public class TaskAffirmJob implements Job {
+
+ @Autowired
+ private ProjectLawsInventoryEOMapper projectLawsInventoryEOMapper;
+
+ @Autowired
+ private ProjectLibraryBaseMapper projectLibraryBaseMapper;
+
+ @Autowired
+ private ProjectNameInfoEOMapper projectNameInfoEOMapper;
+
+ @Autowired
+ private ProjectYearNameInfoEOMapper projectYearNameInfoEOMapper;
+
+ @Autowired
+ private IFeishuService feishuService;
+
+ @Value(value = "${jero.backUrl}")
+ private String backUrl;
+
+ @Autowired
+ private ISysUserService sysUserService;
+ @Autowired
+ private IBussDocumentLibraryEOService bussDocumentLibraryEOService;
+
+
+ /**
+ * 任务确认流程定时
+ * @param context
+ * @throws JobExecutionException
+ */
+ @Override
+ public void execute(JobExecutionContext context) throws JobExecutionException {
+ log.info("任务确认流程,定时任务开启 =====================================================");
+
+ QueryWrapper queryWrapperInventory = new QueryWrapper<>();
+ queryWrapperInventory.lambda().eq(ProjectLawsInventoryEO::getTaskAffirmStatus, InventoryAffirmStatusEnum.LIST_TO_CONFIRM.getValue());
+ List projectLawsInventoryEOList = projectLawsInventoryEOMapper.selectList(queryWrapperInventory);
+ if (ObjectUtils.isNotEmpty(projectLawsInventoryEOList)) {
+ List