yangys
2025-09-09 240a4fa7811733f9617227cb58670a71b27389e1
增加异常文件统计
已添加3个文件
已修改6个文件
253 ■■■■■ 文件已修改
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/entity/MachineFile.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineFileMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineFileMapper.xml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/MachineFileService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/vo/MachineFileQueryVO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/controller/MachineFileExceptionController.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/vo/MachineFileExceptionExcelVO.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/vo/MachineFileExceptionQueryVO.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
doc/sql/mdm/mdm.mysql.all.create.sql 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/entity/MachineFile.java
@@ -61,6 +61,28 @@
     * temp目录
     */
    public static final String DIR_TYPE_TEMP = "TEMP";
    /**
     * æ–‡ä»¶å¼‚常类型:正常
     */
    public static final int EXCEPTION_OK = 0;
    /**
     * æ–‡ä»¶å¼‚常类型:非文本文件
     */
    public static final int EXCEPTION_NOT_TEXT = 1;
    /**
     * æ–‡ä»¶å¼‚常类型:文件名格式不合法
     */
    public static final int EXCEPTION_BAD_FILENAME = 2;
    /**
     * æ–‡ä»¶å¼‚常类型:文件确失(段数不够)
     */
    public static final int EXCEPTION_LOST_FILES = 3;
    /**
     * æ–‡ä»¶å¼‚常类型:文件段数与下发记录不匹配(车床/现场编制除外)
     */
    public static final int EXCEPTION_NOT_MATCH_SEND = 3;
    /**
     * æ–‡ä»¶å
@@ -106,6 +128,13 @@
     * ç¨‹åºçŠ¶æ€ï¼ˆ1试切;2固化;3偏离;4未知)
     */
    private Integer programStatus;
    /**
     * REC目录文件异常类型(0/null:正常; 1非文本格式;2:文件名格式不合法;3:文件确失(段数不够);4:文件段数与下发记录不匹配(车床/现场编制除外)
     */
    private Integer exceptionType;
    /**
     * ç”Ÿæˆæ–‡ä»¶å¤§å°çš„æ˜¾ç¤ºæ–‡æœ¬
     * @return æ˜¾ç¤ºæ–‡æœ¬
@@ -133,4 +162,21 @@
        setStatus(STATUS_REJECTED);
        this.determineTime = new Date();
    }
    /**
     * å¼‚常详细描述
     * @return æè¿°æ–‡æœ¬
     */
    public String getExceptionMsg(){
        if(exceptionType == null){
            return "正常";
        }
        return switch (exceptionType) {
            case 1 -> "非文本";
            case 2 -> "文件名格式错误";
            case 3 -> "文件确失";
            case 4 -> "段数与下发记录不匹配";
            default -> "正常";
        };
    }
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineFileMapper.java
@@ -8,6 +8,7 @@
import org.springblade.mdm.machinefile.vo.MachineAcceptedFileHandleQueryVO;
import org.springblade.mdm.machinefile.vo.MachineBackFileQueryVO;
import org.springblade.mdm.machinefile.vo.MachineAcceptedFileVO;
import org.springblade.mdm.statreport.vo.MachineFileExceptionQueryVO;
public interface MachineFileMapper extends BladeMapper<MachineFile> {
    /**
@@ -26,10 +27,11 @@
    IPage<MachineFile> filePageForAccept(IPage<MachineAcceptedFileVO> page, @Param("query")MachineBackFileQueryVO queryVO);
    /**
     * æœºåºŠå›žä¼ æ–‡ä»¶å¤„理分页查询
     * å¼‚常文件列表查询
     * @param page
     * @param query
     * @return
     */
    //IPage<MachineAcceptedFileVO> handlePageQuery(@Param("page")IPage<MachineAcceptedFileVO> page, @Param("query") MachineAcceptedFileHandleQueryVO query);
    IPage<MachineFile> exceptionFilePageQuery(IPage<Object> page,@Param("query") MachineFileExceptionQueryVO query);
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineFileMapper.xml
@@ -89,4 +89,25 @@
        </where>
        order by f.file_create_time desc
    </select>
    <!--异常文件记录查询-->
    <select id="exceptionFilePageQuery" resultType="org.springblade.mdm.machinefile.entity.MachineFile">
        select f.id,f.name,f.machine_code,f.file_create_time, f.file_modify_time,f.md5,f.file_size,f.exception_type,f.create_time,f.update_time
        from mdm_machine_file f join mdm_machine m on f.machine_code=m.code and m.is_deleted=0
        <where>
            f.dir_type='REC' and f.is_deleted=0 and f.exception_type is not null and f.exception_type &lt;&gt; 0
            <if test="query.name!=null and query.name!=''">
                and f.name like CONCAT('%', #{query.name,jdbcType=VARCHAR},'%')
            </if>
            <if test="query.fileCreateTimeBegin!=null">
                and  f.file_create_time &gt;= #{query.fileCreateTimeBegin}
            </if>
            <if test="query.fileCreateTimeEnd!=null">
                and  f.file_create_time &lt;= #{query.fileCreateTimeEnd}
            </if>
        </where>
        order by f.file_create_time desc
    </select>
</mapper>
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/MachineFileService.java
@@ -19,6 +19,7 @@
import org.springblade.mdm.machinefile.vo.MachineFileQueryVO;
import org.springblade.mdm.machinefile.vo.MachineBackFileQueryVO;
import org.springblade.mdm.program.vo.CompareDataVO;
import org.springblade.mdm.statreport.vo.MachineFileExceptionQueryVO;
import org.springblade.mdm.utils.FileContentUtil;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -235,4 +236,14 @@
    public void deleteById(Long id) {
        baseMapper.deleteById(id);
    }
    /**
     * å¼‚常文件记录查询
     * @param query
     * @return
     */
    @Transactional(readOnly = true)
    public IPage<MachineFile> exceptionFilePageQuery(MachineFileExceptionQueryVO query) {
        return baseMapper.exceptionFilePageQuery(Condition.getPage(query),query);
    }
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/vo/MachineFileQueryVO.java
@@ -15,7 +15,7 @@
@Setter
@Getter
public class MachineFileQueryVO extends Query {
    @Schema(description = "文件名成")
    @Schema(description = "文件名称")
    private String name;
    @Schema(description = "目录类型")
    private String dirType;
blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/controller/MachineFileExceptionController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,98 @@
package org.springblade.mdm.statreport.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.mdm.basesetting.machine.entity.Machine;
import org.springblade.mdm.basesetting.machine.service.MachineService;
import org.springblade.mdm.basesetting.producedivision.entity.MdmDept;
import org.springblade.mdm.basesetting.producedivision.service.MdmDeptService;
import org.springblade.mdm.machinefile.entity.MachineFile;
import org.springblade.mdm.machinefile.service.MachineFileChangeHisService;
import org.springblade.mdm.machinefile.service.MachineFileService;
import org.springblade.mdm.machinefile.vo.*;
import org.springblade.mdm.program.vo.CompareDataVO;
import org.springblade.mdm.statreport.vo.MachineFileExceptionExcelVO;
import org.springblade.mdm.statreport.vo.MachineFileExceptionQueryVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
 * å·¥æŽ§ç½‘异常文件记录
 *
 * @author yangys
 */
@NonDS
@RestController
@RequestMapping("/statreport/exceptionfile")
@Tag(name = "工控网程序节点", description = "工控网程序节点")
@Slf4j
public class MachineFileExceptionController {
    @Autowired
    private MachineFileService machineFileService;
    @Autowired
    private MdmDeptService mdmDeptService;
    @Autowired
    private MachineService machineService;
    @GetMapping("/page")
    @Operation(summary = "文件异常记录列表", description = "文件异常记录列表")
    public R<IPage<MachineFile>> page(MachineFileExceptionQueryVO query) {
        /*
        if("workshop".equals(query.getNodeType()) || "seg".equals(query.getNodeType())) {
            //节点为车间、工段
            MdmDept dept = mdmDeptService.getById(query.getNodeId());
            String idStr = dept.getAncestors()+","+dept.getId();
            List<MdmDept> depts = mdmDeptService.lambdaQuery().likeRight(MdmDept::getParentId, query.getNodeId()).list();
            List<Long> deptIds = new ArrayList<>(depts.stream().map(MdmDept::getId).toList());
            deptIds.add(dept.getId());
            //+本车间
            //Func.toStrList(",",idStr)
            query.setDeptIds(deptIds);
        }else if("machine".equals(query.getNodeType())){
            Machine machine = machineService.getById(query.getNodeId());
            query.setMachineCode(machine.getCode());
        }else if("dir".equals(query.getNodeType())){
            query.setMachineCode(query.getMachineCode());
        }*/
        return R.data(machineFileService.exceptionFilePageQuery(query));
    }
    @Operation(summary = "回传程序处理导出Excel", description = "回传程序处理导出Excel")
    @GetMapping("/export-excel")
    public void exportExcel(MachineFileExceptionQueryVO query, HttpServletResponse response) {
        query.setCurrent(1);
        query.setSize(Integer.MAX_VALUE);
        IPage<MachineFile> page = machineFileService.exceptionFilePageQuery(query);
        //List<MachineFileExceptionExcelVO> list = BeanUtil.copy(page.getRecords(), MachineFileExceptionExcelVO.class);
        List<MachineFileExceptionExcelVO> list = new ArrayList<>();
            page.getRecords().forEach(machineFile ->{
            MachineFileExceptionExcelVO excelVO = new MachineFileExceptionExcelVO();
            BeanUtil.copyProperties(machineFile, excelVO);
            //excelVO.setExceptionMsg(machineFile.getExceptionMsg());
            list.add(excelVO);
        });
        ExcelUtil.export(response, "文件异常记录" + DateUtil.time(), "文件异常记录", list, MachineFileExceptionExcelVO.class);
    }
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/vo/MachineFileExceptionExcelVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
package org.springblade.mdm.statreport.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import lombok.Data;
import java.util.Date;
/**
 * æœºåºŠå›žä¼ æ–‡ä»¶å¤„理导出excelVO
 */
@Data
@ColumnWidth(25)
@HeadRowHeight(20)
@ContentRowHeight(18)
public class MachineFileExceptionExcelVO {
    @ExcelProperty("文件名称")
    private String name;
    @ColumnWidth(20)
    @ExcelProperty("机床")
    private String machineCode;
    @ExcelProperty("异常信息")
    private String exceptionMsg;
    @DateTimeFormat("yyyy-MM-dd HH:mm:ss")
    @ExcelProperty("时间")
    private Date fileCreateTime;
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/vo/MachineFileExceptionQueryVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
package org.springblade.mdm.statreport.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import org.springblade.core.mp.support.Query;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
/**
 * åˆ†é¡µæŸ¥è¯¢å‚æ•°
 */
@Schema(description = "新编程序统计查询对象")
@Setter
@Getter
public class MachineFileExceptionQueryVO extends Query {
    @Schema(description = "文件名称")
    private String name;
    @Schema(description = "文件创建时间开始")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime fileCreateTimeBegin;
    @Schema(description = "文件创建时间截止")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime fileCreateTimeEnd;
}
doc/sql/mdm/mdm.mysql.all.create.sql
@@ -173,6 +173,9 @@
   `program_no` varchar(20) NULL COMMENT '数控程序编号,流程发起后填充',
   `mes_task_id` varchar(100) NULL COMMENT 'MES任务唯一标识',
   `inspector` varchar(40) NULL COMMENT '检验员(mes提供)',
   `check_time` datetime DEFAULT NULL COMMENT '检验时间',
   `operator` varchar(40) NULL COMMENT '操作者(mes提供)',
   `operate_time` datetime DEFAULT NULL COMMENT '操作时间',
   `status` int DEFAULT NULL COMMENT '业务状态,1:初始化;2:流程已启动 3:重复派工;4,验证失败,5:启动异常',
   `create_dept` bigint DEFAULT NULL COMMENT '创建单位',
   `is_deleted` int DEFAULT NULL,
@@ -452,6 +455,7 @@
    `file_size` bigint DEFAULT NULL COMMENT '文件字节数',
    `determine_time` datetime DEFAULT NULL COMMENT '接受/拒绝的时间',
    `program_status` int  DEFAULT NULL COMMENT '程序状态(1试切;2固化;3偏离;4未知)',
    `exception_type` int  DEFAULT NULL COMMENT 'REC目录文件异常类型(0/null:正常; 1非文本格式;2:文件名格式不合法;3:文件确失(段数不够);4:文件段数与下发记录不匹配(车床/现场编制除外)',
    `status` int DEFAULT NULL COMMENT '业务状态',
    `create_dept` bigint DEFAULT NULL COMMENT '创建单位',
    `is_deleted` int DEFAULT NULL,