From 44fda5fa3787c78e74d62f9713dd36abdeadcac8 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期五, 18 七月 2025 21:27:38 +0800
Subject: [PATCH] 上传接口调整
---
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcProgramUploadVO.java | 10
blade-service/blade-mdm/src/main/java/org/springblade/mdm/config/InitBean.java | 12 +
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/DncBackFileMapper.java | 20 ++
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/CureFlowService.java | 12 -
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcProgram.java | 5
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramService.java | 31 +++
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcNodeController.java | 1
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/DncBackFileMapper.xml | 36 +++
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/ProgramExchangeStatController.java | 7
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/DncSendBackController.java | 5
blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/contants/ParamContants.java | 5
/dev/null | 18 -
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcNodeVO.java | 3
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/DncBackFile.java | 34 +++
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramController.java | 28 ++
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/DncBackFileQueryVO.java | 21 ++
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/DncBackFileController.java | 81 ++++++++
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/DncBackFileVO.java | 24 ++
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcProgramVO.java | 2
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DncBackFileService.java | 99 +++++++++
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/filewatch/ProgramBackMonitor.java | 135 +++++++++++++
21 files changed, 537 insertions(+), 52 deletions(-)
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/contants/ParamContants.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/contants/ParamContants.java
index f40f2c8..2d9cce4 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/contants/ParamContants.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/contants/ParamContants.java
@@ -2,6 +2,11 @@
public class ParamContants {
public static final String NETWORK_TYPE_KEY = "networkType";
+
+ /**
+ * 宸ユ帶缃戝洖浼犵▼搴忕洃鎺х洰褰曢�楀彿鍒嗛殧
+ */
+ public static final String PROGRAM_MONITOR_DIR_KEY = "programMonitorDir";
/**
* 娑夊瘑缃�
*/
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/config/InitBean.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/config/InitBean.java
index 8decdc5..c4787dd 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/config/InitBean.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/config/InitBean.java
@@ -14,6 +14,7 @@
import org.springblade.mdm.machineback.filewatch.FileWatcherService;
import org.springblade.mdm.machineback.filewatch.MachineFileBackListener;
import org.springblade.mdm.machineback.service.MachineBackFileService;
+import org.springblade.mdm.program.filewatch.ProgramBackMonitor;
import org.springblade.mdm.program.service.NcProgramService;
import org.springblade.system.feign.ISysClient;
import org.springframework.context.annotation.Bean;
@@ -31,21 +32,28 @@
private final DirectorLockService directorLockService;
private final MachineService machineService;
private final FileWatcherService fileWatcherService;
- private final ISysClient sysClient;
+
private final DynamicDirectoryWatcher directoryWatcher;
private final MachineBackFileService machineBackFileService;
private final NcProgramService ncProgramService;
private final OssTemplate ossTemplate;
+
+ private final ProgramBackMonitor programBackMonitor;
//private final FileWatcherService.FileChangeListener listener;
@PostConstruct
public void init() {
- System.out.println("搴旂敤鍚姩鏃舵墽琛屽垵濮嬪寲鎿嶄綔 @PostConstruct");
+ log.info("搴旂敤鍚姩鏃舵墽琛屽垵濮嬪寲鎿嶄綔 @PostConstruct");
+
+ programBackMonitor.monitorDir();
// 鍒濆鍖栭�昏緫
+ /*
R<String> networkTypeR = sysClient.getParamValue(ParamContants.NETWORK_TYPE_KEY);
String networkType = networkTypeR.getData() == null ? ParamContants.NETWORK_TYPE_SHEMI : networkTypeR.getData();
if (networkType.equals(ParamContants.NETWORK_TYPE_GONGKONG)) {
initMachineDirMonitor();
}
+ */
+
}
/**
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/CureFlowService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/CureFlowService.java
index 0b4c7d0..78da526 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/CureFlowService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/CureFlowService.java
@@ -50,17 +50,7 @@
*/
private static final String PROCESS_KEY = "program-cure";
- /**
- * 鍚姩鍥哄寲娴佺▼
- * @param programId 绋嬪簭id
- */
- public void start(long programId){
-
- //pinst.getProcessInstanceId();
- int a=1;
- //log.info()
- }
@Transactional
public void startCure(List<NcProgram> programs) {
@@ -76,7 +66,7 @@
* 鍚姩涓�涓暟鎺х▼搴忕殑鍥哄寲娴佺▼
* @param prog 鏁版帶绋嬪簭瀹炰綋
*/
- void startOne(NcProgram prog){
+ public void startOne(NcProgram prog){
Map<String, Object> vars = new HashMap<>();
//NcProgram prog = programs.get(0);
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/DncBackFileController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/DncBackFileController.java
new file mode 100644
index 0000000..f117a05
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/DncBackFileController.java
@@ -0,0 +1,81 @@
+package org.springblade.mdm.program.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.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springblade.core.excel.util.ExcelUtil;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.DateUtil;
+import org.springblade.mdm.program.service.DncBackFileService;
+import org.springblade.mdm.program.vo.DncBackFileQueryVO;
+import org.springblade.mdm.program.vo.DncBackFileVO;
+import org.springframework.web.bind.annotation.*;
+
+@AllArgsConstructor
+@Slf4j
+@RestController
+@RequestMapping("/program/file")
+@Tag(name = "DNC鍥炰紶鏂囦欢", description = "DNC鍥炰紶鏂囦欢")
+public class DncBackFileController {
+
+ private final DncBackFileService service;
+
+
+ /**
+ * 鎺ユ敹
+ */
+ @Operation(summary = "鎺ユ敹", description = "鎺ユ敹鏂囦欢")
+ @PostMapping("/accept")
+ public R<Void> accept(@RequestParam String ids) {
+ service.accept(ids);
+ return R.success();
+ }
+
+ /**
+ *鎷掔粷锛屽氨鏄垹闄�
+ */
+ @Operation(summary = "鎷掔粷", description = "鎷掔粷")
+ @PostMapping("/reject")
+ public R<Void> reject(@RequestParam String ids) {
+ try {
+ service.reject(ids);
+ } catch (Exception e) {
+ log.error("鎷掔粷寮傚父",e);
+ return R.fail(e.getMessage());
+ }
+ return R.status(true);
+ }
+
+ /**
+ * 鍒嗛〉
+ */
+ @Operation(summary = "鍒嗛〉鏌ヨ", description = "鍚嶇О鎴栫紪鐮�")
+ @GetMapping("/page")
+ public R<IPage<DncBackFileVO>> page(DncBackFileQueryVO query) {
+ IPage<DncBackFileVO> pages = service.pageQuery(query);
+ return R.data(pages);
+ }
+
+ /*
+ @Operation(summary = "瀵煎嚭Excel", description = "瀵煎嚭Excel")
+ @GetMapping("/export-excel")
+ public void exportExcel(MachineBackFileQueryVO query, HttpServletResponse response) {
+ query.setCurrent(1);
+ query.setSize(Integer.MAX_VALUE);
+
+ IPage<MachineBackFileVO> pages = service.pageQuery(query);
+ List<MachineBackFileExcelVO> list = new ArrayList<>();
+ pages.getRecords().forEach(m ->{
+ MachineBackFileExcelVO excelVO = new MachineBackFileExcelVO();
+ BeanUtils.copyProperties(m, excelVO);
+ excelVO.setCureStatus(m.getIsCured()==1?"宸插浐鍖�":"鏈浐鍖�");
+ list.add(excelVO);
+ });
+ ExcelUtil.export(response, "鏈哄簥鍥炰紶鏂囦欢" + DateUtil.time(), "鏈哄簥鍥炰紶鏂囦欢琛�", list, MachineBackFileExcelVO.class);
+ }
+
+ */
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/DncSendBackController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/DncSendBackController.java
index 8a48d27..b288a78 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/DncSendBackController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/DncSendBackController.java
@@ -1,20 +1,15 @@
package org.springblade.mdm.program.controller;
-import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springblade.core.mp.support.Query;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
-import org.springblade.mdm.basesetting.machine.vo.MachineVO;
-import org.springblade.mdm.program.service.DncSendBackService;
import org.springblade.mdm.program.service.NcProgramExchangeService;
import org.springblade.mdm.program.vo.DncSendBackData;
-import org.springblade.mdm.program.vo.ProgramExchangeStatQueryVO;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcNodeController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcNodeController.java
index 824c5e3..8a64c8c 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcNodeController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcNodeController.java
@@ -79,6 +79,7 @@
ncNodeVO.setDrawingNo(program.getDrawingNo());
ncNodeVO.setMachineCode(program.getMachineCode());
ncNodeVO.setProcessName(program.getProcessName());
+ ncNodeVO.setVersionNumber(program.getVersionNumber());
}
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramController.java
index a8aa0e8..b08d919 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramController.java
@@ -49,10 +49,30 @@
@PostMapping("/upload")
@Operation(summary = "涓婁紶鏂囦欢", description = "涓婁紶绋嬪簭/闄勪欢鏂囦欢")
public R<Boolean> upload(NcProgramUploadVO uploadVO) {
- //@Parameter(description="鏂囦欢") @RequestPart("file") MultipartFile file, @Parameter(description="鎵�灞炶妭鐐笽D")@RequestParam Long nodeId,
- // @Parameter(description="鏂囦欢鍒嗙被锛屼娇鐢ㄥ瓧鍏�(node_file_type)") @RequestParam String category
- ncProgramService.uploadProgramFileNew(uploadVO);
- return R.<Boolean>status(true);
+ try {
+ boolean existOther = ncProgramService.programExistsUnderOtherNode(uploadVO.getNodeId(), uploadVO.getFile().getOriginalFilename());
+ if (existOther) {
+ //绋嬪簭瀛樺湪锛屽垯杩斿洖鎻愮ず淇℃伅
+ return R.fail("绋嬪簭鍏朵粬鑺傜偣宸插瓨鍦�");
+ }
+ if (uploadVO.getConfirm() == null || uploadVO.getConfirm() != 1) {
+ //榛樿鎯呭喌锛岄渶瑕佹鏌ョ▼搴忔槸鍚﹀瓨鍦�
+ boolean exists = ncProgramService.programExistsUnderNode(uploadVO.getNodeId(), uploadVO.getFile().getOriginalFilename());
+ if (exists) {
+ //绋嬪簭瀛樺湪锛屽垯杩斿洖鎻愮ず淇℃伅
+ return R.fail(2, "瀛樺湪閲嶅绋嬪簭鍚�");
+ } else {
+ ncProgramService.uploadProgramFileNew(uploadVO);
+ }
+ } else {
+ //鍚屽悕鏂囦欢鐢ㄦ埛纭涓婁紶浜嗭紙锛�
+ ncProgramService.uploadProgramFileNew(uploadVO);
+ }
+ }catch(Exception e) {
+ log.error("绋嬪簭涓婁紶鎵ц閿欒",e);
+ return R.fail("涓婁紶澶辫触:" + e.getMessage());
+ }
+ return R.success();
}
@PostMapping("/remove")
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/ProgramExchangeStatController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/ProgramExchangeStatController.java
index b5c4fce..2cc2f61 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/ProgramExchangeStatController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/ProgramExchangeStatController.java
@@ -2,23 +2,16 @@
package org.springblade.mdm.program.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
-import org.springblade.mdm.basesetting.machine.vo.MachineQueryVO;
import org.springblade.mdm.basesetting.machine.vo.MachineVO;
-import org.springblade.mdm.program.service.DncSendBackService;
import org.springblade.mdm.program.service.NcProgramExchangeStatService;
-import org.springblade.mdm.program.vo.DncSendBackData;
import org.springblade.mdm.program.vo.ProgramExchangeStatQueryVO;
import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.util.List;
/**
* 娴佺▼绠$悊鎺ュ彛
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/DncBackFile.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/DncBackFile.java
new file mode 100644
index 0000000..8b75f94
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/DncBackFile.java
@@ -0,0 +1,34 @@
+package org.springblade.mdm.program.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+import org.springblade.core.mp.base.BizEntity;
+
+import java.util.Date;
+
+/**
+ * DNC鍥炰紶鏂囦欢,鏁版嵁閫氳繃鐩戞帶鐩綍鑾峰彇鏂囦欢骞跺叆搴�
+ */
+@Setter
+@Getter
+@TableName("mdm_dnc_back_file")
+public class DncBackFile extends BizEntity {
+ public static int STATUS_ACCEPTED = 2;
+ public static int STATUS_REJECTED = 3;
+
+ private Long ncProgramId;
+ /**
+ * 纭鏃堕棿
+ */
+ private Date confirmTime;
+ /**
+ * 瀵硅薄瀛樺偍鏂囦欢鍚�
+ */
+ private String ossName;
+
+ /**
+ * 瀵硅薄瀛樺偍鏂囦欢鍦板潃
+ */
+ private String url;
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcProgram.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcProgram.java
index cf73928..2b78637 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcProgram.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcProgram.java
@@ -94,6 +94,11 @@
private LocalDateTime taskAssignTime;
/**
+ * 鐗堟湰鍙凤紝涓婁紶涓�娆$▼搴忥紝灏变細+1
+ */
+ private Integer versionNumber;
+
+ /**
* 鏄惁鍦ㄦ湁鏁堟湡鍐�
* @param effectiveMonths 鏈夋晥鏃堕暱锛堟湀鏁帮級锛屽湪绯荤粺鍙傛暟涓厤缃�
* @return
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/filewatch/ProgramBackMonitor.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/filewatch/ProgramBackMonitor.java
new file mode 100644
index 0000000..c3fc2d4
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/filewatch/ProgramBackMonitor.java
@@ -0,0 +1,135 @@
+
+package org.springblade.mdm.program.filewatch;
+
+
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springblade.core.oss.OssTemplate;
+import org.springblade.core.oss.model.BladeFile;
+import org.springblade.core.tool.api.R;
+import org.springblade.mdm.commons.contants.ParamContants;
+import org.springblade.mdm.flow.service.CureFlowService;
+import org.springblade.mdm.machineback.entity.MachineBackFile;
+import org.springblade.mdm.machineback.filewatch.*;
+import org.springblade.mdm.program.entity.DncBackFile;
+import org.springblade.mdm.program.entity.NcProgram;
+import org.springblade.mdm.program.mapper.NcProgramExchangeMapper;
+import org.springblade.mdm.program.service.DncBackFileService;
+import org.springblade.mdm.program.service.NcNodeService;
+import org.springblade.mdm.program.service.NcProgramService;
+import org.springblade.system.feign.ISysClient;
+import org.springframework.stereotype.Service;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * DNC鍥炰紶鍙婄洃鎺�
+ *
+ * @author yangys
+ */
+@Slf4j
+@Service
+@AllArgsConstructor
+public class ProgramBackMonitor {
+ private final DirectorLockService directorLockService;
+ private final NcNodeService ncNodeService;
+ private final NcProgramService ncProgramService;
+ private final CureFlowService cureFlowService;
+ private final NcProgramExchangeMapper ncProgramExchangeMapper;
+ private final ISysClient sysClient;
+ private final DynamicDirectoryWatcher directoryWatcher;
+ private final OssTemplate ossTemplate;
+ private final DncBackFileService dncBackFileService;
+ private final String DEFAULT_MONITOR_DIR = "programback";
+
+ /**
+ * 鐩戞帶鍥炰紶鐩綍锛堟墜鍔ㄥ洖浼狅級
+ */
+ public void monitorDir(){
+ boolean locked = directorLockService.acquireLock();
+ if (!locked) {
+ log.info("鍥炰紶鎺ユ敹鐩綍宸茬粡琚叾浠栭儴缃茬偣浣嶉攣瀹氾紝鐩存帴杩斿洖");
+ return;
+ }
+ List<String> monitorDirList = getMonitorDirs();
+
+ for (String dir : monitorDirList) {
+ Path dirPath = Paths.get(dir);
+ try {
+ if(!dirPath.toFile().exists()) {
+ dirPath.toFile().mkdirs();
+ }
+ directoryWatcher.addDirectory(dirPath,getListener());
+ } catch (Exception e) {
+ log.error("娣诲姞鐩戞帶鐩綍寮傚父",e);
+ }
+ }
+ }
+
+ List<String> getMonitorDirs(){
+ R<String> monitorDirRes = sysClient.getParamValue(ParamContants.PROGRAM_MONITOR_DIR_KEY);
+ String dirStr = monitorDirRes.getData();
+ if(StringUtils.isNotEmpty(dirStr)){
+ dirStr = DEFAULT_MONITOR_DIR;
+ }
+ String[] dirs = StringUtils.split(dirStr,",");
+
+ return Arrays.asList(dirs);
+ }
+
+
+ FileWatcherService.FileChangeListener getListener() {
+ return new FileWatcherService.FileChangeListener() {
+ @Override
+ public void onFileCreated(Path filePath) {
+ log.info("鏂囦欢鍒涘缓锛屽鐞�");
+ }
+
+ @Override
+ public void onFileModified(Path filePath) {
+ try {
+ if(FileLockChecker.isFileComplete(filePath)){
+ log.info("鏂囦欢[{}]浼犺緭瀹屾垚,寮�濮嬪鐞�",filePath);
+
+ String programName = filePath.getFileName().toFile().getName();
+ NcProgram prog = ncProgramService.getByName(programName);
+ if(prog == null){
+ log.warn("鏂囦欢鍚嶆棤娉曞尮閰嶅埌鏁版帶绋嬪簭,{}",filePath);
+ return;
+ }
+ DncBackFile backFile = new DncBackFile();
+ backFile.setNcProgramId(prog.getId());
+ //淇濆瓨鏂囦欢鍒癱ss锛岄伩鍏嶅悗缁笉鍚岄儴缃茶妭鐐规嬁涓嶅埌鏂囦欢
+ try(FileInputStream fins = new FileInputStream(filePath.toFile());){
+ BladeFile bfile = ossTemplate.putFile(programName, fins);
+ backFile.setOssName(bfile.getName());
+ backFile.setUrl(bfile.getLink());
+ }
+ dncBackFileService.save(backFile);
+ }else{
+ log.warn("鏂囦欢浼犺緭涓紝鍚庣画鍐嶆搷浣�:{}",filePath);
+ }
+ } catch (IOException e) {
+ log.error("鍥炰紶鏂囦欢鎿嶄綔IO閿欒",e);
+ throw new RuntimeException(e);
+ } catch (InterruptedException e) {
+ log.error("sleep鍑洪敊",e);
+ } catch (Exception e) {
+ log.error("鏈哄簥鍥炰紶鏂囦欢澶勭悊寮傚父",e);
+ }
+ }
+
+ @Override
+ public void onFileDeleted(Path filePath) {
+ log.info("鏂囦欢鍒犻櫎锛屼笉澶勭悊");
+ }
+ };
+ }
+}
+
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/DncBackFileMapper.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/DncBackFileMapper.java
new file mode 100644
index 0000000..3cedc0d
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/DncBackFileMapper.java
@@ -0,0 +1,20 @@
+package org.springblade.mdm.program.mapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+import org.springblade.core.mp.mapper.BladeMapper;
+import org.springblade.mdm.program.vo.DncBackFileVO;
+import org.springblade.mdm.program.entity.DncBackFile;
+import org.springblade.mdm.program.vo.DncBackFileQueryVO;
+
+public interface DncBackFileMapper extends BladeMapper<DncBackFile> {
+
+ /**
+ * DNC鍥炰紶鏂囦欢鍒嗛〉鏌ヨ
+ * @param page
+ * @param queryVO
+ * @return
+ */
+ IPage<DncBackFileVO> pageQuery(IPage<DncBackFile> page, @Param("query") DncBackFileQueryVO queryVO);
+
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/DncBackFileMapper.xml b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/DncBackFileMapper.xml
new file mode 100644
index 0000000..e971831
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/DncBackFileMapper.xml
@@ -0,0 +1,36 @@
+<?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="org.springblade.mdm.program.mapper.DncBackFileMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="org.springblade.mdm.program.entity.DncBackFile">
+ <id column="id" property="id"/>
+ <result column="status" property="status"/>
+ <result column="create_time" property="createTime"/>
+ <result column="update_time" property="updateTime"/>
+ <result column="is_deleted" property="isDeleted"/>
+ </resultMap>
+
+ <!--DNC鍥炰紶绋嬪簭澶勭悊鍒嗛〉-->
+ <select id="pageQuery" resultType="org.springblade.mdm.program.vo.DncBackFileVO">
+ select f.id,p.name name,p.is_cured,f.create_time,m.code machine_code, m.name machine_name,f.create_time arrived_time
+ from mdm_dnc_back_file f
+ left join mdm_nc_program p on f.nc_program_id=p.id
+ left join mdm_machine m on p.machine_code=m.code
+ <where>
+ f.status=1 and f.is_deleted=0
+
+ <if test="query.machineSpec!=null and query.machineSpec!=''">
+ and m.machine_spec=#{query.machineSpec,jdbcType=VARCHAR}
+ </if>
+ <if test="query.keyword!=null and query.keyword!=''">
+ and (m.code like CONCAT('%', #{query.keyword,jdbcType=VARCHAR},'%') or m.name like CONCAT('%', #{query.keyword,jdbcType=VARCHAR},'%')
+ or p.name like CONCAT('%', #{query.keyword,jdbcType=VARCHAR},'%')
+ )
+ </if>
+ </where>
+ </select>
+
+
+
+</mapper>
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DncBackFileService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DncBackFileService.java
new file mode 100644
index 0000000..9cb255f
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DncBackFileService.java
@@ -0,0 +1,99 @@
+package org.springblade.mdm.program.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.base.BizServiceImpl;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.oss.OssTemplate;
+import org.springblade.core.tool.utils.DateUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.mdm.flow.service.CureFlowService;
+import org.springblade.mdm.program.entity.DncBackFile;
+import org.springblade.mdm.program.entity.NcProgram;
+import org.springblade.mdm.program.mapper.DncBackFileMapper;
+import org.springblade.mdm.program.vo.DncBackFileQueryVO;
+import org.springblade.mdm.program.vo.DncBackFileVO;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@AllArgsConstructor
+@Service
+public class DncBackFileService extends BizServiceImpl<DncBackFileMapper, DncBackFile> {
+ private final NcProgramService progService;
+ private final OssTemplate ossTemplate;
+
+ private final CureFlowService cureFlowService;
+ /**
+ * 鎺ュ彈
+ * @param ids
+ */
+ public void accept(String ids) {
+
+ List<Long> idList = Func.toLongList(ids);
+
+ for(Long id : idList){
+ DncBackFile backFile = this.getById(id);
+ backFile.setStatus(DncBackFile.STATUS_ACCEPTED);
+ backFile.setConfirmTime(DateUtil.now());
+ this.updateById(backFile);
+
+ //鏂板缓涓�涓▼搴忥紝灏嗚�佺殑绋嬪簭isLastEditon璁剧疆鏈�0锛岀劧鍚庡惎鍔ㄦ祦绋�
+ this.upgradeProgramAndStartCure(backFile.getNcProgramId(),backFile);
+ }
+ }
+
+ void upgradeProgramAndStartCure(long ncProgramId,DncBackFile backFile) {
+ NcProgram oldProgram = this.progService.getById(ncProgramId);
+ //鏇存柊鏂囦欢淇℃伅
+ oldProgram.setOssName(backFile.getOssName());
+ oldProgram.setUrl(backFile.getUrl());
+ //TODO锛屾槸鍚﹀垹闄ゅ師鏉ョ殑鏂囦欢锛�
+ progService.updateById(oldProgram);
+ /*
+ NcProgram newProgram = new NcProgram();
+ BeanUtils.copyProperties(oldProgram,newProgram);
+
+ oldProgram.setIsLastEdition(0);
+ progService.updateById(oldProgram);
+
+ newProgram.setId(null);
+ newProgram.setIsLastEdition(1);
+ progService.updateById(newProgram);
+
+ */
+
+ cureFlowService.startOne(oldProgram);//鍚姩涓�涓▼搴忕殑鍥哄寲娴佺▼
+ }
+
+ /**
+ * 鎷掔粷
+ * @param ids
+ */
+ public void reject(String ids) {
+ List<Long> idList = Func.toLongList(ids);
+
+ for(Long id : idList){
+ DncBackFile backFile = this.getById(id);
+ backFile.setStatus(DncBackFile.STATUS_REJECTED);
+ backFile.setConfirmTime(DateUtil.now());
+ this.ossTemplate.removeFile(backFile.getOssName());
+ this.updateById(backFile);
+ }
+
+ }
+
+ /**
+ * DNC鍥炰紶绋嬪簭澶勭悊鍒嗛〉鏌ヨ
+ * @param query 鏌ヨ鍙傛暟
+ * @return 鍒嗛〉鏁版嵁
+ */
+ public IPage<DncBackFileVO> pageQuery(DncBackFileQueryVO query) {
+ /*
+ IPage<DncBackFileVO> page = this.getBaseMapper().pageQuery(Condition.getPage(query),query);
+ */
+ return this.getBaseMapper().pageQuery(Condition.getPage(query),query);
+ }
+
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DncSendBackService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DncSendBackService.java
deleted file mode 100644
index 8a9381d..0000000
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DncSendBackService.java
+++ /dev/null
@@ -1,35 +0,0 @@
-
-package org.springblade.mdm.program.service;
-
-import lombok.AllArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.mdm.flow.service.CureFlowService;
-import org.springblade.mdm.program.entity.NcNode;
-import org.springblade.mdm.program.entity.NcProgramExchange;
-import org.springblade.mdm.program.mapper.NcProgramExchangeMapper;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-/**
- * DNC鍥炰紶
- *
- * @author yangys
- */
-@Slf4j
-@Service
-@AllArgsConstructor
-public class DncSendBackService {
- private final NcNodeService ncNodeService;
- private final NcProgramService ncProgramService;
- private final CureFlowService cureFlowService;
- private final NcProgramExchangeMapper ncProgramExchangeMapper;
-
-
-
-
-
-
-}
-
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramService.java
index f378729..4c76756 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramService.java
@@ -328,11 +328,40 @@
* @param name 绋嬪簭鍚嶇О
* @return
*/
- public NcProgram getByName(String name) {LambdaQueryWrapper<NcProgram> wrapper = new LambdaQueryWrapper<>();
+ public NcProgram getByName(String name) {
+ LambdaQueryWrapper<NcProgram> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(NcProgram::getName, name);
wrapper.eq(NcProgram::getIsLastEdition,1);
Optional<NcProgram> progOpt = this.getOneOpt(wrapper);
return progOpt.orElse(null);
}
+
+ /**
+ *
+ * @param nodeId 涓婄骇鑺傜偣id
+ * @param name 绋嬪簭鍚嶇О
+ */
+ public boolean programExistsUnderNode(Long nodeId, String name) {
+ LambdaQueryWrapper<NcProgram> wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(nodeId!=null,NcProgram::getNcNodeId, nodeId);
+ wrapper.eq(NcProgram::getName, name);
+ wrapper.eq(NcProgram::getIsLastEdition,1);
+
+ return this.count(wrapper)>0;
+ }
+
+ /**
+ *
+ * @param nodeId 涓婄骇鑺傜偣id
+ * @param name 绋嬪簭鍚嶇О
+ */
+ public boolean programExistsUnderOtherNode(Long nodeId, String name) {
+ LambdaQueryWrapper<NcProgram> wrapper = new LambdaQueryWrapper<>();
+ wrapper.ne(NcProgram::getNcNodeId, nodeId);
+ wrapper.eq(NcProgram::getName, name);
+ wrapper.eq(NcProgram::getIsLastEdition,1);
+
+ return this.count(wrapper)>0;
+ }
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/DncBackFileQueryVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/DncBackFileQueryVO.java
new file mode 100644
index 0000000..9883d68
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/DncBackFileQueryVO.java
@@ -0,0 +1,21 @@
+package org.springblade.mdm.program.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+import org.springblade.core.mp.support.Query;
+
+/**
+ * 鍒嗛〉鏌ヨ鍙傛暟
+ */
+
+@Schema(description = "DNC鍥炰紶鏂囦欢鏌ヨ瀵硅薄")
+@Setter
+@Getter
+public class DncBackFileQueryVO extends Query {
+ @Schema(description = "鍏抽敭瀛�")
+ private String keyword;
+ @Schema(description = "瑙勬牸")
+ private String machineSpec;
+
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/DncBackFileVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/DncBackFileVO.java
new file mode 100644
index 0000000..97c746f
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/DncBackFileVO.java
@@ -0,0 +1,24 @@
+package org.springblade.mdm.program.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+import org.springblade.mdm.commons.vo.BaseVO;
+
+import java.util.Date;
+
+@Schema(description = "DNC鍥炰紶鏂囦欢")
+@Setter
+@Getter
+public class DncBackFileVO extends BaseVO {
+ @Schema(description = "鏂囦欢鍚嶇О")
+ private String name;
+ @Schema(description = "鏈哄簥缂栧彿/鍥炰紶鏈哄簥")
+ private String machineCode;
+ @Schema(description = "绋嬪簭缂栧彿")
+ private String code;
+ @Schema(description = "鍥哄寲鐘舵��")
+ private Integer isCured=0;
+ @Schema(description = "鏂囦欢鍒拌揪鏃堕棿")
+ private Date arrivedTime;
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/MachineBackFileVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/MachineBackFileVO.java
deleted file mode 100644
index 38d0b92..0000000
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/MachineBackFileVO.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package org.springblade.mdm.program.vo;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Getter;
-import lombok.Setter;
-import org.springblade.mdm.commons.vo.BaseVO;
-
-@Setter
-@Getter
-@Schema(description = "鏈哄簥鍥炰紶鏂囦欢")
-public class MachineBackFileVO extends BaseVO {
-
-
- @Schema(description = "绋嬪簭鍚嶇О")
- private String programName;
- @Schema(description = "鏈哄簥缂栫爜/璁惧缂栫爜")
- private String programNo;
-}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcNodeVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcNodeVO.java
index ba1d1c0..9ef5b21 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcNodeVO.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcNodeVO.java
@@ -33,4 +33,7 @@
private String processEdition;
@Schema(description = "闆剁粍浠跺彿/鍥惧彿,绋嬪簭鏂囦欢鑺傜偣鐨勫睘鎬�")
private String drawingNo;
+
+ @Schema(description = "鐗堟湰鍙�,绋嬪簭鏂囦欢鑺傜偣鐨勫睘鎬�")
+ private Integer versionNumber;
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcProgramUploadVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcProgramUploadVO.java
index 9392022..802662e 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcProgramUploadVO.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcProgramUploadVO.java
@@ -7,7 +7,7 @@
import org.springframework.web.multipart.MultipartFile;
/**
- * NC绋嬪簭VO
+ * NC绋嬪簭涓婁紶VO
*/
@Setter
@Getter
@@ -32,8 +32,10 @@
@Schema(description = "宸ュ簭鐗堟湰")
private String processEdition;
- /**
- * 鏄惁娴嬭瘯绋嬪簭銆�1鏄紱0鍚�
- */
+ @Schema(description = "鏄惁涓烘祴璇曠▼搴忥紝1鏄紱0鍚�")
private Integer isTest;
+
+ @Schema(description = "纭鏍囪锛�1:纭涓婁紶蹇界暐鍚屽悕;鍏朵粬鍊兼垨null:榛樿涓婁紶")
+ private Integer confirm;
+
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcProgramVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcProgramVO.java
index b855e81..5913f07 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcProgramVO.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcProgramVO.java
@@ -34,4 +34,6 @@
@Schema(description = "鏄惁娴嬭瘯绋嬪簭.1鏄�;0鍚�")
private Integer isTest;
+ @Schema(description = "鐗堟湰鍙�")
+ private Integer versionNumber;
}
--
Gitblit v1.9.3