liusheng
2025-10-21 2d84b9771e11b64f4224c57ebc36a157fe9a15b4
Merge branch 'master' into 0929-master

# Conflicts:
# ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/SmsController.java
# ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
# smartor/src/main/java/com/smartor/service/impl/ServiceTelInfoServiceImpl.java
已修改12个文件
169 ■■■■ 文件已修改
ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/SmsController.java 69 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceTelInfoController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/utils/sms/smsUtils.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/HospitalFilterInterceptor.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/mapper/ServiceOutPathMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/IServiceOutPathService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/IServiceTelInfoService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/ServiceOutPathServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/java/com/smartor/service/impl/ServiceTelInfoServiceImpl.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smartor/src/main/resources/mapper/smartor/ServiceOutPathMapper.xml 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/SmsController.java
@@ -1,13 +1,16 @@
package com.ruoyi.web.controller.common;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.RSAPublicKeyExample;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.file.FileUtils;
import com.ruoyi.common.utils.http.HttpUtils;
import com.ruoyi.common.utils.sms.smsUtils;
import com.ruoyi.framework.config.ServerConfig;
import com.smartor.domain.HtmlContentVO;
import com.smartor.domain.ServiceOutPath;
import com.smartor.domain.ServiceTask;
import com.smartor.domain.smsVO;
import com.smartor.mapper.ServiceTaskMapper;
import com.smartor.service.IServiceOutPathService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -24,6 +27,7 @@
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.Date;
import java.util.List;
@RestController
@Api(description = "知信接口")
@@ -52,8 +56,7 @@
    private IServiceOutPathService iServiceOutPathService;
    @Autowired
    private ServiceTaskMapper serviceTaskMapper;
    private UtilsMapper utilsMapper;
    /**
     * @param
@@ -76,36 +79,29 @@
        String taskId = rsaPublicKeyExample.encryptedData(vo.getTaskId().toString(), pub_key);
        String patid = rsaPublicKeyExample.encryptedData(vo.getPatId().toString(), pub_key);
        String subId = rsaPublicKeyExample.encryptedData(vo.getSubId().toString(), pub_key);
        Integer radix=iServiceOutPathService.selectAutoId();
        String format = String.format("%03X", radix);
        ServiceOutPath serviceOutPath = new ServiceOutPath();
        serviceOutPath.setParam1(taskId);
        serviceOutPath.setParam2(patid);
        serviceOutPath.setParam3(vo.getTaskName());
        serviceOutPath.setParam6(subId);
        serviceOutPath.setRadix(format);
        serviceOutPath.setCreateTime(new Date());
        String format ="";
        if(ObjectUtils.isNotEmpty(vo.getSubId())) {
            format = String.format("%03X", Integer.parseInt(vo.getSubId()));
            serviceOutPath.setRadix(format);
        }
        iServiceOutPathService.insertServiceOutPath(serviceOutPath);
        String url = ip + ":" + req_path + "/wt?p=" + format;
        ServiceTask serviceTask = serviceTaskMapper.selectServiceTaskByTaskid(Long.valueOf(taskId));
        //如果type是语音随访的话(说明补偿发送方式中有电话随访的方式,这里的外链就地址只能用/sf)
        if (serviceTask.getType().equals("1")) {
            url = ip + ":" + req_path + "/sf?p=" + format;
        }
        String content="您好,邀请您填写出院调查表,请点击" + url + "填写。感谢您配合!";
        if(ObjectUtils.isNotEmpty(vo.getContent()))
            content=vo.getContent();
        else
            sendChat(vo);
        String sendMsg="";
        try{
            sendMsg=smsUtils.sendSms(xhsmsPath,xhsmsAccount,xhsmsPwd,vo.getPhone(),content);
        String content = "您好,邀请您填写出院调查表,请点击" + url + "填写。感谢您配合!";
        if (ObjectUtils.isNotEmpty(vo.getContent()))
            content = vo.getContent();
//        else
//            sendChat(vo);
        String sendMsg = "";
        try {
            sendMsg = smsUtils.sendSms(xhsmsPath, xhsmsAccount, xhsmsPwd, vo.getPhone(), content);
            log.info(sendMsg);
        }catch (Exception ex){
        } catch (Exception ex) {
            log.error(ex.getMessage());
        }
        return AjaxResult.success(sendMsg);
@@ -121,21 +117,22 @@
        RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
        String taskId = rsaPublicKeyExample.encryptedData(vo.getTaskId().toString(), pub_key);
        String patid = rsaPublicKeyExample.encryptedData(vo.getPatId().toString(), pub_key);
        String url = ip + ":" + req_path + "/outsideChainwt?param1=" + taskId + "&param2=" + patid
                + "&param3=" + URLEncoder.encode(vo.getTaskName(), StandardCharsets.UTF_8.toString()) + "&param5=false";
        String subId = rsaPublicKeyExample.encryptedData(vo.getSubId().toString(), pub_key);
        Integer radix=iServiceOutPathService.selectAutoId();
        String format = String.format("%03X", radix);
        ServiceOutPath serviceOutPath = new ServiceOutPath();
        serviceOutPath.setParam1(taskId);
        serviceOutPath.setParam2(patid);
        serviceOutPath.setParam3(vo.getTaskName());
        serviceOutPath.setParam6(subId);
        serviceOutPath.setRadix(format);
        serviceOutPath.setCreateTime(new Date());
        iServiceOutPathService.insertServiceOutPath(serviceOutPath);
        String content="您好,邀请您填写出院调查表,请点击" + url + "填写。感谢您配合!";
        String url = ip + ":" + req_path + "/wt?p=" + format;
        String urlTemp="http://192.200.54.14:5003/sfjk/SendMessage?sfzh="+vo.getIdCard()
                +"&title=您好,邀请您填写出院调查表,请点击填写。&content="+content+"&phone="+vo.getPhone()
                +"&url="+url+"&key=ff76f8904f5f32b5ee1739e8ea46e60g";
        String sendMsg= "";
        try{
            sendMsg= HttpUtils.sendGet(urlTemp);
            log.info(sendMsg);
        }catch (Exception ex){
            log.error(ex.getMessage());
        }
        String sendMsg =  smsUtils.sendChat(url,vo.getPhone(),vo.getIdCard());
        return AjaxResult.success(sendMsg);
    }
}
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceTelInfoController.java
@@ -24,8 +24,8 @@
     */
    @ApiOperation("随访电话详情列表")
    @GetMapping("/getList")
    public AjaxResult getList() {
        return AjaxResult.success(telService.getList());
    public AjaxResult getList(String orgid) {
        return AjaxResult.success(telService.getList(orgid));
    }
ruoyi-common/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java
@@ -13,6 +13,12 @@
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.ruoyi.common.constant.Constants;
@@ -112,6 +118,7 @@
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            conn.setRequestProperty("Accept-Charset", "utf-8");
            conn.setRequestProperty("Charsert", "UTF-8");
            conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
            conn.setDoOutput(true);
            conn.setDoInput(true);
@@ -308,4 +315,21 @@
            return true;
        }
    }
    public static String sendPost(String url){
        HttpPost post = new HttpPost(url);
        CloseableHttpClient client = HttpClients.createDefault();
        //启动执行请求,并获得返回值
        CloseableHttpResponse execute = null;
        try {
            execute = client.execute(post);
            HttpEntity entity = execute.getEntity();
            //把实体对象转换为string
            return EntityUtils.toString(entity, "UTF-8");
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "调用失败";
    }
}
ruoyi-common/src/main/java/com/ruoyi/common/utils/sms/smsUtils.java
@@ -5,13 +5,16 @@
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.utils.HttpUtil;
import com.ruoyi.common.utils.http.HttpUtils;
import com.ruoyi.common.utils.sign.Md5Utils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@Slf4j
public class smsUtils {
@@ -40,4 +43,28 @@
        return sendMsg;
    }
    /**
     * 杭州市一医院吴山院区我短信接口
     *
     * @param url      微信URL
     * @param phone    手机号 13500000001
     * @param idCard  身份证
     * @return 两个参数的和
     */
    public static String sendChat(String url,String phone,String idCard){
        String urlTemp = "http://192.200.54.14:5003/sfjk/SendMessage?sfzh="
                + idCard
                + "&title=您好,邀请您填写出院调查表,请点击填写。&content=待随访&phone=" + phone
                + "&url=" + url + "&key=ff76f8904f5f32b5ee1739e8ea46e60g";
        String sendMsg = "";
        try {
            sendMsg = HttpUtils.sendPost(urlTemp);
            log.info(sendMsg);
        } catch (Exception ex) {
            sendMsg=ex.getMessage();
            log.error(ex.getMessage());
        }
        return  sendMsg;
    }
}
ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/HospitalFilterInterceptor.java
@@ -85,6 +85,10 @@
        if (originalSql.contains("insert into") || originalSql.contains("INSERT INTO") || originalSql.contains("from sys_menu") || originalSql.contains("sys_job") || originalSql.contains("update sys_menu") || originalSql.contains("information_schema.tables") || originalSql.contains("information_schema.columns") || originalSql.contains("gen_table") || originalSql.toUpperCase().contains("ORGID IS NULL") || originalSql.toUpperCase().contains("FROM CRYXX") || originalSql.toUpperCase().contains("FROM MZXX") || originalSql.toUpperCase().contains("FROM JBXX") || originalSql.toUpperCase().contains("FROM BMXX") || originalSql.toUpperCase().contains("FROM HZJBXX") || originalSql.toUpperCase().contains("RENAME TABLE") || originalSql.toUpperCase().contains("FROM YHYKSXX") || originalSql.toUpperCase().contains("FROM YHYJSXX") || originalSql.toUpperCase().contains("ALTER TABLE") || originalSql.toUpperCase().contains("CREATE TABLE")) {
            return originalSql;
        }
        if(originalSql.contains("and onorgid")){
            originalSql=originalSql.replace("and onorginid","");
            return originalSql;
        }
        // 提取 orgid 的 WHERE 子句
        String whereClause = " orgid = '" + orgid + "'";
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
@@ -5,9 +5,9 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.dx.MessageSend;
import com.ruoyi.common.enums.MsgLSEnum;
import com.ruoyi.common.enums.ServiceFromEnum;
import com.ruoyi.common.enums.VisitSendStateEnum;
import com.ruoyi.common.enums.WxGZHEnum;
import com.ruoyi.common.utils.HttpUtil;
import com.ruoyi.common.utils.OkHttpExample;
@@ -94,6 +94,7 @@
    @Autowired
    private ISysConfigService configService;
    @Value("${localIP}")
    private String localIP;
smartor/src/main/java/com/smartor/mapper/ServiceOutPathMapper.java
@@ -60,4 +60,11 @@
     * @return 结果
     */
    public int deleteServiceOutPathByIds(Long[] ids);
    /**
     * 查询自增ID
     *
     * @return ID
     */
    public Integer selectAutoId();
}
smartor/src/main/java/com/smartor/service/IServiceOutPathService.java
@@ -58,4 +58,11 @@
     * @return 结果
     */
    public int deleteServiceOutPathById(Long id);
    /**
     * 查询自增ID
     *
     * @return ID
     */
    public Integer selectAutoId();
}
smartor/src/main/java/com/smartor/service/IServiceTelInfoService.java
@@ -10,7 +10,7 @@
     *
     * @return 结果
     */
    public List<Map<String,Object>> getList();
    public List<Map<String,Object>> getList(String orgid);
    /**
     * 设置电话状态
smartor/src/main/java/com/smartor/service/impl/ServiceOutPathServiceImpl.java
@@ -84,4 +84,14 @@
    public int deleteServiceOutPathById(Long id) {
        return serviceOutPathMapper.deleteServiceOutPathById(id);
    }
    /**
     * 查询自增ID
     *
     * @return ID
     */
    @Override
    public Integer selectAutoId() {
        return serviceOutPathMapper.selectAutoId();
    }
}
smartor/src/main/java/com/smartor/service/impl/ServiceTelInfoServiceImpl.java
@@ -22,8 +22,11 @@
     * @return 结果
     */
    @Override
    public List<Map<String,Object>> getList() {
       List<Map<String,Object>> lists= utilsMapper.getList("select * from service_telinfo where state=0 ");
    public List<Map<String,Object>> getList(String orgid) {
        String where=" where (state=0  OR DATE_ADD(editTime, INTERVAL 10 MINUTE)< NOW()) ";
        if(ObjectUtils.isNotEmpty(orgid))
            where=where+" and orgid='"+orgid+"'";
       List<Map<String,Object>> lists= utilsMapper.getList("select * from service_telinfo " +where);
        return lists;
    }
    /**
smartor/src/main/resources/mapper/smartor/ServiceOutPathMapper.xml
@@ -151,6 +151,9 @@
            #{id}
        </foreach>
    </update>
    <select id="selectAutoId" resultType="Integer" >
        SELECT AUTO_INCREMENT FROM  INFORMATION_SCHEMA.TABLES
         WHERE  TABLE_NAME  = 'service_out_path'  AND table_schema = DATABASE() and onorgid
    </select>
</mapper>