server/admin_timer/src/main/java/com/doumee/task/ScheduleDeviceStatusTool.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,31 @@ package com.doumee.task; import com.doumee.service.business.impl.hksync.HkSyncDeviceServiceImpl; import com.doumee.service.business.impl.hksync.HkSyncEmpowerServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; /** * 宿¶ä»»å¡ * @author jiangping * @date 2021-10-10 14:40:35 * https://www.bejson.com/othertools/cron/ cron 表达å¼çæå°å */ @Component @EnableScheduling public class ScheduleDeviceStatusTool { public static Integer endId = 0; @Autowired private HkSyncDeviceServiceImpl hkSyncDeviceService; /** * 宿¶çå¬è®¾å¤ç¶æ */ @Scheduled(fixedRate= 60*1000*5) public void ascDeviceStatus() { hkSyncDeviceService.getAscDeviceStatus(); } } server/dmvisit_admin/src/main/java/com/doumee/api/business/MemberController.java
@@ -95,6 +95,12 @@ memberService.updateFace(member); return ApiResponse.success(null); } @ApiOperation("éæ°ä¸å人è¸") @PostMapping("/empowerByList") public ApiResponse empowerByList(@RequestBody Member member) { memberService.empowerByList(member); return ApiResponse.success(null); } @ApiOperation("æ ¹æ®IDä¿®æ¹") @PostMapping("/updateById") @RequiresPermissions("business:member:update") server/dmvisit_admin/src/main/java/com/doumee/api/business/StagingController.java
@@ -58,6 +58,7 @@ @ApiOperation("è¶ æ¶é¢è¦äººå离åº") @GetMapping("/level") // @RequiresPermissions("business:visits:level") public ApiResponse level (@RequestParam Integer visitId) { visitsService.visitLevel(visitId); return ApiResponse.success("æä½æå"); server/dmvisit_admin/src/main/java/com/doumee/api/business/VisitsController.java
@@ -71,6 +71,13 @@ visitsService.updateById(visits); return ApiResponse.success(null); } @ApiOperation("åæ¶é¢çº¦") @GetMapping("/visitCancel") @RequiresPermissions("business:visits:cancel") public ApiResponse visitCancel(@RequestParam Integer visitId) { visitsService.visitCancel(visitId); return ApiResponse.success(null); } @ApiOperation("æ ¹æ®æ¥æ(starttime)åæ¥è®¿å®¢æ°æ®") @PostMapping("/syncByDate") server/dmvisit_admin/src/main/java/com/doumee/config/shiro/ShiroConfig.java
@@ -101,6 +101,7 @@ map.put("/common/captcha", "anon"); map.put("/statistics/**", "anon"); map.put("/business/hksync/push/**", "anon"); map.put("/business/member/empowerByList", "anon"); map.put("/dingding/push", "anon"); // map.put("/ext/workorderExt/freshStatistics", "anon"); map.put("/dingding/jsapiTicket", "anon"); server/dmvisit_admin/src/main/java/com/doumee/task/ScheduleTool.java
@@ -7,11 +7,8 @@ import com.doumee.core.utils.Constants; import com.doumee.service.business.InterfaceLogService; import com.doumee.service.business.MemberService; import com.doumee.service.business.impl.hksync.HkSyncEmpowerServiceImpl; import com.doumee.service.business.impl.hksync.HkSyncImgServiceImpl; import com.doumee.service.business.impl.hksync.HkSyncParkServiceImpl; import com.doumee.service.business.impl.hksync.*; import com.doumee.service.business.impl.hksync.ferp.HkSyncOrgUserToHKServiceImpl; import com.doumee.service.business.impl.hksync.HkSyncVisitServiceImpl; import com.doumee.service.business.impl.hksync.fhk.HkSyncVehicleFromHKServiceImpl; import com.doumee.service.business.impl.hksync.fhk.HkSyncVisitFromHKServiceImpl; import org.springframework.beans.factory.annotation.Autowired; server/dmvisit_service/src/main/java/com/doumee/core/erp/model/openapi/request/UserUpdateRequest.java
@@ -44,8 +44,8 @@ @ApiModelProperty(value = "å¡å·éå" ) private List<String> cardList; //2024å¹´1æ9æ¥ æ²éä¸ä»æ¤ä¸å¡è§¦å @ApiModelProperty(value = "ææé¨ç¦ç»ç¼ç éå,ã访客端ãå¯ä¸æ è¯" ,hidden = true ) private Integer[] roleIds; // @ApiModelProperty(value = "ææé¨ç¦ç»ç¼ç éå,ã访客端ãå¯ä¸æ è¯" ,hidden = true ) // private Integer[] roleIds; @ApiModelProperty(value = "æææææï¼å¼å§æ¶é´ï¼ï¼ä¸ºç©ºæ¶é»è®¤é¿æææï¼å¦2023-11-24 11:39:23" ) private Date validStartTime; @ApiModelProperty(value = "æææææï¼æªæ¢æ¶é´ï¼ï¼ä¸ºç©ºæ¶é»è®¤é¿æææï¼å¦2023-11-24 11:39:23" ) server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java
@@ -17,6 +17,9 @@ //æµ·åº·å¹³å°æ ¹æ®ç°åºç¯å¢é ç½®httpè¿æ¯https public static final String RESPONSE_SUCCEE = "0"; public static final String RESPONSE_DOWNLOAD_ERROR= "0x15406001"; public static final String RESPONSE_FACE_ERROR= "0x1540350c";//åè°é误ï¼äººè¸å»ºæ¨¡å¤±è´¥ public static final String RESPONSE_FACE_ERROR2= "0x1540350d";//åè°é误ï¼äººè¸ç¼é´è·å¤ªå° public static String https ; /** * è½å弿¾å¹³å°çç½ç«è·¯å¾ è·¯å¾ä¸ç¨ä¿®æ¹ï¼å°±æ¯/artemis @@ -81,6 +84,7 @@ String vehicleList= "/api/resource/v2/vehicle/advance/vehicleList";//æ¥è¯¢è½¦è¾å表v2 String vehicleTimeRangeList= "/api/resource/v1/vehicle/timeRange";//å¢éè·åè½¦è¾æ°æ® String facePictureCheck= "/api/frs/v1/face/picture/check";//人è¸è¯å String acsDeviceStatus= "/api/nms/v1/online/acs_device/get";//è·åé¨ç¦è®¾å¤å¨çº¿ç¶æ } /** server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java
@@ -707,4 +707,16 @@ return result; } /** * è·åé¨ç¦è®¾å¤å¨çº¿ç¶æ * @param body * @return */ public static String acsDeviceStatus(String body) { Map<String, String> path = getPath(HKConstants.InterfacePath.acsDeviceStatus); String result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json", null);// post请æ±application/jsonç±»ååæ° saveInterfaceLog(body,result,path); return result; } } server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/BaseListPageResponse.java
@@ -10,5 +10,6 @@ private int total;// number False æ¥è¯¢æ°æ®è®°å½æ»æ° private int pageSize;// number False æ¯é¡µè®°å½æ»æ° private int pageNo ;// number False å½å页ç private int totalPage;// number False æ»é¡µæ° private List<T> list ;// object[] False æéç»å¯¹è±¡å表 } server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/AcsDeviceStatusListRequest.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,15 @@ package com.doumee.core.haikang.model.param.request; import lombok.Data; @Data public class AcsDeviceStatusListRequest { private String regionId ;// string False åºåid , å页è·ååºåå表æ¥å£å¯ä»¥è·å private String ip;// string False 设å¤ipï¼ç¨æ·å¯ä»¥èªå·±æå¨è¾å ¥ï¼ä¹å¯ä»¥æ ¹æ®æ¥è¯¢é¨ç¦è®¾å¤å表v2æ¥å£å¯ä»¥è·å private String[] indexCodes;//i string[] False é¨ç¦è®¾å¤åè¡¨ï¼æå¤§500ï¼æ¥è¯¢é¨ç¦è®¾å¤å表v2æ¥å£å¯ä»¥è·å private String status ;//istring False ç¶æ1: å¨çº¿0: 离线-1: æªæ£æµ private String includeSubNode;// i string False æ¯å¦å å«ä¸çº§,ï¼è¥regionId为空ï¼åè¯¥åæ°ä¸èµ·ä½ç¨ï¼1: å å« 0: ä¸å å« private Integer pageNo ;//integer True 页ç ,pageNoâ¥1 private Integer pageSize;// integer True åé¡µå¤§å° } server/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/AscDeviceStatusInfoResponse.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,29 @@ package com.doumee.core.haikang.model.param.respose; import lombok.Data; @Data public class AscDeviceStatusInfoResponse { private String vehicleId;//string False dataId private String deviceType;//string False 设å¤åå· private String deviceIndexCode;// string False 设å¤å¯ä¸ç¼ç private String regionIndexCode;// string False åºåç¼ç private String collectTime;//string False ééæ¶é´ private String regionName;// string False åºååå private String indexCode;//string False èµæºå¯ä¸ç¼ç private String cn;//string False 设å¤åç§° /** * å议类åï¼ hiksdk_net: æµ·åº·ç§æåè®® * gb_reg: GB/T28181 * ehome_reg: eHomeåè®® * dhsdk_net: 大åç§æåè®® * onvif_net: ONVIFåè®® * ezviz_net: è¤ç³åè®® * cascade: 级è */ private String treatyType;//string False private String manufacturer;// string False ååï¼hikvision-海康ï¼dahua-大å private String ip;//string False ipå°å private String port;// number False ç«¯å£ private Integer online;// number False å¨çº¿ç¶æï¼0离线ï¼1å¨çº¿ } server/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
@@ -963,6 +963,24 @@ } return null; } /** *è·åé¨ç¦è®¾å¤å¨çº¿ç¶æï¼åé¡µï¼ * @return */ public static BaseResponse<BaseListPageResponse<AscDeviceStatusInfoResponse>> acsDeviceStatus(AcsDeviceStatusListRequest param){ log.info("ãæµ·åº·è·åé¨ç¦è®¾å¤å¨çº¿ç¶æã================å¼å§===="+JSONObject.toJSONString(param)); try { String res = HKTools.acsDeviceStatus(JSONObject.toJSONString(param)); TypeReference typeReference = new TypeReference< BaseResponse<BaseListPageResponse<AscDeviceStatusInfoResponse>> >(){}; BaseResponse<BaseListPageResponse<AscDeviceStatusInfoResponse>> result = JSONObject.parseObject(res, typeReference.getType()); logResult(result,"海康è·åé¨ç¦è®¾å¤å¨çº¿ç¶æ"); return result; }catch (Exception e){ log.error("ãæµ·åº·è·åé¨ç¦è®¾å¤å¨çº¿ç¶æã================失败====ï¼\n"+ e.getMessage()); } return null; } private static void logResult(BaseResponse res,String name) { if(StringUtils.equals(res.getCode(),HKConstants.RESPONSE_SUCCEE)){ log.info("ã"+name+"ã================æå====\n"+res); server/dmvisit_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -84,6 +84,7 @@ public static final String RETRY_CONNECT_NUM ="RETRY_CONNECT_NUM" ; public static boolean DEALING_HK_SYNCPRIVILEGE= false; public static boolean DEALING_HK_SYNCDEVICE = false; public static boolean DEALING_HK_SYNCDEVICE_STATUS = false; public static boolean DEALING_HK_SYNCPARK = false; public static boolean DEALING_HK_IMG = false; public static boolean DEALING_HK_ORG = false; server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Empower.java
@@ -157,9 +157,15 @@ @ApiModelProperty(value = "海康设å¤ode") @TableField(exist = false) private String deviceIndexCode; @ApiModelProperty(value = "海康设å¤å¨çº¿ç¶æ") @TableField(exist = false) private Integer deviceOnline; @ApiModelProperty(value = "äººåæµ·åº·ç¼ç ") @TableField(exist = false) private String memberHkId; @ApiModelProperty(value = "äººåæµ·åº·äººè¸ç¶æ 0æªåæ¥ 1忥æå 2åæ¥å¤±è´¥ 3设å¤å»ºæ¨¡å¤±è´¥") @TableField(exist = false) private Integer memberFaceStatus; @ApiModelProperty(value = "äººåæµ·åº·åæ¥ç¶æ ") @TableField(exist = false) private Integer memberHkStatus; server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Member.java
@@ -10,6 +10,7 @@ import lombok.Data; import com.fasterxml.jackson.annotation.JsonFormat; import java.util.Date; import java.util.List; /** * 人åä¿¡æ¯è¡¨ @@ -65,8 +66,8 @@ @ApiModelProperty(value = "人è¸ç¼ç ï¼æµ·åº·ï¼") @ExcelColumn(name="人è¸ç¼ç ï¼æµ·åº·ï¼") private String faceId; @ApiModelProperty(value = "人è¸åæ¥ç¶æï¼æµ·åº·ï¼ 0æªåæ¥ 1已忥 2åæ¥å¤±è´¥") @ExcelColumn(name="人è¸åæ¥ç¶æï¼æµ·åº·ï¼ 0æªåæ¥ 1已忥 2åæ¥å¤±è´¥") @ApiModelProperty(value = "人è¸åæ¥ç¶æï¼æµ·åº·ï¼ 0æªåæ¥ 1已忥 2åæ¥å¤±è´¥ 3ä¸åæ ¼") @ExcelColumn(name="人è¸åæ¥ç¶æï¼æµ·åº·ï¼ 0æªåæ¥ 1已忥 2åæ¥å¤±è´¥ 3ä¸åæ ¼") private Integer faceStatus; @ApiModelProperty(value = "人è¸åæ¥ä¿¡æ¯ï¼æµ·åº·ï¼") @ExcelColumn(name="人è¸åæ¥ä¿¡æ¯ï¼æµ·åº·ï¼") @@ -245,6 +246,9 @@ @ApiModelProperty(value = "é¨ç¦æææå¼å§") @ExcelColumn(name="é¨ç¦æææå¼å§",index= 5,dateFormat = "yyyy-MM-dd") private Date startTime; @ApiModelProperty(value = "ç¼ç éå") @TableField(exist = false) private List<Integer> idList; @ApiModelProperty(value = "é¨ç¦æææç»æ", example = "1") @ExcelColumn(name="é¨ç¦æææç»æ",index= 6,dateFormat = "yyyy-MM-dd") server/dmvisit_service/src/main/java/com/doumee/service/business/MemberService.java
@@ -203,4 +203,6 @@ StagingDataVO stagingHead(StagingDataVO stagingHeadVO); StagingDataVO stagingBody(StagingDataVO stagingHeadVO); void empowerByList(Member member); } server/dmvisit_service/src/main/java/com/doumee/service/business/VisitsService.java
@@ -129,4 +129,5 @@ void auditApprove(AuditApproveDTO auditApproveDTO); void visitLevel(Integer visitId); void visitCancel(Integer visitId); } server/dmvisit_service/src/main/java/com/doumee/service/business/ext/HkSyncService.java
@@ -78,4 +78,5 @@ Integer syncEmpowerResultData(Integer endId); Integer syncEmpowerDetailData(Integer endId); void syncParkRecords(Date date); void getAscDeviceStatus(); } server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -192,6 +192,19 @@ // List<MemberCard> cards = HkSyncOrgUserToHKServiceImpl.getNormalCardList(member,memberCardMapper); HkSyncOrgUserToHKServiceImpl.dealMemberRoleEmpowerDo(null,member,deviceRoleMapper,empowerMapper,deviceMapper); } @Override public void empowerByList(Member member) { if(member.getIdList()!=null && member.getIdList().size() >0){ List<Member> members = memberMapper.selectList(new QueryWrapper<Member>().lambda() .in(Member::getId,member.getIdList()) .eq(Member::getIsdeleted,Constants.ZERO)); if(members!=null){ for(Member m : members){ HkSyncOrgUserToHKServiceImpl.dealMemberRoleEmpowerDo(null,m,deviceRoleMapper,empowerMapper,deviceMapper); } } } } @Override server/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
@@ -1269,5 +1269,25 @@ .eq(Retention::getType,Constants.memberType.visitor) .eq(Retention::getMemberId,visits.getMemberId())); } @Override public void visitCancel(Integer visitId){ Visits visits = visitsMapper.selectById(visitId); if(Objects.isNull(visits)){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } if(!visits.getStatus().equals(Constants.VisitStatus.xfSuccess)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"访客记å½ç¶æé误ï¼è¯·å·æ°éè¯"); } VisitAppointmentOutRequest request = new VisitAppointmentOutRequest(); request.setOrderId(visits.getHkId()); //è°ç¨æµ·åº·å¼ºå¶ç¾ç¦» BaseResponse response = HKService.outVisitAppiontment(request); visitsMapper.update(null,new UpdateWrapper<Visits>().lambda().set(Visits::getStatus,Constants.VisitStatus.signout) .eq(Visits::getId,visitId)); //产åºå¨åºäººåä¿¡æ¯ retentionMapper.delete(new UpdateWrapper<Retention>().lambda() .eq(Retention::getType,Constants.memberType.visitor) .eq(Retention::getMemberId,visits.getMemberId())); } } server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java
@@ -847,7 +847,7 @@ String encryptIdNo = DESUtil.encrypt(Constants.EDS_PWD,param.getIdNo()); member.setIdcardNo(encryptIdNo); member.setStartTime(param.getValidStartTime()); member.setRoleId(param.getRoleIds()!=null?JSONObject.toJSONString(param.getRoleIds()):null); // member.setRoleId(param.getRoleIds()!=null?JSONObject.toJSONString(param.getRoleIds()):null); member.setEndTime(param.getValidEndTime()); member.setIdcardDecode(Constants.getTuominStr(param.getIdNo())); member.setErpOrgId(param.getOrgId()); @@ -977,6 +977,7 @@ @Override @Transactional public void roleUserAuthor(UserAuthorRequest param){ if(Objects.isNull(param) ||StringUtils.isBlank(param.getUserId())){ server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java
@@ -192,4 +192,7 @@ } } @Override public void getAscDeviceStatus() { } } server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncDeviceServiceImpl.java
@@ -2,11 +2,14 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; 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.param.BaseListPageResponse; import com.doumee.core.haikang.model.param.BaseResponse; import com.doumee.core.haikang.model.param.request.AcsDeviceListRequest; import com.doumee.core.haikang.model.param.request.AcsDeviceStatusListRequest; import com.doumee.core.haikang.model.param.request.DoorsListRequest; import com.doumee.core.haikang.model.param.request.ParkListRequest; import com.doumee.core.haikang.model.param.respose.*; @@ -83,6 +86,37 @@ Constants.DEALING_HK_SYNCDEVICE =false; } } @Override // @Async public void getAscDeviceStatus(){ if(Constants.DEALING_HK_SYNCDEVICE_STATUS){ return; } Constants.DEALING_HK_SYNCDEVICE_STATUS =true; try { List<Device> editList = new ArrayList<>(); Date date = new Date(); //æ¥è¯¢å ¨é¨é¨ç¦è®¾å¤æ°æ® List<AscDeviceStatusInfoResponse> allHkList = getAllDeviceStatusList(); if(allHkList.size()>0){ //é»è¾å é¤ for(AscDeviceStatusInfoResponse d : allHkList){ deviceMapper.update(null,new UpdateWrapper<Device>().lambda() .set(Device::getOnline,d.getOnline()) .set(Device::getIp,d.getIp()) .set(Device::getPort,d.getPort()) .set(Device::getManufature,d.getManufacturer()) .set(Device::getEditDate,date) .eq(Device::getHkId,d.getIndexCode())); } } }catch (Exception e){ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "åæ¥è®¾å¤ç¶æå¤±è´¥ï¼"); }finally { Constants.DEALING_HK_SYNCDEVICE_STATUS =false; } } private List<AcsDeviceInfoResponse> getAllDeViceList() { AcsDeviceListRequest param = new AcsDeviceListRequest(); @@ -143,6 +177,35 @@ } return allDoorList; } public List<AscDeviceStatusInfoResponse> getAllDeviceStatusList(){ List<AscDeviceStatusInfoResponse> allDoorList = new ArrayList<>(); Date date = new Date(); boolean hasNext = true; int curTotal = 0; int curPage = 1; while (hasNext){ //å页éåå¾ªç¯æ¥è¯¢ææé¨ç¦è®¾å¤æ°æ® AcsDeviceStatusListRequest param = new AcsDeviceStatusListRequest(); param.setPageNo(curPage); param.setPageSize(100); BaseResponse<BaseListPageResponse<AscDeviceStatusInfoResponse>> response = HKService.acsDeviceStatus(param); if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对ä¸èµ·ï¼æµ·åº·åæ¥æ°æ®å¤±è´¥~"); } BaseListPageResponse r = response.getData(); curTotal += 100; if(curTotal >= r.getTotal()){ hasNext = false; } if(r.getList() == null || r.getList().size()==0){ hasNext =false; }else{ allDoorList.addAll(r.getList()); } curPage++; } return allDoorList; } private void getDataChangeList(List<Device> allList, List<DoorsInfoResponse> hkDoorList , List<AcsDeviceInfoResponse> allHkList, List<Device> addList, List<Device> editList,List<Device> deleteList, Date date) { if(hkDoorList!=null && hkDoorList.size()>0){ server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncEmpowerServiceImpl.java
@@ -6,6 +6,7 @@ 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; import com.doumee.core.haikang.model.param.BaseResponse; import com.doumee.core.haikang.model.param.request.*; import com.doumee.core.haikang.model.param.respose.*; @@ -80,81 +81,96 @@ //æ¥è¯¢ä¸åç¶æ BaseResponse<TaskPersonDetailListResponse> response = HKService.taskPersoDetail(param); if(response!=null && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE) && response.getData()!=null ){ if (response.getData().getList() != null && response.getData().getList().size() > 0) { && 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 != null && StringUtils.equals(model.getPersondownloadResult(), "0")) { //æ´æ°å·²å®æä¸è½½ä»»å¡ String remark = ""; String cardInfo = "å¡çä¸å失败"; TaskPersonDetailCardFaceResponse d = model.getPersonDownloadDetail(); if (d.getCards() != null && d.getCards().size() > 0) { cardInfo = "å¡çï¼ã"; for (TaskPersonDetailCardInfoResponse card : d.getCards()) { if (model.getPersonDownloadDetail()!=null ) { boolean isface = false;//æ¯å¦äººè¸ä¸åæå boolean iscard = false;//æ¯å¦æå¡çä¸åæå //æ´æ°å·²å®æä¸è½½ä»»å¡ String remark = ""; String cardInfo = "å¡çä¸å失败"; TaskPersonDetailCardFaceResponse d = model.getPersonDownloadDetail(); 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() + " "; iscard=true; } cardInfo += "ãä¸åæå"; } if (d.getFaces() == null || d.getFaces().size() == 0) { remark = cardInfo + "ï¼ ä¸æ¯æäººè¸è®¾å¤ï¼"; } else { remark = "" + cardInfo + "ï¼äººè¸ä¸åæåï¼"; if(iscard){ cardInfo = "å¡çã"+cardInfo+"ãä¸åæå"; } empowerMapper.update(null, new UpdateWrapper<Empower>() .lambda() .eq(Empower::getId, c.getId()) .set(Empower::getRemark, remark) .set(Empower::getSendInfo, remark) .set(Empower::getSendStatus, Constants.EmpowerStatus.pass)); if(Constants.equalsInteger(c.getMemberDeleted(), Constants.ONE)&& Constants.equalsInteger(c.getIsdeleted(), Constants.ONE) ){ //妿æ¯å 餿éæåï¼æ£æ¥æ¯å¦å é¤äººå checkDelMemberTask(c.getMemberId(),c.getMemberHkId()); } } if (d.getFaces() == null || d.getFaces().size() == 0) { remark = cardInfo + "ï¼ æ 人è¸ä¸åï¼"; } else { empowerMapper.update(null, new UpdateWrapper<Empower>() .lambda() .eq(Empower::getId, c.getId()) .set(Empower::getRemark, "ä¸å失败") .set(Empower::getSendInfo, "ä¸å失败") .set(Empower::getSendStatus, Constants.EmpowerStatus.fail)); if(d.getFaces().get(0).getErrorCode() !=null && d.getFaces().get(0).getErrorCode().equals(HKConstants.RESPONSE_SUCCEE)){ isface=true; remark = "" + cardInfo + "ï¼äººè¸ä¸åæåï¼"; }else{ isface=false; if(d.getFaces().get(0).getErrorCode()!=null && (d.getFaces().get(0).getErrorCode().equals(HKResponseCode.ReturnCode.RESPONSE_FACE_ERROR.getKey()) || d.getFaces().get(0).getErrorCode().equals(HKResponseCode.ReturnCode.RESPONSE_FACE_ERROR2.getKey()))){ //å¦æäººè¸ä¸åæ ¼ memberMapper.update(null,new UpdateWrapper<Member>().lambda() .eq(Member::getId,c.getMemberId()) .set(Member::getFaceStatus,Constants.THREE) .set(Member::getEditDate,new Date()) ); remark = "" + cardInfo + "ï¼äººè¸å»ºæ¨¡å¤±è´¥ï¼"; }else if(d.getFaces().get(0).getErrorCode()!=null && d.getFaces().get(0).getErrorCode().equals(HKResponseCode.ReturnCode.RESPONSE_DEVICE_NOFAVOR.getKey())){ //å¦æè®¾å¤ä¸æ¯æäººè¸ä¸å isface=true;//æ¤æ åµä¸è¦èè人è¸ä¸åç»æ remark = "" + cardInfo + "ï¼è®¾å¤ä¸æ¯æäººè¸ä¸åï¼"; }else{ remark = "" + cardInfo + "ï¼äººè¸ä¸å失败ï¼"; } } } } else { //妿æ¯å·²å é¤çæ°æ®ï¼ä¸å失败ï¼é²æ¢è®¾å¤ç¦»çº¿ï¼ï¼åå°è¯éæ°ä¸åä»»å¡ if(Constants.equalsInteger(c.getIsdeleted(), Constants.ONE) ){ empowerMapper.update(null, new UpdateWrapper<Empower>() .lambda() .eq(Empower::getId, c.getId()) .set(Empower::getRemark, "å 餿éä¸å失败") .set(Empower::getSendInfo, "å 餿éä¸å失败") .set(Empower::getTryNum,Constants.formatIntegerNum(c.getTryNum())+1) .set(Empower::getSendStatus, Constants.EmpowerStatus.fail)); }else{ empowerMapper.update(null, new UpdateWrapper<Empower>() .lambda() .eq(Empower::getId, c.getId()) .set(Empower::getRemark, "ä¸å失败") .set(Empower::getTryNum,Constants.formatIntegerNum(c.getTryNum())+1) .set(Empower::getSendInfo, "ä¸å失败") .set(Empower::getSendStatus, Constants.EmpowerStatus.fail)); //妿è¿åä¸åæå æè 人è¸ä¸åæåå¹¶ä¸å¡çä¸åæå boolean isSuccess =StringUtils.equals(model.getPersondownloadResult(), "0") || (iscard&&isface); empowerMapper.update(null, new UpdateWrapper<Empower>() .lambda() .eq(Empower::getId, c.getId()) .set(Empower::getRemark, remark) .set(Empower::getEditDate,new Date()) .set(Empower::getSendInfo, 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) ){ //妿æ¯å 餿éæåï¼æ£æ¥æ¯å¦å é¤äººå checkDelMemberTask(c.getMemberId(),c.getMemberHkId()); } continue; } }else if(response!=null && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_DOWNLOAD_ERROR) ){ } //ææå¼å¸¸æ åµé½æ 记为ä¸å失败 //妿æ¯å·²å é¤çæ°æ®ï¼ä¸å失败ï¼é²æ¢è®¾å¤ç¦»çº¿ï¼ï¼åå°è¯éæ°ä¸åä»»å¡ if(Constants.equalsInteger(c.getIsdeleted(), Constants.ONE) ){ empowerMapper.update(null, new UpdateWrapper<Empower>() .lambda() .eq(Empower::getId, c.getId()) .set(Empower::getRemark, "å 餿éä¸å失败") .set(Empower::getSendInfo, "å 餿éä¸å失败") .set(Empower::getTryNum,Constants.formatIntegerNum(c.getTryNum())+1) .set(Empower::getSendStatus, Constants.EmpowerStatus.fail)); }else{ empowerMapper.update(null, new UpdateWrapper<Empower>() .lambda() .eq(Empower::getId, c.getId()) .set(Empower::getEditDate,new Date()) .set(Empower::getRemark, "ä¸å失败") // .set(Empower::getFailFlag, Constants.ONE)//æ ééåï¼ä¸è½½ä»»å¡ä¸åå¨ï¼ .set(Empower::getTryNum,Constants.formatIntegerNum(c.getTryNum())+1) .set(Empower::getSendInfo, "ä¸å失败") .set(Empower::getSendStatus, Constants.EmpowerStatus.fail)); } } }catch (Exception e){ }finally { // Constants.DEALING_HK_EMPOWER_DETAIL=false; e.printStackTrace(); } } }); @@ -301,6 +317,7 @@ .lambda() .eq(Empower::getHkId,c.getHkId() ) .set(Empower::getSendInfo,"ä»»å¡å·²ä¸è½½å®æ" ) .set(Empower::getRemark,"ä»»å¡å·²ä¸è½½å®æ" ) .set(Empower::getSendStatus,Constants.EmpowerStatus.downloaded) ); } @@ -332,9 +349,6 @@ List<Integer> noIds = new ArrayList<>(); for(Empower empower:allList){ //妿æ¯å é¤çæéä¸åï¼æ¥è¯¢æ¯å¦ä¼ºåæä¸åæåçæ°æ®ï¼å¦ææï¼åä¸å¤ç if(empower.getId().equals(392479)){ System.out.println("============================"); } // int flag= empowerMapper.selectCount(new QueryWrapper<Empower>().lambda() // .eq(Empower::getMemberId,empower.getMemberId()) // .eq(Empower::getDeviceId,empower.getDeviceId() ) @@ -382,25 +396,10 @@ List<Empower> allList =getAllWaitDealList( endId); if(allList !=null && allList.size()>0){ //æ¥è¯¢ææéè¦åæ¥çæ°æ®,éæ°ä¸åææ°äººåæéå³å¯ // dealNewListTask(getDealList(Constants.ZERO,endId)); List<Empower> dellist = new ArrayList<>(); List<Empower> addlist = new ArrayList<>(); for(Empower e : allList){ if(Constants.equalsInteger(e.getIsdeleted(),Constants.ONE)){ dellist.add(e); }else { addlist.add(e); } } Thread t1=new Thread(new Runnable() { @Override public void run() { if(dellist!=null &&dellist.size()>0) { dealDelListTask(dellist); } if(addlist!=null &&addlist.size()>0) { dealNewListTask(addlist); } dealAllListTask(allList); } }); t1.start(); @@ -475,8 +474,8 @@ .set(Empower::getEditDate,date) .in(Empower::getId,successList)); } empowerMapper.update(null,new UpdateWrapper<Empower>() if(errorList.size()>0){ empowerMapper.update(null,new UpdateWrapper<Empower>() .lambda() .set(Empower::getSendStatus,Constants.EmpowerStatus.fail) .set(Empower::getSendDate,date) @@ -486,6 +485,8 @@ .set(Empower::getRemark, "æ·»å ä¸å任塿°æ®åªé¤ææå¤±è´¥") .set(Empower::getEditDate,date) .in(Empower::getId,errorList)); } } public class TaskRuner implements Runnable{ private List<Empower> list ; @@ -501,6 +502,99 @@ public void setList(List<Empower> list) { this.list = list; } } private void dealAllListTask(List<Empower> list) { //æç §ç¶çº§ç³è¯·åæ¹å¤çæ¯æ¬¡ç³è¯·æ°æ® if(list ==null || list.size()==0){ return; } // clearAllEmpowerFirst(list); Date date = new Date(); //åå»ºä»»å¡ String taskId = hkTaskAddtion(); List<Empower> successList = new ArrayList<>(); List<Empower> errorList = new ArrayList<>(); List<Empower> waitList = new ArrayList<>(); List<Empower> faceErrorList = new ArrayList<>(); for(Empower c : list) { //å任塿·»å 人åã设å¤ä¿¡æ¯æ°æ® if(c.getDeviceOnline() !=null && Constants.equalsInteger(c.getDeviceOnline(),0)){ waitList.add(c); continue; } if( Constants.equalsInteger(c.getMemberFaceStatus(),Constants.THREE)){ faceErrorList.add(c); continue; } HKConstants.OPERA_TYPE flag = HKConstants.OPERA_TYPE.ADD; if(Constants.equalsObject(c.getIsdeleted(),Constants.ONE)){ flag = HKConstants.OPERA_TYPE.DEL; } if(addTaskData(c,taskId,flag.getKey())){ successList.add(c); }else{ errorList.add(c); } } if(successList.size()>0){ //å¼å§æ§è¡ä¸å boolean status = startTask(taskId); for(Empower model : successList){ Empower update = new Empower(); update.setId(model.getId()); update.setSendDate(date); update.setEditDate(date); update.setHkId(taskId); update.setRemark(status?"ä¸å任塿å":"ä¸åä»»å¡å¤±è´¥"); update.setSendInfo(status?"ä¸å任塿å":"ä¸åä»»å¡å¤±è´¥"); //ä¸åä¸ update.setSendStatus(status?Constants.EmpowerStatus.ing:Constants.EmpowerStatus.fail); empowerMapper.updateById(update); } } if(errorList.size()>0){ for(Empower model : errorList){ Empower update = new Empower(); update.setId(model.getId()); update.setSendDate(date); update.setEditDate(date); update.setHkId(taskId); update.setSendStatus(Constants.EmpowerStatus.fail); update.setRemark( "æ·»å ä¸å任塿°æ®å¤±è´¥"); update.setSendInfo( "æ·»å ä¸å任塿°æ®å¤±è´¥"); empowerMapper.updateById(update); } } if(waitList.size()>0){ for(Empower model : waitList){ Empower update = new Empower(); update.setId(model.getId()); update.setSendDate(date); update.setEditDate(date); update.setHkId(taskId); update.setSendStatus(Constants.EmpowerStatus.fail); update.setRemark( "设å¤ç¶æå¼å¸¸ï¼çå¾ éæ°ä¸å"); update.setSendInfo( "设å¤ç¶æå¼å¸¸ï¼çå¾ éæ°ä¸å"); empowerMapper.updateById(update); } } if(faceErrorList.size()>0){ for(Empower model : faceErrorList){ Empower update = new Empower(); update.setId(model.getId()); update.setSendDate(date); update.setEditDate(date); update.setHkId(taskId); update.setSendStatus(Constants.EmpowerStatus.fail); update.setRemark( "人è¸å»ºæ¨¡å¤±è´¥ï¼çå¾ æ´æ¢äººè¸åéæ°ä¸å"); update.setSendInfo( "人è¸å»ºæ¨¡å¤±è´¥ï¼çå¾ æ´æ¢äººè¸åéæ°ä¸å"); empowerMapper.updateById(update); } } } private void dealNewListTask(List<Empower> list) { //æç §ç¶çº§ç³è¯·åæ¹å¤çæ¯æ¬¡ç³è¯·æ°æ® @@ -538,17 +632,20 @@ } } for(Empower model : errorList){ Empower update = new Empower(); update.setId(model.getId()); update.setSendDate(date); update.setEditDate(date); update.setHkId(taskId); update.setSendStatus(Constants.EmpowerStatus.fail); update.setRemark( "æ·»å ä¸å任塿°æ®å¤±è´¥"); update.setSendInfo( "æ·»å ä¸å任塿°æ®å¤±è´¥"); empowerMapper.updateById(update); if(errorList.size()>0){ for(Empower model : errorList){ Empower update = new Empower(); update.setId(model.getId()); update.setSendDate(date); update.setEditDate(date); update.setHkId(taskId); update.setSendStatus(Constants.EmpowerStatus.fail); update.setRemark( "æ·»å ä¸å任塿°æ®å¤±è´¥"); update.setSendInfo( "æ·»å ä¸å任塿°æ®å¤±è´¥"); empowerMapper.updateById(update); } } } @@ -639,6 +736,8 @@ queryWrapper.selectAll(Empower.class); queryWrapper.selectAs(Device::getChannelNo,Empower::getDeviceChannelNo); queryWrapper.selectAs(Member::getHkId,Empower::getMemberHkId); queryWrapper.selectAs(Member::getFaceStatus,Empower::getMemberFaceStatus); queryWrapper.selectAs(Device::getOnline,Empower::getDeviceOnline); queryWrapper.selectAs(Device::getHkId,Empower::getDeviceIndexCode); queryWrapper.selectAs(Device::getResourceType,Empower::getDeviceType); queryWrapper.leftJoin(Device.class,Device::getId,Empower::getDeviceId); @@ -656,6 +755,10 @@ MPJLambdaWrapper<Empower> queryWrapper = new MPJLambdaWrapper<>(); queryWrapper.select(Empower::getId,Empower::getMemberId,Empower::getDeviceId,Empower::getIsdeleted); queryWrapper.select(" (select count(1) from empower ee where ee.member_id=t.MEMBER_ID and ee.device_id =t.DEVICE_ID and ee.id>t.id) as tempCouunt"); queryWrapper.leftJoin(Member.class,Member::getId,Empower::getMemberId); queryWrapper.leftJoin(Device.class,Device::getId,Empower::getDeviceId); queryWrapper.ne(Member::getFaceStatus,Constants.THREE);//人è¸å»ºæ¨¡æ²¡æå¤±è´¥è¿ç queryWrapper.ne(Device::getOnline,Constants.ZERO+"");//é离线 queryWrapper.eq(Empower::getSendStatus,Constants.EmpowerStatus.fail); queryWrapper.gt(Empower::getId,endId); queryWrapper.orderByAsc(Empower::getId ); server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncVisitServiceImpl.java
@@ -72,14 +72,15 @@ //å起海康é¢çº¦æ¥å£ï¼éè¦ç»è®°ï¼ï¼æ ¹æ®é¢çº¦è¿åæ¥å£å°è£ ç³è¯·è®°å½æ´æ°å段 AppointmentInfoResponse model = getVisitRecord(c.getHkId()); if(model == null){ Visits update = new Visits(); continue; /* Visits update = new Visits(); //已失æ update.setStatus(Constants.VisitStatus.invalid); update.setEditDate(date); update.setId(c.getId()); update.setRemark("é¢çº¦å·²è¢«æ¸ é¤"); visitsMapper.updateById(update); continue; continue;*/ } /** * * 0ï¼å¾ å®¡æ ¸ï¼é¢çº¦å¾ 审æ¹ï¼ã server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/ferp/HkSyncOrgUserToHKServiceImpl.java
@@ -305,14 +305,15 @@ String doorids =deviceRole.getDoorIds(); if(StringUtils.isNotBlank(doorids)){ String[] ss = doorids.split(","); try { for(String s :ss){ for(String s :ss){ try { Integer ts =Integer.parseInt(s); r.add(ts); }catch (Exception e){ //èæ°æ®ä¸å¤ç } }catch (Exception e){ //èæ°æ®ä¸å¤ç } } } return r; @@ -382,10 +383,10 @@ return; } List<Integer> deviceIds =new ArrayList<>();//æ°è®¾å¤ç¼ç éå List<Empower> list = new ArrayList<>();//æ°ææè®°å½éå if(Constants.equalsInteger(member.getIsdeleted(),Constants.ZERO) && Constants.equalsObject(member.getHkStatus(),Constants.ONE)){ if(Constants.equalsInteger(member.getIsdeleted(),Constants.ZERO)){ // && Constants.equalsObject(member.getHkStatus(),Constants.ONE)){ List<Integer> deviceIds =new ArrayList<>();//æ°è®¾å¤ç¼ç éå List<Empower> list = new ArrayList<>();//æ°ææè®°å½éå //å¦æç¨æ·æ¯åæ¥æµ·åº·æåï¼æ·»å 带ä¸åæéï¼åªç®¡çæ°å¢æè ç¼è¾çï¼ List<Device> deviceList = deviceMapper.selectList(new QueryWrapper<Device>().lambda().in(Device::getId,doorIds)); if(deviceList == null || deviceList.size() == 0){ @@ -409,22 +410,22 @@ deviceIds.add(deviceRole.getId()); list.add(model); } } //å¾ ç§»é¤æéçè®¾å¤æ°æ®ææè®°å½ï¼é对å é¤åæ´æ°ä¸¢å¤±çæéï¼éè¦åæ¥ä¸åå 餿éï¼ empowerMapper.update(null,new UpdateWrapper<Empower>().lambda() .eq(Empower::getMemberId,member.getId()) .set(Empower::getIsdeleted,Constants.ONE) .eq(Empower::getIsdeleted,Constants.ZERO) .notIn(deviceIds.size()>0,Empower::getDeviceId,deviceIds) .set(Empower::getSendStatus,Constants.ZERO)); //å¯¼å ¥æ°å¢çææä¿¡æ¯ if(list.size()>0){ //ç´æ¥è¦çéå¤çè®¾å¤æéï¼ç´æ¥å é¤å³å¯ empowerMapper.delete(new UpdateWrapper<Empower>().lambda() //å¾ ç§»é¤æéçè®¾å¤æ°æ®ææè®°å½ï¼é对å é¤åæ´æ°ä¸¢å¤±çæéï¼éè¦åæ¥ä¸åå 餿éï¼ empowerMapper.update(null,new UpdateWrapper<Empower>().lambda() .eq(Empower::getMemberId,member.getId()) .set(Empower::getIsdeleted,Constants.ONE) .eq(Empower::getIsdeleted,Constants.ZERO) .in(Empower::getDeviceId,deviceIds) ); empowerMapper.insertBatchSomeColumn(list); .notIn(deviceIds.size()>0,Empower::getDeviceId,deviceIds) .set(Empower::getSendStatus,Constants.ZERO)); //å¯¼å ¥æ°å¢çææä¿¡æ¯ if(list.size()>0){ //ç´æ¥è¦çéå¤çè®¾å¤æéï¼ç´æ¥å é¤å³å¯ empowerMapper.delete(new UpdateWrapper<Empower>().lambda() .eq(Empower::getMemberId,member.getId()) .eq(Empower::getIsdeleted,Constants.ZERO) .in(Empower::getDeviceId,deviceIds) ); empowerMapper.insertBatchSomeColumn(list); } } } public static void dealChangeDeviceRoleEmpower( Member member ,List<Integer> addDoorIds,List<Integer> delDoorIds, DeviceRoleMapper deviceRoleMapper, EmpowerMapper empowerMapper, DeviceMapper deviceMapper) { @@ -606,7 +607,7 @@ c.setFaceStatus(Constants.ONE); //å¦æäººè¸è·ä½ ï¼éæ°ä¸åæéæ°æ® c.setRemark("人åå人è¸ä¿¡æ¯åæ¥æå"+result.getMsg()); dealMemberRoleEmpower(c); dealMemberRoleEmpower(c); } } }else{