Merge remote-tracking branch 'origin/jtdev' into jtdev
33 files modified
2 files renamed
7 files added
| | |
| | | public class AlarmRecord extends BaseEntity { |
| | | |
| | | /** |
| | | * 测站名称 |
| | | */ |
| | | private String alarmSurveyStationName; |
| | | |
| | | /** |
| | | * 测站类型 |
| | | */ |
| | | private String surveyStationType; |
| | |
| | | private String alarmSurveyStationCode; |
| | | |
| | | /** |
| | | * 测站新旧 |
| | | * 临时编号-每次任务执行都不一样 |
| | | */ |
| | | private String alarmSurveyStationNewOld; |
| | | private String tempCode; |
| | | } |
| | |
| | | */ |
| | | public static final String taskDetailUrl = "/api/task/callDetail.json"; |
| | | |
| | | /** |
| | | * key |
| | | */ |
| | | public static final String call_task_key = "blade:sm:call"; |
| | | |
| | | } |
| New file |
| | |
| | | package cn.gistack.sm.resDataCheck.feign; |
| | | |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springframework.cloud.openfeign.FeignClient; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | | |
| | | /** |
| | | * @PROJECT_NAME: skjcmanager |
| | | * @DESCRIPTION: |
| | | * @USER: aix |
| | | * @DATE: 2023/7/3 19:03 |
| | | */ |
| | | @FeignClient( |
| | | value = "blade-sm", |
| | | fallback = RulesClientClientFallback.class |
| | | ) |
| | | public interface IRulesClient { |
| | | |
| | | String API_PREFIX = "/client"; |
| | | String CREATE_DATA_RULES = API_PREFIX + "/createDataRules"; |
| | | |
| | | @GetMapping(CREATE_DATA_RULES) |
| | | R createDataRules(Long id); |
| | | |
| | | } |
| New file |
| | |
| | | package cn.gistack.sm.resDataCheck.feign; |
| | | |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | | |
| | | /** |
| | | * @PROJECT_NAME: skjcmanager |
| | | * @DESCRIPTION: |
| | | * @USER: aix |
| | | * @DATE: 2023/7/3 19:04 |
| | | */ |
| | | @Component |
| | | public class RulesClientClientFallback implements IRulesClient{ |
| | | |
| | | @Override |
| | | public R createDataRules(Long id) { |
| | | return R.fail("获取数据失败"); |
| | | } |
| | | } |
| | |
| | | /** |
| | | * 根据水库编号查询除责任人之外的人员信息 |
| | | * @param res_cd |
| | | * @param areaList |
| | | * @return |
| | | */ |
| | | @GetMapping(GET_USER_LIST_BY_RES_GUID) |
| | | List<PersonVO> getUserListByResGuid(@RequestParam("res_cd") String res_cd); |
| | | List<PersonVO> getUserListByResGuid(@RequestParam("res_cd") String res_cd, @RequestParam("areaList") String areaList); |
| | | |
| | | @PostMapping(SYNCHARONIZATION_ADD_USER) |
| | | int syncharonization_add_user(); |
| | |
| | | package cn.gistack.sm.sjztmd.feign; |
| | | |
| | | import cn.gistack.sm.sjztmd.entity.AttResManagePerson; |
| | | import cn.gistack.sm.sjztmd.vo.PersonVO; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.List; |
| | | import java.util.Set; |
| | | |
| | |
| | | } |
| | | |
| | | @Override |
| | | public List<PersonVO> getUserListByResGuid(String res_cd) { |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public int syncharonization_add_user() { |
| | | return 0; |
| | | } |
| | |
| | | public List<PersonVO> getCityCountyPersonListByResGuid(String res_cd) { |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public List<PersonVO> getUserListByResGuid(String res_cd, String areaList) { |
| | | return null; |
| | | } |
| | | } |
| | |
| | | <artifactId>skjcmanager-user-api</artifactId> |
| | | <version>3.0.1.RELEASE</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>cn.gistack</groupId> |
| | | <artifactId>skjcmanager-system-api</artifactId> |
| | | <version>3.0.1.RELEASE</version> |
| | | </dependency> |
| | | </dependencies> |
| | | |
| | | <build> |
| | |
| | | left join SJZT_MD."att_res_base" arb on arb."guid" = sar.reservoir_number |
| | | left join SJZT_MD."att_ad_base" aab on aab."guid" = arb."interior_ad_guid" |
| | | where sar.is_deleted = 0 |
| | | <if test="alarmRecord.alarmSurveyStationName!=null and alarmRecord.alarmSurveyStationName!=''"> |
| | | and alarm_survey_station_name like concat(concat('%',#{alarmRecord.alarmSurveyStationName}),'%') |
| | | </if> |
| | | <if test="alarmRecord.reservoirName!=null and alarmRecord.reservoirName!=''"> |
| | | and sar.reservoir_name like concat(concat('%',#{alarmRecord.reservoirName}),'%') |
| | | and arb."name" like concat('%',#{alarmRecord.reservoirName},'%') |
| | | </if> |
| | | <if test="alarmRecord.type!=null and alarmRecord.type!=''"> |
| | | and sar1.type = #{alarmRecord.type} |
| | |
| | | |
| | | <!--自定义分页列表查询--> |
| | | <select id="selectAlarmRulePage" resultType="cn.gistack.alerts.alarmRule.vo.AlarmRuleVO"> |
| | | select sar.* from YWXT.sm_alarm_rule sar where sar.is_deleted = 0 |
| | | select sar.* |
| | | from YWXT.sm_alarm_rule sar |
| | | where sar.is_deleted = 0 |
| | | <if test="alarmRule.type!=null and alarmRule.type!=''"> |
| | | and sar.type = #{alarmRule.type} |
| | | </if> |
| | |
| | | import cn.gistack.alerts.alarmRule.mapper.AlarmRuleMapper; |
| | | import cn.gistack.alerts.alarmRule.service.AlarmRuleService; |
| | | import cn.gistack.alerts.alarmRule.vo.AlarmRuleVO; |
| | | import cn.gistack.system.feign.ISysClient; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import org.springblade.core.mp.base.BaseServiceImpl; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 告警规则服务实现层 |
| | |
| | | */ |
| | | @Service |
| | | public class AlarmRuleServiceImpl extends BaseServiceImpl<AlarmRuleMapper, AlarmRule> implements AlarmRuleService { |
| | | |
| | | @Autowired |
| | | private ISysClient sysClient; |
| | | |
| | | /** |
| | | * 自定义分页列表查询 |
| | |
| | | @Override |
| | | public Object selectAlarmRulePage(IPage<AlarmRuleVO> page, AlarmRuleVO alarmRule) { |
| | | if (null != alarmRule.getIsExport()){ |
| | | return baseMapper.selectAlarmRulePage(null,alarmRule); |
| | | List<AlarmRuleVO> alarmRuleVOS = baseMapper.selectAlarmRulePage(null, alarmRule); |
| | | for (AlarmRuleVO alarmRuleVO : alarmRuleVOS) { |
| | | alarmRuleVO.setAlarmPerson(String.join(",",sysClient.getRoleNames(alarmRuleVO.getAlarmPerson()).getData())); |
| | | } |
| | | return alarmRuleVOS; |
| | | } |
| | | return page.setRecords(baseMapper.selectAlarmRulePage(page,alarmRule)); |
| | | List<AlarmRuleVO> alarmRuleVOS = baseMapper.selectAlarmRulePage(page, alarmRule); |
| | | for (AlarmRuleVO alarmRuleVO : alarmRuleVOS) { |
| | | alarmRuleVO.setAlarmPerson(String.join(",",sysClient.getRoleNames(alarmRuleVO.getAlarmPerson()).getData())); |
| | | } |
| | | return page.setRecords(alarmRuleVOS); |
| | | } |
| | | |
| | | /** |
| | |
| | | add("over_z"); |
| | | }}; |
| | | |
| | | /** |
| | | * 水位初次超汛限告警(水库技术责任人、巡查责任人) |
| | | */ |
| | | public static List<String> waterMoreDesignList = new ArrayList<String>() |
| | | {{ |
| | | add("town_nm"); |
| | | add("res_nm"); |
| | | add("rz"); |
| | | add("over_des_wtr_level"); |
| | | add("diff_dam"); |
| | | add("drp_24"); |
| | | }}; |
| | | |
| | | } |
| | |
| | | */ |
| | | public static final String over_z_res_api = "/services/1234567890ABCDEFGHIJKLMN/over_z_res"; |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | public static final String over_des_rz_warn_api = "/services/1234567890ABCDEFGHIJKLMN/over_des_rz/warn"; |
| | | |
| | | } |
| New file |
| | |
| | | package cn.gistack.alerts.notice.service.impl; |
| | | |
| | | import cn.gistack.alerts.alarmRule.entity.AlarmRecord; |
| | | import cn.gistack.alerts.alarmRule.entity.AlarmRule; |
| | | import cn.gistack.alerts.notice.constant.ZtApiDataColumnConstant; |
| | | import cn.gistack.alerts.notice.constant.ZtApiUrlConstant; |
| | | import cn.gistack.alerts.sms.service.SmsService; |
| | | import cn.gistack.alerts.sms.vo.SmsRequestTemplate; |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.scheduling.annotation.Async; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | @Component |
| | | public class AsyncNoticeHandle { |
| | | |
| | | |
| | | @Autowired |
| | | private NoticeHandle noticeHandle; |
| | | |
| | | @Autowired |
| | | private SmsService smsService; |
| | | |
| | | /** |
| | | * 异步发送告警信息 |
| | | * @param templateId |
| | | * @param uuid |
| | | * @param alarmRule |
| | | * @return |
| | | */ |
| | | @Async |
| | | public Map<String, Object> handleAlarmInfo(String templateId, String uuid, AlarmRule alarmRule) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | // 调用中台服务接口查询数据 |
| | | JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.over_des_rz_warn_api); |
| | | // 只发短信,将发短信信息组装好 |
| | | SmsRequestTemplate smsRequestTemplate |
| | | = noticeHandle.getSendSmsTemplate(ztData, templateId, alarmRule, ZtApiDataColumnConstant.waterMoreDesignList, true, null); |
| | | // 拼接后面内容 |
| | | if (smsRequestTemplate.getPersonVOList().size() > 0) { |
| | | for (List<String> list : smsRequestTemplate.getTemplateContent()) { |
| | | // 依次添加行政责任人,主管部门责任人,技术责任人,巡查责任人信息(姓名,联系电话) |
| | | noticeHandle.addWaterMoreDesignPatrolTechnologyInfo(list, "1,2,4,5"); |
| | | // 拼接市县水利部人员姓名及联系方式 |
| | | noticeHandle.addCityCountyBusinessPersonInfo(list); |
| | | // 保存告警记录信息 |
| | | AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list, alarmRule, uuid); |
| | | if (null != alarmRecord) { |
| | | list.add(alarmRecord.getId().toString()); |
| | | } |
| | | } |
| | | map = smsService.sendSignMsg(smsRequestTemplate); |
| | | // 调用短信服务 |
| | | return map; |
| | | } |
| | | return map; |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | package cn.gistack.alerts.notice.service.impl; |
| | | |
| | | import cn.gistack.alerts.alarmRule.entity.AlarmRecord; |
| | | import cn.gistack.alerts.alarmRule.entity.AlarmRule; |
| | | import cn.gistack.alerts.alarmRule.service.AlarmRecordService; |
| | | import cn.gistack.alerts.notice.constant.ZtApiUrlConstant; |
| | | import cn.gistack.alerts.notice.constant.ZtConfigConstant; |
| | | import cn.gistack.alerts.notice.enums.PersonEnum; |
| | | import cn.gistack.alerts.notice.util.FormatUtil; |
| | | import cn.gistack.alerts.sms.entity.SmsTemplate; |
| | | import cn.gistack.alerts.sms.service.ISmsTemplateService; |
| | | import cn.gistack.alerts.sms.vo.SmsRequestTemplate; |
| | | import cn.gistack.common.utils.SpringContextUtil; |
| | | import cn.gistack.sm.sjztmd.feign.IAttResManagePersonClient; |
| | | import cn.gistack.sm.sjztmd.vo.PersonVO; |
| | | import cn.gistack.system.feign.ISysClient; |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import org.jetbrains.annotations.NotNull; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.http.HttpEntity; |
| | | import org.springframework.http.HttpHeaders; |
| | | import org.springframework.http.HttpMethod; |
| | | import org.springframework.http.ResponseEntity; |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.util.MultiValueMap; |
| | | import org.springframework.web.client.RestTemplate; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | @Component |
| | | public class NoticeHandle { |
| | | |
| | | |
| | | @Autowired |
| | | private AlarmRecordService alarmRecordService; |
| | | |
| | | @Autowired |
| | | private ISmsTemplateService smsTemplateService; |
| | | |
| | | @Autowired |
| | | private IAttResManagePersonClient attResManagePersonClient; |
| | | |
| | | @Autowired |
| | | private ISysClient sysClient; |
| | | |
| | | @Autowired |
| | | private RestTemplate restTemplate; |
| | | |
| | | |
| | | /** |
| | | * 短信发送数据组装 |
| | | * |
| | | * @param jsonArray |
| | | * @param templateId |
| | | * @param alarmRule |
| | | * @param columnsList 列名集合信息 |
| | | * @param flag 是否包含日期 |
| | | * @param adCode 行政区编号 |
| | | * @return |
| | | */ |
| | | public SmsRequestTemplate getSendSmsTemplate(JSONArray jsonArray, |
| | | String templateId, |
| | | AlarmRule alarmRule, |
| | | List<String> columnsList, |
| | | Boolean flag, |
| | | String adCode) { |
| | | // 通过模板id 查询模板相关信息 |
| | | SmsTemplate smsTemplate = smsTemplateService.getOne(new QueryWrapper<SmsTemplate>().eq("template_id",templateId).eq("is_deleted",0)); |
| | | if (null != smsTemplate) { |
| | | SmsRequestTemplate smsRequestTemplate = new SmsRequestTemplate(); |
| | | // 设置模板信息 |
| | | smsRequestTemplate.setSmsTemplate(smsTemplate); |
| | | // 解析模板并设置 title |
| | | smsRequestTemplate.setTitle(FormatUtil.composeMessage(smsTemplate.getContent())); |
| | | // 列名数据转换 |
| | | getColumnData(jsonArray, columnsList,smsRequestTemplate,alarmRule,flag,adCode); |
| | | //返回 |
| | | return smsRequestTemplate; |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 列名数据转换 |
| | | * @param jsonArray |
| | | * @param columnsList |
| | | * @param smsRequestTemplate |
| | | * @param flag |
| | | * @param adCode |
| | | * @return |
| | | */ |
| | | private void getColumnData(JSONArray jsonArray, |
| | | List<String> columnsList, |
| | | SmsRequestTemplate smsRequestTemplate, |
| | | AlarmRule alarmRule, |
| | | Boolean flag, |
| | | String adCode) { |
| | | List<PersonVO> personLists = new ArrayList<>(); |
| | | List<List<String>> lists = new ArrayList<>(); |
| | | for (int i = 0; i < jsonArray.size(); i++) { |
| | | if (null!=adCode){ |
| | | // city_cd,county_cd 过滤数据 |
| | | String county_cd = jsonArray.getJSONObject(i).getString("county_cd"); |
| | | if (county_cd.equals(adCode)) { |
| | | jointData(jsonArray, columnsList, alarmRule, flag, personLists, lists, i); |
| | | } |
| | | }else { |
| | | jointData(jsonArray, columnsList, alarmRule, flag, personLists, lists, i); |
| | | } |
| | | } |
| | | // 设置信息 |
| | | smsRequestTemplate.setPersonVOList(personLists); |
| | | smsRequestTemplate.setTemplateContent(lists); |
| | | } |
| | | |
| | | /** |
| | | * 拼接列数据设置告警人员信息 |
| | | * @param jsonArray |
| | | * @param columnsList |
| | | * @param alarmRule |
| | | * @param flag |
| | | * @param personLists |
| | | * @param lists |
| | | * @param i |
| | | * @return |
| | | */ |
| | | private void jointData(JSONArray jsonArray, List<String> columnsList, AlarmRule alarmRule, Boolean flag, List<PersonVO> personLists, List<List<String>> lists, int i) { |
| | | // 根据水库编号,所在区域查询需要发送的人员手机号及设置 |
| | | String res_cd = jsonArray.getJSONObject(i).getString("res_cd"); |
| | | // 判断时间是否存在 |
| | | String tm = jsonArray.getJSONObject(i).getString("tm"); |
| | | String day = ""; |
| | | String hour = ""; |
| | | String minute = ""; |
| | | if (null != tm && !tm.equals("") && flag) { |
| | | flag = true; |
| | | // 加入天,时,分 |
| | | day = tm.substring(8, 10); |
| | | hour = tm.substring(11, 13); |
| | | minute = tm.substring(14, 16); |
| | | } else { |
| | | flag = false; |
| | | } |
| | | // 获取告警人员信息 |
| | | getAlarmPersonList(jsonArray, columnsList, alarmRule, flag, personLists, lists, i, res_cd, day, hour, minute); |
| | | } |
| | | |
| | | /** |
| | | * 获取告警人员信息 |
| | | * @param jsonArray |
| | | * @param columnsList |
| | | * @param alarmRule |
| | | * @param flag |
| | | * @param personLists |
| | | * @param lists |
| | | * @param i |
| | | * @param res_cd |
| | | * @param day |
| | | * @param hour |
| | | * @param minute |
| | | */ |
| | | private void getAlarmPersonList(JSONArray jsonArray, |
| | | List<String> columnsList, |
| | | AlarmRule alarmRule, |
| | | Boolean flag, |
| | | List<PersonVO> personLists, |
| | | List<List<String>> lists, |
| | | int i, |
| | | String res_cd, |
| | | String day, |
| | | String hour, |
| | | String minute) { |
| | | // 查询告警人员信息 |
| | | List<PersonVO> personVOList = getPersonListByResGuid(res_cd, alarmRule); |
| | | if (personVOList.size() > 0) { |
| | | for (PersonVO personVO : personVOList) { |
| | | List<String> list = new ArrayList<>(); |
| | | list.add(res_cd); |
| | | list.add(personVO.getPhone()); |
| | | if (flag) { |
| | | list.add(day); |
| | | list.add(hour); |
| | | list.add(minute); |
| | | } |
| | | // 变量将值放入集合中 |
| | | for (String column : columnsList) { |
| | | String[] split = column.split(","); |
| | | String format = ""; |
| | | for (String s : split) { |
| | | format = format + jsonArray.getJSONObject(i).getString(s); |
| | | } |
| | | list.add(format); |
| | | } |
| | | lists.add(list); |
| | | } |
| | | } |
| | | personLists.addAll(personVOList); |
| | | } |
| | | |
| | | /** |
| | | * 保存告警记录信息 |
| | | * @param list |
| | | * @param alarmRule 告警规则 |
| | | * @param uuid 临时id |
| | | * @return |
| | | */ |
| | | public AlarmRecord saveAlarmRecord(List<String> list, AlarmRule alarmRule, String uuid) { |
| | | AlarmRecord alarmRecord = alarmRecordService.getOne(new QueryWrapper<AlarmRecord>() |
| | | .eq("temp_code",uuid) |
| | | .eq("alarm_rule_id",alarmRule.getId()) |
| | | .eq("reservoir_number",list.get(0)) |
| | | ); |
| | | if (null!=alarmRecord) { |
| | | return alarmRecord; |
| | | }else { |
| | | AlarmRecord alarm = new AlarmRecord(); |
| | | // 设置相关信息 |
| | | alarm.setAlarmRuleId(alarmRule.getId().toString()); |
| | | |
| | | alarm.setReservoirNumber(list.get(0)); |
| | | alarm.setAlarmCondition(alarmRule.getRuleRemark()); |
| | | alarm.setTempCode(uuid); |
| | | // 新增 |
| | | boolean save = alarmRecordService.save(alarm); |
| | | if (save) { |
| | | return alarm; |
| | | } |
| | | } |
| | | // 返回 |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 查询告警人员信息 |
| | | * @param res_cd 水库 guid |
| | | * @param alarmRule |
| | | * @return |
| | | */ |
| | | private List<PersonVO> getPersonListByResGuid(String res_cd,AlarmRule alarmRule) { |
| | | // 查询对应的角色信息 |
| | | List<String> roles = sysClient.getRoleNames(alarmRule.getAlarmPerson()).getData(); |
| | | List<String> personList = new ArrayList<>(); |
| | | List<String> areaList = new ArrayList<>(); |
| | | // 遍历 |
| | | for (String role : roles) { |
| | | if (role.contains("责任人")){ |
| | | personList.add(PersonEnum.findByName(role).getType().toString()); |
| | | }else { |
| | | areaList.add(role); |
| | | } |
| | | } |
| | | // 根据角色,水库编号查询对应的告警人员信息 |
| | | List<PersonVO> list = new ArrayList<>(); |
| | | //1. 根据水库编号查询除责任人之外的人员信息 |
| | | if (areaList.size() > 0) { |
| | | List<PersonVO> personVOList = attResManagePersonClient.getUserListByResGuid(res_cd,String.join(",",areaList)); |
| | | list.addAll(personVOList); |
| | | } |
| | | //2. 根据水库编号及责任人类型查询相关责任人信息 |
| | | List<PersonVO> personVOList1 = attResManagePersonClient.getPersonListByResGuid(res_cd,String.join(",",personList)); |
| | | // 合并人员数据 |
| | | list.addAll(personVOList1); |
| | | // 返回数据 |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * 依次添加巡查责任人,技术责任人信息 |
| | | * @param list |
| | | */ |
| | | public void addPatrolTechnologyInfo(List<String> list) { |
| | | // 查询巡查责任人姓名,技术责任人姓名信息 |
| | | List<PersonVO> personVOList = attResManagePersonClient.getPersonListByResGuid(list.get(0),"4,5"); |
| | | if (personVOList.size()>0) { |
| | | String xczrr = ""; |
| | | String jszrr = ""; |
| | | for (PersonVO personVO : personVOList) { |
| | | if (personVO.getType().equals("5")) { |
| | | xczrr = personVO.getName(); |
| | | } |
| | | if (personVO.getType().equals("4")) { |
| | | jszrr = personVO.getName(); |
| | | } |
| | | } |
| | | // 巡查责任人姓名 |
| | | list.add(xczrr); |
| | | // 技术责任人姓名 |
| | | list.add(jszrr); |
| | | }else { |
| | | // 巡查责任人姓名 |
| | | list.add(""); |
| | | // 技术责任人姓名 |
| | | list.add(""); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 拼接市县水利部人员姓名及联系方式 |
| | | * @param list |
| | | */ |
| | | public void addCityCountyBusinessPersonInfo(List<String> list) { |
| | | // 根据水库编号查询市县水利部人员姓名及联系方式 |
| | | List<PersonVO> personVOList = attResManagePersonClient.getCityCountyPersonListByResGuid(list.get(0)); |
| | | if (personVOList.size()>0){ |
| | | // 如果没有找到人员? |
| | | StringBuilder builder = new StringBuilder(); |
| | | for (PersonVO personVO : personVOList) { |
| | | builder.append(personVO.getName()).append(":").append(personVO.getPhone()).append(","); |
| | | } |
| | | // 拼接水利部人员信息 |
| | | list.add(builder.substring(0,builder.length()-1)); |
| | | }else { |
| | | list.add(""); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 依次添加行政责任人,主管部门责任人,技术责任人,巡查责任人信息 |
| | | * @param list |
| | | * @param personTypes |
| | | */ |
| | | public void addWaterMoreDesignPatrolTechnologyInfo(List<String> list,String personTypes) { |
| | | String[] split = personTypes.split(","); |
| | | // 查询巡查责任人姓名,技术责任人姓名信息 |
| | | List<PersonVO> personVOList = attResManagePersonClient.getPersonListByResGuid(list.get(0),personTypes); |
| | | if (personVOList.size()>0) { |
| | | String xzzrr = " "; |
| | | String zgzrr = " "; |
| | | String jszrr = " "; |
| | | String xczrr = " "; |
| | | for (PersonVO personVO : personVOList) { |
| | | String str = null!=personVO.getPhone() ? ":"+personVO.getPhone():""; |
| | | if (personVO.getType().equals(split[0])) { |
| | | xzzrr = personVO.getName() + str; |
| | | } |
| | | if (personVO.getType().equals(split[1])) { |
| | | zgzrr = personVO.getName()+ str; |
| | | } |
| | | if (personVO.getType().equals(split[2])) { |
| | | jszrr = personVO.getName()+ str; |
| | | } |
| | | if (personVO.getType().equals(split[3])) { |
| | | xczrr = personVO.getName()+ str; |
| | | } |
| | | } |
| | | // 行政 |
| | | list.add(xzzrr); |
| | | // 主管 |
| | | list.add(zgzrr); |
| | | // 技术责任人姓名 |
| | | list.add(jszrr); |
| | | // 巡查责任人姓名 |
| | | list.add(xczrr); |
| | | }else { |
| | | for (String type : split) { |
| | | list.add(""); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 调用中台接口查询数据 |
| | | * |
| | | * @param params |
| | | * @param url |
| | | * @return |
| | | */ |
| | | public JSONArray getZtData(String params, String url) { |
| | | // 获取环境 |
| | | String activeProfile = SpringContextUtil.getActiveProfile(); |
| | | if (activeProfile.equals("dev")){ |
| | | url = ZtApiUrlConstant.url_prefix_dev + url; |
| | | } |
| | | if (activeProfile.equals("prod")){ |
| | | url = ZtApiUrlConstant.url_prefix_prod + url; |
| | | } |
| | | //设置请求头 |
| | | HttpHeaders headers = new HttpHeaders(); |
| | | headers.add(ZtConfigConstant.header_key, ZtConfigConstant.header_value); |
| | | //封装请求头 |
| | | HttpEntity<MultiValueMap<String, Object>> formEntity = new HttpEntity<MultiValueMap<String, Object>>(headers); |
| | | try { |
| | | //有请求头,有参数请求 |
| | | ResponseEntity<String> responseEntity = |
| | | restTemplate.exchange(url + params, |
| | | HttpMethod.GET, |
| | | formEntity, |
| | | String.class); |
| | | JSONObject jsonObject = JSON.parseObject(responseEntity.getBody()); |
| | | // 返回 |
| | | return JSONArray.parseArray(jsonObject.get("data").toString()); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return null; |
| | | } |
| | | } |
| | |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import org.jetbrains.annotations.NotNull; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.http.HttpEntity; |
| | | import org.springframework.http.HttpHeaders; |
| | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.UUID; |
| | | |
| | | /** |
| | | * 通知策略 |
| | |
| | | private AlarmRuleService alarmRuleService; |
| | | |
| | | @Autowired |
| | | private AlarmRecordService alarmRecordService; |
| | | private NoticeHandle noticeHandle; |
| | | |
| | | @Autowired |
| | | private ISmsTemplateService smsTemplateService; |
| | | |
| | | @Autowired |
| | | private RestTemplate restTemplate; |
| | | |
| | | @Autowired |
| | | private IAttResManagePersonClient attResManagePersonClient; |
| | | private AsyncNoticeHandle asyncNoticeHandle; |
| | | |
| | | |
| | | /** |
| | | * 短信发送数据组装 |
| | | * |
| | | * @param jsonArray |
| | | * @param templateId |
| | | * @param alarmRule |
| | | * @param columnsList 列名集合信息 |
| | | * @param flag 是否包含日期 |
| | | * @return |
| | | */ |
| | | private SmsRequestTemplate getSendSmsTemplate(JSONArray jsonArray, |
| | | String templateId, |
| | | AlarmRule alarmRule, |
| | | List<String> columnsList, |
| | | Boolean flag) { |
| | | // 通过模板id 查询模板相关信息 |
| | | SmsTemplate smsTemplate = smsTemplateService.getOne(new QueryWrapper<SmsTemplate>().eq("template_id",templateId).eq("is_deleted",0)); |
| | | if (null != smsTemplate) { |
| | | SmsRequestTemplate smsRequestTemplate = new SmsRequestTemplate(); |
| | | // 设置模板信息 |
| | | smsRequestTemplate.setSmsTemplate(smsTemplate); |
| | | // 解析模板并设置 title |
| | | smsRequestTemplate.setTitle(FormatUtil.composeMessage(smsTemplate.getContent())); |
| | | // 列名数据转换 |
| | | getColumnData(jsonArray, columnsList,smsRequestTemplate,alarmRule,flag); |
| | | //返回 |
| | | return smsRequestTemplate; |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 列名数据转换 |
| | | * @param jsonArray |
| | | * @param columnsList |
| | | * @param smsRequestTemplate |
| | | * @param flag |
| | | * @return |
| | | */ |
| | | private void getColumnData(JSONArray jsonArray, |
| | | List<String> columnsList, |
| | | SmsRequestTemplate smsRequestTemplate, |
| | | AlarmRule alarmRule, |
| | | Boolean flag) { |
| | | List<PersonVO> personLists = new ArrayList<>(); |
| | | List<List<String>> lists = new ArrayList<>(); |
| | | for (int i = 0; i < jsonArray.size(); i++) { |
| | | // 根据水库编号,所在区域查询需要发送的人员手机号及设置 |
| | | String res_cd = jsonArray.getJSONObject(i).getString("res_cd"); |
| | | // 判断时间是否存在 |
| | | String tm = jsonArray.getJSONObject(i).getString("tm"); |
| | | String day = ""; |
| | | String hour = ""; |
| | | String minute = ""; |
| | | if (null!=tm && !tm.equals("") && flag){ |
| | | flag = true; |
| | | // 加入天,时,分 |
| | | day = tm.substring(8,10); |
| | | hour = tm.substring(11,13); |
| | | minute = tm.substring(14,16); |
| | | }else { |
| | | flag = false; |
| | | } |
| | | // 查询告警人员信息 |
| | | List<PersonVO> personVOList = getPersonListByResGuid(res_cd,alarmRule); |
| | | if (personVOList.size() > 0) { |
| | | for (PersonVO personVO : personVOList) { |
| | | List<String> list = new ArrayList<>(); |
| | | list.add(res_cd); |
| | | list.add(personVO.getPhone()); |
| | | if (flag) { |
| | | list.add(day); |
| | | list.add(hour); |
| | | list.add(minute); |
| | | } |
| | | // 变量将值放入集合中 |
| | | for (String column : columnsList) { |
| | | String[] split = column.split(","); |
| | | String format = ""; |
| | | for (String s : split) { |
| | | format = format + jsonArray.getJSONObject(i).getString(s); |
| | | } |
| | | list.add(format); |
| | | } |
| | | lists.add(list); |
| | | } |
| | | } |
| | | personLists.addAll(personVOList); |
| | | } |
| | | // 设置信息 |
| | | smsRequestTemplate.setPersonVOList(personLists); |
| | | smsRequestTemplate.setTemplateContent(lists); |
| | | } |
| | | |
| | | /** |
| | | * 保存告警记录信息 |
| | | * @param list |
| | | * @param alarmRule 告警规则 |
| | | * @return |
| | | */ |
| | | private AlarmRecord saveAlarmRecord(List<String> list,AlarmRule alarmRule) { |
| | | AlarmRecord alarmRecord = new AlarmRecord(); |
| | | // 设置相关信息 |
| | | alarmRecord.setAlarmRuleId(alarmRule.getId().toString()); |
| | | alarmRecord.setReservoirNumber(list.get(0)); |
| | | alarmRecord.setAlarmCondition(alarmRule.getRuleRemark()); |
| | | // 新增 |
| | | boolean save = alarmRecordService.save(alarmRecord); |
| | | if (save){ |
| | | return alarmRecord; |
| | | } |
| | | // 返回 |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 查询告警人员信息 |
| | | * @param res_cd 水库 guid |
| | | * @param alarmRule |
| | | * @return |
| | | */ |
| | | private List<PersonVO> getPersonListByResGuid(String res_cd,AlarmRule alarmRule) { |
| | | // 查询对应的角色信息 |
| | | String roles = alarmRule.getAlarmPerson(); |
| | | String[] roleArray = roles.split(","); |
| | | List<String> personList = new ArrayList<>(); |
| | | List<String> areaList = new ArrayList<>(); |
| | | // 遍历 |
| | | for (String role : roleArray) { |
| | | if (role.contains("责任人")){ |
| | | personList.add(PersonEnum.findByName(role).getType().toString()); |
| | | }else { |
| | | areaList.add(role); |
| | | } |
| | | } |
| | | // 根据角色,水库编号查询对应的告警人员信息 |
| | | List<PersonVO> list = new ArrayList<>(); |
| | | //1. 根据水库编号查询除责任人之外的人员信息 |
| | | if (areaList.size() > 0) { |
| | | List<PersonVO> personVOList = attResManagePersonClient.getUserListByResGuid(res_cd); |
| | | list.addAll(personVOList); |
| | | } |
| | | //2. 根据水库编号及责任人类型查询相关责任人信息 |
| | | List<PersonVO> personVOList1 = attResManagePersonClient.getPersonListByResGuid(res_cd,String.join(",",personList)); |
| | | // 合并人员数据 |
| | | list.addAll(personVOList1); |
| | | // 返回数据 |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * 依次添加巡查责任人,技术责任人信息 |
| | | * @param list |
| | | */ |
| | | private void addPatrolTechnologyInfo(List<String> list) { |
| | | // 查询巡查责任人姓名,技术责任人姓名信息 |
| | | List<PersonVO> personVOList = attResManagePersonClient.getPersonListByResGuid(list.get(0),"4,5"); |
| | | if (personVOList.size()>0) { |
| | | String xczrr = ""; |
| | | String jszrr = ""; |
| | | for (PersonVO personVO : personVOList) { |
| | | if (personVO.getType().equals("5")) { |
| | | xczrr = personVO.getName(); |
| | | } |
| | | if (personVO.getType().equals("4")) { |
| | | jszrr = personVO.getName(); |
| | | } |
| | | } |
| | | // 巡查责任人姓名 |
| | | list.add(xczrr); |
| | | // 技术责任人姓名 |
| | | list.add(jszrr); |
| | | }else { |
| | | // 巡查责任人姓名 |
| | | list.add("?"); |
| | | // 技术责任人姓名 |
| | | list.add("?"); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 拼接市县水利部人员姓名及联系方式 |
| | | * @param list |
| | | */ |
| | | private void addCityCountyBusinessPersonInfo(List<String> list) { |
| | | // 根据水库编号查询市县水利部人员姓名及联系方式 |
| | | List<PersonVO> personVOList = attResManagePersonClient.getCityCountyPersonListByResGuid(list.get(0)); |
| | | if (personVOList.size()>0){ |
| | | // 如果没有找到人员? |
| | | StringBuilder builder = new StringBuilder(); |
| | | for (PersonVO personVO : personVOList) { |
| | | builder.append(personVO.getName()).append(":").append(personVO.getPhone()).append(","); |
| | | } |
| | | // 拼接水利部人员信息 |
| | | list.add(builder.substring(0,builder.length()-1)); |
| | | }else { |
| | | list.add("?"); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 默认实现 |
| | |
| | | * @return |
| | | */ |
| | | public String waterInfoNotHandle(String arg1, String arg2) { |
| | | String templateId = "2431012216668"; |
| | | String uuid = templateId + UUID.randomUUID().toString(); |
| | | // 查询当前策略对应的告警规则信息 |
| | | AlarmRule alarmRule = alarmRuleService.getOne(new QueryWrapper<AlarmRule>().eq("rule_name", arg1)); |
| | | if (null!=alarmRule) { |
| | | // 调用中台服务接口查询数据 |
| | | JSONArray ztData = getZtData("", ZtApiUrlConstant.res_z_null_api); |
| | | JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.res_z_null_api); |
| | | // 只发短信,将发短信信息组装好 |
| | | SmsRequestTemplate smsRequestTemplate = getSendSmsTemplate(ztData, "2431012216668",alarmRule, ZtApiDataColumnConstant.waterInfoNotList,false); |
| | | SmsRequestTemplate smsRequestTemplate = noticeHandle.getSendSmsTemplate(ztData, templateId,alarmRule, ZtApiDataColumnConstant.waterInfoNotList,false,null); |
| | | // 拼接内容后面的联系方式,当前模板拼接平台服务电话 |
| | | // 遍历,拼接平台服务电话 |
| | | for (List<String> list : smsRequestTemplate.getTemplateContent()) { |
| | | // 添加平台电话 |
| | | list.add(PtInfoConstant.serverPhone); |
| | | // 保存告警记录信息 |
| | | AlarmRecord alarmRecord = saveAlarmRecord(list,alarmRule); |
| | | AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list,alarmRule,uuid); |
| | | if (null != alarmRecord) { |
| | | list.add(alarmRecord.getId().toString()); |
| | | } |
| | |
| | | * @return |
| | | */ |
| | | public String waterDataExcHandle(String arg1, String arg2) { |
| | | String templateId = "2431012248591"; |
| | | String uuid = templateId + UUID.randomUUID().toString(); |
| | | // 查询当前策略对应的告警规则信息 |
| | | AlarmRule alarmRule = alarmRuleService.getOne(new QueryWrapper<AlarmRule>().eq("rule_name", arg1)); |
| | | if (null!=alarmRule) { |
| | | // 调用中台服务接口查询数据 |
| | | JSONArray ztData = getZtData("", ZtApiUrlConstant.res_z_not_normal_api); |
| | | JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.res_z_not_normal_api); |
| | | // 只发短信,将发短信信息组装好 |
| | | SmsRequestTemplate smsRequestTemplate |
| | | = getSendSmsTemplate(ztData, "2431012248591",alarmRule, ZtApiDataColumnConstant.waterDataExcList,false); |
| | | = noticeHandle.getSendSmsTemplate(ztData, templateId,alarmRule, ZtApiDataColumnConstant.waterDataExcList,false,null); |
| | | // 拼接后面内容 |
| | | for (List<String> list : smsRequestTemplate.getTemplateContent()) { |
| | | // 保存告警记录信息 |
| | | AlarmRecord alarmRecord = saveAlarmRecord(list,alarmRule); |
| | | AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list,alarmRule,uuid); |
| | | if (null != alarmRecord) { |
| | | list.add(alarmRecord.getId().toString()); |
| | | } |
| | |
| | | * @return |
| | | */ |
| | | public String waterLessDeadHandle(String arg1, String arg2) { |
| | | String templateId = "2431012248594"; |
| | | String uuid = templateId + UUID.randomUUID().toString(); |
| | | // 查询当前策略对应的告警规则信息 |
| | | AlarmRule alarmRule = alarmRuleService.getOne(new QueryWrapper<AlarmRule>().eq("rule_name", arg1)); |
| | | if (null!=alarmRule) { |
| | | // 调用中台服务接口查询数据 |
| | | JSONArray ztData = getZtData("", ZtApiUrlConstant.res_diff_dead_z_api); |
| | | JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.res_diff_dead_z_api); |
| | | // 只发短信,将发短信信息组装好 |
| | | SmsRequestTemplate smsRequestTemplate = getSendSmsTemplate(ztData, "2431012248594",alarmRule, ZtApiDataColumnConstant.waterLessDeadList,true); |
| | | SmsRequestTemplate smsRequestTemplate = noticeHandle.getSendSmsTemplate(ztData, templateId,alarmRule, ZtApiDataColumnConstant.waterLessDeadList,true,null); |
| | | // 拼接内容后面的联系方式,当前模板县水利部人员姓名电话 |
| | | // 遍历,拼接县水利部人员电话 |
| | | for (List<String> list : smsRequestTemplate.getTemplateContent()) { |
| | | // 查询县水利部人员(通过水库编号) |
| | | // list.add("测试:13112341234"); |
| | | // 保存告警记录信息 |
| | | AlarmRecord alarmRecord = saveAlarmRecord(list,alarmRule); |
| | | AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list,alarmRule,uuid); |
| | | if (null != alarmRecord) { |
| | | list.add(alarmRecord.getId().toString()); |
| | | } |
| | | } |
| | | // 调用短信服务 |
| | | Map<String,Object> map = smsService.sendSignMsg(smsRequestTemplate); |
| | | Map<String, Object> map = smsService.sendSignMsg(smsRequestTemplate); |
| | | // 返回 |
| | | return "本次-水位初次超汛限告警短信成功通知数量:" + map.get("smsRecord"); |
| | | } |
| | | // 返回 |
| | | return "水位超低于死水位"; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 策略4: 水位高于死水位,低于旱警水位 |
| | |
| | | * @return |
| | | */ |
| | | public String waterComeOverHandle(String arg1, String arg2) { |
| | | String templateId = "znxsw10000001"; |
| | | String uuid = templateId + UUID.randomUUID().toString(); |
| | | // 查询当前策略对应的告警规则信息 |
| | | AlarmRule alarmRule = alarmRuleService.getOne(new QueryWrapper<AlarmRule>().eq("rule_name", arg1)); |
| | | if (null!=alarmRule) { |
| | | // 调用中台服务接口查询数据 |
| | | JSONArray ztData = getZtData("", ZtApiUrlConstant.res_diff_dead_z_api); |
| | | JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.res_diff_dead_z_api); |
| | | // 只发送站内信 |
| | | SmsRequestTemplate smsRequestTemplate = getSendSmsTemplate(ztData, "znxsw10000001",alarmRule, ZtApiDataColumnConstant.waterLessDeadList,true); |
| | | SmsRequestTemplate smsRequestTemplate = noticeHandle.getSendSmsTemplate(ztData, templateId,alarmRule, ZtApiDataColumnConstant.waterLessDeadList,true,null); |
| | | // 拼接内容后面的联系方式,当前模板县水利部人员姓名电话 |
| | | // 遍历,拼接县水利部人员电话 |
| | | for (List<String> list : smsRequestTemplate.getTemplateContent()) { |
| | | // 后面依次拼接 巡查责任人姓名,技术责任人姓名,市县水利部门人员姓名电话(暂时不要) |
| | | addPatrolTechnologyInfo(list); |
| | | noticeHandle.addPatrolTechnologyInfo(list); |
| | | // 市县水利部门人员姓名电话(暂时不要) |
| | | // list.add("测试:13112341234"); |
| | | // 保存告警记录信息 |
| | | AlarmRecord alarmRecord = saveAlarmRecord(list,alarmRule); |
| | | AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list,alarmRule,uuid); |
| | | if (null != alarmRecord) { |
| | | list.add(alarmRecord.getId().toString()); |
| | | // list.add("999"); |
| | |
| | | * @return |
| | | */ |
| | | public String waterFirstOverHandle(String arg1, String arg2) { |
| | | String adCode = "421303000000"; |
| | | String templateId = "2431012216671"; |
| | | String uuid = templateId + UUID.randomUUID().toString(); |
| | | // 查询当前策略对应的告警规则信息 |
| | | AlarmRule alarmRule = alarmRuleService.getOne(new QueryWrapper<AlarmRule>().eq("rule_name", arg1)); |
| | | if (null!=alarmRule) { |
| | | // 调用中台服务接口查询数据 |
| | | JSONArray ztData = getZtData("", ZtApiUrlConstant.over_z_res_api); |
| | | JSONArray ztData = noticeHandle.getZtData("", ZtApiUrlConstant.over_z_res_api); |
| | | // 只发短信,将发短信信息组装好 |
| | | SmsRequestTemplate smsRequestTemplate |
| | | = getSendSmsTemplate(ztData, "2431012216671",alarmRule, ZtApiDataColumnConstant.waterFirstOverList,true); |
| | | = noticeHandle.getSendSmsTemplate(ztData, templateId,alarmRule, ZtApiDataColumnConstant.waterFirstOverList,true,adCode); |
| | | // 拼接后面内容 |
| | | for (List<String> list : smsRequestTemplate.getTemplateContent()) { |
| | | // 依次拼接巡查责任人,技术责任人姓名 |
| | | addPatrolTechnologyInfo(list); |
| | | // 拼接市县水利部人员姓名及联系方式 |
| | | addCityCountyBusinessPersonInfo(list); |
| | | // 保存告警记录信息 |
| | | AlarmRecord alarmRecord = saveAlarmRecord(list,alarmRule); |
| | | if (null != alarmRecord) { |
| | | list.add(alarmRecord.getId().toString()); |
| | | // list.add("999"); |
| | | if (smsRequestTemplate.getPersonVOList().size()>0) { |
| | | for (List<String> list : smsRequestTemplate.getTemplateContent()) { |
| | | // 依次拼接巡查责任人,技术责任人姓名 |
| | | noticeHandle.addPatrolTechnologyInfo(list); |
| | | // 拼接市县水利部人员姓名及联系方式 |
| | | noticeHandle.addCityCountyBusinessPersonInfo(list); |
| | | // 保存告警记录信息 |
| | | AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list,alarmRule,uuid); |
| | | if (null != alarmRecord) { |
| | | list.add(alarmRecord.getId().toString()); |
| | | // list.add("999"); |
| | | } |
| | | } |
| | | // 调用短信服务 |
| | | Map<String, Object> map = smsService.sendSignMsg(smsRequestTemplate); |
| | | // 返回 |
| | | return "本次-水位初次超汛限告警短信成功通知数量:" + map.get("smsRecord"); |
| | | } |
| | | // 调用短信服务 |
| | | Map<String, Object> map = smsService.sendSignMsg(smsRequestTemplate); |
| | | // 返回 |
| | | return "本次-水位初次超汛限告警短信成功通知数量:" + map.get("smsRecord"); |
| | | } |
| | | // 返回 |
| | | return "水位初次超汛限告警"; |
| | |
| | | * @return |
| | | */ |
| | | public String waterMoreDesignHandle(String arg1, String arg2) { |
| | | // 业务逻辑处理 2... |
| | | return ""; |
| | | String templateId = "2431012248604"; |
| | | String uuid = templateId + UUID.randomUUID().toString(); |
| | | // 查询当前策略对应的告警规则信息 |
| | | AlarmRule alarmRule = alarmRuleService.getOne(new QueryWrapper<AlarmRule>().eq("rule_name", arg1)); |
| | | if (null!=alarmRule) { |
| | | // 异步处理,暂时解决超时重置问题 |
| | | Map<String, Object> map = asyncNoticeHandle.handleAlarmInfo(templateId, uuid, alarmRule); |
| | | // 返回 |
| | | return "水位超设计洪水位告警"; |
| | | } |
| | | // 返回 |
| | | return "水位超设计洪水位告警"; |
| | | } |
| | | |
| | | /** |
| | |
| | | return ""; |
| | | } |
| | | |
| | | /** |
| | | * 调用中台接口查询数据 |
| | | * |
| | | * @param params |
| | | * @param url |
| | | * @return |
| | | */ |
| | | private JSONArray getZtData(String params, String url) { |
| | | // 获取环境 |
| | | String activeProfile = SpringContextUtil.getActiveProfile(); |
| | | if (activeProfile.equals("dev")){ |
| | | url = ZtApiUrlConstant.url_prefix_dev + url; |
| | | } |
| | | if (activeProfile.equals("prod")){ |
| | | url = ZtApiUrlConstant.url_prefix_prod + url; |
| | | } |
| | | //设置请求头 |
| | | HttpHeaders headers = new HttpHeaders(); |
| | | headers.add(ZtConfigConstant.header_key, ZtConfigConstant.header_value); |
| | | //封装请求头 |
| | | HttpEntity<MultiValueMap<String, Object>> formEntity = new HttpEntity<MultiValueMap<String, Object>>(headers); |
| | | try { |
| | | //有请求头,有参数请求 |
| | | ResponseEntity<String> responseEntity = |
| | | restTemplate.exchange(url + params, |
| | | HttpMethod.GET, |
| | | formEntity, |
| | | String.class); |
| | | JSONObject jsonObject = JSON.parseObject(responseEntity.getBody()); |
| | | // 返回 |
| | | return JSONArray.parseArray(jsonObject.get("data").toString()); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return null; |
| | | } |
| | | } |
| New file |
| | |
| | | package cn.gistack.alerts.sms.constant; |
| | | |
| | | public class SmsConstant { |
| | | |
| | | |
| | | /** |
| | | * 已发短息人员redis 过期时间(秒),暂定24小时 |
| | | */ |
| | | public static final Integer max_send_size = 1000; |
| | | |
| | | } |
| | |
| | | import cn.gistack.sm.sjztmd.feign.IAttResManagePersonClient; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.IdWorker; |
| | | import com.google.common.collect.Lists; |
| | | import org.jetbrains.annotations.NotNull; |
| | | import org.springblade.core.redis.cache.BladeRedis; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.lang.reflect.Array; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | import java.util.regex.Matcher; |
| | |
| | | return list; |
| | | } |
| | | |
| | | // /** |
| | | // * 发送 具名 变量模板短信(告警定制) |
| | | // * @param smsRequestTemplate |
| | | // * @return |
| | | // */ |
| | | // @Override |
| | | // public Map<String, Object> sendSignMsg(SmsRequestTemplate smsRequestTemplate) { |
| | | // // 取出数据 |
| | | // SMSSendRequest request = new SMSSendRequest(); |
| | | // SmsTemplate smsTemplate = smsRequestTemplate.getSmsTemplate(); |
| | | // request.setTemplateId(smsTemplate.getTemplateId()); |
| | | // List<List<String>> templateContent = smsRequestTemplate.getTemplateContent(); |
| | | // // 先保存结果记录 |
| | | // SmsResult smsResult = saveSendResult(null,null,request, templateContent.size()); |
| | | // List<SmsRecord> smsRecordList = new ArrayList<>(); |
| | | // // 遍历处理 |
| | | // for (List<String> list : templateContent) { |
| | | // AlarmRecordDetail alarmRecordDetail = new AlarmRecordDetail(); |
| | | // alarmRecordDetail.setReservoirNumber(list.get(0)); |
| | | // alarmRecordDetail.setAlarmRecordId(Long.parseLong(list.get(list.size() - 1))); |
| | | // alarmRecordDetail.setAlarmMode("短信"); |
| | | // // 删除 最后一个 告警记录id |
| | | // list.remove(list.size() - 1); |
| | | // // 删除 0 水库编码 |
| | | // list.remove(0); |
| | | // // 转换字符串 |
| | | // String row = String.join(",", list); |
| | | // // 组装数据 |
| | | // String[][] dyns = new String[][]{{smsRequestTemplate.getTitle()}, {row}}; |
| | | // //请求参数 |
| | | // ComResult<DynSMSSendDataResult> resultComResult = sendDynSMSSendDataResultComResult(smsTemplate.getTemplateId(), dyns); |
| | | // |
| | | // SmsRecord smsRecord = new SmsRecord(); |
| | | // if (null != smsResult){ |
| | | // alarmRecordDetail.setPhone(list.get(0)); |
| | | // // 设置手机号 |
| | | // request.setUserNumber(list.get(0)); |
| | | // // 内容处理 |
| | | // String s = smsTemplate.getContent().replaceAll("\\{.+?\\}", "%s"); |
| | | // // 短信内容拼接(完成发送的结果信息) |
| | | // // 需要删除最前面的手机号 |
| | | // list.remove(0); |
| | | // // 格式转换 |
| | | // String format = String.format(s, list.toArray()); |
| | | // // 设置内容 |
| | | // request.setMessageContent(format); |
| | | // // 保存短信发送记录 |
| | | // smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId()); |
| | | // if (null != smsRecord){ |
| | | // alarmRecordDetail.setAlarmContent(format); |
| | | // alarmRecordDetail.setSendRecordId(smsRecord.getId()); |
| | | // alarmRecordDetail.setCreateTime(new Date()); |
| | | // // 保存告警记录详情信息 |
| | | // boolean save = alarmRecordDetailService.save(alarmRecordDetail); |
| | | // } |
| | | // } |
| | | // smsRecordList.add(smsRecord); |
| | | // } |
| | | // Map<String, Object> map = new HashMap<>(2); |
| | | // map.put("smsRecord",smsRecordList.size()); |
| | | // // 返回 |
| | | // return map; |
| | | // } |
| | | |
| | | /** |
| | | * 发送 具名 变量模板短信(告警定制) |
| | | * @param smsRequestTemplate |
| | |
| | | SmsTemplate smsTemplate = smsRequestTemplate.getSmsTemplate(); |
| | | request.setTemplateId(smsTemplate.getTemplateId()); |
| | | List<List<String>> templateContent = smsRequestTemplate.getTemplateContent(); |
| | | // 先保存结果记录 |
| | | SmsResult smsResult = saveSendResult(null,null,request, templateContent.size()); |
| | | List<SmsRecord> smsRecordList = new ArrayList<>(); |
| | | // 遍历处理 |
| | | for (List<String> list : templateContent) { |
| | | AlarmRecordDetail alarmRecordDetail = new AlarmRecordDetail(); |
| | | alarmRecordDetail.setReservoirNumber(list.get(0)); |
| | | alarmRecordDetail.setAlarmRecordId(Long.parseLong(list.get(list.size() - 1))); |
| | | alarmRecordDetail.setAlarmMode("短信"); |
| | | // 删除 最后一个 告警记录id |
| | | list.remove(list.size() - 1); |
| | | // 删除 0 水库编码 |
| | | list.remove(0); |
| | | // 转换字符串 |
| | | String row = String.join(",", list); |
| | | // 组装数据 |
| | | String[][] dyns = new String[][]{{smsRequestTemplate.getTitle()}, {row}}; |
| | | //请求参数 |
| | | ComResult<DynSMSSendDataResult> resultComResult = sendDynSMSSendDataResultComResult(smsTemplate.getTemplateId(), dyns); |
| | | |
| | | SmsRecord smsRecord = new SmsRecord(); |
| | | if (null != smsResult){ |
| | | alarmRecordDetail.setPhone(list.get(0)); |
| | | // 设置手机号 |
| | | request.setUserNumber(list.get(0)); |
| | | // 内容处理 |
| | | String s = smsTemplate.getContent().replaceAll("\\{.+?\\}", "%s"); |
| | | // 短信内容拼接(完成发送的结果信息) |
| | | // 需要删除最前面的手机号 |
| | | list.remove(0); |
| | | // 格式转换 |
| | | String format = String.format(s, list.toArray()); |
| | | // 设置内容 |
| | | request.setMessageContent(format); |
| | | // 保存短信发送记录 |
| | | smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId()); |
| | | if (null != smsRecord){ |
| | | alarmRecordDetail.setAlarmContent(format); |
| | | alarmRecordDetail.setSendRecordId(smsRecord.getId()); |
| | | alarmRecordDetail.setCreateTime(new Date()); |
| | | // 保存告警记录详情信息 |
| | | boolean save = alarmRecordDetailService.save(alarmRecordDetail); |
| | | } |
| | | } |
| | | smsRecordList.add(smsRecord); |
| | | // 判断 templateContent 个数,个数超过1000 需要分段发送短信 |
| | | List<List<List<String>>> lists = Lists.partition(templateContent, 1000); |
| | | int number = 0; |
| | | for (List<List<String>> list : lists) { |
| | | // 临时保存告警记录用 |
| | | List<List<String>> templateList = getAlarmList(list); |
| | | // 批量发送短信 |
| | | Map<String, Object> map = batchSendAlertsSms(smsRequestTemplate.getSmsTemplate(), list); |
| | | int count = Integer.parseInt(map.get("errCount").toString()); |
| | | ComResult<DynSMSSendDataResult> resultComResult =(ComResult<DynSMSSendDataResult>) map.get("resultComResult"); |
| | | // 保存短信结果记录 |
| | | SmsResult smsResult = saveSendResult(resultComResult.getCode().toString(),resultComResult.getMsg(),request, list.size() - count); |
| | | // 保存详情记录(短信详情,告警详情) |
| | | List<SmsRecord> smsRecordList = saveAlertsAndSmsDetail(smsResult,resultComResult,smsRequestTemplate.getSmsTemplate(), templateList,request); |
| | | // number 累加 |
| | | number += smsRecordList.size(); |
| | | } |
| | | Map<String, Object> map = new HashMap<>(2); |
| | | map.put("smsRecord",smsRecordList.size()); |
| | | // 设置返回数据 |
| | | Map<String, Object> params = new HashMap<>(1); |
| | | params.put("sendNumber",number); |
| | | // 返回 |
| | | return map; |
| | | return params; |
| | | } |
| | | |
| | | /** |
| | | * 发送 具名 变量模板短信(告警定制) |
| | | * @param smsRequestTemplate |
| | | * 获取用户告警的集合 |
| | | * @param list |
| | | * @return |
| | | */ |
| | | // @Override |
| | | // public Map<String, Object> sendSignMsg(SmsRequestTemplate smsRequestTemplate) { |
| | | // // 取出数据 |
| | | // SMSSendRequest request = new SMSSendRequest(); |
| | | // SmsTemplate smsTemplate = smsRequestTemplate.getSmsTemplate(); |
| | | // request.setTemplateId(smsTemplate.getTemplateId()); |
| | | // // 批量发送短信 |
| | | // Map<String, Object> map = batchSendAlertsSms(smsRequestTemplate.getSmsTemplate(), smsRequestTemplate.getTemplateContent()); |
| | | // int count = Integer.parseInt(map.get("errCount").toString()); |
| | | // ComResult<DynSMSSendDataResult> resultComResult =(ComResult<DynSMSSendDataResult>) map.get("resultComResult"); |
| | | // // 保存短信结果记录 |
| | | // SmsResult smsResult = saveSendResult(resultComResult.getCode().toString(),resultComResult.getMsg(),request, smsRequestTemplate.getTemplateContent().size()-count); |
| | | // // 保存详情记录(短信详情,告警详情) |
| | | //// List<SmsRecord> smsRecordList = saveAlertsAndSmsDetail(smsResult,resultComResult,smsRequestTemplate.getSmsTemplate(), smsRequestTemplate.getTemplateContent(),request); |
| | | // // 设置返回数据 |
| | | // Map<String, Object> params = new HashMap<>(2); |
| | | //// params.put("smsRecord",smsRecordList.size()); |
| | | // // 返回 |
| | | // return params; |
| | | // } |
| | | private List<List<String>> getAlarmList(List<List<String>> list) { |
| | | List<List<String>> arrayList = new ArrayList<>(); |
| | | // 值引用 |
| | | for (List<String> stringList : list) { |
| | | List<String> child = new ArrayList<>(); |
| | | child.addAll(stringList); |
| | | arrayList.add(child); |
| | | } |
| | | // 返回 |
| | | return arrayList; |
| | | } |
| | | |
| | | /** |
| | | * 保存详情记录(短信详情,告警详情) |
| | |
| | | for (String phone : phones) { |
| | | hashSet.add(phone); |
| | | } |
| | | // 批量发送短信 |
| | | Map<String, Object> batchSendSmsMap = batchSendSms(hashSet, titleArr, data, smsTemplate,errPhones); |
| | | ComResult<DynSMSSendDataResult> resultComResult = (ComResult<DynSMSSendDataResult>)batchSendSmsMap.get("resultComResult"); |
| | | errPhones = (List<String>) batchSendSmsMap.get("errPhones"); |
| | | // 分割 |
| | | List<List<String>> partition = Lists.partition(new ArrayList<>(hashSet), 1000); |
| | | int errNumber = 0; |
| | | // 遍历 |
| | | for (List<String> list : partition) { |
| | | // 批量发送短信 |
| | | Map<String, Object> batchSendSmsMap = batchSendSms(new HashSet<>(list), titleArr, data, smsTemplate,errPhones); |
| | | errPhones = (List<String>) batchSendSmsMap.get("errPhones"); |
| | | errNumber += errPhones.size(); |
| | | } |
| | | // 计算差值 |
| | | Integer diff = phones.size() - hashSet.size(); |
| | | if (resultComResult.getCode()==0){ |
| | | String successMsg = "发送成功!共提交号码 "+phones.size()+" 个,其中重复号码 "+diff+" 个,错误号码 " |
| | | +errPhones.size()+" 个,发送成功号码 "+ hashSet.size() + " 个。"; |
| | | // 返回 |
| | | return R.data(200,successMsg,null); |
| | | } |
| | | String errorMsg = "发送失败!共提交号码 "+phones.size()+" 个,其中重复号码 "+diff+" 个,错误号码 "+errPhones.size()+ |
| | | " 个,发送异常号码 "+ hashSet.size()+" 个,异常原因" + resultComResult.getMsg() + "。"; |
| | | String successMsg = "发送成功!共提交号码 "+phones.size()+" 个,其中重复号码 "+diff+" 个,错误号码 " |
| | | + errNumber +" 个,发送成功号码 "+ (hashSet.size()-errNumber) + " 个。"; |
| | | // 返回 |
| | | return R.data(400,errorMsg,null); |
| | | return R.data(200,successMsg,null); |
| | | } |
| | | |
| | | |
| | |
| | | String param = startTime + "-" + endTime; |
| | | // 拼接短信标题数组 |
| | | String [] titleArr = getSmsTitleArr(smsTemplate); |
| | | // 批量发送短信 |
| | | Map<String, Object> batchSendSmsMap = batchSendSms(personList, titleArr, param, smsTemplate,errPhones); |
| | | ComResult<DynSMSSendDataResult> resultComResult = (ComResult<DynSMSSendDataResult>)batchSendSmsMap.get("resultComResult"); |
| | | errPhones = (List<String>) batchSendSmsMap.get("errPhones"); |
| | | // 分割 |
| | | List<List<String>> partition = Lists.partition(new ArrayList<>(personList), 1000); |
| | | int errNumber = 0; |
| | | ComResult<DynSMSSendDataResult> resultComResult = new ComResult(); |
| | | // 遍历 |
| | | for (List<String> list1 : partition) { |
| | | // 批量发送短信 |
| | | Map<String, Object> batchSendSmsMap = batchSendSms(new HashSet<>(list1), titleArr, param, smsTemplate,errPhones); |
| | | resultComResult = (ComResult<DynSMSSendDataResult>)batchSendSmsMap.get("resultComResult"); |
| | | errPhones = (List<String>) batchSendSmsMap.get("errPhones"); |
| | | errNumber += errPhones.size(); |
| | | } |
| | | // 计算差值 |
| | | Integer diff = personList.size() - errPhones.size(); |
| | | Integer diff = personList.size() - errNumber; |
| | | if (resultComResult.getCode()==0){ |
| | | String successMsg = "发送成功!共导入水库个数 "+ size +" 个,其中发送号码 "+ diff + " 个。"; |
| | | // 返回 |
| | |
| | | @Param("list") List<String> list, |
| | | @Param("callTaskStatistic") CallTaskStatistic callTaskStatistic, |
| | | @Param("day") Map<String, Object> day); |
| | | |
| | | /** |
| | | * 通过 taskId 查询未呼叫人员(mysql) |
| | | * @param taskId |
| | | * @return |
| | | */ |
| | | @DS("znwh") |
| | | List<Scene> getCallNotConnectListByTaskId(@Param("taskId") String taskId); |
| | | } |
| | |
| | | </if> |
| | | </select> |
| | | |
| | | |
| | | <!--通过 taskId 查询未呼叫人员(mysql)--> |
| | | <select id="getCallNotConnectListByTaskId" resultType="cn.gistack.sm.intelligentCall.entity.Scene"> |
| | | select ctc.callee_number as phone,ctc.callee_number as userId, |
| | | TRIM(BOTH '"' FROM JSON_EXTRACT(ctc.call_task_callee_content,'$."$水库编码$"')) as waterCode, |
| | | TRIM(BOTH '"' FROM JSON_EXTRACT(ctc.call_task_callee_content,'$."$水库名称$"')) as waterName, |
| | | TRIM(BOTH '"' FROM JSON_EXTRACT(ctc.call_task_callee_content,'$."$用户名$"')) as username |
| | | from call_task_callee ctc |
| | | join call_task_result ctr on ctc.call_id = ctr.call_id |
| | | and ctc.call_status = 4 and ctr.call_result!='200000' and ctc.task_id = #{taskId} |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | import org.apache.commons.lang3.RandomUtils; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.jetbrains.annotations.NotNull; |
| | | import org.springblade.core.redis.cache.BladeRedis; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.http.*; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.DigestUtils; |
| | | import org.springframework.util.LinkedMultiValueMap; |
| | | import org.springframework.util.MultiValueMap; |
| | | import org.springframework.web.client.RestTemplate; |
| | | |
| | |
| | | |
| | | @Autowired |
| | | private RestTemplate restTemplate; |
| | | |
| | | @Autowired |
| | | private BladeRedis bladeRedis; |
| | | |
| | | // @Value("${dial.task.url}") |
| | | private String url = CallConstant.HOST; |
| | |
| | | */ |
| | | @Override |
| | | public List<String> createCallTaskByParam(Map<String, Object> params) { |
| | | // 常规任务,每天上午11点打150人,下午2点打11点未接人员,下午5点打下午2点未接通人员 |
| | | String redisOneKey = bladeRedis.get(CallConstant.call_task_key); |
| | | if (null==redisOneKey){ |
| | | List<String> stringList = everydayCall(params); |
| | | // 取出数据进行设置 taskId |
| | | bladeRedis.setEx(CallConstant.call_task_key,stringList.get(1)+","+1,6*60*60L); |
| | | // 响应 |
| | | return stringList; |
| | | }else { |
| | | return createEverydayAfter(redisOneKey); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 日常外呼任务未接通的继续拨打 |
| | | * @param redisOneKey 取值为上一次外呼的任务id |
| | | * @return |
| | | */ |
| | | private List<String> createEverydayAfter(String redisOneKey) { |
| | | // redisOneKey = "2216,1"; |
| | | String[] split = redisOneKey.split(","); |
| | | String taskId = split[0]; |
| | | String type = split[1]; |
| | | List<String> stringList = new ArrayList<>(); |
| | | Map<String, Object> params = new HashMap<>(); |
| | | // 通过 taskId 查询未呼叫人员(mysql) |
| | | List<Scene> list = callTaskMapper.getCallNotConnectListByTaskId(taskId); |
| | | if (list.size()>0){ |
| | | Set<Scene> scenes = new HashSet<>(list); |
| | | // 传入调度时间和随机得到的人员信息进行任务的创建并返回 |
| | | params.put("list",setForListMap(scenes)); |
| | | // 调度时间处理 |
| | | params.put("taskScheduleTime",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); |
| | | // 创建任务 |
| | | stringList = createTask(params); |
| | | |
| | | // 判断是否发送短信 |
| | | if (type.equals("1")){ |
| | | // 取出数据进行设置 taskId |
| | | bladeRedis.setEx(CallConstant.call_task_key,stringList.get(1)+","+2,6*60*60L); |
| | | } |
| | | // 判断是否发送短信 |
| | | if (type.equals("2")){ |
| | | // 新增一个参数代表需要发短信 |
| | | stringList.add("3"); |
| | | } |
| | | } |
| | | // 返回 |
| | | return stringList; |
| | | } |
| | | |
| | | /** |
| | | * 日常外呼任务创建 |
| | | * @param params |
| | | * @return |
| | | */ |
| | | private List<String> everydayCall(Map<String, Object> params) { |
| | | // 自动创建任务的 4个条件 1:呼叫人数 2:调度时间 3:是否超汛限 4:多少天内呼叫过的不呼叫(天数) |
| | | //1. 调用中台接口查询出所有需要发任务的水库巡查责任人相关信息(该处需要将是否超汛限条件传入) |
| | | JSONArray jsonArray = getZtWaterMangerData(params); |
| | |
| | | |
| | | import cn.gistack.sm.resDataCheck.entity.RulesCondition; |
| | | import cn.gistack.sm.resDataCheck.service.IRulesConditionService; |
| | | import cn.gistack.sm.resDataCheck.service.IRulesService; |
| | | import cn.gistack.sm.resDataCheck.vo.RulesVO; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | |
| | | package cn.gistack.sm.resDataCheck.controller; |
| | | |
| | | import cn.gistack.sm.patrol.entity.PatrolConfig; |
| | | import cn.gistack.sm.patrol.service.IPatrolConfigService; |
| | | import cn.gistack.sm.resDataCheck.entity.Rules; |
| | | import cn.gistack.sm.resDataCheck.entity.RulesCondition; |
| | | import cn.gistack.sm.resDataCheck.service.IRulesService; |
| | | import cn.gistack.sm.resDataCheck.vo.RulesVO; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| New file |
| | |
| | | package cn.gistack.sm.resDataCheck.feign; |
| | | |
| | | import cn.gistack.sm.resDataCheck.entity.Rules; |
| | | import cn.gistack.sm.resDataCheck.entity.RulesCondition; |
| | | import cn.gistack.sm.resDataCheck.service.IRulesConditionService; |
| | | import cn.gistack.sm.resDataCheck.service.IRulesService; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springblade.core.mp.support.Condition; |
| | | import org.springblade.core.tenant.annotation.NonDS; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | import springfox.documentation.annotations.ApiIgnore; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @PROJECT_NAME: skjcmanager |
| | | * @DESCRIPTION: |
| | | * @USER: aix |
| | | * @DATE: 2023/7/4 16:35 |
| | | */ |
| | | @NonDS |
| | | @ApiIgnore |
| | | @RestController |
| | | @AllArgsConstructor |
| | | public class RulesClient implements IRulesClient { |
| | | |
| | | private IRulesService rulesService; |
| | | |
| | | private IRulesConditionService rulesConditionService; |
| | | |
| | | @Override |
| | | public R createDataRules(Long id) { |
| | | // 获取规则对象 返回值有关联水库,只匹配关联水库,为空表示匹配所有水库 |
| | | Rules rules = rulesService.getById(id); |
| | | |
| | | // 根据规则对象获取查询条件 |
| | | RulesCondition rulesCondition = new RulesCondition(); |
| | | rulesCondition.setRuleId(String.valueOf(rules.getId())); |
| | | List<RulesCondition> rcList = rulesConditionService.list(Condition.getQueryWrapper(rulesCondition)); |
| | | |
| | | // 开始拼接条件 where |
| | | |
| | | // 判断规则操作数据表 |
| | | if (rules.getType().equals("BASIC")) { // 水库基本类型 |
| | | |
| | | } |
| | | |
| | | // 执行sql |
| | | return null; |
| | | } |
| | | } |
| | |
| | | package cn.gistack.sm.resDataCheck.mapper; |
| | | |
| | | import cn.gistack.sm.resDataCheck.entity.Rules; |
| | | import cn.gistack.sm.resDataCheck.entity.RulesCondition; |
| | | import cn.gistack.sm.resDataCheck.vo.RulesVO; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import org.apache.ibatis.annotations.Param; |
| | |
| | | package cn.gistack.sm.resDataCheck.mapper; |
| | | |
| | | import cn.gistack.sm.patrol.entity.PatrolConfig; |
| | | import cn.gistack.sm.resDataCheck.entity.Rules; |
| | | import cn.gistack.sm.resDataCheck.vo.RulesVO; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | |
| | | package cn.gistack.sm.resDataCheck.service; |
| | | |
| | | import cn.gistack.sm.resDataCheck.entity.Rules; |
| | | import cn.gistack.sm.resDataCheck.entity.RulesCondition; |
| | | import cn.gistack.sm.resDataCheck.vo.RulesVO; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import org.springblade.core.mp.base.BaseService; |
| | | |
| | |
| | | package cn.gistack.sm.resDataCheck.service.impl; |
| | | |
| | | import cn.gistack.sm.resDataCheck.entity.Rules; |
| | | import cn.gistack.sm.resDataCheck.entity.RulesCondition; |
| | | import cn.gistack.sm.resDataCheck.mapper.RulesConditionMapper; |
| | | import cn.gistack.sm.resDataCheck.mapper.RulesMapper; |
| | | import cn.gistack.sm.resDataCheck.service.IRulesConditionService; |
| | | import cn.gistack.sm.resDataCheck.service.IRulesService; |
| | | import cn.gistack.sm.resDataCheck.vo.RulesVO; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import org.springblade.core.mp.base.BaseServiceImpl; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | @TableField("\"ad_grad\"") |
| | | private String adGrad; |
| | | |
| | | /** |
| | | * 排序 |
| | | */ |
| | | @ApiModelProperty(value = "排序") |
| | | @TableField("\"order_id\"") |
| | | private Integer orderId; |
| | | |
| | | } |
| | |
| | | /** |
| | | * |
| | | * @param res_cd |
| | | * @param areaList |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<PersonVO> getUserListByResGuid(String res_cd) { |
| | | return adBaseService.getPersonListByResGuid(res_cd); |
| | | public List<PersonVO> getUserListByResGuid(String res_cd,String areaList) { |
| | | return adBaseService.getPersonListByResGuid(res_cd,areaList); |
| | | } |
| | | |
| | | @Override |
| | |
| | | * @param res_cd |
| | | * @return |
| | | */ |
| | | List<PersonVO> getPersonListByResGuid(@Param("res_cd")String res_cd); |
| | | List<PersonVO> getPersonListByResGuid(@Param("res_cd")String res_cd,@Param("roleName") String areaList); |
| | | |
| | | AttAdBaseVO getDetail(@Param("attAdBase") AttAdBase attAdBase); |
| | | |
| | |
| | | and IF(#{param2.showFour} = 'true',region."ad_grad" != 5,region."ad_grad" != 4) |
| | | </if> |
| | | </where> |
| | | ORDER BY region."ad_code" |
| | | ORDER BY region."order_id" |
| | | </select> |
| | | |
| | | <select id="selectAttAdBaseTree" resultType="cn.gistack.common.node.TreeNode"> |
| | |
| | | </if> |
| | | and region."ad_grad" != 4 |
| | | </where> |
| | | ORDER BY region."ad_code" |
| | | ORDER BY region."order_id" |
| | | </select> |
| | | |
| | | <select id="lazyTreeAll" resultMap="treeNodeResultMap"> |
| | |
| | | and region."ad_name" like concat(concat('%', #{param2.name}),'%') |
| | | </if> |
| | | </where> |
| | | ORDER BY region."ad_code" |
| | | ORDER BY region."order_id" |
| | | </select> |
| | | |
| | | <!--根据水库编号查询除责任人之外的人员信息--> |
| | | <select id="getPersonListByResGuid" resultType="cn.gistack.sm.sjztmd.vo.PersonVO"> |
| | | select bu.real_name,bu.phone,bd.ad_code from YWXT.blade_user bu left join YWXT.blade_dept bd on instr(bu.dept_id,bd.id)>0 and bd.is_deleted = 0 |
| | | select bu.real_name as name,bu.phone,bd.ad_code from YWXT.blade_user bu |
| | | left join YWXT.blade_dept bd on locate(bd.id,bu.dept_id)>0 and bd.is_deleted = 0 |
| | | left join YWXT.blade_role br on locate(br.id,bu.role_id)>0 and br.is_deleted = 0 |
| | | where bu.is_deleted = 0 |
| | | and bd.ad_code in ( |
| | | select "ad_code" from SJZT_MD."att_ad_base" |
| | | start with "ad_code" = (select "interior_ad_guid" from SJZT_MD."att_res_base" where "guid" = #{res_cd} ) |
| | | CONNECT BY PRIOR "p_ad_code" = "ad_code" |
| | | ) |
| | | and br.role_name like concat('%',#{roleName},'%') |
| | | and bu.phone is not null and bu.phone!='' |
| | | </select> |
| | | |
| | | <select id="getDetail" resultType="cn.gistack.sm.sjztmd.vo.AttAdBaseVO"> |
| | | SELECT |
| | | region."guid", |
| | |
| | | region."ad_name", |
| | | region."ad_grad", |
| | | region."p_ad_name" AS pAdName, |
| | | region."order_id" AS orderId, |
| | | ( SELECT CASE WHEN count( 1 ) > 0 THEN 1 ELSE 0 END FROM "SJZT_MD"."att_ad_base" WHERE "p_ad_code" = region."ad_code" ) AS "has_children" |
| | | FROM "SJZT_MD"."att_ad_base" region |
| | | WHERE region."guid" = #{attAdBase.guid} |
| | |
| | | /** |
| | | * 获取水库对应责任人分页数据 |
| | | * @param params 条件查询参数对象 |
| | | * @param ad_code 行政区like条件 |
| | | // * @param ad_code 行政区like条件 |
| | | // * @param adGrad 级别 |
| | | * @param page 分页查询参数对象 |
| | | * @return |
| | | */ |
| | | List<AttResBaseUserDTO> getAttResBaseUserPage(IPage<AttResBaseUserDTO> page, |
| | | @Param("ad_code") String ad_code, |
| | | @Param("p_ad_code") String p_ad_code, |
| | | @Param("params") Map<String, Object> params); |
| | | |
| | | /** |
| | |
| | | trmp5."user_unit" patrolUnitName,trmp5."user_name" patrolUsername,trmp5."user_phone" patrolPhone,trmp5."position" patrolPosition,trmp5."guid" patrolUserGuid |
| | | from SJZT_MD."att_res_base" arb |
| | | left join "SJZT_MD"."att_ad_base" aab on aab."guid" = arb."interior_ad_guid" |
| | | left join "SJZT_MD"."att_ad_base" aa on aab."p_ad_code" = aa."ad_code" |
| | | left join "SJZT_MD"."att_ad_base" ab on aa."p_ad_code" = ab."ad_code" |
| | | left join "SJZT_MD"."att_ad_base" ac on ab."p_ad_code" = ac."ad_code" |
| | | left join ( |
| | | select "res_guid",WM_Concat("guid") "guid",WM_Concat("user_unit") "user_unit",WM_Concat("user_name") "user_name",WM_Concat("user_phone") "user_phone",WM_Concat("position") "position" |
| | | from "SJZT_MD"."att_res_manage_person" where "type"=1 GROUP BY "res_guid" |
| | |
| | | ) |
| | | ) |
| | | </if> |
| | | <if test="p_ad_code != null and p_ad_code !='' "> |
| | | and aab."p_ad_code" like CONCAT(#{p_ad_code},'%') |
| | | </if> |
| | | <if test="ad_code != null and ad_code !='' "> |
| | | and aab."ad_code" = #{ad_code} |
| | | |
| | | <if test="params.adCode != null and params.adCode != '' "> |
| | | and (aab."ad_code" = #{params.adCode} or aa."ad_code" = #{params.adCode} or ab."ad_code" = #{params.adCode} or ac."ad_code" = #{params.adCode}) |
| | | </if> |
| | | </select> |
| | | |
| | |
| | | /** |
| | | * 根据水库编号查询除责任人之外的人员信息 |
| | | * @param res_cd |
| | | * @param areaList |
| | | * @return |
| | | */ |
| | | List<PersonVO> getPersonListByResGuid(String res_cd); |
| | | List<PersonVO> getPersonListByResGuid(String res_cd,String areaList); |
| | | |
| | | /** |
| | | * 获取详情 |
| | |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<PersonVO> getPersonListByResGuid(String res_cd) { |
| | | return baseMapper.getPersonListByResGuid(res_cd); |
| | | public List<PersonVO> getPersonListByResGuid(String res_cd,String areaList) { |
| | | return baseMapper.getPersonListByResGuid(res_cd,areaList); |
| | | } |
| | | |
| | | @Override |
| | |
| | | @Override |
| | | public Object getAttResBaseUserPage(IPage<AttResBaseUserDTO> page,Map<String, Object> params) { |
| | | |
| | | Object adCode = params.get("adCode"); |
| | | Object adGrad = params.get("adGrad"); |
| | | String ad_code = ""; |
| | | String p_ad_code = ""; |
| | | String code = adCode.toString(); |
| | | if (adGrad.toString().equals("1")) { |
| | | p_ad_code = code.substring(0,2); |
| | | } else if (adGrad.toString().equals("2")) { |
| | | p_ad_code = code.substring(0,4); |
| | | } else if (adGrad.toString().equals("3")) { |
| | | p_ad_code = code.substring(0,7); |
| | | } else { |
| | | ad_code = code; |
| | | } |
| | | |
| | | Object isExport = params.get("isExport"); |
| | | // 判断是否导出,导出不分页 |
| | | if (null != isExport && !isExport.equals("")) { |
| | | return baseMapper.getAttResBaseUserPage(null,ad_code,p_ad_code,params); |
| | | return baseMapper.getAttResBaseUserPage(null,params); |
| | | } |
| | | List<AttResBaseUserDTO> attResBaseUserDTOList = baseMapper.getAttResBaseUserPage(page,ad_code,p_ad_code,params); |
| | | List<AttResBaseUserDTO> attResBaseUserDTOList = baseMapper.getAttResBaseUserPage(page,params); |
| | | // 返回数据 |
| | | return page.setRecords(attResBaseUserDTOList); |
| | | } |
| | |
| | | and bu.tenant_id = #{user.tenantId} |
| | | </if> |
| | | <if test="user.account!=null and user.account != ''"> |
| | | and bu.account = #{user.account} |
| | | and bu.account like concat('%',#{user.account},'%') |
| | | </if> |
| | | <if test="user.realName!=null and user.realName != ''"> |
| | | and bu.real_name like concat(concat('%',#{user.realName}),'%') |
| | |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @XxlJob("waterFirstOverHandle_test") |
| | | @XxlJob("waterFirstOverHandle") |
| | | public ReturnT<String> waterFirstOverHandle(String param){ |
| | | XxlJobLogger.log("开始执行任务..."); |
| | | // 创建外呼任务 |
| New file |
| | |
| | | package cn.gistack.job.executor.jobhandler; |
| | | |
| | | import cn.gistack.sm.resDataCheck.feign.IRulesClient; |
| | | import com.xxl.job.core.biz.model.ReturnT; |
| | | import com.xxl.job.core.handler.annotation.XxlJob; |
| | | import com.xxl.job.core.log.XxlJobLogger; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | /** |
| | | * @PROJECT_NAME: skjcmanager |
| | | * @DESCRIPTION: 数据校验规则相关 |
| | | * @USER: aix |
| | | * @DATE: 2023/7/3 17:58 |
| | | */ |
| | | @Component |
| | | public class DataRulesXxlJob { |
| | | |
| | | @Autowired |
| | | private IRulesClient rulesClient; |
| | | |
| | | |
| | | @XxlJob("dataRulesJobHandler") |
| | | public ReturnT<String> execute(String param) { |
| | | XxlJobLogger.log("开始数据校验规则任务..."); |
| | | R r = rulesClient.createDataRules(1L); |
| | | XxlJobLogger.log("结束数据校验规则任务...",r.getMsg()); |
| | | return ReturnT.SUCCESS; |
| | | } |
| | | |
| | | } |
| | |
| | | List<String> result = outCallClient.createOutCallTaskJobHandler(isOver,taskScheduleTime,personNumber, day); |
| | | XxlJobLogger.log("任务响应结果..." + result); |
| | | // 创建外呼短信发送任务记录 |
| | | Boolean flag = createCallSmsNoticeTask(result); |
| | | Boolean flag = createCallSmsNoticeTaskByEvery(result); |
| | | XxlJobLogger.log("外呼短信通知任务创建结果:" + flag); |
| | | XxlJobLogger.log("结束自动创建任务..."); |
| | | return ReturnT.SUCCESS; |
| | | } |
| | | |
| | | /** |
| | | * 创建外呼短信发送任务记录--日常定时任务 |
| | | * @param result |
| | | */ |
| | | private Boolean createCallSmsNoticeTaskByEvery(List<String> result) { |
| | | Boolean flag = false; |
| | | if (null != result && result.size()>3) { |
| | | if (result.get(2).equals("true")) { |
| | | // 获取任务id |
| | | String taskId = result.get(1); |
| | | flag = outCallClient.createCallSmsNoticeTask(taskId); |
| | | } |
| | | } |
| | | return flag; |
| | | } |
| | | |
| | | /** |
| | |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @XxlJob("testOutCall_0628") |
| | | @XxlJob("testOutCall_0703") |
| | | public ReturnT<String> testOutCall(String param){ |
| | | XxlJobLogger.log("开始执行任务..."); |
| | | JSONObject jsonParam = JSON.parseObject(param); |
| | |
| | | // String personNumber = jsonParam.getString("personNumber"); |
| | | // String day = jsonParam.getString("day"); |
| | | // 创建外呼任务 |
| | | Object result = outCallClient.testOutCall("","","", ""); |
| | | XxlJobLogger.log("任务响应结果:" + result); |
| | | // Object result = outCallClient.createOutCallTaskJobHandler("","","", ""); |
| | | // XxlJobLogger.log("任务响应结果:" + result); |
| | | XxlJobLogger.log("结束自动创建任务..."); |
| | | return ReturnT.SUCCESS; |
| | | } |