添加同步流程

This commit is contained in:
yangjun 2025-07-28 11:26:55 +08:00
parent e00d44ec17
commit 4b5930cd95
6 changed files with 171 additions and 0 deletions

View File

@ -19,6 +19,7 @@ import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.nu.modules.tplink.camera.entity.NuBaseInfo;
import com.nu.modules.tplink.camera.model.CameraTreeModel;
import org.apache.commons.lang.StringUtils;
import org.jeecg.common.api.vo.Result;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -540,4 +541,26 @@ public class CameraInfoController extends JeecgController<CameraInfo, ICameraInf
return service.motionCtrl(cameraInfo);
}
/**
* 摄像头信息-同步
* @return
*/
@AutoLog(value = "护理单元-物联管理-摄像头信息-同步")
@ApiOperation(value="护理单元-物联管理-摄像头信息-同步", notes="护理单元-物联管理-摄像头信息-同步")
@RequestMapping(value = "/syncCameraList", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<String> syncCameraList(@RequestBody Map<String,Object> cameraList) {
String result = service.syncCameraList(cameraList);
if(StringUtils.equals(result,"0")){
return Result.OK("操作成功!");
}else if (StringUtils.equals(result,"1")){
return Result.error("参数为空!");
}else if (StringUtils.equals(result,"2")){
return Result.error("设备ID为空");
}else{
return Result.error("其他错误,请联系管理员!");
}
}
}

View File

@ -307,4 +307,13 @@ public class CameraInfo implements Serializable {
private String ftpUsername; //回放视频转FTP上传用户
private String ftpPassword; //回放视频转FTP上传密码
private String ftpUploadpath; //回放视频转FTP上传路径
private String departId;//机构ID
private String departName;//机构名称
private String departServerUrl;//机构服务地址
private String oldServerUrl;//原机构服务地址
private String syncType;//是否同步 0 未同步 1已同步
private String oldDepartId;//原机构id
private String oldDepartName;//原机构名称
}

View File

@ -31,4 +31,6 @@ public interface CameraInfoMapper extends BaseMapper<CameraInfo> {
void updatePlanByDevId(CameraInfo cameraInfo);
IPage<NuBaseInfo> getNuBaseList(Page<NuBaseInfo> page, @Param("params") NuBaseInfo nuBaseInfo);
void updateDepartById(@Param("params") CameraInfo cameraInfo);
}

View File

@ -289,4 +289,8 @@
<select id="getNuBaseList" parameterType="com.nu.modules.tplink.camera.entity.NuBaseInfo" resultType="com.nu.modules.tplink.camera.entity.NuBaseInfo">
select * from nu_base_info where del_flag = '0'
</select>
<update id="updateDepartById" parameterType="com.nu.modules.tplink.camera.entity.NuBaseInfo" >
update nu_iot_tplink_camera set nu_id = null,nu_name = null,depart_id = null,depart_name = null,depart_server_url=null where id = #{params.id}
</update>
</mapper>

View File

@ -64,4 +64,6 @@ public interface ICameraInfoService extends IService<CameraInfo> {
Result getUploadToServerProcess(CameraInfo cameraInfo);
Result motionCtrl(CameraInfo cameraInfo);
IPage<NuBaseInfo> getNuBaseList(String dataSourceCode,Page<NuBaseInfo> page, NuBaseInfo nuBaseInfo);
String syncCameraList(Map<String, Object> cameraList);
}

View File

@ -3,9 +3,12 @@ package com.nu.modules.tplink.camera.service.impl;
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;
import com.nu.modules.syncLog.entity.SyncLog;
import com.nu.modules.syncLog.service.ISyncLogService;
import com.nu.modules.tplink.camera.entity.NuBaseInfo;
import com.nu.modules.tplink.camera.model.CameraTreeModel;
import com.nu.modules.tplink.common.entity.TumsConfig;
@ -14,7 +17,10 @@ import com.nu.modules.tplink.project.entity.ProjectInfo;
import com.nu.modules.tplink.project.mapper.ProjectInfoMapper;
import com.nu.modules.tplink.region.entity.RegionInfo;
import com.nu.modules.tplink.region.mapper.RegionInfoMapper;
import com.nu.modules.tq.electricity.entity.ElectricityMeter;
import com.nu.modules.tq.electricity.service.impl.ElectricityMeterServiceImpl;
import org.apache.commons.compress.utils.Lists;
import org.apache.commons.lang.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.vo.LoginUser;
@ -26,6 +32,7 @@ import com.nu.modules.tplink.common.entity.ErrorCode;
import com.nu.modules.tplink.common.service.IErrorCodeService;
import com.nu.modules.tplink.utils.TumsApi;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
@ -54,6 +61,12 @@ public class CameraInfoServiceImpl extends ServiceImpl<CameraInfoMapper, CameraI
private ProjectInfoMapper projectMapper;
@Autowired
private RegionInfoMapper regionMapper;
@Autowired
public ISyncLogService nuIotTqElectricitySyncLogService;
@Lazy
@Autowired
private CameraInfoServiceImpl syncImpl;
/**
* 获取摄像头信息-分页
@ -2581,6 +2594,7 @@ public class CameraInfoServiceImpl extends ServiceImpl<CameraInfoMapper, CameraI
return baseMapper.getNuBaseList(page,nuBaseInfo);
}
/**
* 高速球机移动方向控制
* @param cameraInfo
@ -2618,4 +2632,121 @@ public class CameraInfoServiceImpl extends ServiceImpl<CameraInfoMapper, CameraI
return Result.error(errMsg);
}
}
@Override
public String syncCameraList(Map<String, Object> cameraList) {
String nuId = cameraList.get("nuId").toString();
String nuName = cameraList.get("nuName").toString();
String dataSourceCode = cameraList.get("dataSourceCode").toString();
String departId = cameraList.get("departId").toString();
String departName = cameraList.get("departName").toString();
if(StringUtils.isEmpty(nuId) || StringUtils.isEmpty(dataSourceCode)){
return "1";//参数为空
}
QueryWrapper<CameraInfo> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("depart_server_url",dataSourceCode);
List<CameraInfo> allList =baseMapper.selectList(queryWrapper);
//先清空掉原来的数据
for(CameraInfo cameraInfo : allList){
syncImpl.syncCameraDel(cameraInfo.getOldServerUrl(),cameraInfo);
SyncLog nuIotTqElectricitySyncLogDel = new SyncLog();
nuIotTqElectricitySyncLogDel.setId(null);
nuIotTqElectricitySyncLogDel.setMainId(cameraInfo.getDeviceIndex());
nuIotTqElectricitySyncLogDel.setMainName(cameraInfo.getDeviceName());
nuIotTqElectricitySyncLogDel.setSyncType("删除");
nuIotTqElectricitySyncLogDel.setOrgId(cameraInfo.getOldDepartId());
nuIotTqElectricitySyncLogDel.setOrgCode(cameraInfo.getOldServerUrl());
nuIotTqElectricitySyncLogDel.setOrgName(cameraInfo.getOldDepartName());
nuIotTqElectricitySyncLogDel.setNewOrgId(cameraInfo.getDepartId());
nuIotTqElectricitySyncLogDel.setNewOrgCode(cameraInfo.getDepartServerUrl());
nuIotTqElectricitySyncLogDel.setNewOrgName(cameraInfo.getDepartName());
nuIotTqElectricitySyncLogDel.setStatus("成功");
nuIotTqElectricitySyncLogDel.setContent("删除原来业务机构摄像头数据");
nuIotTqElectricitySyncLogDel.setServerType("摄像头");
nuIotTqElectricitySyncLogService.save(nuIotTqElectricitySyncLogDel);
baseMapper.updateDepartById(cameraInfo);
}
List<Map<String,Object>> list = (List<Map<String,Object>>) cameraList.get("list");
for (Map<String, Object> map : list) {
CameraInfo cameraInfo = new CameraInfo();
String iotId = map.get("id").toString();
if(StringUtils.isEmpty(iotId)){
return "2";//设备ID为空;
}
cameraInfo = baseMapper.selectById(iotId);
cameraInfo.setNuId(nuId);
cameraInfo.setNuName(nuName);
//将页面传入的数据赋值到最新的机构信息中
cameraInfo.setDepartId(departId);
cameraInfo.setDepartName(departName);
cameraInfo.setDepartServerUrl(dataSourceCode);
//如果两个系统编码相同则执行新增或者修改
syncImpl.syncCameraSaveOrUpdate(cameraInfo.getOldServerUrl(),cameraInfo);
SyncLog nuIotTqElectricitySyncLog = new SyncLog();
nuIotTqElectricitySyncLog.setId(null);
nuIotTqElectricitySyncLog.setMainId(cameraInfo.getDeviceIndex());
nuIotTqElectricitySyncLog.setMainName(cameraInfo.getDeviceName());
nuIotTqElectricitySyncLog.setSyncType("更新");
nuIotTqElectricitySyncLog.setOrgId(cameraInfo.getDepartId());
nuIotTqElectricitySyncLog.setOrgCode(cameraInfo.getDepartServerUrl());
nuIotTqElectricitySyncLog.setOrgName(cameraInfo.getDepartName());
nuIotTqElectricitySyncLog.setNewOrgId(cameraInfo.getDepartId());
nuIotTqElectricitySyncLog.setNewOrgCode(cameraInfo.getDepartServerUrl());
nuIotTqElectricitySyncLog.setNewOrgName(cameraInfo.getDepartName());
nuIotTqElectricitySyncLog.setStatus("成功");
nuIotTqElectricitySyncLog.setContent("同步成功");
nuIotTqElectricitySyncLog.setServerType("摄像头");
nuIotTqElectricitySyncLogService.save(nuIotTqElectricitySyncLog);
//更新同步状态及旧系统编码
cameraInfo.setSyncType("1");
cameraInfo.setOldServerUrl(dataSourceCode);
cameraInfo.setOldDepartName(cameraInfo.getDepartName());
cameraInfo.setOldDepartId(cameraInfo.getDepartId());
baseMapper.updateById(cameraInfo);
}
return "0";
}
//删除原来系统的蛇形头数据
@DS("#dataSourceCode")
public boolean syncCameraDel(String dataSourceCode,CameraInfo cameraInfo) {
try {
baseMapper.deleteById(cameraInfo.getId());
} catch (Exception e) {
throw new RuntimeException(e);
}
return true;
}
//业务系统保存或者修改命令
@DS("#dataSourceCode")
public boolean syncCameraSaveOrUpdate(String dataSourceCode, CameraInfo cameraInfo) {
try {
QueryWrapper<CameraInfo> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("device_index",cameraInfo.getDeviceIndex());
CameraInfo oldParam = baseMapper.selectOne(queryWrapper);//查询数据库中该表号数据原始数据
if(oldParam == null){
baseMapper.insert(cameraInfo);
}else{
baseMapper.updateById(cameraInfo);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
return true;
}
}