ソースを参照

完成补录功能的基础处理,增加补录功能配置与菜单处理。

CodeLife Leno 2 ヶ月 前
コミット
e8acef2639

+ 245 - 1
DBScript/李庚谱/001-DDL.sql

@@ -855,4 +855,248 @@ create table RWA_APM_BUS_RS_LEDGERGENERAL
     EFF_DATE                      VARCHAR(60) comment '生效日',
     DUE_DATE                      VARCHAR(60) comment '到期日',
     primary key (CALCINDEX, LOAN_REFERENCE_NO, SUBJECT_CODES)
-) comment '总账科目计量结果表';
+) comment '总账科目计量结果表';
+
+
+-- 2025-03-22 更新脚本
+
+-- --------------------------
+-- TABLE structure for rmc_imput_suptaskconf_baseinfo
+-- --------------------------
+drop TABLE if exists rmc_imput_suptaskconf_baseinfo;
+create table if not exists rmc_imput_suptaskconf_baseinfo (
+	taskcode varchar(60) not null comment '任务编号',
+	tmpname varchar(300) comment '任务名称',
+	taskversion decimal(10,0) comment '任务版本号',
+	orgcode varchar(60) comment '负责机构',
+	account varchar(60) comment '首选负责人',
+	frequency varchar(60) comment '补录频率',
+	adjustment varchar(20) comment '天数调整',
+	ischeck varchar(20) comment '是否复核',
+	yesorno varchar(30) comment '是否有效 YESORNO',
+	primary key (taskcode)
+)comment='补录任务基本信息表';
+
+-- --------------------------
+-- TABLE structure for rmc_imput_suptaskconf_relatedinfo
+-- --------------------------
+drop TABLE if exists rmc_imput_suptaskconf_relatedinfo;
+create table if not exists rmc_imput_suptaskconf_relatedinfo (
+	taskcode varchar(60) not null comment '任务编号',
+	tmpcode varchar(60) not null comment '补录模板编号',
+	sqlcode text comment '初始化数据源',
+	remark varchar(600) comment '补录模板说明',
+	primary key (taskcode, tmpcode)
+)comment='补录任务数据相关表';
+
+-- --------------------------
+-- TABLE structure for rmc_imput_suptaskrun_bussinessdetail
+-- --------------------------
+drop TABLE if exists rmc_imput_suptaskrun_bussinessdetail;
+create table if not exists rmc_imput_suptaskrun_bussinessdetail (
+	taskbussinessid varchar(60) not null comment '任务实例编号',
+	taskCode varchar(60) not null comment '补录任务编号',
+	taskVersion decimal(10,0) not null comment '补录任务版本号',
+	tmpCode varchar(60) not null comment '补录模板编号',
+	tmpTableName varchar(300) comment '补录临时表',
+	tmpRemark varchar(60) comment '补录结果',
+	primary key (taskbussinessid, taskCode, taskVersion, tmpCode)
+)comment='补录任务中的数据实例表';
+
+-- --------------------------
+-- TABLE structure for rmc_imput_suptaskrun_bussinessflowinfo
+-- --------------------------
+drop TABLE if exists rmc_imput_suptaskrun_bussinessflowinfo;
+create table if not exists rmc_imput_suptaskrun_bussinessflowinfo (
+	taskbussinessid varchar(60) not null comment '任务实例编号',
+	flowbussinessid varchar(60) not null comment '流程实例编号',
+	flowid varchar(60) not null comment '流程编号',
+	Account varchar(30) comment '当前处理人',
+	orgcode varchar(30) comment '当前处理机构',
+	primary key (taskbussinessid, flowbussinessid, flowid)
+)comment='流程与补录任务实例关系表';
+
+
+-- --------------------------
+-- TABLE structure for rmc_imput_suptaskrun_bussinessinfo
+-- --------------------------
+drop TABLE if exists rmc_imput_suptaskrun_bussinessinfo;
+create table if not exists rmc_imput_suptaskrun_bussinessinfo (
+	taskbussinessid varchar(60) not null comment '任务实例编号',
+	taskCode varchar(60) not null comment '补录任务编号',
+	taskVersion decimal(10,0) not null comment '补录任务版本号',
+	taskStatus varchar(30) comment '补录任务状态',
+	taskStartDate varchar(10) comment '补录开始时间',
+	taskUpdateDate varchar(10) comment '更新时间',
+	taskCreatePerson varchar(60) comment '创建人',
+	taskUpdatePerson varchar(60) comment '更新人',
+	taskFirstPerson varchar(60) comment '补录人',
+	taskOrgcode varchar(60) comment '补录机构',
+	taskReviewedPerson varchar(60) comment '复核人',
+	remark varchar(300) comment '补录说明',
+	term varchar(60),
+	primary key (taskbussinessid, taskCode, taskVersion)
+)comment='补录任务实例表';
+
+-- --------------------------
+-- TABLE structure for rmc_imput_suptaskrun_tmprelas
+-- --------------------------
+drop TABLE if exists rmc_imput_suptaskrun_tmprelas;
+create table if not exists rmc_imput_suptaskrun_tmprelas (
+	taskbussinessid varchar(100) not null comment '补录任务实例号',
+	term varchar(60) not null comment '数据期次',
+	taskcode varchar(60) not null comment '补录任务编号',
+	tmpcode varchar(60) not null comment '模板编号',
+	primary key (taskbussinessid, tmpcode)
+)comment='补录任务实例的模板清单';
+
+-- --------------------------
+-- TABLE structure for rmc_imput_tmpconf_baseinfo
+-- --------------------------
+drop TABLE if exists rmc_imput_tmpconf_baseinfo;
+create table if not exists rmc_imput_tmpconf_baseinfo (
+	tmpcode varchar(60) not null comment '模板编号',
+	tmpname varchar(300) comment '模板名称',
+	tmptype varchar(30) comment '模板类型',
+	rowrange varchar(60) comment '行范围',
+	columnrange varchar(60) comment '列范围',
+	tmpfilename varchar(300) comment '文件名',
+	tmpfilecode varchar(60) comment '模板文件编号',
+	primary key (tmpcode)
+)comment='模板基本信息定义表';
+
+-- --------------------------
+-- TABLE structure for rmc_imput_tmpconf_fielddetails
+-- --------------------------
+drop TABLE if exists rmc_imput_tmpconf_fielddetails;
+create table if not exists rmc_imput_tmpconf_fielddetails (
+	tmpcode varchar(60) not null comment '模板编号',
+	tmpfieldcode varchar(60) not null comment '字段编号',
+	rowcoltype varchar(30) comment '行列类型',
+	filedrowrange varchar(60) comment '行范围',
+	filedcolumnrange varchar(60) comment '列范围',
+	filedcoltype varchar(60) comment '字段类型与长度',
+	remark varchar(300) comment '数据项说明',
+	yesorno varchar(30) comment '是否有效 YESORNO',
+	primary key (tmpcode, tmpfieldcode)
+)comment='模板字段详情定义表';
+
+
+-- --------------------------
+-- TABLE structure for rmc_imput_tmpconf_verificationrules
+-- --------------------------
+drop TABLE if exists rmc_imput_tmpconf_verificationrules;
+create table if not exists rmc_imput_tmpconf_verificationrules (
+	taskcode varchar(60) not null comment '任务编号',
+	tmpcode varchar(60) not null comment '模板编号',
+	tmpverificationcode varchar(60) comment '规则编号',
+	tmpverificationname varchar(300) comment '规则名称',
+	tmpverrowcoltype varchar(30) comment '行列类型',
+	vertimmer varchar(30) comment '模板验证时点',
+	tmpverrowrange varchar(60) comment '行范围',
+	tmpvercolumnrange varchar(60) comment '列范围',
+	checktype varchar(30) comment '约束方式',
+	datatype varchar(60) comment '数据类型',
+	excelformula varchar(2000) comment '约束公式',
+	sqlcode text comment '约束规则sql',
+	exceedtype varchar(30) comment '越界处理方式',
+	errormsgtmplate varchar(300) comment '提示信息模板'
+)comment='模板数据校验规则定义表';
+
+
+-- --------------------------
+-- TABLE structure for rmc_input_suptaskrun_baseinfo
+-- --------------------------
+drop TABLE if exists rmc_input_suptaskrun_baseinfo;
+create table if not exists rmc_input_suptaskrun_baseinfo (
+	taskbussinessid varchar(60) not null comment '任务实例编号',
+	taskCode varchar(60) not null comment '补录任务编号',
+	taskVersion decimal(10,0) not null comment '补录任务版本号',
+	indexcode varchar(60) not null comment '指标编号',
+	indexname varchar(300) comment '指标名称',
+	cpValue varchar(600),
+	baorfiChanges varchar(600) comment '指标变动原因简析',
+	oeorLevel varchar(60) comment '风险水平整体水平评价',
+	raftNextstage varchar(60) comment '下阶段风险研判',
+	deptcode varchar(200) not null comment '补录部门',
+	cpvalTypeName varchar(60),
+	dict varchar(60) comment '字段使用字典',
+	primary key (taskbussinessid, taskCode, taskVersion, indexcode, deptcode)
+)comment='页面补录指标数据实例表';
+
+-- --------------------------
+-- TABLE structure for rmc_input_tmpconf_baseinfo
+-- --------------------------
+drop TABLE if exists rmc_input_tmpconf_baseinfo;
+create table if not exists rmc_input_tmpconf_baseinfo (
+	indexcode varchar(60) not null comment '指标编号',
+	indexname varchar(300) comment '指标名称',
+	cpvalue varchar(600) comment '本期值',
+	baorfichanges varchar(600) comment '指标变动原因简析',
+	oeorlevel varchar(60) comment '风险水平整体水平评价',
+	raftnextstage varchar(60) comment '下阶段风险研判',
+	deptcode varchar(20) not null comment '补录部门',
+	cpvalTypeName varchar(60),
+	dict varchar(60) comment '字段使用字典',
+	primary key (indexcode, deptcode)
+)comment='页面补录模板基本信息定义表';
+
+-- --------------------------
+-- TABLE structure for sys_imput_suptaskconf_flowapproval
+-- --------------------------
+drop TABLE if exists sys_imput_suptaskconf_flowapproval;
+create table if not exists sys_imput_suptaskconf_flowapproval (
+	bussinessid varchar(100) not null comment '流程实例号',
+	account varchar(60) not null comment '审批人',
+	orgcode varchar(60) not null comment '审批机构',
+	approvalType varchar(60) not null comment '审批意见类型',
+	approvalRemark varchar(500) comment '审批意见',
+	primary key (bussinessid)
+)comment='流程与补录任务实例关系表';
+
+-- --------------------------
+-- TABLE structure for sys_imput_suptaskconf_submitflowdataexe
+-- --------------------------
+drop TABLE if exists sys_imput_suptaskconf_submitflowdataexe;
+create table if not exists sys_imput_suptaskconf_submitflowdataexe (
+	taskcode varchar(60) not null comment '任务编号',
+	tmpcode varchar(60) not null comment '模板编号',
+	val text not null comment '任务处理内容',
+	valType varchar(60) not null comment '任务处理类型 BEAN 为 处理类(暂不支持), SQL为当作SQL处理',
+	indexNum decimal(5,0) comment '执行顺序号'
+)comment='流程终审时,需要根据任务编号以及模板编号处理的程序';
+create index searchIndex on sys_imput_suptaskconf_submitflowdataexe (taskcode ASC, tmpcode ASC, indexNum ASC);
+
+
+-- --------------------------
+-- TABLE structure for sys_imput_suptaskrun_finaldata
+-- --------------------------
+drop TABLE if exists sys_imput_suptaskrun_finaldata;
+create table if not exists sys_imput_suptaskrun_finaldata (
+	taskbussinessid varchar(100) not null comment '流程实例号',
+	flowbussinessid varchar(100) not null comment '流程实例号',
+	taskcode varchar(60) not null comment '任务编号',
+	tmpcode varchar(60) not null comment '模板编号',
+	startDate varchar(60) not null comment '日期 yyyy-MM-dd',
+	term varchar(60) not null comment '期次',
+	termDT varchar(60) not null comment '日期长度的期次,通常为月份的最后一天',
+	orgcode varchar(60) not null comment '机构号',
+	indexId varchar(60) not null comment '指标编号',
+	dataStr varchar(60) comment '数据结果字符串',
+	dataType varchar(60) not null comment '数据类型 STRING,DOUBLE',
+	primary key (taskbussinessid, tmpcode, term, indexId, orgcode)
+)comment='流程终审时,从补录中间表数据结果';
+
+
+-- --------------------------
+-- TABLE structure for sys_task_all_execute
+-- --------------------------
+drop TABLE if exists sys_task_all_execute;
+create table if not exists sys_task_all_execute (
+	id varchar(100) not null comment '主键,没啥实际作用',
+	type_ varchar(60) not null comment '类型,主要用于区分执行类型,扩展用 INPUT 补录;',
+	index_ decimal(10,0) not null comment '执行序号',
+	val text not null comment '执行任务的标记, SQL 就是执行的SQL, BEAN 就是要执行任务的Service 一定是通过 @Service 标记的才可以',
+	valtype varchar(60) not null comment '执行任务的类型 SQL 或 BEAN 扩展请继承 TaskAllExecuteMain',
+	primary key (id)
+)comment='补录全部完成的任务执行表';

+ 80 - 0
DBScript/李庚谱/002-DML.sql

@@ -16,3 +16,83 @@ VALUES ('CALC_STATE', 'END', '已完成', 'BUSDICT', 3.0000000000000000000000000
 INSERT INTO sys_noun (NOUNITEM, NOUNVALUE, NOUNNAME, NOUNSUPER, NOUNLEVEL, NOUNORDER, NOUNMODULE, NOUNVALIDITY, READONLY, NOUNPROP, NOUNREMARKS, NOUNRELATION, ORGFLAG)
 VALUES ('CALC_STATE', 'ERROR', '异常', 'BUSDICT', 3.000000000000000000000000000000, 4.000000000000000000000000000000, 'common', '1', '0', null, null, '1', '0');
 
+
+DELETE FROM sys_funinfo WHERE FUNCCODE IN ('BL100000','BL100001','BL100002','BL100003','BL100004','BL100006');
+insert into sys_funinfo (FUNCCODE, FUNCNAME, PARENTCODE, ORDERNO, LEAF, URL, LEVELCODE, REMARK, ORGTYPE, TERMINALTYPE) values ('BL100000', '数据补录', '0', 1.000000000000000000000000000000, '0', 'null', 1.000000000000000000000000000000, null, '4tailbranch', 'null');
+insert into sys_funinfo (FUNCCODE, FUNCNAME, PARENTCODE, ORDERNO, LEAF, URL, LEVELCODE, REMARK, ORGTYPE, TERMINALTYPE) values ('BL100001', 'Excel补录模板配置', 'BL100000', 1.000000000000000000000000000000, '1', '/rdp/rdpAnalysis/analTemplate/query/ExcelTmpQueryList', 2.000000000000000000000000000000, null, '4tailbranch', 'null');
+insert into sys_funinfo (FUNCCODE, FUNCNAME, PARENTCODE, ORDERNO, LEAF, URL, LEVELCODE, REMARK, ORGTYPE, TERMINALTYPE) values ('BL100002', '数据补录任务管理', 'BL100000', 2.000000000000000000000000000000, '1', '/rdp/rdpAnalysis/analTemplate/query/SupplementTaskQueryList', 2.000000000000000000000000000000, null, '4tailbranch', 'null');
+insert into sys_funinfo (FUNCCODE, FUNCNAME, PARENTCODE, ORDERNO, LEAF, URL, LEVELCODE, REMARK, ORGTYPE, TERMINALTYPE) values ('BL100003', '数据补录及审核', 'BL100000', 3.000000000000000000000000000000, '1', '/rdp/rdpAnalysis/analTemplate/query/SupplementTaskReviewList', 2.000000000000000000000000000000, null, '4tailbranch', 'null');
+insert into sys_funinfo (FUNCCODE, FUNCNAME, PARENTCODE, ORDERNO, LEAF, URL, LEVELCODE, REMARK, ORGTYPE, TERMINALTYPE) values ('BL100004', '数据补录任务进度查询', 'BL100000', 4.000000000000000000000000000000, '1', '/rdp/rdpAnalysis/analTemplate/query/SupplementPlanQuery', 2.000000000000000000000000000000, null, '4tailbranch', 'null');
+insert into sys_funinfo (FUNCCODE, FUNCNAME, PARENTCODE, ORDERNO, LEAF, URL, LEVELCODE, REMARK, ORGTYPE, TERMINALTYPE) values ('BL100006', '补录数据查询', 'BL100000', 6.000000000000000000000000000000, '1', '/rdp/rdpAnalysis/analTemplate/query/SupplementResultQuery', 2.000000000000000000000000000000, null, '4tailbranch', 'null');
+
+-- 删除原有的补录功能配置
+delete from sys_funorginfo where FUNCCODE in ('M110000','M110001','M110002','M110003');
+DELETE FROM sys_funorginfo WHERE FUNCCODE IN ('BL100000','BL100001','BL100002','BL100003','BL100004','BL100006');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100000', '000000');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100000', '351001');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100000', '355001');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100000', '355101');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100000', '355102');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100000', '355103');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100000', '355104');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100000', '355105');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100000', '355106');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100001', '000000');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100001', '351001');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100001', '355001');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100001', '355101');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100001', '355102');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100001', '355103');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100001', '355104');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100001', '355105');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100001', '355106');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100002', '000000');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100002', '351001');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100002', '355001');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100002', '355101');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100002', '355102');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100002', '355103');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100002', '355104');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100002', '355105');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100002', '355106');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100003', '000000');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100003', '351001');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100003', '355001');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100003', '355101');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100003', '355102');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100003', '355103');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100003', '355104');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100003', '355105');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100003', '355106');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100004', '000000');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100004', '351001');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100004', '355001');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100004', '355101');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100004', '355102');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100004', '355103');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100004', '355104');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100004', '355105');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100004', '355106');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100006', '000000');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100006', '351001');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100006', '355001');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100006', '355101');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100006', '355102');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100006', '355103');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100006', '355104');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100006', '355105');
+insert into sys_funorginfo (FUNCCODE, ORGCODE) values ('BL100006', '355106');
+
+-- 删除原有的补录功能配置
+delete from sys_roleright where FUNCCODE in ('M110000','M110001','M110002','M110003');
+-- 增加新的数据补录功能配置
+delete from sys_roleright where FUNCCODE in ('BL100000','BL100001','BL100002','BL100003','BL100004','BL100006');
+INSERT INTO sys_roleright (ROLEID, FUNCCODE, DATASCOPE, BLINE) VALUES ('sysadmin', 'BL100000', null, '0');
+INSERT INTO sys_roleright (ROLEID, FUNCCODE, DATASCOPE, BLINE) VALUES ('sysadmin', 'BL100001', null, '0');
+INSERT INTO sys_roleright (ROLEID, FUNCCODE, DATASCOPE, BLINE) VALUES ('sysadmin', 'BL100002', null, '0');
+INSERT INTO sys_roleright (ROLEID, FUNCCODE, DATASCOPE, BLINE) VALUES ('sysadmin', 'BL100003', null, '0');
+INSERT INTO sys_roleright (ROLEID, FUNCCODE, DATASCOPE, BLINE) VALUES ('sysadmin', 'BL100004', null, '0');
+INSERT INTO sys_roleright (ROLEID, FUNCCODE, DATASCOPE, BLINE) VALUES ('sysadmin', 'BL100006', null, '0');
+
+
+

+ 16 - 0
Procedure/backend/project/src/main/java/com/sundata/common/util/JavaRuntimeUtils.java

@@ -0,0 +1,16 @@
+package com.sundata.common.util;
+
+import java.lang.management.ManagementFactory;
+import java.lang.management.RuntimeMXBean;
+
+public class JavaRuntimeUtils {
+    static RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
+
+    /**
+     * 判断是否是 DEBUG 模式,如果是则返回 true
+     * @return 是否处于 debug 模式下
+     */
+    public static boolean isDebug() {
+        return runtimeMXBean.getInputArguments().toString().indexOf("-agentlib:jdwp") > 0;
+    }
+}

+ 3 - 0
Procedure/backend/project/src/main/java/com/sundata/product/taskExecute/utils/RegexTextUtil.java

@@ -11,6 +11,9 @@ import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+/**
+ * 变量查找工具
+ */
 public class RegexTextUtil {
 
     public static final String regex = "\\$\\{([^}]+)}";

+ 82 - 52
Procedure/backend/project/src/main/java/com/sundata/product/tempFile/task/controller/ImportTaskBussinessController.java

@@ -1,26 +1,24 @@
 package com.sundata.product.tempFile.task.controller;
 
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.file.Files;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
-
-import cn.hutool.core.collection.ListUtil;
+import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.ArrayUtil;
+import cn.hutool.core.util.StrUtil;
+import com.sundata.common.base.ActiveUserService;
+import com.sundata.common.base.BaseAction;
+import com.sundata.common.exception.ServiceException;
+import com.sundata.common.login.ActiveUser;
+import com.sundata.common.util.FileUtil;
+import com.sundata.common.util.HtmlUtil;
+import com.sundata.product.rwa.util.html.ToHtml;
 import com.sundata.product.tempFile.task.model.*;
+import com.sundata.product.tempFile.task.service.ImportTaskBussinessService;
+import com.sundata.product.tempFile.task.service.TmpWorkFlowService;
 import com.sundata.product.tempFile.task.utils.TmpTaskUtil;
 import com.sundata.product.wfEngine.wfHandle.model.WorkFlowPublicPropertyModel;
 import com.sundata.product.wfEngine.wfHandle.model.WorkFlowTaskModel;
 import com.sundata.product.wfEngine.wfPublic.service.WorkFlowPublicAPIService;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
-import org.apache.commons.lang3.ArrayUtils;
-import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -29,27 +27,27 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 
-import com.sundata.common.base.ActiveUserService;
-import com.sundata.common.base.BaseAction;
-import com.sundata.common.exception.ServiceException;
-import com.sundata.common.login.ActiveUser;
-import com.sundata.common.util.FileUtil;
-import com.sundata.product.tempFile.task.service.ImportTaskBussinessService;
-import com.sundata.product.tempFile.task.service.TmpWorkFlowService;
-
-import cn.hutool.core.map.MapUtil;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringWriter;
+import java.nio.file.Files;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 
 @Controller
 @RequestMapping("tempfile/task")
 public class ImportTaskBussinessController extends BaseAction {
 
     static final Logger LOG = LoggerFactory.getLogger(ImportTaskBussinessController.class);
-
-    @Autowired
-    private ImportTaskBussinessService service;
-
     @Autowired
     WorkFlowPublicAPIService workFlowService;
+    @Autowired
+    TmpWorkFlowService tmpWorkFlowService;
+    @Autowired
+    private ImportTaskBussinessService service;
 
     @RequestMapping("getAllInfo")
     public void getAllInfo(@RequestBody ImportTaskBussinessInfo info, HttpServletRequest request, HttpServletResponse response) {
@@ -144,16 +142,16 @@ public class ImportTaskBussinessController extends BaseAction {
 
     @GetMapping("overTask")
     public void overTask(String taskBussinessid, HttpServletRequest request) {
-        if (StringUtils.isEmpty(taskBussinessid)) {
+        if (StrUtil.isEmpty(taskBussinessid)) {
             taskBussinessid = request.getParameter("taskbusid");
         }
-        if (StringUtils.isEmpty(taskBussinessid)) {
+        if (StrUtil.isEmpty(taskBussinessid)) {
             taskBussinessid = request.getParameter("taskBussinessid");
         }
-        if (StringUtils.isEmpty(taskBussinessid)) {
+        if (StrUtil.isEmpty(taskBussinessid)) {
             taskBussinessid = request.getParameter("taskid");
         }
-        if (StringUtils.isEmpty(taskBussinessid)) {
+        if (StrUtil.isEmpty(taskBussinessid)) {
             return;
         }
         service.overTask(taskBussinessid);
@@ -176,9 +174,9 @@ public class ImportTaskBussinessController extends BaseAction {
 
     @RequestMapping("getIndexFile")
     public void getIndexFile(@RequestBody ImportTaskBussinessInfo info, HttpServletRequest request,
-                             HttpServletResponse response){
+                             HttpServletResponse response) {
         checkNull(info);
-        service.getIndexListWorkbook(info,response);
+        service.getIndexListWorkbook(info, response);
     }
 
     /**
@@ -210,18 +208,17 @@ public class ImportTaskBussinessController extends BaseAction {
     @RequestMapping("oneFileParsing")
     public void oneFileParsing(@RequestBody ImportTaskBussinessInfo info, HttpServletRequest request, HttpServletResponse response) throws IOException {
         List<String> errorStrings = null;
-            String msg = "补录成功";
-            checkNull(info);
-            errorStrings = service.oneFileParsing(info);
-            if ( errorStrings.size() == 0 ||!"no".equals(errorStrings.get(0))) {
-                if (!errorStrings.isEmpty()) {
-                    msg = ArrayUtil.join(errorStrings.toArray(), "\n");
-                }
-                sendData(response, MapUtil.builder().put("flag", errorStrings.isEmpty()).put("msg", msg).map());
+        String msg = "补录成功";
+        checkNull(info);
+        errorStrings = service.oneFileParsing(info);
+        if (errorStrings.size() == 0 || !"no".equals(errorStrings.get(0))) {
+            if (!errorStrings.isEmpty()) {
+                msg = ArrayUtil.join(errorStrings.toArray(), "\n");
             }
+            sendData(response, MapUtil.builder().put("flag", errorStrings.isEmpty()).put("msg", msg).map());
+        }
     }
 
-
     @RequestMapping("oneFileLastYM")
     public void oneFileLastYM(@RequestBody ImportTaskBussinessInfo info, HttpServletRequest request,
                               HttpServletResponse response) {
@@ -232,7 +229,7 @@ public class ImportTaskBussinessController extends BaseAction {
         String s = service.oneFileLastYM(tmpTaskBussinessdetail);
         if ("ok".equals(s)) {
             sendData(response, MapUtil.builder().put("flag", true).put("msg", "处理完成").map());
-        }else {
+        } else {
             sendData(response, MapUtil.builder().put("flag", false).put("msg", "处理失败,未找到上期数据").map());
         }
 
@@ -251,22 +248,22 @@ public class ImportTaskBussinessController extends BaseAction {
         List<TmpTaskBussinessBaseinfo> baseinfos = service.getIndexLastDataService(info);
         String msg = "获取成功";
         boolean b = true;
-        if (baseinfos == null || baseinfos.isEmpty()){
+        if (baseinfos == null || baseinfos.isEmpty()) {
             msg = "无上期数据";
             b = false;
         }
         for (int i = 0; i < baseinfos.size(); i++) {
             TmpTaskBussinessBaseinfo baseinfo = baseinfos.get(i);
-            if (baseinfo.getCpValue() == null || "".equals(baseinfo.getCpValue()) ) {
+            if (baseinfo.getCpValue() == null || "".equals(baseinfo.getCpValue())) {
                 msg = "无上期数据";
                 b = false;
-            }else {
+            } else {
                 msg = "获取成功";
                 b = true;
-                sendData(response, MapUtil.builder().put("flag", b).put("data",baseinfos).put("msg", msg).map());
+                sendData(response, MapUtil.builder().put("flag", b).put("data", baseinfos).put("msg", msg).map());
             }
         }
-        sendData(response, MapUtil.builder().put("flag", b).put("data",baseinfos).put("msg", msg).map());
+        sendData(response, MapUtil.builder().put("flag", b).put("data", baseinfos).put("msg", msg).map());
 
     }
 
@@ -293,14 +290,11 @@ public class ImportTaskBussinessController extends BaseAction {
         if (TmpTaskUtil.ISINFLOW) {
 
             i1 = workFlowService.updateWorkFlowTaskUnitComplete(info.getFlowbussinessid(), info.getSoleorderid(), "0002");
-            LOG.debug(i1+"===="+msg);
+            LOG.debug(i1 + "====" + msg);
         }
         sendData(response, MapUtil.builder().put("flag", true).put("msg", msg).map());
     }
 
-    @Autowired
-    TmpWorkFlowService tmpWorkFlowService;
-
     @RequestMapping("startWorkFlow")
     public void startWorkFlow(@RequestBody ImportTaskBussinessInfo info, HttpServletRequest request,
                               HttpServletResponse response) {
@@ -339,7 +333,7 @@ public class ImportTaskBussinessController extends BaseAction {
             WorkFlowPublicPropertyModel publicModel = workFlowService.queryWorkFlowProcessAndTaskInstanceModel(data.getBussinessid());
             List<WorkFlowTaskModel> models = publicModel.getTaskList();
             for (WorkFlowTaskModel workFlowTaskModel : models) {
-                if (StringUtils.isEmpty(workFlowTaskModel.getTaskEndTime())) {
+                if (StrUtil.isEmpty(workFlowTaskModel.getTaskEndTime())) {
                     so = workFlowTaskModel.getSoleorderid();
                 }
             }
@@ -389,4 +383,40 @@ public class ImportTaskBussinessController extends BaseAction {
         }
         FileUtil.getContent(fileDir.listFiles()[0].getName(), response, Files.newInputStream(fileDir.listFiles()[0].toPath()));
     }
+
+    @RequestMapping("getExcelHtml")
+    public void getExcelHtml(@RequestBody ShowExcelData excelData, HttpServletRequest request, HttpServletResponse response) throws IOException {
+        String fileDirPath = TmpTaskUtil.getoneDirString(excelData.getTaskbussinessid(), excelData.getTmpCode());
+        File fileDir = new File(fileDirPath);
+        Map<String, Object> rsp = new HashMap<>();
+        if (!fileDir.exists() || fileDir.list() == null || Objects.requireNonNull(fileDir.list()).length == 0) {
+            rsp.put("flag", false);
+            HtmlUtil.writeJson(response, rsp);
+            LOG.error("文件不存在");
+            return;
+
+        }
+
+        try {
+            if (fileDir.listFiles() == null || fileDir.listFiles().length == 0) {
+                rsp.put("flag", false);
+                HtmlUtil.writeJson(response, rsp);
+                return;
+            }
+            File report = fileDir.listFiles()[0];
+            if (!report.exists()) {
+                rsp.put("flag", false);
+                HtmlUtil.writeJson(response, rsp);
+            }
+            StringWriter writer = new StringWriter();
+            ToHtml toHtml = ToHtml.create(Files.newInputStream(report.toPath()), writer);
+            toHtml.setCompleteHTML(false);
+            toHtml.printPage();
+            rsp.put("flag", true);
+            rsp.put("htmlString", writer.toString());
+            sendData(response, rsp);
+        } catch (IOException e) {
+            LOG.error(e.getMessage(), e);
+        }
+    }
 }

+ 14 - 14
Procedure/backend/project/src/main/java/com/sundata/product/tempFile/task/flow/WorkFlow0001Service.java

@@ -224,12 +224,12 @@ public class WorkFlow0001Service extends AWorkFlowService {
         service.deleteFlowAllInfo(businessinsid);
         DBExecutor.doModify("delete from sys_input_suptaskrun_taskallstatus where term = '" + term + "' and taskCode = '" + taskCode + "'");
 
-        String counts = DBExecutor.doQuery("select count(1) from sys_input_suptaskrun_taskallstatus where term = '" + term + "' and isover = '0'");
-        if ("0".equals(counts)) {
-            Map<String, Object> paramMap = new HashMap<>();
-            paramMap.put("termDT", TmpTaskUtil.getThisMonthDateByTerm(term));
-            executeServer.execute(true, "INPUT", paramMap);
-        }
+//        String counts = DBExecutor.doQuery("select count(1) from sys_input_suptaskrun_taskallstatus where term = '" + term + "' and isover = '0'");
+//        if ("0".equals(counts)) {
+//            Map<String, Object> paramMap = new HashMap<>();
+//            paramMap.put("termDT", TmpTaskUtil.getThisMonthDateByTerm(term));
+//            executeServer.execute(true, "INPUT", paramMap);
+//        }
     }
 
     @Override
@@ -304,17 +304,17 @@ public class WorkFlow0001Service extends AWorkFlowService {
 //      update sys_input_suptaskrun_taskallstatus set isover = '1' where term = '' and taskCode = ''
         DBExecutor.doModify("update sys_input_suptaskrun_taskallstatus set isover = '1' where term = '" + businfo.getTerm() + "' and taskCode = '" + businfo.getTaskCode() + "'");
         LOG.debug("流程:{},终审完成", businessinsid);
-        String counts = DBExecutor.doQuery("select count(1) from sys_input_suptaskrun_taskallstatus where term = '" + businfo.getTerm() + "' and isover = '0'");
-        if ("0".equals(counts)) {
-            Map<String, Object> paramMap = new HashMap<>();
-            paramMap.put("termDT", TmpTaskUtil.getThisMonthDateByTerm(businfo.getTerm()));
-            executeServer.execute(true, "INPUT", paramMap);
-        }
+//        String counts = DBExecutor.doQuery("select count(1) from sys_input_suptaskrun_taskallstatus where term = '" + businfo.getTerm() + "' and isover = '0'");
+//        if ("0".equals(counts)) {
+//            Map<String, Object> paramMap = new HashMap<>();
+//            paramMap.put("termDT", TmpTaskUtil.getThisMonthDateByTerm(businfo.getTerm()));
+//            executeServer.execute(true, "INPUT", paramMap);
+//        }
 
 //      select count(1) from sys_input_suptaskrun_taskallstatus where term = '' and isover = '0'
     }
 
-    @Autowired
-    TaskAllExecuteServer executeServer;
+//    @Autowired
+//    TaskAllExecuteServer executeServer;
 
 }

+ 183 - 133
Procedure/frontend/projectb/src/pages/com/sundata/product/temp/ShowExcel.tsx

@@ -1,133 +1,183 @@
-import { exportExcelFile, getExcelCols, getExcelDatas } from "@/services/com/sundata/product/tmp/ImportTaskBussinessInfo";
-import { ProColumns } from "@ant-design/pro-table";
-import { SDForm, SDFormText, SDPage, SDSubmitButton, SDTable } from "@sundata/ui-frame";
-import { FormInstance } from "antd";
-import { useEffect, useRef, useState } from "react";
-
-/** TODO 待处理Excel的数据文件 */
-export type excelData = {
-    // ①固定变量:
-    /** 业务流程实例号 */
-    taskbussinessid: string,
-    /** 数据期次 */
-    term?: string,
-    /** 补录任务编号 */
-    taskCode?: string,
-    taskCodeName?: string,
-    /** 补录人 */
-    taskFirstPerson?: string,
-    taskFirstPersonName?: string,
-    /** 补录机构 */
-    taskOrgcode?: string,
-    taskOrgcodeName?: string,
-    /** 补录模板编号 */
-    tmpCode: string,
-    /** 补录模板名称 */
-    tmpCodeName?: string,
-    // 是否展示详细信息的属性,默认为是
-    isShowDetail ?: boolean;
-    isShowButtons ?: boolean;
-    // 刷新用属性
-    status ?: any;
-}
-
-
-const excelModel: React.FC<excelData> = (supTaskParam) => {
-
-    const formRef = useRef<FormInstance<any>>();
-    
-    const [cols,setCols] = useState<any[]>([]);
-    const [formData,setFormData] = useState<any>([]);
-    const [buttons,setButtons] = useState<any[]>([]);
-
-    function getCols() {
-        const taskbussinessid = supTaskParam.taskbussinessid;
-        const tmpCdoe = supTaskParam.tmpCode;
-        return getExcelCols({taskbussinessid:taskbussinessid,tmpCode:tmpCdoe});
-
-        // const btnColumns: ProColumns<any>[] = [
-        //     // {
-        //     //     title: '任务实例编号',
-        //     //     dataIndex: 'taskbussinessid',
-        //     //     hideInTable: false,
-        //     //     search : false,
-        //     // }
-        // ];
-        // return btnColumns;
-
-    }
-    function getDatas(){
-        const taskbussinessid = supTaskParam.taskbussinessid;
-        const tmpCdoe = supTaskParam.tmpCode;
-        return getExcelDatas({taskbussinessid:taskbussinessid,tmpCode:tmpCdoe});
-    }
-
-    // 通过页面渲染后加载
-    useEffect(()=>{
-        formRef.current?.setFieldValue("term",supTaskParam.term);
-        formRef.current?.setFieldValue("taskFirstPersonName",supTaskParam.taskFirstPersonName);
-        formRef.current?.setFieldValue("taskOrgcodeName",supTaskParam.taskOrgcodeName);
-        formRef.current?.setFieldValue("taskCodeName",supTaskParam.taskCodeName);
-        formRef.current?.setFieldValue("tmpCodeName",supTaskParam.tmpCodeName);
-
-        getCols().then((data)=>{
-            const btnColumns: ProColumns<any>[] = [
-                // {
-                //     title: '任务实例编号',
-                //     dataIndex: 'taskbussinessid',
-                //     hideInTable: false,
-                //     search : false,
-                // }
-            ];
-            data.forEach((col : any)=>{
-                btnColumns.push({title:col.colIndexName, dataIndex:col.colIndexCode , hideInTable:false,search:false});
-            })
-            setCols(btnColumns)
-            if(supTaskParam.isShowButtons){
-                setButtons([<SDSubmitButton successMessage='' editType='create' formRef={formRef} doSubmit={exportExcel} >导出Excel</SDSubmitButton>]);
-            }
-        })
-    },[])
-    // const indexColumns: ProColumns<TmpTaskBussinessBaseinfo>[] = [
-    //     {
-    //         title: '任务实例编号',
-    //         dataIndex: 'taskbussinessid',
-    //         hideInTable: true,
-    //     },]
-
-    // const getCols = async() :  =>{
-        
-    // }
-
-    const exportExcel = async () => {
-        
-        const taskbussinessid = supTaskParam.taskbussinessid;
-        const tmpCdoe = supTaskParam.tmpCode;
-        exportExcelFile({taskbussinessid:taskbussinessid,tmpCode:tmpCdoe});
-    }
-
-    
-
-    return (
-        <SDPage footer={buttons}>
-            {supTaskParam.isShowDetail&&<SDForm editType={"display"} formRef={formRef}>
-                <SDFormText label="数据期次"  name="term" />
-                <SDFormText label="补录人" name="taskFirstPersonName"  />
-                <SDFormText label="责任机构" name="taskOrgcodeName"  />
-                {/* <SDFormText label="数据补录任务" name="taskCodeName"  /> */}
-                <SDFormText name="taskCodeName" label="数据补录任务" type='textarea' readonlyCond="both" width='xl' />
-                <SDFormText label="数据补录模板" name="tmpCodeName" type='textarea' readonlyCond="both" width='xl' />
-            </SDForm>}
-            <SDTable 
-                rowKey={""} 
-                request={ getDatas } 
-                columns={ cols }  
-                search={false}   
-                pagination={false}       
-            />
-
-        </SDPage>
-    );
-};
-
-export default excelModel;
+import {
+  exportExcelFile,
+  getExcelCols,
+  getExcelDatas,
+  getExcelHtmls,
+} from '@/services/com/sundata/product/tmp/ImportTaskBussinessInfo';
+import { ProColumns } from '@ant-design/pro-table';
+import { SDForm, SDFormText, SDPage, SDSubmitButton } from '@sundata/ui-frame';
+import { FormInstance, Layout } from 'antd';
+import { Content } from 'antd/lib/layout/layout';
+import { useEffect, useRef, useState } from 'react';
+
+/** TODO 待处理Excel的数据文件 */
+export type excelData = {
+  // ①固定变量:
+  /** 业务流程实例号 */
+  taskbussinessid: string;
+  /** 数据期次 */
+  term?: string;
+  /** 补录任务编号 */
+  taskCode?: string;
+  taskCodeName?: string;
+  /** 补录人 */
+  taskFirstPerson?: string;
+  taskFirstPersonName?: string;
+  /** 补录机构 */
+  taskOrgcode?: string;
+  taskOrgcodeName?: string;
+  /** 补录模板编号 */
+  tmpCode: string;
+  /** 补录模板名称 */
+  tmpCodeName?: string;
+  // 是否展示详细信息的属性,默认为是
+  isShowDetail?: boolean;
+  isShowButtons?: boolean;
+  // 刷新用属性
+  status?: any;
+};
+
+const excelModel: React.FC<excelData> = (supTaskParam) => {
+  const formRef = useRef<FormInstance<any>>();
+
+  const [cols, setCols] = useState<any[]>([]);
+  const [formData, setFormData] = useState<any>([]);
+  const [buttons, setButtons] = useState<any[]>([]);
+
+  const [htmlStr, setHtmlStr] = useState();
+
+  function getExcelHtml() {
+    const taskbussinessid = supTaskParam.taskbussinessid;
+    const tmpCdoe = supTaskParam.tmpCode;
+    return getExcelHtmls({ taskbussinessid: taskbussinessid, tmpCode: tmpCdoe });
+  }
+
+  function getCols() {
+    const taskbussinessid = supTaskParam.taskbussinessid;
+    const tmpCdoe = supTaskParam.tmpCode;
+    return getExcelCols({ taskbussinessid: taskbussinessid, tmpCode: tmpCdoe });
+
+    // const btnColumns: ProColumns<any>[] = [
+    //     // {
+    //     //     title: '任务实例编号',
+    //     //     dataIndex: 'taskbussinessid',
+    //     //     hideInTable: false,
+    //     //     search : false,
+    //     // }
+    // ];
+    // return btnColumns;
+  }
+
+  function getDatas() {
+    const taskbussinessid = supTaskParam.taskbussinessid;
+    const tmpCdoe = supTaskParam.tmpCode;
+    return getExcelDatas({ taskbussinessid: taskbussinessid, tmpCode: tmpCdoe });
+  }
+
+  // 通过页面渲染后加载
+  useEffect(() => {
+    formRef.current?.setFieldValue('term', supTaskParam.term);
+    formRef.current?.setFieldValue('taskFirstPersonName', supTaskParam.taskFirstPersonName);
+    formRef.current?.setFieldValue('taskOrgcodeName', supTaskParam.taskOrgcodeName);
+    formRef.current?.setFieldValue('taskCodeName', supTaskParam.taskCodeName);
+    formRef.current?.setFieldValue('tmpCodeName', supTaskParam.tmpCodeName);
+
+    getCols().then((data) => {
+      const btnColumns: ProColumns<any>[] = [
+        // {
+        //     title: '任务实例编号',
+        //     dataIndex: 'taskbussinessid',
+        //     hideInTable: false,
+        //     search : false,
+        // }
+      ];
+      data.forEach((col: any) => {
+        btnColumns.push({
+          title: col.colIndexName,
+          dataIndex: col.colIndexCode,
+          hideInTable: false,
+          search: false,
+        });
+      });
+      setCols(btnColumns);
+      if (supTaskParam.isShowButtons) {
+        setButtons([
+          <SDSubmitButton
+            successMessage=""
+            editType="create"
+            formRef={formRef}
+            doSubmit={exportExcel}
+          >
+            导出Excel
+          </SDSubmitButton>,
+        ]);
+      }
+    });
+    getExcelHtml().then((body) => {
+      if (body?.flag == 'false') {
+        return;
+      }
+      setHtmlStr(body.htmlString);
+    });
+  }, []);
+  // const indexColumns: ProColumns<TmpTaskBussinessBaseinfo>[] = [
+  //     {
+  //         title: '任务实例编号',
+  //         dataIndex: 'taskbussinessid',
+  //         hideInTable: true,
+  //     },]
+
+  // const getCols = async() :  =>{
+
+  // }
+
+  const exportExcel = async () => {
+    const taskbussinessid = supTaskParam.taskbussinessid;
+    const tmpCdoe = supTaskParam.tmpCode;
+    exportExcelFile({ taskbussinessid: taskbussinessid, tmpCode: tmpCdoe });
+  };
+
+  return (
+    <SDPage footer={buttons}>
+      <Layout>
+        {supTaskParam.isShowDetail && (
+          <SDForm editType={'display'} formRef={formRef}>
+            <SDFormText label="数据期次" name="term" />
+            <SDFormText label="补录人" name="taskFirstPersonName" />
+            <SDFormText label="责任机构" name="taskOrgcodeName" />
+            {/* <SDFormText label="数据补录任务" name="taskCodeName"  /> */}
+            <SDFormText
+              name="taskCodeName"
+              label="数据补录任务"
+              type="textarea"
+              readonlyCond="both"
+              width="xl"
+            />
+            <SDFormText
+              label="数据补录模板"
+              name="tmpCodeName"
+              type="textarea"
+              readonlyCond="both"
+              width="xl"
+            />
+          </SDForm>
+        )}
+      </Layout>
+      <Layout>
+        <Content>
+          <div
+            style={{
+              width: '100%',
+              overflowX: 'auto', // 横向滚动
+              minHeight: '200px', // 保证纵向有固定高度
+              overflowY: 'auto',
+            }}
+            dangerouslySetInnerHTML={{ __html: htmlStr }}
+          />
+        </Content>
+      </Layout>
+    </SDPage>
+  );
+};
+
+export default excelModel;

+ 6 - 6
Procedure/frontend/projectb/src/pages/com/sundata/product/temp/TaskInfo.tsx

@@ -22,8 +22,8 @@ function generateRandomString(length: Number) {
     return result;
 }
 
-// 使用示例  
-const randomString = generateRandomString(10); // 生成一个长度为10的随机字符串  
+// 使用示例
+const randomString = generateRandomString(10); // 生成一个长度为10的随机字符串
 
 const TaskInfo: React.FC<ImportTaskBussinessInfo> = (bussinessInfo) => {
 
@@ -50,7 +50,7 @@ const TaskInfo: React.FC<ImportTaskBussinessInfo> = (bussinessInfo) => {
 
     const formRef = useRef<FormInstance<any>>();
 
-    // const anamodeStr : String = bussinessInfo.anamode;    
+    // const anamodeStr : String = bussinessInfo.anamode;
 
 
 
@@ -96,13 +96,13 @@ const TaskInfo: React.FC<ImportTaskBussinessInfo> = (bussinessInfo) => {
 
 
         // if(!data) setEditType('update');
-        // 
+        //
         // 处理只读选项,若流程中,则 remark 不可编辑,若补录中则认为可编辑
         // if (!bussinessInfo.anamode || data.bussinessinfo?.taskStatus == '02' || data.bussinessinfo?.taskStatus == '01') {
         //     setEditType('create');
         // } else {
         //     setEditType('display');
-        // }        
+        // }
         // 只读设置结束
         //** 检索数据范围,确认展示多少内容 */
 
@@ -155,7 +155,7 @@ const TaskInfo: React.FC<ImportTaskBussinessInfo> = (bussinessInfo) => {
         // });
 
         setDataSource(data.bussinessdetails);
-        // formRef.current?.setFieldValue("formdata",{...data.bussinessinfo}) 
+        // formRef.current?.setFieldValue("formdata",{...data.bussinessinfo})
         if (data.bussinessinfo) {
             return data.bussinessinfo;
         }

+ 10 - 2
Procedure/frontend/projectb/src/services/com/sundata/product/tmp/ImportTaskBussinessInfo.ts

@@ -17,8 +17,16 @@ export type ShowExcelData = {
 }
 
 
+/** 获取Excel对应的html  */
+export async function getExcelHtmls(body: ShowExcelData) {
 
-/** 获取流程详细信息  */
+  return baseFun.request<any>('/api/tempfile/task/getExcelHtml.do', {
+    data: body,
+  });
+}
+
+
+/** 获取字段详细信息  */
 export function getExcelCols(body: ShowExcelData) {
 
 	return  baseFun.request<ProColumns<any>[]>('/api/tempfile/task/getExcelCols.do', {
@@ -454,4 +462,4 @@ export async function isHaveLoseDetailDataService(body: ImportTaskBussinessInfo)
 	return baseFun.request('/api/tempfile/task/isHaveLoseDetailData.do', {
 		data: body,
 	});
-}
+}

+ 0 - 1
Procedure/frontend/projectb/src/services/rwa/product/report_form_config_reportcreater/reportFile.ts

@@ -1,4 +1,3 @@
-import type { BasePageModel, TableData } from '@sundata/ui-frame';
 import { baseFun } from '@sundata/ui-frame';
 
 // 报表定义基本信息表

ファイルの差分が大きいため隠しています
+ 14 - 0
ShortCode/001-初始化/李庚谱/补录功能/ExcelTmpQueryList.cfg


ファイルの差分が大きいため隠しています
+ 42 - 0
ShortCode/001-初始化/李庚谱/补录功能/SupplementPlanQuery.cfg


ファイルの差分が大きいため隠しています
+ 45 - 0
ShortCode/001-初始化/李庚谱/补录功能/SupplementResultQuery.cfg


ファイルの差分が大きいため隠しています
+ 53 - 0
ShortCode/001-初始化/李庚谱/补录功能/SupplementTaskQueryList.cfg


ファイルの差分が大きいため隠しています
+ 55 - 0
ShortCode/001-初始化/李庚谱/补录功能/SupplementTaskReviewList.cfg


この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません