From f9d341542aaacdd8595154c2d0bcae89f4865fa7 Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期五, 06 二月 2026 14:33:17 +0800
Subject: [PATCH] 添加HTTP助手、系统配置模型及机器人任务层
---
Code/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockSerivce.cs | 266 +++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 259 insertions(+), 7 deletions(-)
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockSerivce.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockSerivce.cs
index 5747dac..db183dd 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockSerivce.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockSerivce.cs
@@ -1,13 +1,14 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+锘縰sing WIDESEA_Common.StockEnum;
+using WIDESEA_DTO.Stock;
using WIDESEA_IStockService;
+using WIDESEA_Model.Models;
namespace WIDESEA_StockService
{
- public class StockSerivce:IStockService
+ /// <summary>
+ /// 搴撳瓨鏈嶅姟
+ /// </summary>
+ public class StockSerivce : IStockService
{
public IStockInfoDetailService StockInfoDetailService { get; }
@@ -16,6 +17,13 @@
public IStockInfo_HtyService StockInfo_HtyService { get; }
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="stockInfoDetailService">搴撳瓨鏄庣粏鏈嶅姟</param>
+ /// <param name="stockInfoService">搴撳瓨鏈嶅姟</param>
+ /// <param name="stockInfoDetail_HtyService">搴撳瓨鏄庣粏鍘嗗彶鏈嶅姟</param>
+ /// <param name="stockInfo_HtyService">搴撳瓨鍘嗗彶鏈嶅姟</param>
public StockSerivce(IStockInfoDetailService stockInfoDetailService, IStockInfoService stockInfoService, IStockInfoDetail_HtyService stockInfoDetail_HtyService, IStockInfo_HtyService stockInfo_HtyService)
{
StockInfoDetailService = stockInfoDetailService;
@@ -23,5 +31,249 @@
StockInfoDetail_HtyService = stockInfoDetail_HtyService;
StockInfo_HtyService = stockInfo_HtyService;
}
+
+ /// <summary>
+ /// 缁勭洏
+ /// </summary>
+ /// <param name="stock">缁勭洏鏁版嵁</param>
+ /// <returns>鏄惁鎴愬姛</returns>
+ public async Task<bool> GroupPallet(StockDTO stock)
+ {
+ // 缁勮鏄庣粏鏁版嵁
+ var now = DateTime.Now;
+ var details = stock.Details.Select(item => new Dt_StockInfoDetail()
+ {
+ MaterielCode = "鐢佃姱",
+ StockQuantity = item.Quantity,
+ Unit = "PCS",
+ Creater = "system",
+ OrderNo = "111",
+ ProductionDate = now.ToString(),
+ EffectiveDate = now.AddYears(1).ToString(),
+ SerialNumber = item.CellBarcode,
+ InboundOrderRowNo = item.Channel,
+ MaterielName = "鐢佃姱",
+ Status = StockStatusEmun.缁勭洏鏆傚瓨.GetHashCode(),
+ }).ToList();
+
+ // 濡傛灉鎵樼洏宸插瓨鍦紝鐩存帴鏂板鏄庣粏
+ var existingStock = StockInfoService.Repository.QueryFirst(s => s.PalletCode == stock.TargetPalletNo);
+ if (existingStock != null)
+ {
+ details.ForEach(detail => detail.StockId = existingStock.Id);
+ return await StockInfoDetailService.Repository.AddDataAsync(details) > 0;
+ }
+
+ // 鎵樼洏涓嶅瓨鍦ㄥ垯鍒涘缓骞跺啓鍏ユ槑缁�
+ var entity = new Dt_StockInfo()
+ {
+ PalletCode = stock.TargetPalletNo,
+ WarehouseId = 1,
+ StockStatus = 1,
+ Creater = "system",
+ Details = details
+ };
+
+ //Dt_Task dt_Task = new Dt_Task()
+ //{
+ // TaskNum = 0,
+ // PalletCode = stock.PalletNo,
+ // PalletType = 1,
+ // Roadway = "1",
+ // TaskType = TaskTypeEnum.Inbound.GetHashCode(),
+ // TaskStatus = TaskStatusEnum.New.GetHashCode(),
+ // SourceAddress = stock.LineNo,
+ // TargetAddress = "缁勭洏鍖�",
+ // CurrentAddress = stock.LineNo,
+ // NextAddress = "缁勭洏鍖�",
+ // WarehouseId = 1,
+ // Grade = 1,
+ // Creater = "system",
+ //};
+
+ return StockInfoService.Repository.AddData(entity, x => x.Details);
+ }
+
+ /// <summary>
+ /// 鎹㈢洏
+ /// </summary>
+ /// <param name="stock">闇�瑕佹崲鐩樼殑鏄庣粏鏁版嵁</param>
+ /// <returns>鏄惁鎴愬姛</returns>
+ public async Task<bool> ChangePallet(StockDTO stock)
+ {
+ // 鍙傛暟鏍¢獙
+ if (stock == null || string.IsNullOrWhiteSpace(stock.TargetPalletNo) || string.IsNullOrWhiteSpace(stock.SourcePalletNo))
+ {
+ return false;
+ }
+
+ // 鏂版棫鎵樼洏涓�鑷翠笉澶勭悊
+ if (string.Equals(stock.SourcePalletNo, stock.TargetPalletNo, StringComparison.OrdinalIgnoreCase))
+ {
+ return false;
+ }
+
+ // 鏌ヨ婧愭墭鐩�
+ var sourceStock = StockInfoService.Repository.QueryFirst(s => s.PalletCode == stock.SourcePalletNo);
+ if (sourceStock == null)
+ {
+ return false;
+ }
+
+ // 鏌ヨ鎴栧垱寤虹洰鏍囨墭鐩�
+ var targetStock = StockInfoService.Repository.QueryFirst(s => s.PalletCode == stock.TargetPalletNo);
+ if (targetStock == null)
+ {
+ var newStock = new Dt_StockInfo()
+ {
+ PalletCode = stock.TargetPalletNo,
+ WarehouseId = sourceStock.WarehouseId,
+ StockStatus = sourceStock.StockStatus,
+ Creater = "system"
+ };
+
+ var newId = StockInfoService.Repository.AddData(newStock);
+ if (newId <= 0)
+ {
+ return false;
+ }
+
+ targetStock = newStock;
+ targetStock.Id = newId;
+ }
+
+ // 鑾峰彇闇�瑕佽浆绉荤殑鏉$爜
+ var serialNumbers = stock.Details.Select(d => d.CellBarcode).Distinct().ToList();
+ if (!serialNumbers.Any())
+ {
+ return false;
+ }
+
+ // 鏌ヨ婧愭墭鐩樺搴旂殑鏄庣粏
+ var detailEntities = StockInfoDetailService.Repository.QueryData(d => d.StockId == sourceStock.Id && serialNumbers.Contains(d.SerialNumber));
+
+ if (!detailEntities.Any())
+ {
+ return false;
+ }
+
+ // 鍐欏叆鍘嗗彶璁板綍
+ var detailHistory = CreateDetailHistory(detailEntities, "鎹㈢洏");
+ if (await StockInfoDetail_HtyService.Repository.AddDataAsync(detailHistory) <= 0)
+ {
+ return false;
+ }
+
+ var stockHistory = CreateStockHistory(new List<Dt_StockInfo> { sourceStock, targetStock }, "鎹㈢洏");
+ if (await StockInfo_HtyService.Repository.AddDataAsync(stockHistory) <= 0)
+ {
+ return false;
+ }
+
+ // 鏇存柊鏄庣粏鐨勬墭鐩樹富閿�
+ detailEntities.ForEach(detail => detail.StockId = targetStock.Id);
+ return await StockInfoDetailService.Repository.UpdateDataAsync(detailEntities);
+ }
+
+ /// <summary>
+ /// 鎷嗙洏
+ /// </summary>
+ /// <param name="stock">闇�瑕佹媶鐩樼殑鏄庣粏鏁版嵁</param>
+ /// <returns>鏄惁鎴愬姛</returns>
+ public async Task<bool> SplitPallet(StockDTO stock)
+ {
+ // 鍙傛暟鏍¢獙
+ if (stock == null || string.IsNullOrWhiteSpace(stock.SourcePalletNo))
+ {
+ return false;
+ }
+
+ // 鏌ヨ婧愭墭鐩�
+ var sourceStock = StockInfoService.Repository.QueryFirst(s => s.PalletCode == stock.SourcePalletNo);
+ if (sourceStock == null)
+ {
+ return false;
+ }
+
+ // 鑾峰彇闇�瑕佹媶闄ょ殑鏉$爜
+ var serialNumbers = stock.Details.Select(d => d.CellBarcode).Distinct().ToList();
+ if (!serialNumbers.Any())
+ {
+ return false;
+ }
+
+ // 鏌ヨ婧愭墭鐩樺搴旂殑鏄庣粏
+ var detailEntities = StockInfoDetailService.Repository.QueryData(d => d.StockId == sourceStock.Id && serialNumbers.Contains(d.SerialNumber));
+ if (!detailEntities.Any())
+ {
+ return false;
+ }
+
+ // 鍐欏叆鍘嗗彶璁板綍
+ var detailHistory = CreateDetailHistory(detailEntities, "鎷嗙洏");
+ if (await StockInfoDetail_HtyService.Repository.AddDataAsync(detailHistory) <= 0)
+ {
+ return false;
+ }
+
+ var stockHistory = CreateStockHistory(new List<Dt_StockInfo> { sourceStock }, "鎷嗙洏");
+ if (await StockInfo_HtyService.Repository.AddDataAsync(stockHistory) <= 0)
+ {
+ return false;
+ }
+
+ // 鍒犻櫎鏄庣粏
+ return await StockInfoDetailService.Repository.DeleteDataAsync(detailEntities);
+ }
+
+ private List<Dt_StockInfoDetail_Hty> CreateDetailHistory(IEnumerable<Dt_StockInfoDetail> details, string operateType)
+ {
+ var now = DateTime.Now;
+ return details.Select(detail => new Dt_StockInfoDetail_Hty
+ {
+ SourceId = detail.Id,
+ OperateType = operateType,
+ InsertTime = now,
+ StockId = detail.StockId,
+ MaterielCode = detail.MaterielCode,
+ MaterielName = detail.MaterielName,
+ OrderNo = detail.OrderNo,
+ BatchNo = detail.BatchNo,
+ ProductionDate = detail.ProductionDate,
+ EffectiveDate = detail.EffectiveDate,
+ SerialNumber = detail.SerialNumber,
+ StockQuantity = detail.StockQuantity,
+ OutboundQuantity = detail.OutboundQuantity,
+ Status = detail.Status,
+ Unit = detail.Unit,
+ InboundOrderRowNo = detail.InboundOrderRowNo,
+ Remark = detail.Remark,
+ Creater = detail.Creater,
+ CreateDate = detail.CreateDate,
+ Modifier = detail.Modifier,
+ ModifyDate = detail.ModifyDate
+ }).ToList();
+ }
+
+ private List<Dt_StockInfo_Hty> CreateStockHistory(IEnumerable<Dt_StockInfo> stocks, string operateType)
+ {
+ var now = DateTime.Now;
+ return stocks.Select(stock => new Dt_StockInfo_Hty
+ {
+ SourceId = stock.Id,
+ OperateType = operateType,
+ InsertTime = now,
+ PalletCode = stock.PalletCode,
+ PalletType = stock.PalletType,
+ LocationCode = stock.LocationCode,
+ WarehouseId = stock.WarehouseId,
+ StockStatus = stock.StockStatus,
+ Remark = stock.Remark,
+ Creater = stock.Creater,
+ CreateDate = stock.CreateDate,
+ Modifier = stock.Modifier,
+ ModifyDate = stock.ModifyDate
+ }).ToList();
+ }
}
-}
+}
\ No newline at end of file
--
Gitblit v1.9.3