JRT高效率开发

得益于前期的基础投入,借助代码生成的加持,本来计划用一周实现质控物维护界面,实际用来四小时左右完成质控物维护主体,效率大大超过预期。

JRT从设计之初就是为了证明Spring打包模式不适合软件服务模式,觉得Spring打包模式开发效率太低、维护不现实、做不到分钟级别的需求响应。从开发环境、部署、脚本化、码表、代码生成、打印导出都用java实现等都是优秀考虑的效率。

质控物是下面这个界面,涉及增删改数据9个表,查树三个表,工作量自己估计,别看表多,增删改查的功能点多,基于JRT、实际写的代码不多,都是用生成代码加级联查询组装的。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
代码结构,没多余概念,只有界面和后台
在这里插入图片描述

主体后台-可以看后台了解JRT推荐的业务范式

import JRT.Core.CustomAttributes.Trans;
import JRT.Core.Dto.OutValue;
import JRT.Core.Util.ReflectUtil;
import JRTBLLBase.BaseHttpHandler;
import JRTBLLBase.Helper;
import JRT.Core.Dto.HashParam;
import JRT.Core.Dto.ParamDto;
import JRT.Core.Dto.OutParam;
import JRT.Model.Entity.*;
import JRT.Core.Util.Convert;
import JRT.Core.MultiPlatform.JRTContext;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;/**
*由代码生成器生成的后台代码
*/
public class ashBTQCMaterial extends BaseHttpHandler {/*** 得到仪器树* @return*/public String GetMachineTree() throws Exception{List<MachineTreeDto> retList=new ArrayList<>();//得到用户可以访问的工作组List<SYSUserRole> roleList=EntityManager().FindByColVal(SYSUserRole.class,"UserDR",UserLogin().UserID);if(roleList!=null&&roleList.size()>0){HashMap hasOutWG=new HashMap();for(SYSUserRole role:roleList){//每个工作组只输出一次if(hasOutWG.containsKey(role.WorkGroupDR)){continue;}hasOutWG.put(role.WorkGroupDR,true);//工作组树节点MachineTreeDto wgTree=new MachineTreeDto();wgTree.RowID=role.WorkGroupDR;wgTree.id="WG-"+role.WorkGroupDR;BTWorkGroup wgDto=EntityManager().DolerGet(BTWorkGroup.class,role.WorkGroupDR);wgTree.text=wgDto.CName;wgTree.children=new ArrayList<>();wgTree.Type="WG";retList.add(wgTree);//查询所有工作小组List<BTWorkGroupMachine> wgmList=EntityManager().FindByColVal(BTWorkGroupMachine.class,"WorkGroupDR",role.WorkGroupDR);if(wgmList!=null&&wgmList.size()>0){for(BTWorkGroupMachine wgm:wgmList){//工作小组树节点MachineTreeDto wgmTree=new MachineTreeDto();wgmTree.RowID=wgm.RowID;wgmTree.id="WGM-"+wgm.RowID;wgmTree.text=wgm.CName;wgmTree.children=new ArrayList<>();wgmTree.Type="WGM";wgTree.children.add(wgmTree);//查询工作小组下的所有仪器List<BTMIMachineParameter> machList=EntityManager().FindByColVal(BTMIMachineParameter.class,"WorkGroupMachineDR",wgm.RowID);if(machList!=null&&machList.size()>0){for(BTMIMachineParameter mi:machList){//仪器树节点MachineTreeDto miTree=new MachineTreeDto();miTree.RowID=mi.RowID;miTree.id="MI-"+mi.RowID;miTree.text=mi.CName;miTree.Type="MI";wgmTree.children.add(miTree);}}}}}}//删除没有仪器的节点DealNoMachineTree(retList);return Helper.Object2Json(retList);}/*** 保存数据,前台按表的属性名提交* @return 字符串*/@Transpublic String SaveBTQCMaterial() throws Exception{BTQCMaterial dto=new BTQCMaterial();//主键  dto.RowID=Helper.ValidParam(JRTContext.GetRequest(Request, "RowID"), dto.RowID);//代码  dto.Code=Helper.ValidParam(JRTContext.GetRequest(Request, "Code"), dto.Code);//名称  dto.CName=Helper.ValidParam(JRTContext.GetRequest(Request, "CName"), dto.CName);//仪器  dto.MachineDR=Helper.ValidParam(JRTContext.GetRequest(Request, "MachineDR"), dto.MachineDR);//浓度数  dto.Levels=Helper.ValidParam(JRTContext.GetRequest(Request, "Levels"), dto.Levels);//波长  dto.WaveLength=Helper.ValidParam(JRTContext.GetRequest(Request, "WaveLength"), dto.WaveLength);//是否自动入库  {1:true,0:false}dto.AutoSave=Helper.ValidParam(JRTContext.GetRequest(Request, "AutoSave"), dto.AutoSave);//说明  dto.Remark=Helper.ValidParam(JRTContext.GetRequest(Request, "Remark"), dto.Remark);//序号  dto.Sequence=Helper.ValidParam(JRTContext.GetRequest(Request, "Sequence"), dto.Sequence);//激活  {1:true,0:false}dto.Active=Helper.ValidParam(JRTContext.GetRequest(Request, "Active"), dto.Active);//是否覆盖数据  {1:true,0:false}dto.IsOverWriteData=Helper.ValidParam(JRTContext.GetRequest(Request, "IsOverWriteData"), dto.IsOverWriteData);//不允许日间质控  {1:true,0:false}dto.NotAllowDay=Helper.ValidParam(JRTContext.GetRequest(Request, "NotAllowDay"), dto.NotAllowDay);//日间质控没做不显示  {1:true,0:false}dto.NotShowNullDay=Helper.ValidParam(JRTContext.GetRequest(Request, "NotShowNullDay"), dto.NotShowNullDay);OutValue key=new OutValue();int ret=0;//更新if(dto.RowID>0){ret=EntityManager().Update(dto,null, ErrRet(), null, null, null);}//插入数据else{ret=EntityManager().Save(dto,key,ErrRet());if(ret==1) {for (int i = 0; i < dto.Levels; i++) {BTQCMaterialLevel levDto = new BTQCMaterialLevel();levDto.CName = "浓度" + (i + 1);levDto.Color = "";levDto.LevelNo = i + 1;levDto.MaterialDR = dto.RowID;EntityManager().Save(levDto,key,ErrRet());}}else{throw new Exception(Err.GetString());}}if(ret==1){return Helper.Success();}else{return Helper.Error();}}/*** 删除数据,多个RowID以上尖号分割* @return 字符串*/@Transpublic String DeleteBTQCMaterial() throws Exception{String RowIDS=Helper.ValidParam(JRTContext.GetRequest(Request, "RowIDS"), "");if(RowIDS.isEmpty()){return Helper.Error("请传入要删除数据的RowID,多个以^分割!");}//分割主键String [] arr=RowIDS.split("^");//out参数OutParam out=new OutParam();//循环删除数据for(int i=0;i<arr.length;i++){int id = Convert.ToInt32(arr[i]);//删除质控浓度EntityManager().RemoveByColVal(BTQCMaterialLevel.class, "MaterialDR", id);//删除质控标识EntityManager().RemoveByColVal(BTQCMachineQC.class, "MaterialDR", id);//删除质控规则EntityManager().RemoveByColVal(BTQCMaterialRules.class, "MaterialDR", id);int ret=EntityManager().RemoveById(BTQCMaterial.class,id,out);if(ret!=1){return Helper.Error(out);}}return Helper.Success();}/*** 查询选择树的仪器* @return 字符串*/public String QrySelectMachine() throws Exception {List<BTMIMachineParameter> retist = new ArrayList<>();//工作组String WorkGroupDR = Helper.ValidParam(JRTContext.GetRequest(Request, "WorkGroupDR"), "");//工作小组String WorkGroupMachineDR = Helper.ValidParam(JRTContext.GetRequest(Request, "WorkGroupMachineDR"), "");//仪器String MachineDR = Helper.ValidParam(JRTContext.GetRequest(Request, "MachineDR"), "");//选择工作组if(!WorkGroupDR.isEmpty()) {//查工作小组List<BTWorkGroupMachine> wgmList=EntityManager().FindByColVal(BTWorkGroupMachine.class,"WorkGroupDR",Integer.valueOf(WorkGroupDR));if(wgmList!=null&&wgmList.size()>0){for(BTWorkGroupMachine wgm:wgmList){//查仪器List<BTMIMachineParameter> miList=EntityManager().FindByColVal(BTMIMachineParameter.class,"WorkGroupMachineDR",wgm.RowID);retist.addAll(miList);}}}//选择工作小组else if(!WorkGroupMachineDR.isEmpty()) {//查仪器List<BTMIMachineParameter> miList=EntityManager().FindByColVal(BTMIMachineParameter.class,"WorkGroupMachineDR",Integer.valueOf(WorkGroupMachineDR));retist.addAll(miList);}//选择仪器else if(!MachineDR.isEmpty()) {BTMIMachineParameter mi=EntityManager().DolerGet(BTMIMachineParameter.class,Integer.valueOf(MachineDR));retist.add(mi);}return Helper.Object2Json(retist);}/*** 查询数据,前台按表的属性名提交* @return 字符串*/public String QryBTQCMaterial() throws Exception{List<BTQCMaterialDto> retlist=new ArrayList<>();//工作组String WorkGroupDR=Helper.ValidParam(JRTContext.GetRequest(Request, "WorkGroupDR"), "");//工作小组String WorkGroupMachineDR=Helper.ValidParam(JRTContext.GetRequest(Request, "WorkGroupMachineDR"), "");//仪器String MachineDR=Helper.ValidParam(JRTContext.GetRequest(Request, "MachineDR"), "");//存仪器List<BTMIMachineParameter> machList=new ArrayList<>();//选择工作组if(!WorkGroupDR.isEmpty()) {//查工作小组List<BTWorkGroupMachine> wgmList=EntityManager().FindByColVal(BTWorkGroupMachine.class,"WorkGroupDR",Integer.valueOf(WorkGroupDR));if(wgmList!=null&&wgmList.size()>0){for(BTWorkGroupMachine wgm:wgmList){//查仪器List<BTMIMachineParameter> miList=EntityManager().FindByColVal(BTMIMachineParameter.class,"WorkGroupMachineDR",wgm.RowID);machList.addAll(miList);}}}//选择工作小组else if(!WorkGroupMachineDR.isEmpty()) {//查仪器List<BTMIMachineParameter> miList=EntityManager().FindByColVal(BTMIMachineParameter.class,"WorkGroupMachineDR",Integer.valueOf(WorkGroupMachineDR));machList.addAll(miList);}//选择仪器else if(!MachineDR.isEmpty()) {BTMIMachineParameter mi=EntityManager().DolerGet(BTMIMachineParameter.class,Integer.valueOf(MachineDR));machList.add(mi);}if(machList.size()>0){for(BTMIMachineParameter mi:machList){List<BTQCMaterialDto> miMats=EntityManager().FindByColVal(BTQCMaterialDto.class,"MachineDR",mi.RowID);if(miMats!=null&&miMats.size()>0) {for(BTQCMaterialDto one:miMats){one.WorkGroupMachineDR=mi.WorkGroupMachineDR;BTWorkGroupMachine wgm=EntityManager().DolerGet(BTWorkGroupMachine.class,mi.WorkGroupMachineDR);one.WorkGroupMachineName=wgm.CName;one.WorkGroupDR=wgm.WorkGroupDR;BTWorkGroup wg=EntityManager().DolerGet(BTWorkGroup.class,wgm.WorkGroupDR);one.WorkGroupName=wg.CName;one.MachineName=mi.CName;}retlist.addAll(miMats);}}}return Helper.Object2Json(retlist);}/*** 保存数据,前台按表的属性名提交* @return 字符串*/public String SaveBTQCMaterialTestCode() throws Exception{BTQCMaterialTestCode dto=new BTQCMaterialTestCode();//主键dto.RowID=Helper.ValidParam(JRTContext.GetRequest(Request, "RowID"), dto.RowID);//质控物dto.MaterialDR=Helper.ValidParam(JRTContext.GetRequest(Request, "MaterialDR"), dto.MaterialDR);//项目dto.TestCodeDR=Helper.ValidParam(JRTContext.GetRequest(Request, "TestCodeDR"), dto.TestCodeDR);//浓度dto.LevelNo=Helper.ValidParam(JRTContext.GetRequest(Request, "LevelNo"), dto.LevelNo);//开始日期dto.StartDate=Helper.ValidParam(JRTContext.GetRequest(Request, "StartDate"), dto.StartDate);//靶子dto.Mean=Helper.ValidParam(JRTContext.GetRequest(Request, "Mean"), dto.Mean);//标准差dto.SD=Helper.ValidParam(JRTContext.GetRequest(Request, "SD"), dto.SD);//设置CVdto.SetCV=Helper.ValidParam(JRTContext.GetRequest(Request, "SetCV"), dto.SetCV);//目标CVdto.TargetCV=Helper.ValidParam(JRTContext.GetRequest(Request, "TargetCV"), dto.TargetCV);//质控品批号dto.LotNo=Helper.ValidParam(JRTContext.GetRequest(Request, "LotNo"), dto.LotNo);//质控物厂家dto.MatManufacturer=Helper.ValidParam(JRTContext.GetRequest(Request, "MatManufacturer"), dto.MatManufacturer);//厂家均值dto.ManufacturerMean=Helper.ValidParam(JRTContext.GetRequest(Request, "ManufacturerMean"), dto.ManufacturerMean);//厂家标准差dto.ManufacturerSD=Helper.ValidParam(JRTContext.GetRequest(Request, "ManufacturerSD"), dto.ManufacturerSD);//试剂批号dto.RgLot=Helper.ValidParam(JRTContext.GetRequest(Request, "RgLot"), dto.RgLot);//试剂厂家dto.RgManufacturer=Helper.ValidParam(JRTContext.GetRequest(Request, "RgManufacturer"), dto.RgManufacturer);//测试方法dto.TestMethod=Helper.ValidParam(JRTContext.GetRequest(Request, "TestMethod"), dto.TestMethod);//计算类型dto.CalcType=Helper.ValidParam(JRTContext.GetRequest(Request, "CalcType"), dto.CalcType);//精度dto.Precision=Helper.ValidParam(JRTContext.GetRequest(Request, "Precision"), dto.Precision);//稀释倍数dto.Dilutions=Helper.ValidParam(JRTContext.GetRequest(Request, "Dilutions"), dto.Dilutions);//说明dto.Remark=Helper.ValidParam(JRTContext.GetRequest(Request, "Remark"), dto.Remark);//浓度单位dto.LevelUnit=Helper.ValidParam(JRTContext.GetRequest(Request, "LevelUnit"), dto.LevelUnit);//CV来源dto.CVSource=Helper.ValidParam(JRTContext.GetRequest(Request, "CVSource"), dto.CVSource);//生产日期dto.ProductDate=Helper.ValidParam(JRTContext.GetRequest(Request, "ProductDate"), dto.ProductDate);//有效日期dto.ExpiryDate=Helper.ValidParam(JRTContext.GetRequest(Request, "ExpiryDate"), dto.ExpiryDate);//关闭日期dto.ClosingDate=Helper.ValidParam(JRTContext.GetRequest(Request, "ClosingDate"), dto.ClosingDate);//校正液批次dto.AmendLiquidLot=Helper.ValidParam(JRTContext.GetRequest(Request, "AmendLiquidLot"), dto.AmendLiquidLot);//主波长dto.WaveLengthMian=Helper.ValidParam(JRTContext.GetRequest(Request, "WaveLengthMian"), dto.WaveLengthMian);//波长dto.WaveLength=Helper.ValidParam(JRTContext.GetRequest(Request, "WaveLength"), dto.WaveLength);//生效日期dto.RgEffectiveDate=Helper.ValidParam(JRTContext.GetRequest(Request, "RgEffectiveDate"), dto.RgEffectiveDate);//校准液有效期dto.AmendLiquidDate=Helper.ValidParam(JRTContext.GetRequest(Request, "AmendLiquidDate"), dto.AmendLiquidDate);//校准液dto.AmendLiquid=Helper.ValidParam(JRTContext.GetRequest(Request, "AmendLiquid"), dto.AmendLiquid);//偏离图SDdto.DeviationRatioSD=Helper.ValidParam(JRTContext.GetRequest(Request, "DeviationRatioSD"), dto.DeviationRatioSD);//规则说明dto.RuleRemark=Helper.ValidParam(JRTContext.GetRequest(Request, "RuleRemark"), dto.RuleRemark);//序号dto.Sequence=Helper.ValidParam(JRTContext.GetRequest(Request, "Sequence"), dto.Sequence);//激活  {1:true,0:false}dto.Active=Helper.ValidParam(JRTContext.GetRequest(Request, "Active"), dto.Active);//计算靶值dto.FloatMean=Helper.ValidParam(JRTContext.GetRequest(Request, "FloatMean"), dto.FloatMean);//计算标准差dto.FloatSD=Helper.ValidParam(JRTContext.GetRequest(Request, "FloatSD"), dto.FloatSD);//累计总数dto.AccSum=Helper.ValidParam(JRTContext.GetRequest(Request, "AccSum"), dto.AccSum);//累计均值dto.AccMean=Helper.ValidParam(JRTContext.GetRequest(Request, "AccMean"), dto.AccMean);//累计标准差dto.AccSD=Helper.ValidParam(JRTContext.GetRequest(Request, "AccSD"), dto.AccSD);//在控个数dto.InControlNum=Helper.ValidParam(JRTContext.GetRequest(Request, "InControlNum"), dto.InControlNum);//在控均值dto.InControlMean=Helper.ValidParam(JRTContext.GetRequest(Request, "InControlMean"), dto.InControlMean);//在控标准差dto.InControlSD=Helper.ValidParam(JRTContext.GetRequest(Request, "InControlSD"), dto.InControlSD);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 DeleteBTQCMaterialTestCode() throws Exception{String RowIDS=Helper.ValidParam(JRTContext.GetRequest(Request, "RowIDS"), "");if(RowIDS.isEmpty()){return Helper.Error("请传入要删除数据的RowID,多个以^分割!");}//分割主键String [] arr=RowIDS.split("^");//out参数OutParam out=new OutParam();//循环删除数据for(int i=0;i<arr.length;i++){int ret=EntityManager().RemoveById(BTQCMaterialTestCode.class,Convert.ToInt32(arr[i]),out);if(ret!=1){return Helper.Error(out);}}return Helper.Success();}/*** 查询数据,前台按表的属性名提交* @return 字符串*/public String QryBTQCMaterialTestCode() throws Exception{//分页int pageSize = Helper.ValidParam(JRT.Core.MultiPlatform.JRTContext.GetRequest(Request, "rows"), -1);int pageIndex = Helper.ValidParam(JRT.Core.MultiPlatform.JRTContext.GetRequest(Request, "page"), -1);//质控物int MaterialDR=Helper.ValidParam(JRTContext.GetRequest(Request, "MaterialDR"), 0);//按项目和浓度筛选String TestCodeDR=Helper.ValidParam(JRTContext.GetRequest(Request, "TestCodeDR"), "");String LevelNo=Helper.ValidParam(JRTContext.GetRequest(Request, "LevelNo"), "");//筛选String Filter=Helper.ValidParam(JRTContext.GetRequest(Request, "Filter"), "");//质控浓度数据List<BTQCMaterialLevel> levList=EntityManager().FindByColVal(BTQCMaterialLevel.class,"MaterialDR",MaterialDR);HashParam hs=new HashParam();hs.Add("MaterialDR",MaterialDR);if(!TestCodeDR.isEmpty()){hs.Add("TestCodeDR",Convert.ToInt32(TestCodeDR));}if(!LevelNo.isEmpty()){hs.Add("LevelNo",Convert.ToInt32(LevelNo));}OutValue totalNum=new OutValue();//分页查询List<BTQCMaterialTestCodeDto> dataList=EntityManager().FindAll(BTQCMaterialTestCodeDto.class,hs,"StartDate desc",pageSize,pageIndex,"",null,null,totalNum);List<BTQCMaterialTestCodeDto> retList=new ArrayList<>();if(dataList!=null&&dataList.size()>0){for(BTQCMaterialTestCodeDto one:dataList){one.LevelNoName="";for(BTQCMaterialLevel lev:levList){if(lev.LevelNo==one.LevelNo){one.LevelNoName=lev.CName;}}//项目数据BTTestCode tsDto=EntityManager().DolerGet(BTTestCode.class,one.TestCodeDR);one.TestCodeCode=tsDto.Code;one.TestCodeDR=tsDto.RowID;one.TestCodeSynonym=tsDto.Synonym;one.TestCodeName=tsDto.CName;boolean isPerData=false;if(!Filter.isEmpty()&&one.LevelNoName.contains(Filter)){isPerData=true;}if(!Filter.isEmpty()&&one.TestCodeName.contains(Filter)){isPerData=true;}if(!Filter.isEmpty()&&one.TestCodeCode.equals(Filter)){isPerData=true;}if(!Filter.isEmpty()&&one.LotNo.equals(Filter)){isPerData=true;}if(!Filter.isEmpty()&&one.RgLot.equals(Filter)){isPerData=true;}if(!Filter.isEmpty()&&one.Remark.contains(Filter)){isPerData=true;}if(!Filter.isEmpty()&&one.MatManufacturer.equals(Filter)){isPerData=true;}if(!Filter.isEmpty()&&one.RgManufacturer.equals(Filter)){isPerData=true;}if(Filter.isEmpty()||isPerData==true){retList.add(one);}}}return Helper.MakeTotalJson(retList,totalNum);}/*** 查询能够开通的项目或者已经开通的项目* @return*/public String QueryOpenTestCode() throws Exception{//查是否有开通项目boolean HasOpen=Helper.ValidParam(JRTContext.GetRequest(Request, "HasOpen"), false);//质控物主键int MaterialDR=Helper.ValidParam(JRTContext.GetRequest(Request, "MaterialDR"), 0);//得到质控物的数据BTQCMaterial matDto=EntityManager().DolerGet(BTQCMaterial.class,MaterialDR);//仪器数据BTMIMachineParameter machDto=EntityManager().DolerGet(BTMIMachineParameter.class,matDto.MachineDR);//查询仪器项目List<BTMIMachineTestCode> machTsList=EntityManager().FindByColVal(BTMIMachineTestCode.class,"MachineParameterDR",matDto.MachineDR);//质控浓度数据List<BTQCMaterialLevel> levList=EntityManager().FindByColVal(BTQCMaterialLevel.class,"MaterialDR",MaterialDR);//返回列表List<BTMIMachineTestCodeDto> retList=new ArrayList<>();if(machTsList!=null&&machTsList.size()>0){for(int i=0;i<machTsList.size();i++){//没激活的不要if(machTsList.get(i).Active!=null&&machTsList.get(i).Active==false){continue;}for(int j=1;j<=matDto.Levels;j++){HashParam hs=new HashParam();hs.Add("MaterialDR",matDto.RowID);hs.Add("TestCodeDR",machTsList.get(i).TestCodeDR);hs.Add("LevelNo",j);//按条件检查是否有数据boolean hasOpen=EntityManager().CheckHasData(BTQCMaterialTestCode.class,hs,null,null);//根据开通决定输出if(hasOpen==HasOpen){BTMIMachineTestCodeDto one=new BTMIMachineTestCodeDto();one.MaterialDR=matDto.RowID;one.MachineDR=machDto.RowID;one.LevelNo=j;one.LevelNoName="";for(BTQCMaterialLevel lev:levList){if(lev.LevelNo==j){one.LevelNoName=lev.CName;}}//项目数据BTTestCode tsDto=EntityManager().DolerGet(BTTestCode.class,machTsList.get(i).TestCodeDR);one.TestCodeCode=tsDto.Code;one.TestCodeDR=tsDto.RowID;one.TestCodeSynonym=tsDto.Synonym;one.TestCodeName=tsDto.CName;retList.add(one);}}}}return Helper.Object2Json(retList);}/*** 开通质控项目* @return*/@Transpublic String OpenBTQCMaterialTestCode() throws Exception{int MaterialDR=Helper.ValidParam(JRTContext.GetRequest(Request, "MaterialDR"), 0);int MaterialLotDR=Helper.ValidParam(JRTContext.GetRequest(Request, "MaterialLotDR"), 0);String OpenTsLev=Helper.ValidParam(JRTContext.GetRequest(Request, "OpenTsLev"), "");String [] arr=OpenTsLev.split("\\^");//公共信息BTQCMaterialLot lotDto=EntityManager().DolerGet(BTQCMaterialLot.class,MaterialLotDR);OutValue key=new OutValue();for(String one:arr){String [] tsLev=one.split("-");int TestCodeDR=Convert.ToInt32(tsLev[0]);int LevelNo=Convert.ToInt32(tsLev[1]);BTQCMaterialTestCode dto=new BTQCMaterialTestCode();//拷贝相同的属性值ReflectUtil.CopyProperties(lotDto,dto);dto.MaterialDR=MaterialDR;dto.TestCodeDR=TestCodeDR;dto.LevelNo=LevelNo;int ret=EntityManager().Save(dto,key,ErrRet());if(ret!=1){throw new Exception(Err.GetString());}}return Helper.Success();}/*** 查询数据,前台按表的属性名提交* @return 字符串*/public String QryQCResMaterialTestCode() throws Exception{//分页int pageSize = Helper.ValidParam(JRT.Core.MultiPlatform.JRTContext.GetRequest(Request, "rows"), -1);int pageIndex = Helper.ValidParam(JRT.Core.MultiPlatform.JRTContext.GetRequest(Request, "page"), -1);//质控物int MaterialDR=Helper.ValidParam(JRTContext.GetRequest(Request, "MaterialDR"), 0);//按项目和浓度筛选String TestCodeDR=Helper.ValidParam(JRTContext.GetRequest(Request, "TestCodeDR"), "");String LevelNo=Helper.ValidParam(JRTContext.GetRequest(Request, "LevelNo"), "");//筛选String Filter=Helper.ValidParam(JRTContext.GetRequest(Request, "Filter"), "");//质控浓度数据List<BTQCMaterialLevel> levList=EntityManager().FindByColVal(BTQCMaterialLevel.class,"MaterialDR",MaterialDR);HashParam hs=new HashParam();hs.Add("MaterialDR",MaterialDR);if(!TestCodeDR.isEmpty()){hs.Add("TestCodeDR",Convert.ToInt32(TestCodeDR));}if(!LevelNo.isEmpty()){hs.Add("LevelNo",Convert.ToInt32(LevelNo));}OutValue totalNum=new OutValue();//分页查询List<QCResMaterialTestCodeDto> dataList=EntityManager().FindAll(QCResMaterialTestCodeDto.class,hs,"TestDate desc",pageSize,pageIndex,"",null,null,totalNum);List<QCResMaterialTestCodeDto> retList=new ArrayList<>();if(dataList!=null&&dataList.size()>0){for(QCResMaterialTestCodeDto one:dataList){one.LevelNoName="";for(BTQCMaterialLevel lev:levList){if(lev.LevelNo==one.LevelNo){one.LevelNoName=lev.CName;}}//项目数据BTTestCode tsDto=EntityManager().DolerGet(BTTestCode.class,one.TestCodeDR);one.TestCodeCode=tsDto.Code;one.TestCodeDR=tsDto.RowID;one.TestCodeSynonym=tsDto.Synonym;one.TestCodeName=tsDto.CName;boolean isPerData=false;if(!Filter.isEmpty()&&one.LevelNoName.contains(Filter)){isPerData=true;}if(!Filter.isEmpty()&&one.TestCodeName.contains(Filter)){isPerData=true;}if(!Filter.isEmpty()&&one.TestCodeCode.equals(Filter)){isPerData=true;}if(!Filter.isEmpty()&&one.LotNo.equals(Filter)){isPerData=true;}if(!Filter.isEmpty()&&one.RgLot.equals(Filter)){isPerData=true;}if(!Filter.isEmpty()&&one.Remark.contains(Filter)){isPerData=true;}if(!Filter.isEmpty()&&one.MatManufacturer.equals(Filter)){isPerData=true;}if(!Filter.isEmpty()&&one.RgManufacturer.equals(Filter)){isPerData=true;}if(Filter.isEmpty()||isPerData==true){retList.add(one);}}}return Helper.MakeTotalJson(retList,totalNum);}/*** 去除没有仪器的树节点* @param retList 树节点集合*/private void DealNoMachineTree(List<MachineTreeDto> retList) throws Exception{if(retList!=null&&retList.size()>0){for(int i=0;i<retList.size();i++){//没有工作小组的工作组删掉if(retList.get(i).children.size()==0){retList.remove(i);i--;}else{//检查每个工作小组for(int j=0;j<retList.get(i).children.size();j++){//工作小组下没有仪器if(retList.get(i).children.get(j).children.size()==0){retList.get(i).children.remove(j);j--;}}//没有小组就把工作组节点也删了if(retList.get(i).children.size()==0){retList.remove(i);i--;}}}}}/*** 质控业务数据的批次项目信息*/public static class QCResMaterialTestCodeDto extends QCResMaterialTestCode{/*** 浓度名称*/public String LevelNoName;/*** 项目代码*/public String TestCodeCode;/*** 项目名称*/public String TestCodeName;/*** 项目缩写*/public String TestCodeSynonym;}/*** 返回仪器项目的数据*/public static class BTMIMachineTestCodeDto{/*** 质控物主键*/public int MaterialDR;/*** 仪器主键*/public int MachineDR;/*** 项目主键*/public int TestCodeDR;/*** 浓度*/public int LevelNo;/*** 浓度名称*/public String LevelNoName;/*** 项目代码*/public String TestCodeCode;/*** 项目名称*/public String TestCodeName;/*** 项目缩写*/public String TestCodeSynonym;}/*** 质控仪器树实体*/public static class MachineTreeDto {/*** 数据唯一键*/public int RowID;/*** 树id*/public String id;/*** 树文本*/public String text;/*** 是否选择*/public String checked;/*** 子节点*/public List<MachineTreeDto> children;/*** 节点类型*/public String Type;}/*** 质控物实体*/public  static class BTQCMaterialDto  extends BTQCMaterial{/*** 工作组主键*/public int WorkGroupDR;/*** 工作组名称*/public String WorkGroupName;/*** 工作小组主键*/public int WorkGroupMachineDR;/*** 工作小组名称*/public String WorkGroupMachineName;/*** 仪器名称*/public String MachineName;}/*** 质控项目的返回实体*/public static class BTQCMaterialTestCodeDto extends BTQCMaterialTestCode{/*** 浓度名称*/public String LevelNoName;/*** 项目代码*/public String TestCodeCode;/*** 项目名称*/public String TestCodeName;/*** 项目缩写*/public String TestCodeSynonym;}}

主体界面代码太多,博客放不下,放个质控规则维护的界面前端,前后台交互通过ajax
在这里插入图片描述

<!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>质控规则维护</title><link rel="shortcut icon" href="../../resource/common/images/favicon.ico" /><script src="../../resource/common/js/JRTBSBase.js" type="text/javascript"></script><link href="../../resource/plug/spectrum/css/spectrum.css" rel="stylesheet" type="text/css" /><script src="../../resource/plug/spectrum/js/spectrum.js" type="text/javascript"></script><script language="javascript" type="text/javascript">SYSPageCommonInfo.Init();var BasePath = '';var ResourcePath = '';var WebServicAddress = SYSPageCommonInfo.Data.WebServicAddress;var UserID = SYSPageCommonInfo.Data.Sesssion.UserID;var GroupID = SYSPageCommonInfo.Data.Sesssion.GroupID;var SessionStr = SYSPageCommonInfo.Data.SessionStr;</script><script type="text/javascript">//全局变量var me = {actionUrl: '../ashx/ashBTQCRules.ashx'};//jquery入口$(function () {//规则颜色$("#txtBTQCRulesColor").spectrum({showInput: true,showPalette: true,color: "",cancelText:"取消",chooseText:"选择",clearText:"清空选择",palette: [["#333333", "#449be2", "#50b90c", "#39c6c8", "afd17e", "#A85B93"],["#FFD572", "#ff32a1", "#d952d1", "#9152d9", "#494dee", "#327eb2"],["#f3723b", "#21be97", "#2ab66a", "#aade5f", "#ffb746", "#ff793e"],["#ff5252", "#f16e57", "#fd930c", "#d07605", "#955606", "#8be451"],["#ec90da", "#338001", "#fda632", "#0670c6", "#135890", "#afd17e"],["#c00eb5", "#891082", "#7dba56", "#f4d44f", "#6abfef", "c0c0c0"]]});//质控状态$("#txtBTQCRulesStatus").combogrid({panelWidth: 350,idField: 'RowID',width: 205,textField: 'CName',data:[{RowID:"W",CName:"警告"},{RowID:"R",CName:"失控"}],columns: [[{ field: 'RowID', title: '主键', width: 60 },{ field: 'CName', title: '名称', width: 260 }]]});//新增数据点击$("#btnAddBTQCRules").click(function () {$("#txtBTQCRulesRowID").val(""); $('#winEditBTQCRules').window({title: TranslateDataMTHD('Add Data', '新增数据', ''),modal: true});});//修改数据点击$("#btnUpdateBTQCRules").click(function () {UpdateBTQCRules();});//修改数据function UpdateBTQCRules(row){var selectRow = $('#dgBTQCRules').datagrid("getSelected");if(row!=null){selectRow=row;}if (selectRow == null) {$.messager.alert(TranslateDataMTHD('Info', '提示', ''), TranslateDataMTHD('Please select the data to modify', '请选择要修改的数据!', ''), 'info');return;}$("#formBTQCRules").form('load', selectRow);$("#txtBTQCRulesColor").spectrum("set",selectRow.Color);$('#winEditBTQCRules').window({title: TranslateDataMTHD('Update Data', '修改数据', ''),modal: true});}//删除数据点击$("#btnDeleteBTQCRules").click(function () {var checkRow = $('#dgBTQCRules').datagrid("getChecked");var selectRow = $('#dgBTQCRules').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时强制等待;-asirurl: me.actionUrl + '?Method=DeleteBTQCRules',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 {QryBTQCRules();$.messager.show({title: TranslateDataMTHD("Info", "提示", ""),msg: TranslateDataMTHD("Successfully deleted!", "删除成功!", ""),timeout: 500,showType: 'slide'});}}});}});});//保存数据$("#btnSaveBTQCRules").click(function () {var saveData = jQuery.parseJSON($("#formBTQCRules").serializeObject());var Color = $("#txtBTQCRulesColor").spectrum('get').toHexString();saveData.Color=Color;//开启等待$.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时强制等待;-asirurl: me.actionUrl + '?Method=SaveBTQCRules',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 {QryBTQCRules();$.messager.show({title: TranslateDataMTHD("Info", "提示", ""),msg: TranslateDataMTHD("Successfully saveed!", "保存成功!", ""),timeout: 500,showType: 'slide'});$('#winEditBTQCRules').window("close");}}});});//关闭窗口$("#btnCloseBTQCRules").click(function () {$('#winEditBTQCRules').window("close");});//构造查询事件$("#txtFilterBTQCRules").searchbox({searcher: function (value, name) {QryBTQCRules();},prompt: TranslateDataMTHD('Enter query', '回车查询', '')});//激活布尔渲染$('#txtBTQCRulesActive').combobox({valueField:'RowID',textField:'CName',width: 205,data: [{"RowID":false,"CName":TranslateDataMTHD('No', '否', '')},{"RowID":true,"CName":TranslateDataMTHD('Yes', '是', '')}]});//BTQCRules表格$('#dgBTQCRules').datagrid({remoteSort:false,singleSelect: true,toolbar: "#dgBTQCRulesToolBar",fit: true,onSelect: function (index, row) {//方便拷贝到子表查询用var selectBTQCRules=$('#dgBTQCRules').datagrid("getSelected");},onDblClickRow: function (index, row) {UpdateBTQCRules(row);},columns: [[{ field: 'ChkFlag', title: TranslateDataMTHD('Check', '选择', ''), width: 20, sortable: true, align: 'center', checkbox: true },{ field: 'RowID', title: TranslateDataMTHD('RowID', '主键', '') , width: 50, sortable: true },{ field: 'Code', title: TranslateDataMTHD('Code', '代码', '') , width: 60, sortable: true },{ field: 'CName', title: TranslateDataMTHD('CName', '名称', '') , width: 120, sortable: true },{ field: 'Status', title: TranslateDataMTHD('Status', '状态', '') , width: 80, sortable: true },{ field: 'Color', title: TranslateDataMTHD('Color', '颜色', '') , width: 80, sortable: true,formatter: function (value, rowData, rowIndex) {if (value == "") {var LevelNoIndex = rowData.LevelNo - 1;value = AllLineColor[LevelNoIndex];}return '<span style="color:' + value + ';font-weight:bold;">' + TranslateDataMTHD('Color', '颜色', "") + '</span>'}},{ field: 'Remark', title: TranslateDataMTHD('Remark', '说明', '') , width: 650, sortable: true },{ field: 'Sequence', title: TranslateDataMTHD('Sequence', '序号', '') , width: 60, sortable: true },{ field: 'Active', title: TranslateDataMTHD('Active', '激活', '') , width: 60, sortable: true,formatter: function (value, rowData, rowIndex) {return rowData.Active == true ? '<img src="../images/icon/active.png" alt="激活" title="激活"/>' : '<img src="../images/icon/cross.png" alt="未激活" title="未激活"/>';}}]]});//查询BTQCRulesfunction QryBTQCRules() {var Filter = $("#txtFilterBTQCRules").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时强制等待;-asirurl: me.actionUrl + '?Method=QryBTQCRules',data: { Filter: Filter },success: function (data, status) {//结束等待//$.messager.progress('close');if (!FilterBackData(data)) {return;}$('#dgBTQCRules').datagrid("loadData", data);}});};//执行查询数据QryBTQCRules();});</script>
</head>
<body><div class="easyui-layout" fit="true" style="border: none;"><div data-options="region:'center',title:''" style="border: none;"><div id="dgBTQCRulesToolBar" style="padding: 3px 0px 3px 10px;"><a id="btnAddBTQCRules" href="#" class="easyui-linkbutton" data-options="iconCls:'icon-add'" plain="true" listranslate="html~Add">新增</a><a id="btnUpdateBTQCRules" href="#" class="easyui-linkbutton" data-options="iconCls:'icon-write-order'" plain="true" listranslate="html~Mod">修改</a><a id="btnDeleteBTQCRules" href="#" class="easyui-linkbutton" data-options="iconCls:'icon-cancel'" plain="true" listranslate="html~Del">删除</a><input id="txtFilterBTQCRules" style="margin-left: 14px; width: 240px;"></input></div><table id="dgBTQCRules" title="" iconcls="icon-paper" listranslate="title~BTQCRules"></table></div><div id="winEditBTQCRules" style="padding: 10px 0px 0px 10px;width:550px;height:318px;display: none;"><form id="formBTQCRules" name="edit_form" method="post"><input type="hidden" id="txtBTQCRulesRowID" name="RowID" value="0" /><table><tr><td class="lisar" jrttranslate="html~Code">代码</td><td class="lisal"><input id="txtBTQCRulesCode" type="text" name="Code" style="width:200px;" class="easyui-validatebox"  maxlength="10"/></td><td class="lisar" jrttranslate="html~CName">名称</td><td class="lisal"><input id="txtBTQCRulesCName" type="text" name="CName" style="width:200px;" class="easyui-validatebox"  maxlength="40"/></td></tr><tr><td class="lisar" jrttranslate="html~Status">状态</td><td class="lisal"><input id="txtBTQCRulesStatus" type="text" name="Status" style="width:200px;" class="easyui-validatebox"  maxlength="1"/></td><td class="lisar" jrttranslate="html~Color">颜色</td><td class="lisal"><input id="txtBTQCRulesColor" type="text" name="Color" style="width:200px;" class="easyui-validatebox"  maxlength="10"/></td></tr><tr><td class="lisar" jrttranslate="html~Remark">说明</td><td class="lisal" colspan="3"><textarea id="txtBTQCRulesRemark" name="Remark" style="width:460px;height: 90px; resize: none;" rows="3" class="easyui-validatebox"  maxlength="200"  cols="40" ></textarea></td></tr><tr><td class="lisar" jrttranslate="html~Sequence">序号</td><td class="lisal"><input id="txtBTQCRulesSequence" type="text" name="Sequence" style="width:200px;" class="easyui-validatebox"  maxlength="10"/></td><td class="lisar" jrttranslate="html~Active">激活</td><td class="lisal"><input id="txtBTQCRulesActive" type="text" name="Active" style="width:200px;" class="easyui-validatebox"  maxlength="1"/></td></tr></table><div region="south" border="fale" style="text-align: center; padding: 5px 0 0;"><a id="btnSaveBTQCRules" href="#" class="easyui-linkbutton" plain="false" listranslate="html~Save">保存</a><span class="sp6"></span><a id="btnCloseBTQCRules" href="#" class="easyui-linkbutton" plain="false" listranslate="html~Cancel">取消</a></div></form></div></div>
</body>
</html>

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【论文精读】集合级指导攻击:提高视觉语言预训练模型的对抗性可迁移性

文章目录 一、前言&#xff08;一&#xff09;对抗攻击概念&#xff08;二&#xff09;对抗攻击分类&#xff08;三&#xff09;VLP模型&#xff1a;视觉语言预训练模型 二、文章概览&#xff08;一&#xff09;研究动机&#xff08;二&#xff09;主要工作 三、对抗可迁移性的…

探探各个微前端框架

本文作者为 360 奇舞团前端开发工程师 微前端架构是为了在解决单体应用在一个相对长的时间跨度下&#xff0c;由于参与的人员、团队的增多、变迁&#xff0c;从一个普通应用演变成一个巨石应用(Frontend Monolith)后&#xff0c;随之而来的应用不可维护的问题。这类问题在企业级…

第十一届能源与环境研究国际会议-可再生能源走向脱碳化(ICEER 2024)即将召开!

能源和环境是当今世界至关重要的研究和教育领域&#xff0c;持续的气候危机和对可持续发展战略的迫切需求&#xff0c;需要从能源科学到地球工程等广泛领域的变革性工程解决方案和创新。ICEER 2024为来自学术界&#xff0c;研究中心和全球工业界的工程师&#xff0c;研究人员和…

AD转换(模数转换)

一、AD的基本概念 AD转换是将时间连续和幅值连续的模拟量转换为时间离散、幅值也离散的数字量。使输出的数字量与输入的模拟量成正比。 AD转换的过程有四个阶段&#xff0c;即采样、保持、量化和编码。 采样是将连续时间信号变成离散时间信号的过程。经过采样&#xff0c;时间…

生成式AI对UiPath来说是机遇还是挑战?

企业争相通过技术革新来领跑市场&#xff0c;机器人流程自动化&#xff08;RPA&#xff09;技术更是将企业的效率和成本控制推向了新的高度。但当人工智能&#xff08;AI&#xff09;的最新进展——生成式AI登上舞台时&#xff0c;它不仅带来了变革的可能&#xff0c;还提出了一…

Java编程题 | 打印杨辉三角

大家可以关注一下专栏&#xff0c;方便大家需要的时候直接查找&#xff0c;专栏将持续更新~ 题目描述 打印出杨辉三角形&#xff08;要求打印出10行如下图&#xff09; 解题思路 初始化变量&#xff1a;设置一个变量表示行号&#xff0c;从1开始。循环打印杨辉三角形…

计算机组成原理(IO,输入输出)

1、“821.2016T1(1)”&#xff0c;表示821真题&#xff0c;2016年的题&#xff0c;T1是 选择题/填空题/大题 的第一题&#xff0c;其他类似标记也是相通 2、个人小白总结自用&#xff0c;不一定适用于其他人&#xff0c;请自行甄别 3、有任何疑问&#xff0c;欢迎私信探讨&…

centos7部署zabbix6.4.9

文章目录 [toc]一、环境准备1&#xff09;部署lnmp2&#xff09;修改配置文件3&#xff09;安装数据库 二、部署zabbix1&#xff09;下载zabbix2&#xff09;安装zabbix服务端3&#xff09;修改配置4&#xff09;开机启动5&#xff09;安装客户端 三、登录配置1&#xff09;访问…

数据结构--KMP算法

数据结构–KMP算法 首先我在这里提出以下问题&#xff0c;一会一起进行探讨 1.什么是最长公共前后缀 2. KMP算法怎么实现对匹配原理 3. 最长公共前后缀怎么求解 KMP算法可以用来解决什么问题&#xff1f; 答&#xff1a;在字符串中匹配子串&#xff0c;也称为模式匹配 分析…

mac电脑安装软件报错:无法检查更新,请检查你的互联网连接

1、点菜单栏搜索图标&#xff0c;输入&#xff1a;终端 &#xff0c;找到后&#xff0c;点击打开 2、输入以下命令&#xff1a;&#xff08;复制粘贴进去&#xff09;回车安装 /usr/sbin/softwareupdate --install-rosetta --agree-to-license 3、提示【Install of Rosetta …

电商技术揭秘十八:电商平台的云计算与大数据应用小结

电商技术揭秘相关系列文章 电商技术揭秘一&#xff1a;电商架构设计与核心技术 电商技术揭秘二&#xff1a;电商平台推荐系统的实现与优化 电商技术揭秘三&#xff1a;电商平台的支付与结算系统 电商技术揭秘四&#xff1a;电商平台的物流管理系统 电商技术揭秘五&#xf…

spring boot 集成 flyway依赖 做数据库迁移,让部署没烦恼

flyway 是一个敏捷工具&#xff0c;用于数据库的移植。采用 Java 开发&#xff0c;支持所有兼容 JDBC 的数据库。 主要用于在你的应用版本不断升级的同时&#xff0c;升级你的数据库结构和里面的数据。 还是直接上代码 第一步&#xff1a; <!-- Flyway 数据库迁移 依赖 他…

MySQL排序原理与优化方法(9/16)

order by排序优化 MySQL排序策略 内存临时表 or 磁盘临时表&#xff1f; **内存临时表排序&#xff1a;**在MySQL中&#xff0c;使用InnoDB引擎执行排序操作时&#xff0c;当处理的数据量较小&#xff0c;可以在内存中完成排序时&#xff0c;MySQL会优先使用内存进行排序操作…

知名的开源大模型及其特点

目前&#xff0c;开源的大模型领域涌现出了许多具有不同特点和优势的模型。这些开源大模型不仅推动了AI技术的发展&#xff0c;也为研究者和开发者提供了丰富的资源和工具&#xff0c;促进了AI应用的创新和多样化。以下是一些知名的开源大模型及其特点。北京木奇移动技术有限公…

Python测试框架之pytest详解

前言 Python测试框架之前一直用的是unittestHTMLTestRunner&#xff0c;听到有人说pytest很好用&#xff0c;所以这段时间就看了看pytest文档&#xff0c;在这里做个记录。 官方文档介绍&#xff1a; Pytest is a framework that makes building simple and scalable tests e…

2024年ERP软件上中下游结构分析及细分行业研究

环洋咨询Global Info Research的ERP软件市场调研报告提供ERP软件市场的基本概况&#xff0c;包括定义&#xff0c;分类&#xff0c;应用和产业链结构&#xff0c;同时还讨论发展政策和计划以及制造流程和成本结构&#xff0c;分析ERP软件市场的发展现状与未来市场趋势&#xff…

String类(1)

❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; hellohello~&#xff0c;大家好&#x1f495;&#x1f495;&#xff0c;这里是E绵绵呀✋✋ &#xff0c;如果觉得这篇文章还不错的话还请点赞❤️❤️收藏&#x1f49e; &#x1f49e; 关注&#x1f4a5;&a…

三年Android开发经验面试经历分享

最近&#xff0c;参加了多家公司的面试&#xff0c;下面是我所经历的一些面试问题及自己的回答思路。 一、京东面试 一面&#xff1a; 项目内容&#xff1a;主要讲述了在实习期间参与的项目&#xff0c;以及在项目中负责的工作和取得的成果。MVP模式&#xff1a;解释了MVP模…

CSS实现三栏自适应布局(两边固定,中间自适应)

绝对定位的元素会脱离文档流&#xff0c;它们是相对于包含块&#xff08;通常是最近的具有相对定位、绝对定位或固定定位属性的父元素&#xff09;进行定位的。当你把一个绝对定位的元素的高度设置为100%时&#xff0c;它会相对于其包含块的高度来确定自己的高度。如果包含块是…

政安晨:【深度学习神经网络基础】(六)—— 前馈神经网络

目录 简述 前馈神经网络结构 计算输出 初始化权重 径向基函数神经网络 径向基函数 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: 政安晨的机器学习笔记 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎…