Commit e0ba2cd8 authored by 赵啸非's avatar 赵啸非

添加人流统计模块

parent 9804dbad
......@@ -10,6 +10,38 @@ const instance = axios.create({
post: {
'Content-Type': 'application/json;charset=UTF-8',
'dataType': 'json',
}
},
transformResponse: [data=>{
......
package com.mortals.xhx.daemon.task;
import cn.hutool.core.date.DateUtil;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.service.ITask;
import com.mortals.framework.service.ITaskExcuteService;
import com.mortals.xhx.module.realtime.model.RealtimeDataflowEntity;
import com.mortals.xhx.module.realtime.model.RealtimeDataflowQuery;
import com.mortals.xhx.module.realtime.model.RealtimeDataflowStatEntity;
import com.mortals.xhx.module.realtime.model.RealtimeDataflowStatQuery;
import com.mortals.xhx.module.realtime.service.RealtimeDataflowService;
import com.mortals.xhx.module.realtime.service.RealtimeDataflowStatService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import java.util.Date;
import java.util.List;
/**
* 人流统计接口
*/
@Slf4j
@Service("RealTimePeopleStatTask")
public class RealTimePeopleStatTaskImpl implements ITaskExcuteService {
@Autowired
private RealtimeDataflowService realtimeDataflowService;
@Autowired
private RealtimeDataflowStatService realtimeDataflowStatService;
@Override
public void excuteTask(ITask task) throws AppException {
statPeople();
}
private void statPeople() {
Date startTime = DateUtil.beginOfHour(new Date());
Date endTime = DateUtil.endOfHour(new Date());
// 格式化时间为指定格式
String startTimeStr = DateUtil.format(startTime, "yyyy-MM-dd HH:00:00");
String endTimeStr = DateUtil.format(endTime, "yyyy-MM-dd HH:59:59");
RealtimeDataflowQuery realtimeDataflowQuery = new RealtimeDataflowQuery();
realtimeDataflowQuery.setCreateTimeStart(startTimeStr);
realtimeDataflowQuery.setCreateTimeEnd(endTimeStr);
List<RealtimeDataflowEntity> realtimeDataflowEntities = realtimeDataflowService.find(realtimeDataflowQuery, null);
if (ObjectUtils.isEmpty(realtimeDataflowEntities)) {
Long strangerCount = realtimeDataflowEntities.parallelStream().filter(f -> ObjectUtils.isEmpty(f.getIdNumber())).count();
int total = realtimeDataflowEntities.size();
Long recognizeCount = total - strangerCount;
Date date = new Date();
int year = DateUtil.year(date);
int month = DateUtil.month(date);
int day = DateUtil.dayOfMonth(date);
int hour = DateUtil.hour(date, true);
RealtimeDataflowStatQuery realtimeDataflowStatQuery = new RealtimeDataflowStatQuery();
realtimeDataflowStatQuery.setYear(year);
realtimeDataflowStatQuery.setMonth(month);
realtimeDataflowStatQuery.setDay(day);
realtimeDataflowStatQuery.setHour(hour);
RealtimeDataflowStatEntity realtimeDataflowStatEntity = realtimeDataflowStatService.selectOne(realtimeDataflowStatQuery);
if (ObjectUtils.isEmpty(realtimeDataflowStatEntity)) {
RealtimeDataflowStatEntity statEntity = new RealtimeDataflowStatEntity();
statEntity.initAttrValue();
statEntity.setPersonSum(total);
statEntity.setStrangerSum(strangerCount.intValue());
statEntity.setRecoginzeSum(recognizeCount.intValue());
statEntity.setYear(year);
statEntity.setMonth(month);
statEntity.setDay(day);
statEntity.setHour(hour);
statEntity.setPersonSum(total);
statEntity.setCreateUserId(1L);
statEntity.setCreateTime(new Date());
realtimeDataflowStatService.save(statEntity);
} else {
realtimeDataflowStatEntity.setPersonSum(total);
realtimeDataflowStatEntity.setStrangerSum(strangerCount.intValue());
realtimeDataflowStatEntity.setRecoginzeSum(recognizeCount.intValue());
realtimeDataflowStatEntity.setUpdateUserId(1L);
realtimeDataflowStatEntity.setUpdateTime(new Date());
realtimeDataflowStatService.update(realtimeDataflowStatEntity);
}
}
}
@Override
public void stopTask(ITask task) throws AppException {
}
public static void main(String[] args) {
// 获取当前时间的小时数
int hour = DateUtil.hour(new Date(), true);
// 获取当前时间所在小时的开始时间和结束时间
Date startTime = DateUtil.beginOfHour(new Date());
Date endTime = DateUtil.endOfHour(new Date());
// 格式化时间为指定格式
String startTimeStr = DateUtil.format(startTime, "yyyy-MM-dd HH:00:00");
String endTimeStr = DateUtil.format(endTime, "yyyy-MM-dd HH:59:59");
// 输出结果
System.out.println("当前时间所在小时的开始时间:" + startTimeStr);
System.out.println("当前时间所在小时的结束时间:" + endTimeStr);
}
}
......@@ -89,9 +89,25 @@ public class SyncAppointWaitAndFinTaskImpl implements ITaskExcuteService {
}
private void syncWaitAndFinQueue() {
List<WaitPersonInfo> waitPersonInfos = new ArrayList<>();
List<FinPersonInfo> finPersonInfos = new ArrayList<>();
cacheService.select(redisDb);//
List<WaitPersonInfo> waitPersonInfos = cacheService.lrange(RedisKey.KEY_WAITNUM_LIST_CACHE, WaitPersonInfo.class);
List<FinPersonInfo> finPersonInfos = cacheService.lrange(RedisKey.KEY_FIN_LIST_CACHE, FinPersonInfo.class);
while (true) {
WaitPersonInfo waitPersonInfo = cacheService.lpop(RedisKey.KEY_WAITNUM_LIST_CACHE, WaitPersonInfo.class);
if (ObjectUtils.isEmpty(waitPersonInfo)) {
break;
} else {
waitPersonInfos.add(waitPersonInfo);
}
}
while (true) {
FinPersonInfo finPersonInfo = cacheService.lpop(RedisKey.KEY_FIN_LIST_CACHE, FinPersonInfo.class);
if (ObjectUtils.isEmpty(finPersonInfo)) {
break;
} else {
finPersonInfos.add(finPersonInfo);
}
}
cacheService.select(database);//
if (!ObjectUtils.isEmpty(waitPersonInfos)) {
List<CareRecordsEntity> recordsEntityList = waitPersonInfos.stream().map(item -> {
......@@ -118,26 +134,27 @@ public class SyncAppointWaitAndFinTaskImpl implements ITaskExcuteService {
log.info("保存关怀记录数量,size:{}", recordsEntityList.size());
careRecordsService.save(recordsEntityList);
}
if (!ObjectUtils.isEmpty(finPersonInfos)) {
List<Long> waitIdList = finPersonInfos.stream().map(item -> item.getWaitId()).collect(Collectors.toList());
Map<Long, FinPersonInfo> waitMap = finPersonInfos.stream().collect(Collectors.toMap(x -> x.getWaitId(), y -> y, (o, n) -> n));
CareRecordsQuery careRecordsQuery = new CareRecordsQuery();
careRecordsQuery.setPersonIdList(waitIdList);
List<CareRecordsEntity> careRecordsEntities = careRecordsService.find(careRecordsQuery);
}
if (!ObjectUtils.isEmpty(finPersonInfos)) {
List<Long> waitIdList = finPersonInfos.stream().map(item -> item.getWaitId()).collect(Collectors.toList());
Map<Long, FinPersonInfo> waitMap = finPersonInfos.stream().collect(Collectors.toMap(x -> x.getWaitId(), y -> y, (o, n) -> n));
CareRecordsQuery careRecordsQuery = new CareRecordsQuery();
careRecordsQuery.setPersonIdList(waitIdList);
List<CareRecordsEntity> careRecordsEntities = careRecordsService.find(careRecordsQuery);
if (!ObjectUtils.isEmpty(careRecordsEntities)) {
careRecordsEntities.forEach(item -> {
FinPersonInfo finPersonInfo = waitMap.get(item.getPersonId());
item.setProcessStatus(ProcessStatusEnum.接件结束.getValue());
item.setCallTime(finPersonInfo.getCalltime());
Long diff = DateUtil.between(item.getTakeTime(), finPersonInfo.getCalltime(), DateUnit.MINUTE);
item.setWaitTime(diff.intValue());
item.setUpdateTime(new Date());
item.setUpdateUserId(1L);
item.setUpdateUserName("system");
});
if (!ObjectUtils.isEmpty(careRecordsEntities)) {
//todo 更新关怀记录
careRecordsEntities.forEach(item -> {
FinPersonInfo finPersonInfo = waitMap.get(item.getPersonId());
item.setProcessStatus(ProcessStatusEnum.接件结束.getValue());
item.setCallTime(finPersonInfo.getCalltime());
Long diff = DateUtil.between(item.getTakeTime(), finPersonInfo.getCalltime(), DateUnit.MINUTE);
item.setWaitTime(diff.intValue());
item.setUpdateTime(new Date());
item.setUpdateUserId(1L);
item.setUpdateUserName("system");
});
log.info("更新关怀记录数量,size:{}", careRecordsEntities.size());
careRecordsService.update(careRecordsEntities);
}
}
......
......@@ -35,12 +35,12 @@ public class HikCameraServiceImpl extends AbstractHikService implements IHikCame
try {
log.info("camera list req=>{}", JSON.toJSONString(cameraListReq));
String respJson = ArtemisHttpUtil.doPostStringArtemis(config, path, JSON.toJSONString(cameraListReq), null, null, "application/json");
log.info("camera list resp=>{}", respJson);
HikApiRest<CameraDataInfo> rest = JSON.parseObject(respJson, new TypeReference<HikApiRest<CameraDataInfo>>() {
});
if (rest.getCode() == "0") {
if ("0".equals(rest.getCode())) {
return Rest.ok(rest.getData());
} else {
log.info("camera list error resp=>{}", JSON.toJSONString(rest));
return Rest.fail(rest.getMsg());
}
} catch (Exception e) {
......
......@@ -36,7 +36,7 @@ public class HikDoorServiceImpl extends AbstractHikService implements IHikDoorSe
try {
log.info("door events req=>{}", JSON.toJSONString(doorEventReq));
String respJson = ArtemisHttpUtil.doPostStringArtemis(config, path, JSON.toJSONString(doorEventReq), null, null, "application/json");
log.info("door events error resp=>{}", respJson);
log.info("door events resp=>{}", respJson);
HikApiRest<DoorEventDataInfo> rest = JSON.parseObject(respJson, new TypeReference<HikApiRest<DoorEventDataInfo>>() {
});
if(rest.getCode()=="0"){
......
......@@ -53,7 +53,7 @@ public class HikEventServiceImpl extends AbstractHikService implements IHikEvent
log.info("event sub resp=>{}", respJson);
HikApiRest<String> rest = JSON.parseObject(respJson, new TypeReference<HikApiRest<String>>() {
});
if (rest.getCode() == "0") {
if ("0".equals(rest.getCode())) {
return Rest.ok();
} else {
return Rest.fail(rest.getMsg());
......
......@@ -39,7 +39,7 @@ public class HikFaceServiceImpl extends AbstractHikService implements IHikFaceSe
String respJson = ArtemisHttpUtil.doPostStringArtemis(config, path, JSON.toJSONString(faceListReq), null, null, "application/json");
HikApiRest<List<FaceDataInfo>> rest = JSON.parseObject(respJson, new TypeReference<HikApiRest<List<FaceDataInfo>>>() {
});
if (rest.getCode() == "0") {
if ("0".equals(rest.getCode())) {
return Rest.ok(rest.getData());
} else {
log.info("face single error resp=>", respJson);
......@@ -62,7 +62,7 @@ public class HikFaceServiceImpl extends AbstractHikService implements IHikFaceSe
log.info("face single add resp=>{}", respJson);
HikApiRest<FaceDataInfo> rest = JSON.parseObject(respJson, new TypeReference<HikApiRest<FaceDataInfo>>() {
});
if (rest.getCode() == "0") {
if ("0".equals(rest.getCode())) {
return Rest.ok(rest.getData());
} else {
return Rest.fail(rest.getMsg());
......@@ -82,7 +82,7 @@ public class HikFaceServiceImpl extends AbstractHikService implements IHikFaceSe
String respJson = ArtemisHttpUtil.doPostStringArtemis(config, path, JSON.toJSONString(faceReq), null, null, "application/json");
HikApiRest<Boolean> rest = JSON.parseObject(respJson, new TypeReference<HikApiRest<Boolean>>() {
});
if (rest.getCode() == "0") {
if ("0".equals(rest.getCode())) {
return Rest.ok(rest.getData());
} else {
log.info("face single error resp=>{}", respJson);
......
......@@ -35,7 +35,7 @@ public class HikPlanServiceImpl extends AbstractHikService implements IHikPlanSe
String respJson = ArtemisHttpUtil.doPostStringArtemis(config, path, JSON.toJSONString(planRecognBlackListReq), null, null, "application/json");
HikApiRest<List<PlanRecognInfo>> rest = JSON.parseObject(respJson, new TypeReference<HikApiRest<List<PlanRecognInfo>>>() {
});
if (rest.getCode() == "0") {
if ("0".equals(rest.getCode())) {
return Rest.ok(rest.getData());
} else {
log.info("plan recognize balck list error resp=>{}", respJson);
......@@ -83,7 +83,7 @@ public class HikPlanServiceImpl extends AbstractHikService implements IHikPlanSe
log.info("plan recognize balck resp=>{}", respJson);
HikApiRest<String> rest = JSON.parseObject(respJson, new TypeReference<HikApiRest<String>>() {
});
if (rest.getCode() == "0") {
if ("0".equals(rest.getCode())) {
return Rest.ok(rest.getData());
} else {
log.info("plan recognize balck error resp=>{}", respJson);
......@@ -104,7 +104,7 @@ public class HikPlanServiceImpl extends AbstractHikService implements IHikPlanSe
String respJson = ArtemisHttpUtil.doPostStringArtemis(config, path, JSON.toJSONString(planRecognBlackReq), null, null, "application/json");
HikApiRest<Boolean> rest = JSON.parseObject(respJson, new TypeReference<HikApiRest<Boolean>>() {
});
if (rest.getCode() == "0") {
if ("0".equals(rest.getCode())) {
return Rest.ok(rest.getData());
} else {
log.info("plan recognize balck error del resp=>{}", respJson);
......@@ -125,7 +125,7 @@ public class HikPlanServiceImpl extends AbstractHikService implements IHikPlanSe
String respJson = ArtemisHttpUtil.doPostStringArtemis(config, path, JSON.toJSONString(planRecognWhiteListReq), null, null, "application/json");
HikApiRest<List<PlanRecognInfo>> rest = JSON.parseObject(respJson, new TypeReference<HikApiRest<List<PlanRecognInfo>>>() {
});
if (rest.getCode() == "0") {
if ("0".equals(rest.getCode())) {
return Rest.ok(rest.getData());
} else {
log.info("plan recognize white list error resp=>{}", respJson);
......@@ -148,7 +148,7 @@ public class HikPlanServiceImpl extends AbstractHikService implements IHikPlanSe
log.info("plan recognize white resp=>{}", respJson);
HikApiRest<String> rest = JSON.parseObject(respJson, new TypeReference<HikApiRest<String>>() {
});
if (rest.getCode() == "0") {
if ("0".equals(rest.getCode())) {
return Rest.ok(rest.getData());
} else {
log.info("plan recognize white add error resp=>{}", respJson);
......@@ -171,7 +171,7 @@ public class HikPlanServiceImpl extends AbstractHikService implements IHikPlanSe
log.info("plan recognize white resp=>{}", respJson);
HikApiRest<Boolean> rest = JSON.parseObject(respJson, new TypeReference<HikApiRest<Boolean>>() {
});
if (rest.getCode() == "0") {
if ("0".equals(rest.getCode())) {
return Rest.ok(rest.getData());
} else {
log.info("plan recognize white add error resp=>{}", respJson);
......@@ -192,7 +192,7 @@ public class HikPlanServiceImpl extends AbstractHikService implements IHikPlanSe
String respJson = ArtemisHttpUtil.doPostStringArtemis(config, path, JSON.toJSONString(planRecognWhiteReq), null, null, "application/json");
HikApiRest<Boolean> rest = JSON.parseObject(respJson, new TypeReference<HikApiRest<Boolean>>() {
});
if (rest.getCode() == "0") {
if ("0".equals(rest.getCode())) {
return Rest.ok(rest.getData());
} else {
log.info("plan recognize white error del resp=>{}", respJson);
......
......@@ -38,7 +38,7 @@ public class HikPersonServiceImpl extends AbstractHikService implements IHikPers
String respJson = ArtemisHttpUtil.doPostStringArtemis(config, path, JSON.toJSONString(personReq), null, null, "application/json");
HikApiRest<PersonDataInfo> rest = JSON.parseObject(respJson, new TypeReference<HikApiRest<PersonDataInfo>>() {
});
if (rest.getCode() == "0") {
if ("0".equals(rest.getCode())) {
return Rest.ok(rest.getData());
} else {
log.info("person error resp=>{}", respJson);
......@@ -74,7 +74,7 @@ public class HikPersonServiceImpl extends AbstractHikService implements IHikPers
String respJson = ArtemisHttpUtil.doPostStringArtemis(config, path, JSON.toJSONString(orgListReq), null, null, "application/json");
HikApiRest<OrgDataInfo> rest = JSON.parseObject(respJson, new TypeReference<HikApiRest<OrgDataInfo>>() {
});
if (rest.getCode() == "0") {
if ("0".equals(rest.getCode())) {
return Rest.ok(rest.getData());
} else {
log.info("org list error resp=>{}", respJson);
......
package com.mortals.xhx.module.realtime.model.vo;
import com.mortals.framework.annotation.Excel;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.realtime.model.RealtimeDataflowStatEntity;
import java.util.ArrayList;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment