LR-20210131IOQH\Administrator
2021-08-10 d4a6d65f5e449c3e5464aa18ae97bf8953987217
zhengcaioa/zhengcaioa/Controllers/Expert/ExpertController.cs
@@ -11,6 +11,7 @@
using zhengcaioa.IService;
using System.IO;
using Microsoft.Extensions.Configuration;
using System.Transactions;
namespace zhengcaioa.Controllers.Expert
{
@@ -22,13 +23,22 @@
        private readonly ILiaotianService _liaotianService;
        private readonly IProjectService _projectService;
        private readonly IUserService _userService;
        public ExpertController(ILogger<ExpertController> logger, IExpertService expertService, IProjectService projectService, ILiaotianService liaotianService, IUserService userService)
        private readonly IFiSubjectService _ifiSubjectService;
        private readonly ICooperOrderService _cooperOrderService;
        private readonly IFiAccountService _fiAccountService;
        private readonly IFiAccountRecordService _iFiAccountRecordService;
        public ExpertController(ILogger<ExpertController> logger, IExpertService expertService, IProjectService projectService, ILiaotianService liaotianService, IUserService userService
            , IFiSubjectService ifiSubjectService, ICooperOrderService cooperOrderService, IFiAccountService fiAccountService, IFiAccountRecordService iFiAccountRecordService)
        {
            _logger = logger;
            _expertService = expertService;
            _projectService = projectService;
            _liaotianService = liaotianService;
            _userService = userService;
            _ifiSubjectService = ifiSubjectService;
            _cooperOrderService = cooperOrderService;
            _fiAccountService = fiAccountService;
            _iFiAccountRecordService = iFiAccountRecordService;
        }
        [CheckLogin]
        public IActionResult Index()
@@ -317,7 +327,7 @@
            ViewBag.HuifangStatus = _liaotianService.GetSYScode("CooperOrder", "huifang_status").Select(x => new { code = x.CodeSn, label = x.Comments }).ToList();
            ViewBag.PingjiaStatus = _liaotianService.GetSYScode("CooperOrder", "pingjia_status").Select(x => new { code = x.CodeSn, label = x.Comments }).ToList();
            ViewBag.Expert = _expertService.GetList().Select(x => new { code = x.Id, label = x.Name }).ToList();
            return View();
        }
        [CheckLogin]
@@ -344,6 +354,7 @@
            {
                data.Creater = curentuser.Id;
                data.Createtime = DateTime.Now;
                data.sort = "D";
            }
            data.Modifier = curentuser.Id;
            data.Modifytime = DateTime.Now;
@@ -356,9 +367,174 @@
        #region 专家费用结算
        [CheckLogin]
        public IActionResult ExpertFeiyong()
        {
            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);
            ActionEntity actionEntity1 = new ActionEntity();
            actionEntity1.OpenType = 0;
            actionEntity1.ActionUrl = "";
            actionEntity1.ActionFun = "Jiesuan";
            actionEntity1.PageIco = "fa fa-plus-square";
            actionEntity1.ActionName = "结算";
            actionlist.Add(actionEntity1);
            ViewData["ActionInfo"] = actionlist;
            ViewBag.Expert = _expertService.GetList().Select(x => new { code = x.Id, label = x.Name }).ToList();
            ViewBag.shifou = _liaotianService.GetSYScode("system", "shifou").Select(x => new { code = x.CodeSn, label = x.Comments }).ToList();
            return View();
        }
        [CheckLogin]
        public string GetJiesuanList(ExpertOrderDipatchDTOSearch search)
        {
            return JsonConvert.SerializeObject(_expertService.SearchJiesuan(search));
        }
        public IActionResult EditJiesuan(string id)
        {
            var curentuser = JsonConvert.DeserializeObject<PltUser>(HttpContext.Session.GetString("User"));
            ViewData["curentuser"] = curentuser;
            decimal Money = 0;
            FiOrderrecievemoneyDTO dto = new FiOrderrecievemoneyDTO();
            if (!String.IsNullOrEmpty(id))
            {
                string[] ids = id.Split(',');
                foreach(var iddd in ids)
                {
                   var expertOrderDipatchDTO =  _expertService.GetDispatch(iddd);
                    if(expertOrderDipatchDTO.sort != "A")
                    {
                        Money += expertOrderDipatchDTO.Money.Value;
                    }
                }
            }
            dto.PayTime = DateTime.Now;
            dto.Id = id;
            dto.Money = Money;
            ViewData.Model = dto;
            ViewBag.PayType = _liaotianService.GetSYScode("fi_account", "accounttype");
            ViewBag.accounttype = _liaotianService.GetSYScode("fi_account", "accounttype");
            ViewBag.FiSubject = _ifiSubjectService.GetList().Where(x => x.Subjecttype == "02").ToList();
            ViewData.Model = dto;
            return View();
        }
        /// <summary>
        /// 保存
        /// </summary>
        /// <param name="data">岗位实体类对象</param>
        /// <returns></returns>
        ///
        [HttpPost]
        public IActionResult SaveJiesuan(FiOrderrecievemoneyDTO data)
        {
            ResultEntity resultEntity = new ResultEntity();
            var curentuser = JsonConvert.DeserializeObject<PltUser>(HttpContext.Session.GetString("User"));
            ViewData["curentuser"] = curentuser;
            using (TransactionScope scope = new TransactionScope())
            {
                string[] ids = data.Id.Split(',');
                foreach (var iddd in ids)
                {
                    var expertOrderDipatchDTO = _expertService.GetDispatch(iddd);
                    if(expertOrderDipatchDTO.sort == "A")
                    {
                        resultEntity.Result = false;
                        resultEntity.Message = "存在已经结算的订单";
                        return new JsonResult(resultEntity);
                    }
                    expertOrderDipatchDTO.sort = "A";
                    expertOrderDipatchDTO.Modifier = curentuser.Id;
                    expertOrderDipatchDTO.Modifytime = DateTime.Now;
                    resultEntity = _expertService.SaveDispatch(expertOrderDipatchDTO);
                    if (!resultEntity.Result)
                    {
                        return new JsonResult(resultEntity);
                    }
                    var expertDTO  =  _expertService.Get(expertOrderDipatchDTO.ExpertId);
                   var orderDTO = _cooperOrderService.Get(expertOrderDipatchDTO.OrderId);
                    //插入支出记录
                    FiAccountRecordDTO data1 = new FiAccountRecordDTO();
                    data1.RecStatus = "A";
                    data1.Creater = curentuser.Id;
                    data1.Createtime = data.PayTime;
                    data1.Modifier = curentuser.Id;
                    data1.Modifytime = data.PayTime;
                    data1.SubjectId = data.SubjectId;
                    data1.AccountId = data.AccountId;
                    data1.Money = expertOrderDipatchDTO.Money;
                    data1.PaymentUnit = expertDTO.Name;
                    data1.OperationalMatters = expertDTO.Name +"  " +orderDTO.OrderNo+ "结算费用" ;
                    FiAccountDTO firmAccount = _fiAccountService.Get(data1.AccountId);
                    data1.RecordTypeId = "2";//收入
                    data1.Department = "";
                    firmAccount.AllExpenses = (firmAccount.AllExpenses ?? 0) + data1.Money;
                    firmAccount.Balance = (firmAccount.Balance ?? 0) - data1.Money;
                    data1.AccountMoney = firmAccount.Balance;
                    resultEntity = _iFiAccountRecordService.save(data1);
                    if (!resultEntity.Result)
                    {
                        return new JsonResult(resultEntity);
                    }
                    resultEntity = _fiAccountService.save(firmAccount);
                    if (!resultEntity.Result)
                    {
                        return new JsonResult(resultEntity);
                    }
                }
                scope.Complete();
            }
            return new JsonResult(resultEntity);
        }
        #endregion
    }
}