mh_custom/wtmProject/Areas/_Admin/Controllers/WTM_CONTRACTController.cs

270 lines
10 KiB
C#
Raw Normal View History

2024-05-28 14:49:22 +08:00
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;
2026-01-06 10:55:05 +08:00
using wtmProject.ViewModel._Admin.WTM_BILLING_LISTVMs;
using wtmProject.ViewModel._Admin.FrameworkOutRecordVMs;
2024-05-28 14:49:22 +08:00
namespace wtmProject.Controllers
{
[Area("_Admin")]
[AuthorizeJwtWithCookie]
[ActionDescription("合同管理")]
[ApiController]
[Route("api/WTM_CONTRACT")]
2026-01-06 10:55:05 +08:00
[AllRights]
2024-05-28 14:49:22 +08:00
public partial class WTM_CONTRACTController : BaseApiController
{
[ActionDescription("Sys.Search")]
[HttpPost("Search")]
public IActionResult Search(WTM_CONTRACTSearcher searcher)
{
if (ModelState.IsValid)
{
var vm = Wtm.CreateVM<WTM_CONTRACTListVM>();
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<WTM_CONTRACTVM>(id);
return vm;
}
[ActionDescription("Sys.Create")]
[HttpPost("Add")]
public IActionResult Add(WTM_CONTRACTVM vm)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState.GetErrorJson());
}
else
{
2026-01-06 10:55:05 +08:00
var vmOld = DC.Set<WTM_CONTRACT>().FirstOrDefault(t=>t.ContractName == vm.Entity.ContractName && t.CustomId == vm.Entity.CustomId);
if (vmOld != null)
2024-05-28 14:49:22 +08:00
{
2026-01-06 10:55:05 +08:00
Dictionary<string, string> Form = new Dictionary<string, string>();
List<string> Message = new List<string>() { "请勿重复添加,该合同已存在" };
ErrorObj error = new ErrorObj();
error.Form = Form;
error.Message = Message;
return BadRequest(error);
//return BadRequest("合同名称" + vmOld.ContractName + "已存在,请勿重复添加");
2024-05-28 14:49:22 +08:00
}
else
{
2026-01-06 10:55:05 +08:00
vm.DoAdd();
if (!ModelState.IsValid)
{
return BadRequest(ModelState.GetErrorJson());
}
else
{
return Ok(vm.Entity);
}
2024-05-28 14:49:22 +08:00
}
}
}
[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<WTM_CONTRACTBatchVM>();
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<WTM_CONTRACTListVM>();
vm.Searcher = searcher;
vm.SearcherMode = ListVMSearchModeEnum.Export;
return vm.GetExportData();
}
[ActionDescription("Sys.CheckExport")]
[HttpPost("ExportExcelByIds")]
public IActionResult ExportExcelByIds(string[] ids)
{
var vm = Wtm.CreateVM<WTM_CONTRACTListVM>();
if (ids != null && ids.Count() > 0)
{
vm.Ids = new List<string>(ids);
vm.SearcherMode = ListVMSearchModeEnum.CheckExport;
}
return vm.GetExportData();
}
[ActionDescription("Sys.DownloadTemplate")]
[HttpGet("GetExcelTemplate")]
public IActionResult GetExcelTemplate()
{
var vm = Wtm.CreateVM<WTM_CONTRACTImportVM>();
var qs = new Dictionary<string, string>();
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);
}
}
2026-01-06 10:55:05 +08:00
[ActionDescription("Sys.GetWTM_CUSTOMs")]
2024-05-28 14:49:22 +08:00
[HttpGet("GetWTM_CUSTOMs")]
public ActionResult GetWTM_CUSTOMs()
{
var userAreas = DC.Set<WTM_USER_AREA>().Where(t => t.UserCode == Wtm.LoginUserInfo.ITCode).Select(m => m.AreaCode).ToList();
return Ok(DC.Set<WTM_CUSTOM>().Where(t => t.Area != null && userAreas.Contains(t.Area.AreaCode)).GetSelectListItems(Wtm, x => x.CustomAllName));
}
2026-01-06 10:55:05 +08:00
[ActionDescription("Sys.GetWTM_CUSTOM_PERSONs")]
2024-05-28 14:49:22 +08:00
[HttpGet("GetWTM_CUSTOM_PERSONs")]
public ActionResult GetWTM_CUSTOM_PERSONs()
{
return Ok(DC.Set<WTM_CUSTOM_PERSON>().GetSelectListItems(Wtm, x => x.PersonName));
}
2026-01-06 10:55:05 +08:00
[ActionDescription("Sys.GetFrameworkUsers")]
2024-05-28 14:49:22 +08:00
[HttpGet("GetFrameworkUsers")]
public ActionResult GetFrameworkUsers()
{
return Ok(DC.Set<FrameworkUser>().OrderBy(m => m.DisplayOrder).GetSelectListItems(Wtm, x => x.Name, null, false, false));
}
2026-01-06 10:55:05 +08:00
[ActionDescription("Sys.GetWTM_PROJECTs")]
2024-05-28 14:49:22 +08:00
[HttpGet("GetWTM_PROJECTs")]
public ActionResult GetWTM_PROJECTs()
{
var userProjects = DC.Set<WTM_USER_PROJECT>().Where(t => t.UserCode == Wtm.LoginUserInfo.ITCode).Select(m => m.ProjectCode).ToList();
return Ok(DC.Set<WTM_PROJECT>().Where(x => userProjects.Contains(x.ProjectCode)).GetSelectListItems(Wtm, x => x.ProjectName));
}
2026-01-06 10:55:05 +08:00
[ActionDescription("Sys.SyncContract")]
[HttpGet("SyncContract")]
public ActionResult SyncContract()
{
var temps = new List<WTM_CONTRACT_View>();
var vm = DC.Set<WTM_CONTRACT_IMPORT_TEMP>().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<WTM_CUSTOM>().Where(o => customNames.Contains(o.CustomAllName)).ToList();
var projectes = DC.Set<WTM_PROJECT>().Where(o => projectNames.Contains(o.ProjectName)).ToList();
var users = DC.Set<FrameworkUser>().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);
}
2024-05-28 14:49:22 +08:00
}
}