/// <summary> /// 分单 /// </summary> /// <param name="rule"></param> /// <param name="bizschemacode"></param> /// <param name="bizobjectid"></param> /// <param name="participant"></param> /// <param name="workitemid"></param> /// <returns></returns> public rtn_data SendOrder(AllocationOrderRule rule, string bizschemacode, string bizobjectid, string participant, string workitemid, string loanAmount) { rtn_data rtn = new rtn_data(); #region 分单 string zsPerson = rule.FinalCreditPerson; double amount; if (double.TryParse(loanAmount, out amount)) { //贷款金额大于终审的审核额度 if (amount > rule.FinalLoanAmountTo) { zsPerson = GetSpecialAudit(amount); } } Dictionary <string, object> values = new Dictionary <string, object>(); values.Add("cyzXSCS", rule.FirstCreditPerson); values.Add("cyzXSZS", zsPerson); values.Add("allocation_available", 0);//不可再分单; var setResult = AppUtility.Engine.BizObjectManager.SetPropertyValues(bizschemacode, bizobjectid, participant, values); if (setResult) { BPM.SubmitItem(workitemid, BoolMatchValue.True, "", participant); rtn.code = 1; rtn.message = "分单成功"; } else { rtn.code = -1; rtn.message = "分单失败"; } #endregion return(rtn); }
/// <summary> /// 保存到订单记录表 /// </summary> /// <param name="rule">规则</param> /// <param name="instanceid">流程id</param> /// <param name="workitemid">任务id</param> /// <param name="applicationNumber">申请单号</param> /// <param name="loanAmount">贷款金额</param> /// <param name="originatorUnit">发起人部门id</param> /// <param name="currentNum">当前待办中的申请数量(零售)</param> /// <returns></returns> public bool SaveToOrderHis(AllocationOrderRule rule, string instanceid, string workitemid, string applicationNumber, string loanAmount, string originatorUnit, int currentNum) { int channel_type = originatorUnit == "28a0ba01-4f58-4097-96cb-77c2b09e8253" ? 0 : 1; string sqlInsert = @"insert into C_Auto_Allocation_Order_Detail(Allocation_Date,instanceid,workitemid,application_number,channel_type, asset_condition,loan_amount,usercode,username,final_usercode,final_username,app_num,rule_channel_type,rule_asset_condition,rule_amount_from,rule_amount_to,rule_limit_num) values(sysdate,'{0}','{1}','{2}',{3},'{4}',{5},'{6}','{7}','{8}','{9}',{10},'{11}','{12}',{13},{14},{15})"; sqlInsert = string.Format(sqlInsert, instanceid, workitemid, applicationNumber, channel_type, rule.AssetCondition, loanAmount, rule.UserCode, rule.UserName, rule.FinalUserCode, rule.FinalUserName, currentNum, rule.ChannelType, rule.AssetCondition, rule.LoanAmountFrom, rule.LoanAmountTo, rule.LimitNumber); return(AppUtility.Engine.EngineConfig.CommandFactory.CreateCommand().ExecuteNonQuery(sqlInsert) > 0); }
public AllocationOrderRule UserRule(string UserId) { string sqlGetRules = string.Format("select * from i_CreditGetOrderRules where FIRSTCREDITPERSON='{0}'", UserId); DataTable dtRules = AppUtility.Engine.EngineConfig.CommandFactory.CreateCommand().ExecuteDataTable(sqlGetRules); if (dtRules.Rows.Count > 0) { //规则 AllocationOrderRule rule = ToRule(dtRules.Rows[0]); return(rule); } return(null); }
/// <summary> /// 是否需要分单 /// </summary> /// <param name="context"></param> /// <returns></returns> public bool NeedAllocationOrder(InstanceContext context) { string sql = "select * from i_" + context.BizObjectSchemaCode + " where objectid='" + context.BizObjectId + "'"; DataTable dt = AppUtility.Engine.EngineConfig.CommandFactory.CreateCommand().ExecuteDataTable(sql); if (dt.Rows.Count > 0) { string cyz = dt.Rows[0]["cyzxscs"] + string.Empty; #region 参与者为空 if (string.IsNullOrEmpty(cyz)) { //1.查询有没有贷款历史; string appType = dt.Rows[0]["application_type_code"] + string.Empty; string sqlGetHis = ""; #region 查询历史申请订单 SQL if (appType == "00001") { string sqlGetIDCardNo = @"select det.id_card_nbr from i_application{0} app left join i_applicant_detail{0} det on app.objectid=det.parentobjectid and det.identification_code2=1 where app.objectid='{1}' order by app.createdtime desc"; sqlGetIDCardNo = string.Format(sqlGetIDCardNo, context.BizObjectSchemaCode.Replace("APPLICATION", ""), context.BizObjectId); string idcardno = AppUtility.Engine.EngineConfig.CommandFactory.CreateCommand().ExecuteScalar(sqlGetIDCardNo) + string.Empty; sqlGetHis = GetQueryHisApplicationSql(idcardno, context.BizObjectId, appType); } else { string sqlGetOrgNo = @"select det.ORGANIZATION_CDE from i_application app left join i_company_detail det on app.objectid=det.parentobjectid and det.identification_code3=1 where app.objectid='{0}' order by app.createdtime desc"; sqlGetOrgNo = string.Format(sqlGetOrgNo, context.BizObjectId); string orgNo = AppUtility.Engine.EngineConfig.CommandFactory.CreateCommand().ExecuteScalar(sqlGetOrgNo) + string.Empty; sqlGetHis = GetQueryHisApplicationSql(orgNo, context.BizObjectId, appType); } #endregion DataTable dtHistory = AppUtility.Engine.EngineConfig.CommandFactory.CreateCommand().ExecuteDataTable(sqlGetHis); if (dtHistory.Rows.Count > 0) { string cyzxscs = ""; foreach (DataRow r in dtHistory.Rows) { cyzxscs = r["cyzxscs"] + string.Empty; if (!string.IsNullOrEmpty(cyzxscs)) { break; } } AddLog(LogFileName, DateTime.Now.ToString("yyyy-MM-dd"), "历史参与者为:" + cyzxscs + ",实例ID为-->" + context.InstanceId); //用户可用,采用历史分单规则,不需要重新分单 if (UserAvailable(cyzxscs)) { #region 给参与者赋值 AllocationOrderRule rule = UserRule(cyzxscs); string cyzxszs = ""; if (rule != null) { cyzxszs = rule.FinalCreditPerson; //增加判断贷款金额 double dk_amount; if (double.TryParse(dt.Rows[0]["financedamount"] + string.Empty, out dk_amount)) { //贷款金额大于终审的审核额度 if (dk_amount > rule.FinalLoanAmountTo) { cyzxszs = GetSpecialAudit(dk_amount); } } } Dictionary <string, object> dicPara = new Dictionary <string, object>(); dicPara.Add("cyzxscs", cyzxscs); dicPara.Add("cyzxszs", cyzxszs); AppUtility.Engine.BizObjectManager.SetPropertyValues(context.BizObjectSchemaCode, context.BizObjectId, "", dicPara); #endregion return(false); } } return(true); } #endregion #region 参与者不为空 else { //用户可用,不用分单 if (UserAvailable(cyz)) { return(false); } else { return(true); } } #endregion } return(true); }