| | |
| | | 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.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; |
| | | |
| | | /** |
| | | * 工作流服务实现类 |
| | |
| | | prog.setProcessEdition(uploadVO.getProcessEdition()); |
| | | prog.setIsLastEdition(1); |
| | | prog.setMachineCode(uploadVO.getMachineCode()); |
| | | prog.setProcessName(uploadVO.getProcessName()); |
| | | boolean isTextFile = false; |
| | | try { |
| | | isTextFile = FileContentUtil.isTextFile(file.getInputStream()); |
| | |
| | | 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()); |
| | |
| | | |
| | | /** |
| | | * 升版(升级工序版次),升级工序版本(包括程序和其他附件) |
| | | * @param id 程序文件id |
| | | * @param bindNcNodeId 程序文件绑定的节点id |
| | | * @param newProcessEdition 新版次 |
| | | */ |
| | | public void upgradeProcessEdition(long id,String newProcessEdition) { |
| | | NcProgram prog = this.getById(id); |
| | | public void upgradeProcessEdition(Long bindNcNodeId,String newProcessEdition) { |
| | | //NcProgram prog = this.getById(id); |
| | | NcProgram prog = getByBindNodeId(bindNcNodeId); |
| | | |
| | | //将现有程序更新为非最新版本 |
| | | this.update(Wrappers.lambdaUpdate(NcProgram.class).eq(NcProgram::getId,id).set(NcProgram::getIsLastEdition,0)); |
| | | this.update(Wrappers.lambdaUpdate(NcProgram.class).eq(NcProgram::getBindNcNodeId,bindNcNodeId).set(NcProgram::getIsLastEdition,0)); |
| | | |
| | | NcProgram newVerProg = new NcProgram(); |
| | | BeanUtils.copyProperties(prog, newVerProg); |
| | |
| | | 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; |
| | | } |
| | | } |