提交 bd6364f5 编写于 作者: zhouweidong's avatar zhouweidong

审计调整

上级 d40d7a52
...@@ -24,6 +24,7 @@ import ${pub.getPKGCodeName()}.util.enums.DEFieldDefaultValueType; ...@@ -24,6 +24,7 @@ import ${pub.getPKGCodeName()}.util.enums.DEFieldDefaultValueType;
import java.io.Serializable; import java.io.Serializable;
import lombok.*; import lombok.*;
import org.springframework.data.annotation.Transient; import org.springframework.data.annotation.Transient;
import ${pub.getPKGCodeName()}.util.annotation.Audit;
<#comment>SQL存储-Mybatis</#comment> <#comment>SQL存储-Mybatis</#comment>
<#if de.getStorageMode()==1> <#if de.getStorageMode()==1>
...@@ -86,13 +87,33 @@ public class ${item.getCodeName()} extends EntityMP implements Serializable { ...@@ -86,13 +87,33 @@ public class ${item.getCodeName()} extends EntityMP implements Serializable {
</#if> </#if>
</#if> </#if>
</#if> </#if>
<#comment>审计</#comment>
<#if defield.isEnableAudit()==true && de.getAuditMode()!=0>
<#if defieldano?? && defieldano!=''>
<#assign defieldano = defieldano+" , ">
<#assign defStdType=srfjavatype(defield.stdDataType)>
<#if defield.getPSCodeList?? && defield.getPSCodeList()??>
<#if ((defield.getPredefinedType())!'')!='LOGICVALID'>
<#assign defieldano=defieldano+",dict=\""+ sys.codeName+"_"+defield.getPSCodeList().codeName+"CodeList"+"\""> //拼接代码表
</#if>
</#if>
<#if defDataType == "DATETIME">//拼接时间
<#assign defieldano=defieldano+",fieldType=\"DATETIME\",format=\"yyyy-MM-dd HH:mm:ss\"">//日期时间型
<#elseif defDataType == "DATE">
<#assign defieldano=defieldano+",fieldType=\"DATE\",format=\"yyyy-MM-dd\"">//日期型
<#elseif defDataType == "TIME">
<#assign defieldano=defieldano+",fieldType=\"TIME\",format=\"HH:mm\"">//时间型
<#elseif defDataType=='PICKUPDATA'&& defStdType=='Timestamp'><#comment>外键值附加数据,数据类型为时间</#comment>
<#assign defieldano=defieldano+",fieldType=\"DATETIME\",format=\"yyyy-MM-dd HH:mm:ss\"">//日期时间型
</#if>
</#if>
</#if>
/** /**
* ${defield.getLogicName()} * ${defield.getLogicName()}
*/ */
<#comment>审计注解</#comment> <#comment>审计注解</#comment>
<#if defield.isEnableAudit()==true && de.getAuditMode()!=0> <#if defield.isEnableAudit()==true && de.getAuditMode()!=0>
<#assign auditExpression=getAuditExpression(defield)> @Audit
@${pub.getPKGCodeName()}.util.annotation.Audit(${auditExpression})
</#if> </#if>
<#comment>属性默认值</#comment> <#comment>属性默认值</#comment>
<#if defieldano?? && defieldano!='' && defield.isPhisicalDEField()==true> <#if defieldano?? && defieldano!='' && defield.isPhisicalDEField()==true>
...@@ -344,8 +365,7 @@ public class ${item.getCodeName()} extends EntityMongo implements Serializable { ...@@ -344,8 +365,7 @@ public class ${item.getCodeName()} extends EntityMongo implements Serializable {
</#if> </#if>
<#comment>审计注解</#comment> <#comment>审计注解</#comment>
<#if defield.isEnableAudit()==true && de.getAuditMode()!=0> <#if defield.isEnableAudit()==true && de.getAuditMode()!=0>
<#assign auditExpression=getAuditExpression(defield)> @Audit
@${pub.getPKGCodeName()}.util.annotation.Audit(${auditExpression})
</#if> </#if>
<#comment>属性默认值</#comment> <#comment>属性默认值</#comment>
<#if defieldano?? && defieldano!='' && defield.isPhisicalDEField()==true> <#if defieldano?? && defieldano!='' && defield.isPhisicalDEField()==true>
...@@ -513,8 +533,7 @@ public class ${item.getCodeName()} extends EntityClient implements Serializable ...@@ -513,8 +533,7 @@ public class ${item.getCodeName()} extends EntityClient implements Serializable
*/ */
<#comment>审计注解</#comment> <#comment>审计注解</#comment>
<#if defield.isEnableAudit()==true && de.getAuditMode()!=0> <#if defield.isEnableAudit()==true && de.getAuditMode()!=0>
<#assign auditExpression=getAuditExpression(defield)> @Audit
@${pub.getPKGCodeName()}.util.annotation.Audit(${auditExpression})
</#if> </#if>
<#comment>属性默认值</#comment> <#comment>属性默认值</#comment>
<#if defieldano?? && defieldano!='' && defield.isPhisicalDEField()==true> <#if defieldano?? && defieldano!='' && defield.isPhisicalDEField()==true>
...@@ -694,8 +713,7 @@ public class ${item.getCodeName()} extends EntityBase implements Serializable { ...@@ -694,8 +713,7 @@ public class ${item.getCodeName()} extends EntityBase implements Serializable {
*/ */
<#comment>审计注解</#comment> <#comment>审计注解</#comment>
<#if defield.isEnableAudit()==true && de.getAuditMode()!=0> <#if defield.isEnableAudit()==true && de.getAuditMode()!=0>
<#assign auditExpression=getAuditExpression(defield)> @Audit
@${pub.getPKGCodeName()}.util.annotation.Audit(${auditExpression})
</#if> </#if>
<#comment>属性默认值</#comment> <#comment>属性默认值</#comment>
<#if defieldano?? && defieldano!='' && defield.isPhisicalDEField()==true> <#if defieldano?? && defieldano!='' && defield.isPhisicalDEField()==true>
...@@ -843,28 +861,6 @@ public class ${item.getCodeName()} extends EntityBase implements Serializable { ...@@ -843,28 +861,6 @@ public class ${item.getCodeName()} extends EntityBase implements Serializable {
<#return unionKeyResult> <#return unionKeyResult>
</#function> </#function>
<#comment>审计注解</#comment>
<#function getAuditExpression defield>
<#assign defDataType = (defield.getDataType())!"">
<#assign defStdType=srfjavatype(defield.stdDataType)>
<#assign expressionCond="fieldLogicName=\""+ defield.getLogicName()+"\""> //拼接字段逻辑名
<#if defield.getPSCodeList?? && defield.getPSCodeList()??>
<#if ((defield.getPredefinedType())!'')!='LOGICVALID'>
<#assign expressionCond=expressionCond+",dictName=\""+ sys.codeName+"_"+defield.getPSCodeList().codeName+"CodeList"+"\""> //拼接代码表
</#if>
</#if>
<#if defDataType == "DATETIME">//拼接时间
<#assign expressionCond=expressionCond+",fieldType=\"DATETIME\",format=\"yyyy-MM-dd HH:mm:ss\"">//日期时间型
<#elseif defDataType == "DATE">
<#assign expressionCond=expressionCond+",fieldType=\"DATE\",format=\"yyyy-MM-dd\"">//日期型
<#elseif defDataType == "TIME">
<#assign expressionCond=expressionCond+",fieldType=\"TIME\",format=\"HH:mm\"">//时间型
<#elseif defDataType=='PICKUPDATA'&& defStdType=='Timestamp'><#comment>外键值附加数据,数据类型为时间</#comment>
<#assign expressionCond=expressionCond+",fieldType=\"DATETIME\",format=\"yyyy-MM-dd HH:mm:ss\"">//日期时间型
</#if>
<#return expressionCond/>
</#function>
......
...@@ -12,10 +12,7 @@ import java.lang.annotation.Target; ...@@ -12,10 +12,7 @@ import java.lang.annotation.Target;
@Target({ ElementType.FIELD}) @Target({ ElementType.FIELD})
public @interface Audit public @interface Audit
{ {
String fieldLogicName() default "";//字段逻辑名称
String dictName() default "";//代码表名称
String fieldType() default"";//字段类型
String format() default "";//格式化
} }
...@@ -30,6 +30,12 @@ public @interface DEField ...@@ -30,6 +30,12 @@ public @interface DEField
*/ */
String defaultValue() default ""; String defaultValue() default "";
/**
* 属性类型
* @return
*/
String fieldType() default"";
/** /**
* 默认值类型 * 默认值类型
* @return * @return
...@@ -53,5 +59,17 @@ public @interface DEField ...@@ -53,5 +59,17 @@ public @interface DEField
* @return * @return
*/ */
String logicdelval() default ""; String logicdelval() default "";
/**
* 代码表
* @return
*/
String dict() default "";
/**
* 日期格式化
* @return
*/
String format() default "";
} }
...@@ -9,8 +9,10 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; ...@@ -9,8 +9,10 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import ${pub.getPKGCodeName()}.util.annotation.Audit; import ${pub.getPKGCodeName()}.util.annotation.Audit;
import ${pub.getPKGCodeName()}.util.annotation.DEField;
import ${pub.getPKGCodeName()}.util.domain.EntityBase; import ${pub.getPKGCodeName()}.util.domain.EntityBase;
import ${pub.getPKGCodeName()}.util.domain.IBZDataAudit; import ${pub.getPKGCodeName()}.util.domain.IBZDataAudit;
import ${pub.getPKGCodeName()}.util.helper.DEFieldCacheMap;
import ${pub.getPKGCodeName()}.util.mapper.IBZDataAuditMapper; import ${pub.getPKGCodeName()}.util.mapper.IBZDataAuditMapper;
import ${pub.getPKGCodeName()}.util.security.AuthenticationUser; import ${pub.getPKGCodeName()}.util.security.AuthenticationUser;
import org.springframework.expression.EvaluationContext; import org.springframework.expression.EvaluationContext;
...@@ -74,7 +76,7 @@ public class SimpleAuditService extends ServiceImpl<IBZDataAuditMapper, IBZDataA ...@@ -74,7 +76,7 @@ public class SimpleAuditService extends ServiceImpl<IBZDataAuditMapper, IBZDataA
dataAudit.setOptime(new Timestamp(new Date().getTime())); dataAudit.setOptime(new Timestamp(new Date().getTime()));
if(request!=null) if(request!=null)
dataAudit.setIpaddress(getIpAddress(request, AuthenticationUser.getAuthenticationUser())); dataAudit.setIpaddress(getIpAddress(request, AuthenticationUser.getAuthenticationUser()));
dataAudit.setAuditinfo(getCreateAuditInfo(entity,auditFields)); dataAudit.setAuditinfo(getAuditInfo(entity,auditFields));
dataAudit.setIsdatachanged(1); dataAudit.setIsdatachanged(1);
cacheMap.add(dataAudit); cacheMap.add(dataAudit);
} }
...@@ -128,35 +130,37 @@ public class SimpleAuditService extends ServiceImpl<IBZDataAuditMapper, IBZDataA ...@@ -128,35 +130,37 @@ public class SimpleAuditService extends ServiceImpl<IBZDataAuditMapper, IBZDataA
dataAudit.setOptime(new Timestamp(new Date().getTime())); dataAudit.setOptime(new Timestamp(new Date().getTime()));
if(request!=null) if(request!=null)
dataAudit.setIpaddress(getIpAddress(request, AuthenticationUser.getAuthenticationUser())); dataAudit.setIpaddress(getIpAddress(request, AuthenticationUser.getAuthenticationUser()));
dataAudit.setAuditinfo(getRemoveAuditInfo(entity,auditFields)); dataAudit.setAuditinfo(getAuditInfo(entity,auditFields));
dataAudit.setIsdatachanged(1); dataAudit.setIsdatachanged(1);
cacheMap.add(dataAudit); cacheMap.add(dataAudit);
} }
/** private String getAuditInfo(EntityBase entity, Map<String, Audit> auditFields){
* 获取新建审计内容
* @param entity
* @param auditFields
* @return
*/
private String getCreateAuditInfo(EntityBase entity, Map<String, Audit> auditFields){
JSONArray auditFieldArray=new JSONArray();
String auditResult=""; String auditResult="";
if(auditFields.size()==0) if(auditFields.size()==0)
return ""; return auditResult;
Map<String, DEField> deFields= DEFieldCacheMap.getDEFields(entity.getClass());
if(deFields.size()==0)
return auditResult;
JSONArray auditFieldArray=new JSONArray();
for (Map.Entry<String, Audit> auditField : auditFields.entrySet()) { for (Map.Entry<String, Audit> auditField : auditFields.entrySet()) {
Object objFieldName=auditField.getKey();//获取注解字段 Object objFieldName=auditField.getKey();
Audit auditAnnotation=auditField.getValue();//拿到注解 String fieldName=String.valueOf(objFieldName);
String fieldLogicName=auditAnnotation.fieldLogicName(); DEField deField=null;
String fieldName=String.valueOf(objFieldName); //属性名称 if(deFields.containsKey(fieldName)){
Object value=entity.get(fieldName);//老属性值 deField= deFields.get(fieldName);
value=dataTransfer(value,auditAnnotation.fieldType(),auditAnnotation.format());//属性值转换 }
if(ObjectUtils.isEmpty(deField))
continue;
Object value=dataTransfer(entity.get(fieldName),deField.fieldType(),deField.format());
if(!StringUtils.isEmpty(value)){ if(!StringUtils.isEmpty(value)){
JSONObject auditFieldObj=new JSONObject(); JSONObject auditFieldObj=new JSONObject();
auditFieldObj.put("field",fieldLogicName); auditFieldObj.put("field",fieldName);
auditFieldObj.put("value",value); auditFieldObj.put("value",value);
if(!StringUtils.isEmpty(auditAnnotation.dictName())){ if(!StringUtils.isEmpty(deField.dict())){
auditFieldObj.put("dict",auditAnnotation.dictName()); auditFieldObj.put("dict",deField.dict());
} }
auditFieldArray.add(auditFieldObj); auditFieldArray.add(auditFieldObj);
} }
...@@ -179,56 +183,31 @@ public class SimpleAuditService extends ServiceImpl<IBZDataAuditMapper, IBZDataA ...@@ -179,56 +183,31 @@ public class SimpleAuditService extends ServiceImpl<IBZDataAuditMapper, IBZDataA
JSONArray auditFieldArray=new JSONArray(); JSONArray auditFieldArray=new JSONArray();
if(auditFields.size()==0) if(auditFields.size()==0)
return auditResult; return auditResult;
Map<String, DEField> deFields= DEFieldCacheMap.getDEFields(oldData.getClass());
if(deFields.size()==0)
return auditResult;
for (Map.Entry<String, Audit> auditField : auditFields.entrySet()) { for (Map.Entry<String, Audit> auditField : auditFields.entrySet()) {
Object objFieldName=auditField.getKey();//获取注解字段 Object objFieldName=auditField.getKey();//获取注解字段
String fieldName=String.valueOf(objFieldName); //属性名称 String fieldName=String.valueOf(objFieldName); //属性名称
Audit auditAnnotation=auditField.getValue();//拿到注解 DEField deField=null;
String fieldLogicName=auditAnnotation.fieldLogicName();//获取字段逻辑名称 if(deFields.containsKey(fieldName)){
deField= deFields.get(fieldName);
}
if(ObjectUtils.isEmpty(deField))
continue;
Object oldValue=oldData.get(fieldName);//老属性值 Object oldValue=oldData.get(fieldName);//老属性值
Object newValue=newData.get(fieldName);//新属性值 Object newValue=newData.get(fieldName);//新属性值
if(!compare(oldValue,newValue)){ if(!compare(oldValue,newValue)){
oldValue=dataTransfer(oldValue,auditAnnotation.fieldType(),auditAnnotation.format());//属性值转换 oldValue=dataTransfer(oldValue,deField.fieldType(),deField.format());//属性值转换
newValue=dataTransfer(newValue,auditAnnotation.fieldType(),auditAnnotation.format());//属性值转换 newValue=dataTransfer(newValue,deField.fieldType(),deField.format());//属性值转换
JSONObject auditFieldObj=new JSONObject();
auditFieldObj.put("field",fieldLogicName);
auditFieldObj.put("before",oldValue);
auditFieldObj.put("after",newValue);
if(!StringUtils.isEmpty(auditAnnotation.dictName())){
auditFieldObj.put("dict",auditAnnotation.dictName());
}
auditFieldArray.add(auditFieldObj);
}
}
if(auditFieldArray.size()>0){
auditResult=auditFieldArray.toString();
}
return auditResult;
}
/**
* 获取删除审计内容
* @param entity
* @param auditFields
* @return
*/
private String getRemoveAuditInfo(EntityBase entity, Map<String, Audit> auditFields){
String auditResult="";
JSONArray auditFieldArray=new JSONArray();
if(auditFields.size()==0)
return auditResult;
for (Map.Entry<String, Audit> auditField : auditFields.entrySet()) {
Object objFieldName=auditField.getKey();//获取注解字段
Audit auditAnnotation=auditField.getValue();//拿到注解
String fieldLogicName=auditAnnotation.fieldLogicName();
String fieldName=String.valueOf(objFieldName); //属性名称
Object value=entity.get(fieldName);//老属性值
value=dataTransfer(value,auditAnnotation.fieldType(),auditAnnotation.format());//属性值转换
if(!StringUtils.isEmpty(value)){
JSONObject auditFieldObj=new JSONObject(); JSONObject auditFieldObj=new JSONObject();
auditFieldObj.put("field",fieldLogicName); auditFieldObj.put("field",fieldName);
auditFieldObj.put("value",value); auditFieldObj.put("beforevalue",oldValue);
if(!StringUtils.isEmpty(auditAnnotation.dictName())){ auditFieldObj.put("value",newValue);
auditFieldObj.put("dict",auditAnnotation.dictName()); if(!StringUtils.isEmpty(deField.dict())){
auditFieldObj.put("dict",deField.dict());
} }
auditFieldArray.add(auditFieldObj); auditFieldArray.add(auditFieldObj);
} }
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册