From 240a4fa7811733f9617227cb58670a71b27389e1 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期二, 09 九月 2025 18:25:03 +0800
Subject: [PATCH] 增加异常文件统计

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/vo/MachineFileExceptionExcelVO.java            |   35 +++++++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/vo/MachineFileExceptionQueryVO.java            |   30 ++++++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineFileMapper.java                 |    6 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/MachineFileService.java               |   11 ++
 doc/sql/mdm/mdm.mysql.all.create.sql                                                                                |    4 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/controller/MachineFileExceptionController.java |   98 +++++++++++++++++++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/vo/MachineFileQueryVO.java                    |    2 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/entity/MachineFile.java                       |   46 +++++++++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineFileMapper.xml                  |   21 ++++
 9 files changed, 250 insertions(+), 3 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/entity/MachineFile.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/entity/MachineFile.java
index 894cd84..3edccd1 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/entity/MachineFile.java
+++ b/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:姝e父; 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 "姝e父";
+		}
+		return switch (exceptionType) {
+			case 1 -> "闈炴枃鏈�";
+			case 2 -> "鏂囦欢鍚嶆牸寮忛敊璇�";
+			case 3 -> "鏂囦欢纭け";
+			case 4 -> "娈垫暟涓庝笅鍙戣褰曚笉鍖归厤";
+			default -> "姝e父";
+		};
+	}
 }
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineFileMapper.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineFileMapper.java
index 9f2b648..c6cf329 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineFileMapper.java
+++ b/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);
+
 }
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineFileMapper.xml b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineFileMapper.xml
index abe01bd..f1a9b35 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineFileMapper.xml
+++ b/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>
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/MachineFileService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/MachineFileService.java
index d6f7507..f0414b3 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/MachineFileService.java
+++ b/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);
+    }
 }
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/vo/MachineFileQueryVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/vo/MachineFileQueryVO.java
index 0f67190..421f120 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/vo/MachineFileQueryVO.java
+++ b/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;
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/controller/MachineFileExceptionController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/controller/MachineFileExceptionController.java
new file mode 100644
index 0000000..827a0c9
--- /dev/null
+++ b/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);
+	}
+
+
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/vo/MachineFileExceptionExcelVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/vo/MachineFileExceptionExcelVO.java
new file mode 100644
index 0000000..17c5a83
--- /dev/null
+++ b/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;
+
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/vo/MachineFileExceptionQueryVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/statreport/vo/MachineFileExceptionQueryVO.java
new file mode 100644
index 0000000..2219b57
--- /dev/null
+++ b/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;
+}
diff --git a/doc/sql/mdm/mdm.mysql.all.create.sql b/doc/sql/mdm/mdm.mysql.all.create.sql
index 930c5cf..b7d067d 100644
--- a/doc/sql/mdm/mdm.mysql.all.create.sql
+++ b/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 '妫�楠屽憳锛坢es鎻愪緵锛�',
+   `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:姝e父; 1闈炴枃鏈牸寮忥紱2:鏂囦欢鍚嶆牸寮忎笉鍚堟硶锛�3:鏂囦欢纭け(娈垫暟涓嶅)锛�4:鏂囦欢娈垫暟涓庝笅鍙戣褰曚笉鍖归厤锛堣溅搴�/鐜板満缂栧埗闄ゅ)',
     `status` int DEFAULT NULL COMMENT '涓氬姟鐘舵��',
     `create_dept` bigint DEFAULT NULL COMMENT '鍒涘缓鍗曚綅',
     `is_deleted` int DEFAULT NULL,

--
Gitblit v1.9.3