From 9901d50ab140ab993683953529ddc184a39ea18a Mon Sep 17 00:00:00 2001 From: dengjunjie <dengjunjie@hnkhzn.com> Date: 星期三, 15 一月 2025 15:55:15 +0800 Subject: [PATCH] 入库添加流水号 --- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs | 70 +++++++++++++++++++++++++++++++++- 1 files changed, 67 insertions(+), 3 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs" index 8a57f20..5508525 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrderService.cs" @@ -18,8 +18,10 @@ using WIDESEA_Core.BaseRepository; using WIDESEA_Core.BaseServices; using WIDESEA_Core.CodeConfigEnum; +using WIDESEA_Core.DB; using WIDESEA_Core.Enums; using WIDESEA_Core.Helper; +using WIDESEA_Core.Seed; using WIDESEA_Core.Utilities; using WIDESEA_DTO; using WIDESEA_DTO.Basic; @@ -340,6 +342,7 @@ List<Dt_StockInfoDetail> stockInfoDetails = new List<Dt_StockInfoDetail>(); List<int> detailKeys = new List<int>(); + int newCount = 0; foreach (var model in models) { if (purchaseOrderNos.FirstOrDefault(x => x == model.PurchaseOrderNo) == null) @@ -370,6 +373,7 @@ EffectiveDate = model.EffectiveDate, InboundOrderRowNo = notGroupDetail.RowNo, }; + newCount++; if (stockInfo.Id > 0) { @@ -385,7 +389,7 @@ } //鍏ュ簱鏄庣粏鏂板瀹屾垚鏁伴噺 - int newCount = inboundOrderDetails.Where(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()).ToList().Count; + //int newCount = inboundOrderDetails.Where(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()).ToList().Count; if (inboundOrder.Details.Count == (newCount + oldCount)) { inboundOrder.OrderStatus = InOrderStatusEnum.鍏ュ簱瀹屾垚.ObjToInt(); @@ -428,7 +432,7 @@ } ERPInboundModel eRPInboundModel = new ERPInboundModel() { - Code = inboundOrder.InboundOrderNo, + Code = CreateCodeByRule(nameof(RuleCodeEnum.RLCodeRule)), CreatorCode = inboundOrder.Creater, EntDate = inboundOrder.CreateDate.ToString("yyyy-MM-dd HH:mm:ss"), StockDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), @@ -786,7 +790,7 @@ ERPInboundModel model = new ERPInboundModel() { - Code = inboundOrder.InboundOrderNo, + Code = CreateCodeByRule(nameof(RuleCodeEnum.RLCodeRule)), CreatorCode = inboundOrder.Creater,//娴嬭瘯 EntDate = inboundOrder.CreateDate.ToString("yyyy-MM-dd HH:mm:ss"), StockDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), @@ -809,6 +813,66 @@ return content; } + static object lock_code = new object(); + public string CreateCodeByRule(string ruleCode) + { + lock (lock_code) + { + + string code = string.Empty; + DateTime dateTime = DateTime.Now; + DateTime now = DateTime.Now; + try + { + if (string.IsNullOrEmpty(ruleCode)) + throw new ArgumentNullException(nameof(ruleCode)); + SqlSugarClient sugarClient = new SqlSugarClient(new ConnectionConfig + { + IsAutoCloseConnection = false, + DbType = DbType.SqlServer, + ConnectionString = DBContext.ConnectionString + }); + Dt_CodeRuleConfig codeRuleConfig = sugarClient.Queryable<Dt_CodeRuleConfig>().Where(x => x.RuleCode == ruleCode).First(); + if (codeRuleConfig == null) + throw new ArgumentNullException(nameof(codeRuleConfig)); + if (codeRuleConfig.ModifyDate != null) + { + dateTime = Convert.ToDateTime(codeRuleConfig.ModifyDate); + } + else + { + dateTime = Convert.ToDateTime(codeRuleConfig.CreateDate); + } + + if (now.Year == dateTime.Year && now.Month == dateTime.Month && now.Day == dateTime.Day) + { + now = dateTime; + codeRuleConfig.CurrentVal = Convert.ToInt32(codeRuleConfig.CurrentVal) + 1; + } + else + { + codeRuleConfig.CurrentVal = 1; + } + codeRuleConfig.ModifyDate = DateTime.Now; + code = codeRuleConfig.Format; + code = code.Replace($"[{CodeFormatTypeEnum.YYYY}]", now.Year.ToString().PadLeft(4, '0')); + code = code.Replace($"[{CodeFormatTypeEnum.MM}]", now.Month.ToString().PadLeft(2, '0')); + code = code.Replace($"[{CodeFormatTypeEnum.DD}]", now.Day.ToString().PadLeft(2, '0')); + code = code.Replace($"[{CodeFormatTypeEnum.ST}]", codeRuleConfig.StartStr?.ToString() ?? ""); + code = code.Replace($"[{CodeFormatTypeEnum.NUM}]", codeRuleConfig.CurrentVal.ToString().PadLeft(codeRuleConfig.Length, '0')); + Dictionary<string, object> keyValuePairs = new Dictionary<string, object>() { { nameof(codeRuleConfig.CurrentVal), codeRuleConfig.CurrentVal }, { nameof(codeRuleConfig.Id), codeRuleConfig.Id }, { nameof(codeRuleConfig.ModifyDate), DateTime.Now } }; + sugarClient.Updateable(keyValuePairs).AS(MainDb.CodeRuleConfig).WhereColumns(nameof(codeRuleConfig.Id)).ExecuteCommand(); + sugarClient.Updateable(codeRuleConfig); + + } + catch (Exception ex) + { + + } + return code; + } + } + /// <summary> /// 鍏ュ簱瀹屾垚鍥炰紶鍒癊RP /// </summary> -- Gitblit v1.9.3