yangys
5 天以前 44fda5fa3787c78e74d62f9713dd36abdeadcac8
上传接口调整
已修改12个文件
已删除2个文件
已添加8个文件
624 ■■■■ 文件已修改
blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/contants/ParamContants.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/config/InitBean.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/CureFlowService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/DncBackFileController.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/DncSendBackController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcNodeController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramController.java 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/ProgramExchangeStatController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/DncBackFile.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcProgram.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/filewatch/ProgramBackMonitor.java 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/DncBackFileMapper.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/DncBackFileMapper.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DncBackFileService.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DncSendBackService.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramService.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/DncBackFileQueryVO.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/DncBackFileVO.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/MachineBackFileVO.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcNodeVO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcProgramUploadVO.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcProgramVO.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/contants/ParamContants.java
@@ -2,6 +2,11 @@
public class ParamContants {
    public static final String NETWORK_TYPE_KEY = "networkType";
    /**
     * å·¥æŽ§ç½‘回传程序监控目录逗号分隔
     */
    public static final String PROGRAM_MONITOR_DIR_KEY = "programMonitorDir";
    /**
     * æ¶‰å¯†ç½‘
     */
blade-service/blade-mdm/src/main/java/org/springblade/mdm/config/InitBean.java
@@ -14,6 +14,7 @@
import org.springblade.mdm.machineback.filewatch.FileWatcherService;
import org.springblade.mdm.machineback.filewatch.MachineFileBackListener;
import org.springblade.mdm.machineback.service.MachineBackFileService;
import org.springblade.mdm.program.filewatch.ProgramBackMonitor;
import org.springblade.mdm.program.service.NcProgramService;
import org.springblade.system.feign.ISysClient;
import org.springframework.context.annotation.Bean;
@@ -31,21 +32,28 @@
    private final DirectorLockService directorLockService;
    private final MachineService machineService;
    private final FileWatcherService fileWatcherService;
    private final ISysClient sysClient;
    private final DynamicDirectoryWatcher directoryWatcher;
    private final MachineBackFileService machineBackFileService;
    private final NcProgramService ncProgramService;
    private final OssTemplate ossTemplate;
    private final ProgramBackMonitor programBackMonitor;
    //private final FileWatcherService.FileChangeListener listener;
    @PostConstruct
    public void init() {
        System.out.println("应用启动时执行初始化操作 @PostConstruct");
        log.info("应用启动时执行初始化操作 @PostConstruct");
        programBackMonitor.monitorDir();
        // åˆå§‹åŒ–逻辑
        /*
        R<String> networkTypeR = sysClient.getParamValue(ParamContants.NETWORK_TYPE_KEY);
        String networkType = networkTypeR.getData() == null ? ParamContants.NETWORK_TYPE_SHEMI : networkTypeR.getData();
        if (networkType.equals(ParamContants.NETWORK_TYPE_GONGKONG)) {
            initMachineDirMonitor();
        }
        */
    }
    /**
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/CureFlowService.java
@@ -50,17 +50,7 @@
     */
    private static final String PROCESS_KEY = "program-cure";
    /**
     * å¯åŠ¨å›ºåŒ–æµç¨‹
     * @param programId ç¨‹åºid
     */
    public void start(long programId){
        //pinst.getProcessInstanceId();
        int a=1;
        //log.info()
    }
    @Transactional
    public void startCure(List<NcProgram> programs) {
@@ -76,7 +66,7 @@
     * å¯åŠ¨ä¸€ä¸ªæ•°æŽ§ç¨‹åºçš„å›ºåŒ–æµç¨‹
     * @param prog æ•°æŽ§ç¨‹åºå®žä½“
     */
    void startOne(NcProgram prog){
    public void startOne(NcProgram prog){
        Map<String, Object> vars = new HashMap<>();
        //NcProgram prog = programs.get(0);
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/DncBackFileController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,81 @@
package org.springblade.mdm.program.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
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.excel.util.ExcelUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.mdm.program.service.DncBackFileService;
import org.springblade.mdm.program.vo.DncBackFileQueryVO;
import org.springblade.mdm.program.vo.DncBackFileVO;
import org.springframework.web.bind.annotation.*;
@AllArgsConstructor
@Slf4j
@RestController
@RequestMapping("/program/file")
@Tag(name = "DNC回传文件", description = "DNC回传文件")
public class DncBackFileController {
    private final DncBackFileService service;
    /**
     * æŽ¥æ”¶
     */
    @Operation(summary = "接收", description = "接收文件")
    @PostMapping("/accept")
    public R<Void> accept(@RequestParam String ids) {
        service.accept(ids);
        return R.success();
    }
    /**
     *拒绝,就是删除
     */
    @Operation(summary = "拒绝", description = "拒绝")
    @PostMapping("/reject")
    public R<Void> reject(@RequestParam String ids) {
        try {
            service.reject(ids);
        } catch (Exception e) {
            log.error("拒绝异常",e);
            return R.fail(e.getMessage());
        }
        return R.status(true);
    }
    /**
     * åˆ†é¡µ
     */
    @Operation(summary = "分页查询", description = "名称或编码")
    @GetMapping("/page")
    public R<IPage<DncBackFileVO>> page(DncBackFileQueryVO query) {
        IPage<DncBackFileVO> pages = service.pageQuery(query);
        return R.data(pages);
    }
    /*
    @Operation(summary = "导出Excel", description = "导出Excel")
    @GetMapping("/export-excel")
    public void exportExcel(MachineBackFileQueryVO query, HttpServletResponse response) {
        query.setCurrent(1);
        query.setSize(Integer.MAX_VALUE);
        IPage<MachineBackFileVO> pages = service.pageQuery(query);
        List<MachineBackFileExcelVO> list = new ArrayList<>();
        pages.getRecords().forEach(m ->{
            MachineBackFileExcelVO excelVO = new MachineBackFileExcelVO();
            BeanUtils.copyProperties(m, excelVO);
            excelVO.setCureStatus(m.getIsCured()==1?"已固化":"未固化");
            list.add(excelVO);
        });
        ExcelUtil.export(response, "机床回传文件" + DateUtil.time(), "机床回传文件表", list, MachineBackFileExcelVO.class);
    }
     */
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/DncSendBackController.java
@@ -1,20 +1,15 @@
package org.springblade.mdm.program.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.mdm.basesetting.machine.vo.MachineVO;
import org.springblade.mdm.program.service.DncSendBackService;
import org.springblade.mdm.program.service.NcProgramExchangeService;
import org.springblade.mdm.program.vo.DncSendBackData;
import org.springblade.mdm.program.vo.ProgramExchangeStatQueryVO;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcNodeController.java
@@ -79,6 +79,7 @@
                    ncNodeVO.setDrawingNo(program.getDrawingNo());
                    ncNodeVO.setMachineCode(program.getMachineCode());
                    ncNodeVO.setProcessName(program.getProcessName());
                    ncNodeVO.setVersionNumber(program.getVersionNumber());
                }
            }
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramController.java
@@ -49,10 +49,30 @@
    @PostMapping("/upload")
    @Operation(summary = "上传文件", description = "上传程序/附件文件")
    public R<Boolean> upload(NcProgramUploadVO uploadVO) {
        //@Parameter(description="文件") @RequestPart("file") MultipartFile file, @Parameter(description="所属节点ID")@RequestParam Long nodeId,
        //                             @Parameter(description="文件分类,使用字典(node_file_type)") @RequestParam String category
        ncProgramService.uploadProgramFileNew(uploadVO);
        return R.<Boolean>status(true);
        try {
            boolean existOther = ncProgramService.programExistsUnderOtherNode(uploadVO.getNodeId(), uploadVO.getFile().getOriginalFilename());
            if (existOther) {
                //程序存在,则返回提示信息
                return R.fail("程序其他节点已存在");
            }
            if (uploadVO.getConfirm() == null || uploadVO.getConfirm() != 1) {
                //默认情况,需要检查程序是否存在
                boolean exists = ncProgramService.programExistsUnderNode(uploadVO.getNodeId(), uploadVO.getFile().getOriginalFilename());
                if (exists) {
                    //程序存在,则返回提示信息
                    return R.fail(2, "存在重复程序名");
                } else {
                    ncProgramService.uploadProgramFileNew(uploadVO);
                }
            } else {
                //同名文件用户确认上传了()
                ncProgramService.uploadProgramFileNew(uploadVO);
            }
        }catch(Exception e) {
            log.error("程序上传执行错误",e);
            return R.fail("上传失败:" + e.getMessage());
        }
        return R.success();
    }
    @PostMapping("/remove")
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/ProgramExchangeStatController.java
@@ -2,23 +2,16 @@
package org.springblade.mdm.program.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
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.basesetting.machine.vo.MachineQueryVO;
import org.springblade.mdm.basesetting.machine.vo.MachineVO;
import org.springblade.mdm.program.service.DncSendBackService;
import org.springblade.mdm.program.service.NcProgramExchangeStatService;
import org.springblade.mdm.program.vo.DncSendBackData;
import org.springblade.mdm.program.vo.ProgramExchangeStatQueryVO;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
/**
 * æµç¨‹ç®¡ç†æŽ¥å£
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/DncBackFile.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
package org.springblade.mdm.program.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;
import org.springblade.core.mp.base.BizEntity;
import java.util.Date;
/**
 * DNC回传文件,数据通过监控目录获取文件并入库
 */
@Setter
@Getter
@TableName("mdm_dnc_back_file")
public class DncBackFile extends BizEntity {
    public static int STATUS_ACCEPTED = 2;
    public static int STATUS_REJECTED = 3;
    private Long ncProgramId;
    /**
     * ç¡®è®¤æ—¶é—´
     */
    private Date confirmTime;
    /**
     * å¯¹è±¡å­˜å‚¨æ–‡ä»¶å
     */
    private String ossName;
    /**
     * å¯¹è±¡å­˜å‚¨æ–‡ä»¶åœ°å€
     */
    private String url;
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcProgram.java
@@ -94,6 +94,11 @@
    private LocalDateTime taskAssignTime;
    /**
     * ç‰ˆæœ¬å·ï¼Œä¸Šä¼ ä¸€æ¬¡ç¨‹åºï¼Œå°±ä¼š+1
     */
    private Integer versionNumber;
    /**
     * æ˜¯å¦åœ¨æœ‰æ•ˆæœŸå†…
     * @param effectiveMonths æœ‰æ•ˆæ—¶é•¿ï¼ˆæœˆæ•°ï¼‰ï¼Œåœ¨ç³»ç»Ÿå‚数中配置
     * @return
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/filewatch/ProgramBackMonitor.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,135 @@
package org.springblade.mdm.program.filewatch;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springblade.core.oss.OssTemplate;
import org.springblade.core.oss.model.BladeFile;
import org.springblade.core.tool.api.R;
import org.springblade.mdm.commons.contants.ParamContants;
import org.springblade.mdm.flow.service.CureFlowService;
import org.springblade.mdm.machineback.entity.MachineBackFile;
import org.springblade.mdm.machineback.filewatch.*;
import org.springblade.mdm.program.entity.DncBackFile;
import org.springblade.mdm.program.entity.NcProgram;
import org.springblade.mdm.program.mapper.NcProgramExchangeMapper;
import org.springblade.mdm.program.service.DncBackFileService;
import org.springblade.mdm.program.service.NcNodeService;
import org.springblade.mdm.program.service.NcProgramService;
import org.springblade.system.feign.ISysClient;
import org.springframework.stereotype.Service;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.List;
/**
 * DNC回传及监控
 *
 * @author yangys
 */
@Slf4j
@Service
@AllArgsConstructor
public class ProgramBackMonitor {
    private final DirectorLockService directorLockService;
    private final NcNodeService ncNodeService;
    private final NcProgramService ncProgramService;
    private final CureFlowService cureFlowService;
    private final NcProgramExchangeMapper ncProgramExchangeMapper;
    private final ISysClient sysClient;
    private final DynamicDirectoryWatcher directoryWatcher;
    private final OssTemplate ossTemplate;
    private final DncBackFileService dncBackFileService;
    private final String DEFAULT_MONITOR_DIR = "programback";
    /**
     * ç›‘控回传目录(手动回传)
     */
    public void monitorDir(){
        boolean locked = directorLockService.acquireLock();
        if (!locked) {
            log.info("回传接收目录已经被其他部署点位锁定,直接返回");
            return;
        }
        List<String> monitorDirList = getMonitorDirs();
        for (String dir : monitorDirList) {
            Path dirPath = Paths.get(dir);
            try {
                if(!dirPath.toFile().exists()) {
                    dirPath.toFile().mkdirs();
                }
                directoryWatcher.addDirectory(dirPath,getListener());
            } catch (Exception e) {
                log.error("添加监控目录异常",e);
            }
        }
    }
    List<String> getMonitorDirs(){
        R<String> monitorDirRes = sysClient.getParamValue(ParamContants.PROGRAM_MONITOR_DIR_KEY);
        String dirStr = monitorDirRes.getData();
        if(StringUtils.isNotEmpty(dirStr)){
            dirStr = DEFAULT_MONITOR_DIR;
        }
        String[] dirs = StringUtils.split(dirStr,",");
        return Arrays.asList(dirs);
    }
    FileWatcherService.FileChangeListener getListener() {
        return new FileWatcherService.FileChangeListener() {
            @Override
            public void onFileCreated(Path filePath) {
                log.info("文件创建,处理");
            }
            @Override
            public void onFileModified(Path filePath) {
                try {
                    if(FileLockChecker.isFileComplete(filePath)){
                        log.info("文件[{}]传输完成,开始处理",filePath);
                        String programName = filePath.getFileName().toFile().getName();
                        NcProgram prog = ncProgramService.getByName(programName);
                        if(prog == null){
                            log.warn("文件名无法匹配到数控程序,{}",filePath);
                            return;
                        }
                        DncBackFile backFile = new DncBackFile();
                        backFile.setNcProgramId(prog.getId());
                        //保存文件到css,避免后续不同部署节点拿不到文件
                        try(FileInputStream fins = new FileInputStream(filePath.toFile());){
                            BladeFile bfile = ossTemplate.putFile(programName, fins);
                            backFile.setOssName(bfile.getName());
                            backFile.setUrl(bfile.getLink());
                        }
                        dncBackFileService.save(backFile);
                    }else{
                        log.warn("文件传输中,后续再操作:{}",filePath);
                    }
                } catch (IOException e) {
                    log.error("回传文件操作IO错误",e);
                    throw new RuntimeException(e);
                } catch (InterruptedException e) {
                    log.error("sleep出错",e);
                } catch (Exception e) {
                    log.error("机床回传文件处理异常",e);
                }
            }
            @Override
            public void onFileDeleted(Path filePath) {
                log.info("文件删除,不处理");
            }
        };
    }
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/DncBackFileMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package org.springblade.mdm.program.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import org.springblade.core.mp.mapper.BladeMapper;
import org.springblade.mdm.program.vo.DncBackFileVO;
import org.springblade.mdm.program.entity.DncBackFile;
import org.springblade.mdm.program.vo.DncBackFileQueryVO;
public interface DncBackFileMapper extends BladeMapper<DncBackFile> {
    /**
     * DNC回传文件分页查询
     * @param page
     * @param queryVO
     * @return
     */
    IPage<DncBackFileVO> pageQuery(IPage<DncBackFile> page, @Param("query") DncBackFileQueryVO queryVO);
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/DncBackFileMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
<?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.program.mapper.DncBackFileMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="org.springblade.mdm.program.entity.DncBackFile">
        <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>
    <!--DNC回传程序处理分页-->
    <select id="pageQuery" resultType="org.springblade.mdm.program.vo.DncBackFileVO">
        select f.id,p.name name,p.is_cured,f.create_time,m.code machine_code, m.name machine_name,f.create_time arrived_time
        from mdm_dnc_back_file f
             left join mdm_nc_program p on f.nc_program_id=p.id
             left join mdm_machine m on p.machine_code=m.code
       <where>
           f.status=1 and f.is_deleted=0
        <if test="query.machineSpec!=null and query.machineSpec!=''">
            and m.machine_spec=#{query.machineSpec,jdbcType=VARCHAR}
        </if>
        <if test="query.keyword!=null and query.keyword!=''">
            and (m.code like CONCAT('%', #{query.keyword,jdbcType=VARCHAR},'%') or m.name like CONCAT('%', #{query.keyword,jdbcType=VARCHAR},'%')
            or p.name like CONCAT('%', #{query.keyword,jdbcType=VARCHAR},'%')
                )
        </if>
      </where>
    </select>
</mapper>
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DncBackFileService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,99 @@
package org.springblade.mdm.program.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.base.BizServiceImpl;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.oss.OssTemplate;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.mdm.flow.service.CureFlowService;
import org.springblade.mdm.program.entity.DncBackFile;
import org.springblade.mdm.program.entity.NcProgram;
import org.springblade.mdm.program.mapper.DncBackFileMapper;
import org.springblade.mdm.program.vo.DncBackFileQueryVO;
import org.springblade.mdm.program.vo.DncBackFileVO;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.List;
@AllArgsConstructor
@Service
public class DncBackFileService extends BizServiceImpl<DncBackFileMapper, DncBackFile> {
    private final NcProgramService progService;
    private final OssTemplate ossTemplate;
    private final CureFlowService cureFlowService;
    /**
     * æŽ¥å—
     * @param ids
     */
    public void accept(String ids) {
        List<Long> idList = Func.toLongList(ids);
        for(Long id : idList){
            DncBackFile backFile = this.getById(id);
            backFile.setStatus(DncBackFile.STATUS_ACCEPTED);
            backFile.setConfirmTime(DateUtil.now());
            this.updateById(backFile);
            //新建一个程序,将老的程序isLastEditon设置未0,然后启动流程
            this.upgradeProgramAndStartCure(backFile.getNcProgramId(),backFile);
        }
    }
    void upgradeProgramAndStartCure(long ncProgramId,DncBackFile backFile) {
        NcProgram oldProgram = this.progService.getById(ncProgramId);
        //更新文件信息
        oldProgram.setOssName(backFile.getOssName());
        oldProgram.setUrl(backFile.getUrl());
        //TODO,是否删除原来的文件?
        progService.updateById(oldProgram);
        /*
        NcProgram newProgram = new NcProgram();
        BeanUtils.copyProperties(oldProgram,newProgram);
        oldProgram.setIsLastEdition(0);
        progService.updateById(oldProgram);
        newProgram.setId(null);
        newProgram.setIsLastEdition(1);
        progService.updateById(newProgram);
         */
        cureFlowService.startOne(oldProgram);//启动一个程序的固化流程
    }
    /**
     * æ‹’绝
     * @param ids
     */
    public void reject(String ids) {
        List<Long> idList = Func.toLongList(ids);
        for(Long id : idList){
            DncBackFile backFile = this.getById(id);
            backFile.setStatus(DncBackFile.STATUS_REJECTED);
            backFile.setConfirmTime(DateUtil.now());
            this.ossTemplate.removeFile(backFile.getOssName());
            this.updateById(backFile);
        }
    }
    /**
     * DNC回传程序处理分页查询
     * @param query æŸ¥è¯¢å‚æ•°
     * @return åˆ†é¡µæ•°æ®
     */
    public IPage<DncBackFileVO> pageQuery(DncBackFileQueryVO query) {
        /*
        IPage<DncBackFileVO> page = this.getBaseMapper().pageQuery(Condition.getPage(query),query);
        */
        return this.getBaseMapper().pageQuery(Condition.getPage(query),query);
    }
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DncSendBackService.java
ÎļþÒÑɾ³ý
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramService.java
@@ -328,11 +328,40 @@
     * @param name ç¨‹åºåç§°
     * @return
     */
    public NcProgram getByName(String name) {LambdaQueryWrapper<NcProgram> wrapper = new LambdaQueryWrapper<>();
    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;
    }
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/DncBackFileQueryVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package org.springblade.mdm.program.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import org.springblade.core.mp.support.Query;
/**
 * åˆ†é¡µæŸ¥è¯¢å‚æ•°
 */
@Schema(description = "DNC回传文件查询对象")
@Setter
@Getter
public class DncBackFileQueryVO extends Query {
    @Schema(description = "关键字")
    private String keyword;
    @Schema(description = "规格")
    private String machineSpec;
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/DncBackFileVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package org.springblade.mdm.program.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import org.springblade.mdm.commons.vo.BaseVO;
import java.util.Date;
@Schema(description = "DNC回传文件")
@Setter
@Getter
public class DncBackFileVO extends BaseVO {
    @Schema(description = "文件名称")
    private String name;
    @Schema(description = "机床编号/回传机床")
    private String machineCode;
    @Schema(description = "程序编号")
    private String code;
    @Schema(description = "固化状态")
    private Integer isCured=0;
    @Schema(description = "文件到达时间")
    private Date arrivedTime;
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/MachineBackFileVO.java
ÎļþÒÑɾ³ý
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcNodeVO.java
@@ -33,4 +33,7 @@
    private String processEdition;
    @Schema(description = "零组件号/图号,程序文件节点的属性")
    private String drawingNo;
    @Schema(description = "版本号,程序文件节点的属性")
    private Integer versionNumber;
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcProgramUploadVO.java
@@ -7,7 +7,7 @@
import org.springframework.web.multipart.MultipartFile;
/**
 * NC程序VO
 * NC程序上传VO
 */
@Setter
@Getter
@@ -32,8 +32,10 @@
    @Schema(description = "工序版本")
    private String processEdition;
    /**
     * æ˜¯å¦æµ‹è¯•程序。1是;0否
     */
    @Schema(description = "是否为测试程序,1是;0否")
    private Integer isTest;
    @Schema(description = "确认标记,1:确认上传忽略同名;其他值或null:默认上传")
    private Integer confirm;
}
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcProgramVO.java
@@ -34,4 +34,6 @@
    @Schema(description = "是否测试程序.1是;0否")
    private Integer isTest;
    @Schema(description = "版本号")
    private Integer versionNumber;
}