| | |
| | | import com.hikvision.artemis.sdk.config.ArtemisConfig; |
| | | import io.swagger.models.auth.In; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import okhttp3.*; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import com.github.xiaoymin.knife4j.core.util.CollectionUtils; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.io.IOException; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | |
| | | |
| | | @Autowired |
| | | private DeviceMapper deviceMapper; |
| | | |
| | | @Autowired |
| | | private InterfaceLogMapper interfaceLogMapper; |
| | | |
| | | @Autowired |
| | | private MemberMapper memberMapper; |
| | |
| | | // StringUtils.join(memberList.stream().filter(i->StringUtils.isNotBlank(i.getDdId())).map(i->i.getDdId()).collect(Collectors.toList()),","), |
| | | // dingTalk.getAlarmNoticeMsg(warningPush.getRegion(),DateUtil.getCurrDateTime(),content)); |
| | | // warningPush.setStatus(noticeFlag?Constants.ONE:Constants.TWO); |
| | | List<String> ddUserIdList = memberList.stream().filter(i->StringUtils.isNotBlank(i.getDdId())).map(i->i.getDdId()).collect(Collectors.toList()); |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ddUserIdList)){ |
| | | for (String ddUserId:ddUserIdList) { |
| | | this.getJDYData(warningEvent,ddUserId, |
| | | systemDictDataBiz.queryByCode(Constants.JDY_CONFIG,Constants.API_KEY).getCode(), |
| | | systemDictDataBiz.queryByCode(Constants.JDY_CONFIG,Constants.APPID).getCode(), |
| | | systemDictDataBiz.queryByCode(Constants.JDY_CONFIG,Constants.ENTRY_ID).getCode() |
| | | ); |
| | | } |
| | | } |
| | | } |
| | | warningPushMapper.insert(warningPush); |
| | | warningEvent.setStatus(Constants.ONE); |
| | |
| | | warningEvent.setStatus(Constants.TWO); |
| | | warningEventMapper.updateById(warningEvent); |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | |
| | | public void sendDeviceNotice(WarningRule warningRule){ |
| | | if(Constants.equalsInteger(warningRule.getDeviceNotice(),Constants.ONE)&&StringUtils.isNotBlank(warningRule.getDeviceIds())&&StringUtils.isNotBlank(warningRule.getDeviceNoticeContent())){ |
| | | if(Constants.equalsInteger(warningRule.getDeviceNotice(),Constants.ONE) |
| | | &&StringUtils.isNotBlank(warningRule.getDeviceIds()) |
| | | &&StringUtils.isNotBlank(warningRule.getDeviceNoticeContent())){ |
| | | List<Device> deviceList = deviceMapper.selectList(new QueryWrapper<Device>() |
| | | .lambda() |
| | | .eq(Device::getStatus,Constants.ZERO) |
| | | .eq(Device::getId,Arrays.asList(warningRule.getDeviceIds().split(","))) |
| | | .in(Device::getId,Arrays.asList(warningRule.getDeviceIds().split(","))) |
| | | ); |
| | | if(CollectionUtils.isNotEmpty(deviceList)){ |
| | | for (Device device:deviceList) { |
| | | device.setSendInfo(warningRule.getDeviceNoticeContent()); |
| | | DeviceServiceImpl.sendBroadcaseBobaoHttpBiz(device); |
| | | DeviceServiceImpl.sendBroadcaseBobaoHttpBiz(device,interfaceLogMapper); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 简道云消息推送 定制 |
| | | * @param warningEvent |
| | | * @param ddUserId 接收人 钉钉主键 |
| | | * @param jdyApiKey 简单云APIKEY |
| | | * @param appid 应用ID |
| | | * @param entryId 表单ID |
| | | * @throws IOException |
| | | */ |
| | | public void getJDYData(WarningEvent warningEvent,String ddUserId,String jdyApiKey,String appid,String entryId) throws IOException { |
| | | Map<String,Object> map = new HashMap<>(); |
| | | map.put("app_id",appid); |
| | | map.put("entry_id",entryId); |
| | | map.put("is_start_workflow","false"); |
| | | map.put("is_start_trigger","true"); |
| | | map.put("data",this.getJdyChildData(warningEvent,ddUserId)); |
| | | |
| | | OkHttpClient client = new OkHttpClient().newBuilder() |
| | | .build(); |
| | | MediaType mediaType = MediaType.parse("application/json"); |
| | | RequestBody body = RequestBody.create(mediaType, JSONObject.toJSONString(map));//"{\"data\":{\"notice_time\":{\"value\":\"2025-12-23 04:56:29\"},\"title\":{\"value\":\"跨越生产线\"},\"user\":{\"value\":\"1568490244651036\"},\"content\":{\"value\":\"跨越生产线-芜湖物流中心北围墙过道东\"},\"notice_type\":{\"value\":\"跨越生产线\"}},\"is_start_trigger\":\"true\",\"app_id\":\"6909d0fbdb93b068192dc4a9\",\"entry_id\":\"694a19ecf57e071788efc20b\",\"is_start_workflow\":\"false\"}"); |
| | | log.error("简道云发送通知请求信息" + JSONObject.toJSONString(map)); |
| | | Request request = new Request.Builder() |
| | | .url("https://api.jiandaoyun.com/api/v5/app/entry/data/create") |
| | | .method("POST", body) |
| | | .addHeader("Authorization", "Bearer "+jdyApiKey) |
| | | .addHeader("Content-Type", "application/json") |
| | | .build(); |
| | | Response response = client.newCall(request).execute(); |
| | | |
| | | log.error("简道云发送通知返回信息" + JSONObject.toJSONString(response)); |
| | | |
| | | } |
| | | |
| | | |
| | | public Map<String,Object> getJdyChildData(WarningEvent warningEvent,String ddUserId){ |
| | | Map<String,Object> dataMap = new HashMap<>(); |
| | | |
| | | Map<String,Object> title = new HashMap<>(); |
| | | title.put("value",warningEvent.getTitle()); |
| | | dataMap.put("title",title); |
| | | |
| | | Map<String,Object> user = new HashMap<>(); |
| | | user.put("value",ddUserId); |
| | | dataMap.put("user",user); |
| | | |
| | | Map<String,Object> notice_time = new HashMap<>(); |
| | | notice_time.put("value",DateUtil.getCurrDateTime()); |
| | | dataMap.put("notice_time",notice_time); |
| | | |
| | | Map<String,Object> notice_type = new HashMap<>(); |
| | | notice_type.put("value",warningEvent.getTitle()); |
| | | dataMap.put("notice_type",notice_type); |
| | | |
| | | Map<String,Object> content = new HashMap<>(); |
| | | content.put("value",warningEvent.getContent()); |
| | | dataMap.put("content",content); |
| | | |
| | | return dataMap; |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | }*/ |
| | | |
| | | public List<Integer> processWarnFront(Constants.WarningConfig warningConfig){ |
| | | public List<Integer> processWarnFrontWithEvent(Constants.WarningConfig warningConfig, List<WarningEvent> returnEventList){ |
| | | |
| | | List<WarningRuleDetail> warningRuleDetailList = warningRuleDetailMapper.selectJoinList(WarningRuleDetail.class,new MPJLambdaWrapper<WarningRuleDetail>() |
| | | .selectAll(WarningRuleDetail.class) |
| | |
| | | return new ArrayList<>(); |
| | | } |
| | | //所有报警规则配置信息 |
| | | List<Integer> ruleIdList = warningRuleDetailList.stream().map(i->i.getRuleId()).collect(Collectors.toList());; |
| | | List<Integer> ruleIdList = warningRuleDetailList.stream().map(i->i.getRuleId()).collect(Collectors.toList()); |
| | | Set<Integer> ruleIdSet = new HashSet<>(ruleIdList); |
| | | if(CollectionUtils.isNotEmpty(ruleIdSet)){ |
| | | List<Integer> resultList = new ArrayList<>(); |
| | |
| | | ); |
| | | if(this.processWarnFlag(wList,warningEventList)){ |
| | | resultList.add(ruleId); |
| | | if(returnEventList != null){ |
| | | returnEventList.addAll(warningEventList); |
| | | } |
| | | }; |
| | | }else{ |
| | | List<WarningRuleDetail> wList = warningRuleDetails.stream().filter(i->i.getCode().equals(warningConfig.getKey()+"")).collect(Collectors.toList()); |
| | |
| | | ); |
| | | if(this.processWarnFlag(wList,warningEventList)){ |
| | | resultList.add(ruleId); |
| | | if(returnEventList != null){ |
| | | returnEventList.addAll(warningEventList); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | return resultList; |
| | | } |
| | | return new ArrayList<>(); |
| | | } |
| | | |
| | | public List<Integer> processWarnFront(Constants.WarningConfig warningConfig){ |
| | | |
| | | return this.processWarnFrontWithEvent(warningConfig,null); |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | |
| | | return false; |
| | | } |
| | | for (WarningRuleDetail warningRuleDetail:warningRuleDetails) { |
| | | if(Objects.nonNull(warningRuleDetail.getRegionId())){ |
| | | if(Objects.nonNull(warningRuleDetail.getDeviceId())){ |
| | | if(warningEventList.stream().filter(i->Constants.equalsInteger(i.getWarningId(),warningRuleDetail.getWarningId()) |
| | | && StringUtils.isNotBlank(i.getRegionId()) && i.getRegionId().equals(warningRuleDetail.getRegionId()) |
| | | && StringUtils.isNotBlank(i.getDeviceId()) && i.getDeviceId().equals(warningRuleDetail.getDeviceId()) |
| | | ).collect(Collectors.toList()).size()<=Constants.ZERO){ |
| | | return false; |
| | | } |
| | |
| | | // StringUtils.join(memberList.stream().filter(i->StringUtils.isNotBlank(i.getDdId())).map(i->i.getDdId()).collect(Collectors.toList()),","), |
| | | // dingTalk.getAlarmNoticeMsg(warningPush.getRegion(),DateUtil.getCurrDateTime(),warningConfig.getInfo())); |
| | | // warningPush.setStatus(noticeFlag?Constants.ONE:Constants.TWO); |
| | | List<String> ddUserIdList = memberList.stream().filter(i->StringUtils.isNotBlank(i.getDdId())).map(i->i.getDdId()).collect(Collectors.toList()); |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ddUserIdList)){ |
| | | for (String ddUserId:ddUserIdList) { |
| | | this.getJDYData(warningEvent,ddUserId, |
| | | systemDictDataBiz.queryByCode(Constants.JDY_CONFIG,Constants.API_KEY).getCode(), |
| | | systemDictDataBiz.queryByCode(Constants.JDY_CONFIG,Constants.APPID).getCode(), |
| | | systemDictDataBiz.queryByCode(Constants.JDY_CONFIG,Constants.ENTRY_ID).getCode() |
| | | |
| | | ); |
| | | } |
| | | } |
| | | } |
| | | warningPushMapper.insert(warningPush); |
| | | warningEvent.setStatus(Constants.ONE); |