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

添加服务追踪

parent 723f86a1
package com.mortals.xhx.daemon.task;
import cn.hutool.core.codec.Base64;
import cn.hutool.core.date.DateUtil;
import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.PageInfo;
import com.mortals.framework.service.ITask;
import com.mortals.framework.service.ITaskExcuteService;
import com.mortals.framework.utils.ServletUtils;
import com.mortals.xhx.base.system.upload.service.UploadService;
import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.module.hik.face.model.req.img.ImgReq;
import com.mortals.xhx.module.hik.face.service.IHikFaceService;
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 org.springframework.web.multipart.MultipartFile;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
import static java.util.stream.Collectors.toList;
/**
* 人流图片下载
*/
@Slf4j
//@Service("RealTimeDownloadImgTask")
public class RealTimeDownloadImgTaskImpl implements ITaskExcuteService {
@Autowired
private RealtimeDataflowService realtimeDataflowService;
@Autowired
private IHikFaceService faceService;
@Autowired
private UploadService uploadService;
@Override
public void excuteTask(ITask task) throws AppException {
donwnloadSnap();
}
private void donwnloadSnap() {
//下载最近一天的抓拍数据
RealtimeDataflowQuery realtimeDataflowQuery = new RealtimeDataflowQuery();
realtimeDataflowQuery.setDetectTimeStart(DateUtil.yesterday().toStringDefaultTimeZone());
realtimeDataflowQuery.setDetectTimeEnd(DateUtil.formatDateTime(new Date()));
PageInfo pageInfo = new PageInfo();
pageInfo.setPrePageResult(50);
List<RealtimeDataflowEntity> updateList = realtimeDataflowService.find(realtimeDataflowQuery, pageInfo, null).getList()
.parallelStream()
.filter(f -> !ObjectUtils.isEmpty(f.getPicUri()))
.filter(f -> ObjectUtils.isEmpty(f.getPicture()))
.map(item -> {
ImgReq imgReq = new ImgReq();
imgReq.setUrl(item.getPicUri());
Rest<String> rest = faceService.downloadPicture(imgReq);
if (YesNoEnum.YES.getValue() == rest.getCode()) {
byte[] bytes = Base64.decode(rest.getData());
if (!ObjectUtils.isEmpty(bytes)) {
InputStream inputStream = new ByteArrayInputStream(bytes);
MultipartFile file = ServletUtils.getMultipartFile(inputStream, "snap.jpg");
String filePath = uploadService.saveFileUpload(file, "file/fileupload/snap/" + DateUtil.today(), null);
item.setPicture(filePath);
item.setUpdateTime(new Date());
item.setUpdateUserId(1L);
item.setUpdateUserName("system");
log.info("item:{},picPath:{}",item.getId(),item.getPicture());
return item;
}
}
return null;
}).filter(f -> f != null).collect(toList());
log.info("更新图片列表:{}", updateList.size());
if (!ObjectUtils.isEmpty(updateList)) {
realtimeDataflowService.update(updateList, null);
}
}
@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);
}
}
......@@ -59,16 +59,62 @@ public class SyncRegisterUserTaskImpl implements ITaskExcuteService {
@Override
public void excuteTask(ITask task) throws AppException {
log.info("同步注册用户任务");
//syncRegisterUsers();
syncRegisterUsersTotal();
syncRegisterUsers();
//syncRegisterUsersTotal();
log.info("同步注册用户任务完成");
log.info("同步注册用户照片任务");
syncRegisterUsersPhotos();
syncRegisterPhotoUsers();
log.info("同步注册用户任务照片完成");
}
private void syncRegisterPhotoUsers() {
String registerPath = "/inter/Actuary/peoplePhotoList";
String url = host + registerPath;
Map<String, Object> params = new HashMap<>();
params.put("page", 1);
params.put("size", 10000);
String respJson = HttpUtil.get(url, params);
Rest<RegisterDataInfo> rest = JSON.parseObject(respJson, new TypeReference<Rest<RegisterDataInfo>>() {
});
if (rest.getCode() == YesNoEnum.YES.getValue()) {
List<DataItem> userList = rest.getData().getData();
log.info("注册用户有照片数量:{}", userList.size());
for (DataItem user : userList) {
//判断是否本地已存在 不存在
if (ObjectUtils.isEmpty(user.getIdcardIDCardNo())) {
continue;
}
PersonEntity personServiceExtCache = personService.getExtCache(user.getIdcardIDCardNo());
if(ObjectUtils.isEmpty(personServiceExtCache)){
log.info("用户不存在,idcard:{}",user.getIdcardIDCardNo());
continue;
}
//判断是否有图片地址
if(ObjectUtils.isEmpty(personServiceExtCache.getSourcePhotoUri())){
PersonEntity personEntity = new PersonEntity();
personEntity.setId(personServiceExtCache.getCreateUserId());
personEntity.setSourcePhotoUri(user.getIdcardDataPhotoFileName());
//直接下载更新到本地
String downUrl = url + personEntity.getSourcePhotoUri();
// String downUrl = "http://192.168.0.98:11078/file/fileupload/1679215657433.jpg";
log.info("downUrl:{}", downUrl);
byte[] bytes = HttpUtil.downloadBytes(downUrl);
if (bytes.length > 0) {
InputStream inputStream = new ByteArrayInputStream(bytes);
MultipartFile file = getMultipartFile(inputStream, "photo.jpg");
String filePath = uploadService.saveFileUpload(file, "file/fileupload/photo", null);
personEntity.setPhoto(filePath);
personService.update(personEntity);
}
}
}
}
}
private void syncRegisterUsersTotal() {
log.info("同步注册用户全量更新");
......@@ -191,8 +237,6 @@ public class SyncRegisterUserTaskImpl implements ITaskExcuteService {
if (!ObjectUtils.isEmpty(newPerson.getSourcePhotoUri()) && !newPerson.getSourcePhotoUri().equals(oldPerson.getSourcePhotoUri())) {
return false;
}
return true;
}
......
package com.mortals.xhx.module.realtime.web;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.OrderCol;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
......@@ -8,51 +9,56 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import com.mortals.framework.model.Context;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.module.realtime.model.RealtimeDataflowEntity;
import com.mortals.xhx.module.realtime.service.RealtimeDataflowService;
import org.apache.commons.lang3.ArrayUtils;
import com.mortals.framework.util.StringUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.alibaba.fastjson.JSONObject;
import java.util.Arrays;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import static com.mortals.framework.ap.SysConstains.*;
/**
*
* 人员发现记录
*
* @author zxfei
* @date 2023-04-09
*/
* 人员发现记录
*
* @author zxfei
* @date 2023-04-09
*/
@RestController
@RequestMapping("realtime/dataflow")
public class RealtimeDataflowController extends BaseCRUDJsonBodyMappingController<RealtimeDataflowService,RealtimeDataflowEntity,Long> {
public class RealtimeDataflowController extends BaseCRUDJsonBodyMappingController<RealtimeDataflowService, RealtimeDataflowEntity, Long> {
@Autowired
private ParamService paramService;
public RealtimeDataflowController(){
super.setModuleDesc( "人员发现记录");
public RealtimeDataflowController() {
super.setModuleDesc("人员发现记录");
}
@Override
protected void init(Map<String, Object> model, Context context) {
this.addDict(model, "isBooking", paramService.getParamBySecondOrganize("RealtimeDataflow","isBooking"));
this.addDict(model, "isBooking", paramService.getParamBySecondOrganize("RealtimeDataflow", "isBooking"));
super.init(model, context);
}
@Override
protected void doListBefore(RealtimeDataflowEntity query, Map<String, Object> model, Context context) throws AppException {
query.setOrderField("createTime");
query.setOrderKind(OrderCol.DESCENDING);
query.setOrderColList(Arrays.asList(new OrderCol("createTime", OrderCol.DESCENDING)));
super.doListBefore(query, model, context);
}
}
\ No newline at end of file
......@@ -56,7 +56,6 @@ hystrix:
isolation:
thread:
timeoutInMilliseconds: 60000
sms:
smsSendUrl: @profiles.sms.smsSendUrl@
apiId: @profiles.sms.apiId@
......
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