zrj
2024-08-21 0ea7de404274404acbb523128f2528f297818fe5
新增发送记录接口,发送记录保存逻辑调整
17 files modified
440 ■■■■■ changed files
skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/entity/SmsRecord.java 11 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/vo/SmsRecordVO.java 37 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/intelligentCall/vo/CallTaskStatistic.java 5 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/message/entity/MessageRecord.java 18 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/AsyncNoticeHandle.java 7 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeHandle.java 16 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeStrategyImpl.java 2 ●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/controller/SmsController.java 4 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/controller/SmsRecordController.java 13 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/feign/SmsRecordClient.java 2 ●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/mapper/SmsRecordMapper.java 37 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/mapper/SmsRecordMapper.xml 192 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/ISmsRecordService.java 8 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/SmsService.java 4 ●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsRecordServiceImpl.java 36 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsServiceImpl.java 47 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/mapper/CallTaskMapper.xml 1 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/entity/SmsRecord.java
@@ -91,4 +91,15 @@
    @ApiModelProperty("是否已删除")
    private Integer isDeleted;
    /**
     * 水库guid
     */
    @ApiModelProperty("水库guid")
    private String resGuid;
    /**
     * 告警规则id
     */
    private Long alarmRuleId;
}
skjcmanager/skjcmanager-service-api/skjcmanager-alerts-api/src/main/java/cn/gistack/alerts/sms/vo/SmsRecordVO.java
@@ -14,4 +14,41 @@
     * 是否导出,不为空是导出,不分页
     */
    private Integer isExport;
    /**
     * 开始时间
     */
    private String startTime;
    /**
     * 结束时间
     */
    private String endTime;
    /**
     * 消息记录类型  1:短信 2:站内信
     */
    private String type;
    /**
     * 消息类型
     */
    private String smsType;
    /**
     * 水库名称
     */
    private String resName;
    /**
     * 规则名称
     */
    private String ruleName;
    /**
     * 用户名
     */
    private String userName;
}
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/intelligentCall/vo/CallTaskStatistic.java
@@ -50,6 +50,11 @@
    private String executeTime;
    /**
     * 任务最后修改时间
     */
    private String gmtModified;
    /**
     * 被叫号码量
     */
    private String calleeNumberCount;
skjcmanager/skjcmanager-service-api/skjcmanager-sm-api/src/main/java/cn/gistack/sm/message/entity/MessageRecord.java
@@ -46,10 +46,24 @@
     */
    private String source;
    /**
     * 水库guid
     */
    private String resGuid;
    /**
     * 反馈
     */
    private String feedback;
    //是否异常 1是 2 否
    private String alertStatus;
    /**
     * 告警规则id
     */
    private Long alarmRuleId;
    /**
     * 告警模板id
     */
    private String templateId;
}
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/AsyncNoticeHandle.java
@@ -827,9 +827,10 @@
                // 保存告警记录信息
                AlarmRecord alarmRecord = noticeHandle.saveAlarmRecord(list, alarmRule, uuid, remark);
                if (null != alarmRecord) {
                    list.add(alarmRecord.getId().toString());
                }
//                if (null != alarmRecord) {
//                    list.add(alarmRecord.getId().toString());
                    list.add("445566544112");
//                }
            }
            if (!isTimeSend()) return map;
            map = smsService.sendSignMsg(smsRequestTemplate);
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeHandle.java
@@ -662,12 +662,12 @@
            //删除测值
            list.remove(3);
            // 新增
            boolean save = alarmRecordService.save(alarm);
//            boolean save = alarmRecordService.save(alarm);
            // 删除测站编号
            list.remove(0);
            if (save) {
                return alarm;
            }
//            if (save) {
//                return alarm;
//            }
        }
        // 返回
        return null;
@@ -1003,6 +1003,8 @@
            messageRecord.setSender(AuthUtil.getUserId().toString());
            messageRecord.setSource("智能告警");
            messageRecord.setStatus(0);
            messageRecord.setAlarmRuleId(alarmRule.getId());
            messageRecord.setTemplateId(smsTemplate.getTemplateId());
            // 设置告警记录信息
            AlarmRecordDetail alarmRecordDetail = new AlarmRecordDetail();
            alarmRecordDetail.setReservoirNumber(list.get(0));
@@ -1087,6 +1089,8 @@
            messageRecord.setSource("智能告警");
            messageRecord.setStatus(0);
            messageRecord.setRecipient(phone);
            messageRecord.setTemplateId(smsTemplate.getTemplateId());
            messageRecord.setAlarmRuleId(alarmRule.getId());
            StringBuilder builder = new StringBuilder();
@@ -1165,6 +1169,8 @@
            messageRecord.setSource("智能告警");
            messageRecord.setStatus(0);
            messageRecord.setRecipient(phone);
            messageRecord.setTemplateId(smsTemplate.getTemplateId());
            messageRecord.setAlarmRuleId(alarmRule.getId());
            List<String> resCdList = new ArrayList<>();
            Map<String, List<Temp>> resCollect = temps.stream().collect(Collectors.groupingBy(Temp::getReservoirCode));
@@ -1237,6 +1243,8 @@
            messageRecord.setSource("智能告警");
            messageRecord.setStatus(0);
            messageRecord.setRecipient(phone);
            messageRecord.setTemplateId(smsTemplate.getTemplateId());
            messageRecord.setAlarmRuleId(alarmRule.getId());
            List<String> contentList = new ArrayList<>();
            //因为只能按编号分组,名称会有重复,所以拿第一条数据的名称就行
            temps.forEach(info -> {
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/notice/service/impl/NoticeStrategyImpl.java
@@ -218,7 +218,7 @@
                // 遍历
                for (AlarmRuleDetail alarmRuleDetail : alarmRuleDetailList) {
                    if (alarmRuleDetail.getAlarmMode().equals("短信")) {
                        asyncNoticeHandle.waterFirstOverHandle(alarmRule, alarmRuleDetail, ztData, ZtApiDataColumnConstant.waterFirstOverList, true, adCode, true);
                        asyncNoticeHandle.waterFirstOverHandle(alarmRule, alarmRuleDetail, ztData, ZtApiDataColumnConstant.waterFirstOverList, true, adCode, false);
                    }
                }
            }
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/controller/SmsController.java
@@ -89,7 +89,7 @@
            // 记录发送记录操作
            SmsResult smsResult = smsService.saveSendResult(null,resultComResult.getCode().toString(),resultComResult.getMsg(),request, 1);
            if (null != smsResult){
                smsService.saveSendRecord(request, resultComResult.getCode().toString(),resultComResult.getMsg(),smsResult.getId());
                smsService.saveSendRecord(request, resultComResult.getCode().toString(),resultComResult.getMsg(),smsResult.getId(),smsResult.getAlarmRuleId(),null);
            }
            // 返回发送信息
            return R.data(resultComResult);
@@ -119,7 +119,7 @@
            // 记录发送记录操作
            SmsResult smsResult = smsService.saveSendResult(null,resultComResult.getCode().toString(),resultComResult.getMsg(),request, 1);
            if (null != smsResult){
                smsService.saveSendRecord(request, resultComResult.getCode().toString(),resultComResult.getMsg(),smsResult.getId());
                smsService.saveSendRecord(request, resultComResult.getCode().toString(),resultComResult.getMsg(),smsResult.getId(),smsResult.getAlarmRuleId(),null);
            }
            // 保存验证码到 redis
            saveCodeForRedis(request.getUserNumber(), randNumber);
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/controller/SmsRecordController.java
@@ -108,4 +108,17 @@
       return R.data(SmsRecord);
   }
    /**
     * 自定义分页列表查询
     * @param query 分页查询对象
     * @param smsRecord
     * @return
     */
    @ApiOperation(value="短信发送记录-自定义分页列表查询", notes="短信发送记录-自定义分页列表查询")
    @GetMapping(value = "/msgPage")
    public R msgPage(SmsRecordVO smsRecord, Query query) {
        return R.data(smsRecordService.msgPage(Condition.getPage(query), smsRecord));
    }
}
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/feign/SmsRecordClient.java
@@ -62,7 +62,7 @@
        // 记录发送记录操作
        SmsResult smsResult = smsService.saveSendResult(null,code,msg,request, number);
        if (null != smsResult){
            smsService.saveSendRecord(request, code,msg,smsResult.getId());
            smsService.saveSendRecord(request, code,msg,smsResult.getId(),null,null);
        }
    }
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/mapper/SmsRecordMapper.java
@@ -2,6 +2,7 @@
import cn.gistack.alerts.sms.entity.SmsRecord;
import cn.gistack.alerts.sms.vo.SmsRecordVO;
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
@@ -28,4 +29,40 @@
     * @return
     */
    int batchSaveSendRecord(@Param("list") List<SmsRecord> list);
    /**
     * 短信消息记录查询
     * @param page
     * @param smsRecord
     * @param list
     * @return
     */
    @InterceptorIgnore(tenantLine = "1")
    List<SmsRecordVO> smsPage(IPage<SmsRecordVO> page,
                              @Param("smsRecord")  SmsRecordVO smsRecord,
                              @Param("list")  List<String> list);
    /**
     * 站内信消息记录查询
     * @param page
     * @param smsRecord
     * @param list
     * @return
     */
    @InterceptorIgnore(tenantLine = "1")
    List<SmsRecordVO> msgPage(IPage<SmsRecordVO> page,
                              @Param("smsRecord")  SmsRecordVO smsRecord,
                              @Param("list")  List<String> list);
    /**
     * 短信和站内信消息记录查询  @InterceptorIgnore(tenantLine = "1") 等价 @SqlParser(filter = true)已过期
     * @param page
     * @param smsRecord
     * @param list
     * @return
     */
    @InterceptorIgnore(tenantLine = "1")
    List<SmsRecordVO> smsAndMsgPage(IPage<SmsRecordVO> page,
                                    @Param("smsRecord")  SmsRecordVO smsRecord,
                                    @Param("list")  List<String> list);
}
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/mapper/SmsRecordMapper.xml
@@ -39,4 +39,196 @@
        </foreach>
    </insert>
    <!--站内信消息记录列表查询-->
    <select id="msgPage" resultType="cn.gistack.alerts.sms.vo.SmsRecordVO">
        select
        smr.id,smr.content,smr.create_time,'发送成功' as responseMsg,smr.template_id,
        a."name" as resName,
        bu.name as userName,bu.phone as tel,
        2 as type,
        sar.rule_name as ruleName,sst.sms_type as smsType
        from YWXT.sm_message_record smr
        left join SJZT_MD."att_res_base" a on a."guid" = smr.res_guid
        left join YWXT.blade_user bu on CAST(bu.id AS VARCHAR) = smr.recipient and bu.is_deleted = 0
        left join YWXT.sm_alarm_rule sar on sar.id = smr.alarm_rule_id
        left join YWXT.sm_sms_template sst on sst.template_id = smr.template_id and sst.is_deleted = 0
        <where>
            <if test="smsRecord.templateId!=null and smsRecord.templateId!=''">
                and smr.template_id = #{smsRecord.templateId}
            </if>
            <if test="smsRecord.smsType!=null and smsRecord.smsType!=''">
                and sst.sms_type = #{smsRecord.smsType}
            </if>
            <if test="smsRecord.tel!=null and smsRecord.tel!=''">
                and bu.phone = #{smsRecord.tel}
            </if>
            <if test="smsRecord.content!=null and smsRecord.content!=''">
                and smr.content like concat(concat('%',#{smsRecord.content}),'%')
            </if>
            <if test="smsRecord.userName!=null and smsRecord.userName!=''">
                and bu.name like concat(concat('%',#{smsRecord.userName}),'%')
            </if>
            <if test="smsRecord.resName!=null and smsRecord.resName!=''">
                and a.name like concat(concat('%',#{smsRecord.resName}),'%')
            </if>
            <if test="smsRecord.startTime!=null and smsRecord.startTime!=''">
                and DATE_FORMAT(smr.create_time,'%Y-%m-%d') >= #{smsRecord.startTime}
            </if>
            <if test="smsRecord.endTime!=null and smsRecord.endTime!=''">
                and DATE_FORMAT(smr.create_time,'%Y-%m-%d') &lt;= #{smsRecord.endTime}
            </if>
            <if test="list!=null and list.size()>0">
                and smr.template_id in
                <foreach collection="list" item="id" separator ="," open="("  close=")">
                    #{id}
                </foreach>
            </if>
        </where>
        order by smr.id desc
    </select>
    <!--短信消息记录列表查询-->
    <select id="smsPage" resultType="cn.gistack.alerts.sms.vo.SmsRecordVO">
        select
        ssr.id,ssr.tel,ssr.content,ssr.create_time,ssr.response_msg,ssr.template_id,
        a."name" as resName,
        bu.name as userName,
        1 as type,
        sar.rule_name as ruleName,sst.sms_type as smsType
        from YWXT.sm_sms_record ssr
        left join SJZT_MD."att_res_base" a on a."guid" = ssr.res_guid
        left join YWXT.blade_user bu on bu.account = ssr.tel and bu.is_deleted = 0
        left join YWXT.sm_alarm_rule sar on sar.id = ssr.alarm_rule_id
        left join YWXT.sm_sms_template sst on sst.template_id = ssr.template_id and sst.is_deleted = 0
        <where>
            <if test="smsRecord.templateId!=null and smsRecord.templateId!=''">
                and ssr.template_id = #{smsRecord.templateId}
            </if>
            <if test="smsRecord.smsType!=null and smsRecord.smsType!=''">
                and sst.sms_type = #{smsRecord.smsType}
            </if>
            <if test="smsRecord.tel!=null and smsRecord.tel!=''">
                and ssr.tel = #{smsRecord.tel}
            </if>
            <if test="smsRecord.content!=null and smsRecord.content!=''">
                and ssr.content like concat(concat('%',#{smsRecord.content}),'%')
            </if>
            <if test="smsRecord.userName!=null and smsRecord.userName!=''">
                and bu.name like concat(concat('%',#{smsRecord.userName}),'%')
            </if>
            <if test="smsRecord.resName!=null and smsRecord.resName!=''">
                and a.name like concat(concat('%',#{smsRecord.resName}),'%')
            </if>
            <if test="smsRecord.startTime!=null and smsRecord.startTime!=''">
                and DATE_FORMAT(ssr.create_time,'%Y-%m-%d') >= #{smsRecord.startTime}
            </if>
            <if test="smsRecord.endTime!=null and smsRecord.endTime!=''">
                and DATE_FORMAT(ssr.create_time,'%Y-%m-%d') &lt;= #{smsRecord.endTime}
            </if>
            <if test="list!=null and list.size()>0">
                and ssr.template_id in
                <foreach collection="list" item="id" separator="," open="(" close=")">
                    #{id}
                </foreach>
            </if>
        </where>
        order by ssr.id desc
    </select>
    <!--短信和站内信消息记录列表查询-->
    <select id="smsAndMsgPage" resultType="cn.gistack.alerts.sms.vo.SmsRecordVO">
        (select
        ssr.id,ssr.tel,ssr.content,ssr.create_time,ssr.response_msg,ssr.template_id,
        a."name" as resName,
        bu.name as userName,
        1 as type,
        sar.rule_name as ruleName,sst.sms_type as smsType
        from YWXT.sm_sms_record ssr
        left join SJZT_MD."att_res_base" a on a."guid" = ssr.res_guid
        left join YWXT.blade_user bu on bu.account = ssr.tel and bu.is_deleted = 0
        left join YWXT.sm_alarm_rule sar on sar.id = ssr.alarm_rule_id
        left join YWXT.sm_sms_template sst on sst.template_id = ssr.template_id and sst.is_deleted = 0
        <where>
            <if test="smsRecord.templateId!=null and smsRecord.templateId!=''">
                and ssr.template_id = #{smsRecord.templateId}
            </if>
            <if test="smsRecord.smsType!=null and smsRecord.smsType!=''">
                and sst.sms_type = #{smsRecord.smsType}
            </if>
            <if test="smsRecord.tel!=null and smsRecord.tel!=''">
                and ssr.tel = #{smsRecord.tel}
            </if>
            <if test="smsRecord.content!=null and smsRecord.content!=''">
                and ssr.content like concat(concat('%',#{smsRecord.content}),'%')
            </if>
            <if test="smsRecord.userName!=null and smsRecord.userName!=''">
                and bu.name like concat(concat('%',#{smsRecord.userName}),'%')
            </if>
            <if test="smsRecord.resName!=null and smsRecord.resName!=''">
                and a.name like concat(concat('%',#{smsRecord.resName}),'%')
            </if>
            <if test="smsRecord.startTime!=null and smsRecord.startTime!=''">
                and DATE_FORMAT(ssr.create_time,'%Y-%m-%d') >= #{smsRecord.startTime}
            </if>
            <if test="smsRecord.endTime!=null and smsRecord.endTime!=''">
                and DATE_FORMAT(ssr.create_time,'%Y-%m-%d') &lt;= #{smsRecord.endTime}
            </if>
            <if test="list!=null and list.size()>0">
                and ssr.template_id in
                <foreach collection="list" item="id" separator="," open="(" close=")">
                    #{id}
                </foreach>
            </if>
        </where>
        )
        union all
        (
        select
        smr.id,smr.content,smr.create_time,'发送成功' as responseMsg,smr.template_id,
        a."name" as resName,
        bu.name as userName,bu.phone as tel,
        2 as type,
        sar.rule_name as ruleName,sst.sms_type as smsType
        from YWXT.sm_message_record smr
        left join SJZT_MD."att_res_base" a on a."guid" = smr.res_guid
        left join YWXT.blade_user bu on CAST(bu.id AS VARCHAR) = smr.recipient and bu.is_deleted = 0
        left join YWXT.sm_alarm_rule sar on sar.id = smr.alarm_rule_id
        left join YWXT.sm_sms_template sst on sst.template_id = smr.template_id and sst.is_deleted = 0
        <where>
            <if test="smsRecord.templateId!=null and smsRecord.templateId!=''">
                and smr.template_id = #{smsRecord.templateId}
            </if>
            <if test="smsRecord.smsType!=null and smsRecord.smsType!=''">
                and sst.sms_type = #{smsRecord.smsType}
            </if>
            <if test="smsRecord.tel!=null and smsRecord.tel!=''">
                and bu.phone = #{smsRecord.tel}
            </if>
            <if test="smsRecord.content!=null and smsRecord.content!=''">
                and smr.content like concat(concat('%',#{smsRecord.content}),'%')
            </if>
            <if test="smsRecord.userName!=null and smsRecord.userName!=''">
                and bu.name like concat(concat('%',#{smsRecord.userName}),'%')
            </if>
            <if test="smsRecord.resName!=null and smsRecord.resName!=''">
                and a.name like concat(concat('%',#{smsRecord.resName}),'%')
            </if>
            <if test="smsRecord.startTime!=null and smsRecord.startTime!=''">
                and DATE_FORMAT(smr.create_time,'%Y-%m-%d') >= #{smsRecord.startTime}
            </if>
            <if test="smsRecord.endTime!=null and smsRecord.endTime!=''">
                and DATE_FORMAT(smr.create_time,'%Y-%m-%d') &lt;= #{smsRecord.endTime}
            </if>
            <if test="list!=null and list.size()>0">
                and smr.template_id in
                <foreach collection="list" item="id" separator ="," open="("  close=")">
                    #{id}
                </foreach>
            </if>
        </where>
        )
    </select>
</mapper>
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/ISmsRecordService.java
@@ -22,4 +22,12 @@
     * @param list
     */
    int batchSaveSendRecord(List<SmsRecord> list);
    /**
     * 自定义分页列表查询
     * @param page 分页查询对象
     * @param smsRecord
     * @return
     */
    Object msgPage(IPage<SmsRecordVO> page, SmsRecordVO smsRecord);
}
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/SmsService.java
@@ -55,9 +55,11 @@
     * @param code
     * @param sendMsg
     * @param resultId
     * @param alarmRuleId
     * @param resGuid
     * @return
     */
    SmsRecord saveSendRecord(SMSSendRequest request,String code, String sendMsg, Long resultId);
    SmsRecord saveSendRecord(SMSSendRequest request,String code, String sendMsg, Long resultId,Long alarmRuleId,String resGuid);
    /**
     * 发送降雨短信
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsRecordServiceImpl.java
@@ -1,13 +1,18 @@
package cn.gistack.alerts.sms.service.impl;
import cn.gistack.alerts.alarmRule.service.AlarmRuleService;
import cn.gistack.alerts.sms.entity.SmsRecord;
import cn.gistack.alerts.sms.mapper.SmsRecordMapper;
import cn.gistack.alerts.sms.service.ISmsRecordService;
import cn.gistack.alerts.sms.vo.SmsRecordVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.logging.log4j.util.Strings;
import org.springblade.core.log.exception.ServiceException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
@@ -16,6 +21,9 @@
 */
@Service
public class SmsRecordServiceImpl extends ServiceImpl<SmsRecordMapper, SmsRecord> implements ISmsRecordService {
    @Autowired
    private AlarmRuleService alarmRuleService;
    /**
     * 自定义分页列表查询
@@ -42,4 +50,32 @@
    public int batchSaveSendRecord(List<SmsRecord> list) {
        return baseMapper.batchSaveSendRecord(list);
    }
    /**
     * 自定义分页列表查询
     * @param page 分页查询对象
     * @param smsRecord
     * @return
     */
    @Override
    public Object msgPage(IPage<SmsRecordVO> page, SmsRecordVO smsRecord) {
        List<String> list = new ArrayList<>();
        // 判断是否为一级目录
        if (null!=smsRecord.getSmsType() && smsRecord.getSmsType().length()>1){
            // 查询对应的短信模板ID 集合
            list = alarmRuleService.getAlarmRuleDetailList(smsRecord.getSmsType());
            // 设置类型为null
            smsRecord.setSmsType("");
        }
        if (!Strings.isBlank(smsRecord.getType()) && smsRecord.getType().equals("1")){
            // 查询短信
            return page.setRecords(baseMapper.smsPage(page,smsRecord,list));
        }
        if (!Strings.isBlank(smsRecord.getType()) && smsRecord.getType().equals("2")){
            // 查询站内信
            return page.setRecords(baseMapper.msgPage(page,smsRecord,list));
        }
        // 查询全部返回
        return page.setRecords(baseMapper.smsAndMsgPage(page,smsRecord,list));
    }
}
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/sms/service/impl/SmsServiceImpl.java
@@ -2,7 +2,6 @@
import cn.com.flaginfo.sdk.cmc.api.result.ComResult;
import cn.com.flaginfo.sdk.cmc.api.sms.dynsend.DynSMSSendDataResult;
import cn.com.flaginfo.sdk.cmc.api.sms.dynsend.DynSMSSendRequest;
import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendDataResult;
import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendRequest;
import cn.gistack.alerts.alarmRule.entity.AlarmRecordDetail;
@@ -28,25 +27,21 @@
import cn.gistack.alerts.sms.vo.SmsResponseVO;
import cn.gistack.alerts.sms.vo.Temp;
import cn.gistack.sm.intelligentCall.entity.CallNotFillRecord;
import cn.gistack.sm.intelligentCall.excel.CallExcel;
import cn.gistack.sm.intelligentCall.feign.OutCallClient;
import cn.gistack.sm.message.entity.MessageRecord;
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 com.google.common.collect.Sets;
import org.apache.logging.log4j.util.Strings;
import org.jetbrains.annotations.NotNull;
import org.springblade.core.redis.cache.BladeRedis;
import org.springblade.core.secure.utils.AuthUtil;
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;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
@@ -111,7 +106,7 @@
                ComResult<SMSSendDataResult> result = SmsUtils.sendMsg(request);
                if(null != smsResult) {
                    // 保存记录
                    saveSendRecord(request, result.getCode().toString(), result.getMsg(), smsResult.getId());
                    saveSendRecord(request, result.getCode().toString(), result.getMsg(), smsResult.getId(),null,null);
                }
                list.add(result);
            }
@@ -291,6 +286,8 @@
                messageRecord.setSender(AuthUtil.getUserId().toString());
                messageRecord.setSource("智能告警");
                messageRecord.setStatus(0);
                messageRecord.setTemplateId(smsTemplate.getTemplateId());
                messageRecord.setAlarmRuleId(alarmRule.getId());
                // 设置告警记录信息
                AlarmRecordDetail alarmRecordDetail = new AlarmRecordDetail();
                alarmRecordDetail.setReservoirNumber(list.get(0));
@@ -318,7 +315,7 @@
                    messageRecord.setContent(format);
                    messageRecordList.add(messageRecord);
                    // 保存短信发送记录
                    smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId());
                    smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId(),alarmRule.getId(),alarmRecordDetail.getReservoirNumber());
                    if (null != smsRecord) {
                        alarmRecordDetail.setAlarmContent(format);
                        alarmRecordDetail.setSendRecordId(smsRecord.getId());
@@ -449,10 +446,18 @@
     * @param request
     * @param code 响应code
     * @param sendMsg 响应消息
     * @param resultId
     * @param resultId 短信发送结果id
     * @param alarmRuleId 告警规则id
     * @param resGuid 水库guid
     */
    @Override
    public SmsRecord saveSendRecord(SMSSendRequest request, String code, String sendMsg, Long resultId) {
    public SmsRecord saveSendRecord(SMSSendRequest request,
                                    String code,
                                    String sendMsg,
                                    Long resultId,
                                    Long alarmRuleId,
                                    String resGuid
                                    ) {
        // 在保存明细
        SmsRecord smsRecord = new SmsRecord();
        smsRecord.setTel(request.getUserNumber());
@@ -461,6 +466,8 @@
        smsRecord.setResultId(resultId);
        smsRecord.setResponseStatus(code);
        smsRecord.setResponseMsg(sendMsg);
        smsRecord.setResGuid(resGuid);
        smsRecord.setAlarmRuleId(alarmRuleId);
        //插入记录
        smsRecordService.save(smsRecord);
        // 返回
@@ -800,8 +807,10 @@
            List<List<Temp>> lists = Lists.partition(new ArrayList<>(temps), 30);
            for (List<Temp> list : lists) {
                List<AlarmRecordDetailVO> alarmRecordDetailList = new ArrayList<>();
                List<String> resGuidList = new ArrayList<>();
                // 遍历
                for (Temp temp : list) {
                    resGuidList.add(temp.getReservoirCode());
                    builder.append(temp.getReservoirName()).append(",");
                    smsRecordBuilder.append(temp.getReservoirName()).append(",");
                    AlarmRecordDetailVO alarmRecordDetail = new AlarmRecordDetailVO();
@@ -835,7 +844,8 @@
                // 设置内容
                request.setMessageContent(format);
                // 保存短信发送记录
                SmsRecord smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId());
                String resGuid = resGuidList.size()>0?Strings.join(resGuidList,','):"";
                SmsRecord smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId(),smsResult.getAlarmRuleId(),resGuid);
                //保存告警记录详情信息
                if (null != smsRecord) {
                    List<AlarmRecordDetail> alarmRecordDetailArrayList = new ArrayList<>();
@@ -914,8 +924,10 @@
            List<List<Temp>> lists = Lists.partition(new ArrayList<>(infoList), 30);
            for (List<Temp> list : lists) {
                List<AlarmRecordDetailVO> alarmRecordDetailList = new ArrayList<>();
                List<String> resGuidList = new ArrayList<>();
                // 遍历
                for (Temp temp : list) {
                    resGuidList.add(temp.getReservoirCode());
                    builder.append(temp.getReservoirName()+"("+temp.getCdNm() +")").append(",");
                    smsRecordBuilder.append(temp.getReservoirName()+"("+temp.getCdNm() +")").append(",");
                    AlarmRecordDetailVO alarmRecordDetail = new AlarmRecordDetailVO();
@@ -948,8 +960,9 @@
                String format = String.format(str, substring.split(","));
                // 设置内容
                request.setMessageContent(format);
                String resGuid = resGuidList.size()>0? Strings.join(resGuidList,','):"";
                // 保存短信发送记录
                SmsRecord smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId());
                SmsRecord smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId(),smsResult.getAlarmRuleId(),resGuid);
                //保存告警记录详情信息
                if (null != smsRecord) {
                    List<AlarmRecordDetail> alarmRecordDetailArrayList = new ArrayList<>();
@@ -1034,12 +1047,14 @@
            });
            // 如果一人对应水库数量超过30个,则分批发送
            // 如果一人对应水库数量超过15个,则分批发送
            List<List<Temp>> lists = Lists.partition(new ArrayList<>(infoList), 15);
            for (List<Temp> list : lists) {
                List<String> resGuidList = new ArrayList<>();
                List<AlarmRecordDetailVO> alarmRecordDetailList = new ArrayList<>();
                // 遍历
                for (Temp temp : list) {
                    resGuidList.add(temp.getReservoirCode());
                    builder.append(temp.getReservoirName()+"("+temp.getCdNm() +")").append(",");
                    smsRecordBuilder.append(temp.getReservoirName()+"("+temp.getCdNm() +")").append(",");
                    AlarmRecordDetailVO alarmRecordDetail = new AlarmRecordDetailVO();
@@ -1072,8 +1087,10 @@
                String format = String.format(str, substring.split(","));
                // 设置内容
                request.setMessageContent(format);
                // 转resGuid
                String resGuid = resGuidList.size()>0? Strings.join(resGuidList,','):"";
                // 保存短信发送记录
                SmsRecord smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId());
                SmsRecord smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId(),smsResult.getAlarmRuleId(),resGuid);
                //保存告警记录详情信息
                if (null != smsRecord) {
                    List<AlarmRecordDetail> alarmRecordDetailArrayList = new ArrayList<>();
@@ -1191,7 +1208,7 @@
            // 设置内容
            request.setMessageContent(formatContent);
            // 保存短信发送记录
            SmsRecord smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId());
            SmsRecord smsRecord = saveSendRecord(request, resultComResult.getCode().toString(), resultComResult.getMsg(), smsResult.getId(),smsResult.getAlarmRuleId(),null);
            AlarmRecordDetail alarmRecordDetail1 = new AlarmRecordDetail();
            // 短信内容拼接(完成发送的结果信息)
            alarmRecordDetail1.setAlarmContent(formatContent);
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/intelligentCall/mapper/CallTaskMapper.xml
@@ -10,6 +10,7 @@
        date_format(ct."gmt_create",'%Y-%m-%d %H:%i:%s') as createTime,
        ct."task_status" as taskStatus,
        date_format(ct."task_schedule_time",'%Y-%m-%d %H:%i:%s') as executeTime,
        date_format(ct."gmt_modified",'%Y-%m-%d %H:%i:%s') as gmtModified,
        ctr."calling_number" as callingNumber,
        ctra."callee_number_count" as calleeNumberCount,
        if(ifnull(scnfr.task_id,0)='0',ctra."connection_count",(ctra."connection_count"+scnfr.num)) as connectionCount,