diff --git a/platform-operate-api/libry/QHD_Card.dll b/platform-operate-api/libry/QHD_Card.dll new file mode 100644 index 0000000000000000000000000000000000000000..99dffb90f1f9104e4069124025a7acfeef397bbb GIT binary patch literal 61440 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 GFz|0QSeZKj literal 0 HcmV?d00001 diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TestController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TestController.java index 41b8215..2e68984 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TestController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TestController.java @@ -31,6 +31,7 @@ import com.lyms.platform.operate.web.result.MaternalDeliverResult; import com.lyms.platform.operate.web.service.IBloodPressureService; import com.lyms.platform.operate.web.service.SyncDataTaskService; import com.lyms.platform.operate.web.utils.CommonsHelper; +import com.lyms.platform.operate.web.utils.QhdvcCardNoUtils; import com.lyms.platform.operate.web.worker.*; import com.lyms.platform.permission.dao.master.CouponMapper; import com.lyms.platform.permission.model.*; @@ -3318,7 +3319,23 @@ public class TestController extends BaseController { Patients patients = patientsService.findOnePatientById(patientId); cdGwInterface.getPersonId(patients); Map map = new HashMap<>(); - map.put("id,","2134123412431"); + map.put("id,", "2134123412431"); return map; } + + + /** + * 返回秦皇岛就诊卡的密码 + * 根据传入的卡的id来计算解密卡号的密码 + * @param kid + * @return + */ + @RequestMapping(value = "/qhd/getVcCardNoPwd", method = RequestMethod.GET) + @ResponseBody + public String getVcCardNoPwd(@RequestParam(required = true) String kid) + { + String pwd = QhdvcCardNoUtils.getKey(kid); + return pwd; + } + } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/QhdvcCardNoUtils.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/QhdvcCardNoUtils.java new file mode 100644 index 0000000..5cdcb29 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/QhdvcCardNoUtils.java @@ -0,0 +1,82 @@ +package com.lyms.platform.operate.web.utils; + +import com.sun.jna.Library; +import com.sun.jna.Native; + +import java.io.UnsupportedEncodingException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +/** + * 秦皇岛就诊卡密码获取 + * Created by Administrator on 2019-09-11. + */ +public class QhdvcCardNoUtils { + + /** + * 加载QHD_Card.dll + */ + public interface ReaderDll extends Library { + ReaderDll instanceDll = (ReaderDll) Native.loadLibrary("QHD_Card", ReaderDll.class); + //读取卡中基本信息 + public int getKeyA(String data, int iReaderHandle, byte[] dataInfo); + //public int getKeyStr_ext(byte[] oErrMsg); + //public int getKeyStr(IntByReference iReaderPort, int iReaderHandle, byte[] oErrMsg); + } + + + /** + * //String a = "434A2865"; //65284A43 + * 就诊卡的卡id + * @param kid + * @return + */ + public static String getKey(String kid) + { + kid = covertKey(kid); + byte[] dataInfo = new byte[50]; + int areaCode = 100; + int status = ReaderDll.instanceDll.getKeyA(kid,areaCode,dataInfo); + try { + if (status == 0) + { + return new String(dataInfo,"utf-8"); + } + } catch (UnsupportedEncodingException e) { + } + return null; + } + + /** + * 转换 + * 65284A43 > 434A2865 + * @param kid + * @return + */ + public static String covertKey(String kid) + { + StringBuffer sb = new StringBuffer(); + try { + byte[] list = kid.getBytes(); + + List contents = new ArrayList(); + for (int i = 0; i