Exemplo n.º 1
0
        /// <summary>
        /// 取得目前流程掛載的表單OID
        /// </summary>
        public NaNaFormViewModel.FormTemplateSimpleResult findFormOIDsOfProcess(string processID)
        {
            NaNaFormViewModel.FormTemplateSimpleResult ret = new NaNaFormViewModel.FormTemplateSimpleResult();

            try {
                ret.formOID    = this.plmSvc.findFormOIDsOfProcess(processID);
                ret.success    = !string.IsNullOrEmpty(ret.formOID);
                ret.resultCode = "200";
            } catch (Exception ex) {
                ret.success         = false;
                ret.resultCode      = "500";
                ret.resultException = ex.ToString();
            }

            return(ret);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 取得表單樣板
        /// </summary>
        public NaNaFormViewModel.FormTemplateSimpleResult getFormFieldTemplate(string formOID)
        {
            NaNaFormViewModel.FormTemplateSimpleResult ret = new NaNaFormViewModel.FormTemplateSimpleResult();

            try {
                ret.resultCode  = "200";
                ret.xmlTemplate = this.plmSvc.getFormFieldTemplate(formOID);
                ret.success     = !string.IsNullOrEmpty(ret.xmlTemplate);
            } catch (Exception ex) {
                ret.success         = false;
                ret.resultCode      = "500";
                ret.resultException = ex.ToString();
            }

            return(ret);
        }
        /// <summary>
        /// 新增一流程
        /// </summary>
        /// <returns></returns>
        public CommonViewModel.Result create()
        {
            CommonViewModel.Result ret = new CommonViewModel.Result();

            //validate
            ret = this.validateCreateProcessParam();
            if (!ret.success)
            {
                return(ret);
            }

            //get xml template
            NaNaFormViewModel.FormTemplateSimpleResult formOIDRet = this.nanaFormSvc.findFormOIDsOfProcess(this.ProcessID);
            if (!formOIDRet.success)
            {
                ret.resultMessage = "form Instance not found";
                ret.resultCode    = "301";
                return(ret);
            }
            string[] formArr = formOIDRet.formOID.Split(',');

            NaNaFormViewModel.FormTemplateSimpleResult formTemplateRet = this.nanaFormSvc.getFormFieldTemplate(formArr[0]);

            if (!formTemplateRet.success)
            {
                ret.resultMessage = "form Template not found";
                ret.resultCode    = "301";
                return(ret);
            }

            //parse xml document
            XmlDocument doc = new XmlDocument();

            doc.LoadXml(formTemplateRet.xmlTemplate);


            //set post  data
            string FormID = "HR_NewEmployee_1";

            //申請日期
            UtilitySvc.trySetXmlDocInnerText(ref doc, FormID + "/txtDate", DateTime.Now.ToString("yyyy/MM/dd"));

            //其他初始值
            UtilitySvc.trySetXmlDocInnerText(ref doc, FormID + "/txtCount", "0");
            UtilitySvc.trySetXmlDocInnerText(ref doc, FormID + "/txtAdvice", string.Empty);
            UtilitySvc.trySetXmlDocInnerText(ref doc, FormID + "/hfCheckExtendMonth", "0");


            //取得填單人的資料
            UtilitySvc.trySetXmlDocInnerText(ref doc, FormID + "/txtUserInfo_Dep1", this.issuerEmpInfoList[1]);
            UtilitySvc.trySetXmlDocInnerText(ref doc, FormID + "/txtUserInfo_Dep2", this.issuerEmpInfoList[2]);
            UtilitySvc.trySetXmlDocInnerText(ref doc, FormID + "/txtUserInfo_Id", this.issuerEmpInfoList[3]);
            UtilitySvc.trySetXmlDocInnerText(ref doc, FormID + "/txtUserInfo_Name", this.issuerEmpInfoList[4]);

            //取得受評人的EP組織資料(部門名稱、ID...)

            UtilitySvc.trySetXmlDocInnerText(ref doc, FormID + "/hfUpUpDepName", this.evaEmpInfoList[0]);
            UtilitySvc.trySetXmlDocInnerText(ref doc, FormID + "/txtDep1", this.evaEmpInfoList[1]);
            UtilitySvc.trySetXmlDocInnerText(ref doc, FormID + "/txtDep2", this.evaEmpInfoList[2]);
            UtilitySvc.trySetXmlDocInnerText(ref doc, FormID + "/txtUserID", this.evaEmpInfoList[3]);
            UtilitySvc.trySetXmlDocInnerText(ref doc, FormID + "/txtUserName", this.evaEmpInfoList[4]);
            UtilitySvc.trySetXmlDocInnerText(ref doc, FormID + "/txtDep2Id", this.evaEmpInfoList[5]);

            //取得受評人的HCP資料(到職日、職等...)
            UtilitySvc.trySetXmlDocInnerText(ref doc, FormID + "/txtTitle", this.hcpEvaEmpInfoList[0]);
            UtilitySvc.trySetXmlDocInnerText(ref doc, FormID + "/txtTrial", this.hcpEvaEmpInfoList[1]);
            UtilitySvc.trySetXmlDocInnerText(ref doc, FormID + "/hfLevel", this.hcpEvaEmpInfoList[2]);
            UtilitySvc.trySetXmlDocInnerText(ref doc, FormID + "/hfMaturityDate1", this.hcpEvaEmpInfoList[3]);
            UtilitySvc.trySetXmlDocInnerText(ref doc, FormID + "/hfMaturityDate2", this.hcpEvaEmpInfoList[4]);
            UtilitySvc.trySetXmlDocInnerText(ref doc, FormID + "/hfOkayDate", this.hcpEvaEmpInfoList[5]);
            UtilitySvc.trySetXmlDocInnerText(ref doc, FormID + "/hfActTrialDate", this.hcpEvaEmpInfoList[6]);

            //取得填單人的核決層級
            string issuerDicisionLevel = this.newEmpEvaDao.getDecisionLevelByEmpId(this.createParam.issuerId);

            if (string.IsNullOrEmpty(issuerDicisionLevel))
            {
                UtilitySvc.trySetXmlDocInnerText(ref doc, FormID + "/hfApproveLvl", "6000");
            }
            else
            {
                UtilitySvc.trySetXmlDocInnerText(ref doc, FormID + "/hfApproveLvl", issuerDicisionLevel);
            }

            //取得受評人的核決層級
            string evaEmpDicisionLevel = this.newEmpEvaDao.getDecisionLevelByEmpId(this.createParam.issuerId);

            if (string.IsNullOrEmpty(evaEmpDicisionLevel))
            {
                UtilitySvc.trySetXmlDocInnerText(ref doc, FormID + "/hfApproveLvl1", "6000");
            }
            else
            {
                UtilitySvc.trySetXmlDocInnerText(ref doc, FormID + "/hfApproveLvl1", evaEmpDicisionLevel);
            }


            //取得部門相關資訊
            List <string> evaEmpDetpInfo = this.newEmpEvaDao.getDeptInfoByDeptName(evaEmpInfoList[2]);

            UtilitySvc.trySetXmlDocInnerText(ref doc, FormID + "/hfManagerName", evaEmpDetpInfo[0]);
            UtilitySvc.trySetXmlDocInnerText(ref doc, FormID + "/hfManagerId", evaEmpDetpInfo[1]);
            UtilitySvc.trySetXmlDocInnerText(ref doc, FormID + "/hfManagerNameUp", evaEmpDetpInfo[2]);
            UtilitySvc.trySetXmlDocInnerText(ref doc, FormID + "/hfManagerIdUp", evaEmpDetpInfo[3]);


            //設定最後發起流程的資訊
            List <string> evaEmpProcessInfo = this.newEmpEvaDao.getLastEvaluationProcessByEmpId(this.createParam.evaluationEmpId);

            UtilitySvc.trySetXmlDocInnerText(ref doc, FormID + "/rbtAppraisal", "0");
            if (evaEmpProcessInfo.Count > 0)
            {
                int ddl2rdItem = 0;
                int.TryParse(evaEmpProcessInfo[0], out ddl2rdItem);
                if (ddl2rdItem > 0)
                {
                    UtilitySvc.trySetXmlDocInnerText(ref doc, FormID + "/hfMaturityDate1", evaEmpProcessInfo[1]);
                    UtilitySvc.trySetXmlDocInnerText(ref doc, FormID + "/hfMaturityDate2", evaEmpProcessInfo[2]);
                    UtilitySvc.trySetXmlDocInnerText(ref doc, FormID + "/hfOkayDate", evaEmpProcessInfo[3]);
                    UtilitySvc.trySetXmlDocInnerText(ref doc, FormID + "/rbtAppraisal", "1");
                    UtilitySvc.trySetXmlDocInnerText(ref doc, FormID + "/txtTrial", evaEmpProcessInfo[4]);
                }
            }

            UtilitySvc.writeLog("===================== xml template:" +
                                DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + " ================");

            UtilitySvc.writeLog("form xml:");
            UtilitySvc.writeLog(doc.OuterXml);


            ret = this.nanaProcSvc.invokeProcess(this.ProcessID, this.createParam.issuerId, this.issuerEmpInfoList[5],
                                                 formArr[0], doc.OuterXml, string.Empty);

            UtilitySvc.writeLog("===================== create process at:" +
                                DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + " ================");


            UtilitySvc.writeLog("process serial number:");
            UtilitySvc.writeLog(ret.resultMessage);

            return(ret);
        }