还剩16页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
常见关键字string.Join//C#string.Join”jyiZhuYCMCs//JavayiZhuYCMCs.stream.collectCollectors.joining/Concat//#cvarzhuYuanYZXXList=yiZhuXXSaveDto.AddZhuYuanYZXXList.ConcatyiZhuXXSaveDto.UpdateZhuYuanYZXXList.ToList;//JavavarzhuYuanYZXXList=Stream.concatyiZhuXXSaveDto.getAddZhuYuanYZXXList.stream^yiZhuXXSaveDto.getUpdateZhuYuanYZXXList.stream.collecttoList;Any//C#list.Any//Javalist.stream.anyMatchelement-true;//c#!list.Any//Javaliststream.noneMatchelement-true;All//C#list.All//Javalist・stream.allMatchelement-true;ToList//简单转为list//写法一shenQingDanList.stream.toList;//写法一//结合调用构造函数实现自动映射packagecn.mediinfo.vela.shouma.dto.shenqingdandto;publicclassShenQingDXXDto{privateSM_SQ_ShenQingDanDtoshenQingDanDto;privateSM_SQ_ShenQingDMXDtoshenQingDanMXDto;publicShenQingDXXDtoSM_SQ_ShenQingDanModelshenQingDanSM_SQ_ShenQingDMXModelshenQingDMX{this.shenQingDanDto=SM_SQ_ShenQingDanDto.valueOfshenQingDan;this.shenQingDanMXDto=SM_SQ_ShenQingDMXDto.valueOfshenQingDMX;}//查询平铺的字段@QueryHselects.zhuYuanJZIDasjiuZhenYWID^countsasshuLiangfromSM_SQ_ShenQingDanModelasswheres.zhuYuanJZIDin:zhuYuanJZIDListands.dangQianZTDM=9groupbys.zhuYuanJZIDListMapStringObjectfindByZhuYuanJZIDInGroupByZhuYuanJZIDListStringzhuYuanJZIDList;//需要在Serutce里把LtstMapStrtngObjec1:类型对象手动转换为dtovarmapList=sm_sq_shenQingDanRepository.findByZhuYuanJZIDInGroupByZhuYuanJZIDzhuYuanJZIDs;varzhuYuanDZYXList=newArrayListSM_SQ_ShenQingDSLByJZYWIDItem;forvarmap:mapList{varitem=MapUtils.copyMapPropertiesmap^SM_SQ_ShenQingDSLByJZYWIDItem::new;zhuYuanJZYXList.additem;//分页查询//sqL定义@QueryselectsfromSM_ZD_ShuJuYLBModelass+where:zuzhi3GIDisnullors.zuZhi3GID=:zuzhiJGID+and:likeQueryisnull+ors.shuJuYLBMClike%:likeQuery%ors.shuJuYLBIDlike%:likeQuery%+orcasewhen:shuRuMLX=I1thenuppers.shuRuMalwhen:shuRuMLX=2thens.shuRuMa2elses.shuRuMa3endlike%:likeQuery%H+orderbys.shuJuYLBIDascSliceSM_ZD_ShuJuYLBModelfindTopByZuzhiJGIDAndLikeQuery0ParamzuzhiDGIDStringzuzhiJG工D_@ParamlikeQueryStringlikeQuery@ParamshuRuMLXnStringshuRuMLXPageablepageable;//分页仓储程序调用vanpage=sm_zd_shuJuYLBRepository.findTopByZuzhiJGIDAndLikeQuery二J”PageRequestUtil.ofdto.getPageindexdto.getPageSize;//取前n条数据vanpage=sm_zd_shuJuYLBRepository.findTopByZuzhiJGIDAndLikeQueryPageRequestUtil.ofSizecount;//SQL左连接转换为程序的一对多的数据结构//左连接仓储定义©QuerySELECTNEWcn.mediinfo.vela.shouma.dto.shenqingdandto.ShenQingDXXDtoCa^bFROMSM_SQ_ShenQingDanModelASaLEFTJOINSM_SQ_ShenQingDMXModelASbONa.id=b.shenQingDIDANDb.zhuShouSBZ=1WHEREa.zuZhiJGID=:zuZhiJGIDANDa.zhuYuanDZID=:zhuYuan^ZIDANDa.dangQianZTDM0ANDa.dangQianZTDM2ANDa.wanChengJZBZ1ORa.maZuiWCJZBZ0HListShenQingDXXDtofindShenQingDanLeftJoinShenQingDMXOnldEqualShenQingDIDByZuZhiJGIDAndZhuYuanJZIDStringzuZhiJG工DStringzhuYuanDZID;//JAVA代码SQL左连接转换为程序的一对多的数据结构@OverridepublicListSM_SQ_ShenQingDW3ZDtogetShouMaWJZSSSQDStringzhuYuanDZIDthrowsTongYongYWException{//排除作废和取消的手术的所所有未记账的手术vanshenQingDanXXList=shenQingDanRepository.findShenQingDanLeftDoinShenQingDMXOnldEqualShenQingDIDByZuZhiOGIDAndZhuYuan3ZIDlyraIdentityService.get3iGouIDzhuYuanDZID;//根据主表td分组MapStringListShenQingDXXDtogroupList=shenQingDanXXList.streamcollectCollectors.groupingByx-x.getShenQingDanDto.getld;vanresult=newArrayListSM_SQ_ShenQingDW3ZDto;forvanentry:groupList.entrySet{vanshenQingDXXDto=entry.getValue.stream.findFirst.mapShenQingDXXDto::getShenQingDanDto.get;varitem=M叩Utils.copyPropertiesshenQingDXXDto?SM_SQ_ShenQingDWJZDto::new;vanzhuShouShu=entry.getValue.stream.filters-s.getShenQingDanMXDto.getZhuShouSBZ==
1.mapShenQingDXXDto::getShenQingDanMXDto.sortedcomparingIntSM_SQ_ShenQingDMXDto::getShuHouSSBZ.reversed・findFirst.orElsenull;ifnull!=zhuShouShu{item.setShouShuMCzhuShouShu.getShouShuMC;item.setShouShuJBMCzhuShouShu.getShouShuJBMC;item.setShouShuBWzhuShouShu.getShouShuBW;result.additem;}returnresult;}/*用QueryDSL解决C#的Where工f、x=string.IsNuLLOrl^lhiteSpaceshuJuYLBQueryDto.ZuZhiJGIDIIx.ZuZhiJGID==shuJuYLBQueryDto.ZuZhiJGID查询条件用*/QSM_SQ_ShenQingDanModelshenQingDan=sM_SQ_ShenQingDanModel;QSM_SQ_ShenQingDMXModelshenQingDMX=QSM_SQ_ShenQingDMXModel.sM_SQ_ShenQingDMXModel;varfactory=newJPAQueryFactoryentityManager;vanquery=factory.selectshenQingDan^shenQingDMX.fromshenQingDan・leftJoinshenQingDMX.onshenQingDan.id.eqshenQingDMX.shenQingDID.whereshenQingDan.zuZhiJGID.eqlyraidentityService.getJiGouID.where0;//门诊:申请医生过滤ifnlH.equalsweiZhiLB{query.whereshenQingDan.shenQingYSID.eqweiZhiCXBS;}elseif”2“・equalsweiZhiLB{〃力傀度至申请科室过滤query.whereshenQingDan.shenQingKSID.eqweiZhiCXBS;}elseif“3”.equalsweiZhiLB{〃便照沙匕病区过滤query.whereshenQingDan.dangQianBQID.eqweiZhiCXBS;}//手术状态过滤if!dangQianZTDMs.isEmpty{query.whereshenQingDan.dangQianZTDM.indangQianZTDMs;}//要求时间过滤if
1.equalschaXunLX{query.whereshenQingDan.yaoQiuSJ.betweenkaiShiSj_jieShuSJ;}elseif
2.equalschaXunLX{//申请时间过滤query.whereshenQingDan.shenQingSD.betweenkaiShiSjjieShuSJ;}elseif
3.equalschaXunLX{//安排时间过滤query.whereshenQingDan.anPaiSJ.betweenkaiShiSjjieShuSJ;}//进行数据查询vanqucryRcsult=query.fctch;API定义/**获取手术管理列表@paramkaiShiSj开始时间@paramjieShuSJ结束时间alparamjiuZhenYlA/LX就诊业务类型【1:门诊;2:急诊;3:住院;4:体检】@paramchaXunLX查询类型1申请与安排2已完成3已取消全部不传或空atparamshouShuKSID手术室全部:不传或空@paramshouShuJDM手术间全部:不传或空atparamshenQingKSID申请科室全部不传或空^paramzhuDaoYSID主刀医生全部:不传或空^paramshouShuLBDM手术类别全部:不传或空@paramshouShuJBDM手术级别全部不传或空@paramLikeQuery患者姓名/住院号Sreturn*/@Operationsummary=”获取手术申请单明细列表11@GetMappingGetShouShuGLListpublicMsfResponseListSM_SQ_ShouShuGLXQgetShouShuGLList@RequestParamrequired=falseDatekaiShiSj^@RequestParamrequired=false@RequestParamrequired=false@RequestParamrequired=falseStringshenQingKSID^@RequestParamrequired=falseStringzhuDaoYSID^@RequestParamrequired=falseStringlikeQuerythrowsShuJuCZException^ParseException{ifkaiShiSj==null||jieShuSD==null{returnMsfResponse.failXiTongResponseCode.CANSHUYJ”请选择开始日期和结束日期!”;}returnMsfResponse.successshouShuGLService.getShouShuGLListkaiShiSjJjieShuSJjiuZhenYWLXjchaXunLX^shouShuKSID^shouShuDDMshenQingKSID^zhuDaoYSIDjshouShuLBDMshouShuDBDMlikeQuery;}获取数据源值域总数@paramshuJuYLBQueryDto@return@throwsMsfResponseException*/Operationsummary=获取数据源值域总数”@GetMappingGetShuJuYZYCountMpublicMsfResponseLonggetShuJuYZYCount@ParameterObjectSM_ZD_Shu3uYZYQueryDtoshuJuYLBQueryDtothrowsMsfResponseException{vanresult=shuJuYZYService.getShuJuYZYCountshuJuYLBQueryDto;returnMsfResponse.successresult;手术申请单暂存*@paramenetityalreturn@throwsMsfResponseException@throwsTongYongYlAlExceptionV@Operationsummary=手术申请单暂存”@PostMappingZanCunSSSQDpublicMsfResponseIntegerzuoFeiShenQingDXX@RequestBodySM_SQ_AddShenQingDDtoenetitythrowsMsfResponseException^TongYongYWException{varresult=shenQingDanService.zanCunSSSQDenetity;returnMsfResponse.successresult;零散的解决url请求中存在vl.O和vl的情况,暂时在代码上写死@RequestMapping{api/vl.0/shoumasq11yapi/vl/shoumasq}publicclassShouMaSQController{}java不存在匿名对象迁移技巧java不存在扩展函数除了stream等操作,一般在xxxUtils或者xxxUtil里面,比如MapUtils.copyProperties、StringUtils.hasText、DateUtil.getYYMMDDHHMMSSjieShuSDStringa=String.valueOfl;;可以借助ChatGPT帮助我们更快的完成工作比如Aichatos等工具;shenQingDanList.stream.collectCollectorstoList;//如果需要对返回的对象进行更多控制,请参照写法二//比如根据字段分组7apgroupList=shenQingDanXXList.stream.collectCollectors.groupingBys-s.getShenQingDanDto.getld;//比如集合的元素根据分隔符拼接成字符串7apids=shouShuHZXXList.stream.mapSM_SQ_ShenQingDHZXXDto::getZhuYuan3ZID.distinctcollectCollectors.joining””;Select//获取对象中的某一字段shenQingDanList.stream.mapBaseDto::getld.collectCollectors.toList;//采用回调函数返回对象ListSM_SQ_NiShouShuXXlist=niShouShuList.stream.mapo-{SM_SQ_NiShouShuXXniShouShuXX=newSM_SQ_NiShouShuXX;niShouShuXX.setZhuCiShouShuMCo.getZhuShouSBZ==1”主手术:“次手术”;niShouShuXX.setShouShuMCIDo.getShouShuMCID;niShouShuXX.setShouShuMCo.getShouShuMC;niShouShuXX.setShouShuBWo.getShouShuBW;niShouShuXX.setQieKouLBDMo.getQieKouLBDM;niShouShuXX.setQieKouLBMCo.getQieKouLBMC;niShouShuXX.setShouShuJBDMo.getShouShuJBDM;niShouShuXX.setShouShuJBMCo.getShouShu3BMC;niShouShuXX.setZhuShouShuBZo.getZhuShouSBZ;niShouShuXX.setShouShuMCQZo.getShouShuMCQZ;niShouShuXX.setShouShuMCHZo.getShouShuMCHZ;niShouShuXX.setIdo.getId;returnniShouShuXX;}.collectCollectors.toList;//c#select返回new字段varxinZengLinChuangXMSs=yiZhuXXSaveDto.AddZhuYuanYZXXList.Wherex=x.LinChuangLJDRBZ==1||!string.IsNullOrlAlhiteSpacex.LinChuangLJBRXMID.Selectx=new{x・LinChuangLJDRBZjx.LinChuangLOBRXMID;//JavavarxinZengLinChuangXMSs=yiZhuXXSaveDto.getAddZhuYuanYZXXList.stream.filtero-o.getLinChuangLJDRBZ==1!o.getLinChuangLJBRXMID.isEmpty.mapt-newObject{publicIntegerLinChuangLJDRBZ=t.getLinChuangLJDRBZ;publicStringLinChuangLJBRXMID=t.getLinChuangL3BRXMID;}.collectCollectors.toList;WhereListSM_SQ_ShenQingDMXDtofilteredDMXList=shenQingDMXList.stream.filterx-Objects.equalsx.getShenQingDIDs.getld・collectCollectors.toList;FirstOrDefault//获取集合的第一个对象//c#varfirst=list.FirstOrDefault;//javavarfirst=list.findFirst.orElsenull;//获取集合的第一个对象的某个属性//c#varshouShuMC=list.FirstOrDefault.ShouShuMC;//javaStringshouShuMC=list.stream.findFirst.mapSM_SQ_ShenQingDWJZDto::getShouShuMC.orElse”);Distinct//简单用法vaplist=list.stream.distinct.toList;〃/媛皆定属%.为除/复的对象、/arshouShuHZXXList=Expressionutils.removeDuplicateObjectsshouShuHZXXList.SM_SQ_ShenQingDHZXXDto::getZhuYuanJZID;Order.OrderByDescending//根据ZhuShouSBZ字段降序vanniShouShuList=shenQingDMXXX.stream.filtero-o.getShuHouSSBZ==0sortedComparator.comparingSM_SQ_ShenQingDMXModel::getZhuShouSBZreversed.collectCollectors.toList;//根据ZhuShouSBZ字段升序varniShouShuList=shenQingDMXXX.stream.filtero-o.getShuHouSSBZ==0・sortedComparator.comparingSM_SQ_ShenQingDMXModel::getZhuShouSBZ.collectCollectors.toList;//根据多个字段升序vanshiJiSSList=shenQingDMXXX.stream.sortedComparator.comparingSM_SQ_ShenQingDMXModel::getZhuShouSBZ.thenComparingSM_SQ_ShenQingDMXModel::getShenQingDID.collectCollectors.toList;//java在内存里面排序时里面字段如果是null会报空指针vanyiAnPList=yiAnPList.streamsortedcomparingSM_SQ_ShenQingDXQDto::getShouShuJDM_Comparator.nullsLastString::compareTo.thenComparingSM_SQ_ShenQingDXQDto::getAnPaiSDcollectCollectors.toList;//c#varchuYuanYZ=checkYiZhuXXs.OrderByDescendingx=x.KaiShiSD.FirstOrDefaulto=o.ZuZhiDGID==zuZhiDGIDo.ZhuYuanJZID==yiZhuXXSaveDto.ZhuYuanDZIDo.YiZhuZTDM!=YiZhuZTEnum.YiCheXiao.ToEnumStringo.YiZhuFLDM==YiZhuFLDMEnum.ZhiLiao.ToEnumStringo.YiZhuLXDM==YZ_ZD_YiZhuLX.ChuYuan.ToEnumString;//JavavanchuYuanYZ=checkYiZhuXXs.stream.filtero-zuZhiJGID.equalso.getZuZhiJGIDyiZhuXXSaveDto.getZhuYuanJZID.equalso.getZhuYuan3ZIDYiZhuConstant.YiZhuZTEnum.YiCheXiao.getDescription.equalso.getYiZhuZTDMYiZhuConstant.YiZhuFLDMEnum.ZhiLiao.getDescription.equalso.getYiZhuFLDMYiZhuConstant.YZ_ZD_YiZhuLX.ChuYuan.getDescription.equalso.getYiZhuLXDM・sortedComparator.comparingYZ_ZY_YiZhuXXModel::getKaiShiSJ.reversed.findFirst.orElsenull;groupBycasewhenQSM_ZD_ShuJuYLBModelmodel=QSM_ZD_Shu3uYLBModel.sM_ZD_ShuJuYLBModel;Expressionlt;Stringgt;alias=newCaseBuilder.whenmodel.shuJuYLBID.eqSM
0001.thenn
001.otherwiseother.astest;StringPatheAlias=Expressions.stringPathtest;3PAQuerylt;Tuplegt;jpaQuery=newJPAQueryFactoryentityManager.selectaliasmodel.count.frommodel;Listlt;Tuplegt;fetch=jpaQuery.groupBycAlias.fetch;notExists@Query@QueryselectsfromSM_SQ_ShenQingDanModelTestasswherenotexistsselect1fromSM_SQ_ShenQingDanModelTestassiwheresl.zuZhiJGID=s.zuZhiJGIDHQueryDSLQSM_SQ_ShenQingDanModelTests=QSM_SQ_ShenQingDanModelTest.sM_SQ_ShenQingDanModelTest;QSM_SQ_ShenQingDanModelTestsi=newQSM_SQ_ShenQingDanModelTestHslH;BooleanExpressionnotExists=newJPAQuerylt;gt;entityManager.fromsl.wheresl.zuZhi3GID.eqs.zuZhiJGID.notExists;JPAQuerylt;SM_SQ_ShenQingDanModelTestgt;query=newJPAQuerylt;gt;entityManager;query.selects.froms.wherenotExists;Listlt;SM_SQ_ShenQingDanModelTestgt;result=query.fetch;操作符//C#vardangQianZTDMs=shouShuZT//javavardangQianZTDMs=Optional.ofNullableshouShuZT.orElse判断相等//两个对象属性之间的比较使用bjects.equals方法进行比较ifObjects.equalsab{//常量比较的时候,常量需要放到前面ifShouMaConstant.SSZT_YIANPAI.equalsshenQingDan.getDangQianZTDM{II...}M叩To//c#varshouShuGLXQ=row.MapToSM_SQ_ShenQingDXQDtoJSM_SQ_ShouShuGLXQ;//单个对象自动映射varshouShuGLXQ=MapUtils.copyPropertiesrowSM_SQ_ShouShuGLXQ::new;vanshouShuGLXQ=MapUtils.copyPropertiesrowSM_SQ_ShouShuGLXQ::newab-{//・・・};//集合自动映射varshenQingDMXList=MapUtils.copyListPropertiesshenQingDMXmodelListSM_SQ_ShenQingDMXDto::new;Merge//javaMapUtils.mergePropertiesupdateDtoshenQingDXX;//C#merge时,忽略医嘱td医嘱名称shenQingDan.MergeWithIgnoreupdateDto.ShenQingDXXo=new{o.YiZhu工Do.YiZhuMC};//JAVAmerge时,忽略医嘱id医嘱名称MapUtils.mergePropertiesupdateDto.getShenQingDXXshenQingDanab-{b.setYiZhuIDb.getYiZhuID;b.setYiZhuMCb.getYiZhuMC;};String拼接时null表现不同//C#shouShuSQD.NianLing+shouShuSQD.NianLingDW//返回”24岁7/javashouShuSQD.NianLing+shouShuSQD.NianLingDW//返回”24岁null”//要改成StringUtil.joinjiuZhenXX.getNianLing.toStringjiuZhenXX.getNianLingDWRemoteHelpers//对应着c#中调用远程后是否调用成功,失败报错判断coduvanrso=RemoteHelper.getDatayiZhuRemoteService.cheXiaoZYYZyiZhuCXDtoList”医嘱撤销失败”;JPA官方文档查询不存在追踪与非追踪;添加、更新直接调用xxxxRepository.saveshenQingDXX;仓储的Save方法,当实体有id时是修改数据,没有id时是新增数据,不存在await_unitOfWork.SaveChangesAsync;软删必须调用xxxxxRepository.softDeleteshenQingDMXList;如果手写sql的update语句,不会自动更新框架字段,比如更新时间等;常用的杳询写法//获取单个实体表示以避瘟OptionalSM_SQ_ShenQingDanModelfindByZuZhiJGIDAndIdStringzuZhiDG工DStringid;//支持手写sql在获取单个实体别名需要定义为s@QueryselectsfromSM__SQ_ShenQingDanModelasswheres.zuZhiJGID=:zuZhiJGIDands.idin:shenQingDIDsHListSM_SQ_ShenQingDanModelfindByZuZhiJGIDAndldlnStringzuZhiJGID^ListStringshenQingDIDs;//获取单个实体的自动映射modeL-dto@QueryselectsfromSM_SQ_ShenQingDanModelasswheres.zuZhiJGID=:zuZhiJGIDands.idin:shenQingDIDsHListSM_SQ_ShenQingDanDtofindByZuZhiJGIDAndldlnStringzuZhiJGHDListStringshenQingDIDs;//结合“QlueOf实现自动映射publicclassSM_SQ_ShenQingDanDtoextendsBaseDto{publicstaticSM_SQ_ShenQingDanDtovalueOfSM_SQ_ShenQingDanModelmodel{returnMapUtils.copyPropertiesmodel^SM_SQ_ShenQingDanDto::new;}}//获取多个实体自动映射@QueryHselectnewcn.mediinfo.vela.shouma.dto.shenqingdandto.ShenQingDXXDtoCa^bfromSM_SQ_ShenQingDanModelasaleftjoinSM_SQ_ShenQingDMXModelasbona.id=b.shenQingDIDandb.zhuShouSBZ=1wherea.zuZhiJGID=:zuZhiJGIDanda.zhuYuanJZID=:zhuYuanJZIDListShenQingDXXDtofindShenQingDanLeftJoinShenQingDMXOnIdEqualShenQingDID@ParamzuZhiJGIDStringzuZhiDGIDj@ParamKzhuYuanJZIDStringzhuYuanDZID;。