diff --git a/adc-da-activiti/src/main/java/com/adc/da/common/ActDefineStartMap.java b/adc-da-activiti/src/main/java/com/adc/da/common/ActDefineStartMap.java index fbd1eb1e..41b5232e 100644 --- a/adc-da-activiti/src/main/java/com/adc/da/common/ActDefineStartMap.java +++ b/adc-da-activiti/src/main/java/com/adc/da/common/ActDefineStartMap.java @@ -19,7 +19,7 @@ public class ActDefineStartMap { map.put("3","StandAskForOpinion"); map.put("4","standardregulatoryinventory"); map.put("5","projectEvaluationNewProcess"); - map.put("6","Projectcomplianceassessment"); + map.put("6","xmhgpgXM"); map.put("8","nonConformanceRectificationKey"); diff --git a/adc-da-activiti/src/main/java/com/adc/da/workFlow/controller/WorkFlowController.java b/adc-da-activiti/src/main/java/com/adc/da/workFlow/controller/WorkFlowController.java index 0b534744..dd279e44 100644 --- a/adc-da-activiti/src/main/java/com/adc/da/workFlow/controller/WorkFlowController.java +++ b/adc-da-activiti/src/main/java/com/adc/da/workFlow/controller/WorkFlowController.java @@ -473,7 +473,7 @@ public class WorkFlowController { return str; } - @ApiOperation(value = "特殊完成任务节点 会更改草稿") + @ApiOperation(value = "特殊完成任务节点 会更·改草稿") @PostMapping("/completeTaskNew") public Wrapper completeTaskByUserIdNew( BusMesSpecial busMes){ Wrapper str = workFlowFeignClient.completeTaskByUserIdNew(busMes); diff --git a/adc-da-main/pom.xml b/adc-da-main/pom.xml index 57f23e42..66563e43 100644 --- a/adc-da-main/pom.xml +++ b/adc-da-main/pom.xml @@ -78,7 +78,12 @@ compile - + + + eu.bitwalker + UserAgentUtils + 1.21 + diff --git a/adc-da-slrs/src/main/java/com/adc/da/Log/BusinessType.java b/adc-da-slrs/src/main/java/com/adc/da/Log/BusinessType.java new file mode 100644 index 00000000..1c4b577d --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/Log/BusinessType.java @@ -0,0 +1,24 @@ +package com.adc.da.Log; + +public enum BusinessType { + /** + * 其他 + */ + OTHER, + /** + * 新增 + */ + INSERT, + /** + * 修改 + */ + UPDATE, + /** + * 删除 + */ + DELETE, + /** + * 查询 + */ + SEARCH, +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/Log/EpcLog.java b/adc-da-slrs/src/main/java/com/adc/da/Log/EpcLog.java new file mode 100644 index 00000000..9ecbda04 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/Log/EpcLog.java @@ -0,0 +1,28 @@ +package com.adc.da.Log; + +import org.apache.poi.ss.usermodel.DataValidationConstraint; +import org.springframework.stereotype.Component; + +import java.lang.annotation.*; + +@Target({ElementType.PARAMETER, ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface EpcLog { + + String value() default ""; + + /** + * 模块 + */ + public String title() default ""; + + /** + * 功能 + */ + public BusinessType businessType() default BusinessType.OTHER; + + + String description(); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/Log/logs.java b/adc-da-slrs/src/main/java/com/adc/da/Log/logs.java new file mode 100644 index 00000000..7b773894 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/Log/logs.java @@ -0,0 +1,145 @@ +package com.adc.da.Log; + +import com.adc.da.slrs.sysLog.entity.SysLog; +import com.adc.da.slrs.sysLog.service.ISysLogService; +import com.adc.da.util.LoginUserUtil; +import lombok.extern.slf4j.Slf4j; +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.annotation.AfterReturning; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Pointcut; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.servlet.http.HttpServletRequest; +import java.lang.reflect.Method; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.Executor; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +@Aspect +@Component +@Slf4j +public class logs { +//日志 注解方式存储日志 + + long beginTime; + + + @Autowired + ISysLogService sysLogService; + + @Autowired(required = false) + private HttpServletRequest request; + + // 配置织入点 + @Pointcut("@annotation(EpcLog)") + public void logPointCut() { + log.info("=================已进入监听=========="); + beginTime = System.currentTimeMillis(); + } + + + /** + * 后置通知(在方法执行之后并返回数据) 用于拦截Controller层无异常的操作 + * @param joinPoint 切点 + */ + @AfterReturning("logPointCut()") + public void after(JoinPoint joinPoint){ + Executor executor = Executors.newCachedThreadPool(); + try { + String description = getControllerMethodInfo(joinPoint).get("description").toString(); + Map logParams = request.getParameterMap(); +// String principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal().toString(); + + SysLog log = new SysLog(); +// ##请求用户 + log.setUserId(LoginUserUtil.getUserId()); +// ##日志标题 + log.setOperLocation(description); +// ##日志类型 + log.setOper(String.valueOf(getControllerMethodInfo(joinPoint).get("type"))); +// ##日志请求url +// log.setRequestUrl(request.getRequestURI());… +// ##请求方式 +// log.setRequestType(request.getMethod()); +// ##请求参数 + log.setJson(logParams.toString()); +// ##请求开始时间 + long endTime = System.currentTimeMillis(); +// ##请求耗时 + Long logElapsedTime = endTime - beginTime; + log.setRunTime(logElapsedTime.intValue()); + +// ##调用线程保存至log表 + executor.execute(new SaveSystemLogThread(log, sysLogService)); + } catch (Exception e) { + log.error("AOP后置通知异常", e); + } + ((ExecutorService) executor).shutdown(); + } + + /** + * 保存日志至数据库 + */ + protected static class SaveSystemLogThread implements Runnable { + + private SysLog log; + private ISysLogService logService; + + public SaveSystemLogThread(SysLog esLog, ISysLogService logService) { + this.log = esLog; + this.logService = logService; + } + + @Override + public void run() { + log.setId(String.valueOf(UUID.randomUUID())); + logService.save(log); + } + } + + /** + * 获取注解中对方法的描述信息 用于Controller层注解 + * @param joinPoint 切点 + * @return 方法描述 + * @throws Exception + */ + public static Map getControllerMethodInfo(JoinPoint joinPoint) throws Exception{ + + Map map = new HashMap(16); +// ## 获取目标类名 + String targetName = joinPoint.getTarget().getClass().getName(); +// ## 获取方法名 + String methodName = joinPoint.getSignature().getName(); +// ## 获取相关参数 + Object[] arguments = joinPoint.getArgs(); +// ## 生成类对象 + Class targetClass = Class.forName(targetName); +// ## 获取该类中的方法 + Method[] methods = targetClass.getMethods(); + + String description = ""; + Integer type = null; + + for(Method method : methods) { + if(!method.getName().equals(methodName)) { + continue; + } + Class[] clazzs = method.getParameterTypes(); + if(clazzs.length != arguments.length) { +// ## 比较方法中参数个数与从切点中获取的参数个数是否相同,原因是方法可以重载 + continue; + } + description = method.getAnnotation(EpcLog.class).description(); + type = method.getAnnotation(EpcLog.class).businessType().ordinal(); + map.put("description", description); + map.put("type", type); + } + return map; + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/controller/SarStandardsInfoController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/controller/SarStandardsInfoController.java index 6e51af8d..fab305d2 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/controller/SarStandardsInfoController.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/controller/SarStandardsInfoController.java @@ -1,10 +1,9 @@ package com.adc.da.slrs.sarStandardsInfo.controller; -import cn.afterturn.easypoi.excel.ExcelExportUtil; -import cn.afterturn.easypoi.excel.entity.ExportParams; import cn.hutool.core.util.ZipUtil; -import com.adc.da.att.entity.AttFileEO; +import com.adc.da.Log.BusinessType; +import com.adc.da.Log.EpcLog; import com.adc.da.common.FileUnZip; import com.adc.da.common.ReadExcel; import com.adc.da.exception.AdcDaBaseException; @@ -22,7 +21,6 @@ import com.adc.da.util.LoginUserUtil; import com.adc.da.util.UUIDUtils; import com.adc.da.utils.util.*; import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.swagger.annotations.ApiOperation; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; @@ -44,11 +42,9 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; -import java.net.URLEncoder; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.*; -import java.util.stream.Collectors; /** *

@@ -93,6 +89,7 @@ public class SarStandardsInfoController extends BaseController @ApiOperation(value = "|SarStandardsInfoEO|自定义分页查询") @GetMapping("/getSarStandardsInfoPage") + @EpcLog(description = "国内库或国外库查询",businessType = BusinessType.SEARCH) //@RequiresPermissions("lawss:sarStandardsInfo:getSarStandardsInfoPage") public ResponseMessage> getSarStandardsInfoPage(SarStandardsInfoEOPage page,@RequestParam(defaultValue = "0") String mark) throws Exception { if (null != page.getNowOrderBy()) { diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/controller/SysLogController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/controller/SysLogController.java new file mode 100644 index 00000000..5bfa71ab --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/controller/SysLogController.java @@ -0,0 +1,23 @@ +package com.adc.da.slrs.sysLog.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import com.adc.da.slrs.sysLog.entity.SysLog; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RestController; +import com.adc.da.base.web.BaseController; + +/** +*

+ * 前端控制器 + *

+* +* @author yzh +* @since 2022-02-15 +*/ +@RestController +@Api(description = "|SysLog|") +@RequestMapping("/sysLog/sys-log") +public class SysLogController extends BaseController { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/dao/SysLogDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/dao/SysLogDao.java new file mode 100644 index 00000000..1edd1d49 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/dao/SysLogDao.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.sysLog.dao; + +import com.adc.da.slrs.sysLog.entity.SysLog; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author yzh + * @since 2022-02-15 + */ +public interface SysLogDao extends BaseMapper { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/entity/SysLog.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/entity/SysLog.java new file mode 100644 index 00000000..b74c6117 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/entity/SysLog.java @@ -0,0 +1,59 @@ +package com.adc.da.slrs.sysLog.entity; + +import com.adc.da.base.entity.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

+ * + *

+ * + * @author yzh + * @since 2022-02-15 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@ApiModel(value="SysLog对象", description="") +public class SysLog extends BaseEntity { + + private static final long serialVersionUID = 1L; + + private String id; + + @ApiModelProperty(value = "用户id") + private String userId; + + @ApiModelProperty(value = "操作时间") + private String operTime; + + @ApiModelProperty(value = "操作类型") + private String oper; + + @ApiModelProperty(value = "操作ip") + private String operIp; + + @ApiModelProperty(value = "操作系统类型") + private String operSystem; + + @ApiModelProperty(value = "使用的浏览器") + private String operBrowser; + + @ApiModelProperty(value = "日志等级") + private String operLevel; + + @ApiModelProperty(value = "操作模块") + private String operLocation; + + @ApiModelProperty(value = "传参") + private String json; + + @ApiModelProperty(value = "接口耗时") + private int runTime; + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/service/ISysLogService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/service/ISysLogService.java new file mode 100644 index 00000000..8a6a5cc3 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/service/ISysLogService.java @@ -0,0 +1,16 @@ +package com.adc.da.slrs.sysLog.service; + +import com.adc.da.slrs.sysLog.entity.SysLog; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author yzh + * @since 2022-02-15 + */ +public interface ISysLogService extends IService { + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/service/impl/SysLogServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/service/impl/SysLogServiceImpl.java new file mode 100644 index 00000000..cc62776a --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sysLog/service/impl/SysLogServiceImpl.java @@ -0,0 +1,20 @@ +package com.adc.da.slrs.sysLog.service.impl; + +import com.adc.da.slrs.sysLog.entity.SysLog; +import com.adc.da.slrs.sysLog.dao.SysLogDao; +import com.adc.da.slrs.sysLog.service.ISysLogService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author yzh + * @since 2022-02-15 + */ +@Service +public class SysLogServiceImpl extends ServiceImpl implements ISysLogService { + +} diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/SarStandMenu/SarStandMenuMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/SarStandMenu/SarStandMenuMapper.xml index 2efd3a54..5197d677 100644 --- a/adc-da-slrs/src/main/resources/mybatis/mapper/SarStandMenu/SarStandMenuMapper.xml +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/SarStandMenu/SarStandMenuMapper.xml @@ -94,7 +94,7 @@ LEFT JOIN ts_resource ON SAR_STAND_MENU.MENU_ID = ts_resource.ID SAR_STAND_MENU.VALID_FLAG = 0 - + AND stand_id = #{standId} diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussionessStand/SarBussionessStandMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussionessStand/SarBussionessStandMapper.xml index e36e2552..c440bcd0 100644 --- a/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussionessStand/SarBussionessStandMapper.xml +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sarBussionessStand/SarBussionessStandMapper.xml @@ -58,7 +58,7 @@ stand_status, replaced_stand_num, replace_stand_num,put_time, issue_time, stand_en_name, stand_name, stand_code,stand_status, - SAR_BUSSIONESS_STAND.id + SAR_BUSSIONESS_STAND.id, SAR_BUSS_STAND_ATTR_INFO.DTQBBHBUSS diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/sysLog/SysLogMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/sysLog/SysLogMapper.xml new file mode 100644 index 00000000..c5dc2843 --- /dev/null +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/sysLog/SysLogMapper.xml @@ -0,0 +1,5 @@ + + + + +