From d0e196b4c6f302b9d571d6220471d15e2b97c527 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期五, 04 七月 2025 01:36:51 +0800
Subject: [PATCH] dnc导出修改&node字段调整
---
blade-service/blade-mdm/src/test/java/org/springblade/mdm/utils/CustomBinaryReaderTest.java | 17 +
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/CureFlowService.java | 4
doc/sql/mdm/mdm.mysql.all.create.sql | 34 ++
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/DncSendBackController.java | 2
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramExportDNCController.java | 22 +
blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/vo/IdsVO.java | 15 +
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramApprovedService.java | 151 ++++++++++++
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/TaskAssignVO.java | 1
blade-service/blade-mdm/src/test/java/org/springblade/mdm/utils/CustomBinaryWriterTest.java | 16 +
blade-service/blade-mdm/src/main/resources/processesbpmn/dispatch.bpmn20.xml | 12
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/ApproveRecordMapper.java | 15 +
blade-service/blade-mdm/src/main/java/org/springblade/mdm/utils/FileExchangeUtil.java | 30 ++
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/ApproveRecordMapper.xml | 21 +
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ApproveRecordService.java | 27 ++
blade-service/blade-mdm/pom.xml | 5
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/entity/ApproveRecord.java | 51 ++++
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcNode.java | 10
blade-service/blade-mdm/src/main/java/org/springblade/mdm/utils/CustomBinaryWriter.java | 29 ++
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchController.java | 38 +++
/dev/null | 33 --
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramController.java | 19 +
blade-service/blade-mdm/src/main/java/org/springblade/mdm/utils/CustomBinaryReader.java | 37 +++
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/ApproveRecordVO.java | 40 +++
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/FlowMgrController.java | 4
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExchangeService.java | 53 +++
25 files changed, 617 insertions(+), 69 deletions(-)
diff --git a/blade-service/blade-mdm/pom.xml b/blade-service/blade-mdm/pom.xml
index 5e025cd..9c621b1 100644
--- a/blade-service/blade-mdm/pom.xml
+++ b/blade-service/blade-mdm/pom.xml
@@ -80,6 +80,11 @@
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
+ <dependency>
+ <groupId>org.springblade</groupId>
+ <artifactId>blade-core-test</artifactId>
+ <scope>test</scope>
+ </dependency>
<!--<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-starter-transaction</artifactId>
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/vo/IdsVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/vo/IdsVO.java
new file mode 100644
index 0000000..6b63e50
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/vo/IdsVO.java
@@ -0,0 +1,15 @@
+package org.springblade.mdm.commons.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+@Setter
+@Getter
+public class IdsVO {
+ @Schema(description = "id鏁扮粍")
+ private Long[] ids;
+
+}
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 9736baa..f464779 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
@@ -6,12 +6,16 @@
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.flowable.engine.TaskService;
+import org.flowable.task.api.Task;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.support.Kv;
+import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringUtil;
+import org.springblade.mdm.flow.entity.ApproveRecord;
import org.springblade.mdm.flow.excution.StartDispatcher;
+import org.springblade.mdm.flow.service.ApproveRecordService;
import org.springblade.mdm.flow.vo.TaskAssignVO;
import org.springblade.mdm.program.service.ProcessProgRefService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -20,6 +24,8 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Map;
@Slf4j
@@ -34,6 +40,9 @@
private TaskService taskService;
@Autowired
private ProcessProgRefService processProgRefService;
+
+ @Autowired
+ private ApproveRecordService approveRecordService;
/**
* 鏂板
*/
@@ -61,9 +70,12 @@
//鍔犲叆瀹℃壒鐢ㄦ埛
variables.put("approveUserNickName",AuthUtil.getNickName());
+
if(variables.containsKey("assignee")){
+ addApproveRecord(taskId,processInstanceId,comment,programIds,variables);
//鎸囧畾浜嗕笅涓�姝ユ墽琛屼汉
taskService.complete(taskId, variables);
+
return R.success("娴佺▼鎻愪氦鎴愬姛");
}else {
// 瀹屾垚浠诲姟,缁欓粯璁ょ敤鎴�
@@ -71,4 +83,30 @@
}
}
+
+ void addApproveRecord(String taskId, String processInstanceId, String comment,String programIds,Map<String, Object> variables){
+ List<Long> programIdList = new ArrayList<>();
+ if(programIds != null){
+ programIdList = Func.toLongList(programIds);
+ }else{
+ programIdList.add(null);
+ }
+ Task task = taskService.createTaskQuery()
+ .taskId(taskId)
+ .singleResult();
+ for(Long programId : programIdList){
+ ApproveRecord rec = new ApproveRecord();
+ rec.setTaskName(task.getName());
+ rec.setComment(comment);
+ rec.setNcProgramId(programId);
+ rec.setOperateResult(variables.get("approve")+"");//瀹℃壒缁撴灉
+ rec.setOperateTime(DateUtil.now());
+ rec.setProcessInstanceId(processInstanceId);
+ rec.setUserId(AuthUtil.getUserId());
+ rec.setUserNickname(AuthUtil.getNickName());
+
+ approveRecordService.save(rec);
+ }
+
+ }
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/FlowMgrController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/FlowMgrController.java
index cb6f60d..39e093a 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/FlowMgrController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/FlowMgrController.java
@@ -17,6 +17,7 @@
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.mdm.basesetting.machine.vo.MachineExcelVO;
+import org.springblade.mdm.flow.service.ApproveRecordService;
import org.springblade.mdm.flow.service.FlowBusinessService;
import org.springblade.mdm.flow.vo.FlowVO;
import org.springblade.mdm.flow.vo.OvertimeTaskExcelVO;
@@ -42,6 +43,7 @@
@Autowired
private HistoryService historyService;
+
@GetMapping("overtime-list")
@ApiOperationSupport(order = 3)
@@ -71,7 +73,7 @@
}
- @Operation(summary = "娴佺▼杞ㄨ抗", description = "娴佺▼杞ㄨ抗")
+ @Operation(summary = "娴佺▼鎵ц杞ㄨ抗", description = "娴佺▼鎵ц杞ㄨ抗")
@GetMapping("process-trace")
public R<List<TaskTraceVO>> processTrace(String processInstanceId){
List<TaskTraceVO> result = new ArrayList<>();
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/entity/ApproveRecord.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/entity/ApproveRecord.java
new file mode 100644
index 0000000..93f3a6e
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/entity/ApproveRecord.java
@@ -0,0 +1,51 @@
+package org.springblade.mdm.flow.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+import org.springblade.core.mp.base.BizEntity;
+
+import java.time.LocalDate;
+import java.util.Date;
+
+/**
+ * 鏁版帶绋嬪簭瀹℃壒璁板綍
+ */
+@Setter
+@Getter
+@TableName("mdm_approve_record")
+public class ApproveRecord extends BizEntity {
+
+ private String processInstanceId;
+
+ /**
+ * 浠诲姟鍚嶇О
+ */
+ private String taskName;
+ /**
+ * 澶囨敞
+ */
+ private String comment;
+ /**
+ * 鏁版帶绋嬪簭id锛岃繖涓彲鑳戒笉闇�瑕侊紝鍙互鏍规嵁鍏宠仈琛╩dm_process_prog_ref鏉ヨ幏鍙�
+ */
+ private Long ncProgramId;
+
+ private Long userId;
+
+ /**
+ * 瀹℃壒鐢ㄦ埛濮撳悕
+ */
+ private String userNickname;
+
+ /**
+ * 杩囨湡鏃ユ湡
+ */
+ private Date operateTime;
+
+ /**
+ * 鑺傜偣绫诲瀷锛氬瓧鍏�
+ */
+ private String operateResult;
+
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/ApproveRecordMapper.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/ApproveRecordMapper.java
new file mode 100644
index 0000000..65b3a2d
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/ApproveRecordMapper.java
@@ -0,0 +1,15 @@
+package org.springblade.mdm.flow.mapper;
+
+import org.springblade.core.mp.mapper.BladeMapper;
+import org.springblade.mdm.flow.entity.ApproveRecord;
+import org.springblade.mdm.flow.vo.ApproveRecordVO;
+import org.springblade.mdm.program.entity.NcNode;
+import org.springblade.mdm.program.vo.NcNodeVO;
+
+import java.util.List;
+
+public interface ApproveRecordMapper extends BladeMapper<ApproveRecord> {
+ List<ApproveRecordVO> listByNcProgramId(Long ncProgramId);
+
+
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/ApproveRecordMapper.xml b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/ApproveRecordMapper.xml
new file mode 100644
index 0000000..12d2dad
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/ApproveRecordMapper.xml
@@ -0,0 +1,21 @@
+<?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.flow.mapper.ApproveRecordMapper">
+ <resultMap id="BaseResultMap" type="org.springblade.mdm.flow.entity.ApproveRecord">
+ <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>
+
+
+
+ <sql id="all_columns">id,tenant_id,nc_program_id,process_instances_id,operate_time,operate_result,user_id,user_nickname,status,create_dept,is_deleted,create_time,create_user,update_time,update_user</sql>
+ <select id="listByNcProgramId" resultType="org.springblade.mdm.flow.vo.ApproveRecordVO">
+ select <include refid="all_columns"/> FROM mdm_approve_record
+ WHERE nc_program_id = ${ncProgramId} and is_deleted = 0 order by create_time desc
+
+ </select>
+
+</mapper>
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ApproveRecordService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ApproveRecordService.java
new file mode 100644
index 0000000..ae3d979
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ApproveRecordService.java
@@ -0,0 +1,27 @@
+
+package org.springblade.mdm.flow.service;
+
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springblade.core.mp.base.BizServiceImpl;
+import org.springblade.mdm.flow.entity.ApproveRecord;
+import org.springblade.mdm.flow.mapper.ApproveRecordMapper;
+import org.springblade.mdm.flow.vo.ApproveRecordVO;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 瀹℃壒璁板綍锛岀敤浜庢煡璇㈡墽琛岃建杩�
+ *
+ * @author yangys
+ */
+@Slf4j
+@Service
+@AllArgsConstructor
+public class ApproveRecordService extends BizServiceImpl<ApproveRecordMapper, ApproveRecord> {
+
+ public List<ApproveRecordVO> listByNcProgramId(Long ncProgramId) {
+ return this.getBaseMapper().listByNcProgramId(ncProgramId);
+ }
+}
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 078f02c..15b4550 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
@@ -48,12 +48,12 @@
*/
public void start(long programId){
Map<String, Object> vars = new HashMap<>();
- //NcProgram prog = ncProgramService.getById(programId);
+ NcProgram prog = ncProgramService.getById(programId);
NcNode progNode = ncNodeService.getById(programId);
Machine machine = machineService.getByCode(progNode.getMachineCode());
vars.put("machineCode",machine.getCode());
vars.put("machineMode",machine.getName());
- vars.put("processEdition",progNode.getProcessEdition());
+ vars.put("processEdition",prog.getProcessEdition());
vars.put("programId",programId);
vars.put("program",progNode);
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/ApproveRecordVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/ApproveRecordVO.java
new file mode 100644
index 0000000..07e2086
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/ApproveRecordVO.java
@@ -0,0 +1,40 @@
+package org.springblade.mdm.flow.vo;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+import org.springblade.core.mp.base.BizEntity;
+import org.springblade.mdm.commons.vo.BaseVO;
+
+import java.util.Date;
+
+/**
+ * 鏁版帶绋嬪簭瀹℃壒璁板綍
+ */
+@Setter
+@Getter
+public class ApproveRecordVO extends BaseVO {
+
+ private String processInstanceId;
+ /**
+ * 鏁版帶绋嬪簭id
+ */
+ @Schema(description = "鏁版帶绋嬪簭id")
+ private Long ncProgramId;
+ @Schema(description = "鐢ㄦ埛id")
+ private Long userId;
+
+
+ @Schema(description = "瀹℃壒鐢ㄦ埛濮撳悕")
+ private String userNickname;
+
+
+ @Schema(description = "瀹℃壒鏃ユ湡")
+ private Date operateTime;
+
+
+ @Schema(description = "瀹℃壒缁撴灉")
+ private String operateResult;
+
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/TaskAssignVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/TaskAssignVO.java
index 56794eb..00d029a 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/TaskAssignVO.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/TaskAssignVO.java
@@ -37,4 +37,5 @@
private LocalDate planStartTime;
@Schema(description = "涓诲埗鍒嗗伐琛↖D")
private long producePlanId;
+
}
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 970cd82..a5bb5b7 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
@@ -42,7 +42,7 @@
*/
@PostMapping("upload")
@ApiOperationSupport(order = 1)
- @Operation(summary = "涓婁紶鏂囦欢", description = "涓婁紶DNC鍥炰紶鏂囦欢")
+ @Operation(summary = "DNC鍥炰紶鏂囦欢瀵煎叆锛屼笂浼犳枃浠�", description = "涓婁紶DNC鍥炰紶鏂囦欢")
public R<Void> dncSendBackUpload(@RequestParam MultipartFile file) {
try {
ncProgramExchangeService.dncSendBackUpload(file);
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 4639401..0428131 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
@@ -7,17 +7,25 @@
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.flowable.engine.task.Comment;
+import org.flowable.task.api.history.HistoricTaskInstance;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
+import org.springblade.mdm.flow.service.ApproveRecordService;
+import org.springblade.mdm.flow.vo.ApproveRecordVO;
+import org.springblade.mdm.flow.vo.TaskTraceVO;
import org.springblade.mdm.program.entity.NcProgram;
import org.springblade.mdm.program.service.NcProgramService;
import org.springblade.mdm.program.service.ProcessProgRefService;
import org.springblade.mdm.program.vo.NcNodeProgramQueryVO;
import org.springblade.mdm.program.vo.NcProgramUploadVO;
import org.springblade.mdm.program.vo.NcProgramVO;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -35,6 +43,9 @@
private final NcProgramService ncProgramService;
private final ProcessProgRefService ncProcessProgRefService;
+
+ private final ApproveRecordService approveRecordService;
+
@PostMapping("/upload")
@Operation(summary = "涓婁紶鏂囦欢", description = "涓婁紶绋嬪簭/闄勪欢鏂囦欢")
public R<Boolean> upload(NcProgramUploadVO uploadVO) {
@@ -92,4 +103,12 @@
public R<List<NcProgramVO>> listByProcess(@Parameter(description="鎵�灞炶妭鐐笽D")@RequestParam String processInstanceId) {
return R.data(ncProcessProgRefService.listByProcess(processInstanceId));
}
+
+ @Operation(summary = "鎿嶄綔鏃ュ織", description = "绋嬪簭鎿嶄綔鏃ュ織锛屽嵆瀹℃壒璁板綍锛屽湪涓婚〉鐐瑰嚮鏌愪竴涓▼搴忓悗鐨勪笅鏂规爣绛炬樉绀�")
+ @GetMapping("approve-records")
+ public R<List<ApproveRecordVO>> processTrace1(@Parameter(description = "绋嬪簭id") Long ncProgramId){
+ List<TaskTraceVO> result = new ArrayList<>();
+
+ return R.data(approveRecordService.listByNcProgramId(ncProgramId));
+ }
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramExchangeController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramExchangeController.java
deleted file mode 100644
index e6f853e..0000000
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramExchangeController.java
+++ /dev/null
@@ -1,33 +0,0 @@
-
-package org.springblade.mdm.program.controller;
-
-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.tenant.annotation.NonDS;
-import org.springblade.core.tool.api.R;
-import org.springblade.mdm.program.service.NcProgramService;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
-
-/**
- * 绋嬪簭娑夊瘑缃�-宸ユ帶缃戜氦鎹㈡帴鍙�
- *
- * @author yangys
- */
-@NonDS
-@RestController
-@RequestMapping("/program/exchange")
-@AllArgsConstructor
-@Tag(name = "鏁版帶绋嬪簭瀵煎叆瀵煎嚭", description = "鏁版帶绋嬪簭瀵煎叆瀵煎嚭")
-@Slf4j
-public class NcProgramExchangeController {
-
- private final NcProgramService ncProgramService;
-
-}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramExportDNCController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramExportDNCController.java
index db7406c..90f6c17 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramExportDNCController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramExportDNCController.java
@@ -3,22 +3,24 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
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.log.exception.ServiceException;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
+import org.springblade.mdm.commons.vo.IdsVO;
import org.springblade.mdm.program.service.NcProgramApprovedService;
import org.springblade.mdm.program.service.NcProgramService;
import org.springblade.mdm.program.vo.NcNodeProgramQueryVO;
import org.springblade.mdm.program.vo.NcProgramExportDncPageVO;
import org.springblade.mdm.program.vo.NcProgramExportDncQueryVO;
import org.springblade.mdm.program.vo.NcProgramVO;
-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 org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
/**
* 绋嬪簭娑夊瘑缃�-宸ユ帶缃戜氦鎹㈡帴鍙�
@@ -44,9 +46,17 @@
@PostMapping("/export-dnc")
@Operation(summary = "鏁版帶绋嬪簭瀵煎嚭dnc", description = "鏁版帶绋嬪簭瀵煎嚭鍒板伐鎺х綉")
- public void exportDnc(Long nodeId, HttpServletResponse response) {
+ public void exportDnc(@RequestBody @Parameter(description = "瀹℃壒琛╥d鏁扮粍") IdsVO vo, HttpServletResponse response) {
+ if(vo.getIds() == null || vo.getIds().length == 0) {
+ throw new ServiceException("鏈�夋嫨鏂囦欢瀵煎嚭");
+ }
+ try {
+ ncProgramApprovedService.exportDnc(vo.getIds(),response.getOutputStream());
+ } catch (IOException e) {
+ log.error("瀵煎嚭DNC寮傚父", e);
+ throw new RuntimeException(e);
+ }
- //return R.<Boolean>status(true);
}
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcNode.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcNode.java
index 6268a00..7e2fbfe 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcNode.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcNode.java
@@ -34,12 +34,12 @@
/**
* 宸ュ簭鐗堟
*/
- private String processEdition;
+ //private String processEdition;
/**
* 宸ヨ壓鐗堟
*/
- private String craftEdition;
+ //private String craftEdition;
/**
* 闆剁粍浠跺彿/鍥惧彿
*/
@@ -47,7 +47,7 @@
/**
* 鍥惧彿鐗堟
*/
- private String partNoEdition;
+ //private String partNoEdition;
/**
* 鏄惁鍥哄寲
@@ -56,11 +56,11 @@
/**
* 杩囨湡鏃ユ湡
*/
- private LocalDate expireDate;
+ //private LocalDate expireDate;
/**
* 鏄惁閿佸畾
*/
- private Integer isLocked;
+ //private Integer isLocked;
/**
* 鑺傜偣绫诲瀷锛氬瓧鍏�
*/
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramApprovedService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramApprovedService.java
index 4a12b5e..46c4b00 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramApprovedService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramApprovedService.java
@@ -1,18 +1,39 @@
package org.springblade.mdm.program.service;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.compress.archivers.zip.ZipUtil;
+import org.springblade.core.mp.base.BizEntity;
import org.springblade.core.mp.base.BizServiceImpl;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
+import org.springblade.core.oss.OssTemplate;
+import org.springblade.mdm.flow.entity.ApproveRecord;
+import org.springblade.mdm.flow.service.ApproveRecordService;
+import org.springblade.mdm.program.entity.NcNode;
+import org.springblade.mdm.program.entity.NcProgram;
import org.springblade.mdm.program.entity.NcProgramApproved;
import org.springblade.mdm.program.mapper.NcProgramApprovedMapper;
import org.springblade.mdm.program.vo.DncSendBackData;
import org.springblade.mdm.program.vo.NcProgramExportDncPageVO;
import org.springblade.mdm.program.vo.NcProgramExportDncQueryVO;
+import org.springblade.mdm.utils.CustomBinaryWriter;
import org.springframework.stereotype.Service;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
/**
* 涓嬪彂/鍥炰紶绋嬪簭缁熻
@@ -23,8 +44,10 @@
@Service
@AllArgsConstructor
public class NcProgramApprovedService extends BizServiceImpl<NcProgramApprovedMapper, NcProgramApproved> {
-
-
+ private final NcProgramService progService;
+ private final OssTemplate ossTemplate;
+ private final ApproveRecordService approvedService;
+ private final NcNodeService ncNodeService;
/**
* 鍒嗛〉鏌ヨ
* @param query 鏌ヨ鍙傛暟
@@ -37,5 +60,129 @@
return page;
}
+
+ /**
+ * 瀵煎嚭dnc
+ * @param approvedIdArr 寰呭鍑哄鎵硅〃id鏁扮粍
+ */
+ public void exportDnc(Long[] approvedIdArr, OutputStream os) throws IOException {
+ ZipOutputStream zipOut = new ZipOutputStream(os);
+
+ ArrayList<Long> programIdList = new ArrayList<Long>();
+
+ for (Long approvedId : approvedIdArr) {
+ NcProgramApproved approved = this.getById(approvedId);
+ programIdList.add(approved.getNcProgramId());
+
+ NcProgram prog = progService.getById(approved.getNcProgramId());
+
+ String filename = prog.getOssName();
+ InputStream inputStream = ossTemplate.statFileStream(filename);
+
+ addInputStreamToZip(zipOut, inputStream, prog.getName());
+
+ }
+ addDataJson(zipOut, programIdList);
+
+ }
+
+ /**
+ * 瀵煎叆鏁版嵁鏂囦欢
+ * @param zipOut
+ */
+ void addDataJson(ZipOutputStream zipOut, List<Long> programIdList) throws IOException {
+ //
+ addApproveRecordDataJson(zipOut, programIdList);
+
+ addNcNodeDataJson(zipOut, programIdList);
+ }
+
+ /**
+ * 瀵煎叆瀹℃壒璁板綍
+ * @param zipOut
+ * @param programIdList
+ */
+ void addApproveRecordDataJson(ZipOutputStream zipOut, List<Long> programIdList) throws IOException {
+ LambdaQueryWrapper<ApproveRecord> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.in(ApproveRecord::getNcProgramId, programIdList);
+ List<ApproveRecord> records = approvedService.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<NcNode> nodeList = new ArrayList<>();
+ for(NcProgram program : programs){
+ JSONObject recObj = new JSONObject();
+ NcNode ncNode = ncNodeService.getById(program.getNcNodeId());
+
+ nodeList.add(ncNode);
+
+ }
+
+ for(NcNode node : nodeList){
+ JSONObject recObj = new JSONObject();
+
+ recObj.put("id", node.getId());
+ recObj.put("nodeType", node.getNodeType());
+ recObj.put("machineCode",node.getMachineCode());
+
+ addSuperProperties(recObj,node);
+ }
+ addInputStreamToZip(zipOut,new ByteArrayInputStream(jsonArray.toJSONString().getBytes(StandardCharsets.UTF_8)),"exp_mdm_nc_node.json");
+ }
+
+ void addSuperProperties(JSONObject recObj, BizEntity entity){
+ 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 {
+ // 鍒涘缓鏂扮殑 ZIP 鏉$洰
+ ZipEntry zipEntry = new ZipEntry(entryName);
+ zipOut.putNextEntry(zipEntry);
+
+ // 灏嗚緭鍏ユ祦鍐欏叆 ZIP 杈撳嚭娴�
+ byte[] buffer = new byte[1024];
+ int length;
+ while ((length = inputStream.read(buffer)) >= 0) {
+ zipOut.write(buffer, 0, length);
+ }
+
+ // 鍏抽棴褰撳墠鏉$洰
+ zipOut.closeEntry();
+ }
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExchangeService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExchangeService.java
index 3cfc5de..d4c2b6a 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExchangeService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExchangeService.java
@@ -11,21 +11,25 @@
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.utils.FileUtil;
-import org.springblade.mdm.basesetting.machine.vo.MachineVO;
import org.springblade.mdm.program.entity.NcProgramExchange;
import org.springblade.mdm.program.mapper.NcProgramExchangeMapper;
import org.springblade.mdm.program.vo.DncSendBackData;
+import org.springblade.mdm.utils.CustomBinaryReader;
+import org.springblade.mdm.utils.FileExchangeUtil;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
-import java.io.IOException;
-import java.io.InputStream;
+import java.io.*;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.Enumeration;
import java.util.List;
/**
- * 涓嬪彂/鍥炰紶绋嬪簭缁熻
+ * 绋嬪簭浜ゆ崲锛坉nc瀵煎叆/瀵煎嚭锛�
*
* @author yangys
*/
@@ -36,16 +40,16 @@
/**
* dnc鍥炰紶鏂囦欢涓婁紶
- * @param file
+ * @param file 鏂囦欢
* @return
*/
- public void dncSendBackUpload(MultipartFile file) {
- List<DncSendBackData> list=new ArrayList<>();
+ public List<DncSendBackData> dncSendBackUpload(MultipartFile file) {
+ List<DncSendBackData> list ;
try {
String fileName = file.getOriginalFilename();
- InputStream fileInputStream = file.getInputStream();
-
- byte[] bytes = FileUtil.copyToByteArray(fileInputStream);
+ //InputStream fileInputStream = file.getInputStream();
+ InputStream zipFileInputStream = FileExchangeUtil.convertFileToZip(file.getInputStream());
+ byte[] bytes = FileUtil.copyToByteArray(zipFileInputStream);
list = parseDncZipFromByteArray(bytes);
for(DncSendBackData dncSendBackData:list){
NcProgramExchange exchange=new NcProgramExchange();
@@ -57,10 +61,36 @@
} catch (IOException e) {
log.error("涓婁紶dnc鏂囦欢澶辫触",e);
+ list = Collections.emptyList();
}
-
+ return list;
}
+ InputStream convertFileToZip(InputStream inputStream) throws IOException {
+
+ File tempFile = createTempFile();
+ FileOutputStream fos = new FileOutputStream(tempFile);
+ CustomBinaryReader.read(inputStream,fos);
+
+
+ FileInputStream dInstream = new FileInputStream(tempFile);
+
+ return dInstream;
+ }
+
+ /**
+ * 鍒涘缓涓�涓复鏃舵枃浠�
+ * @return
+ * @throws IOException
+ */
+ File createTempFile() throws IOException {
+ Path tempDir = Paths.get(System.getProperty("java.io.tmpdir"));
+ // 鍦ㄤ复鏃剁洰褰曚腑鍒涘缓鏂囦欢
+ String tfilename = "t"+System.currentTimeMillis();
+ Path tempFile = Files.createTempFile(tempDir, tfilename, ".tmp");
+ System.out.println("鍒涘缓鐨勪复鏃舵枃浠�: " + tempFile);
+ return tempFile.toFile();
+ }
public static List<DncSendBackData> parseDncZipFromByteArray(byte[] zipData) throws IOException {
//List<DncSendBackData> datas = new ArrayList<>();
List<DncSendBackData> datas = ZipFileDirectoryScanner.getFilesInDirectoryRecursive(zipData, "");
@@ -107,6 +137,7 @@
* @param query 鏌ヨ鍙傛暟
* @return
*/
+
public IPage<DncSendBackData> dncSendBackPageQuery(Query query) {
IPage<DncSendBackData> page = this.getBaseMapper().dncSendBackpageQuery(Condition.getPage(query),query);
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/utils/CustomBinaryReader.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/utils/CustomBinaryReader.java
new file mode 100644
index 0000000..42b5eae
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/utils/CustomBinaryReader.java
@@ -0,0 +1,37 @@
+package org.springblade.mdm.utils;
+
+import java.io.*;
+import java.util.Arrays;
+
+public class CustomBinaryReader {
+ /**
+ * 浠庤緭鍏ユ祦璇诲彇鏁版嵁鍒拌緭鍑烘祦
+ * @param inputStream
+ * @param os
+ * @throws IOException
+ */
+ public static void read(InputStream inputStream, OutputStream os) throws IOException {
+ byte[] buffer = new byte[1024];
+ try (DataInputStream in = new DataInputStream(
+ new BufferedInputStream(inputStream))) {
+
+ // 璇诲彇骞堕獙璇丮agic Number
+ byte[] magic = new byte[4];
+ in.readFully(magic);
+ if (!Arrays.equals(magic, CustomBinaryWriter.MAGIC_NUMBER)) {
+ throw new RuntimeException("涓嶆槸鏈夋晥鐨勮嚜瀹氫箟鏂囦欢鏍煎紡");
+ }
+
+ // 璇诲彇鐗堟湰鍙�
+ short version = in.readShort();
+ if (version > CustomBinaryWriter.VERSION) {
+ throw new RuntimeException("涓嶆敮鎸佺殑鐗堟湰: " + version);
+ }
+
+ while(in.read(buffer) != -1){
+ os.write(buffer);
+ }
+
+ }
+ }
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/utils/CustomBinaryWriter.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/utils/CustomBinaryWriter.java
new file mode 100644
index 0000000..3d6b7a6
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/utils/CustomBinaryWriter.java
@@ -0,0 +1,29 @@
+package org.springblade.mdm.utils;
+import java.io.*;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+public class CustomBinaryWriter {
+ static final byte[] MAGIC_NUMBER = {'M', 'D', 'M', '1'};
+ static final short VERSION = 1;
+
+ /**
+ * 灏嗚緭鍏ユ祦涓殑鍐呭鍐欏叆杈撳嚭娴�
+ * @param outputStream
+ * @param ins
+ * @throws IOException
+ */
+ public static void write(OutputStream outputStream, InputStream ins) throws IOException {
+ byte[] buffer = new byte[1024];
+ try (DataOutputStream out = new DataOutputStream(outputStream)) {
+
+ // 鍐欏叆鏂囦欢澶�
+ out.write(MAGIC_NUMBER);
+ out.writeShort(VERSION);
+
+ while(ins.read(buffer) != -1) {
+ out.write(buffer);
+ }
+
+ }
+ }
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/utils/FileExchangeUtil.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/utils/FileExchangeUtil.java
new file mode 100644
index 0000000..a2ed863
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/utils/FileExchangeUtil.java
@@ -0,0 +1,30 @@
+package org.springblade.mdm.utils;
+
+import java.io.*;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+public class FileExchangeUtil {
+
+ public static InputStream convertFileToZip(InputStream inputStream) throws IOException {
+
+ File tempFile = createTempFile();
+ FileOutputStream fos = new FileOutputStream(tempFile);
+ CustomBinaryReader.read(inputStream,fos);
+
+
+ FileInputStream dInstream = new FileInputStream(tempFile);
+
+ return dInstream;
+ }
+
+ public static File createTempFile() throws IOException {
+ Path tempDir = Paths.get(System.getProperty("java.io.tmpdir"));
+ // 鍦ㄤ复鏃剁洰褰曚腑鍒涘缓鏂囦欢
+ String tfilename = "t"+System.currentTimeMillis();
+ Path tempFile = Files.createTempFile(tempDir, tfilename, ".tmp");
+ System.out.println("鍒涘缓鐨勪复鏃舵枃浠�: " + tempFile);
+ return tempFile.toFile();
+ }
+}
diff --git a/blade-service/blade-mdm/src/main/resources/processesbpmn/dispatch.bpmn20.xml b/blade-service/blade-mdm/src/main/resources/processesbpmn/dispatch.bpmn20.xml
index aaf3acd..8d30a0c 100644
--- a/blade-service/blade-mdm/src/main/resources/processesbpmn/dispatch.bpmn20.xml
+++ b/blade-service/blade-mdm/src/main/resources/processesbpmn/dispatch.bpmn20.xml
@@ -3,10 +3,14 @@
<process id="dispatch" name="浠诲姟娲惧伐" isExecutable="true">
<startEvent id="start" name="寮�濮�"/>
<sequenceFlow id="sid-c1619263-d1ff-4106-9315-f9ab9a3bee71" sourceRef="start" targetRef="teamLeaderTask"/>
- <userTask id="teamLeaderTask" name="涓撲笟缁勯暱" flowable:assignee="${teamLeader}"/>
- <userTask id="programmingTask" name="缂栧埗" flowable:assignee="${assignee}"/>
- <userTask id="check" name="鏍″" flowable:assignee="${assignee}"/>
- <userTask id="approveTask" name="楂樺笀瀹℃壒" flowable:assignee="${assignee}"/>
+ <userTask id="teamLeaderTask" name="浠诲姟鍒嗘淳" flowable:assignee="${teamLeader}">
+ <documentation>涓撲笟缁勯暱浠诲姟鍒嗘淳</documentation>
+ </userTask>
+ <userTask id="programmingTask" name="鏁版帶绋嬪簭缂栧啓" flowable:assignee="${assignee}"/>
+ <userTask id="check" name="鏁版帶绋嬪簭鏍″" flowable:assignee="${assignee}"/>
+ <userTask id="approveTask" name="鏁版帶绋嬪簭瀹℃壒" flowable:assignee="${assignee}">
+ <documentation>楂樺笀鏁版帶绋嬪簭瀹℃壒</documentation>
+ </userTask>
<endEvent id="approveEnd" name="瀹℃壒瀹屾垚">
<extensionElements>
<flowable:executionListener expression="${dispatchFinishListener.handle(execution)}" event="end"/>
diff --git a/blade-service/blade-mdm/src/test/java/org/springblade/mdm/utils/CustomBinaryReaderTest.java b/blade-service/blade-mdm/src/test/java/org/springblade/mdm/utils/CustomBinaryReaderTest.java
new file mode 100644
index 0000000..a2b9f7b
--- /dev/null
+++ b/blade-service/blade-mdm/src/test/java/org/springblade/mdm/utils/CustomBinaryReaderTest.java
@@ -0,0 +1,17 @@
+package org.springblade.mdm.utils;
+
+import org.junit.jupiter.api.Test;
+
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+public class CustomBinaryReaderTest {
+ //@Test
+ public void testRead() throws IOException {
+ FileInputStream fis = new FileInputStream("d:/myd.bin");
+ FileOutputStream fos = new FileOutputStream("d:/ddddreadout.zip");
+
+ CustomBinaryReader.read(fis,fos);
+ }
+}
diff --git a/blade-service/blade-mdm/src/test/java/org/springblade/mdm/utils/CustomBinaryWriterTest.java b/blade-service/blade-mdm/src/test/java/org/springblade/mdm/utils/CustomBinaryWriterTest.java
new file mode 100644
index 0000000..4496f7f
--- /dev/null
+++ b/blade-service/blade-mdm/src/test/java/org/springblade/mdm/utils/CustomBinaryWriterTest.java
@@ -0,0 +1,16 @@
+package org.springblade.mdm.utils;
+
+import org.junit.jupiter.api.Test;
+
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+public class CustomBinaryWriterTest {
+ //@Test
+ public void testWrite() throws IOException {
+ FileOutputStream fos = new FileOutputStream("d:/myd.bin");
+ FileInputStream fis = new FileInputStream("d:/dddd.zip");
+ CustomBinaryWriter.write(fos,fis);
+ }
+}
diff --git a/doc/sql/mdm/mdm.mysql.all.create.sql b/doc/sql/mdm/mdm.mysql.all.create.sql
index e8f4a07..6882fc4 100644
--- a/doc/sql/mdm/mdm.mysql.all.create.sql
+++ b/doc/sql/mdm/mdm.mysql.all.create.sql
@@ -111,13 +111,16 @@
`code` varchar(100) NULL COMMENT '绋嬪簭缂栧彿',
`name` varchar(100) NOT NULL COMMENT '绋嬪簭鍚嶇О',
`oss_name` varchar(100) NULL COMMENT 'oss涓殑鏂囦欢鍚�',
- `category` varchar(2) NULL COMMENT '鏂囦欢鍒嗙被',
+ `category` varchar(20) NULL COMMENT '鏂囦欢鍒嗙被',
`process_name` varchar(20) NULL COMMENT '宸ュ簭鍚嶇О',
`remark` varchar(100) NULL COMMENT '澶囨敞',
`is_text_file` int DEFAULT NULL COMMENT '鏄惁鏂囨湰鏂囦欢',
`url` varchar(400) NOT NULL COMMENT '鏂囦欢鍦板潃',
`machine_code` varchar(100) DEFAULT NULL COMMENT '璁惧缂栧彿/鏈哄簥缂栧彿',
`part_no` varchar(100) NULL COMMENT '闆剁粍浠剁紪鍙�/鍥惧彿',
+ `part_no_edition` varchar(100) NULL COMMENT '鍥惧彿鐗堟',
+ `craft_edition` varchar(20) NULL COMMENT '璁捐鐗堟',
+ `description` varchar(100) NULL COMMENT '鎻忚堪',
`is_cured` int DEFAULT NULL COMMENT '鏄惁鍥哄寲,1鏄�;0鍚�',
`expire_date` date DEFAULT NULL COMMENT '鍒版湡鏃堕棿,鏍规嵁鏈夋晥鏈熸椂闀胯绠楄�屾潵',
`process_edition` varchar(40) DEFAULT NULL COMMENT '宸ュ簭鐗堟锛屽崌鐗堝氨鏄彉鏇存敼璇ュ瓧娈碉紝闇�瑕佷繚鐣欏巻鍙茶褰�',
@@ -135,15 +138,38 @@
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='鏁版帶绋嬪簭';
+/**
+ 娴佺▼瀹℃壒璁板綍琛紝瀹℃壒杩囩▼涓褰�
+ */
+DROP TABLE IF EXISTS `mdm_approve_record`;
+CREATE TABLE `mdm_approve_record` (
+ `id` bigint NOT NULL,
+ `tenant_id` varchar(6) DEFAULT NULL COMMENT '鎵�灞炵鎴�',
+ `nc_program_id` bigint NULL COMMENT '绋嬪簭id銆傛湭閫夋嫨绋嬪簭涔嬪墠鏄痭ull',
+ `process_instance_id` varchar(64) DEFAULT NULL COMMENT '娴佺▼瀹炰緥id',
+ `task_name` varchar(100) DEFAULT NULL COMMENT '浠诲姟鍚嶇О',
+ `operate_time` datetime DEFAULT NULL COMMENT '瀹℃壒鏃堕棿',
+ `operate_result` varchar(20) DEFAULT NULL COMMENT '瀹℃壒缁撴灉',
+ `user_id` bigint NOT NULL COMMENT '瀹℃壒鐢ㄦ埛id',
+ `user_nickname` varchar(100) NOT NULL COMMENT '瀹℃壒鐢ㄦ埛濮撳悕',
+ `comment` varchar(100) NOT NULL COMMENT '瀹℃壒澶囨敞',
+ `status` int DEFAULT NULL COMMENT '涓氬姟鐘舵��',
+ `create_dept` bigint DEFAULT NULL COMMENT '鍒涘缓鍗曚綅',
+ `is_deleted` int DEFAULT NULL,
+ `create_time` datetime DEFAULT NULL COMMENT '鍒涘缓鏃堕棿',
+ `create_user` bigint DEFAULT NULL COMMENT '鍒涘缓浜�',
+ `update_time` datetime DEFAULT NULL COMMENT '鏇存柊鏃堕棿',
+ `update_user` bigint DEFAULT NULL COMMENT '鏇存柊浜�',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='鏁版帶绋嬪簭瀹℃壒璁板綍';
+
DROP TABLE IF EXISTS `mdm_nc_program_approved`;
CREATE TABLE `mdm_nc_program_approved` (
`id` bigint NOT NULL,
`tenant_id` varchar(6) DEFAULT NULL COMMENT '鎵�灞炵鎴�',
- `program_name` varchar(100) NOT NULL COMMENT '绋嬪簭鍚嶇О',
- `program_id` bigint NOT NULL COMMENT '绋嬪簭id,鎸囧悜鏈�鏂扮殑绋嬪簭璁板綍',
+ `nc_program_id` bigint NOT NULL COMMENT '绋嬪簭id,鎸囧悜鏈�鏂扮殑绋嬪簭璁板綍',
`status` int DEFAULT NULL COMMENT '涓氬姟鐘舵��',
- `exchange_type` int DEFAULT NULL COMMENT '浜ゆ崲绫诲瀷,1:涓嬪彂;2:鍥哄寲(dnc鍥炰紶)',
`create_dept` bigint DEFAULT NULL COMMENT '鍒涘缓鍗曚綅',
`is_deleted` int DEFAULT NULL,
`create_time` datetime DEFAULT NULL COMMENT '鍒涘缓鏃堕棿',
--
Gitblit v1.9.3