jbase代码生成器(成型篇)

news2024/9/19 11:40:47

上一篇说到通用码表可以解决百分之八十的基础维护功能,剩下的百分二十的需要级联维护的界面可以用代码生成器生成代码,基于生成的代码拷贝再组装界面,来解决这百分之二十的工作量里的百分之八十工作量。

首先实现代码生成器

Class Jbase.MakeWebCode Extends %RegisteredObject
{

/// 编码格式改WriteLineWithCode
/// 生成所有表实体代码
/// w ##class(Jbase.MakeWebCode).MakeAllJavaModelCode()
ClassMethod MakeAllJavaModelCode()
{
	s rset1 = ##class(%ResultSet).%New()
	d rset1.Prepare("select TABLE_NAME FROM information_schema.Tables where TABLE_SCHEMA='dbo'")
	s exeret1=rset1.Execute()
	s colCount1=rset1.GetColumnCount()
	s dealNum1=0
    While(rset1.Next())
    {
        s colField=rset1.GetColumnName(1)
        s ColValue=rset1.GetDataByName(colField)
        i $e(ColValue,1,2)="V_" continue
        s makeRet= ..MakeModelCodeJava(ColValue,"LIS.ModelJava\")
        zw ColValue
        zw makeRet
    }
    q "完成"
}

/// 生成操作表相关的代码,包括java代码、界面增删改查代码、实体代码
/// 编码格式改WriteLineWithCode
/// TableName:表名
/// PathAdd:生成路径,默认D
/// AshxDir:ashx文件要放的路径,默认lis
/// w ##class(Jbase.MakeWebCode).MakeOneTableCode("SYS_Form")
/// w ##class(Jbase.MakeWebCode).MakeOneTableCode("BT_Bed")
/// w ##class(Jbase.MakeWebCode).MakeOneTableCode("BT_TestCode")
/// w ##class(Jbase.MakeWebCode).MakeOneTableCode("BT_Bottle")
/// w ##class(Jbase.MakeWebCode).MakeOneTableCode("BT_Ward")
ClassMethod MakeOneTableCode(TableName, PathAdd, AshxDir)
{
	s TableName=$g(TableName)
	s PathAdd=$g(PathAdd)
	s MPath=$g(MPath)
	s AshxDir=$g(AshxDir)
	//构造java业务代码
	w ..MakeJavaBllCode(TableName, PathAdd, AshxDir),!
	//构造aspx页面代码
	w ..MakeAspxCode(TableName, PathAdd, AshxDir),!
	//构造实体代码
	w ..MakeModelCodeJava(TableName, PathAdd),!
	q "完成"
}

/// 构造表的增删改查的界面代码,以简化常规表界面代码工作量
/// 编码格式改WriteLineWithCode
/// w ##class(Jbase.MakeWebCode).MakeAspxCode("BT_Container")
ClassMethod MakeJavaBllCode(TableName, PathAdd, AshxDir)
{
	s TableName=$g(TableName)
	s PathAdd=$g(PathAdd)
	s AshxDir=$g(AshxDir)
	i '$l(AshxDir) s AshxDir="lis"
	s rset = ##class(%ResultSet).%New()
	d rset.Prepare("select COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,DESCRIPTION,IS_NULLABLE FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='dbo'  and TABLE_NAME='"_TableName_"'")
	s exeret=rset.Execute()
	s colCount=rset.GetColumnCount()
	Set repid=$I(^CacheTemp)
	k ^TMP($zn,repid,$j)
	s IsLinux=1
	s logpath=""
	i ##class(%SYSTEM.Version).GetOS()="Windows" s IsLinux=0
	//默认路径
	i '$l(logpath) d
	.i IsLinux=0 d
	..s logpath="D:\"
	.e  d
	..s logpath="/"
	
	s logName=logpath_PathAdd_"ash"_$tr(TableName,"_")_".java"
	//方法名,查询名
	s TableInnerName=$tr(TableName,"_")
	//不存在目录就创建
	i '##class(%File).DirectoryExists(logpath_PathAdd) d
	.d ##class(%File).CreateNewDir(logpath_PathAdd,"")
	
	s file=##class(%File).%New(logName)
	//存在就追加
	i ##class(%File).Exists(logName) d
	.d ##class(%File).Delete(logName)
	.d file.Open("WSN:/SHARED:/IOTABLE=""UTF8""")
	//不存在就新建
	e  d
	.d file.Open("WSN:/SHARED:/IOTABLE=""UTF8""")
	
	//写类头部
	d ..WriteLineWithCode(file,"import appcode.BaseHttpHandlerNoSession;")
	d ..WriteLineWithCode(file,"import appcode.Helper;")
	d ..WriteLineWithCode(file,"import LIS.Core.Dto.HashParam;")
    d ..WriteLineWithCode(file,"import LIS.Core.Dto.ParamDto;")
    d ..WriteLineWithCode(file,"import LIS.Core.Dto.OutParam;")
    d ..WriteLineWithCode(file,"import LIS.Model.Entity.*;")
    d ..WriteLineWithCode(file,"import LIS.Core.Util.Convert;")
    d ..WriteLineWithCode(file,"")
    
    d ..WriteLineWithCode(file,"import java.util.ArrayList;")
    d ..WriteLineWithCode(file,"import java.util.List;")
    d ..WriteLineWithCode(file,"")
    
    d ..WriteLineWithCode(file,"/**")
    d ..WriteLineWithCode(file,"*由代码生成器生成的后台代码")
    d ..WriteLineWithCode(file,"*/")
    d ..WriteLineWithCode(file,"public class ash"_TableInnerName_" extends BaseHttpHandlerNoSession {")
 
    //构造增加方法的代码
    d ..WriteLineWithCode(file,"")
    d ..WriteLineWithCode(file,"	/**")
    d ..WriteLineWithCode(file,"	 * 保存数据,前台按表的属性名提交")
    d ..WriteLineWithCode(file,"	 * @return 字符串")
    d ..WriteLineWithCode(file,"	 */")
    d ..WriteLineWithCode(file,"	public String Save"_TableInnerName_"()")
    d ..WriteLineWithCode(file,"    {")
    d ..WriteLineWithCode(file,"		"_TableInnerName_" dto=new "_TableInnerName_"();")
    
    While(rset.Next())
    {
	    s outStr=""
        s colField=rset.GetColumnName(1)
        s colName=rset.GetDataByName(colField)
        s colField1=rset.GetColumnName(2)
        s colType=rset.GetDataByName(colField1)
        s colField2=rset.GetColumnName(3)
        s colLen=rset.GetDataByName(colField2)
        s colField3=rset.GetColumnName(4)
        s colDesc=rset.GetDataByName(colField3)
  		d ..WriteLineWithCode(file,"		//"_colDesc)
        d ..WriteLineWithCode(file,"		dto."_colName_"=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, """_colName_"""), dto."_colName_");")
    }
    
    d ..WriteLineWithCode(file,"		OutParam out=new OutParam();")
    d ..WriteLineWithCode(file,"		int ret=0;")
    d ..WriteLineWithCode(file,"		//更新")
    d ..WriteLineWithCode(file,"		if(dto.RowID>0)")
    d ..WriteLineWithCode(file,"		{")
    d ..WriteLineWithCode(file,"			ret=EntityManager().Update(dto,null, out, null, null, null);")
    d ..WriteLineWithCode(file,"		}")
    d ..WriteLineWithCode(file,"		//插入数据")
    d ..WriteLineWithCode(file,"		else")
    d ..WriteLineWithCode(file,"		{")
    d ..WriteLineWithCode(file,"			ret=EntityManager().Save(dto,out);")
    d ..WriteLineWithCode(file,"		}")
	d ..WriteLineWithCode(file,"		if(ret==1)")
	d ..WriteLineWithCode(file,"		{")
	d ..WriteLineWithCode(file,"			return Helper.Success();")
	d ..WriteLineWithCode(file,"		}")
	d ..WriteLineWithCode(file,"		else")
    d ..WriteLineWithCode(file,"		{")
    d ..WriteLineWithCode(file,"			return Helper.Error(out);")
    d ..WriteLineWithCode(file,"		}")
    d ..WriteLineWithCode(file,"    }")
    d ..WriteLineWithCode(file,"")
    d ..WriteLineWithCode(file,"")
    d ..WriteLineWithCode(file,"")    
	
	
	//构造删除方法
	d ..WriteLineWithCode(file,"	/**")
    d ..WriteLineWithCode(file,"	 * 删除数据,多个RowID以上尖号分割")
    d ..WriteLineWithCode(file,"	 * @return 字符串")
    d ..WriteLineWithCode(file,"	 */")
    d ..WriteLineWithCode(file,"	public String Delete"_TableInnerName_"()")
    d ..WriteLineWithCode(file,"    {")
    d ..WriteLineWithCode(file,"		String RowIDS=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, ""RowIDS""), """");")
    
    d ..WriteLineWithCode(file,"		if(RowIDS.isEmpty())")
    d ..WriteLineWithCode(file,"		{")
    d ..WriteLineWithCode(file,"			return Helper.Error(""请传入要删除数据的RowID,多个以^分割!"");")
    d ..WriteLineWithCode(file,"		}")
    d ..WriteLineWithCode(file,"		//分割主键")
    d ..WriteLineWithCode(file,"		String [] arr=RowIDS.split(""^"");")
    d ..WriteLineWithCode(file,"		//创建一个空对象")
    d ..WriteLineWithCode(file,"		"_TableInnerName_" dto=new "_TableInnerName_"();")
    d ..WriteLineWithCode(file,"		//out参数")
    d ..WriteLineWithCode(file,"		OutParam out=new OutParam();")
    d ..WriteLineWithCode(file,"		//循环删除数据")
    d ..WriteLineWithCode(file,"		for(int i=0;i<arr.length;i++)")
	d ..WriteLineWithCode(file,"		{")
	d ..WriteLineWithCode(file,"			HashParam hs=new HashParam();")
	d ..WriteLineWithCode(file,"			hs.Add(""RowID"",Convert.ToInt32(arr[i]));")
	d ..WriteLineWithCode(file,"			int ret=EntityManager().Remove(dto,hs,out,null,null);")
	d ..WriteLineWithCode(file,"			if(ret!=1)")
	d ..WriteLineWithCode(file,"			{")
	d ..WriteLineWithCode(file,"				return Helper.Error(out);")
    d ..WriteLineWithCode(file,"			}")
    d ..WriteLineWithCode(file,"		}")
    d ..WriteLineWithCode(file,"		return Helper.Success();")
    d ..WriteLineWithCode(file,"	}")
    d ..WriteLineWithCode(file,"")
    d ..WriteLineWithCode(file,"")
    
    //构造查询方法的代码
    d ..WriteLineWithCode(file,"")
    d ..WriteLineWithCode(file,"	/**")
    d ..WriteLineWithCode(file,"	 * 查询数据,前台按表的属性名提交")
    d ..WriteLineWithCode(file,"	 * @return 字符串")
    d ..WriteLineWithCode(file,"	 */")
    d ..WriteLineWithCode(file,"	public String Qry"_TableInnerName_"()")
    d ..WriteLineWithCode(file,"    {")
    d ..WriteLineWithCode(file,"		//预留的取前台参数代码")
    
    d ..WriteLineWithCode(file,"		//创建一个空对象")
    d ..WriteLineWithCode(file,"		"_TableInnerName_" dto=new "_TableInnerName_"();")
    d ..WriteLineWithCode(file,"		//参数")
    d ..WriteLineWithCode(file,"		List<ParamDto> para=new ArrayList<>();")
    d ..WriteLineWithCode(file,"		//sql连接符号")
    d ..WriteLineWithCode(file,"		List<String> joiner=new ArrayList<>();")
    d ..WriteLineWithCode(file,"		//sql比较符号")
    d ..WriteLineWithCode(file,"		List<String> operators=new ArrayList<>();")
    d ..WriteLineWithCode(file,"		//模糊查询")
    d ..WriteLineWithCode(file,"		String Filter=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, ""Filter""), """");")
    s exeret=rset.Execute()
    d ..WriteLineWithCode(file,"		//预留参数")
    While(rset.Next())
    {
	    s outStr=""
        s colField=rset.GetColumnName(1)
        s colName=rset.GetDataByName(colField)
        s colField1=rset.GetColumnName(2)
        s colType=rset.GetDataByName(colField1)
        s colField2=rset.GetColumnName(3)
        s colLen=rset.GetDataByName(colField2)
        s colField3=rset.GetColumnName(4)
        s colDesc=rset.GetDataByName(colField3)
        d ..WriteLineWithCode(file,"		//"_colDesc)
        d ..WriteLineWithCode(file,"		String "_colName_"=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, """_colName_"""), """");")

    }
    s exeret=rset.Execute()
    d ..WriteLineWithCode(file,"		//模糊查询")
    d ..WriteLineWithCode(file,"		if(!Filter.isEmpty())")
    d ..WriteLineWithCode(file,"		{")
    d ..WriteLineWithCode(file,"			ParamDto p=null;")
    While(rset.Next())
    {
	    s outStr=""
        s colField=rset.GetColumnName(1)
        s colName=rset.GetDataByName(colField)
        s colField1=rset.GetColumnName(2)
        s colType=rset.GetDataByName(colField1)
        s colField2=rset.GetColumnName(3)
        s colLen=rset.GetDataByName(colField2)
        s colField3=rset.GetColumnName(4)
        s colDesc=rset.GetDataByName(colField3)
        i colType'="varchar" continue
		d ..WriteLineWithCode(file,"			//"_colDesc)
        d ..WriteLineWithCode(file,"			p=new ParamDto();")
        d ..WriteLineWithCode(file,"			p.Key="""_colName_""";")
        d ..WriteLineWithCode(file,"			p.Value=""%""+Filter+""%"";")
        d ..WriteLineWithCode(file,"			para.add(p);")
        d ..WriteLineWithCode(file,"			joiner.add(""or"");")
        d ..WriteLineWithCode(file,"			operators.add(""like"");")
    }
    d ..WriteLineWithCode(file,"		}")
    
    d ..WriteLineWithCode(file,"		//调用查询")
    d ..WriteLineWithCode(file,"		String json=EntityManager().QueryAllWithFK(dto,para,"""",true,-1,-1,"""",joiner,operators);")
    d ..WriteLineWithCode(file,"		return json;")
    d ..WriteLineWithCode(file,"	}")
    d ..WriteLineWithCode(file,"")
    d ..WriteLineWithCode(file,"")
    
    
    
    //收尾
    d ..WriteLineWithCode(file,"}")
    d file.Close()
    q "代码生成在:"_logName
	q "完成"
}

/// 构造表的增删改查的界面代码,以简化常规表界面代码工作量
/// 编码格式改WriteLineWithCode
/// w ##class(Jbase.MakeWebCode).MakeAspxCode("SYS_TableEnum")
/// w ##class(Jbase.MakeWebCode).MakeAspxCode("RP_VisitNumber")
ClassMethod MakeAspxCode(TableName, PathAdd, AshxDir)
{
	s TableName=$g(TableName)
	s PathAdd=$g(PathAdd)
	s AshxDir=$g(AshxDir)
	i '$l(AshxDir) s AshxDir="lis"
	s ClassName=$tr(TableName,"_")
	s ClassName=$tr(TableName,"_")
	s rset = ##class(%ResultSet).%New()
	d rset.Prepare("select COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,DESCRIPTION,IS_NULLABLE FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='dbo'  and TABLE_NAME='"_TableName_"'")
	s exeret=rset.Execute()
	s colCount=rset.GetColumnCount()
	Set repid=$I(^CacheTemp)
	k ^TMP($zn,repid,$j)
	s IsLinux=1
	s logpath=""
	i ##class(%SYSTEM.Version).GetOS()="Windows" s IsLinux=0
	//默认路径
	i '$l(logpath) d
	.i IsLinux=0 d
	..s logpath="D:\"
	.e  d
	..s logpath="/"
	
	s logName=logpath_PathAdd_"frm"_$tr(TableName,"_")_".aspx"
	//方法名,查询名
	s TableInnerName=$tr(TableName,"_")
	//不存在目录就创建
	i '##class(%File).DirectoryExists(logpath_PathAdd) d
	.d ##class(%File).CreateNewDir(logpath_PathAdd,"")
	
	s file=##class(%File).%New(logName)
	//存在就追加
	i ##class(%File).Exists(logName) d
	.d ##class(%File).Delete(logName)
	.d file.Open("WSN:/SHARED:/IOTABLE=""UTF8""")
	//不存在就新建
	e  d
	.d file.Open("WSN:/SHARED:/IOTABLE=""UTF8""")
	
	
	s RowSpec="RowID"
	s RowLen="10"
	s RowRemark="主键"
	s types="int"
    While(rset.Next())
    {
	    s outStr=""
        s colField=rset.GetColumnName(1)
        s colName=rset.GetDataByName(colField)
        s colField1=rset.GetColumnName(2)
        s colType=rset.GetDataByName(colField1)
        s colField2=rset.GetColumnName(3)
        s colLen=rset.GetDataByName(colField2)
        s colField3=rset.GetColumnName(4)
        s colDesc=rset.GetDataByName(colField3)
        s colField4=rset.GetColumnName(5)
        s NULLABLE=rset.GetDataByName(colField4)
        i colName="RowID" continue
        s RowSpec=RowSpec_","_colName
        s type=colType
        i colType="integer" d
        .s type="int"
        .s colLen=10
        .i NULLABLE="YES" d
        ..s type=type_"?"
        i colType="bigint" d
        .s type="int"
        .s colLen=10
        .i NULLABLE="YES" d
        ..s type=type_"?"
        i colType="smallint" d
        .s type="int"
        .s colLen=10
        .i NULLABLE="YES" d
        ..s type=type_"?"
        i colType="tinyint" d
        .s type="int"
        .s colLen=10
        .i NULLABLE="YES" d
        ..s type=type_"?"
        e  i colType="varchar" d
        .s type="string"
        e  i colType="bit" d
        .s type="bool"
        .s colLen=1
        .i NULLABLE="YES" d
        ..s type=type_"?"
        e  i colType="double" d
        .s type="double"
        .s colLen=10
        .i NULLABLE="YES" d
        ..s type=type_"?"
        e  i colType="numeric" d
        .s type="double"
        .s colLen=10
        .i NULLABLE="YES" d
        ..s type=type_"?"
        s RowLen=RowLen_","_colLen
        s colDesc=$tr(colDesc," ")
        i '$l(colDesc) s colDesc=colName
        s RowRemark=RowRemark_$c(2)_$p($p($p($p($p($p(colDesc," ",1),";",1),"{",1)," ",1),"	",1),"(",1)
        s types=types_","_type
    }
	
	//写类头部
	d ..WriteLineWithCode(file,"<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Transitional//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"">")
	d ..WriteLineWithCode(file,"<html xmlns=""http://www.w3.org/1999/xhtml"">")
	d ..WriteLineWithCode(file,"<head>")
	d ..WriteLineWithCode(file,"    <meta http-equiv=""Content-Type"" content=""text/html;charset=utf-8"" />")
	d ..WriteLineWithCode(file,"    <title>"_TableInnerName_"供拷贝代码使用</title>")
	d ..WriteLineWithCode(file,"    <link rel=""shortcut icon"" href=""../../resource/common/images/favicon.ico"" />")
	d ..WriteLineWithCode(file,"    <script src=""../../resource/common/js/lis-commonHISUI.js"" type=""text/javascript""></script>")
	
	d ..WriteLineWithCode(file,"    <script language=""javascript"" type=""text/javascript"">")
	d ..WriteLineWithCode(file,"        //LISSYSPageCommonInfo.Init();")
	d ..WriteLineWithCode(file,"        var BasePath = '';")
	d ..WriteLineWithCode(file,"        var ResourcePath = '';")
	d ..WriteLineWithCode(file,"        //var WebServicAddress = LISSYSPageCommonInfo.Data.WebServicAddress;")
	d ..WriteLineWithCode(file,"        //var UserDR = LISSYSPageCommonInfo.Data.Sesssion.UserDR;")
	d ..WriteLineWithCode(file,"        //var WorkGroupDR = LISSYSPageCommonInfo.Data.Sesssion.WorkGroupDR;")
	d ..WriteLineWithCode(file,"        //var sysTheme = LISSYSPageCommonInfo.Data.Sesssion.Theme;")
	d ..WriteLineWithCode(file,"        //var SessionStr = LISSYSPageCommonInfo.Data.SessionStr;")
	d ..WriteLineWithCode(file,"    </script>")
	d ..WriteLineWithCode(file,"    <script type=""text/javascript"">")
	d ..WriteLineWithCode(file,"        //全局变量")
	d ..WriteLineWithCode(file,"        var me = {")
	d ..WriteLineWithCode(file,"            actionUrl: '../ashx/ash"_TableInnerName_".ashx'")
	d ..WriteLineWithCode(file,"        };")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"        //jquery入口")
	d ..WriteLineWithCode(file,"        $(function () {")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"            //新增数据点击")
	d ..WriteLineWithCode(file,"            $(""#btnAdd"_TableInnerName_""").click(function () {")
	d ..WriteLineWithCode(file,"                $(""#txt"_TableInnerName_"RowID"").val(""""); ")
	d ..WriteLineWithCode(file,"				$('#winEdit"_TableInnerName_"').window({")
	d ..WriteLineWithCode(file,"                    title: TranslateDataMTHD('Add Data', '新增数据', ''),")
	d ..WriteLineWithCode(file,"                    modal: true")
	d ..WriteLineWithCode(file,"                });")
	d ..WriteLineWithCode(file,"            });")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"            //修改数据点击")
	d ..WriteLineWithCode(file,"            $(""#btnUpdate"_TableInnerName_""").click(function () {")
	d ..WriteLineWithCode(file,"				Update"_TableInnerName_"();")
	d ..WriteLineWithCode(file,"            });")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"			//修改数据")
	d ..WriteLineWithCode(file,"			function Update"_TableInnerName_"(row)")
	d ..WriteLineWithCode(file,"			{")
	d ..WriteLineWithCode(file,"                var selectRow = $('#dg"_TableInnerName_"').datagrid(""getSelected"");")
	d ..WriteLineWithCode(file,"                if(row!=null)")
	d ..WriteLineWithCode(file,"                {")
	d ..WriteLineWithCode(file,"                	selectRow=row;")
	d ..WriteLineWithCode(file,"                }")
	d ..WriteLineWithCode(file,"                if (selectRow == null) {")
	d ..WriteLineWithCode(file,"                    $.messager.alert(TranslateDataMTHD('Info', '提示', ''), TranslateDataMTHD('Please select the data to modify', '请选择要修改的数据!', ''), 'info');")
	d ..WriteLineWithCode(file,"                    return;")
	d ..WriteLineWithCode(file,"                }")
	d ..WriteLineWithCode(file,"				$(""#form"_TableInnerName_""").form('load', selectRow);")
	d ..WriteLineWithCode(file,"				$('#winEdit"_TableInnerName_"').window({")
	d ..WriteLineWithCode(file,"                    title: TranslateDataMTHD('Update Data', '修改数据', ''),")
	d ..WriteLineWithCode(file,"                    modal: true")
	d ..WriteLineWithCode(file,"                });")
	d ..WriteLineWithCode(file,"			}")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"            //删除数据点击")
	d ..WriteLineWithCode(file,"            $(""#btnDelete"_TableInnerName_""").click(function () {")
	d ..WriteLineWithCode(file,"                var checkRow = $('#dg"_TableInnerName_"').datagrid(""getChecked"");")
	d ..WriteLineWithCode(file,"                var selectRow = $('#dg"_TableInnerName_"').datagrid(""getSelected"");")
	d ..WriteLineWithCode(file,"                if ((checkRow == null || checkRow.length == 0)&&selectRow==null) {")
	d ..WriteLineWithCode(file,"                    $.messager.alert(TranslateDataMTHD('Info', '提示', ''), TranslateDataMTHD('Please select the data to delete', '请勾选要删除的数据!', ''), 'info');")
	d ..WriteLineWithCode(file,"                    return;")
	d ..WriteLineWithCode(file,"                }")
	d ..WriteLineWithCode(file,"                if ((checkRow == null || checkRow.length == 0)) {")
	d ..WriteLineWithCode(file,"                    checkRow=[selectRow];")
	d ..WriteLineWithCode(file,"                }")
	d ..WriteLineWithCode(file,"                var RowIDS = """";")
	d ..WriteLineWithCode(file,"                for (var i = 0; i < checkRow.length; i++) {")
	d ..WriteLineWithCode(file,"                    if (i == 0) {")
	d ..WriteLineWithCode(file,"                        RowIDS = checkRow[i].RowID;")
	d ..WriteLineWithCode(file,"                    }")
	d ..WriteLineWithCode(file,"                    else {")
	d ..WriteLineWithCode(file,"                        RowIDS += ""^"" + checkRow[i].RowID;")
	d ..WriteLineWithCode(file,"                    }")
	d ..WriteLineWithCode(file,"                }")
	d ..WriteLineWithCode(file,"                $.messager.confirm(TranslateDataMTHD('Info', '提示', ''), TranslateDataMTHD('Do you want to delete the selected data', '是否要删除选择的数据?', '') , function (r) {")
	d ..WriteLineWithCode(file,"                    if (r) {")
	d ..WriteLineWithCode(file,"                		//开启等待")
	d ..WriteLineWithCode(file,"                		$.messager.progress({ text: TranslateDataMTHD(""Deleting data"",""正在删除数据"", """"), interval: 500 });")
	d ..WriteLineWithCode(file,"                		setTimeout(function () {")
	d ..WriteLineWithCode(file,"                    		$.messager.progress('close');")
	d ..WriteLineWithCode(file,"                		}, 8000);")
	d ..WriteLineWithCode(file,"                		//往后台提交数据")
	d ..WriteLineWithCode(file,"                		$.ajax({")
	d ..WriteLineWithCode(file,"                    		type: ""post"",")
	d ..WriteLineWithCode(file,"                    		dataType: ""json"",")
	d ..WriteLineWithCode(file,"                    		cache: false, //")
	d ..WriteLineWithCode(file,"                    		async: true, //为true时,异步,不等待后台返回值,为false时强制等待;-asir")
	d ..WriteLineWithCode(file,"                    		url: me.actionUrl + '?Method=Delete"_TableInnerName_"',")
	d ..WriteLineWithCode(file,"                    		data: { RowIDS: RowIDS },")
	d ..WriteLineWithCode(file,"                    		success: function (data, status) {")
	d ..WriteLineWithCode(file,"                        		$.messager.progress('close');")
	d ..WriteLineWithCode(file,"                        		if (!FilterBackData(data)) {")
	d ..WriteLineWithCode(file,"                            		return;")
	d ..WriteLineWithCode(file,"                        		}")
	d ..WriteLineWithCode(file,"                        		if (!data.IsOk) {")
	d ..WriteLineWithCode(file,"                            		$.messager.alert(TranslateDataMTHD(""Error message"", ""错误提示"", """"), TranslateDataMTHD(""failed to dalete data, error message:"", ""删除失败,错误信息:"", """") + data.Message);")
	d ..WriteLineWithCode(file,"                        		}")
	d ..WriteLineWithCode(file,"                        		else {")
	d ..WriteLineWithCode(file,"                            		Qry"_TableInnerName_"();")
	d ..WriteLineWithCode(file,"                            		$.messager.show({")
	d ..WriteLineWithCode(file,"                                		title: TranslateDataMTHD(""Info"", ""提示"", """"),")
	d ..WriteLineWithCode(file,"                               		 	msg: TranslateDataMTHD(""Successfully deleted!"", ""删除成功!"", """"),")
	d ..WriteLineWithCode(file,"                                		timeout: 500,")
	d ..WriteLineWithCode(file,"                                		showType: 'slide'")
	d ..WriteLineWithCode(file,"                            		});")
	d ..WriteLineWithCode(file,"                        		}")
	d ..WriteLineWithCode(file,"                    		}")
	d ..WriteLineWithCode(file,"                		});")
	d ..WriteLineWithCode(file,"                    }")
	d ..WriteLineWithCode(file,"                });")
	d ..WriteLineWithCode(file,"            });")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"            //保存数据")
	d ..WriteLineWithCode(file,"            $(""#btnSave"_TableInnerName_""").click(function () {")
	d ..WriteLineWithCode(file,"                var saveData = jQuery.parseJSON($(""#form"_TableInnerName_""").serializeObject());")
	d ..WriteLineWithCode(file,"                //开启等待")
	d ..WriteLineWithCode(file,"                $.messager.progress({ text: TranslateDataMTHD(""Saving data"",""正在保存数据"", """"), interval: 500 });")
	d ..WriteLineWithCode(file,"                setTimeout(function () {")
	d ..WriteLineWithCode(file,"                    $.messager.progress('close');")
	d ..WriteLineWithCode(file,"                }, 8000);")
	d ..WriteLineWithCode(file,"                //往后台提交数据")
	d ..WriteLineWithCode(file,"                $.ajax({")
	d ..WriteLineWithCode(file,"                    type: ""post"",")
	d ..WriteLineWithCode(file,"                    dataType: ""json"",")
	d ..WriteLineWithCode(file,"                    cache: false, //")
	d ..WriteLineWithCode(file,"                    async: true, //为true时,异步,不等待后台返回值,为false时强制等待;-asir")
	d ..WriteLineWithCode(file,"                    url: me.actionUrl + '?Method=Save"_TableInnerName_"',")
	d ..WriteLineWithCode(file,"                    data: saveData,")
	d ..WriteLineWithCode(file,"                    success: function (data, status) {")
	d ..WriteLineWithCode(file,"                        $.messager.progress('close');")
	d ..WriteLineWithCode(file,"                        if (!FilterBackData(data)) {")
	d ..WriteLineWithCode(file,"                            return;")
	d ..WriteLineWithCode(file,"                        }")
	d ..WriteLineWithCode(file,"                        if (!data.IsOk) {")
	d ..WriteLineWithCode(file,"                            $.messager.alert(TranslateDataMTHD(""Error message"", ""错误提示"", """"), TranslateDataMTHD(""failed to dalete data, error message:"", ""删除失败,错误信息:"", """") + data.Message);")
	d ..WriteLineWithCode(file,"                        }")
	d ..WriteLineWithCode(file,"                        else {")
	d ..WriteLineWithCode(file,"                            Qry"_TableInnerName_"();")
	d ..WriteLineWithCode(file,"                            $.messager.show({")
	d ..WriteLineWithCode(file,"                                title: TranslateDataMTHD(""Info"", ""提示"", """"),")
	d ..WriteLineWithCode(file,"                                msg: TranslateDataMTHD(""Successfully saveed!"", ""保存成功!"", """"),")
	d ..WriteLineWithCode(file,"                                timeout: 500,")
	d ..WriteLineWithCode(file,"                                showType: 'slide'")
	d ..WriteLineWithCode(file,"                            });")
	d ..WriteLineWithCode(file,"                            $('#winEdit"_TableInnerName_"').window(""close"");")
	d ..WriteLineWithCode(file,"                        }")
	d ..WriteLineWithCode(file,"                    }")
	d ..WriteLineWithCode(file,"                });")
	d ..WriteLineWithCode(file,"            });")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"            //关闭窗口")
	d ..WriteLineWithCode(file,"            $(""#btnClose"_TableInnerName_""").click(function () {")
	d ..WriteLineWithCode(file,"				$('#winEdit"_TableInnerName_"').window(""close"");")
	d ..WriteLineWithCode(file,"            });")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"            //构造查询事件")
	d ..WriteLineWithCode(file,"            $(""#txtFilter"_TableInnerName_""").searchbox({")
	d ..WriteLineWithCode(file,"                searcher: function (value, name) {")
	d ..WriteLineWithCode(file,"                    Qry"_TableInnerName_"();")
	d ..WriteLineWithCode(file,"                },")
	d ..WriteLineWithCode(file,"                prompt: TranslateDataMTHD('Enter query', '回车查询', '')")
	d ..WriteLineWithCode(file,"            });")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"")
	f i=1:1:$l(RowSpec,",") d
	.s colName=$p(RowSpec,",",i)
	.s colLen=$p(RowLen,",",i)
	.s remark=$p(RowRemark,$c(2),i)
	.s type=$p(types,",",i)
	.//外键参照信息
    .s refInfo=..GetForeignKeyInfo(colName,TableName)
    .//有外键
    .i $l(refInfo) d
    ..d ..WriteLineWithCode(file,"            //"_remark_"下拉表格渲染")
    ..d ..WriteLineWithCode(file,"            $('#txt"_TableInnerName_colName_"').combogrid({")
    ..d ..WriteLineWithCode(file,"                panelWidth: 350,")
    ..d ..WriteLineWithCode(file,"                idField: 'RowID',")
    ..d ..WriteLineWithCode(file,"                width: 205,")
    ..d ..WriteLineWithCode(file,"                textField: '"_$p(refInfo,"^",3)_"',")
    ..d ..WriteLineWithCode(file,"                url: me.actionUrl + '?Method=CommonQueryView&data='+JSON.stringify({ ModelName: """_$tr($p(refInfo,"^",1),"_")_""", Pram: [], IsDisplayCount: false, Joiner: [], Operators: [] }),")
    ..d ..WriteLineWithCode(file,"                columns: [[")
    ..d ..WriteLineWithCode(file,"                    { field: 'RowID', title: '主键', width: 60 },")
    ..d ..WriteLineWithCode(file,"                    { field: '"_$p(refInfo,"^",3)_"', title: '名称', width: 260 }")
    ..d ..WriteLineWithCode(file,"                ]]")
    ..d ..WriteLineWithCode(file,"            });")
    ..d ..WriteLineWithCode(file,"            $('#txt"_TableInnerName_colName_"').combogrid(""showSelectWin"");")
    ..d ..WriteLineWithCode(file,"")
    .//没外键
    .e  i $l(colName)>4 d
    ..s LastName=$e(colName,$l(colName)-3,$l(colName))
    ..//bool类型
    ..i (type="bool")||(type="bool?") d
    ...d ..WriteLineWithCode(file,"            //"_remark_"布尔渲染")
	...d ..WriteLineWithCode(file,"            $('#txt"_TableInnerName_colName_"').combobox({")
    ...d ..WriteLineWithCode(file,"                valueField:'RowID',")
    ...d ..WriteLineWithCode(file,"                textField:'CName',")
    ...d ..WriteLineWithCode(file,"                width: 205,")
    ...d ..WriteLineWithCode(file,"                data: [{""RowID"":""0"",""CName"":TranslateDataMTHD('No', '否', '')},{""RowID"":""1"",""CName"":TranslateDataMTHD('Yes', '是', '')}]")
    ...d ..WriteLineWithCode(file,"            });")
    ...d ..WriteLineWithCode(file,"")
	..i LastName="Date" d
    ...d ..WriteLineWithCode(file,"            //"_remark_"日期渲染")
	...d ..WriteLineWithCode(file,"            $('#txt"_TableInnerName_colName_"').datebox({")
    ...d ..WriteLineWithCode(file,"                required:false,")
    ...d ..WriteLineWithCode(file,"                editable: true,")
    ...d ..WriteLineWithCode(file,"                width: 205,")
    ...d ..WriteLineWithCode(file,"                formatter: DateFormatter,")
    ...d ..WriteLineWithCode(file,"                parser: DateParser")
    ...d ..WriteLineWithCode(file,"            });")
    ...d ..WriteLineWithCode(file,"            //设置默认日期")
    ...d ..WriteLineWithCode(file,"            $('#txt"_TableInnerName_colName_"').datebox(""setValue"",GetCurentDate())")
    ...d ..WriteLineWithCode(file,"")
    ..i LastName="Time" d
    ...d ..WriteLineWithCode(file,"            //"_remark_"时间渲染")
	...d ..WriteLineWithCode(file,"            $('#txt"_TableInnerName_colName_"').timespinner({")
    ...d ..WriteLineWithCode(file,"                required:false,")
    ...d ..WriteLineWithCode(file,"                editable: true,")
    ...d ..WriteLineWithCode(file,"                width: 205,")
    ...d ..WriteLineWithCode(file,"                showSeconds: true")
    ...d ..WriteLineWithCode(file,"            });")
    ...d ..WriteLineWithCode(file,"            //设置默认日期")
    ...d ..WriteLineWithCode(file,"            $('#txt"_TableInnerName_colName_"').timespinner(""setValue"",GetCurentTime())")
    ...d ..WriteLineWithCode(file,"")
    //构造表格代码
    d ..WriteLineWithCode(file,"            //"_TableInnerName_"表格")
    d ..WriteLineWithCode(file,"            $('#dg"_TableInnerName_"').datagrid({")
    d ..WriteLineWithCode(file,"                remoteSort:false,")
    d ..WriteLineWithCode(file,"                singleSelect: true,")
    d ..WriteLineWithCode(file,"                toolbar: ""#dg"_TableInnerName_"ToolBar"",")
    d ..WriteLineWithCode(file,"                fit: true,")
    d ..WriteLineWithCode(file,"                onSelect: function (index, row) {")
    d ..WriteLineWithCode(file,"                    //方便拷贝到子表查询用")
    d ..WriteLineWithCode(file,"                	var select"_TableInnerName_"=$('#dg"_TableInnerName_"').datagrid(""getSelected"");")
    d ..WriteLineWithCode(file,"                },")
    d ..WriteLineWithCode(file,"                onDblClickRow: function (index, row) {")
    d ..WriteLineWithCode(file,"                    Update"_TableInnerName_"(row);")
    d ..WriteLineWithCode(file,"                },")
    d ..WriteLineWithCode(file,"")
    d ..WriteLineWithCode(file,"                columns: [[")
    d ..WriteLineWithCode(file,"                    { field: 'ChkFlag', title: TranslateDataMTHD('Check', '选择', ''), width: 20, sortable: true, align: 'center', checkbox: true },")
    f i=1:1:$l(RowSpec,",") d
	.s colName=$p(RowSpec,",",i)
	.s colLen=$p(RowLen,",",i)
	.s remark=$p(RowRemark,$c(2),i)
	.s endChar=","
	.//外键参照信息
    .s refInfo=..GetForeignKeyInfo(colName,TableName)
    .i $l(refInfo) d
    ..s refTableName=$p(refInfo,"^",2)
    ..s refTableNameCol=$p(refInfo,"^",3)
    ..i refTableNameCol'="RowID" d
    ...s colName=colName_"Name"
	.i i=$l(RowSpec,",") s endChar=""
	.d ..WriteLineWithCode(file,"                    { field: '"_colName_"', title: TranslateDataMTHD('"_colName_"', '"_remark_"', '') , width: 150, sortable: true }"_endChar)
    d ..WriteLineWithCode(file,"                ]]")
    d ..WriteLineWithCode(file,"            });")
    d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"")
    //构造查询表格方法代码
	d ..WriteLineWithCode(file,"            //查询"_TableInnerName)
	d ..WriteLineWithCode(file,"            function Qry"_TableInnerName_"() {")
	d ..WriteLineWithCode(file,"                var Filter = $(""#txtFilter"_TableInnerName_""").searchbox(""getValue"");")
	d ..WriteLineWithCode(file,"                //开启等待,默认注释,在单击事件调用的逻辑启用等待会冲掉双击事件,按需要开启")
	d ..WriteLineWithCode(file,"                //$.messager.progress({ text: TranslateDataMTHD(""Querying data"",""正在查询数据"", """"), interval: 500 });")
	d ..WriteLineWithCode(file,"                //setTimeout(function () {")
	d ..WriteLineWithCode(file,"                    //$.messager.progress('close');")
	d ..WriteLineWithCode(file,"                //}, 8000);")
	d ..WriteLineWithCode(file,"                $.ajax({")
	d ..WriteLineWithCode(file,"                    type: ""post"",")
	d ..WriteLineWithCode(file,"                    dataType: ""json"",")
	d ..WriteLineWithCode(file,"                    cache: false, //")
	d ..WriteLineWithCode(file,"                    async: true, //为true时,异步,不等待后台返回值,为false时强制等待;-asir")
	d ..WriteLineWithCode(file,"                    url: me.actionUrl + '?Method=Qry"_TableInnerName_"',")
	d ..WriteLineWithCode(file,"                    data: { Filter: Filter },")
	d ..WriteLineWithCode(file,"                    success: function (data, status) {")
	d ..WriteLineWithCode(file,"                        //结束等待")
	d ..WriteLineWithCode(file,"                        //$.messager.progress('close');")
	d ..WriteLineWithCode(file,"                        $('#dg"_TableInnerName_"').datagrid(""loadData"", data);")
	d ..WriteLineWithCode(file,"                    }")
	d ..WriteLineWithCode(file,"                });")
	d ..WriteLineWithCode(file,"            };")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"            //执行查询数据")
	d ..WriteLineWithCode(file,"            Qry"_TableInnerName_"();")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"")
	
	d ..WriteLineWithCode(file,"		});")
	d ..WriteLineWithCode(file,"    </script>")
	d ..WriteLineWithCode(file,"</head>")
	d ..WriteLineWithCode(file,"<body>")
	d ..WriteLineWithCode(file,"    <div class=""hisui-layout"" fit=""true"" style=""border: none;"">")
	d ..WriteLineWithCode(file,"        <div data-options=""region:'center',title:''"" style=""border: none;"">")
	d ..WriteLineWithCode(file,"            <div id=""dg"_TableInnerName_"ToolBar"" style=""padding: 3px 0px 3px 10px;"">")
	d ..WriteLineWithCode(file,"                <a id=""btnAdd"_TableInnerName_""" href=""#"" class=""hisui-linkbutton"" data-options=""iconCls:'icon-add'"" plain=""true"" listranslate=""html~Add"">新增</a>")
	d ..WriteLineWithCode(file,"                <a id=""btnUpdate"_TableInnerName_""" href=""#"" class=""hisui-linkbutton"" data-options=""iconCls:'icon-write-order'"" plain=""true"" listranslate=""html~Mod"">修改</a>")
	d ..WriteLineWithCode(file,"                <a id=""btnDelete"_TableInnerName_""" href=""#"" class=""hisui-linkbutton"" data-options=""iconCls:'icon-cancel'"" plain=""true"" listranslate=""html~Del"">删除</a>")
	d ..WriteLineWithCode(file,"                <input id=""txtFilter"_TableInnerName_""" style=""margin-left: 14px; width: 240px;""></input>")
	d ..WriteLineWithCode(file,"            </div>")
	d ..WriteLineWithCode(file,"            <table id=""dg"_TableInnerName_""" title="""" iconcls=""icon-paper"" listranslate=""title~"_TableInnerName_"""></table>")
	d ..WriteLineWithCode(file,"        </div>")
	
	s allColNum=$l(RowSpec,",")
	s ColNum=1
	i allColNum>6 s ColNum=2
	i allColNum>12 s ColNum=3
	s winWidth=370*ColNum+30
	s windowHeight=$l(RowSpec,",")*37/ColNum+90
	d ..WriteLineWithCode(file,"        <div id=""winEdit"_TableInnerName_""" style=""padding: 10px 0px 0px 10px;width:"_winWidth_"px;height:"_windowHeight_"px;"">")
	d ..WriteLineWithCode(file,"            <form id=""form"_TableInnerName_""" name=""edit_form"" method=""post"">")
	d ..WriteLineWithCode(file,"                <input type=""hidden"" id=""txt"_TableInnerName_"RowID"" name=""RowID"" value=""0"" />")
	d ..WriteLineWithCode(file,"                <table>")
	
	s outColNum=0
	f i=1:1:$l(RowSpec,",") d
	.s colName=$p(RowSpec,",",i)
	.i colName="RowID" q
	.s colLen=$p(RowLen,",",i)
	.s remark=$p(RowRemark,$c(2),i)
	.s outColNum=outColNum+1
	.i (ColNum=1)||(outColNum=1)||((outColNum#ColNum) =1) d
	..d ..WriteLineWithCode(file,"                    <tr>")
	.d ..WriteLineWithCode(file,"                        <td class=""lisar"" listranslate=""html~"_colName_""">"_remark_"</td>")
	.//外键参照信息
    .s refInfo=..GetForeignKeyInfo(colName,TableName)
    .//有外键
    .i $l(refInfo) d
    ..d ..WriteLineWithCode(file,"                        <td class=""lisal""><input id=""txt"_TableInnerName_colName_""" type=""text"" name="""_colName_""" style=""width:200px;""/></td>")
    .//没外键
    .e  d
    ..d ..WriteLineWithCode(file,"                        <td class=""lisal""><input id=""txt"_TableInnerName_colName_""" type=""text"" name="""_colName_""" style=""width:200px;"" class=""hisui-validatebox""  maxlength="""_colLen_"""/></td>")
    .i (ColNum=1)||((outColNum#ColNum) =0)||(outColNum=allColNum) d
    ..d ..WriteLineWithCode(file,"                    </tr>")
	d ..WriteLineWithCode(file,"                </table>")
	d ..WriteLineWithCode(file,"                <div region=""south"" border=""fale"" style=""text-align: center; padding: 5px 0 0;"">")
	d ..WriteLineWithCode(file,"                    <a id=""btnSave"_TableInnerName_""" href=""#"" class=""hisui-linkbutton"" plain=""false"" listranslate=""html~Save"">保存</a>")
	d ..WriteLineWithCode(file,"                    <span class=""sp6""></span>")
	d ..WriteLineWithCode(file,"                    <a id=""btnClose"_TableInnerName_""" href=""#"" class=""hisui-linkbutton"" plain=""false"" listranslate=""html~Cancel"">取消</a>")
	d ..WriteLineWithCode(file,"                </div>")
	d ..WriteLineWithCode(file,"            </form>")
	d ..WriteLineWithCode(file,"        </div>")
	d ..WriteLineWithCode(file,"</body>")
	d ..WriteLineWithCode(file,"</html>")
	d ..WriteLineWithCode(file,"")

	q "代码生成在:"_logName
}

/// 生成表java实体代码
/// 编码格式改WriteLineWithCode
/// w ##class(Jbase.MakeWebCode).MakeModelCodeJava("SYS_Form")
ClassMethod MakeModelCodeJava(TableName, PathAdd)
{
	s TableName=$g(TableName)
	s PathAdd=$g(PathAdd)
	s ClassName=$tr(TableName,"_")
	s rset = ##class(%ResultSet).%New()
	d rset.Prepare("select COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,DESCRIPTION,IS_NULLABLE FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='dbo'  and TABLE_NAME='"_TableName_"'")
	s exeret=rset.Execute()
	s colCount=rset.GetColumnCount()
	Set repid=$I(^CacheTemp)
	k ^TMP($zn,repid,$j)
	s IsLinux=1
	s logpath=""
	i ##class(%SYSTEM.Version).GetOS()="Windows" s IsLinux=0
	//默认路径
	i '$l(logpath) d
	.i IsLinux=0 d
	..s logpath="D:\"
	.e  d
	..s logpath="/"
	
	s logName=logpath_PathAdd_$tr(TableName,"_")_".java"
	
	//不存在目录就创建
	i '##class(%File).DirectoryExists(logpath_PathAdd) d
	.d ##class(%File).CreateNewDir(logpath_PathAdd,"")
	
	s file=##class(%File).%New(logName)
	//存在就追加
	i ##class(%File).Exists(logName) d
	.d ##class(%File).Delete(logName)
	.d file.Open("WSN:/SHARED:/IOTABLE=""UTF8""")
	//不存在就新建
	e  d
	.d file.Open("WSN:/SHARED:/IOTABLE=""UTF8""")
	
	//写日志
	d ..WriteLineWithCode(file,"package LIS.Model.Entity;")
	d ..WriteLineWithCode(file,"import LIS.Core.CustomAttributes.*;")
	d ..WriteLineWithCode(file,"/**")
	d ..WriteLineWithCode(file,"*[功能描述:本代码由LIS内部代码生成工具生成,请不要手动修改,如要修改,请写修改变更记录]")
	d ..WriteLineWithCode(file,"*[创建者:LIS.Entity生成器]")
	d ..WriteLineWithCode(file,"*/")
	d ..WriteLineWithCode(file,"@UniqueAttribute(ColNames = ""RowID"")")
	d ..WriteLineWithCode(file,"@TableAttribute(Name=""dbo."_TableName_""")")
	d ..WriteLineWithCode(file,"public class "_ClassName)
	d ..WriteLineWithCode(file,"{")

    While(rset.Next())
    {
	    s outStr=""
        s colField=rset.GetColumnName(1)
        s colName=rset.GetDataByName(colField)
        s colField1=rset.GetColumnName(2)
        s colType=rset.GetDataByName(colField1)
        s colField2=rset.GetColumnName(3)
        s colLen=rset.GetDataByName(colField2)
        s colField3=rset.GetColumnName(4)
        s colDesc=rset.GetDataByName(colField3)
        s colField4=rset.GetColumnName(5)
        s NULLABLE=rset.GetDataByName(colField4)
        i '$l(colDesc) s colDesc=colName
        d ..WriteLineWithCode(file,"	/**")
        d ..WriteLineWithCode(file,"	* "_##Class(LIS.Util.Common).DealNotSeeChar(colDesc))
        d ..WriteLineWithCode(file,"	*/")
        i NULLABLE="NO" d
        .d ..WriteLineWithCode(file,"	@NotNullAttribute")
        
        i colName="RowID" d
        .d ..WriteLineWithCode(file,"	@IdAttribute(Name = ""RowID"")")
        
        s NULLABLE="No"
        s type=colType
        i colType="integer" d
        .s type="int"
        .s colLen=10
        .i NULLABLE="YES" d
        ..s type=type_"?"
        i colType="bigint" d
        .s type="int"
        .s colLen=10
        .i NULLABLE="YES" d
        ..s type=type_"?"
        i colType="smallint" d
        .s type="int"
        .s colLen=10
        .i NULLABLE="YES" d
        ..s type=type_"?"
        i colType="tinyint" d
        .s type="int"
        .s colLen=10
        .i NULLABLE="YES" d
        ..s type=type_"?"
        e  i colType="varchar" d
        .s type="String"
        e  i colType="bit" d
        .s type="boolean"
        .s colLen=1
        .i NULLABLE="YES" d
        ..s type=type_"?"
        e  i colType="double" d
        .s type="double"
        .s colLen=10
        .i NULLABLE="YES" d
        ..s type=type_"?"
        e  i colType="numeric" d
        .s type="double"
        .s colLen=10
        .i NULLABLE="YES" d
        ..s type=type_"?"
        
        i type="longvarbinary" s type="String"
        //外键参照信息
        s refInfo=..GetForeignKeyInfo(colName,TableName)
        s colLen=..DealNotSeeChar(colLen)
        i $l(refInfo) d
        .d ..WriteLineWithCode(file,"	@FrekeyAttribute(Name = """_$tr($p(refInfo,"^",1),"_")_""", RefColumnName = """_$p(refInfo,"^",2)_""", AssociaField = """_$p(refInfo,"^",3)_""")")
        i $l(colLen) d
        .d ..WriteLineWithCode(file,"	@LengthAttribute(MaxLen = "_colLen_")")
        
        d ..WriteLineWithCode(file,"	public "_type_" "_colName_";")
        d ..WriteLineWithCode(file,"")
    }
    d ..WriteLineWithCode(file,"}")
    d file.Close()
    q "代码生成在:"_logName
}

/// 带编码转换写字符
ClassMethod WriteLineWithCode(file, str)
{
	d file.WriteLine(str)
	//d file.WriteLine($zcvt(str,"O","UTF8"))
}

/// 得到外键参照关系
ClassMethod GetForeignKeyInfo(ColName, TableName)
{
	s TableName=$g(TableName)
	s ColName=$g(ColName)
	s rset = ##class(%ResultSet).%New()
	d rset.Prepare("select REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME,* FROM information_schema.KEY_COLUMN_USAGE where REFERENCED_TABLE_SCHEMA='dbo' and TABLE_NAME='"_TableName_"' and COLUMN_NAME='"_ColName_"'")
	s exeret=rset.Execute()
	s colCount=rset.GetColumnCount()
	s ret=""
	While(rset.Next())
    {
	    s outStr=""
        s colField=rset.GetColumnName(1)
        s refTableName=rset.GetDataByName(colField)
        s colField1=rset.GetColumnName(2)
        s refColName=rset.GetDataByName(colField1)
        s ret=refTableName_"^"_refColName_"^"_..GetForeignKeyAssociaField(refTableName)
    }
    q ret
}

/// 得到外键参照要拉取的字段
ClassMethod GetForeignKeyAssociaField(TableName)
{
	s TableName=$g(TableName)
	s rset = ##class(%ResultSet).%New()
	d rset.Prepare("select COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='dbo'  and TABLE_NAME='"_TableName_"'")
	s exeret=rset.Execute()
	s colCount=rset.GetColumnCount()
	s ret="RowID^1"
	s curLev=0
	s curIndex=0
	s index=0
	While(rset.Next())
    {
	    s index=index+1
	    s outStr=""
        s colField=rset.GetColumnName(1)
        s colName=rset.GetDataByName(colField)
        s lev=0
        i colName="CName" s lev=999
        i colName="IName" s lev=99
        i colName="XName" s lev=9
        i lev>curLev d
        .s ret=colName_"^"_index
        .s curLev=lev
        .s curIndex=index
    }
    q ret
}

/// 去除不可见字符
ClassMethod DealNotSeeChar(Data As %String) As %String
{
	s Data=$g(Data)
	i $l(Data) d
	.f i=0:1:31  d
	..s Data=$tr(Data,$c(i))
	.s Data=$tr(Data,$c(127))
	q Data
}

}

用生成器生成代码
在这里插入图片描述

前端示例

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    <title>BTWard供拷贝代码使用</title>
    <link rel="shortcut icon" href="../../resource/common/images/favicon.ico" />
    <script src="../../resource/common/js/lis-commonHISUI.js" type="text/javascript"></script>
    <script language="javascript" type="text/javascript">
        //LISSYSPageCommonInfo.Init();
        var BasePath = '';
        var ResourcePath = '';
        //var WebServicAddress = LISSYSPageCommonInfo.Data.WebServicAddress;
        //var UserDR = LISSYSPageCommonInfo.Data.Sesssion.UserDR;
        //var WorkGroupDR = LISSYSPageCommonInfo.Data.Sesssion.WorkGroupDR;
        //var sysTheme = LISSYSPageCommonInfo.Data.Sesssion.Theme;
        //var SessionStr = LISSYSPageCommonInfo.Data.SessionStr;
    </script>
    <script type="text/javascript">
        //全局变量
        var me = {
            actionUrl: '../ashx/ashBTWard.ashx'
        };

        //jquery入口
        $(function () {

            //新增数据点击
            $("#btnAddBTWard").click(function () {
                $("#txtBTWardRowID").val(""); 
				$('#winEditBTWard').window({
                    title: TranslateDataMTHD('Add Data', '新增数据', ''),
                    modal: true
                });
            });


            //修改数据点击
            $("#btnUpdateBTWard").click(function () {
				UpdateBTWard();
            });

			//修改数据
			function UpdateBTWard(row)
			{
                var selectRow = $('#dgBTWard').datagrid("getSelected");
                if(row!=null)
                {
                	selectRow=row;
                }
                if (selectRow == null) {
                    $.messager.alert(TranslateDataMTHD('Info', '提示', ''), TranslateDataMTHD('Please select the data to modify', '请选择要修改的数据!', ''), 'info');
                    return;
                }
				$("#formBTWard").form('load', selectRow);
				$('#winEditBTWard').window({
                    title: TranslateDataMTHD('Update Data', '修改数据', ''),
                    modal: true
                });
			}



            //删除数据点击
            $("#btnDeleteBTWard").click(function () {
                var checkRow = $('#dgBTWard').datagrid("getChecked");
                var selectRow = $('#dgBTWard').datagrid("getSelected");
                if ((checkRow == null || checkRow.length == 0)&&selectRow==null) {
                    $.messager.alert(TranslateDataMTHD('Info', '提示', ''), TranslateDataMTHD('Please select the data to delete', '请勾选要删除的数据!', ''), 'info');
                    return;
                }
                if ((checkRow == null || checkRow.length == 0)) {
                    checkRow=[selectRow];
                }
                var RowIDS = "";
                for (var i = 0; i < checkRow.length; i++) {
                    if (i == 0) {
                        RowIDS = checkRow[i].RowID;
                    }
                    else {
                        RowIDS += "^" + checkRow[i].RowID;
                    }
                }
                $.messager.confirm(TranslateDataMTHD('Info', '提示', ''), TranslateDataMTHD('Do you want to delete the selected data', '是否要删除选择的数据?', '') , function (r) {
                    if (r) {
                		//开启等待
                		$.messager.progress({ text: TranslateDataMTHD("Deleting data","正在删除数据", ""), interval: 500 });
                		setTimeout(function () {
                    		$.messager.progress('close');
                		}, 8000);
                		//往后台提交数据
                		$.ajax({
                    		type: "post",
                    		dataType: "json",
                    		cache: false, //
                    		async: true, //为true时,异步,不等待后台返回值,为false时强制等待;-asir
                    		url: me.actionUrl + '?Method=DeleteBTWard',
                    		data: { RowIDS: RowIDS },
                    		success: function (data, status) {
                        		$.messager.progress('close');
                        		if (!FilterBackData(data)) {
                            		return;
                        		}
                        		if (!data.IsOk) {
                            		$.messager.alert(TranslateDataMTHD("Error message", "错误提示", ""), TranslateDataMTHD("failed to dalete data, error message:", "删除失败,错误信息:", "") + data.Message);
                        		}
                        		else {
                            		QryBTWard();
                            		$.messager.show({
                                		title: TranslateDataMTHD("Info", "提示", ""),
                               		 	msg: TranslateDataMTHD("Successfully deleted!", "删除成功!", ""),
                                		timeout: 500,
                                		showType: 'slide'
                            		});
                        		}
                    		}
                		});
                    }
                });
            });


            //保存数据
            $("#btnSaveBTWard").click(function () {
                var saveData = jQuery.parseJSON($("#formBTWard").serializeObject());
                //开启等待
                $.messager.progress({ text: TranslateDataMTHD("Saving data","正在保存数据", ""), interval: 500 });
                setTimeout(function () {
                    $.messager.progress('close');
                }, 8000);
                //往后台提交数据
                $.ajax({
                    type: "post",
                    dataType: "json",
                    cache: false, //
                    async: true, //为true时,异步,不等待后台返回值,为false时强制等待;-asir
                    url: me.actionUrl + '?Method=SaveBTWard',
                    data: saveData,
                    success: function (data, status) {
                        $.messager.progress('close');
                        if (!FilterBackData(data)) {
                            return;
                        }
                        if (!data.IsOk) {
                            $.messager.alert(TranslateDataMTHD("Error message", "错误提示", ""), TranslateDataMTHD("failed to dalete data, error message:", "删除失败,错误信息:", "") + data.Message);
                        }
                        else {
                            QryBTWard();
                            $.messager.show({
                                title: TranslateDataMTHD("Info", "提示", ""),
                                msg: TranslateDataMTHD("Successfully saveed!", "保存成功!", ""),
                                timeout: 500,
                                showType: 'slide'
                            });
                            $('#winEditBTWard').window("close");
                        }
                    }
                });
            });


            //关闭窗口
            $("#btnCloseBTWard").click(function () {
				$('#winEditBTWard').window("close");
            });


            //构造查询事件
            $("#txtFilterBTWard").searchbox({
                searcher: function (value, name) {
                    QryBTWard();
                },
                prompt: TranslateDataMTHD('Enter query', '回车查询', '')
            });



            //临床科室下拉表格渲染
            $('#txtBTWardLocationDR').combogrid({
                panelWidth: 350,
                idField: 'RowID',
                width: 205,
                textField: 'CName',
                url: me.actionUrl + '?Method=CommonQueryView&data='+JSON.stringify({ ModelName: "BTLocation", Pram: [], IsDisplayCount: false, Joiner: [], Operators: [] }),
                columns: [[
                    { field: 'RowID', title: '主键', width: 60 },
                    { field: 'CName', title: '名称', width: 260 }
                ]]
            });
            $('#txtBTWardLocationDR').combogrid("showSelectWin");

            //是否激活布尔渲染
            $('#txtBTWardActive').combobox({
                valueField:'RowID',
                textField:'CName',
                width: 205,
                data: [{"RowID":"0","CName":TranslateDataMTHD('No', '否', '')},{"RowID":"1","CName":TranslateDataMTHD('Yes', '是', '')}]
            });

            //BTWard表格
            $('#dgBTWard').datagrid({
                remoteSort:false,
                singleSelect: true,
                toolbar: "#dgBTWardToolBar",
                fit: true,
                onSelect: function (index, row) {
                    //方便拷贝到子表查询用
                	var selectBTWard=$('#dgBTWard').datagrid("getSelected");
                },
                onDblClickRow: function (index, row) {
                    UpdateBTWard(row);
                },

                columns: [[
                    { field: 'ChkFlag', title: TranslateDataMTHD('Check', '选择', ''), width: 20, sortable: true, align: 'center', checkbox: true },
                    { field: 'RowID', title: TranslateDataMTHD('RowID', '主键', '') , width: 150, sortable: true },
                    { field: 'Code', title: TranslateDataMTHD('Code', '代码', '') , width: 150, sortable: true },
                    { field: 'CName', title: TranslateDataMTHD('CName', '名称', '') , width: 150, sortable: true },
                    { field: 'HISCode', title: TranslateDataMTHD('HISCode', 'HIS对照码', '') , width: 150, sortable: true },
                    { field: 'LocationDRName', title: TranslateDataMTHD('LocationDRName', '临床科室', '') , width: 150, sortable: true },
                    { field: 'Sequence', title: TranslateDataMTHD('Sequence', '序号', '') , width: 150, sortable: true },
                    { field: 'Active', title: TranslateDataMTHD('Active', '是否激活', '') , width: 150, sortable: true },
                    { field: 'PhoneNo', title: TranslateDataMTHD('PhoneNo', 'PhoneNo', '') , width: 150, sortable: true }
                ]]
            });


            //查询BTWard
            function QryBTWard() {
                var Filter = $("#txtFilterBTWard").searchbox("getValue");
                //开启等待,默认注释,在单击事件调用的逻辑启用等待会冲掉双击事件,按需要开启
                //$.messager.progress({ text: TranslateDataMTHD("Querying data","正在查询数据", ""), interval: 500 });
                //setTimeout(function () {
                    //$.messager.progress('close');
                //}, 8000);
                $.ajax({
                    type: "post",
                    dataType: "json",
                    cache: false, //
                    async: true, //为true时,异步,不等待后台返回值,为false时强制等待;-asir
                    url: me.actionUrl + '?Method=QryBTWard',
                    data: { Filter: Filter },
                    success: function (data, status) {
                        //结束等待
                        //$.messager.progress('close');
                        $('#dgBTWard').datagrid("loadData", data);
                    }
                });
            };


            //执行查询数据
            QryBTWard();


		});
    </script>
</head>
<body>
    <div class="hisui-layout" fit="true" style="border: none;">
        <div data-options="region:'center',title:''" style="border: none;">
            <div id="dgBTWardToolBar" style="padding: 3px 0px 3px 10px;">
                <a id="btnAddBTWard" href="#" class="hisui-linkbutton" data-options="iconCls:'icon-add'" plain="true" listranslate="html~Add">新增</a>
                <a id="btnUpdateBTWard" href="#" class="hisui-linkbutton" data-options="iconCls:'icon-write-order'" plain="true" listranslate="html~Mod">修改</a>
                <a id="btnDeleteBTWard" href="#" class="hisui-linkbutton" data-options="iconCls:'icon-cancel'" plain="true" listranslate="html~Del">删除</a>
                <input id="txtFilterBTWard" style="margin-left: 14px; width: 240px;"></input>
            </div>
            <table id="dgBTWard" title="" iconcls="icon-paper" listranslate="title~BTWard"></table>
        </div>
        <div id="winEditBTWard" style="padding: 10px 0px 0px 10px;width:770px;height:238px;">
            <form id="formBTWard" name="edit_form" method="post">
                <input type="hidden" id="txtBTWardRowID" name="RowID" value="0" />
                <table>
                    <tr>
                        <td class="lisar" listranslate="html~Code">代码</td>
                        <td class="lisal"><input id="txtBTWardCode" type="text" name="Code" style="width:200px;" class="hisui-validatebox"  maxlength="10"/></td>
                        <td class="lisar" listranslate="html~CName">名称</td>
                        <td class="lisal"><input id="txtBTWardCName" type="text" name="CName" style="width:200px;" class="hisui-validatebox"  maxlength="40"/></td>
                    </tr>
                    <tr>
                        <td class="lisar" listranslate="html~HISCode">HIS对照码</td>
                        <td class="lisal"><input id="txtBTWardHISCode" type="text" name="HISCode" style="width:200px;" class="hisui-validatebox"  maxlength="20"/></td>
                        <td class="lisar" listranslate="html~LocationDR">临床科室</td>
                        <td class="lisal"><input id="txtBTWardLocationDR" type="text" name="LocationDR" style="width:200px;"/></td>
                    </tr>
                    <tr>
                        <td class="lisar" listranslate="html~Sequence">序号</td>
                        <td class="lisal"><input id="txtBTWardSequence" type="text" name="Sequence" style="width:200px;" class="hisui-validatebox"  maxlength="10"/></td>
                        <td class="lisar" listranslate="html~Active">是否激活</td>
                        <td class="lisal"><input id="txtBTWardActive" type="text" name="Active" style="width:200px;" class="hisui-validatebox"  maxlength="1"/></td>
                    </tr>
                    <tr>
                        <td class="lisar" listranslate="html~PhoneNo">PhoneNo</td>
                        <td class="lisal"><input id="txtBTWardPhoneNo" type="text" name="PhoneNo" style="width:200px;" class="hisui-validatebox"  maxlength="20"/></td>
                </table>
                <div region="south" border="fale" style="text-align: center; padding: 5px 0 0;">
                    <a id="btnSaveBTWard" href="#" class="hisui-linkbutton" plain="false" listranslate="html~Save">保存</a>
                    <span class="sp6"></span>
                    <a id="btnCloseBTWard" href="#" class="hisui-linkbutton" plain="false" listranslate="html~Cancel">取消</a>
                </div>
            </form>
        </div>
</body>
</html>


后台示例

import appcode.BaseHttpHandlerNoSession;
import appcode.Helper;
import LIS.Core.Dto.HashParam;
import LIS.Core.Dto.ParamDto;
import LIS.Core.Dto.OutParam;
import LIS.Model.Entity.*;
import LIS.Core.Util.Convert;

import java.util.ArrayList;
import java.util.List;

/**
*由代码生成器生成的后台代码
*/
public class ashBTWard extends BaseHttpHandlerNoSession {

	/**
	 * 保存数据,前台按表的属性名提交
	 * @return 字符串
	 */
	public String SaveBTWard()
    {
		BTWard dto=new BTWard();
		//RowID  
		dto.RowID=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "RowID"), dto.RowID);
		//代码  
		dto.Code=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "Code"), dto.Code);
		//名称  
		dto.CName=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "CName"), dto.CName);
		//HIS对照码  
		dto.HISCode=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "HISCode"), dto.HISCode);
		//临床科室  
		dto.LocationDR=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "LocationDR"), dto.LocationDR);
		//序号  
		dto.Sequence=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "Sequence"), dto.Sequence);
		//是否激活  {1:True,0:False}
		dto.Active=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "Active"), dto.Active);
		//      
		dto.PhoneNo=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "PhoneNo"), dto.PhoneNo);
		OutParam out=new OutParam();
		int ret=0;
		//更新
		if(dto.RowID>0)
		{
			ret=EntityManager().Update(dto,null, out, null, null, null);
		}
		//插入数据
		else
		{
			ret=EntityManager().Save(dto,out);
		}
		if(ret==1)
		{
			return Helper.Success();
		}
		else
		{
			return Helper.Error(out);
		}
    }



	/**
	 * 删除数据,多个RowID以上尖号分割
	 * @return 字符串
	 */
	public String DeleteBTWard()
    {
		String RowIDS=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "RowIDS"), "");
		if(RowIDS.isEmpty())
		{
			return Helper.Error("请传入要删除数据的RowID,多个以^分割!");
		}
		//分割主键
		String [] arr=RowIDS.split("^");
		//创建一个空对象
		BTWard dto=new BTWard();
		//out参数
		OutParam out=new OutParam();
		//循环删除数据
		for(int i=0;i<arr.length;i++)
		{
			HashParam hs=new HashParam();
			hs.Add("RowID",Convert.ToInt32(arr[i]));
			int ret=EntityManager().Remove(dto,hs,out,null,null);
			if(ret!=1)
			{
				return Helper.Error(out);
			}
		}
		return Helper.Success();
	}



	/**
	 * 查询数据,前台按表的属性名提交
	 * @return 字符串
	 */
	public String QryBTWard()
    {
		//预留的取前台参数代码
		//创建一个空对象
		BTWard dto=new BTWard();
		//参数
		List<ParamDto> para=new ArrayList<>();
		//sql连接符号
		List<String> joiner=new ArrayList<>();
		//sql比较符号
		List<String> operators=new ArrayList<>();
		//模糊查询
		String Filter=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "Filter"), "");
		//预留参数
		//RowID  
		String RowID=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "RowID"), "");
		//代码  
		String Code=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "Code"), "");
		//名称  
		String CName=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "CName"), "");
		//HIS对照码  
		String HISCode=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "HISCode"), "");
		//临床科室  
		String LocationDR=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "LocationDR"), "");
		//序号  
		String Sequence=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "Sequence"), "");
		//是否激活  {1:True,0:False}
		String Active=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "Active"), "");
		//      
		String PhoneNo=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "PhoneNo"), "");
		//模糊查询
		if(!Filter.isEmpty())
		{
			ParamDto p=null;
			//代码  
			p=new ParamDto();
			p.Key="Code";
			p.Value="%"+Filter+"%";
			para.add(p);
			joiner.add("or");
			operators.add("like");
			//名称  
			p=new ParamDto();
			p.Key="CName";
			p.Value="%"+Filter+"%";
			para.add(p);
			joiner.add("or");
			operators.add("like");
			//HIS对照码  
			p=new ParamDto();
			p.Key="HISCode";
			p.Value="%"+Filter+"%";
			para.add(p);
			joiner.add("or");
			operators.add("like");
			//      
			p=new ParamDto();
			p.Key="PhoneNo";
			p.Value="%"+Filter+"%";
			para.add(p);
			joiner.add("or");
			operators.add("like");
		}
		//调用查询
		String json=EntityManager().QueryAllWithFK(dto,para,"",true,-1,-1,"",joiner,operators);
		return json;
	}


}

实体示例

package LIS.Model.Entity;
import LIS.Core.CustomAttributes.*;
/**
*[功能描述:本代码由LIS内部代码生成工具生成,请不要手动修改,如要修改,请写修改变更记录]
*[创建者:LIS.Entity生成器]
*/
@UniqueAttribute(ColNames = "RowID")
@TableAttribute(Name="dbo.BT_Ward")
public class BTWard
{
	/**
	* RowID  
	*/
	@NotNullAttribute
	@IdAttribute(Name = "RowID")
	@LengthAttribute(MaxLen = 10)
	public int RowID;

	/**
	* 代码  
	*/
	@NotNullAttribute
	@LengthAttribute(MaxLen = 10)
	public String Code;

	/**
	* 名称  
	*/
	@LengthAttribute(MaxLen = 40)
	public String CName;

	/**
	* HIS对照码  
	*/
	@LengthAttribute(MaxLen = 20)
	public String HISCode;

	/**
	* 临床科室  
	*/
	@FrekeyAttribute(Name = "BTLocation", RefColumnName = "RowID", AssociaField = "CName")
	@LengthAttribute(MaxLen = 10)
	public int LocationDR;

	/**
	* 序号  
	*/
	@LengthAttribute(MaxLen = 10)
	public int Sequence;

	/**
	* 是否激活  {1:True,0:False}
	*/
	@LengthAttribute(MaxLen = 1)
	public boolean Active;

	/**
	*       
	*/
	@LengthAttribute(MaxLen = 20)
	public String PhoneNo;

}

生成之后投放网站
在这里插入图片描述

测试效果
在这里插入图片描述

然后发布到Linux,先把Linux上的JDK升级到JDK17,再更新程序

[BEGIN] 2023/11/10 20:40:45
[root@localhost ~]# tar -xzvf graalvm-jdk-17.0.9_linux-x64_bin.tar.gz
tar (child): graalvm-jdk-17.0.9_linux-x64_bin.tar.gz: Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
[root@localhost ~]# cd /
[root@localhost /]# tar -xzvf graalvm-jdk-17.0.9_linux-x64_bin.tar.gz
graalvm-jdk-17.0.9+11.1/license-information-user-manual.zip
graalvm-jdk-17.0.9+11.1/GRAALVM-README.md
graalvm-jdk-17.0.9+11.1/LICENSE.txt
graalvm-jdk-17.0.9+11.1/bin/gu
graalvm-jdk-17.0.9+11.1/lib/installer/installer.jar
graalvm-jdk-17.0.9+11.1/lib/installer/trufflejson.jar
graalvm-jdk-17.0.9+11.1/lib/installer/components/polyglot/.registry
graalvm-jdk-17.0.9+11.1/lib/installer/installer-ee.jar
graalvm-jdk-17.0.9+11.1/lib/installer/redline-rpm-1.2.10.jar
graalvm-jdk-17.0.9+11.1/lib/installer/slf4j-jdk4-1.7.30.jar
graalvm-jdk-17.0.9+11.1/lib/installer/slf4j-api-1.7.30.jar
graalvm-jdk-17.0.9+11.1/lib/installer/apache-commons-compress-1.21.jar
graalvm-jdk-17.0.9+11.1/lib/installer/bcprov-1.69-dist.jar
graalvm-jdk-17.0.9+11.1/lib/installer/bcpg-1.69-dist.jar
graalvm-jdk-17.0.9+11.1/lib/installer/gu_uln_key.asc
graalvm-jdk-17.0.9+11.1/lib/installer/components/licenses/.registry
graalvm-jdk-17.0.9+11.1/lib/installer/bin/gu
graalvm-jdk-17.0.9+11.1/lib/installer/components/org.graalvm.component
graalvm-jdk-17.0.9+11.1/lib/installer/components/org.graalvm.native-image.component
graalvm-jdk-17.0.9+11.1/bin/native-image-inspect
graalvm-jdk-17.0.9+11.1/bin/native-image
graalvm-jdk-17.0.9+11.1/bin/native-image-configure
graalvm-jdk-17.0.9+11.1/bin/polyglot
graalvm-jdk-17.0.9+11.1/bin/rebuild-images
graalvm-jdk-17.0.9+11.1/jmods/java.base.jmod
graalvm-jdk-17.0.9+11.1/languages/nfi-libffi/truffle-nfi-libffi.jar
graalvm-jdk-17.0.9+11.1/languages/nfi/builder/clibraries-libffi/libffi.a
graalvm-jdk-17.0.9+11.1/languages/nfi/builder/clibraries-libffi/include/ffi.h
graalvm-jdk-17.0.9+11.1/languages/nfi/builder/clibraries-libffi/include/ffitarget.h
graalvm-jdk-17.0.9+11.1/languages/nfi/builder/clibraries-libffi/include/svm_libffi.h
graalvm-jdk-17.0.9+11.1/languages/nfi/builder/clibraries-libffi/include/trufflenfi.h
graalvm-jdk-17.0.9+11.1/languages/nfi/builder/clibraries-none/.empty.h
graalvm-jdk-17.0.9+11.1/languages/nfi/builder/svm-none.jar
graalvm-jdk-17.0.9+11.1/languages/nfi/native-image.properties
graalvm-jdk-17.0.9+11.1/languages/nfi/truffle-nfi-none.jar
graalvm-jdk-17.0.9+11.1/languages/nfi/native-image-resources.filelist
graalvm-jdk-17.0.9+11.1/languages/nfi/truffle-nfi.jar
graalvm-jdk-17.0.9+11.1/languages/nfi/include/trufflenfi.h
graalvm-jdk-17.0.9+11.1/languages/nfi/builder/svm-libffi.jar
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libattach.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libawt.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libawt_headless.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libawt_xawt.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libdt_socket.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libextnet.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libfdlibm.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libfontmanager.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libinstrument.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libj2gss.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libj2pcsc.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libj2pkcs11.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libjaas.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libjava.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libjavajpeg.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libjawt.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libjdwp.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libjimage.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libjli.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libjpackageapplauncher.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libjpackageapplauncheraux.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libjsig.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libjsound.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libjsvml.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/liblcms.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libmanagement.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libmanagement_agent.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libmanagement_ext.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libmlib_image.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libnet.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libnio.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libprefs.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/librmi.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libsaproc.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libsctp.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libsplashscreen.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libsyslookup.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libverify.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libzip.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libattach.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libawt.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libawt_headless.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libawt_xawt.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libdt_socket.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libextnet.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libfdlibm.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libfontmanager.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libinstrument.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libj2gss.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libj2pcsc.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libj2pkcs11.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libjaas.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libjava.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libjavajpeg.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libjawt.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libjdwp.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libjimage.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libjli.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libjpackageapplauncher.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libjpackageapplauncheraux.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libjsig.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libjsound.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libjsvml.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/liblcms.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libmanagement.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libmanagement_agent.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libmanagement_ext.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libmlib_image.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libnet.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libnio.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libprefs.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/librmi.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libsaproc.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libsctp.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libsplashscreen.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libsyslookup.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libverify.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libzip.a
graalvm-jdk-17.0.9+11.1/lib/libtrufflenfi.so
graalvm-jdk-17.0.9+11.1/lib/graal/graal-processor.jar
graalvm-jdk-17.0.9+11.1/lib/graalvm/launcher-common.jar
graalvm-jdk-17.0.9+11.1/lib/graalvm/svm-enterprise-configure.jar
graalvm-jdk-17.0.9+11.1/lib/graalvm/jvmti-agent-base.jar
graalvm-jdk-17.0.9+11.1/lib/graalvm/svm-agent.jar
graalvm-jdk-17.0.9+11.1/lib/graalvm/svm-configure.jar
graalvm-jdk-17.0.9+11.1/lib/graalvm/svm-diagnostics-agent.jar
graalvm-jdk-17.0.9+11.1/lib/graalvm/svm-driver.jar
graalvm-jdk-17.0.9+11.1/lib/jvm.cfg
graalvm-jdk-17.0.9+11.1/lib/libjvmcicompiler.so
graalvm-jdk-17.0.9+11.1/lib/libnative-image-agent.so
graalvm-jdk-17.0.9+11.1/lib/libnative-image-diagnostics-agent.so
graalvm-jdk-17.0.9+11.1/lib/polyglot/polyglot-native-api.jar
graalvm-jdk-17.0.9+11.1/lib/polyglot/polyglot_types.h
graalvm-jdk-17.0.9+11.1/lib/polyglot/bin/polyglot
graalvm-jdk-17.0.9+11.1/lib/svm/bin/rebuild-images
graalvm-jdk-17.0.9+11.1/lib/svm/library-support.jar
graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/liblibchelper.a
graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/include/aarch64cpufeatures.h
graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/include/amd64cpufeatures.h
graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/include/amd64hotspotcpuinfo.h
graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/include/riscv64cpufeatures.h
graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/libjvm.a
graalvm-jdk-17.0.9+11.1/lib/svm/builder/lib/libreporterchelper.so
graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/liblibchelper.a
graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/include/aarch64cpufeatures.h
graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/include/amd64cpufeatures.h
graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/include/amd64hotspotcpuinfo.h
graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/include/riscv64cpufeatures.h
graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/libjvm.a
graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/libjitdebug.a
graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/include/jitdebug.h
graalvm-jdk-17.0.9+11.1/lib/svm/builder/debug/svmhelpers.py
graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/libjitdebug.a
graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/include/jitdebug.h
graalvm-jdk-17.0.9+11.1/lib/svm/debug/svmhelpers.py
graalvm-jdk-17.0.9+11.1/lib/svm/profile_inference_model/model.onnx
graalvm-jdk-17.0.9+11.1/lib/svm/profile_inference_model/preprocessing.onnx
graalvm-jdk-17.0.9+11.1/lib/svm/profile_inference_model/dataset.config
graalvm-jdk-17.0.9+11.1/lib/svm/adopted_profiles/jdk_profile.iprof
graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/libg1gc-cr.a
graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/libg1gc-ur.a
graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/libg1gc-musl-cr.a
graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/libg1gc-musl-ur.a
graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/include/sharedGCStructs.hpp
graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/libg1gc-cr.a
graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/libg1gc-ur.a
graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/libg1gc-musl-cr.a
graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/libg1gc-musl-ur.a
graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/include/sharedGCStructs.hpp
graalvm-jdk-17.0.9+11.1/lib/svm/graal-microservices.jar
graalvm-jdk-17.0.9+11.1/lib/svm/bin/native-image
graalvm-jdk-17.0.9+11.1/lib/svm/bin/native-image-configure
graalvm-jdk-17.0.9+11.1/lib/svm/builder/svm.jar
graalvm-jdk-17.0.9+11.1/lib/svm/builder/objectfile.jar
graalvm-jdk-17.0.9+11.1/lib/svm/builder/pointsto.jar
graalvm-jdk-17.0.9+11.1/lib/svm/builder/native-image-base.jar
graalvm-jdk-17.0.9+11.1/lib/svm/builder/svm.src.zip
graalvm-jdk-17.0.9+11.1/lib/svm/builder/svm-enterprise.jar
graalvm-jdk-17.0.9+11.1/lib/svm/macros/gu-launcher/native-image.properties
graalvm-jdk-17.0.9+11.1/lib/svm/macros/native-image-agent-library/native-image.properties
graalvm-jdk-17.0.9+11.1/lib/svm/macros/native-image-configure-launcher/native-image.properties
graalvm-jdk-17.0.9+11.1/lib/svm/macros/native-image-diagnostics-agent-library/native-image.properties
graalvm-jdk-17.0.9+11.1/lib/svm/macros/native-image-launcher/native-image.properties
graalvm-jdk-17.0.9+11.1/lib/svm/macros/polyglot-launcher/native-image.properties
graalvm-jdk-17.0.9+11.1/lib/svm/macros/polyglot-library/native-image.properties
graalvm-jdk-17.0.9+11.1/lib/svm/macros/polyglot-library/polynative-libpolyglot-macro.jar
graalvm-jdk-17.0.9+11.1/lib/svm/macros/truffle-language-library/native-image.properties
graalvm-jdk-17.0.9+11.1/lib/svm/macros/truffle/native-image.properties
graalvm-jdk-17.0.9+11.1/lib/truffle/truffle-dsl-processor.jar
graalvm-jdk-17.0.9+11.1/lib/truffle/truffle-tck.jar
graalvm-jdk-17.0.9+11.1/lib/truffle/truffle-api.jar
graalvm-jdk-17.0.9+11.1/lib/truffle/locator.jar
graalvm-jdk-17.0.9+11.1/tools/chromeinspector/chromeinspector.jar
graalvm-jdk-17.0.9+11.1/tools/chromeinspector/native-image.properties
graalvm-jdk-17.0.9+11.1/tools/coverage/truffle-coverage.jar
graalvm-jdk-17.0.9+11.1/tools/coverage/native-image.properties
graalvm-jdk-17.0.9+11.1/tools/dap/dap.jar
graalvm-jdk-17.0.9+11.1/tools/dap/native-image.properties
graalvm-jdk-17.0.9+11.1/tools/insight/insight.jar
graalvm-jdk-17.0.9+11.1/tools/insight/native-image.properties
graalvm-jdk-17.0.9+11.1/tools/insightheap/insight-heap.jar
graalvm-jdk-17.0.9+11.1/tools/insightheap/native-image.properties
graalvm-jdk-17.0.9+11.1/tools/lsp/lsp-api.jar
graalvm-jdk-17.0.9+11.1/tools/lsp/lsp.jar
graalvm-jdk-17.0.9+11.1/tools/lsp/native-image.properties
graalvm-jdk-17.0.9+11.1/tools/profiler/truffle-profiler.jar
graalvm-jdk-17.0.9+11.1/tools/profiler/native-image.properties
graalvm-jdk-17.0.9+11.1/tools/sandbox/graal-sandbox.jar
graalvm-jdk-17.0.9+11.1/tools/sandbox/native-image.properties
graalvm-jdk-17.0.9+11.1/release
graalvm-jdk-17.0.9+11.1/lib/modules
graalvm-jdk-17.0.9+11.1/lib/classlist
graalvm-jdk-17.0.9+11.1/lib/jexec
graalvm-jdk-17.0.9+11.1/lib/jrt-fs.jar
graalvm-jdk-17.0.9+11.1/lib/jspawnhelper
graalvm-jdk-17.0.9+11.1/lib/libjava.so
graalvm-jdk-17.0.9+11.1/lib/libjimage.so
graalvm-jdk-17.0.9+11.1/lib/libjli.so
graalvm-jdk-17.0.9+11.1/lib/libjsig.so
graalvm-jdk-17.0.9+11.1/lib/libnet.so
graalvm-jdk-17.0.9+11.1/lib/libnio.so
graalvm-jdk-17.0.9+11.1/lib/libverify.so
graalvm-jdk-17.0.9+11.1/lib/libzip.so
graalvm-jdk-17.0.9+11.1/lib/tzdb.dat
graalvm-jdk-17.0.9+11.1/lib/libawt.so
graalvm-jdk-17.0.9+11.1/lib/libawt_headless.so
graalvm-jdk-17.0.9+11.1/lib/libawt_xawt.so
graalvm-jdk-17.0.9+11.1/lib/libfontmanager.so
graalvm-jdk-17.0.9+11.1/lib/libjavajpeg.so
graalvm-jdk-17.0.9+11.1/lib/libjawt.so
graalvm-jdk-17.0.9+11.1/lib/libjsound.so
graalvm-jdk-17.0.9+11.1/lib/liblcms.so
graalvm-jdk-17.0.9+11.1/lib/libmlib_image.so
graalvm-jdk-17.0.9+11.1/lib/libsplashscreen.so
graalvm-jdk-17.0.9+11.1/lib/psfont.properties.ja
graalvm-jdk-17.0.9+11.1/lib/psfontj2d.properties
graalvm-jdk-17.0.9+11.1/lib/libinstrument.so
graalvm-jdk-17.0.9+11.1/lib/libmanagement.so
graalvm-jdk-17.0.9+11.1/lib/libprefs.so
graalvm-jdk-17.0.9+11.1/lib/librmi.so
graalvm-jdk-17.0.9+11.1/lib/libj2gss.so
graalvm-jdk-17.0.9+11.1/lib/libj2pcsc.so
graalvm-jdk-17.0.9+11.1/lib/libattach.so
graalvm-jdk-17.0.9+11.1/lib/ct.sym
graalvm-jdk-17.0.9+11.1/lib/libj2pkcs11.so
graalvm-jdk-17.0.9+11.1/lib/libsaproc.so
graalvm-jdk-17.0.9+11.1/lib/libsyslookup.so
graalvm-jdk-17.0.9+11.1/lib/libjsvml.so
graalvm-jdk-17.0.9+11.1/lib/libdt_socket.so
graalvm-jdk-17.0.9+11.1/lib/libjdwp.so
graalvm-jdk-17.0.9+11.1/lib/libmanagement_ext.so
graalvm-jdk-17.0.9+11.1/lib/libmanagement_agent.so
graalvm-jdk-17.0.9+11.1/lib/libextnet.so
graalvm-jdk-17.0.9+11.1/lib/libsctp.so
graalvm-jdk-17.0.9+11.1/lib/libjaas.so
graalvm-jdk-17.0.9+11.1/lib/src.zip
graalvm-jdk-17.0.9+11.1/lib/security/blocked.certs
graalvm-jdk-17.0.9+11.1/lib/security/cacerts
graalvm-jdk-17.0.9+11.1/lib/security/default.policy
graalvm-jdk-17.0.9+11.1/lib/security/public_suffix_list.dat
graalvm-jdk-17.0.9+11.1/lib/server/libjsig.so
graalvm-jdk-17.0.9+11.1/lib/server/libjvm.so
graalvm-jdk-17.0.9+11.1/lib/server/classes.jsa
graalvm-jdk-17.0.9+11.1/lib/jfr/default.jfc
graalvm-jdk-17.0.9+11.1/lib/jfr/profile.jfc
graalvm-jdk-17.0.9+11.1/conf/net.properties
graalvm-jdk-17.0.9+11.1/conf/sound.properties
graalvm-jdk-17.0.9+11.1/conf/logging.properties
graalvm-jdk-17.0.9+11.1/conf/sdp/sdp.conf.template
graalvm-jdk-17.0.9+11.1/conf/security/java.policy
graalvm-jdk-17.0.9+11.1/conf/security/java.security
graalvm-jdk-17.0.9+11.1/conf/security/policy/README.txt
graalvm-jdk-17.0.9+11.1/conf/security/policy/limited/default_US_export.policy
graalvm-jdk-17.0.9+11.1/conf/security/policy/limited/default_local.policy
graalvm-jdk-17.0.9+11.1/conf/security/policy/limited/exempt_local.policy
graalvm-jdk-17.0.9+11.1/conf/security/policy/unlimited/default_US_export.policy
graalvm-jdk-17.0.9+11.1/conf/security/policy/unlimited/default_local.policy
graalvm-jdk-17.0.9+11.1/conf/management/jmxremote.access
graalvm-jdk-17.0.9+11.1/conf/management/jmxremote.password.template
graalvm-jdk-17.0.9+11.1/conf/management/management.properties
graalvm-jdk-17.0.9+11.1/include/classfile_constants.h
graalvm-jdk-17.0.9+11.1/include/jni.h
graalvm-jdk-17.0.9+11.1/include/jvmti.h
graalvm-jdk-17.0.9+11.1/include/jvmticmlr.h
graalvm-jdk-17.0.9+11.1/include/jawt.h
graalvm-jdk-17.0.9+11.1/include/jdwpTransport.h
graalvm-jdk-17.0.9+11.1/include/linux/jni_md.h
graalvm-jdk-17.0.9+11.1/include/linux/jawt_md.h
graalvm-jdk-17.0.9+11.1/man/man1/java.1
graalvm-jdk-17.0.9+11.1/man/man1/keytool.1
graalvm-jdk-17.0.9+11.1/man/man1/rmiregistry.1
graalvm-jdk-17.0.9+11.1/man/man1/jrunscript.1
graalvm-jdk-17.0.9+11.1/man/man1/kinit.1
graalvm-jdk-17.0.9+11.1/man/man1/klist.1
graalvm-jdk-17.0.9+11.1/man/man1/ktab.1
graalvm-jdk-17.0.9+11.1/man/man1/jabswitch.1
graalvm-jdk-17.0.9+11.1/man/man1/jaccessinspector.1
graalvm-jdk-17.0.9+11.1/man/man1/jaccesswalker.1
graalvm-jdk-17.0.9+11.1/man/man1/javac.1
graalvm-jdk-17.0.9+11.1/man/man1/serialver.1
graalvm-jdk-17.0.9+11.1/man/man1/jhsdb.1
graalvm-jdk-17.0.9+11.1/man/man1/jar.1
graalvm-jdk-17.0.9+11.1/man/man1/jarsigner.1
graalvm-jdk-17.0.9+11.1/man/man1/javadoc.1
graalvm-jdk-17.0.9+11.1/man/man1/jcmd.1
graalvm-jdk-17.0.9+11.1/man/man1/jinfo.1
graalvm-jdk-17.0.9+11.1/man/man1/jmap.1
graalvm-jdk-17.0.9+11.1/man/man1/jps.1
graalvm-jdk-17.0.9+11.1/man/man1/jstack.1
graalvm-jdk-17.0.9+11.1/man/man1/jstat.1
graalvm-jdk-17.0.9+11.1/man/man1/jconsole.1
graalvm-jdk-17.0.9+11.1/man/man1/javap.1
graalvm-jdk-17.0.9+11.1/man/man1/jdeprscan.1
graalvm-jdk-17.0.9+11.1/man/man1/jdeps.1
graalvm-jdk-17.0.9+11.1/man/man1/jdb.1
graalvm-jdk-17.0.9+11.1/man/man1/jfr.1
graalvm-jdk-17.0.9+11.1/man/man1/jlink.1
graalvm-jdk-17.0.9+11.1/man/man1/jmod.1
graalvm-jdk-17.0.9+11.1/man/man1/jpackage.1
graalvm-jdk-17.0.9+11.1/man/man1/jshell.1
graalvm-jdk-17.0.9+11.1/man/man1/jstatd.1
graalvm-jdk-17.0.9+11.1/bin/java
graalvm-jdk-17.0.9+11.1/bin/keytool
graalvm-jdk-17.0.9+11.1/bin/rmiregistry
graalvm-jdk-17.0.9+11.1/bin/jrunscript
graalvm-jdk-17.0.9+11.1/bin/javac
graalvm-jdk-17.0.9+11.1/bin/serialver
graalvm-jdk-17.0.9+11.1/bin/jhsdb
graalvm-jdk-17.0.9+11.1/bin/jar
graalvm-jdk-17.0.9+11.1/bin/jarsigner
graalvm-jdk-17.0.9+11.1/bin/javadoc
graalvm-jdk-17.0.9+11.1/bin/jcmd
graalvm-jdk-17.0.9+11.1/bin/jinfo
graalvm-jdk-17.0.9+11.1/bin/jmap
graalvm-jdk-17.0.9+11.1/bin/jps
graalvm-jdk-17.0.9+11.1/bin/jstack
graalvm-jdk-17.0.9+11.1/bin/jstat
graalvm-jdk-17.0.9+11.1/bin/jconsole
graalvm-jdk-17.0.9+11.1/bin/javap
graalvm-jdk-17.0.9+11.1/bin/jdeprscan
graalvm-jdk-17.0.9+11.1/bin/jdeps
graalvm-jdk-17.0.9+11.1/bin/jdb
graalvm-jdk-17.0.9+11.1/bin/jfr
graalvm-jdk-17.0.9+11.1/bin/jimage
graalvm-jdk-17.0.9+11.1/bin/jlink
graalvm-jdk-17.0.9+11.1/bin/jmod
graalvm-jdk-17.0.9+11.1/bin/jpackage
graalvm-jdk-17.0.9+11.1/bin/jshell
graalvm-jdk-17.0.9+11.1/bin/jstatd
graalvm-jdk-17.0.9+11.1/legal/java.desktop/mesa3d.md
graalvm-jdk-17.0.9+11.1/legal/java.desktop/lcms.md
graalvm-jdk-17.0.9+11.1/legal/java.desktop/colorimaging.md
graalvm-jdk-17.0.9+11.1/legal/java.desktop/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.desktop/xwd.md
graalvm-jdk-17.0.9+11.1/legal/java.desktop/harfbuzz.md
graalvm-jdk-17.0.9+11.1/legal/java.desktop/jpeg.md
graalvm-jdk-17.0.9+11.1/legal/java.desktop/libpng.md
graalvm-jdk-17.0.9+11.1/legal/java.desktop/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.desktop/giflib.md
graalvm-jdk-17.0.9+11.1/legal/jdk.internal.opt/jopt-simple.md
graalvm-jdk-17.0.9+11.1/legal/jdk.internal.opt/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.internal.opt/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.crypto.cryptoki/pkcs11cryptotoken.md
graalvm-jdk-17.0.9+11.1/legal/jdk.crypto.cryptoki/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.crypto.cryptoki/pkcs11wrapper.md
graalvm-jdk-17.0.9+11.1/legal/jdk.crypto.cryptoki/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.xml/bcel.md
graalvm-jdk-17.0.9+11.1/legal/java.xml/jcup.md
graalvm-jdk-17.0.9+11.1/legal/java.xml/xerces.md
graalvm-jdk-17.0.9+11.1/legal/java.xml/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.xml/xalan.md
graalvm-jdk-17.0.9+11.1/legal/java.xml/dom.md
graalvm-jdk-17.0.9+11.1/legal/java.xml/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.dynalink/dynalink.md
graalvm-jdk-17.0.9+11.1/legal/jdk.dynalink/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.dynalink/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.smartcardio/pcsclite.md
graalvm-jdk-17.0.9+11.1/legal/java.smartcardio/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.smartcardio/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.javadoc/jqueryUI.md
graalvm-jdk-17.0.9+11.1/legal/jdk.javadoc/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.javadoc/jquery.md
graalvm-jdk-17.0.9+11.1/legal/jdk.javadoc/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.base/aes.md
graalvm-jdk-17.0.9+11.1/legal/java.base/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.base/icu.md
graalvm-jdk-17.0.9+11.1/legal/java.base/c-libutl.md
graalvm-jdk-17.0.9+11.1/legal/java.base/cldr.md
graalvm-jdk-17.0.9+11.1/legal/java.base/asm.md
graalvm-jdk-17.0.9+11.1/legal/java.base/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.base/public_suffix.md
graalvm-jdk-17.0.9+11.1/legal/java.base/unicode.md
graalvm-jdk-17.0.9+11.1/legal/java.logging/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.logging/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.management/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.management/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.internal.vm.ci/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.internal.vm.ci/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.compiler/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.compiler/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.instrument/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.instrument/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.jfr/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.jfr/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.unsupported/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.unsupported/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.datatransfer/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.datatransfer/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.prefs/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.prefs/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.transaction.xa/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.transaction.xa/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.sql/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.sql/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.management/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.management/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.internal.vm.compiler/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.internal.vm.compiler/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.security.sasl/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.security.sasl/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.naming/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.naming/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.rmi/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.rmi/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.management.rmi/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.management.rmi/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.net.http/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.net.http/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.scripting/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.scripting/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.security.jgss/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.security.jgss/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.sql.rowset/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.sql.rowset/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.xml.crypto/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.xml.crypto/santuario.md
graalvm-jdk-17.0.9+11.1/legal/java.xml.crypto/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.se/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.se/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.accessibility/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.accessibility/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.internal.jvmstat/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.internal.jvmstat/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.attach/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.attach/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.charsets/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.charsets/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.compiler/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.compiler/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.crypto.ec/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.crypto.ec/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.internal.ed/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.internal.ed/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.editpad/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.editpad/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.hotspot.agent/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.hotspot.agent/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.httpserver/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.httpserver/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.incubator.foreign/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.incubator.foreign/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.incubator.vector/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.incubator.vector/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.internal.le/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.internal.le/jline.md
graalvm-jdk-17.0.9+11.1/legal/jdk.internal.le/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.internal.vm.compiler.management/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.internal.vm.compiler.management/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.jartool/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.jartool/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.jcmd/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.jcmd/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.management.agent/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.management.agent/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.jconsole/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.jconsole/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.jdeps/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.jdeps/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.jdwp.agent/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.jdwp.agent/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.jdi/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.jdi/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.jlink/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.jlink/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.jpackage/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.jpackage/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.jshell/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.jshell/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.jsobject/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.jsobject/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.jstatd/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.jstatd/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.localedata/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.localedata/cldr.md
graalvm-jdk-17.0.9+11.1/legal/jdk.localedata/thaidict.md
graalvm-jdk-17.0.9+11.1/legal/jdk.localedata/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.management.jfr/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.management.jfr/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.naming.dns/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.naming.dns/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.naming.rmi/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.naming.rmi/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.net/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.net/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.nio.mapmode/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.nio.mapmode/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.random/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.random/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.sctp/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.sctp/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.security.auth/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.security.auth/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.security.jgss/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.security.jgss/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.unsupported.desktop/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.unsupported.desktop/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.xml.dom/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.xml.dom/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.zipfs/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.zipfs/COPYRIGHT
graalvm-jdk-17.0.9+11.1/jmods/jdk.internal.vm.compiler.management.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.crypto.ec.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.transaction.xa.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.jcmd.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.security.sasl.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.security.jgss.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.hotspot.agent.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.management.jfr.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.security.jgss.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.accessibility.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.management.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.net.http.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.management.agent.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.naming.dns.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.jlink.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.jpackage.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.management.rmi.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.jartool.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.net.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.jconsole.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.internal.jvmstat.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.naming.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.charsets.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.sql.rowset.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.sctp.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.internal.vm.ci.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.compiler.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.zipfs.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.jfr.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.editpad.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.xml.dom.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.jsobject.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.unsupported.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.smartcardio.jmod
graalvm-jdk-17.0.9+11.1/jmods/com.oracle.svm.extraimage_enterprise.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.scripting.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.naming.rmi.jmod
graalvm-jdk-17.0.9+11.1/jmods/org.graalvm.sdk.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.random.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.internal.ed.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.attach.jmod
graalvm-jdk-17.0.9+11.1/jmods/org.graalvm.js.scriptengine.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.jstatd.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.security.auth.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.sql.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.incubator.vector.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.rmi.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.jshell.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.internal.opt.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.datatransfer.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.desktop.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.compiler.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.management.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.jdi.jmod
graalvm-jdk-17.0.9+11.1/jmods/com.oracle.graal.graal_enterprise.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.nio.mapmode.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.httpserver.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.xml.crypto.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.javadoc.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.dynalink.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.localedata.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.internal.vm.compiler.jmod
graalvm-jdk-17.0.9+11.1/jmods/org.graalvm.locator.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.internal.vm.compiler.truffle.jfr.jmod
graalvm-jdk-17.0.9+11.1/jmods/org.graalvm.truffle.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.prefs.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.internal.le.jmod
graalvm-jdk-17.0.9+11.1/jmods/org.graalvm.extraimage.builder.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.xml.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.instrument.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.jdwp.agent.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.crypto.cryptoki.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.se.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.logging.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.jdeps.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.incubator.foreign.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.unsupported.desktop.jmod
[root@localhost /]# mkdir jdk17
[root@localhost /]# cp -rf /graalvm-jdk-17.0.9+11.1/* /jdk17
[root@localhost /]# vim /etc/profile
-bash: vim: command not found
[root@localhost /]# vi /etc/profile
[root@localhost /]# 
[root@localhost /]# 
[root@localhost /]# cat /etc/profile
# /etc/profile

# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc

# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.

pathmunge () {
    case ":${PATH}:" in
        *:"$1":*)
            ;;
        *)
            if [ "$2" = "after" ] ; then
                PATH=$PATH:$1
            else
                PATH=$1:$PATH
            fi
    esac
}


if [ -x /usr/bin/id ]; then
    if [ -z "$EUID" ]; then
        # ksh workaround
        EUID=`/usr/bin/id -u`
        UID=`/usr/bin/id -ru`
    fi
    USER="`/usr/bin/id -un`"
    LOGNAME=$USER
    MAIL="/var/spool/mail/$USER"
fi

# Path manipulation
if [ "$EUID" = "0" ]; then
    pathmunge /usr/sbin
    pathmunge /usr/local/sbin
else
    pathmunge /usr/local/sbin after
    pathmunge /usr/sbin after
fi

HOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=1000
if [ "$HISTCONTROL" = "ignorespace" ] ; then
    export HISTCONTROL=ignoreboth
else
    export HISTCONTROL=ignoredups
fi

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL

# By default, we want umask to get set. This sets it for login shell
# Current threshold for system reserved uid/gids is 200
# You could check uidgid reservation validity in
# /usr/share/doc/setup-*/uidgid file
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
    umask 002
else
    umask 022
fi

for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do
    if [ -r "$i" ]; then
        if [ "${-#*i}" != "$-" ]; then 
            . "$i"
        else
            . "$i" >/dev/null
        fi
    fi
done

unset i
unset -f pathmunge

export PGHOME=/usr/local/postgresql
export PGDATA=/data/pgdata/data
export PGLIB=/usr/local/postgresql/lib
export LC_ALL=en_US.UTF8
export LANG=en_US.UTF8
PATH=/usr/local/postgres/bin:$PATH
export PATH
export PATH=$PATH:/cmake-3.27.0-linux-x86_64/bin
source /opt/rh/devtoolset-9/enable
export JAVA_HOME=/jdk17
export PATH=$PATH:$JAVA_HOME/bin
[root@localhost /]# source /etc/profile
[root@localhost /]# java -version
java version "17.0.9" 2023-10-17 LTS
Java(TM) SE Runtime Environment Oracle GraalVM 17.0.9+11.1 (build 17.0.9+11-LTS-jvmci-23.0-b21)
Java HotSpot(TM) 64-Bit Server VM Oracle GraalVM 17.0.9+11.1 (build 17.0.9+11-LTS-jvmci-23.0-b21, mixed mode, sharing)
[root@localhost /]# bash /WebSrc/bin/startup.sh
Cannot find /WebSrc/bin/catalina.sh
The file is absent or does not have execute permission
This file is needed to run this program
[root@localhost /]# chmod +x /WebSrc/bin/startup.sh
[root@localhost /]# chmod +x /WebSrc/bin/shutdown.sh
[root@localhost /]# chmod +x /WebSrc/bin/catalina.sh
[root@localhost /]# chmod -R +777 /WebSrc
[root@localhost /]# bash /WebSrc/bin/startup.sh
Using CATALINA_BASE:   /WebSrc
Using CATALINA_HOME:   /WebSrc
Using CATALINA_TMPDIR: /WebSrc/temp
Using JRE_HOME:        /jdk17
Using CLASSPATH:       /WebSrc/bin/bootstrap.jar:/WebSrc/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.

在这里插入图片描述

测试
在这里插入图片描述

log4j写的日志
在这里插入图片描述
脚本化的体现
在这里插入图片描述

至此,框架开始成体系,借助了一下现有静态资源测试,谁识货就卖给谁,包括我自己。不要给我谈什么spring,十年前我刚出来就是spring的狂热粉丝,极力推荐spring的人,当时和领导爬山我还各种给他介绍spring,ioc,aop这些。后面实践证明对服务型系统根本用不上,spring不可谓不精美,但是太庞大,适合产品型软件。虽然不用spring,但是容器解耦的理念框架还是离不开,我还是实现了微型容器供系统使用。也不要吹什么微服务,你能有多微,有我这每个脚本改了立马生效微吗?也不要提什么云、容器,发布而已。没有华丽的api文档,没有高大上的PPT介绍,有的只是朴实无华结构和api,和为开发便捷性和低成本的考虑。如果谁和我的目标契合,留言联系我。反互联网常规套路,在服务型软件行业取得优势。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1194131.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言实现给出一位数不大于7位的整型数字,取整数从右端开始的4~7位数字

完整代码&#xff1a; // 给出一位数不大于7位的整型数字&#xff0c;取整数从右端开始的4&#xff5e;7位数字 //就是一个数为abcdefg&#xff0c;取它从右端开始的4&#xff5e;7位数字&#xff0c;就为dcba //如果位数不足7位时&#xff0c;会在数字高位补0 //例如一个数为…

leetcode 62

leetcode 62 题目 解题思路 class Solution { public:int uniquePaths(int m, int n) {vector<vector<int>> f(m, vector<int>(n));for(int i0; i<m; i){f[i][0] 1;}for(int j0; j<n; j){f[0][j] 1;}for(int i1; i<m; i){for(int j1; j<n; j){…

如何记录血压的波动情况

import pandas as pd from plotnine import * import matplotlib.pyplot as plt plt.rcParams[font.sans-serif] [Microsoft YaHei] 记录时间(time)、收缩压(SBP)、舒张压(DBP)&#xff1a; df pd.DataFrame({ time: [2023-11-01 08:30, 2023-11-02 21:00, 2023-11-0…

【星海随笔】SDN neutron (一)

一、SDN的原理&#xff1a; 控制平面与数据平面分离&#xff1a;传统网络中&#xff0c;网络设备同时承担控制和数据转发功能&#xff0c;而SDN将这两个功能分离&#xff0c;使得网络控制集中在一个中心控制器上。 中心控制器&#xff1a;SDN架构中的中心控制器负责网络的全局…

【小黑送书—第五期】>>《MATLAB科学计算从入门到精通》

从代码到函数&#xff0c;从算法到实战&#xff0c;从问题到应用&#xff0c;由浅入深掌握科学计算方法&#xff0c;高效解决实际问题。 从代码到函数&#xff0c;掌握多种经典算法 跨越多个领域&#xff0c;精通各类科学计算 多种应用实例&#xff0c;高效解决实际问题 今天给…

【数据结构】Lambda

⭐ 作者&#xff1a;小胡_不糊涂 &#x1f331; 作者主页&#xff1a;小胡_不糊涂的个人主页 &#x1f4c0; 收录专栏&#xff1a;浅谈数据结构 &#x1f496; 持续更文&#xff0c;关注博主少走弯路&#xff0c;谢谢大家支持 &#x1f496; Lambda表达式 1. 背景1.1 语法1.2 函…

零基础必知的Python简介!

文章目录 前言1.Python 简介2.Python 发展历史3.Python 特点3.为什么是Python而不是其他语言&#xff1f;4.Python的种类总结关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python…

sqli-bypass wp

sqli-bypass靶场 level 1 尝试注入点 1 ,1&#xff0c;1,1",1"" 》存在字符型单引号注入 id1and(1)-- >提示存在sql注入 bypass and、()、--都可能存在被屏蔽掉 尝试#代替-- id1and(1)%23 》 正常回显&#xff0c;说明–被屏蔽了&#xff0c;and&#xf…

相机标定:张正友标定原理

本文来自公众号“AI大道理” —————— 计算机视觉的源头是相机&#xff0c;因此我们有必要对相机有所了解。 原始相机拍摄的图像一般都会有所畸变&#xff0c;导致画面和实际观测的有所排查&#xff0c;为了让相机拍摄的图像和肉眼观察的一致&#xff0c;就需要进行相机标…

双网卡多网卡时win11如何设置网卡优先级

背景&#xff1a; 电脑需要同时使用多个网卡&#xff0c;一个用于被远程、另一个用于打开网页。 电脑打开网页时&#xff0c;走的是哪个网卡&#xff0c;是根据网卡优先级来的。 打开控制面板、网络和Internet、网络和共享中心 点击左侧 更改适配器设置。我这里可见两个网卡…

C语言—统计从键盘输入的一行英文句子的字符个数

流程图 代码 #include <stdio.h>int main() {int count0;printf("请输入英文字符&#xff0c;回车确认&#xff1a;");while (getchar()!\n){count count 1;}printf("共输入%d个字符\n", count);system("pause");return 0; }请输入英文字…

Git的安装,简介以及常用命令【超详细】

目录 一. Git简介 分布式特点 优缺点 Git 与 SVN 区别 二. Git安装 三. Git常用命令 四. Git的文件状态 1.文件状态 2.工作区域 一. Git简介 Git 是一个开源的分布式版本控制系统&#xff0c;可以有效、高速地处理从很小到非常大的项目版本管理。 也是Linus Torvalds…

粘性定位-最下面怎么出现留白

问题&#xff1a;出现了留白 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Document</title…

网格变形算法

网格变形 需求分析技术分析 需求分析 根据几何模型上的几个特征点&#xff0c;对几何模型进行变形。比如 技术分析 把几何模型使用三角面片表示&#xff0c;然后通过网格映射变形进行实现。关于网格这块有本经典的书可以参考&#xff0c;《ploygon mesh processing》。上面…

海外跨境电商商城源码,开启多语言多货币多商家入驻的电商新时代!

尊敬的CSDN用户们&#xff0c;你们好!我们很高兴地向您介绍一款引领未来电商潮流的全新产品——海外跨境电商商城源码!这款源码将为您打开多语言、多货币、多商家入驻的电商新时代&#xff0c;让您轻松打造出属于自己的跨境电商平台! 一、多语言支持&#xff0c;轻松拓展全球市…

创建一个小表表空间A。一个大表表空间B.并创建一个用户B1默认表空间为B。

目录 ​编辑 1、创建小表表空间 A 2、创建大表表空间 B 3、创建用户 B1 并将其默认表空间设置为 B 4、授权给用户 B1 的权限 1、创建小表表空间 A CREATE TABLESPACE A DATAFILE /u01/app/oracle/oradata/orcl/datafile_A.dbf SIZE 10M; 2、创建大表表空间 B 这个时间会略…

数据库-MySQL之数据库必知必会1-9章

检索数据 1.检索不重复的行 从 Customers 表中检索所有的 ID select DISTINCT cust_id from Customers;DISTINCT表示去掉重复的行 2.限制结果-分页 SELECT语句返回所有匹配的行&#xff0c;它们可能是指定表中的每个行。为了返回第一行或前几行&#xff0c;可使用LIMIT子句。…

CSRF(跨站请求伪造)攻击演示

目录 CSRF(跨站请求伪造)攻击演示CSRF 是什么CSRF 演示项目代码CSRF 演示过程服务启动演示 CSRF(跨站请求伪造)攻击演示 CSRF 是什么 CSRF&#xff08;Cross-Site Request Forgery&#xff09;跨站请求伪造&#xff0c;是一种网络安全攻击&#xff0c;其目标是利用被攻击者在…

开源跨平台绘图软件draw.io Mac/Win免费下载:让创意无限飞

你是否曾经遇到过在创作时&#xff0c;因为缺乏合适的绘图工具而无法充分表达你的想法&#xff1f;或者在团队项目中&#xff0c;因为沟通障碍而无法有效地进行视觉呈现&#xff1f;现在&#xff0c;让我们一起探索一个全新的开源跨平台绘图软件 - draw.io。 draw.io是一款完全…

非常好用的组件库【semi.design】

文章目录 前言semi.design是什么&#xff1f;怎么使用&#xff1f;设计稿转代码后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;前端系列文章 &#x1f431;‍&#x1f453;博主在前端领域还有很多知识和技术需要掌握&#xff0c;正在不…