From 2be27b91260536b8a10b2767d096da6f69dac2a8 Mon Sep 17 00:00:00 2001 From: yanps Date: Sat, 1 Mar 2025 14:26:52 +0800 Subject: [PATCH] =?UTF-8?q?add:=20acs=E6=B7=BB=E5=8A=A0=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E6=97=A5=E5=BF=97,lms=E4=BC=98=E5=8C=96=E5=86=B2=E5=BA=8A?= =?UTF-8?q?=E7=A9=BA=E6=BB=A1=E4=BA=A4=E6=8D=A2=E9=80=BB=E8=BE=91,?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=85=A5=E5=BA=93=E5=A4=A9=E6=95=B0=E6=98=BE?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/nl/common/logging/annotation/Log.java | 32 ++++++ .../nl/common/logging/aspect/LogAspect.java | 100 +++++++----------- .../service/logging/ISysLogService.java | 5 + .../nl/system/service/logging/dao/SysLog.java | 7 ++ .../logging/impl/SysLogServiceImpl.java | 69 ++++++++++++ .../service/menu/impl/SysMenuServiceImpl.java | 2 +- .../wms/ext/fab/controller/FabController.java | 2 +- .../dao/SchBaseVehiclematerialgroup.java | 3 +- ...chBaseVehiclematerialgroupServiceImpl.java | 6 ++ .../controller/SchBasePointController.java | 3 +- .../task/tasks/connector/CNTTask.java | 2 +- .../task/tasks/connector/FTGTask.java | 2 +- .../src/views/wms/sch/group/index.vue | 1 + .../src/views/wms/sch/point/index.vue | 28 +++-- 14 files changed, 179 insertions(+), 83 deletions(-) diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/common/logging/annotation/Log.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/common/logging/annotation/Log.java index 4d8105b..afe7f42 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/common/logging/annotation/Log.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/common/logging/annotation/Log.java @@ -15,6 +15,8 @@ */ package org.nl.common.logging.annotation; +import org.nl.acs.enums.InterfaceLogType; + import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -28,4 +30,34 @@ import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) public @interface Log { String value() default ""; + + + /** + * 是否打印到日志文件 + * + * @return + */ + boolean isPrintToLogFile() default false; + + + /** + * 是否插入操作日志表 + * + * @return + */ + boolean isAddLogTable() default true; + + /** + * 是否接口日志 + * + * @return + */ + boolean isInterfaceLog() default false; + + /** + * 接口日志类型 + * + * @return + */ + InterfaceLogType interfaceLogType() default InterfaceLogType.DEFAULT; } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/common/logging/aspect/LogAspect.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/common/logging/aspect/LogAspect.java index 297b3dd..e238542 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/common/logging/aspect/LogAspect.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/common/logging/aspect/LogAspect.java @@ -12,12 +12,14 @@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - *//* + */ package org.nl.common.logging.aspect; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; @@ -31,6 +33,10 @@ import org.nl.common.utils.SecurityUtils; import org.nl.common.utils.StringUtils; import org.nl.common.utils.ThrowableUtil; import org.nl.common.logging.domain.Log; +import org.nl.config.IdUtil; +import org.nl.system.service.logging.ISysLogService; +import org.nl.system.service.logging.dao.SysLog; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; @@ -41,79 +47,67 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.lang.reflect.Method; import java.lang.reflect.Parameter; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; -*/ -/** - * @author Zheng Jie - * @date 2018-11-24 - *//* @Component @Aspect @Slf4j public class LogAspect { - private final LogService logService; + @Autowired + private ISysLogService logService; ThreadLocal currentTime = new ThreadLocal<>(); - public LogAspect(LogService logService) { + public LogAspect(ISysLogService logService) { this.logService = logService; } - */ -/** - * 配置切入点 - *//* + @Pointcut("@annotation(org.nl.common.logging.annotation.Log)") public void logPointcut() { // 该方法无方法体,主要为了让同类中其他方法使用此切入点 } - */ -/** - * 配置环绕通知,使用在方法logPointcut()上注册的切入点 - * - * @param joinPoint join point for advice - *//* - @Around("logPointcut()") public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable { - ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); - HttpServletRequest request = attributes.getRequest(); - HttpServletResponse response = attributes.getResponse(); -// HttpServletRequest request = RequestHolder.getHttpServletRequest(); - - + String trackId = UUID.randomUUID().toString(); MethodSignature signature = (MethodSignature) joinPoint.getSignature(); Method method = signature.getMethod(); // 方法路径 String methodName = joinPoint.getTarget().getClass().getName() + "." + signature.getName() + "()"; - String params=getParameter(method, joinPoint.getArgs()); + String params = getParameter(method, joinPoint.getArgs()); - log.info("请求uri:{}", request.getRequestURI()); - log.info("请求方法:{}",methodName); - log.info("请求方法参数:{}",params); + org.nl.common.logging.annotation.Log logInfo = method.getAnnotation(org.nl.common.logging.annotation.Log.class); + //是否输出到日志文件 + if (logInfo.isPrintToLogFile()) { + log.info("track_id:{},请求方法:{},请求方法参数:{}", trackId, methodName, params); + } + HttpServletRequest request = RequestHolder.getHttpServletRequest(); + String requestIp = StringUtils.getIp(request); Object result; - currentTime.set(System.currentTimeMillis()); - result = joinPoint.proceed(); - Log log = new Log("INFO",System.currentTimeMillis() - currentTime.get()); - currentTime.remove(); - - logService.save(getUsername(), StringUtils.getBrowser(request), StringUtils.getIp(request),joinPoint, log); + long startTime = System.currentTimeMillis(); + try { + result = joinPoint.proceed(); + //是否把日志存到日志表 + if (logInfo.isAddLogTable()) { + SysLog log = new SysLog("INFO", System.currentTimeMillis() - startTime); + logService.save(getUsername(), StringUtils.getBrowser(request), requestIp, joinPoint, log); + } + } catch (Exception ex) { + log.error("track_id:{},error:{}", trackId, ex.getMessage()); + SysLog log = new SysLog("ERROR", System.currentTimeMillis() - startTime); + log.setException_detail(ThrowableUtil.getStackTrace(ex).getBytes()); + logService.save(getUsername(), StringUtils.getBrowser(request), StringUtils.getIp(request), (ProceedingJoinPoint) joinPoint, log); + throw ex; + } return result; } - */ -/** - * 根据方法和传入的参数获取请求参数 - *//* + private String getParameter(Method method, Object[] args) { List argList = new ArrayList<>(); @@ -142,29 +136,13 @@ public class LogAspect { return argList.size() == 1 ? JSONUtil.toJsonStr(argList.get(0)) : JSONUtil.toJsonStr(argList); } - */ -/** - * 配置异常通知 - * - * @param joinPoint join point for advice - * @param e exception - *//* - - @AfterThrowing(pointcut = "logPointcut()", throwing = "e") - public void logAfterThrowing(JoinPoint joinPoint, Throwable e) { - Log log = new Log("ERROR",System.currentTimeMillis() - currentTime.get()); - currentTime.remove(); - log.setExceptionDetail(ThrowableUtil.getStackTrace(e).getBytes()); - HttpServletRequest request = RequestHolder.getHttpServletRequest(); - logService.save(getUsername(), StringUtils.getBrowser(request), StringUtils.getIp(request), (ProceedingJoinPoint)joinPoint, log); - } + public String getUsername() { try { - return SecurityUtils.getCurrentUsername(); + return SecurityUtils.getCurrentNickName(); }catch (Exception e){ return ""; } } } -*/ diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/ISysLogService.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/ISysLogService.java index 5ae003c..719b313 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/ISysLogService.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/ISysLogService.java @@ -2,8 +2,10 @@ package org.nl.system.service.logging; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; +import org.aspectj.lang.ProceedingJoinPoint; import org.nl.common.domain.query.PageQuery; import org.nl.system.service.logging.dao.SysLog; +import org.springframework.scheduling.annotation.Async; import java.util.Map; @@ -25,6 +27,9 @@ public interface ISysLogService extends IService { */ IPage queryAll(Map criteria, PageQuery pageable); + @Async + void save(String username, String browser, String ip, ProceedingJoinPoint joinPoint, SysLog log); + /** * 查询异常详情 * @param id 日志ID diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/dao/SysLog.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/dao/SysLog.java index 6067341..6487391 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/dao/SysLog.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/dao/SysLog.java @@ -6,6 +6,7 @@ import java.time.LocalDateTime; import java.io.Serializable; import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; /** *

@@ -18,6 +19,7 @@ import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(callSuper = false) @TableName("sys_log") +@NoArgsConstructor public class SysLog implements Serializable { private static final long serialVersionUID = 1L; @@ -51,5 +53,10 @@ public class SysLog implements Serializable { private String create_time; + public SysLog(String logType, Long time) { + this.log_type = logType; + this.time = time; + } + } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/impl/SysLogServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/impl/SysLogServiceImpl.java index 9042e2f..717b698 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/impl/SysLogServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/logging/impl/SysLogServiceImpl.java @@ -1,20 +1,35 @@ package org.nl.system.service.logging.impl; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Dict; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.RandomUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.reflect.MethodSignature; import org.nl.common.domain.query.PageQuery; +import org.nl.common.logging.annotation.Log; +import org.nl.common.utils.StringUtils; import org.nl.common.utils.ValidationUtil; import org.nl.system.service.logging.ISysLogService; import org.nl.system.service.logging.dao.SysLog; import org.nl.system.service.logging.dao.mapper.SysLogMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; +import java.lang.reflect.Method; +import java.lang.reflect.Parameter; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -51,6 +66,60 @@ public class SysLogServiceImpl extends ServiceImpl impleme return page; } + @Override + public void save(String username, String browser, String ip, ProceedingJoinPoint joinPoint, SysLog logDto) { + MethodSignature signature = (MethodSignature) joinPoint.getSignature(); + Method method = signature.getMethod(); + Log aopLog = method.getAnnotation(Log.class); + + // 方法路径 + String methodName = joinPoint.getTarget().getClass().getName() + "." + signature.getName() + "()"; + + // 描述 + if (logDto != null) { + logDto.setDescription(aopLog.value()); + } + assert logDto != null; + logDto.setRequest_ip(ip); + logDto.setLog_id(RandomUtil.randomString(5)); + logDto.setAddress(StringUtils.getCityInfo(logDto.getRequest_ip())); + logDto.setMethod(methodName); + logDto.setUsername(username); + logDto.setParams(getParameter(method, joinPoint.getArgs())); + logDto.setBrowser(browser); + long currentTimeMillis = System.currentTimeMillis(); + String dateString = DateUtil.date(currentTimeMillis).toString(); + logDto.setCreate_time(dateString); + logMapper.insert(logDto); + } + + private String getParameter(Method method, Object[] args) { + List argList = new ArrayList<>(); + Parameter[] parameters = method.getParameters(); + for (int i = 0; i < parameters.length; i++) { + //将RequestBody注解修饰的参数作为请求参数 + RequestBody requestBody = parameters[i].getAnnotation(RequestBody.class); + if (requestBody != null) { + argList.add(args[i]); + } + //将RequestParam注解修饰的参数作为请求参数 + RequestParam requestParam = parameters[i].getAnnotation(RequestParam.class); + if (requestParam != null) { + Map map = new HashMap<>(); + String key = parameters[i].getName(); + if (!StrUtil.isEmpty(requestParam.value())) { + key = requestParam.value(); + } + map.put(key, args[i]); + argList.add(map); + } + } + if (argList.size() == 0) { + return ""; + } + return argList.size() == 1 ? JSONUtil.toJsonStr(argList.get(0)) : JSONUtil.toJsonStr(argList); + } + @Override public Object findByErrDetail(String id) { SysLog sysLog = logMapper.selectById(id); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/impl/SysMenuServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/impl/SysMenuServiceImpl.java index dda5b2d..fa916f5 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/impl/SysMenuServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/impl/SysMenuServiceImpl.java @@ -122,10 +122,10 @@ public class SysMenuServiceImpl extends ServiceImpl impl resources.setPid(null); addSystemTypeDict(resources); } + resources.setSub_count(0); baseMapper.insert(resources); // 计算子节点数目 - resources.setSub_count(0); // 更新父节点菜单数目 updateSubCnt(resources.getPid()); updateRootSystemType(resources); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/fab/controller/FabController.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/fab/controller/FabController.java index a993259..8d57a27 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/fab/controller/FabController.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/fab/controller/FabController.java @@ -54,7 +54,7 @@ public class FabController { private ISchBaseVehiclematerialgroupService iSchBaseVehiclematerialgroupService; @Autowired private WmsToConnectorService wmsToConnectorService; - private static final HashMap REGION_CODE = MapOf.of("货架", "1", "外协加工", "2", "内部加工", "3", "内部过道", "4","其他加工","5"); + private static final HashMap REGION_CODE = MapOf.of("货架", "1", "内部加工", "2", "外协加工", "3", "内部过道", "4","其他加工","5"); /** diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/SchBaseVehiclematerialgroup.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/SchBaseVehiclematerialgroup.java index 93ac91e..d4cc5ed 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/SchBaseVehiclematerialgroup.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/SchBaseVehiclematerialgroup.java @@ -168,7 +168,8 @@ public class SchBaseVehiclematerialgroup implements Serializable { @TableField(exist = false) private String materialFile; - + @TableField(exist = false) + private String between; @TableField(exist = false) private String material_name; @TableField(exist = false) diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/SchBaseVehiclematerialgroupServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/SchBaseVehiclematerialgroupServiceImpl.java index 5f37ca5..9610f9e 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/SchBaseVehiclematerialgroupServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/SchBaseVehiclematerialgroupServiceImpl.java @@ -1,6 +1,7 @@ package org.nl.wms.sch.group.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.IdUtil; @@ -50,6 +51,8 @@ import java.awt.image.BufferedImage; import java.io.*; import java.net.InetAddress; import java.net.UnknownHostException; +import java.time.LocalDate; +import java.time.temporal.ChronoUnit; import java.util.*; import java.util.List; import java.util.stream.Collectors; @@ -109,6 +112,9 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl delete(@RequestBody Set ids) { schBasePointService.deleteAll(ids); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/connector/CNTTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/connector/CNTTask.java index 8ef1c8a..62330a6 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/connector/CNTTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/connector/CNTTask.java @@ -43,7 +43,7 @@ public class CNTTask extends AbstractTask { private static final String TASK_CONFIG_CODE = "CNTTask"; - private static final String[] EMPTY_POINT = {"13-01-01","13-01-03"}; + private static final String[] EMPTY_POINT = {"13-01-01","13-01-04"}; @Autowired private ISchBasePointService pointService; @Autowired diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/connector/FTGTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/connector/FTGTask.java index 37eb0c6..ea3178d 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/connector/FTGTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/connector/FTGTask.java @@ -46,7 +46,7 @@ public class FTGTask extends AbstractTask { private static final String TASK_CONFIG_CODE = "FTGTask"; - private static final String[] EMPTY_POINT = {"13-01-02","13-01-04"}; + private static final String[] EMPTY_POINT = {"13-01-02","13-01-03"}; @Autowired private ISchBasePointService pointService; @Autowired diff --git a/lms/nladmin-ui/src/views/wms/sch/group/index.vue b/lms/nladmin-ui/src/views/wms/sch/group/index.vue index a30dd2e..d86d6b4 100644 --- a/lms/nladmin-ui/src/views/wms/sch/group/index.vue +++ b/lms/nladmin-ui/src/views/wms/sch/group/index.vue @@ -224,6 +224,7 @@ + diff --git a/lms/nladmin-ui/src/views/wms/sch/point/index.vue b/lms/nladmin-ui/src/views/wms/sch/point/index.vue index 16c52ff..1bb240d 100644 --- a/lms/nladmin-ui/src/views/wms/sch/point/index.vue +++ b/lms/nladmin-ui/src/views/wms/sch/point/index.vue @@ -231,7 +231,7 @@ - + - + {{ item.label }} @@ -345,24 +345,15 @@ - + - + --> @@ -431,7 +422,7 @@ export default { optShow: { add: true, edit: true, - del: true, + del: false, download: false, reset: true }, @@ -443,6 +434,11 @@ export default { }, data() { return { + permission: { + add: ['point:add'], + edit: ['admin', 'user:edit'], + del: ['admin', 'user:del'] + }, dict: { label: { point_status: {