ComplianceServer/oldcode/Core.Web/Controllers/UserProtocolController.cs

642 lines
28 KiB
C#

using Core.Web.App_Start;
using Core.Web.WebHelper;
using CRM.Core.BLL.Base;
using CRM.Core.BLL.UserProtocol;
using CRM.Core.BLL.Util;
using CRM.Core.BLL.Wx;
using CRM.Core.Common.Layui;
using CRM.Core.Common.WebHelper;
using CRM.Core.Model.Entity;
using CRM.Core.Model.Enum;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text.RegularExpressions;
using System.Web;
using System.Web.Mvc;
using WX.CRM.Common;
using WX.CRM.WebHelper;
namespace Core.Web.Controllers
{
public class UserProtocolController : BaseController
{
private static USER_PROTOCOL_BL userProtocolbll = new USER_PROTOCOL_BL();
private BAS_PARAMETER_BL paramter_bl = new BAS_PARAMETER_BL();
private ValidationErrors errors = new ValidationErrors();
private CACHE_BL cache_BL = new CACHE_BL();
/// <summary>
/// 协议列表
/// </summary>
/// <returns></returns>
[AuthorizeRedirect(RightsConfig.CONST_用户协议, ToolBarConfig.CONST_NotButton, true)]
public ActionResult ProList()
{
ViewBag.rightCode = RightsConfig.CONST_用户协议;
var companyList = cache_BL.GetCompanyVirtual();
var allChannel = new List<Dictionary<string, string>>();
foreach (var company in companyList)
{
var channel = new Dictionary<string, string>
{
{ "name", company.CompanyName },
{ "value", company.Channel.Replace(",", ";") }
};
allChannel.Add(channel);
}
ViewBag.AllChannel = JsonHelper.ToJson(allChannel);
return View();
}
public JsonResult GetHtmlList(Laypage pager, string columns, string resid,string UMID, string username, string softusername,int? proType, int? status,
string subname,DateTime? subsdate,DateTime? subedate,string verifyname, DateTime? verifysdate,DateTime? verifyedate, string protocolno, string channel)
{
pager.order = "desc";
List<ProListView> list = userProtocolbll.PageList(ref pager, resid, UMID, username, softusername, proType,status, subname,subsdate, subedate, verifyname,verifysdate, verifyedate, protocolno, channel);
LayuiData<ProListView> data = new LayuiData<ProListView>()
{
msg = "数据加载成功!",
count = pager.count,
code = 0,
data = list
};
return Json(data, JsonRequestBehavior.AllowGet);
}
[HttpGet]
[AuthorizeRedirect(RightsConfig.CONST_用户协议, ToolBarConfig.CONST_Export, false)]
public FileResult Export(string resid, string UMID, string username, string softusername, int? proType, int? status,
string subname, DateTime? subsdate, DateTime? subedate, string verifyname, DateTime? verifysdate, DateTime? verifyedate, string protocolno, string channel)
{
Laypage pager = new Laypage();
pager.page = 1;
pager.limit = 30000;
List<ProListView> list = userProtocolbll.PageList(ref pager, resid, UMID, username, softusername, proType, status, subname, subsdate, subedate, verifyname, verifysdate, verifyedate, protocolno, channel);
List<ProtocolExport> data = new List<ProtocolExport>();
foreach(var item in list)
{
data.Add(new ProtocolExport
{
AUDITTIME = item.AUDITTIME,
RESID = item.RESID,
USERID = item.USERID,
CompanyName = item.CompanyName,
CREATER = item.CREATER,
CTIME = item.CTIME,
NOTE = item.NOTE,
PRICE = item.PRICE == 0 ? "" : item.PRICE.ToString(),
PROTOCOLNO = item.PROTOCOLNO,
PROTOCOLTYPENAME = item.PROTOCOLTYPENAME,
REVIEWER = item.REVIEWER,
STATUSNAME = item.STATUSNAME,
USERNAME = item.USERNAME
});
}
String file = string.Format("用户协议 {0}.xls", DateTime.Now.ToLocalTime().ToString("yyyyMMddHHmmssfffff"));
return File(ExcelHelper.ExportListModelToExcel<ProtocolExport>(data, "用户协议", 30000, null), "application/ms-excel", file);
}
/// <summary>
/// 编辑
/// </summary>
/// <returns></returns>
[AuthorizeRedirect(RightsConfig.CONST_用户协议, ToolBarConfig.CONST_Edit, true)]
public ActionResult Edit() {
return View();
}
/// <summary>
/// 新增
/// </summary>
/// <returns></returns>
[AuthorizeRedirect(RightsConfig.CONST_用户协议, ToolBarConfig.CONST_Add, true)]
public ActionResult Add()
{
//select * from BAS_PARAMETERGROUP
ViewBag.ParamGroupList= paramter_bl.GetParamGroup();
return View();
}
/// <summary>
/// 审核
/// </summary>
/// <returns></returns>
[AuthorizeRedirect(RightsConfig.CONST_用户协议, ToolBarConfig.CONST_Other1, true)]
public ActionResult Aduit(int ID)
{
SecurityHelper sHelper = new SecurityHelper();
var model = userProtocolbll.GetOne(ID);
var url = paramter_bl.GetValue_Parameter(Parameter.User_Protocol_NewUrl);
string pdfName = userProtocolbll.ProtocolName(model.PROTOCOLTYPE) + ".pdf";//协议名称
string timeF = "yyyy年MM月dd日";
//和解协议
if ((ProtocolType)model.PROTOCOLTYPE == ProtocolType.退)
{
#region 退
var json = new
{
ctime = model.CTIME?.ToString(timeF),
jiaRefundPrice = model.PRICE,
yiRefundPrice = model.PRICE,
uid = model.USERID,
agreementNum = model.ID,
htid = model.PROTOCOLNO
};
string clientid = SecurityHelper.OrderClientIdKey;
string content = sHelper.encyptData(clientid, Utility.ConvertToJSON(json));
string sign = sHelper.signData(clientid, content);
ViewBag.url = url + string.Format("/agreement/reconcile-refund?content={0}&sign={1}&clientId={2}", HttpUtility.UrlEncode(content), HttpUtility.UrlEncode(sign), clientid);
//var url1 = paramter_bl.GetValue_Parameter(Parameter.UserCenter_RiaService_Settlement);
//ViewBag.url = string.Format(url1+"?content={0}&sign={1}&clientId={2}", HttpUtility.UrlEncode(content), HttpUtility.UrlEncode(sign), clientid);
ViewBag.pdfName = pdfName;
//协议文件地址
if (model.STATUS != 0)
{
var pdfurl = paramter_bl.GetValue_Parameter(Parameter.UserCenter_RiaService_SignPdf);
var pdfcontent = sHelper.encyptData(clientid, string.Format("{0}_A_{1}", model.USERID, model.ID));
var pdfsign = sHelper.signData(clientid, pdfcontent);
string fxjssUrl = string.Format("{0}/{4}?content={1}&sign={2}&clientId={3}&employeeId={5}&employeeName={6}&viewSource={7}&pageSource={8}",
pdfurl,
HttpUtility.UrlEncode(pdfcontent),
HttpUtility.UrlEncode(pdfsign),
clientid,
pdfName,
Eid,
UserName,
"数智化合规",
"用户协议"
);
ViewBag.pdfUrl = fxjssUrl;
//ViewBag.pdfUrl = string.Format("{0}/{1}?content={2}&sign={3}&clientId={4}", pdfurl, pdfName, HttpUtility.UrlEncode(pdfcontent), HttpUtility.UrlEncode(pdfsign), clientid);
}
else
{
ViewBag.pdfUrl = "#";
}
ViewBag.status = model.STATUS;
#endregion
}
else if ((ProtocolType)model.PROTOCOLTYPE == ProtocolType.)
{
#region
var json = new
{
ctime = model.CTIME?.ToString(timeF),
uid = model.USERID,
agreementNum = model.ID,
htid = model.PROTOCOLNO
};
string clientid = SecurityHelper.OrderClientIdKey;
string content = sHelper.encyptData(clientid, Utility.ConvertToJSON(json));
string sign = sHelper.signData(clientid, content);
ViewBag.url = url + string.Format("/agreement/repeal-complaint?content={0}&sign={1}&clientId={2}", HttpUtility.UrlEncode(content), HttpUtility.UrlEncode(sign), clientid);
//var url2 = paramter_bl.GetValue_Parameter(Parameter.UserCenter_RiaService_CancelComplaint);
//ViewBag.url = string.Format(url2 + "?content={0}&sign={1}&clientId={2}", HttpUtility.UrlEncode(content), HttpUtility.UrlEncode(sign), clientid);
ViewBag.pdfName = pdfName;
var viewSource = "数智化合规系统";
var pageSource = "Audit:用户协议.风控";
//协议文件地址
if (model.STATUS != 0)
{
var pdfurl = paramter_bl.GetValue_Parameter(Parameter.UserCenter_RiaService_SignPdf);
//风险揭示书
var pdfcontent = sHelper.encyptData(clientid, string.Format("{0}_B_{1}", model.USERID, model.ID));
var pdfsign = sHelper.signData(clientid, pdfcontent);
string fxjssUrl = string.Format("{0}/{4}?content={1}&sign={2}&clientId={3}&employeeId={5}&employeeName={6}&viewSource={7}&pageSource={8}",
pdfurl,
HttpUtility.UrlEncode(pdfcontent),
HttpUtility.UrlEncode(pdfsign),
clientid,
pdfName,
Eid,
UserName,
viewSource,
pageSource
);
ViewBag.pdfUrl = fxjssUrl;
//ViewBag.pdfUrl = string.Format("{0}/{1}?content={2}&sign={3}&clientId={4}", pdfurl, pdfName, HttpUtility.UrlEncode(pdfcontent), HttpUtility.UrlEncode(pdfsign), clientid);
}
else
{
ViewBag.pdfUrl = "#";
}
ViewBag.status = model.STATUS;
#endregion
}
else if ((ProtocolType)model.PROTOCOLTYPE == ProtocolType.退)
{
#region 退
var json = new
{
ctime = model.CTIME?.ToString(timeF),
uid = model.USERID,
agreementNum = model.ID,
htid = model.PROTOCOLNO
};
string clientid = SecurityHelper.OrderClientIdKey;
string content = sHelper.encyptData(clientid, Utility.ConvertToJSON(json));
string sign = sHelper.signData(clientid, content);
ViewBag.url = url + string.Format("/agreement/reconcile?content={0}&sign={1}&clientId={2}", HttpUtility.UrlEncode(content), HttpUtility.UrlEncode(sign), clientid);
//var url1 = paramter_bl.GetValue_Parameter(Parameter.UserCenter_RiaService_Settlement);
//ViewBag.url = string.Format(url1 + "?content={0}&sign={1}&clientId={2}", HttpUtility.UrlEncode(content), HttpUtility.UrlEncode(sign), clientid);
ViewBag.pdfName = pdfName;
//协议文件地址
if (model.STATUS != 0)
{
var pdfurl = paramter_bl.GetValue_Parameter(Parameter.UserCenter_RiaService_SignPdf);
var pdfcontent = sHelper.encyptData(clientid, string.Format("{0}_A_{1}", model.USERID, model.ID));
var pdfsign = sHelper.signData(clientid, pdfcontent);
string fxjssUrl = string.Format("{0}/{4}?content={1}&sign={2}&clientId={3}&employeeId={5}&employeeName={6}&viewSource={7}&pageSource={8}",
pdfurl,
HttpUtility.UrlEncode(pdfcontent),
HttpUtility.UrlEncode(pdfsign),
clientid,
pdfName,
Eid,
UserName,
"数智化合规",
"用户协议"
);
ViewBag.pdfUrl = fxjssUrl;
//ViewBag.pdfUrl = string.Format("{0}/{1}?content={2}&sign={3}&clientId={4}", pdfurl, pdfName, HttpUtility.UrlEncode(pdfcontent), HttpUtility.UrlEncode(pdfsign), clientid);
}
else
{
ViewBag.pdfUrl = "#";
}
ViewBag.status = model.STATUS;
#endregion
}
else if ((ProtocolType)model.PROTOCOLTYPE == ProtocolType.退)
{
#region 退
var json = new
{
ctime = model.CTIME?.ToString(timeF),
uid = model.USERID,
agreementNum = model.ID,
productname = (model.PRODUCTTYPE == 1 ? model.PRODUCTNAME : model.SERVICENAME),
giftdays = model.GIFTDAYS,
htid = model.PROTOCOLNO
};
var ApiName = model.PRODUCTTYPE == 1 ? "gift-product-refund" : "gift-service-refund";
string clientid = SecurityHelper.OrderClientIdKey;
string content = sHelper.encyptData(clientid, Utility.ConvertToJSON(json));
string sign = sHelper.signData(clientid, content);
ViewBag.url = url + string.Format("/agreement/{3}?content={0}&sign={1}&clientId={2}", HttpUtility.UrlEncode(content), HttpUtility.UrlEncode(sign), clientid, ApiName);
ViewBag.pdfName = pdfName;
//协议文件地址
if (model.STATUS != 0)
{
var pdfurl = paramter_bl.GetValue_Parameter(Parameter.UserCenter_RiaService_SignPdf);
var pdfcontent = sHelper.encyptData(clientid, string.Format("{0}_C_{1}", model.USERID, model.ID));
var pdfsign = sHelper.signData(clientid, pdfcontent);
string fxjssUrl = string.Format("{0}/{4}?content={1}&sign={2}&clientId={3}&employeeId={5}&employeeName={6}&viewSource={7}&pageSource={8}",
pdfurl,
HttpUtility.UrlEncode(pdfcontent),
HttpUtility.UrlEncode(pdfsign),
clientid,
pdfName,
Eid,
UserName,
"数智化合规",
"用户协议"
);
ViewBag.pdfUrl = fxjssUrl;
//ViewBag.pdfUrl = string.Format("{0}/{1}?content={2}&sign={3}&clientId={4}", pdfurl, pdfName, HttpUtility.UrlEncode(pdfcontent), HttpUtility.UrlEncode(pdfsign), clientid);
}
else
{
ViewBag.pdfUrl = "#";
}
ViewBag.status = model.STATUS;
#endregion
}
else if ((ProtocolType)model.PROTOCOLTYPE == ProtocolType.退)
{
#region 退
var json = new
{
ctime = model.CTIME?.ToString(timeF),
uid = model.USERID,
agreementNum = model.ID,
productname = (model.PRODUCTTYPE == 1 ? model.PRODUCTNAME : model.SERVICENAME),
giftdays = model.GIFTDAYS,
htid = model.PROTOCOLNO
};
var ApiName = model.PRODUCTTYPE == 1 ? "gift-product" : "gift-service";
string clientid = SecurityHelper.OrderClientIdKey;
string content = sHelper.encyptData(clientid, Utility.ConvertToJSON(json));
string sign = sHelper.signData(clientid, content);
ViewBag.url = url + string.Format("/agreement/{3}?content={0}&sign={1}&clientId={2}", HttpUtility.UrlEncode(content), HttpUtility.UrlEncode(sign), clientid, ApiName);
ViewBag.pdfName = pdfName;
//协议文件地址
if (model.STATUS != 0)
{
var pdfurl = paramter_bl.GetValue_Parameter(Parameter.UserCenter_RiaService_SignPdf);
var pdfcontent = sHelper.encyptData(clientid, string.Format("{0}_C_{1}", model.USERID, model.ID));
var pdfsign = sHelper.signData(clientid, pdfcontent);
string fxjssUrl = string.Format("{0}/{4}?content={1}&sign={2}&clientId={3}&employeeId={5}&employeeName={6}&viewSource={7}&pageSource={8}",
pdfurl,
HttpUtility.UrlEncode(pdfcontent),
HttpUtility.UrlEncode(pdfsign),
clientid,
pdfName,
Eid,
UserName,
"数智化合规",
"用户协议"
);
ViewBag.pdfUrl = fxjssUrl;
//ViewBag.pdfUrl = string.Format("{0}/{1}?content={2}&sign={3}&clientId={4}", pdfurl, pdfName, HttpUtility.UrlEncode(pdfcontent), HttpUtility.UrlEncode(pdfsign), clientid);
}
else
{
ViewBag.pdfUrl = "#";
}
ViewBag.status = model.STATUS;
#endregion
}
else if ((ProtocolType)model.PROTOCOLTYPE == ProtocolType.)
{
#region
var json = new
{
ctime = model.CTIME?.ToString(timeF),
uid = model.USERID,
agreementNum = model.ID,
htid = model.PROTOCOLNO
};
string clientid = SecurityHelper.OrderClientIdKey;
string content = sHelper.encyptData(clientid, Utility.ConvertToJSON(json));
string sign = sHelper.signData(clientid, content);
ViewBag.url = url + string.Format("/agreement/elderly-investment-risk-book?content={0}&sign={1}&clientId={2}", HttpUtility.UrlEncode(content), HttpUtility.UrlEncode(sign), clientid);
ViewBag.pdfName = pdfName;
//协议文件地址
if (model.STATUS != 0)
{
var pdfurl = paramter_bl.GetValue_Parameter(Parameter.UserCenter_RiaService_SignPdf);
var pdfcontent = sHelper.encyptData(clientid, string.Format("{0}_D_{1}", model.USERID, model.ID));
var pdfsign = sHelper.signData(clientid, pdfcontent);
string fxjssUrl = string.Format("{0}/{4}?content={1}&sign={2}&clientId={3}&employeeId={5}&employeeName={6}&viewSource={7}&pageSource={8}",
pdfurl,
HttpUtility.UrlEncode(pdfcontent),
HttpUtility.UrlEncode(pdfsign),
clientid,
pdfName,
Eid,
UserName,
"数智化合规",
"用户协议"
);
ViewBag.pdfUrl = fxjssUrl;
//ViewBag.pdfUrl = string.Format("{0}/{1}?content={2}&sign={3}&clientId={4}", pdfurl, pdfName, HttpUtility.UrlEncode(pdfcontent), HttpUtility.UrlEncode(pdfsign), clientid);
}
else
{
ViewBag.pdfUrl = "#";
}
ViewBag.status = model.STATUS;
#endregion
}
ViewBag.model = model;
ViewBag.ModelJson = JsonHelper.ObjDivertToJson(model);
ViewBag.StatusName = userProtocolbll.StatusName(model.STATUS);
ViewBag.GiftStatusName = userProtocolbll.GetGiftOrderStatusStr(model.ORDERID);
return View();
}
/// <summary>
/// 数据插入
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public JsonResult Save(SubmitModel model) {
SYS_USER_PROTOCOL d = new SYS_USER_PROTOCOL();
d.RESID = model.resid.Trim();
d.USERNAME = model.username;
d.PROTOCOLTYPE = model.protocolType;
d.PRODUCTTYPE = model.producttype;
d.SERVICENAME = model.servicename;
d.PRODUCTNAME = model.productname;
d.GIFTDAYS = model.giftdays ?? 0;
d.ORDERID = model.orderid;
d.PRICE = model.price ?? 0;
d.USERID = model.userid;
d.NOTE = model.note ?? "";
d.STATUS = 0;//默认未签订
d.CTIME = DateTime.Now;
d.creater = UserName;
d.PROTOCOLNO = CreateProtocolNo(model.protocolType);
//退款金额判断
if ((ProtocolType)model.protocolType == ProtocolType.退)
{
WX_SZZYORDER_BL wx_SzzyOrder_BL = new WX_SZZYORDER_BL();
WX_SzzyOrderRefund_BL wx_szzyorderrefund_BL = new WX_SzzyOrderRefund_BL();
var list = wx_SzzyOrder_BL.GetModelByResId(model.resid);//查询订单
var refundList = wx_szzyorderrefund_BL.GetListByResid(model.resid);
var sumPrice = list.Where(m=> "80,90,200,205,220".Split(',').Contains(m.ORDERSTATUS)).Sum(m => m.ARRIVALPAY);
sumPrice -= refundList.Sum(m => m.refundprice);
if ((model.price ?? 0) > sumPrice && !model.confirm) {
return Json(new { s = false, m = "当前退款金额大于(客户各订单到账金额总和-已退款金额),请确认是否提交?", c = true }, JsonRequestBehavior.AllowGet);
}
}
//验证通过后插入
var res = userProtocolbll.Create(ref errors,d);
if (res)
{
return Json(new { s = true }, JsonRequestBehavior.AllowGet);
}
else {
return Json(new { s =false, errors }, JsonRequestBehavior.AllowGet);
}
}
private string CreateProtocolNo(int protocolType)
{
var no = "";
switch ((ProtocolType)protocolType)
{
case ProtocolType.退:
case ProtocolType.退:
no = "HJ";
break;
case ProtocolType.退:
case ProtocolType.退:
no = "ZY";
break;
case ProtocolType.:
no = "CX";
break;
case ProtocolType.:
no = "GL";
break;
}
no += $"{DateTimeOffset.Now.ToUnixTimeMilliseconds()}";
return no;
}
/// <summary>
/// 签订协议
/// </summary>
/// <param name="ID"></param>
/// <returns></returns>
public JsonResult SignProtocol(int ID) {
try
{
var model = userProtocolbll.GetOne(ID);
if (model != null && model.STATUS == 1)
{
var res = userProtocolbll.AuditModel(ID, 9,UserName);//审核通过
return Json(new { s = res }, JsonRequestBehavior.AllowGet);
}
else {
return Json(new { s = false,m="签署后才能审核!" }, JsonRequestBehavior.AllowGet);
}
}
catch (Exception ex)
{
return Json(new { s = false,m=ex.Message }, JsonRequestBehavior.AllowGet);
}
}
public JsonResult UserInfo(string resid) {
WX_SZZYORDER_BL wx_SzzyOrder_BL = new WX_SZZYORDER_BL();
Wx_SzzyOrder_HandGift_BL wx_SzzyOrder_HandGift_BL = new Wx_SzzyOrder_HandGift_BL();
if (string.IsNullOrEmpty(resid)) {
return Json(new {s=false }, JsonRequestBehavior.AllowGet);
}
var list = wx_SzzyOrder_BL.GetModelByResId(resid);//查询订单
var giftList = wx_SzzyOrder_HandGift_BL.GetListByResid(resid);//赠送产品
list = list.Where(m => !string.IsNullOrEmpty(m.idcard)).ToList();//筛选已经实名制有效订单
giftList = giftList.Where(m =>
list.Where(i=> "80,90,200,210,220".Split(',').Contains(i.ORDERSTATUS)).Select(o => o.ORDERID).Contains(m.mainorderid)//主订单状态
&& (m.orderstatus == 0 || m.orderstatus == 1)).ToList();//赠送订单状态
if (list.Any())
{
var userNameList = list.GroupBy(m=>m.SOFTUSERNAME).Select(m => m.Key);
var cName = list.OrderByDescending(m => m.CTIME).First().CNAME;
var orderList = new List<IDictionary<string, object>>();
foreach (var item in giftList)
{
IDictionary<string, object> r = new Dictionary<string, object>();
r.Add("orderid", item.orderid);
r.Add("productname", item.subproductname);
r.Add("giftdays", item.giftdays);
orderList.Add(r);
}
return Json(new {s=true,d= new { userNameList, cName, orderList } }, JsonRequestBehavior.AllowGet);
}
else
{
return Json(new { s = false }, JsonRequestBehavior.AllowGet);
}
}
}
public class SubmitModel {
public string resid { get; set; }
public string userid { get; set; }
public string username { get; set; }
public int protocolType { get; set; }
/// <summary>
/// 产品类型
/// </summary>
public int? producttype { get; set; }
/// <summary>
/// 赠送产品id
/// </summary>
public decimal? orderid { get; set; }
/// <summary>
/// 赠送产品名称
/// </summary>
public string productname { get; set; }
/// <summary>
/// 赠送服务名称
/// </summary>
public string servicename { get; set; }
/// <summary>
/// 赠送天数
/// </summary>
public int? giftdays { get; set; }
public decimal? price { get; set; }
public string note { get; set; }
public bool confirm { get; set; }
}
public class ProtocolExport
{
[DisplayName("协议编号")]
public string PROTOCOLNO { get; set; }
[DisplayName("事业部")]
public string CompanyName { get; set; }
[DisplayName("客户id")]
public string RESID { get; set; }
[DisplayName("客户姓名")]
public string USERNAME { get; set; }
[DisplayName("用户名")]
public string USERID { get; set; }
[DisplayName("协议")]
public string PROTOCOLTYPENAME { get; set; }
/// <summary>
/// 和解协议 金额
/// </summary>
[DisplayName("退款金额")]
public string PRICE { get; set; }
[DisplayName("协议状态")]
public string STATUSNAME { get; set; }
[DisplayName("备注")]
public string NOTE { get; set; }
[DisplayName("创建人")]
public string CREATER { get; set; }
[DisplayName("创建时间")]
public DateTime? CTIME { get; set; }
[DisplayName("审核人")]
public string REVIEWER { get; set; }
[DisplayName("审核时间")]
public DateTime? AUDITTIME { get; set; }
}
}