xiaofei vor 1 Jahr
Ursprung
Commit
b7ed8c5c50

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -1960,7 +1960,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             BasicExam basicExam = basicExamService.getById(examTask.getExamId());
             String examName = basicExam == null ? "-" : basicExam.getName();
             String courseName = examTask.getCourseName() + "(" + examTask.getCourseCode() + ")";
-            basicOperationLog.setDetail(String.format("考试[%s],课程[%s],试卷编号[%s],题卡试卷[%s],卷型[%s]", examName, courseName, examTask.getPaperNumber(), type.equals("paper") ? "试卷" : "题卡", paperType));
+            basicOperationLog.setDetail(String.format("考试[%s],课程[%s],试卷编号[%s],题卡/试卷[%s],卷型[%s]", examName, courseName, examTask.getPaperNumber(), type.equals("paper") ? "试卷" : "题卡", paperType));
             basicOperationLog.setOperationType(OperationTypeEnum.PREVIEW);
             basicOperationLog.setPrivilegeId(ServletUtil.getCurrentPrivilegeId());
             basicOperationLog.setRunStatus("成功");

+ 21 - 27
distributed-print/install/mysql/init/teachcloud_db.sql

@@ -252,29 +252,20 @@ CREATE TABLE IF NOT EXISTS `basic_message` (
 -- Table structure for basic_operation_log
 -- ----------------------------
 CREATE TABLE IF NOT EXISTS `basic_operation_log` (
-  `id` bigint NOT NULL COMMENT 'id',
-  `school_id` bigint DEFAULT NULL COMMENT '学校id',
-  `org_id` bigint DEFAULT NULL COMMENT '数据权限id',
-  `detail` mediumtext NOT NULL COMMENT '日志详情',
-  `level` varchar(32) DEFAULT NULL COMMENT '日志等级(PRIMARY("一级日志:敏感信息"),SECONDARY("二级日志:重要信息"),TERTIARY("三级日志:次要信息"),QUATERNARY("四级日志:普通信息"))',
-  `customized_operation_type` varchar(32) NOT NULL COMMENT '自定义记录日志操作类型(LOGIN("用户登录"),LOGOUT("用户登出"),ADD("新增"),DELETE("删除"),UPDATE("修改"),IMPORT("导入"),EXPORT("导出"),UN_KNOW("未知"))',
-  `operation_type` varchar(32) DEFAULT NULL COMMENT '操作类型(UN_KNOW("未知"),SELECT("查询"),EDIT("新增或更新"),DELETE("删除"))',
-  `operation_unit` varchar(128) DEFAULT NULL COMMENT '操作对象(略)',
-  `system_type` varchar(32) DEFAULT NULL COMMENT '日志系统类型',
-  `url` varchar(64) DEFAULT NULL COMMENT '请求地址url',
-  `privilege_id` bigint DEFAULT NULL COMMENT '权限菜单id',
-  `clazz_name` varchar(64) DEFAULT NULL COMMENT '类名称',
-  `method` varchar(64) DEFAULT NULL COMMENT '方法名称',
-  `args` mediumtext COMMENT '参数',
-  `run_time` bigint DEFAULT NULL COMMENT '方法运行时间',
-  `run_status` varchar(32) DEFAULT NULL COMMENT '方法运行状态',
-  `return_value` mediumtext COMMENT '方法返回值',
-  `user_id` bigint NOT NULL COMMENT '用户对象id',
-  `user_name` varchar(32) DEFAULT NULL COMMENT '用户名称',
-  `ip` varchar(32) NOT NULL COMMENT 'ip地址',
-  `create_time` bigint DEFAULT NULL COMMENT '日志记录时间',
-  PRIMARY KEY (`id`) USING BTREE,
-  KEY `operation_log_idx` (`school_id`,`customized_operation_type`,`org_id`,`user_id`,`create_time`) USING BTREE
+       `id` bigint NOT NULL COMMENT 'id',
+       `school_id` bigint DEFAULT NULL COMMENT '学校id',
+       `user_id` bigint NOT NULL COMMENT '用户对象id',
+       `ip` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'ip地址',
+       `privilege_id` bigint DEFAULT NULL COMMENT '权限菜单id',
+       `operation_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '自定义记录日志操作类型(LOGIN("用户登录"),LOGOUT("用户登出"),ADD("新增"),DELETE("删除"),UPDATE("修改"),IMPORT("导入"),EXPORT("导出"),UN_KNOW("未知"))',
+       `detail` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci COMMENT '日志详情',
+       `function_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '功能名称',
+       `url` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '请求地址url',
+       `args` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '参数',
+       `run_status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '方法运行状态',
+       `create_time` bigint DEFAULT NULL COMMENT '日志记录时间',
+       PRIMARY KEY (`id`) USING BTREE,
+       KEY `operation_log_idx` (`school_id`,`user_id`,`privilege_id`,`operation_type`,`create_time`) USING BTREE
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='基础日志记录表';
 
 -- ----------------------------
@@ -788,8 +779,8 @@ CREATE TABLE IF NOT EXISTS `exam_detail` (
   `print_plan_id` bigint NOT NULL COMMENT '印刷计划ID',
   `exam_id` bigint DEFAULT NULL COMMENT '考试ID',
   `print_plan_name` varchar(100) DEFAULT NULL COMMENT '印刷计划名称',
-  `exam_start_time` bigint NOT NULL COMMENT '考试开始日期',
-  `exam_end_time` bigint NOT NULL COMMENT '考试结束日期',
+  `exam_start_time` bigint DEFAULT NULL COMMENT '考试开始日期',
+  `exam_end_time` bigint DEFAULT NULL COMMENT '考试结束日期',
   `exam_place` varchar(30) DEFAULT NULL COMMENT '考场',
   `total_subjects` int DEFAULT NULL COMMENT '总科次:考场总科次',
   `exam_room` varchar(30) DEFAULT NULL COMMENT '教室',
@@ -960,8 +951,8 @@ CREATE TABLE IF NOT EXISTS `exam_print_plan` (
   `org_id` bigint NOT NULL COMMENT '机构id',
   `category` varchar(10) DEFAULT NULL COMMENT '考试类型',
   `name` varchar(150) DEFAULT NULL COMMENT '名称',
-  `exam_start_time` bigint NOT NULL COMMENT '考试开始时间',
-  `exam_end_time` bigint NOT NULL COMMENT '考试结束时间',
+  `exam_start_time` bigint DEFAULT NULL COMMENT '考试开始时间',
+  `exam_end_time` bigint DEFAULT NULL COMMENT '考试结束时间',
   `print_content` varchar(30) NOT NULL COMMENT '{“PAPER”, "CARD"}',
   `backup_method` varchar(10) NOT NULL COMMENT 'PLACE-按考点,ROOM-按考场',
   `backup_count` double NOT NULL COMMENT '试卷、题卡备份数量(0-1为按比例,大于等于1为按数量)',
@@ -2647,6 +2638,7 @@ INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (303, '下载', 'Download', 'LINK', 42, 3, 'AUTH', '164', 1, 0, 1);
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (304, '查询条件', 'Condition', 'CONDITION', 42, 1, 'AUTH', '76', 1, 0, 1);
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (305, '列表', 'List', 'LIST', 42, 1, 'AUTH', '76', 1, 0, 1);
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('306', '从题库选择试卷', 'SelectTikuPaper', 'BUTTON', '40', '13', 'AUTH', '1', '0', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (308, '编辑', 'Edit', 'LINK', 42, 4, 'AUTH', '189', 0, 0, 0);
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (309, '查询', 'Select', 'BUTTON', 43, 1, 'AUTH', '48,49', 1, 0, 1);
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (310, '新增', 'Add', 'BUTTON', 43, 2, 'AUTH', '50,49,193,194,621', 1, 0, 1);
@@ -2840,6 +2832,8 @@ INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (542, '查询接口', '/api/admin/mark/archive/score/list', 'URL', 487, 1, 'AUTH', NULL, 1, 1, 1);
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (543, '成绩导出接口', '/api/admin/mark/archive/score/export', 'URL', 488, 2, 'AUTH', NULL, 1, 1, 1);
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (544, '报告下载', '/api/admin/mark/archive/score/report/download', 'URL', 489, 2, 'AUTH', NULL, 1, 1, 1);
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES ('545', '成绩下载', 'DownloadScore', 'BUTTON', '487', '2', 'AUTH', '546', '1', '0', '1');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('546', '成绩下载', '/api/admin/mark/archive/score/download', 'URL', '487', '2', 'AUTH', '1', '1', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (547, '阅卷试卷上传待办计数接口', '/api/admin/work/structure/task/ready_count', 'URL', 16, 7, 'SYS', NULL, 1, 1, 1);
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (548, '阅卷试卷上传待办接口', '/api/admin/work/structure/task/ready', 'URL', 16, 8, 'SYS', '490', 1, 1, 1);
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES (549, '短信日志', 'SmsManage', 'MENU', 112, 3, NULL, NULL, 1, 0, 1);

+ 39 - 0
distributed-print/install/mysql/upgrade/3.3.3.sql

@@ -11,3 +11,42 @@ ALTER TABLE `exam_detail`
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES ('545', '成绩下载', 'DownloadScore', 'BUTTON', '487', '2', 'AUTH', '546', '1', '0', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('546', '成绩下载', '/api/admin/mark/archive/score/download', 'URL', '487', '2', 'AUTH', '1', '1', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('306', '从题库选择试卷', 'SelectTikuPaper', 'BUTTON', '40', '13', 'AUTH', '1', '0', '1');
+
+ALTER TABLE `basic_operation_log`
+DROP COLUMN `user_name`,
+DROP COLUMN `return_value`,
+DROP COLUMN `run_time`,
+DROP COLUMN `method`,
+DROP COLUMN `clazz_name`,
+DROP COLUMN `system_type`,
+DROP COLUMN `operation_unit`,
+DROP COLUMN `operation_type`,
+DROP COLUMN `level`,
+DROP COLUMN `org_id`,
+ADD COLUMN `function_name` VARCHAR(100) NULL COMMENT '功能名称' AFTER `operation_type`,
+CHANGE COLUMN `user_id` `user_id` BIGINT NOT NULL COMMENT '用户对象id' AFTER `school_id`,
+CHANGE COLUMN `ip` `ip` VARCHAR(32) CHARACTER SET 'utf8mb4' NOT NULL COMMENT 'ip地址' AFTER `user_id`,
+CHANGE COLUMN `privilege_id` `privilege_id` BIGINT NULL DEFAULT NULL COMMENT '权限菜单id' AFTER `ip`,
+CHANGE COLUMN `customized_operation_type` `operation_type` VARCHAR(32) CHARACTER SET 'utf8mb4' NOT NULL COMMENT '自定义记录日志操作类型(LOGIN(\"用户登录\"),LOGOUT(\"用户登出\"),ADD(\"新增\"),DELETE(\"删除\"),UPDATE(\"修改\"),IMPORT(\"导入\"),EXPORT(\"导出\"),UN_KNOW(\"未知\"))' AFTER `privilege_id`,
+CHANGE COLUMN `school_id` `school_id` BIGINT NULL COMMENT '学校id' ,
+CHANGE COLUMN `detail` `detail` MEDIUMTEXT CHARACTER SET 'utf8mb4' NULL COMMENT '日志详情' ,
+DROP INDEX `operation_log_idx` ,
+ADD INDEX `operation_log_idx` USING BTREE (`school_id`, `user_id`, `privilege_id`, `operation_type`, `create_time`);
+
+update basic_operation_log t set t.operation_type = 'SAVE' where t.operation_type = 'EDIT';
+update basic_operation_log t set t.operation_type = 'OTHER' where t.operation_type = 'UN_KNOW';
+
+-- drop table if exists exam_detail_course_paper_type;
+-- drop table if exists basic_template_org;
+-- drop table if exists cloud_user_push_status;
+-- drop table if exists exam_card_detail;
+-- drop table if exists exam_paper_class_marker;
+-- drop table if exists exam_paper_group;
+-- drop table if exists exam_paper_group_marker;
+-- drop table if exists exam_paper_structure;
+-- drop table if exists exam_task_sync;
+-- drop table if exists t_sync_exam_log;
+-- drop table if exists t_sync_stmms_exam;
+
+-- delete脚本需要加上新增的表
+

+ 0 - 40
distributed-print/install/mysql/upgrade/3.4.0.sql

@@ -1,40 +0,0 @@
-USE teachcloud_db;
-
-ALTER TABLE `basic_operation_log`
-DROP COLUMN `user_name`,
-DROP COLUMN `return_value`,
-DROP COLUMN `run_time`,
-DROP COLUMN `method`,
-DROP COLUMN `clazz_name`,
-DROP COLUMN `system_type`,
-DROP COLUMN `operation_unit`,
-DROP COLUMN `operation_type`,
-DROP COLUMN `level`,
-DROP COLUMN `org_id`,
-ADD COLUMN `function_name` VARCHAR(100) NULL COMMENT '功能名称' AFTER `operation_type`,
-CHANGE COLUMN `user_id` `user_id` BIGINT NOT NULL COMMENT '用户对象id' AFTER `school_id`,
-CHANGE COLUMN `ip` `ip` VARCHAR(32) CHARACTER SET 'utf8mb4' NOT NULL COMMENT 'ip地址' AFTER `user_id`,
-CHANGE COLUMN `privilege_id` `privilege_id` BIGINT NULL DEFAULT NULL COMMENT '权限菜单id' AFTER `ip`,
-CHANGE COLUMN `customized_operation_type` `operation_type` VARCHAR(32) CHARACTER SET 'utf8mb4' NOT NULL COMMENT '自定义记录日志操作类型(LOGIN(\"用户登录\"),LOGOUT(\"用户登出\"),ADD(\"新增\"),DELETE(\"删除\"),UPDATE(\"修改\"),IMPORT(\"导入\"),EXPORT(\"导出\"),UN_KNOW(\"未知\"))' AFTER `privilege_id`,
-CHANGE COLUMN `school_id` `school_id` BIGINT NULL COMMENT '学校id' ,
-CHANGE COLUMN `detail` `detail` MEDIUMTEXT CHARACTER SET 'utf8mb4' NULL COMMENT '日志详情' ,
-DROP INDEX `operation_log_idx` ,
-ADD INDEX `operation_log_idx` USING BTREE (`school_id`, `user_id`, `privilege_id`, `operation_type`, `create_time`);
-
-update basic_operation_log t set t.operation_type = 'SAVE' where t.operation_type = 'EDIT';
-update basic_operation_log t set t.operation_type = 'OTHER' where t.operation_type = 'UN_KNOW';
-
--- drop table if exists exam_detail_course_paper_type;
--- drop table if exists basic_template_org;
--- drop table if exists cloud_user_push_status;
--- drop table if exists exam_card_detail;
--- drop table if exists exam_paper_class_marker;
--- drop table if exists exam_paper_group;
--- drop table if exists exam_paper_group_marker;
--- drop table if exists exam_paper_structure;
--- drop table if exists exam_task_sync;
--- drop table if exists t_sync_exam_log;
--- drop table if exists t_sync_stmms_exam;
-
--- delete脚本需要加上新增的表
-

+ 1 - 1
distributed-print/src/main/java/com/qmth/distributed/print/api/TFCustomFlowController.java

@@ -165,7 +165,7 @@ public class TFCustomFlowController {
     @ApiOperation(value = "审批流程")
     @ApiResponses({@ApiResponse(code = 200, message = "常规信息", response = ResultUtil.class)})
     @RequestMapping(value = "/task/approve", method = RequestMethod.POST)
-    @OperationLogDetail(operationType = OperationTypeEnum.UPDATE)
+    @OperationLogDetail(operationType = OperationTypeEnum.APPROVE, detail = "审核操作,命题任务ID:{{flowTaskApproveParam.taskId}}、审核结果:{{flowTaskApproveParam.approvePass}}")
     public Result taskApprove(@Valid @RequestBody FlowTaskApproveParam flowTaskApproveParam, BindingResult bindingResult) {
         if (bindingResult.hasErrors()) {
             return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());

+ 1 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/log/OperationTypeEnum.java

@@ -19,6 +19,7 @@ public enum OperationTypeEnum {
     UPDATE("修改"),
     IMPORT("导入"),
     EXPORT("导出"),
+    APPROVE("审核"),
     SYNC("同步"),
     PREVIEW("预览"),
     SSO("单点登录"),

+ 1 - 1
teachcloud-common/src/main/resources/mapper/BasicOperationLogMapper.xml

@@ -14,7 +14,7 @@
             bol.operation_type AS operationType,
             bol.create_time AS createTime,
             bol.run_status runStatus,
-            sp.name privilegeName,
+            case bol.privilege_id when '99990111' then '首页' else sp.name end privilegeName,
             bol.args
         FROM
             basic_operation_log  bol

+ 25 - 2
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkStudentServiceImpl.java

@@ -21,6 +21,9 @@ import javax.validation.constraints.NotNull;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.io.FilenameUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.ss.usermodel.CellStyle;
+import org.apache.poi.ss.usermodel.FillPatternType;
+import org.apache.poi.ss.usermodel.IndexedColors;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -1606,7 +1609,6 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
     public void scoreDownload(ArchiveStudentQuery query, HttpServletResponse response) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         //生成表头
-        String[] columnName1 = new String[]{"学生姓名", "学号", "学院", "班级", "课程代码", "课程名称", "客观分", "主观分", "成绩"};
         String[] columnNames = new String[]{"序号", "班级", "学号", "姓名", "平时(必填)", "实验(必填)", "期末(必填)", "备注"};
         //生成动态内容
         List<String[]> columnValues = new ArrayList<>();
@@ -1626,12 +1628,33 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
             columnValues.add(columnValue);
         }
         try {
+            String sheetName = "成绩下载";
             log.debug("导出Excel开始...");
             response.setHeader("Content-Disposition", "inline;filename=" + URLEncoder.encode("成绩下载", SystemConstant.CHARSET_NAME) + ".xlsx");
             response.setContentType("application/vnd.ms-excel");
             ServletOutputStream outputStream = response.getOutputStream();
             ExcelWriter writer = ExcelWriter.create(ExcelType.XLSX);
-            writer.writeDataArrays("成绩下载", null, columnNames, columnValues.listIterator());
+            writer.writeDataArrays(sheetName, null, columnNames, columnValues.listIterator());
+
+            CellStyle cellStyle1 = writer.createCellStyle();
+            org.apache.poi.ss.usermodel.Font font1 = writer.createFont();
+            font1.setBold(true);
+            font1.setFontHeightInPoints((short) 20);
+            cellStyle1.setFont(font1);
+            cellStyle1.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
+            cellStyle1.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+            writer.setCellStyle(sheetName, cellStyle1, 0, new int[]{0, 1, 2, 3, 7});
+
+            CellStyle cellStyle2 = writer.createCellStyle();
+            org.apache.poi.ss.usermodel.Font font2 = writer.createFont();
+            font2.setBold(true);
+            font2.setFontHeightInPoints((short) 15);
+            font2.setColor(IndexedColors.RED.getIndex());
+            cellStyle2.setFont(font2);
+            cellStyle2.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
+            cellStyle2.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+            writer.setCellStyle(sheetName, cellStyle2, 0, new int[]{4, 5, 6});
+
             writer.output(outputStream);
             outputStream.flush();
             outputStream.close();