添加接口

This commit is contained in:
yangjun 2025-12-18 09:46:26 +08:00
parent b081a7d2be
commit b139d93aa8
5 changed files with 223 additions and 10 deletions

View File

@ -57,10 +57,33 @@ public interface ICameraInfoService extends IService<CameraInfo> {
Result<Map<String,Object>> getPlaybackUrlList(CameraInfo cameraInfo);
Result<String> deletePlaybackChn(CameraInfo cameraInfo);
Result<Map<String,Object>> getMultitransUrl(CameraInfo cameraInfo) throws Exception;
/**
* 功能tplink下载服务视频
*
* @param cameraInfo 参数如下<br/>
* deviceIndex设备序号<br/>
* parentId父设备id<br/>
* fileName文件名称<br/>
* videoType回放录像类型1代表定时录像2代表移动侦测录像3代表全选<br/>
* ftpUploadpath视频上传位置<br/>
* startTime开始时间<br/>
* endTime结束时间<br/>
* @return
*/
Result uploadToServer(CameraInfo cameraInfo);
Result<String> stopUploadToServer(CameraInfo cameraInfo);
Result getUploadToServerProcess(CameraInfo cameraInfo);
Result motionCtrl(CameraInfo cameraInfo);
void baoxiu(CameraInfo cameraInfo);
/**
* 下载tplink自定义录像
* @param nuId 护理单元id
* @param startTime 下载开始时间
* @param endTime 下载结束时间
* @return
*/
String zdyTplinkVideo(String nuId, String startTime, String endTime);
}

View File

@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.databind.ObjectMapper;
@ -13,6 +14,7 @@ import com.nu.modules.tplink.camera.model.CameraTreeModel;
import com.nu.modules.tplink.common.entity.TumsConfig;
import com.nu.modules.tplink.common.mapper.TumsConfigMapper;
import org.apache.commons.compress.utils.Lists;
import org.apache.commons.lang.StringUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.util.DateUtils;
import com.nu.modules.tplink.camera.entity.CameraInfo;
@ -2697,6 +2699,9 @@ public class CameraInfoServiceImpl extends ServiceImpl<CameraInfoMapper, CameraI
ftpPassword = tumsConfig.getFtpPassword();
ftpUploadpath = tumsConfig.getFtpUploadpath();
}
if(StringUtils.isNotBlank(cameraInfo.getFtpUploadpath())){
ftpUploadpath = cameraInfo.getFtpUploadpath();
}
String deviceIndex = cameraInfo.getDeviceIndex();
String parentId = cameraInfo.getParentId();
String fileName = cameraInfo.getFileName();
@ -2711,7 +2716,7 @@ public class CameraInfoServiceImpl extends ServiceImpl<CameraInfoMapper, CameraI
sb.append("\"storageDevId\"").append(":").append("\"").append(deviceIndex).append("\",");
}
sb.append("\"videoType\"").append(":").append(cameraInfo.getVideoType()).append(",");
sb.append("\"storageType\"").append(":").append(cameraInfo.getStorageType()).append(",");
sb.append("\"storageType\"").append(":").append("0").append(",");
if(fileName!=null&&!fileName.equals("")){
//存储设备ID
sb.append("\"filename\"").append(":").append("\"").append(fileName).append("\",");
@ -2861,6 +2866,121 @@ public class CameraInfoServiceImpl extends ServiceImpl<CameraInfoMapper, CameraI
syncImpl.devopsBaoxiu(cameraInfo);
}
/**
* 下载tplink自定义录像
* @param nuId
* @param startTime
* @param endTime
* @return
*/
@Override
public String zdyTplinkVideo(String nuId, String startTime, String endTime) {
QueryWrapper<CameraInfo> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("nu_id",nuId);
List<CameraInfo> tplinkList = baseMapper.selectList(queryWrapper);
if(tplinkList.size() == 0){
return "error";
}
String fileName = nuId +"-"+DateUtils.formatDate(new Date(),"yyyyMMddHHmmss");
CameraInfo tplinkInfo = tplinkList.get(0);
CameraInfo cameraInfo = new CameraInfo();
cameraInfo.setDeviceIndex(tplinkInfo.getDeviceIndex());
cameraInfo.setParentId(tplinkInfo.getParentId());
cameraInfo.setFileName(fileName);
cameraInfo.setVideoType("1");
cameraInfo.setFtpUploadpath("/upload/2025/12/tplinkVideo");
cameraInfo.setStartTime(startTime);
cameraInfo.setEndTime(endTime);
try {
uploadToServerResult(cameraInfo);
return "success";
} catch (Exception e) {
e.printStackTrace();
return "error";
}
}
/**
* 回放视频转mp4上传
* @param cameraInfo
* @return
*/
public String uploadToServerResult(CameraInfo cameraInfo){
String ftpUsername = "";
String ftpPassword = "";
String ftpUploadpath = "";
String ftpIp = "";
String ftpPort = "";
log.info("uploadToServerResult - cameraInfo:{}:",cameraInfo);
CameraInfo entity = baseMapper.getByDeviceId(cameraInfo);
if(entity.getFtpIp()!=null&&!entity.getFtpIp().equals("")){
ftpIp = entity.getFtpIp();
ftpPort = entity.getFtpPort();
ftpUsername = entity.getFtpUsername();
ftpPassword = entity.getFtpPassword();
ftpUploadpath = entity.getFtpUploadpath();
}else{
TumsConfig tumsConfig = tumsConfigMapper.getByCode();
ftpIp = tumsConfig.getFtpIp();
ftpPort = tumsConfig.getFtpPort();
ftpUsername = tumsConfig.getFtpUsername();
ftpPassword = tumsConfig.getFtpPassword();
ftpUploadpath = tumsConfig.getFtpUploadpath();
}
if(StringUtils.isNotBlank(cameraInfo.getFtpUploadpath())){
ftpUploadpath = cameraInfo.getFtpUploadpath();
}
String deviceIndex = cameraInfo.getDeviceIndex();
String parentId = cameraInfo.getParentId();
String fileName = cameraInfo.getFileName();
StringBuffer sb = new StringBuffer();
sb.append("{");
sb.append("\"videoDevId\"").append(":").append("\"").append(deviceIndex).append("\",");
if(parentId!=null&&!parentId.equals("")&&!parentId.equals("0")){
//存储设备ID
sb.append("\"storageDevId\"").append(":").append("\"").append(parentId).append("\",");
}else{
//SK卡取自身设备ID
sb.append("\"storageDevId\"").append(":").append("\"").append(deviceIndex).append("\",");
}
sb.append("\"videoType\"").append(":").append(cameraInfo.getVideoType()).append(",");
sb.append("\"storageType\"").append(":").append("0").append(",");
if(fileName!=null&&!fileName.equals("")){
//存储设备ID
sb.append("\"filename\"").append(":").append("\"").append(fileName).append("\",");
}
sb.append("\"startTime\"").append(":").append(cameraInfo.getStartTime()).append(",");
sb.append("\"endTime\"").append(":").append(cameraInfo.getEndTime()).append(",");
sb.append("\"downloadInfo\"").append(":{");
sb.append("\"username\"").append(":").append("\"").append(ftpUsername).append("\",");
sb.append("\"password\"").append(":").append("\"").append(ftpPassword).append("\",");
sb.append("\"path\"").append(":").append("\"").append(ftpUploadpath).append("\",");
sb.append("\"ftpIp\"").append(":").append("\"").append(ftpIp).append("\",");
sb.append("\"ftpPort\"").append(":").append(ftpPort);
sb.append("}");
sb.append("}");
String res = tumsApi.uploadToServer(sb.toString());
JSONObject jsonObject = new JSONObject(res);
String errorCode = jsonObject.getStr("error_code");
if(errorCode.equals("0")){
JSONObject result = jsonObject.getJSONObject("result");
String taskId = result.getStr("taskId");
cameraInfo.setTaskId(taskId);
return ftpUploadpath+fileName;
}else{
String errorMsg = "";
try{
ErrorCode errorVo = errorCodeService.getByCode(errorCode);
errorMsg = errorVo.getErrorMsg();
}catch (Exception e){
errorMsg = errorCode;
}
log.info("uploadToServerResult:{}-{}",errorCode,errorMsg);
return "error";
}
}
@DS("devops")
public void devopsBaoxiu(CameraInfo cameraInfo){
baseMapper.updateById(cameraInfo);

View File

@ -61,6 +61,12 @@
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.nursingunit.boot</groupId>
<artifactId>nu-iot-biz</artifactId>
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,73 @@
package com.nu.modules.biz.care.order.job;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.nu.entity.CareOrdersSubEntity;
import com.nu.modules.biz.care.order.entity.CareOrdersSub;
import com.nu.modules.biz.care.order.service.ICareOrdersService;
import com.nu.modules.biz.care.order.service.ICareOrdersSubService;
import com.nu.modules.tplink.camera.service.ICameraInfoService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.util.DateUtils;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.Date;
import java.util.List;
import java.util.concurrent.TimeUnit;
/**
* 指令池批量生成工单
*/
@Slf4j
public class CareSubDownTplinkJob implements Job {
@Autowired
private ICareOrdersSubService careOrdersSubService;
@Autowired
private ICameraInfoService tplinkService;
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
log.error("OrdersJob:{}-{}", DateUtils.now(),"护理类指令池批量生成工单开始");
QueryWrapper<CareOrdersSub> queryWrapper = new QueryWrapper<>();
queryWrapper.isNull("tplink_path");
List<CareOrdersSub> careOrdersSubList = careOrdersSubService.list(queryWrapper);
for (CareOrdersSub careOrdersSubEntity : careOrdersSubList){
try {
String serviceDuration = careOrdersSubEntity.getServiceDuration();
if(!StringUtils.isBlank(serviceDuration)){
Date beginTime = careOrdersSubEntity.getBeginTime();
Date finishTime = careOrdersSubEntity.getFinishTime();
long diffInMillis = Math.abs(finishTime.getTime() - beginTime.getTime());
long diffMinutes = TimeUnit.MILLISECONDS.toMinutes(diffInMillis);
long sj = Long.parseLong(serviceDuration);
if(diffMinutes>sj){
finishTime = new Date(finishTime.getTime() + Math.abs(sj/2) * 60 * 1000);
}
String nuId = careOrdersSubEntity.getNuId();
String startTime = DateUtils.formatDate(careOrdersSubEntity.getBeginTime(),"yyyy-MM-dd HH:mm:ss");
String endTime = DateUtils.formatDate(finishTime,"yyyy-MM-dd HH:mm:ss");
System.out.println("nuId:"+nuId);
System.out.println("startTime:"+startTime);
System.out.println("endTime:"+endTime);
String resultTplink = tplinkService.zdyTplinkVideo(nuId,startTime,endTime);
if(!StringUtils.equals("error",resultTplink)){
careOrdersSubEntity.setTplinkPath(resultTplink);
careOrdersSubService.updateById(careOrdersSubEntity);
}else{
careOrdersSubEntity.setTplinkPath("error");
careOrdersSubService.updateById(careOrdersSubEntity);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}

View File

@ -7,21 +7,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nu.entity.CareOrdersEntity;
import com.nu.entity.CareOrdersSubEntity;
import com.nu.entity.CgdSxdEntity;
import com.nu.modules.biz.care.order.entity.CareOrders;
import com.nu.modules.biz.care.order.entity.CareOrdersSub;
import com.nu.modules.biz.care.order.mapper.CareOrdersMapper;
import com.nu.modules.biz.care.order.mapper.CareOrdersSubMapper;
import com.nu.modules.biz.care.order.service.ICareOrdersService;
import com.nu.modules.biz.care.order.service.ICareOrdersSubService;
import com.nu.modules.care.api.ICarePadApi;
import com.nu.modules.config.sendorderrule.entity.SendOrderRule;
import com.nu.modules.config.sendorderrule.entity.SendOrderRuleSub;
import com.nu.modules.config.sendorderrule.service.ISendOrderRuleService;
import com.nu.modules.config.sendorderrule.service.ISendOrderRuleSubService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -29,7 +21,6 @@ import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Description: 服务指令工单主表