username@email.com
2025-08-25 24f914a80d01fa8e5c6cfcba14ae59a6c0a117a8
Admin.NET/FZFCGDD.ORDER.Application/Service/TenderOrder/TenderOrderService.cs
@@ -31,6 +31,7 @@
using MimeKit;
using static FZCZTB.TSCL.Application.ChangeTenderOrderOut;
using FZCZTB.NET.MD.CutomerMd.Extend;
using FZCZTB.NET.MD.CutomerMd;
namespace FZCZTB.TSCL.Application;
/// <summary>
@@ -241,8 +242,12 @@
        long userId = 0;
        long.TryParse(App.User?.FindFirst(ClaimConst.UserId)?.Value, out userId);
        long customerExId = 0;
        long.TryParse(App.User?.FindFirst(ClaimConst.CustomerExId)?.Value, out customerExId);
        var query = _TenderOrderRep.AsQueryable()
            .Where(x => x.CreateUserId == userId)
            .Where(x => x.CusExtendId == customerExId)
            .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)
@@ -354,7 +359,7 @@
                {
                    tenderOrderBiddingOutput.IsTransferName = "否";
                }
                var cusExtend = await _sqlSugarClient.Queryable<FBS_CusExtend>().Where(x => x.CustomerId == tenderOrderBiddingOutput.CreateUserId && x.TransactionCode == "GYS" && x.steps == CusExtendStep.Pass).FirstAsync();
                var cusExtend = await _sqlSugarClient.Queryable<FBS_CusExtend>().Where(x => x.Id == tenderOrderBiddingOutput.CusExtendId).FirstAsync();
                if (cusExtend != null)
                {
                    tenderOrderBiddingOutput.ChangshangName = cusExtend.EnterpriseName;
@@ -368,6 +373,75 @@
        return tenderOrderOutput;
    }
    /// <summary>
    /// 采购代理人增加非政府订单处理获取联系方式
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [DisplayName("采购代理人增加非政府订单获取联系方式")]
    [ApiDescriptionSettings(Name = "Addgetcontact"), HttpPost]
    public async Task<TenderOrderOutput> Addgetcontact()
    {
        long userId = 0;
        long? usertrueId = null;
        if (long.TryParse(App.User?.FindFirst(ClaimConst.UserId)?.Value, out userId))
        {
            usertrueId = userId;
        }
        long customerExId = 0;
        long.TryParse(App.User?.FindFirst(ClaimConst.CustomerExId)?.Value, out customerExId);
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        var RealName = App.User?.FindFirstValue(ClaimConst.RealName);
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能获取联系方式!");
        }
        var tenderOrderOutput = new TenderOrderOutput();
        var fBS_CusExtend = await _sqlSugarClient.Queryable<FBS_CusExtend>()
         .Where(x => x.Id == customerExId).FirstAsync();
        if (fBS_CusExtend != null)
        {
            if (CustomerLogoinType != "DLJG" )
            {
                tenderOrderOutput.Dailijigoumingcheng = fBS_CusExtend.EnterpriseName;
                tenderOrderOutput.DailiLianxiren = fBS_CusExtend.OperatorName;
                tenderOrderOutput.DailiLianxidianhua = fBS_CusExtend.OperatorPhone;
                tenderOrderOutput.DailiDianziyoujian = fBS_CusExtend.EnterpriseEmail;
                tenderOrderOutput.DailiTongxindizhi = fBS_CusExtend.Residence;
                tenderOrderOutput.DailiXiangmujingli = "";
                tenderOrderOutput.DailijingliLianxidianhua = "";
            }
            else if (CustomerLogoinType != "CGR")
            {
                tenderOrderOutput.Caigourenmingcheng = fBS_CusExtend.EnterpriseName;
                tenderOrderOutput.Xingzhengquyu = "";
                tenderOrderOutput.XingzhengquyuName = "";
                tenderOrderOutput.Jigoudaima = fBS_CusExtend.UnifiedSocialCreditCode;
                tenderOrderOutput.Daimaleixing = "";
                tenderOrderOutput.DaimaleixingName = "";
                tenderOrderOutput.Lianxiren = fBS_CusExtend.OperatorName;
                tenderOrderOutput.Lianxidianhua = fBS_CusExtend.OperatorPhone;
                tenderOrderOutput.Tongxindizhi = fBS_CusExtend.Residence;
                tenderOrderOutput.Dianziyoujian = fBS_CusExtend.EnterpriseEmail;
                tenderOrderOutput.Xiangmujingbanren = "";
                tenderOrderOutput.Zhiwu = "";
                tenderOrderOutput.Jingbanrendianhua = "";
            }
        }
        return tenderOrderOutput;
    }
    /// <summary>
    /// 采购代理人增加非政府订单处理 ➕
@@ -386,6 +460,18 @@
        {
            usertrueId = userId;
        }
        long customerExId = 0;
        long.TryParse(App.User?.FindFirst(ClaimConst.CustomerExId)?.Value, out customerExId);
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if(CustomerLogoinType!= "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能发布招标!");
        }
        var RealName = App.User?.FindFirstValue(ClaimConst.RealName);
        entity.CreateTime = DateTime.Now;
        entity.UpdateTime = DateTime.Now;
@@ -393,6 +479,7 @@
        entity.CreateUserName = RealName;
        entity.UpdateUserId = usertrueId;
        entity.UpdateUserName = RealName;
        entity.CusExtendId = customerExId;
        entity.OrderStatus = 1;
        entity.Tousu = false;
        entity.Zhiyi = false;
@@ -416,6 +503,14 @@
        {
            usertrueId = userId;
        }
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能更新招标!");
        }
        var tenderOrder = _TenderOrderRep.AsQueryable().Where(x => x.Id == input.Id).First();
        if(tenderOrder == null)
        {
@@ -451,6 +546,14 @@
        {
            usertrueId = userId;
        }
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能更新非政府订单质疑!");
        }
        var RealName = App.User?.FindFirstValue(ClaimConst.RealName);
        var tenderOrder = _TenderOrderRep.AsQueryable().Where(x => x.Id == input.Id).First();
@@ -483,6 +586,14 @@
        {
            usertrueId = userId;
        }
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能更新非政府订单投诉!");
        }
        var RealName = App.User?.FindFirstValue(ClaimConst.RealName);
        var tenderOrder = _TenderOrderRep.AsQueryable().Where(x => x.Id == input.Id).First();
@@ -508,6 +619,13 @@
    [ApiDescriptionSettings(Name = "Delete"), HttpPost]
    public async Task Delete(DeleteTenderOrderInput input)
    {
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能删除招标!");
        }
        //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);   //假删除
@@ -523,6 +641,14 @@
    [ApiDescriptionSettings(Name = "BatchDelete"), HttpPost]
    public async Task<bool > BatchDelete([Required(ErrorMessage = "主键列表不能为空")]List<DeleteTenderOrderInput> input)
    {
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能批量删除招标!");
        }
        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();
@@ -621,6 +747,14 @@
        {
            usertrueId = userId;
        }
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能发布招标!");
        }
        var tenderOrder = _TenderOrderRep.AsQueryable().Where(x => x.Id == input.Id).First();
        if (tenderOrder == null)
        {
@@ -636,7 +770,7 @@
        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 _sqlSugarClient.Updateable(entity).UpdateColumns(x => new { x.ToubiaoStartDate, x.ToubiaoEndDate, x.KaibiaoDate, x.FabuDate, x.Zhaobiaowenjian,x.ZhaobiaowenjianName, x.Fujian,x.FujianName, x.Kaibiaodidian, x.UpdateTime, x.UpdateUserId, x.UpdateUserName,x.OrderStatus }).ExecuteCommandAsync();
        //await _TenderOrderRep.UpdateAsync(entity);
    }
@@ -659,6 +793,14 @@
        {
            usertrueId = userId;
        }
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能更新非政府订单标题!");
        }
        var RealName = App.User?.FindFirstValue(ClaimConst.RealName);
        var tenderOrder = _TenderOrderRep.AsQueryable().Where(x => x.Id == input.Id).First();
@@ -691,6 +833,14 @@
        {
            usertrueId = userId;
        }
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能发布变更公告!");
        }
        var tenderOrder = _TenderOrderRep.AsQueryable().Where(x => x.Id == input.TenderId).First();
        if (tenderOrder == null)
        {
@@ -713,6 +863,7 @@
        changeOrder.TenderId = input.TenderId;
        changeOrder.ProjectName = input.ProjectName;
        changeOrder.Biangengwenjian = input.Biangengwenjian;
        changeOrder.BiangengwenjianName = input.BiangengwenjianName;
        changeOrder.CreateTime = DateTime.Now;
        changeOrder.CreateUserId = usertrueId;
        changeOrder.CreateUserName = RealName;
@@ -782,12 +933,79 @@
    [ApiDescriptionSettings(Name = "CHangeDelete"), HttpPost]
    public async Task CHangeDelete(DeleteTenderOrderInput input)
    {
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能删除变更公告!");
        }
        //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>
    /// 采购代理人确认供应商已支付报名费 ➕
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [DisplayName("采购代理人确认供应商已支付报名费")]
    [ApiDescriptionSettings(Name = "QuerenBaomingfei"), HttpPost]
    public async Task<bool> QuerenBaomingfei(QuerenSuplierBaomingfeiInput 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);
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能确认供应商已支付报名费!");
        }
        var tenderOrderBidding = await _TenderOrderBiddingRep.AsQueryable().Where(x => x.Id == input.TenderOrderBiddingId).FirstAsync();
        if (tenderOrderBidding == null )
        {
            throw Oops.Oh("没找到投标信息!");
        }
        if (tenderOrderBidding != null && (tenderOrderBidding.IsTransfer.HasValue && tenderOrderBidding.IsTransfer.Value))
        {
            throw Oops.Oh("已经付款!");
        }
        var tenderOrder = await _TenderOrderRep.AsQueryable().Where(x => x.Id == tenderOrderBidding.TenderId).FirstAsync();
        if (tenderOrder == null)
        {
            throw Oops.Oh("不存在的招标!");
        }
        tenderOrderBidding.IsTransfer = true;
        tenderOrderBidding.Zhifujine = tenderOrder.Baomingfei;
        tenderOrderBidding.TransferTime = DateTime.Now;
        tenderOrderBidding.TransferNo = "BMF" + tenderOrderBidding.Id.ToString("N");
        tenderOrderBidding.TradeNo = DateTimeOffset.Now.ToString("yyyyMMddHHmmssfff") + (new Random()).Next(100, 1000); // 订单号
        tenderOrderBidding.UpdateTime = DateTime.Now;
        tenderOrderBidding.UpdateUserId = usertrueId;
        tenderOrderBidding.UpdateUserName = RealName;
        return await _TenderOrderBiddingRep.UpdateAsync(tenderOrderBidding);
    }
    /// <summary>
@@ -807,6 +1025,14 @@
        {
            usertrueId = userId;
        }
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能发布中标文件!");
        }
        var RealName = App.User?.FindFirstValue(ClaimConst.RealName);
       
@@ -821,50 +1047,144 @@
            throw Oops.Oh("已经中标的项目不能再次中标!");
        }
        var tenderOrderBidding = await _TenderOrderBiddingRep.AsQueryable().Where(x => x.TenderId == input.TenderOrderId).Where(x => x.CreateUserId == input.SupplierUserId).FirstAsync();
        if (tenderOrderBidding == null)
        var ssss = input.TenderOrderBiddingIds.Split(',');
        if (string.IsNullOrEmpty(input.TenderOrderBiddingIds))
        {
            throw Oops.Oh("不存在的投标!");
        }
        if (tenderOrderBidding.IsTransfer != true )
        {
            throw Oops.Oh("没有支付报名费。不能中标!");
        }
        if (string.IsNullOrEmpty(tenderOrderBidding.Touboaowenjian) )
        {
            throw Oops.Oh("没有投标文件。不能中标!");
            throw Oops.Oh("没有选中中标供应商!");
        }
        tenderOrder.ZhongbiaoId = input.SupplierUserId;
        //tenderOrder.ZhongbiaoName = input.SupplierUserName;
        var cusExtend = await _sqlSugarClient.Queryable<FBS_CusExtend>().Where(x => x.CustomerId == input.SupplierUserId && x.TransactionCode == "GYS" && x.steps == CusExtendStep.Pass ).FirstAsync();
        if (cusExtend != null)
        foreach ( var sss in ssss)
        {
            tenderOrder.ZhongbiaoName = cusExtend.EnterpriseName;
            var tenderOrderBiddingId = Guid.Parse(sss);
            var tenderOrderBidding = await _TenderOrderBiddingRep.AsQueryable().Where(x => x.Id == tenderOrderBiddingId).FirstAsync();
            if (tenderOrderBidding == null)
            {
                throw Oops.Oh("不存在的投标!");
            }
            if (tenderOrderBidding.IsTransfer != true)
            {
                throw Oops.Oh("没有支付报名费。不能中标!");
            }
            if (string.IsNullOrEmpty(tenderOrderBidding.Touboaowenjian))
            {
                throw Oops.Oh("没有投标文件。不能中标!");
            }
        }
        tenderOrder.ZhongbiaoId = null;
        tenderOrder.ZhongbiaoName = "";
        tenderOrder.Zhongbiaowenjian = input.Zhongbiaowenjian;
        tenderOrder.ZhongbiaowenjianName = input.ZhongbiaowenjianName;
        tenderOrder.Zhongbiaogonggao = input.Zhongbiaogonggao;
        tenderOrder.ZhongbiaogonggaoName = input.ZhongbiaogonggaoName;
        tenderOrder.ZhongbiaoDate = DateTime.Now;
        tenderOrder.UpdateTime = DateTime.Now;
        tenderOrder.UpdateUserId = usertrueId;
        tenderOrder.UpdateUserName = RealName;
        tenderOrder.OrderStatus = 3;
        tenderOrder.ZhongbiaoTittle = input.ZhongbiaoTittle;
        foreach (var sss in ssss)
        {
            var tenderOrderBiddingId = Guid.Parse(sss);
            var tenderOrderBidding = await _TenderOrderBiddingRep.AsQueryable().Where(x => x.Id == tenderOrderBiddingId).FirstAsync();
            tenderOrderBidding.IsSelected = true;
            tenderOrderBidding.SelectedTime = tenderOrder.ZhongbiaoDate;
            tenderOrderBidding.UpdateTime = DateTime.Now;
            tenderOrderBidding.UpdateUserId = usertrueId;
            tenderOrderBidding.UpdateUserName = RealName;
            await _TenderOrderBiddingRep.UpdateAsync(tenderOrderBidding);
            var SupplierUserId = tenderOrderBidding.CusExtendId??0;
            var cusExtend = await _sqlSugarClient.Queryable<FBS_CusExtend>().Where(x => x.Id == SupplierUserId).FirstAsync();
            if (cusExtend != null)
            {
                tenderOrder.ZhongbiaoName += cusExtend.EnterpriseName + ",";
            }
        }
        tenderOrder.ZhongbiaoName = tenderOrder.ZhongbiaoName.Trim(',');
        await _TenderOrderRep.UpdateAsync(tenderOrder);
        return true;
        tenderOrderBidding.IsSelected = true;
        tenderOrderBidding.SelectedTime = tenderOrder.ZhongbiaoDate;
    }
    /// <summary>
    /// 采购代理人确认供应商已支付代理费 ➕
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [DisplayName("采购代理人确认供应商已支付代理费")]
    [ApiDescriptionSettings(Name = "QuerenDailifei"), HttpPost]
    public async Task<bool> QuerenDailifei(QuerenSuplierBaomingfeiInput 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);
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能确认供应商已支付代理费!");
        }
        var tenderOrderBidding = await _TenderOrderBiddingRep.AsQueryable().Where(x => x.Id == input.TenderOrderBiddingId).FirstAsync();
        if (tenderOrderBidding == null)
        {
            throw Oops.Oh("没找到投标信息!");
        }
        if (tenderOrderBidding != null && (tenderOrderBidding.IsDailiTransfer.HasValue && tenderOrderBidding.IsDailiTransfer.Value))
        {
            throw Oops.Oh("已经付款!");
        }
        var tenderOrder = await _TenderOrderRep.AsQueryable().Where(x => x.Id == tenderOrderBidding.TenderId).FirstAsync();
        if (tenderOrder == null)
        {
            throw Oops.Oh("不存在的招标!");
        }
        tenderOrderBidding.IsDailiTransfer = true;
        tenderOrderBidding.DailiZhifujine = 0;
        tenderOrderBidding.DailiTransferTime = DateTime.Now;
        tenderOrderBidding.DailiTransferNo = "BMF" + tenderOrderBidding.Id.ToString("N");
        tenderOrderBidding.DailiTradeNo = DateTimeOffset.Now.ToString("yyyyMMddHHmmssfff") + (new Random()).Next(100, 1000); // 订单号
        tenderOrderBidding.UpdateTime = DateTime.Now;
        tenderOrderBidding.UpdateUserId = usertrueId;
        tenderOrderBidding.UpdateUserName = RealName;
        return await _TenderOrderBiddingRep.UpdateAsync(tenderOrderBidding);
    }