判断主表里子表不能添加相同的字段

今天遇到一个开发任务,同一个公司添加的通过审核的证书不能重复,需要控制,主要分为添加,更新,添加需要多条添加判断,还有一条添加判断,更新也是这样,下面用代码介绍实现逻辑。
List<MdmCompanyCertificate> certInsertList = this.certificateWrap
						.getInsertList();
				List<MdmCompanyCertificate> certUpdateList = this.certificateWrap
						.getUpdateList();
				List<MdmCompanyCertificate> certDeleteList = this.certificateWrap
						.getDeleteList();
				
				for(int i=0;i<certInsertList.size();i++){
					MdmCompanyCertificate insert=certInsertList.get(i);
					for(int j=i+1;j<certInsertList.size();j++){
						if((insert.getCertificateId().toString()).equals(certInsertList.get(j).getCertificateId().toString())){
							responseData.setMessage("同一公司的使用证书不能重复!");//从添加list里判断
							return;
						}
					}
					QueryParamList params = new QueryParamList();
					params.addParam("companyId", new BigDecimal(c.getCompanyId()));
					params.addParam("certificateId", insert.getCertificateId());
					params.addParam("status",1);
					
					List<MdmCompanyCertificate> list=JPAUtil.load(MdmCompanyCertificate.class, params, null, null);
					if(list.size()>0){
						responseData.setMessage("同一公司的使用证书不能重复!");//一条数据从数据库进行判断
						return;
					}
				}
				
				
				for (int i = 0; i < certUpdateList.size(); i++) {
					MdmCompanyCertificate update=certUpdateList.get(i);
					for(int j=i+1;j<certUpdateList.size();j++){
						if((update.getCertificateId().toString()).equals(certUpdateList.get(j).getCertificateId().toString())){
							responseData.setMessage("同一公司的使用证书不能重复!");
							return;
						}
					}
					QueryParamList params = new QueryParamList();
					params.addParam("companyId", new BigDecimal(c.getCompanyId()));
					params.addParam("certificateId", update.getCertificateId());
					params.addParam("status",1);
					String sql="id<> "+update.getId();
					
					List<MdmCompanyCertificate> list=JPAUtil.load(MdmCompanyCertificate.class, params,sql,null,null, null);
					if(list.size()>0){
						responseData.setMessage("同一公司的使用证书不能重复!");
						return;
					}
					
					
				}
					
				this.saveCertifcate(c.getCompanyId(), certInsertList,
						certUpdateList, certDeleteList);
				mdmCompanyListCertificateService.updateAll(c, certInsertList, certUpdateList,certDeleteList);
				retrieveAll();
				responseData.setAjaxDataWrap("dataWrap", dataWrap);
				responseData.setMessage("保存成功");

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号