using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Linq; using WalkingTec.Mvvm.Core; using WalkingTec.Mvvm.Core.Extensions; using WalkingTec.Mvvm.Mvc; using wtmProject.ViewModel._Admin.WTM_CONTRACTVMs; using wtmProject.Model; using static Microsoft.EntityFrameworkCore.DbLoggerCategory; using NodaTime; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using wtmProject.ViewModel._Admin.WTM_BILLING_LISTVMs; using wtmProject.ViewModel._Admin.FrameworkOutRecordVMs; namespace wtmProject.Controllers { [Area("_Admin")] [AuthorizeJwtWithCookie] [ActionDescription("合同管理")] [ApiController] [Route("api/WTM_CONTRACT")] [AllRights] public partial class WTM_CONTRACTController : BaseApiController { [ActionDescription("Sys.Search")] [HttpPost("Search")] public IActionResult Search(WTM_CONTRACTSearcher searcher) { if (ModelState.IsValid) { var vm = Wtm.CreateVM(); vm.Searcher = searcher; return Content(vm.GetJson(enumToString: false)); } else { return BadRequest(ModelState.GetErrorJson()); } } [ActionDescription("Sys.Get")] [HttpGet("{id}")] public WTM_CONTRACTVM Get(string id) { var vm = Wtm.CreateVM(id); return vm; } [ActionDescription("Sys.Create")] [HttpPost("Add")] public IActionResult Add(WTM_CONTRACTVM vm) { if (!ModelState.IsValid) { return BadRequest(ModelState.GetErrorJson()); } else { var vmOld = DC.Set().FirstOrDefault(t=>t.ContractName == vm.Entity.ContractName && t.CustomId == vm.Entity.CustomId); if (vmOld != null) { Dictionary Form = new Dictionary(); List Message = new List() { "请勿重复添加,该合同已存在" }; ErrorObj error = new ErrorObj(); error.Form = Form; error.Message = Message; return BadRequest(error); //return BadRequest("合同名称" + vmOld.ContractName + "已存在,请勿重复添加"); } else { vm.DoAdd(); if (!ModelState.IsValid) { return BadRequest(ModelState.GetErrorJson()); } else { return Ok(vm.Entity); } } } } [ActionDescription("Sys.Edit")] [HttpPut("Edit")] public IActionResult Edit(WTM_CONTRACTVM vm) { if (!ModelState.IsValid) { return BadRequest(ModelState.GetErrorJson()); } else { vm.DoEdit(false); if (!ModelState.IsValid) { return BadRequest(ModelState.GetErrorJson()); } else { return Ok(vm.Entity); } } } [HttpPost("BatchDelete")] [ActionDescription("Sys.Delete")] public IActionResult BatchDelete(string[] ids) { var vm = Wtm.CreateVM(); if (ids != null && ids.Count() > 0) { vm.Ids = ids; } else { return Ok(); } if (!ModelState.IsValid || !vm.DoBatchDelete()) { return BadRequest(ModelState.GetErrorJson()); } else { return Ok(ids.Count()); } } [ActionDescription("Sys.Export")] [HttpPost("ExportExcel")] public IActionResult ExportExcel(WTM_CONTRACTSearcher searcher) { var vm = Wtm.CreateVM(); vm.Searcher = searcher; vm.SearcherMode = ListVMSearchModeEnum.Export; return vm.GetExportData(); } [ActionDescription("Sys.CheckExport")] [HttpPost("ExportExcelByIds")] public IActionResult ExportExcelByIds(string[] ids) { var vm = Wtm.CreateVM(); if (ids != null && ids.Count() > 0) { vm.Ids = new List(ids); vm.SearcherMode = ListVMSearchModeEnum.CheckExport; } return vm.GetExportData(); } [ActionDescription("Sys.DownloadTemplate")] [HttpGet("GetExcelTemplate")] public IActionResult GetExcelTemplate() { var vm = Wtm.CreateVM(); var qs = new Dictionary(); foreach (var item in Request.Query.Keys) { qs.Add(item, Request.Query[item]); } vm.SetParms(qs); var data = vm.GenerateTemplate(out string fileName); return File(data, "application/vnd.ms-excel", fileName); } [ActionDescription("Sys.Import")] [HttpPost("Import")] public ActionResult Import(WTM_CONTRACTImportVM vm) { if (vm!=null && (vm.ErrorListVM.EntityList.Count > 0 || !vm.BatchSaveData())) { return BadRequest(vm.GetErrorJson()); } else { return Ok(vm?.EntityList?.Count ?? 0); } } [ActionDescription("Sys.GetWTM_CUSTOMs")] [HttpGet("GetWTM_CUSTOMs")] public ActionResult GetWTM_CUSTOMs() { var userAreas = DC.Set().Where(t => t.UserCode == Wtm.LoginUserInfo.ITCode).Select(m => m.AreaCode).ToList(); return Ok(DC.Set().Where(t => t.Area != null && userAreas.Contains(t.Area.AreaCode)).GetSelectListItems(Wtm, x => x.CustomAllName)); } [ActionDescription("Sys.GetWTM_CUSTOM_PERSONs")] [HttpGet("GetWTM_CUSTOM_PERSONs")] public ActionResult GetWTM_CUSTOM_PERSONs() { return Ok(DC.Set().GetSelectListItems(Wtm, x => x.PersonName)); } [ActionDescription("Sys.GetFrameworkUsers")] [HttpGet("GetFrameworkUsers")] public ActionResult GetFrameworkUsers() { return Ok(DC.Set().OrderBy(m => m.DisplayOrder).GetSelectListItems(Wtm, x => x.Name, null, false, false)); } [ActionDescription("Sys.GetWTM_PROJECTs")] [HttpGet("GetWTM_PROJECTs")] public ActionResult GetWTM_PROJECTs() { var userProjects = DC.Set().Where(t => t.UserCode == Wtm.LoginUserInfo.ITCode).Select(m => m.ProjectCode).ToList(); return Ok(DC.Set().Where(x => userProjects.Contains(x.ProjectCode)).GetSelectListItems(Wtm, x => x.ProjectName)); } [ActionDescription("Sys.SyncContract")] [HttpGet("SyncContract")] public ActionResult SyncContract() { var temps = new List(); var vm = DC.Set().ToList(); if (vm.Any()) { var customNames = vm.Select(t => t.CustomName).Distinct().ToList(); var projectNames = vm.Select(t => t.ProjectType).Distinct().ToList(); var customs = DC.Set().Where(o => customNames.Contains(o.CustomAllName)).ToList(); var projectes = DC.Set().Where(o => projectNames.Contains(o.ProjectName)).ToList(); var users = DC.Set().ToList(); foreach (var item in vm) { var custom = customs.FirstOrDefault(t => t.CustomAllName == item.CustomName); WTM_CONTRACT_View conract = new WTM_CONTRACT_View(); conract.ID = item.ID; conract.ContractCode = item.ContractCode; conract.ContractName = item.ContractName; conract.ERPCode = item.ERPCode; conract.ERPName = item.ERPName; conract.Year = item.Year; conract.CustomId = custom?.ID; conract.CustomClass = custom?.CustomClass; conract.AreaId = custom?.AreaId; conract.MarkManageId = users.FirstOrDefault(t => t.Name == item.MarkManage)?.ID; conract.ProjectManageId = users.FirstOrDefault(t => t.Name == item.ProjectManage)?.ID; conract.ProjectId = projectes.FirstOrDefault(t => t.ProjectName == item.ProjectType)?.ID; conract.SignDate = item.SignDate; conract.ContractAmount = item.ContractAmount; if (item.FirstBillingAmount > 0 && item.SecondBillingAmount > 0 && item.ThreeBillingAmount > 0 && item.FourthBillingAmount > 0 && item.FifthBillingAmount > 0) { conract.ContractCycle = ContractCycleEnum.LastCycle; } else if (item.FirstBillingAmount > 0 && item.SecondBillingAmount > 0 && item.ThreeBillingAmount > 0 && item.FourthBillingAmount > 0) { conract.ContractCycle = ContractCycleEnum.FourCycle; } else if (item.FirstBillingAmount > 0 && item.SecondBillingAmount > 0 && item.ThreeBillingAmount > 0) { conract.ContractCycle = ContractCycleEnum.ThirdCycle; } else if (item.FirstBillingAmount > 0 && item.SecondBillingAmount > 0) { conract.ContractCycle = ContractCycleEnum.SecondCycle; } else { conract.ContractCycle = ContractCycleEnum.FirstCycle; } temps.Add(conract); } } return Ok(temps); } } }