From e0ba2cd8a5ef7142f7d6cab80ef2cbd9074ebb79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=95=B8=E9=9D=9E?= <13281114856@qq.com> Date: Wed, 19 Apr 2023 17:49:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=BA=E6=B5=81=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/src/assets/utils/ajax.js | 32 +++++ .../task/RealTimePeopleStatTaskImpl.java | 114 ++++++++++++++++++ .../task/SyncAppointWaitAndFinTaskImpl.java | 59 +++++---- .../service/impl/HikCameraServiceImpl.java | 4 +- .../door/service/impl/HikDoorServiceImpl.java | 2 +- .../service/impl/HikEventServiceImpl.java | 2 +- .../face/service/impl/HikFaceServiceImpl.java | 6 +- .../face/service/impl/HikPlanServiceImpl.java | 14 +-- .../service/impl/HikPersonServiceImpl.java | 4 +- .../model/vo/RealtimeDataflowStatVo.java | 1 + 10 files changed, 201 insertions(+), 37 deletions(-) create mode 100644 refined-manager/src/main/java/com/mortals/xhx/daemon/task/RealTimePeopleStatTaskImpl.java diff --git a/refined-manager-ui/admin/src/assets/utils/ajax.js b/refined-manager-ui/admin/src/assets/utils/ajax.js index 8be5d85..dcc7f1c 100644 --- a/refined-manager-ui/admin/src/assets/utils/ajax.js +++ b/refined-manager-ui/admin/src/assets/utils/ajax.js @@ -10,6 +10,38 @@ const instance = axios.create({ post: { 'Content-Type': 'application/json;charset=UTF-8', 'dataType': 'json', + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + } }, transformResponse: [data=>{ diff --git a/refined-manager/src/main/java/com/mortals/xhx/daemon/task/RealTimePeopleStatTaskImpl.java b/refined-manager/src/main/java/com/mortals/xhx/daemon/task/RealTimePeopleStatTaskImpl.java new file mode 100644 index 0000000..3271dab --- /dev/null +++ b/refined-manager/src/main/java/com/mortals/xhx/daemon/task/RealTimePeopleStatTaskImpl.java @@ -0,0 +1,114 @@ +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); + } +} diff --git a/refined-manager/src/main/java/com/mortals/xhx/daemon/task/SyncAppointWaitAndFinTaskImpl.java b/refined-manager/src/main/java/com/mortals/xhx/daemon/task/SyncAppointWaitAndFinTaskImpl.java index 9e782e8..f321b04 100644 --- a/refined-manager/src/main/java/com/mortals/xhx/daemon/task/SyncAppointWaitAndFinTaskImpl.java +++ b/refined-manager/src/main/java/com/mortals/xhx/daemon/task/SyncAppointWaitAndFinTaskImpl.java @@ -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("淇濆瓨鍏虫€€璁板綍鏁伴噺锛宻ize:{}", 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("鏇存柊鍏虫€€璁板綍鏁伴噺锛宻ize:{}", careRecordsEntities.size()); careRecordsService.update(careRecordsEntities); } } diff --git a/refined-manager/src/main/java/com/mortals/xhx/module/hik/camera/service/impl/HikCameraServiceImpl.java b/refined-manager/src/main/java/com/mortals/xhx/module/hik/camera/service/impl/HikCameraServiceImpl.java index 3362782..3615332 100644 --- a/refined-manager/src/main/java/com/mortals/xhx/module/hik/camera/service/impl/HikCameraServiceImpl.java +++ b/refined-manager/src/main/java/com/mortals/xhx/module/hik/camera/service/impl/HikCameraServiceImpl.java @@ -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) { diff --git a/refined-manager/src/main/java/com/mortals/xhx/module/hik/door/service/impl/HikDoorServiceImpl.java b/refined-manager/src/main/java/com/mortals/xhx/module/hik/door/service/impl/HikDoorServiceImpl.java index b23ae04..7d452d1 100644 --- a/refined-manager/src/main/java/com/mortals/xhx/module/hik/door/service/impl/HikDoorServiceImpl.java +++ b/refined-manager/src/main/java/com/mortals/xhx/module/hik/door/service/impl/HikDoorServiceImpl.java @@ -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"){ diff --git a/refined-manager/src/main/java/com/mortals/xhx/module/hik/event/service/impl/HikEventServiceImpl.java b/refined-manager/src/main/java/com/mortals/xhx/module/hik/event/service/impl/HikEventServiceImpl.java index e0fc9d4..1d83489 100644 --- a/refined-manager/src/main/java/com/mortals/xhx/module/hik/event/service/impl/HikEventServiceImpl.java +++ b/refined-manager/src/main/java/com/mortals/xhx/module/hik/event/service/impl/HikEventServiceImpl.java @@ -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()); diff --git a/refined-manager/src/main/java/com/mortals/xhx/module/hik/face/service/impl/HikFaceServiceImpl.java b/refined-manager/src/main/java/com/mortals/xhx/module/hik/face/service/impl/HikFaceServiceImpl.java index 16d7292..b622274 100644 --- a/refined-manager/src/main/java/com/mortals/xhx/module/hik/face/service/impl/HikFaceServiceImpl.java +++ b/refined-manager/src/main/java/com/mortals/xhx/module/hik/face/service/impl/HikFaceServiceImpl.java @@ -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); diff --git a/refined-manager/src/main/java/com/mortals/xhx/module/hik/face/service/impl/HikPlanServiceImpl.java b/refined-manager/src/main/java/com/mortals/xhx/module/hik/face/service/impl/HikPlanServiceImpl.java index 5e04ddd..df5e956 100644 --- a/refined-manager/src/main/java/com/mortals/xhx/module/hik/face/service/impl/HikPlanServiceImpl.java +++ b/refined-manager/src/main/java/com/mortals/xhx/module/hik/face/service/impl/HikPlanServiceImpl.java @@ -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); diff --git a/refined-manager/src/main/java/com/mortals/xhx/module/hik/person/service/impl/HikPersonServiceImpl.java b/refined-manager/src/main/java/com/mortals/xhx/module/hik/person/service/impl/HikPersonServiceImpl.java index 2beebec..11b2fe5 100644 --- a/refined-manager/src/main/java/com/mortals/xhx/module/hik/person/service/impl/HikPersonServiceImpl.java +++ b/refined-manager/src/main/java/com/mortals/xhx/module/hik/person/service/impl/HikPersonServiceImpl.java @@ -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); diff --git a/refined-manager/src/main/java/com/mortals/xhx/module/realtime/model/vo/RealtimeDataflowStatVo.java b/refined-manager/src/main/java/com/mortals/xhx/module/realtime/model/vo/RealtimeDataflowStatVo.java index 7d55222..833c6b6 100644 --- a/refined-manager/src/main/java/com/mortals/xhx/module/realtime/model/vo/RealtimeDataflowStatVo.java +++ b/refined-manager/src/main/java/com/mortals/xhx/module/realtime/model/vo/RealtimeDataflowStatVo.java @@ -1,4 +1,5 @@ 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; -- 2.24.3