diff --git a/ds-wms-service/DS.Module.Core/Enums/TaskPlat/TaskBaseTypeEnum.cs b/ds-wms-service/DS.Module.Core/Enums/TaskPlat/TaskBaseTypeEnum.cs index d740bd20..f5796c0b 100644 --- a/ds-wms-service/DS.Module.Core/Enums/TaskPlat/TaskBaseTypeEnum.cs +++ b/ds-wms-service/DS.Module.Core/Enums/TaskPlat/TaskBaseTypeEnum.cs @@ -11,175 +11,229 @@ namespace DS.Module.Core /// 重要提醒 /// [Description("重要提醒")] - CAUTION_NOTICE, + CAUTION_NOTICE = 0, /// /// BC /// [Description("BC")] - BC, + BC = 1, /// /// DRAFT /// [Description("DRAFT")] - DRAFT, + DRAFT = 2, /// /// Cancellation 订舱取消 /// [Description("Cancellation")] - CANCELLATION, + CANCELLATION = 3, /// /// SEAWAY BILL下载 /// [Description("SEAWAY BILL")] - SEAWAYBILL_DOWN, + SEAWAYBILL_DOWN = 4, /// /// 提单正本下载 /// [Description("提单正本下载")] - ORIGINAL_DOWN, + ORIGINAL_DOWN = 5, /// /// 未装载 /// [Description("未装载")] - NOT_LOADED, + NOT_LOADED = 6, /// /// 未装船 /// [Description("未装船")] - NOT_SHIPMENG, + NOT_SHIPMENG = 7, /// /// 航次账单邮件 /// [Description("航次账单")] - INVOICE_BILL_MAIL, + INVOICE_BILL_MAIL = 8, /// /// VGM对比 /// [Description("VGM对比")] - VGM_COMPARE, + VGM_COMPARE = 9, /// /// 电放通知 /// [Description("电放通知")] - TELEX_NOTICE, + TELEX_NOTICE = 10, /// /// SI回执 /// [Description("SI回执")] - SI_FEEDBACK, + SI_FEEDBACK = 11, /// /// 单票账单 /// [Description("单票账单")] - PER_BILL, + PER_BILL = 12, /// /// 换船通知 /// [Description("换船通知")] - CHANGE_SHIP, + CHANGE_SHIP = 13, /// /// 取消换船通知 /// [Description("取消换船通知")] - ABORT_CHANGE_SHIP, + ABORT_CHANGE_SHIP = 14, /// /// 下货纸 /// [Description("下货纸")] - SHIPPING_ORDER, + SHIPPING_ORDER = 15, /// /// 正本缺失 /// [Description("正本缺失")] - ORIGINAL_LOST, + ORIGINAL_LOST = 16, /// /// VGM异常 /// [Description("VGM异常")] - VGM_EXCEPT, + VGM_EXCEPT = 17, /// /// 比对下货纸 /// [Description("比对下货纸")] - SHIPPING_ORDER_COMPARE, + SHIPPING_ORDER_COMPARE = 18, /// /// 派车 /// [Description("派车")] - TRUCK_DISPATCH, + TRUCK_DISPATCH = 19, /// /// Booking Amendment /// [Description("Amendment")] - BC_MODIFY, + BC_MODIFY = 20, /// /// 截止时间变更通知 /// [Description("截止时间变更")] - CUT_MODIFY, + CUT_MODIFY = 21, /// /// Rolling Nomination(预甩货通知) /// [Description("RollingNomination")] - ROLLING_NOMINATION, + ROLLING_NOMINATION = 22, /// /// Transfer Nomination(预甩货通知) /// [Description("TransferNomination")] - TRANSFER_NOMINATION, + TRANSFER_NOMINATION = 23, /// /// VGM回执 /// [Description("VGM回执")] - VGM_FEEDBACK, + VGM_FEEDBACK = 24, /// /// VGM未提交 /// [Description("VGM未提交")] - VGM_MISSING, + VGM_MISSING = 25, /// /// 目的港未提货 /// [Description("目的港未提货")] - POD_DISCHARGE_FULL, + POD_DISCHARGE_FULL = 26, /// /// 目的港未返空箱 /// [Description("目的港未返空箱")] - POD_GATEOUT_FULL, + POD_GATEOUT_FULL = 27, /// /// 航线截止时间调整 /// [Description("航线截止时间调整")] - ROUTE_CUT_CHANGE, + ROUTE_CUT_CHANGE = 28, /// /// 装货港未提箱 /// [Description("装货港未提箱")] - POL_CTN_NOT_PICKUP, + POL_CTN_NOT_PICKUP = 29, /// /// 运输计划已变更 /// [Description("运输计划已变更")] - TRNAS_PLAN_HAS_CHANGE, + TRNAS_PLAN_HAS_CHANGE = 30, + + + + + /// + /// 待审单 + /// + [Description("待审单")] + WAIT_ORDER_AUDIT = 31, + /// + /// 待收BC + /// + [Description("待收BC")] + WAIT_BC = 32, + /// + /// 待订舱 + /// + [Description("待订舱")] + WAIT_BOOKING = 33, + /// + /// 待放舱 + /// + [Description("待放舱")] + WAIT_SPACE_RELEASE = 34, + /// + /// 待提单确认 + /// + [Description("待提单确认")] + WAIT_BILL_CONFIRM = 35, + /// + /// 待提交SI + /// + [Description("待提交SI")] + WAIT_SI = 36, + /// + /// 待处理Draft + /// + [Description("待处理Draft")] + WAIT_DRAFT = 37, + /// + /// 待签出提单 + /// + [Description("待签出提单")] + WAIT_CHECKOUT_BILL = 38, + /// + /// 待派车 + /// + [Description("待派车")] + WAIT_TRUCK_DISPATCH = 39, + /// + /// 待提交VGM + /// + [Description("待提交VGM")] + WAIT_VGM = 40 } } diff --git a/ds-wms-service/DS.Module.Core/Enums/TaskPlat/TaskSourceEnum.cs b/ds-wms-service/DS.Module.Core/Enums/TaskPlat/TaskSourceEnum.cs index 582e8fd8..05ea112c 100644 --- a/ds-wms-service/DS.Module.Core/Enums/TaskPlat/TaskSourceEnum.cs +++ b/ds-wms-service/DS.Module.Core/Enums/TaskPlat/TaskSourceEnum.cs @@ -59,6 +59,12 @@ namespace DS.Module.Core /// 系统 /// [Description("系统")] - SYSTEM + SYSTEM, + + /// + /// 工作流 + /// + [Description("系统")] + WORK_FLOW, } } diff --git a/ds-wms-service/DS.Module.Core/Helpers/CustomContractResolver.cs b/ds-wms-service/DS.Module.Core/Helpers/CustomContractResolver.cs index 5a458bc1..0350626f 100644 --- a/ds-wms-service/DS.Module.Core/Helpers/CustomContractResolver.cs +++ b/ds-wms-service/DS.Module.Core/Helpers/CustomContractResolver.cs @@ -1,3 +1,4 @@ +using DS.Module.Core.Helpers; using Newtonsoft.Json; using Newtonsoft.Json.Serialization; @@ -16,7 +17,10 @@ public class CustomContractResolver : CamelCasePropertyNamesContractResolver { return new JsonConverterLong(); } - + if (objectType == typeof(DateTime?) || objectType == typeof(DateTime)) + { + return new DatetimeJsonConverter(); + } return base.ResolveContractConverter(objectType); } } \ No newline at end of file diff --git a/ds-wms-service/DS.Module.Core/Helpers/DatetimeJsonConverter.cs b/ds-wms-service/DS.Module.Core/Helpers/DatetimeJsonConverter.cs new file mode 100644 index 00000000..ee8835d3 --- /dev/null +++ b/ds-wms-service/DS.Module.Core/Helpers/DatetimeJsonConverter.cs @@ -0,0 +1,71 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Newtonsoft.Json; +using System.Threading.Tasks; +using Newtonsoft.Json.Linq; + +namespace DS.Module.Core.Helpers +{ + /// + /// 时间转换 + /// + public class DatetimeJsonConverter : JsonConverter + { + /// + /// 是否可以转换 + /// + /// + /// + public override bool CanConvert(Type objectType) + { + return true; + } + + /// + /// 读json + /// + /// + /// + /// + /// + /// + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + if ((reader.ValueType == null || reader.ValueType == typeof(DateTime?)) && reader.Value == null) + { + return null; + } + else + { + DateTime.TryParse(reader.Value != null ? reader.Value.ToString() : "", out DateTime value); + + return value; + } + } + + /// + /// 写json + /// + /// + /// + /// + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + if (value == null) + writer.WriteValue(value); + else if (value != null) + { + var years = DateTime.Parse(value.ToString()).Year; + if (years == 1900|| years == 2000 || years == 1901 || years == 1970) + { + writer.WriteValue(""); + } + else + writer.WriteValue(value); + } + + } + } +} diff --git a/ds-wms-service/DS.Module.Core/Helpers/StringLongHelper.cs b/ds-wms-service/DS.Module.Core/Helpers/StringLongHelper.cs deleted file mode 100644 index 1469de9e..00000000 --- a/ds-wms-service/DS.Module.Core/Helpers/StringLongHelper.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace DS.Module.Core.Helpers -{ - public static class StringLongHelper - { - } -} \ No newline at end of file diff --git a/ds-wms-service/DS.Module.Core/ServiceExtensions/DsAppWebInstall.cs b/ds-wms-service/DS.Module.Core/ServiceExtensions/DsAppWebInstall.cs index 37dae804..ed9709f8 100644 --- a/ds-wms-service/DS.Module.Core/ServiceExtensions/DsAppWebInstall.cs +++ b/ds-wms-service/DS.Module.Core/ServiceExtensions/DsAppWebInstall.cs @@ -1,10 +1,12 @@ using DS.Module.Core; using DS.Module.Core.Filters; +using DS.Module.Core.Helpers; using FluentValidation.AspNetCore; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.DependencyInjection; using Newtonsoft.Json; using Newtonsoft.Json.Serialization; +using System; namespace DS.Module.Core.ServiceExtensions; diff --git a/ds-wms-service/DS.Module.SqlSugar/SqlsugarInstall.cs b/ds-wms-service/DS.Module.SqlSugar/SqlsugarInstall.cs index 96cc0a13..bab35f2b 100644 --- a/ds-wms-service/DS.Module.SqlSugar/SqlsugarInstall.cs +++ b/ds-wms-service/DS.Module.SqlSugar/SqlsugarInstall.cs @@ -206,7 +206,7 @@ public static class SqlsugarInstall } } if (entityInfo.PropertyName == "Deleted") - entityInfo.SetValue(false); + entityInfo.SetValue(false); } // 更新操作 diff --git a/ds-wms-service/DS.WMS.CheckApi/Controllers/CheckBillController.cs b/ds-wms-service/DS.WMS.CheckApi/Controllers/CheckBillController.cs index 63e8363f..537930b1 100644 --- a/ds-wms-service/DS.WMS.CheckApi/Controllers/CheckBillController.cs +++ b/ds-wms-service/DS.WMS.CheckApi/Controllers/CheckBillController.cs @@ -57,9 +57,9 @@ public class CheckBillController : ApiController /// [HttpPost] [Route("GetCheckBillList")] - public DataResult> GetCheckBillList([FromBody] PageRequest request) + public async Task> GetCheckBillList([FromBody] PageRequest request) { - var res = _invokeService.GetCheckBillList(request); + var res = await _invokeService.GetCheckBillList(request); return res; } /// @@ -93,9 +93,9 @@ public class CheckBillController : ApiController /// [HttpPost] [Route("GetCheckBillBusinessList")] - public DataResult> GetCheckBillBusinessList([FromBody] PageRequest request) + public async Task> GetCheckBillBusinessList([FromBody] PageRequest request) { - var res = _invokeService.GetCheckBillBusinessList(request); + var res = await _invokeService.GetCheckBillBusinessList(request); return res; } diff --git a/ds-wms-service/DS.WMS.Core/Check/Dtos/CheckBillBusinessRes.cs b/ds-wms-service/DS.WMS.Core/Check/Dtos/CheckBillBusinessRes.cs new file mode 100644 index 00000000..701003af --- /dev/null +++ b/ds-wms-service/DS.WMS.Core/Check/Dtos/CheckBillBusinessRes.cs @@ -0,0 +1,30 @@ +using DS.WMS.Core.Check.View; +using DS.WMS.Core.Op.Dtos; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DS.WMS.Core.Check.Dtos +{ + /// + /// 客户对账业务明细 + /// + public class CheckBillBusinessRes + { + /// + /// 列表数据 + /// + public List List { get; set; } + + /// + /// 合计数 + /// + public int TotalCount { get; set; } + /// + /// 合计信息 + /// + public CheckBillTotalRes DataTotal { get; set; } + } +} diff --git a/ds-wms-service/DS.WMS.Core/Check/Dtos/CheckBillSumRes.cs b/ds-wms-service/DS.WMS.Core/Check/Dtos/CheckBillSumRes.cs index b2f89e12..dadcabd0 100644 --- a/ds-wms-service/DS.WMS.Core/Check/Dtos/CheckBillSumRes.cs +++ b/ds-wms-service/DS.WMS.Core/Check/Dtos/CheckBillSumRes.cs @@ -1,4 +1,5 @@ -using SqlSugar; +using DS.WMS.Core.Op.Dtos; +using SqlSugar; using System; using System.Collections.Generic; using System.Linq; @@ -50,37 +51,88 @@ namespace DS.WMS.Core.Check.Dtos /// /// RMB应收 /// - public decimal? RMBDR { get; set; } = 0; + public decimal RMBDR { get; set; } = 0; /// /// RMB应付 /// - public decimal? RMBCR { get; set; } = 0; + public decimal RMBCR { get; set; } = 0; /// /// USD应收 /// - public decimal? USDDR { get; set; } = 0; + public decimal USDDR { get; set; } = 0; /// /// USD应付 /// - public decimal? USDCR { get; set; } = 0; + public decimal USDCR { get; set; } = 0; /// /// RMB未收 /// - public decimal? BALRMBDR { get; set; } = 0; + public decimal BALRMBDR { get; set; } = 0; /// /// RMB未付 /// - public decimal? BALRMBCR { get; set; } = 0; + public decimal BALRMBCR { get; set; } = 0; /// /// USD未收 /// - public decimal? BALUSDDR { get; set; } = 0; + public decimal BALUSDDR { get; set; } = 0; /// /// USD未付 /// - public decimal? BALUSDCR { get; set; } = 0; + public decimal BALUSDCR { get; set; } = 0; + /// + /// 其他应收 + /// + public decimal OtherDR { get; set; } + /// + /// 其他应付 + /// + public decimal OtherCR { get; set; } + + + /// + /// 其他未收 + /// + public decimal BALOtherDR { get; set; } + /// + /// 其他未付 + /// + public decimal BALOtherCR { get; set; } + + /// + /// TTL应收 + /// + public decimal TTLDR { get; set; } + /// + /// TTL应付 + /// + public decimal TTLCR { get; set; } + /// + /// TTL未收 + /// + public decimal BALTTLDR { get; set; } + /// + /// TTL未付 + /// + public decimal BALTTLCR { get; set; } + /// + /// 开票RMB应收 + /// + public decimal OrderInvoiceRMBDR { get; set; } + /// + /// 开票USD应收 + /// + public decimal OrderInvoiceUSDDR { get; set; } + /// + /// 订单金额RMB应付 + /// + public decimal OrderAmountRMBCR { get; set; } + /// + /// 订单金额USD应付 + /// + public decimal OrderAmountUSDCR { get; set; } /// /// 对账时间 /// @@ -96,10 +148,31 @@ namespace DS.WMS.Core.Check.Dtos /// 对账人 /// - public string CreateByName { get; set; } + public string CreateUserName { get; set; } /// /// 备注 /// public string Note { get; set; } = ""; } + + /// + /// 客户对账列表返回 + /// + public class CheckBillListRes + { + /// + /// 列表数据 + /// + public List List { get; set; } + + /// + /// 合计数 + /// + public int TotalCount { get; set; } + /// + /// 合计信息 + /// + public CheckBillTotalRes DataTotal { get; set; } + + } } diff --git a/ds-wms-service/DS.WMS.Core/Check/Dtos/CheckBillTotalRes.cs b/ds-wms-service/DS.WMS.Core/Check/Dtos/CheckBillTotalRes.cs new file mode 100644 index 00000000..95eaabe1 --- /dev/null +++ b/ds-wms-service/DS.WMS.Core/Check/Dtos/CheckBillTotalRes.cs @@ -0,0 +1,101 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DS.WMS.Core.Check.Dtos +{ + /// + /// 客户对账列表合计 + /// + public class CheckBillTotalRes + { + /// + /// RMB应收 + /// + public decimal RMBDR { get; set; } + /// + /// RMB应付 + /// + public decimal RMBCR { get; set; } + + /// + /// USD应收 + /// + public decimal USDDR { get; set; } + /// + /// USD应付 + /// + public decimal USDCR { get; set; } + + /// + /// RMB未收 + /// + public decimal BALRMBDR { get; set; } + /// + /// RMB未付 + /// + public decimal BALRMBCR { get; set; } + + /// + /// USD未收 + /// + public decimal BALUSDDR { get; set; } + /// + /// USD未付 + /// + public decimal BALUSDCR { get; set; } + /// + /// 其他应收 + /// + public decimal OtherDR { get; set; } + /// + /// 其他应付 + /// + public decimal OtherCR { get; set; } + + + /// + /// 其他未收 + /// + public decimal BALOtherDR { get; set; } + /// + /// 其他未付 + /// + public decimal BALOtherCR { get; set; } + + /// + /// TTL应收 + /// + public decimal TTLDR { get; set; } + /// + /// TTL应付 + /// + public decimal TTLCR { get; set; } + /// + /// TTL未收 + /// + public decimal BALTTLDR { get; set; } + /// + /// TTL未付 + /// + public decimal BALTTLCR { get; set; } + /// + /// 开票RMB应收 + /// + public decimal OrderInvoiceRMBDR { get; set; } + /// + /// 开票USD应收 + /// + public decimal OrderInvoiceUSDDR { get; set; } + /// + /// 订单金额RMB应付 + /// + public decimal OrderAmountRMBCR { get; set; } + /// + /// 订单金额USD应付 + /// + public decimal OrderAmountUSDCR { get; set; } + } +} diff --git a/ds-wms-service/DS.WMS.Core/Check/Interface/ICheckBillService.cs b/ds-wms-service/DS.WMS.Core/Check/Interface/ICheckBillService.cs index d096ee5b..4fce7077 100644 --- a/ds-wms-service/DS.WMS.Core/Check/Interface/ICheckBillService.cs +++ b/ds-wms-service/DS.WMS.Core/Check/Interface/ICheckBillService.cs @@ -17,7 +17,7 @@ namespace DS.WMS.Core.Check.Interface /// /// /// - public DataResult> GetCheckBillList(PageRequest request); + public Task> GetCheckBillList(PageRequest request); /// @@ -31,7 +31,7 @@ namespace DS.WMS.Core.Check.Interface /// /// /// - public DataResult> GetCheckBillBusinessList(PageRequest request); + public Task> GetCheckBillBusinessList(PageRequest request); /// /// 客户对账明细对应费用列表 /// diff --git a/ds-wms-service/DS.WMS.Core/Check/Method/CheckBillService.cs b/ds-wms-service/DS.WMS.Core/Check/Method/CheckBillService.cs index 54f179e3..5a7a534a 100644 --- a/ds-wms-service/DS.WMS.Core/Check/Method/CheckBillService.cs +++ b/ds-wms-service/DS.WMS.Core/Check/Method/CheckBillService.cs @@ -18,6 +18,7 @@ using DS.WMS.Core.Op.View; using DS.WMS.Core.Sys.Entity; using DS.WMS.Core.Sys.Interface; using DS.WMS.Core.Sys.Method; +using LanguageExt.Common; using Mapster; using Microsoft.Extensions.DependencyInjection; using SqlSugar; @@ -86,16 +87,13 @@ namespace DS.WMS.Core.Check.Method .Where(whereList).Select() .ToQueryPage(request.PageCondition); return data; - } - - - + } /// /// 客户对账列表 /// /// /// - public DataResult> GetCheckBillList(PageRequest request) + public async Task> GetCheckBillList(PageRequest request) { var tenantDb = saasService.GetBizDbScopeById(user.TenantId); var users = db.Queryable().Select(x => new { x.Id, x.UserName }).ToList(); @@ -116,10 +114,10 @@ namespace DS.WMS.Core.Check.Method queryData = queryData.Where(x => checkIds.Contains(x.Id)); } - var data = queryData.Mapper(it => + var result = queryData.Mapper(it => { var checkBillDetails = tenantDb.Queryable().Where(x => x.CheckId == it.Id).ToList(); - it.CreateByName = users.Find(x => x.Id == it.CreateBy).UserName; + //it.CreateByName = users.Find(x => x.Id == it.CreateBy).UserName; it.RMBDR = checkBillDetails.Sum(x => x.RMBDR); it.RMBCR = checkBillDetails.Sum(x => x.RMBCR); it.USDDR = checkBillDetails.Sum(x => x.USDDR); @@ -128,10 +126,52 @@ namespace DS.WMS.Core.Check.Method it.BALRMBCR = checkBillDetails.Sum(x => x.BALRMBCR); it.BALUSDDR = checkBillDetails.Sum(x => x.BALUSDDR); it.BALUSDCR = checkBillDetails.Sum(x => x.BALUSDCR); + it.OtherDR = checkBillDetails.Sum(x => x.OtherDR); + it.OtherCR = checkBillDetails.Sum(x => x.OtherCR); + it.BALOtherDR = checkBillDetails.Sum(x => x.BALOtherDR); + it.TTLDR = checkBillDetails.Sum(x => x.TTLDR); + it.TTLCR = checkBillDetails.Sum(x => x.TTLCR); + it.BALTTLDR = checkBillDetails.Sum(x => x.BALTTLDR); + it.BALTTLCR = checkBillDetails.Sum(x => x.BALTTLCR); + it.OrderInvoiceRMBDR = checkBillDetails.Sum(x => x.OrderInvoiceRMBDR); + it.OrderInvoiceUSDDR = checkBillDetails.Sum(x => x.OrderInvoiceUSDDR); + it.OrderAmountRMBCR = checkBillDetails.Sum(x => x.OrderAmountRMBCR); + it.OrderAmountUSDCR = checkBillDetails.Sum(x => x.OrderAmountUSDCR); } - ) - .ToQueryPage(request.PageCondition); - return data; + ); + var list = result.ToList(); + var data = await result.ToQueryPageAsync(request.PageCondition); + var totalData = new CheckBillTotalRes() + { + RMBDR = list.Sum(x => x.RMBDR), + RMBCR = list.Sum(x => x.RMBCR), + USDDR = list.Sum(x => x.USDDR), + USDCR = list.Sum(x => x.USDCR), + BALRMBDR = list.Sum(x => x.BALRMBDR), + BALRMBCR = list.Sum(x => x.BALRMBCR), + BALUSDDR = list.Sum(x => x.BALUSDDR), + BALUSDCR = list.Sum(x => x.BALUSDCR), + OtherDR = list.Sum(x => x.OtherDR), + OtherCR = list.Sum(x => x.OtherCR), + BALOtherDR = list.Sum(x => x.BALOtherDR), + TTLDR = list.Sum(x => x.TTLDR), + TTLCR = list.Sum(x => x.TTLCR), + BALTTLDR = list.Sum(x => x.BALTTLDR), + BALTTLCR = list.Sum(x => x.BALTTLCR), + OrderInvoiceRMBDR = list.Sum(x => x.OrderInvoiceRMBDR), + OrderInvoiceUSDDR = list.Sum(x => x.OrderInvoiceUSDDR), + OrderAmountRMBCR = list.Sum(x => x.OrderAmountRMBCR), + OrderAmountUSDCR = list.Sum(x => x.OrderAmountUSDCR), + }; + var res = new CheckBillListRes() + { + List = data.Data, + TotalCount = list.Count(), + DataTotal = totalData + }; + return await Task.FromResult(DataResult.Success(res, MultiLanguageConst.DataQuerySuccess)); + //.ToQueryPage(request.PageCondition); + //return data; } /// /// 详情 @@ -153,16 +193,45 @@ namespace DS.WMS.Core.Check.Method /// /// /// - public DataResult> GetCheckBillBusinessList(PageRequest request) + public async Task> GetCheckBillBusinessList(PageRequest request) { var tenantDb = saasService.GetBizDbScopeById(user.TenantId); //序列化查询条件 var whereList = db.ConfigQuery.Context.Utilities.JsonToConditionalModels(request.QueryCondition); - var data = tenantDb.Queryable() - .Where(whereList) - .ToQueryPage(request.PageCondition); - return data; + var result = tenantDb.Queryable() + .Where(whereList); + var list = result.ToList(); + var data = await result.ToQueryPageAsync(request.PageCondition); + var totalData = new CheckBillTotalRes() + { + RMBDR = list.Sum(x => x.RMBDR), + RMBCR = list.Sum(x => x.RMBCR), + USDDR = list.Sum(x => x.USDDR), + USDCR = list.Sum(x => x.USDCR), + BALRMBDR = list.Sum(x => x.BALRMBDR), + BALRMBCR = list.Sum(x => x.BALRMBCR), + BALUSDDR = list.Sum(x => x.BALUSDDR), + BALUSDCR = list.Sum(x => x.BALUSDCR), + OtherDR = list.Sum(x => x.OtherDR), + OtherCR = list.Sum(x => x.OtherCR), + BALOtherDR = list.Sum(x => x.BALOtherDR), + TTLDR = list.Sum(x => x.TTLDR), + TTLCR = list.Sum(x => x.TTLCR), + BALTTLDR = list.Sum(x => x.BALTTLDR), + BALTTLCR = list.Sum(x => x.BALTTLCR), + OrderInvoiceRMBDR = list.Sum(x => x.OrderInvoiceRMBDR), + OrderInvoiceUSDDR = list.Sum(x => x.OrderInvoiceUSDDR), + OrderAmountRMBCR = list.Sum(x => x.OrderAmountRMBCR), + OrderAmountUSDCR = list.Sum(x => x.OrderAmountUSDCR), + }; + var res = new CheckBillBusinessRes() + { + List = data.Data, + TotalCount = list.Count(), + DataTotal = totalData + }; + return await Task.FromResult(DataResult.Success(res, MultiLanguageConst.DataQuerySuccess)); } /// diff --git a/ds-wms-service/DS.WMS.Core/Op/Dtos/BusinessOrderContactReq.cs b/ds-wms-service/DS.WMS.Core/Op/Dtos/BusinessOrderContactReq.cs index e7ab4e12..16fa7958 100644 --- a/ds-wms-service/DS.WMS.Core/Op/Dtos/BusinessOrderContactReq.cs +++ b/ds-wms-service/DS.WMS.Core/Op/Dtos/BusinessOrderContactReq.cs @@ -46,6 +46,10 @@ namespace DS.WMS.Core.Op.Dtos /// public string CustomerName { get; set; } /// + /// 联系人ID + /// + public long CustomerContactId { get; set; } + /// /// 联系人 /// public string Name { get; set; } diff --git a/ds-wms-service/DS.WMS.Core/Op/Dtos/BusinessOrderContactRes.cs b/ds-wms-service/DS.WMS.Core/Op/Dtos/BusinessOrderContactRes.cs index 939743ec..89dc7018 100644 --- a/ds-wms-service/DS.WMS.Core/Op/Dtos/BusinessOrderContactRes.cs +++ b/ds-wms-service/DS.WMS.Core/Op/Dtos/BusinessOrderContactRes.cs @@ -44,6 +44,10 @@ namespace DS.WMS.Core.Op.Dtos /// public string CustomerName { get; set; } /// + /// 联系人ID + /// + public long CustomerContactId { get; set; } + /// /// 联系人 /// public string Name { get; set; } diff --git a/ds-wms-service/DS.WMS.Core/Op/Method/Task/SeaExportTaskService.cs b/ds-wms-service/DS.WMS.Core/Op/Method/TaskInteraction/SeaExportTaskService.cs similarity index 88% rename from ds-wms-service/DS.WMS.Core/Op/Method/Task/SeaExportTaskService.cs rename to ds-wms-service/DS.WMS.Core/Op/Method/TaskInteraction/SeaExportTaskService.cs index f69df8c5..8342c627 100644 --- a/ds-wms-service/DS.WMS.Core/Op/Method/Task/SeaExportTaskService.cs +++ b/ds-wms-service/DS.WMS.Core/Op/Method/TaskInteraction/SeaExportTaskService.cs @@ -1,6 +1,6 @@ using DS.WMS.Core.Fee.Method; -namespace DS.WMS.Core.Op.Method.Task +namespace DS.WMS.Core.Op.Method.TaskInteraction { /// /// 海运出口任务服务 diff --git a/ds-wms-service/DS.WMS.Core/TaskPlat/Dtos/TaskManageOrderMessageHeadInfo.cs b/ds-wms-service/DS.WMS.Core/TaskPlat/Dtos/TaskManageOrderMessageHeadInfo.cs index 3b7b1cf6..b0e8dda4 100644 --- a/ds-wms-service/DS.WMS.Core/TaskPlat/Dtos/TaskManageOrderMessageHeadInfo.cs +++ b/ds-wms-service/DS.WMS.Core/TaskPlat/Dtos/TaskManageOrderMessageHeadInfo.cs @@ -13,6 +13,11 @@ namespace DS.WMS.Core.TaskPlat.Dtos ///08dabd4e-dcc3-471a-8031-cf066ed0a8f4 public string GID { get; set; } = Guid.NewGuid().ToString(); + /// + /// 业务主键 + /// + public long? BSNO { get; set; } + /// /// 报文类型 TASK-任务 /// diff --git a/ds-wms-service/DS.WMS.Core/TaskPlat/Entity/TaskBaseInfo.cs b/ds-wms-service/DS.WMS.Core/TaskPlat/Entity/TaskBaseInfo.cs index 4bdc780f..e87ff106 100644 --- a/ds-wms-service/DS.WMS.Core/TaskPlat/Entity/TaskBaseInfo.cs +++ b/ds-wms-service/DS.WMS.Core/TaskPlat/Entity/TaskBaseInfo.cs @@ -65,6 +65,12 @@ namespace DS.WMS.Core.TaskPlat.Entity [SugarColumn(ColumnDescription = "外业务类型 BOOK_ORDER-订舱 MAIL_RECV-邮件接收", IsNullable = true, Length = 40)] public string? OUT_BUSI_TYPE { get; set; } + /// + /// 外业务主键 + /// + [SugarColumn(ColumnDescription = "外业务主键", IsNullable = true)] + public long? OUT_BS_NO { get; set; } + /// /// 基础业务类型 /// diff --git a/ds-wms-service/DS.WMS.Core/TaskPlat/Entity/TaskFlowLogDetail.cs b/ds-wms-service/DS.WMS.Core/TaskPlat/Entity/TaskFlowLogDetail.cs index c175b01a..0901fdc0 100644 --- a/ds-wms-service/DS.WMS.Core/TaskPlat/Entity/TaskFlowLogDetail.cs +++ b/ds-wms-service/DS.WMS.Core/TaskPlat/Entity/TaskFlowLogDetail.cs @@ -29,10 +29,16 @@ namespace DS.WMS.Core.TaskPlat.Entity [SugarColumn(ColumnDescription = "执行模块主键")] public long ModuleId { get; set; } + /// + /// 执行模块名称 + /// + [SugarColumn(ColumnDescription = "执行模块名称", IsNullable = true, Length = 255)] + public string? ModuleName { get; set; } + /// /// 原始数据内容 /// - [SugarColumn(ColumnDescription = "原始数据内容", IsNullable = true)] + [SugarColumn(ColumnDescription = "原始数据内容", IsNullable = true, Length = 255)] public string? OriginDataContext { get; set; } ///// diff --git a/ds-wms-service/DS.WMS.Core/TaskPlat/Interface/ITaskManageService.cs b/ds-wms-service/DS.WMS.Core/TaskPlat/Interface/ITaskManageService.cs index e57e4d51..c24b8811 100644 --- a/ds-wms-service/DS.WMS.Core/TaskPlat/Interface/ITaskManageService.cs +++ b/ds-wms-service/DS.WMS.Core/TaskPlat/Interface/ITaskManageService.cs @@ -20,5 +20,15 @@ namespace DS.WMS.Core.TaskPlat.Interface /// /// 返回回执 Task InitTaskJob(TaskManageOrderMessageInfo info, IFormFile file = null, IFormFile modifyFile = null); + + + /// + /// 设置任务状态 + /// + /// 业务主键 + /// 业务类型 + /// 业务状态 + /// 状态发生时间 + Task SetTaskStatus(long bsno, TaskBaseTypeEnum taskBaseTypeEnum, TaskStatusEnum taskStatusEnum, DateTime? statusTime); } } diff --git a/ds-wms-service/DS.WMS.Core/TaskPlat/Method/TaskManageService.cs b/ds-wms-service/DS.WMS.Core/TaskPlat/Method/TaskManageService.cs index 55e7ac6a..8c47d9d0 100644 --- a/ds-wms-service/DS.WMS.Core/TaskPlat/Method/TaskManageService.cs +++ b/ds-wms-service/DS.WMS.Core/TaskPlat/Method/TaskManageService.cs @@ -41,6 +41,40 @@ namespace DS.WMS.Core.TaskPlat.Method this.environment = environment; //_codeCtnService = codeCtnService; } + /// + /// 设置任务状态 + /// + /// 业务主键 + /// 业务类型 + /// 业务状态 + /// 状态发生时间 + public async Task SetTaskStatus(long bsno, TaskBaseTypeEnum taskBaseTypeEnum, TaskStatusEnum taskStatusEnum, DateTime? statusTime) + { + SqlSugarScopeProvider tenantDb = saasDbService.GetBizDbScopeById(user.TenantId); + + TaskBaseInfo taskInfo = await tenantDb.Queryable() + .OrderByDescending(a => a.CreateTime) + .FirstAsync(t => t.OUT_BS_NO == bsno && t.TASK_BASE_TYPE == taskBaseTypeEnum.ToString()); + + if (taskInfo == null) + { + _logger.LogInformation($"根据bsno:【{bsno}】,TaskBaseTypeEnum:【{taskBaseTypeEnum}】未查询到任务"); + return DataResult.Failed(MultiLanguageConst.GetDescription(nameof(MultiLanguageConst.DataQueryNoData))); + } + + _logger.LogInformation("接收到任务状态修改报文 任务主键={id} 状态设置={status}", taskInfo.Id, taskStatusEnum.ToString()); + taskInfo.STATUS = taskStatusEnum.ToString(); + + await tenantDb.Updateable(taskInfo).UpdateColumns(x => new + { + x.UpdateBy, + x.UpdateTime, + x.UpdateUserName, + x.STATUS + }).ExecuteCommandAsync(); + + return DataResult.Successed(MultiLanguageConst.GetDescription(nameof(MultiLanguageConst.DataUpdateSuccess))); + } public async Task InitTaskJob(TaskManageOrderMessageInfo info, IFormFile file = null, IFormFile modifyFile = null) { @@ -55,22 +89,35 @@ namespace DS.WMS.Core.TaskPlat.Method SqlSugarScopeProvider tenantDb = saasDbService.GetBizDbScopeById(user.TenantId); - var taskInfo = await tenantDb.Queryable() - .OrderByDescending(a => a.CreateTime) - .FirstAsync(t => t.OUT_BUSI_NO == $"{info.Head.SenderId}_{info.Head.GID}"); + TaskBaseInfo taskInfo = null; - _logger.LogInformation("批次={no} 接收到创建任务报文 结束查询任务 {msg}", batchNo, taskInfo == null ? "不存在" : "存在"); + // 如果业务主键不为空,则通过业务主键进行重复判断 + if (info.Head.BSNO is not null or 0) + { + taskInfo = await tenantDb.Queryable() + .OrderByDescending(a => a.CreateTime) + .FirstAsync(t => t.OUT_BS_NO == info.Head.BSNO); + } + // 否则通过Head.GID进行判断 + else + { + taskInfo = await tenantDb.Queryable() + .OrderByDescending(a => a.CreateTime) + .FirstAsync(t => t.OUT_BUSI_NO == $"{info.Head.SenderId}_{info.Head.GID}"); - /* - 只要任务最后一次处理任务的状态是已取消、已完成,就可以重入新的任务 - */ - if (taskInfo != null && taskInfo.STATUS != TaskStatusEnum.Cancel.ToString() && taskInfo.STATUS != TaskStatusEnum.Complete.ToString()) + } + + // 只要任务最后一次处理任务的状态是已取消、已完成,就可以重入新的任务 + if (taskInfo != null + && taskInfo.STATUS != TaskStatusEnum.Cancel.ToString() + && taskInfo.STATUS != TaskStatusEnum.Complete.ToString()) { _logger.LogInformation("批次={no} 状态已存在,不能重复创建任务 status={status}", batchNo, taskInfo.STATUS); - - //throw new Exception($"状态已存在,不能重复创建任务"); + throw new Exception($"状态已存在,不能重复创建任务"); } + _logger.LogInformation("批次={no} 接收到创建任务报文 结束查询任务 {msg}", batchNo, taskInfo == null ? "不存在" : "存在"); + //如果文件路径不为空 判断文件是否真实存在 if (!string.IsNullOrWhiteSpace(info.Main.FilePath) && !File.Exists(info.Main.FilePath)) { @@ -108,7 +155,7 @@ namespace DS.WMS.Core.TaskPlat.Method CUSTOMER_NAME = info.Main.CustomerName, BATCH_STATIC = info.Main.BatchStatic, DJYUserId = info.Head.DJYUserId, - + OUT_BS_NO = info.Head.BSNO, }; long taskReqUserId = 0; @@ -588,30 +635,6 @@ namespace DS.WMS.Core.TaskPlat.Method #region 私有方法 - static object? GetNestedDynamicPropertyValue(dynamic obj, string propertyPath) - { - var properties = propertyPath.Split('.'); - dynamic currentObj = obj; - foreach (var property in properties) - { - if (currentObj is IDictionary dictionary) - { - if (dictionary.TryGetValue(property, out var value)) - { - currentObj = value; - } - else - { - return null; - } - } - else - { - return null; - } - } - return currentObj; - } /// /// 保存文件并返回文件完整路径 diff --git a/ds-wms-service/DS.WMS.Core/TaskPlat/Other/TaskFlowRuner.cs b/ds-wms-service/DS.WMS.Core/TaskPlat/Other/TaskFlowRuner.cs index 4af2248c..c4cbd916 100644 --- a/ds-wms-service/DS.WMS.Core/TaskPlat/Other/TaskFlowRuner.cs +++ b/ds-wms-service/DS.WMS.Core/TaskPlat/Other/TaskFlowRuner.cs @@ -97,32 +97,49 @@ namespace DS.WMS.Core.TaskPlat valStr = obj.ToString(); } + var oldValue = configMatchCount[configItem.Id]; if (conditionItem.MatchType == 1) { if (valStr?.Equals(conditionItem.MatchValue, StringComparison.CurrentCultureIgnoreCase) == true) { - configMatchCount[configItem.Id] = configMatchCount[configItem.Id] + 1; + configMatchCount[configItem.Id] = oldValue + 1; + } + else + { + configMatchCount[configItem.Id] = oldValue - 1; } } else if (conditionItem.MatchType == 2) { if (valStr?.Contains(conditionItem.MatchValue, StringComparison.CurrentCultureIgnoreCase) == true) { - configMatchCount[configItem.Id] = configMatchCount[configItem.Id] + 1; + configMatchCount[configItem.Id] = oldValue + 1; + } + else + { + configMatchCount[configItem.Id] = oldValue - 1; } } else if (conditionItem.MatchType == 3) { if (valStr?.StartsWith(conditionItem.MatchValue, StringComparison.CurrentCultureIgnoreCase) == true) { - configMatchCount[configItem.Id] = configMatchCount[configItem.Id] + 1; + configMatchCount[configItem.Id] = oldValue + 1; + } + else + { + configMatchCount[configItem.Id] = oldValue - 1; } } else if (conditionItem.MatchType == 4) { if (valStr?.EndsWith(conditionItem.MatchValue, StringComparison.CurrentCultureIgnoreCase) == true) { - configMatchCount[configItem.Id] = configMatchCount[configItem.Id] + 1; + configMatchCount[configItem.Id] = oldValue + 1; + } + else + { + configMatchCount[configItem.Id] = oldValue - 1; } } } @@ -207,17 +224,19 @@ namespace DS.WMS.Core.TaskPlat { throw new Exception($"未找到指定流程配置,ExecuteModuleId:{configItem.ExecuteModuleId}"); } + + flowLogDetail.ModuleId = module.Id; + flowLogDetail.ModuleName = module.Name; + Assembly assembly; if (module.AssemblyName!.StartsWith("DS.WMS.Core")) { - //assembly = Assembly.GetEntryAssembly()!; assembly = Assembly.GetExecutingAssembly(); } else { assembly = Assembly.Load(module.AssemblyName!); } - //var interfaceType2 = assembly.GetType(module.InterfaceName!); var interfaceType = assembly.DefinedTypes.FirstOrDefault(x => x.Name == module.InterfaceName!); if (interfaceType == null) { diff --git a/ds-wms-service/DS.WMS.TaskApi/Controllers/TaskManageController.cs b/ds-wms-service/DS.WMS.TaskApi/Controllers/TaskManageController.cs index 3308288f..1c2e4305 100644 --- a/ds-wms-service/DS.WMS.TaskApi/Controllers/TaskManageController.cs +++ b/ds-wms-service/DS.WMS.TaskApi/Controllers/TaskManageController.cs @@ -54,6 +54,18 @@ public class TaskManageController : ApiController return result; } + + /// + /// 设置任务状态 + /// + [HttpPost("SetTaskStatus")] + [ApiUser(ApiCode = "BCTaskManage"), AllowAnonymous] + public async Task SetTaskStatus(long bsno, TaskBaseTypeEnum taskBaseTypeEnum, TaskStatusEnum taskStatusEnum, DateTime? statusTime) + { + var result = await taskManageService.SetTaskStatus(bsno, taskBaseTypeEnum, taskStatusEnum, statusTime); + return result; + } + // /TaskManage/CreateBCTaskJob // /TaskManage/CreateDRAFTTaskJob // /TaskManage/CreateAdvisoryTaskJob