/// <summary> /// 编辑附件 /// </summary> public void EditAttachment(com_attachment att, long userId) { var oldAtt = dal.FindNoDeleteById(att.id); if (oldAtt == null) { return; } att.update_time = Tools.Date.DateHelper.ToUniversalTimeStamp(DateTime.Now); att.update_user_id = userId; dal.Update(att); OperLogBLL.OperLogUpdate <com_attachment>(att, oldAtt, att.id, userId, DicEnum.OPER_LOG_OBJ_CATE.ATTACHMENT, ""); if (att.object_type_id == (int)DicEnum.ATTACHMENT_OBJECT_TYPE.TASK) { var task = new sdk_task_dal().FindNoDeleteById(att.object_id); if (task != null) { #region 更新客户最后活动时间 crm_account thisAccount = new CompanyBLL().GetCompany(task.account_id); if (thisAccount != null) { thisAccount.last_activity_time = Tools.Date.DateHelper.ToUniversalTimeStamp(DateTime.Now); new CompanyBLL().EditAccount(thisAccount, userId); } #endregion } } }
/// <summary> /// 关联前的检查 /// </summary> /// <param name="context"></param> private void CheckRelaTicket(HttpContext context) { var ticketId = context.Request.QueryString["ticket_id"]; var relaTicketId = context.Request.QueryString["rela_ticket_ids"]; bool isDiffCompany = false; bool isHasPro = false; bool isSginInd = false; // 是否关联事故 // if (!string.IsNullOrEmpty(ticketId) && !string.IsNullOrEmpty(relaTicketId)) var stDal = new sdk_task_dal(); var relList = stDal.GetTicketByIds(relaTicketId); var thisTicket = stDal.FindNoDeleteById(long.Parse(ticketId)); if (relList != null && relList.Count > 0 && thisTicket != null) { if (relList.Any(_ => _.account_id != thisTicket.account_id)) { isDiffCompany = true; } if (relList.Any(_ => _.problem_ticket_id != null)) { isHasPro = true; } if (relList.Any(_ => _.ticket_type_id == (int)DTO.DicEnum.TICKET_TYPE.PROBLEM && stDal.GetProCount(_.id) != 0)) { isSginInd = true; } } context.Response.Write(new EMT.Tools.Serialize().SerializeJson(new { diffAcc = isDiffCompany, isHasPro = isHasPro, isSginInd = isSginInd, })); }
/// <summary> /// 返回工单的提醒信息---(返回客户告警,外包消息,变更管理消息) /// </summary> private void GetTicketAlert(HttpContext context) { var ticket_id = context.Request.QueryString["ticket_id"]; if (!string.IsNullOrEmpty(ticket_id)) { var thisTicket = new sdk_task_dal().FindNoDeleteById(long.Parse(ticket_id)); if (thisTicket != null) { string accountAlert = ""; // 客户的新建 提醒信息 string outMasg = ""; // 外包消息 string changeMsg = ""; // 变更管理消息 var tickCreateAlert = new crm_account_alert_dal().FindAlert(thisTicket.account_id, DTO.DicEnum.ACCOUNT_ALERT_TYPE.NEW_TICKET_ALERT); if (tickCreateAlert != null) { accountAlert += tickCreateAlert.alert_text + " "; } var tickDetailAlert = new crm_account_alert_dal().FindAlert(thisTicket.account_id, DTO.DicEnum.ACCOUNT_ALERT_TYPE.TICKET_DETAIL_ALERT); if (tickDetailAlert != null) { accountAlert += tickDetailAlert.alert_text + " "; } context.Response.Write(new EMT.Tools.Serialize().SerializeJson(new { accountAlert = accountAlert, outMasg = outMasg, changeMsg = changeMsg })); } } }
protected List <ctt_contract_cost> noCicostList = null; // 没有配置项的项目产品 protected void Page_Load(object sender, EventArgs e) { try { var id = Request.QueryString["id"]; thisProject = new pro_project_dal().FindNoDeleteById(long.Parse(id)); if (thisProject != null) { var taskList = new sdk_task_dal().GetProTask(thisProject.id); if (taskList != null && taskList.Count > 0) { actTaskList = taskList.Where(_ => _.status_id != (int)DTO.DicEnum.TICKET_STATUS.DONE).ToList(); } var costList = new ctt_contract_cost_dal().GetCostByProId(thisProject.id); if (costList != null && costList.Count > 0) { noCicostList = costList.Where(_ => _.product_id == null).ToList(); } if (!IsPostBack) { // noTempId noTempId.DataTextField = "name"; noTempId.DataValueField = "id"; noTempId.DataSource = new sys_notify_tmpl_dal().GetTempByEvent(DicEnum.NOTIFY_EVENT.PROJECT_COMPLETED); noTempId.DataBind(); } } } catch (Exception msg) { Response.End(); } }
/// <summary> /// 获取客户详情 /// </summary> private void GetAccDetail(HttpContext context) { var accountId = context.Request.QueryString["account_id"]; if (!string.IsNullOrEmpty(accountId)) { var thisAcc = new CompanyBLL().GetCompany(long.Parse(accountId)); if (thisAcc != null) { // 返回客户Id,名称,地址信息 var location = new LocationBLL().GetLocationByAccountId(thisAcc.id); string city = ""; string provice = ""; string quXian = ""; string address1 = ""; string address2 = ""; string postalCode = ""; int ticketNum = 0; // 所有打开的工单的数量 int monthNum = 0; // 近三十天工单的数量 if (location != null) { var thisCity = new d_district_dal().FindById(location.city_id); if (thisCity != null) { city = thisCity.name; } var thisprovice = new d_district_dal().FindById(location.province_id); if (thisprovice != null) { provice = thisprovice.name; } if (location.district_id != null) { var thisquXian = new d_district_dal().FindById((long)location.district_id); if (thisquXian != null) { quXian = thisquXian.name; } } address1 = location.address; address2 = location.additional_address; if (!string.IsNullOrEmpty(location.postal_code)) { postalCode = location.postal_code; } } var ticketList = new sdk_task_dal().GetTicketByAccount(thisAcc.id); if (ticketList != null && ticketList.Count > 0) { ticketNum = ticketList.Count; } context.Response.Write(new Tools.Serialize().SerializeJson(new { id = thisAcc.id, name = thisAcc.name, phone = thisAcc.phone, city = city, provice = provice, quXian = quXian, address1 = address1, address2 = address2, ticketNum = ticketNum, monthNum = monthNum, postalCode = postalCode })); } } }
/// <summary> /// 根据编号 获取相应工单 /// </summary> /// <param name="context"></param> private void GetTicketByNo(HttpContext context) { var no = context.Request.QueryString["no"]; var ticket = new sdk_task_dal().GetTicketByNo(no); if (ticket != null) { context.Response.Write(new EMT.Tools.Serialize().SerializeJson(ticket)); } }
/// <summary> /// 检查选择的工单是否可以关联 /// </summary> private void GetProCount(HttpContext context) { int result = 0; var ticketId = context.Request.QueryString["ticket_id"]; if (!string.IsNullOrEmpty(ticketId)) { result = new sdk_task_dal().GetProCount(long.Parse(ticketId)); } context.Response.Write(new EMT.Tools.Serialize().SerializeJson(result)); }
/// <summary> /// 获取到工单相关的信息 /// </summary> private void GetTicket(HttpContext context) { var ticketId = context.Request.QueryString["ticket_id"]; if (!string.IsNullOrEmpty(ticketId)) { var thisTicket = new sdk_task_dal().FindNoDeleteById(long.Parse(ticketId)); if (thisTicket != null) { context.Response.Write(new EMT.Tools.Serialize().SerializeJson(thisTicket)); } } }
/// <summary> /// 返回工单相关属性的值 /// </summary> private void GetTicketProperty(HttpContext context) { var ticketId = context.Request.QueryString["ticket_id"]; var propertyName = context.Request.QueryString["property"]; if (!string.IsNullOrEmpty(ticketId) && !string.IsNullOrEmpty(propertyName)) { var thisTicket = new sdk_task_dal().FindNoDeleteById(long.Parse(ticketId)); if (thisTicket != null) { context.Response.Write(BaseDAL <sdk_task> .GetObjectPropertyValue(thisTicket, propertyName)); } } }
private void InitTickets() { sdk_task_dal.AddEdit += TicketAddEditEvent; sdk_task_dal.Changed += TicketChange; var tks = new sdk_task_dal().FindListBySql($"select * from sdk_task where (type_id={(int)DicEnum.TASK_TYPE.SERVICE_DESK_TICKET} or type_id={(int)DicEnum.TASK_TYPE.RECURRING_TICKET_MASTER}) and delete_time=0"); lock (locker) { tickets = new Dictionary <long, sdk_task>(); foreach (var tk in tks) { tickets.Add(tk.id, tk); } } }
private List <DictionaryEntryDto> workflowLogCache; // 工作流触发日志缓存(36小时内) // 判断定时时间触发执行 private void EventTimer(object sender, System.Timers.ElapsedEventArgs e) { DateTime crtTime = DateTime.Now; long crtTimeTik = Tools.Date.DateHelper.ToUniversalTimeStamp(crtTime); sys_workflow_log_dal logDal = new sys_workflow_log_dal(); // 更新日志缓存 if ((crtTime.Hour % 3 == 0 && crtTime.Minute == 0) || workflowLogCache == null) // 3小时更新一次 { workflowLogCache = logDal.GetLogListByTime(Tools.Date.DateHelper.ToUniversalTimeStamp(crtTime.AddHours(-36))); } sdk_task_dal taskDal = new sdk_task_dal(); for (var i = tickets.Count - 1; i >= 0; i--) { if (tickets.ElementAt(i).Value == null) { var ticket = taskDal.FindSignleBySql <sdk_task>($"select * from sdk_task where id={tickets.ElementAt(i).Key} and (type_id={(int)DicEnum.TASK_TYPE.SERVICE_DESK_TICKET} or type_id={(int)DicEnum.TASK_TYPE.RECURRING_TICKET_MASTER}) and delete_time=0"); if (ticket == null) { tickets.Remove(tickets.ElementAt(i).Key); } else { tickets[tickets.ElementAt(i).Key] = ticket; } } } foreach (var wf in workflowList) { if (wf.workflow_object_id == (int)DicEnum.WORKFLOW_OBJECT.TICKET) { lock (locker) { foreach (var tkt in tickets) { if (workflowLogCache.Exists(_ => _.val == wf.id.ToString() && _.show == tkt.Key.ToString())) { continue; } // TODO: 根据event名称判断事件及时间,event名称暂未配置 } } } } }
/// <summary> /// 获取本批次工时的工时类型,并返回工时类型和第一个工时id /// </summary> /// <param name="batchId"></param> /// <param name="type">1:常规工时;2:休假请求;3:任务工时;4:工单工时</param> /// <param name="workEntryId"></param> /// <returns></returns> public bool GetWorkEntryType(long batchId, out int type, out long workEntryId) { workEntryId = 0; type = 0; var workEntry = dal.FindSignleBySql <sdk_work_entry>($"select * from sdk_work_entry where batch_id={batchId} and delete_time=0"); if (workEntry == null) { return(false); } workEntryId = workEntry.id; if (workEntry.timeoff_request_id != null) { type = 2; return(true); } if (workEntry.cost_code_id != null) { var regularTimeCodeList = GetTimeCostCodeList(); if (regularTimeCodeList.Exists(_ => _.id == workEntry.cost_code_id.Value)) { type = 1; return(true); } } var task = new sdk_task_dal().FindById(workEntry.task_id); if (task.type_id == (int)DicEnum.TASK_TYPE.PROJECT_TASK) { type = 3; return(true); } if (task.type_id == (int)DicEnum.TASK_TYPE.SERVICE_DESK_TICKET) { type = 4; return(true); } return(false); }
/// <summary> /// 获取联系人的详情信息 /// </summary> private void GetContactDetail(HttpContext context) { var contatc_id = context.Request.QueryString["contact_id"]; if (!string.IsNullOrEmpty(contatc_id)) { var thisContact = new crm_contact_dal().FindNoDeleteById(long.Parse(contatc_id)); if (thisContact != null) { int ticketNum = 0; // 所有打开的工单的数量 int monthNum = 0; // 近三十天工单的数量 var ticketList = new sdk_task_dal().GetTicketByContact(thisContact.id); if (ticketList != null && ticketList.Count > 0) { ticketNum = ticketList.Count; } context.Response.Write(new Tools.Serialize().SerializeJson(new { id = thisContact.id, name = thisContact.name, phone = thisContact.phone, ticketNum = ticketNum, monthNum = monthNum, })); } } }
/// <summary> /// 校验员工在任务计划期间是否有审批通过的请假记录,有,则告警 /// </summary> /// <param name="context"></param> /// <param name="task_id"></param> private void CheckResTimeOff(HttpContext context, long task_id) { var thisTask = new sdk_task_dal().FindNoDeleteById(task_id); if (thisTask != null && thisTask.owner_resource_id != null) { var timeList = new tst_timeoff_request_dal().GetListByTaskAndRes(thisTask.id, (long)thisTask.owner_resource_id); if (timeList != null && timeList.Count > 0) { string timeInfo = ""; timeList.ForEach(_ => { timeInfo += $"{Tools.Date.DateHelper.ConvertStringToDateTime(_.create_time).ToString("yyyy-MM-dd")} ({_.request_hours.ToString("#0.00")} 小时)" + ","; }); if (!string.IsNullOrEmpty(timeInfo) && thisTask.estimated_end_time != null) { timeInfo = timeInfo.Substring(0, timeInfo.Length - 1); context.Response.Write(new Tools.Serialize().SerializeJson(new { time = timeInfo, doneTime = Tools.Date.DateHelper.ConvertStringToDateTime((long)thisTask.estimated_end_time).ToString("yyyy-MM-dd") })); } } } }
/// <summary> /// 校验工单负责人的时间 是否已经使用 /// </summary> private void CheckTicketResTime(HttpContext context) { var ticketIds = context.Request.QueryString["ids"]; if (!string.IsNullOrEmpty(ticketIds)) { var tickList = new sdk_task_dal().GetTaskByIds(ticketIds); if (tickList != null && tickList.Count > 0) { var start = DateTime.Parse(context.Request.QueryString["start"]); var end = DateTime.Parse(context.Request.QueryString["end"]); var tbll = new TicketBLL(); List <sys_resource> repearResList = new List <sys_resource>(); bool isHasRes = true; if (!tickList.Any(_ => tbll.IsHasRes(_.id))) { // 代表选择工单无负责人 isHasRes = false; } else { var startLong = Tools.Date.DateHelper.ToUniversalTimeStamp(start); var endLong = Tools.Date.DateHelper.ToUniversalTimeStamp(end); foreach (var ticket in tickList) { var resList = tbll.GetResNameByTime(ticket.id, startLong, endLong); if (resList != null && resList.Count > 0) { repearResList.AddRange(resList); } } if (repearResList != null && repearResList.Count > 0) { repearResList = repearResList.Distinct().ToList(); } } context.Response.Write(new EMT.Tools.Serialize().SerializeJson(new { hasRes = isHasRes, resList = repearResList })); } } }
/// <summary> /// 判断是工单还是任务 /// </summary> private void IsTicket(HttpContext context) { var ticketId = context.Request.QueryString["ticket_id"]; var isTicket = "0"; if (!string.IsNullOrEmpty(ticketId)) { var thisTicket = new sdk_task_dal().FindNoDeleteById(long.Parse(ticketId)); if (thisTicket != null) { if (thisTicket.type_id == (int)DTO.DicEnum.TASK_TYPE.PROJECT_ISSUE || thisTicket.type_id == (int)DTO.DicEnum.TASK_TYPE.PROJECT_PHASE || thisTicket.type_id == (int)DTO.DicEnum.TASK_TYPE.PROJECT_TASK) { isTicket = "2"; } else if (thisTicket.type_id == (int)DTO.DicEnum.TASK_TYPE.SERVICE_DESK_TICKET || thisTicket.type_id == (int)DTO.DicEnum.TASK_TYPE.RECURRING_TICKET_MASTER || thisTicket.type_id == (int)DTO.DicEnum.TASK_TYPE.TASKFIRE_TICKET) { isTicket = "1"; } } } context.Response.Write(isTicket); }
protected void Page_Load(object sender, EventArgs e) { try { if (!IsPostBack) { Bind(); // 绑定页面下拉数据 } CallBack = Request.QueryString["CallBack"]; var accountId = Request.QueryString["account_id"]; if (!string.IsNullOrEmpty(accountId)) { thisAccount = new CompanyBLL().GetCompany(long.Parse(accountId)); } var contractId = Request.QueryString["contract_id"]; if (!string.IsNullOrEmpty(contractId)) { thisContract = new ctt_contract_dal().FindNoDeleteById(long.Parse(contractId)); } var insProId = Request.QueryString["insProId"]; if (!string.IsNullOrEmpty(insProId)) { insPro = new crm_installed_product_dal().FindNoDeleteById(long.Parse(insProId)); if (insPro != null && insPro.account_id != null) { thisAccount = new CompanyBLL().GetCompany((long)insPro.account_id); } } var taskId = Request.QueryString["id"]; if (!string.IsNullOrEmpty(taskId)) { thisTicket = new sdk_task_dal().FindNoDeleteById(long.Parse(taskId)); if (thisTicket != null) { thisBookMark = new IndexBLL().GetSingBook(Request.RawUrl, LoginUserId); var isCopyString = Request.QueryString["isCopy"]; if (string.IsNullOrEmpty(isCopyString)) { isAdd = false; } else { isCopy = true; } if (!IsPostBack) { cate_id.ClearSelection(); cate_id.SelectedValue = thisTicket.cate_id.ToString(); this.ticket_type_id.SelectedValue = thisTicket.ticket_type_id.ToString(); this.status_id.SelectedValue = thisTicket.status_id.ToString(); if (isCopy) { this.status_id.ClearSelection(); this.status_id.SelectedValue = ((int)DicEnum.TICKET_STATUS.NEW).ToString(); } if (thisTicket.priority_type_id != null) { priority_type_id.SelectedValue = thisTicket.priority_type_id.ToString(); } if (thisTicket.issue_type_id != null) { issue_type_id.SelectedValue = thisTicket.issue_type_id.ToString(); } if (thisTicket.source_type_id != null) { source_type_id.SelectedValue = thisTicket.source_type_id.ToString(); } if (thisTicket.issue_type_id != null) { issue_type_id.SelectedValue = thisTicket.issue_type_id.ToString(); } if (thisTicket.sla_id != null) { sla_id.SelectedValue = thisTicket.sla_id.ToString(); } if (thisTicket.department_id != null) { department_id.SelectedValue = thisTicket.department_id.ToString(); } } ticketUdfValueList = new UserDefinedFieldsBLL().GetUdfValue(DicEnum.UDF_CATE.TASK, thisTicket.id, tickUdfList); thisAccount = new CompanyBLL().GetCompany(thisTicket.account_id); if (thisTicket.contact_id != null) { thisContact = new crm_contact_dal().FindNoDeleteById((long)thisTicket.contact_id); } if (thisTicket.owner_resource_id != null && thisTicket.role_id != null) { var resDepList = new sys_resource_department_dal().GetResDepByResAndRole((long)thisTicket.owner_resource_id, (long)thisTicket.role_id); if (resDepList != null && resDepList.Count > 0) { proResDep = resDepList[0]; priRes = new sys_resource_dal().FindNoDeleteById((long)thisTicket.owner_resource_id); } } if (thisTicket.installed_product_id != null) { insPro = new crm_installed_product_dal().FindNoDeleteById((long)thisTicket.installed_product_id); } if (thisTicket.contract_id != null) { thisContract = new ctt_contract_dal().FindNoDeleteById((long)thisTicket.contract_id); } if (thisTicket.cost_code_id != null) { thisCostCode = new d_cost_code_dal().FindNoDeleteById((long)thisTicket.cost_code_id); } var otherResList = new sdk_task_resource_dal().GetTaskResByTaskId(thisTicket.id); if (otherResList != null && otherResList.Count > 0) { foreach (var item in otherResList) { if (item.resource_id != null && item.role_id != null) { var resDepList = new sys_resource_department_dal().GetResDepByResAndRole((long)item.resource_id, (long)item.role_id); if (resDepList != null && resDepList.Count > 0) { ticketResIds += resDepList[0].id + ","; } } } if (ticketResIds != "") { ticketResIds = ticketResIds.Substring(0, ticketResIds.Length - 1); } } ticketCheckList = new sdk_task_checklist_dal().GetCheckByTask(thisTicket.id); if (ticketCheckList != null && ticketCheckList.Count > 0) { ticketCheckList = ticketCheckList.OrderBy(_ => _.sort_order).ToList(); } #region 时间轴显示相关 工单备注类型获取 var slaValue = new sdk_task_dal().GetSlaTime(thisTicket); string slaTimeValue = ""; if (slaValue != null) { slaTimeValue = slaValue.ToString(); } if (!string.IsNullOrEmpty(slaTimeValue)) { if (slaTimeValue.Substring(0, 1) == "{") { slaDic = new EMT.Tools.Serialize().JsonToDictionary(slaTimeValue); } } var actList = new d_general_dal().GetGeneralByTableId((int)GeneralTableEnum.ACTION_TYPE); if (actList != null && actList.Count > 0) { ticketNoteTypeList = actList.Where(_ => _.ext2 == ((int)DicEnum.ACTIVITY_CATE.TASK_NOTE).ToString()).ToList(); } #endregion entryList = new sdk_work_entry_dal().GetList(thisTicket.id); } } var ticket_type_id = Request.QueryString["ticket_type_id"]; if (!string.IsNullOrEmpty(ticket_type_id)) { this.ticket_type_id.ClearSelection(); this.ticket_type_id.SelectedValue = ticket_type_id; } } catch (Exception msg) { Response.Write("<script>alert('" + msg.Message + "');window.close();</script>"); } }
/// <summary> /// 获取页面参数 /// </summary> protected TicketManageDto GetParam() { // 为方便页面处理 owner_resource_id 存储的是 sys_resource_department 的id ,存储时需要转换 long?owner_resource_id = null; long?role_id = null; var priResString = Request.Form["owner_resource_id"]; if (!string.IsNullOrEmpty(priResString)) { var resDep = new sys_resource_department_dal().FindById(long.Parse(priResString)); if (resDep != null) { owner_resource_id = resDep.resource_id; role_id = resDep.role_id; } } TicketManageDto param = new TicketManageDto(); var pageTicket = AssembleModel <sdk_task>(); pageTicket.owner_resource_id = owner_resource_id; pageTicket.role_id = role_id; var dueDate = Request.Form["DueDate"]; var dueTime = Request.Form["DueTime"]; if (!string.IsNullOrEmpty(dueTime) && !string.IsNullOrEmpty(dueDate)) { var dueDateTime = dueDate + " " + dueTime; // 获取到截止时间 var dueD = DateTime.Parse(dueDateTime); pageTicket.estimated_end_time = Tools.Date.DateHelper.ToUniversalTimeStamp(dueD); } else { ClientScript.RegisterStartupScript(this.GetType(), "提示信息", "<script>alert('未获取到相关截止时间,请重新填写!');</script>"); return(null); } #region 如果sla设置自动计算截止时间 ,保存时计算出工单的结束时间 if (pageTicket.sla_id != null) { var thisSla = new d_sla_dal().FindNoDeleteById((long)pageTicket.sla_id); if (thisSla != null && thisSla.set_ticket_due_date == 1) { if (pageTicket.sla_start_time == null) { pageTicket.sla_start_time = Tools.Date.DateHelper.ToUniversalTimeStamp(DateTime.Now); } var slaValue = new sdk_task_dal().GetSlaTime(pageTicket); string slaTimeValue = ""; if (slaValue != null) { slaTimeValue = slaValue.ToString(); } if (!string.IsNullOrEmpty(slaTimeValue) && slaTimeValue.Substring(0, 1) == "{") { var slaDic = new EMT.Tools.Serialize().JsonToDictionary(slaTimeValue); if (slaDic != null && slaDic.Count > 0) { var duteDateDic = slaDic.FirstOrDefault(_ => _.Key == "截止时间"); if (!default(KeyValuePair <string, object>).Equals(duteDateDic)) { var duteDate = DateTime.Parse(duteDateDic.Value.ToString()); pageTicket.estimated_end_time = Tools.Date.DateHelper.ToUniversalTimeStamp(duteDate); } var firstResponseDateDic = slaDic.FirstOrDefault(_ => _.Key == "响应时间"); if (!default(KeyValuePair <string, object>).Equals(firstResponseDateDic)) { pageTicket.first_response_target_time = Tools.Date.DateHelper.ToUniversalTimeStamp(DateTime.Parse(firstResponseDateDic.Value.ToString())); } var resoluTatgetDic = slaDic.FirstOrDefault(_ => _.Key == "解决时间"); if (!default(KeyValuePair <string, object>).Equals(resoluTatgetDic)) { pageTicket.resolution_target_time = Tools.Date.DateHelper.ToUniversalTimeStamp(DateTime.Parse(resoluTatgetDic.Value.ToString())); } var resoluPlanTatgetDic = slaDic.FirstOrDefault(_ => _.Key == "解决方案提供时间"); if (!default(KeyValuePair <string, object>).Equals(firstResponseDateDic)) { pageTicket.resolution_plan_target_time = Tools.Date.DateHelper.ToUniversalTimeStamp(DateTime.Parse(resoluPlanTatgetDic.Value.ToString())); } } } } } #endregion if (isAdd) { pageTicket.type_id = (int)DTO.DicEnum.TASK_TYPE.SERVICE_DESK_TICKET; param.ticket = pageTicket; } else { #region 获取页面相关值 thisTicket.account_id = pageTicket.account_id; thisTicket.contract_id = pageTicket.contract_id; thisTicket.contact_id = pageTicket.contact_id; thisTicket.status_id = pageTicket.status_id; thisTicket.priority = pageTicket.priority; thisTicket.issue_type_id = pageTicket.issue_type_id; thisTicket.sub_issue_type_id = pageTicket.sub_issue_type_id; thisTicket.source_type_id = pageTicket.source_type_id; thisTicket.estimated_end_time = pageTicket.estimated_end_time; thisTicket.estimated_hours = pageTicket.estimated_hours; thisTicket.sla_id = pageTicket.sla_id; thisTicket.department_id = pageTicket.department_id; thisTicket.owner_resource_id = pageTicket.owner_resource_id; thisTicket.role_id = pageTicket.role_id; thisTicket.installed_product_id = pageTicket.installed_product_id; thisTicket.service_id = pageTicket.service_id; thisTicket.cost_code_id = pageTicket.cost_code_id; thisTicket.purchase_order_no = pageTicket.purchase_order_no; thisTicket.cate_id = pageTicket.cate_id; thisTicket.ticket_type_id = pageTicket.ticket_type_id; thisTicket.title = pageTicket.title; thisTicket.description = pageTicket.description; thisTicket.resolution = pageTicket.resolution; thisTicket.sla_start_time = pageTicket.sla_start_time; thisTicket.estimated_end_time = pageTicket.estimated_end_time; thisTicket.first_response_target_time = pageTicket.first_response_target_time; thisTicket.resolution_target_time = pageTicket.resolution_target_time; thisTicket.resolution_plan_target_time = pageTicket.resolution_plan_target_time; #endregion param.ticket = thisTicket; } param.resDepIds = Request.Form["OtherResId"]; var AddSoule = Request.Form["AddSoule"]; if (AddSoule == "on") { param.isAppSlo = true; } param.completeReason = Request.Form["reason"]; param.repeatReason = Request.Form["RepeatReason"]; #region 检查单相关 var CheckListIds = Request.Form["CheckListIds"]; // 检查单Id if (!string.IsNullOrEmpty(CheckListIds)) { List <CheckListDto> ckList = new List <CheckListDto>(); var checkIdArr = CheckListIds.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); foreach (var checkId in checkIdArr) { if (string.IsNullOrEmpty(Request.Form[checkId + "_item_name"])) // 条目名称为空 不添加 { continue; } var is_complete = Request.Form[checkId + "_is_complete"]; var is_import = Request.Form[checkId + "_is_import"]; var sortOrder = Request.Form[checkId + "_sort_order"]; decimal?sort = null; if (!string.IsNullOrEmpty(sortOrder)) { sort = decimal.Parse(sortOrder); } var thisCheck = new CheckListDto() { ckId = long.Parse(checkId), isComplete = is_complete == "on", itemName = Request.Form[checkId + "_item_name"], isImport = is_import == "on", sortOrder = sort, }; ckList.Add(thisCheck); } param.ckList = ckList; } #endregion #region 工单自定义字段,页面暂无自定义 if (tickUdfList != null && tickUdfList.Count > 0) { var list = new List <UserDefinedFieldValue>(); foreach (var udf in tickUdfList) // 循环添加 { var new_udf = new UserDefinedFieldValue() { id = udf.id, value = string.IsNullOrEmpty(Request.Form[udf.id.ToString()]) ? null : Request.Form[udf.id.ToString()], }; list.Add(new_udf); } if (isAdd) { param.udfList = list; } else { param.udfList = ticketUdfValueList; } } #endregion return(param); }
protected void Page_Load(object sender, EventArgs e) { try { var ticketIds = Request.QueryString["ticketIds"]; var sdDal = new sdk_task_dal(); if (!string.IsNullOrEmpty(ticketIds)) { ticketList = sdDal.GetTicketByIds(ticketIds); } if (ticketList != null && ticketList.Count > 0) { if (ticketList.Count == 1) { isSingle = true; } else { isSingle = false; } thisTicket = ticketList[0]; } else { Response.Write("<script>alert('未查询到相关工单信息!');window.close();</script>"); return; } var udfBLL = new UserDefinedFieldsBLL(); if (thisTicket == null) { Response.Write("<script>alert('未查询到相关工单信息!');window.close();</script>"); } else { thisAccount = new CompanyBLL().GetCompany(thisTicket.account_id); thisUser = new sys_resource_dal().FindNoDeleteById(LoginUserId); #region 获取相关属性是否可以更改 if (ticketList.Any(_ => _.id != thisTicket.id)) { isManyTitle = true; } else { isManyTitle = false; } if (ticketList.Any(_ => _.id != thisTicket.id)) { isManydesc = true; } else { isManydesc = false; } if (ticketList.Any(_ => _.id != thisTicket.id && _.department_id != thisTicket.department_id)) { isManyDep = true; } else { isManyDep = false; } if (ticketList.Any(_ => _.id != thisTicket.id && _.issue_type_id != thisTicket.issue_type_id)) { isManyissType = true; } else { isManyissType = false; } if (ticketList.Any(_ => _.id != thisTicket.id && (_.owner_resource_id != thisTicket.owner_resource_id && _.role_id != thisTicket.role_id))) { isManyPri = true; } else { isManyPri = false; if (thisTicket.owner_resource_id != null && thisTicket.role_id != null) { thisPriRes = new sys_resource_dal().FindNoDeleteById((long)thisTicket.owner_resource_id); thisRole = new sys_role_dal().FindNoDeleteById((long)thisTicket.role_id); var resDepList = new sys_resource_department_dal().GetResDepByResAndRole((long)thisTicket.owner_resource_id, (long)thisTicket.role_id); if (resDepList != null && resDepList.Count > 0) { proResDep = resDepList[0]; } } } if (ticketList.Any(_ => _.id != thisTicket.id && _.cate_id != thisTicket.cate_id)) { isManyTicketCate = true; } else { isManyTicketCate = false; } if (ticketList.Any(_ => _.id != thisTicket.id && _.estimated_hours != thisTicket.estimated_hours)) { isManyEstHour = true; } else { isManyEstHour = false; } if (ticketList.Any(_ => _.id != thisTicket.id && _.estimated_end_time != thisTicket.estimated_end_time)) { isManyDueTime = true; } else { isManyDueTime = false; } if (ticketList.Any(_ => _.id != thisTicket.id && _.account_id != thisTicket.account_id)) { isManyAccount = true; } else { isManyAccount = false; } if (ticketList.Any(_ => _.id != thisTicket.id && _.contract_id != thisTicket.contract_id)) { isManyContract = true; } else { isManyContract = false; if (thisTicket.contract_id != null) { thisContract = new ctt_contract_dal().FindNoDeleteById((long)thisTicket.contract_id); } } if (ticketList.Any(_ => _.id != thisTicket.id && _.status_id != thisTicket.status_id)) { isManyStatus = true; } else { isManyStatus = false; } if (ticketList.Any(_ => _.id != thisTicket.id && _.service_id != thisTicket.service_id)) { isManySerivce = true; } else { isManySerivce = false; } if (ticketList.Any(_ => _.id != thisTicket.id && _.priority_type_id != thisTicket.priority_type_id)) { isManyPrio = true; } else { isManyPrio = false; } if (ticketList.Any(_ => _.id != thisTicket.id && _.cost_code_id != thisTicket.cost_code_id)) { isManyWork = true; } else { isManyWork = false; if (thisTicket.cost_code_id != null) { thisWorkType = new d_cost_code_dal().FindNoDeleteById((long)thisTicket.cost_code_id); } } if (ticketList.Any(_ => _.id != thisTicket.id && _.sub_issue_type_id != thisTicket.sub_issue_type_id)) { isManySubIssType = true; } else { isManySubIssType = false; } // protected bool isManyStatus; #endregion udfValue = udfBLL.GetUdfValue(DicEnum.UDF_CATE.TASK, thisTicket.id, udfTaskPara); if (udfTaskPara != null && udfTaskPara.Count > 0) { foreach (var udfTask in udfTaskPara) { var thisValue = ""; if (udfValue.FirstOrDefault(_ => _.id == udfTask.id) != null) { thisValue = udfValue.FirstOrDefault(_ => _.id == udfTask.id).value.ToString(); } var count = new UserDefinedFieldsBLL().GetSameValueCount(DicEnum.UDF_CATE.TASK, ticketIds, udfTask.col_name, thisValue.ToString()); if (count > 1 && (!isSingle)) { udfValue.FirstOrDefault(_ => _.id == udfTask.id).value = "多个值-保持不变"; } } } var otherResList = new sdk_task_resource_dal().GetTaskResByTaskId(thisTicket.id); if (otherResList != null && otherResList.Count > 0) { foreach (var item in otherResList) { if (item.resource_id != null && item.role_id != null) { var resDepList = new sys_resource_department_dal().GetResDepByResAndRole((long)item.resource_id, (long)item.role_id); if (resDepList != null && resDepList.Count > 0) { ticketResIds += resDepList[0].id + ","; } } } if (ticketResIds != "") { ticketResIds = ticketResIds.Substring(0, ticketResIds.Length - 1); } } } if (IsPostBack) { var stDal = new sdk_task_dal(); var ticBll = new TicketBLL(); var accBll = new CompanyBLL(); var notiResIds = new System.Text.StringBuilder(); foreach (var tic in ticketList) { var ticket = stDal.FindNoDeleteById(tic.id); if (ticket == null) { continue; } var user = UserInfoBLL.GetUserInfo(LoginUserId); #region 获取相关参数 #region 标题,描述,队列,主负责人 var pageTitle = ticket.title; if (!isManyTitle) { pageTitle = Request.Form["title"]; } var pageDesc = ticket.description; if (!isManydesc) { pageDesc = Request.Form["description"]; } var pageDepIdString = Request.Form["department_id"]; var pagePriResIdString = Request.Form["pri_res"]; if (string.IsNullOrEmpty(pageDepIdString) && string.IsNullOrEmpty(pagePriResIdString)) { Response.Write("<script>alert('队列和主负责人请填写其中一项!');</script>"); return; } long?pageDepId; if (!string.IsNullOrEmpty(pageDepIdString) && pageDepIdString != "0") { pageDepId = long.Parse(pageDepIdString); } else if (string.IsNullOrEmpty(pageDepIdString)) { pageDepId = null; } else { pageDepId = ticket.department_id; } long?pagePriResId; if (!string.IsNullOrEmpty(pagePriResIdString) && pagePriResIdString != "0") { pagePriResId = long.Parse(pagePriResIdString); } else if (string.IsNullOrEmpty(pagePriResIdString)) { pagePriResId = null; } else { pagePriResId = ticket.owner_resource_id; } #endregion #region 种类,预估时间,到期时间,合同名称 var pageCateId = ticket.cate_id; var pageCateIdString = Request.Form["ticket_cate"]; if (!string.IsNullOrEmpty(pageCateIdString) && pageCateIdString != "0") { pageCateId = int.Parse(pageCateIdString); } else if (string.IsNullOrEmpty(pagePriResIdString)) { Response.Write("<script>alert('请选择工单种类!');</script>"); return; } else { pageCateId = ticket.cate_id; } var estHours = ticket.estimated_hours; var pageEstHours = Request.Form["est_hours"]; if (!string.IsNullOrEmpty(pageEstHours) && pageEstHours.Trim() != "多个值-保持不变") { estHours = decimal.Parse(pageEstHours); } var dueTime = ticket.estimated_end_time; var pageDueTime = Request.Form["due_time"]; if (!string.IsNullOrEmpty(pageDueTime) && pageDueTime.Trim() != "多个值-保持不变") { dueTime = Tools.Date.DateHelper.ToUniversalTimeStamp(DateTime.Parse(pageDueTime)); } var contractName = ticket.contract_id; var pageContract = Request.Form["contractName"]; if (!string.IsNullOrEmpty(pageContract) && pageContract != "0") { contractName = long.Parse(pageContract); } else if (string.IsNullOrEmpty(pageContract)) { contractName = null; } #endregion #region 状态,服务包,优先级,工作类型,问题类型,子问题类型 var pageStatusId = ticket.status_id; var pageStuatusIdString = Request.Form["statusId"]; if (!string.IsNullOrEmpty(pageStuatusIdString) && pageStuatusIdString != "0") { pageStatusId = int.Parse(pageStuatusIdString); } else if (string.IsNullOrEmpty(pageStuatusIdString)) { Response.Write("<script>alert('请选择工单状态!');</script>"); return; } var pageServiceId = ticket.service_id; var pageServiceIdString = Request.Form["serviceId"]; if (!string.IsNullOrEmpty(pageServiceIdString) && pageServiceIdString != "0") { pageServiceId = int.Parse(pageServiceIdString); } else if (string.IsNullOrEmpty(pageServiceIdString)) { pageServiceId = null; } var pagePrioId = ticket.priority_type_id; var pagePrioIdString = Request.Form["priorityId"]; if (!string.IsNullOrEmpty(pagePrioIdString) && pagePrioIdString != "0") { pagePrioId = int.Parse(pagePrioIdString); } else if (string.IsNullOrEmpty(pagePrioIdString)) { Response.Write("<script>alert('请选择工单优先级!');</script>"); return; } var workTypeId = ticket.cost_code_id; var pageWorkTypeId = Request.Form["workTypeId"]; if (!string.IsNullOrEmpty(pageWorkTypeId) && pageWorkTypeId != "0") { workTypeId = long.Parse(pageWorkTypeId); } else if (string.IsNullOrEmpty(pageWorkTypeId)) { contractName = null; } var pageIssId = ticket.issue_type_id; var pageIssIdString = Request.Form["IssueType"]; if (!string.IsNullOrEmpty(pageIssIdString) && pageIssIdString != "0") { pageIssId = int.Parse(pageIssIdString); } else if (string.IsNullOrEmpty(pageIssIdString)) { Response.Write("<script>alert('请选择问题类型!');</script>"); return; } var pageSubIssId = ticket.sub_issue_type_id; var pageSubIssIdString = Request.Form["SubIssueType"]; if (!string.IsNullOrEmpty(pageSubIssIdString) && pageSubIssIdString != "0") { pageSubIssId = int.Parse(pageSubIssIdString); } else if (string.IsNullOrEmpty(pageSubIssIdString)) { Response.Write("<script>alert('请选择子问题类型!');</script>"); return; } #endregion #region 自定义字段相关 var thisUdfValue = udfBLL.GetUdfValue(DicEnum.UDF_CATE.TASK, tic.id, udfTaskPara); if (udfTaskPara != null && udfTaskPara.Count > 0) { var list = new List <UserDefinedFieldValue>(); foreach (var udf in udfTaskPara) { var new_udf = new UserDefinedFieldValue() { id = udf.id }; var thisvv = Request.Form[udf.id.ToString()]; if (udf.data_type == (int)DicEnum.UDF_DATA_TYPE.LIST) { if (thisvv == "0") { new_udf.value = thisUdfValue.FirstOrDefault(_ => _.id == udf.id) == null ? "" : thisUdfValue.FirstOrDefault(_ => _.id == udf.id).value; } else { new_udf.value = thisvv == "" ? null : thisvv; } } else { if (thisvv == "多个值-保持不变") { new_udf.value = thisUdfValue.FirstOrDefault(_ => _.id == udf.id) == null ? "" : thisUdfValue.FirstOrDefault(_ => _.id == udf.id).value; } else { new_udf.value = thisvv == "" ? null : thisvv; } } list.Add(new_udf); } udfBLL.UpdateUdfValue(DicEnum.UDF_CATE.TASK, udfTaskPara, ticket.id, list, user, DicEnum.OPER_LOG_OBJ_CATE.PROJECT_TASK); } #endregion #endregion #region 修改工单 ticket.title = pageTitle; ticket.description = pageDesc; ticket.department_id = pageDepId; long?roleId = null; if (pagePriResId != null) { var resDep = new sys_resource_department_dal().FindById((long)pagePriResId); if (resDep != null) { pagePriResId = resDep.resource_id; roleId = resDep.role_id; } else { pagePriResId = null; roleId = null; } } ticket.owner_resource_id = pagePriResId; ticket.role_id = roleId; ticket.cate_id = pageCateId; ticket.estimated_hours = estHours; ticket.estimated_end_time = dueTime; ticket.contract_id = contractName; ticket.status_id = pageStatusId; ticket.service_id = pageServiceId; ticket.priority_type_id = pagePrioId; ticket.cost_code_id = workTypeId; ticket.issue_type_id = pageIssId; ticket.sub_issue_type_id = pageSubIssId; ticBll.EditTicket(ticket, LoginUserId); #endregion #region 生成备注 ticBll.AddModifyTicketNote(ticket.id, LoginUserId); #endregion #region 单个工单时 修改其他员工相关 if (isSingle) { var OtherResId = Request.Form["OtherResId"]; ticBll.TicketResManage(ticket.id, OtherResId, LoginUserId); } #endregion #region 获取需要发送邮件的员工的Id if (CkPriRes.Checked && ticket.owner_resource_id != null) { notiResIds.Append(ticket.owner_resource_id + ","); } if (CKcreate.Checked) { notiResIds.Append(ticket.create_user_id + ","); } if (CKaccMan.Checked) { var thisAccount = accBll.GetCompany(ticket.account_id); if (thisAccount != null && thisAccount.resource_id != null) { notiResIds.Append(thisAccount.resource_id + ","); } } #endregion } #region 通知相关 if (CCMe.Checked) { notiResIds.Append(LoginUserId + ","); } var resIds = Request.Form["resIds"]; if (!string.IsNullOrEmpty(resIds)) { notiResIds.Append(resIds + ","); } var notify_id = Request.Form["notify_id"]; if (!string.IsNullOrEmpty(notify_id) && notify_id != "0") { } #endregion ClientScript.RegisterStartupScript(this.GetType(), "提示信息", "<script>alert('保存成功');self.opener.location.reload();window.close();</script>"); } } catch (Exception msg) { Response.Write("<script>alert('" + msg.Message + "!');window.close();</script>"); } }
protected bool isFromReport = false; // 是否从报表页面进行新增操作 protected void Page_Load(object sender, EventArgs e) { try { if (!IsPostBack) { PageDataBind(); } isShowWorkType = new SysSettingBLL().GetValueById(SysSettingEnum.SDK_EXPENSE_SHOW_WORK_TYPE) == "1";// SDK_EXPENSE_SHOW_WORK_TYPE var seDal = new sdk_expense_dal(); var stDal = new sdk_task_dal(); var eId = Request.QueryString["id"]; if (!string.IsNullOrEmpty(eId)) { thisExpense = seDal.FindNoDeleteById(long.Parse(eId)); if (thisExpense != null) { if (thisExpense.approve_and_post_date != null || thisExpense.approve_and_post_user_id != null) { Response.Write("<script>alert('审批提交的费用不可以更改!')window.close();</script>"); Response.End(); } if (!new TaskBLL().CanEditExpense(thisExpense.id)) { Response.Write("<script>alert('相关报表状态已经更改,不可以进行编辑!');window.close();</script>"); Response.End(); } isAdd = false; if (!IsPostBack) { if (thisExpense.cost_code_id != null) { cost_code_id.SelectedValue = thisExpense.cost_code_id.ToString(); } expense_cost_code_id.SelectedValue = thisExpense.expense_cost_code_id.ToString(); RDAddExiRep.Checked = true; isBillable.Checked = thisExpense.is_billable == 1; payment_type_id.SelectedValue = thisExpense.payment_type_id.ToString(); hasReceipt.Checked = thisExpense.has_receipt == 1; if (thisExpense.project_id != null) { rbAssProTask.Checked = true; } else { rbAssNone.Checked = true; } } if (thisExpense.project_id != null) { thisProject = new pro_project_dal().FindNoDeleteById((long)thisExpense.project_id); } if (thisExpense.project_id != null && thisExpense.task_id != null) { thisTask = new sdk_task_dal().FindNoDeleteById((long)thisExpense.task_id); } if (thisExpense.project_id == null && thisExpense.task_id != null) { thisTicket = new sdk_task_dal().FindNoDeleteById((long)thisExpense.task_id); } thisAccount = new crm_account_dal().FindNoDeleteById(thisExpense.account_id); thisExpRep = new sdk_expense_report_dal().FindNoDeleteById(thisExpense.expense_report_id); } } var task_id = Request.QueryString["task_id"]; if (!string.IsNullOrEmpty(task_id)) { thisTask = stDal.FindNoDeleteById(long.Parse(task_id)); if (thisTask != null && thisTask.project_id != null) { thisProject = new pro_project_dal().FindNoDeleteById((long)thisTask.project_id); if (thisProject != null) { thisAccount = new crm_account_dal().FindNoDeleteById(thisProject.account_id); } } } var project_id = Request.QueryString["project_id"]; if (!string.IsNullOrEmpty(project_id)) { thisProject = new pro_project_dal().FindNoDeleteById(long.Parse(project_id)); if (thisProject != null) { thisAccount = new crm_account_dal().FindNoDeleteById(thisProject.account_id); } } var report_id = Request.QueryString["report_id"]; if (!string.IsNullOrEmpty(report_id)) { thisExpRep = new sdk_expense_report_dal().FindNoDeleteById(long.Parse(report_id)); if (thisExpRep != null) { isFromReport = true; thisAccount = new CompanyBLL().GetDefaultAccount(); } } var ticket_id = Request.QueryString["ticket_id"]; if (!string.IsNullOrEmpty(ticket_id)) { thisTicket = new sdk_task_dal().FindNoDeleteById(long.Parse(ticket_id)); if (thisTicket != null) { thisAccount = new CompanyBLL().GetCompany(thisTicket.account_id); } } } catch (Exception msg) { Response.End(); } }
protected void Page_Load(object sender, EventArgs e) { try { var taskId = Request.QueryString["id"]; if (!string.IsNullOrEmpty(taskId)) { thisTicket = new sdk_task_dal().FindNoDeleteById(long.Parse(taskId)); if (thisTicket != null) { isAdd = false; thisBookMark = new IndexBLL().GetSingBook(Request.Url.LocalPath + "?id=" + taskId, LoginUserId); ticketUdfValueList = new UserDefinedFieldsBLL().GetUdfValue(DicEnum.UDF_CATE.TASK, thisTicket.id, tickUdfList); thisAccount = new CompanyBLL().GetCompany(thisTicket.account_id); if (thisTicket.contact_id != null) { thisContact = new crm_contact_dal().FindNoDeleteById((long)thisTicket.contact_id); } if (thisTicket.owner_resource_id != null && thisTicket.role_id != null) { var resDepList = new sys_resource_department_dal().GetResDepByResAndRole((long)thisTicket.owner_resource_id, (long)thisTicket.role_id); if (resDepList != null && resDepList.Count > 0) { proResDep = resDepList[0]; priRes = new sys_resource_dal().FindNoDeleteById((long)thisTicket.owner_resource_id); } } if (thisTicket.installed_product_id != null) { insPro = new crm_installed_product_dal().FindNoDeleteById((long)thisTicket.installed_product_id); } if (thisTicket.contract_id != null) { thisContract = new ctt_contract_dal().FindNoDeleteById((long)thisTicket.contract_id); } if (thisTicket.cost_code_id != null) { thisCostCode = new d_cost_code_dal().FindNoDeleteById((long)thisTicket.cost_code_id); } ticketCheckList = new sdk_task_checklist_dal().GetCheckByTask(thisTicket.id); if (ticketCheckList != null && ticketCheckList.Count > 0) { ticketCheckList = ticketCheckList.OrderBy(_ => _.sort_order).ToList(); } entryList = new sdk_work_entry_dal().GetList(thisTicket.id); var otherResList = new sdk_task_resource_dal().GetTaskResByTaskId(thisTicket.id); if (otherResList != null && otherResList.Count > 0) { ticketResList = new List <sys_resource_department>(); var srdDal = new sys_resource_department_dal(); foreach (var resRole in otherResList) { if (resRole.resource_id == null || resRole.role_id == null) { continue; } var thisResDep = srdDal.GetResDepByResAndRole((long)resRole.resource_id, (long)resRole.role_id); if (thisResDep != null && thisResDep.Count > 0) { ticketResList.Add(thisResDep[0]); } } } if (thisTicket.service_id != null) { thisService = new ivt_service_dal().FindNoDeleteById((long)thisTicket.service_id); if (thisService == null) { thisServiceBun = new ivt_service_bundle_dal().FindNoDeleteById((long)thisTicket.service_id); } } createRes = new sys_resource_dal().FindNoDeleteById(thisTicket.create_user_id); var slaValue = new sdk_task_dal().GetSlaTime(thisTicket); string slaTimeValue = ""; if (slaValue != null) { slaTimeValue = slaValue.ToString(); } if (!string.IsNullOrEmpty(slaTimeValue)) { if (slaTimeValue.Substring(0, 1) == "{") { slaDic = new EMT.Tools.Serialize().JsonToDictionary(slaTimeValue); } } var actList = new d_general_dal().GetGeneralByTableId((int)GeneralTableEnum.ACTION_TYPE); if (actList != null && actList.Count > 0) { ticketNoteTypeList = actList.Where(_ => _.ext2 == ((int)DicEnum.ACTIVITY_CATE.TASK_NOTE).ToString()).ToList(); } ticketOther = new sdk_task_other_dal().GetTicketOther(thisTicket.id); ticketOtherList = new sdk_task_other_person_dal().GetTicketOther(thisTicket.id); } } var ticketIds = Request.QueryString["ids"]; if (!string.IsNullOrEmpty(ticketIds)) { pageTicketList = new sdk_task_dal().GetTicketByIds(ticketIds); } if (thisTicket == null) { Response.Write("<script>alert('未查询到该工单信息!');window.close();</script>"); return; } var history = new sys_windows_history() { title = "工单:" + thisTicket.no + ":" + thisTicket.title, url = Request.RawUrl, }; new IndexBLL().BrowseHistory(history, LoginUserId); } catch (Exception msg) { Response.Write("<script>alert('" + msg.Message + "');window.close();</script>"); } }
protected void save_Click(object sender, EventArgs e) { var stDal = new sdk_task_dal(); var ids = Request.QueryString["taskIds"]; var thisTaskList = stDal.GetTaskByIds(ids, $" and type_id in ({(int)DicEnum.TASK_TYPE.PROJECT_TASK},{(int)DicEnum.TASK_TYPE.PROJECT_ISSUE})"); if (thisTaskList != null && thisTaskList.Count > 0) { var pageTitle = Request.Form["title"]; var pageStatu = Request.Form["status_id"]; var pagePriority = Request.Form["priority"]; var displayIsChange = noChange.Checked; var pageEstimated_hours = Request.Form["estimated_hours"]; var pageDepa = Request.Form["department_id"]; var pageRes = Request.Form["owner_resource_id"]; var user = UserInfoBLL.GetUserInfo(GetLoginUserId()); var ctaDal = new v_task_all_dal(); foreach (var thisTask in thisTaskList) { if (pageTitle != "多个值-保持不变") { if (!string.IsNullOrEmpty(pageTitle)) { thisTask.title = pageTitle; } } if (pageStatu != "0") { thisTask.status_id = int.Parse(pageStatu); } if (!string.IsNullOrEmpty(pagePriority)) { thisTask.priority = int.Parse(pagePriority); } if (!displayIsChange) // 代表页面上选择进行更改 { if (DisplayInCapNone.Checked) { thisTask.is_visible_in_client_portal = 0; } else { thisTask.is_visible_in_client_portal = 1; if (DisplayInCapYes.Checked) { thisTask.can_client_portal_user_complete_task = 1; } else if (DisplayInCapYesNoComplete.Checked) { thisTask.can_client_portal_user_complete_task = 0; } } } if (!typeNoChange.Checked) { if (TaskTypeFixedWork.Checked) { thisTask.estimated_type_id = (int)DicEnum.TIME_ENTRY_METHOD_TYPE.FIXWORK; } else if (TaskTypeFixedDuration.Checked) { thisTask.estimated_type_id = (int)DicEnum.TIME_ENTRY_METHOD_TYPE.FIXDURATION; } } if (!string.IsNullOrEmpty(pageEstimated_hours)) { thisTask.estimated_hours = decimal.Parse(pageEstimated_hours); var vTask = ctaDal.FindById(thisTask.id); if (vTask != null) { thisTask.projected_variance = (vTask.worked_hours == null ? 0 : (decimal)vTask.worked_hours) - (thisTask.estimated_hours + (vTask.change_Order_Hours == null ? 0 : (decimal)vTask.change_Order_Hours)) + (vTask.remain_hours == null ? 0 : (decimal)vTask.remain_hours); } } if (pageDepa != "0") { if (!string.IsNullOrEmpty(pageDepa)) { thisTask.department_id = int.Parse(pageDepa); } else { thisTask.department_id = null; } } if (pageRes != "0") { if (!string.IsNullOrEmpty(pageRes)) { thisTask.owner_resource_id = long.Parse(pageRes); } else { thisTask.owner_resource_id = null; } } OperLogBLL.OperLogUpdate <sdk_task>(thisTask, stDal.FindNoDeleteById(thisTask.id), thisTask.id, GetLoginUserId(), OPER_LOG_OBJ_CATE.PROJECT_TASK, "修改task"); stDal.Update(thisTask); var thisUdfValue = udfBLL.GetUdfValue(UDF_CATE.TASK, thisTask.id, udfTaskPara); if (udfTaskPara != null && udfTaskPara.Count > 0) // 首先判断是否有自定义信息 { var list = new List <UserDefinedFieldValue>(); foreach (var udf in udfTaskPara) // 循环添加 { var new_udf = new UserDefinedFieldValue(); // if(udf.data_type != (int)EMT.DoneNOW.DTO.DicEnum.UDF_DATA_TYPE.LIST) // todo,根据类型去取值 new_udf.id = udf.id; var thisvv = Request.Form[udf.id.ToString()]; if (thisvv == "多个值-保持不变") { new_udf.value = thisUdfValue.FirstOrDefault(_ => _.id == udf.id).value; } else { new_udf.value = thisvv == "" ? null : thisvv; } list.Add(new_udf); } udfBLL.UpdateUdfValue(UDF_CATE.TASK, udfTaskPara, thisTask.id, list, user, OPER_LOG_OBJ_CATE.PROJECT_TASK); } } } ClientScript.RegisterStartupScript(this.GetType(), "提示信息", "<script>alert('保存成功!');window.close();self.opener.location.reload();</script>"); }
/// <summary> /// 检查员工的可用性 /// </summary> private void CheckResAvailability(HttpContext context) { // 在同一项目下校验 try { var project_id = context.Request.QueryString["project_id"]; var resId = context.Request.QueryString["res_id"]; var startTime = context.Request.QueryString["startTime"]; // 开始时间 var endTime = context.Request.QueryString["endTime"]; var days = context.Request.QueryString["days"]; // 持续时间 var thisTaskRpeHour = context.Request.QueryString["thisTaskRpeHour"]; // 这个员工在这个任务中的日工作时间 if (!string.IsNullOrEmpty(project_id) && !string.IsNullOrEmpty(resId) && !string.IsNullOrEmpty(startTime) && !string.IsNullOrEmpty(endTime) && !string.IsNullOrEmpty(thisTaskRpeHour)) { var project = new pro_project_dal().FindNoDeleteById(long.Parse(project_id)); var taskList = new sdk_task_dal().GetListByProAndRes(long.Parse(project_id), long.Parse(resId)); int readDays = 0; var startDate = DateTime.Parse(startTime); var endDate = DateTime.Parse(endTime); if (!string.IsNullOrEmpty(days)) { readDays = int.Parse(days); endDate = new BLL.TaskBLL().RetrunMaxTime(project.id, startDate, readDays); } else { readDays = new BLL.TaskBLL().GetDayByTime(Tools.Date.DateHelper.ToUniversalTimeStamp(startDate), Tools.Date.DateHelper.ToUniversalTimeStamp(endDate), long.Parse(project_id)); } if (readDays != 0) { // 员工在这个项目中应该工作的时长 var totalHours = readDays * (decimal)project.resource_daily_hours; if (taskList != null && taskList.Count > 0) { var startDateLong = Tools.Date.DateHelper.ToUniversalTimeStamp(startDate); var thisList = taskList.Where(_ => (_.type_id == (int)DTO.DicEnum.TASK_TYPE.PROJECT_ISSUE || _.type_id == (int)DTO.DicEnum.TASK_TYPE.PROJECT_TASK) && (_.estimated_begin_time <Tools.Date.DateHelper.ToUniversalTimeStamp(endDate) && _.estimated_end_time> startDateLong)).ToList(); if (thisList != null && thisList.Count > 0) { // 员工在这些天中已经分配的时长 var taskTotalHours = thisList.Sum(_ => { var thisDays = (decimal)_.hours_per_resource * GetDiffDays(startDate, endDate, Tools.Date.DateHelper.ConvertStringToDateTime((long)_.estimated_begin_time), Tools.Date.DateHelper.ConvertStringToDateTime((long)_.estimated_end_time), project.id); if (thisDays == 0 || _.hours_per_resource == null) { return(0); } else { // 计算员工平均工作时长 TimeSpan ts1 = new TimeSpan(Tools.Date.DateHelper.ConvertStringToDateTime((long)_.estimated_begin_time).Ticks); TimeSpan ts2 = new TimeSpan(Tools.Date.DateHelper.ConvertStringToDateTime((long)_.estimated_end_time).Ticks); var allDays = ts1.Subtract(ts2).Duration().Days; return(((decimal)_.hours_per_resource / allDays) * thisDays); } }); // 员工的剩余时长 var shengyuHours = totalHours - taskTotalHours; var preHours = decimal.Parse(thisTaskRpeHour); var result = shengyuHours > preHours; context.Response.Write(new { result = result, reason = shengyuHours.ToString("#0.00") }); } } } //pageTask.estimated_duration = ts.Days + 1; } } catch (Exception) { } }
protected void Page_Load(object sender, EventArgs e) { thisUser = new sys_resource_dal().FindNoDeleteById(GetLoginUserId()); var caDal = new com_activity_dal(); var stDal = new sdk_task_dal(); var ppDal = new pro_project_dal(); var accDal = new crm_account_dal(); var ccDal = new ctt_contract_dal(); var id = Request.QueryString["id"]; if (!string.IsNullOrEmpty(id)) { thisNote = caDal.FindNoDeleteById(long.Parse(id)); if (thisNote != null) { isAdd = false; thisNoteAtt = new com_attachment_dal().GetAttListByOid(thisNote.id); thisTicket = stDal.FindNoDeleteById(thisNote.object_id); if (thisTicket != null) { object_id = thisTicket.id; } else { thisProject = ppDal.FindNoDeleteById(thisNote.object_id); if (thisProject != null) { object_id = thisProject.id; thisAccount = accDal.FindNoDeleteById(thisProject.account_id); } else { thisContract = ccDal.FindNoDeleteById(thisNote.object_id); if (thisContract != null) { object_id = thisContract.id; thisAccount = accDal.FindNoDeleteById(thisContract.account_id); } } } } } var ticketId = Request.QueryString["ticket_id"]; if (!string.IsNullOrEmpty(ticketId)) { thisTicket = stDal.FindNoDeleteById(long.Parse(ticketId)); } if (thisTicket != null) { object_id = thisTicket.id; if (thisTicket.type_id == (int)DicEnum.TASK_TYPE.PROJECT_PHASE) { // isPhase = true; } if (thisTicket.contact_id != null) { thisContact = new crm_contact_dal().FindNoDeleteById((long)thisTicket.contact_id); } thisAccount = accDal.FindNoDeleteById(thisTicket.account_id); ticket_creator = new sys_resource_dal().FindNoDeleteById(thisTicket.create_user_id); if (!IsPostBack) { //status_id.SelectedValue = thisTicket.status_id.ToString(); } if (thisTicket.project_id != null) { thisProject = ppDal.FindNoDeleteById((long)thisTicket.project_id); if (thisProject != null && thisAccount != null) { thisAccount = accDal.FindNoDeleteById(thisProject.account_id); } } } if (thisAccount == null) { Response.End(); } else { if (thisAccount.resource_id != null) { thisAccManger = new sys_resource_dal().FindNoDeleteById((long)thisAccount.resource_id); } } if (!IsPostBack) { publish_type_id.DataTextField = "name"; publish_type_id.DataValueField = "id"; var pushList = new d_general_dal().GetGeneralByTableId((int)GeneralTableEnum.NOTE_PUBLISH_TYPE); if (pushList != null && pushList.Count > 0) { pushList = pushList.Where(_ => _.ext2 == ((int)DicEnum.ACTIVITY_CATE.TICKET_NOTE).ToString()).ToList(); } publish_type_id.DataSource = pushList; publish_type_id.DataBind(); status_id.DataTextField = "show"; status_id.DataValueField = "val"; status_id.DataSource = dic.FirstOrDefault(_ => _.Key == "ticket_status").Value; status_id.DataBind(); if (thisTicket != null) { status_id.SelectedValue = thisTicket.status_id.ToString(); } action_type_id.DataTextField = "name"; action_type_id.DataValueField = "id"; var actList = new d_general_dal().GetGeneralByTableId((int)GeneralTableEnum.ACTION_TYPE); actList = actList.Where(_ => _.ext2 == ((int)DicEnum.ACTIVITY_CATE.TASK_NOTE).ToString()).ToList(); action_type_id.DataSource = actList; action_type_id.DataBind(); if (thisNote != null) { if (!IsPostBack) { if (thisNote.publish_type_id != null) { publish_type_id.SelectedValue = thisNote.publish_type_id.ToString(); } action_type_id.SelectedValue = thisNote.action_type_id.ToString(); } } //else //{ // if (isContract) // { // publish_type_id.SelectedValue = ((int)DicEnum.NOTE_PUBLISH_TYPE.CONTRACT_INTERNA_USER).ToString(); // } //} var tempList = new sys_notify_tmpl_dal().GetTempByEvent(DicEnum.NOTIFY_EVENT.NONE); notify_id.DataTextField = "name"; notify_id.DataValueField = "id"; notify_id.DataSource = tempList; notify_id.DataBind(); } }
/// <summary> /// 新增附件 /// </summary> /// <param name="objType">对象类型</param> /// <param name="objId">对象id</param> /// <param name="typeId">附件类型</param> /// <param name="title">附件名</param> /// <param name="attLink">附件内容</param> /// <param name="fileName">上传的文件名</param> /// <param name="fileSaveName">文件保存服务器的名称</param> /// <param name="contentType">文件类型</param> /// <param name="size">文件大小</param> /// <param name="userId"></param> /// <returns></returns> public bool AddAttachment(int objType, long objId, int typeId, string title, string attLink, string fileName, string fileSaveName, string contentType, int size, long userId, string pubTypeId = "") { com_attachment att = new com_attachment(); att.object_type_id = objType; att.object_id = objId; // 备注和附件的下级备注和附件不能再添加附件 if (objType == (int)DicEnum.ATTACHMENT_OBJECT_TYPE.NOTES) { var note = new com_activity_dal().FindById(objId); if (note.object_type_id == (int)DicEnum.OBJECT_TYPE.NOTES) { att.object_type_id = (int)DicEnum.ATTACHMENT_OBJECT_TYPE.NOTES; att.object_id = note.object_id; } else if (note.object_type_id == (int)DicEnum.OBJECT_TYPE.ATTACHMENT) { att.object_type_id = (int)DicEnum.ATTACHMENT_OBJECT_TYPE.ATTACHMENT; att.object_id = note.object_id; } } else if (objType == (int)DicEnum.ATTACHMENT_OBJECT_TYPE.ATTACHMENT) { var attachment = dal.FindById(objId); if (attachment.object_type_id == (int)DicEnum.ATTACHMENT_OBJECT_TYPE.NOTES) { att.object_type_id = (int)DicEnum.ATTACHMENT_OBJECT_TYPE.NOTES; att.object_id = attachment.object_id; } else if (attachment.object_type_id == (int)DicEnum.ATTACHMENT_OBJECT_TYPE.ATTACHMENT) { att.object_type_id = (int)DicEnum.ATTACHMENT_OBJECT_TYPE.ATTACHMENT; att.object_id = attachment.object_id; } } else if (objType == (int)DicEnum.ATTACHMENT_OBJECT_TYPE.LABOUR) { var labour = new sdk_work_entry_dal().FindById(objId); if (labour.parent_id != null) { att.object_type_id = (int)DicEnum.ATTACHMENT_OBJECT_TYPE.LABOUR; att.object_id = (long)labour.parent_id; } else if (labour.parent_attachment_id != null) { att.object_type_id = (int)DicEnum.ATTACHMENT_OBJECT_TYPE.ATTACHMENT; att.object_id = (long)labour.parent_attachment_id; } else if (labour.parent_note_id != null) { att.object_type_id = (int)DicEnum.ATTACHMENT_OBJECT_TYPE.NOTES; att.object_id = (long)labour.parent_note_id; } } if (att.object_type_id == (int)DicEnum.ATTACHMENT_OBJECT_TYPE.ATTACHMENT) { var attachment = dal.FindById(att.object_id); att.account_id = attachment.account_id; att.parent_id = attachment.id; } else if (att.object_type_id == (int)DicEnum.ATTACHMENT_OBJECT_TYPE.NOTES) { var note = new com_activity_dal().FindById(att.object_id); att.account_id = note.account_id; } else if (att.object_type_id == (int)DicEnum.ATTACHMENT_OBJECT_TYPE.OPPORTUNITY) { var opp = new crm_opportunity_dal().FindById(att.object_id); att.account_id = opp.account_id; } else if (att.object_type_id == (int)DicEnum.ATTACHMENT_OBJECT_TYPE.SALES_ORDER) { var so = new crm_sales_order_dal().FindById(att.object_id); var opp = new crm_opportunity_dal().FindById(so.opportunity_id); att.account_id = opp.account_id; } else if (att.object_type_id == (int)DicEnum.ATTACHMENT_OBJECT_TYPE.CONTRACT) { var contract = new ctt_contract_dal().FindById(att.object_id); att.account_id = contract.account_id; } else if (att.object_type_id == (int)DicEnum.ATTACHMENT_OBJECT_TYPE.COMPANY) { att.account_id = att.object_id; } else if (att.object_type_id == (int)DicEnum.ATTACHMENT_OBJECT_TYPE.PROJECT) { var project = new pro_project_dal().FindNoDeleteById(att.object_id); att.account_id = project.account_id; } else if (att.object_type_id == (int)DicEnum.ATTACHMENT_OBJECT_TYPE.EXPENSE_REPORT) { // 从报表添加附件 - 默认使用声联(oid=0) 的客户 var defaultAccount = new CompanyBLL().GetDefaultAccount(); att.account_id = defaultAccount.id; } else if (att.object_type_id == (int)DicEnum.ATTACHMENT_OBJECT_TYPE.TASK) { var task = new sdk_task_dal().FindNoDeleteById(att.object_id); if (task != null) { att.account_id = task.account_id; #region 更新客户最后活动时间 crm_account thisAccount = new CompanyBLL().GetCompany(task.account_id); if (thisAccount != null) { thisAccount.last_activity_time = Tools.Date.DateHelper.ToUniversalTimeStamp(DateTime.Now); new CompanyBLL().EditAccount(thisAccount, userId); } #endregion } if (!string.IsNullOrEmpty(pubTypeId)) { att.publish_type_id = int.Parse(pubTypeId); } } else if (att.object_type_id == (int)DicEnum.ATTACHMENT_OBJECT_TYPE.LABOUR) { var labour = new sdk_work_entry_dal().FindNoDeleteById(att.object_id); if (labour == null) { return(false); } var ticket = new sdk_task_dal().FindNoDeleteById(labour.task_id); if (ticket == null) { return(false); } att.account_id = ticket.account_id; } else if (att.object_type_id == (int)DicEnum.ATTACHMENT_OBJECT_TYPE.KNOWLEDGE) { var thisArt = new sdk_kb_article_dal().FindNoDeleteById(att.object_id); if (thisArt == null) { return(false); } att.account_id = thisArt.account_id; } else if (att.object_type_id == (int)DicEnum.ATTACHMENT_OBJECT_TYPE.RESOURCE) { } else if (att.object_type_id == (int)DicEnum.ATTACHMENT_OBJECT_TYPE.CONFIGITEM) { crm_installed_product insPro = new crm_installed_product_dal().FindNoDeleteById(att.object_id); if (insPro == null) { return(false); } att.account_id = insPro.account_id; } else { return(false); } att.id = dal.GetNextIdCom(); att.create_time = Tools.Date.DateHelper.ToUniversalTimeStamp(); att.create_user_id = userId; att.update_time = att.create_time; att.update_user_id = userId; att.title = title; att.type_id = typeId; if (typeId == (int)DicEnum.ATTACHMENT_TYPE.FILE_LINK || typeId == (int)DicEnum.ATTACHMENT_TYPE.FOLDER_LINK) { att.uncpath = attLink; att.filename = @"file://" + attLink; } else if (typeId == (int)DicEnum.ATTACHMENT_TYPE.URL) { if (attLink.IndexOf(@"http://") == 0) { attLink = attLink.Remove(0, 7); att.urlpath = attLink; att.filename = @"http://" + attLink; } else if (attLink.IndexOf(@"https://") == 0) { attLink = attLink.Remove(0, 8); att.urlpath = attLink; att.filename = @"https://" + attLink; } else { att.urlpath = attLink; att.filename = @"http://" + attLink; } } else if (typeId == (int)DicEnum.ATTACHMENT_TYPE.ATTACHMENT) { att.href = fileSaveName; att.filename = fileName; att.sizeinbyte = size; att.content_type = contentType; } else { return(false); } dal.Insert(att); OperLogBLL.OperLogAdd <com_attachment>(att, att.id, userId, DicEnum.OPER_LOG_OBJ_CATE.ATTACHMENT, "新增附件"); return(true); }
/// <summary> /// 配送 /// </summary> /// <param name="costPdtIds">成本产品id</param> /// <param name="isEditSaleOrder">是否修改销售订单状态</param> /// <param name="userId"></param> /// <returns></returns> public string PurchaseShip(string costPdtIds, bool isEditSaleOrder, long userId) { ctt_contract_cost_product_dal cstPdtDal = new ctt_contract_cost_product_dal(); var pdtList = cstPdtDal.FindListBySql <ctt_contract_cost_product>($"select * from ctt_contract_cost_product where id in({costPdtIds})"); if (pdtList == null || pdtList.Count == 0) { return(""); } foreach (var pdt in pdtList) { if (pdt.status_id != (int)DicEnum.CONTRACT_COST_PRODUCT_STATUS.PENDING_DISTRIBUTION) { return("状态为“待配送”的成本产品才能配送"); } } ctt_contract_cost_dal costDal = new ctt_contract_cost_dal(); ivt_transfer_dal tsfDal = new ivt_transfer_dal(); ctt_contract_dal cttDal = new ctt_contract_dal(); pro_project_dal proDal = new pro_project_dal(); sdk_task_dal tskDal = new sdk_task_dal(); ivt_warehouse_product_sn_dal lctPdtSnDal = new ivt_warehouse_product_sn_dal(); ivt_transfer_sn_dal tsfSnDal = new ivt_transfer_sn_dal(); foreach (var pdt in pdtList) { var pdtOld = cstPdtDal.FindById(pdt.id); pdt.status_id = (int)DicEnum.CONTRACT_COST_PRODUCT_STATUS.DISTRIBUTION; pdt.update_time = Tools.Date.DateHelper.ToUniversalTimeStamp(); pdt.shipping_time = pdt.update_time; pdt.update_user_id = userId; cstPdtDal.Update(pdt); OperLogBLL.OperLogUpdate(OperLogBLL.CompareValue <ctt_contract_cost_product>(pdtOld, pdt), pdt.id, userId, DicEnum.OPER_LOG_OBJ_CATE.CTT_CONTRACT_COST_PRODUCT, "成本产品配送"); var cost = costDal.FindById(pdt.contract_cost_id); var cnt = dal.FindSignleBySql <int>($"select count(0) from ctt_contract_cost_product where contract_cost_id={pdt.contract_cost_id} and status_id<>{(int)DicEnum.CONTRACT_COST_PRODUCT_STATUS.DISTRIBUTION} and delete_time=0"); if (cnt == 0) // 产品全部已配送,修改成本状态 { var costOld = costDal.FindById(pdt.contract_cost_id); cost.status_id = (int)DicEnum.COST_STATUS.ALREADY_DELIVERED; cost.update_time = Tools.Date.DateHelper.ToUniversalTimeStamp(); cost.update_user_id = userId; costDal.Update(cost); OperLogBLL.OperLogUpdate(OperLogBLL.CompareValue <ctt_contract_cost>(costOld, cost), cost.id, userId, DicEnum.OPER_LOG_OBJ_CATE.CONTRACT_COST, "修改成本状态已配送"); } ivt_transfer transfer = new ivt_transfer(); transfer.id = tsfDal.GetNextIdCom(); transfer.create_time = Tools.Date.DateHelper.ToUniversalTimeStamp(); transfer.create_user_id = userId; transfer.update_time = transfer.create_time; transfer.update_user_id = userId; transfer.product_id = (long)cost.product_id; transfer.type_id = (int)DicEnum.INVENTORY_TRANSFER_TYPE.PROJECT; transfer.from_warehouse_id = (long)pdt.warehouse_id; transfer.quantity = pdt.quantity; if (cost.contract_id != null) { transfer.to_account_id = cttDal.FindById((long)cost.contract_id).account_id; } else if (cost.project_id != null) { transfer.to_account_id = proDal.FindById((long)cost.project_id).account_id; } else if (cost.task_id != null) { transfer.to_account_id = tskDal.FindById((long)cost.task_id).account_id; } transfer.to_contract_id = cost.contract_id; transfer.to_project_id = cost.project_id; transfer.to_task_id = cost.task_id; tsfDal.Insert(transfer); OperLogBLL.OperLogAdd <ivt_transfer>(transfer, transfer.id, userId, DicEnum.OPER_LOG_OBJ_CATE.INVENTORY_ITEM_TRANSFER, "产品配送转移库存"); // 保存库存数修改 var lctPdt = dal.FindSignleBySql <ivt_warehouse_product>($"select * from ivt_warehouse_product where product_id={cost.product_id} and warehouse_id={(long)pdt.warehouse_id} and delete_time=0"); if (lctPdt != null) { var lctPdtOld = dal.FindById(lctPdt.id); lctPdt.quantity = lctPdt.quantity - pdt.quantity; lctPdt.update_time = Tools.Date.DateHelper.ToUniversalTimeStamp(); lctPdt.update_user_id = userId; dal.Update(lctPdt); OperLogBLL.OperLogUpdate(OperLogBLL.CompareValue <ivt_warehouse_product>(lctPdtOld, lctPdt), lctPdt.id, userId, DicEnum.OPER_LOG_OBJ_CATE.INVENTORY_ITEM, "修改库存产品库存数"); var sns = costDal.FindListBySql <string>($"select sn from ctt_contract_cost_product_sn where contract_cost_product_id={pdt.id} and delete_time=0"); if (sns == null || sns.Count == 0) { continue; } foreach (var sn in sns) { var lctPdtSn = lctPdtSnDal.FindSignleBySql <ivt_warehouse_product_sn>($"select * from ivt_warehouse_product_sn where sn='{sn}' and warehouse_product_id={lctPdt.id}"); lctPdtSn.delete_time = Tools.Date.DateHelper.ToUniversalTimeStamp(); lctPdtSn.delete_user_id = userId; lctPdtSnDal.Update(lctPdtSn); OperLogBLL.OperLogDelete <ivt_warehouse_product_sn>(lctPdtSn, lctPdtSn.id, userId, DicEnum.OPER_LOG_OBJ_CATE.INVENTORY_ITEM_SN, "配送产品删除库存产品串号"); ivt_transfer_sn tsfSn = new ivt_transfer_sn(); tsfSn.id = tsfSnDal.GetNextIdCom(); tsfSn.sn = sn; tsfSn.transfer_id = transfer.id; tsfSn.create_time = Tools.Date.DateHelper.ToUniversalTimeStamp(); tsfSn.create_user_id = userId; tsfSn.update_time = tsfSn.create_time; tsfSn.update_user_id = userId; tsfSnDal.Insert(tsfSn); OperLogBLL.OperLogAdd <ivt_transfer_sn>(tsfSn, tsfSn.id, userId, DicEnum.OPER_LOG_OBJ_CATE.INVENTORY_ITEM_TRANSFER_SN, "配送产品新增转移产品串号"); } } } return(""); }
protected void Page_Load(object sender, EventArgs e) { // 批量修改 // 1。多个任务 2.单个任务 try { var stDal = new sdk_task_dal(); var ppDal = new pro_project_dal(); var ids = Request.QueryString["taskIds"]; if (!string.IsNullOrEmpty(ids)) { idList = ids.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); if (idList.Count() == 1) { var thisTask = stDal.FindNoDeleteById(long.Parse(idList[0])); if (thisTask != null) { if (!IsPostBack) { thisProject = ppDal.FindNoDeleteById((long)thisTask.project_id); titleValue = thisTask.title; statuValue = thisTask.status_id; priorityValue = thisTask.priority; estHoursValue = thisTask.estimated_hours; depValue = thisTask.department_id; // workTypeValue = thisTask. priResValue = thisTask.owner_resource_id; if (thisTask.is_visible_in_client_portal == 1) { if (thisTask.can_client_portal_user_complete_task == 1) { DisplayInCapYes.Checked = true; } else { DisplayInCapYesNoComplete.Checked = true; } } else { DisplayInCapNone.Checked = true; } } udfValue = new UserDefinedFieldsBLL().GetUdfValue(UDF_CATE.TASK, thisTask.id, udfTaskPara); taskList.Add(thisTask); } } else if (idList.Count() > 1) { taskList = stDal.GetTaskByIds(ids, $" and type_id in ({(int)DicEnum.TASK_TYPE.PROJECT_TASK},{(int)DicEnum.TASK_TYPE.PROJECT_ISSUE})"); if (taskList != null && taskList.Count > 0) { thisProject = ppDal.FindNoDeleteById((long)taskList[0].project_id); var firstTask = taskList[0]; taskList.Remove(firstTask); if (!IsPostBack) { udfValue = udfBLL.GetUdfValue(UDF_CATE.TASK, firstTask.id, udfTaskPara); if (udfTaskPara != null && udfTaskPara.Count > 0) { foreach (var udfTask in udfTaskPara) { var thisValue = ""; if (udfValue.FirstOrDefault(_ => _.id == udfTask.id) != null) { thisValue = udfValue.FirstOrDefault(_ => _.id == udfTask.id).value.ToString(); } var count = udfBLL.GetSameValueCount(UDF_CATE.TASK, ids, udfTask.col_name, thisValue.ToString()); if (count > 1) { udfValue.FirstOrDefault(_ => _.id == udfTask.id).value = "多个值-保持不变"; } else { } } } if (taskList.Any(_ => _.title != firstTask.title)) { titleValue = "多个值-保持不变"; } else { titleValue = firstTask.title; } if (taskList.Any(_ => _.status_id != firstTask.status_id)) { statuValue = 0; } else { statuValue = firstTask.status_id; } if (taskList.Any(_ => _.priority != firstTask.priority)) { priorityValue = null; } else { priorityValue = firstTask.priority; } #region 在页面上的显示设置 if (firstTask.is_visible_in_client_portal == 1) { if (taskList.Any(_ => _.is_visible_in_client_portal != firstTask.is_visible_in_client_portal)) { displayWayValue = "1"; } else { if (firstTask.can_client_portal_user_complete_task == 1) { if (taskList.Any(_ => _.can_client_portal_user_complete_task != firstTask.can_client_portal_user_complete_task)) { displayWayValue = "1"; } else { DisplayInCapYes.Checked = true; } } else { if (taskList.Any(_ => _.can_client_portal_user_complete_task != firstTask.can_client_portal_user_complete_task)) { displayWayValue = "1"; } else { DisplayInCapYesNoComplete.Checked = true; } } } } else { if (taskList.Any(_ => _.is_visible_in_client_portal != firstTask.is_visible_in_client_portal)) { displayWayValue = "1"; } else { DisplayInCapNone.Checked = true; } } if (!string.IsNullOrEmpty(displayWayValue)) { noChange.Checked = true; } #endregion #region 固定工作,固定时间的设置 if (taskList.Any(_ => _.estimated_type_id != firstTask.estimated_type_id)) { fixTypeValue = "1"; typeNoChange.Checked = true; } else { if (firstTask.estimated_type_id == (int)DicEnum.TIME_ENTRY_METHOD_TYPE.FIXWORK) { TaskTypeFixedWork.Checked = true; } else if (firstTask.estimated_type_id == (int)DicEnum.TIME_ENTRY_METHOD_TYPE.FIXDURATION) { TaskTypeFixedDuration.Checked = true; } } #endregion if (taskList.Any(_ => _.estimated_hours != firstTask.estimated_hours)) { estHoursValue = null; } else { estHoursValue = firstTask.estimated_hours; } if (taskList.Any(_ => _.department_id != firstTask.department_id)) { depValue = null; } else { depValue = firstTask.department_id; } if (taskList.Any(_ => _.owner_resource_id != firstTask.owner_resource_id)) { priResValue = 0; } else { priResValue = firstTask.owner_resource_id; } } } } if (!IsPostBack) { ThisPageDataBind(); } if (statuValue == 0) { status_id.Items.Insert(0, new ListItem() { Value = "0", Text = "多个选择-保持不变", Selected = true }); } else { status_id.SelectedValue = statuValue.ToString(); } if (depValue == null) { department_id.ClearSelection(); department_id.Items.Insert(0, new ListItem() { Value = "0", Text = "多个选择-保持不变", Selected = true }); } else { department_id.ClearSelection(); department_id.SelectedValue = depValue.ToString(); } } else { Response.End(); } } catch (Exception) { Response.End(); } }
/// <summary> /// 取消配送 /// </summary> /// <param name="costPdtIds">成本产品id</param> /// <param name="userId"></param> /// <returns></returns> public string PurchaseUnShip(string costPdtIds, long userId) { ctt_contract_cost_product_dal cstPdtDal = new ctt_contract_cost_product_dal(); var pdtList = cstPdtDal.FindListBySql <ctt_contract_cost_product>($"select * from ctt_contract_cost_product where id in({costPdtIds})"); if (pdtList == null || pdtList.Count == 0) { return(""); } ctt_contract_cost_dal costDal = new ctt_contract_cost_dal(); ivt_transfer_dal tsfDal = new ivt_transfer_dal(); ctt_contract_dal cttDal = new ctt_contract_dal(); pro_project_dal proDal = new pro_project_dal(); sdk_task_dal tskDal = new sdk_task_dal(); ivt_warehouse_product_sn_dal lctPdtSnDal = new ivt_warehouse_product_sn_dal(); ivt_transfer_sn_dal tsfSnDal = new ivt_transfer_sn_dal(); foreach (var pdt in pdtList) { // 修改成本产品状态 var pdtOld = cstPdtDal.FindById(pdt.id); pdt.status_id = (int)DicEnum.CONTRACT_COST_PRODUCT_STATUS.PENDING_DISTRIBUTION; pdt.update_time = Tools.Date.DateHelper.ToUniversalTimeStamp(); pdt.shipping_time = null; pdt.update_user_id = userId; cstPdtDal.Update(pdt); OperLogBLL.OperLogUpdate(OperLogBLL.CompareValue <ctt_contract_cost_product>(pdtOld, pdt), pdt.id, userId, DicEnum.OPER_LOG_OBJ_CATE.CTT_CONTRACT_COST_PRODUCT, "成本产品配送"); // 修改成本状态 var cost = costDal.FindById(pdt.contract_cost_id); if (cost.status_id == (int)DicEnum.COST_STATUS.ALREADY_DELIVERED) { var costOld = costDal.FindById(pdt.contract_cost_id); cost.status_id = (int)DicEnum.COST_STATUS.PENDING_DELIVERY; cost.update_time = Tools.Date.DateHelper.ToUniversalTimeStamp(); cost.update_user_id = userId; costDal.Update(cost); OperLogBLL.OperLogUpdate(OperLogBLL.CompareValue <ctt_contract_cost>(costOld, cost), cost.id, userId, DicEnum.OPER_LOG_OBJ_CATE.CONTRACT_COST, "取消配送修改成本状态"); } // 新建库存转移信息 ivt_transfer tsf = new ivt_transfer(); tsf.id = tsfDal.GetNextIdCom(); tsf.update_time = Tools.Date.DateHelper.ToUniversalTimeStamp(); tsf.update_user_id = userId; tsf.create_time = tsf.update_time; tsf.create_user_id = userId; tsf.type_id = (int)DicEnum.INVENTORY_TRANSFER_TYPE.PROJECT; tsf.product_id = (long)cost.product_id; tsf.quantity = 0 - pdt.quantity; if (cost.contract_id != null) { tsf.to_account_id = cttDal.FindById((long)cost.contract_id).account_id; } else if (cost.project_id != null) { tsf.to_account_id = proDal.FindById((long)cost.project_id).account_id; } else if (cost.task_id != null) { tsf.to_account_id = tskDal.FindById((long)cost.task_id).account_id; } tsf.to_contract_id = cost.contract_id; tsf.to_project_id = cost.project_id; tsf.to_task_id = cost.task_id; tsf.from_warehouse_id = (long)pdt.warehouse_id; tsfDal.Insert(tsf); OperLogBLL.OperLogAdd <ivt_transfer>(tsf, tsf.id, userId, DicEnum.OPER_LOG_OBJ_CATE.INVENTORY_ITEM_TRANSFER, "取消配送新建库存转移"); // 保存库存数修改 var lctPdt = dal.FindSignleBySql <ivt_warehouse_product>($"select * from ivt_warehouse_product where product_id={cost.product_id} and warehouse_id={(long)pdt.warehouse_id} and delete_time=0"); if (lctPdt != null) { var lctPdtOld = dal.FindById(lctPdt.id); lctPdt.quantity = lctPdt.quantity + pdt.quantity; lctPdt.update_time = Tools.Date.DateHelper.ToUniversalTimeStamp(); lctPdt.update_user_id = userId; dal.Update(lctPdt); OperLogBLL.OperLogUpdate(OperLogBLL.CompareValue <ivt_warehouse_product>(lctPdtOld, lctPdt), lctPdt.id, userId, DicEnum.OPER_LOG_OBJ_CATE.INVENTORY_ITEM, "修改库存产品库存数"); var sns = costDal.FindListBySql <string>($"select sn from ctt_contract_cost_product_sn where contract_cost_product_id={pdt.id} and delete_time=0"); if (sns == null || sns.Count == 0) { continue; } foreach (var sn in sns) { ivt_warehouse_product_sn lctPdtSn = new ivt_warehouse_product_sn(); lctPdtSn.id = lctPdtSnDal.GetNextIdCom(); lctPdtSn.create_time = Tools.Date.DateHelper.ToUniversalTimeStamp(); lctPdtSn.create_user_id = userId; lctPdtSn.update_time = lctPdtSn.create_time; lctPdtSn.update_user_id = userId; lctPdtSn.warehouse_product_id = lctPdt.id; lctPdtSn.sn = sn; lctPdtSnDal.Insert(lctPdtSn); OperLogBLL.OperLogAdd <ivt_warehouse_product_sn>(lctPdtSn, lctPdtSn.id, userId, DicEnum.OPER_LOG_OBJ_CATE.INVENTORY_ITEM_SN, "取消配送产品新增库存产品串号"); ivt_transfer_sn tsfSn = new ivt_transfer_sn(); tsfSn.id = tsfSnDal.GetNextIdCom(); tsfSn.sn = sn; tsfSn.transfer_id = tsf.id; tsfSn.create_time = Tools.Date.DateHelper.ToUniversalTimeStamp(); tsfSn.create_user_id = userId; tsfSn.update_time = tsfSn.create_time; tsfSn.update_user_id = userId; tsfSnDal.Insert(tsfSn); OperLogBLL.OperLogAdd <ivt_transfer_sn>(tsfSn, tsfSn.id, userId, DicEnum.OPER_LOG_OBJ_CATE.INVENTORY_ITEM_TRANSFER_SN, "取消配送产品新增转移产品串号"); } } } return(""); }
/// <summary> /// 知识库关联工单相关管理 /// </summary> public void KnowTicketManage(long artId, string ticketIds, long userId) { var oldArt = _dal.FindNoDeleteById(artId); if (oldArt == null) { return; } var stDal = new sdk_task_dal(); var skatDal = new sdk_kb_article_ticket_dal(); var oldTickList = skatDal.GetArtTicket(artId); var timeNow = Tools.Date.DateHelper.ToUniversalTimeStamp(DateTime.Now); if (oldTickList != null && oldTickList.Count > 0) { if (!string.IsNullOrEmpty(ticketIds)) { var ticketArr = ticketIds.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); foreach (var ticketId in ticketArr) { var thisTicket = stDal.FindNoDeleteById(long.Parse(ticketId)); if (thisTicket == null) { continue; } var artTicket = oldTickList.FirstOrDefault(_ => _.kb_article_id == artId && _.task_id.ToString() == ticketId); if (artTicket != null) { oldTickList.Remove(artTicket); } else { artTicket = new sdk_kb_article_ticket() { id = skatDal.GetNextIdCom(), create_time = timeNow, create_user_id = userId, update_time = timeNow, update_user_id = userId, kb_article_id = artId, task_id = thisTicket.id, task_no = thisTicket.no, }; skatDal.Insert(artTicket); OperLogBLL.OperLogAdd <sdk_kb_article_ticket>(artTicket, artTicket.id, userId, OPER_LOG_OBJ_CATE.SDK_KONWLEDGE_TICKET, "新增知识库关联工单"); } } } oldTickList.ForEach(_ => { skatDal.SoftDelete(_, userId); OperLogBLL.OperLogDelete <sdk_kb_article_ticket>(_, _.id, userId, OPER_LOG_OBJ_CATE.SDK_KONWLEDGE_TICKET, "删除知识库关联工单"); }); } else { if (!string.IsNullOrEmpty(ticketIds)) { var ticketArr = ticketIds.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); foreach (var ticketId in ticketArr) { var thisTicket = stDal.FindNoDeleteById(long.Parse(ticketId)); if (thisTicket == null) { continue; } var artTicket = new sdk_kb_article_ticket() { id = skatDal.GetNextIdCom(), create_time = timeNow, create_user_id = userId, update_time = timeNow, update_user_id = userId, kb_article_id = artId, task_id = thisTicket.id, task_no = thisTicket.no, }; skatDal.Insert(artTicket); OperLogBLL.OperLogAdd <sdk_kb_article_ticket>(artTicket, artTicket.id, userId, OPER_LOG_OBJ_CATE.SDK_KONWLEDGE_TICKET, "新增知识库关联工单"); } } } }
/// <summary> /// 获取查询的数量 /// </summary> public Dictionary <string, int> GetIndexSearchCount(long userId) { Dictionary <string, int> dic = new Dictionary <string, int>(); var _dal = new sdk_task_dal(); #region 务台相关数量 var actCount = _dal.GetTicketCount($" and status_id <> {(int)DicEnum.TICKET_STATUS.DONE} and (owner_resource_id = {userId}||EXISTS(SELECT 1 from sdk_task_resource r where r.task_id = t.id and r.resource_id={userId}))"); var overRecCount = _dal.GetTicketCount($" and status_id <> {(int)DicEnum.TICKET_STATUS.DONE} and estimated_end_time<(unix_timestamp(now()) *1000) and (owner_resource_id = {userId}||EXISTS(SELECT 1 from sdk_task_resource r where r.task_id = t.id and r.resource_id={userId}))"); var myRecCount = _dal.GetTicketCount($" and t.create_user_id = {userId}"); //var completeRecCount = _dal.GetTicketCount(" and status_id = " + (int)DicEnum.TICKET_STATUS.DONE + $" and (owner_resource_id = {userId}||EXISTS(SELECT 1 from sdk_task_resource r where r.task_id = t.id and r.resource_id={userId}))"); var myTaskTicketCount = _dal.GetCount($"select COUNT(1) from sdk_task t where delete_time = 0 and (t.owner_resource_id={userId} or EXISTS(select 1 from sdk_task_resource where delete_time=0 and task_id=t.id and resource_id={userId})) "); var callCount = Convert.ToInt32(_dal.GetSingle($"select COUNT(1) from (select a.*, round((a.start_time-a.canceled_time)/1000/3600,2)dist_hours,(select z.priority_type_id from sdk_service_call_task y,sdk_task z where y.task_id=z.id and y.service_call_id=a.id limit 1)priority_type_id from sdk_service_call a where delete_time=0)t where 1=1 and EXISTS (select 1 from sdk_service_call_task y,sdk_service_call_task_resource z where z.delete_time=0 and y.delete_time=0 and z.service_call_task_id=y.id and y.service_call_id=t.id and z.resource_id={userId}) order by t.start_time desc")); dic.Add("activeTicket", actCount); dic.Add("overTicket", overRecCount); dic.Add("myTicket", myRecCount); //dic.Add("completeTicket", completeRecCount); dic.Add("myTaskTicket", myTaskTicketCount); dic.Add("myCall", callCount); #endregion #region CRM相关数量 var myAccountCount = Convert.ToInt32(_dal.GetSingle(@"select count(1) from crm_account a join crm_account_ext e on a.id = e.parent_id where a.delete_time = 0 and( (a.type_id in(14, 18) and( (select limit_type_value_id FROM v_user_limit where user_id = " + userId + @" and limit_Id = 51) = 970 or (select limit_type_value_id FROM v_user_limit where user_id = " + userId + @" and limit_Id = 51) = 971 and(1 = 0 or a.resource_id = " + userId + @" or exists(select 1 from crm_account_team where account_id = a.id and resource_id = " + userId + @") or exists(select 1 from sys_resource_territory where delete_time = 0 and territory_id = a.territory_id and resource_id = " + userId + @")) or (select limit_type_value_id FROM v_user_limit where user_id = " + userId + @" and limit_Id = 51) = 972 and(1 = 0 or a.resource_id = " + userId + @" or exists(select 1 from crm_account_team where account_id = a.id and resource_id = " + userId + @")) )) or (a.type_id in(19, 20) and( (select limit_type_value_id FROM v_user_limit where user_id = " + userId + @" and limit_Id = 52) = 977 )) OR (a.type_id in(15, 16, 17) and( (select limit_type_value_id FROM v_user_limit where user_id = " + userId + @" and limit_Id = 53) = 970 or (select limit_type_value_id FROM v_user_limit where user_id = " + userId + @" and limit_Id = 53) = 971 and(1 = 0 or a.resource_id = " + userId + @" or exists(select 1 from crm_account_team where account_id = a.id and resource_id = " + userId + @") or exists(select 1 from sys_resource_territory where delete_time = 0 and territory_id = a.territory_id and resource_id = " + userId + @")) or (select limit_type_value_id FROM v_user_limit where user_id = " + userId + @" and limit_Id = 53) = 972 and(1 = 0 or a.resource_id = " + userId + @" or exists(select 1 from crm_account_team where account_id = a.id and resource_id = " + userId + @")) )) ) and a.resource_id in(" + userId + ")")); var myOpportunityCount = Convert.ToInt32(_dal.GetSingle(@"select count(1) from crm_opportunity o join crm_account a on o.account_id = a.id left join (select * from crm_quote where delete_time=0 and is_primary_quote=1) q on o.id = q.opportunity_id where o.delete_time=0 and ( ( a.type_id in(14,18) and ( (select limit_type_value_id FROM v_user_limit where user_id =" + userId + @" and limit_Id=51)=970 or (select limit_type_value_id FROM v_user_limit where user_id =" + userId + @" and limit_Id=51)=971 and (1=0 or a.resource_id=" + userId + @" or exists(select 1 from crm_account_team where account_id=a.id and resource_id=" + userId + @") or exists(select 1 from sys_resource_territory where delete_time=0 and territory_id=a.territory_id and resource_id=" + userId + @")) or (select limit_type_value_id FROM v_user_limit where user_id =" + userId + @" and limit_Id=51)=972 and (1=0 or a.resource_id=" + userId + @" or exists(select 1 from crm_account_team where account_id=a.id and resource_id=" + userId + @")) )) or ( a.type_id in(19,20) and ( (select limit_type_value_id FROM v_user_limit where user_id =" + userId + @" and limit_Id=52)=977 )) OR ( a.type_id in(15,16,17) and ( (select limit_type_value_id FROM v_user_limit where user_id =" + userId + @" and limit_Id=53)=970 or (select limit_type_value_id FROM v_user_limit where user_id =" + userId + @" and limit_Id=53)=971 and (1=0 or a.resource_id=" + userId + @" or exists(select 1 from crm_account_team where account_id=a.id and resource_id=" + userId + @") or exists(select 1 from sys_resource_territory where delete_time=0 and territory_id=a.territory_id and resource_id=" + userId + @")) or (select limit_type_value_id FROM v_user_limit where user_id =1 and limit_Id=53)=972 and (1=0 or a.resource_id=" + userId + @" or exists(select 1 from crm_account_team where account_id=a.id and resource_id=" + userId + @")) )) ) and ( (select limit_type_value_id FROM v_user_limit where user_id =" + userId + @" and limit_Id=57)=974 or (select limit_type_value_id FROM v_user_limit where user_id =" + userId + @" and limit_Id=57)=975 and (1=0 or o.resource_id=" + userId + @" ) ) and o.resource_id in(" + userId + @") order by o.name ")); var mySaleCount = Convert.ToInt32(_dal.GetSingle(@"select count(1) FROM crm_sales_order s LEFT JOIN crm_opportunity o on o.id = s.opportunity_id left JOIN (select * from crm_quote where is_primary_quote=1 )q on o.id = q.opportunity_id left join crm_account a on q.account_id = a.id where s.delete_time=0 and ( ( a.type_id in(14,18) and ( (select limit_type_value_id FROM v_user_limit where user_id =" + userId + @" and limit_Id=51)=970 or (select limit_type_value_id FROM v_user_limit where user_id =" + userId + @" and limit_Id=51)=971 and (1=0 or a.resource_id=" + userId + @" or exists(select 1 from crm_account_team where account_id=a.id and resource_id=" + userId + @") or exists(select " + userId + @" from sys_resource_territory where delete_time=0 and territory_id=a.territory_id and resource_id=" + userId + @")) or (select limit_type_value_id FROM v_user_limit where user_id =" + userId + @" and limit_Id=51)=972 and (1=0 or a.resource_id=" + userId + @" or exists(select 1 from crm_account_team where account_id=a.id and resource_id=" + userId + @")) )) or ( a.type_id in(19,20) and ( (select limit_type_value_id FROM v_user_limit where user_id =" + userId + @" and limit_Id=52)=977 )) OR ( a.type_id in(15,16,17) and ( (select limit_type_value_id FROM v_user_limit where user_id =" + userId + @" and limit_Id=53)=970 or (select limit_type_value_id FROM v_user_limit where user_id =" + userId + @" and limit_Id=53)=971 and (1=0 or a.resource_id=" + userId + @" or exists(select 1 from crm_account_team where account_id=a.id and resource_id=" + userId + @") or exists(select 1 from sys_resource_territory where delete_time=0 and territory_id=a.territory_id and resource_id=" + userId + @")) or (select limit_type_value_id FROM v_user_limit where user_id =" + userId + @" and limit_Id=53)=972 and (1=0 or a.resource_id=" + userId + @" or exists(select 1 from crm_account_team where account_id=a.id and resource_id=" + userId + @")) )) ) and ( (select limit_type_value_id FROM v_user_limit where user_id =" + userId + @" and limit_Id=61)=974 or (select limit_type_value_id FROM v_user_limit where user_id =" + userId + @" and limit_Id=61)=975 and (1=0 or s.owner_resource_id=" + userId + @" ) ) and s.owner_resource_id in(" + userId + @")")); var myContactCount = Convert.ToInt32(_dal.GetSingle(@"select COUNT(1) from crm_contact c join crm_contact_ext e on c.id = e.parent_id join crm_account a on c.account_id = a.id and ( ( a.type_id in(14,18) and ( (select limit_type_value_id FROM v_user_limit where user_id =" + userId + @" and limit_Id=51)=970 or (select limit_type_value_id FROM v_user_limit where user_id =" + userId + @" and limit_Id=51)=971 and (1=0 or a.resource_id=" + userId + @" or exists(select 1 from crm_account_team where account_id=a.id and resource_id=" + userId + @") or exists(select 1 from sys_resource_territory where delete_time=0 and territory_id=a.territory_id and resource_id=" + userId + @")) or (select limit_type_value_id FROM v_user_limit where user_id =" + userId + @" and limit_Id=51)=972 and (1=0 or a.resource_id=" + userId + @" or exists(select 1 from crm_account_team where account_id=a.id and resource_id=" + userId + @")) )) or ( a.type_id in(19,20) and ( (select limit_type_value_id FROM v_user_limit where user_id =" + userId + @" and limit_Id=52)=977 )) OR ( a.type_id in(15,16,17) and ( (select limit_type_value_id FROM v_user_limit where user_id =" + userId + @" and limit_Id=53)=970 or (select limit_type_value_id FROM v_user_limit where user_id =" + userId + @" and limit_Id=53)=971 and (1=0 or a.resource_id=" + userId + @" or exists(select 1 from crm_account_team where account_id=a.id and resource_id=" + userId + @") or exists(select 1 from sys_resource_territory where delete_time=0 and territory_id=a.territory_id and resource_id=" + userId + @")) or (select limit_type_value_id FROM v_user_limit where user_id =" + userId + @" and limit_Id=53)=972 and (1=0 or a.resource_id=" + userId + @" or exists(select 1 from crm_account_team where account_id=a.id and resource_id=" + userId + @")) )) ) and (a.resource_id =" + userId + ")")); var myQuoteCount = Convert.ToInt32(_dal.GetSingle(@"select count(1) from crm_quote q JOIN crm_opportunity o on q.opportunity_id=o.id join crm_account a on o.account_id = a.id LEFT JOIN (select quote_id,sum(unit_price*quantity) total_revenue from crm_quote_item GROUP BY quote_id)i on q.id=i.quote_id where q.delete_time=0 and ( ( a.type_id in(14,18) and ( (select limit_type_value_id FROM v_user_limit where user_id =" + userId + @" and limit_Id=51)=970 or (select limit_type_value_id FROM v_user_limit where user_id =" + userId + @" and limit_Id=51)=971 and (1=0 or a.resource_id=" + userId + @" or exists(select 1 from crm_account_team where account_id=a.id and resource_id=" + userId + @") or exists(select 1 from sys_resource_territory where delete_time=0 and territory_id=a.territory_id and resource_id=" + userId + @")) or (select limit_type_value_id FROM v_user_limit where user_id =" + userId + @" and limit_Id=51)=972 and (1=0 or a.resource_id=1 or exists(select 1 from crm_account_team where account_id=a.id and resource_id=" + userId + @")) )) or ( a.type_id in(19,20) and ( (select limit_type_value_id FROM v_user_limit where user_id =" + userId + @" and limit_Id=52)=977 )) OR ( a.type_id in(15,16,17) and (-- 领导者、潜在客户、终止合作权限53 (select limit_type_value_id FROM v_user_limit where user_id =" + userId + @" and limit_Id=53)=970 or (select limit_type_value_id FROM v_user_limit where user_id =" + userId + @" and limit_Id=53)=971 and (1=0 or a.resource_id=" + userId + @" or exists(select 1 from crm_account_team where account_id=a.id and resource_id=" + userId + @") or exists(select 1 from sys_resource_territory where delete_time=0 and territory_id=a.territory_id and resource_id=" + userId + @")) or (select limit_type_value_id FROM v_user_limit where user_id =" + userId + @" and limit_Id=53)=972 and (1=0 or a.resource_id=" + userId + @" or exists(select 1 from crm_account_team where account_id=a.id and resource_id=" + userId + @")) )) ) and ( (select limit_type_value_id FROM v_user_limit where user_id =1 and limit_Id=57)=974 or (select limit_type_value_id FROM v_user_limit where user_id =1 and limit_Id=57)=975 and (1=0 or o.resource_id=" + userId + @" ) ) and o.resource_id in(" + userId + @")")); var myNoteCount = Convert.ToInt32(_dal.GetSingle($"select COUNT(1) from com_activity t join crm_account a on t.account_id = a.id where t.delete_time = 0 and cate_id in(31) and t.resource_id in({userId})")); var myTodoCount = Convert.ToInt32(_dal.GetSingle($"select count(1) from com_activity t where t.delete_time = 0 and(t.cate_id in(30) or t.cate_id in(31) and t.status_id is not null) and t.resource_id in({userId}) ")); dic.Add("MyAccount", myAccountCount); dic.Add("MyOpportunity", myOpportunityCount); dic.Add("MySale", mySaleCount); dic.Add("MyContact", myContactCount); dic.Add("MyQuote", myQuoteCount); dic.Add("MyNote", myNoteCount); dic.Add("MyTodo", myTodoCount); #endregion #region 工时表相关数量 var requestCount = Convert.ToInt32(_dal.GetSingle($"select COUNT(1) from tst_timeoff_request t where delete_time=0 and t.resource_id in({userId}) and status_id={(int)DicEnum.TIMEOFF_REQUEST_STATUS.COMMIT}")); dic.Add("RequestCount", myTodoCount); #endregion #region 等待我审批相关数量 var waitLabourCount = Convert.ToInt32(_dal.GetSingle($"select count(1) from sdk_work_entry_report t join sys_resource r on t.resource_id=r.id where t.delete_time=0 and t.status_id={(int)DicEnum.WORK_ENTRY_REPORT_STATUS.WAITING_FOR_APPROVAL} ")); var waitRequestCount = Convert.ToInt32(_dal.GetSingle($"select COUNT(1) from tst_timeoff_request t join sys_resource r on t.resource_id=r.id where t.delete_time=0 and t.status_id={(int)DicEnum.TIMEOFF_REQUEST_STATUS.COMMIT}")); var waitExpenseCount = Convert.ToInt32(_dal.GetSingle($"select count(1) from sdk_expense_report t where t.delete_time=0 and t.status_id={(int)DicEnum.EXPENSE_REPORT_STATUS.WAITING_FOR_APPROVAL}")); var waitChangeCount = Convert.ToInt32(_dal.GetSingle($"select COUNT(1) from sdk_task t where t.type_id in(1809) and t.delete_time = 0 and t.ticket_type_id=129 and exists(select 1 from sdk_task_other_person where task_id=t.id and delete_time=0 and approve_status_id ={(int)DicEnum.CHANGE_APPROVE_STATUS_PERSON.WAIT}) and exists(select 1 from sdk_task_other_person where task_id=t.id and delete_time=0 and resource_id ={userId} ) ")); dic.Add("waitLabour", waitLabourCount); dic.Add("waitRequest", waitRequestCount); dic.Add("waitExpense", waitExpenseCount); dic.Add("waitChange", waitChangeCount); #endregion #region 其他相关数量 #endregion return(dic); }