签字文件的保存逻辑

1.签字流程简述:

1.1页面通过签字版程序签字生成二进制数据 传给前端属性值signatureData  ,

1.2再通过signatureData表单提交,加入缓存数据中,

1.3页面再通过缓存取数据显示

1.4在登记台排号或者接种台接种完成时,再从缓存中取出数据并保存到数据库;

2.后端:

2.1两种情况

2.1.1第一种是前端传过来数据(保存逻辑):

2.1.1.1 页面展示

 

2.1.1.2签字确认

//确认
function signComplete() {
       hWIsConfirm_onclick();
       $("#inputForm").submit();
}

2.1.1.3 是否可保存逻辑

//是否可保存
    function hWIsConfirm_onclick() {
       var ret;
       ret = obj.HWIsConfirm();
       switch(res){
            case 0:
              hWGetBase64Stream_onclick();
              break;
            case -5:
              alert("用户未签字");
              break;
            case -10:
              alert("用户未确认");
              break;
            case -6:
              alert("无效输入");
              break;
        }
    }

2.1.1.4 保存返回二进制数据给 signatureData

 

2.1.1.5 最后表单提交保存到缓存,如果点击完成再保存到数据库

2.1.2第二种情况后端缓存取数据,前端展示:

前端展示有两种方式

    1)拿到数据展示

app.signData = "data:image/png;base64," + data.data[app.reminds[j]];
<img style=" 200px;" :src="signData">
2)通过结果拿到流展示
<img src="<%=request.getContextPath()%>/toolUtil/getPhoto_Blob.xhtml?id=1" width="128" height="185"/>
@RequestMapping("/toolUtil/")
public class ToolUtil{
    @AutoWired
    private ToolUtilManager toolUtilManager;//持久层
    /**
     * 获取图片
     * @param request
     * @param response
     */
    @RequestMapping("getPhoto_Blob")
    public void getPhoto_Blob(HttpServletRequest request,HttpServletResponse response){
        String id = request.getParameter("id");
        //这个我就不详细写了,就是通过传递的id查询你要显示的图片
        Map resultMap = toolUtilManager.getPhoto_Blob(id)
        //blob就是你要显示的那张图片
        Blob blob = (Blob) resultMap.get("Photo");
        InputStream in = null;
    try {
        in = blob.getBinaryStream();
        OutputStream out = response.getOutputStream();
            data = new byte[(int)blob.length()];
            int i = 0;
        while((i=in.read(data))!=-1){
           out.write(data);
        }
        out.close();
        in.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
    }
     
}
后端从缓存中取数据
Object signObjVaccid = CacheUtils.get(CacheUtils.SIGN_CACHE, childVaccinaterecord.getChildid() + "_" + childVaccinaterecord.getNid().substring(0, 2)); if (signObj == null) { signObj = signObjVaccid; } String signStr = (String) signObj; BASE64Decoder decoder = new BASE64Decoder(); byte[] sign = decoder.decodeBuffer(signStr);

// 新增签字
childVaccinaterecordService.insertSignatures(childVaccinaterecord);
xml
xml中:(blob字段对应java的 byte[]类型,可以直接保存)
<insert id="insertSignatures">
INSERT INTO BS_CHILD_SIGNATURE(
id,
signature,
stype
) VALUES (
#{id},
#{signatureData},
#{stype}
)
</insert>
原文地址:https://www.cnblogs.com/banxian-yi/p/10790445.html