From a049dda2f63d59f5092994b44387fe0aa889d375 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期四, 14 八月 2025 15:01:04 +0800
Subject: [PATCH] 固化流程
---
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramService.java | 263 ++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 241 insertions(+), 22 deletions(-)
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramService.java
index c089431..c105bf8 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramService.java
@@ -25,23 +25,44 @@
*/
package org.springblade.mdm.program.service;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringUtils;
import org.flowable.engine.*;
import org.springblade.core.mp.base.BizServiceImpl;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.oss.OssTemplate;
+import org.springblade.core.oss.model.BladeFile;
import org.springblade.mdm.basesetting.machine.MachineService;
import org.springblade.mdm.basesetting.machine.entity.Machine;
+import org.springblade.mdm.program.entity.NcNode;
+import org.springblade.mdm.program.entity.ProgramSeq;
import org.springblade.mdm.program.mapper.NcProgramMapper;
import org.springblade.mdm.program.entity.NcProgram;
+import org.springblade.mdm.program.mapper.ProgramSeqMapper;
import org.springblade.mdm.program.vo.DncSendBackData;
+import org.springblade.mdm.program.vo.NcNodeProgramQueryVO;
+import org.springblade.mdm.program.vo.NcProgramUploadVO;
+import org.springblade.mdm.program.vo.NcProgramVO;
+import org.springblade.mdm.utils.FileContentUtil;
+import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
+import java.io.File;
import java.io.IOException;
import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
+import java.util.Optional;
/**
* 宸ヤ綔娴佹湇鍔″疄鐜扮被
@@ -53,39 +74,237 @@
@AllArgsConstructor
public class NcProgramService extends BizServiceImpl<NcProgramMapper, NcProgram> {
- private final ObjectMapper objectMapper;
- private final RepositoryService repositoryService;
- private final RuntimeService runtimeService;
- private final HistoryService historyService;
- private final TaskService taskService;
- private final ProcessEngine processEngine;
private final MachineService machineService;
+ private final OssTemplate ossTemplate;
+ private final NcNodeService nodeService;
+ private final ProgramSeqMapper seqMapper;
/**
* 鏌ヨ鐜版湁鍥哄寲鐨勭▼搴忥紝鏆傚畾鏉′欢锛氶浂缁勪欢鍙风浉鍚岋紝涓旀槸鍚屼竴鏈哄簥缁�
- * @param partNo
+ * @param drwaingNo
* @param machineCode
* @return
*/
- public NcProgram getCuredNcProgram(String partNo,String machineCode) {
+ public List<NcProgram> getCuredNcProgram(String drwaingNo,String machineCode) {
Machine machine = machineService.getByCode(machineCode);
- return this.getBaseMapper().getCuredNcProgram(partNo,machine.getMachineGroupCode());
- }
-
- /**
- * 鏌ヨ鐜版湁鍥哄寲鐨勭▼搴忥紝鏆傚畾鏉′欢锛氶浂缁勪欢鍙风浉鍚岋紝涓旀槸鍚屼竴鏈哄簥缁�
- * @param name 绋嬪簭鍚嶇О
- * @return
- */
- public NcProgram getLastNcProgram(String name) {
- return this.getBaseMapper().getLastNcProgram(name);
+ return this.getBaseMapper().getCuredNcProgram(drwaingNo,machine.getMachineGroupCode());
}
/**
* 涓婁紶绋嬪簭鏂囦欢鍒版寚瀹氳妭鐐�
- * @param file
- * @param nodeId
- * @param category
+ * @param uploadVO 涓婁紶鏂囦欢琛ㄥ崟鏁版嵁
*/
- public void uploadNcFile(MultipartFile file, Long nodeId, String category) {
+ public void uploadProgramFileNew(NcProgramUploadVO uploadVO) {
+
+ MultipartFile file = uploadVO.getFile();
+ BladeFile bfile = ossTemplate.putFile(uploadVO.getFile());
+ String link = bfile.getLink();
+ //淇濆瓨profame
+ NcProgram prog = new NcProgram();
+ prog.setCode(generageCode());
+ prog.setName(file.getOriginalFilename());
+ prog.setNcNodeId(uploadVO.getNodeId());
+ prog.setOssName(bfile.getName());
+ prog.setDrawingNo(uploadVO.getDrawingNo());
+ prog.setProcessEdition(uploadVO.getProcessEdition());
+ prog.setIsLastEdition(1);
+ prog.setMachineCode(uploadVO.getMachineCode());
+ prog.setProcessName(uploadVO.getProcessName());
+ boolean isTextFile = false;
+ try {
+ isTextFile = FileContentUtil.isTextFile(file.getInputStream());
+ } catch (IOException e) {
+ log.warn("鍒ゆ柇鏄惁鏂囨湰鏂囦欢寮傚父",e);
+ }
+ prog.setIsTextFile(isTextFile);
+ prog.setUrl(link);
+ prog.setCategory(uploadVO.getCategory());
+
+ NcNode node = new NcNode();
+ node.setNodeType("70");//鏂囦欢鑺傜偣
+ node.setName(prog.getName());
+ node.setMachineCode(uploadVO.getMachineCode());
+ node.setParentId(uploadVO.getNodeId());
+ node.setDrawingNo(uploadVO.getDrawingNo());
+ node.setProcessName(uploadVO.getProcessName());
+
+ NcNode parentNode = nodeService.getById(uploadVO.getNodeId());
+ node.setParentIds(parentNode.getParentIds()+","+uploadVO.getNodeId());
+ //uploadVO.getre
+ //node.setDescription(uploadVO.getDrawingNo());
+ nodeService.save(node);
+
+ prog.setBindNcNodeId(node.getId());
+ this.save(prog);
}
+
+ String generageCode(){
+ ProgramSeq program = new ProgramSeq();
+ seqMapper.insert(program);
+
+ DecimalFormat df = new DecimalFormat("0000000000");
+ return df.format(program.getId());
+ }
+
+ /**
+ * 鍒犻櫎涓�涓▼搴�
+ * @param id
+ */
+ public void removeProgram(Long id) {
+ NcProgram prog = this.getById(id);
+ ossTemplate.removeFile(prog.getOssName());
+ this.getBaseMapper().deleteById(id);
+ }
+
+ public List<NcProgramVO> listByNode(Long nodeId) {
+ NcNode node = nodeService.getById(nodeId);
+ List<NcProgram> pList = this.list(Wrappers.lambdaQuery(NcProgram.class).eq(NcProgram::getNcNodeId, nodeId).eq(NcProgram::getIsLastEdition,1).orderByDesc(NcProgram::getCreateTime));
+
+ List<NcProgramVO> result = new ArrayList<>();
+
+ pList.forEach(prog -> {
+ NcProgramVO vo = new NcProgramVO();
+ BeanUtils.copyProperties(prog, vo);
+ vo.setMachineCode(node.getMachineCode());
+ result.add(vo);
+ });
+
+ return result;
+ }
+
+ /**
+ * 鍗囩増(鍗囩骇宸ュ簭鐗堟),鍗囩骇宸ュ簭鐗堟湰锛堝寘鎷▼搴忓拰鍏朵粬闄勪欢锛�
+ * @param bindNcNodeId 绋嬪簭鏂囦欢缁戝畾鐨勮妭鐐筰d
+ * @param newProcessEdition 鏂扮増娆�
+ */
+ public void upgradeProcessEdition(Long bindNcNodeId,String newProcessEdition) {
+ //NcProgram prog = this.getById(id);
+ NcProgram prog = getByBindNodeId(bindNcNodeId);
+
+ //灏嗙幇鏈夌▼搴忔洿鏂颁负闈炴渶鏂扮増鏈�
+ this.update(Wrappers.lambdaUpdate(NcProgram.class).eq(NcProgram::getBindNcNodeId,bindNcNodeId).set(NcProgram::getIsLastEdition,0));
+
+ NcProgram newVerProg = new NcProgram();
+ BeanUtils.copyProperties(prog, newVerProg);
+ newVerProg.setId(null);
+ newVerProg.setIsLastEdition(1);
+ newVerProg.setProcessEdition(newProcessEdition);
+
+ this.save(newVerProg);
+ }
+
+ /**
+ * 鍒嗛〉鏌ヨ锛岀敤浜庡鎵规椂閫夋嫨绋嬪簭
+ * @param query
+ * @return
+ */
+ public IPage<NcProgramVO> pageQuery(NcNodeProgramQueryVO query) {
+ return this.getBaseMapper().pageQuery(Condition.getPage(query),query);
+ }
+
+ /**
+ * 涓嬪彂缁欎綘鏈哄簥
+ * @param bindNcNodeId 涓庣▼搴忕粦瀹氱殑鑺傜偣id
+ */
+ public void sendByBindNodeId(Long bindNcNodeId) throws IOException {
+ //NcNode node = this.nodeService.getById(bindNodeId);
+ LambdaQueryWrapper<NcProgram> wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(NcProgram::getBindNcNodeId, bindNcNodeId);
+ wrapper.eq(NcProgram::getIsLastEdition,1);
+ NcProgram prog = this.getOne(wrapper);
+
+ String filePath = getFilePath(prog);
+ try(InputStream ins = ossTemplate.statFileStream(prog.getOssName());){
+ File targetFile = new File(filePath);
+ FileUtils.copyInputStreamToFile(ins, targetFile);
+ }
+ }
+
+ String getFilePath(NcProgram prog){
+ Machine machine = machineService.getByCode(prog.getMachineCode());
+ String dirPath = machine.getProgSendDir();
+
+ dirPath = StringUtils.removeEnd(StringUtils.removeEnd(dirPath,"/"),"\\");
+ File dirs = new File(dirPath);
+ if(!dirs.exists()){
+ dirs.mkdirs();
+ }
+
+ return dirPath+File.separator+prog.getName();
+ }
+
+ /**
+ *
+ * @param bindNcNodeId
+ * @return
+ */
+ public NcProgram getByBindNodeId(Long bindNcNodeId) {
+
+ LambdaQueryWrapper<NcProgram> wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(NcProgram::getBindNcNodeId, bindNcNodeId);
+ wrapper.eq(NcProgram::getIsLastEdition,1);
+
+ Optional<NcProgram> progOpt = this.getOneOpt(wrapper);
+
+ return progOpt.orElse(null);
+ }
+
+ /**
+ * 鏍规嵁绋嬪簭鍚嶇О鑾峰彇鏈�鏂扮殑绋嬪簭鏁版嵁
+ * @param name 绋嬪簭鍚嶇О
+ * @return
+ */
+ public NcProgram getByName(String name) {
+ LambdaQueryWrapper<NcProgram> wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(NcProgram::getName, name);
+ wrapper.eq(NcProgram::getIsLastEdition,1);
+ Optional<NcProgram> progOpt = this.getOneOpt(wrapper);
+
+ return progOpt.orElse(null);
+ }
+
+ /**
+ *
+ * @param nodeId 涓婄骇鑺傜偣id
+ * @param name 绋嬪簭鍚嶇О
+ */
+ public boolean programExistsUnderNode(Long nodeId, String name) {
+ LambdaQueryWrapper<NcProgram> wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(nodeId!=null,NcProgram::getNcNodeId, nodeId);
+ wrapper.eq(NcProgram::getName, name);
+ wrapper.eq(NcProgram::getIsLastEdition,1);
+
+ return this.count(wrapper)>0;
+ }
+
+ /**
+ *
+ * @param nodeId 涓婄骇鑺傜偣id
+ * @param name 绋嬪簭鍚嶇О
+ */
+ public boolean programExistsUnderOtherNode(Long nodeId, String name) {
+ LambdaQueryWrapper<NcProgram> wrapper = new LambdaQueryWrapper<>();
+ wrapper.ne(NcProgram::getNcNodeId, nodeId);
+ wrapper.eq(NcProgram::getName, name);
+ wrapper.eq(NcProgram::getIsLastEdition,1);
+
+ return this.count(wrapper)>0;
+ }
+
+ /**
+ * 鏄剧ず绋嬪簭鐨勫巻鍙茶褰曞垪琛�
+ * @param bindNodeId
+ * @return
+ */
+ /*
+ public List<NcProgramVO> historyByBindNode(Long bindNodeId) {
+
+ NcProgram program = this.getByBindNodeId(bindNodeId);
+ List<NcProgram> list = this.lambdaQuery().eq(NcProgram::getName,program.getName())
+ .eq(NcProgram::getNcNodeId,program.getNcNodeId()).orderByDesc(NcProgram::getCreateTime).list();
+
+ return list.stream().map(p -> {
+ NcProgramVO vo = new NcProgramVO();
+ BeanUtils.copyProperties(p,vo);
+ return vo;}).toList();
+ }*/
}
--
Gitblit v1.9.3