From d6676fcb70d4f9b904ec8e1613cf05191b99c169 Mon Sep 17 00:00:00 2001 From: zhuxiaojiong <645680426@qq.com> Date: Sat, 28 Jun 2025 10:46:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BLL/Ord/ORD_SERVICEMEMO_BL.cs | 61 +++- IBLL/Ord/IORD_SERVICEMEMO_Q.cs | 19 +- WEB/Controllers/Res/TranUserController.cs | 153 ++++++++++ WEB/Controllers/WeiXin/JZOrderController.cs | 28 +- WEB/Views/Res/TranUser/Index.cshtml | 270 ++++++++++++++++++ WEB/Views/WeiXin/JZOrder/ViewContract3.cshtml | 174 ++++++----- WEB/WEB.csproj | 2 + 7 files changed, 601 insertions(+), 106 deletions(-) create mode 100644 WEB/Controllers/Res/TranUserController.cs create mode 100644 WEB/Views/Res/TranUser/Index.cshtml diff --git a/BLL/Ord/ORD_SERVICEMEMO_BL.cs b/BLL/Ord/ORD_SERVICEMEMO_BL.cs index 7d45d01..f7e23a3 100644 --- a/BLL/Ord/ORD_SERVICEMEMO_BL.cs +++ b/BLL/Ord/ORD_SERVICEMEMO_BL.cs @@ -14,6 +14,8 @@ using WX.CRM.Model.Enum; using WX.CRM.Model.MAP; using WX.CRM.BLL.Application.UserComBox; using WX.CRM.Model.QueryMap; +using System.Data.OracleClient; +using WX.CRM.DAL; namespace WX.CRM.BLL.Ord { @@ -96,8 +98,8 @@ namespace WX.CRM.BLL.Ord /// /// /// - private IQueryable GetQuery(IQueryable queryData, WX.CRM.Model.Entity.crmContext db, - string memoId, string stime, string etime,string resid, decimal MemoType, decimal MemoSubtype, string content, QueryUserComboDto userComboDto) + private IQueryable GetQuery(IQueryable queryData, WX.CRM.Model.Entity.crmContext db, + string memoId, string stime, string etime, string resid, decimal MemoType, decimal MemoSubtype, string content, QueryUserComboDto userComboDto) { if (!string.IsNullOrEmpty(memoId)) { @@ -120,7 +122,7 @@ namespace WX.CRM.BLL.Ord queryData = queryData.Where(a => a.CTIME <= dt2); } - if(!string.IsNullOrWhiteSpace(resid)) + if (!string.IsNullOrWhiteSpace(resid)) queryData = queryData.Where(a => a.RESID == resid); if (MemoType != 0) @@ -158,9 +160,9 @@ namespace WX.CRM.BLL.Ord } queryData = (from a in queryData join b in db.BAS_INNERUSERGROUP on a.INNERUSERID equals b.INNERUSERID - //join g in db.BAS_INNERGROUP on b.GID equals g.GID - where ALLdeptIDS.Contains(b.DEPTID.Value) || ALLgidS.Contains(b.GID.Value) - select a); + //join g in db.BAS_INNERGROUP on b.GID equals g.GID + where ALLdeptIDS.Contains(b.DEPTID.Value) || ALLgidS.Contains(b.GID.Value) + select a); } else if (userComboDto.companyId.HasValue) { @@ -183,7 +185,7 @@ namespace WX.CRM.BLL.Ord using (var db = new WX.CRM.Model.Entity.crmContext()) { var queryData = db.ORD_SERVICEMEMO.AsQueryable(); - queryData = GetQuery(queryData, db, memoId, stime, etime,resid, MemoType, MemoSubtype, null, userComboDto); + queryData = GetQuery(queryData, db, memoId, stime, etime, resid, MemoType, MemoSubtype, null, userComboDto); //return queryData.Select(m => m.RESID).Distinct().ToList(); //var q = //from p in queryData @@ -401,7 +403,7 @@ namespace WX.CRM.BLL.Ord #endregion #region 获取所有的工单 /// - /// 获取所有工单的前十五条数据 + /// 获取所有工单的前第一条数据 /// /// /// @@ -580,6 +582,49 @@ namespace WX.CRM.BLL.Ord } } + + public Dictionary GetLastServerMemo(IEnumerable resids) + { + using (var db = new crmContext()) + { + if (resids == null || !resids.Any()) + return new Dictionary(); + + // 修改点1:将SqlParameter改为OracleParameter + var parameters = resids.Select((r, i) => new OracleParameter($":p{i}", r)).ToArray(); + var inClause = string.Join(",", parameters.Select(p => p.ParameterName)); + + var sql = $@" + SELECT s.RESID, s.INNERUSERID, s.CTIME + FROM ORD_SERVICEMEMO s + WHERE s.MEMOID IN ( + SELECT MAX(s2.MEMOID) + FROM ORD_SERVICEMEMO s2 + WHERE s2.RESID IN ({inClause}) + GROUP BY s2.RESID + )"; + + // 修改点2:移除不必要的类型转换 + //return db.Database.SqlQuery(sql, parameters) + // .ToDictionary( + // k => k.RESID, + // v => new LastServerMemoInfo + // { + // UserId = v.INNERUSERID, + // Ctime = v.CTIME + // }); + var list = OracleHelper.DataQueray(CommandType.Text, sql, parameters).Tables[0].ToList(); + return list.ToDictionary( + k => k.RESID, + v => new LastServerMemoInfo + { + UserId = v.INNERUSERID, + Ctime = v.CTIME + }); + } + } + + #region addtoRedis private void AddToRedis(ORD_MEMOCONTENT entry, CACHE_ORD_MEMO cacheOrd, bool result = true) { diff --git a/IBLL/Ord/IORD_SERVICEMEMO_Q.cs b/IBLL/Ord/IORD_SERVICEMEMO_Q.cs index 13c9b96..9aeb73f 100644 --- a/IBLL/Ord/IORD_SERVICEMEMO_Q.cs +++ b/IBLL/Ord/IORD_SERVICEMEMO_Q.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using WX.CRM.Common; using WX.CRM.Model.MAP; @@ -19,5 +20,21 @@ namespace WX.CRM.IBLL.Ord List GetNoCallTimeByMemoId(decimal[] MemoIds); List GetHgServiceMemo(decimal Memoid, decimal memosubtypeId); WX.CRM.Model.Entity.ORD_SERVICEMEMO GetHgServiceModel(decimal Memoid); + Dictionary GetLastServerMemo(IEnumerable resids); + } + + // 新增结果包装类 + public class LastServerMemoInfo + { + public decimal? UserId { get; set; } + public DateTime? Ctime { get; set; } + } + + // 保持原有查询结果类不变 + public class LastServerMemoResult + { + public string RESID { get; set; } + public decimal? INNERUSERID { get; set; } + public DateTime? CTIME { get; set; } } } diff --git a/WEB/Controllers/Res/TranUserController.cs b/WEB/Controllers/Res/TranUserController.cs new file mode 100644 index 0000000..85f725f --- /dev/null +++ b/WEB/Controllers/Res/TranUserController.cs @@ -0,0 +1,153 @@ +using Ninject; +using System; +using System.Collections.Generic; +using System.Configuration; +using System.Linq; +using System.Text; +using System.Web; +using System.Web.Mvc; +using WX.CRM.BLL.Util; +using WX.CRM.Common; +using WX.CRM.Common.Layui; +using WX.CRM.IBLL.Ord; +using WX.CRM.IBLL.Wx; +using WX.CRM.Model.DTO; +using WX.CRM.Model.QueryMap; +using WX.CRM.WebHelper; + +namespace WX.CRM.WEB.Controllers.Res +{ + public class TranUserController : Controller + { + [Inject] + public CACHE_BL _cache { get; set; } + [Inject] + public IWX_SZZYMIDPRODUCT _midProduct { get; set; } + [Inject] + public IORD_SERVICEMEMO_Q _ordServerMemo { get; set; } + + [HttpGet] + public ActionResult Index() + { + var data = new List(); + var list = _midProduct.GetList(); + foreach (var item in list) + { + data.Add(new SelectListItem() { Text = item.MIDPRODUCTNAME, Value = item.MIDPRODUCTID.ToString() }); + } + ViewBag.midproductList = data; + return View(); + } + [HttpPost] + public JsonResult Index(WxTranUserQueryDTO dto) + { + //LogHelper.Info($"WxTranUserQueryDTO=>{dto.ToJson()}"); + + var layUidata = new LayuiData(); + try + { + var host = _cache.GetValue_Parameter("Core_ZxdService_Api"); + var url = $"{host}/TranUserHandler.ashx"; + + // 使用列表收集非空参数 + var parameters = new List(); + parameters.Add($"action={dto.action}"); + if (!string.IsNullOrEmpty(dto.umid)) parameters.Add($"umid={dto.umid}"); + if (dto.starttime.HasValue) parameters.Add($"starttime={dto.starttime}"); + if (dto.endtime.HasValue) parameters.Add($"endtime={dto.endtime}"); + if (!string.IsNullOrEmpty(dto.midproductId)) parameters.Add($"MidProductId={dto.midproductId}"); + if (!string.IsNullOrEmpty(dto.subProductId)) parameters.Add($"SubProductId={dto.subProductId}"); + if (!string.IsNullOrEmpty(dto.txt_eid)) parameters.Add($"Eid={dto.txt_eid}"); + if (!string.IsNullOrEmpty(dto.txt_groupIds)) parameters.Add($"Gid={dto.txt_groupIds}"); + if (!string.IsNullOrEmpty(dto.txt_deptId)) parameters.Add($"DeptId={dto.txt_deptId}"); + parameters.Add($"page={dto.page}"); + parameters.Add($"limit={dto.limit}"); + + var para = string.Join("&", parameters); + + // 删除原来的 umid 判断代码(已整合到参数列表) + LogHelper.Info($"请求url=>{url}?{para}"); + + var result = Utility.GetData(url, para, Encoding.UTF8); + var data = result.ToObject>(); + + var resids = data.data.Select(p => p.ResId).Distinct(); + var dic = _ordServerMemo.GetLastServerMemo(resids); + + foreach (var item in data.data) + { + if (!string.IsNullOrEmpty(item.Eids)) + { + var eidArr = item.Eids.Split(';'); + var eidandname = string.Empty; + if(eidArr.Any()) + { + foreach (var eid in eidArr) + { + eidandname += InnerUserHelper.Instance.GetEidAndNameByEid(Convert.ToDecimal(eid)) + ";"; + } + } + else + { + eidandname = InnerUserHelper.Instance.GetEidAndNameByEid(Convert.ToDecimal(item.Eids)); + } + item.Eids = eidandname; + } + if (dic.TryGetValue(item.ResId, out LastServerMemoInfo memo)) + { + item.LastServiceTime = memo.Ctime == null ? string.Empty : memo.Ctime.ToString(); + item.LastServiceEid = InnerUserHelper.Instance.GetEidAndTrueName(memo.UserId); + } + } + + layUidata.msg = "数据加载成功"; + layUidata.code = 0; + layUidata.data = data.data; + layUidata.count = data.count; + } + catch (Exception ex) + { + LogHelper.Error(ex.ToString()); + layUidata.SetFail(1, "出现错误!" + ex.Message); + } + return Json(layUidata); + } + } + + public class WxTranUserQueryDTO + { + public string action { get; set; } + public string umid { get; set; } + public DateTime? starttime { get; set; } + public DateTime? endtime { get; set; } + public string midproductId { get; set; } + public string subProductId { get; set; } + public string txt_groupIds { get; set; } + public string txt_eid { get; set; } + public string txt_departmentid { get; set; } + public string txt_userId { get; set; } + public string txt_deptIds { get; set; } + public string txt_deptId { get; set; } + public int page { get; set; } = 1; + public int limit { get; set; } = 10; + } + + public class WxTranUserResultDTO + { + public string SoftUserName { get; set; } + public string Umid { get; set; } + public string ResId { get; set; } + public string CName { get; set; } + public string MidProductId { get; set; } + public string SubProductId { get; set; } + public string SubProductName { get; set; } + public DateTime? EndTime { get; set; } + public string Eids { get; set; } + public string Gids { get; set; } + public string Deptids { get; set; } + public bool HasInComplaint { get; set; } + public bool HasOutComplaint { get; set; } + public string LastServiceTime { get; set; } + public string LastServiceEid { get; set;} + } +} diff --git a/WEB/Controllers/WeiXin/JZOrderController.cs b/WEB/Controllers/WeiXin/JZOrderController.cs index 2bbc055..7fcddc4 100644 --- a/WEB/Controllers/WeiXin/JZOrderController.cs +++ b/WEB/Controllers/WeiXin/JZOrderController.cs @@ -5144,7 +5144,7 @@ namespace WX.CRM.WEB.Controllers.WeiXin //产品或服务不适当警示确认书 content = sHelper.encyptData(clientid, "I_DN" + order.SZZYORDERID.ToString()); sign = sHelper.signData(clientid, content); - string cphfwUrl = string.Format("{0}/{4}-产品或服务不适当警示及投资者确认书.pdf ?content={1}&sign={2}&clientId={3}&employeeId={5}&employeeName={6}&viewSource={7}&pageSource={8}", + string cphfwUrl = string.Format("{0}/{4}-产品或服务风险警示及投资者确认书.pdf ?content={1}&sign={2}&clientId={3}&employeeId={5}&employeeName={6}&viewSource={7}&pageSource={8}", url, HttpUtility.UrlEncode(content), HttpUtility.UrlEncode(sign), clientid, order.SUBPRODUCTNAME, Eid, UserName, @@ -5157,7 +5157,7 @@ namespace WX.CRM.WEB.Controllers.WeiXin //适当性评估结果确认书 content = sHelper.encyptData(clientid, "S_DN" + order.SZZYORDERID.ToString()); sign = sHelper.signData(clientid, content); - string sdxpgUrl = string.Format("{0}/{4}-适当性评估结果确认书.pdf ?content={1}&sign={2}&clientId={3}&employeeId={5}&employeeName={6}&viewSource={7}&pageSource={8}", + string sdxpgUrl = string.Format("{0}/{4}-适当性匹配意见及投资者确认书.pdf ?content={1}&sign={2}&clientId={3}&employeeId={5}&employeeName={6}&viewSource={7}&pageSource={8}", url, HttpUtility.UrlEncode(content), HttpUtility.UrlEncode(sign), clientid, order.SUBPRODUCTNAME, Eid, UserName, @@ -5167,6 +5167,10 @@ namespace WX.CRM.WEB.Controllers.WeiXin } } } + + ViewBag.RiskLevel = ret1.riskType.level; + ViewBag.IsC0User = ret1.isC0User; + ViewBag.IsC1_0User = ret1.isC1_0User; } ////适当性评估结果确认书 @@ -6612,16 +6616,32 @@ namespace WX.CRM.WEB.Controllers.WeiXin public class RiskInfoDto { public int ret { get; set; } + public string name { get; set; } + public string idCard { get; set; } public string answer { get; set; } public Int64 createTime { get; set; } - public string idCard { get; set; } - public string name { get; set; } public string key { get; set; } public string style { get; set; } public int index { get; set; } + public string version { get; set; } + public string expTime { get; set; } + public RiskType riskType { get; set; } + public int verifyType { get; set; } + public int auditStatus { get; set; } + public string auditRemark { get; set; } + public bool isC0User { get; set; } = false; + public bool isC1_0User { get; set; } = false; public string businesstype { get; set; } public int paperId { get; set; } } + public class RiskType + { + public int min { get; set; } + public int max { get; set; } + public string des { get; set; } + public string name { get; set; } + public string level { get; set; } + } public class WX_MYSZZYORDER_EXPORT { diff --git a/WEB/Views/Res/TranUser/Index.cshtml b/WEB/Views/Res/TranUser/Index.cshtml new file mode 100644 index 0000000..8530c52 --- /dev/null +++ b/WEB/Views/Res/TranUser/Index.cshtml @@ -0,0 +1,270 @@ +@using WX.CRM.WebHelper +@{ + ViewBag.Title = "bas_salesDepartment"; + Layout = "~/Views/Shared/_content.cshtml"; +} + + + + + + +
+ + + +
+
+
+
+
+ @Html.Action("UserSSOComBox", "Control", new + { + currentRight = WX.CRM.WebHelper.InitRights.CONST_我的订单, + @class = "layui-input", // 添加Layui输入框样式 + style = "width:150px;" // 保持与相邻select一致的宽度 + }) +
+ 客户id: +
+ +
+ 到期时间: +
+ +
+
+ +
+ 产品大类: +
+ +
+ 产品小类: +
+ +
+ +
+
+
+
+
+ +
+ + \ No newline at end of file diff --git a/WEB/Views/WeiXin/JZOrder/ViewContract3.cshtml b/WEB/Views/WeiXin/JZOrder/ViewContract3.cshtml index b96ac95..d37bd52 100644 --- a/WEB/Views/WeiXin/JZOrder/ViewContract3.cshtml +++ b/WEB/Views/WeiXin/JZOrder/ViewContract3.cshtml @@ -16,7 +16,7 @@ } #threeBtn { - display:none; + display: none; cursor: pointer; color: white; } @@ -68,107 +68,84 @@ - - 合同号: - - - @Html.Raw(ViewBag.CONTRACTCODE) - - - - 合同: - - - - - - -

合同状态:

- - -

- - - - -

合同驳回备注:

- - -

- - - - -

合规状态:

- - - @if (ViewBag.RiskCtrlStatus == -1) + 客户等级: + + @if (ViewBag.IsC0User) { - 驳回 + @Html.Raw("不符合准入条件") } - else if (ViewBag.RiskCtrlStatus == 0) + else if (ViewBag.IsC1_0User) { - 未审核 - } - else if (ViewBag.RiskCtrlStatus == 1) - { - 分部已审核 - } - else if (ViewBag.RiskCtrlStatus == 2) - { - 已通过 + @Html.Raw("C1_0(最低风险承受类别)") } else { - 未知 + @Html.Raw("C" + ViewBag.RiskLevel) } - - -

合规驳回备注:

- - - @if (ViewBag.RiskCtrlStatus == -1) - { -

- } - - - @* + @if (!string.IsNullOrEmpty(ViewBag.CONTRACTCODE)) + { + + + 合同号: + + + @Html.Raw(ViewBag.CONTRACTCODE) + + + + 合同: + + + + + + +

合同状态:

+ + +

+ + + + +

合同驳回备注:

+ + +

+ + +

合规状态:

- @if (ViewBag.RiskCtrlStatus == -1) - { -

合规驳回备注:

- } @if (ViewBag.RiskCtrlStatus == -1) { - 未通过,已驳回 + 驳回 } else if (ViewBag.RiskCtrlStatus == 0) { @@ -186,16 +163,27 @@ { 未知 } + + + + +

合规驳回备注:

+ + @if (ViewBag.RiskCtrlStatus == -1) { -

@ViewBag.RejectRemark

+

} - *@ - @* - - (备注:风控完成,点击确认按钮提交到总部) - *@ + + } + else + { + + + 未签订合同 + + } @*切回二要素*@ @*
diff --git a/WEB/WEB.csproj b/WEB/WEB.csproj index 5baf9e0..086afa7 100644 --- a/WEB/WEB.csproj +++ b/WEB/WEB.csproj @@ -271,6 +271,7 @@ + @@ -2104,6 +2105,7 @@ +