zhangherong
2025-03-20 84ba58b0e2b8d4e0f354a4651b6a1420fe08aa40
art: 设备管理-设备履历添加 验收履历
已添加3个文件
已修改3个文件
182 ■■■■■ 文件已修改
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/aspect/EquipmentHistoryLogAspect.java 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/aspect/annotation/EquipmentHistoryLog.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/constant/EquipmentOperationTagEnum.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/aspect/EquipmentHistoryLogAspect.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,118 @@
package org.jeecg.modules.eam.aspect;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.aspectj.lang.reflect.MethodSignature;
import org.jeecg.modules.eam.aspect.annotation.EquipmentHistoryLog;
import org.jeecg.modules.eam.constant.EquipmentOperationTagEnum;
import org.jeecg.modules.eam.entity.EamEquipment;
import org.jeecg.modules.eam.entity.EamEquipmentHistoryLog;
import org.jeecg.modules.eam.service.IEamEquipmentHistoryLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Date;
/**
 * è®¾å¤‡å±¥åކ åˆ‡é¢å®žçް
 */
@Aspect
@Component
@Slf4j
public class EquipmentHistoryLogAspect {
    @Autowired
    private IEamEquipmentHistoryLogService equipmentHistoryLogService;
    @Pointcut("@annotation(org.jeecg.modules.eam.aspect.annotation.EquipmentHistoryLog)")
    public void logPointCut() {
    }
    // çŽ¯ç»•é€šçŸ¥ï¼šè®¡ç®—æ‰§è¡Œæ—¶é—´
    @Around("logPointCut()")
    public Object logMethodExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable {
        long start_time = System.currentTimeMillis();
        Object result = joinPoint.proceed();
        long end_time = System.currentTimeMillis();
        saveLog(joinPoint, result);
        log.info("[请求耗时:{}ms]", end_time - start_time);
        return result;
    }
    private void saveLog(JoinPoint joinPoint, Object result) {
        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
        Method method = signature.getMethod();
        EamEquipmentHistoryLog log = new EamEquipmentHistoryLog();
        EquipmentHistoryLog syslog = method.getAnnotation(EquipmentHistoryLog.class);
        if (syslog != null) {
            log.setBusinessTable(syslog.businessTable());
            log.setOperationTag(syslog.operationTag().name());
            convertResult(log, syslog.operationTag(), result);
            equipmentHistoryLogService.save(log);
        }
    }
    private void convertResult(EamEquipmentHistoryLog log, EquipmentOperationTagEnum operationTag, Object result) {
        switch (operationTag) {
            case ACCEPTANCE:
                if(result instanceof EamEquipment) {
                    EamEquipment equipment = (EamEquipment) result;
                    log.setEquipmentId(equipment.getId());
                    log.setBusinessId(equipment.getId());
                    log.setOperator(equipment.getCreateBy());
                    log.setDescription(equipment.getRemark());
                    log.setCreateTime(equipment.getAcceptanceCheckDate());
                }
                break;
            case POINT_INSPECTION:
                break;
            case SECOND_MAINTENANCE:
                break;
            case THIRD_MAINTENANCE:
                break;
            case REPORT_REPAIR:
                break;
            case REPAIRED:
                break;
            case MAJOR_REPAIR:
                break;
            case PARTIAL_REPAIR:
                break;
            case LEAN_OUT:
                break;
            case GIVE_BACK:
                break;
            case SEAL_UP:
                break;
            case UNSEALED:
                break;
            case TRANSFERRED:
                break;
            case SCRAPPED:
                break;
            default:
                break;
        }
    }
//    private long calculateExecutionTime(JoinPoint joinPoint) {
//        // é€šè¿‡çŽ¯ç»•é€šçŸ¥èŽ·å–ç²¾ç¡®æ—¶é—´
//        // ï¼ˆå®žé™…应使用环绕通知中的start_time和end_time计算)
//        return System.currentTimeMillis() - joinPoint.getArgs()[0].hashCode();
//        // æ­¤å¤„仅为示例,正确做法参见环绕通知实现
//    }
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/aspect/annotation/EquipmentHistoryLog.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
package org.jeecg.modules.eam.aspect.annotation;
import org.jeecg.modules.eam.constant.EquipmentOperationTagEnum;
import java.lang.annotation.*;
/**
 * è®¾å¤‡å±¥åŽ†æ³¨è§£
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface EquipmentHistoryLog {
    /**
     * æ“ä½œæ ‡ç­¾ æžšä¸¾
     * @return
     */
    EquipmentOperationTagEnum operationTag() default EquipmentOperationTagEnum.OTHER;
    /**
     * æ¶‰åŠçš„业务主表
     * @return
     */
    String businessTable() default "";
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/constant/EquipmentOperationTagEnum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package org.jeecg.modules.eam.constant;
/**
 * è®¾å¤‡å±¥åކ
 */
public enum EquipmentOperationTagEnum {
    ACCEPTANCE, //验收
    POINT_INSPECTION,  //点检
    SECOND_MAINTENANCE,  //二保
    THIRD_MAINTENANCE,  //三保
    REPORT_REPAIR,  //报修
    REPAIRED,  //ç»´ä¿®
    MAJOR_REPAIR,  //大修
    PARTIAL_REPAIR,  //项修
    LEAN_OUT,  //借出
    GIVE_BACK,  //归还
    SEAL_UP,  //封存
    UNSEALED,  //启封
    TRANSFERRED,  //转让
    SCRAPPED, //报废
    OTHER, //其它
    ;
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentController.java
@@ -66,8 +66,8 @@
    @ApiOperation(value = "设备台账-添加", notes = "设备台账-添加")
    @PostMapping(value = "/add")
    public Result<?> add(@RequestBody EamEquipment eamEquipment) {
        boolean b = eamEquipmentService.saveEquipment(eamEquipment);
        if (!b) {
        EamEquipment entity = eamEquipmentService.saveEquipment(eamEquipment);
        if (entity == null) {
            Result.OK("添加失败!");
        }
        return Result.OK("添加成功!");
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentService.java
@@ -15,5 +15,5 @@
     * å°è´¦è®¾å¤‡æ·»åŠ 
     * @param eamEquipment
     */
    boolean saveEquipment(EamEquipment eamEquipment);
    EamEquipment saveEquipment(EamEquipment eamEquipment);
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java
@@ -2,8 +2,10 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.modules.eam.aspect.annotation.EquipmentHistoryLog;
import org.jeecg.modules.eam.constant.AssetStatusEnum;
import org.jeecg.modules.eam.constant.EquipmentMaintenanceStatus;
import org.jeecg.modules.eam.constant.EquipmentOperationTagEnum;
import org.jeecg.modules.eam.constant.EquipmentRepairStatus;
import org.jeecg.modules.eam.entity.EamEquipment;
import org.jeecg.modules.eam.entity.EamEquipmentExtend;
@@ -32,9 +34,10 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean saveEquipment(EamEquipment eamEquipment) {
    @EquipmentHistoryLog(operationTag = EquipmentOperationTagEnum.ACCEPTANCE, businessTable = "eam_equipment")
    public EamEquipment saveEquipment(EamEquipment eamEquipment) {
        if (eamEquipment == null) {
            return false;
            return null;
        }
        //资产状态默认 æ­£å¸¸
        eamEquipment.setAssetStatus(AssetStatusEnum.NORMAL.name());
@@ -50,6 +53,6 @@
        equipmentExtendService.save(eamEquipmentExtend);
        //插入设备履历 TODO
        return true;
        return eamEquipment;
    }
}