diff --git a/Src/Dlhis.Canteen/Order/Request/OrderAddRequest.cs b/Src/Dlhis.Canteen/Order/Request/OrderAddRequest.cs
index 1041a0b4..191c9239 100644
--- a/Src/Dlhis.Canteen/Order/Request/OrderAddRequest.cs
+++ b/Src/Dlhis.Canteen/Order/Request/OrderAddRequest.cs
@@ -24,7 +24,7 @@ public class OrderAddRequest : IValidatableObject
///
/// 档案号/QrCode/学工号
///
- [Required(ErrorMessage = "人员档案号/QrCode/学工号不能为空/userId")]
+ [Required(ErrorMessage = "人员档案号/QrCode/学工号/userId 不能为空")]
public string UserUniqueNo { get; set; }
///
@@ -33,12 +33,6 @@ public class OrderAddRequest : IValidatableObject
[EnumDataType(typeof(BalanceRecordSourceEnumType))]
public BalanceRecordSourceEnumType Source { get; set; }
- ///
- /// 收入/支出
- ///
- [EnumDataType(typeof(BalanceRecordTypeEnumType))]
- public BalanceRecordTypeEnumType? Type { get; set; } = BalanceRecordTypeEnumType.Out;
-
///
/// 金额
///
@@ -54,8 +48,7 @@ public class OrderAddRequest : IValidatableObject
public IEnumerable Validate(ValidationContext validationContext)
{
//处理金额
- Amount = Type == BalanceRecordTypeEnumType.In ? Math.Abs(Amount) : -Math.Abs(Amount);
-
+ Amount = -Math.Abs(Amount);
//在线就以API时间为准
if (!IsOffline)
@@ -63,19 +56,9 @@ public class OrderAddRequest : IValidatableObject
CostDateTime = DateTime.Now;
}
- if (Type == BalanceRecordTypeEnumType.Out)
+ if (DeviceUniqueNo.IsEmpty())
{
- if (DeviceUniqueNo.IsEmpty())
- {
- yield return new ValidationResult("设备唯一号不能为空", new[] { nameof(DeviceUniqueNo) });
- }
- }
- else if (Type == BalanceRecordTypeEnumType.In)
- {
- //if ((int)Source < (int)BalanceRecordSourceEnumType.Wechat)
- //{
- // yield return new ValidationResult($"不支持来源{Source.GetDescription()}", new[] { nameof(Source) });
- //}
+ yield return new ValidationResult("设备号不能为空", new[] { nameof(DeviceUniqueNo) });
}
yield break;
diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs
index 0e5ef3e5..de376b0f 100644
--- a/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs
+++ b/Src/Dlhis.Canteen/Order/Services/Implements/OrderService.cs
@@ -94,18 +94,10 @@ public class OrderService : BaseOrderService, IOrderService
try
{
- (await DbContext.Queryable().Where(x => x.UserNo == gainfo.No).AnyAsync()).ThrowIfFalse("余额不足,无法消费");
+ (await DbContext.Queryable().Where(x => x.UserNo == gainfo.No).AnyAsync())
+ .ThrowIfFalse("余额不足,无法消费");
- //消费
- if (request.Type == BalanceRecordTypeEnumType.Out)
- {
- await ConsumeAsync(request.Adapt(), gainfo);
- }
- //充值
- else
- {
- await RechargeAsync(request.Adapt(), gainfo);
- }
+ await ConsumeAsync(request.Adapt(), gainfo);
}
catch (Exception ex)
{
@@ -408,70 +400,6 @@ public class OrderService : BaseOrderService, IOrderService
.ExecuteCommandAsync();
}
- ///
- /// 充值
- ///
- ///
- ///
- ///
- private async Task RechargeAsync(RechargeRequest request, GainfoEntity gainfo)
- {
- var order = new CanteenOrderEntity
- {
- RequestJson = request.ToJson(),
- IsOffline = false,
- ThirdNo = request.ThirdNo,
- Type = BalanceRecordTypeEnumType.In,
- Name = gainfo.Name,
- Source = request.Source,
- UserNo = gainfo.No,
- UserCode = gainfo.Code,
- Amount = request.Amount,
- BusinessPlaceCode = null,
- BusinessShiftCode = null,
- CostDate = DateTime.Now.Date,
- CostId = gainfo.CostId,
- DepartmentNo = gainfo.DepartmentNo,
- DeviceUniqueNo = string.Empty,
-
- No = SnowFlakeHelper.Instance.NextId().ToString(),
- SubsidiesFromMonth = request.CostDateTime.ToString("yyyyMM"),
- IsCostCrossTenant = false,
-
- OriginTenantId = gainfo.Factory,//人员可能跨基地消费
-
- Status = BalanceRecordStatusEnumType.Valid,
-
- OrderStatus = CanteenOrderStatusEnumType.Wait,
-
- CostDateTime = request.CostDateTime,
-
- //标识当前消费的基地
- TenantId = gainfo.Factory,
- };
-
- var orderId = await DbContext.InsertReturnIdentityAsync(order);
- try
- {
- await GenerateRechargeRecordAsync(orderId);
- }
- catch (Exception ex)
- {
- await DbContext.Updateable()
- .SetColumns(x => x.OrderStatus == CanteenOrderStatusEnumType.Failure)
- .SetColumns(x => x.Result == ex.Message)
- .Where(x => x.Id == orderId)
- .ExecuteCommandAsync();
-
- throw;
- }
-
- await DbContext.Updateable()
- .SetColumns(x => x.OrderStatus == CanteenOrderStatusEnumType.Success)
- .Where(x => x.Id == orderId)
- .ExecuteCommandAsync();
- }
-
public async Task> GetOrdersAggregationAsync(PageDto page)
{
@@ -606,37 +534,6 @@ public class OrderService : BaseOrderService, IOrderService
}
- ///
- /// 生成消费记录
- ///
- ///
- ///
- ///
- ///
- private async Task GenerateRechargeRecordAsync(long orderId)
- {
- var order = await DbContext.Queryable().Where(x => x.Id == orderId).FirstAsync();
-
- await CommonHelper.RetryAsync(async () =>
- {
- var canteenUser = await DbContext.Queryable().Where(x => x.UserNo == order.UserNo).FirstAsync();
- //金额+-
- canteenUser.Balance += order.Amount;
-
- await DbContext.Updateable()
- .SetColumns(x => x.Balance == canteenUser.Balance)
- .SetColumns(x => x.Version == x.Version + 1)
- .SetColumns(x => x.ModifiedTime == DateTime.Now)
- .Where(x => x.UserNo == order.UserNo && x.Version == canteenUser.Version)
- .ExecuteCommandThrowVersionAsync();
-
- //写入记录
- var balanceRecord = order.Adapt();
- await DbContext.InsertAsync(balanceRecord);
-
- }, 5);
- }
-
///
/// 生成充值记录
///
diff --git a/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/AssignmentService.cs b/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/AssignmentService.cs
index 264b0d41..c3e4bb5d 100644
--- a/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/AssignmentService.cs
+++ b/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/AssignmentService.cs
@@ -53,7 +53,7 @@ public class AssignmentService : IAssignmentService
.WhereIF(request.Types.IsPresent(), deviceTask => request.Types.Contains(deviceTask.Type))
.WhereIF(!request.IsProcess, deviceTask => deviceTask.Status == DeviceTaskStatusEnumType.Wait)
.WhereIF(request.IsProcess, deviceTask => deviceTask.Status == DeviceTaskStatusEnumType.Process
- && SqlFunc.DateDiff(DateType.Minute, deviceTask.CreateTime, DateTime.Now) > 30)
+ && SqlFunc.DateDiff(DateType.Minute, deviceTask.ModifiedTime, DateTime.Now) > 30)
//.Where(deviceTask => heartbeatDeviceNos.Contains(deviceTask.DeviceUniqueNo))
.OrderBy(deviceTask => new { Priority = SqlFunc.Desc(deviceTask.Priority), deviceTask.CreateTime })
.Select((deviceTask, deivce, deivceTamplate, ga, galeave, department) => new
@@ -142,8 +142,8 @@ public class AssignmentService : IAssignmentService
var jobj = new JObject
{
- { "connectionInfo", JToken.Parse(dc) },
- { "function", JArray.Parse(func) }
+ { "connectionInfo", JToken.Parse(dc) },
+ { "function", JArray.Parse(func) }
};
return new DeviceTaskToDeviceByDeviceResponse