diff --git a/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs b/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs index a4ea63cc..83dcacab 100644 --- a/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs +++ b/Src/Dlhis.Canteen/Order/Controllers/BalancesController.cs @@ -1,4 +1,5 @@ -using Dlhis.Canteen.Order.Request; +using System.ComponentModel.DataAnnotations; +using Dlhis.Canteen.Order.Request; using Dlhis.Canteen.Order.Response; using Dlhis.Canteen.Order.Services; using Kurisu.AspNetCore.DataAccess.Dto; @@ -148,6 +149,18 @@ public class BalancesController : ControllerBase [HttpPost("haining/import")] public async Task Import(BalanceHainingImportRequest request) { - await _balanceService.Import(request); + await _balanceService.HainingImportAsync(request); + } + + /// + /// 根据工号海宁餐补数据获取 + /// + /// 工号 + /// + [IgnoreTenant] + [HttpGet("haining/list")] + public async Task> HainingDownloadAsync([Required(ErrorMessage = "工号不能为空")] string userCode) + { + return await _balanceService.HainingDownloadAsync(userCode); } } \ No newline at end of file diff --git a/Src/Dlhis.Canteen/Order/Response/BalanceHainingDownloadResponse.cs b/Src/Dlhis.Canteen/Order/Response/BalanceHainingDownloadResponse.cs new file mode 100644 index 00000000..36cf51af --- /dev/null +++ b/Src/Dlhis.Canteen/Order/Response/BalanceHainingDownloadResponse.cs @@ -0,0 +1,37 @@ +using Dlhis.Entity.Canteen.Enums; +using Kurisu.AspNetCore.Utils.Converters; +using Newtonsoft.Json; + +namespace Dlhis.Canteen.Order.Response +{ + public class BalanceHainingDownloadResponse + { + //工号、消费厂区、人员档案厂区、人事范围(若有)、部门(若有)、成本日期,消费时间,备注,金额,type,source,营业点,设备号,流水号, + + public string No { get; set; } + + public string Factory { get; set; } + public string OriginFactory { get; set; } + public string Werks { get; set; } + public string DepartmentNo { get; set; } + public string DepartmentName { get; set; } + + [JsonConverter(typeof(ToDateJsonConverter))] + public DateTime CostDate { get; set; } + + [JsonConverter(typeof(ToDateJsonConverter), "yyyy-MM-dd HH:mm:ss.fff")] + public DateTime CostDateTime { get; set; } + + public string Remark { get; set; } + + public decimal Amount { get; set; } + + public BalanceRecordTypeEnumType Type { get; set; } + + public BalanceRecordSourceEnumType Source { get; set; } + + public string BusinessPlaceCode { get; set; } + + public string DeviceUniqueNo { get; set; } + } +} \ No newline at end of file diff --git a/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs b/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs index 6454181b..33fb3a07 100644 --- a/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs +++ b/Src/Dlhis.Canteen/Order/Services/IBalanceService.cs @@ -31,5 +31,7 @@ public interface IBalanceService : IScopeDependency Task> GetConsumeDeviceAsync(GetConsumeDeviceRequest request); - Task Import(BalanceHainingImportRequest request); -} + Task HainingImportAsync(BalanceHainingImportRequest request); + + Task> HainingDownloadAsync(string userCode); +} \ No newline at end of file diff --git a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs index d0c720ac..96046a19 100644 --- a/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs +++ b/Src/Dlhis.Canteen/Order/Services/Implements/BalanceService.cs @@ -494,7 +494,7 @@ public class BalanceService : IBalanceService return page; } - public async Task Import(BalanceHainingImportRequest request) + public async Task HainingImportAsync(BalanceHainingImportRequest request) { var gainfo = await _dbContext.Queryable().Where(x => x.Code == request.UserCode).SingleAsync(); gainfo.ThrowIfNull($"工号{request.UserCode}不存在"); @@ -510,7 +510,7 @@ public class BalanceService : IBalanceService ShiftCode = c.Code }) .SingleAsync(); - + if (request.Type == BalanceRecordTypeEnumType.Out) { businessPlace.ThrowIfNull($"营业点{request.BusinessPlaceCode}不存在"); @@ -529,12 +529,12 @@ public class BalanceService : IBalanceService UserNo = gainfo.No, No = request.No, UserCode = gainfo.Code, - TenantId = request.Factory, Status = BalanceRecordStatusEnumType.Valid, Source = request.Source, Remark = request.Remark, CostId = gainfo.CostId, SubsidiesFromMonth = request.CostDate.ToString("yyyyMM"), + TenantId = request.Factory, OriginTenantId = gainfo.Factory, Werks = gainfo.Werks, Name = gainfo.Name, @@ -561,6 +561,36 @@ public class BalanceService : IBalanceService .ExecuteCommandThrowVersionAsync("写入失败,正在消费中"); } + /// + public async Task> HainingDownloadAsync(string userCode) + { + return await _dbContext.Queryable() + .LeftJoin((record, ga) => record.UserNo == ga.No) + .LeftJoin((record, ga, department) => ga.DepartmentNo == department.No) + .LeftJoin((record, ga, department, bPlace) => record.BusinessPlaceCode == bPlace.Code) + .Where(record => record.Status == BalanceRecordStatusEnumType.Valid) + .Where((record, ga) => ga.Code == userCode) + .OrderBy(record => record.CreateTime, OrderByType.Desc) + .Select((record, ga, department, bPlace) => new BalanceHainingDownloadResponse + { + No = record.No, + Factory = record.TenantId, + OriginFactory = record.OriginTenantId, + Werks = record.Werks, + DepartmentNo = record.DepartmentNo, + DepartmentName = department.Name, + CostDate = record.CostDate, + CostDateTime = record.CostDateTime, + Remark = record.Remark, + Amount = SqlFunc.Abs(record.Amount), + Type = record.Type, + Source = record.Source, + BusinessPlaceCode = bPlace.CustomCode, + DeviceUniqueNo = record.DeviceUniqueNo + }) + .ToListAsync(); + } + /// /// 获取离线设备