package com.ruoyi.system.service.impl; 
 | 
  
 | 
import java.io.IOException; 
 | 
import java.sql.Date; 
 | 
import java.time.LocalDate; 
 | 
import java.util.Arrays; 
 | 
import java.util.LinkedHashMap; 
 | 
import java.util.List; 
 | 
import java.util.Map; 
 | 
  
 | 
import com.alibaba.fastjson2.JSONObject; 
 | 
import com.fasterxml.jackson.core.JsonProcessingException; 
 | 
import com.fasterxml.jackson.databind.ObjectMapper; 
 | 
import com.google.gson.Gson; 
 | 
import com.ruoyi.common.enums.MsgLSEnum; 
 | 
import com.ruoyi.common.utils.DateUtils; 
 | 
import com.ruoyi.common.utils.OkHttpExample; 
 | 
import com.ruoyi.common.utils.StringUtils; 
 | 
import com.ruoyi.system.service.ISysConfigService; 
 | 
import com.smartor.common.LSHospTokenUtil; 
 | 
import com.smartor.domain.ServiceSubtask; 
 | 
import com.smartor.mapper.ServiceSubtaskMapper; 
 | 
import lombok.extern.slf4j.Slf4j; 
 | 
import org.apache.commons.lang3.ObjectUtils; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.stereotype.Service; 
 | 
import com.ruoyi.system.mapper.SmsRecordsMapper; 
 | 
import com.ruoyi.system.domain.SmsRecords; 
 | 
import com.ruoyi.system.service.ISmsRecordsService; 
 | 
  
 | 
/** 
 | 
 * 短信记录Service业务层处理 
 | 
 * 
 | 
 * @author smartor 
 | 
 * @date 2023-03-06 
 | 
 */ 
 | 
@Slf4j 
 | 
@Service 
 | 
public class SmsRecordsServiceImpl implements ISmsRecordsService { 
 | 
    @Autowired 
 | 
    private SmsRecordsMapper smsRecordsMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private ISysConfigService iSysConfigService; 
 | 
  
 | 
    @Autowired 
 | 
    private ServiceSubtaskMapper serviceSubtaskMapper; 
 | 
  
 | 
    /** 
 | 
     * 查询短信记录 
 | 
     * 
 | 
     * @param recordid 短信记录主键 
 | 
     * @return 短信记录 
 | 
     */ 
 | 
    @Override 
 | 
    public SmsRecords selectSmsRecordsByRecordid(Long recordid) { 
 | 
        return smsRecordsMapper.selectSmsRecordsByRecordid(recordid); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 查询短信记录列表 
 | 
     * 
 | 
     * @param smsRecords 短信记录 
 | 
     * @return 短信记录 
 | 
     */ 
 | 
    @Override 
 | 
    public List<SmsRecords> selectSmsRecordsList(SmsRecords smsRecords) { 
 | 
        return smsRecordsMapper.selectSmsRecordsList(smsRecords); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 新增短信记录 
 | 
     * 
 | 
     * @param smsRecords 短信记录 
 | 
     * @return 结果 
 | 
     */ 
 | 
    @Override 
 | 
    public int insertSmsRecords(SmsRecords smsRecords) { 
 | 
        smsRecords.setCreateTime(DateUtils.getNowDate()); 
 | 
        return smsRecordsMapper.insertSmsRecords(smsRecords); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 新增短信记录 
 | 
     * 
 | 
     * @param smsRecords 短信记录 
 | 
     * @return 结果 
 | 
     */ 
 | 
    @Override 
 | 
    public Boolean sendSmsRecords(SmsRecords smsRecords) { 
 | 
        //获取通知短信提前"几天"发送 
 | 
        Integer days = 0; 
 | 
        String noticeSmsBeforeSend = iSysConfigService.selectConfigByKey("notice_sms_before_send"); 
 | 
        //获取医院机构ID 
 | 
        String hospOrgid = iSysConfigService.selectConfigByKey("hosp_orgid"); 
 | 
        if (StringUtils.isNotEmpty(noticeSmsBeforeSend)) days = Integer.valueOf(noticeSmsBeforeSend); 
 | 
  
 | 
        //通过当前日期,加上提前的天数,获取要 
 | 
        LocalDate newDate = LocalDate.now().plusDays(days); 
 | 
        Date date = Date.valueOf(newDate); 
 | 
        smsRecords.setVisitTime(date); 
 | 
  
 | 
        List<String> orgidList = null; 
 | 
        if (StringUtils.isNotEmpty(hospOrgid)) { 
 | 
            orgidList = Arrays.asList(hospOrgid.split(",")); 
 | 
            smsRecords.setOrgidList(orgidList); 
 | 
        } 
 | 
        List<SmsRecords> selectSmsRecordsList = smsRecordsMapper.selectSmsRecordsList(smsRecords); 
 | 
        for (SmsRecords record : selectSmsRecordsList) { 
 | 
            Boolean aBoolean = sendSMS(record.getOrgid(), record.getPhone(), record.getMsg()); 
 | 
            ServiceSubtask serviceSubtask = new ServiceSubtask(); 
 | 
            serviceSubtask.setId(record.getSubId()); 
 | 
            if (aBoolean) serviceSubtask.setVisitNotice(1); 
 | 
            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); 
 | 
        } 
 | 
  
 | 
        return true; 
 | 
    } 
 | 
  
 | 
  
 | 
    public Boolean sendSMS(String orgid, String phone, String content) { 
 | 
        //丽水的短信发送方式 
 | 
        Boolean isSuccess = false; 
 | 
        try { 
 | 
            Map<String, String> map = MsgLSEnum.getAddressByCode(orgid); 
 | 
            String token = LSHospTokenUtil.getToken(orgid); 
 | 
            log.info("【sfHandlle】丽水短信发送,地址:{},参数:{},机构ID:{}", map.get("address"), orgid); 
 | 
            String dxCode = getDXCode(map.get("address"), phone, content, map.get("sendPersonId"), map.get("sendPersonName"), MsgLSEnum.getHeaderByCode(orgid), token); 
 | 
            log.info("【sfHandlle】丽水短信发送结果:{}", dxCode); 
 | 
            ObjectMapper objectMapper = new ObjectMapper(); 
 | 
            Map<String, Object> textParam = null; 
 | 
            textParam = objectMapper.readValue(dxCode, Map.class); 
 | 
            String code = textParam.get("Code").toString(); 
 | 
            if (code.equals("0")) { 
 | 
                isSuccess = true; 
 | 
            } 
 | 
        } catch (Exception e) { 
 | 
            e.printStackTrace(); 
 | 
        } 
 | 
        return isSuccess; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 修改短信记录 
 | 
     * 
 | 
     * @param smsRecords 短信记录 
 | 
     * @return 结果 
 | 
     */ 
 | 
    @Override 
 | 
    public int updateSmsRecords(SmsRecords smsRecords) { 
 | 
        smsRecords.setUpdateTime(DateUtils.getNowDate()); 
 | 
        return smsRecordsMapper.updateSmsRecords(smsRecords); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 批量删除短信记录 
 | 
     * 
 | 
     * @param recordids 需要删除的短信记录主键 
 | 
     * @return 结果 
 | 
     */ 
 | 
    @Override 
 | 
    public int deleteSmsRecordsByRecordids(Long[] recordids) { 
 | 
        return smsRecordsMapper.deleteSmsRecordsByRecordids(recordids); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 删除短信记录信息 
 | 
     * 
 | 
     * @param recordid 短信记录主键 
 | 
     * @return 结果 
 | 
     */ 
 | 
    @Override 
 | 
    public int deleteSmsRecordsByRecordid(Long recordid) { 
 | 
        return smsRecordsMapper.deleteSmsRecordsByRecordid(recordid); 
 | 
    } 
 | 
  
 | 
  
 | 
    private String getDXCode(String address, String ShouJiHM, String FaSongNR, String FaSongRID, String FaSongRXM, Map<String, Object> headerMap, String token) { 
 | 
        Map<String, Object> map = new LinkedHashMap<>(); 
 | 
  
 | 
        Map<String, Object> YeWuXX = new LinkedHashMap<>(); 
 | 
        Map<String, Object> DuanXinXX = new LinkedHashMap<>(); 
 | 
        DuanXinXX.put("ShouJiHM", ShouJiHM); 
 | 
        DuanXinXX.put("FaSongNR", FaSongNR); 
 | 
        DuanXinXX.put("FaSongRID", FaSongRID); 
 | 
        DuanXinXX.put("FaSongRXM", FaSongRXM); 
 | 
        YeWuXX.put("DuanXinXX", DuanXinXX); 
 | 
  
 | 
        map.put("XiaoXiTou", headerMap); 
 | 
        map.put("YeWuXX", YeWuXX); 
 | 
  
 | 
        String body = new Gson().toJson(map); 
 | 
  
 | 
//        String result = HttpUtils.sendPost(address, body); 
 | 
        String result = null; 
 | 
        try { 
 | 
            result = OkHttpExample.sendPostRequest(address, body, token); 
 | 
        } catch (IOException e) { 
 | 
            e.printStackTrace(); 
 | 
        } 
 | 
        log.info("【getDXCode】短信发送结果:{}", result); 
 | 
  
 | 
        JSONObject jsonObject = JSONObject.parseObject(result); 
 | 
        String code = (String) jsonObject.toString(); 
 | 
        return code; 
 | 
    } 
 | 
} 
 |