捷宇高拍仪

框架是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();
    }

}

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
拍仪控件集成,即各类应用软件系统通过集成高拍仪控件,解决在java、.net、php等软件开发中遇到的高拍仪编程操作问题,快速在asp.net、jsp、asp等web项目中调用高拍仪设备,使得用户办公流程更便捷、顺畅。 捷宇·高拍仪SDK 二次开发包操作性能怎么样? 捷宇 高拍仪系统集成服务,可以为各类办公OA系统、协同办公平台、数据管理平台、数据库系统提供提供ActiveX 版和DLL 版的完整二次 SDK 开发包。可实现高效、高质量存储影像文档,同时支持自动校正、去黑边、获取BMP 位图(24 位)的Base64 编码数据、图像压缩、防伪水印、网页本地图像删除、图像列表生成、上传指定图片到服务器和支持拍摄多页TIF 多页PDF 生成、条形码识别等功能。可通过VB、ASP.NET、 Delphi、C++ 、PB 或JavaScript等不同程序语言调用SDK APIs。全程提供开发集成服务。 捷宇 智汇星 高拍仪 二次开发服务的优势有哪些? 捷宇 高拍仪是国内高拍仪行业里少数几个能自己编写高拍仪软件的厂家。配套软件系我司自主开发编写,所有源程序可控,功能接口最丰富,目前已达到70几个可用的接口,并已申请软件著作权。软件开发集成响应速度快,变更灵活,可根据客户的集成要求量身定制,在建设银行(总行)、广东移动、南方电网、福建公安、广西公安等一批重点高拍仪项目测试评选中脱颖而出,成为便捷性最好,安全性最高的高拍仪设备供应商,并成功为客户服务。 市场上贴牌代工的高拍仪软件大部分是直接调用控件来实现高拍仪的控制功能,如“德易拍”“光捷”“吉星”“创合”“中晶”高拍仪等,软件安全性差,容易复制,存在安全漏洞。单位客户使用时可能会遭遇信息安全泄露的风险。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值