sbtjtserver/zhaoxh 7 months ago
parent
commit
fe28a6427e
1 changed files with 65 additions and 20 deletions
  1. 65 20
      src/main/java/kd/bos/login/utils/DemoSMSSender.java

+ 65 - 20
src/main/java/kd/bos/login/utils/DemoSMSSender.java

@@ -1,12 +1,16 @@
 package kd.bos.login.utils;
 
 import fi.cas.opplugin.TypeUtils;
+import kd.bos.dataentity.OperateOption;
 import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.entity.DynamicObjectCollection;
 import kd.bos.logging.Log;
 import kd.bos.logging.LogFactory;
 import kd.bos.login.utils.sms.SMSSender;
+import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
 import kd.bos.servicehelper.BusinessDataServiceHelper;
+import kd.bos.servicehelper.operation.OperationServiceHelper;
 import org.json.JSONObject;
 import org.json.XML;
 import org.w3c.dom.Document;
@@ -22,8 +26,8 @@ import javax.xml.transform.stream.StreamResult;
 import java.io.*;
 import java.net.Socket;
 import java.text.SimpleDateFormat;
-import java.util.Calendar;
 import java.util.Date;
+import java.util.Random;
 
 /**
  * 通用插件
@@ -32,7 +36,8 @@ import java.util.Date;
  */
 public class DemoSMSSender implements SMSSender {
     protected static final Log log = LogFactory.getLog(DemoSMSSender.class);
-
+    Long orgId = null;
+    Long userId = null;
     @Override
     public boolean sendMessage(String phone, String message, String signature) {
         Boolean flag = false;
@@ -47,21 +52,32 @@ public class DemoSMSSender implements SMSSender {
         if(cbsReturnJson!=null) {
             JSONObject reMessage = cbsReturnJson.getJSONObject("Message");
             JSONObject reBodyInfo = reMessage.getJSONObject("BodyInfo");
-            if ("success".equals(reBodyInfo.getString("Fs_retMsg"))) {//相应成功
+            if (reBodyInfo.getString("Fs_retMsg").contains("success")) {//相应成功
                 if ("000".equals(reBodyInfo.getString("Fs_retCode"))) {
                     flag = true;
                     log.info("短信前置机响应成功,前置机接口发送成功");
+                    //写入日志
+                    writeLog(phone);
                 } else {
                     log.info("短信前置机响应成功,前置机接口发送失败");
                 }
             } else {
-                log.info("短信发送前置机响应失败");
+                log.info("短信发送前置机响应失败"+reBodyInfo.getString("Fs_retMsg"));
             }
         }
-
         return flag;
     }
 
+    private void writeLog(String phone) {
+        DynamicObject[] datalist = new DynamicObject[1];
+        DynamicObject writeObj = BusinessDataServiceHelper.newDynamicObject("nckd_assistantdata_mlog");
+        writeObj.set("nckd_mobile",phone);
+        writeObj.set("nckd_person",userId);
+        writeObj.set("nckd_org",orgId);
+        datalist[0]=writeObj;
+        OperationServiceHelper.executeOperate("save", "nckd_assistantdata_mlog", datalist, OperateOption.create());
+    }
+
     @Override
     public boolean sendMessage(String phone, String message) {
         Boolean flag = false;
@@ -105,26 +121,30 @@ public class DemoSMSSender implements SMSSender {
             //拼接报文
             createElement(doc, body, "Fs_channelcode", "JSX"); //渠道号
             createElement(doc, body, "Fs_transcode", "SingleMsg");  //交易码
-            createElement(doc, body, "Fs_rpid", "12345");        //流水号(待提供)
+            Date now = new Date();
+            SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd HHmmss");
+            String nowStr1 = formatter.format(now);
+            nowStr1 = nowStr1.replaceAll(" ","");
+            Random random = new Random();
+            int randomNumber = 100 + random.nextInt(900);
+            createElement(doc, body, "Fs_rpid", "jsx"+nowStr1+String.valueOf(randomNumber));        //流水号(待提供)
             createElement(doc, body, "Fs_phone", phone);        //手机号
             createElement(doc, body, "Fs_ParamCount", "2");//模板数量
             createElement(doc, body, "ParamName1", "SmsVerifyCode");//模板名称1
             String ParamValue1 = message.substring(4,10);
             createElement(doc, body, "ParamValue1", ParamValue1);//模板值1
             createElement(doc, body, "ParamName2", "SceneName");//模板名称2
-            createElement(doc, body, "ParamValue2", "wj");//模板值2
-
-            createElement(doc, body, "Fs_regOrg", "");//发送机构(待提供)
+            createElement(doc, body, "ParamValue2", "重置密码");//模板值2
+            String regOrg = getRegOrg(phone);
+            createElement(doc, body, "Fs_regOrg", regOrg);//发送机构(待提供),例100802
             createElement(doc, body, "Fs_bizId", "00007");//业务类型id
             createElement(doc, body, "Fs_templateld", "2409029227");//模板id
 
-            Date now = new Date();
-            SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd HHmmss");
-            String nowStr = formatter.format(now);
-            String Fs_reqDate = nowStr.substring(0,8);
-            createElement(doc, body, "Fs_reqDate", Fs_reqDate);
-            String Fs_regTime = nowStr.substring(9,15);
-            createElement(doc, body, "Fs_regTime", Fs_regTime);
+            String nowStr2 = formatter.format(now);
+            String Fs_reqDate = nowStr2.substring(0,8);
+            createElement(doc, body, "Fs_reqDate", Fs_reqDate);//日期
+            String Fs_regTime = nowStr2.substring(9,15);
+            createElement(doc, body, "Fs_regTime", Fs_regTime);//时间
 
             TransformerFactory transformerFactory = TransformerFactory.newInstance();
             Transformer transformer = transformerFactory.newTransformer();
@@ -143,10 +163,35 @@ public class DemoSMSSender implements SMSSender {
         }
     }
 
-    private String tranTime(int hour, int minute, int second) {
-        String Fs_regTime = String.valueOf(hour)+String.valueOf(minute)+String.valueOf(second);
-
-        return Fs_regTime;
+    private String getRegOrg(String phone) {
+        String orgNumber = "";
+        QFilter qFilter_phone = new QFilter("phone", QCP.equals,phone);
+        DynamicObject[] userCol = BusinessDataServiceHelper.load("bos_user",
+                "id,entryentity.dpt,entryentity.ispartjob",new QFilter[]{qFilter_phone});
+        if(userCol!=null && userCol.length>0){//手机号匹配到人员
+            DynamicObject userObj = userCol[0];
+            userId = userObj.getLong("id");
+            DynamicObjectCollection entryList = userObj.getDynamicObjectCollection("entryentity");
+            for(DynamicObject entryObj : entryList){
+                boolean ispartjob = entryObj.getBoolean("ispartjob");
+                if(ispartjob==false){//找到人员主组织
+                    DynamicObject dpt = entryObj.getDynamicObject("dpt");
+                    Long dptId = dpt.getLong("id");
+                    orgId = dptId;
+                    QFilter qFilter_org = new QFilter("nckd_orgfield",QCP.equals,dptId);
+                    QFilter qFilter_enable = new QFilter("enable", QCP.equals,"1");
+                    QFilter qFilter_status = new QFilter("status", QCP.equals, "C");
+                    DynamicObject[] orgCol = BusinessDataServiceHelper.load("nckd_base_org_oa","",
+                            new QFilter[]{qFilter_org,qFilter_enable,qFilter_status});
+                    if(orgCol!=null && orgCol.length>0){//匹配到映射表记录
+                        DynamicObject orgObj = orgCol[0];
+                        orgNumber = orgObj.getString("nckd_oa_org");
+                    }
+                    break;
+                }
+            }
+        }
+        return orgNumber;
     }
 
     public static JSONObject socketService(String serverName,String port,String xmlData){