车辆修改

This commit is contained in:
guoshengxiong 2024-05-28 22:09:51 +08:00
parent bd5ec224ae
commit 3d0f0102b7
10 changed files with 281 additions and 97 deletions

View File

@ -1,11 +1,13 @@
package com.zhgd.xmgl.async;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zhgd.jeecg.common.execption.OpenPromptException;
import com.zhgd.jeecg.common.util.pass.HttpUtils;
import com.zhgd.xmgl.call.HikvisionCall;
import com.zhgd.xmgl.modules.basicdata.service.INoticeService;
import com.zhgd.xmgl.modules.car.entity.CarInfo;
import com.zhgd.xmgl.modules.project.entity.Project;
import com.zhgd.xmgl.modules.project.mapper.ProjectMapper;
import com.zhgd.xmgl.modules.video.mapper.ProjectVideoHkVqdMapper;
import com.zhgd.xmgl.modules.video.mapper.VideoItemMapper;
import com.zhgd.xmgl.modules.worker.entity.DepartmentInfo;
@ -38,6 +40,9 @@ public class AsyncHikvision {
HikvisionCall hikvisionCall;
@Lazy
@Autowired
ProjectMapper projectMapper;
@Lazy
@Autowired
VideoItemMapper videoItemMapper;
@Lazy
@Autowired
@ -140,6 +145,7 @@ public class AsyncHikvision {
} else if (Objects.equals(carInfo.getCarModuleType(), 2) || Objects.equals(carInfo.getCarModuleType(), 3)) {
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(6).setOperate(1).setWhoId(carInfo.getId()).setCreateDate(now));
}
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(7).setOperate(carInfo.getIsBlack() == 1 ? 1 : 3).setWhoId(carInfo.getId()).setCreateDate(now));
asyncHikvision.addCarInfoForHikvisionAsyc(carInfo, now);
}
@ -154,6 +160,23 @@ public class AsyncHikvision {
}
}
public void handleAlarmCarForHikvision(CarInfo carInfo) {
Date now = new Date();
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(7).setOperate(carInfo.getIsBlack() == 1 ? 1 : 3).setWhoId(carInfo.getId()).setCreateDate(now));
asyncHikvision.handleAlarmCarForHikvision(carInfo, now);
}
@Async("carInfoExecutor")
public void handleAlarmCarForHikvision(CarInfo carInfo, Date now) {
ThreadLocalUtil.addInKey("now", now);
Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getProjectSn, carInfo.getProjectSn()));
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return;
}
hikvisionCall.handleAlarmCar(project, carInfo);
}
private void sendNoticeForCar(CarInfo carInfo, Exception e, String action) {
String title = action + "车辆到海康isc失败";
String type = "24";
@ -179,6 +202,7 @@ public class AsyncHikvision {
} else if (Objects.equals(carInfo.getCarModuleType(), 2) || Objects.equals(carInfo.getCarModuleType(), 3)) {
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(6).setOperate(1).setWhoId(carInfo.getId()).setCreateDate(now));
}
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(7).setOperate(carInfo.getIsBlack() == 1 ? 1 : 3).setWhoId(carInfo.getId()).setCreateDate(now));
asyncHikvision.editCarInfoForHikvisionAsync(carInfo, old, now);
}
@ -198,6 +222,7 @@ public class AsyncHikvision {
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(4).setOperate(3).setWhoId(carInfo.getId()).setCreateDate(now));
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(5).setOperate(3).setWhoId(carInfo.getId()).setCreateDate(now));
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(6).setOperate(3).setWhoId(carInfo.getId()).setCreateDate(now));
xzHikvisionSyncMapper.insert(new XzHikvisionSync().setProjectSn(carInfo.getProjectSn()).setType(7).setOperate(3).setWhoId(carInfo.getId()).setCreateDate(now));
asyncHikvision.deleteCarInfoForHikvisionAsync(carInfo, now);
}

View File

@ -1,5 +1,6 @@
package com.zhgd.xmgl.call;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateUtil;
@ -27,6 +28,7 @@ import com.zhgd.xmgl.modules.car.mapper.CarCameraMapper;
import com.zhgd.xmgl.modules.car.mapper.CarInfoMapper;
import com.zhgd.xmgl.modules.car.mapper.CarPassRecordMapper;
import com.zhgd.xmgl.modules.car.mapper.CarTypeMapper;
import com.zhgd.xmgl.modules.car.service.impl.CarInfoServiceImpl;
import com.zhgd.xmgl.modules.car.service.impl.CarPassRecordServiceImpl;
import com.zhgd.xmgl.modules.frontierprotectionnonet.entity.FrontierProtectionNoNetData;
import com.zhgd.xmgl.modules.frontierprotectionnonet.entity.FrontierProtectionNoNetDev;
@ -67,7 +69,10 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Lazy;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
import java.util.*;
@ -89,6 +94,9 @@ public class HikvisionCall {
HikvisionCall hikvisionCall;
@Lazy
@Autowired
CarInfoServiceImpl carInfoService;
@Lazy
@Autowired
private AiAnalyseHardWareAlarmRecordMapper aiAnalyseHardWareAlarmRecordMapper;
@Lazy
@Autowired
@ -975,7 +983,11 @@ public class HikvisionCall {
private void sendNoticeForCarInfo(String title, String rs, CarInfo carInfo, Integer type, Integer operate) {
boolean callSuc = HikvisionUtil.isSuccess(rs);
String msg = "";
sendNoticeForCarInfo(title, rs, carInfo, type, operate, callSuc);
}
public void sendNoticeForCarInfo(String title, String rs, CarInfo carInfo, Integer type, Integer operate, boolean callSuc) {
String msg;
boolean success = false;
if (callSuc) {
msg = "同步成功,车牌号码:" + carInfo.getCarNumber();
@ -998,6 +1010,9 @@ public class HikvisionCall {
msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:下发异常";
title += "失败";
}
} else if (Objects.equals(code, "0x02e33400")) {
msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:车辆属于黑名单内不能下发预约车";
title += "失败";
} else {
msg = "同步失败,车牌号码:" + carInfo.getCarNumber() + "。失败原因:下发异常";
title += "失败";
@ -1114,10 +1129,18 @@ public class HikvisionCall {
updateTotalStatus(projectSn, whoId, type, now);
}
public void updateFailStatusByNow(String projectSn, Long whoId, Integer type, Date now, String deviceSn) {
updateFailStatusByNow(projectSn, whoId, type, null, now, deviceSn);
}
public void updateFailStatusByNow(String projectSn, Long whoId, Integer type, Integer operate, Date now, String deviceSn) {
updateStatusByNow(projectSn, whoId, type, operate, now, deviceSn, false);
}
public void updateSuccessStatusByNow(String projectSn, Long whoId, Integer type, Date now, String deviceSn) {
updateSuccessStatusByNow(projectSn, whoId, type, null, now, deviceSn);
}
public void updateSuccessStatusByNow(String projectSn, Long whoId, Integer type, Integer operate, Date now, String deviceSn) {
updateStatusByNow(projectSn, whoId, type, operate, now, deviceSn, true);
}
@ -1129,10 +1152,12 @@ public class HikvisionCall {
.eq(XzHikvisionSync::getType, type)
.eq(XzHikvisionSync::getCreateDate, now)
.eq(StringUtils.isNotBlank(deviceSn), XzHikvisionSync::getDeviceSn, deviceSn);
if (operate == 3) {
queryWrapper.eq(XzHikvisionSync::getOperate, operate);
} else {
queryWrapper.ne(XzHikvisionSync::getOperate, 3);
if (operate != null) {
if (operate == 3) {
queryWrapper.eq(XzHikvisionSync::getOperate, operate);
} else {
queryWrapper.ne(XzHikvisionSync::getOperate, 3);
}
}
XzHikvisionSync xzHikvisionSync = xzHikvisionSyncMapper.selectOne(queryWrapper);
if (xzHikvisionSync == null) {
@ -1168,7 +1193,7 @@ public class HikvisionCall {
} else {
workerInfoMapper.update(null, new LambdaUpdateWrapper<WorkerInfo>()
.eq(WorkerInfo::getId, whoId)
.set(WorkerInfo::getSendSuccessStatus, 1)
.set(WorkerInfo::getSendSuccessStatus, sendSuccessStatus)
);
}
}
@ -1340,6 +1365,11 @@ public class HikvisionCall {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return;
}
if (carInfo.getIsBlack() == 0) {
//车辆布防
handleAlarmCar(project, carInfo);
}
cancelCharge(project, carInfo);
if (Objects.equals(carInfo.getCarModuleType(), 1)) {
//删除预约车辆
@ -1351,6 +1381,116 @@ public class HikvisionCall {
deleteFixedCarForHikvision(carInfo, project);
saveReservationCar(project, carInfo);
}
if (carInfo.getIsBlack() == 1) {
//车辆布防
handleAlarmCar(project, carInfo);
}
}
/**
* 车辆布防
*
* @param project
* @param carInfo
* @throws Exception
*/
public void handleAlarmCar(Project project, CarInfo carInfo) {
try {
JSONObject jo = new JSONObject();
jo.put("searchKey", carInfo.getCarNumber());
jo.put("pageNo", 1);
jo.put("pageSize", 1);
JSONObject joRs = queryAlarmCarPage(project, jo);
if (HikvisionUtil.isSuccess(joRs)) {
JSONObject dataJo = HikvisionUtil.getJSONObjectData(joRs);
JSONArray listJa = dataJo.getJSONArray("list");
if (CollUtil.isEmpty(listJa)) {
if (carInfo.getIsBlack() == 1) {
JSONObject addJo = new JSONObject();
CarInfo c = carInfoService.queryById(String.valueOf(carInfo.getId()));
addJo.put("driver", c.getDriverWorkerName());
addJo.put("driverPhone", c.getDriverTelephone());
addJo.put("plateNo", carInfo.getCarNumber());
JSONObject rs = addAlarmCarForHttp(project, addJo);
sendNoticeForCarInfo("车辆布防黑名单到海康isc", rs.toJSONString(), carInfo, 7, null);
} else {
sendNoticeForCarInfo("车辆取消布防取消黑名单到海康isc", null, carInfo, 7, null, true);
}
} else {
if (carInfo.getIsBlack() == 1) {
sendNoticeForCarInfo("车辆布防黑名单到海康isc", null, carInfo, 7, null, true);
} else {
JSONObject joOne = listJa.getJSONObject(0);
String alarmSyscode = joOne.getString("alarmSyscode");
JSONObject deleteJo = new JSONObject();
deleteJo.put("alarmSyscodes", alarmSyscode);
JSONObject rs = this.deletionAlarmCarForHttp(project, deleteJo);
sendNoticeForCarInfo("车辆取消布防取消黑名单到海康isc", rs.toJSONString(), carInfo, 7, null);
}
}
} else {
failAlarmNotice(carInfo);
}
} catch (Exception e) {
failAlarmNotice(carInfo);
}
}
private void failAlarmNotice(CarInfo carInfo) {
if (carInfo.getIsBlack() == 1) {
sendNoticeForCarInfo("车辆布防黑名单到海康isc", new JSONObject().toJSONString(), carInfo, 7, null, false);
} else {
sendNoticeForCarInfo("车辆取消布防取消黑名单到海康isc", new JSONObject().toJSONString(), carInfo, 7, null, false);
}
}
/**
* 车辆布防
*
* @param project
* @return
*/
public JSONObject addAlarmCarForHttp(Project project, JSONObject param) throws Exception {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return null;
}
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/pms/v1/alarmCar/addition";
String host = "https://" + project.getArtemisConfigHost();
return JSON.parseObject(HikvisionUtil.doPost(host, path, JSON.toJSONString(param), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()));
}
/**
* 取消车辆布防
*
* @param project
* @return
*/
public JSONObject deletionAlarmCarForHttp(Project project, JSONObject param) throws Exception {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return null;
}
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/pms/v1/alarmCar/deletion";
String host = "https://" + project.getArtemisConfigHost();
return JSON.parseObject(HikvisionUtil.doPost(host, path, JSON.toJSONString(param), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()));
}
/**
* 查询布防车辆
*
* @param project
* @return
*/
public JSONObject queryAlarmCarPage(Project project, JSONObject param) throws Exception {
if (project == null || !Objects.equals(project.getSyncHikvision(), 1)) {
return null;
}
final String ARTEMIS_PATH = "/artemis";
final String path = ARTEMIS_PATH + "/api/pms/v1/alarmCar/page";
String host = "https://" + project.getArtemisConfigHost();
return JSON.parseObject(HikvisionUtil.doPost(host, path, JSON.toJSONString(param), null, project.getArtemisConfigAppKey(), project.getArtemisConfigAppSecret()));
}
/**
@ -1606,6 +1746,10 @@ public class HikvisionCall {
bindCarOrNot(project, 2, carInfo);
deleteFixedCarForHikvision(carInfo, project);
deleteReservationCarFromHttp(carInfo, project);
CarInfo c = new CarInfo();
BeanUtil.copyProperties(carInfo, c);
c.setIsBlack(0);
handleAlarmCar(project, c);
}
private void deleteFixedCarForHikvision(CarInfo carInfo, Project project) throws Exception {

View File

@ -242,15 +242,8 @@ public class CarInfoController {
@ApiImplicitParam(name = "id", value = "车辆黑白名单管理ID", paramType = "body", required = true, dataType = "Integer")
@PostMapping(value = "/queryById")
public Result<CarInfo> queryById(@RequestBody Map<String,Object> map) {
Result<CarInfo> result = new Result<CarInfo>();
CarInfo carInfo = carInfoService.getById(MapUtils.getString(map,"id"));
if(carInfo==null) {
result.error500(MessageUtil.get("notFindErr"));
}else {
result.setResult(carInfo);
result.setSuccess(true);
}
return result;
String id = MapUtils.getString(map, "id");
return Result.success(carInfoService.queryById(id));
}
@ApiOperation(value = "统计项目下各车辆黑白名单情况", notes = "统计项目下各车辆黑白名单情况", httpMethod = "POST")

View File

@ -32,4 +32,6 @@ public interface CarInfoMapper extends BaseMapper<CarInfo> {
String getCarTypeName(CarInfo carInfo);
CountCarModuleTypeVo countCarModuleType(@Param("param") Map<String, Object> map);
CarInfo queryById(String id);
}

View File

@ -64,4 +64,19 @@
from car_info as t
WHERE t.project_sn=#{param.projectSn}
</select>
<select id="queryById" resultType="com.zhgd.xmgl.modules.car.entity.CarInfo">
SELECT
if(t.car_module_type=1 or t.car_module_type=2,wi.id_card,t.outside_driver_id_card) as outsideDriverIdCard,
if(t.car_module_type=1 or t.car_module_type=2,wi.worker_name,t.driver_worker_name) as driverWorkerName,
t.*,
b.car_type_name,
ei.enterprise_name
FROM car_info t LEFT JOIN car_type b ON (t.car_type=b.id and t.project_sn=b.project_sn)
left join enterprise_info ei on ei.id=t.enterprise_id
left join worker_info wi on t.driver_worker_id = wi.id and (t.car_module_type=1 or t.car_module_type=2)
left join (SELECT * FROM worker_info GROUP BY id_card) wi1 on wi1.id_card=t.outside_driver_id_card and
t.car_module_type=3
where t.id = #{id}
</select>
</mapper>

View File

@ -34,4 +34,6 @@ public interface ICarInfoService extends IService<CarInfo> {
void delete(Map<String, Object> map);
CountCarModuleTypeVo countCarModuleType(Map<String, Object> map);
CarInfo queryById(String id);
}

View File

@ -95,14 +95,15 @@ public class CarInfoServiceImpl extends ServiceImpl<CarInfoMapper, CarInfo> impl
}
addCarInfoForApprovalFlowIf(c);
Date now = new Date();
if (DateUtil.compare(carInfo.getReserveStartTime(), now) < 0 && DateUtil.compare(carInfo.getReserveEndTime(), now) > 0) {
log.info("车辆在有效期内,不需要更新,车牌号:{}", c.getCarNumber());
return;
}
Project project = projectMapper.selectOne(new LambdaQueryWrapper<Project>().eq(Project::getSyncHikvision, 1));
if (project == null) {
return;
}
if (DateUtil.compare(carInfo.getReserveStartTime(), now) < 0 && DateUtil.compare(carInfo.getReserveEndTime(), now) > 0) {
log.info("车辆在有效期内,不需要更新,车牌号:{}", c.getCarNumber());
asyncHikvision.handleAlarmCarForHikvision(carInfo);
return;
}
deleteOrUpdateCar(project, carInfo);
} else {
carInfoMapper.insert(c);
@ -300,4 +301,9 @@ public class CarInfoServiceImpl extends ServiceImpl<CarInfoMapper, CarInfo> impl
public CountCarModuleTypeVo countCarModuleType(Map<String, Object> map) {
return baseMapper.countCarModuleType(map);
}
@Override
public CarInfo queryById(String id) {
return baseMapper.queryById(id);
}
}

View File

@ -40,10 +40,10 @@ public class XzHikvisionSync implements Serializable {
@ApiModelProperty(value = "所属项目SN")
private java.lang.String projectSn;
/**
* 1人员2人员照片3人员权限4固定车辆5固定车辆群组6临时车
* 1人员2人员照片3人员权限4固定车辆5固定车辆群组6临时车7车辆布防
*/
@Excel(name = "1人员2人员照片3人员权限4固定车辆5固定车辆群组6临时车", width = 15)
@ApiModelProperty(value = "1人员2人员照片3人员权限4固定车辆5固定车辆群组6临时车")
@Excel(name = "1人员2人员照片3人员权限4固定车辆5固定车辆群组6临时车7车辆布防", width = 15)
@ApiModelProperty(value = "1人员2人员照片3人员权限4固定车辆5固定车辆群组6临时车7车辆布防")
private java.lang.Integer type;
/**
* 1新增2修改3删除

View File

@ -117,7 +117,6 @@ public class XzHikvisionSyncServiceImpl extends ServiceImpl<XzHikvisionSyncMappe
for (XzHikvisionSync xzHikvisionSync : newestList) {
Integer operate = xzHikvisionSync.getOperate();
Integer type = xzHikvisionSync.getType();
Integer isSuccess = xzHikvisionSync.getIsSuccess();
String devName = xzHikvisionSync.getDevName();
String deviceSn = xzHikvisionSync.getDeviceSn();
if (StrUtil.isBlank(deviceSn)) {
@ -143,6 +142,8 @@ public class XzHikvisionSyncServiceImpl extends ServiceImpl<XzHikvisionSyncMappe
return "固定车辆群组";
case 6:
return "临时车";
case 7:
return "黑名单";
}
return null;
}
@ -187,10 +188,6 @@ public class XzHikvisionSyncServiceImpl extends ServiceImpl<XzHikvisionSyncMappe
if (carInfo == null) {
return;
}
Project p = projectMapper.selectOne(new LambdaQueryWrapper<Project>()
.eq(Project::getProjectSn, carInfo.getProjectSn())
.eq(Project::getSyncHikvision, 1)
);
if (xzHikvisionSync.getOperate() == 1) {
hikvisionCall.saveCarInfoFromHikvision(carInfo);
} else if (xzHikvisionSync.getOperate() == 2) {

View File

@ -74,22 +74,22 @@ public class JinqianmaoTask {
@Scheduled(cron = "0 10 0 1 * ?")
@PostConstruct
public void setCallBack() {
List<CompanyConfig> companyConfigs = companyConfigMapper.selectList(new QueryWrapper<>());
for (CompanyConfig companyConfig:companyConfigs){
if (StringUtils.isBlank(companyConfig.getUrl())) {
return;
}
JSONObject jsonInfo = new JSONObject();
jsonInfo.put("URL", serverUrl + "/api/main/alarm");
HttpResponse httpResponse = HttpRequest.post(getUrl("setCallBack/alarm",companyConfig.getUrl(),companyConfig.getAk(),companyConfig.getSecret()))
.body(jsonInfo.toJSONString())
.timeout(5 * 60 * 1000)
.execute();
log.info("请求第三方接口setCallBack响应体{}", httpResponse);
if (!(httpResponse.getStatus() == HttpStatus.HTTP_OK && httpResponse.body() != null)) {
log.error("设置金钱猫项目回调地址失败!设置为:{}失败!", serverUrl);
}
}
List<CompanyConfig> companyConfigs = companyConfigMapper.selectList(new QueryWrapper<>());
for (CompanyConfig companyConfig : companyConfigs) {
if (StringUtils.isBlank(companyConfig.getUrl())) {
return;
}
JSONObject jsonInfo = new JSONObject();
jsonInfo.put("URL", serverUrl + "/api/main/alarm");
HttpResponse httpResponse = HttpRequest.post(getUrl("setCallBack/alarm", companyConfig.getUrl(), companyConfig.getAk(), companyConfig.getSecret()))
.body(jsonInfo.toJSONString())
.timeout(5 * 60 * 1000)
.execute();
log.info("请求第三方接口setCallBack响应体{}", httpResponse);
if (!(httpResponse.getStatus() == HttpStatus.HTTP_OK && httpResponse.body() != null)) {
log.error("设置金钱猫项目回调地址失败!设置为:{}失败!", serverUrl);
}
}
}
@ -128,72 +128,72 @@ public class JinqianmaoTask {
public void saveJqmDev() {
List<CompanyConfig> companyConfigs = companyConfigMapper.selectList(new QueryWrapper<>());
for (CompanyConfig companyConfig:companyConfigs){
List<Project> projectList = projectService.list(Wrappers.<Project>lambdaQuery().isNotNull(Project::getProjectNumber));
JSONObject jsonInfo = new JSONObject();
jsonInfo.put("StartIndex", 0);
jsonInfo.put("Count", 10000);
for (CompanyConfig companyConfig : companyConfigs) {
List<Project> projectList = projectService.list(Wrappers.<Project>lambdaQuery().isNotNull(Project::getProjectNumber));
JSONObject jsonInfo = new JSONObject();
jsonInfo.put("StartIndex", 0);
jsonInfo.put("Count", 10000);
for (Project project : projectList) {
String projectNumber = project.getProjectNumber();
jsonInfo.put("proId", projectNumber);
String url = getUrl("getDevList", companyConfig.getUrl(), companyConfig.getAk(), companyConfig.getSecret());
String body = jsonInfo.toJSONString();
log.info("saveJqmDev()调用httpurl{}body{}", url, body);
HttpResponse httpResponse = HttpRequest.post(url).body(body).timeout(5 * 60 * 1000).execute();
log.info("请求第三方接口getDevList响应体{}", httpResponse);
if (httpResponse.getStatus() == HttpStatus.HTTP_OK && httpResponse.body() != null) {
JSONObject response = JSON.parseObject(httpResponse.body());
log.info("请求第三方接口getDevList响应体Data{}", response.getJSONObject("data"));
if (response.getJSONObject("data") != null) {
JSONArray devList = response.getJSONObject("data").getJSONArray("data");
log.debug("devList{}", devList);
if (CollUtil.isNotEmpty(devList)) {
List<ProjectJqmDev> projectJqmDevList = new LinkedList<>();
String date = DateUtil.format(new Date(), DatePattern.NORM_DATETIME_PATTERN);
for (int i = 0; i < devList.size(); i++) {
JSONObject dev = devList.getJSONObject(i);
for (Project project : projectList) {
String projectNumber = project.getProjectNumber();
jsonInfo.put("proId", projectNumber);
String url = getUrl("getDevList", companyConfig.getUrl(), companyConfig.getAk(), companyConfig.getSecret());
String body = jsonInfo.toJSONString();
log.info("saveJqmDev()调用httpurl{}body{}", url, body);
HttpResponse httpResponse = HttpRequest.post(url).body(body).timeout(5 * 60 * 1000).execute();
log.info("请求第三方接口getDevList响应体{}", httpResponse);
if (httpResponse.getStatus() == HttpStatus.HTTP_OK && httpResponse.body() != null) {
JSONObject response = JSON.parseObject(httpResponse.body());
log.info("请求第三方接口getDevList响应体Data{}", response.getJSONObject("data"));
if (response.getJSONObject("data") != null) {
JSONArray devList = response.getJSONObject("data").getJSONArray("data");
log.debug("devList{}", devList);
if (CollUtil.isNotEmpty(devList)) {
List<ProjectJqmDev> projectJqmDevList = new LinkedList<>();
String date = DateUtil.format(new Date(), DatePattern.NORM_DATETIME_PATTERN);
for (int i = 0; i < devList.size(); i++) {
JSONObject dev = devList.getJSONObject(i);
String devId = dev.getString("devId");
String devType = dev.getString("devType");
Integer devStatus = dev.getInteger("devStatus");
String devName = dev.getString("devName");
ProjectJqmDev projectJqmDev = projectJqmDevService.getOne(Wrappers.lambdaQuery(ProjectJqmDev.class)
.eq(ProjectJqmDev::getDevSn, devId).eq(ProjectJqmDev::getProjectNumber, projectNumber));
String devId = dev.getString("devId");
String devType = dev.getString("devType");
Integer devStatus = dev.getInteger("devStatus");
String devName = dev.getString("devName");
ProjectJqmDev projectJqmDev = projectJqmDevService.getOne(Wrappers.lambdaQuery(ProjectJqmDev.class)
.eq(ProjectJqmDev::getDevSn, devId).eq(ProjectJqmDev::getProjectNumber, projectNumber));
Integer curFloor = getCurFloor(projectNumber, devId, companyConfig.getUrl(), companyConfig.getAk(), companyConfig.getSecret());
if (projectJqmDev != null) {
if (!Objects.equals(curFloor, projectJqmDev.getLastFloorCount())) {
asyncCommon.sendMqAndApp("楼层变动通知", "设备:" + devName + "的楼层发生变动,请及时进行巡检!", "楼层变动通知", project.getProjectSn(), "/pages/projectEnd/projectIndex/projectIndex");
Integer curFloor = getCurFloor(projectNumber, devId, companyConfig.getUrl(), companyConfig.getAk(), companyConfig.getSecret());
if (projectJqmDev != null) {
if (!Objects.equals(curFloor, projectJqmDev.getLastFloorCount())) {
asyncCommon.sendMqAndApp("楼层变动通知", "设备:" + devName + "的楼层发生变动,请及时进行巡检!", "楼层变动通知", project.getProjectSn(), "/pages/projectEnd/projectIndex/projectIndex");
}
LambdaUpdateWrapper<ProjectJqmDev> updateWrapper = Wrappers.lambdaUpdate(ProjectJqmDev.class)
.eq(ProjectJqmDev::getId, projectJqmDev.getId())
.set(ProjectJqmDev::getProjectSn, project.getProjectSn()).set(ProjectJqmDev::getProjectName, project.getProjectName())
.set(ProjectJqmDev::getDevType, devType).set(ProjectJqmDev::getDevName, devName)
.set(ProjectJqmDev::getDevStatus, devStatus).set(ProjectJqmDev::getLastFloorCount, curFloor == null ? 0 : curFloor)
.set(ProjectJqmDev::getUpdateDate, date);
projectJqmDevService.update(null, updateWrapper);
} else {
asyncCommon.sendMqAndApp("全景成像设备通知", "新增设备:" + devName + ",请及时进行巡检!", "全景成像设备通知", project.getProjectSn(), "/pages/projectEnd/projectIndex/projectIndex");
projectJqmDevList.add(new ProjectJqmDev(null, projectNumber, project.getProjectSn(), project.getProjectName(), devId, devName, devType, devStatus, curFloor, date, date));
}
LambdaUpdateWrapper<ProjectJqmDev> updateWrapper = Wrappers.lambdaUpdate(ProjectJqmDev.class)
.eq(ProjectJqmDev::getId, projectJqmDev.getId())
.set(ProjectJqmDev::getProjectSn, project.getProjectSn()).set(ProjectJqmDev::getProjectName, project.getProjectName())
.set(ProjectJqmDev::getDevType, devType).set(ProjectJqmDev::getDevName, devName)
.set(ProjectJqmDev::getDevStatus, devStatus).set(ProjectJqmDev::getLastFloorCount, curFloor == null ? 0 : curFloor)
.set(ProjectJqmDev::getUpdateDate, date);
projectJqmDevService.update(null, updateWrapper);
} else {
asyncCommon.sendMqAndApp("全景成像设备通知", "新增设备:" + devName + ",请及时进行巡检!", "全景成像设备通知", project.getProjectSn(), "/pages/projectEnd/projectIndex/projectIndex");
projectJqmDevList.add(new ProjectJqmDev(null, projectNumber, project.getProjectSn(), project.getProjectName(), devId, devName, devType, devStatus, curFloor, date, date));
}
log.debug("saveBatchprojectJqmDevList:{}", projectJqmDevList);
projectJqmDevService.saveBatch(projectJqmDevList);
}
log.debug("saveBatchprojectJqmDevList:{}", projectJqmDevList);
projectJqmDevService.saveBatch(projectJqmDevList);
} else {
log.error("调用第三方接口错误:{}", response);
}
} else {
log.error("调用第三方接口错误:{}", response);
}
}
}
}
}
public Integer getCurFloor(String proId, String devId , String url,String ak,String secret) {
public Integer getCurFloor(String proId, String devId, String url, String ak, String secret) {
JSONObject jsonInfo = new JSONObject();
jsonInfo.put("proId", proId);
jsonInfo.put("devId", devId);
HttpResponse httpResponse = HttpRequest.post(getUrl("getCurFloor",url,ak,secret))
HttpResponse httpResponse = HttpRequest.post(getUrl("getCurFloor", url, ak, secret))
.body(jsonInfo.toJSONString())
.timeout(5 * 60 * 1000)
.execute();
@ -210,7 +210,7 @@ public class JinqianmaoTask {
}
private String getUrl(String mappingUrl , String URL, String AK , String Secret) {
private String getUrl(String mappingUrl, String URL, String AK, String Secret) {
StringBuilder url = new StringBuilder();
url.append(URL);
url.append("/api/main/");
@ -227,7 +227,7 @@ public class JinqianmaoTask {
url.append("&");
url.append("token");
url.append("=");
url.append(JinqianmaoUtil.getTokenUrl(currentTimeMillis,AK,Secret));
url.append(JinqianmaoUtil.getTokenUrl(currentTimeMillis, AK, Secret));
//根据链接获取到项目信息
return url.toString();
}