捷宇高拍仪

框架是vue+springboot

先去找捷宇售后要到他们的对接资料,会有他们的插件,不同的设备型号,插件会不一样,捷宇只适合windows系统,至于国产机我没问不知道他们有没有对接方案。插件安装后,去注册表搜索454C18E2-8B7D-43C6-8C17-B1825B49D7DE要能搜索到才行

vue代码(注意两点,1、chrome调用ocx插件像我代码那样写,如果你直接按照他们给的demo写是不行的,ie可以直接调用     2、上传的时候传参可以拼接到接口后面,但是中文的参数注意encode 后台decode处理,否则会报错,与【服务器连接被重置】)

<template>
    <div class="gpyMain" style="height: 98%;width: 100%">
        <div style="height: 30px;width:100%;text-align: center">
            <el-button :loading="saveLoading" type="primary" size="mini" @click="Start1_onclick">启动主</el-button>
            <el-button :loading="saveLoading" style="margin-left: 10px" type="primary" size="mini"
                       @click="Start2_onclick">启动副
            </el-button>
            <span style="margin-left: 10px">文件名:</span>
            <el-input style="width: 150px;height: 30px" v-model="filename"></el-input>
            <el-button :loading="saveLoading" style="margin-left: 10px" type="primary" size="mini" @click="ScanPDF">扫描
            </el-button>
            <el-button :loading="saveLoading" style="margin-left: 20px" type="primary" size="mini" @click="close">取消
            </el-button>

        </div>
        <div style="height:calc(100% - 30px) ;width: 100%">
            <object id="captrue" type="application/x-itst-activex" clsid="{454C18E2-8B7D-43C6-8C17-B1825B49D7DE}"
                    event_notifyctrlready="NotifyCtrlReady" wmode="transparent" progid="" height="100%" width="100%"
                    style="LEFT: 0px; TOP: 0px;z-index:1;">
            </object>
            <!--这个地方需要这样写,chrome 浏览器调用 ocx 插件-->
        </div>
    </div>
</template>

<script>

    import {Message} from 'element-ui'
    import config from '@ocv/web/src/config'
    import Token from '@ocv/web/src/http/token'

    export default {
        name: "gpy",
        props: ["nowFJml"],
        created() {

        },
        data() {
            return {
                filename: '',
                pminfo: this.$store.state.zhzw.selected,
                saveLoading: false,
            };
        },
        mounted() {


        },

        methods: {
            Start1_onclick() {
                var str = captrue.bStopPlay();
                var str = captrue.bStartPlay();
            },
            Start2_onclick() {
                var str = captrue.bStopPlay();
                var str = captrue.bStartPlay2(0);
            },
            ScanPDF() {
                if (this.filename && this.filename.trim()) {
                    var _bool = this.StartPDF_onclick();
                    if (_bool) {
                        _bool = this.ColorPDF_onclick();
                    }
                    if (_bool) {
                        _bool = this.EndPDF_onclick();
                    }

                    if (_bool) {
                        _bool = this.UpLoadPDF();
                    }
                } else {
                    Message.error("文件名不可为空!")
                }

            },
            StartPDF_onclick() {
                var str = captrue.bSavePDFStart("D:\\", this.filename);
                return str;
            },
            ColorPDF_onclick() {
                var str = captrue.bSavePDFColorPage();
                return str;
            },
            EndPDF_onclick() {
                var str = captrue.bSavePDFEnd();
                return str;
            },
            UpLoadPDF() {
                this.saveLoading = true;
                console.error("开始上传!");
                var flag = false;


                //传参可以拼接到接口后面,但是中文的参数注意encode 后台decode处理,否则会报错,与【服务器连接被重置】
                let filename = encodeURI(encodeURI(this.filename + ".pdf"));
                let jk = "/zhzw/gpy/fileUpload?refid=" + this.pminfo.itemid + "&reftype=" + this.nowFJml.pclid + "&cuserid=" +
                    this.$store.state.auth.user.userid + "&sso=" +
                    Token.getCredential() + "&filename=" + filename+"&contenttype=application/pdf";
                console.error(jk);
                console.error("D:\\" + this.filename + ".pdf");
                console.error(config.uris.gpyIp);
                console.error(config.uris.gpyHost);

                try {
                    flag = captrue.bUpLoadImage("D:\\" + this.filename + ".pdf", config.uris.gpyIp, config.uris.gpyHost, jk);
                    if (flag) {
                        Message.success("上传成功!")
                        //重新掉一下接口
                        this.$emit("loadData");
                        //这个是删除掉本地的附件
                        captrue.bDeleteFile("D:\\" + this.filename + ".pdf");
                    } else {
                        Message.error("上传失败!")
                    }
                    this.saveLoading = false;
                } catch (e) {
                    console.error(e);
                    Message.error(e);
                    this.saveLoading = false;
                }
            },
            close() {
                this.$emit('on-close')
            }

        }
    }


</script>

<style scss>
    .gpyMain .el-input__inner {
        height: 30px !important;
    }
</style>

java代码 (注意,他们的文件key 是 trackdata,这个他们给的sdk有写)

controller

 @ApiOperation(value = "附件上传", notes = "附件上传")
    @Log(module = "附件上传", action = "附件上传", tag = "/fileUpload")
    @WebMapping("/fileUpload")
    public Object fileUpload(HttpServletRequest request, FileInfo def, MultipartFile[] trackdata) throws IOException {
        String cuserid = def.getCuserid();
        if (StringUtil.IsEmpty(cuserid)) {
            def.setCuserid(ContextUtil.getUserid(request)); //这个是我获取当前的用户编号的
        }
        def.setCusername(ContextUtil.getUserPersonname(request));
        return gpyService.upload(request, trackdata, def, true);
    }

service

package com.ocloud.zhzw.dj.gpy;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ocloud.common.file.FileUtil;
import com.ocloud.common.result.Result;
import com.ocloud.common.tool.GuidUtil;
import com.ocloud.common.tool.StringUtil;
import com.ocloud.common.tool.gson.GsonUtil;
import com.ocloud.db.DbHelper;
import com.ocloud.db.page.AiPage;
import com.ocloud.file.FileInfo;
import com.ocloud.file.FileInfoService;
import com.ocloud.web.util.WebUtil;
import com.ocloud.wf.cases.WFCase;
import com.ocloud.wf.cases.WFCaseService;
import com.ocloud.wf.node.Node;
import com.ocloud.wf.node.NodeService;
import com.ocloud.wf.run.Run;
import com.ocloud.zhzw.common.casehandup.ZCaseHandup;
import com.ocloud.zhzw.common.casehandup.ZCaseHandupService;
import com.ocloud.zhzw.common.jbxx.Jbxx;
import com.ocloud.zhzw.common.jbxx.JbxxService;
import com.ocloud.zhzw.dj.ggdj.AsynGgdjService;
import com.ocloud.zhzw.dj.ggdj.GgdjMapper;
import com.ocloud.zhzw.dj.ggdj.pm_ggdj_bd_config.GgdjBdConfig;
import com.ocloud.zhzw.dj.ggdj.pm_ggdj_bd_config.GgdjBdConfigService;
import com.ocloud.zhzw.dj.ggdj.pm_ggdj_bqbz_maxdate.GgdjBqbzMaxdate;
import com.ocloud.zhzw.dj.ggdj.pm_ggdj_bqbz_maxdate.GgdjBqbzMaxdateService;
import com.ocloud.zhzw.dj.ggdj.pm_ggdj_itemconfig.GgdjItemconfig;
import com.ocloud.zhzw.dj.ggdj.pm_ggdj_itemconfig.GgdjItemconfigService;
import com.ocloud.zhzw.dj.ggdj.pm_ggdj_itemrecord.GgdjItemrecord;
import com.ocloud.zhzw.dj.ggdj.pm_ggdj_itemrecord.GgdjItemrecordService;
import com.ocloud.zhzw.dj.ggdj.pm_ggdj_ytbhj.GgdjYtbhj;
import com.ocloud.zhzw.dj.ggdj.pm_ggdj_ytbhj.GgdjYtbhjService;
import com.ocloud.zhzw.pm.PmService;
import com.ocloud.zhzw.pm.pm_catalog.Catalog;
import com.ocloud.zhzw.pm.pm_catalog.CatalogService;
import com.ocloud.zhzw.pm.pm_item.Item;
import com.ocloud.zhzw.pm.pm_item.ItemService;
import com.ocloud.zhzw.utils.HttpClientUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.*;
import java.math.BigDecimal;
import java.net.URLDecoder;
import java.text.SimpleDateFormat;
import java.util.*;


@Slf4j
@Service
public class GpyService {

    @Value("${ocloud.file.upload-path}")
    public String uploadPath;

    @Autowired
    private FileInfoService fileInfoService;


    public List<FileInfo> upload(HttpServletRequest request, MultipartFile[] upfiles, FileInfo def, boolean override) throws IOException {
        Assert.isTrue((upfiles != null) && (upfiles.length > 0), "上传的文件是空!");
        Assert.isTrue(StringUtil.IsNotEmpty(def.getCuserid()), "上传人为空!");
        Assert.isTrue(StringUtil.IsNotEmpty(def.getRefid()), "事项编号为空!");
        Assert.isTrue(StringUtil.IsNotEmpty(def.getReftype()), "目录编号为空!");
        Assert.isTrue(StringUtil.IsNotEmpty(def.getFilename()), "文件名为空!");
        String filename = URLDecoder.decode(URLDecoder.decode(def.getFilename(), "UTF-8"), "UTF-8");
        def.setFilename(filename);

        List<FileInfo> infos = new ArrayList();
        if (upfiles != null && upfiles.length > 0) {
            for (int i = 0; i < upfiles.length; ++i) {
                MultipartFile upfile = upfiles[i];
                if (!upfile.isEmpty()) {
                    FileInfo fileinfo = this.upload(request, upfile, def.copy(), override);
                    if (fileInfoService.saveOrUpdate(fileinfo)) {
                        infos.add(fileinfo);
                    }
                }
            }
        }
        return infos;
    }

    public FileInfo upload(HttpServletRequest request, MultipartFile upfile, FileInfo fileinfo, boolean override) throws IOException {
        if (StringUtil.IsEmpty(fileinfo.getFilename())) {
            fileinfo.setFilename(upfile.getOriginalFilename());
        }

        if (StringUtil.IsEmpty(fileinfo.getFileid())) {
            fileinfo.setFileid(GuidUtil.get());
        }

        fileinfo.setFileext(FileUtil.getFileSuffix(fileinfo.getFilename()));
        fileinfo.setFilesize((double) upfile.getSize());
        if (StringUtil.IsEmpty(fileinfo.getContenttype())) {
            fileinfo.setContenttype(upfile.getContentType());
        }

        String path = this.getRealFilePath(request, fileinfo);
        File saveFile = new File(path);
        if (!saveFile.getParentFile().exists()) {
            saveFile.getParentFile().mkdirs();
        }

        if (saveFile.exists() && saveFile.isFile() && override) {
            saveFile.delete();
        }

        if (!saveFile.exists() || !saveFile.isFile()) {
            BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(saveFile));
            out.write(upfile.getBytes());
            out.flush();
            out.close();
            fileinfo.setCtime(new Date());
        }

        fileinfo.setMd5(FileUtil.getFileMD5(path));
        return fileinfo;
    }

    public String getRealFilePath(HttpServletRequest request, FileInfo file) {
        return WebUtil.getRealPath(request, this.uploadPath) + file.getLocalPath();
    }

}

### 回答1: CentOS 7启动httpd服务失败可能有多种原因,以下是一些常见的解决方法: 1. 检查httpd配置文件是否正确:可以使用命令`httpd -t`检查httpd配置文件是否正确,如果有错误,需要修改配置文件。 2. 检查端口是否被占用:可以使用命令`netstat -tlnp`查看端口是否被占用,如果被占用需要释放端口或修改httpd配置文件中的端口号。 3. 检查httpd服务是否安装:可以使用命令`rpm -qa | grep httpd`查看httpd服务是否安装,如果没有安装需要先安装httpd服务。 4. 检查httpd服务是否启动:可以使用命令`systemctl status httpd`查看httpd服务是否启动,如果没有启动需要使用命令`systemctl start httpd`启动httpd服务。 5. 检查SELinux是否开启:如果SELinux开启,可能会导致httpd服务启动失败,需要使用命令`setenforce 0`关闭SELinux,或者修改SELinux策略。 以上是一些常见的解决方法,如果以上方法都无法解决问题,可以查看httpd服务日志文件,找到具体的错误信息,然后根据错误信息进行解决。 ### 回答2: CentOS 7上的httpd服务启动失败可能有多种原因。以下列出了一些常见问题和解决方法: 1. 端口被占用 当httpd试图占用已被其他程序占用的端口时会启动失败。此时可以通过使用`netstat -tunlp`命令检查端口占用情况,然后杀死占用该端口的进程及时释放端口。或者修改httpd的配置文件,将端口修改为未被占用的端口。 2. 配置文件错误 有时httpd服务的配置文件中可能出现错误,例如语法错误或路径错误等等。在启动httpd服务之前,可以使用`apachectl configtest`命令进行检查,如果输出“Syntax OK”,则表示配置文件没有错误。如果出现错误,则需要根据错误提示进行相应修改。 3. 依赖关系问题 如果httpd依赖的其他程序或库缺失,也会导致启动失败。可以通过使用`systemctl status httpd.service`命令来查看httpd服务状态,如果输出“Failed to start”或“Loaded: failed”,则需要检查依赖关系是否完整。 4. SELinux问题 当SELinux启用时,有时会导致httpd服务启动失败。在这种情况下,可以在SELinux上禁用httpd服务,或者修改httpd配置文件解决SELinux相关的问题。 5. 用户权限问题 httpd服务启动可能需要特定的用户权限。如果使用的用户权限不够,则无法启动。可以尝试使用root用户启动httpd服务,或者根据需要修改相应的用户权限。 ### 回答3: CentOS 7中的Apache HTTP服务器(httpd)是一个常见的Web服务器,如果遇到httpd服务启动失败的情况,可能会影响服务器正常的工作和对外服务的稳定性。本文将提供一些可能会导致httpd服务启动失败的原因,并给出相应的解决方法。 1. 端口被占用 如果端口被其他进程占用,httpd服务就无法启动。可以通过 netstat -tulpn 命令查看端口占用情况,并杀死占用该端口的进程。如果端口被 httpd 服务自身占用,可以通过 systemctl restart httpd 命令重启 httpd 服务;如果是其他进程占用了端口,可以通过 kill 命令杀死该进程或更改 httpd.conf 文件配置,将 httpd 服务的端口改为其他空闲端口,重新启动。 2. 配置文件错误 httpd 服务的配置文件通常是 /etc/httpd/conf/httpd.conf,如果其中存在语法错误、权限问题或者其它配置错误,可能会导致 httpd 服务启动出错。可以通过将 httpd.conf 文件备份后删掉,重新执行 yum install httpd 命令安装 httpd 服务,然后手动修改 httpd.conf 文件,逐个检查每个配置项是否正确,确认无误后重启 httpd 服务。 3. SELinux 问题 SELinux 是 CentOS 7中提供的一种安全模块,它可以对系统文件和应用程序进行安全管控。如果 SELinux 配置不正确,可能会阻止 httpd 服务正常启动。可以通过修改 /etc/selinux/config 文件中 SELINUX=disabled 来暂时关闭 SELinux,然后重新启动 httpd 服务;或者一个更优的方式是,根据日志确定问题原因,使用命令 semanage 或者 setsebool 等工具将相关目录或者配置加入到 SELinux 许可列表中,重新启动 httpd 服务,以恢复服务正常工作。 4. 防火墙问题 如果你的 CentOs 7 服务器启用了防火墙,有可能会导致 httpd 服务启动失败。可以通过检查防火墙相关配置来确定问题原因,解决方案是修改防火墙规则,将端口 80 或者 443 等 httpd 服务需要的端口放行,重新启动 httpd 服务。 总之,当遇到 httpd 服务启动失败时,不要慌张,可以先通过日志或者执行命令查看错误信息,找到错误原因,然后根据错误原因一步一步解决问题。在解决问题过程中注意备份原始配置文件,以免造成不必要的损失。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值