From 98e52a2d1a05276e11d2e5c99ec05e670228fbd6 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期一, 18 十二月 2023 18:21:20 +0800
Subject: [PATCH] 海康接口对接开发
---
server/dmvisit_service/src/main/java/com/doumee/core/utils/Constants.java | 14 +++
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java | 127 +++++++++++++++++++++++++------
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Visits.java | 2
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java | 43 ++++++++++
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/VisitAppointmentResponse.java | 2
5 files changed, 160 insertions(+), 28 deletions(-)
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java
index 74a05c3..a0065b2 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java
@@ -103,6 +103,49 @@
}
}
+
+ /**
+ * 璇佷欢绫诲瀷
+ */
+ public enum CertificateType {
+
+ SHENFENZHENG(111, "韬唤璇�" ),
+ HUZHAO(414, "鎶ょ収" ),
+ HUKOUBEN(113, "鎴峰彛绨�" ),
+ JIASHIZHENG(335, "椹鹃┒璇�" ),
+ GONGXUOZHENG(131, "宸ヤ綔璇�" ),
+ XUESHENGZHENG(133, "瀛︾敓璇�" ),
+ QITA(990, "鍏朵粬" )
+ ;
+ // 鎴愬憳鍙橀噺
+ private String name;
+ private int key;
+
+ // 鏋勯�犳柟娉�
+ CertificateType(int key, String name ) {
+ this.name = name;
+ this.key = key;
+ }
+
+
+ // get set 鏂规硶
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getKey() {
+ return key;
+ }
+
+ public void setKey(int key) {
+ this.key = key;
+ }
+
+ }
public enum ReturnCode {
PARK_LINE_IN("0x00072001", "璧勬簮淇℃伅涓嶅瓨鍦�" )
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/VisitAppointmentResponse.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/VisitAppointmentResponse.java
index 5f82286..50e5689 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/VisitAppointmentResponse.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/VisitAppointmentResponse.java
@@ -10,5 +10,5 @@
public class VisitAppointmentResponse {
private String appointRecordId;// string False 棰勭害璁板綍ID锛屽彲浣滀负淇敼銆佸彇娑堥绾︾殑渚濇嵁
- private List<VisitAppointmentVistorRequest> appointmentInfoList;// object[] False 棰勭害璇︾粏淇℃伅
+ private List<VisitAppointmentMDJResponse> appointmentInfoList;// object[] False 棰勭害璇︾粏淇℃伅
}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/utils/Constants.java b/server/dmvisit_service/src/main/java/com/doumee/core/utils/Constants.java
index 643d8cc..d278adf 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/core/utils/Constants.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -87,10 +87,22 @@
try {
birthday = dateFormat.parse(birthdayString);
} catch (Exception e) {
- throw new RuntimeException(e);
+// throw new RuntimeException(e);
}
return birthday;
}
+ public static Integer getSexByCardNo(String idCard){
+ if(idCard ==null || idCard.length()<17){
+ return null;
+ }
+ String str = idCard.substring(16, 17); // 鎴彇韬唤璇佸彿鐨勫墠鍏綅鏁板瓧浣滀负鍑虹敓鏃ユ湡
+ try {
+ Integer num = Integer.parseInt(str);
+ return (num % 2 !=0) ? 1:2 ;
+ } catch (Exception e) {
+ }
+ return null;
+ }
/**
* 鍒ゆ柇鏄惁涓烘湁鏁堣溅鐗屽彿
diff --git a/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Visits.java b/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Visits.java
index be60fde..76b3346 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Visits.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Visits.java
@@ -203,7 +203,7 @@
@ExcelColumn(name="openid")
private String openid;
- @ApiModelProperty(value = "娴峰悍鍚屾鐘舵�� 0鏈悓姝� 1宸插悓姝�", example = "1")
+ @ApiModelProperty(value = "娴峰悍鍚屾鐘舵�� 0鏈悓姝� 1宸插悓姝� ", example = "1")
@ExcelColumn(name="娴峰悍鍚屾鐘舵�� 0鏈悓姝� 1宸插悓姝�")
private Integer hkStatus;
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java
index b9aa525..174a8be 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java
@@ -10,6 +10,7 @@
import com.doumee.core.haikang.model.param.respose.*;
import com.doumee.core.haikang.service.HKService;
import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.DESUtil;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.ImageBase64Util;
import com.doumee.dao.business.CompanyMapper;
@@ -57,6 +58,8 @@
return ;
}
Constants.DEALING_HK_VISIT =true;
+ String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()
+ +systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode();
List<DeviceRole> roleList = deviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda()
.eq(DeviceRole::getType, Constants.ONE));
//鏍囪鏄惁璧板厤鐧昏棰勭害
@@ -64,9 +67,9 @@
String applyLwType =systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.MDJ_LW_REQUIRED).getCode();
try {
//鏌ヨ鎵�鏈夐渶瑕佸悓姝ョ殑鏁版嵁
- List<Visits> alllist = getVisitList();
+ List<Visits> list = getVisitList();
//鎸夌収鐖剁骇鐢宠鍒嗘壒澶勭悊姣忔鐢宠鏁版嵁
- List<Visits> list = getParentList(alllist);
+// List<Visits> list = getParentList(alllist);
if(list ==null || list.size()==0){
return;
}
@@ -74,7 +77,7 @@
for(Visits c : list) {
//鍙戣捣娴峰悍棰勭害鎺ュ彛锛堥渶瑕佺櫥璁帮級锛屾牴鎹绾﹁繑鍥炴帴鍙e皝瑁呯敵璇疯褰曟洿鏂板瓧娈�
String type = Constants.equalsInteger(c.getType(),Constants.ONE)?applyType:applyLwType;
- getUpdateModelByResponse(c,date,type,roleList);
+ getUpdateModelByResponse(c,date,type,roleList,path);
visitsMapper.updateById(c);
}
}catch (Exception e){
@@ -117,69 +120,143 @@
* @param date
* @param type 0闇�瑕佺櫥璁� 1鍏嶇櫥璁�
*/
- private void getUpdateModelByResponse( Visits c,Date date,String type,List<DeviceRole> roleList ) {
+ private void getUpdateModelByResponse( Visits c,Date date,String type,List<DeviceRole> roleList,String path ) {
String code = null;
String id = null;
//鍙戣捣娴峰悍棰勭害鎺ュ彛
if(StringUtils.equals(type,"0")){
//锛堥渶瑕佺櫥璁帮級
- BaseResponse<VisitAppointmentResponse> response = HKService.visitAppiontment(getHkRequestPara(c,roleList));
+ VisitAppointmentRequest request = getHkRequestPara(c,roleList,path);
+ if(request == null){
+ //娴峰悍涓嬪彂鎴愬姛
+ c.setStatus(Constants.VisitStatus.xfFail);//涓嬪彂娴峰悍澶辫触
+ c.setRemark("涓嬪彂娴峰悍鍙傛暟涓嶆纭紒");
+ c.setHkStatus(Constants.ONE);
+ c.setHkDate(date);
+ return;
+ }
+ BaseResponse<VisitAppointmentResponse> response = HKService.visitAppiontment(request);
+ code =response!=null ?response.getCode():null;
+ id = (response!=null && response.getData()!=null
+ && response.getData().getAppointmentInfoList() !=null
+ && response.getData().getAppointmentInfoList().size()>0)?response.getData().getAppointmentInfoList().get(0).getOrderId():null;
}else{
//鍏嶇櫥璁�
- BaseResponse<VisitAppointmentMDJResponse> response = HKService.visitAppiontmentMDJ(getHkMDJRequestPara(c) );
+ VisitAppointmentMDJRequest request =getHkMDJRequestPara(c,roleList,path);
+ if(request == null){
+ //娴峰悍涓嬪彂鎴愬姛
+ c.setStatus(Constants.VisitStatus.xfFail);//涓嬪彂娴峰悍澶辫触
+ c.setRemark("涓嬪彂娴峰悍鍏嶇櫥璁板弬鏁颁笉姝g‘锛�");
+ c.setHkStatus(Constants.ONE);
+ c.setHkDate(date);
+ return;
+ }
+ BaseResponse<VisitAppointmentMDJResponse> response = HKService.visitAppiontmentMDJ(request );
+ code =response!=null ?response.getCode():null;
+ id = (response!=null && response.getData()!=null)?response.getData().getOrderId():null;
}
if (code!= null && id!=null) {
//娴峰悍涓嬪彂鎴愬姛
c.setHkId( id);//棰勭害鏍囪瘑
+ c.setRemark("涓嬪彂娴峰悍鎴愬姛锛併��"+type+"銆�");
c.setStatus(Constants.VisitStatus.xfSuccess);//涓嬪彂娴峰悍鎴愬姛
} else {
//娴峰悍涓嬪彂鎴愬姛
+ c.setRemark("涓嬪彂娴峰悍澶辫触锛併��"+type+"銆�");
c.setStatus(Constants.VisitStatus.xfFail);//涓嬪彂娴峰悍澶辫触
}
c.setHkStatus(Constants.ONE);
c.setHkDate(date);
}
- private VisitAppointmentMDJRequest getHkMDJRequestPara(Visits c) {
- return null;
- }
-
- private VisitAppointmentRequest getHkRequestPara(Visits c,List<DeviceRole> roleList ) {
- VisitAppointmentRequest request = new VisitAppointmentRequest();
+ /**
+ * 鍏嶇櫥璁版帴鍙e弬鏁�
+ * @param c
+ * @return
+ */
+ private VisitAppointmentMDJRequest getHkMDJRequestPara(Visits c,List<DeviceRole> roleList,String path) {
+ VisitAppointmentMDJRequest request = new VisitAppointmentMDJRequest();
+ VisitAppointmentVistorRequest info =getRequestInfoByVisit(c,path);
+ if(info == null ){
+ //浜鸿劯涓虹┖锛屼笉鑳借繘琛屾帹閫�
+ return null;
+ }
request.setVisitStartTime(DateUtil.getISO8601Timestamp(c.getStarttime()));
request.setVisitEndTime(DateUtil.getISO8601Timestamp(c.getEndtime()));
request.setReceptionistId(c.getReceptMemberHkId());//琚浜烘捣搴风紪鐮�
request.setVisitPurpose(c.getReason());
- request.setVisitorPermissionSet(new VisitAppointmentPermissonRequest());
+ request.setVisitorInfo(info);
+ request.setVisitorPermissionSet(getVisitPermissonRequest(roleList,c));
+ return request;
+ }
+
+ /**
+ * 璁垮鏉冮檺缁�
+ * @param roleList
+ * @param c
+ * @return
+ */
+ private VisitAppointmentPermissonRequest getVisitPermissonRequest(List<DeviceRole> roleList, Visits c) {
+ VisitAppointmentPermissonRequest p = new VisitAppointmentPermissonRequest();
//鑾峰彇鏉冮檺缁勯泦鍚�
String[] roles = getHkRoles(c.getDoors(),roleList);
if(roles==null || roles.length ==0){
//浣跨敤榛樿璁垮鏉冮檺缁�
- request.getVisitorPermissionSet().setDefaultPrivilegeGroupFlag(Constants.ONE+"");
+ p.setDefaultPrivilegeGroupFlag(Constants.ONE+"");
}else{
//鎸囧畾鏈夋晥娴峰悍璁垮鏉冮檺缁勬暟鎹�
- request.getVisitorPermissionSet().setDefaultPrivilegeGroupFlag(Constants.ZERO+"");
- request.getVisitorPermissionSet().setPrivilegeGroupIds(roles);
+ p.setDefaultPrivilegeGroupFlag(Constants.ZERO+"");
+ p.setPrivilegeGroupIds(roles);
}
+ return p;
+ }
+
+ private VisitAppointmentRequest getHkRequestPara(Visits c,List<DeviceRole> roleList,String path ) {
+ VisitAppointmentRequest request = new VisitAppointmentRequest();
+ //鐢宠浜轰俊鎭�
+ VisitAppointmentVistorRequest info =getRequestInfoByVisit(c,path);
+ if(info == null ){
+ //浜鸿劯涓虹┖锛屼笉鑳借繘琛屾帹閫�
+ return null;
+ }
+ request.setVisitStartTime(DateUtil.getISO8601Timestamp(c.getStarttime()));
+ request.setVisitEndTime(DateUtil.getISO8601Timestamp(c.getEndtime()));
+ request.setReceptionistId(c.getReceptMemberHkId());//琚浜烘捣搴风紪鐮�
+ request.setVisitPurpose(c.getReason());
+ //鑾峰彇鏉冮檺缁勯泦鍚�
+ request.setVisitorPermissionSet(getVisitPermissonRequest(roleList,c));
List<VisitAppointmentVistorRequest> infolist = new ArrayList<>();
- //鐢宠浜�
- infolist.add(getRequestInfoByVisit(c));
- if(c.getVisitsList() != null){
- //闅忚浜�
- for(Visits v : c.getVisitsList()){
- infolist.add(getRequestInfoByVisit(v));
- }
- }
+ infolist.add(info);
request.setVisitorInfoList(infolist);
return request;
}
- private VisitAppointmentVistorRequest getRequestInfoByVisit(Visits c) {
+ private VisitAppointmentVistorRequest getRequestInfoByVisit(Visits c,String path) {
VisitAppointmentVistorRequest info = new VisitAppointmentVistorRequest();
+ //浜鸿劯鏁版嵁
+ if(StringUtils.isBlank(c.getName())
+ ||StringUtils.isBlank(c.getPhone())
+ || StringUtils.isBlank(c.getFaceImg()) ){
+ return null;
+ }
+ if(StringUtils.isNotBlank(c.getFaceImg())){
+ info.setVisitorPhoto(ImageBase64Util.Image2Base64(path+c.getFaceImg()));
+ }
+ if(info.getVisitorPhoto() == null){
+ return null;
+ }
info.setVisitorName(c.getName());
info.setVisitorWorkUnit(c.getCompanyName());
info.setPhoneNo(c.getPhone());
+ info.setPlateNo(c.getCarNos());
+ if(Constants.equalsInteger(c.getIdcardType(),Constants.ZERO)){
+ info.setCertificateType(HKConstants.CertificateType.SHENFENZHENG.getKey()+"");
+ info.setCertificateNo(DESUtil.decrypt(Constants.EDS_PWD, c.getIdcardNo()));
+ } else if(Constants.equalsInteger(c.getIdcardType(),Constants.TWO)){
+ info.setCertificateType(HKConstants.CertificateType.HUZHAO.getKey()+"");
+ info.setCertificateNo(DESUtil.decrypt(Constants.EDS_PWD, c.getIdcardNo()));
+ }
return info;
}
--
Gitblit v1.9.3