/*以下代码由数据访问服务工具自动生成
*如有需要请自行修改
*
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using QWPlatform.DataIntface;
using QWPlatform.IService;
using PMS.EntityModels.MoblieProblemRegist;
using PMS.BusinessModels.MobileProblem;
using System.Data;
using QWPlatform.SystemLibrary.LogManager;
using QWPlatform.SystemLibrary.Utils;
using PMS.EntityModels.WorkFlow;
using PMS.BusinessModels.Account;
using QWPlatform.SystemLibrary;
using PMS.EntityModels.SysManager;
using PMS.EntityModels.Product;
namespace PMS.DBService.MoblieProblemRegist
{
public class Moblieproblemservice : DataServiceBase
{
///
/// 重写数据工厂
///
///
protected override void DBFctory(string conName)
{
base.DBFctory(conName);
}
///
/// 增加数据记录
///
///
///
public int Add(MoblieProblemModel model)
{
model.SetDataFactory(this.DataFactoryObject);
return model.Insert();
}
///
/// 增加数据记录
///
///
///
public int Add(MoblieProblemModel model, ITransaction trans)
{
model.SetDataFactory(this.DataFactoryObject);
if (trans == null)
{
return model.Insert();
}
else
{
return model.Insert(trans);
}
}
///
/// 更新数据库记录
///
///
///
public int Update(MoblieProblemModel model)
{
model.SetDataFactory(this.DataFactoryObject);
List where = new List();
where.Add("ID");
return model.Update(where, string.Empty);
}
///
/// 更新数据库记录
///
///
///
public int Update(MoblieProblemModel model, ITransaction trans)
{
model.SetDataFactory(this.DataFactoryObject);
List where = new List();
where.Add("ID");
if (trans == null)
{
return model.Update(where, string.Empty);
}
else
{
return model.Update(trans, where, string.Empty);
}
}
///
/// 删除数据记录
///
///
///
public int Delete(MoblieProblemModel model)
{
model.SetDataFactory(this.DataFactoryObject);
return model.Delete("ID");
}
///
/// 删除数据记录
///
///
///
public int Delete(MoblieProblemModel model, ITransaction trans)
{
model.SetDataFactory(this.DataFactoryObject);
if (trans == null)
{
return model.Delete("ID");
}
else
{
return model.Delete(trans, "ID");
}
}
///
/// 查询数据对象并进行赋值
///
///
public MoblieProblemModel Select(MoblieProblemModel model)
{
model.SetDataFactory(this.DataFactoryObject);
model.Select();
return model;
}
///
/// 列表查询
///
///
public List SelectList(MoblieProblemModel model)
{
model.SetDataFactory(this.DataFactoryObject);
return model.SelectList();
}
///
/// 调用存储过程
///
///
public void CallProcedure(MoblieProblemModel model)
{
this.ProcedureBuilder
.Procedure("p_PT_项目问题记录_INSERT")
.Paramter("ID_IN", model.ID)
.Paramter("编号_IN", model.BH)
.Paramter("项目ID_IN", model.XMID)
.Paramter("站点ID_IN", model.ZDID)
.Paramter("产品ID_IN", model.CPID)
.Paramter("科室名_IN", model.KSM)
.Paramter("用户姓名_IN", model.YHXM)
.Paramter("来源_IN", model.LY)
.Paramter("问题描述_IN", model.WTMS)
.Paramter("登记时间_IN", model.DJSJ)
.Paramter("登记人ID_IN", model.DJRID)
.Paramter("当前处理人_IN", model.DQCLR)
.Paramter("处理说明_IN", model.CLSM)
.Paramter("状态_IN", model.ZT)
.Paramter("项目处理_IN", model.XMCL)
.Paramter("技术支持_IN", model.JSZC)
.Paramter("研发协助_IN", model.YFXZ)
.Paramter("产品问题_IN", model.CPWT)
.Paramter("BH问题_IN", model.BHWT)
.Paramter("问题标题_IN", model.WTBT)
.Paramter("处理时间_IN", model.CLSJ)
.Paramter("预计时间_IN", model.YJSJ)
.Paramter("版本号_IN", model.BBH)
.Paramter("用户ID_IN", model.YHID)
.Execute();
}
public string ZLSubmitProblem(SubmitProblemFormModel model)
{
var exe = this.ProcedureBuilder
.Procedure("b_问题管理.P_ZL问题移动端登记")
.Paramter("产品编码_In", model.ProductCode)
.Paramter("机构ID_IN", model.InstitutionID)
.Paramter("项目ID_IN", model.ProjectID)
.Paramter("紧急程度_IN", model.ErginID)
.Paramter("紧急描述_IN", model.urgentDetail)
.Paramter("要求时间_IN", model.TRequireTime)
.Paramter("登记进入流程ID_IN", model.NextProcessID)
.Paramter("处理说明_In", model.DealDetail)
.Paramter("问题描述_IN", model.detail)
.Paramter("登记人_IN", model.registrant)
.Paramter("登记人ID_IN", model.registrantID)
.Paramter("登记人性质_IN", model.registrantProperty)
.Paramter("登记日期_IN", this.DataBaseBuilder.GetDateTime)
.Paramter("标题_IN", model.ProblemTitile)
.Paramter("来源_In", model.Origin)
.Paramter("问题性质_In", model.ProblemNature)
.Paramter("处理状态_In", model.DealStatus)
.ParamterOut("问题过程id_Out", DbType.String, 36)
;
exe.Execute();
var str = exe.ParameterValue("问题过程id_Out");
return str;
}
public string CustomerSubmitProblem(SubmitProblemFormModel model)
{
var exe = this.ProcedureBuilder
.Procedure("b_问题管理.P_客户问题移动端登记")
.Paramter("问题描述_IN", model.detail)
.Paramter("登记人ID_IN", model.registrantID)
.Paramter("登记日期_IN", this.DataBaseBuilder.GetDateTime)
.Paramter("产品Code_IN", model.ProductCode)
.Paramter("标题_IN", model.ProblemTitile)
.Paramter("流程ID_In", model.ProcessID)
.Paramter("进入流程ID_IN", model.NextProcessID)
.ParamterOut("问题过程id_Out", DbType.String, 36);
exe.Execute();
var str = exe.ParameterValue("问题过程id_Out");
return str;
}
public string SubmitProblemBycode(SubmitProblemFormModel model)
{
try
{
///如果未登陆,则按照扫描上的人员资源ID登记
if (String.IsNullOrEmpty(model.registrantID))
{
//获取登记人信息
var PersonDt = this.SelectBuilder.From("人员信息").Columns("ID,姓名").Where("资源ID", model.registrantSorID).Select();
if (PersonDt != null && PersonDt.Rows.Count > 0)
{
model.registrantID = PersonDt.Rows[0].GetValueByName("ID");
model.registrant = PersonDt.Rows[0].GetValueByName("姓名");
}
else
{
Logger.Instance.Error("调用SubmitProblemBycode查询用户不存在");
return "";
}
}
var exe = this.ProcedureBuilder
.Procedure("b_问题管理.P_问题移动端扫码登记")
.Paramter("问题描述_IN", model.detail)
.Paramter("登记人_IN", model.registrant)
.Paramter("登记人ID_IN", model.registrantID)
.Paramter("机构ID_IN", model.InstitutionID)
.Paramter("标题_IN", model.ProblemTitile)
.Paramter("产品Code_IN", model.ProductCode)
.Paramter("登记日期_IN", this.DataBaseBuilder.GetDateTime)
.Paramter("流程ID_In", model.ProcessID)
.Paramter("进入流程ID_IN", model.NextProcessID)
.ParamterOut("问题过程id_Out", DbType.String, 36);
exe.Execute();
var ProcessId = exe.ParameterValue("问题过程id_Out");
return ProcessId;
}
catch (Exception ex)
{
Logger.Instance.Error(ex.Message);
return "";
}
}
public int ImageUpload(string ProblemID, string AnnexID, string Name, string fileType)
{
return this.InsertBuilder
.Insert("产品问题附件")
.Column("ID", Guid.NewGuid().ToString())
.Column("问题ID", ProblemID)
.Column("类型", fileType)
.Column("附件ID", AnnexID)
.Column("添加时间", this.DataBaseBuilder.GetDateTime)
.Column("添加人", Name)
.Execute();
}
public DataTable QueryMyProblem(QueryMyProblemModel model, out string toltal)
{
var pro = this.ProcedureBuilder;
pro.Procedure("b_问题管理.P_客户移动端问题查询")
.Paramter("登记人id_In", model.CurrentUserId)
.Paramter("查询类型_In", model.SelectType)
.Paramter("开始时间_In", model.StartTimeD)
.Paramter("结束时间_In", model.EndTimeD)
.Paramter("开始行_In", model.StartNum)
.Paramter("结束行_In", model.EndNum)
.Paramter("是否解决_In", model.ProblemStatus)
.ParamterOut("Resultlist", true)
.ParamterOut("总行数_Out", DbType.Double, 5);
var Code = 0;
if (int.TryParse(model.SelectConditon, out Code))
{
pro.Paramter("查询条件_In", null)
.Paramter("搜索编号_In", Code);
}
else
{
pro.Paramter("查询条件_In", model.SelectConditon)
.Paramter("搜索编号_In", null);
}
pro.Execute();
var dt = pro.ParameterValue("Resultlist");
toltal = Convert.ToString(pro.ParameterValue("总行数_Out"));
return dt;
}
public DataTable QueryProblemByProject(QueryProblemByProjectModel model)
{
var pro = this.ProcedureBuilder;
pro.Procedure("b_问题管理.P_项目人员移动端问题查询")
.Paramter("当前项目_In", model.Project)
.Paramter("当前机构_In", model.Institution)
.Paramter("审核单位_In", model.CurrentUnit)
.Paramter("问题性质_In", model.Status)
.Paramter("紧急程度_In", model.priority)
.Paramter("产品类型_In", model.ProductType)
.Paramter("开始时间_In", model.StartTimeD)
.Paramter("结束时间_In", model.EndTimeD)
.Paramter("选项卡_In", model.Tab)
.Paramter("开始行_In", model.StartNum)
.Paramter("结束行_In", model.EndNum)
.Paramter("是否解决_In", model.DealStatus)
.Paramter("终止状态_In", model.IsEnd)
.Paramter("当前登陆人ID_In", model.CurrentUserId)
.ParamterOut("Resultlist", true);
var Code = 0;
if (int.TryParse(model.SelectConditon, out Code))
{
pro.Paramter("搜索条件_In", null)
.Paramter("搜索编号_In", Code);
}
else
{
pro.Paramter("搜索条件_In", model.SelectConditon)
.Paramter("搜索编号_In", null);
}
pro.Execute();
var dt = pro.ParameterValue("Resultlist");
return dt;
}
public DataTable QuerckSearch(QueryMyProblemModel model)
{
if (String.IsNullOrEmpty(model.SelectConditon))
{
return new DataTable();
}
var dt = this.SelectBuilder.From("人员信息").Columns("性质,渠道ID,站点ID").Where("ID", model.CurrentUserId).Select();
var Property = dt.Rows[0].GetValueByName("性质");
var ChannelId = dt.Rows[0].GetValueByName("渠道ID");
var Institution = dt.Rows[0].GetValueByName("站点ID");
var sql = @"Select to_char(t.登记日期,'YYYY/MM/DD HH24:MI') as 登记日期,t.登记人,t.问题描述,t.问题标题,t.是否解决,t.id,t.是否终止,
( select f.附件ID from 产品问题附件 f where f.问题ID = t.id and rownum = 1 and f.类型='1') as 附件路径,
(Select bm.显示名 from 基础编码 bm where bm.分类ID='D3EDEA7A-7F07-4DD3-9A6B-34DB16A6E982' and bm.代码=s.性质) AS 性质
from 问题记录 t,人员信息 s
where t.登记人id=s.id(+)
and t.是否删除=0 ";
var sqlbuilder = this.SqlBuilder;
sqlbuilder.Parameters("search", model.SelectConditon);
int numberCode = 0;
if (int.TryParse(model.SelectConditon, out numberCode))
{
sql += @" and t.编号 =:search";
}
else
{
sql += @" and(t.问题标题 Like '%' ||:search || '%' or t.问题描述 Like '%' ||:search || '%' or
t.登记人 Like '%' ||:search || '%' ) ";
}
if (Property != 1)
{
sql += " and t.渠道ID=:Channel ";
sqlbuilder.Parameters("Channel", ChannelId);
}
//如果为机构管理员
if (Property == 4 || Property == 3)
{
sql += " and t.机构ID=:Institution ";
sqlbuilder.Parameters("Institution", Institution);
}
sql += " Order By t.登记日期 desc";
return sqlbuilder.SqlText(sql).Paging(model.Pages, model.rows).Select();
}
public DataTable GetPerson(string id)
{
var sql = "select b.id AS 项目ID,b.名称 AS 项目名称,a.性质,c.id AS 站点ID,c.名称 AS 站点名称 from 人员信息 a,项目信息 b, 站点信息 c where a.id = :id and a.项目ID = b.id and a.站点id = c.id";
return this.SqlBuilder
.SqlText(sql)
.Parameters("id", id)
.Select();
}
public DataTable ProblemDetail(string id)
{
var pro = this.ProcedureBuilder
.Procedure("b_问题管理.P_移动端问题详细")
.Paramter("问题ID_In", id)
.ParamterOut("Resultlist", true);
pro.Execute();
var dt = pro.ParameterValue("Resultlist");
return dt;
}
public int NewestStatus(string id)
{
return this.SelectBuilder.Columns("状态")
.From("问题记录过程")
.Where("问题ID", id)
.OrderBy("记录时间 desc")
.Select();
}
///
/// 获取登记问题时所在的环节Id
///
public int GetRegisLinkId(string id)
{
return this.SqlBuilder
.SqlText("select s.环节id from 问题记录过程 t,问题工作流程 s where t.当前流程id=s.id and t.问题ID=:id and t.状态=1")
.Parameters("id", id)
.Select();
}
public int GetUserLinkId(int PersonProperty, string JobCode)
{
var SelectBuilder = this.SqlBuilder;
var sqlText = @"Select t.ID from 问题流程环节 t where t.人员性质=:人员性质";
SelectBuilder.Parameters("人员性质", PersonProperty);
///如果为本部人员
if (PersonProperty == 1)
{
sqlText += @" and Exists
(select column_value from table(Select f_Split_String(x.职务代码1, ',') from 问题流程环节 x
where id = t.Id)
where Column_Value =:职务) ";
SelectBuilder.Parameters("职务", Convert.ToInt32(JobCode));
}
SelectBuilder.SqlText(sqlText);
return SelectBuilder.Select();
}
public DataTable GetFileFormFTP(string id)
{
return this.SelectBuilder.Columns("a.附件ID,a.类型")
.From("产品问题附件 a,问题记录过程 b")
.Where("b.ID=a.过程ID")
.Where("b.问题ID", id)
.Where("b.状态", 1)
.Select();
}
public ButtonAuthorityModel GetButtonauthority(int PersonProperty, string PersonID, string ProblemID)
{
var model = new ButtonAuthorityModel();
model.Cancel = false;
model.Confirm = false;
model.Deal = false;
model.Stop = false;
model.Sub = false;
return model;
}
public DataTable GetCount(string id)
{
var sql = @" with
sql as
(select Count(1) as djCount from 问题记录过程 a,问题记录 b
where a.问题id=b.id
and b.是否删除=0 and
a.状态=1 and a.记录人id=:id ),
sq as (select Count(distinct a.问题ID) as sqCount from 问题记录过程 a,问题记录 b where a.状态=5 and a.记录人id=:id and a.问题id=b.id and b.是否删除=0 ),
cl as( select Count(distinct a.问题ID) as clCount from 问题记录过程 a,问题记录 b where a.状态 in (2,3,4,6,7,8) and a.记录人id=:id and a.问题id=b.id and b.是否删除=0 )
Select djCount as 我登记的,sqCount as 我申请的,clCount as 我处理的 from
sq, sql,cl ";
return this.SqlBuilder.SqlText(sql).Parameters("id", id).Select();
}
public DataTable GetCountForCustom(string id)
{
var sql = @"select
sum(1) AS 已登记,
sum(case when t.是否解决=0 then 1 else 0 end ) AS 未解决,
sum(case when t.是否解决=1 then 1 else 0 end ) AS 已解决
from 问题记录 t
where t.登记人id=:id
and t.是否删除=0";
return this.SqlBuilder.SqlText(sql).Parameters("id", id).Select();
}
public WorkFlowModel GetNewProblemWorkId(string InstitutionID, string ProjectID)
{
WorkFlowModel model = new WorkFlowModel();
try
{
model.CategoryID = 1;
//查询项目审核流程
var ProjectCategoryID = this.SqlBuilder.SqlText("Select 工作流目录ID From 项目问题流程 Where 项目id=:ProjectID and 机构id is null")
.Parameters("ProjectID", ProjectID).Select();
///如果不为空则取项目流程
if (ProjectCategoryID > 0)
{
model.CategoryID = ProjectCategoryID;
}
//判断传入机构是否为空
if (!String.IsNullOrEmpty(InstitutionID))
{
var InstitutionCategoryID = this.SqlBuilder.SqlText("Select 工作流目录ID From 项目问题流程 Where 项目id=:ProjectID and 机构id=:InstitutionID")
.Parameters("ProjectID", ProjectID).Parameters("InstitutionID", InstitutionID).Select();
///如果不为空则取机构流程
if (InstitutionCategoryID > 0)
{
model.CategoryID = InstitutionCategoryID;
}
}
//取流程Id
model.ID = this.SqlBuilder.SqlText("Select ID From 问题工作流程 Where 目录id = :CategoryID And 启用 = 1 And Rownum = 1 Order By 序号 Asc")
.Parameters("CategoryID", model.CategoryID).Select();
return model;
}
catch (Exception ex)
{
Logger.Instance.Error("调用方法GetNewProblemWorkId异常", ex);
return null;
}
}
#region 用户注册
public string UserCheck(string PersonResource_id)
{
var pro = this.ProcedureBuilder
.Procedure("b_平台管理_登录管理.p_用户完整性判断")
.Paramter("In_人员资源ID", PersonResource_id)
.ParamterOut("Out_状态", DbType.String, 3);
pro.Execute();
var st = pro.ParameterValue("Out_状态");
return st;
}
public DataTable GetInstitutionsID(string id)
{
return this.SelectBuilder
.From("站点信息")
.Where("资源ID", id)
.Columns("ID,名称,项目ID")
.Select();
}
public string GetInstitutionsIDByUser(string UserId)
{
string id;
id = this.SelectBuilder
.From("人员信息")
.Where("ID", UserId)
.Columns("站点ID")
.Select();
if (String.IsNullOrEmpty(id))
{
id = this.SelectBuilder
.From("人员信息")
.Where("资源ID", UserId)
.Columns("站点ID")
.Select();
}
return id;
}
public DataTable GetExistInfo(string PersonResource_id)
{
var sql = @"select t.姓名,t.联系电话,t.部门名
from 人员信息 t
where t.资源ID =:PersonResource_id";
return this.SqlBuilder.SqlText(sql).Parameters("PersonResource_id", PersonResource_id).Select();
}
public DataTable TeleGetUserInfo(string Tele)
{
var pro = this.ProcedureBuilder
.Procedure("b_平台管理_登录管理.p_手机获取用户信息")
.Paramter("In_手机号码", Tele)
.ParamterOut("Resultlist", true);
pro.Execute();
var st = pro.ParameterValue("Resultlist");
return st;
}
public string UpdateResourceID(string UserGetId, string Tele, string edType)
{
var pro = this.ProcedureBuilder
.Procedure("b_平台管理_登录管理.p_更新用户资源ID")
.Paramter("In_手机号码", Tele)
.Paramter("In_资源ID", UserGetId)
.Paramter("In_更新类型", edType)
.ParamterOut("是否成功_Out", DbType.String, 3);
pro.Execute();
var st = pro.ParameterValue("是否成功_Out");
return st;
}
public bool GetSMSCode(string telephone, string code)
{
try
{
DateTime dtime = this.DataBaseBuilder.GetDateTime;
DateTime timeEnd = new DateTime();
timeEnd = dtime.AddMinutes(10);
var t = this.ProcedureBuilder
.Procedure("b_平台管理_登录管理.p_保存短信验证码")
.Paramter("In_验证码", code)
.Paramter("In_手机号", telephone)
.Paramter("In_获取时间", dtime)
.Paramter("In_过期时间", timeEnd).Execute();
return t == -1;
}
catch (Exception ex)
{
Logger.Instance.Error("短信保存数据库错误!", ex);
return false;
}
}
public string UserRegist(MobileUserRegistModel Model)
{
try
{
//判断账户是否存在
var t = this.SelectBuilder.Columns("1").From("系统账户").Where("账户", Model.telephone).Exists();
if (t)
return "4";
var st = InsertBuilder.Insert("人员信息").Column("ID", Guid.NewGuid().ToString("N")).Column("渠道ID", Model.Channel).Column("姓名", Model.name).Column("联系电话", Model.telephone).Column("性质", 4).Column("状态", 1)
.Column("简码", Model.simple).Column("说明", "自助注册").Column("职务", "9").Column("所属医院", Model.hospitalname).Column("添加时间", this.DataBaseBuilder.GetDateTime)
.Execute();
//var pro = this.ProcedureBuilder
// .Procedure("b_平台管理_登录管理.p_投诉用户注册")
// .Paramter("资源ID_IN", Model.UserGetId)
// .Paramter("In_站点ID", Model.SiteID)
// .Paramter("姓名_IN", Model.name)
// .Paramter("联系电话_IN", Model.telephone)
// .Paramter("部门名_IN", Model.Department)
// .Paramter("密码_In", Strings.StrToMD5(Model.password))
// .Paramter("验证码_In", Model.SMSCode)
// .Paramter("系统时间_In", this.DataBaseBuilder.GetDateTime)
// .ParamterOut("是否成功_Out", DbType.String, 3);
//pro.Execute();
//var st = pro.ParameterValue("是否成功_Out");
return st+"";
}
catch (Exception ex)
{
Logger.Instance.Error("调用UserRegist方法注册发生错误!", ex);
return "1";
}
}
///
/// 获取渠道信息
///
///
public DataTable GetChannel()
{
var dt = this.SelectBuilder.From("渠道信息").Where("状态",1).Columns("ID,名称").Select();
return dt;
}
///
/// 获取渠道扩展信息
///
///
///
public DataTable GetChannelExtend(string id)
{
var dt = this.SelectBuilder.From("渠道信息扩展表").Where("id", id).Where("状态", 1).Columns("手机号,微信ID").Select();
return dt;
}
public string PasswordModifySubmit(string telephone, string Code, string password)
{
string status = string.Empty;
//判断账户是否存在
var accountExit = this.SelectBuilder.From("系统账户").Where("账户", telephone).Columns("ID").Select();
if (accountExit > 0)
{
/*判断验证码是否错误*/
var CodeErr = this.SelectBuilder.From("短信验证码").Where("手机号", telephone).Where("验证码", Code).Columns("验证码").Select();
if (CodeErr < 1)
{
return "验证码错误";//
}
//判断验证码是否过期
var CodeTime = this.SelectBuilder.From("短信验证码").Where("手机号", telephone).Where("验证码", Code).Columns("过期时间").Select();
if (CodeTime < this.DataBaseBuilder.GetDateTime)
{
return "验证码过期";//
}
//修改密码
var t = this.UpdateBuilder.Update("系统账户").Where("账户", telephone).Column("密码", Strings.MD5(password)).Execute();
return t > 0 ? "1" : "修改失败";
}
else
{
return "用户不存在";//
}
}
#endregion
#region 问题操作相关业务
public bool CrossJud(string ProblemId, int PersonProperty, string JobCode)
{
var Link = this.SelectBuilder.Columns("环节id").From("问题记录").Where("ID", ProblemId).Select();
var SelectBuilder = this.SelectBuilder.Columns("ID").From("问题流程环节").Where("人员性质", PersonProperty);
if (PersonProperty == 1)
{
SelectBuilder.Where("职务代码", Convert.ToInt32(JobCode));
}
var UserLink = SelectBuilder.Select();
if (UserLink < Link)
{
return false;
}
return true;
}
public string IsMyProblem(string ProblemId, string PersonId)
{
var dt = this.SelectBuilder.Columns("受理人ID,指派人ID").From("问题记录").Where("ID", ProblemId).Select();
var CurrentDealPersonId = dt.Rows[0].GetValueByName("受理人ID");
var CurrentAssginPersonId = dt.Rows[0].GetValueByName("指派人ID");
if (PersonId == CurrentDealPersonId || PersonId == CurrentAssginPersonId || (String.IsNullOrEmpty(CurrentDealPersonId) && String.IsNullOrEmpty(CurrentAssginPersonId)))
{
return "1";//为自己处理的问题
}
else
{
return "0";//不为自己处理的问题
}
}
public DataTable GetPerson(string search, int PersonProperty, string ProblemId)
{
try
{
///获取问题所在渠道和机构
var Problemdt = this.SelectBuilder.From("问题记录").Where("ID", ProblemId).Columns("渠道ID,机构ID").Select();
var companyID = Problemdt.Rows[0].GetValueByName("渠道ID");
var InstitutionID = Problemdt.Rows[0].GetValueByName("机构ID");
//查询人员
var SqlBuilder = this.SqlBuilder;
var sql = @" Select * From (Select s.ID,s.姓名,s.简码,(select t.显示名 from 基础编码 t where t.分类ID='56411293-988F-42CA-8B84-5A34DD37C7E6' and t.代码=s.职务) AS 职务,
(select qd.名称 from 渠道信息 qd where qd.ID=s.渠道ID) AS 公司名称
from 人员信息 s
where s.状态='1' and s.是否删除=0
";
var sql2 = " Union all ";
var sql3 = @" Select s.ID,s.姓名,s.简码,(select t.显示名 from 基础编码 t where t.分类ID='56411293-988F-42CA-8B84-5A34DD37C7E6' and t.代码=s.职务) AS 职务 ,
(select qd.名称 from 渠道信息 qd where qd.ID=s.渠道ID) AS 公司名称
from 人员信息 s where s.站点ID = :站点ID_In
and s.性质 = '4'
and s.状态 = '1'
and s.是否删除=0
";
SqlBuilder.Parameters("站点ID_In", InstitutionID);
string SQL = string.Empty;
if (!String.IsNullOrEmpty(search.Trim()))
{
sql += " and (s.姓名 Like '%' ||:search || '%' or s.简码 Like '%' ||:search || '%' )";
sql3 += " and (s.姓名 Like '%' ||:search || '%' or s.简码 Like '%' ||:search || '%' )";
SqlBuilder.Parameters("search", search);
}
if (PersonProperty == 1)
{
sql += " and s.性质 in (1,2,5) and s.渠道id in(:CompanyID,'4A9B2065-65AB-4411-B528-968D26737EAE') order by s.性质 asc )";
}
else if (PersonProperty == 2)
{
sql += " and s.性质 in (2,5) and (s.渠道id=:CompanyID OR s.渠道id in( SELECT j.共享渠道ID FROM 渠道人员共享 j WHERE j.渠道ID=:CompanyID)))";
}
else if (PersonProperty == 5)
{
sql += " and s.性质 ='5' and s.渠道id=:CompanyID )";
}
SqlBuilder.Parameters("CompanyID", companyID);
//判断是否为机构管理员
if (PersonProperty == 4)
{
SQL = sql3;
}
else
{
SQL = sql + sql2 + sql3;
}
return SqlBuilder.SqlText(SQL).Select();
}
catch (Exception ex)
{
Logger.Instance.Error("获取人员信息调用数据库失败", ex);
return new DataTable();
}
}
public bool IsDealProcess(string ProblemId, int PersonProperty)
{
///获取目录Id
var categoryId = this.SelectBuilder.Columns("b.目录ID").From("问题记录 a,问题工作流程 b").Where("a.流程ID=b.ID").Where("a.ID", ProblemId).Select();
//获取环节ID
var id = this.SelectBuilder.From("问题工作流程 a,问题流程环节 b").Columns("a.ID").Where("a.环节ID=b.ID").Where("a.目录ID", categoryId).Where("b.人员性质", PersonProperty)
.Select();
return id > 0;
}
public UserInfo GetPersonProperty(string PersonID)
{
var dt = this.SelectBuilder.Columns("性质,职务").From("人员信息").Where("ID", PersonID).Select();
var User = new UserInfo();
User.PersonProperty = dt.Rows[0].GetValueByName("性质");
User.JobCode = dt.Rows[0].GetValueByName("职务");
return User;
}
public DataTable GetProblemVison(string ProblemId)
{
return this.SelectBuilder.From("问题记录 a,产品版本配置 b").Columns("b.ID,b.版本号").Where("a.产品ID=b.产品ID").Where("a.ID", ProblemId).Where("b.状态!=2").OrderBy("b.版本号 desc").Select();
}
public DataTable GetProblemInfomation(string id)
{
return this.SelectBuilder.From("问题记录").Columns(" * ").Where("ID", id).Select();
}
public string ModifySubmit(SubmitProblemFormModel model)
{
try
{
var ProcessId = String.Empty;
var t = UpdateBuilder.Update("问题记录").Where("ID", model.ProblemId)
.Column("问题标题", model.ProblemTitile)
.Column("问题描述", model.detail)
.Column("问题性质", model.ProblemNature)
.Column("来源代码", model.Origin)
.Column("紧急代码", model.ErginID)
.Column("要求时间", model.TRequireTime)
.Column("紧急描述", model.urgentDetail)
.Column("解决方案", model.DealDetail)
.Column("是否解决", model.DealStatus)
.Execute();
if (t > 0)
{
var dt = this.SqlBuilder.SqlText("select ID,当前流程ID,来源流程ID from 问题记录过程 where 问题ID=:id and 状态=1")
.Parameters("id", model.ProblemId).Select();
///如果已解决
if (model.DealStatus == "1")
{
var CurrenProcessId = dt.Rows[0].GetValueByName("当前流程ID");
InsertBuilder.Insert("问题记录过程").Column("ID", Guid.NewGuid().ToString())
.Column("问题ID", model.ProblemId)
.Column("记录人ID", model.registrantID)
.Column("记录时间", this.DataBaseBuilder.GetDateTime)
.Column("当前流程ID", CurrenProcessId)
.Column("状态", 7)
.Column("来源流程ID", CurrenProcessId)
.Column("描述", model.DealDetail)
.Execute();
}
ProcessId = dt.Rows[0].GetValueByName("ID");
}
return ProcessId;
}
catch (Exception ex)
{
Logger.Instance.Error("调用ModifySubmit失败" + ex);
return "";
}
}
public string ModifySubmitForCustom(SubmitProblemFormModel model)
{
var ProcessId = String.Empty;
var t = UpdateBuilder.Update("问题记录").Where("ID", model.ProblemId)
.Column("问题标题", model.ProblemTitile)
.Column("问题描述", model.detail)
.Execute();
if (t > 0)
{
ProcessId = this.SqlBuilder.SqlText("select ID from 问题记录过程 where 问题ID=:id and 状态=1")
.Parameters("id", model.ProblemId).Select();
}
return ProcessId;
}
public bool IsModifyMyProblem(string personId, string problemId)
{
var t = this.SelectBuilder.From("问题记录").Columns("ID").Where("ID", problemId).Where("登记人ID", personId).Select();
return !String.IsNullOrEmpty(t);
}
public DataTable GetProblemFlie(string id)
{
var sql = @"select b.id,b.附件id,b.类型 from 问题记录过程 a,产品问题附件 b
where a.id=b.过程id
and a.问题id=:id
and a.状态=1";
return this.SqlBuilder.SqlText(sql).Parameters("id", id).Select();
}
public int GetProblemByProcssId(string id)
{
var sql = @"select b.环节id from 问题记录过程 a,问题工作流程 b
where a.当前流程ID=b.id
and a.ID=:id";
return this.SqlBuilder.SqlText(sql).Parameters("id", id).Select();
}
public int GetProblemByWorkId(int id)
{
var sql = @"select 环节ID from 问题工作流程 where ID=:id";
return this.SqlBuilder.SqlText(sql).Parameters("id", id).Select();
}
#endregion
#region 用户评论
public bool ProblemReamrkSubmit(commentsModel model, out string CommentsId)
{
var ID = Guid.NewGuid().ToString();
using (var tran = this.DBTransaction.BeginTrans())
{
try
{
var r = this.InsertBuilder.Insert("问题评价")
.Column("ID", ID)
.Column("问题ID", model.ProblemId)
.Column("评论内容", model.Deatil)
.Column("评论人", model.CommitPerson)
.Column("评论人ID", model.CommitPersonId)
.Column("评论时间", this.DataBaseBuilder.GetDateTime)
.Column("处理速度", model.DealTime)
.Column("服务态度", model.DealAttitude)
.Column("处理质量", model.DealQuality)
.Execute() > 0;
var Update = this.UpdateBuilder.Update("问题记录")
.Where("ID", model.ProblemId)
.Column("是否评价", 1)
.Execute() > 0;
tran.CommitTrans();
if (r && Update)
{
CommentsId = ID;
return true;
}
else
{
CommentsId = string.Empty;
return false;
}
}
catch (Exception ex)
{
Logger.Instance.Error("调用方法ProblemReamrkSubmit失败,原因:", ex);
CommentsId = string.Empty;
tran.Rollback();
return false;
}
}
}
public bool CommitFlieUplod(CommitFlie model)
{
return this.InsertBuilder.Insert("问题评价附件")
.Column("ID", Guid.NewGuid().ToString())
.Column("评价ID", model.CommitId)
.Column("附件类型", model.FlieType)
.Column("附件ID", model.FlieID)
.Column("添加时间", this.DataBaseBuilder.GetDateTime)
.Column("添加人", model.Name)
.Execute() > 0;
}
public bool IsCommit(string ProblemId, string PersonId)
{
var sql = @"select ID from 问题记录 where ID=:id
and 登记人ID=:personid
and 是否评价=0
and (是否解决=1 or 是否终止=1 )";
return this.SqlBuilder.SqlText(sql).Parameters("id", ProblemId).Parameters("personid", PersonId).Exists();
}
public string getVersionPoblemExplain(string id)
{
try
{
var dt = this.SqlBuilder.SqlText("select 版本ID,说明 from 产品问题版本 where ID=:id").Parameters("id", id).Select();
var mark = dt.Rows[0].GetValueByName("说明");
var VersionID = dt.Rows[0].GetValueByName("版本ID");
var dt2 = this.SqlBuilder.SqlText("select 附件说明,附件ID from 产品版本附件 where 产品版本ID=:VersionID").Parameters("VersionID", VersionID).Select();
return Strings.ObjectToJson(new
{
mark = mark,
File = dt2
});
}catch(Exception ex)
{
Logger.Instance.Error("获取产品版本附件失败,原因:" + ex);
return "";
}
}
public bool SaveLogger(string flieId, string flieVersionId, string personId)
{
return this.InsertBuilder.Insert("版本附件下载日志")
.Column("ID", Guid.NewGuid().ToString())
.Column("附件ID", flieId)
.Column("版本附件ID", flieVersionId)
.Column("下载人ID", personId)
.Column("下载时间", this.DataBaseBuilder.GetDateTime)
.Execute()>0;
}
///
/// 获取用户评价和待评价的问题
///
/// 个人id
/// 开始页码
/// 页码大小
/// 1
///
public DataTable GetQuestionList(string PersonId, int pageindex, int pagesize,int Tab, out int total )
{
var type=0;//待评价
if(Tab==2)//已评价
{
type = 1;
}
total = 0;
var sql = @"
select * from (
select rownum rn, dt.*from (
select t.ID, t.问题标题,t.问题描述,t.登记日期,t.编号,t.登记人,t.问题性质 ,t.修改说明 ,t.版本号 ,t.是否评价
,(Select Bm.显示名 From 基础编码 Bm Where Bm.分类id = 'D3EDEA7A-7F07-4DD3-9A6B-34DB16A6E982' And Bm.代码 = s.性质) As 性质 from 问题记录 t,人员信息 s
where t.登记人ID=:personid and 是否评价=:type and t.登记人id = s.Id(+)
and (是否解决=1 or 是否终止=1 ) order by t.登记日期 desc) dt where rownum <=:endsize) where rn >=:beginsize";
var dt= this.SqlBuilder.SqlText(sql).Parameters("type", type).Parameters("personid", PersonId).Parameters("beginsize", (pageindex - 1) * pagesize + 1).Parameters("endsize", (pageindex* pagesize)).Select();
if (dt != null)
{
//获取总条数
string totalSql = @"
select count(1) total from 问题记录 t ,人员信息 s where t.登记人ID=:personid and 是否评价=0 and t.登记人id = s.Id(+) and (是否解决=1 or 是否终止=1 ) ";
//获取总数信息
DataTable tdt = this.SqlBuilder.SqlText(totalSql).Parameters("personid", PersonId).Select();
if (tdt != null && tdt.Rows.Count > 0)
{
total = Convert.ToInt32(tdt.Rows[0]["total"]);
}
}
return dt;
}
///
/// 获取评价的内容
///
/// 个人id
/// 问题ID
///
public DataTable GetEvaluationContent(string PersonId, string ProblemID)
{
var dt = this.SqlBuilder.SqlText(@"select t.id,
t.问题id ProblemId,
t.评论内容 Deatil,
t.评论人 CommitPerson,
t.评论人id CommitPersonId,
t.评论时间,
t.处理速度 DealTime,
t.服务态度 DealAttitude,
t.处理质量 DealQuality from 问题评价 t where t.问题id=:ProblemID and t.评论人id=:PersonId").Parameters("PersonId", PersonId).Parameters("ProblemID", ProblemID).Select();
return dt;
}
///
/// 获取评价文件ID
///
///
///
public DataTable GetEvaluationFile( string ID)
{
var dt = this.SqlBuilder.SqlText(@"select
t.附件类型,
t.附件id
from 问题评价附件 t where t.评价id=:ID").Parameters("ID", ID).Select();
return dt;
}
#endregion
#region 微信登陆相关业务
public bool IsRegisteredWeChat(string openId, out string account, out string pwd)
{
bool isExist= this.SqlBuilder.SqlText("select ID from 系统账户 where 微信ID=:openId").Parameters("openId", openId).Exists();
if (isExist)
{
var model = new AccountModel(this.DataFactoryObject);
model.WXID = openId;
model.Select();
account = model.ZH;
pwd = model.MM;
return true;
}
else
{
account = "";
pwd = "";
return false;
}
}
public bool IsAccountExist(string tele)
{
return this.SqlBuilder.SqlText("Select ID from 系统账户 where 账户=:tele").Parameters("tele", tele).Exists();
}
public bool WechatVerification(string telephone, string Code, string OpenId, out string pwd, out string msg)
{
///验证短信验证码
var ExpirationTime= this.SqlBuilder.SqlText("select 过期时间 from 短信验证码 where 手机号=:p and 验证码=:y")
.Parameters("p", telephone).Parameters("y", Code)
.Select();
if(ExpirationTime== DateTime.MinValue)
{
pwd = "";
msg = "验证码错误!";
return false;
}
if (ExpirationTime < this.DataBaseBuilder.GetDateTime)
{
pwd = "";
msg = "验证码已过期!";
return false;
}
var t= this.UpdateBuilder.Column("微信ID", OpenId)
.Where("账户", telephone)
.Update("系统账户")
.Execute()>0;
if (t )
{
pwd = this.SqlBuilder.SqlText("select 密码 from 系统账户 where 账户=:account").Parameters("account", telephone).Select();
msg = "成功";
return true;
}
else
{
pwd = "";
msg = "手机号未关联账户,请联系管理员!";
return false;
}
}
#endregion
}
}