自动化立体仓库 - WCS系统
pang.jiabao
2024-12-19 9b7851be1946bdef491aa8dbdd5ab73b12af8456
记录出库调用agv接口日志
5个文件已添加
1个文件已修改
321 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/entity/ApiLog.java 193 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/ApiLogMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/ApiLogService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/ApiLogServiceImpl.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ApiLogMapper.xml 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/ApiLog.java
New file
@@ -0,0 +1,193 @@
package com.zy.asrs.entity;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import com.core.common.Cools;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
@Data
@TableName("man_api_log")
public class ApiLog implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * ID
     */
    @ApiModelProperty(value= "ID")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * 日志编号
     */
    @ApiModelProperty(value= "日志编号")
    private String uuid;
    /**
     * 名称空间
     */
    @ApiModelProperty(value= "名称空间")
    private String namespace;
    /**
     * 接口地址
     */
    @ApiModelProperty(value= "接口地址")
    private String url;
    /**
     * 平台密钥
     */
    @ApiModelProperty(value= "平台密钥")
    private String appkey;
    /**
     * 时间戳
     */
    @ApiModelProperty(value= "时间戳")
    private String timestamp;
    /**
     * 客户端IP
     */
    @ApiModelProperty(value= "客户端IP")
    @TableField("client_ip")
    private String clientIp;
    /**
     * 请求内容
     */
    @ApiModelProperty(value= "请求内容")
    private String request;
    /**
     * 响应内容
     */
    @ApiModelProperty(value= "响应内容")
    private String response;
    /**
     * 异常内容
     */
    @ApiModelProperty(value= "异常内容")
    private String err;
    /**
     * 结果 1: 成功  0: 失败
     */
    @ApiModelProperty(value= "结果 1: 成功  0: 失败  ")
    private Integer result;
    /**
     * 状态 1: 正常  0: 禁用
     */
    @ApiModelProperty(value= "状态 1: 正常  0: 禁用  ")
    private Integer status;
    /**
     * 添加时间
     */
    @ApiModelProperty(value= "添加时间")
    @TableField("create_time")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    /**
     * 修改时间
     */
    @ApiModelProperty(value= "修改时间")
    @TableField("update_time")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date updateTime;
    /**
     * 备注
     */
    @ApiModelProperty(value= "备注")
    private String memo;
    public ApiLog() {}
    public ApiLog(String uuid, String namespace, String url, String appkey, String timestamp, String clientIp, String request, String response, String err, Integer result, Integer status, Date createTime, Date updateTime, String memo) {
        this.uuid = uuid;
        this.namespace = namespace;
        this.url = url;
        this.appkey = appkey;
        this.timestamp = timestamp;
        this.clientIp = clientIp;
        this.request = request;
        this.response = response;
        this.err = err;
        this.result = result;
        this.status = status;
        this.createTime = createTime;
        this.updateTime = updateTime;
        this.memo = memo;
    }
//    ApiLog apiLog = new ApiLog(
//            null,    // 日志编号
//            null,    // 名称空间
//            null,    // 接口地址
//            null,    // 平台密钥
//            null,    // 时间戳
//            null,    // 客户端IP
//            null,    // 请求内容
//            null,    // 响应内容
//            null,    // 异常内容
//            null,    // 结果
//            null,    // 状态
//            null,    // 添加时间
//            null,    // 修改时间
//            null    // 备注
//    );
    public String getResult$(){
        if (null == this.result){ return null; }
        switch (this.result){
            case 1:
                return "成功";
            case 0:
                return "失败";
            default:
                return String.valueOf(this.result);
        }
    }
    public String getStatus$(){
        if (null == this.status){ return null; }
        switch (this.status){
            case 1:
                return "正常";
            case 0:
                return "禁用";
            default:
                return String.valueOf(this.status);
        }
    }
    public String getCreateTime$(){
        if (Cools.isEmpty(this.createTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
    }
    public String getUpdateTime$(){
        if (Cools.isEmpty(this.updateTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
    }
}
src/main/java/com/zy/asrs/mapper/ApiLogMapper.java
New file
@@ -0,0 +1,14 @@
package com.zy.asrs.mapper;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.zy.asrs.entity.ApiLog;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Mapper
@Repository
public interface ApiLogMapper extends BaseMapper<ApiLog> {
    int clearWeekBefore();
}
src/main/java/com/zy/asrs/service/ApiLogService.java
New file
@@ -0,0 +1,12 @@
package com.zy.asrs.service;
import com.baomidou.mybatisplus.service.IService;
import com.zy.asrs.entity.ApiLog;
public interface ApiLogService extends IService<ApiLog> {
    void save(String namespace, String url, String appkey, String ip, String request, String response, boolean success);
    boolean clearWeekBefore();
}
src/main/java/com/zy/asrs/service/impl/ApiLogServiceImpl.java
New file
@@ -0,0 +1,51 @@
package com.zy.asrs.service.impl;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.core.common.SnowflakeIdWorker;
import com.zy.asrs.entity.ApiLog;
import com.zy.asrs.mapper.ApiLogMapper;
import com.zy.asrs.service.ApiLogService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import java.util.Date;
@Slf4j
@Service("apiLogService")
public class ApiLogServiceImpl extends ServiceImpl<ApiLogMapper, ApiLog> implements ApiLogService {
    @Autowired
    private SnowflakeIdWorker snowflakeIdWorker;
    @Async
    @Override
    public void save(String namespace, String url, String appkey, String ip, String request, String response, boolean success) {
        Date now = new Date();
        ApiLog apiLog = new ApiLog(
                String.valueOf(snowflakeIdWorker.nextId()),    // 日志编号
                namespace,    // 名称空间
                url,    // 接口地址
                appkey,    // 平台密钥
                String.valueOf(now.getTime()),    // 时间戳
                ip,    // 客户端IP
                request,    // 请求内容
                response,
                null,    // 异常内容
                success?1:0 ,    // 结果
                1,    // 状态
                now,    // 添加时间
                null,    // 修改时间
                null    // 备注
        );
        if (!this.insert(apiLog)) {
            log.error("接口调用日志保存失败!");
        }
    }
    @Override
    public boolean clearWeekBefore() {
        return this.baseMapper.clearWeekBefore() > 0;
    }
}
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -50,6 +50,7 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import javax.annotation.Resource;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -100,6 +101,9 @@
    private WrkMastService wrkMastService;
    @Autowired
    private BasRgvMapService basRgvMapService;
    @Resource
    private ApiLogService apiLogService;
    @Value("${wms.url}")
    private String wmsUrl;
@@ -2153,6 +2157,21 @@
//            log.info("转发agv任务:请求体:"+JSONObject.toJSONString(requestParam)+",返回值:"+jsonObject);
        }catch (Exception e){
        } finally {
            try {
                // 保存接口日志
                apiLogService.save(
                        "出库呼叫agv",
                        url + path,
                        null,
                        "127.0.0.1",
                        JSONObject.toJSONString(requestParam),
                        response,
                        success.equals("SUCCESS")
                );
            } catch (Exception e) {
                log.error("", e);
            }
        }
        return success;
    }
src/main/resources/mapper/ApiLogMapper.xml
New file
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zy.asrs.mapper.ApiLogMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.ApiLog">
        <id column="id" property="id" />
        <result column="uuid" property="uuid" />
        <result column="namespace" property="namespace" />
        <result column="url" property="url" />
        <result column="appkey" property="appkey" />
        <result column="timestamp" property="timestamp" />
        <result column="client_ip" property="clientIp" />
        <result column="request" property="request" />
        <result column="response" property="response" />
        <result column="err" property="err" />
        <result column="result" property="result" />
        <result column="status" property="status" />
        <result column="create_time" property="createTime" />
        <result column="update_time" property="updateTime" />
        <result column="memo" property="memo" />
    </resultMap>
    <delete id="clearWeekBefore">
        delete from man_api_log
        where 1=1
        and datediff(week,create_time,getdate()) >= 1
        and result != 1
    </delete>
</mapper>