From 291ef3947565e8a20889e04836c04a8b6e4369dd Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期一, 11 八月 2025 10:48:58 +0800
Subject: [PATCH] 批量处理参数改为payload方式

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchController.java        |    9 +-
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/BatchDispatchService.java |   48 ++++++++++------
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExportDNCService.java |   25 +++++---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/BatchDispatchVO.java                   |   21 +++++++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/utils/FileContentUtil.java                     |   20 ++++++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/MyTestController.java                     |   15 +++++
 6 files changed, 106 insertions(+), 32 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchController.java
index 4818d2a..b6095a3 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchController.java
@@ -30,6 +30,7 @@
 import org.springblade.mdm.flow.service.execute.BatchDispatchService;
 import org.springblade.mdm.flow.service.execute.DefaultFlowCompleteService;
 import org.springblade.mdm.flow.service.execute.TryFlowCompleteService;
+import org.springblade.mdm.flow.vo.BatchDispatchVO;
 import org.springblade.mdm.flow.vo.TaskAssignVO;
 import org.springblade.mdm.program.entity.ProcessProgRef;
 import org.springblade.mdm.program.service.NcNodeAutoCreateService;
@@ -109,9 +110,9 @@
 
 	@Operation(summary = "鎵嬪姩鎵归噺娲惧伐", description = "缁勯暱鎵嬪姩鎵归噺娲惧伐")
 	@PostMapping("batchDispatch")
-	public R<Void> batchDispatch(String[] taskIds, String[] processInstanceIds, @Parameter(name = "comment", description = "澶囨敞")String comment,@Parameter(name = "assignee", description = "澶勭悊浜篿d") String assignee) {
+	public R<Void> batchDispatch(@RequestBody BatchDispatchVO batchDispatchVO) {
 		try {
-			dispatchService.batchCompleteTask(taskIds, processInstanceIds, comment, assignee);
+			dispatchService.batchCompleteTask(batchDispatchVO);
 			return R.success("娴佺▼鎻愪氦鎴愬姛");
 		}catch(Exception e){
 			return R.fail(e.getMessage());
@@ -121,9 +122,9 @@
 
 	@Operation(summary = "鑷姩鎵归噺娲惧伐", description = "缁勯暱鎵归噺娲惧伐锛屽悗绔嚜鍔ㄦ煡鎵惧鐞嗕汉")
 	@PostMapping("batchDispatchAuto")
-	public R<Void> batchDispatchAuto(String[] taskIds, String[] processInstanceIds, @Parameter(name = "comment", description = "澶囨敞")String comment) {
+	public R<Void> batchDispatchAuto(@RequestBody BatchDispatchVO batchDispatchVO) {
 		try {
-			dispatchService.batchAutoCompleteTask(taskIds, processInstanceIds, comment);
+			dispatchService.batchAutoCompleteTask(batchDispatchVO);
 			return R.success("娴佺▼鎻愪氦鎴愬姛");
 		}catch(Exception e){
 			return R.fail(e.getMessage());
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/BatchDispatchService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/BatchDispatchService.java
index 4a5d95d..b44505f 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/BatchDispatchService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/execute/BatchDispatchService.java
@@ -9,6 +9,7 @@
 import org.springblade.mdm.flow.constants.FlowContants;
 import org.springblade.mdm.flow.service.ApproveRecordService;
 import org.springblade.mdm.flow.service.FlowProgramFileService;
+import org.springblade.mdm.flow.vo.BatchDispatchVO;
 import org.springblade.mdm.program.service.NcNodeAutoCreateService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -27,29 +28,23 @@
 	@Autowired
 	private TaskService taskService;
 	@Transactional
-	public void batchCompleteTask(String[] taskIds, String[] processInstanceIds, String comment,String assignee) {
-		if(StringUtils.isBlank(assignee)){
+	public void batchCompleteTask(BatchDispatchVO batchDispatchVO) {
+		//String[] taskIds, String[] processInstanceIds, String comment, String assignee
+		if(StringUtils.isBlank(batchDispatchVO.getAssignee())){
 			throw new ServiceException("缂哄皯澶勭悊浜哄弬鏁�");
 		}
-		if(taskIds == null || taskIds.length == 0){
-			throw new ServiceException("浠诲姟id缁勪负绌�");
-		}
-
-		if(processInstanceIds == null || processInstanceIds.length == 0){
-			throw new ServiceException("娴佺▼瀹炰緥id缁勪负绌�");
-		}
-		if(taskIds.length != processInstanceIds.length){
-			throw new ServiceException("浠诲姟id涓庢祦绋嬪疄渚媔d鏁伴噺涓嶄竴鑷�");
-		}
+		checkBatchParameter(batchDispatchVO);
 
 		Map<String, Object> variables = Kv.create();
-		variables.put("assignee", assignee);
+		variables.put("assignee", batchDispatchVO.getAssignee());
 		variables.put("approve", FlowContants.Y);//榛樿灏辨槸閫氳繃
 		String taskId;
 		String processInstanceId;
+		String comment = batchDispatchVO.getComment();
+		String[] taskIds = batchDispatchVO.getTaskIds();
 		for(int i=0;i<taskIds.length;i++){
 			taskId = taskIds[i];
-			processInstanceId = processInstanceIds[i];
+			processInstanceId = batchDispatchVO.getProcessInstanceIds()[i];
 
 			Task task = taskService.createTaskQuery()
 				.taskId(taskId)
@@ -66,11 +61,28 @@
 
 	/**
 	 * 鑷姩鎵归噺娲惧伐
-	 * @param taskIds
-	 * @param processInstanceIds
-	 * @param comment
+	 * @param batchDispatchVO 鎵归噺澶勭悊鍙傛暟
 	 */
-	public void batchAutoCompleteTask(String[] taskIds, String[] processInstanceIds, String comment) {
+	public void batchAutoCompleteTask(BatchDispatchVO batchDispatchVO) {
 		//TODO 甯﹀疄鐜�
+		checkBatchParameter(batchDispatchVO);
+	}
+
+	/**
+	 * 楠岃瘉鎵归噺澶勭悊鍙傛暟
+	 * @param batchDispatchVO 鎵归噺澶勭悊鍙傛暟瀵硅薄
+	 */
+	void checkBatchParameter(BatchDispatchVO batchDispatchVO){
+		String[] taskIds = batchDispatchVO.getTaskIds();
+		if(taskIds == null || taskIds.length == 0){
+			throw new ServiceException("浠诲姟id缁勪负绌�");
+		}
+		String[] processInstanceIds = batchDispatchVO.getProcessInstanceIds();
+		if(processInstanceIds == null || processInstanceIds.length == 0){
+			throw new ServiceException("娴佺▼瀹炰緥id缁勪负绌�");
+		}
+		if(taskIds.length != processInstanceIds.length){
+			throw new ServiceException("浠诲姟id涓庢祦绋嬪疄渚媔d鏁伴噺涓嶄竴鑷�");
+		}
 	}
 }
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/BatchDispatchVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/BatchDispatchVO.java
new file mode 100644
index 0000000..a442b56
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/BatchDispatchVO.java
@@ -0,0 +1,21 @@
+package org.springblade.mdm.flow.vo;
+
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDate;
+
+@Data
+@Schema(description = "浠诲姟璁″垝")
+public class BatchDispatchVO {
+	@Schema(description = "浠诲姟id鏁扮粍")
+	private String[] taskIds;
+	@Schema(description = "娴佺▼瀹炰緥id鏁扮粍")
+	private String[] processInstanceIds;
+	@Schema(description = "澶囨敞")
+	private String comment;
+	@Schema(description = "澶勭悊浜篿d")
+	private String assignee;
+
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExportDNCService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExportDNCService.java
index a0a2e65..15b31f1 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExportDNCService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExportDNCService.java
@@ -89,7 +89,7 @@
 
 				addProgramPackageToZip(zipOut,approved);
 			}
-			addDataJson(zipOut, programPackageNodeIdList);
+			//addDataJson(zipOut, programPackageNodeIdList);
 		}
 
 		os.close();
@@ -152,7 +152,11 @@
 	 * @return
 	 */
 	InputStream addSendDirAnnotation(InputStream inputStream,Machine machine,List<Dict> annotationList) throws IOException {
-		return FileContentUtil.insertLine(inputStream,1,generateAnnotation(machine.getProgSendDir()==null? StringUtil.EMPTY:machine.getProgSendDir(),machine.getMachineGroupCode(),annotationList));
+		//妫�娴嬬浜岃鏄惁鏄矾寰�
+		String annotationText = generateAnnotation(machine.getProgSendDir()==null? StringUtil.EMPTY:machine.getProgSendDir(),machine.getMachineGroupCode(),annotationList);
+
+		//TODO 鏀瑰垽鏂鍐呭
+		return FileContentUtil.insertLine(inputStream,1,annotationText);
 	}
 
 	/**
@@ -193,11 +197,12 @@
 	 * 瀵煎叆鏁版嵁鏂囦欢
 	 * @param zipOut
 	 */
+	/*
 	void addDataJson(ZipOutputStream zipOut, List<Long> programPackageNodeIdList) throws IOException {
 		addNodeDataJson(zipOut, programPackageNodeIdList);
 		addApproveRecordDataJson(zipOut, programPackageNodeIdList);
 	}
-
+	*/
 
 	/**
 	 * zip淇濋噸鍔犲叆鑺傜偣鐨勬暟鎹�
@@ -205,6 +210,7 @@
 	 * @param pkgNodeIdList
 	 * @throws IOException
 	 */
+	/*
 	void  addNodeDataJson(ZipOutputStream zipOut,List<Long>  pkgNodeIdList) throws IOException {
 		List<NcNode> pkgNodes =  this.ncNodeService.lambdaQuery().in(NcNode::getId, pkgNodeIdList).list();
 
@@ -229,7 +235,8 @@
 		addInputStreamToZip(zipOut,new ByteArrayInputStream(jsonArray.toJSONString().getBytes(StandardCharsets.UTF_8)),NODE_JSON_FILE);
 
 	}
-
+	*/
+	/*
 	@NotNull
 	private static JSONObject getNodeJsonObject(NcNode node) {
 		JSONObject recObj = new JSONObject();
@@ -253,17 +260,15 @@
 		recObj.put("processInstanceId", node.getProcessInstanceId());
 		return recObj;
 	}
-
+	*/
 	/**
 	 * 瀵煎叆瀹℃壒璁板綍
 	 * @param zipOut
 	 * @param programPackageNodeIdList 绋嬪簭鍖呭悕鐨刬d鍒楄〃
 	 */
+	/*
 	void addApproveRecordDataJson(ZipOutputStream zipOut, List<Long> programPackageNodeIdList) throws IOException {
-		/*
-		List<String> instanceIds = this.ncNodeService.lambdaQuery().in(NcNode::getId, programPackageNodeIdList)
-			.list().stream().map(NcNode::getProcessInstanceId).toList();
-*/
+
 		//List<ApproveRecord> records = approveRecordService.lambdaQuery().in(ApproveRecord::getProcessInstanceId, instanceIds).list();
 		List<ApproveRecord> records = approveRecordService.lambdaQuery().in(ApproveRecord::getNcNodeId, programPackageNodeIdList).list();
 
@@ -285,7 +290,7 @@
 		}
 		addInputStreamToZip(zipOut,new ByteArrayInputStream(jsonArray.toJSONString().getBytes(StandardCharsets.UTF_8)),"exp_mdm_approve_record.json");
 
-	}
+	}*/
 
 	void addSuperProperties(JSONObject recObj, BizEntity entity){
 		recObj.put("tenantId",entity.getTenantId());
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/MyTestController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/MyTestController.java
index 838f96f..47bae0d 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/MyTestController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/MyTestController.java
@@ -6,11 +6,15 @@
 import org.springblade.core.tool.api.R;
 import org.springblade.mdm.program.entity.NcNode;
 import org.springblade.mdm.program.service.NcNodeService;
+import org.springblade.mdm.utils.FileContentUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
 import java.util.List;
 
 @Slf4j
@@ -40,4 +44,15 @@
 
 	}
 
+	/**
+	 * 鏂板
+	 */
+	@GetMapping("/readline")
+	@Operation(summary = "like", description = "like")
+	public R<String> like(String file,int line) throws IOException {
+		FileInputStream fis = new FileInputStream(file);
+		return R.data(FileContentUtil.readLineAt(fis,line));
+
+	}
+
 }
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/utils/FileContentUtil.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/utils/FileContentUtil.java
index 315080f..bff0c61 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/utils/FileContentUtil.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/utils/FileContentUtil.java
@@ -105,6 +105,26 @@
 	}
 
 	/**
+	 * 璇诲彇鏂囦欢鏌愯
+	 * @param inputStream
+	 * @param lineIndex 琛岀储寮� 0based
+	 * @return 琛屾枃鏈�
+	 * @throws IOException
+	 */
+	public static String readLineAt(InputStream inputStream,int lineIndex) throws IOException {
+		String lineText = "";
+		try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) {
+			// 璺宠繃绗竴琛�
+			int current = 0;
+			while(current<=lineIndex && lineText!=null) {
+				lineText = reader.readLine();
+				current++;
+			}
+		}
+		return lineText;
+	}
+
+	/**
 	 * 浠庤緭鍏ユ祦鑾峰彇鏂囨湰
 	 * @param ins 鏉熸祦
 	 * @return 鏂囨湰瀛楃

--
Gitblit v1.9.3