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/SuplierTendOrder/SuplierTendOrderService.cs |  392 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 392 insertions(+), 0 deletions(-)

diff --git a/Admin.NET/FZFCGDD.ORDER.Application/Service/SuplierTendOrder/SuplierTendOrderService.cs b/Admin.NET/FZFCGDD.ORDER.Application/Service/SuplierTendOrder/SuplierTendOrderService.cs
new file mode 100644
index 0000000..b4be808
--- /dev/null
+++ b/Admin.NET/FZFCGDD.ORDER.Application/Service/SuplierTendOrder/SuplierTendOrderService.cs
@@ -0,0 +1,392 @@
+锘�// 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 SKIT.FlurlHttpClient.Wechat.Api.Events.TransferCustomerServiceReply.Types;
+using Aop.Api.Domain;
+namespace FZCZTB.TSCL.Application;
+
+/// <summary>
+/// 渚涘簲鍟嗘帴鍙� 馃З
+/// </summary>
+[ApiDescriptionSettings(ApplicationConst.GroupNameDD, Order = 100)]
+public class SuplierTendOrderService : IDynamicApiController, ITransient
+{
+    private readonly SqlSugarRepository<TenderOrder> _TenderOrderRep;
+    private readonly ISqlSugarClient _sqlSugarClient;
+    private readonly SqlSugarRepository<Collection> _CollectionRep;
+    private readonly SqlSugarRepository<SysDictData> _sysDictDataRep;
+    private readonly SqlSugarRepository<TenderOrderBidding> _TenderOrderBiddingRep;
+    
+
+    public SuplierTendOrderService(SqlSugarRepository<TenderOrder> TenderOrderRep, ISqlSugarClient sqlSugarClient,
+        SqlSugarRepository<Collection> collectionRep
+        , SqlSugarRepository<SysDictData> sysDictDataRep
+        , SqlSugarRepository<TenderOrderBidding> TenderOrderBiddingRep)
+    {
+        _TenderOrderRep = TenderOrderRep;
+        _sqlSugarClient = sqlSugarClient;
+        _CollectionRep = collectionRep;
+        _sysDictDataRep = sysDictDataRep;
+        _TenderOrderBiddingRep = TenderOrderBiddingRep;
+    }
+
+
+    /// <summary>
+    /// 渚涘簲鍟嗘敹钘忔垨鑰呭彇娑堟敹钘� 鉃�
+    /// </summary>
+    /// <param name="input"></param>
+    /// <returns></returns>
+    [DisplayName("渚涘簲鍟嗘敹钘忔垨鑰呭彇娑堟敹钘�")]
+    [ApiDescriptionSettings(Name = "AddCollection"), HttpPost]
+    public async Task<bool> AddCollection(SuplierTendOrderInput input)
+    {
+        var entity = new Collection(); ;
+      
+        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 collection = await _CollectionRep.AsQueryable().Where(x =>x.TenderId == input.TenderOrderId).Where(x => x.CreateUserId == userId).FirstAsync();
+        if (input.isColection && collection != null)
+        {
+            return true;
+        }
+
+        if (!input.isColection && collection != null)
+        {
+            return await _CollectionRep.DeleteAsync(collection);
+        }
+
+
+        if (!input.isColection && collection == null)
+        {
+            throw Oops.Oh("涓嶅瓨鍦ㄧ殑鏀惰棌锛�");
+        }
+
+        if (input.isColection && collection == null)
+        {
+            entity.Id = Guid.NewGuid();
+            entity.CreateTime = DateTime.Now;
+            entity.UpdateTime = DateTime.Now;
+            entity.CreateUserId = usertrueId;
+            entity.CreateUserName = RealName;
+            entity.UpdateUserId = usertrueId;
+            entity.UpdateUserName = RealName;
+            entity.TenderId = input.TenderOrderId;
+        }
+        return await _CollectionRep.InsertAsync(entity);
+    }
+
+
+
+
+    /// <summary>
+    /// 渚涘簲鍟嗘煡璇㈡敹钘� 馃敄
+    /// </summary>
+    /// <param name="input"></param>
+    /// <returns></returns>
+    [DisplayName("渚涘簲鍟嗘煡璇㈡敹钘�")]
+    [ApiDescriptionSettings(Name = "PageCollection"), HttpPost]
+    public async Task<SqlSugarPagedList<TenderOrderOutput>> PageCollection(PageSuplierTendOrderInput input)
+    {
+        long userId = 0;
+        long.TryParse(App.User?.FindFirst(ClaimConst.UserId)?.Value, out userId);
+
+        var query = _sqlSugarClient.Queryable<Collection,TenderOrder>((a, b) => a.TenderId == b.Id)
+            .Where((a, b) => a.CreateUserId == userId)
+            
+                      .WhereIF(!string.IsNullOrWhiteSpace(input.ProjectName), (a, b) => b.ProjectName.Contains(input.ProjectName.Trim()))
+                      .WhereIF(!string.IsNullOrWhiteSpace(input.Dailijigoumingcheng), (a, b) => b.Dailijigoumingcheng.Contains(input.Dailijigoumingcheng.Trim()))
+
+
+            .Select((a, b) => new TenderOrderOutput
+            {
+                Id = b.Id,
+                ProjectCode = b.ProjectCode,
+                ProjectName = b.ProjectName,
+                ToubiaoEndDate = b.ToubiaoEndDate.HasValue? b.ToubiaoEndDate.Value:DateTime.Now,
+                KaibiaoDate = b.KaibiaoDate.HasValue ? b.KaibiaoDate.Value : DateTime.Now,
+                Xingzhengquyu = b.Xingzhengquyu,
+                XingzhengquyuName = b.XingzhengquyuName,
+                Dailijigoumingcheng = b.Dailijigoumingcheng,
+                ToubiaoStartDate = b.ToubiaoStartDate.HasValue ? b.ToubiaoStartDate.Value : DateTime.Now,
+                FabuDate = b.FabuDate.HasValue ? b.FabuDate.Value : DateTime.Now,
+            });
+        return await query.OrderBuilder(input, "", "KaibiaoDate", true).ToPagedListAsync(input.Page, input.PageSize);
+    }
+
+
+
+
+    /// <summary>
+    /// 鑾峰彇鏀粯鏂瑰紡闆嗗悎 馃敄
+    /// </summary>
+    /// <returns></returns>
+    [DisplayName("鑾峰彇鏀粯鏂瑰紡闆嗗悎")]
+    [ApiDescriptionSettings(Name = "GetFukuanfangshiList"), HttpGet]
+    [AllowAnonymous]
+    public async Task<List<SysDictData>> GetFukuanfangshiList()
+    {
+        return await GetDataListByCode("Fukuanfangshi");
+    }
+
+
+    /// <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>
+    /// 渚涘簲鍟嗘敮浠樻姤鍚嶈垂 鉃�
+    /// </summary>
+    /// <param name="input"></param>
+    /// <returns></returns>
+    [DisplayName("渚涘簲鍟嗘敮浠樻姤鍚嶈垂")]
+    [ApiDescriptionSettings(Name = "AddBaomingfei"), HttpPost]
+    public async Task<bool> AddBaomingfei(SuplierBaomingfeiInput 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.Baomingfei.HasValue && tenderOrder.Baomingfei.Value > 0)
+        {
+            var tenderOrderBidding = await _TenderOrderBiddingRep.AsQueryable().Where(x => x.TenderId == input.TenderOrderId).Where(x => x.CreateUserId == userId).FirstAsync();
+            if(tenderOrderBidding!=null && (tenderOrderBidding.IsTransfer.HasValue && tenderOrderBidding.IsTransfer.Value))
+            {
+                throw Oops.Oh("宸茬粡浠樻锛�");
+            }
+
+
+
+            if (tenderOrderBidding == null)
+            {
+                tenderOrderBidding = new TenderOrderBidding();
+                tenderOrderBidding.Id = Guid.NewGuid();
+                tenderOrderBidding.TenderId = input.TenderOrderId;
+                //tenderOrderBidding.IsTransfer = true;
+                tenderOrderBidding.Zhifujine = tenderOrder.Baomingfei.Value;
+                tenderOrderBidding.TransferTime = DateTime.Now;
+                tenderOrderBidding.TransferNo = "BMF"+tenderOrderBidding.Id.ToString("N");
+
+
+                tenderOrderBidding.CreateTime = DateTime.Now;
+                tenderOrderBidding.CreateUserId = usertrueId;
+                tenderOrderBidding.CreateUserName = RealName;
+                tenderOrderBidding.UpdateTime = DateTime.Now;
+                tenderOrderBidding.UpdateUserId = usertrueId;
+                tenderOrderBidding.UpdateUserName = RealName;
+                return await _TenderOrderBiddingRep.InsertAsync(tenderOrderBidding);
+            }
+            else
+            {
+                tenderOrderBidding.Zhifujine = tenderOrder.Baomingfei.Value;
+                tenderOrderBidding.TransferTime = DateTime.Now;
+                tenderOrderBidding.TransferNo = "BMF" + tenderOrderBidding.Id.ToString("N");
+                tenderOrderBidding.UpdateTime = DateTime.Now;
+                tenderOrderBidding.UpdateUserId = usertrueId;
+                tenderOrderBidding.UpdateUserName = RealName;
+                return await _TenderOrderBiddingRep.UpdateAsync(tenderOrderBidding);
+            }
+            
+           
+
+        }
+        else
+        {
+            throw Oops.Oh("鏃犻渶鏀粯鎶ュ悕璐癸紒");
+        }
+
+    }
+
+
+
+
+    /// <summary>
+    /// 渚涘簲鍟嗕笂浼犳嫑鏍囨枃浠� 鉃�
+    /// </summary>
+    /// <param name="input"></param>
+    /// <returns></returns>
+    [DisplayName("渚涘簲鍟嗕笂浼犳嫑鏍囨枃浠�")]
+    [ApiDescriptionSettings(Name = "AddToubiao"), HttpPost]
+    public async Task<bool> AddToubiao(SuplierToubiaoInput 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 tenderOrderBidding = await _TenderOrderBiddingRep.AsQueryable().Where(x => x.TenderId == input.TenderOrderId).Where(x => x.CreateUserId == userId).FirstAsync();
+
+        var tenderOrder  = await _TenderOrderRep.AsQueryable().Where(x => x.Id == input.TenderOrderId).FirstAsync();
+        if(tenderOrder == null)
+        {
+            throw Oops.Oh("涓嶅瓨鍦ㄧ殑鎷涙爣锛�");
+        }
+        if(tenderOrder.Baomingfei.HasValue && tenderOrder.Baomingfei.Value > 0)
+        {
+            if (tenderOrderBidding == null || (!tenderOrderBidding.IsTransfer.HasValue || tenderOrderBidding.IsTransfer.Value == false))
+            {
+                throw Oops.Oh("蹇呴』鍏堟敮浠樻墠鑳芥姇鏍囷紒");
+            }
+        }
+
+       if(tenderOrderBidding == null)
+        {
+            tenderOrderBidding = new TenderOrderBidding();
+            tenderOrderBidding.Id = Guid.NewGuid();
+            tenderOrderBidding.TenderId = input.TenderOrderId;
+            tenderOrderBidding.Touboaowenjian = input.Touboaowenjian;
+            tenderOrderBidding.IsTransfer = true;
+            tenderOrderBidding.Zhifujine = 0;
+            tenderOrderBidding.CreateTime = DateTime.Now;
+            tenderOrderBidding.CreateUserId = usertrueId;
+            tenderOrderBidding.CreateUserName = RealName;
+            tenderOrderBidding.UpdateTime = DateTime.Now;
+            tenderOrderBidding.UpdateUserId = usertrueId;
+            tenderOrderBidding.UpdateUserName = RealName;
+            return await _TenderOrderBiddingRep.InsertAsync(tenderOrderBidding);
+        }
+
+        tenderOrderBidding.Touboaowenjian = input.Touboaowenjian;
+        tenderOrderBidding.UpdateTime = DateTime.Now;
+        tenderOrderBidding.UpdateUserId = usertrueId;
+        tenderOrderBidding.UpdateUserName = RealName;
+        return await _TenderOrderBiddingRep.UpdateAsync(tenderOrderBidding);
+    }
+
+
+
+    /// <summary>
+    /// 渚涘簲鍟嗗弬涓庣殑椤圭洰鏌ヨ 馃敄
+    /// </summary>
+    /// <param name="input"></param>
+    /// <returns></returns>
+    [DisplayName("渚涘簲鍟嗗弬涓庣殑椤圭洰鏌ヨ")]
+    [ApiDescriptionSettings(Name = "PageSupplierOrderList"), HttpPost]
+    public async Task<SqlSugarPagedList<TenderOrderOutput>> PageSupplierOrderList(PageSupplierOrderInput input)
+    {
+        long userId = 0;
+        long.TryParse(App.User?.FindFirst(ClaimConst.UserId)?.Value, out userId);
+
+        var query = _sqlSugarClient.Queryable<TenderOrderBidding, TenderOrder>((a, b) => a.TenderId == b.Id)
+            .Where((a, b) => a.CreateUserId == userId)
+
+                      .WhereIF(!string.IsNullOrWhiteSpace(input.ProjectName), (a, b) => b.ProjectName.Contains(input.ProjectName.Trim()))
+                      .WhereIF(!string.IsNullOrWhiteSpace(input.Dailijigoumingcheng), (a, b) => b.Dailijigoumingcheng.Contains(input.Dailijigoumingcheng.Trim()))
+                      .WhereIF(!string.IsNullOrWhiteSpace(input.Caigourenmingcheng), (a, b) => b.Caigourenmingcheng.Contains(input.Caigourenmingcheng.Trim()))
+                        .WhereIF(input.ZhiyiTousu.HasValue && input.ZhiyiTousu.Value, (a, b) => (b.Zhiyi == true || b.Tousu == true) )
+                        .WhereIF(input.ZhiyiTousu.HasValue && input.ZhiyiTousu.Value == false, (a, b) => (b.Zhiyi == false || b.Zhiyi == null) && (b.Tousu == false || b.Tousu == null))
+                        .WhereIF(input.IsSelected.HasValue && input.IsSelected.Value, (a, b) =>  a.IsSelected == true )
+                        .WhereIF(input.IsSelected.HasValue && input.IsSelected.Value == false, (a, b) => (a.IsSelected == false || a.IsSelected == null) )
+
+
+            .Select((a, b) => new TenderOrderOutput
+            {
+                Id = b.Id,
+                ToubiaoStartDate = b.ToubiaoStartDate.HasValue ? b.ToubiaoStartDate.Value : DateTime.Now,
+                Xingzhengquyu = b.Xingzhengquyu,
+                XingzhengquyuName = b.XingzhengquyuName,
+                ProjectCode = b.ProjectCode,
+                ProjectName = b.ProjectName,
+                Dailijigoumingcheng = b.Dailijigoumingcheng,
+                ToubiaoEndDate = b.ToubiaoEndDate.HasValue ? b.ToubiaoEndDate.Value : DateTime.Now,
+                KaibiaoDate = b.KaibiaoDate.HasValue ? b.KaibiaoDate.Value : DateTime.Now,
+                OrderStatus = b.OrderStatus,
+                IsSelected = a.IsSelected,
+                IsSelectedName = a.IsSelected.HasValue&& a.IsSelected.Value?"鏄�":"鍚�",
+                FabuDate = b.FabuDate.HasValue ? b.FabuDate.Value : DateTime.Now,
+            });
+
+        var pagedList = await query.OrderBuilder(input, "", "KaibiaoDate", true).ToPagedListAsync(input.Page, input.PageSize);
+        var sysDictDatas = await GetDataListByCode("OrderStatus");
+
+        foreach (var tenderOrderOutput in pagedList.Items)
+        {
+            var sysDictData = sysDictDatas.Where(x => x.Value == tenderOrderOutput.OrderStatus.Value.ToString()).FirstOrDefault();
+            if (sysDictData != null)
+            {
+                tenderOrderOutput.OrderStatusName = sysDictData.Label;
+            }
+        }
+        return pagedList;
+    }
+
+}

--
Gitblit v1.9.1