using System; using System.Collections.Generic; using System.Linq; using System.Text; using AutoMapper; using AngleSharp.Html.Parser; using DTO; using IServices; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Bot.Builder.Integration.AspNet.Core; using Microsoft.Extensions.Logging; using Newtonsoft.Json; using System.Net.Http; using System.Threading.Tasks; using zhengcaioa.Models; using zhengcaioa.IService; using CommonToolsCore; using Services; using System.Transactions; using System.Net.Http.Headers; using Newtonsoft.Json.Linq; using Microsoft.Extensions.Configuration; namespace zhengcaioa.Controllers.Finance { [CheckLogin] public class FiOrderrecievemoneyController : Controller { private readonly ILogger _logger; private readonly ILiaotianService _liaotianService; private readonly IFiOrderrecievemoneyService _fiOrderrecievemoneyService; private readonly ICooperOrderService _cooperOrderService; private readonly IFiSubjectService _ifiSubjectService; private readonly IFiAccountService _fiAccountService; private readonly IFiAccountRecordService _iFiAccountRecordService; private readonly ICooperatecustomCustomerService _cooperatecustomCustomerService; private readonly IProjectService _projectService; private readonly IUserService _userService; private readonly IFiCustomerrecievemoneyService _fiCustomerrecievemoneyService; private readonly IConfiguration _configuration; private readonly IHttpClientFactory _clientFactory; private readonly IFiMemberService _iMemberService; private readonly IPltPageService _pltPageService; private readonly IFiBookService _fiBookService; private readonly IFiMemberService _fiMemberService; public FiOrderrecievemoneyController(ILogger logger, ILiaotianService liaotianService, IFiOrderrecievemoneyService fiOrderrecievemoneyService, ICooperOrderService cooperOrderService, IFiSubjectService ifiSubjectService , IFiAccountService fiAccountService, IFiAccountRecordService iFiAccountRecordService, ICooperatecustomCustomerService cooperatecustomCustomerService , IProjectService projectService , IUserService userService , IFiCustomerrecievemoneyService fiCustomerrecievemoneyService , IConfiguration configuration , IHttpClientFactory clientFactory , IFiMemberService iMemberService , IPltPageService pltPageService , IFiBookService fiBookService , IFiMemberService fiMemberService) { _logger = logger; _liaotianService = liaotianService; _fiOrderrecievemoneyService = fiOrderrecievemoneyService; _cooperOrderService = cooperOrderService; _ifiSubjectService = ifiSubjectService; _fiAccountService = fiAccountService; _iFiAccountRecordService = iFiAccountRecordService; _cooperatecustomCustomerService = cooperatecustomCustomerService; _projectService = projectService; _userService = userService; _fiCustomerrecievemoneyService = fiCustomerrecievemoneyService; _configuration = configuration; _clientFactory = clientFactory; _iMemberService = iMemberService; _pltPageService = pltPageService; _fiBookService = fiBookService; _fiMemberService = fiMemberService; } public IActionResult Index() { var curentuser = JsonConvert.DeserializeObject(HttpContext.Session.GetString("User")); ViewData["curentuser"] = curentuser; List actionlist = new List(); ActionEntity actionEntity = new ActionEntity(); actionEntity.OpenType = 0; actionEntity.ActionUrl = ""; actionEntity.ActionFun = "Search"; actionEntity.PageIco = "fa fa-search"; actionEntity.ActionName = "查询"; actionlist.Add(actionEntity); ViewData["ActionInfo"] = actionlist; var pageEntities = _pltPageService.GetUserPage(curentuser.Id, "/FiOrderrecievemoney/Index/"); var pageEntities2 = pageEntities.Where(x => x.PageMethod == "02").ToList(); ViewData["ActionInfo2"] = pageEntities2; ViewBag.OrderType = _liaotianService.GetSYScode("CooperVisit", "jtype").Select(x => new { code = x.CodeSn, label = x.Comments }).ToList(); ViewBag.Fkzt = _liaotianService.GetSYScode("fi_Orderrecievemoney", "rec_status").Select(x => new { code = x.CodeSn, label = x.Comments }).ToList(); return View(); } public IActionResult GetList(FiOrderrecievemoneyDTOSearch search) { var curentuser = JsonConvert.DeserializeObject(HttpContext.Session.GetString("User")); ViewData["curentuser"] = curentuser; //JsonResult jsonResult = new JsonResult(_liaotianService.SearchByPaging(search), new Newtonsoft.Json.Serialization.DefaultContractResolver()); return new JsonResult(_fiOrderrecievemoneyService.SearchByPaging(search)); } public IActionResult Edit(string id = null,string OrderId = null) { var curentuser = JsonConvert.DeserializeObject(HttpContext.Session.GetString("User")); ViewData["curentuser"] = curentuser; FiOrderrecievemoneyDTO dto = new FiOrderrecievemoneyDTO(); if (!String.IsNullOrEmpty(id)) { dto = _fiOrderrecievemoneyService.Get(id); } else { dto.PayTime = DateTime.Now; dto.OrderId = OrderId; } CooperOrderDTO cooperOrderDTO = _cooperOrderService.Get(OrderId); List fiOrderrecievemoneyDTOs = _fiOrderrecievemoneyService.GetList(OrderId); dto.Money = cooperOrderDTO.Money.Value; if(fiOrderrecievemoneyDTOs!=null&& fiOrderrecievemoneyDTOs.Count > 0) { dto.YishouMoney = fiOrderrecievemoneyDTOs.Sum(x => x.Recievemoney).Value; } else { dto.YishouMoney = 0; } dto.WeishouMoney = dto.Money - dto.YishouMoney; ViewBag.PayType = _liaotianService.GetSYScode("fi_account", "accounttype"); ViewBag.accounttype = _liaotianService.GetSYScode("fi_account", "accounttype"); ViewBag.FiSubject = _ifiSubjectService.GetList().Where(x => x.Subjecttype == "01").ToList(); ViewBag.cooperatecustomCustomerDTO = _cooperatecustomCustomerService.Get(cooperOrderDTO.Khdw); ViewData.Model = dto; return View(); } /// /// 保存 /// /// 岗位实体类对象 /// /// [HttpPost] public IActionResult Save(FiOrderrecievemoneyDTO data) { ResultEntity resultEntity = new ResultEntity(); var curentuser = JsonConvert.DeserializeObject(HttpContext.Session.GetString("User")); ViewData["curentuser"] = curentuser; using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted, Timeout = TransactionManager.MaximumTimeout } )) { data.RecStatus = "A"; if (String.IsNullOrEmpty(data.Id)) { data.Creater = curentuser.Id; data.Createtime = DateTime.Now; } data.Modifier = curentuser.Id; data.Modifytime = DateTime.Now; CooperOrderDTO cooperOrderDTO = _cooperOrderService.Get(data.OrderId); CooperatecustomCustomerDTO cooperatecustomCustomerDTO = _cooperatecustomCustomerService.Get(cooperOrderDTO.Khdw); if (data.PayType == "03") { if(data.Recievemoney>((cooperatecustomCustomerDTO.Yufukuan ?? 0)+ (cooperatecustomCustomerDTO.Shouxinedu ?? 0) - (cooperatecustomCustomerDTO.Shenyushouxin ?? 0))) { resultEntity.Result = false; resultEntity.Message = "剩余预付款和剩余授信不足!"; return new JsonResult(resultEntity); } else { if (data.Recievemoney > (cooperatecustomCustomerDTO.Yufukuan??0)) { cooperatecustomCustomerDTO.Shenyushouxin = data.Recievemoney - (cooperatecustomCustomerDTO.Yufukuan??0); if (cooperatecustomCustomerDTO.Shenyushouxin> (cooperatecustomCustomerDTO.Shouxinedu??0)) { resultEntity.Result = false; resultEntity.Message = "剩余授信不足!"; return new JsonResult(resultEntity); } cooperatecustomCustomerDTO.Yufukuan = 0; } else { cooperatecustomCustomerDTO.Yufukuan = cooperatecustomCustomerDTO.Yufukuan - data.Recievemoney; } resultEntity = _cooperatecustomCustomerService.saveyufukuan(cooperatecustomCustomerDTO); } } resultEntity = _fiOrderrecievemoneyService.save(data); if (data.WeishouMoney <= data.Recievemoney && cooperOrderDTO.OrderType == "05" ) { //开通会员 var fiMemberDTO = _iMemberService.Get(cooperOrderDTO.OrderType1); //开通会员 string huiyuanurl = _configuration.GetSection("huiyuanurl").Value; string OAWriteChangeAsync = _configuration.GetSection("OAWriteChangeAsync").Value; Uri postUrl2 = new Uri(huiyuanurl + OAWriteChangeAsync); JObject questions2 = new JObject(); questions2.Add("UserID", cooperatecustomCustomerDTO.HuiyuanId); questions2.Add("PhoneNumber", cooperatecustomCustomerDTO.Tel); questions2.Add("VIPName", fiMemberDTO.MemberType); questions2.Add("UserName", cooperatecustomCustomerDTO.Name); questions2.Add("FromName", "OA"); string requestJson2 = questions2.ToString(); string result2 = string.Empty; using (HttpContent httpContent = new StringContent(requestJson2)) { httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); using (HttpClient httpClient = new HttpClient()) { httpClient.Timeout = new TimeSpan(0, 0, 10); HttpResponseMessage responseMessage = httpClient.PostAsync(postUrl2, httpContent).Result; result2 = responseMessage.Content.ReadAsStringAsync().Result; } } _logger.LogInformation("result2:" + result2); JObject jobjectresult = (JObject)JsonConvert.DeserializeObject(result2); if (jobjectresult["code"] != null && jobjectresult["code"].ToString() == "1") { cooperatecustomCustomerDTO.HuiyuanId = jobjectresult["UserID"].ToString(); _cooperatecustomCustomerService.save(cooperatecustomCustomerDTO); resultEntity.Result = true; } else { resultEntity.Result = false; resultEntity.Message = "写入会员权限失败"; return new JsonResult(resultEntity); } } if (data.PayType != "03") { var sysCodeDtls = _liaotianService.GetSYScode("CooperVisit", "jtype"); var book = _fiBookService.Get(cooperOrderDTO.OrderType1); var member = _fiMemberService.Get(cooperOrderDTO.OrderType1); FiAccountRecordDTO data1 = new FiAccountRecordDTO(); data1.RecStatus = "A"; data1.Creater = curentuser.Id; data1.Createtime = DateTime.Now; data1.Modifier = curentuser.Id; data1.Modifytime = DateTime.Now; data1.SubjectId = data.SubjectId; data1.AccountId = data.AccountId; data1.Money = data.Recievemoney; data1.PaymentUnit = cooperatecustomCustomerDTO.Name; var ssss = sysCodeDtls.Where(x => x.CodeSn == cooperOrderDTO.OrderType).FirstOrDefault(); if (ssss != null) { cooperOrderDTO.OrderTypeName = ssss.Comments; } if (book != null) { cooperOrderDTO.OrderType1 = book.BookName; } if (member != null) { cooperOrderDTO.OrderType1 = member.MemberType; } //data1.OperationalMatters = "订单收款" + cooperOrderDTO.OrderNo; data1.OperationalMatters = cooperOrderDTO.OrderTypeName + cooperOrderDTO.OrderType1 + cooperOrderDTO.OrderType2 + " 订单收款"; data1.Remark = cooperOrderDTO.OrderNo; FiAccountDTO firmAccount = _fiAccountService.Get(data1.AccountId); data1.RecordTypeId = "1";//收入 data1.Department = ""; firmAccount.AllIncome = (firmAccount.AllIncome ?? 0) + data1.Money; firmAccount.Balance = (firmAccount.Balance ?? 0) + data1.Money; data1.AccountMoney = firmAccount.Balance; resultEntity = _iFiAccountRecordService.save(data1); resultEntity = _fiAccountService.save(firmAccount); } scope.Complete(); } return new JsonResult(resultEntity); } /// /// 删除主信息 /// /// 实体 /// /// public IActionResult Nullify(string Id = "") { var curentuser = JsonConvert.DeserializeObject(HttpContext.Session.GetString("User")); ViewData["curentuser"] = curentuser; return new JsonResult(_fiOrderrecievemoneyService.ModifyStatus(Id, curentuser.Id)); } public IActionResult IndexCustomer() { var curentuser = JsonConvert.DeserializeObject(HttpContext.Session.GetString("User")); ViewData["curentuser"] = curentuser; List actionlist = new List(); ActionEntity actionEntity = new ActionEntity(); actionEntity.OpenType = 0; actionEntity.ActionUrl = ""; actionEntity.ActionFun = "Search"; actionEntity.PageIco = "fa fa-search"; actionEntity.ActionName = "查询"; actionlist.Add(actionEntity); var pageEntities = _pltPageService.GetUserPage(curentuser.Id, "/FiOrderrecievemoney/IndexCustomer/"); var pageEntities2 = pageEntities.Where(x => x.PageMethod == "02").ToList(); ViewData["ActionInfo2"] = pageEntities2; ViewData["ActionInfo"] = actionlist; ViewBag.khlx = _liaotianService.GetSYScode("CooperatecustomCustomer", "khlx").Select(x => new { code = x.CodeSn, label = x.Comments }).ToList(); ViewBag.khly = _liaotianService.GetSYScode("CooperatecustomCustomer", "khly").Select(x => new { code = x.CodeSn, label = x.Comments }).ToList(); ViewBag.hyfl = _liaotianService.GetSYScode("CooperatecustomCustomer", "hyfl").Select(x => new { code = x.CodeSn, label = x.Comments }).ToList(); ViewBag.shifou = _liaotianService.GetSYScode("system", "shifou").Select(x => new { code = x.CodeSn, label = x.Comments }).ToList(); ViewBag.users = _userService.GetList().Where(x => x.IsYwjl == "A").Select(x => new { code = x.Id, label = x.UserName }).ToList(); var areaDTOs = _projectService.Getsheng().ToList(); foreach (var areaDTO in areaDTOs) { if (areaDTO.CodeId == "510000") { areaDTOs.Remove(areaDTO); break; } } var areaDTOsic = new Area(); areaDTOsic.CodeId = "510000"; areaDTOsic.Name = "四川省"; areaDTOsic.ParentId = "0 "; areaDTOs.Insert(1, areaDTOsic); ViewBag.ShengDropDown = areaDTOs.Select(x => new { code = x.CodeId, label = x.Name }).ToList(); return View(); } public IActionResult EditCustomer(string id = null, string CustomerId = null) { var curentuser = JsonConvert.DeserializeObject(HttpContext.Session.GetString("User")); ViewData["curentuser"] = curentuser; FiCustomerrecievemoneyDTO dto = new FiCustomerrecievemoneyDTO(); if (!String.IsNullOrEmpty(id)) { dto = _fiCustomerrecievemoneyService.Get(id); } else { dto.PayTime = DateTime.Now; dto.CustomerId = CustomerId; } var cooperatecustomCustomerDTO = _cooperatecustomCustomerService.Get(CustomerId); dto.CustomerName = cooperatecustomCustomerDTO.Name; dto.Yufukuan = cooperatecustomCustomerDTO.Yufukuan??0; ViewBag.PayType = _liaotianService.GetSYScode("fi_account", "accounttype"); ViewBag.accounttype = _liaotianService.GetSYScode("fi_account", "accounttype"); ViewBag.FiSubject = _ifiSubjectService.GetList().Where(x => x.Subjecttype == "01").ToList(); ViewData.Model = dto; return View(); } /// /// 保存 /// /// 岗位实体类对象 /// /// [HttpPost] public IActionResult SaveCustomer(FiCustomerrecievemoneyDTO data) { ResultEntity resultEntity = new ResultEntity(); var curentuser = JsonConvert.DeserializeObject(HttpContext.Session.GetString("User")); ViewData["curentuser"] = curentuser; using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted, Timeout = TransactionManager.MaximumTimeout } )) { data.RecStatus = "A"; if (String.IsNullOrEmpty(data.Id)) { data.Creater = curentuser.Id; data.Createtime = DateTime.Now; } data.Modifier = curentuser.Id; data.Modifytime = DateTime.Now; resultEntity = _fiCustomerrecievemoneyService.save(data); CooperatecustomCustomerDTO cooperatecustomCustomerDTO = _cooperatecustomCustomerService.Get(data.CustomerId); if (cooperatecustomCustomerDTO.Shenyushouxin.HasValue) { if(data.Recievemoney.Value> cooperatecustomCustomerDTO.Shenyushouxin.Value) { data.Recievemoney = data.Recievemoney.Value - cooperatecustomCustomerDTO.Shenyushouxin.Value; cooperatecustomCustomerDTO.Shenyushouxin = 0; } else { cooperatecustomCustomerDTO.Shenyushouxin = cooperatecustomCustomerDTO.Shenyushouxin.Value - data.Recievemoney.Value; data.Recievemoney = 0; } } if(cooperatecustomCustomerDTO.Yufukuan.HasValue) cooperatecustomCustomerDTO.Yufukuan = cooperatecustomCustomerDTO.Yufukuan.Value + data.Recievemoney.Value; else cooperatecustomCustomerDTO.Yufukuan = data.Recievemoney.Value; resultEntity = _cooperatecustomCustomerService.saveyufukuan(cooperatecustomCustomerDTO); FiAccountRecordDTO data1 = new FiAccountRecordDTO(); data1.RecStatus = "A"; data1.Creater = curentuser.Id; data1.Createtime = DateTime.Now; data1.Modifier = curentuser.Id; data1.Modifytime = DateTime.Now; data1.SubjectId = data.SubjectId; data1.AccountId = data.AccountId; data1.Money = data.Recievemoney; data1.PaymentUnit = cooperatecustomCustomerDTO.Name; data1.OperationalMatters ="客户预付款:" + data.Remark; FiAccountDTO firmAccount = _fiAccountService.Get(data1.AccountId); data1.RecordTypeId = "1";//收入 data1.Department = ""; firmAccount.AllIncome = (firmAccount.AllIncome ?? 0) + data1.Money; firmAccount.Balance = (firmAccount.Balance ?? 0) + data1.Money; data1.AccountMoney = firmAccount.Balance; resultEntity = _iFiAccountRecordService.save(data1); resultEntity = _fiAccountService.save(firmAccount); scope.Complete(); } return new JsonResult(resultEntity); } public IActionResult IndexCustomerdtl(string CustomerId) { var curentuser = JsonConvert.DeserializeObject(HttpContext.Session.GetString("User")); ViewData["curentuser"] = curentuser; List actionlist = new List(); ActionEntity actionEntity = new ActionEntity(); actionEntity.OpenType = 0; actionEntity.ActionUrl = ""; actionEntity.ActionFun = "Search"; actionEntity.PageIco = "fa fa-search"; actionEntity.ActionName = "查询"; actionlist.Add(actionEntity); ViewData["ActionInfo"] = actionlist; ViewBag.CustomerId = CustomerId; return View(); } public IActionResult GetListCustomerdel(FiCustomerrecievemoneyDTOSearch search) { var curentuser = JsonConvert.DeserializeObject(HttpContext.Session.GetString("User")); ViewData["curentuser"] = curentuser; //JsonResult jsonResult = new JsonResult(_liaotianService.SearchByPaging(search), new Newtonsoft.Json.Serialization.DefaultContractResolver()); return new JsonResult(_fiCustomerrecievemoneyService.SearchByPaging(search)); } } }