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