From ad90205fe702d0238983c693a8effe255c680f27 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期三, 13 八月 2025 17:18:44 +0800
Subject: [PATCH] 机床回传文件导出开发
---
blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/entity/MachineFile.java | 27 ++
blade-service/blade-mdm/src/main/java/org/springblade/mdm/task/MachineFileScanTask.java | 41 +++
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machineback/service/MachineBackFileService.java | 18 +
blade-service/blade-mdm/src/test/java/org/springblade/mdm/utils/ProgramFileNameParserTest.java | 30 +++
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machineback/controller/MachineBackFileController.java | 1
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machineback/vo/MachineBackFileVO.java | 2
blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/mapper/MachineFileMapper.java | 3
blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/controller/MachineFileController.java | 7
blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/service/MachineFileService.java | 48 ++++-
blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/vo/ProgramNameVO.java | 35 +++
blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/mapper/MachineFileMapper.xml | 16 +
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machineback/service/NcProgramExportInnerService.java | 184 ++------------------
blade-service/blade-mdm/src/main/java/org/springblade/mdm/utils/ProgramFileNameParser.java | 56 ++++++
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machineback/controller/MachineBackFileHandleController.java | 16 +
14 files changed, 277 insertions(+), 207 deletions(-)
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/controller/MachineFileController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/controller/MachineFileController.java
index b7adfd1..4e93910 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/controller/MachineFileController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/controller/MachineFileController.java
@@ -11,16 +11,13 @@
import org.springblade.core.tool.api.R;
import org.springblade.mdm.gkw.programnode.entity.MachineFile;
import org.springblade.mdm.gkw.programnode.service.MachineFileService;
-import org.springblade.mdm.gkw.programnode.service.ProgramNodeService;
import org.springblade.mdm.gkw.programnode.vo.MachineFileQueryVO;
-import org.springblade.mdm.gkw.programnode.vo.ProgramNodeVO;
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.List;
/**
* 鍏紑缃戠▼搴忚妭鐐�
@@ -42,7 +39,7 @@
IPage<MachineFile> pageData = machineFileService.lambdaQuery()
.eq(MachineFile::getMachineCode,query.getMachineCode())
- .eq(MachineFile::getDirType,query.getDirType()).page(Condition.getPage(query));
+ .eq(MachineFile::getDirType,query.getDirType()).ne(MachineFile::getStatus,MachineFile.STATUS_REMOVED).page(Condition.getPage(query));
return R.data(pageData);
}
@@ -58,7 +55,7 @@
@Operation(summary = "淇濆瓨鏈哄簥鏂囦欢", description = "淇濆瓨鏈哄簥鏂囦欢鍒扮鐩�")
public R<Void> machineFileSave(Long id,String content) {
try {
- machineFileService.saveFileConent(id,content);
+ machineFileService.saveFileContent(id,content);
} catch (IOException e) {
log.error(e.getMessage());
return R.fail(e.getMessage());
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/entity/MachineFile.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/entity/MachineFile.java
index f964b37..9d75d89 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/entity/MachineFile.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/entity/MachineFile.java
@@ -19,19 +19,19 @@
/**
* 姝e父鐘舵�侊紝鍒氭帴鏀�
*/
- public static final int STATUS_NORMAL = 0;
+ public static final int STATUS_NORMAL = 1;
/**
* 鐢ㄦ埛鎺ユ敹浜�
*/
- public static final int STATUS_ACCEPTED = 1;
+ public static final int STATUS_ACCEPTED = 2;
/**
* 鐢ㄦ埛鎷掔粷鎺ユ敹
*/
- public static final int STATUS_REJECTED = 2;
+ public static final int STATUS_REJECTED = 3;
/**
* 鏂囦欢琚竻闄�(琚畾鏃朵换鍔℃爣璁�)
*/
- public static final int STATUS_REMOVED = 3;
+ public static final int STATUS_REMOVED = 4;
/**
* 鑺傜偣绫诲瀷锛� REC鐩綍
*/
@@ -71,7 +71,7 @@
*/
private Date fileCreateTime;
- private Date fileModifyDate;
+ private Date fileModifyTime;
/**
* 鏂囦欢md5
@@ -82,6 +82,10 @@
*/
private Long fileSize;
+ /**
+ * 纭鏃堕棿锛屾帴鍙楁垨鑰呮嫆缁濈殑鏃堕棿
+ */
+ private Date determineTime;
/**
* 鐢熸垚鏂囦欢澶у皬鐨勬樉绀烘枃鏈�
* @return 鏄剧ず鏂囨湰
@@ -98,4 +102,17 @@
public void markFileDeleted() {
this.setStatus(STATUS_REMOVED);
}
+
+ /**
+ * 鎺ユ敹鏂囦欢
+ */
+ public void accept() {
+ setStatus(STATUS_ACCEPTED);
+ this.determineTime = new Date();
+ }
+
+ public void reject() {
+ setStatus(STATUS_REJECTED);
+ this.determineTime = new Date();
+ }
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/mapper/MachineFileMapper.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/mapper/MachineFileMapper.java
index 2aa818e..002f6fd 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/mapper/MachineFileMapper.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/mapper/MachineFileMapper.java
@@ -6,6 +6,7 @@
import org.springblade.mdm.gkw.programnode.entity.MachineFile;
import org.springblade.mdm.gkw.programnode.entity.ProgramNode;
import org.springblade.mdm.gkw.programnode.vo.ProgramNodeVO;
+import org.springblade.mdm.machineback.vo.MachineBackFileHandleQueryVO;
import org.springblade.mdm.machineback.vo.MachineBackFileQueryVO;
import org.springblade.mdm.machineback.vo.MachineBackFileVO;
@@ -19,4 +20,6 @@
* @return
*/
IPage<MachineBackFileVO> machineBackFilePageQuery(IPage<MachineBackFileVO> page, @Param("query")MachineBackFileQueryVO queryVO);
+
+ IPage<MachineBackFileVO> handlePageQuery(@Param("page")IPage<MachineBackFileVO> page,@Param("query") MachineBackFileHandleQueryVO query);
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/mapper/MachineFileMapper.xml b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/mapper/MachineFileMapper.xml
index 70edce2..2a8fe72 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/mapper/MachineFileMapper.xml
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/mapper/MachineFileMapper.xml
@@ -14,7 +14,7 @@
select f.id,f.name,f.machine_code,f.file_create_time arrived_time,f.md5,f.file_size
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
+ f.dir_type='REC' and f.status=1 and f.is_deleted=0
<if test="query.machineSpec!=null and query.machineSpec!=''">
and m.machine_spec=#{query.machineSpec,jdbcType=VARCHAR}
@@ -27,6 +27,20 @@
</if>
</where>
</select>
+ <select id="handlePageQuery" resultType="org.springblade.mdm.machineback.vo.MachineBackFileVO">
+ select f.id,f.name,f.machine_code,f.file_create_time arrived_time,f.md5,f.file_size,f.determine_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.status=2 and f.is_deleted=0
+
+ <if test="query.confirmTimeBegin!=null">
+ and f.determine_time>=#{query.confirmTimeBegin}
+ </if>
+ <if test="query.confirmTimeEnd!=null">
+ and f.determine_time<=#{query.confirmTimeEnd}
+ </if>
+ </where>
+ </select>
</mapper>
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/service/MachineFileService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/service/MachineFileService.java
index 0997723..33915b3 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/service/MachineFileService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/service/MachineFileService.java
@@ -4,18 +4,16 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BizServiceImpl;
import org.springblade.core.mp.support.Condition;
-import org.springblade.core.tool.utils.Charsets;
-import org.springblade.core.tool.utils.Func;
import org.springblade.mdm.basesetting.machine.MachineService;
import org.springblade.mdm.basesetting.machine.entity.Machine;
import org.springblade.mdm.gkw.programnode.entity.MachineFile;
import org.springblade.mdm.gkw.programnode.mapper.MachineFileMapper;
+import org.springblade.mdm.machineback.vo.MachineBackFileHandleQueryVO;
import org.springblade.mdm.machineback.vo.MachineBackFileQueryVO;
import org.springblade.mdm.machineback.vo.MachineBackFileVO;
import org.springblade.mdm.utils.FileContentUtil;
@@ -25,11 +23,9 @@
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
-import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
-import java.util.List;
/**
* 鏈哄簥鏂囦欢
@@ -44,12 +40,14 @@
/**
* 妫�娴嬫枃浠舵槸鍚﹀瓨鍦�
* @param name 鏂囦欢鍚�
- * @param md5 鏂囦欢md5
+ * @param dirType 鏂囦欢澶圭被鍨�
* @param machineCode 鎵�灞炴満搴�
* @return 鏄惁瀛樺湪浜庡簱鍐�
*/
- public boolean fileExists(String name, String md5,String machineCode) {
- return this.lambdaQuery().eq(MachineFile::getName, name).eq(MachineFile::getMd5, md5).eq(MachineFile::getMachineCode, machineCode).count()>0;
+ public boolean fileExists(String name, String dirType,String machineCode) {
+ return this.lambdaQuery().eq(MachineFile::getName, name)
+ .eq(MachineFile::getDirType, dirType)
+ .eq(MachineFile::getMachineCode, machineCode).count()>0;
}
@Transactional(readOnly = true)
@@ -102,7 +100,7 @@
}
@Transactional
- public void saveFileConent(Long id, String content) throws IOException {
+ public void saveFileContent(Long id, String content) throws IOException {
MachineFile machineFile = getById(id);
Machine machine = machineService.getByCode(machineFile.getMachineCode());
@@ -116,8 +114,22 @@
log.error("璇诲彇鏂囦欢缂栫爜澶辫触",e);
throw new ServiceException("鑾峰彇鏂囦欢缂栫爜澶辫触");
}
-
FileUtils.writeStringToFile(filePath.toFile(),content,charsetName);
+ }
+
+ /**
+ * 鑾峰彇鏂囦欢鐨勮緭鍏ユ祦
+ * @param machineFile
+ * @return
+ * @throws IOException
+ */
+ public InputStream getInputStream(MachineFile machineFile) throws IOException {
+
+ Machine machine = machineService.getByCode(machineFile.getMachineCode());
+
+ String filePathStr = getBasePath(machine,machineFile.getDirType())+ File.separator+machineFile.getName();
+ Path filePath = Paths.get(filePathStr);
+ return Files.newInputStream(filePath);
}
@@ -125,4 +137,20 @@
public IPage<MachineBackFileVO> machineBackFilePageQuery(MachineBackFileQueryVO query) {
return this.baseMapper.machineBackFilePageQuery(Condition.getPage(query),query);
}
+
+ public MachineFile getExistsFile(String name, String dirType, String machineCode) {
+ return this.lambdaQuery().eq(MachineFile::getName, name)
+ .eq(MachineFile::getDirType, dirType)
+ .eq(MachineFile::getMachineCode, machineCode).list().stream().findFirst().orElse(null);
+ }
+
+ /**
+ * 鍥炰紶绋嬪簭澶勭悊 鍒嗛〉鏌ヨ
+ * @param query
+ * @return
+ */
+ public IPage<MachineBackFileVO> handlePageQuery(MachineBackFileHandleQueryVO query) {
+ IPage<MachineBackFileVO> page = this.getBaseMapper().handlePageQuery(Condition.getPage(query),query);
+ return page;
+ }
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/vo/ProgramNameVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/vo/ProgramNameVO.java
new file mode 100644
index 0000000..ebe888b
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/vo/ProgramNameVO.java
@@ -0,0 +1,35 @@
+package org.springblade.mdm.gkw.programnode.vo;
+
+import lombok.Data;
+
+/**
+ * 瑁呰浇绋嬪簭鍚嶇粨鏋�
+ */
+@Data
+public class ProgramNameVO {
+ /**
+ * 闆剁粍浠跺彿
+ */
+ private String drawingNo;
+ /**
+ * 宸ュ簭鍙�
+ */
+ private String processNo;
+
+ /**
+ * 宸ュ簭鐗堟
+ */
+ private String processEdition;
+ /**
+ * 娈垫暟
+ */
+ private int segmentCount;
+ /**
+ * 娈靛彿
+ */
+ private int segmentNo;
+
+ public String logicProgramName(){
+ return this.drawingNo+"-"+this.processNo;
+ }
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machineback/controller/MachineBackFileController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machineback/controller/MachineBackFileController.java
index 1218ad1..c3e55ff 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machineback/controller/MachineBackFileController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machineback/controller/MachineBackFileController.java
@@ -70,7 +70,6 @@
IPage<MachineBackFileVO> pages = machineFileService.machineBackFilePageQuery(query);
return R.data(pages);
}
-
/**
* 鍒嗛〉
*/
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machineback/controller/MachineBackFileHandleController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machineback/controller/MachineBackFileHandleController.java
index 9764f3a..4007c82 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machineback/controller/MachineBackFileHandleController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machineback/controller/MachineBackFileHandleController.java
@@ -18,6 +18,7 @@
import org.springblade.mdm.basesetting.machine.vo.MachineQueryVO;
import org.springblade.mdm.basesetting.machine.vo.MachineVO;
import org.springblade.mdm.commons.vo.IdsVO;
+import org.springblade.mdm.gkw.programnode.service.MachineFileService;
import org.springblade.mdm.machineback.service.MachineBackFileService;
import org.springblade.mdm.machineback.service.NcProgramExportInnerService;
import org.springblade.mdm.machineback.vo.MachineBackFileHandleExcelVO;
@@ -40,30 +41,31 @@
public class MachineBackFileHandleController {
private final MachineBackFileService service;
+ private final MachineFileService machineFileService;
private final NcProgramExportInnerService ncProgramExportInnerService;
/**
* 鍒嗛〉
*/
- @Operation(summary = "鍒嗛〉鏌ヨ", description = "鍚嶇О鎴栫紪鐮�")
+ @Operation(summary = "鍒嗛〉鏌ヨ", description = "鍚嶇О鎴栫紪鐮�,宸叉帴鍙楃殑鏂囦欢鍒楄〃")
@GetMapping("/page")
public R<IPage<MachineBackFileVO>> page(MachineBackFileHandleQueryVO query) {
- IPage<MachineBackFileVO> pages = service.handlePageQuery(query);
+ IPage<MachineBackFileVO> pages = machineFileService.handlePageQuery(query);
return R.data(pages);
}
@GetMapping("export-to-inner")
@ApiOperationSupport(order = 13)
@Operation(summary = "瀵煎嚭鍒版秹瀵嗙綉", description = "瀵煎嚭鍒版秹瀵嗙綉")
- public void exportToInner(@RequestBody @Parameter(description = "瀹℃壒琛╥d鏁扮粍") IdsVO vo, HttpServletResponse response) {
+ public void exportToInner(@Parameter(description = "瀹℃壒琛╥d鏁扮粍") String ids, HttpServletResponse response) {
- if(vo.getIds() == null || vo.getIds().length == 0) {
+ if(Func.isBlank(ids)) {
throw new ServiceException("鏈�夋嫨鏂囦欢瀵煎嚭");
}
try {
String filename = "toinnerexp-"+ DateUtil.format(DateUtil.now(), "yyyyMMddHHmm")+".zip";
response.setHeader("Content-Disposition", "attachment; filename="+filename);
response.setContentType("application/octet-stream");
- ncProgramExportInnerService.exportToInner(vo.getIds(),response.getOutputStream());
+ ncProgramExportInnerService.exportToInner(Func.toLongList(ids),response.getOutputStream());
} catch (IOException e) {
log.error("宸ユ帶缃戝鍑哄洖浼犳枃浠跺紓甯�", e);
throw new RuntimeException(e);
@@ -76,8 +78,8 @@
public void exportExcel(MachineBackFileHandleQueryVO query, HttpServletResponse response) {
query.setCurrent(1);
query.setSize(Integer.MAX_VALUE);
- IPage<MachineBackFileVO> pages = service.handlePageQuery(query);
-
+ //IPage<MachineBackFileVO> pages = service.handlePageQuery(query);
+ IPage<MachineBackFileVO> pages = machineFileService.handlePageQuery(query);
List<MachineBackFileHandleExcelVO> list = new ArrayList<>();
pages.getRecords().forEach(vo ->{
MachineBackFileHandleExcelVO excelVO = new MachineBackFileHandleExcelVO();
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machineback/service/MachineBackFileService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machineback/service/MachineBackFileService.java
index 343b7fc..c26cc30 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machineback/service/MachineBackFileService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machineback/service/MachineBackFileService.java
@@ -37,14 +37,14 @@
MachineFile mf;
for(Long id : idList){
mf = macineFileService.getById(id);
- mf.setStatus(MachineFile.STATUS_ACCEPTED);
+ mf.accept();
macineFileService.updateById(mf);
-
+ /*
MachineBackFile backFile = this.getById(id);
backFile.setStatus(MachineBackFile.STATUS_ACCEPTED);
backFile.setConfirmTime(DateUtil.now());
this.updateById(backFile);
-
+ */
}
}
@@ -56,12 +56,19 @@
public void reject(String ids) {
List<Long> idList = Func.toLongList(ids);
+ MachineFile mf;
+ for(Long id : idList){
+ mf = macineFileService.getById(id);
+ mf.reject();
+ macineFileService.updateById(mf);
+ }
+ /*
for(Long id : idList){
MachineBackFile backFile = this.getById(id);
backFile.setStatus(MachineBackFile.STATUS_REJECTED);
backFile.setConfirmTime(DateUtil.now());
this.updateById(backFile);
- }
+ }*/
}
@@ -81,10 +88,11 @@
* @param query 鏌ヨ鍙傛暟瀵硅薄
* @return 鍒嗛〉鏁版嵁
*/
+ /*
public IPage<MachineBackFileVO> handlePageQuery(MachineBackFileHandleQueryVO query) {
IPage<MachineBackFileVO> page = this.getBaseMapper().handlePageQuery(Condition.getPage(query),query);
return page;
}
-
+ */
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machineback/service/NcProgramExportInnerService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machineback/service/NcProgramExportInnerService.java
index 75b4119..a3d3d32 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machineback/service/NcProgramExportInnerService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machineback/service/NcProgramExportInnerService.java
@@ -17,6 +17,8 @@
import org.springblade.core.tool.utils.Func;
import org.springblade.mdm.flow.entity.ApproveRecord;
import org.springblade.mdm.flow.service.ApproveRecordService;
+import org.springblade.mdm.gkw.programnode.entity.MachineFile;
+import org.springblade.mdm.gkw.programnode.service.MachineFileService;
import org.springblade.mdm.machineback.entity.MachineBackFile;
import org.springblade.mdm.program.entity.NcNode;
import org.springblade.mdm.program.entity.NcProgram;
@@ -27,6 +29,7 @@
import org.springblade.mdm.program.service.NcProgramApprovedService;
import org.springblade.mdm.program.service.NcProgramService;
import org.springblade.mdm.program.vo.DncSendBackData;
+import org.springblade.mdm.utils.ProgramFileNameParser;
import org.springframework.stereotype.Service;
import java.io.ByteArrayInputStream;
@@ -34,8 +37,8 @@
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
@@ -50,7 +53,7 @@
public class NcProgramExportInnerService extends BizServiceImpl<NcProgramExchangeMapper, NcProgramExchange> {
private final MachineBackFileService machineBackFileService;
private final NcProgramService progService;
-
+ private final MachineFileService machineFileService;
private final NcNodeService ncNodeService;
private final OssTemplate ossTemplate;
@@ -61,182 +64,33 @@
/**
* 瀵煎嚭鍒版秹瀵嗙綉
- * @param backFileIds
+ * @param machineFileIds
* @param os
* @throws IOException
*/
- public void exportToInner(Long[] backFileIds, ServletOutputStream os) throws IOException {
+ public void exportToInner(List<Long> machineFileIds, ServletOutputStream os) throws IOException {
//FileOutputStream fos = new FileOutputStream("d:/exportDnc.zip");
try (ZipOutputStream zipOut = new ZipOutputStream(os);) {//os
- ArrayList<Long> programIdList = new ArrayList<Long>();
+ List<MachineFile> macineFiles = machineFileService.lambdaQuery().in(MachineFile::getId,machineFileIds).list();
+ Map<String,List<MachineFile>> map = macineFiles.stream()
+ .collect(Collectors.groupingBy(s -> ProgramFileNameParser.parseProgramName(s.getName()).logicProgramName()));
- for (Long backId : backFileIds) {
- MachineBackFile backFile = machineBackFileService.getById(backId);
- programIdList.add(backFile.getNcProgramId());
-
- NcProgram prog = progService.getById(backFile.getNcProgramId());
-
- //1111锛岄渶瑕佽鍦ㄦ枃浠�
- String filename = prog.getOssName();
- InputStream inputStream = ossTemplate.statFileStream(filename);
-
- addInputStreamToZip(zipOut, inputStream, prog.getName());
+ for (Map.Entry<String, List<MachineFile>> entry : map.entrySet()) {
+ String programName = entry.getKey();
+ List<MachineFile> progMachineFiles = entry.getValue();
+ for (MachineFile mf : progMachineFiles) {
+ try(InputStream ins = machineFileService.getInputStream(mf)) {
+ addInputStreamToZip(zipOut,ins , programName + "/" + mf.getName());
+ }
+ }
}
- addDataJson(zipOut, programIdList);
}
os.close();
}
-
- /**
- * 瀵煎叆鏁版嵁鏂囦欢
- * @param zipOut
- */
- void addDataJson(ZipOutputStream zipOut, List<Long> programIdList) throws IOException {
- addProgramDataJson(zipOut, programIdList);
- //addApproveRecordDataJson(zipOut, programIdList);
-
- addNcNodeDataJson(zipOut, programIdList);
- }
-
- /**
- * 瀵煎叆绋嬪簭璁板綍
- * @param zipOut
- * @param programIdList
- */
- void addProgramDataJson(ZipOutputStream zipOut, List<Long> programIdList) throws IOException {
- LambdaQueryWrapper<NcProgram> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.in(NcProgram::getId, programIdList);
- List<NcProgram> programList = progService.list(queryWrapper);
- JSONArray jsonArray = new JSONArray();
- for(NcProgram program : programList){
- JSONObject recObj = new JSONObject();
- recObj.put("id", program.getId());
- recObj.put("code", program.getCode());
- recObj.put("ossName",program.getOssName());
- recObj.put("isTextFile",program.getIsTextFile());
- recObj.put("isLastEdition",program.getIsLastEdition());
- recObj.put("category",program.getCategory());
- recObj.put("description",program.getDescription());
- recObj.put("name",program.getName());
- recObj.put("drawingNo",program.getDrawingNo());
- recObj.put("ncNodeId",program.getNcNodeId());
- recObj.put("bindNcNodeId",program.getBindNcNodeId());
- recObj.put("url",program.getUrl());
- recObj.put("isCured",program.getIsCured());
- recObj.put("isLocked",program.getIsLocked());
- recObj.put("isTest",program.getIsTest());
- recObj.put("machineCode",program.getMachineCode());
- recObj.put("processEdition",program.getProcessEdition());
- recObj.put("taskAssignTime",program.getTaskAssignTime());
-
- addSuperProperties(recObj,program);
-
- jsonArray.add(recObj);
- }
- addInputStreamToZip(zipOut,new ByteArrayInputStream(jsonArray.toJSONString().getBytes(StandardCharsets.UTF_8)),PROGRAM_JSON_FILE);
-
- }
-
- /**
- * 瀵煎叆瀹℃壒璁板綍
- * @param zipOut
- * @param programIdList 鏁版帶绋嬪簭id鍒楄〃
- */
- /*
- void addApproveRecordDataJson(ZipOutputStream zipOut, List<Long> programIdList) throws IOException {
- LambdaQueryWrapper<ApproveRecord> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.in(ApproveRecord::getNcProgramId, programIdList);
- List<ApproveRecord> records = approveRecordService.list(queryWrapper);
- JSONArray jsonArray = new JSONArray();
- for(ApproveRecord record : records){
- JSONObject recObj = new JSONObject();
- recObj.put("id", record.getId());
- recObj.put("comment", record.getComment());
- recObj.put("userId",record.getUserId());
- recObj.put("userNickname",record.getUserNickname());
- recObj.put("operateTime",record.getOperateTime());
- recObj.put("operateResult",record.getOperateResult());
- recObj.put("taskName",record.getTaskName());
- recObj.put("ncProgramId",record.getNcProgramId());
- recObj.put("processInstanceId",record.getProcessInstanceId());
-
- addSuperProperties(recObj,record);
-
- jsonArray.add(recObj);
- }
- addInputStreamToZip(zipOut,new ByteArrayInputStream(jsonArray.toJSONString().getBytes(StandardCharsets.UTF_8)),"exp_mdm_approve_record.json");
-
- }
- */
- /**
- * 瀵煎叆鑺傜偣
- * @param zipOut
- * @param programIdList
- */
- void addNcNodeDataJson(ZipOutputStream zipOut, List<Long> programIdList) throws IOException {
- LambdaQueryWrapper<NcProgram> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.in(NcProgram::getId, programIdList);
-
- List<NcProgram> programs = progService.list(queryWrapper);
- JSONArray jsonArray = new JSONArray();
-
- ArrayList<Long> exportNodeIdList = new ArrayList<>();
- for(NcProgram program : programs){
- //JSONObject recObj = new JSONObject();
- if(!exportNodeIdList.contains(program.getBindNcNodeId())){
- exportNodeIdList.add(program.getBindNcNodeId());
- }
- NcNode ncNode = ncNodeService.getById(program.getBindNcNodeId());//浠庣粦瀹氱殑鑺傜偣鏈韩寮�濮嬪鍑�
-
- if(StringUtils.isNotEmpty(ncNode.getParentIds())){
- List<Long> pids = Func.toLongList(ncNode.getParentIds());
- for(Long nodeId : pids){
- if(!exportNodeIdList.contains(nodeId)){
- exportNodeIdList.add(nodeId);
- }
- }
-
- }
-
- }
-
- LambdaQueryWrapper<NcNode> nodeQueryWrapper = new LambdaQueryWrapper<>();
- nodeQueryWrapper.in(NcNode::getId, exportNodeIdList);
- List<NcNode> nodeList =ncNodeService.list(nodeQueryWrapper);
- for(NcNode node : nodeList){
- JSONObject recObj = new JSONObject();
-
- recObj.put("id", node.getId());
- recObj.put("nodeType", node.getNodeType());
- recObj.put("machineCode",node.getMachineCode());
- recObj.put("parentId",node.getParentId());
- recObj.put("description",node.getDescription());
- recObj.put("name",node.getName());
- recObj.put("remark",node.getRemark());
- recObj.put("drawingNo",node.getDrawingNo());
- recObj.put("parentIds",node.getParentIds());
- recObj.put("processName",node.getProcessName());
-
- addSuperProperties(recObj,node);
-
- jsonArray.add(recObj);
- }
- addInputStreamToZip(zipOut,new ByteArrayInputStream(jsonArray.toJSONString().getBytes(StandardCharsets.UTF_8)),"exp_mdm_nc_node.json");
- }
-
- void addSuperProperties(JSONObject recObj, BizEntity entity){
- recObj.put("tenantId",entity.getTenantId());
- recObj.put("createTime",entity.getCreateTime());
- recObj.put("updateTime",entity.getUpdateTime());
- recObj.put("createUser",entity.getCreateUser());
- recObj.put("updateUser",entity.getUpdateUser());
- recObj.put("status",entity.getStatus());
- recObj.put("createDept",entity.getCreateDept());
- }
public void addInputStreamToZip(ZipOutputStream zipOut, InputStream inputStream, String entryName)
throws IOException {
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machineback/vo/MachineBackFileVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machineback/vo/MachineBackFileVO.java
index 3677c6e..4be3770 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machineback/vo/MachineBackFileVO.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machineback/vo/MachineBackFileVO.java
@@ -21,4 +21,6 @@
private Integer isCured=0;
@Schema(description = "鏂囦欢鍒拌揪鏃堕棿")
private Date arrivedTime;
+ @Schema(description = "纭鏃堕棿")
+ private Date determineTime;
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/task/MachineFileScanTask.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/task/MachineFileScanTask.java
index 4f95154..6fd8997 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/task/MachineFileScanTask.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/task/MachineFileScanTask.java
@@ -1,5 +1,6 @@
package org.springblade.mdm.task;
+import com.alibaba.excel.util.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.digest.DigestUtils;
import org.springblade.core.secure.utils.AuthUtil;
@@ -35,12 +36,15 @@
// 姣�5绉掓墽琛屼竴娆�
//@Scheduled(fixedRate = 1000000)
//@Scheduled(cron = "0 1 0 * * ?") // 姣忓ぉ涓婂崍0鐐�1鍒嗘墽琛�
- @Scheduled(cron = "0 15 19 * * ?") //test
+ @Scheduled(cron = "0 */5 * * * ?")
+ //@Scheduled(cron = "0 15 19 * * ?") //test
public void executeEvery5Seconds() {
scanMachineFile();
}
-
+ /**
+ * 鎵弿鎵�鏈夋満搴婄殑閰嶇疆涔嬬洰褰�
+ */
public void scanMachineFile() {
List<Machine> machines = machineService.lambdaQuery().eq(Machine::getStatus,Machine.STATUS_ENABLE).list();
for (Machine machine : machines) {
@@ -106,10 +110,12 @@
byte[] buffer = new byte[2048];
- boolean exists;//鏂囦欢鏄惁瀛樺湪浜庢暟鎹簱涓�
+ MachineFile existFileInDb;
+ //boolean exists;//鏂囦欢鏄惁瀛樺湪浜庢暟鎹簱涓�
for (Path filePath : files) {
- exists = false;
+ existFileInDb = null;
+ //exists = false;
MachineFile mf = new MachineFile();
@@ -129,7 +135,7 @@
mf.setFileCreateTime(creationDate);
FileTime modifyTime = attrs.lastModifiedTime();
- mf.setFileModifyDate(new Date(modifyTime.toMillis()));
+ mf.setFileModifyTime(new Date(modifyTime.toMillis()));
mf.setFileSize(Files.size(filePath));
try (InputStream inputStream = Files.newInputStream(filePath)) {
// 浣跨敤杈撳叆娴佽鍙栨枃浠跺唴瀹�
@@ -140,15 +146,31 @@
continue;//鏈夐敊璇�,鎺犺繃
}
- exists = machineFileService.fileExists(mf.getName(),mf.getMd5(),machine.getCode());
+ //exists = machineFileService.fileExists(mf.getName(),dirType,machine.getCode());
+
+ existFileInDb = machineFileService.getExistsFile(mf.getName(),dirType,machine.getCode());
System.out.println("鏂囦欢鍒涘缓鏃堕棿: " + creationDate);
} catch (IOException e) {
log.error("璇诲彇鏂囦欢淇℃伅澶辫触",e);
}
- if(!exists) {
+ if(existFileInDb == null) {
machineFileService.save(mf);
}else{
log.info("鏂囦欢宸插鏋滄帬杩�:{}",filePath.getFileName());
+ //宸插瓨鍦ㄥ拫鏁淬��
+ existFileInDb.setFileSize(mf.getFileSize());
+
+ existFileInDb.setFileCreateTime(mf.getFileCreateTime());
+ existFileInDb.setFileModifyTime(mf.getFileModifyTime());
+ if(!StringUtils.equals(existFileInDb.getMd5(),mf.getMd5())){
+ //鏂囦欢鍐呭鍙戠敓鍙樺寲浜�,璁剧疆鐘舵�佷负鍒濆鐘舵��
+ existFileInDb.setStatus(MachineFile.STATUS_NORMAL);
+ }
+ existFileInDb.setMd5(mf.getMd5());
+
+
+ machineFileService.updateById(existFileInDb);
+
}
}
@@ -172,6 +194,10 @@
return;
}
Path dirPath = Paths.get(basePath);
+ if(!dirPath.toFile().exists()){
+ log.warn("鎵弿鐩綍:{} 涓嶅瓨鍦�",dirPath);
+ return;
+ }
List<Path> files = Files.list(dirPath)
.filter(Files::isRegularFile).toList();
@@ -180,7 +206,6 @@
long findCount = files.stream().filter(filePath -> filePath.toFile().getName().equals(mf.getName())).count();
if(findCount == 0){
//鏂囦欢澶瑰唴娌℃壘鍒帮紝闇�瑕佸垹闄よ褰�
- //this.machineFileService.save(mf);
mf.markFileDeleted();
this.machineFileService.updateById(mf);
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/utils/ProgramFileNameParser.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/utils/ProgramFileNameParser.java
new file mode 100644
index 0000000..fa32049
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/utils/ProgramFileNameParser.java
@@ -0,0 +1,56 @@
+package org.springblade.mdm.utils;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.tool.api.IResultCode;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.mdm.flow.service.FlowProgramProperties;
+import org.springblade.mdm.gkw.programnode.vo.ProgramNameVO;
+import org.springblade.mdm.program.service.NcNodeService;
+
+public class ProgramFileNameParser {
+ /**
+ * 浠庢枃浠跺悕鍒嗘瀽绋嬪簭鍚嶇О鍚勬
+ * @param filename 鏂囦欢鍚�
+ */
+ public static ProgramNameVO parseProgramName(String filename){
+ ProgramNameVO pname = new ProgramNameVO();
+ int idx = filename.lastIndexOf(".");
+ String tempstr = filename.substring(0,idx);//鍘绘帀鎵╁睍鍚�
+
+ idx = tempstr.lastIndexOf("-");
+
+ if(idx != -1){
+ String segNo = tempstr.substring(idx+1);
+ pname.setSegmentNo(Func.toInt(segNo));
+
+ tempstr = tempstr.substring(0,idx);
+ }
+ idx = tempstr.lastIndexOf("-");
+ if(idx != -1){
+ String seg = tempstr.substring(idx+1);
+ pname.setSegmentCount(Func.toInt(seg));
+ tempstr = tempstr.substring(0,idx);
+ }
+
+ //瑙f瀽宸ュ簭鐗堟
+ idx = tempstr.lastIndexOf("-");
+ if(idx != -1){
+ String processEdition = tempstr.substring(idx+1);
+ pname.setProcessEdition(processEdition);
+ tempstr = tempstr.substring(0,idx);
+ }
+
+ //瑙f瀽宸ュ簭濂�
+ String processNo = "";
+ idx = tempstr.lastIndexOf("-");
+ if(idx != -1){
+ processNo = tempstr.substring(idx+1);
+ tempstr = tempstr.substring(0,idx);
+ }
+ pname.setProcessNo(processNo);
+ pname.setDrawingNo(tempstr);
+ return pname;
+ }
+
+}
diff --git a/blade-service/blade-mdm/src/test/java/org/springblade/mdm/utils/ProgramFileNameParserTest.java b/blade-service/blade-mdm/src/test/java/org/springblade/mdm/utils/ProgramFileNameParserTest.java
new file mode 100644
index 0000000..c6bff09
--- /dev/null
+++ b/blade-service/blade-mdm/src/test/java/org/springblade/mdm/utils/ProgramFileNameParserTest.java
@@ -0,0 +1,30 @@
+package org.springblade.mdm.utils;
+
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+import org.springblade.mdm.gkw.programnode.vo.ProgramNameVO;
+
+public class ProgramFileNameParserTest {
+
+ @Test
+ public void testParseProgramName() {
+ String fname = "CP1-1-1-A-2-1.txt";
+
+ ProgramNameVO vo = ProgramFileNameParser.parseProgramName(fname);
+ Assertions.assertEquals(2,vo.getSegmentCount());
+ Assertions.assertEquals(1,vo.getSegmentNo());
+ Assertions.assertEquals("A",vo.getProcessEdition());
+
+ Assertions.assertEquals("1",vo.getProcessNo());
+ Assertions.assertEquals("CP1-1",vo.getDrawingNo());
+
+ fname = "T-9-B-5-3.txt";
+ vo = ProgramFileNameParser.parseProgramName(fname);
+ Assertions.assertEquals(5,vo.getSegmentCount());
+ Assertions.assertEquals(3,vo.getSegmentNo());
+ Assertions.assertEquals("B",vo.getProcessEdition());
+
+ Assertions.assertEquals("9",vo.getProcessNo());
+ Assertions.assertEquals("T",vo.getDrawingNo());
+ }
+}
--
Gitblit v1.9.3