1、先看注解
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* @Author Minco
* @Date 8:44 2020-07-24
* @Description 品牌权限数据注解
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface LimitPinpai {
/**
* 用以判断品牌权限的品牌代码字段
*/
public String target() default "ppdm";
public boolean limit() default true;
}
2、实体类
@Data
public class Kchz {
private String type;
private String dxdm;
@LimitCangku(target = "dxdm")
@LimitPinpai(target = "dxdm")
private String dxmc;
private Integer sl;
@LimitPrice(type = LimitPrice.Type.JL,priceType =LimitPrice.PriceType.BZJJ)
private String bzjje;
@LimitPrice(type = LimitPrice.Type.L,priceType =LimitPrice.PriceType.BZSJ)
private String bzsje;
private Integer spks;
}
3、动态修改注解
@GetMapping("getKchz")
@ApiOperation(value = "库存汇总", notes = "group(分组,[cangku,pinpai,dalei,ndjj])")
@ApiOperationSupport(includeParameters = {"page","rows","ckdms","group"})
public JsonResult<IPage<Kchz>> getKchz(Term term) throws Exception {
fillTermAuthRep(term);
IPage<Kchz> iPage=zhService.getKchz(term);
String group =term.getGroup();
SysUserLimit limit= getUserLimit();
List<Kchz> list=iPage.getRecords();
for (Kchz et:list) {
boolean cangkuL_bool=group.equals("cangku"),pinpaiL_boo=group.equals("pinpai");
Field detailField = et.getClass().getDeclaredField("dxmc");
if (detailField != null) {
detailField.setAccessible(true);
LimitCangku annotation = detailField.getAnnotation(LimitCangku.class);
if (annotation != null) {
InvocationHandler ih = Proxy.getInvocationHandler(annotation);
Field memberValuesField = ih.getClass().getDeclaredField("memberValues");
memberValuesField.setAccessible(true);
Map memberValues = (Map)memberValuesField.get(ih);
memberValues.put("limit", cangkuL_bool); // set value to false
}
LimitPinpai annotation_pp = detailField.getAnnotation(LimitPinpai.class);
if (annotation_pp != null) {
InvocationHandler ih = Proxy.getInvocationHandler(annotation_pp);
Field memberValuesField = ih.getClass().getDeclaredField("memberValues");
memberValuesField.setAccessible(true);
Map memberValues = (Map)memberValuesField.get(ih);
memberValues.put("limit", pinpaiL_boo);
}
}
hiddenLimit(et,limit);
}
return toJRAjaxData(iPage);
}