java通过类的反射获取页面修改字段前后值以及字段名称

时间:2025-02-15 13:57:30
   public void saveChangeVolue(Object before, Object after,String log) {
		StringBuffer alterContent=new StringBuffer();
		//before和after都不为空时  --属性变化
		try {
			if (before != null && after != null) {
		    //获取class字节码
			Class<?> classBefor = ();
			Class<?> classAfter = ();
			//获取所有属性
			Field[] fsBefor = ();
			Field[] fsAfter = ();
			//获取类名
			String typeName = getClassName(().getName());
			for (Field bField : fsBefor) {
				//设置对象中成员 属性private为可读
				(true);
				for (Field aField : fsAfter) {
					(true);
                    Id id = ();
                    //临时解决。后期再改。。
                    if(((),"serialVersionUID")){
                    	continue;
                    }
                    PropertyDescriptor bpd = new PropertyDescriptor((), classBefor);
					if (((), ()) && id == null) {
						// 获得属性值
						Method bmethod = ();
						//构建一个属性描述器 把对应属性 propertyName 的 get 和 set 方法保存到属性描述器中  
						PropertyDescriptor apd = new PropertyDescriptor((), classAfter);
						//从属性描述器中获取 get 方法  
						Method amethod = ();
						// 获得属性类型
						if (().toString().equals("class ")
								&& ().toString().equals("class ")) {
							// 比较对象前后的属性值时候不相同
							if (!(((String) (before)),
									((String) (after)))) {
								DataChangeRecord dto = new DataChangeRecord();
								// 判断转换前后值都为null或空时,不需要记录变更数据
                                if(((String) (before))||((String) (after))){
								//记录到需要保存的表中,如记录表
                                        ()//字段名
    								//修改的字段
    								if (((()))) {
    									("编辑"+(())+','+(String) (before)+"为"+(String) (after));
									}
    								
    								(());
    								//(operateStatus);
    								(());
    								
    								(());
    								("1");
    								(dto);
                                }
							}
						}else if(().toString().equals("class ")){
							if (!(((before)),
									((after)))) {
								// 判断转换前后值都为null或空时,不需要记录变更数据
                                if((before)!=null||(after)!=null){
								/ /实体
                                	
                                	if((before)!=null){
                                		(((BigDecimal)(before)).toPlainString());
                                		("编辑"+(())+','+((BigDecimal)(before)).toPlainString());
                                	}
                                	
                                	if ((before)!=null && (after)!=null) {
										("为"+((BigDecimal)(after)).toPlainString());
									}
    								//保存数据到数据库
    						       //TODO
                                }
								
							}
						} else {
							if (!(((before)),
									((after)))) {
								// 判断转换前后值都为null或空时,不需要记录变更数据
                                if((before)!=null||(after)!=null){
                                	DataChangeRecord dto = new DataChangeRecord();
                                	
                                	if((before)!=null){
                                		(((before)));
                                		//修改的字段
                                		("编辑"+(())+','+((before)));
                                	}
                                	if ((before)!=null && (after)!=null) {
										("为"+((after)));
									}
    								
    								//保存数据到数据库
    						       //TODO
                                }
								
							}
						}
					}
				}
			}
		//before为null,after不为null  --新增
		} else if (after != null && before == null) {
			Class<?> classAfter = ();
			Field[] fsAfter = ();
			String typeName = getClassName(().getName());
			for (Field aField : fsAfter) {
				(true);
				Id id = ();
				PropertyDescriptor apd = new PropertyDescriptor((), classAfter);
				Method amethod = ();
				if (().toString().equals("class ") && id == null) {
					// 判断转换前后值都为null或空时,不需要记录变更数据
                    if(((String) (after))){
                    	DataChangeRecord dto = new DataChangeRecord();
    					// 是否是字典属性,是:保存字典对应的名称
    					((String) (after));
    					(typeName);
    					(());
    					//(operateStatus);
    					(());
    					(());
    					("2");
    					(dto);
                    }
				}else if(().toString().equals("class ") && id == null){
					// 判断转换前后值都为null或空时,不需要记录变更数据
                    if((after)!=null){
						//保存数据到数据库
    						       //TODO
                    }
                   	
				} else if (id == null) {
					// 判断转换前后值都为null或空时,不需要记录变更数据
                    if((((after)))){
						//保存数据到数据库
    						       //TODO
                    }
				}
			}
		//before不为null,after为null --删除
		} else if (after == null && before != null) {
			Class<?> classBefore = ();
			Field[] fsBefore = ();
			String typeName = getClassName(().getName());
			for (Field bField : fsBefore) {
				(true);
				Id id = ();
				PropertyDescriptor bpd = new PropertyDescriptor((), classBefore);
				Method bmethod = ();
				if (().toString().equals("class ") && id == null) {
					if(((String) (before))){
					
						//保存数据到数据库
    						       //TODO
					}
				}else if(().toString().equals("class ") && id == null){
					// 判断转换前后值都为null或空时,不需要记录变更数据
                    if((before)!=null){
						//保存数据到数据库
    						       //TODO
                    }
				} else if (id == null) {
					// 判断转换前后值都为null或空时,不需要记录变更数据
                    if((((before)))){
						//保存数据到数据库
    						       //TODO
                    }
				}
			}
		}
		} catch (Exception e) {
			();
		}
		/**
		 * 插入数据库操作
		 */

	if(()>0){
		Field afterField=null;
		Field beforeField=null;
	 try{
			afterField = ().getDeclaredField("objectid");
		    (true);
			beforeField=().getDeclaredField("objectid");
	        (true);

		if(((after).toString(), (before).toString())){
			 insertBehavior(behaviorDto,userInfo);
		}
		} catch (Exception e) {
			();
		}
		
	
	
	}
	
}