OnlineMessage.java
上传用户:mingda
上传日期:2017-06-20
资源大小:27691k
文件大小:13k
源码类别:

OA系统

开发平台:

Java

  1. package com.gforce.gfoa;
  2. import com.gforce.currency.database.*;
  3. import com.gforce.currency.*;
  4. import java.util.*;
  5. /**
  6.  *
  7.  * <p>Title: 吉力科技办公自动化系统</p>
  8.  * <p>Description: 吉力科技办公自动化系统</p>
  9.  * <p>Copyright: 版权所有 2003 (c) 西安吉力科技发展有限公司  Copyright (c) 2003 GForce Sceince & Technology</p>
  10.  * <p>Company: 西安吉力科技发展有限公司 (GForce Sceince & Technology)</p>
  11.  * @author 马登军
  12.  * @version 1.0
  13.  */
  14. public class OnlineMessage
  15.   extends RecordManager
  16. {
  17.   int intMsgKind = 0;
  18.   String strSQLWhere = "";
  19.   String strOrderBy = "";
  20.   static public int SentMsg = 1;
  21.   static public int RecievedMsg = 2;
  22.   static public int SavedMsg = 3;
  23.   static public int AllMsg = 0;
  24.   public OnlineMessage()
  25.   {
  26.   }
  27.   protected final static String TableName = "OnlineMessage"; //定义声明本类操作表名称
  28.   protected final static String IDFieldName = "ID"; //定义声明主键或者可以确定唯一记录的字段名称为“ID”,必须为自增整型
  29.   protected final static String[] NumericFieldsName =
  30.     {
  31.     "SendUserID", "RecieveUserID", "IsReaded", "IsSenderDel", "IsRecieverDel", "IsSecret", "IsPigeonhole", "MessageID","Isreminded"}; //声明数值型字段名称
  32.   protected final static String[] DatetimeFieldsName =
  33.     {
  34.     "SendTime"}; //声明日期时间型字段名称
  35.   protected final static String[] StringFieldsName =
  36.     {
  37.     "Title"}; //声明字符型字段名称
  38.   protected final static String[] TextFieldsName =
  39.     {
  40.     "Content"}; //声明大字符串型字段名称
  41.   /* * 根据字段名称获取插入数据时表单元素名称
  42.    * @param strFieldName  字段名称
  43.    * @return  表单素名称
  44.    */
  45.   protected String InsertParament(String strFieldName)
  46.   {
  47.     return "" + strFieldName + ""; //可以根据需要加前缀、后缀
  48.   }
  49.   /**
  50.    * 根据字段名称获取修改数据时表单元素名称
  51.    * @param strFieldName  字段名称
  52.    * @return  表单素名称
  53.    */
  54.   protected String UpdateParament(String strFieldName)
  55.   {
  56.     return "" + strFieldName + ""; //可以根据需要加前缀、后缀
  57.   }
  58.   /**
  59.    * 获取本类操作表名称
  60.    * @return  表名称
  61.    */
  62.   public String getTableName()
  63.   { //获取本类操作表名称
  64.     return TableName;
  65.   }
  66.   protected String getIDFieldName()
  67.   { //获取主键或者可以确定唯一记录的字段名称
  68.     return IDFieldName;
  69.   }
  70.   protected String[] getNumericFieldsName()
  71.   { //获取数值型字段名称
  72.     return NumericFieldsName;
  73.   }
  74.   protected String[] getStringFieldsName()
  75.   { //获取字符型字段名称
  76.     return StringFieldsName;
  77.   }
  78.   protected String[] getDatetimeFieldsName()
  79.   { //获取日期时间型字段名称
  80.     return DatetimeFieldsName;
  81.   }
  82.   protected String[] getTextFieldsName()
  83.   { //获取大字符串型字段名称
  84.     return TextFieldsName;
  85.   }
  86.   /**
  87.    * 获取指定用户未读的短信息列表向量集
  88.    * @param iUserID 用户ID
  89.    * @return 指定用户未读的短信息列表向量集
  90.    */
  91.   public static Vector getNewMessage(int iUserID)
  92.   {
  93.     Vector vt = SQLManager.GetResultSet("Select * from " + TableName + " where SendUserID<>" + iUserID + " and RecieveUserID=" + iUserID + " and (IsReaded<>1 or IsReaded is null) and (IsRecieverDel=0 or IsRecieverDel is Null) order by ID desc");
  94.     return vt;
  95.   }
  96.   /**
  97.    * 获取指定用户未提醒的短信息列表
  98.    * @param iUserID 用户ID
  99.    * @return 指定用户未提醒的短信息列表
  100.    */
  101.   public static Vector getUnRemindedMsg(int iUserID)
  102.   {
  103.     Vector vt = SQLManager.GetResultSet("Select * from " + TableName + " where  SendUserID<>" + iUserID + " and RecieveUserID=" + iUserID + " and (IsReminded<>1 or IsReminded is null) and (IsRecieverDel=0 or IsRecieverDel is Null) and (IsReaded<>1 or IsReaded is null) order by ID desc");
  104.     return vt;
  105.   }
  106.   /**
  107.    * 获取与指定用户相关的指定类型的所有记录向量集
  108.    * @param iUserID  用户ID
  109.    * @param iMsgKind 短信息类型
  110.    * @return 所有记录向量集
  111.    */
  112.   public static Vector getAllRecord(int iUserID, int iMsgKind)
  113.   {
  114.     String strSQL = "";
  115.     switch (iMsgKind)
  116.     {
  117.       case 1:
  118.       {
  119.         strSQL = "Select * from " + TableName + " where RecieveUserID<>" + iUserID + " and SendUserID=" + iUserID + " and (IsSenderDel=0 or IsSenderDel is null) order by ID desc";
  120.         break;
  121.       }
  122.       case 2:
  123.       {
  124.         strSQL = "Select * from " + TableName + " where  SendUserID<>" + iUserID + " and RecieveUserID=" + iUserID + " and (IsRecieverDel=0 or IsRecieverDel is Null) order by ID desc";
  125.         break;
  126.       }
  127.       case 3:
  128.       {
  129.         strSQL = "Select * from " + TableName + " where RecieveUserID=" + iUserID + " and (IsRecieverDel=0 or IsRecieverDel is Null) and SendUserID=" + iUserID + " and (IsSenderDel=0 or IsSenderDel is null)  order by ID desc";
  130.         break;
  131.       }
  132.       default:
  133.       {
  134.         strSQL = "Select * from " + TableName + " where (SendUserID=" + iUserID
  135.           + " and (IsSenderDel=0 or IsSenderDel is null)) or (RecieveUserID=" + iUserID + " and (IsRecieverDel=0 or IsRecieverDel is Null)) order by ID desc";
  136.         break;
  137.       }
  138.     }
  139.     Vector vt = SQLManager.GetResultSet(strSQL);
  140.     return vt;
  141.   }
  142.   /**
  143.    * 获取指定MessageID的附件列表
  144.    * @param iMessageID 短信息标识
  145.    * @return 指定MessageID的附件列表向量集
  146.    */
  147.   public static Vector getAttInfo(int iMessageID)
  148.   {
  149.     String strSQL = "select * from ArticleAttInfo where FartherID=" + iMessageID + " and FartherTable='" + TableName
  150.       + "'";
  151.     Vector vt = SQLManager.GetResultSet(strSQL);
  152.     return vt;
  153.   }
  154.   /**
  155.    * 发送端信息
  156.    * @param strTitle 短信息标题
  157.    * @param strContent  短信息内容
  158.    * @param strRecieves  接收者ID字符串
  159.    * @param iSendUserID 发送者ID
  160.    * @param strAttachments 附件名称
  161.    * @param iIsSecret  是否密送
  162.    * @return  错误代码
  163.    */
  164.   public int SendMessage(String strTitle, String strContent, String strRecieves, int iSendUserID,String strAccessoriesNames
  165.                          , String strAccessoriesURLs, int iIsSecret)
  166.   {
  167.     /**
  168.      * 发送短信息的个数
  169.      */
  170.     int intSentMsg = 0;
  171.     /**
  172.      * 短信息唯一标识
  173.      */
  174.     int intMsgID = 0;
  175.     try
  176.     {
  177.       String[] strRecieve = strRecieves.split(",");
  178.       for (int i = 0; i < strRecieve.length; i++)
  179.       {
  180.         int intRecieve = 0;
  181.         try
  182.         {
  183.           intRecieve = Integer.parseInt(strRecieve[i]);
  184.           if (intRecieve > 0)
  185.           {
  186.             int iNewsID = AddNewMessage(strTitle, strContent, intRecieve, iSendUserID, iIsSecret, intMsgID);
  187.             if (iNewsID > 0)
  188.             {
  189.               if (i == 0)
  190.               {
  191.                 intMsgID = iNewsID;
  192.                 SQLManager.ExcuteSQL("Update " + TableName + " set MessageID=" + intMsgID + " where ID=" + iNewsID);
  193.                 try
  194.                 {
  195.                   if(strAccessoriesURLs.length()>0)
  196.                   {
  197.                     String[] strAccessoriesURL = strAccessoriesURLs.split(",");
  198.                     String[] strAccessoriesName = strAccessoriesNames.split(",");
  199.                     for (int j = 0; j < strAccessoriesURL.length; j++)
  200.                     {
  201.                       if (strAccessoriesURL[j].trim().length() > 0)
  202.                       {
  203.                         if (AddAttment(intMsgID, strAccessoriesName[j], strAccessoriesURL[j].trim()) <= 0)
  204.                         {
  205.                           SystemOut.ErrOut("新增短信息附件时出错!附加名称:" + strAccessoriesName[j].trim() + ";短信息标题:" + strTitle + "");
  206.                         }
  207.                       }
  208.                     }
  209.                   }
  210.                 }
  211.                 catch (Exception e)
  212.                 {
  213.                   SystemOut.ErrOut("新增短信息附件时出错!短信息标题:" + strTitle + "");
  214.                 }
  215.               }
  216.               intSentMsg++;
  217.             }
  218.             else
  219.             {
  220.               SystemOut.ErrOut("新增短信息时出错!短信息标题:" + strTitle + "");
  221.             }
  222.           }
  223.           else
  224.           {
  225.             SystemOut.ErrOut("获取短信息接收者ID时出错!短信息标题:" + strTitle + "");
  226.           }
  227.         }
  228.         catch (Exception e)
  229.         {
  230.           SystemOut.ErrOut("获取短信息接收者ID时出错!短信息标题:" + strTitle + "");
  231.         }
  232.       }
  233.     }
  234.     catch (Exception e)
  235.     {
  236.       SystemOut.ErrOut("获取短信息接收者ID时出错!短信息标题:" + strTitle + "");
  237.     }
  238.     return intSentMsg;
  239.   }
  240.   /**
  241.    * 新增一条短信息记录
  242.    * @param strTitle  短信息标题
  243.    * @param strContent  短信息内容
  244.    * @param intRecieveUserID  接收者用户ID
  245.    * @param intSendUserID  发送者用户ID
  246.    * @param iIsSecret  是否密送
  247.    * @param intMsgID  唯一标识ID
  248.    * @return  新记录ID或者错误代码
  249.    */
  250.   private int AddNewMessage(String strTitle, String strContent, int intRecieveUserID, int intSendUserID, int iIsSecret
  251.                             , int intMsgID)
  252.   {
  253.     int intNewsID = 0;
  254.     String strNow = StringNew.GetDateString(new Date(), "yyyy-MM-dd HH:mm:ss");
  255.     String strSQLInsert = "insert into " + TableName
  256.       + " (Title,SendTime,Content,SendUserID,RecieveUserID,IsSecret,MessageID) values ('" +
  257.       strTitle + "','" + strNow + "','" + strContent + "'," + intSendUserID + "," + intRecieveUserID + "," + iIsSecret
  258.       + "," + intMsgID + ")";
  259.     intNewsID = SQLManager.ExcuteSQL(strSQLInsert);
  260.     if (intNewsID > -1)
  261.     {
  262.       String strSQLSelect = "select max(ID) from " + TableName + " where Title='" + strTitle + "' and SendTime='"
  263.         + strNow + "' and  SendUserID=" + intSendUserID + " and RecieveUserID=" + intRecieveUserID + "";
  264.       Vector vt = SQLManager.GetResultSet(strSQLSelect);
  265.       if (vt.size() == 1)
  266.       {
  267.         return Integer.parseInt( ( (Vector) vt.get(0)).get(0).toString());
  268.       }
  269.       else
  270.       {
  271.         return -2; //表示新插入的记录不存在,新记录插入没有成功
  272.       }
  273.     }
  274.     else
  275.     {
  276.       return intNewsID;
  277.     }
  278.   }
  279.   /**
  280.    * 新增短信息附件
  281.    * @param iMsgID  短信息唯一标识ID
  282.    * @param strAttURL  短信息附件URL
  283.    * @return  附件ID或者错误代码
  284.    */
  285.   private int AddAttment(int iMsgID, String strAttURL)
  286.   {
  287.     String strAttName = strAttURL.substring(strAttURL.lastIndexOf("/") + 1);
  288.     return AddAttment(iMsgID, strAttName, strAttURL);
  289.   }
  290.   /**
  291.    * 新增短信息附件
  292.    * @param iMsgID  短信息唯一标识ID
  293.    * @param strAttName  短信息附件名称
  294.    * @param strAttURL  短信息附件URL
  295.    * @return  附件ID或者错误代码
  296.    */
  297.   private int AddAttment(int iMsgID, String strAttName, String strAttURL)
  298.   {
  299.     int iAttmentID = 0;
  300.     String strSQLInsert = "Insert into ArticleAttInfo (AttName,AttURL,FartherID,FartherTable) values ('" + strAttName
  301.       + "','" + strAttURL + "'," + iMsgID + ",'" + TableName + "')";
  302.     iAttmentID = SQLManager.ExcuteSQL(strSQLInsert);
  303.     if (iAttmentID > 0)
  304.     {
  305.       String strSQLSelect = "select max(ID) from ArticleAttInfo where AttName='" + strAttName + "' and AttURL='"
  306.         + strAttURL + "' and  FartherID=" + iMsgID + " and FartherTable='" + TableName + "'";
  307.       Vector vt = SQLManager.GetResultSet(strSQLSelect);
  308.       if (vt.size() == 1)
  309.       {
  310.         return Integer.parseInt( ( (Vector) vt.get(0)).get(0).toString());
  311.       }
  312.       else
  313.       {
  314.         return -2; //表示新插入的记录不存在,新记录插入没有成功
  315.       }
  316.     }
  317.     else
  318.     {
  319.       return iAttmentID;
  320.     }
  321.   }
  322.   /**
  323.    * 获取指定MessageID的短信息接收人员列表向量集
  324.    * @param iMessageID  短信息唯一标识ID
  325.    * @return  指定MessageID的短信息接收人员列表向量集
  326.    */
  327.   public static Vector getRecieverInfo(int iMessageID)
  328.   {
  329.     String strSQL = "Select a.RecieveUserID,c.Name as RecievePersonName from " + TableName + " as a left outer join UserInfo as b on (b.ID=a.RecieveUserID) left outer join PersonnelInfo as c on (b.PersonnelID=c.ID) where a.MessageID="
  330.       + iMessageID;
  331.     return SQLManager.GetResultSet(strSQL);
  332.   }
  333.   /**
  334.    * 删除和指定ID用户相关的指定ID的短信息记录
  335.    * @param strMsgIDs 短信息ID字符串
  336.    * @param iUserID 用户ID
  337.    */
  338.   public static void delMsgByIDs(String strMsgIDs, int iUserID)
  339.   {
  340.     String strSQLString = "Update " + TableName + " Set IsRecieverDel=1 where ID in(" + strMsgIDs
  341.       + ") and RecieveUserID=" + iUserID;
  342.     SQLManager.ExcuteSQL(strSQLString);
  343.     strSQLString = "Update " + TableName + " Set IsSenderDel=1 where ID in(" + strMsgIDs + ") and SendUserID="
  344.       + iUserID;
  345.     SQLManager.ExcuteSQL(strSQLString);
  346.     strSQLString = "Delete from ArticleAttInfo where FartherID in (Select ID from " + TableName
  347.       + " where IsSenderDel=1 and IsRecieverDel=1) and FartherTable='" + TableName + "'";
  348.     SQLManager.ExcuteSQL(strSQLString);
  349.     strSQLString = "Delete from " + TableName + " where IsSenderDel=1 and IsRecieverDel=1";
  350.     SQLManager.ExcuteSQL(strSQLString);
  351.   }
  352.   /**
  353.    * 将ID为iMessageID的短信息设置为已读
  354.    * @param iMessageID 短信ID
  355.    */
  356.   public static void setReaded(int iMessageID)
  357.   {
  358.     SQLManager.ExcuteSQL("Update " + TableName + " Set IsReaded=1,IsReminded=1  where ID =" + iMessageID);
  359.   }
  360.   /**
  361.    * 将ID为iMessageID的短信息设置为已提醒
  362.    * @param iMessageID 短信ID
  363.    */
  364.   public static void setIsReminded(int iMessageID)
  365.   {
  366.     SQLManager.ExcuteSQL("Update " + TableName + " Set IsReminded=1 where ID =" + iMessageID);
  367.   }
  368.   /**
  369.    * 获取指定ID的记录向量集
  370.    * @param iMsgID 短信息ID
  371.    * @return 指定ID的记录向量集
  372.    */
  373.   public static Vector getRecordByID(int iMsgID)
  374.   {
  375.     Vector vt = SQLManager.GetResultSet("Select * from " + TableName + " where ID=" + iMsgID + "");
  376.     return vt;
  377.   }
  378. }