From c18b8f0f12f9c3965fee72ea2ae668c2fc89d908 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期一, 18 十二月 2023 17:24:58 +0800
Subject: [PATCH] 海康接口对接开发
---
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Member.java | 10
server/dmvisit_service/src/main/java/com/doumee/core/erp/model/openapi/request/UserUpdateRequest.java | 5
server/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java | 10
server/dmvisit_service/src/main/java/com/doumee/core/utils/ImageBase64Util.java | 131 ++++++++++
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/UserDelRequest.java | 13 +
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java | 36 ++
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Retention.java | 2
server/dmvisit_admin/src/main/java/com/doumee/task/ScheduleTool.java | 11
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java | 2
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java | 14
server/dmvisit_service/src/main/java/com/doumee/service/business/HkSyncService.java | 3
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/OrgOrUserAddSuccessResponse.java | 1
server/dmvisit_service/src/main/java/com/doumee/core/utils/Constants.java | 2
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java | 220 ++++++++++++++++
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncOrgUserServiceImpl.java | 172 +++++++++++-
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Visits.java | 8
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEmpowerServiceImpl.java | 82 ++++++
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/MemberRole.java | 12
server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/VisitAppointmentMDJResponse.java | 2
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java | 6
20 files changed, 706 insertions(+), 36 deletions(-)
diff --git a/server/dmvisit_admin/src/main/java/com/doumee/task/ScheduleTool.java b/server/dmvisit_admin/src/main/java/com/doumee/task/ScheduleTool.java
index 3ad095e..8818ff7 100644
--- a/server/dmvisit_admin/src/main/java/com/doumee/task/ScheduleTool.java
+++ b/server/dmvisit_admin/src/main/java/com/doumee/task/ScheduleTool.java
@@ -3,6 +3,7 @@
import com.doumee.service.business.impl.hksync.HkSyncImgServiceImpl;
import com.doumee.service.business.impl.hksync.HkSyncOrgUserServiceImpl;
+import com.doumee.service.business.impl.hksync.HkSyncVisitServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.EnableScheduling;
@@ -23,6 +24,8 @@
private HkSyncImgServiceImpl hkSyncImgService;
@Autowired
private HkSyncOrgUserServiceImpl hkSyncOrgUserService;
+ @Autowired
+ private HkSyncVisitServiceImpl hkSyncVisitService;
/**
* 鏄惁寮�鍙戣��
*/
@@ -47,6 +50,14 @@
hkSyncOrgUserService.syncOrgData();
}
/**
+ * 瀹氭椂鍚屾缁勭粐淇℃伅鍒版捣搴风郴缁�
+ * @throws Exception
+ */
+ @Scheduled(fixedDelay= 60*1000)
+ public void syncVisitData() {
+ hkSyncVisitService.syncVisitData();
+ }
+ /**
* 瀹氭椂鍚屾鐢ㄦ埛淇℃伅鍒版捣搴风郴缁�
* @throws Exception
*/
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/erp/model/openapi/request/UserUpdateRequest.java b/server/dmvisit_service/src/main/java/com/doumee/core/erp/model/openapi/request/UserUpdateRequest.java
index 5f60374..e82c1a1 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/core/erp/model/openapi/request/UserUpdateRequest.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/erp/model/openapi/request/UserUpdateRequest.java
@@ -43,5 +43,8 @@
private List<String> cardList;
@ApiModelProperty(value = "鎺堟潈闂ㄧ缁勭紪鐮侀泦鍚�,銆愯瀹㈢銆戝敮涓�鏍囪瘑" )
private Integer[] roleIds;
-
+ @ApiModelProperty(value = "鎺堟潈鏈夋晥鏈燂紙寮�濮嬫椂闂达級锛屼负绌烘椂榛樿闀挎湡鏈夋晥锛屽2023-11-24 11:39:23" )
+ private Date validStartTime;
+ @ApiModelProperty(value = "鎺堟潈鏈夋晥鏈燂紙鎴鏃堕棿锛夛紝涓虹┖鏃堕粯璁ら暱鏈熸湁鏁堬紝濡�2023-11-24 11:39:23" )
+ private Date validEndTime;
}
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 9d6d3c8..74a05c3 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
@@ -9,7 +9,8 @@
public class HKConstants {
public static final String IMG_INDEX ="HKIMG=" ;
public static final String IMG_INDEX_ERROR ="HKIMG_ERROR=" ;
- public static final String RES_INDEX = "DM_";
+ public static final String RES_ORG_INDEX = "DMO";
+ public static final String RES_USER_INDEX = "DMU";
private Logger logger = LoggerFactory.getLogger(HKConstants.class);
//娴峰悍骞冲彴鏍规嵁鐜板満鐜閰嶇疆http杩樻槸https
public static final String RESPONSE_SUCCEE = "0";
@@ -102,6 +103,39 @@
}
}
+ public enum ReturnCode {
+
+ PARK_LINE_IN("0x00072001", "璧勬簮淇℃伅涓嶅瓨鍦�" )
+ ;
+ // 鎴愬憳鍙橀噺
+ private String name;
+ private String key;
+
+ // 鏋勯�犳柟娉�
+ ReturnCode(String 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 String getKey() {
+ return key;
+ }
+
+ public void setKey(String key) {
+ this.key = key;
+ }
+
+ }
/**
* 椤旇壊鏋氫妇
*/
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/UserDelRequest.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/UserDelRequest.java
new file mode 100644
index 0000000..50b72ea
--- /dev/null
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/UserDelRequest.java
@@ -0,0 +1,13 @@
+package com.doumee.core.haikang.model.param.request;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 鐢ㄦ埛鏂板璇锋眰鍙傛暟
+ */
+@Data
+public class UserDelRequest {
+ private String[] personIds;// string[] True 浜哄憳Id锛屽崟娆℃搷浣滀笂闄愪负1000鏉°�� 鑾峰彇浜哄憳鍒楄〃v2 鎺ュ彛鑾峰彇杩斿洖鍙傛暟personId
+}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/OrgOrUserAddSuccessResponse.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/OrgOrUserAddSuccessResponse.java
index 2902311..dd1c680 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/OrgOrUserAddSuccessResponse.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/OrgOrUserAddSuccessResponse.java
@@ -7,4 +7,5 @@
private String clientId;// number False 璋冪敤鏂规寚瀹欼d
private String orgIndexCode;// string False 鏈嶅姟绔敓鎴愮殑鍞竴鏍囪瘑
+ private String personId;// string False 鏈嶅姟绔敓鎴愮殑鍞竴鏍囪瘑
}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/VisitAppointmentVistorResponse.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/VisitAppointmentMDJResponse.java
similarity index 95%
rename from server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/VisitAppointmentVistorResponse.java
rename to server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/VisitAppointmentMDJResponse.java
index a611d64..65f7e11 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/VisitAppointmentVistorResponse.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/VisitAppointmentMDJResponse.java
@@ -3,7 +3,7 @@
import lombok.Data;
@Data
-public class VisitAppointmentVistorResponse {
+public class VisitAppointmentMDJResponse {
private String visitorName ;//string False 璁垮濮撳悕锛屾敮鎸佷腑鑻辨枃瀛楃锛屼笉鑳藉寘鍚� 鈥� / \ : * ? " < >
private String appointRecordId ;// string False 棰勭害璁板綍ID
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
index d7ae35b..488cfb3 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
@@ -151,13 +151,13 @@
*鎵归噺鍒犻櫎浜哄憳淇℃伅
* @return
*/
- public static BaseResponse<OrgOrUserAddFailureResponse> delBatchUser(List<UserAddRequest> param){
+ public static BaseResponse<List<UserDelResponse>> delBatchUser(UserDelRequest param){
log.info("銆愭捣搴锋壒閲忔柊澧炰汉鍛樸��================寮�濮�===="+JSONObject.toJSONString(param));
try {
String res = HKTools.delBatchUser(JSONObject.toJSONString(param));
TypeReference typeReference =
new TypeReference< BaseResponse<OrgOrUserAddFailureResponse>>(){};
- BaseResponse<OrgOrUserAddFailureResponse> result = JSONObject.parseObject(res, typeReference.getType());
+ BaseResponse<List<UserDelResponse >> result = JSONObject.parseObject(res, typeReference.getType());
logResult(result,"娴峰悍鎵归噺鏂板浜哄憳");
return result;
}catch (Exception e){
@@ -446,13 +446,13 @@
*璁垮鍏嶇櫥璁伴绾�
* @return
*/
- public static BaseResponse<VisitAppointmentVistorResponse> visitAppiontmentMDJ(VisitAppointmentMDJRequest param){
+ public static BaseResponse<VisitAppointmentMDJResponse> visitAppiontmentMDJ(VisitAppointmentMDJRequest param){
log.info("銆愭捣搴疯瀹㈠厤鐧昏棰勭害銆�================寮�濮�===="+JSONObject.toJSONString(param));
try {
String res = HKTools.visitAppiontmentMDJ(JSONObject.toJSONString(param));
TypeReference typeReference =
- new TypeReference< BaseResponse<VisitAppointmentVistorResponse> >(){};
- BaseResponse<VisitAppointmentVistorResponse> result = JSONObject.parseObject(res, typeReference.getType());
+ new TypeReference< BaseResponse<VisitAppointmentMDJResponse> >(){};
+ BaseResponse<VisitAppointmentMDJResponse> result = JSONObject.parseObject(res, typeReference.getType());
logResult(result,"娴峰悍璁垮鍏嶇櫥璁伴绾�");
return result;
}catch (Exception e){
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 4fe02c2..643d8cc 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
@@ -66,6 +66,8 @@
public static boolean DEALING_HK_IMG = false;
public static boolean DEALING_HK_ORG = false;
public static boolean DEALING_HK_USER = false;
+ public static boolean DEALING_HK_VISIT = false;
+ public static boolean DEALING_HK_EMPOWER = false;
// ERP鎺ュ彛閰嶇疆
public static final String ERP_CONFIG = "ERP_CONFIG";
// ERP ACCESS_KEY
diff --git a/server/dmvisit_service/src/main/java/com/doumee/core/utils/ImageBase64Util.java b/server/dmvisit_service/src/main/java/com/doumee/core/utils/ImageBase64Util.java
new file mode 100644
index 0000000..327f16c
--- /dev/null
+++ b/server/dmvisit_service/src/main/java/com/doumee/core/utils/ImageBase64Util.java
@@ -0,0 +1,131 @@
+package com.doumee.core.utils;
+
+import org.apache.commons.codec.binary.Base64;
+import sun.misc.BASE64Decoder;
+import sun.misc.BASE64Encoder;
+
+import java.io.*;
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+public class ImageBase64Util {
+
+ /**
+ * 灏嗗浘鐗囪浆鎹㈡垚Base64缂栫爜
+ * @param imgFile 寰呭鐞嗗浘鐗�
+ * @return
+ */
+ public static String getImgStr(String imgFile) {
+ // 灏嗗浘鐗囨枃浠惰浆鍖栦负瀛楄妭鏁扮粍瀛楃涓诧紝骞跺鍏惰繘琛孊ase64缂栫爜澶勭悊
+
+ InputStream in = null;
+ byte[] data = null;
+ // 璇诲彇鍥剧墖瀛楄妭鏁扮粍
+ try {
+ in = new FileInputStream(imgFile);
+ data = new byte[in.available()];
+ in.read(data);
+ in.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return Base64.encodeBase64String(data);
+ }
+
+ /**
+ * 瀵瑰瓧鑺傛暟缁勫瓧绗︿覆杩涜Base64瑙g爜骞剁敓鎴愬浘鐗�
+ * @param imgStr 鍥剧墖鏁版嵁
+ * @param imgFilePath 淇濆瓨鍥剧墖鍏ㄨ矾寰勫湴鍧�
+ * @return
+ */
+ public static boolean generateImage(String imgStr, String imgFilePath) {
+ //
+ if (imgStr == null) // 鍥惧儚鏁版嵁涓虹┖
+ return false;
+ BASE64Decoder decoder = new BASE64Decoder();
+ try {
+ // Base64瑙g爜
+ byte[] b = decoder.decodeBuffer(imgStr);
+ for (int i = 0; i < b.length; ++i) {
+ if (b[i] < 0) {// 璋冩暣寮傚父鏁版嵁
+ b[i] += 256;
+ }
+ }
+ // 鐢熸垚jpg鍥剧墖
+ OutputStream out = new FileOutputStream(imgFilePath);
+ out.write(b);
+ out.flush();
+ out.close();
+ return true;
+ } catch (Exception e) {
+ return false;
+ }
+ }
+
+
+ /**
+ * 杩滅▼璇诲彇image杞崲涓築ase64瀛楃涓�
+ * @param imgUrl
+ * @return
+ */
+ public static String Image2Base64(String imgUrl) {
+ URL url = null;
+ InputStream is = null;
+ ByteArrayOutputStream outStream = null;
+ HttpURLConnection httpUrl = null;
+ try{
+ url = new URL(imgUrl);
+ httpUrl = (HttpURLConnection) url.openConnection();
+ httpUrl.connect();
+ httpUrl.getInputStream();
+ is = httpUrl.getInputStream();
+
+ outStream = new ByteArrayOutputStream();
+ //鍒涘缓涓�涓狟uffer瀛楃涓�
+ byte[] buffer = new byte[1024];
+ //姣忔璇诲彇鐨勫瓧绗︿覆闀垮害锛屽鏋滀负-1锛屼唬琛ㄥ叏閮ㄨ鍙栧畬姣�
+ int len = 0;
+ //浣跨敤涓�涓緭鍏ユ祦浠巄uffer閲屾妸鏁版嵁璇诲彇鍑烘潵
+ while( (len=is.read(buffer)) != -1 ){
+ //鐢ㄨ緭鍑烘祦寰�buffer閲屽啓鍏ユ暟鎹紝涓棿鍙傛暟浠h〃浠庡摢涓綅缃紑濮嬭锛宭en浠h〃璇诲彇鐨勯暱搴�
+ outStream.write(buffer, 0, len);
+ }
+ // 瀵瑰瓧鑺傛暟缁凚ase64缂栫爜
+ return new BASE64Encoder().encode(outStream.toByteArray());
+ }catch (Exception e) {
+ e.printStackTrace();
+ }
+ finally{
+ if(is != null)
+ {
+ try {
+ is.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ if(outStream != null)
+ {
+ try {
+ outStream.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ if(httpUrl != null)
+ {
+ httpUrl.disconnect();
+ }
+ }
+ return null;
+ }
+
+ public static void main(String[] args) {
+ String url= "http://doumeetest.oss-cn-beijing.aliyuncs.com/member/20210515/de923f81-b417-47fc-a702-472d60d7870a.png";// 寰呭鐞嗙殑鍥剧墖
+ String imgbese = Image2Base64(url);
+ System.out.println(imgbese);
+
+// String url= "D:\\1.jpg";// 鏂扮敓鎴愮殑鍥剧墖
+// generateImage(imgbese, url);
+ }
+}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Member.java b/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Member.java
index de1a53f..2dd81ff 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Member.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Member.java
@@ -106,9 +106,9 @@
@ExcelColumn(name="宸ュ彿")
private String code;
- @ApiModelProperty(value = "鐝")
- @ExcelColumn(name="鐝")
- private String classes;
+ @ApiModelProperty(value = "鐝 0鐧界彮 1澶滅彮")
+ @ExcelColumn(name="鐝 0鐧界彮 1澶滅彮")
+ private Integer classes;
@ApiModelProperty(value = "鐘舵�� 0姝e父 1绂佺敤 2鎷夐粦/鍐荤粨", example = "1")
@ExcelColumn(name="鐘舵�� 0姝e父 1绂佺敤 2鎷夐粦/鍐荤粨")
@@ -203,5 +203,7 @@
@ApiModelProperty(value = "缁勭粐鍚嶇О")
@TableField(exist = false)
private String companyName;
-
+ @ApiModelProperty(value = "缁勭粐娴峰悍缂栫爜")
+ @TableField(exist = false)
+ private String companyHkId;
}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/MemberRole.java b/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/MemberRole.java
index 9b97e1d..7e9d836 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/MemberRole.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/MemberRole.java
@@ -59,4 +59,16 @@
@ExcelColumn(name="瑙掕壊缂栫爜锛堝叧鑱攄oor_role)")
private String roleId;
+ @ApiModelProperty(value = "娴峰悍鏍囪瘑")
+ @ExcelColumn(name="娴峰悍鏍囪瘑")
+ private String hkId;
+
+ @ApiModelProperty(value = "娴峰悍鍚屾鐘舵�� 0鏈悓姝� 1宸插悓姝�")
+ @ExcelColumn(name="娴峰悍鍚屾鐘舵�� 0鏈悓姝� 1宸插悓姝�")
+ private Integer hkStatus;
+
+ @ApiModelProperty(value = "娴峰悍鏈�杩戝悓姝ユ椂闂�")
+ @ExcelColumn(name="娴峰悍鏈�杩戝悓姝ユ椂闂�")
+ private Date hkDate;
+
}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Retention.java b/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Retention.java
index 62fb83f..984e2f4 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Retention.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Retention.java
@@ -95,7 +95,7 @@
@ApiModelProperty(value = "鐝")
@ExcelColumn(name="鐝")
- private String classes;
+ private Integer classes;
@ApiModelProperty(value = "娴峰悍闂ㄧ鍚嶇О")
@ExcelColumn(name="娴峰悍闂ㄧ鍚嶇О")
private String deviceName;
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 c9bfb19..be60fde 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
@@ -218,8 +218,8 @@
@ApiModelProperty(value = "鏅�氳瀹㈢敵璇烽殢璁夸汉鍛�")
@TableField(exist = false)
private List<Visits> withUserList;
- @ApiModelProperty(value = "鐝")
- private String memberClasses;
+// @ApiModelProperty(value = "鐝")
+// private String memberClasses;
@ApiModelProperty(value = "绫诲瀷 0鍔冲姟璁垮 1鏅�氳瀹� 2鍐呴儴浜哄憳", example = "1")
@TableField(exist = false)
@@ -232,6 +232,10 @@
@ExcelColumn(name="琚浜哄憳濮撳悕")
@TableField(exist = false)
private String receptMemberName;
+ @ApiModelProperty(value = "琚浜哄憳娴峰悍缂栫爜", example = "1")
+ @ExcelColumn(name="琚浜哄憳濮撳悕")
+ @TableField(exist = false)
+ private String receptMemberHkId;
@ApiModelProperty(value = "琚浜哄憳閮ㄩ棬", example = "1")
@ExcelColumn(name="琚浜哄憳閮ㄩ棬")
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/HkSyncService.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/HkSyncService.java
index 89b0912..7d6c554 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/HkSyncService.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/HkSyncService.java
@@ -57,4 +57,7 @@
void syncOrgData();
void syncUserData();
+
+ void syncVisitData();
+ void syncEmpowerData();
}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java
index 245bb9e..8dd1de3 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java
@@ -682,21 +682,29 @@
Company company = companyMapper.selectOne(new QueryWrapper<Company>().lambda().eq(Company::getErpId,param.getId()).last("limit 1"));
if(Objects.isNull(company)){
company = new Company();
- BeanUtils.copyProperties(param,company);
+// BeanUtils.copyProperties(param,company);
company.setId(null);
company.setCreateDate(new Date());
company.setHkStatus(Constants.ZERO);
company.setErpStatus(Constants.ONE);
company.setErpDate(new Date());
company.setErpId(param.getId());
+ company.setErpParentId(param.getParentId());
company.setFsStatus(Constants.ZERO);
company.setType(Constants.ONE);
+ company.setLinkName(param.getLinkName());
+ company.setLinkPhone(param.getLinkPhone());
companyMapper.insert(company);
//TODO 娴峰悍鏁版嵁鍒涘缓
}else{
- BeanUtils.copyProperties(param,company);
+// BeanUtils.copyProperties(param,company);
company.setEditDate(new Date());
+ company.setErpId(param.getId());
+ company.setHkStatus(Constants.ZERO);
company.setErpDate(new Date());
+ company.setErpParentId(param.getParentId());
+ company.setLinkName(param.getLinkName());
+ company.setLinkPhone(param.getLinkPhone());
companyMapper.updateById(company);
//TODO 娴峰悍鏁版嵁鏇存柊
}
@@ -742,7 +750,6 @@
member.setIdcardDecode(Constants.getTuominStr(param.getIdNo()));
member.setCompanyId(param.getOrgId());
memberMapper.insert(member);
-
//TODO 娴峰悍鏁版嵁鍒涘缓
}else{
BeanUtils.copyProperties(param,member);
@@ -821,6 +828,7 @@
visitsList.forEach(i->{
i.setStatus(param.getStatus().equals(Constants.ZERO)?Constants.VisitStatus.pass:Constants.VisitStatus.noPass);
i.setEndCheckDate(DateUtil.StringToDate(param.getApproveDate(),"yyyy-MM-dd HH:mm:ss"));
+ i.setHkStatus(Constants.ZERO);
visitsMapper.updateById(i);
});
}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java
index 5e03224..e243cd2 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java
@@ -79,5 +79,11 @@
@Override
public void syncOrgData( ){
}
+ @Override
+ public void syncVisitData() {
+ }
+ @Override
+ public void syncEmpowerData() {
+ }
}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEmpowerServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEmpowerServiceImpl.java
new file mode 100644
index 0000000..2e89198
--- /dev/null
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEmpowerServiceImpl.java
@@ -0,0 +1,82 @@
+package com.doumee.service.business.impl.hksync;
+
+import com.doumee.core.haikang.model.HKConstants;
+import com.doumee.core.haikang.model.param.BaseResponse;
+import com.doumee.core.haikang.model.param.request.VisitAppointmentRequest;
+import com.doumee.core.haikang.model.param.respose.VisitAppointmentResponse;
+import com.doumee.core.haikang.service.HKService;
+import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.DateUtil;
+import com.doumee.dao.business.join.EmpowerJoinMapper;
+import com.doumee.dao.business.join.VisitsJoinMapper;
+import com.doumee.dao.business.model.Empower;
+import com.doumee.dao.business.model.Member;
+import com.doumee.dao.business.model.Visits;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 娴峰悍闂ㄧ鎺堟潈涓氬姟Service瀹炵幇
+ * @author 姹熻箘韫�
+ * @date 2023/11/30 15:33
+ */
+@Service
+@Slf4j
+public class HkSyncEmpowerServiceImpl extends HkSyncBaseServiceImpl {
+ @Autowired
+ private EmpowerJoinMapper empowerJoinMapper;
+
+ /**
+ * 鍚屾娴峰悍缁勭粐淇℃伅,鏍规嵁erp鍚屾缁勭粐缁撴灉锛屽畾鏃舵鏌ラ渶瑕佷笅鍙戝埌娴峰悍鐨勭粍缁囦俊鎭�
+ */
+ @Override
+ public void syncEmpowerData(){
+ if(Constants.DEALING_HK_EMPOWER){
+ return ;
+ }
+ Constants.DEALING_HK_EMPOWER =true;
+ try {
+ //鏌ヨ鎵�鏈夐渶瑕佸悓姝ョ殑浼佷笟鏁版嵁
+
+ MPJLambdaWrapper<Empower> queryWrapper = new MPJLambdaWrapper<>();
+ queryWrapper.selectAll(Empower.class);
+ queryWrapper.selectAs(Member::getName,Visits::getReceptMemberName)
+ .select("t1.hk_id as receptMemberHkId")
+ .leftJoin(Member.class,Member::getId,Visits::getReceptMemberId);
+ queryWrapper.eq(Visits::getStatus,Constants.VisitStatus.pass)//瀹℃壒閫氳繃
+ .eq(Visits::getHkStatus,Constants.ZERO)//鏈悓姝ュ埌娴峰悍
+ .orderByAsc(Visits::getCreateDate);
+ List<Empower> list = empowerJoinMapper.selectJoinList(Empower.class,queryWrapper);
+ if(list ==null || list.size()==0){
+ return;
+ }
+ Date date = new Date();
+ for(Empower c : list) {
+ //鍒犻櫎鐨勬暟鎹紝杩涜鍒犻櫎
+ VisitAppointmentRequest request = new VisitAppointmentRequest();
+ BaseResponse<VisitAppointmentResponse> response = HKService.visitAppiontment(request);
+ if (response != null
+ && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)
+ &&response.getData()!=null
+ &&StringUtils.isNotBlank(response.getData().getAppointRecordId())) {
+ //娴峰悍涓嬪彂鎴愬姛
+ c.setHkId( response.getData().getAppointRecordId());//棰勭害鏍囪瘑
+ } else {
+ //娴峰悍涓嬪彂鎴愬姛
+ }
+ empowerJoinMapper.updateById(c);
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ }finally {
+ Constants.DEALING_HK_EMPOWER =false;
+ }
+ }
+
+}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncOrgUserServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncOrgUserServiceImpl.java
index 9aea7de..6f4a268 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncOrgUserServiceImpl.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncOrgUserServiceImpl.java
@@ -4,26 +4,28 @@
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.erp.model.openapi.request.erp.UserFailRequest;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.haikang.model.HKConstants;
+import com.doumee.core.haikang.model.HKTools;
import com.doumee.core.haikang.model.param.BaseResponse;
-import com.doumee.core.haikang.model.param.request.OrgAddRequest;
-import com.doumee.core.haikang.model.param.request.OrgDelRequest;
-import com.doumee.core.haikang.model.param.request.ParkListRequest;
-import com.doumee.core.haikang.model.param.respose.OrgOrUserAddResponse;
-import com.doumee.core.haikang.model.param.respose.OrgOrUserAddSuccessResponse;
-import com.doumee.core.haikang.model.param.respose.OrgUpdateFailureResponse;
-import com.doumee.core.haikang.model.param.respose.ParkListResponse;
+import com.doumee.core.haikang.model.param.request.*;
+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.DateUtil;
+import com.doumee.core.utils.ImageBase64Util;
import com.doumee.dao.business.CompanyMapper;
+import com.doumee.dao.business.MemberMapper;
import com.doumee.dao.business.ParksMapper;
import com.doumee.dao.business.join.CompanyJoinMapper;
import com.doumee.dao.business.model.Company;
+import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.model.Parks;
+import com.doumee.service.business.ERPSyncService;
import com.github.yulichang.query.MPJQueryWrapper;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.checkerframework.checker.units.qual.C;
import org.springframework.beans.factory.annotation.Autowired;
@@ -35,21 +37,24 @@
import java.util.UUID;
/**
- * 娴峰悍鍋滆溅搴撳悓姝ervice瀹炵幇
+ * 娴峰悍缁勭粐浜哄憳閫氳繃姝ervice瀹炵幇
* @author 姹熻箘韫�
* @date 2023/11/30 15:33
*/
@Service
+@Slf4j
public class HkSyncOrgUserServiceImpl extends HkSyncBaseServiceImpl {
-
@Autowired
private CompanyMapper companyMapper;
+ @Autowired
+ private MemberMapper memberMapper;
+ @Autowired
+ private ERPSyncService erpSyncService;
@Autowired
private SystemDictDataBiz systemDictDataBiz;
/**
- * 鍚屾娴峰悍缁勭粐淇℃伅
- * @return
+ * 鍚屾娴峰悍缁勭粐淇℃伅,鏍规嵁erp鍚屾缁勭粐缁撴灉锛屽畾鏃舵鏌ラ渶瑕佷笅鍙戝埌娴峰悍鐨勭粍缁囦俊鎭�
*/
@Override
public void syncOrgData(){
@@ -64,7 +69,7 @@
.select("*,(select b.hk_id from company b where company.erp_parent_id = b.id limit 1) as hkParentId")
.lambda()
.eq(Company::getHkStatus,Constants.ZERO)
- .orderByDesc(Company::getErpDate));
+ .orderByAsc(Company::getErpDate));
if(list ==null || list.size()==0){
return;
}
@@ -124,6 +129,7 @@
*/
private void doHkAddOrg(List<Company> updateList, List<OrgAddRequest> addList) {
Date date = new Date();
+
BaseResponse<OrgOrUserAddResponse> result = HKService.addBatchOrg(addList);
if(StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE)){
OrgOrUserAddResponse data = result.getData();
@@ -156,10 +162,10 @@
private OrgAddRequest getOrgAddModel(Company c,String rootOrgId) {
OrgAddRequest model = new OrgAddRequest();
- model.setOrgIndexCode(HKConstants.RES_INDEX+UUID.randomUUID().toString());
+ model.setOrgIndexCode(HKConstants.RES_ORG_INDEX+UUID.randomUUID().toString().replace("-",""));
model.setOrgName(c.getName());
- model.setOrgCode(c.getCode());
- model.setOrgIndexCode(c.getHkParentId());
+// model.setOrgCode(c.getCode());
+ model.setParentIndexCode(c.getHkParentId());
return model;
}
@@ -170,14 +176,20 @@
* @param date
*/
private void doHkDeleteOrg(List<Integer> delIds,List<String> delHkIds, Date date) {
+ if(delHkIds.size() == 0){
+ return;
+ }
OrgDelRequest request = new OrgDelRequest();
- request.setIndexCodes((String[]) delHkIds.toArray());
+ request.setIndexCodes( delHkIds.toArray(new String[]{}));
BaseResponse<List<OrgUpdateFailureResponse>> result = HKService.delBatchOrg(request);
if(StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE)){
List<String> fIds = new ArrayList<>();
if(result.getData()!=null){
for(OrgUpdateFailureResponse r : result.getData()){
- fIds.add(r.getOrgIndexCode());//鍒犻櫎澶辫触鐨勬暟鎹泦鍚�
+ if(!r.getCode().equals("0x00072001")){
+ //涓嶅瓨鍦ㄧ殑涔熺畻鍒犻櫎鎴愬姛
+ fIds.add(r.getOrgIndexCode());//鍒犻櫎澶辫触鐨勬暟鎹泦鍚�
+ }
}
}
//鏍囪鍒犻櫎鎴愬姛鐨勬暟鎹紙娴峰悍瀵规帴鐘舵�佷负宸插悓姝ワ紝锛屽悓姝ュけ璐ョ殑浠嶄负寰呭悓姝ワ紝绛変笅涓�娆$户缁鐞嗭紝鐭ラ亾鍏ㄩ儴鍒犻櫎瀹屾瘯锛�
@@ -195,7 +207,133 @@
*/
@Override
public void syncUserData(){
+ if(Constants.DEALING_HK_USER){
+ return ;
+ }
+ Constants.DEALING_HK_USER =true;
+ try {
+ //鏌ヨ鎵�鏈夐渶瑕佸悓姝ョ殑浼佷笟鏁版嵁
+ List<Member> list = memberMapper.selectList(new QueryWrapper<Member>()
+ .lambda()
+ .eq(Member::getHkStatus,Constants.ZERO)
+ .orderByAsc(Member::getErpDate));
+ if(list ==null || list.size()==0){
+ return;
+ }
+ Date date = new Date();
+ String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()
+ +systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode();
+ for(Member c : list){
+ if( c.getCompanyId() == null){
+ //濡傛灉娌℃湁缁勭粐涓嶅仛澶勭悊
+ continue;
+ }
+ UserAddRequest addHkModel = new UserAddRequest();
+ if(StringUtils.isBlank(c.getHkId())){
+ //濡傛灉鏂板鍚屾鏁告摎
+ if(Constants.equalsInteger(Constants.ONE,c.getIsdeleted())){
+ //鍒犻櫎鐨勭粍缁囷紝涓嶅仛澶勭悊,娴峰悍鐘舵�佹洿鏂颁负涓嶅鐞嗭紝涓嬫涓嶅啀澶勭悊杩欎釜璁板綍
+ c.setHkStatus(Constants.TWO);
+ memberMapper.updateById(c);
+ continue ;
+ }
+ addHkModel = getUserAddModel(c,path);
+ c.setHkId(addHkModel.getPersonId());
+ }else{
+ //鍒犻櫎娴峰悍鍘熸湁鐨勬暟鎹紝鍐嶆柊澧炵粍缁�
+ addHkModel = getUserAddModel(c,path);
+ c.setHkId(addHkModel.getPersonId());
+ }
+ if(addHkModel == null){
+ //濡傛灉浜鸿劯鏁版嵁涓嶆纭紝涓嬭浇澶辫触绛夊師鍥�
+ noticeErpFail(c,Constants.ZERO,"浜鸿劯鐓х墖涓嶅瓨鍦紝鑾峰彇澶辫触锛�");
+ continue;
+ }
+ //澶勭悊鍒犻櫎鏁版嵁锛堝垹闄や箣鍓嶄笅鍙戠殑娴峰悍浜哄憳淇℃伅锛岀劧鍚庢柊澧烇級
+ doHkDeleteUser(c.getId(),c.getHkId(),date);
+ //澶勭悊鏂板鏁版嵁
+ BaseResponse<UserAddResponse> result = HKService.addUser(addHkModel);
+ if(StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE) && result.getData()!=null){
+ c.setFaceId(result.getData().getFaceId());
+ memberMapper.updateById(c);
+ }else{
+ noticeErpFail(c,Constants.ZERO,"浜哄憳淇℃伅鍚屾瀹夐槻骞冲彴澶辫触锛岃淇鍚庨噸璇曪紒"+result.getCode()+result.getMsg());
+ }
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ }finally {
+ Constants.DEALING_HK_USER =false;
+ }
+ }
+
+ /**
+ * 閫氱煡erp绯荤粺锛屼汉鍛樹笅鍙戝悓姝ヤ俊鎭姸鎬佸け璐�
+ * @param c
+ * @param type
+ * @param s
+ */
+ private void noticeErpFail(Member c, int type, String s) {
+ UserFailRequest r = new UserFailRequest();
+ r.setUserId(c.getErpId());
+ r.setInfo(s);
+ r.setType(type);
+ //閫氱煡ERP浜鸿劯鏁版嵁涓嶆纭�
+ erpSyncService.noticeUserFail(r);
+ }
+
+ /**
+ * 瀵规捣搴峰垹闄ょ粍缁囦俊鎭�
+ * @param id
+ * @param date
+ */
+ private void doHkDeleteUser(Integer id,String delHkIds, Date date) {
+ if(StringUtils.isBlank(delHkIds)){
+ return;
+ }
+ UserDelRequest request = new UserDelRequest();
+ request.setPersonIds(new String[]{delHkIds});
+ BaseResponse<List<UserDelResponse>> result = HKService.delBatchUser(request);
+ if(StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE)){
+ List<String> fIds = new ArrayList<>();
+ if(result.getData()!=null && result.getData().size()>0){
+ log.info("娴峰悍鍒犻櫎鐢ㄦ埛澶辫触锛�==============="+result.getData().get(0).getPersonId());
+ /* for(UserDelResponse r : result.getData()){
+ if(!r.getCode().equals("0x00072001")){
+ //涓嶅瓨鍦ㄧ殑涔熺畻鍒犻櫎鎴愬姛
+ fIds.add(r.getPersonId());//鍒犻櫎澶辫触鐨勬暟鎹泦鍚�
+ }
+ }}*/
+ }else{
+ //鏍囪鍒犻櫎鎴愬姛鐨勬暟鎹紙娴峰悍瀵规帴鐘舵�佷负宸插悓姝ワ紝锛屽悓姝ュけ璐ョ殑浠嶄负寰呭悓姝ワ紝绛変笅涓�娆$户缁鐞嗭紝鐭ラ亾鍏ㄩ儴鍒犻櫎瀹屾瘯锛�
+ companyMapper.update(null,new UpdateWrapper<Company>().lambda()
+ .set(Company::getHkStatus,Constants.ONE)
+ .set(Company::getHkDate,date)
+ .in(Company::getId, id));
+ }
+ }
+ }
+
+ private UserAddRequest getUserAddModel(Member c,String path) {
+ UserAddRequest model = new UserAddRequest();
+ model.setOrgIndexCode(c.getCompanyHkId());
+ model.setPersonId(HKConstants.RES_USER_INDEX+UUID.randomUUID().toString().replace("-", ""));
+ model.setGender(Constants.formatIntegerNum(c.getSex())+"");
+ model.setPersonName(c.getName());
+ if(StringUtils.isNotBlank(c.getFaceImg())){
+ model.setFaces(new ArrayList<>());
+ UserAddFaceRequest face = new UserAddFaceRequest();
+ String imageBase = ImageBase64Util.Image2Base64(path+c.getFaceImg());
+ if(face.getFaceData() == null){
+ //浜鸿劯鏁版嵁涓嶆纭紝
+ return null;
+ }
+ model.getFaces().add(face);
+
+ }
+ return model;
}
+
}
diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
index c8884e4..144216f 100644
--- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
@@ -368,7 +368,7 @@
Retention retention = new Retention();
retention.setIsdeleted(Constants.ZERO);
retention.setCreateDate(DateUtil.getISO8601DateByStr(request.getHappenTime()));
- retention.setClasses(visits.getMemberClasses());
+ retention.setClasses(visits.getClasses());
retention.setCode(visits.getCode());
retention.setIdcardNo(visits.getIdcardNo());
retention.setIdcardDecode(visits.getIdcardDecode());
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
new file mode 100644
index 0000000..b9aa525
--- /dev/null
+++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java
@@ -0,0 +1,220 @@
+package com.doumee.service.business.impl.hksync;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.core.erp.model.openapi.request.erp.UserFailRequest;
+import com.doumee.core.haikang.model.HKConstants;
+import com.doumee.core.haikang.model.param.BaseResponse;
+import com.doumee.core.haikang.model.param.request.*;
+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.DateUtil;
+import com.doumee.core.utils.ImageBase64Util;
+import com.doumee.dao.business.CompanyMapper;
+import com.doumee.dao.business.DeviceRoleMapper;
+import com.doumee.dao.business.MemberMapper;
+import com.doumee.dao.business.VisitsMapper;
+import com.doumee.dao.business.join.VisitsJoinMapper;
+import com.doumee.dao.business.model.Company;
+import com.doumee.dao.business.model.DeviceRole;
+import com.doumee.dao.business.model.Member;
+import com.doumee.dao.business.model.Visits;
+import com.doumee.service.business.ERPSyncService;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.UUID;
+
+/**
+ * 娴峰悍璁垮涓氬姟Service瀹炵幇
+ * @author 姹熻箘韫�
+ * @date 2023/11/30 15:33
+ */
+@Service
+@Slf4j
+public class HkSyncVisitServiceImpl extends HkSyncBaseServiceImpl {
+ @Autowired
+ private VisitsJoinMapper visitsMapper;
+ @Autowired
+ private SystemDictDataBiz systemDictDataBiz;
+ @Autowired
+ private DeviceRoleMapper deviceRoleMapper;
+
+ /**
+ * 鍚屾娴峰悍缁勭粐淇℃伅,鏍规嵁erp鍚屾缁勭粐缁撴灉锛屽畾鏃舵鏌ラ渶瑕佷笅鍙戝埌娴峰悍鐨勭粍缁囦俊鎭�
+ */
+ @Override
+ public void syncVisitData(){
+ if(Constants.DEALING_HK_VISIT){
+ return ;
+ }
+ Constants.DEALING_HK_VISIT =true;
+ List<DeviceRole> roleList = deviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda()
+ .eq(DeviceRole::getType, Constants.ONE));
+ //鏍囪鏄惁璧板厤鐧昏棰勭害
+ String applyType =systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.MDJ_VISIT_REQUIRED).getCode();
+ String applyLwType =systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.MDJ_LW_REQUIRED).getCode();
+ try {
+ //鏌ヨ鎵�鏈夐渶瑕佸悓姝ョ殑鏁版嵁
+ List<Visits> alllist = getVisitList();
+ //鎸夌収鐖剁骇鐢宠鍒嗘壒澶勭悊姣忔鐢宠鏁版嵁
+ List<Visits> list = getParentList(alllist);
+ if(list ==null || list.size()==0){
+ return;
+ }
+ Date date = new Date();
+ for(Visits c : list) {
+ //鍙戣捣娴峰悍棰勭害鎺ュ彛锛堥渶瑕佺櫥璁帮級锛屾牴鎹绾﹁繑鍥炴帴鍙e皝瑁呯敵璇疯褰曟洿鏂板瓧娈�
+ String type = Constants.equalsInteger(c.getType(),Constants.ONE)?applyType:applyLwType;
+ getUpdateModelByResponse(c,date,type,roleList);
+ visitsMapper.updateById(c);
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ }finally {
+ Constants.DEALING_HK_VISIT =false;
+ }
+ }
+
+ private List<Visits> getParentList(List<Visits> alllist) {
+ if(alllist ==null || alllist.size()==0){
+ return null;
+ }
+ List<Visits> list = new ArrayList<>();
+
+ for (Visits v : alllist){
+ if(v.getParentId() == null){
+ v.setVisitsList(getChildListByParentId(v.getId(),alllist));
+ list.add(v);
+ }
+ }
+ return list;
+ }
+
+ private List<Visits> getChildListByParentId(Integer id, List<Visits> alllist) {
+
+ List<Visits> list = new ArrayList<>();
+
+ for (Visits v : alllist){
+ if(Constants.equalsInteger(v.getParentId(),id)){
+ list.add(v);
+ }
+ }
+ return list;
+ }
+
+ /**
+ * 鏍规嵁棰勭害杩斿洖鎺ュ彛灏佽鐢宠璁板綍鏇存柊瀛楁
+ * @param c
+ * @param date
+ * @param type 0闇�瑕佺櫥璁� 1鍏嶇櫥璁�
+ */
+ private void getUpdateModelByResponse( Visits c,Date date,String type,List<DeviceRole> roleList ) {
+ String code = null;
+ String id = null;
+ //鍙戣捣娴峰悍棰勭害鎺ュ彛
+ if(StringUtils.equals(type,"0")){
+ //锛堥渶瑕佺櫥璁帮級
+ BaseResponse<VisitAppointmentResponse> response = HKService.visitAppiontment(getHkRequestPara(c,roleList));
+ }else{
+ //鍏嶇櫥璁�
+ BaseResponse<VisitAppointmentMDJResponse> response = HKService.visitAppiontmentMDJ(getHkMDJRequestPara(c) );
+ }
+
+ if (code!= null && id!=null) {
+ //娴峰悍涓嬪彂鎴愬姛
+ c.setHkId( id);//棰勭害鏍囪瘑
+ c.setStatus(Constants.VisitStatus.xfSuccess);//涓嬪彂娴峰悍鎴愬姛
+ } else {
+ //娴峰悍涓嬪彂鎴愬姛
+ 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();
+ request.setVisitStartTime(DateUtil.getISO8601Timestamp(c.getStarttime()));
+ request.setVisitEndTime(DateUtil.getISO8601Timestamp(c.getEndtime()));
+ request.setReceptionistId(c.getReceptMemberHkId());//琚浜烘捣搴风紪鐮�
+ request.setVisitPurpose(c.getReason());
+ request.setVisitorPermissionSet(new VisitAppointmentPermissonRequest());
+ //鑾峰彇鏉冮檺缁勯泦鍚�
+ String[] roles = getHkRoles(c.getDoors(),roleList);
+ if(roles==null || roles.length ==0){
+ //浣跨敤榛樿璁垮鏉冮檺缁�
+ request.getVisitorPermissionSet().setDefaultPrivilegeGroupFlag(Constants.ONE+"");
+ }else{
+ //鎸囧畾鏈夋晥娴峰悍璁垮鏉冮檺缁勬暟鎹�
+ request.getVisitorPermissionSet().setDefaultPrivilegeGroupFlag(Constants.ZERO+"");
+ request.getVisitorPermissionSet().setPrivilegeGroupIds(roles);
+ }
+ List<VisitAppointmentVistorRequest> infolist = new ArrayList<>();
+ //鐢宠浜�
+ infolist.add(getRequestInfoByVisit(c));
+ if(c.getVisitsList() != null){
+ //闅忚浜�
+ for(Visits v : c.getVisitsList()){
+ infolist.add(getRequestInfoByVisit(v));
+ }
+ }
+ request.setVisitorInfoList(infolist);
+ return request;
+ }
+
+ private VisitAppointmentVistorRequest getRequestInfoByVisit(Visits c) {
+ VisitAppointmentVistorRequest info = new VisitAppointmentVistorRequest();
+ info.setVisitorName(c.getName());
+ info.setVisitorWorkUnit(c.getCompanyName());
+ info.setPhoneNo(c.getPhone());
+
+ return info;
+ }
+
+ private String[] getHkRoles(String doors, List<DeviceRole> roleList) {
+ if(StringUtils.isBlank(doors) || roleList.size()==0|| roleList.size()==0){
+ return null;
+ }
+ String[] ids = doors.split(",");
+ List<String> roles = new ArrayList<>();
+ for (String s : ids){
+ for(DeviceRole r : roleList){
+ if(StringUtils.isNotBlank(r.getHkId()) && StringUtils.equals(s,r.getId().toString())){
+ roles.add(r.getHkId());
+ }
+ }
+ }
+ return roles.toArray(new String[]{});
+ }
+
+ /**
+ * 鏌ヨ鎵�鏈夐渶瑕佸悓姝ョ殑鏁版嵁
+ * @return
+ */
+ private List<Visits> getVisitList() {
+ MPJLambdaWrapper<Visits> queryWrapper = new MPJLambdaWrapper<>();
+ queryWrapper.selectAll(Visits.class);
+ queryWrapper.selectAs(Member::getName,Visits::getReceptMemberName)
+ .select("t1.hk_id as receptMemberHkId")
+ .leftJoin(Member.class,Member::getId,Visits::getReceptMemberId);
+ queryWrapper.eq(Visits::getStatus,Constants.VisitStatus.pass)//瀹℃壒閫氳繃
+ .eq(Visits::getHkStatus,Constants.ZERO)//鏈悓姝ュ埌娴峰悍
+ .orderByAsc(Visits::getCreateDate);
+ List<Visits> list = visitsMapper.selectJoinList(Visits.class,queryWrapper);
+ return list;
+ }
+
+}
--
Gitblit v1.9.3