From d9c657aa78cf0ebe31933a87e63ca92edd8a8da3 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期四, 11 六月 2026 09:57:50 +0800
Subject: [PATCH] 数据采集站
---
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEmpowerServiceImpl.java | 158 ++++++++++++++++++++++++++++++----------------------
1 files changed, 91 insertions(+), 67 deletions(-)
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEmpowerServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEmpowerServiceImpl.java
index 8223921..c797984 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEmpowerServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEmpowerServiceImpl.java
@@ -4,7 +4,6 @@
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.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.haikang.model.HKConstants;
import com.doumee.core.haikang.model.HKResponseCode;
@@ -17,21 +16,22 @@
import com.doumee.core.utils.DateUtil;
import com.doumee.dao.business.DeviceMapper;
import com.doumee.dao.business.MemberCardMapper;
-import com.doumee.dao.business.MemberMapper;
+import com.doumee.dao.business.dao.MemberMapper;
import com.doumee.dao.business.join.EmpowerJoinMapper;
-import com.doumee.dao.business.join.VisitsJoinMapper;
import com.doumee.dao.business.model.*;
+import com.doumee.dao.business.model.Member;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Async;
+import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
+import java.util.concurrent.Executor;
/**
* 娴峰悍闂ㄧ鎺堟潈涓氬姟Service瀹炵幇
@@ -52,11 +52,17 @@
@Autowired
private MemberCardMapper memberCardMapper;
+ @Autowired
+ @Qualifier("asyncExecutor")
+ private Executor asyncExecutor;
+
/**
* 瀹氭椂鏌ヨ鏉冮檺涓嬪彂浠诲姟杩涘害鎵ц缁撴灉
*/
@Override
public Integer syncEmpowerDetailData(Integer endId){
+ long startTime = System.currentTimeMillis();
+ log.info("syncEmpowerDetailData鎵ц寮�濮�, endId={}", endId);
// if(Constants.DEALING_HK_EMPOWER_DETAIL){
// return ;
// }
@@ -64,14 +70,19 @@
//鏌ヨ鎵�鏈夊畬鎴愪笅杞斤紝寰呮煡璇㈢粨鏋滅殑鏁版嵁璁板綍
List<Empower> list = getDealListDetail(endId);
if(list == null || list.size() ==0){
+ log.info("syncEmpowerDetailData鏃犲緟澶勭悊鏁版嵁, 鑰楁椂{}ms", System.currentTimeMillis() - startTime);
return null;
}
- Thread t1=new Thread(new Runnable() {
- @Override
- public void run() {
- try {
- for(Empower c : list){
- TaskPersonDetailRequest param = new TaskPersonDetailRequest();
+ asyncExecutor.execute(() -> {
+ try {
+ for(Empower c : list){
+ AuthResultPageRequest param = new AuthResultPageRequest();
+ param.setPageNo(1);
+ param.setPageSize(999);
+ param.setBusinessNo(c.getHkId());
+ BaseResponse<AuthResultPageResponse> response =HKService.authResultPage(param);
+
+ /* TaskPersonDetailRequest param = new TaskPersonDetailRequest();
param.setPageNo(1);
param.setPageSize(10);
param.setPersonIds(new String[]{c.getMemberHkId()});
@@ -81,22 +92,24 @@
rec.setResourceType(c.getDeviceType());
param.setResourceInfo(rec);
//鏌ヨ涓嬪彂鐘舵��
- BaseResponse<TaskPersonDetailListResponse> response = HKService.taskPersoDetail(param);
+ BaseResponse<TaskPersonDetailListResponse> response = HKService.taskPersoDetail(param);*/
if(response!=null
- && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE)
+ && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)
&& response.getData()!=null
&& response.getData().getList() != null
&& response.getData().getList().size() > 0
&&response.getData().getList().get(0) !=null){
- TaskPersonDetailResponse model = response.getData().getList().get(0);
- if (model.getPersonDownloadDetail()!=null ) {
+// TaskPersonDetailResponse model = response.getData().getList().get(0);
+
+ AuthResultPageDetailResponse model = getAuthDetailByUserAndDevice(c,response.getData().getList());
+// if (model.getPersonDownloadDetail()!=null ) {
+ if (model!=null ) {
boolean isface = false;//鏄惁浜鸿劯涓嬪彂鎴愬姛
boolean iscard = false;//鏄惁鏈夊崱鐗囦笅鍙戞垚鍔�
//鏇存柊宸插畬鎴愪笅杞戒换鍔�
String remark = "";
String cardInfo ="";
- TaskPersonDetailCardFaceResponse d = model.getPersonDownloadDetail();
- if (d.getCards() != null && d.getCards().size() > 0) {
+ /* if (d.getCards() != null && d.getCards().size() > 0) {
for (TaskPersonDetailCardInfoResponse card : d.getCards()) {
if(StringUtils.equals(card.getErrorCode(),HKResponseCode.ReturnCode.RESPONSE_SUCCEE.getKey())){
cardInfo += card.getId() + " ";
@@ -139,13 +152,31 @@
}
}
//濡傛灉杩斿洖涓嬪彂鎴愬姛 鎴栬�� 浜鸿劯涓嬪彂鎴愬姛骞朵笖鍗$墖涓嬪彂鎴愬姛
- boolean isSuccess =StringUtils.equals(model.getPersondownloadResult(), "0") || (iscard&&isface);
+ boolean isSuccess =StringUtils.equals(model.getPersondownloadResult(), "0") || (iscard&&isface);*/
+
+ if (Constants.equalsInteger(model.getDownCardStatus(),0)) {
+ cardInfo = "鍗$墖涓嬪彂鏈彉鏇�";
+ }else if (Constants.equalsInteger(model.getDownCardStatus(),1)) {
+ cardInfo = "鍗$墖涓嬪彂鎴愬姛";
+ }else {
+ cardInfo = "鍗$墖涓嬪彂澶辫触";
+ }
+
+ if ( Constants.equalsInteger(model.getDownFaceStatus(),0)) {
+ remark = "浜鸿劯涓嬪彂鏈彉鏇达紒";
+ } else if (Constants.equalsInteger(model.getDownFaceStatus(),1)) {
+ remark = "浜鸿劯涓嬪彂鎴愬姛锛�";
+ }else{
+ remark = "浜鸿劯涓嬪彂澶辫触锛�";
+ }
+ //涓嬪彂鎴愬姛鎴栬�呮湭鍙樻洿
+ boolean isSuccess = Constants.equalsInteger(model.getDownPersonStatus(),1)|| Constants.equalsInteger(model.getDownPersonStatus(),0) ;
empowerMapper.update(null, new UpdateWrapper<Empower>()
.lambda()
.eq(Empower::getId, c.getId())
- .set(Empower::getRemark, remark)
+ .set(Empower::getRemark,cardInfo+ remark)
.set(Empower::getEditDate,new Date())
- .set(Empower::getSendInfo, remark)
+ .set(Empower::getSendInfo,cardInfo+remark)
.set(Empower::getSendStatus, isSuccess?Constants.EmpowerStatus.pass:Constants.EmpowerStatus.fail));
if(isSuccess && Constants.equalsInteger(c.getMemberDeleted(), Constants.ONE)&& Constants.equalsInteger(c.getIsdeleted(), Constants.ONE) ){
//濡傛灉鏄垹闄ゆ潈闄愭垚鍔燂紝妫�鏌ユ槸鍚﹀垹闄や汉鍛�
@@ -176,13 +207,21 @@
}
}
}catch (Exception e){
- e.printStackTrace();
+ log.error("syncEmpowerDetailData鎵ц寮傚父", e);
}
- }
});
- t1.start();
+ log.info("syncEmpowerDetailData鎵ц缁撴潫, 鑰楁椂{}ms", System.currentTimeMillis() - startTime);
return list.get(list.size()-1).getId();
+ }
+
+ private AuthResultPageDetailResponse getAuthDetailByUserAndDevice(Empower c, List<AuthResultPageDetailResponse> list) {
+ for(AuthResultPageDetailResponse t : list){
+ if(StringUtils.equals(t.getPersonId(),c.getMemberHkId()) && StringUtils.equals(t.getDeviceIndexCode(),c.getDeviceIndexCode())){
+ return t;
+ }
+ }
+ return null;
}
@@ -200,7 +239,7 @@
request.setPersonIds(new String[]{delHkIds});
BaseResponse<List<UserDelResponse>> result = HKService.delBatchUser(request);
boolean succes = false;
- if(result !=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE)){
+ if(result !=null && StringUtils.equals(result.getCode(), HKConstants.RESPONSE_SUCCEE)){
//鏍囪鍒犻櫎鎴愬姛鐨勬暟鎹紙娴峰悍瀵规帴鐘舵�佷负宸插悓姝ワ紝锛屽悓姝ュけ璐ョ殑浠嶄负寰呭悓姝ワ紝绛変笅涓�娆$户缁鐞嗭紝鐭ラ亾鍏ㄩ儴鍒犻櫎瀹屾瘯锛�
if(result.getData()!=null && result.getData().size()>0){
UserDelResponse tem = result.getData().get(0);
@@ -311,18 +350,15 @@
*/
@Override
public Integer syncEmpowerResultData(Integer endId){
-// if(Constants.DEALING_HK_EMPOWER_RESULT){
-// return null ;
-// }
-// Constants.DEALING_HK_EMPOWER_RESULT=true;
+ long startTime = System.currentTimeMillis();
+ log.info("syncEmpowerResultData鎵ц寮�濮�, endId={}", endId);
//鏌ヨ鎵�鏈夋墽琛屼腑寰楁暟鎹�
List<Empower> list = getIngTaskListResult(Constants.formatIntegerNum(endId));
if(list == null || list.size() ==0){
+ log.info("syncEmpowerResultData鏃犲緟澶勭悊鏁版嵁, 鑰楁椂{}ms", System.currentTimeMillis() - startTime);
return null;
}
- Thread t1=new Thread(new Runnable() {
- @Override
- public void run() {
+ asyncExecutor.execute(() -> {
try {
for(Empower c : list){
TaskProgressRequest param = new TaskProgressRequest();
@@ -355,13 +391,10 @@
}
}
}catch (Exception e1){
- e1.printStackTrace();
- }finally {
- Constants.DEALING_HK_EMPOWER_RESULT =false;
+ log.error("syncEmpowerResultData鎵ц寮傚父", e1);
}
- }
- });
- t1.start();
+ });
+ log.info("syncEmpowerResultData鎵ц缁撴潫, 鑰楁椂{}ms", System.currentTimeMillis() - startTime);
return list.get(list.size()-1).getId();
}
@@ -373,6 +406,8 @@
*/
@Override
public Integer syncEmpowerFailData(Integer endId) {
+ long startTime = System.currentTimeMillis();
+ log.info("syncEmpowerFailData鎵ц寮�濮�, endId={}", endId);
List<Empower> allList =getAllFailDealList( endId);
if(allList!=null && allList.size()>0){
Date date = new Date();
@@ -412,6 +447,7 @@
}
return allList.get(allList.size()-1).getId();
}
+ log.info("syncEmpowerFailData鎵ц缁撴潫, 鑰楁椂{}ms", System.currentTimeMillis() - startTime);
return null;
}
/**
@@ -419,28 +455,28 @@
*/
@Override
public Integer syncEmpowerData(Integer endId) {
-// if(Constants.DEALING_HK_EMPOWER){
-// return null ;
-// }
-// Constants.DEALING_HK_EMPOWER =true;
+ long startTime = System.currentTimeMillis();
+ log.info("syncEmpowerData鎵ц寮�濮�, endId={}", endId);
//鍏堝垹闄ゆ墍鏈夐渶瑕佸彇娑堟巿鏉冪殑鏁版嵁
if(empowerMapper.selectCount(new QueryWrapper<Empower>().lambda()
.eq(Empower::getSendStatus,Constants.EmpowerStatus.ing)) > 1000){
- //濡傛灉褰撳墠浠诲姟澶т簬1000涓紙澶ф10涓换鍔★級
+ log.info("syncEmpowerData浠诲姟闃熷垪宸叉弧(>1000), 璺宠繃, 鑰楁椂{}ms", System.currentTimeMillis() - startTime);
return endId;
}
List<Empower> allList =getAllWaitDealList( endId);
if(allList !=null && allList.size()>0){
//鏌ヨ鎵�鏈夐渶瑕佸悓姝ョ殑鏁版嵁,閲嶆柊涓嬪彂鏈�鏂颁汉鍛樻潈闄愬嵆鍙�
- Thread t1=new Thread(new Runnable() {
- @Override
- public void run() {
+ asyncExecutor.execute(() -> {
+ try {
dealAllListTask(allList);
+ }catch (Exception e){
+ log.error("======================涓嬪彂鎺堟潈寮傚父", e);
}
});
- t1.start();
+ log.info("syncEmpowerData鎻愪氦{}鏉℃暟鎹�, 鑰楁椂{}ms", allList.size(), System.currentTimeMillis() - startTime);
return allList.get(allList.size()-1).getId();
}
+ log.info("syncEmpowerData鏃犲緟澶勭悊鏁版嵁, 鑰楁椂{}ms", System.currentTimeMillis() - startTime);
return null;
}
@Override
@@ -524,21 +560,7 @@
}
}
- public class TaskRuner implements Runnable{
- private List<Empower> list ;
- @Override
- public void run() {
- dealNewListTask(list);
- }
-
- public List<Empower> getList() {
- return list;
- }
-
- public void setList(List<Empower> list) {
- this.list = list;
- }
- }
+ @Transactional(rollbackFor = {BusinessException.class,Exception.class})
private void dealAllListTask(List<Empower> list) {
//鎸夌収鐖剁骇鐢宠鍒嗘壒澶勭悊姣忔鐢宠鏁版嵁
if(list ==null || list.size()==0){
@@ -555,7 +577,8 @@
List<Empower> faceErrorList = new ArrayList<>();
for(Empower c : list) {
//鍚戜换鍔℃坊鍔犱汉鍛樸�佽澶囦俊鎭暟鎹�
- if((Constants.equalsInteger(c.getMemberDeleted(),Constants.ONE) &&
+ if((Constants.equalsInteger(c.getIsdeleted(),Constants.ZERO) &&
+ Constants.equalsInteger(c.getMemberDeleted(),Constants.ONE) &&
Constants.equalsInteger(c.getMemberHkStatus(),Constants.ONE))
|| Constants.equalsInteger(c.getDeviceDeleted(),1)){
//濡傛灉浜哄摗鎴栬�呰ō鍌欏垹闄わ紝鍙栨秷涓嬪彂
@@ -563,7 +586,8 @@
continue;
}
if(Constants.equalsInteger(c.getMemberDeleted(),Constants.ONE)
- && Constants.equalsInteger(c.getIsdeleted(),1)){
+ && Constants.equalsInteger(c.getMemberHkStatus(),Constants.ONE)
+ && Constants.equalsInteger(c.getIsdeleted(),Constants.ZERO)){
//濡傛灉浜哄憳宸茬鑱岋紝鏂板鎺堟潈鏃犻渶涓嬪彂锛屽彇娑堜笅鍙�
cacenList.add(c);
continue;
@@ -577,7 +601,7 @@
continue;
}
HKConstants.OPERA_TYPE flag = HKConstants.OPERA_TYPE.ADD;
- if(Constants.equalsObject(c.getIsdeleted(),Constants.ONE)){
+ if(Constants.equalsInteger(c.getIsdeleted(),Constants.ONE)){
flag = HKConstants.OPERA_TYPE.DEL;
}
if(addTaskData(c,taskId,flag.getKey())){
@@ -664,7 +688,7 @@
if(list ==null || list.size()==0){
return;
}
-// clearAllEmpowerFirst(list);
+// clearAllEmpowerFirst(list);
Date date = new Date();
//鍒涘缓浠诲姟
String taskId = hkTaskAddtion();
@@ -800,8 +824,8 @@
queryWrapper.selectAs(Device::getChannelNo,Empower::getDeviceChannelNo);
queryWrapper.selectAs(Member::getHkId,Empower::getMemberHkId);
queryWrapper.selectAs(Member::getFaceStatus,Empower::getMemberFaceStatus);
- queryWrapper.selectAs(Member::getHkStatus,Empower::getMemberFaceStatus);
- queryWrapper.selectAs(Device::getOnline,Empower::getMemberHkStatus);
+ queryWrapper.selectAs(Member::getHkStatus,Empower::getMemberHkStatus);
+ queryWrapper.selectAs(Device::getOnline,Empower::getDeviceOnline);
queryWrapper.selectAs(Device::getIsdeleted,Empower::getDeviceDeleted);
queryWrapper.selectAs(Member::getIsdeleted,Empower::getMemberDeleted);
queryWrapper.selectAs(Device::getHkId,Empower::getDeviceIndexCode);
--
Gitblit v1.9.3