UOF2 開發用的外掛欄位 | UOF2 DEBUGER | 顯示目前簽核者資訊 | 退簽到特定SITE CODE站點

by | 12 月 8, 2025 | 一等一UOF系統, 程式 | 0 comments

Views: 5

因為公司要的需求常常挺複雜的,我自己逆向後發展了一個開發時會用的開發欄位,整理後放在這邊,我簡單叫這個為UOF2 DEBUGGER好了,有需要的可以拿去用,程式本身可以顯示目前的TASK ID 、SITE ID、申請者、簽核者、目前登入者、目前登入者名稱、目前站點代碼、簽核歷程、每個簽核的SITE ID ,對於比較複雜的開發有一定的幫助。

說明

這東西當時是需要做出兩個特殊按鈕時候做的

  1. 通過 (送到下一站)
  2. 不通過(退簽到特定SITE CODE)

程式碼我有稍微整理過了,需要的可以自己拿去用。

程式本身可以顯示目前的TASK ID 、SITE ID、申請者、簽核者、目前登入者、目前登入者名稱、目前站點代碼、簽核歷程、每個簽核的SITE ID

Image

產生外掛欄位

Image

這邊照自己需求命名就好,我把它稱為UOF2_DEBUGGER

Image

動作 → 匯出成外掛欄位(C#) UOF18.5以上

Image

  1. plugIn.xml → 這邊選網站目錄下的 App_Data\plugin.xml
  2. 匯出外掛欄位,這邊選CDS下的目錄,我放在WKF目錄當中
  3. 匯出

UOF2_DEBUGGER_UC.ascx 程式碼

程式碼貼上後請依照自己需求調整,然後加到你開發中的表單。

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="UOF2_DEBUGGER_UC.ascx.cs" Inherits="WKF_OptionalFields_UOF2_DEBUGGER_UC" %>
<%@ Reference Control="~/WKF/FormManagement/VersionFieldUserControl/VersionFieldUC.ascx" %>
<%@ Reference Control="~/WKF/FormManagement/VersionFieldUserControl/VersionFieldUC.ascx" %>
<%@ Register Assembly="Ede.Uof.Utility.Component.Grid" Namespace="Ede.Uof.Utility.Component" TagPrefix="Fast" %>
<%@ Import Namespace="Ede.Uof.EIP.SystemInfo" %>
<%@ Register Src="~/Common/ChoiceCenter/UC_ChoiceList.ascx" TagPrefix="uc1" TagName="UC_ChoiceList" %>
<script type="text/javascript">
    function confirmSend() {
        return confirm("確定要同意嗎? 會送至下一站");
    }
    function confirmReturn() {
        return confirm("確定要退回嗎?");
    }
</script>

<table class="PopTable">
    <tr>
        <td style="text-align: center;" class="PopTableHeader" colspan="4">
            <center>
                <asp:Label ID="Label3" runat="server" Text="站點資訊" meta:resourcekey="Label1Resource3"></asp:Label>
            </center>
        </td>
    </tr>
    <tr>
        <td>TASK ID</td>
        <td>
            <asp:Label runat="server" ID="lbTaskID"></asp:Label></td>
        <td>SiteID目前站點</td>
        <td>
            <asp:Label runat="server" ID="lbSiteID"></asp:Label>
        </td>
    </tr>
    <tr>
        <td>nodeSeq</td>
        <td>
            <asp:Label runat="server" ID="lbNodeSeq"></asp:Label></td>
        <td>isFreeTask自由流程</td>
        <td>
            <asp:Label runat="server" ID="lbIsFreeTask"></asp:Label></td>
    </tr>
    <tr>
        <td>ApplicantGuid 申請者GUID</td>
        <td>
            <asp:Label runat="server" ID="lbApplicantGuid"></asp:Label></td>
        <td>fieldOptional.FieldMode 目前簽核狀態</td>
        <td>
            <asp:Label runat="server" ID="lblFieldMode"></asp:Label></td>
    </tr>
    <tr>
        <td>ApplicantGroupId 申請者群組ID</td>
        <td>
            <asp:Label runat="server" ID="lbApplicantGroupId"></asp:Label>
        </td>
        <td>SiteCode 目前站點代碼</td>
        <td>
            <asp:Label runat="server" ID="lblSiteCode"></asp:Label>
        </td>
    </tr>
    <tr>
        <td>Current.UserGUID 目前登入者GUID</td>
        <td><%= Current.UserGUID %></td>
        <td>Current.User.Name 目前登入者名稱</td>
        <td><%= Current.User.Name %></td>
    </tr>
</table>

<label>退簽測試</label>
<Fast:Grid ID="grdReturnSiteList" runat="server" AllowSorting="True" AutoGenerateCheckBoxColumn="False"
    AutoGenerateColumns="False" DataKeyOnClientWithCheckBox="False"
    EnhancePager="True" PageSize="15"
    Width="100%" OnRowDataBound="grdReturnSiteList_RowDataBound" OnRowCommand="grdReturnSiteList_RowCommand">
    <EnhancePagerSettings
        ShowHeaderPager="True" FirstAltImageUrl="" FirstImageUrl="" LastAltImage="" LastImageUrl="" NextIAltImageUrl="" NextImageUrl="" PageInfoCssClass="" PageNumberCssClass="" PageNumberCurrentCssClass="" PageRedirectCssClass="" PreviousAltImageUrl="" PreviousImageUrl="" />
    <Columns>
        <asp:TemplateField HeaderText="站點" meta:resourcekey="TemplateFieldResource1">
            <ItemStyle HorizontalAlign="Center" />
            <HeaderStyle Wrap="False" />
            <ItemTemplate>
                <asp:Label runat="server" ID="lblSite" __designer:wfdid="w1" meta:resourcekey="lblSiteResource1"></asp:Label>

            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="站點型態" meta:resourcekey="TemplateFieldResource2">
            <ItemStyle HorizontalAlign="Center" />
            <HeaderStyle Wrap="False" />
            <ItemTemplate>
                <asp:Label runat="server" ID="lblSignType" __designer:wfdid="w4" meta:resourcekey="lblSignTypeResource1"></asp:Label>

            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="原簽核者" meta:resourcekey="TemplateFieldResource3">
            <HeaderStyle Wrap="False" />
            <ItemTemplate>
                <asp:Label runat="server" ID="lblOriginalSigner" __designer:wfdid="w2" meta:resourcekey="lblOriginalSignerResource1"></asp:Label>
                <asp:Label runat="server" ID="lblOrginialSignerExcept" __designer:wfdid="w2" Text="簽核者帳號異常" Visible="false" ForeColor="Red"></asp:Label>

            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="實際簽核者" meta:resourcekey="TemplateFieldResource4">
            <HeaderStyle Wrap="False" />
            <ItemTemplate>
                <asp:Label runat="server" ID="lblActuralSigner" __designer:wfdid="w2" meta:resourcekey="lblActuralSignerResource1"></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="站點備註" meta:resourcekey="TemplateFieldResource6">
            <HeaderStyle Wrap="False" />
            <ItemTemplate>
                <asp:Label runat="server" ID="lblSiteRemark"></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="操作" meta:resourcekey="TemplateFieldResource5">
            <ItemStyle Wrap="False" HorizontalAlign="Center" />
            <HeaderStyle Wrap="False" />
            <ItemTemplate>
                <asp:Button runat="server" ID="btnReturn" Text="退簽" CommandName="Return" __designer:wfdid="w2" meta:resourcekey="btnReturnResource1"></asp:Button>

            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="退簽站點 Site_Id" meta:resourcekey="TemplateFieldResource5">
            <ItemStyle Wrap="False" HorizontalAlign="Center" />
            <HeaderStyle Wrap="False" />
            <ItemTemplate>
                <asp:Label runat="server" ID="lblSiteId"></asp:Label>

            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="SITE CODE" meta:resourcekey="TemplateFieldResource5">
            <ItemStyle Wrap="False" HorizontalAlign="Center" />
            <HeaderStyle Wrap="False" />
            <ItemTemplate>
                <asp:Label runat="server" ID="lblSITE_CODE"></asp:Label>

            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</Fast:Grid>

<div id="divMemberReturn" runat="server">
    <table class="PopTable">
        <tr>
            <td style="text-align: center;" class="PopTableHeader" colspan="4">
                <center>
                    <asp:Label ID="Label1" runat="server" Text="退簽對象" meta:resourcekey="Label1Resource3"></asp:Label>
                </center>
            </td>
        </tr>
        <tr>
            <td class="PopTableLeftTD" style="width: 15%">
                <asp:Label ID="lblSignType" runat="server" Text="簽核型態" meta:resourcekey="TemplateFieldResource2"></asp:Label>
            </td>
            <td class="PopTableRightTD" style="width: 25%">
                <asp:Label ID="lblSignTypeValue" runat="server"></asp:Label>
            </td>
            <td class="PopTableLeftTD" style="width: 15%">
                <asp:Label ID="lblSigner" runat="server" Text="原簽核者" meta:resourcekey="TemplateFieldResource3"></asp:Label>
            </td>
            <td class="PopTableRightTD" style="width: 45%">
                <uc1:UC_ChoiceList runat="server" ID="UC_ChoiceList" IsAllowEdit="false" />
            </td>
        </tr>
    </table>
    <asp:Label runat="server" ID="lblSignerExcept" Text="簽核者帳號異常" Visible="false" ForeColor="Red"></asp:Label>
    <asp:HiddenField ID="hfLastSignType" runat="server" />
    <asp:Label ID="lblAllowRAMember" runat="server" Text="表單已被設定為不允許退回申請者,無法退簽。" Visible="false" ForeColor="Blue" meta:resourcekey="lblAllowRAMemberResource1"></asp:Label>
</div>


<asp:HiddenField runat="server" ID="hfLastSiteId" />
<asp:Label ID="lblGeneral" runat="server" Text="一般" Visible="False" meta:resourcekey="lblGeneralResource1"></asp:Label>
<asp:Label ID="lblOr" runat="server" Text="並簽" Visible="False" meta:resourcekey="lblOrResource1"></asp:Label>
<asp:Label ID="lblAnd" runat="server" Text="會簽" Visible="False" meta:resourcekey="lblAndResource1"></asp:Label>
<asp:Label ID="lblApplicant" runat="server" Text="申請者" Visible="False" meta:resourcekey="lblApplicantResource1"></asp:Label>
<asp:Label ID="lblReturnToApplicant" runat="server" Text="退回申請者" Visible="False" meta:resourcekey="lblReturnToApplicantResource1"></asp:Label>
<asp:Label ID="lblReturnMsg" runat="server" Text="返回" Visible="False" meta:resourcekey="lblReturnMsgResource1"></asp:Label>
<asp:Label ID="lblCheckReturn" runat="server" Text="確定退簽至此站點?" Visible="False" meta:resourcekey="lblCheckReturnResource1"></asp:Label>
<asp:Label ID="lblSignFail" runat="server" meta:resourcekey="lblSignFailResource1"
    Text="簽核失敗,可能是重複簽核或表單已被取回" Visible="false"></asp:Label>

<Fast:Grid runat="server" ID="gvSiteList" runat="server" AllowSorting="True" AutoGenerateCheckBoxColumn="False"
    AutoGenerateColumns="False" DataKeyOnClientWithCheckBox="False"
    EnhancePager="True" PageSize="15">
    <Columns>
        <asp:BoundField DataField="SITE_ID" HeaderText="SITE_ID"
            SortExpression="SITE_ID" />
        <asp:BoundField DataField="SITE_CODE" HeaderText="SITE_CODE"
            SortExpression="SITE_CODE" />
    </Columns>
</Fast:Grid>
<table class="PopTable">
    <tr>
        <td style="text-align: center;" class="PopTableHeader" colspan="2">
            <center>
                <asp:Label ID="Label2" runat="server" Text="測試功能" meta:resourcekey="Label1Resource3"></asp:Label>
            </center>
        </td>
    </tr>
    <tr>
        <td>下一站</td>
        <td>
            <asp:Button runat="server" ID="btnSendNext" Text="送到下一站" OnClientClick="return confirmSend();" OnClick="btnSendNext_OnClick" />
        </td>
    </tr>
    <tr>
        <td>退回站點代碼</td>
        <td>
            <asp:TextBox runat="server" ID="txtSiteCodeReturn"></asp:TextBox></td>
    </tr>
    <tr>
        <td>退回申請者</td>
        <td>
            <asp:Button runat="server" ID="btnReturn" Text="退簽到特定戰點" OnClientClick="return confirmReturn();" OnClick="btnReturn_OnClick" />
        </td>
    </tr>
    <tr>
        <td>關閉視窗</td>
        <td>
            <asp:Button runat="server" ID="btnClose" Text="關閉簽核視窗" OnClick="btnClose_OnClick" />
        </td>
    </tr>
    <tr>
        <td>MSG</td>
        <td>
            <asp:TextBox runat="server" ID="txtErrorMsg" TextMode="MultiLine" Rows="3"></asp:TextBox>
        </td>
    </tr>
</table>
<asp:Label ID="lblHasNoAuthority" runat="server" Text="無填寫權限" ForeColor="Red" Visible="False" meta:resourcekey="lblHasNoAuthorityResource1"></asp:Label>
<asp:Label ID="lblToolTipMsg" runat="server" Text="不允許修改(唯讀)" Visible="False" meta:resourcekey="lblToolTipMsgResource1"></asp:Label>
<asp:Label ID="lblModifier" runat="server" Visible="False" meta:resourcekey="lblModifierResource1"></asp:Label>
<asp:Label ID="lblMsgSigner" runat="server" Text="填寫者" Visible="False" meta:resourcekey="lblMsgSignerResource1"></asp:Label>
<asp:Label ID="lblAuthorityMsg" runat="server" Text="具填寫權限人員" Visible="False" meta:resourcekey="lblAuthorityMsgResource1"></asp:Label>

UOF2_DEBUGGER_UC.ascx.cs 程式碼

using Ede.Uof.Common.ChoiceCenter;
using Ede.Uof.EIP.Organization.Util;
using Ede.Uof.Utility.Page.Common;
using Ede.Uof.WKF.Data;
using Ede.Uof.WKF.Design;
using Ede.Uof.WKF.Design.Data;
using Ede.Uof.WKF.Engine;
using Ede.Uof.WKF.Exceptions;
using Ede.Uof.WKF.Utility;
using Ede.Uof.WKF.VersionFields;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.Security.AntiXss;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml;
using Dapper;
using Ede.Uof.EIP.SystemInfo;
using Ede.Uof.Utility.Configuration;

public partial class WKF_OptionalFields_UOF2_DEBUGGER_UC : WKF_FormManagement_VersionFieldUserControl_VersionFieldUC
{

	#region ==============公開方法及屬性==============
    //表單設計時
	//如果為False時,表示是在表單設計時
    private bool m_ShowGetValueButton = true;
    public bool ShowGetValueButton
    {
        get { return this.m_ShowGetValueButton; }
        set { this.m_ShowGetValueButton = value; }
    }

    #endregion

    protected void Page_Load(object sender, EventArgs e)
    {
        if (base.Request.QueryString["TASK_ID"] != null)
        {
            taskId = base.Request.QueryString["TASK_ID"];
            //TaskId
            lbTaskID.Text = TaskId;
        }
        if (base.Request.QueryString["SITE_ID"] != null)
        {
            this.siteId = base.Request.QueryString["SITE_ID"];
            lbSiteID.Text = siteId;
        }
        else
        {
            lbSiteID.Text = "無資料";
        }
        if (base.Request.QueryString["NODE_SEQ"] != null)
        {
            int.TryParse(base.Request.QueryString["NODE_SEQ"], out this.nodeSeq);
            lbNodeSeq.Text = nodeSeq.ToString();
        }
        isFreeTask = "false";
        if (taskObj != null)
        {
            if (this.taskObj.FlowType == TaskFlowType.FreeFlow)
            {
                isFreeTask = "true";
            }
            lbIsFreeTask.Text = isFreeTask;
        }
        else
        {
            lbIsFreeTask.Text = "無資料";
        }

        lbApplicantGuid.Text = ApplicantGuid;
        lbApplicantGroupId.Text = ApplicantGroupId;
        if (taskObj != null)
        {
            lblSiteCode.Text = taskObj.CurrentSite.SiteCode;
        }

        if (!string.IsNullOrWhiteSpace(taskId) && !string.IsNullOrWhiteSpace(this.siteId))
        {
            this.m_Task = new Task(this.taskId);
            Task task = new DefinedTask(this.taskId, this.siteId, this.nodeSeq);
        }

        try
        {
            if (!base.IsPostBack)
            {
                SideCodeList = GetSiteCodeList();

                if (!string.IsNullOrWhiteSpace(taskId))
                {
                    BindgrdReturnSiteList();
                }

            }
        }
        catch (Exception exception)
        {
            txtErrorMsg.Text = exception.Message + exception.StackTrace;
        }

        if (!IsPostBack)
        {
            BindGVSiteList();
        }

        //這裡不用修改
        //欄位的初始化資料都到SetField Method去做
        SetField(m_versionField);
    }    

    /// <summary>
    /// 外掛欄位的條件值
    /// </summary>
    public override string ConditionValue
    {
        get
        {
			//回傳字串
			//此字串的內容將會被表單拿來當做條件判斷的值
			return String.Empty;
        }
    }

    /// <summary>
    /// 是否被修改
    /// </summary>
    public override bool IsModified
    {
        get
        {
			//請自行判斷欄位內容是否有被修改
			//有修改回傳True
			//沒有修改回傳False
            //若實作產品標準的控制修改權限必需實作
            //一般是用 m_versionField.FieldValue (表單開啟前的值)
            //      和this.FieldValue (當前的值) 作比對
			return false;
        }
    }

    /// <summary>
    /// 查詢顯示的標題
    /// </summary>
    public override string DisplayTitle
    {
        get
        {
			//表單查詢或WebPart顯示的標題
			//回傳字串
            return String.Empty;
        }
    }

    /// <summary>
    /// 訊息通知的內容
    /// </summary>
    public override string Message
    {
        get
        {
			//表單訊息通知顯示的內容
			//回傳字串
            return String.Empty;
        }
    }


    /// <summary>
    /// 真實的值
    /// </summary>
    public override string RealValue
    {
        get
        {
            //回傳字串
			//取得表單欄位簽核者的UsetSet字串
            //內容必須符合EB UserSet的格式
			return String.Empty;
        }
        set
        {
			//這個屬性不用修改
            base.m_fieldValue = value;
        }
    }


    /// <summary>
    /// 欄位的內容
    /// </summary>
    public override string FieldValue
    {
        get
        {
            //回傳字串
			//取得表單欄位填寫的內容
			return String.Empty;
        }
        set
        {
			//這個屬性不用修改
            base.m_fieldValue = value;
        }
    }

    /// <summary>
    /// 是否為第一次填寫
    /// </summary>
    public override bool IsFirstTimeWrite
    {
        get
        {
            //這裡請自行判斷是否為第一次填寫
            //若實作產品標準的控制修改權限必需實作
            //實作此屬性填寫者可修改也才會生效
            //一般是用 m_versionField.Filler == null(沒有記錄填寫者代表沒填過)
            //      和this.FieldValue (當前的值是否為預設的空白) 作比對
            return false;
        }
        set
        {
            //這個屬性不用修改
            base.IsFirstTimeWrite = value;
        }
    }

    /// <summary>
    /// 設定元件狀態
    /// </summary>
    /// <param name="Enabled">是否啟用輸入元件</param>
    public void EnabledControl(bool Enabled)
    {

    }

    /// <summary>
    /// 顯示時欄位初始值
    /// </summary>
    /// <param name="versionField">欄位集合</param>
    public override void SetField(Ede.Uof.WKF.Design.VersionField versionField)
    {
        FieldOptional fieldOptional = versionField as FieldOptional;

        if (fieldOptional != null)
        {

            //若有擴充屬性,可以用該屬性存取
            // fieldOptional.ExtensionSetting

            
            //草稿
            if(!fieldOptional.IsAudit)
            {
                if(fieldOptional.HasAuthority)
                {
                    //有填寫權限的處理
                    EnabledControl(true);
                }
                else
                {
                    //沒填寫權限的處理
                    EnabledControl(false);
                }
            }
            else
            {
                //己送出

                //有填過
                if(fieldOptional.Filler != null)
                {
                    //判斷填寫的站點和當前是否相同
                    if(base.taskObj != null && base.taskObj.CurrentSite != null &&
                        base.taskObj.CurrentSite.SiteId == fieldOptional.FillSiteId && fieldOptional.Filler.UserGUID == Ede.Uof.EIP.SystemInfo.Current.UserGUID)
                    {
                        //判斷填寫權限
                        if (fieldOptional.HasAuthority)
                        {
                            //有填寫權限的處理
                            EnabledControl(true);
                        }
                        else
                        {
                            //沒填寫權限的處理
                            EnabledControl(false);
                        }
                    }
                    else
                    {
                        //判斷修改權限
                        if (fieldOptional.AllowModify)
                        {
                            //有修改權限的處理
                            EnabledControl(true);
                        }
                        else
                        {
                            //沒修改權限的處理
                            EnabledControl(false);
                        }

                    }
                }
                else
                {
                    //判斷填寫權限
                    if (fieldOptional.HasAuthority)
                    {
                        //有填寫權限的處理
                        EnabledControl(true);
                    }
                    else
                    {
                        //沒填寫權限的處理
                        EnabledControl(false);
                    }

                }
            }



            switch(fieldOptional.FieldMode)
            {
                case FieldMode.Print:
                case FieldMode.View:
                    //觀看和列印都需作沒有權限的處理
                    EnabledControl(false);
                    break;

            }
            
            #region ==============屬性說明==============『』
			//fieldOptional.IsRequiredField『是否為必填欄位,如果是必填(True),如果不是必填(False)』
			//fieldOptional.DisplayOnly『是否為純顯示,如果是(True),如果不是(False),一般在觀看表單及列印表單時,屬性為True』
			//fieldOptional.HasAuthority『是否有填寫權限,如果有填寫權限(True),如果沒有填寫權限(False)』
			//fieldOptional.FieldValue『如果已有人填寫過欄位,則此屬性為記錄其內容』
			//fieldOptional.FieldDefault『如果欄位有預設值,則此屬性為記錄其內容』
			//fieldOptional.FieldModify『是否允許修改,如果允許(fieldOptional.FieldModify=FieldModifyType.yes),如果不允許(fieldOptional.FieldModify=FieldModifyType.no)』
			//fieldOptional.Modifier『如果欄位有被修改過,則Modifier的內容為EBUser,如果沒有被修改過,則會等於Null』
            #endregion

            #region ==============如果有修改,要顯示修改者資訊==============
            if (fieldOptional.Modifier != null)
            {
                lblModifier.Visible = true;
                lblModifier.ForeColor = System.Drawing.Color.FromArgb(0x52, 0x52, 0x52);
                lblModifier.Text = System.Web.Security.AntiXss.AntiXssEncoder.HtmlEncode(fieldOptional.Modifier.Name, true);
            } 
            #endregion
        }
    }

    private ReturnSignUCO returnUCO = new ReturnSignUCO();
    private ReturnAbleSiteDataSet returnDs = new ReturnAbleSiteDataSet();


    private string taskId;

    private string siteId;

    private int nodeSeq;



    private UserUCO userUco = new UserUCO();

    private Task m_Task;

    private string source;


    protected Label lblAllowRA;

    private string isFreeTask;

    private string formVersionId;

    private List<dynamic> SideCodeList;
    private void BindgrdReturnSiteList()
    {
        this.returnDs = this.returnUCO.GetSitesForReturnSign(this.taskId);
        this.grdReturnSiteList.DataSource = this.returnDs.TB_WKF_TASK_SITE;
        this.grdReturnSiteList.DataBind();
        UserSet returnSigner = new UserSet();
        int rowCount = this.returnDs.TB_WKF_TASK_SITE.Rows.Count;
        DataRow lastRow = this.returnDs.TB_WKF_TASK_SITE.Rows[rowCount - 1];
        this.hfLastSiteId.Value = lastRow["SITE_ID"].ToString();
        switch ((SignType)Enum.Parse(typeof(SignType), lastRow["SIGN_TYPE"].ToString()))
        {
            case SignType.General:
                this.lblSignTypeValue.Text = this.lblGeneral.Text;
                this.hfLastSignType.Value = "Return";
                break;
            case SignType.Or:
                this.lblSignTypeValue.Text = this.lblOr.Text;
                this.hfLastSignType.Value = "Return";
                break;
            case SignType.And:
                this.lblSignTypeValue.Text = this.lblAnd.Text;
                this.hfLastSignType.Value = "Return";
                break;
            //退回申請者
            case SignType.Apply:
                {
                    this.hfLastSignType.Value = "ReturnToApplicant";
                    this.lblSignTypeValue.Text = this.lblApplicant.Text;
                    Task task = new Task(this.taskId);
                    EBUser applyEbUser = this.userUco.GetEBUser(task.Applicant.UserGUID);
                    UserSetUser usu = new UserSetUser();
                    usu.USER_GUID = applyEbUser.UserGUID;
                    returnSigner.Items.Add(usu);
                    break;
                }
        }
        bool IsOriginalAccountExcept = true;
        ReturnAbleSiteDataSet.TB_WKF_TASK_NODERow[] NodeRows = (ReturnAbleSiteDataSet.TB_WKF_TASK_NODERow[])this.returnDs.TB_WKF_TASK_NODE.Select("SITE_ID='" + this.hfLastSiteId.Value + "'");
        foreach (ReturnAbleSiteDataSet.TB_WKF_TASK_NODERow drNode in NodeRows)
        {
            EBUser ebuser = this.userUco.GetEBUser(drNode["ORIGINAL_SIGNER"].ToString());
            if (ebuser.IsActive())
            {
                IsOriginalAccountExcept = false;
                UserSetUser usu2 = new UserSetUser();
                usu2.USER_GUID = ebuser.UserGUID;
                returnSigner.Items.Add(usu2);
            }
        }
        if (NodeRows.Length == 0)
        {
            IsOriginalAccountExcept = false;
        }
        if (IsOriginalAccountExcept)
        {
            this.lblSignerExcept.Visible = true;
            //((Master_DialogMasterPage)base.Master).Button1Text = "";
            return;
        }
        this.UC_ChoiceList.UserSet = returnSigner;
        this.UC_ChoiceList.treeList_Bind();

    }

    // Token: 0x06003C7B RID: 15483 RVA: 0x00399224 File Offset: 0x00397424
    protected void grdReturnSiteList_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            DataRowView rowView = (DataRowView)e.Row.DataItem;
            ((Label)e.Row.FindControl("lblSite")).Text = Convert.ToString(e.Row.RowIndex + 1);
            SignType signType = (SignType)Enum.Parse(typeof(SignType), rowView["SIGN_TYPE"].ToString());
            Label lblSignType = (Label)e.Row.FindControl("lblSignType");
            ReturnAbleSiteDataSet.TB_WKF_TASK_NODERow[] NodeRows = (ReturnAbleSiteDataSet.TB_WKF_TASK_NODERow[])this.returnDs.TB_WKF_TASK_NODE.Select("SITE_ID='" + rowView["SITE_ID"].ToString() + "'");
            string originalSigner = "";
            string actualSigner = "";
            bool IsOriginalAccountExcept = true;
            foreach (ReturnAbleSiteDataSet.TB_WKF_TASK_NODERow drNode in NodeRows)
            {
                EBUser ebuser = this.userUco.GetEBUser(drNode["ORIGINAL_SIGNER"].ToString());
                if (ebuser.IsActive())
                {
                    IsOriginalAccountExcept = false;
                }
                originalSigner = originalSigner + ebuser.DisplayNameWithLink + ",";
                if (drNode["ACTUAL_SIGNER"] != DBNull.Value)
                {
                    EBUser ebuser2 = this.userUco.GetEBUser(drNode["ACTUAL_SIGNER"].ToString());
                    actualSigner = actualSigner + ebuser2.DisplayNameWithLink + ",";
                }
            }
            if (NodeRows.Length == 0)
            {
                IsOriginalAccountExcept = false;
            }
            if (originalSigner.Length > 0)
            {
                originalSigner = originalSigner.Substring(0, originalSigner.Length - 1);
            }
            if (actualSigner.Length > 0)
            {
                actualSigner = actualSigner.Substring(0, actualSigner.Length - 1);
            }
            Label lblOriginalSigner = (Label)e.Row.FindControl("lblOriginalSigner");
            lblOriginalSigner.Text = originalSigner;
            Label lblActuralSigner = (Label)e.Row.FindControl("lblActuralSigner");
            lblActuralSigner.Text = actualSigner;
            string siteRemark = string.Empty;
            Label lblSiteRemark = (Label)e.Row.FindControl("lblSiteRemark");
            Label lblSiteId = (Label)e.Row.FindControl("lblSiteId");

            string strHeaderText = ((DataControlFieldCell)lblSiteRemark.Parent).ContainingField.HeaderText;
            int templateFieldIndex = -1;
            foreach (object obj in this.grdReturnSiteList.Columns)
            {
                DataControlField col = (DataControlField)obj;
                if (col.HeaderText.Trim() == strHeaderText)
                {
                    templateFieldIndex = this.grdReturnSiteList.Columns.IndexOf(col);
                }
            }
            if (this.m_Task.CurrentDocument.AllowDisplaySiteRemark)
            {
                siteRemark = new SetupFlowUCO().GetSiteRemark(this.taskId, this.m_Task.FormVersionId, rowView["SITE_ID"].ToString()).Trim().Replace(Environment.NewLine, "<br>");
                if (!string.IsNullOrEmpty(siteRemark))
                {
                    string[] array2 = siteRemark.Split(new string[]
                    {
                        "<br>"
                    }, StringSplitOptions.None);
                    string tmpString = "";
                    foreach (string line in array2)
                    {
                        tmpString = tmpString + AntiXssEncoder.HtmlEncode(line, true) + "<br>";
                    }
                    siteRemark = tmpString.Replace(" ", "&nbsp;");
                    lblSiteRemark.Text = siteRemark;
                }
                if (templateFieldIndex != -1)
                {
                    this.grdReturnSiteList.Columns[templateFieldIndex].Visible = true;
                }
            }
            else if (templateFieldIndex != -1)
            {
                this.grdReturnSiteList.Columns[templateFieldIndex].Visible = false;
            }
            Button btnReturn = (Button)e.Row.FindControl("btnReturn");
            Label lblOrgExcept = (Label)e.Row.FindControl("lblOrginialSignerExcept");
            if (IsOriginalAccountExcept)
            {
                btnReturn.Enabled = false;
                lblOrgExcept.Visible = true;
            }
            else
            {
                btnReturn.Attributes.Add("onclick", "if(confirm('" + this.lblCheckReturn.Text + "')==false){return false;}");
                lblOrgExcept.Visible = false;
            }
            btnReturn.CommandArgument = rowView["SITE_ID"].ToString();
            lblSiteId.Text = rowView["SITE_ID"].ToString();

            Label lblSITE_CODE = (Label)e.Row.FindControl("lblSITE_CODE");
            if (SideCodeList != null && SideCodeList.Any())
            {
                lblSITE_CODE.Text = SideCodeList.Where(n => n.SITE_ID == rowView["SITE_ID"].ToString()).FirstOrDefault().SITE_CODE ?? "無資料";
            }

            switch (signType)
            {
                case SignType.General:
                    lblSignType.Text = this.lblGeneral.Text;
                    return;
                case SignType.Or:
                    lblSignType.Text = this.lblOr.Text;
                    return;
                case SignType.And:
                    lblSignType.Text = this.lblAnd.Text;
                    return;
                case SignType.Apply:
                    {
                        lblSignType.Text = this.lblApplicant.Text;
                        btnReturn.CommandName = "ReturnToApplicant";
                        btnReturn.ForeColor = Color.Red;
                        btnReturn.Text = this.lblReturnToApplicant.Text;
                        EBUser applyEbUser = this.userUco.GetEBUser(this.m_Task.Applicant.UserGUID);
                        lblOriginalSigner.Text = applyEbUser.DisplayNameWithLink;
                        lblActuralSigner.Text = applyEbUser.DisplayNameWithLink;
                        if (!applyEbUser.IsActive())
                        {
                            btnReturn.Enabled = false;
                            lblOrgExcept.Visible = true;
                        }
                        if (this.m_Task.CurrentDocument.AllowReturnApplicant)
                        {
                            //this.lblAllowRA.Visible = false;
                            //btnReturn.Enabled = true;
                            return;
                        }
                        //btnReturn.ForeColor = Color.Gray;
                        //this.lblAllowRA.Visible = true;
                        //btnReturn.Enabled = false;
                        break;
                    }
                default:
                    return;
            }
        }
    }

    /// <summary>
    /// 按下退簽要做的事情
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void grdReturnSiteList_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        DefinedTask task = new DefinedTask(this.taskId, this.siteId, this.nodeSeq);
        if (task.CheckSigned(this.taskId, this.siteId, this.nodeSeq) && !task.CurrentSite.IsParallalSite)
        {
            Dialog.SetReturnValue2("DoubleSigned");
            Dialog.Close(this.Page);
            return;
        }
        this.source = Source.PC.ToString();
        if (e.CommandName == "Return")
        {
            try
            {
                //this.returnUCO.ReturnSign(this.taskId, this.siteId, this.nodeSeq, e.CommandArgument.ToString(), base.User.Identity.Name, Convert.ToBoolean(this.isFreeTask), this.source);
                //goto IL_19E;
            }
            catch (SignFailException ex)
            {
                //Logger.WriteError(ex.Message + "\r\n" + ex.StackTrace);
                //Dialog.SetReturnValue2("NeedPostBack");
                //Dialog.Close(this.Page, this.lblSignFail.Text);

            }
            catch (Exception ex2)
            {
                //Logger.WriteError(ex2.Message + "\r\n" + ex2.StackTrace);
                //Dialog.SetReturnValue2("NeedPostBack");
                //Dialog.Close(this.Page, this.lblSignFail.Text);
                //goto IL_19E;
            }
        }
        if (e.CommandName == "ReturnToApplicant")
        {
            //this.returnUCO.ReturnToApplicant(this.taskId, this.siteId, this.nodeSeq, base.User.Identity.Name, Convert.ToBoolean(this.isFreeTask), this.source);
        }
        Dialog.SetReturnValue2("NeedPostBack");
        Dialog.Close(this.Page);
    }

    /// <summary>
    /// 關閉視窗
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnClose_OnClick(object sender, EventArgs e)
    {
        Dialog.SetReturnValue2("NeedPostBack");
        Dialog.Close(Page);
    }

    /// <summary>
    /// 送到下一站
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnSendNext_OnClick(object sender, EventArgs e)
    {
        TaskUtilityUCO taskUtilityUco = new TaskUtilityUCO();


        taskUtilityUco.SendNextSite(taskId, siteId, nodeSeq, Current.UserGUID);

        //關閉+更新
        Dialog.SetReturnValue2("NeedPostBack");
        Dialog.Close(Page);
    }

    /// <summary>
    /// 列出全部站點代碼SITE_CODE
    /// </summary>
    /// <returns></returns>
    private List<dynamic> GetSiteCodeList()
    {
        string sql = @"
        SELECT TOP (100) 
		    a.[SITE_ID],
		    b.SITE_CODE as 'SITE_CODE'
        FROM TB_WKF_TASK_SITE a
          left join [TB_WKF_FVR_SITE_CODE] b on a.SOURCE_SITE_ID = b.SITE_ID
        WHERE TASK_ID = @TaskId";
        var connString = ConfigurationManager.ConnectionStrings["connectionstring"].ConnectionString;
        using (var conn = new System.Data.SqlClient.SqlConnection(connString))
        {
            return conn.Query(sql, new { taskId }).AsList();
        }
    }

    /// <summary>
    /// 取得特定站點代碼SITE_CODE
    /// </summary>
    /// <param name="code">站點代碼</param>
    /// <returns></returns>
    private string GetSiteCodeList(string code)
    {
        string sql = @"
        SELECT TOP (1) 
		    a.[SITE_ID],
        FROM TB_WKF_TASK_SITE a
          left join [TB_WKF_FVR_SITE_CODE] b on a.SOURCE_SITE_ID = b.SITE_ID
        WHERE TASK_ID = @TaskId and b.SITE_CODE like @code";
        var connString = ConfigurationManager.ConnectionStrings["connectionstring"].ConnectionString;
        using (var conn = new System.Data.SqlClient.SqlConnection(connString))
        {
            return conn.ExecuteScalar<string>(sql, new { taskId, code });
        }
    }

    private void BindGVSiteList()
    {
        gvSiteList.DataSource = GetSiteCodeList();
        gvSiteList.DataBind();
    }

    /// <summary>
    /// 不同意按鈕-退簽
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnReturn_OnClick(object sender, EventArgs e)
    {
        //退簽到特定站點代碼
        var siteCode = txtSiteCodeReturn.Text.Trim();
        if (string.IsNullOrWhiteSpace(siteCode))
        {
            txtErrorMsg.Text = "請輸入站點代碼";
            return;
        }
        var siteCodeGuid = GetSiteCodeList(siteCode);
        if(string.IsNullOrWhiteSpace(siteCodeGuid))
        {
            txtErrorMsg.Text = "查無此站點GUID";
            return;
        }
        if (siteCodeGuid != null)
        {
            if (base.Request.QueryString["NODE_SEQ"] != null)
            {
                int.TryParse(base.Request.QueryString["NODE_SEQ"], out this.nodeSeq);
                lbNodeSeq.Text = nodeSeq.ToString();
            }

            if (MobileUI)
            {
                source = Source.Mobile.ToString();
            }
            else
            {
                source = Source.PC.ToString();
            }
            var rUCO = new ReturnSignUCO();
            rUCO.ReturnSign(taskId, this.siteId, this.nodeSeq, siteCode, Current.UserGUID, Convert.ToBoolean(this.isFreeTask), this.source);
            Dialog.SetReturnValue2("NeedPostBack");
            Dialog.Close(Page);
        }
    }
}

0 Comments

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *