| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Threading.Tasks;
- using Microsoft.AspNetCore.Mvc;
- using Microsoft.AspNetCore.Authorization;
- using MadRunFabric.Common;
- using WorkOrderApi.IRepositories;
- using Microsoft.Extensions.Logging;
- using System.Security.Claims;
- using MadRunFabric.Model.WorkOrderApi;
- using WorkOrderApi.Areas.Hy_Order.Input;
- using MongoDB.Bson;
- using Microsoft.Extensions.Configuration;
- using System.Reflection;
- using ConfigurationApi.IRepositories;
- using System.Data;
- using WorkOrderApi.Model.Dto;
- using MongoDB.Driver;
- // For more information on enabling MVC for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
- namespace WorkOrderApi.Areas.Hy_Order.Controllers
- {
- /// <summary>
- /// 客户档案 - 售后管理系统
- /// </summary>
- [Area("hy")]
- //[Authorize]
- [ApiVersion("6.0")]
- [Route("api/[controller]")]
- [Produces("application/json")]
- public class CusCustomerController : BaseController
- {
- private readonly ILogger<CusCustomerController> _logger;
- private readonly ICus_Customer_BaseRepository _cus_customer_baseRepository;
- private readonly ICus_Customer_ProjectRepository _cus_customer_projectepository;
- private readonly IConfiguration _configuration;
- private readonly ISys_DictionaryValueRepository _sys_dictionaryValuerepository;
- private readonly ICus_FollowRecordRepository _cus_followrecordrepository;
- private readonly ISys_ProvincesRepository _sys_provincesrepository;
- private readonly ISys_CityRepository _sys_cityrepository;
- public CusCustomerController(
- ILogger<CusCustomerController> logger,
- ICus_Customer_BaseRepository cus_customer_baseRepository,
- IConfiguration configuration,
- ICus_Customer_ProjectRepository cus_customer_projectepository,
- ISys_DictionaryValueRepository sys_dictionaryValuerepository,
- ICus_FollowRecordRepository cus_followrecordrepository,
- ISys_ProvincesRepository sys_provincesrepository,
- ISys_CityRepository sys_cityrepository
- )
- {
- _logger = logger;
- _cus_customer_baseRepository = cus_customer_baseRepository;
- _configuration = configuration;
- _cus_customer_projectepository = cus_customer_projectepository;
- _sys_dictionaryValuerepository = sys_dictionaryValuerepository;
- _cus_followrecordrepository = cus_followrecordrepository;
- _sys_provincesrepository = sys_provincesrepository;
- _sys_cityrepository = sys_cityrepository;
- }
- #region 客户档案
- /// <summary>
- /// 获取客户分页
- /// </summary>
- [HttpGet("getlistbypage")]
- public IActionResult GetListsByPageAsync(string keyword, string province, string city, string stime, string etime, int pageindex = 1, int pagesize = 10)
- {
- string rolecode = User.Claims.FirstOrDefault(c => c.Type == "RoleCode").Value;
- string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
- int recordCount = 0;
- var result = _cus_customer_baseRepository.GetListsByPage(keyword, province, city, stime, etime, rolecode, usercode, pageindex, pagesize, out recordCount);
- var obj = new
- {
- rows = result.ToList(),
- total = recordCount
- };
- return Success("获取成功", obj);
- }
- /// <summary>
- /// 获取客户详情 by 手机,单位名称
- /// </summary>
- /// <param name="tel"></param>
- /// <param name="companyame"></param>
- /// <returns></returns>
- [HttpGet("getsinglebytelcompanyame")]
- public async Task<IActionResult> GetSingleByTelCompanyameAsync(string tel, string companyame)
- {
- if (string.IsNullOrEmpty(tel))
- return Success("参数错误", null);
- var model = (await _cus_customer_baseRepository.GetSingle(x => x.mobilephone == tel && x.companyame == companyame && x.isdelete == 0));
- return Success("获取成功", model);
- }
- /// <summary>
- /// 获取客户详情
- /// </summary>
- [HttpGet("getsingle")]
- public async Task<IActionResult> GetSingleAsync(string id)
- {
- var model = await _cus_customer_baseRepository.GetSingle(x => x.id == id && x.isdelete == 0);
- return Success("获取成功", model);
- }
- /// <summary>
- /// 添加客户
- /// </summary>
- [HttpPost("add")]
- public async Task<IActionResult> AddAsync(CusCustomerInput input)
- {
- string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
- string username = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name).Value;
- try
- {
- #region 判断验证
- if (string.IsNullOrWhiteSpace(input.name))
- return Error("请输入联系人");
- if (string.IsNullOrEmpty(input.mobilephone))
- return Error("请输入手机号码");
- var listCus = await _cus_customer_baseRepository.Get(x => x.mobilephone == input.mobilephone && x.isdelete == 0);
- var model = listCus.FirstOrDefault();
- if (model != null)
- return Error("手机号码已存在");
- #endregion
- model = new Cus_Customer_Base();
- #region model 添加客户对象
- //model.id = cusid;
- model.name = input.name;
- model.mobilephone = input.mobilephone;
- model.telephone = input.telephone;
- model.manager = input.manager;
- model.customername = input.customername;
- model.companyame = input.companyame;
- model.province = input.province; //省
- model.city = input.city; //市
- model.address = input.address;
- model.iscustomer = input.iscustomer;
- model.customfields = input.customfields;
- model.rolecode = input.rolecodes;
- model.usercode = input.usercodes;
- model.createuser = usercode;
- model.createusername = username;
- #endregion
- string customerid = await _cus_customer_baseRepository.AddRetID(model);
- if (!string.IsNullOrEmpty(customerid))
- {
- return Success("保存成功");
- }
- else
- return Error("保存失败");
- }
- catch (Exception ex)
- {
- return Error(ex.Message);
- }
- }
- /// <summary>
- /// 修改客户
- /// </summary>
- [HttpPost("update")]
- public async Task<IActionResult> UpdateAsync(CusCustomerInput input)
- {
- string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
- string username = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name).Value;
- var model = (await _cus_customer_baseRepository.Get(p => p.id == input.id)).FirstOrDefault();
- if (model != null)
- {
- #region 判断验证
- if (model.isdelete == 1)
- return Error("用户已删除");
- if (string.IsNullOrWhiteSpace(input.name))
- return Error("请输入联系人");
- if (string.IsNullOrEmpty(input.mobilephone))
- return Error("请输入联系电话");
- #endregion
- #region model 客户对象
- model.name = input.name;
- model.mobilephone = input.mobilephone;
- model.telephone = input.telephone;
- model.manager = input.manager;
- model.customername = input.customername;
- model.companyame = input.companyame;
- model.province = input.province; //省
- model.city = input.city; //市
- model.address = input.address;
- model.iscustomer = input.iscustomer;
- model.customfields = input.customfields;
- model.rolecode = input.rolecodes;
- model.usercode = input.usercodes;
- #endregion
- bool b = await _cus_customer_baseRepository.UpdateOne(model);
- if (b)
- {
- return Success("保存成功");
- }
- else
- return Error("保存失败");
- }
- return Error("参数错误");
- }
- /// <summary>
- /// 删除客户
- /// </summary>
- /// <param name="ids"></param>
- /// <returns></returns>
- [HttpPost("delete")]
- public async Task<IActionResult> DeleteAsync(string[] ids)
- {
- string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
- string username = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name).Value;
- //使用逻辑删除
- var res = 0;
- if (ids != null && ids.Length > 0)
- {
- foreach (var id in ids)
- {
- var model = await _cus_customer_baseRepository.GetSingle(id);
- model.isdelete = 1;
- model.deleteuser = usercode;
- model.deletetime = DateTime.Now;
- if (await _cus_customer_baseRepository.UpdateOne(model))
- {
- #region 删除相关表数据
- var listCus_Pro = await _cus_customer_projectepository.Get(p => p.customerid == model.id && p.isdelete == 0);
- foreach (var modelPro in listCus_Pro)
- {
- modelPro.isdelete = 1;
- modelPro.deleteuser = usercode;
- modelPro.deletetime = DateTime.Now;
- await _cus_customer_projectepository.UpdateOne(modelPro);
- }
- #endregion
- res += 1;
- }
- }
- if (res == ids.Length)
- return Success("删除成功");
- else if (res > 0 && res < ids.Length)
- return Error("部分删除失败");
- else
- return Error("删除失败");
- }
- else
- return Error("请选择要删除的记录");
- }
- /// <summary>
- /// 上传文件并导入数据库 - 客户档案
- /// </summary>
- /// <param name="headrow">默认为-1:1、为-1时,获取excel标题;2、为0时,不获取excel标题</param>
- /// <returns></returns>
- [HttpPost("importexcelcus")]
- public async Task<IActionResult> ImportExcelCus(int headrow = -1)
- {
- string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
- string username = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name).Value;
- Microsoft.AspNetCore.Http.IFormFile _upfile = Request.Form.Files[0];
- if (!_upfile.ContentType.Equals("application/vnd.ms-excel") && !_upfile.ContentType.Equals("application/x-xls") && !_upfile.ContentType.Equals("application/x-xlsx") && !_upfile.ContentType.Equals("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") && !_upfile.ContentType.Equals("application/octet-stream"))
- return Error($"请正确上传Excel文件:file.ContentType={_upfile.ContentType}");
- NPOIHelper npoi = new NPOIHelper();
- var dtExcel = npoi.ExcelToTable1(_upfile, headrow);
- int num = dtExcel.Rows.Count;
- var cols = dtExcel.Columns;
- int colnum = cols.Count;
- string dbkeys = _configuration["upload:acotdbkeys"].ToString();
- string[] dbcols = dbkeys.Split(",");
- string errmsg = string.Empty;
- if (num > 0)
- {
- var list_pro = (await _sys_provincesrepository.Get()).ToList();
- var list_city = (await _sys_cityrepository.GetAll()).ToList();
- int index = 1;
- // 初始化新增列(字段名称)
- string fields_names = string.Empty;
- foreach (System.Data.DataRow dr in dtExcel.Rows)
- {
- var dbcolslist = dbcols.ToList();
- if (index == 1)
- {
- // 获取第一行标题 dbcolslist.Count
- for (int i = 0; i < colnum; i++)
- {
- fields_names = dr[i].ToString() + ",";
- }
- fields_names = fields_names.TrimEnd(',');
- }
- else
- {
- // 获取数据
- var model = new Cus_Customer_Base();
- model.createuser = usercode;
- model.createusername = username;
- //model.cusname = dr.cusname;
- //model.phone = dr.phone;
- //model.cusaddr = dr.cusaddr;
- model.createtime = DateTime.Now.ToLocalTime();
- Type t = model.GetType();
- PropertyInfo[] PropertyList = t.GetProperties();
- var province_code = "";
- foreach (PropertyInfo item in PropertyList)
- {
- if (dbcolslist.Contains(item.Name))
- {
- object v = Convert.ChangeType(dr[dbcolslist.IndexOf(item.Name)].ToString(), item.PropertyType);
- #region 省市获取code by name
- if (item.Name == "province")
- {
- var model_pro = list_pro.FirstOrDefault(x => x.provincename.Equals(v.ToString()));
- province_code = model_pro != null ? model_pro.provincecode : "";
- item.SetValue(model, province_code, null);
- }
- if (item.Name == "city")
- {
- var model_city = list_city.FirstOrDefault(x => x.provincecode.Equals(province_code) && x.cityname.Equals(v.ToString()));
- var city_code = model_city != null ? model_city.citycode : "";
- item.SetValue(model, city_code, null);
- }
- #endregion
- item.SetValue(model, v, null);
- }
- }
- #region 自定义新增列 - 处理
- var fields_names_list = fields_names.Split(",").ToList();
- var customfields = new List<CustomfieldsList>();
- for (int i = dbcolslist.Count; i < colnum; i++)
- {
- var model_fields = new CustomfieldsList();
- string name = fields_names_list[i];
- string fields = ChineseToPinYin.Convert(name);
- string value = dr[i].ToString();
- model_fields.name = name;
- model_fields.fields = fields;
- model_fields.value = value;
- customfields.Add(model_fields);
- }
- #endregion
- model.customfields = customfields;
- bool b = await _cus_customer_baseRepository.Add(model);
- if (!b)
- {
- if (!string.IsNullOrEmpty(errmsg))
- {
- errmsg = errmsg + "\r\n第" + index + "行导入失败!";
- }
- else
- {
- errmsg = "第" + index + "行导入失败!";
- }
- }
- }
- index++;
- }
- }
- else
- {
- return Error("文件中无数据");
- }
- if (!string.IsNullOrEmpty(errmsg))
- {
- //删除已导入的部分
- return Error(errmsg);
- }
- return Success("导入成功");
- }
- /// <summary>
- /// 导出excel - 客户档案
- /// </summary>
- /// <param name="taskid"></param>
- /// <param name="calloutok"></param>
- /// <returns></returns>
- [Authorize]
- [HttpGet("exportexcelcus")]
- [AllowAnonymous]
- public IActionResult ExportExcelCusAsync(string keyword, string province, string city, string stime, string etime)
- {
- string rolecode = User.Claims.FirstOrDefault(c => c.Type == "RoleCode").Value;
- string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
- try
- {
- var result = _cus_customer_baseRepository.GetListsExport(keyword, province, city, stime, etime, rolecode, usercode);
- //导出
- NPOIHelper npoi = new NPOIHelper();
- var tlist = result.ToList();
- var tb = ModelConvertHelper<Cus_Customer_BaseDto>.ConvertListToDataTable(tlist);
- string[] cols = { "姓名", "手机号码", "固定号码", "所在省", "所在市", "具体地址" };
- string[] colname = { "name", "mobilephone", "telephone", "provincename", "cityname", "address" };
- byte[] sm = npoi.ExportToExcel1(tb, cols, colname);
- if (sm != null)
- {
- return File(sm, "application/vnd.ms-excel", "客户档案信息.xlsx");
- }
- else
- {
- return Error("导出失败");
- }
- }
- catch (Exception ex)
- {
- _logger.LogError(ex, "导出异常");
- return Error("导出失败");
- }
- }
- /// <summary>
- /// 转移客户
- /// </summary>
- [HttpPost("move")]
- public async Task<IActionResult> MoveAsync(string id,string rolecode, string usercode)
- {
- string nowusercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
- string username = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name).Value;
- var model = (await _cus_customer_baseRepository.Get(p => p.id == id)).FirstOrDefault();
- if (model != null)
- {
- #region 判断验证
- if (model.isdelete == 1)
- return Error("用户已删除");
- //if (string.IsNullOrWhiteSpace(model.rolecode))
- // return Error("无需转移客户信息");
- if (string.IsNullOrEmpty(model.usercode))
- return Error("此用户不是个人用户,无转移权限");
- #endregion
- #region model 客户对象
- model.rolecode = rolecode;
- model.usercode = usercode;
- #endregion
- bool b = await _cus_customer_baseRepository.UpdateOne(model);
- if (b)
- {
- return Success("保存成功");
- }
- else
- return Error("保存失败");
- }
- return Error("参数错误");
- }
- #endregion
- #region 来电弹屏
- /// <summary>
- /// 获取客户详情 by tel - 来电弹屏
- /// </summary>
- [HttpGet("getsinglebytelold")]
- public async Task<IActionResult> GetSingleByTelAsyncOLD(string tel)
- {
- if (string.IsNullOrEmpty(tel))
- return Success("参数错误", null);
- var list = (await _cus_customer_baseRepository.Get(x => x.mobilephone == tel && x.isdelete == 0)).ToList();
- var model = list.FirstOrDefault();
- return Success("获取成功", model);
- }
- //2019-2-20去掉客户信息部分做修改
- /// <summary>
- /// 获取客户项目详情 by tel - 来电弹屏
- /// </summary>
- [HttpGet("getsinglebytel")]
- public async Task<IActionResult> GetSingleByTelAsync(string tel)
- {
- if (string.IsNullOrEmpty(tel))
- return Success("参数错误", null);
- var list = (await _cus_customer_projectepository.Get(x => (x.project_mobilephone == tel || x.mobilephone == tel) && x.isdelete == 0)).ToList();
- var model = list.FirstOrDefault();
- return Success("获取成功", model);
- }
- /// <summary>
- /// 获取客户项目列表 by tel - 来电弹屏
- /// </summary>
- [HttpGet("getinfobytel")]
- public async Task<IActionResult> GetInfoByTelAsync(string tel)
- {
- if (string.IsNullOrEmpty(tel))
- return Success("参数错误", null);
- var list = (await _cus_customer_projectepository.Get(x => (x.project_mobilephone == tel || x.mobilephone == tel) && x.isdelete == 0)).ToList();
- //var model = list.FirstOrDefault();
- return Success("获取成功", list);
- }
- /// <summary>
- /// 添加修改客户档案 - 来电弹屏
- /// </summary>
- [HttpPost("save")]
- public async Task<IActionResult> SaveAsync(CusCustomerInput input)
- {
- string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
- string username = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name).Value;
- #region 判断验证
- if (string.IsNullOrWhiteSpace(input.name))
- return Error("请输入联系人 asdfasdf");
- if (string.IsNullOrEmpty(input.mobilephone))
- return Error("请输入联系电话");
- #endregion
- var list = await _cus_customer_baseRepository.Get(x => x.mobilephone == input.mobilephone && x.isdelete == 0);
- var model = list.FirstOrDefault();
- if (model == null)
- {
- model = new Cus_Customer_Base();
- //添加客户信息
- #region model 添加客户对象
- model.name = input.name;
- model.mobilephone = input.mobilephone;
- model.telephone = input.telephone;
- model.manager = input.manager;
- model.customername = input.customername;
- model.companyame = input.companyame;
- model.province = input.province; //省
- model.city = input.city; //市
- model.address = input.address;
- model.createuser = usercode;
- model.createusername = username;
- #endregion
- string customerid = await _cus_customer_baseRepository.AddRetID(model);
- if (!string.IsNullOrEmpty(customerid))
- {
- return Success("保存成功");
- }
- else
- return Error("保存失败");
- }
- else
- {
- //model = (await _cus_customer_baseRepository.Get(p => p.id == input.id)).FirstOrDefault();
- #region model 客户对象
- model.name = input.name;
- model.mobilephone = input.mobilephone;
- model.telephone = input.telephone;
- model.manager = input.manager;
- model.customername = input.customername;
- model.companyame = input.companyame;
- model.province = input.province; //省
- model.city = input.city; //市
- model.address = input.address;
- #endregion
- bool b = await _cus_customer_baseRepository.UpdateOne(model);
- if (b)
- {
- return Success("保存成功");
- }
- else
- return Error("保存失败");
- }
- }
- /// <summary>
- /// 添加修改客户项目 - 来电弹屏
- /// </summary>
- [HttpPost("savepro")]
- public async Task<IActionResult> SaveProAsync(CusCustomerProInput input)
- {
- string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
- string username = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name).Value;
- #region 判断验证
- //if (string.IsNullOrWhiteSpace(input.pro_customerid))
- // return Error("用户id不能为空");
- if (string.IsNullOrEmpty(input.pro_mobilephone))
- return Error("请输入联系电话");
- //if (string.IsNullOrEmpty(input.pro_project_name))
- // return Error("请输入项目名称");
- #endregion
- //var list = (await _cus_customer_projectepository.Get(x => x.id == input.pro_id && x.customerid == input.pro_customerid && x.isdelete == 0)).ToList();
- var list = (await _cus_customer_projectepository.Get(x => x.name == input.pro_name && x.project_name == input.pro_project_name && x.isdelete == 0)).ToList();
- var model = list.FirstOrDefault();
- if (model == null)
- {
- model = new Cus_Customer_Project();
- //添加客户信息
- #region model 添加客户对象
- model.customerid = input.pro_customerid;
- model.name = input.pro_name;
- model.mobilephone = input.pro_mobilephone;
- model.telephone = input.pro_telephone;
- model.customername = input.pro_customername;
- model.companyame = input.pro_companyame;
- model.address = input.pro_address;
- model.project_name = input.pro_project_name;
- model.ordertime = input.pro_ordertime;
- model.acceptancetime = input.pro_acceptancetime;
- model.orderendtime = input.pro_orderendtime;
- model.guarantee_period = input.pro_guarantee_period;
- model.isend = input.pro_isend;
- model.project_amount = input.pro_project_amount;
- model.project_typeid = input.pro_project_typeid;
- model.oem_name = input.pro_oem_name;
- model.content = input.pro_content;
- model.servicecontent = input.pro_servicecontent;
- model.createuser = usercode;
- model.createusername = username;
- //2019-2-20 添加项目负责人信息
- model.project_cusname = input.project_cusname;
- model.project_mobilephone = input.project_mobilephone;
- model.project_telephone = input.project_telephone;
- model.project_address = input.project_address;
- //2019-4-12添加客户类型
- model.customerdept = input.customerdept;
- model.customeremail = input.customeremail;
- model.customertype = input.customertype;
- #endregion
- bool bl = await _cus_customer_projectepository.Add(model);
- if (bl)
- {
- return Success("保存成功");
- }
- else
- return Error("保存失败");
- }
- else
- {
- #region model 客户对象
- model.name = input.pro_name;
- model.mobilephone = input.pro_mobilephone;
- model.telephone = input.pro_telephone;
- model.customername = input.pro_customername;
- model.companyame = input.pro_companyame;
- model.address = input.pro_address;
- model.project_name = input.pro_project_name;
- model.ordertime = input.pro_ordertime;
- model.acceptancetime = input.pro_acceptancetime;
- model.orderendtime = input.pro_orderendtime;
- model.guarantee_period = input.pro_guarantee_period;
- model.isend = input.pro_isend;
- model.project_amount = input.pro_project_amount;
- model.project_typeid = input.pro_project_typeid;
- model.oem_name = input.pro_oem_name;
- model.content = input.pro_content;
- model.servicecontent = input.pro_servicecontent;
- //2019-2-20 添加项目负责人信息
- model.project_cusname = input.project_cusname;
- model.project_mobilephone = input.project_mobilephone;
- model.project_telephone = input.project_telephone;
- model.project_address = input.project_address;
- //2019-4-12添加客户类型
- model.customerdept = input.customerdept;
- model.customeremail = input.customeremail;
- model.customertype = input.customertype;
- #endregion
- bool b = await _cus_customer_projectepository.UpdateOne(model);
- if (b)
- {
- return Success("保存成功");
- }
- else
- return Error("保存失败");
- }
- }
- #endregion
- #region 客户项目
- /// <summary>
- /// 获取客户分页
- /// </summary>
- [HttpGet("getprolistbypage")]
- public IActionResult GetProListsByPageAsync(string keyword, string customerid, string stime, string etime, string projecttypeid, string qdstime, string qdetime, string dqstime, string dqetime, string customertype, string gjstime, string gjetime, int? isend, int pageindex = 1, int pagesize = 10)
- {
- int recordCount = 0;
- var result = _cus_customer_projectepository.GetProListsByPage(keyword, customerid, stime, etime, projecttypeid, qdstime, qdetime, dqstime, dqetime, customertype, gjstime, gjetime, isend, pageindex, pagesize, out recordCount);
- var obj = new
- {
- rows = result.ToList(),
- total = recordCount
- };
- return Success("获取成功", obj);
- }
- /// <summary>
- /// 获取客户项目下拉
- /// </summary>
- [HttpGet("getprolist")]
- public IActionResult GetProListsAsync()
- {
- int recordCount = 0;
- var result = _cus_customer_projectepository.GetProLists();
- var obj = new
- {
- rows = result.ToList(),
- total = recordCount
- };
- return Success("获取成功", obj);
- }
- /// <summary>
- /// 获取客户项目下拉
- /// </summary>
- [HttpGet("getpro")]
- public IActionResult GetProAsync()
- {
- int recordCount = 0;
- var result = _cus_customer_projectepository.GetPro();
- var resu = result.Distinct().ToList();//去重
- var obj = new
- {
- rows = resu,
- total = resu.Count
- };
- return Success("获取成功", obj);
- }
- /// <summary>
- /// 获取客户详情
- /// </summary>
- [HttpGet("getprosingle")]
- public IActionResult GetProSingleAsync(string id)
- {
- var model = _cus_customer_projectepository.GetProDetails(id);
- return Success("获取成功", model);
- }
- /// <summary>
- /// 添加客户
- /// </summary>
- [HttpPost("addpro")]
- public async Task<IActionResult> AddProAsync(CusCustomerProInput input)
- {
- string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
- string username = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name).Value;
- #region 判断验证
- //if (string.IsNullOrWhiteSpace(input.pro_customerid))
- // return Error("用户id不能为空");
- if (string.IsNullOrWhiteSpace(input.pro_name))
- return Error("请输入联系人");
- if (string.IsNullOrEmpty(input.pro_mobilephone))
- return Error("请输入联系电话");
- //if (string.IsNullOrEmpty(input.pro_project_name))
- // return Error("请输入项目名称");
- if (!string.IsNullOrEmpty(input.pro_companyame))
- {
- var listCus = (await _cus_customer_projectepository.Get(x => x.companyame == input.pro_companyame && x.isdelete == 0)).ToList();
- var models = listCus.FirstOrDefault();
- if (models != null)
- return Error("单位名称已存在");
- }
- #endregion
- var model = new Cus_Customer_Project();
- #region model 添加客户对象
- model.customerid = input.pro_customerid;
- model.name = input.pro_name;
- model.mobilephone = input.pro_mobilephone;
- model.telephone = input.pro_telephone;
- model.customername = input.pro_customername;
- model.companyame = input.pro_companyame;
- //model.province = input.province; //省
- //model.city = input.city; //市
- model.address = input.pro_address;
- model.project_name = input.pro_project_name;
- model.ordertime = input.pro_ordertime;
- model.acceptancetime = input.pro_acceptancetime;
- model.orderendtime = input.pro_orderendtime;
- model.guarantee_period = input.pro_guarantee_period;
- model.isend = input.pro_isend;
- model.project_amount = input.pro_project_amount;
- model.project_typeid = input.pro_project_typeid;
- model.oem_name = input.pro_oem_name;
- model.content = input.pro_content;
- model.servicecontent = input.pro_servicecontent;
- model.createuser = usercode;
- model.createusername = username;
- //2019-2-20 添加项目负责人信息
- model.project_cusname = input.project_cusname;
- model.project_mobilephone = input.project_mobilephone;
- model.project_telephone = input.project_telephone;
- model.project_address = input.project_address;
- //2019-4-12添加客户类型
- model.customerdept = input.customerdept;
- model.customeremail = input.customeremail;
- model.customertype = input.customertype;
- //2019-5-6添加附件
- if (input.attachment != null)
- {
- model.attachment = input.attachment;
- }
- else
- {
- model.attachment = new List<FileBaseModel>();
- }
- #endregion
- bool bl = await _cus_customer_projectepository.Add(model);
- if (bl)
- {
- return Success("保存成功");
- }
- else
- return Error("保存失败");
- }
- /// <summary>
- /// 上传文件并导入数据库
- /// </summary>
- /// <returns></returns>
- [HttpPost("importexcelpro")]
- public async Task<IActionResult> ImportExcelPro(string customerid, int headrow = 0)//string customerid,
- {
- string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
- string username = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name).Value;
- if (Request.Form.Files.Count <= 0)
- {
- return Error("获取不到要导入的文件");
- }
- Microsoft.AspNetCore.Http.IFormFile _upfile = Request.Form.Files[0];
- if (!_upfile.ContentType.Equals("application/vnd.ms-excel") && !_upfile.ContentType.Equals("application/x-xls") && !_upfile.ContentType.Equals("application/x-xlsx") && !_upfile.ContentType.Equals("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") && !_upfile.ContentType.Equals("application/octet-stream"))
- return Error($"请正确上传Excel文件:file.ContentType={_upfile.ContentType}");
- NPOIHelper npoi = new NPOIHelper();
- var dtExcel = npoi.ExcelToTable1(_upfile, headrow);
- int num = dtExcel.Rows.Count;
- var cols = dtExcel.Columns;
- int colnum = cols.Count;
- string dbkeys = _configuration["upload:prodbkeys"].ToString();
- string[] dbcols = dbkeys.Split(",");
- string errmsg = string.Empty;
- if (num > 0)
- {
- int index = 1;
- foreach (System.Data.DataRow dr in dtExcel.Rows)
- {
- var model = new Cus_Customer_Project();
- model.createuser = usercode;
- model.createusername = username;
- //model.cusname = dr.cusname;
- //model.phone = dr.phone;
- //model.cusaddr = dr.cusaddr;
- model.createtime = DateTime.Now.ToLocalTime();
- //model.customerid = customerid;
- model.customertype = "签约客户";
- var dbcolslist = dbcols.ToList();
- Type t = model.GetType();
- PropertyInfo[] PropertyList = t.GetProperties();
- foreach (PropertyInfo item in PropertyList)
- {
- if (dbcolslist.Contains(item.Name))
- {
- if (item.Name == "project_typeid")
- {
- var models = await _sys_dictionaryValuerepository.GetSingle(x => x.name == dr[dbcolslist.IndexOf(item.Name)].ToString());
- if (models != null)
- {
- model.project_typeid = models.id;
- }
- }
- else
- {
- if (dr[dbcolslist.IndexOf(item.Name)].ToString() != null)
- {
- if (item.PropertyType == typeof(DateTime))
- {
- if (dr[dbcolslist.IndexOf(item.Name)].ToString() != "")
- {
- object v = Convert.ChangeType(dr[dbcolslist.IndexOf(item.Name)].ToString(), item.PropertyType);
- item.SetValue(model, v, null);
- }
- }
- else
- {
- if (dr[dbcolslist.IndexOf(item.Name)].ToString() != "")
- {
- object v = Convert.ChangeType(dr[dbcolslist.IndexOf(item.Name)].ToString(), item.PropertyType);
- item.SetValue(model, v, null);
- }
- }
- }
- }
- }
- }
- bool b = await _cus_customer_projectepository.Add(model);
- if (!b)
- {
- if (!string.IsNullOrEmpty(errmsg))
- {
- errmsg = errmsg + "\r\n第" + index + "行导入失败!";
- }
- else
- {
- errmsg = "第" + index + "行导入失败!";
- }
- }
- index++;
- }
- }
- else
- {
- return Error("文件中无数据");
- }
- if (!string.IsNullOrEmpty(errmsg))
- {
- //删除已导入的部分
- return Error(errmsg);
- }
- return Success("导入成功");
- }
- /// <summary>
- /// 修改客户
- /// </summary>
- [HttpPost("updatepro")]
- public async Task<IActionResult> UpdateProAsync(CusCustomerProInput input)
- {
- string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
- string username = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name).Value;
- var model = (await _cus_customer_projectepository.Get(p => p.id == input.pro_id)).FirstOrDefault();
- if (model != null)
- {
- #region 判断验证
- if (model.isdelete == 1)
- return Error("用户已删除");
- //if (string.IsNullOrWhiteSpace(input.pro_customerid))
- // return Error("用户id不能为空");
- if (string.IsNullOrWhiteSpace(input.pro_name))
- return Error("请输入联系人");
- if (string.IsNullOrEmpty(input.pro_mobilephone))
- return Error("请输入联系电话");
- //if (string.IsNullOrEmpty(input.pro_project_name))
- // return Error("请输入项目名称");
- #endregion
- #region model 客户对象
- model.name = input.pro_name;
- model.mobilephone = input.pro_mobilephone;
- model.telephone = input.pro_telephone;
- model.customername = input.pro_customername;
- model.companyame = input.pro_companyame;
- //model.province = input.province; //省
- //model.city = input.city; //市
- model.address = input.pro_address;
- model.project_name = input.pro_project_name;
- model.ordertime = input.pro_ordertime;
- model.acceptancetime = input.pro_acceptancetime;
- model.orderendtime = input.pro_orderendtime;
- model.guarantee_period = input.pro_guarantee_period;
- model.isend = input.pro_isend;
- model.project_amount = input.pro_project_amount;
- model.project_typeid = input.pro_project_typeid;
- model.oem_name = input.pro_oem_name;
- model.content = input.pro_content;
- model.servicecontent = input.pro_servicecontent;
- //2019-2-20 添加项目负责人信息
- model.project_cusname = input.project_cusname;
- model.project_mobilephone = input.project_mobilephone;
- model.project_telephone = input.project_telephone;
- model.project_address = input.project_address;
- //2019-4-12添加客户类型
- model.customerdept = input.customerdept;
- model.customeremail = input.customeremail;
- model.customertype = input.customertype;
- model.followcontent = input.followcontent;
- model.followtime = input.followtime;
- //2019-5-6添加附件
- if (input.attachment != null)
- {
- model.attachment = input.attachment;
- }
- else
- {
- model.attachment = new List<FileBaseModel>();
- }
- #endregion
- bool b = await _cus_customer_projectepository.UpdateOne(model);
- if (b)
- {
- #region 修改最新一条跟进记录
- if (string.IsNullOrEmpty(input.followcontent))
- {
- var sort = Builders<Cus_FollowRecord>.Sort.Descending("createTime");
- var dModel = await _cus_followrecordrepository.GetSingle(s => s.proid.Equals(input.pro_id), sort);
- if (dModel != null)
- {
- dModel.content = input.followcontent;
- dModel.createTime = (DateTime)input.followtime;
- await _cus_followrecordrepository.UpdateOne(dModel);
- }
- }
- #endregion
- return Success("保存成功");
- }
- else
- return Error("保存失败");
- }
- return Error("参数错误");
- }
- /// <summary>
- /// 删除客户
- /// </summary>
- /// <param name="ids"></param>
- /// <returns></returns>
- [HttpPost("deletepro")]
- public async Task<IActionResult> DeleteProAsync(string[] ids)
- {
- string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
- string username = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name).Value;
- //使用逻辑删除
- var res = 0;
- if (ids != null && ids.Length > 0)
- {
- foreach (var id in ids)
- {
- var model = await _cus_customer_projectepository.GetSingle(id);
- model.isdelete = 1;
- model.deleteuser = usercode;
- model.deletetime = DateTime.Now;
- if (await _cus_customer_projectepository.UpdateOne(model))
- {
- res += 1;
- }
- }
- if (res == ids.Length)
- return Success("删除成功");
- else if (res > 0 && res < ids.Length)
- return Error("部分删除失败");
- else
- return Error("删除失败");
- }
- else
- return Error("请选择要删除的记录");
- }
- #endregion
- #region 潜在客户信息
- /// <summary>
- /// 添加跟进信息
- /// </summary>
- [HttpPost("addfollowinfo")]
- public async Task<IActionResult> AddFollowAsync(string id, string content)
- {
- string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
- string username = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name).Value;
- var model = new Cus_FollowRecord();
- #region model 添加跟进信息
- model.content = content;
- model.createName = usercode;
- model.createTime = DateTime.Now.ToLocalTime();
- model.proid = id;
- #endregion
- bool bl = await _cus_followrecordrepository.Add(model);
- if (bl)
- {
- //更新客户项目表跟进时间
- var modelc = await _cus_customer_projectepository.GetSingle(id);
- modelc.followtime = DateTime.Now;
- modelc.followcontent = content;
- if (await _cus_customer_projectepository.UpdateOne(modelc))
- {
- return Success("跟进信息保存成功");
- }
- else
- return Error("信息更新失败");
- }
- else
- return Error("信息保存失败");
- }
- /// <summary>
- /// 获取跟进信息
- /// </summary>
- [HttpGet("getfollowlist")]
- public async Task<IActionResult> GetFollowListsAsync(string id)
- {
- var lists = (await _cus_followrecordrepository.Get(p => p.proid == id)).ToList();
- return Success("获取成功", lists);
- }
- /// <summary>
- /// 用于项目负责人、客户类型相互转移
- /// </summary>
- /// <param name="ids"></param>
- /// <returns></returns>
- [HttpPost("changeinfo")]
- public async Task<IActionResult> ChangeInfoAsync(string id, string cusname, string customertype, string cusphone)
- {
- var model = await _cus_customer_projectepository.GetSingle(id);
- if (!string.IsNullOrEmpty(cusname))
- {
- model.project_cusname = cusname;
- }
- if (!string.IsNullOrEmpty(customertype))
- {
- model.customertype = customertype;
- }
- if (!string.IsNullOrEmpty(cusphone))
- {
- model.project_mobilephone = cusphone;
- }
- if (await _cus_customer_projectepository.UpdateOne(model))
- {
- return Success("转移成功"); ;
- }
- else
- return Error("转移失败");
- }
- /// <summary>
- /// 导出excel
- /// </summary>
- /// <param name="taskid"></param>
- /// <param name="calloutok"></param>
- /// <returns></returns>
- [Authorize]
- [HttpGet("exportexcel")]
- [AllowAnonymous]
- public async Task<IActionResult> ExportExcelAsync(string keyword, string customerid, string stime, string etime, string projecttypeid, string qdstime, string qdetime, string dqstime, string dqetime, string customertype, string gjstime, string gjetime, int? isend)
- {
- try
- {
- int recordCount = 0;
- var result = _cus_customer_projectepository.GetProLists(keyword, customerid, stime, etime, projecttypeid, qdstime, qdetime, dqstime, dqetime, customertype, gjstime, gjetime, isend, out recordCount);
- //导出
- NPOIHelper npoi = new NPOIHelper();
- var tlist = result.ToList();
- var tb = ModelConvertHelper<Cus_Customer_ProjectDto>.ConvertListToDataTable(tlist);
- if (customertype == "签约客户")
- {
- string[] cols = { "姓名", "手机号码", "固定号码", "客户名称", "单位名称", "地址", "项目名称", "项目负责人", "负责人手机号", "负责人固话", "负责人地址", "项目类型", "项目金额", "合同签订时间", "验收日期", "到期日期", "质保期", "是否到期", "设备厂家 / 中间件", "授权内容", "售后服务内容" };
- string[] colname = { "name", "mobilephone", "telephone", "customername", "companyame", "address", "project_name", "project_cusname", "project_mobilephone", "project_telephone", "project_address", "project_typeid", "project_amount", "ordertime", "acceptancetime", "orderendtime", "guarantee_period", "isend", "oem_name", "content", "servicecontent" };
- byte[] sm = npoi.ExportToExcel1(tb, cols, colname);
- if (sm != null)
- {
- return File(sm, "application/vnd.ms-excel", "客户信息.xlsx");
- }
- else
- {
- return Error("导出失败");
- }
- }
- else if (customertype == "潜在客户")
- {
- //获取历史跟进信息
- DataTable dtnew = tb;
- dtnew.Columns.Add("followRecord");
- for (int i = 0; i < tb.Rows.Count; i++)
- {
- string id = tb.Rows[i]["id"].ToString();
- var lists = (await _cus_followrecordrepository.Get(p => p.proid == id)).ToList();
- string fr = "";
- int n = 1;
- foreach (var l in lists)
- {
- fr += n.ToString() + "、" + l.createTime.ToString("yyyy-MM-dd") + " " + l.content + "\n";
- n++;
- }
- dtnew.Rows[i]["followRecord"] = fr;
- }
- string[] cols = { "单位名称", "客户部门", "手机号码", "联系人", "邮箱", "项目负责人", "跟进日期", "跟进内容", "跟进记录" };
- string[] colname = { "companyame", "customerdept", "mobilephone", "name", "customeremail", "project_cusname", "followtime", "followcontent", "followRecord" };
- byte[] sm = npoi.ExportToExcel1(dtnew, cols, colname);
- if (sm != null)
- {
- return File(sm, "application/vnd.ms-excel", "潜在客户信息.xlsx");
- }
- else
- {
- return Error("导出失败");
- }
- }
- return Error("导出失败");
- }
- catch (Exception ex)
- {
- _logger.LogError(ex, "导出异常");
- return Error("导出失败");
- }
- //return Success("导出成功");
- }
- /// <summary>
- /// 上传文件并导入数据库--导入潜在客户
- /// </summary>
- /// <returns></returns>
- [HttpPost("importexcelqz")]
- public async Task<IActionResult> ImportQExcel(int headrow = 0)
- {
- string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
- string username = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name).Value;
- //if (string.IsNullOrEmpty(taskid))
- // return Error("任务id不能为空");
- //string usercode = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
- Microsoft.AspNetCore.Http.IFormFile _upfile = Request.Form.Files[0];
- if (!_upfile.ContentType.Equals("application/vnd.ms-excel") && !_upfile.ContentType.Equals("application/x-xls") && !_upfile.ContentType.Equals("application/x-xlsx") && !_upfile.ContentType.Equals("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") && !_upfile.ContentType.Equals("application/octet-stream"))
- return Error($"请正确上传Excel文件:file.ContentType={_upfile.ContentType}");
- NPOIHelper npoi = new NPOIHelper();
- var dtExcel = npoi.ExcelToTable1(_upfile, headrow);
- int num = dtExcel.Rows.Count;
- var cols = dtExcel.Columns;
- int colnum = cols.Count;
- string dbkeys = _configuration["upload:qrodbkeys"].ToString();
- string[] dbcols = dbkeys.Split(",");
- string errmsg = string.Empty;
- if (num > 0)
- {
- int index = 1;
- foreach (System.Data.DataRow dr in dtExcel.Rows)
- {
- DateTime ftime = DateTime.Now;//跟进时间
- string fcontent = "";//跟进内容
- var model = new Cus_Customer_Project();
- model.createuser = usercode;
- model.createusername = username;
- //model.cusname = dr.cusname;
- //model.phone = dr.phone;
- //model.cusaddr = dr.cusaddr;
- model.createtime = DateTime.Now.ToLocalTime();
- model.customertype = "潜在客户";
- var dbcolslist = dbcols.ToList();
- Type t = model.GetType();
- PropertyInfo[] PropertyList = t.GetProperties();
- foreach (PropertyInfo item in PropertyList)
- {
- _logger.LogError(item.Name.ToString(), "导出异常");
- _logger.LogError(dbcolslist.ToString(), "导出异常");
- if (dbcolslist != null && item != null && item.Name != null && dbcolslist.Contains(item.Name))
- {
- //object v = Convert.ChangeType(dr[dbcolslist.IndexOf(item.Name)].ToString(), item.PropertyType);
- //item.SetValue(model, v, null);
- if (dr[dbcolslist.IndexOf(item.Name)].ToString() != null)
- {
- if (item.PropertyType == typeof(DateTime?) || item.PropertyType == typeof(DateTime))
- {
- if (dr[dbcolslist.IndexOf(item.Name)] != null && dr[dbcolslist.IndexOf(item.Name)].ToString() != "")
- {
- #region 可空类型
- /*Type ty = Type.GetType("System.Nullable`1[[System.DateTime, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]");
- DateTime? date = DateTime.Now;
- string s = dr[dbcolslist.IndexOf(item.Name)].ToString();
- if (ty.IsGenericType && ty.GetGenericTypeDefinition() == typeof(Nullable<>))
- {
- if (String.IsNullOrEmpty(s))
- item.SetValue(model, null, null);
- else
- {
- //date = Convert.ChangeType(s, t.GetGenericArguments()[0]);
- //object y = Convert.ChangeType(dr[dbcolslist.IndexOf(item.Name)].ToString(), item.PropertyType);
- item.SetValue(model, Convert.ChangeType(s, t.GetGenericArguments()[0]), null);
- }
- }
- else
- {
- item.SetValue(model, null, null);
- }*/
- #endregion
- object v = Convert.ChangeType(dr[dbcolslist.IndexOf(item.Name)].ToString(), item.PropertyType);
- item.SetValue(model, v, null);
- if (item.Name == "followtime")
- {
- ftime = DateTime.Parse(dr[dbcolslist.IndexOf(item.Name)].ToString());
- }
- else if (item.Name == "followcontent")
- {
- fcontent = dr[dbcolslist.IndexOf(item.Name)].ToString();
- }
- }
- }
- else
- {
- if (dr[dbcolslist.IndexOf(item.Name)].ToString() != "")
- {
- object v = Convert.ChangeType(dr[dbcolslist.IndexOf(item.Name)].ToString(), item.PropertyType);
- item.SetValue(model, v, null);
- if (item.Name == "followcontent")
- {
- fcontent = dr[dbcolslist.IndexOf(item.Name)].ToString();
- }
- }
- }
- }
- }
- }
- string addid = await _cus_customer_projectepository.AddRetID(model);//bool b = await _cus_customer_projectepository.Add(model)
- //保存跟进记录
- if (fcontent != "")
- {
- var modelr = new Cus_FollowRecord();
- modelr.content = fcontent;
- modelr.createName = usercode;
- modelr.createTime = ftime;
- modelr.proid = addid;
- bool bl = await _cus_followrecordrepository.Add(modelr);
- }
- if (string.IsNullOrEmpty(addid))
- {
- if (!string.IsNullOrEmpty(errmsg))
- {
- errmsg = errmsg + "\r\n第" + index + "行导入失败!";
- }
- else
- {
- errmsg = "第" + index + "行导入失败!";
- }
- }
- index++;
- }
- }
- else
- {
- return Error("文件中无数据");
- }
- if (!string.IsNullOrEmpty(errmsg))
- {
- //删除已导入的部分
- return Error(errmsg);
- }
- return Success("导入成功");
- }
- #endregion
- //2019-5-6 获取合同到期提醒
- [Authorize]
- [HttpGet("gettxlist")]
- public async Task<IActionResult> GetListAsync(int daykind = 0)//到期前一月或前几天提醒
- {
- #region 条件信息
- var listfilter = new List<FilterDefinition<Cus_Customer_Project>>();
- listfilter.Add(Builders<Cus_Customer_Project>.Filter.Eq("isdelete", 0));
- var filter = Builders<Cus_Customer_Project>.Filter.And(listfilter);
- DateTime dtstart = DateTime.Now;
- var sort = Builders<Cus_Customer_Project>.Sort.Descending("orderendtime");
- var list = await _cus_customer_projectepository.Get(filter, null, sort); ;
- switch (daykind)
- {
- case 0://到期前一月orderendtime到期时间减去现在时间大于0小于等于30
- DateTime dtend = dtstart.AddDays(30);
- DateTime dt = DateTime.Now.ToLocalTime();
- if (DateTime.TryParse(dtstart.ToString("yyyy-MM-dd") + " 00:00:00", out dt))
- listfilter.Add(Builders<Cus_Customer_Project>.Filter.Gt("orderendtime", dt));
- if (DateTime.TryParse(dtend.ToString("yyyy-MM-dd") + " 23:59:59", out dt))
- listfilter.Add(Builders<Cus_Customer_Project>.Filter.Lt("orderendtime", dt));
- var filter0 = Builders<Cus_Customer_Project>.Filter.And(listfilter);
- list = await _cus_customer_projectepository.Get(filter0, null, sort);
- break;
- case 1://到期当天
- DateTime dtend1 = dtstart;//.AddDays(30);
- DateTime dt1 = DateTime.Now.ToLocalTime();
- if (DateTime.TryParse(dtstart.ToString("yyyy-MM-dd") + " 00:00:00", out dt1))
- listfilter.Add(Builders<Cus_Customer_Project>.Filter.Gt("orderendtime", dt1));
- if (DateTime.TryParse(dtend1.ToString("yyyy-MM-dd") + " 23:59:59", out dt1))
- listfilter.Add(Builders<Cus_Customer_Project>.Filter.Lt("orderendtime", dt1));
- var filter1 = Builders<Cus_Customer_Project>.Filter.And(listfilter);
- list = await _cus_customer_projectepository.Get(filter1, null, sort);
- break;
- default:
- break;
- }
- #endregion
- var obj = new
- {
- data = list
- };
- return Success("成功", obj);
- }
- }
- }
|