%@ WebHandler Language="C#" Class="Kernel" %>
using System;
using System.Collections.Generic;
using System.Web;
using System.Data;
using System.Web.SessionState;
using System.Text;
using eMIS;
public class Kernel : IHttpHandler , IRequiresSessionState
{
public void ProcessRequest (HttpContext context)
{
if (context.Session["userid"]==null)
context.Response.End();
DataManager dm = new DataManager();
try
{
dm.Operator.BeginTrans();
string nodeId = context.Request.QueryString["nid"].ToString();
string recordId = context.Request.QueryString["rid"].ToString();
string flowId = context.Request.QueryString["fid"].ToString();
string currUserId = context.Session["userid"].ToString();
string currUserCnName = context.Session["usercnname"].ToString();
string yj = context.Request.QueryString["yj"].ToString();
//string fromId = context.Request.QueryString["fromid"].ToString();
string endorseId = context.Request.QueryString["eid"].ToString();
string result = context.Request.QueryString["jg"].ToString();
string rwbz = yj;
string menuId="";
string sql,newId;
//兼容性考虑,获取hqid
object obj = dm.ExecuteScalar("select hqid from XT_LCSL_HQ where id=" + endorseId);
string hqid = obj.ToString();
obj = dm.ExecuteScalar("select id from XT_LCRW where qtid='" + hqid + "'");
if (obj == null)
throw new Exception("该工作已经处理!");
dm.ExecuteNonQuery("delete XT_LCRW where id='" + obj.ToString() + "'");
obj = dm.ExecuteScalar("select id from com_xtcdb where lcid='" + flowId + "' and jdid='" + nodeId + "'");
if(obj!=null)
{
menuId = obj.ToString();
}
InstanceManager im = new InstanceManager(context,dm,menuId);
im.FlowNode = flowId+"."+nodeId;
im.Flow.Init(recordId);
string state = im.Flow.GetFlowState(recordId);
//修改加签状态
DataTable dt = dm.Operator.ExecuteTable("select * from XT_LCSL_HQ where id='" + endorseId + "'");
//DataTable dt = dm.Operator.ExecuteTable("select * from XT_LCSL_HQ where jlid='" + recordId + "' and jd1='" + nodeId + "' and ryid='" + currUserId + "'");
string id = dt.Rows[0]["id"].ToString();
string cx = dt.Rows[0]["cx"].ToString();
int nt = int.Parse(dt.Rows[0]["nt"].ToString());
string toUserId = dt.Rows[0]["ryid2"].ToString();//加签发起人id
string fromId = dt.Rows[0]["fromid"].ToString();
string bdlrid = dt.Rows[0]["ryid3"].ToString();
string dl = "1";
if (bdlrid=="" || bdlrid == toUserId)
{
bdlrid = toUserId;
dl = "0";
}
dt.Rows[0]["zt"] = 1;
dm.Operator.Save(dt,"XT_LCSL_HQ","id");
//流程日志
string toUserCnName = UserManager.GetUserCnName(dm,toUserId);
newId = dm.GetNewID();
rwbz = rwbz.Replace("\r\n", " ");
rwbz = rwbz.Replace("'", "''");
if (nt == 1)
{
string fromhqid = dm.Operator.ExecuteScalar("select fromid from XT_LCSL_HQ where id ='" + fromId + "'").ToString();
sql = "insert into XT_LCRW (ID,CDID,LCID,JDID,JLID,JSSJ,JSRID,FSRID,LX,CXMC,dl,bdlrid,bz,jdms,qtid,fsr,jsr,SYSTEM_ID) values (";
sql += newId + ",null," + flowId + "," + nodeId + "," + recordId + ",getdate()," + toUserId + "," + currUserId + ",'加签','加签(" + im.Flow.FlowInstance.Description + ")',"+dl+"," + bdlrid + ",'" + rwbz + "','" + im.Flow.GetNodeProperty(nodeId, "JDMC") + "','" + fromhqid + "','" + currUserCnName + "','" + toUserCnName + "','"+DataManager.GetSystemID()+"')";
dm.ExecuteNonQuery(sql);
string title = "加签(" + im.Flow.FlowInstance.Description + ")";
im.Messaging.EmailSend(title, im.Flow.GetTaskEmailContent(title, newId, toUserId), toUserId);
im.Flow.EndorseSendMessage("加签(" + im.Flow.FlowInstance.Description + ")", recordId, toUserId, newId);
//im.Flow.SaveApprovalOpinion("发送", recordId, currUserId, nodeId, nodeId, toUserId, yj, result, nt, im.Flow.GetNodeProperty(nodeId,"JDMC")+"加签","0","0");
}
else
{
string url = "/Common6/Code/ObjectDisplayPage.ashx?rid=" + recordId + "&oid=" + im.Flow.BusinessObjectID + "&" + DateTime.Now.Ticks.ToString();
string message = "【转发审批返回】:" + currUserCnName + result + "" + im.Flow.FlowInstance.Description + "" + yj;
im.Messaging.MisSend(im.Flow.FlowInstance.Description + " 转发评审", message, toUserId, "系统", "0",url);
//im.Flow.SaveApprovalOpinion("发送", recordId, currUserId, nodeId,null, toUserId, yj, result, nt,null,"0","0");
}
im.Flow.UpdateApprovalOpinion(hqid,yj, result);
im.Flow.XT_TASKS_DONE_SAVE();
WriteLog(dm, im, yj, recordId, currUserId, toUserCnName, toUserId);
if (context.Session["loginguid"] != null)
im.Flow.DeleteTaskValidate(context.Session["loginguid"].ToString());
dm.Operator.CommitTrans();
if (context.Request.QueryString["m"] == null)
{
context.Response.Write("");
}
else
{
context.Response.Write("ok");
}
}
catch (Exception e)
{
dm.Operator.RollbackTrans();
string ret = e.Message;
if (context.Request.QueryString["m"] == null)
context.Response.Write("");
else
context.Response.Write(ret.Replace("\r\n", " "));
}
finally
{
dm.Operator.CloseConnection();
}
}
public bool GetCurrentIscompleted(DataManager dm, string recordId, string nodeId, string currendIndex)
{
bool b = false;
string sql = "select count(*) from XT_LCSL_HQ where nt=1 and jlid='" + recordId + "' and jd1='" + nodeId + "' and zt=0 and cx=" + currendIndex;
object obj = dm.Operator.ExecuteScalar(sql);
if (obj != null)
{
b = ((int)obj == 0);
}
return b;
}
public string GetNextIndex(DataManager dm, string recordId,string nodeId,string currendIndex)
{
string nextIndex = "";
string sql = "select min(cx) from XT_LCSL_HQ where nt=1 and jlid='" + recordId + "' and jd1='" + nodeId + "' and zt=0 and cx>" + currendIndex;
object obj = dm.Operator.ExecuteScalar(sql);
if (obj != null)
{
nextIndex = obj.ToString();
}
return nextIndex;
}
public void WriteLog(DataManager dm, InstanceManager instance, string remark, string recordId, string fromUserId,string toUserCnName,string toUserId)
{
DataTable dt = dm.ExecuteTable("select * from XT_LCRZ where 1=2");
DataRow row = dt.NewRow();
row["ID"] = instance.GetNewID();
row["CXMC"] = instance.Flow.FlowInstanceDescription;
object obj = dm.ExecuteScalar("select max(czsj) from XT_LCRZ where jlid=" + recordId + " and jdid_d=" + instance.Flow.CurrentNodeID);
if (obj!=null)
row["jssj"] = obj.ToString();
row["LCID"] = instance.Flow.FlowID;
row["JDID"] = instance.Flow.CurrentNodeID;
row["JDMC"] = "加签"; //instance.Flow.GetNodeProperty(instance.Flow.CurrentNodeID, "JDMC");
row["JLID"] = recordId;
row["LX"] = "加签";
row["CZSJ"] = DateTime.Now;
row["CZRID"] = fromUserId;
row["BZ"] = remark;
row["JDID_D"] = instance.Flow.CurrentNodeID;
row["ZT"] = 1;
row["JSR"] = toUserCnName;
dt.Rows.Add(row);
instance.SystemDbOperator.Append(dt, "XT_LCRZ");
int i = instance.SystemDbOperator.ExecuteNonQuery("update xt_lcsl_czr set lasttime=getdate() where jlid=" + recordId + " and ryid=" + fromUserId);
if (i == 0)
instance.SystemDbOperator.ExecuteNonQuery("insert into xt_lcsl_czr (jlid,ryid,lasttime) values (" + recordId + "," + fromUserId + ",getdate())");
}
public bool IsReusable
{
get
{
return false;
}
}
}