From f4c6e0e1308bccb943ca1cddfdf7f643b6b6a1aa Mon Sep 17 00:00:00 2001 From: yangys <y_ys79@sina.com> Date: 星期二, 15 七月 2025 23:39:30 +0800 Subject: [PATCH] 测试导出dnc --- blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramService.java | 281 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 271 insertions(+), 10 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 4486e71..f378729 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,25 +74,265 @@ @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()); + return this.getBaseMapper().getCuredNcProgram(drwaingNo,machine.getMachineGroupCode()); } - public void uploadNcFile(MultipartFile file,Long nodeId, String category) { + /** + * 涓婁紶绋嬪簭鏂囦欢鍒版寚瀹氳妭鐐� + * @param uploadVO 涓婁紶鏂囦欢琛ㄥ崟鏁版嵁 + */ + public void uploadProgramFile(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); + 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()); + + this.save(prog); + } + + /** + * 涓婁紶绋嬪簭鏂囦欢鍒版寚瀹氳妭鐐� + * @param uploadVO 涓婁紶鏂囦欢琛ㄥ崟鏁版嵁 + */ + 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 绋嬪簭id + */ + public String getFileContent(Long id) { + String result =""; + + NcProgram prog = this.getById(id); + if(prog.getIsTextFile()!=null && prog.getIsTextFile()){ + String fileName = prog.getOssName(); + try (InputStream inputStream = ossTemplate.statFileStream(fileName)) { + result = IOUtils.toString(inputStream, StandardCharsets.UTF_8); + } catch (IOException e) { + throw new RuntimeException(e); + } + }else{ + result = "闈炴枃鏈牸寮忔枃浠�"; + } + return result; + } + + /** + * 鑾峰彇鏂囦欢鍐呴タ鍝﹂偅涓� + * @param ncNodeId 鑺傜偣id + */ + public String getFileContentByNodeId(Long ncNodeId) { + String result =""; + NcNode node = this.nodeService.getById(ncNodeId); + LambdaQueryWrapper<NcProgram> wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(NcProgram::getBindNcNodeId, ncNodeId); + wrapper.eq(NcProgram::getIsLastEdition,1); + NcProgram prog = this.getOne(wrapper); + if(prog.getIsTextFile()!=null && prog.getIsTextFile()){ + String fileName = prog.getOssName(); + try (InputStream inputStream = ossTemplate.statFileStream(fileName)) { + result = IOUtils.toString(inputStream, StandardCharsets.UTF_8); + } catch (IOException e) { + throw new RuntimeException(e); + } + }else{ + result = "闈炴枃鏈牸寮忔枃浠�"; + } + return result; + } + /** + * 鍒犻櫎涓�涓▼搴� + * @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); } } -- Gitblit v1.9.3