liusheng
2026-10-10 0afac42fb2e9d6e5291304dd0044ce3042b45d2b
ruoyi-message/src/main/java/com/ruoyi/message/sms/provider/shiyi/ShiyiSmsUtil.java
ÎļþÃû´Ó smartor/src/main/java/com/smartor/common/ShiyiSmsUtil.java ÐÞ¸Ä
@@ -1,66 +1,64 @@
package com.smartor.common;
package com.ruoyi.message.sms.provider.shiyi;
import com.smartor.domain.ShiyiSmsRequest;
import com.smartor.domain.ShiyiSmsResponse;
import com.ruoyi.message.config.MessageProperties;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.StringReader;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
 * æ­å·žå¸‚一 HIS æœåŠ¡å¹³å°å¯¹æŽ¥å·¥å…·ç±»ã€‚
 * æ­å·žå¸‚一 HIS æœåŠ¡å¹³å°å¯¹æŽ¥å·¥å…·ç±»ï¼ˆçŸ­ä¿¡ï¼‰ã€‚
 * <p>
 * æŒ‰ã€ŠHIS æœåŠ¡å¹³å°æŽ¥å£è¯´æ˜Žæ–‡æ¡£ V1.1》3.1 èŠ‚çº¦å®šï¼ŒHIS å¯¹å¤–以 WCF Web Service å½¢å¼å‘布,
 * ç»Ÿä¸€å…¥å£ï¼š{@code int RunService(string TradeType, string TradeMsg, ref string TradeOut)},
 * å…¶ä¸­ {@code TradeType} æ ‡è¯†ä¸šåŠ¡ç¼–ç ï¼Œ{@code TradeMsg} ä¸º UTF-8 ç¼–码的 XML æŠ¥æ–‡ã€‚
 * æœ¬å·¥å…·ç±»ç›®å‰å®žçް 5.2 çŸ­ä¿¡ä¸šåŠ¡ (TradeType=FASONGDX)。
 * æœ¬ç±»å®žçް 5.2 çŸ­ä¿¡ä¸šåŠ¡ (TradeType=FASONGDX)。
 * <p>
 * è¿ç§»è¯´æ˜Žï¼šåŽŸç±»ä¸º {@code com.smartor.common.ShiyiSmsUtil}。差异点:
 * <ul>
 *   <li>配置由 {@code @Value("${his.service.defaultCaozuoydm:}")} æ”¹ä¸ºä»Ž {@link MessageProperties} è¯»å–
 *       ï¼ˆå‰ç¼€ {@code message.sms.shiyi.*}),原 key ä¸å†éœ€è¦ï¼›</li>
 *   <li>接口地址由硬编码改为 {@code message.sms.shiyi.ws-url},默认值与原硬编码一致
 *       ï¼ˆ{@code http://192.178.0.104:7790/MediInfoHis.svc})。</li>
 * </ul>
 */
@Slf4j
@Component
public class ShiyiSmsUtil {
    /** 5.2 çŸ­ä¿¡ä¸šåŠ¡ TradeType */
    /**
     * 5.2 çŸ­ä¿¡ä¸šåŠ¡ TradeType
     */
    public static final String TRADE_TYPE_FASONGDX = "FASONGDX";
    /** WCF å‘½åç©ºé—´ï¼Œé»˜è®¤éšæ–‡æ¡£ç¤ºä¾‹ */
    private String namespace = "http://tempuri.org/";
    /**
     * WCF å‘½åç©ºé—´ï¼Œé»˜è®¤éšæ–‡æ¡£ç¤ºä¾‹
     */
    private final String namespace = "http://tempuri.org/";
    /** é»˜è®¤æ“ä½œå‘˜ä»£ç  */
    @Value("${his.service.defaultCaozuoydm:}")
    private String defaultCaozuoydm;
    /** é»˜è®¤æ“ä½œå‘˜å§“名 */
    @Value("${his.service.defaultCaozuoyxm:}")
    private String defaultCaozuoyxm;
    /** é»˜è®¤ç³»ç»Ÿæ ‡è¯† */
    private String defaultXitongbs = "0";
    /** é»˜è®¤åˆ†é™¢ä»£ç  */
    private String defaultFenyuandm = "1";
    /** é»˜è®¤æœºæž„代码 */
    private String defaultJigoudm = "1";
    private final MessageProperties properties;
    private final RestTemplate restTemplate = new RestTemplate();
    public ShiyiSmsUtil(MessageProperties properties) {
        this.properties = properties;
    }
    /**
     * å‘送短信 (FASONGDX)
@@ -94,7 +92,7 @@
     */
    public String invokeRunService(String tradeType, String tradeMsg) {
        String soapEnvelope = buildSoapEnvelope(tradeType, tradeMsg);
        String hisServiceUrl = "http://192.178.0.104:7790/MediInfoHis.svc";
        String hisServiceUrl = properties.getSms().getShiyi().getWsUrl();
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(new MediaType("text", "xml", StandardCharsets.UTF_8));
@@ -115,23 +113,24 @@
    }
    private void applyDefaults(ShiyiSmsRequest request) {
        MessageProperties.ShiyiSms shiyi = properties.getSms().getShiyi();
        if (StringUtils.isBlank(request.getCaozuoydm())) {
            request.setCaozuoydm(defaultCaozuoydm);
            request.setCaozuoydm(shiyi.getDefaultCaozuoydm());
        }
        if (StringUtils.isBlank(request.getCaozuoyxm())) {
            request.setCaozuoyxm(defaultCaozuoyxm);
            request.setCaozuoyxm(shiyi.getDefaultCaozuoyxm());
        }
        if (StringUtils.isBlank(request.getCaozuorq())) {
            request.setCaozuorq(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
        }
        if (StringUtils.isBlank(request.getXitongbs())) {
            request.setXitongbs(defaultXitongbs);
            request.setXitongbs("0");
        }
        if (StringUtils.isBlank(request.getFenyuandm())) {
            request.setFenyuandm(defaultFenyuandm);
            request.setFenyuandm("1");
        }
        if (StringUtils.isBlank(request.getJigoudm())) {
            request.setJigoudm(defaultJigoudm);
            request.setJigoudm("1");
        }
        if (StringUtils.isBlank(request.getDuanxinlx())) {
            request.setDuanxinlx("0");