往来单位与船公司增加冻结

dev
嵇文龙 1 month ago
parent 7e1023e859
commit 435e8ecce9

@ -1,7 +1,5 @@
using DS.Module.Core;
using DS.WMS.Core.Code.Entity;
using FluentValidation;
using SqlSugar;
namespace DS.WMS.Core.Code.Dtos;
@ -73,6 +71,11 @@ public class CodeCarrierReq
/// 备注
/// </summary>
public string Note { get; set; } = "";
/// <summary>
/// 是否冻结
/// </summary>
public bool IsFrozen { get; set; }
}
/// <summary>

@ -80,4 +80,9 @@ public class CodeCarrierRes
/// 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 是否冻结
/// </summary>
public bool IsFrozen { get; set; }
}

@ -1,11 +1,6 @@
using DS.Module.Core;
using DS.Module.Core.Data;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DS.WMS.Core.Code.Entity
{
@ -87,6 +82,12 @@ namespace DS.WMS.Core.Code.Entity
/// </summary>
[SugarColumn(ColumnDescription = "状态", DefaultValue = "0")]
public StatusEnum? Status { get; set; } = StatusEnum.Enable;
/// <summary>
/// 是否冻结
/// </summary>
[SugarColumn(ColumnDescription = "是否冻结")]
public bool IsFrozen { get; set; }
}
}

@ -443,11 +443,11 @@ namespace DS.WMS.Core.Fee.Method
/// </summary>
/// <param name="auditType">审批类型</param>
/// <param name="remark">备注</param>
/// <param name="idArray">费用记录ID</param>
/// <param name="ids">费用记录ID</param>
/// <returns></returns>
public async Task<DataResult> SubmitForApprovalAsync(TaskBaseTypeEnum auditType, string remark, params long[] idArray)
public async Task<DataResult> SubmitForApprovalAsync(TaskBaseTypeEnum auditType, string remark, params long[] ids)
{
var fees = await TenantDb.Queryable<FeeRecord>().Where(x => idArray.Contains(x.Id)).Select(
var fees = await TenantDb.Queryable<FeeRecord>().Where(x => ids.Contains(x.Id)).Select(
x => new FeeRecord
{
Id = x.Id,
@ -465,7 +465,7 @@ namespace DS.WMS.Core.Fee.Method
if (await IsFeeLockedAsync(bid, bType))
return DataResult.FailedWithDesc(nameof(MultiLanguageConst.FeeLocked));
if (await flowService.IsRunning(auditType, null, idArray))
if (await flowService.IsRunning(auditType, null, ids))
return DataResult.FailedWithDesc(nameof(MultiLanguageConst.FeeRecordIsAuditing));
if (fees.Any(x => x.FeeStatus == FeeStatus.PartialSettlement || x.FeeStatus == FeeStatus.SettlementCompleted))
@ -752,6 +752,8 @@ namespace DS.WMS.Core.Fee.Method
x => new FeeRecord
{
Id = x.Id,
BusinessId = x.BusinessId,
BusinessType = x.BusinessType,
FeeName = x.FeeName,
FeeStatus = x.FeeStatus
}).ToListAsync();
@ -800,11 +802,15 @@ namespace DS.WMS.Core.Fee.Method
{
foreach (var item in group)
{
await taskService.WithdrawAsync(new TaskRequest
result = await taskService.WithdrawAsync(new TaskRequest
{
BusinessId = item.Item2,
TaskTypeName = item.Item1.ToString()
TaskTypeName = item.Item1.ToString(),
ExtraData = fees.Find(x=>x.Id == item.Item2)
}, false);
if (!result.Succeeded)
return result;
}
}
}

@ -504,6 +504,11 @@ public class ClientInfoReq
/// 注册时间
/// </summary>
public DateTime? RegistrationTime { get; set; }
/// <summary>
/// 是否冻结
/// </summary>
public bool IsFrozen { get; set; }
}
/// <summary>

@ -437,6 +437,11 @@ public class ClientInfoRes
/// </summary>
public DateTime? RegistrationTime { get; set; }
/// <summary>
/// 是否冻结
/// </summary>
public bool IsFrozen { get; set; }
/// <summary>
/// 默认联系人
/// </summary>

@ -40,6 +40,11 @@
/// </summary>
public string? CNName { get; set; }
/// <summary>
/// 国家
/// </summary>
public string? Country { get; set; }
/// <summary>
/// 英文名称
/// </summary>

@ -443,6 +443,12 @@ public class InfoClient : SharedOrgModel<long>
[SugarColumn(ColumnDescription = "注册时间", IsNullable = true)]
public DateTime? RegistrationTime { get; set; }
/// <summary>
/// 是否冻结
/// </summary>
[SugarColumn(ColumnDescription = "是否冻结")]
public bool IsFrozen { get; set; }
/// <summary>
/// 客户属性
/// </summary>

@ -329,6 +329,7 @@ public class ClientInfoService : ServiceBase, IClientInfoService
Grade = model.Class,
IsCustomer = model.IsCustomer,
IsSupplier = model.IsSupplier,
Country = model.Country,
OperatorId = users.Find(x => x.UserName == model.OP)?.Id,
OperatorName = model.OP,
OrgId = (users.Find(x => x.UserName == model.Sale)?.DefaultOrgId).GetValueOrDefault(),

@ -39,6 +39,11 @@ namespace DS.WMS.Core.Op.Dtos.TaskInteraction
/// </summary>
public string TaskTypeName { get; set; } = string.Empty;
/// <summary>
/// 附加数据(内部使用)
/// </summary>
public object? ExtraData { get; set; }
/// <summary>
/// 确定当前对象是否有效
/// </summary>

@ -1,8 +1,10 @@
using System.Text;
using System.Threading.Tasks;
using DS.Module.Core;
using DS.Module.Core.Data;
using DS.Module.Core.Helpers;
using DS.Module.DjyRulesEngine;
using DS.WMS.Core.Fee.Dtos;
using DS.WMS.Core.Fee.Entity;
using DS.WMS.Core.Flow.Dtos;
using DS.WMS.Core.Flow.Entity;
@ -25,6 +27,7 @@ using Masuit.Tools.Systems;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using SqlSugar;
using static iText.StyledXmlParser.Jsoup.Select.Evaluator;
namespace DS.WMS.Core.Op.Method.TaskInteraction
{
@ -386,16 +389,19 @@ namespace DS.WMS.Core.Op.Method.TaskInteraction
if (updateFlag)
{
result = await SetTaskStatusAsync(new TaskUpdateRequest
if (!FeeTypes.Contains(request.TaskType))
{
BusinessId = request.BusinessId,
BusinessType = request.BusinessType,
TaskTypeName = request.TaskTypeName,
TaskStatus = TaskStatusEnum.Create
}, false);
result = await SetTaskStatusAsync(new TaskUpdateRequest
{
BusinessId = request.BusinessId,
BusinessType = request.BusinessType,
TaskTypeName = request.TaskTypeName,
TaskStatus = TaskStatusEnum.Create
}, false);
if (!result.Succeeded)
return result;
if (!result.Succeeded)
return result;
}
}
else if (FeeTypes.Contains(request.TaskType)) //费用审核需拆分任务
{
@ -553,25 +559,14 @@ namespace DS.WMS.Core.Op.Method.TaskInteraction
DataResult result;
if (FeeTypes.Contains(request.TaskType))
{
var fee = await TenantDb.Queryable<FeeRecord>().Where(x => x.Id == request.BusinessId)
var biz = await TenantDb.Queryable<FeeRecord>().Where(x => x.Id == request.BusinessId)
.Select(x => new
{
x.BusinessId,
x.BusinessType
}).FirstAsync();
var relativeTasks = await TenantDb.Queryable<BusinessTask>()
.InnerJoin<FeeRecord>((t, f) => t.BusinessId == f.Id)
.Where((t, f) => f.BusinessId == fee.BusinessId && f.BusinessType == fee.BusinessType && FeeTypes.Contains(t.TaskType) && t.RecvUsers.Contains(User.UserId))
.Select((t, f) => new
{
t.Id,
t.BusinessId,
t.TaskType,
t.TaskStatus,
t.RecvUsers
}).ToListAsync();
var relativeTasks = await GetFeeTasks(biz.BusinessType, biz.BusinessId);
var groups = relativeTasks.GroupBy(x => x.TaskStatus).Select(x => x.Key).ToList();
if (groups.Count == 1 && groups.All(x => x == request.TaskStatus))
{
@ -612,7 +607,7 @@ namespace DS.WMS.Core.Op.Method.TaskInteraction
Dictionary<string, object>? dic = null;
if (task.NextType == TaskBaseTypeEnum.WAIT_BOOKING)
{
dic = new Dictionary<string, object>();
dic = [];
var param = await ClientParamService.Value.GetParamAsync<string>(task.BusinessId, BookingSelector.Booking_Route,
(x, y) => x.CustomerId == y.ForwarderId);
dic[TaskFlowDataNameConst.ClientParam] = param;
@ -646,13 +641,13 @@ namespace DS.WMS.Core.Op.Method.TaskInteraction
/// <summary>
/// 获取业务的任务信息
/// </summary>
/// <param name="id">业务ID</param>
/// <param name="bsId">业务ID</param>
/// <param name="businessType">业务类型</param>
/// <param name="types">任务类型</param>
/// <returns></returns>
public async Task<DataResult<List<BusinessTaskDto>>> GetTasks(long id, BusinessType? businessType, params TaskBaseTypeEnum[] types)
public async Task<DataResult<List<BusinessTaskDto>>> GetTasks(long bsId, BusinessType? businessType, params TaskBaseTypeEnum[] types)
{
var list = await TenantDb.Queryable<BusinessTask>().Where(x => x.BusinessId == id)
var list = await TenantDb.Queryable<BusinessTask>().Where(x => x.BusinessId == bsId)
.WhereIF(businessType.HasValue, x => x.BusinessType == businessType)
.WhereIF(types != null && types.Length > 0, x => types.Contains(x.TaskType))
.Select<BusinessTaskDto>().ToListAsync();
@ -662,6 +657,27 @@ namespace DS.WMS.Core.Op.Method.TaskInteraction
return result;
}
/// <summary>
/// 获取指定业务的所有关联费用类任务
/// </summary>
/// <param name="bsType">业务类型</param>
/// <param name="bsIds">业务ID</param>
/// <returns></returns>
protected internal async Task<List<BusinessTask>> GetFeeTasks(BusinessType bsType, params long[] bsIds)
{
return await TenantDb.Queryable<BusinessTask>()
.InnerJoin<FeeRecord>((t, f) => t.BusinessId == f.Id)
.Where((t, f) => bsIds.Contains(f.BusinessId) && f.BusinessType == bsType && FeeTypes.Contains(t.TaskType) && t.RecvUsers.Contains(User.UserId))
.Select((t, f) => new BusinessTask
{
Id = t.Id,
BusinessId = t.BusinessId,
TaskType = t.TaskType,
TaskStatus = t.TaskStatus,
RecvUsers = t.RecvUsers
}).ToListAsync();
}
/// <summary>
/// 返回指定类型的任务是否已存在
/// </summary>
@ -786,11 +802,12 @@ namespace DS.WMS.Core.Op.Method.TaskInteraction
if (!AuditTaskTypes.Contains(request.TaskType))
return DataResult.FailedWithDesc(nameof(MultiLanguageConst.TaskTypeNotSupported));
var task = await GetQuery(request.BusinessId, request.BusinessType, request.TaskType).Select(x => new
var task = await GetQuery(request.BusinessId, request.BusinessType, request.TaskType).Select(x => new BusinessTask
{
x.Id,
x.TaskStatus,
x.FlowId
Id = x.Id,
TaskStatus = x.TaskStatus,
FlowId = x.FlowId,
RecvUsers = x.RecvUsers
}).FirstAsync();
if (task == null)
return DataResult.FailedWithDesc(nameof(MultiLanguageConst.EmptyData));
@ -801,16 +818,32 @@ namespace DS.WMS.Core.Op.Method.TaskInteraction
if (!task.FlowId.HasValue)
return DataResult.FailedWithDesc(nameof(MultiLanguageConst.NotInFlows));
DataResult result;
DateTime dt = DateTime.Now;
if (useTransaction)
await TenantDb.Ado.BeginTranAsync();
try
{
var result = await ManagerService.SetTaskStatusWithBsno(request.BusinessId, request.TaskType, TaskStatusEnum.Cancel, dt);
if (!result.Succeeded)
return result;
if (FeeTypes.Contains(request.TaskType))
{
//if (request.ExtraData is not FeeRecord fee)
// return DataResult.Failed("缺少请求传递的费用数据");
//var relativeTasks = await GetFeeTasks(fee.BusinessType, fee.BusinessId);
//if (relativeTasks.Count == 1 || relativeTasks.Where(x => x.BusinessId != request.BusinessId && x.TaskStatus != TaskStatusEnum.Complete).All(x => x.TaskStatus == TaskStatusEnum.Cancel))
//{
// result = await ManagerService.SetTaskStatusWithBsno(fee.BusinessId, request.TaskType, TaskStatusEnum.Cancel, dt, userIdList: [.. task.RecvUserIdArray]);
// if (!result.Succeeded)
// return result;
//}
}
else
{
result = await ManagerService.SetTaskStatusWithBsno(request.BusinessId, request.TaskType, TaskStatusEnum.Cancel, dt);
if (!result.Succeeded)
return result;
}
result = await FlowService.Value.WithdrawAsync([task.FlowId.Value], "用户撤销审核");
if (!result.Succeeded)

@ -5,7 +5,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<Project>
<PropertyGroup>
<_PublishTargetUrl>D:\Publish\DS8\FeeApi</_PublishTargetUrl>
<History>True|2024-10-18T08:11:05.4049685Z||;True|2024-10-18T14:59:49.1162741+08:00||;True|2024-10-16T16:29:15.3185348+08:00||;True|2024-10-16T14:12:58.1754214+08:00||;True|2024-10-16T14:08:06.5805581+08:00||;True|2024-10-16T11:55:29.8273176+08:00||;True|2024-10-15T17:39:40.4090324+08:00||;True|2024-10-15T17:06:43.0181578+08:00||;True|2024-10-15T15:07:38.9601925+08:00||;True|2024-10-12T13:33:32.4412583+08:00||;True|2024-10-11T17:00:54.0916209+08:00||;True|2024-10-11T10:54:50.3307087+08:00||;True|2024-10-11T10:45:07.8181500+08:00||;True|2024-10-11T10:40:44.2066046+08:00||;True|2024-10-11T10:21:25.7226983+08:00||;True|2024-10-11T10:09:05.5257478+08:00||;True|2024-10-10T14:58:29.1228618+08:00||;True|2024-10-10T14:05:59.4501659+08:00||;True|2024-10-10T11:08:58.9765455+08:00||;True|2024-10-08T17:59:07.5583287+08:00||;True|2024-09-27T19:01:59.6945760+08:00||;True|2024-09-27T18:45:48.2812860+08:00||;True|2024-09-27T18:10:25.5697467+08:00||;True|2024-09-27T17:39:06.3169139+08:00||;True|2024-09-27T17:30:14.1043193+08:00||;True|2024-09-27T16:02:09.0703159+08:00||;True|2024-09-27T15:53:05.1789245+08:00||;True|2024-09-27T15:32:52.1934490+08:00||;True|2024-09-27T13:51:24.9197626+08:00||;True|2024-09-27T13:48:17.2817346+08:00||;True|2024-09-27T11:51:46.8193040+08:00||;True|2024-09-27T10:58:33.1059648+08:00||;True|2024-09-27T10:37:35.0336563+08:00||;False|2024-09-27T10:31:52.6302264+08:00||;True|2024-09-26T19:50:15.5513195+08:00||;True|2024-09-26T19:47:14.0781788+08:00||;True|2024-09-26T19:01:26.5428388+08:00||;True|2024-09-26T18:35:28.7455319+08:00||;True|2024-09-26T18:24:30.8084807+08:00||;True|2024-09-26T18:20:47.3005460+08:00||;True|2024-09-26T18:04:39.8012913+08:00||;True|2024-09-26T17:48:13.8526872+08:00||;True|2024-09-26T16:08:20.1746970+08:00||;True|2024-09-26T16:01:01.1501975+08:00||;False|2024-09-26T16:00:34.1516745+08:00||;True|2024-09-26T14:33:03.4007570+08:00||;True|2024-09-25T19:14:27.8906774+08:00||;True|2024-09-25T18:57:40.1435131+08:00||;True|2024-09-25T17:38:44.0915841+08:00||;True|2024-09-25T15:33:58.4630618+08:00||;True|2024-09-25T15:10:31.3022063+08:00||;False|2024-09-25T14:14:40.9640545+08:00||;True|2024-09-25T10:09:32.2558600+08:00||;True|2024-09-25T09:59:17.1525160+08:00||;False|2024-09-25T09:57:58.7265103+08:00||;False|2024-09-25T09:53:36.7732713+08:00||;False|2024-09-24T18:40:10.0166224+08:00||;True|2024-09-24T08:59:56.1995425+08:00||;True|2024-09-23T18:07:54.7222163+08:00||;True|2024-09-23T17:23:57.7568406+08:00||;True|2024-09-23T16:28:49.3169826+08:00||;True|2024-09-23T15:57:31.8052490+08:00||;True|2024-09-23T11:47:21.1445419+08:00||;True|2024-09-23T09:24:36.0732229+08:00||;True|2024-09-21T11:59:19.0549926+08:00||;True|2024-09-21T11:24:32.4451752+08:00||;True|2024-09-21T10:39:11.5297411+08:00||;True|2024-09-20T18:24:31.7827684+08:00||;True|2024-09-19T17:55:53.1666689+08:00||;True|2024-09-19T17:42:47.9061485+08:00||;True|2024-09-19T16:08:21.7225571+08:00||;False|2024-09-19T14:15:42.9318446+08:00||;True|2024-09-19T11:20:03.5567568+08:00||;True|2024-09-18T11:35:18.1509724+08:00||;True|2024-09-18T09:08:59.1152574+08:00||;True|2024-09-14T15:48:22.9374486+08:00||;True|2024-09-14T15:42:19.0503983+08:00||;True|2024-09-14T11:51:53.3339222+08:00||;True|2024-09-14T11:41:38.3542237+08:00||;True|2024-09-14T11:19:13.1037012+08:00||;True|2024-09-13T14:31:12.4598160+08:00||;True|2024-09-13T10:44:56.1241214+08:00||;False|2024-09-13T10:44:26.6088271+08:00||;False|2024-09-13T10:44:06.1615137+08:00||;False|2024-09-13T10:43:19.2432517+08:00||;False|2024-09-13T10:38:18.1663387+08:00||;True|2024-09-06T18:49:17.9435308+08:00||;True|2024-09-06T17:01:39.6646353+08:00||;True|2024-09-06T10:27:36.9990456+08:00||;True|2024-09-06T09:48:23.4236094+08:00||;True|2024-09-05T13:57:23.8452431+08:00||;True|2024-09-05T10:21:34.6675149+08:00||;True|2024-09-05T09:12:44.5610882+08:00||;True|2024-09-04T10:07:38.3707398+08:00||;True|2024-09-04T09:52:47.0574599+08:00||;True|2024-09-03T16:41:23.7516960+08:00||;True|2024-09-03T15:22:31.8718097+08:00||;True|2024-09-03T10:01:09.7656702+08:00||;False|2024-09-03T09:46:46.8956531+08:00||;True|2024-09-02T17:07:41.0268500+08:00||;</History>
<History>True|2024-10-21T02:19:05.7405749Z||;True|2024-10-18T16:11:05.4049685+08:00||;True|2024-10-18T14:59:49.1162741+08:00||;True|2024-10-16T16:29:15.3185348+08:00||;True|2024-10-16T14:12:58.1754214+08:00||;True|2024-10-16T14:08:06.5805581+08:00||;True|2024-10-16T11:55:29.8273176+08:00||;True|2024-10-15T17:39:40.4090324+08:00||;True|2024-10-15T17:06:43.0181578+08:00||;True|2024-10-15T15:07:38.9601925+08:00||;True|2024-10-12T13:33:32.4412583+08:00||;True|2024-10-11T17:00:54.0916209+08:00||;True|2024-10-11T10:54:50.3307087+08:00||;True|2024-10-11T10:45:07.8181500+08:00||;True|2024-10-11T10:40:44.2066046+08:00||;True|2024-10-11T10:21:25.7226983+08:00||;True|2024-10-11T10:09:05.5257478+08:00||;True|2024-10-10T14:58:29.1228618+08:00||;True|2024-10-10T14:05:59.4501659+08:00||;True|2024-10-10T11:08:58.9765455+08:00||;True|2024-10-08T17:59:07.5583287+08:00||;True|2024-09-27T19:01:59.6945760+08:00||;True|2024-09-27T18:45:48.2812860+08:00||;True|2024-09-27T18:10:25.5697467+08:00||;True|2024-09-27T17:39:06.3169139+08:00||;True|2024-09-27T17:30:14.1043193+08:00||;True|2024-09-27T16:02:09.0703159+08:00||;True|2024-09-27T15:53:05.1789245+08:00||;True|2024-09-27T15:32:52.1934490+08:00||;True|2024-09-27T13:51:24.9197626+08:00||;True|2024-09-27T13:48:17.2817346+08:00||;True|2024-09-27T11:51:46.8193040+08:00||;True|2024-09-27T10:58:33.1059648+08:00||;True|2024-09-27T10:37:35.0336563+08:00||;False|2024-09-27T10:31:52.6302264+08:00||;True|2024-09-26T19:50:15.5513195+08:00||;True|2024-09-26T19:47:14.0781788+08:00||;True|2024-09-26T19:01:26.5428388+08:00||;True|2024-09-26T18:35:28.7455319+08:00||;True|2024-09-26T18:24:30.8084807+08:00||;True|2024-09-26T18:20:47.3005460+08:00||;True|2024-09-26T18:04:39.8012913+08:00||;True|2024-09-26T17:48:13.8526872+08:00||;True|2024-09-26T16:08:20.1746970+08:00||;True|2024-09-26T16:01:01.1501975+08:00||;False|2024-09-26T16:00:34.1516745+08:00||;True|2024-09-26T14:33:03.4007570+08:00||;True|2024-09-25T19:14:27.8906774+08:00||;True|2024-09-25T18:57:40.1435131+08:00||;True|2024-09-25T17:38:44.0915841+08:00||;True|2024-09-25T15:33:58.4630618+08:00||;True|2024-09-25T15:10:31.3022063+08:00||;False|2024-09-25T14:14:40.9640545+08:00||;True|2024-09-25T10:09:32.2558600+08:00||;True|2024-09-25T09:59:17.1525160+08:00||;False|2024-09-25T09:57:58.7265103+08:00||;False|2024-09-25T09:53:36.7732713+08:00||;False|2024-09-24T18:40:10.0166224+08:00||;True|2024-09-24T08:59:56.1995425+08:00||;True|2024-09-23T18:07:54.7222163+08:00||;True|2024-09-23T17:23:57.7568406+08:00||;True|2024-09-23T16:28:49.3169826+08:00||;True|2024-09-23T15:57:31.8052490+08:00||;True|2024-09-23T11:47:21.1445419+08:00||;True|2024-09-23T09:24:36.0732229+08:00||;True|2024-09-21T11:59:19.0549926+08:00||;True|2024-09-21T11:24:32.4451752+08:00||;True|2024-09-21T10:39:11.5297411+08:00||;True|2024-09-20T18:24:31.7827684+08:00||;True|2024-09-19T17:55:53.1666689+08:00||;True|2024-09-19T17:42:47.9061485+08:00||;True|2024-09-19T16:08:21.7225571+08:00||;False|2024-09-19T14:15:42.9318446+08:00||;True|2024-09-19T11:20:03.5567568+08:00||;True|2024-09-18T11:35:18.1509724+08:00||;True|2024-09-18T09:08:59.1152574+08:00||;True|2024-09-14T15:48:22.9374486+08:00||;True|2024-09-14T15:42:19.0503983+08:00||;True|2024-09-14T11:51:53.3339222+08:00||;True|2024-09-14T11:41:38.3542237+08:00||;True|2024-09-14T11:19:13.1037012+08:00||;True|2024-09-13T14:31:12.4598160+08:00||;True|2024-09-13T10:44:56.1241214+08:00||;False|2024-09-13T10:44:26.6088271+08:00||;False|2024-09-13T10:44:06.1615137+08:00||;False|2024-09-13T10:43:19.2432517+08:00||;False|2024-09-13T10:38:18.1663387+08:00||;True|2024-09-06T18:49:17.9435308+08:00||;True|2024-09-06T17:01:39.6646353+08:00||;True|2024-09-06T10:27:36.9990456+08:00||;True|2024-09-06T09:48:23.4236094+08:00||;True|2024-09-05T13:57:23.8452431+08:00||;True|2024-09-05T10:21:34.6675149+08:00||;True|2024-09-05T09:12:44.5610882+08:00||;True|2024-09-04T10:07:38.3707398+08:00||;True|2024-09-04T09:52:47.0574599+08:00||;True|2024-09-03T16:41:23.7516960+08:00||;True|2024-09-03T15:22:31.8718097+08:00||;True|2024-09-03T10:01:09.7656702+08:00||;False|2024-09-03T09:46:46.8956531+08:00||;</History>
<LastFailureDetails />
</PropertyGroup>
</Project>

@ -209,7 +209,7 @@ public class ClientInfoController : ApiController
var stream = file.OpenReadStream();
var rows = (await MiniExcel.QueryAsync(stream, excelType: ExcelType.XLSX, startCell: "A2")).ToList();
StringBuilder sb = new StringBuilder();
StringBuilder sb = new();
List<InfoClientModel> list = [];
try
{
@ -246,7 +246,8 @@ public class ClientInfoController : ApiController
Wechat = item["AE"]?.ToString(),
Email = item["AF"]?.ToString(),
ContactName = item["AG"]?.ToString(),
NFDS = item["AP"] == null ? null : int.Parse(item["AP"].ToString()),
Country = item["AG"]?.ToString(),
//NFDS = item["AP"] == null ? null : int.Parse(item["AP"].ToString()),
IsCustomer = true
};
@ -301,7 +302,7 @@ public class ClientInfoController : ApiController
TaxID = item["I"]?.ToString(),
Code = item["J"]?.ToString(),
StlType = item["K"]?.ToString(),
Attribute = item["V"]?.ToString(),
Attribute = item["M"]?.ToString(),
Business = item["L"]?.ToString(),
OP = item["M"]?.ToString(),
Sale = item["N"]?.ToString(),
@ -311,6 +312,7 @@ public class ClientInfoController : ApiController
PrepaidUSD = item["S"] == null ? 0 : decimal.Parse(item["S"].ToString()),
Quota = item["T"] == null ? 0 : decimal.Parse(item["T"].ToString()),
RestQuota = item["U"] == null ? 0 : decimal.Parse(item["U"].ToString()),
Country = item["W"]?.ToString(),
ContactName = item["B"]?.ToString(),
IsSupplier = true
};

Loading…
Cancel
Save