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<FiOrderrecievemoneyController> _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<FiOrderrecievemoneyController> 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<PltUser>(HttpContext.Session.GetString("User"));
|
ViewData["curentuser"] = curentuser;
|
List<ActionEntity> actionlist = new List<ActionEntity>();
|
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<PltUser>(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<PltUser>(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<FiOrderrecievemoneyDTO> 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();
|
}
|
|
|
/// <summary>
|
/// 保存
|
/// </summary>
|
/// <param name="data">岗位实体类对象</param>
|
/// <returns></returns>
|
///
|
[HttpPost]
|
public IActionResult Save(FiOrderrecievemoneyDTO data)
|
{
|
ResultEntity resultEntity = new ResultEntity();
|
var curentuser = JsonConvert.DeserializeObject<PltUser>(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);
|
}
|
|
|
/// <summary>
|
/// 删除主信息
|
/// </summary>
|
/// <param name="info">实体</param>
|
/// <returns></returns>
|
///
|
public IActionResult Nullify(string Id = "")
|
{
|
var curentuser = JsonConvert.DeserializeObject<PltUser>(HttpContext.Session.GetString("User"));
|
ViewData["curentuser"] = curentuser;
|
return new JsonResult(_fiOrderrecievemoneyService.ModifyStatus(Id, curentuser.Id));
|
}
|
|
|
public IActionResult IndexCustomer()
|
{
|
var curentuser = JsonConvert.DeserializeObject<PltUser>(HttpContext.Session.GetString("User"));
|
ViewData["curentuser"] = curentuser;
|
List<ActionEntity> actionlist = new List<ActionEntity>();
|
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<PltUser>(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();
|
}
|
|
|
/// <summary>
|
/// 保存
|
/// </summary>
|
/// <param name="data">岗位实体类对象</param>
|
/// <returns></returns>
|
///
|
[HttpPost]
|
public IActionResult SaveCustomer(FiCustomerrecievemoneyDTO data)
|
{
|
ResultEntity resultEntity = new ResultEntity();
|
var curentuser = JsonConvert.DeserializeObject<PltUser>(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<PltUser>(HttpContext.Session.GetString("User"));
|
ViewData["curentuser"] = curentuser;
|
List<ActionEntity> actionlist = new List<ActionEntity>();
|
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<PltUser>(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));
|
}
|
|
}
|
}
|