From d01658c63cd541fe4ea5cec5c4bd7f23b9408cdb Mon Sep 17 00:00:00 2001
From: 647556386 <647556386@qq.com>
Date: 星期六, 18 十月 2025 15:04:56 +0800
Subject: [PATCH] 前端,pda,后端接口更改,新增,优化
---
WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutboundOrderService.cs | 205 ++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 184 insertions(+), 21 deletions(-)
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutboundOrderService.cs b/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutboundOrderService.cs
index 425e7f8..89cd668 100644
--- a/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutboundOrderService.cs
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutboundOrderService.cs
@@ -1,16 +1,22 @@
锘縰sing AutoMapper;
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
+using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common;
+using WIDESEA_Common.OrderEnum;
using WIDESEA_Core;
+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.Inbound;
using WIDESEA_DTO.Outbound;
@@ -28,6 +34,7 @@
public partial class OutboundOrderService : ServiceBase<Dt_OutboundOrder, IOutboundOrderRepository>, IOutboundOrderService
{
private readonly IMapper _mapper;
+ private readonly IUnitOfWorkManage _unitOfWorkManage;
private readonly IMaterielInfoService _materielInfoService;
private readonly IStockInfoService _stockService;
private readonly IStockInfoDetailService _stockDetailService;
@@ -38,9 +45,10 @@
public IOutboundOrderRepository Repository => BaseDal;
- public OutboundOrderService(IOutboundOrderRepository BaseDal, IMapper mapper, IMaterielInfoService materielInfoService, IOutboundOrderDetailService outboundOrderDetailService, IOutboundOrder_HtyService outboundOrder_HtyService, IOutboundOrderDetail_HtyService outboundOrderDetail_HtyService, IStockInfoDetailService stockDetailService, IStockInfoService stockInfoService) : base(BaseDal)
+ public OutboundOrderService(IOutboundOrderRepository BaseDal, IMapper mapper, IMaterielInfoService materielInfoService, IUnitOfWorkManage unitOfWorkManage, IOutboundOrderDetailService outboundOrderDetailService, IOutboundOrder_HtyService outboundOrder_HtyService, IOutboundOrderDetail_HtyService outboundOrderDetail_HtyService, IStockInfoDetailService stockDetailService, IStockInfoService stockInfoService) : base(BaseDal)
{
_mapper = mapper;
+ _unitOfWorkManage = unitOfWorkManage;
_materielInfoService = materielInfoService;
_stockDetailService = stockDetailService;
_stockService = stockInfoService;
@@ -58,6 +66,7 @@
{
BatchNo = x.FirstOrDefault()?.BatchNo ?? "",
MaterielCode = x.Key,
+ MaterielName = x.FirstOrDefault()?.MaterielName??"",
OrderQuantity = x.Sum(x => x.OrderQuantity),
Remark = x.FirstOrDefault(v => !string.IsNullOrEmpty(v.Remark))?.Remark ?? ""
}).ToList();
@@ -149,7 +158,7 @@
//}
/// <summary>
- /// 鍗曟嵁鍙栨秷
+ /// 鍑哄簱鍗曟嵁鍙栨秷
/// </summary>
/// <returns></returns>
public WebResponseContent CancelOut(HouseCancelOut houseCancelOut)
@@ -166,9 +175,9 @@
{
return WebResponseContent.Instance.Error("鏈壘鍒版鍑哄簱鍗曟嵁");
}
- if (oldOutboundOrder.OrderStatus != InboundStatusEnum.鏈紑濮�.ObjToInt())
+ if (oldOutboundOrder.OrderStatus == OutboundStatusEnum.鍑哄簱瀹屾垚.ObjToInt())
{
- return WebResponseContent.Instance.Error("璇ュ叆搴撳崟浠诲姟宸插紑濮嬫墽琛�,涓嶅彲鍙栨秷");
+ return WebResponseContent.Instance.OK();
}
oldOutboundOrder.OrderStatus = InboundStatusEnum.鍙栨秷.ObjToInt();
BaseDal.UpdateData(oldOutboundOrder);
@@ -206,18 +215,6 @@
_outboundOrderDetailService.DeleteData(item);
}
BaseDal.DeleteData(oldOutboundOrder);
-
- //#region 楠岃瘉鏁版嵁
- //(bool, string, object?) result = CheckOutboundOrderAddData(orderAddDTO1);
- //if (!result.Item1) return content = WebResponseContent.Instance.Error(result.Item2);
- //#endregion
-
- //Dt_OutboundOrder inboundOrder = _mapper.Map<Dt_OutboundOrder>(orderAddDTO1);
- //inboundOrder.OrderStatus = InboundStatusEnum.鏈紑濮�.ObjToInt();
- //inboundOrder.OrderType = OutOrderTypeEnum.OutInventory.ObjToInt();
- //inboundOrder.Creater = "WMS";
- //inboundOrder.CreateDate = DateTime.Now;
- //bool a = BaseDal.Db.InsertNav(inboundOrder).Include(x => x.Details).ExecuteCommand();
content = WebResponseContent.Instance.OK();
}
catch (Exception ex)
@@ -258,19 +255,185 @@
return (true, "鎴愬姛", outboundOrderAddDTO);
}
-
- public WebResponseContent ReleaseOutOrder(int orderId)
+ /// <summary>
+ /// 閲嶅啓鍑哄簱鏂板缓椤甸潰
+ /// </summary>
+ /// <param name="orderAddDTO"></param>
+ /// <returns></returns>
+ public WebResponseContent Save(OutboundOrderAddDTO orderAddDTO)
{
- WebResponseContent content = new WebResponseContent();
try
{
+ List<Dt_OutboundOrderDetail> outboundOrderDetails = new List<Dt_OutboundOrderDetail>();
+ Random random = new Random();
+ if (orderAddDTO.Details != null)
+ {
+ foreach (var model in orderAddDTO.Details)
+ {
+ Dt_OutboundOrderDetail outboundOrderDetail = new Dt_OutboundOrderDetail()
+ {
+ MaterielCode = model.MaterielCode,
+ MaterielName = model.MaterielName,
+ OrderQuantity = model.OrderQuantity,
+ BatchNo = model.BatchNo,
+ OrderDetailStatus = InOrderStatusEnum.鏈紑濮�.ObjToInt(),
+ Creater = "WMS",
+ CreateDate = DateTime.Now,
+
+ };
+ outboundOrderDetails.Add(outboundOrderDetail);
+ }
+ }
+ int randomNum2 = random.Next(1, 1000);
+ string datePart2 = DateTime.Now.ToString("yyyyMMdd");
+ Dt_Warehouse warehouse = BaseDal.Db.Queryable<Dt_Warehouse>().Where(x => x.WarehouseId == orderAddDTO.WarehouseId).First();
+ if (warehouse == null)
+ {
+ return WebResponseContent.Instance.Error("璇ヤ粨搴撲俊鎭皻鏈厤缃�");
+ }
+ Dt_OutboundOrder outboundOrder = new Dt_OutboundOrder()
+ {
+ OrderNo = "WMSOUT" + $"{datePart2}{randomNum2}",
+ UpperOrderNo = "WMSOUT" + $"{datePart2}{randomNum2}",
+ OutWareHouse = warehouse.WarehouseCode,
+ OrderType = OrderTypeEnum.鐢熶骇鍑哄簱鍗�.ObjToInt(),
+ InoutType = InoutTypeEnum.OtherOut.ToString(),
+ OrderStatus = InOrderStatusEnum.鏈紑濮�.ObjToInt(),
+ CreateType = OrderCreateTypeEnum.CreateInSystem.ObjToInt(),
+ System = "WMS",
+ Details = outboundOrderDetails,
+ Creater = "WMS",
+ CreateDate = DateTime.Now,
+ };
+ _unitOfWorkManage.BeginTran();
+ Db.InsertNav(outboundOrder).Include(x => x.Details).ExecuteCommand();
+ _unitOfWorkManage.CommitTran();
+ return WebResponseContent.Instance.OK();
}
catch (Exception ex)
{
-
+ _unitOfWorkManage.RollbackTran();
+ return WebResponseContent.Instance.Error(ex.Message);
}
- return content;
+
}
+
+ public WebResponseContent GetCodeByWarehouse(int warehouseId)
+ {
+ try
+ {
+ //鑾峰彇鎵�鏈夊簱瀛樺瀷鍙�
+ List<Dt_StockInfoDetail> StockInfoDetails = _stockService.Db.Queryable<Dt_StockInfo, Dt_StockInfoDetail>((master, detail) => master.Id == detail.StockId)
+ .Where((master, detail) => master.WarehouseId == warehouseId)
+ .Select((master, detail) => detail)
+ .ToList();
+ //杩囨护閲嶅
+ List<string> code = StockInfoDetails.Select(x => x.MaterielCode).Distinct().ToList();
+ return WebResponseContent.Instance.OK("鎴愬姛", data: code);
+ }
+ catch (Exception ex)
+ {
+ return WebResponseContent.Instance.Error(ex.Message);
+ }
+ }
+
+ public WebResponseContent GetVersionByCode(string materielCode, int warehouseId)
+ {
+ try
+ {
+ //鑾峰彇鎸囧畾浜у搧搴撳瓨鐗堟湰
+ List<Dt_StockInfoDetail> StockInfoDetails = _stockService.Db.Queryable<Dt_StockInfo, Dt_StockInfoDetail>((master, detail) => master.Id == detail.StockId)
+ .Where((master, detail) => master.WarehouseId == warehouseId && detail.MaterielCode == materielCode)
+ .Select((master, detail) => detail)
+ .ToList();
+ //杩囨护閲嶅
+ List<string> materielName = StockInfoDetails.Select(x => x.MaterielName).Distinct().ToList();
+ return WebResponseContent.Instance.OK("鎴愬姛", data: materielName);
+ }
+ catch (Exception ex)
+ {
+ return WebResponseContent.Instance.Error(ex.Message);
+ }
+ }
+
+ public WebResponseContent GetLotNoByCode(string materielCode, int warehouseId)
+ {
+ try
+ {
+ List<Dt_StockInfoDetail> StockInfoDetails = _stockService.Db.Queryable<Dt_StockInfo, Dt_StockInfoDetail>((master, detail) => master.Id == detail.StockId)
+ .Where((master, detail) => master.WarehouseId == warehouseId && detail.MaterielCode == materielCode)
+ .Select((master, detail) => detail)
+ .ToList();
+ //杩囨护閲嶅
+ List<string> batchNo = StockInfoDetails.Select(x => x.BatchNo).Distinct().ToList();
+ return WebResponseContent.Instance.OK("鎴愬姛", data: batchNo);
+ }
+ catch (Exception ex)
+ {
+ return WebResponseContent.Instance.Error(ex.Message);
+ }
+ }
+
+ 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 = true,
+ 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;
+ }
+ }
+
}
}
--
Gitblit v1.9.3