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;
|
}
|
}
|