From 2d8739b04f86ab5e73ec7b0d3152e702a90a450b Mon Sep 17 00:00:00 2001 From: 移动系统liao <liaoxujun@qq.com> Date: 星期一, 14 七月 2025 16:34:49 +0800 Subject: [PATCH] 修改用户扩展资料 --- Admin.NET/FZFCGDD.ORDER.Application/Service/TenderOrder/TenderOrderService.cs | 858 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 858 insertions(+), 0 deletions(-) diff --git a/Admin.NET/FZFCGDD.ORDER.Application/Service/TenderOrder/TenderOrderService.cs b/Admin.NET/FZFCGDD.ORDER.Application/Service/TenderOrder/TenderOrderService.cs new file mode 100644 index 0000000..806d874 --- /dev/null +++ b/Admin.NET/FZFCGDD.ORDER.Application/Service/TenderOrder/TenderOrderService.cs @@ -0,0 +1,858 @@ +锘�// Admin.NET 椤圭洰鐨勭増鏉冦�佸晢鏍囥�佷笓鍒╁拰鍏朵粬鐩稿叧鏉冨埄鍧囧彈鐩稿簲娉曞緥娉曡鐨勪繚鎶ゃ�備娇鐢ㄦ湰椤圭洰搴旈伒瀹堢浉鍏虫硶寰嬫硶瑙勫拰璁稿彲璇佺殑瑕佹眰銆� +// +// 鏈」鐩富瑕侀伒寰� MIT 璁稿彲璇佸拰 Apache 璁稿彲璇侊紙鐗堟湰 2.0锛夎繘琛屽垎鍙戝拰浣跨敤銆傝鍙瘉浣嶄簬婧愪唬鐮佹爲鏍圭洰褰曚腑鐨� LICENSE-MIT 鍜� LICENSE-APACHE 鏂囦欢銆� +// +// 涓嶅緱鍒╃敤鏈」鐩粠浜嬪嵄瀹冲浗瀹跺畨鍏ㄣ�佹壈涔辩ぞ浼氱З搴忋�佷镜鐘粬浜哄悎娉曟潈鐩婄瓑娉曞緥娉曡绂佹鐨勬椿鍔紒浠讳綍鍩轰簬鏈」鐩簩娆″紑鍙戣�屼骇鐢熺殑涓�鍒囨硶寰嬬籂绾峰拰璐d换锛屾垜浠笉鎵挎媴浠讳綍璐d换锛� + +using Admin.NET.Core.Service; +using Microsoft.AspNetCore.Http; + +using Furion.DatabaseAccessor; +using Furion.FriendlyException; +using Mapster; +using SqlSugar; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; +using Microsoft.AspNetCore.Mvc; +using Admin.NET.Application; +using Admin.NET.Core; +using FZCZTB.NET.MD; +using Furion.DynamicApiController; +using Furion.DependencyInjection; +using System.Collections.Generic; +using System.Linq; +using NewLife.Xml; +using AngleSharp.Dom; +using DocumentFormat.OpenXml.Office2010.ExcelAc; +using Furion; +using System.Security.Claims; +using Microsoft.AspNetCore.Authorization; +using RazorEngine.Compilation.ImpromptuInterface; +using MimeKit; +using static FZCZTB.TSCL.Application.ChangeTenderOrderOut; +namespace FZCZTB.TSCL.Application; + +/// <summary> +/// 闈炴斂搴滄嫑鏍囦唬鐞嗚鍗曞鐞嗘湇鍔� 馃З +/// </summary> +[ApiDescriptionSettings(ApplicationConst.GroupNameDD, Order = 100)] +public class TenderOrderService : IDynamicApiController, ITransient +{ + private readonly SqlSugarRepository<TenderOrder> _TenderOrderRep; + private readonly ISqlSugarClient _sqlSugarClient; + private readonly SqlSugarRepository<SysDictData> _sysDictDataRep; + private readonly SysCacheService _sysCacheService; + private readonly SqlSugarRepository<SysRegion> _sysRegionRep; + private readonly SqlSugarRepository<ChangeOrder> _ChangeOrderRep; + private readonly SqlSugarRepository<TenderOrderBidding> _TenderOrderBiddingRep; + + public TenderOrderService(SqlSugarRepository<TenderOrder> TenderOrderRep, ISqlSugarClient sqlSugarClient, + SqlSugarRepository<SysDictData> sysDictDataRep, + SysCacheService sysCacheService, + SqlSugarRepository<SysRegion> sysRegionRep, + SqlSugarRepository<ChangeOrder> changeOrderRep + , SqlSugarRepository<TenderOrderBidding> TenderOrderBiddingRep) + { + _TenderOrderRep = TenderOrderRep; + _sqlSugarClient = sqlSugarClient; + _sysDictDataRep = sysDictDataRep; + _sysCacheService = sysCacheService; + _sysRegionRep = sysRegionRep; + _ChangeOrderRep = changeOrderRep; + _TenderOrderBiddingRep = TenderOrderBiddingRep; + } + + + + /// <summary> + /// 鑾峰彇琛屾斂鍖哄煙鍒楄〃 馃敄 + /// </summary> + /// <returns></returns> + [DisplayName("鑾峰彇琛屾斂鍖哄煙鍒楄〃")] + [ApiDescriptionSettings(Name = "GetRegionList"), HttpGet] + [AllowAnonymous] + public async Task<List<RegionOutput>> GetRegionList() + { + var sysRegions = await _sysRegionRep.AsQueryable().WhereIF(!string.IsNullOrWhiteSpace(""), u => u.Level != 4).Select<RegionOutput>().ToListAsync(); + var regions = sysRegions.Where(x => x.Level == 1).ToList(); + var regionOutputs = sysRegions.Where(x => x.Level == 2).ToList(); + var regionOutputs1 = sysRegions.Where(x => x.Level == 3).ToList(); + + foreach (var region in regions) + { + var regionOutputs2 = regionOutputs.Where(x => x.Pid == region.Id).ToList(); + foreach (var regionOutput in regionOutputs2) + { + var regionOutputs3 = regionOutputs1.Where(x => x.Pid == regionOutput.Id ).ToList(); + regionOutput.Regions = regionOutputs3; + } + region.Regions = regionOutputs2; + } + + return regions; + } + + + /// <summary> + /// 鑾峰彇寮�鏍囨柟寮忛泦鍚� 馃敄 + /// </summary> + /// <returns></returns> + [DisplayName("鑾峰彇寮�鏍囨柟寮忛泦鍚�")] + [ApiDescriptionSettings(Name = "GetKaibiaofangshiList"), HttpGet] + [AllowAnonymous] + public async Task<List<SysDictData>> GetKaibiaofangshiList() + { + return await GetDataListByCode("Kaibiaofangshi"); + } + + + /// <summary> + /// 鑾峰彇鏄惁鏋氫妇闆嗗悎 馃敄 + /// </summary> + /// <returns></returns> + [DisplayName("鑾峰彇鏄惁鏋氫妇闆嗗悎")] + [ApiDescriptionSettings(Name = "GetYesNoEnumList"), HttpGet] + [AllowAnonymous] + public async Task<List<SysDictData>> GetYesNoEnumList() + { + return await GetDataListByCode("YesNoEnum"); + } + + + /// <summary> + /// 鑾峰彇澶嶅悎浣撴姇鏍囬泦鍚� 馃敄 + /// </summary> + /// <returns></returns> + [DisplayName("鑾峰彇澶嶅悎浣撴姇鏍囬泦鍚�")] + [ApiDescriptionSettings(Name = "GetFuhetitoubiaoList"), HttpGet] + [AllowAnonymous] + public async Task<List<SysDictData>> GetFuhetitoubiaoList() + { + return await GetDataListByCode("Fuhetitoubiao"); + } + + + /// <summary> + /// 鑾峰彇瀹氭爣瑙勫垯闆嗗悎 馃敄 + /// </summary> + /// <returns></returns> + [DisplayName("鑾峰彇瀹氭爣瑙勫垯闆嗗悎")] + [ApiDescriptionSettings(Name = "GetDingbiaoguizeList"), HttpGet] + [AllowAnonymous] + public async Task<List<SysDictData>> GetDingbiaoguizeList() + { + return await GetDataListByCode("Dingbiaoguize"); + } + + + /// <summary> + /// 鑾峰彇浠g爜绫诲瀷闆嗗悎 馃敄 + /// </summary> + /// <returns></returns> + [DisplayName("鑾峰彇浠g爜绫诲瀷闆嗗悎")] + [ApiDescriptionSettings(Name = "GetDaimaleixingList"), HttpGet] + [AllowAnonymous] + public async Task<List<SysDictData>> GetDaimaleixingList() + { + return await GetDataListByCode("Daimaleixing"); + } + + + /// <summary> + /// 鑾峰彇閲囪喘鏂瑰紡闆嗗悎 馃敄 + /// </summary> + /// <returns></returns> + [DisplayName("鑾峰彇閲囪喘鏂瑰紡闆嗗悎")] + [ApiDescriptionSettings(Name = "GetCaigoufangshiList"), HttpGet] + [AllowAnonymous] + public async Task<List<SysDictData>> GetCaigoufangshiList() + { + return await GetDataListByCode("Caigoufangshi"); + } + + + /// <summary> + /// 鑾峰彇琛屼笟鍝佺洰闆嗗悎 馃敄 + /// </summary> + /// <returns></returns> + [DisplayName("鑾峰彇琛屼笟鍝佺洰闆嗗悎")] + [ApiDescriptionSettings(Name = "GetHangyepingmuList"), HttpGet] + [AllowAnonymous] + public async Task<List<SysDictData>> GetHangyepingmuList() + { + return await GetDataListByCode("Hangyepingmu"); + } + + + /// <summary> + /// 鑾峰彇椤圭洰杩涘害闆嗗悎 馃敄 + /// </summary> + /// <returns></returns> + [DisplayName("鑾峰彇椤圭洰杩涘害闆嗗悎")] + [ApiDescriptionSettings(Name = "GetOrderStatusList"), HttpGet] + [AllowAnonymous] + public async Task<List<SysDictData>> GetOrderStatusList() + { + return await GetDataListByCode("OrderStatus"); + } + + /// <summary> + /// 鑾峰彇瀛楀吀鍊奸泦鍚� 馃敄 + /// </summary> + /// <param name="typeId"></param> + /// <param name="code"></param> + /// <returns></returns> + [NonAction] + public async Task<List<SysDictData>> GetDataListByCode(string code) + { + if (string.IsNullOrWhiteSpace(code)) + throw Oops.Oh(ErrorCodeEnum.D3011); + + var dictType = await _sysDictDataRep.Change<SysDictType>().AsQueryable() + .Where(u => u.Status == StatusEnum.Enable) + .WhereIF(!string.IsNullOrWhiteSpace(code), u => u.Code == code) + .FirstAsync(); + if (dictType == null) return null; + + + + var dictDataList = await _sysDictDataRep.AsQueryable() + .Where(u => u.DictTypeId == dictType.Id) + .Where(u => u.Status == StatusEnum.Enable) + .OrderBy(u => new { u.OrderNo, u.Value, u.Code }) + .ToListAsync(); + return dictDataList; + } + + + + + + /// <summary> + /// 鎷涙爣浠g悊鍒嗛〉鏌ヨ闈炴斂搴滆鍗曞鐞� 馃敄 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [DisplayName("鎷涙爣浠g悊鍒嗛〉鏌ヨ闈炴斂搴滆鍗曞鐞�")] + [ApiDescriptionSettings(Name = "Page"), HttpPost] + public async Task<SqlSugarPagedList<TenderOrderOutput>> Page(PageTenderOrderInput input) + { + long userId = 0; + long.TryParse(App.User?.FindFirst(ClaimConst.UserId)?.Value, out userId); + + var query = _TenderOrderRep.AsQueryable() + .Where(x => x.CreateUserId == userId) + .WhereIF(!string.IsNullOrWhiteSpace(input.Xingzhengquyu), u => u.Xingzhengquyu.Contains(input.Xingzhengquyu.Trim())) + .WhereIF(!string.IsNullOrWhiteSpace(input.Hangyepinmu), u => u.Hangyepinmu == input.Hangyepinmu.Trim()) + .WhereIF( input.OrderStatus.HasValue, u => u.OrderStatus == input.OrderStatus) + .WhereIF(input.Zhiyi.HasValue, u => u.Zhiyi == input.Zhiyi) + .WhereIF(input.Tousu.HasValue, u => u.Tousu == input.Tousu) + .WhereIF(!string.IsNullOrWhiteSpace(input.ProjectName), u => u.ProjectName.Contains(input.ProjectName.Trim())) + .WhereIF(!string.IsNullOrWhiteSpace(input.Dailijigoumingcheng), u => u.Dailijigoumingcheng.Contains(input.Dailijigoumingcheng.Trim())) + .WhereIF(!string.IsNullOrWhiteSpace(input.ZhongbiaoName), u => u.ZhongbiaoName.Contains(input.ZhongbiaoName.Trim())) + .WhereIF(!string.IsNullOrWhiteSpace(input.ZhuanjiaName), u => u.ZhuanjiaName.Contains(input.ZhuanjiaName.Trim())) + .WhereIF(input.CreateDateRange != null && input.CreateDateRange.Length == 2, u => u.CreateTime >= input.CreateDateRange[0] && u.CreateTime <= input.CreateDateRange[1]) + .Select<TenderOrderOutput>(); + return await query.OrderBuilder(input,"", "CreateTime",true).ToPagedListAsync(input.Page, input.PageSize); + } + + /// <summary> + /// 鑾峰彇闈炴斂搴滆鍗曞鐞嗚鎯� 鈩癸笍 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [DisplayName("鑾峰彇闈炴斂搴滆鍗曞鐞嗚鎯�")] + [ApiDescriptionSettings(Name = "Detail"), HttpGet] + public async Task<TenderOrderOutput> Detail([FromQuery] QueryByIdTenderOrderInput input) + { + var Kaibiaofangshi = await GetDataListByCode("Kaibiaofangshi"); + var Caigoufangshi = await GetDataListByCode("Caigoufangshi"); + var Hangyepinmu = await GetDataListByCode("Hangyepingmu"); + var Fuhetitoubiao = await GetDataListByCode("Fuhetitoubiao"); + var Dingbiaoguize = await GetDataListByCode("Dingbiaoguize"); + var Daimaleixing = await GetDataListByCode("Daimaleixing"); + + var YesNoEnum = await GetDataListByCode("YesNoEnum"); + + + + + + + var OrderStatus = await GetDataListByCode("OrderStatus"); + var tenderOrderOutput = await _TenderOrderRep.AsQueryable().Where(x => x.Id == input.Id).Select<TenderOrderOutput>().FirstAsync(); + if (tenderOrderOutput != null) + { + if (!string.IsNullOrEmpty(tenderOrderOutput.Kaibiaofangshi)) + { + tenderOrderOutput.KaibiaofangshiName = Kaibiaofangshi.Where(x => x.Value == tenderOrderOutput.Kaibiaofangshi).Select(x=>x.Label).FirstOrDefault()??""; + } + if (!string.IsNullOrEmpty(tenderOrderOutput.Caigoufangshi)) + { + tenderOrderOutput.CaigoufangshiName = Caigoufangshi.Where(x => x.Value == tenderOrderOutput.Caigoufangshi).Select(x => x.Label).FirstOrDefault() ?? ""; + } + if (!string.IsNullOrEmpty(tenderOrderOutput.Hangyepinmu)) + { + tenderOrderOutput.HangyepinmuName = Hangyepinmu.Where(x => x.Value == tenderOrderOutput.Hangyepinmu).Select(x => x.Label).FirstOrDefault() ?? ""; + } + if (!string.IsNullOrEmpty(tenderOrderOutput.Lianhetitoubiao)) + { + tenderOrderOutput.LianhetitoubiaoName = Fuhetitoubiao.Where(x => x.Value == tenderOrderOutput.Lianhetitoubiao).Select(x => x.Label).FirstOrDefault() ?? ""; + } + if (!string.IsNullOrEmpty(tenderOrderOutput.Dingbiaoguize)) + { + tenderOrderOutput.DingbiaoguizeName = Dingbiaoguize.Where(x => x.Value == tenderOrderOutput.Dingbiaoguize).Select(x => x.Label).FirstOrDefault() ?? ""; + } + if (!string.IsNullOrEmpty(tenderOrderOutput.Daimaleixing)) + { + tenderOrderOutput.DaimaleixingName = Daimaleixing.Where(x => x.Value == tenderOrderOutput.Daimaleixing).Select(x => x.Label).FirstOrDefault() ?? ""; + } + + if (!string.IsNullOrEmpty(tenderOrderOutput.Shifoufenbao)) + { + tenderOrderOutput.ShifoufenbaoName = YesNoEnum.Where(x => x.Value == tenderOrderOutput.Shifoufenbao).Select(x => x.Label).FirstOrDefault() ?? ""; + } + if (!string.IsNullOrEmpty(tenderOrderOutput.Shifoutuisongxuanchuan)) + { + tenderOrderOutput.ShifoutuisongxuanchuanName = YesNoEnum.Where(x => x.Value == tenderOrderOutput.Shifoutuisongxuanchuan).Select(x => x.Label).FirstOrDefault() ?? ""; + } + if (tenderOrderOutput.OrderStatus.HasValue) + { + tenderOrderOutput.OrderStatusName = OrderStatus.Where(x => x.Value == tenderOrderOutput.OrderStatus.Value.ToString()).Select(x => x.Label).FirstOrDefault() ?? ""; + } + + } + + var changeOrder = await _ChangeOrderRep.AsQueryable().Where(x => x.TenderId == input.Id).FirstAsync(); + tenderOrderOutput.changeOrder = changeOrder; + + + var tenderOrderBiddings = await _sqlSugarClient.Queryable<TenderOrderBidding>() + .Where(x => x.TenderId == input.Id) + .Where(x=>x.IsTransfer == true) + .Select<TenderOrderBiddingOutput>().ToListAsync(); + + if (tenderOrderBiddings != null) + { + foreach (var tenderOrderBiddingOutput in tenderOrderBiddings) + { + if (tenderOrderBiddingOutput.IsSelected.HasValue && tenderOrderBiddingOutput.IsSelected.Value) + { + tenderOrderBiddingOutput.IsSelectedName = "鏄�"; + } + else + { + tenderOrderBiddingOutput.IsSelectedName = "鍚�"; + } + + if (tenderOrderBiddingOutput.IsTransfer.HasValue && tenderOrderBiddingOutput.IsTransfer.Value) + { + tenderOrderBiddingOutput.IsTransferName = "鏄�"; + } + else + { + tenderOrderBiddingOutput.IsTransferName = "鍚�"; + } + } + } + tenderOrderOutput.tenderOrderBiddings = tenderOrderBiddings; + + + + return tenderOrderOutput; + } + + /// <summary> + /// 閲囪喘浠g悊浜哄鍔犻潪鏀垮簻璁㈠崟澶勭悊 鉃� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [DisplayName("閲囪喘浠g悊浜哄鍔犻潪鏀垮簻璁㈠崟澶勭悊")] + [ApiDescriptionSettings(Name = "Add"), HttpPost] + public async Task<bool> Add(AddTenderOrderInput input) + { + var entity = input.Adapt<TenderOrder>(); + entity.Id = Guid.NewGuid(); + long userId = 0; + long? usertrueId = null; + if (long.TryParse(App.User?.FindFirst(ClaimConst.UserId)?.Value, out userId)) + { + usertrueId = userId; + } + var RealName = App.User?.FindFirstValue(ClaimConst.RealName); + entity.CreateTime = DateTime.Now; + entity.UpdateTime = DateTime.Now; + entity.CreateUserId = usertrueId; + entity.CreateUserName = RealName; + entity.UpdateUserId = usertrueId; + entity.UpdateUserName = RealName; + entity.OrderStatus = 1; + entity.Tousu = false; + entity.Zhiyi = false; + + return await _TenderOrderRep.InsertAsync(entity); + } + + /// <summary> + /// 閲囪喘浠g悊浜烘洿鏂伴潪鏀垮簻璁㈠崟澶勭悊 鉁忥笍 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [DisplayName("閲囪喘浠g悊浜烘洿鏂伴潪鏀垮簻璁㈠崟澶勭悊")] + [ApiDescriptionSettings(Name = "Update"), HttpPost] + public async Task Update(UpdateTenderOrderInput input) + { + var entity = input.Adapt<TenderOrder>(); + long userId = 0; + long? usertrueId = null; + if (long.TryParse(App.User?.FindFirst(ClaimConst.UserId)?.Value, out userId)) + { + usertrueId = userId; + } + var tenderOrder = _TenderOrderRep.AsQueryable().Where(x => x.Id == input.Id).First(); + if(tenderOrder == null) + { + throw Oops.Oh("璁㈠崟涓嶅瓨鍦紒"); + } + if(tenderOrder.OrderStatus != 1) + { + throw Oops.Oh("鍙湁澶勪簬淇濆瓨鐘舵�佺殑璁㈠崟鎵嶈兘淇敼锛�"); + } + var RealName = App.User?.FindFirstValue(ClaimConst.RealName); + entity.UpdateTime = DateTime.Now; + entity.UpdateUserId = usertrueId; + entity.UpdateUserName = RealName; + await _sqlSugarClient.Updateable(entity).UpdateColumns(x=> new { x.ProjectName, x.ProjectCode, x.Hangyepinmu, x.Caigoufangshi, x.Caigouyusuan, x.Dingbiaoguize, x.Baomingfei, x.Toubiaobaozhengjin, x.Lianhetitoubiao, x.Kaibiaofangshi, x.Shifoufenbao, x.Shifoutuisongxuanchuan, x.Caigourenmingcheng, x.Xingzhengquyu, x.XingzhengquyuName, x.Jigoudaima, x.Daimaleixing, x.Lianxiren, x.Lianxidianhua, x.Tongxindizhi, x.Dianziyoujian, x.Xiangmujingbanren, x.Zhiwu, x.Jingbanrendianhua, x.Dailijigoumingcheng, x.DailiLianxiren, x.DailiLianxidianhua, x.DailiDianziyoujian, x.DailiTongxindizhi, x.DailiXiangmujingli, x.DailijingliLianxidianhua, x.UpdateTime, x.UpdateUserId, x.UpdateUserName }).ExecuteCommandAsync(); + //await _TenderOrderRep.UpdateAsync(entity); + } + + + + /// <summary> + /// 閲囪喘浠g悊浜烘洿鏂伴潪鏀垮簻璁㈠崟璐ㄧ枒 鉁忥笍 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [DisplayName("閲囪喘浠g悊浜烘洿鏂伴潪鏀垮簻璁㈠崟璐ㄧ枒")] + [ApiDescriptionSettings(Name = "UpdateZhiyi"), HttpPost] + public async Task UpdateZhiyi(UpdateZhiyiByIdTenderOrderInput input) + { + + long userId = 0; + long? usertrueId = null; + if (long.TryParse(App.User?.FindFirst(ClaimConst.UserId)?.Value, out userId)) + { + usertrueId = userId; + } + var RealName = App.User?.FindFirstValue(ClaimConst.RealName); + + var tenderOrder = _TenderOrderRep.AsQueryable().Where(x => x.Id == input.Id).First(); + if (tenderOrder == null) + { + throw Oops.Oh("璁㈠崟涓嶅瓨鍦紒"); + } + tenderOrder.Zhiyi = input.Zhiyi; + tenderOrder.UpdateTime = DateTime.Now; + tenderOrder.UpdateUserId = usertrueId; + tenderOrder.UpdateUserName = RealName; + await _TenderOrderRep.UpdateAsync(tenderOrder); + } + + + + /// <summary> + /// 閲囪喘浠g悊浜烘洿鏂伴潪鏀垮簻璁㈠崟鎶曡瘔 鉁忥笍 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [DisplayName("閲囪喘浠g悊浜烘洿鏂伴潪鏀垮簻璁㈠崟鎶曡瘔")] + [ApiDescriptionSettings(Name = "UpdateTousu"), HttpPost] + public async Task UpdateTousu(UpdateZhiyiByIdTenderOrderInput input) + { + + long userId = 0; + long? usertrueId = null; + if (long.TryParse(App.User?.FindFirst(ClaimConst.UserId)?.Value, out userId)) + { + usertrueId = userId; + } + var RealName = App.User?.FindFirstValue(ClaimConst.RealName); + + var tenderOrder = _TenderOrderRep.AsQueryable().Where(x => x.Id == input.Id).First(); + if (tenderOrder == null) + { + throw Oops.Oh("璁㈠崟涓嶅瓨鍦紒"); + } + tenderOrder.Tousu = input.Zhiyi; + tenderOrder.UpdateTime = DateTime.Now; + tenderOrder.UpdateUserId = usertrueId; + tenderOrder.UpdateUserName = RealName; + await _TenderOrderRep.UpdateAsync(tenderOrder); + } + + + + /// <summary> + /// 閲囪喘浠g悊浜哄垹闄ら潪鏀垮簻璁㈠崟澶勭悊 鉂� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [DisplayName("閲囪喘浠g悊浜哄垹闄ら潪鏀垮簻璁㈠崟澶勭悊")] + [ApiDescriptionSettings(Name = "Delete"), HttpPost] + public async Task Delete(DeleteTenderOrderInput input) + { + //var entity = await _TenderOrderRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002); + var entity = await _sqlSugarClient.Queryable<TenderOrder>().Where(x=>x.Id== input.Id).FirstAsync() ?? throw Oops.Oh(ErrorCodeEnum.D1002); + //await _TenderOrderRep.FakeDeleteAsync(entity); //鍋囧垹闄� + await _TenderOrderRep.DeleteAsync(entity); //鐪熷垹闄� + } + + /// <summary> + /// 閲囪喘浠g悊浜烘壒閲忓垹闄ら潪鏀垮簻璁㈠崟澶勭悊 鉂� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [DisplayName("閲囪喘浠g悊浜烘壒閲忓垹闄ら潪鏀垮簻璁㈠崟澶勭悊")] + [ApiDescriptionSettings(Name = "BatchDelete"), HttpPost] + public async Task<bool > BatchDelete([Required(ErrorMessage = "涓婚敭鍒楄〃涓嶈兘涓虹┖")]List<DeleteTenderOrderInput> input) + { + var exp = Expressionable.Create<TenderOrder>(); + foreach (var row in input) exp = exp.Or(it => it.Id == row.Id); + var list = await _TenderOrderRep.AsQueryable().Where(exp.ToExpression()).ToListAsync(); + + // return await _TenderOrderRep.FakeDeleteAsync(list); //鍋囧垹闄� + return await _TenderOrderRep.DeleteAsync(list) ; //鐪熷垹闄� + } + + /// <summary> + /// 瀵煎嚭闈炴斂搴滆鍗曞鐞嗚褰� 馃敄 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [DisplayName("瀵煎嚭闈炴斂搴滆鍗曞鐞嗚褰�")] + [ApiDescriptionSettings(Name = "Export"), HttpPost, NonUnify] + public async Task<IActionResult> Export(PageTenderOrderInput input) + { + var list = (await Page(input)).Items?.Adapt<List<ExportTenderOrderOutput>>() ?? new(); + //if (input.SelectKeyList?.Count > 0) list = list.Where(x => input.SelectKeyList.Contains(x.Id)).ToList(); + return ExcelHelper.ExportTemplate(list, "闈炴斂搴滆鍗曞鐞嗗鍑鸿褰�"); + } + + /// <summary> + /// 涓嬭浇闈炴斂搴滆鍗曞鐞嗘暟鎹鍏ユā鏉� 猬囷笍 + /// </summary> + /// <returns></returns> + [DisplayName("涓嬭浇闈炴斂搴滆鍗曞鐞嗘暟鎹鍏ユā鏉�")] + [ApiDescriptionSettings(Name = "Import"), HttpGet, NonUnify] + public IActionResult DownloadTemplate() + { + return ExcelHelper.ExportTemplate(new List<ExportTenderOrderOutput>(), "闈炴斂搴滆鍗曞鐞嗗鍏ユā鏉�"); + } + + private static readonly object _TenderOrderImportLock = new object(); + /// <summary> + /// 瀵煎叆闈炴斂搴滆鍗曞鐞嗚褰� 馃捑 + /// </summary> + /// <returns></returns> + //[DisplayName("瀵煎叆闈炴斂搴滆鍗曞鐞嗚褰�")] + //[ApiDescriptionSettings(Name = "Import"), HttpPost, NonUnify, UnitOfWork] + //public IActionResult ImportData([Required] IFormFile file) + //{ + // lock (_TenderOrderImportLock) + // { + // var stream = ExcelHelper.ImportData<ImportTenderOrderInput, TenderOrder>(file, (list, markerErrorAction) => + // { + // _sqlSugarClient.Utilities.PageEach(list, 2048, pageItems => + // { + + // // 鏍¢獙骞惰繃婊ゅ繀濉熀鏈被鍨嬩负null鐨勫瓧娈� + // var rows = pageItems.Where(x => { + // return true; + // }).Adapt<List<TenderOrder>>(); + + // var storageable = _TenderOrderRep.Context.Storageable(rows) + // .SplitError(it => string.IsNullOrWhiteSpace(it.Item.ProjectCode), "椤圭洰缂栧彿涓嶈兘涓虹┖") + // .SplitError(it => it.Item.ProjectCode?.Length > 50, "椤圭洰缂栧彿闀垮害涓嶈兘瓒呰繃50涓瓧绗�") + // .SplitError(it => string.IsNullOrWhiteSpace(it.Item.ProjectName), "椤圭洰鍚嶇О涓嶈兘涓虹┖") + // .SplitError(it => it.Item.ProjectName?.Length > 200, "椤圭洰鍚嶇О闀垮害涓嶈兘瓒呰繃200涓瓧绗�") + // .SplitError(it => string.IsNullOrWhiteSpace(it.Item.Purchaser), "閲囪喘浜轰笉鑳戒负绌�") + // .SplitError(it => it.Item.Purchaser?.Length > 100, "閲囪喘浜洪暱搴︿笉鑳借秴杩�100涓瓧绗�") + // .SplitError(it => string.IsNullOrWhiteSpace(it.Item.ProcurementAgency), "閲囪喘浠g悊鏈烘瀯涓嶈兘涓虹┖") + // .SplitError(it => it.Item.ProcurementAgency?.Length > 100, "閲囪喘浠g悊鏈烘瀯闀垮害涓嶈兘瓒呰繃100涓瓧绗�") + // .SplitError(it => it.Item.Complainant?.Length > 100, "鎶曡瘔浜洪暱搴︿笉鑳借秴杩�100涓瓧绗�") + // .SplitError(it => it.Item.ProcurementSupervisionDepartment?.Length > 100, "閲囪喘鐩戠潱閮ㄩ棬闀垮害涓嶈兘瓒呰繃100涓瓧绗�") + // .SplitError(it => it.Item.Url?.Length > 255, "绾夸笂鍦板潃闀垮害涓嶈兘瓒呰繃255涓瓧绗�") + // .SplitInsert(_ => true) + // .ToStorage(); + + // storageable.AsInsertable.ExecuteCommand();// 涓嶅瓨鍦ㄦ彃鍏� + // storageable.AsUpdateable.ExecuteCommand();// 瀛樺湪鏇存柊 + + // // 鏍囪閿欒淇℃伅 + // markerErrorAction.Invoke(storageable, pageItems, rows); + // }); + // }); + + // return stream; + // } + //} + + + /// <summary> + /// 閲囪喘浠g悊浜哄彂甯冩嫑鏍� 鉁忥笍 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [DisplayName("閲囪喘浠g悊浜哄彂甯冩嫑鏍�")] + [ApiDescriptionSettings(Name = "Fabuzhaobiao"), HttpPost] + public async Task Fabuzhaobiao(FabuTenderOrderInput input) + { + var entity = input.Adapt<TenderOrder>(); + long userId = 0; + long? usertrueId = null; + if (long.TryParse(App.User?.FindFirst(ClaimConst.UserId)?.Value, out userId)) + { + usertrueId = userId; + } + var tenderOrder = _TenderOrderRep.AsQueryable().Where(x => x.Id == input.Id).First(); + if (tenderOrder == null) + { + throw Oops.Oh("璁㈠崟涓嶅瓨鍦紒"); + } + if (tenderOrder.OrderStatus != 1) + { + throw Oops.Oh("鍙湁澶勪簬淇濆瓨鐘舵�佺殑璁㈠崟鎵嶈兘鍙戝竷锛�"); + } + var RealName = App.User?.FindFirstValue(ClaimConst.RealName); + entity.UpdateTime = DateTime.Now; + entity.UpdateUserId = usertrueId; + entity.UpdateUserName = RealName; + entity.FabuDate = entity.UpdateTime; + entity.OrderStatus = 2; + await _sqlSugarClient.Updateable(entity).UpdateColumns(x => new { x.ToubiaoStartDate, x.ToubiaoEndDate, x.KaibiaoDate, x.FabuDate, x.Zhaobiaowenjian, x.Fujian, x.Kaibiaodidian, x.UpdateTime, x.UpdateUserId, x.UpdateUserName,x.OrderStatus }).ExecuteCommandAsync(); + //await _TenderOrderRep.UpdateAsync(entity); + } + + + + + /// <summary> + /// 閲囪喘浠g悊浜烘洿鏂伴潪鏀垮簻璁㈠崟鏍囬 鉁忥笍 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [DisplayName("閲囪喘浠g悊浜烘洿鏂伴潪鏀垮簻璁㈠崟鏍囬")] + [ApiDescriptionSettings(Name = "UpdateTittle"), HttpPost] + public async Task UpdateTittle(UpdateTittleByIdTenderOrderInput input) + { + + long userId = 0; + long? usertrueId = null; + if (long.TryParse(App.User?.FindFirst(ClaimConst.UserId)?.Value, out userId)) + { + usertrueId = userId; + } + var RealName = App.User?.FindFirstValue(ClaimConst.RealName); + + var tenderOrder = _TenderOrderRep.AsQueryable().Where(x => x.Id == input.Id).First(); + if (tenderOrder == null) + { + throw Oops.Oh("璁㈠崟涓嶅瓨鍦紒"); + } + tenderOrder.ProjectName = input.ProjectName.Trim(); + tenderOrder.UpdateTime = DateTime.Now; + tenderOrder.UpdateUserId = usertrueId; + tenderOrder.UpdateUserName = RealName; + await _TenderOrderRep.UpdateAsync(tenderOrder); + } + + + + /// <summary> + /// 閲囪喘浠g悊浜哄彂甯冨彉鏇村叕鍛� 鉁忥笍 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [DisplayName("閲囪喘浠g悊浜哄彂甯冨彉鏇村叕鍛�")] + [ApiDescriptionSettings(Name = "Changezhaobiao"), HttpPost] + public async Task Changezhaobiao(ChangeTenderOrderInput input) + { + var entity = input.Adapt<TenderOrder>(); + long userId = 0; + long? usertrueId = null; + if (long.TryParse(App.User?.FindFirst(ClaimConst.UserId)?.Value, out userId)) + { + usertrueId = userId; + } + var tenderOrder = _TenderOrderRep.AsQueryable().Where(x => x.Id == input.TenderId).First(); + if (tenderOrder == null) + { + throw Oops.Oh("璁㈠崟涓嶅瓨鍦紒"); + } + if (tenderOrder.OrderStatus != 2) + { + throw Oops.Oh("鍙湁澶勪簬鍙戝竷鐘舵�佺殑璁㈠崟鎵嶈兘鍙樻洿鍏憡锛�"); + } + var changeOrder = await _ChangeOrderRep.AsQueryable().Where(x => x.TenderId == input.TenderId).FirstAsync(); + if(changeOrder != null) + { + throw Oops.Oh("宸茬粡涓婁紶杩囧彉鏇村叕鍛婏紒"); + } + + changeOrder = new ChangeOrder(); + + var RealName = App.User?.FindFirstValue(ClaimConst.RealName); + changeOrder.Id = Guid.NewGuid(); + changeOrder.TenderId = input.TenderId; + changeOrder.ProjectName = input.ProjectName; + changeOrder.Biangengwenjian = input.Biangengwenjian; + changeOrder.CreateTime = DateTime.Now; + changeOrder.CreateUserId = usertrueId; + changeOrder.CreateUserName = RealName; + changeOrder.UpdateTime = DateTime.Now; + changeOrder.UpdateUserId = usertrueId; + changeOrder.UpdateUserName = RealName; + changeOrder.ToubiaoStartDate = input.ToubiaoStartDate; + changeOrder.ToubiaoEndDate = input.ToubiaoEndDate; + changeOrder.KaibiaoDate = input.KaibiaoDate; + changeOrder.Kaibiaodidian = input.Kaibiaodidian; + await _ChangeOrderRep.InsertAsync(changeOrder); + + entity.Id = input.TenderId; + entity.ToubiaoStartDate = input.ToubiaoStartDate; + entity.ToubiaoEndDate = input.ToubiaoEndDate; + entity.KaibiaoDate = input.KaibiaoDate; + entity.Kaibiaodidian = input.Kaibiaodidian; + entity.UpdateTime = DateTime.Now; + entity.UpdateUserId = usertrueId; + entity.UpdateUserName = RealName; + await _sqlSugarClient.Updateable(entity).UpdateColumns(x => new { x.ToubiaoStartDate, x.ToubiaoEndDate, x.KaibiaoDate , x.Kaibiaodidian, x.UpdateTime, x.UpdateUserId, x.UpdateUserName }).ExecuteCommandAsync(); + //await _TenderOrderRep.UpdateAsync(entity); + } + + + + + /// <summary> + /// 鑾峰彇鍙樻洿鍏憡璇︽儏 鈩癸笍 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [DisplayName("鑾峰彇鍙樻洿鍏憡璇︽儏")] + [ApiDescriptionSettings(Name = "ChangeDetail"), HttpGet] + public async Task<ChangeTenderOrderOut> ChangeDetail([FromQuery] QueryByIdTenderOrderInput input) + { + + + + + + + + //var tenderOrderOutput = await _TenderOrderRep.AsQueryable().Where(x => x.Id == input.Id).Select<TenderOrderOutput>().FirstAsync(); + + + var changeOrder = await _ChangeOrderRep.AsQueryable().Where(x => x.TenderId == input.Id).Select<ChangeTenderOrderOut>().FirstAsync(); + //changeOrder.ToubiaoStartDate = tenderOrderOutput.ToubiaoStartDate; + //changeOrder.ToubiaoEndDate = tenderOrderOutput.ToubiaoEndDate; + //changeOrder.KaibiaoDate = tenderOrderOutput.KaibiaoDate; + //changeOrder.Kaibiaodidian = tenderOrderOutput.Kaibiaodidian; + + + + return changeOrder; + } + + + + + /// <summary> + /// 閲囪喘浠g悊浜哄垹闄ゅ彉鏇村叕鍛� 鉂� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [DisplayName("閲囪喘浠g悊浜哄垹闄ゅ彉鏇村叕鍛�")] + [ApiDescriptionSettings(Name = "CHangeDelete"), HttpPost] + public async Task CHangeDelete(DeleteTenderOrderInput input) + { + //var entity = await _TenderOrderRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002); + var entity = await _sqlSugarClient.Queryable<ChangeOrder>().Where(x => x.Id == input.Id).FirstAsync() ?? throw Oops.Oh(ErrorCodeEnum.D1002); + //await _TenderOrderRep.FakeDeleteAsync(entity); //鍋囧垹闄� + await _ChangeOrderRep.DeleteAsync(entity); //鐪熷垹闄� + } + + + + /// <summary> + /// 浠g悊鍟嗗彂甯冧腑鏍囨枃浠� 鉃� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [DisplayName("浠g悊鍟嗗彂甯冧腑鏍囨枃浠�")] + [ApiDescriptionSettings(Name = "AddZhongbiao"), HttpPost] + public async Task<bool> AddZhongbiao(OrderZhongbiaoInput input) + { + + + long userId = 0; + long? usertrueId = null; + if (long.TryParse(App.User?.FindFirst(ClaimConst.UserId)?.Value, out userId)) + { + usertrueId = userId; + } + var RealName = App.User?.FindFirstValue(ClaimConst.RealName); + + + + var tenderOrder = await _TenderOrderRep.AsQueryable().Where(x => x.Id == input.TenderOrderId).FirstAsync(); + if (tenderOrder == null) + { + throw Oops.Oh("涓嶅瓨鍦ㄧ殑鎷涙爣锛�"); + } + if (tenderOrder.OrderStatus >=3 ) + { + throw Oops.Oh("宸茬粡涓爣鐨勯」鐩笉鑳藉啀娆′腑鏍囷紒"); + } + + + var tenderOrderBidding = await _TenderOrderBiddingRep.AsQueryable().Where(x => x.TenderId == input.TenderOrderId).Where(x => x.CreateUserId == input.SupplierUserId).FirstAsync(); + if (tenderOrderBidding == null) + { + throw Oops.Oh("涓嶅瓨鍦ㄧ殑鎶曟爣锛�"); + } + if (tenderOrderBidding.IsTransfer != true ) + { + throw Oops.Oh("娌℃湁鏀粯鎶ュ悕璐广�備笉鑳戒腑鏍囷紒"); + } + if (string.IsNullOrEmpty(tenderOrderBidding.Touboaowenjian) ) + { + throw Oops.Oh("娌℃湁鎶曟爣鏂囦欢銆備笉鑳戒腑鏍囷紒"); + } + + tenderOrder.ZhongbiaoId = input.SupplierUserId; + tenderOrder.ZhongbiaoName = input.SupplierUserName; + tenderOrder.Zhongbiaowenjian = input.Zhongbiaowenjian; + tenderOrder.ZhongbiaoDate = DateTime.Now; + tenderOrder.UpdateTime = DateTime.Now; + tenderOrder.UpdateUserId = usertrueId; + tenderOrder.UpdateUserName = RealName; + tenderOrder.OrderStatus = 3; + tenderOrder.ZhongbiaoTittle = input.ZhongbiaoTittle; + await _TenderOrderRep.UpdateAsync(tenderOrder); + + + tenderOrderBidding.IsSelected = true; + tenderOrderBidding.SelectedTime = tenderOrder.ZhongbiaoDate; + tenderOrderBidding.UpdateTime = DateTime.Now; + tenderOrderBidding.UpdateUserId = usertrueId; + tenderOrderBidding.UpdateUserName = RealName; + + + + + + return await _TenderOrderBiddingRep.UpdateAsync(tenderOrderBidding); + } + + +} -- Gitblit v1.9.1