diff --git a/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java b/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java index 6344963fd..b874c86a6 100644 --- a/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java +++ b/src/main/java/com/zhgd/xmgl/async/AsyncHikvision.java @@ -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().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); } diff --git a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java index 13623df35..2ccaec574 100644 --- a/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java +++ b/src/main/java/com/zhgd/xmgl/call/HikvisionCall.java @@ -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() .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 { diff --git a/src/main/java/com/zhgd/xmgl/modules/car/controller/CarInfoController.java b/src/main/java/com/zhgd/xmgl/modules/car/controller/CarInfoController.java index 040e6f5fa..2c9473dea 100644 --- a/src/main/java/com/zhgd/xmgl/modules/car/controller/CarInfoController.java +++ b/src/main/java/com/zhgd/xmgl/modules/car/controller/CarInfoController.java @@ -242,15 +242,8 @@ public class CarInfoController { @ApiImplicitParam(name = "id", value = "车辆黑白名单管理ID", paramType = "body", required = true, dataType = "Integer") @PostMapping(value = "/queryById") public Result queryById(@RequestBody Map map) { - Result result = new Result(); - 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") diff --git a/src/main/java/com/zhgd/xmgl/modules/car/mapper/CarInfoMapper.java b/src/main/java/com/zhgd/xmgl/modules/car/mapper/CarInfoMapper.java index a06888cdf..3f85f7d8c 100644 --- a/src/main/java/com/zhgd/xmgl/modules/car/mapper/CarInfoMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/car/mapper/CarInfoMapper.java @@ -32,4 +32,6 @@ public interface CarInfoMapper extends BaseMapper { String getCarTypeName(CarInfo carInfo); CountCarModuleTypeVo countCarModuleType(@Param("param") Map map); + + CarInfo queryById(String id); } diff --git a/src/main/java/com/zhgd/xmgl/modules/car/mapper/xml/CarInfoMapper.xml b/src/main/java/com/zhgd/xmgl/modules/car/mapper/xml/CarInfoMapper.xml index 14534e954..6a8be62cc 100644 --- a/src/main/java/com/zhgd/xmgl/modules/car/mapper/xml/CarInfoMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/car/mapper/xml/CarInfoMapper.xml @@ -64,4 +64,19 @@ from car_info as t WHERE t.project_sn=#{param.projectSn} + + diff --git a/src/main/java/com/zhgd/xmgl/modules/car/service/ICarInfoService.java b/src/main/java/com/zhgd/xmgl/modules/car/service/ICarInfoService.java index 80abfb02b..622f94f42 100644 --- a/src/main/java/com/zhgd/xmgl/modules/car/service/ICarInfoService.java +++ b/src/main/java/com/zhgd/xmgl/modules/car/service/ICarInfoService.java @@ -34,4 +34,6 @@ public interface ICarInfoService extends IService { void delete(Map map); CountCarModuleTypeVo countCarModuleType(Map map); + + CarInfo queryById(String id); } diff --git a/src/main/java/com/zhgd/xmgl/modules/car/service/impl/CarInfoServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/car/service/impl/CarInfoServiceImpl.java index d0d689d74..027ba8d06 100644 --- a/src/main/java/com/zhgd/xmgl/modules/car/service/impl/CarInfoServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/car/service/impl/CarInfoServiceImpl.java @@ -95,14 +95,15 @@ public class CarInfoServiceImpl extends ServiceImpl 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().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 impl public CountCarModuleTypeVo countCarModuleType(Map map) { return baseMapper.countCarModuleType(map); } + + @Override + public CarInfo queryById(String id) { + return baseMapper.queryById(id); + } } diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/entity/XzHikvisionSync.java b/src/main/java/com/zhgd/xmgl/modules/xz/entity/XzHikvisionSync.java index d2d58e3fa..cec6897bf 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/entity/XzHikvisionSync.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz/entity/XzHikvisionSync.java @@ -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删除 diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzHikvisionSyncServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzHikvisionSyncServiceImpl.java index 11d7bb305..802cbc4bf 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzHikvisionSyncServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzHikvisionSyncServiceImpl.java @@ -117,7 +117,6 @@ public class XzHikvisionSyncServiceImpl extends ServiceImpl() - .eq(Project::getProjectSn, carInfo.getProjectSn()) - .eq(Project::getSyncHikvision, 1) - ); if (xzHikvisionSync.getOperate() == 1) { hikvisionCall.saveCarInfoFromHikvision(carInfo); } else if (xzHikvisionSync.getOperate() == 2) { diff --git a/src/main/java/com/zhgd/xmgl/task/JinqianmaoTask.java b/src/main/java/com/zhgd/xmgl/task/JinqianmaoTask.java index 7a4b519d1..4e17062fa 100644 --- a/src/main/java/com/zhgd/xmgl/task/JinqianmaoTask.java +++ b/src/main/java/com/zhgd/xmgl/task/JinqianmaoTask.java @@ -74,22 +74,22 @@ public class JinqianmaoTask { @Scheduled(cron = "0 10 0 1 * ?") @PostConstruct public void setCallBack() { - List 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 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 companyConfigs = companyConfigMapper.selectList(new QueryWrapper<>()); - for (CompanyConfig companyConfig:companyConfigs){ - List projectList = projectService.list(Wrappers.lambdaQuery().isNotNull(Project::getProjectNumber)); - JSONObject jsonInfo = new JSONObject(); - jsonInfo.put("StartIndex", 0); - jsonInfo.put("Count", 10000); + for (CompanyConfig companyConfig : companyConfigs) { + List projectList = projectService.list(Wrappers.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()调用http:url:{};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 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()调用http:url:{};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 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 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 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("saveBatch:projectJqmDevList:{}", projectJqmDevList); + projectJqmDevService.saveBatch(projectJqmDevList); } - log.debug("saveBatch:projectJqmDevList:{}", 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(); }