Commit b262a45985598a76c24b5b42866798e72f5e894e

Authored by liquanyu
1 parent b6b294eecb

就诊卡密码获取

Showing 3 changed files with 100 additions and 1 deletions

platform-operate-api/libry/QHD_Card.dll View file @ b262a45

No preview for this file type

platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TestController.java View file @ b262a45
... ... @@ -31,6 +31,7 @@
31 31 import com.lyms.platform.operate.web.service.IBloodPressureService;
32 32 import com.lyms.platform.operate.web.service.SyncDataTaskService;
33 33 import com.lyms.platform.operate.web.utils.CommonsHelper;
  34 +import com.lyms.platform.operate.web.utils.QhdvcCardNoUtils;
34 35 import com.lyms.platform.operate.web.worker.*;
35 36 import com.lyms.platform.permission.dao.master.CouponMapper;
36 37 import com.lyms.platform.permission.model.*;
37 38  
... ... @@ -3318,8 +3319,24 @@
3318 3319 Patients patients = patientsService.findOnePatientById(patientId);
3319 3320 cdGwInterface.getPersonId(patients);
3320 3321 Map<String,String> map = new HashMap<>();
3321   - map.put("id,","2134123412431");
  3322 + map.put("id,", "2134123412431");
3322 3323 return map;
3323 3324 }
  3325 +
  3326 +
  3327 + /**
  3328 + * 返回秦皇岛就诊卡的密码
  3329 + * 根据传入的卡的id来计算解密卡号的密码
  3330 + * @param kid
  3331 + * @return
  3332 + */
  3333 + @RequestMapping(value = "/qhd/getVcCardNoPwd", method = RequestMethod.GET)
  3334 + @ResponseBody
  3335 + public String getVcCardNoPwd(@RequestParam(required = true) String kid)
  3336 + {
  3337 + String pwd = QhdvcCardNoUtils.getKey(kid);
  3338 + return pwd;
  3339 + }
  3340 +
3324 3341 }
platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/QhdvcCardNoUtils.java View file @ b262a45
  1 +package com.lyms.platform.operate.web.utils;
  2 +
  3 +import com.sun.jna.Library;
  4 +import com.sun.jna.Native;
  5 +
  6 +import java.io.UnsupportedEncodingException;
  7 +import java.util.ArrayList;
  8 +import java.util.Collections;
  9 +import java.util.List;
  10 +
  11 +/**
  12 + * 秦皇岛就诊卡密码获取
  13 + * Created by Administrator on 2019-09-11.
  14 + */
  15 +public class QhdvcCardNoUtils {
  16 +
  17 + /**
  18 + * 加载QHD_Card.dll
  19 + */
  20 + public interface ReaderDll extends Library {
  21 + ReaderDll instanceDll = (ReaderDll) Native.loadLibrary("QHD_Card", ReaderDll.class);
  22 + //读取卡中基本信息
  23 + public int getKeyA(String data, int iReaderHandle, byte[] dataInfo);
  24 + //public int getKeyStr_ext(byte[] oErrMsg);
  25 + //public int getKeyStr(IntByReference iReaderPort, int iReaderHandle, byte[] oErrMsg);
  26 + }
  27 +
  28 +
  29 + /**
  30 + * //String a = "434A2865"; //65284A43
  31 + * 就诊卡的卡id
  32 + * @param kid
  33 + * @return
  34 + */
  35 + public static String getKey(String kid)
  36 + {
  37 + kid = covertKey(kid);
  38 + byte[] dataInfo = new byte[50];
  39 + int areaCode = 100;
  40 + int status = ReaderDll.instanceDll.getKeyA(kid,areaCode,dataInfo);
  41 + try {
  42 + if (status == 0)
  43 + {
  44 + return new String(dataInfo,"utf-8");
  45 + }
  46 + } catch (UnsupportedEncodingException e) {
  47 + }
  48 + return null;
  49 + }
  50 +
  51 + /**
  52 + * 转换
  53 + * 65284A43 > 434A2865
  54 + * @param kid
  55 + * @return
  56 + */
  57 + public static String covertKey(String kid)
  58 + {
  59 + StringBuffer sb = new StringBuffer();
  60 + try {
  61 + byte[] list = kid.getBytes();
  62 +
  63 + List<String> contents = new ArrayList();
  64 + for (int i = 0; i <list.length; i+=2)
  65 + {
  66 + byte[] datas = new byte[2];
  67 + datas[0] = list[i];
  68 + datas[1] = list[i+1];
  69 + contents.add(new String(datas,"utf-8"));
  70 + }
  71 + Collections.reverse(contents);
  72 + for (String key : contents)
  73 + {
  74 + sb.append(key);
  75 + }
  76 + }catch (Exception e)
  77 + {
  78 +
  79 + }
  80 + return sb.toString();
  81 + }
  82 +}