From 649d43f137a09af185d2440e5a2abb4cdd0823de Mon Sep 17 00:00:00 2001
From: 快乐的昕的电脑 <快乐的昕的电脑@DESKTOP-C2BQPQU>
Date: 星期四, 25 九月 2025 14:53:46 +0800
Subject: [PATCH] 1.调拨出库:列表选择改为存储过程、添加组织隔离、添加库位列表
---
service/Warehouse/TransferOutManager.cs | 144 ++++++++++++++++++++---------------------------
Controllers/Warehouse/TransferOutController.cs | 13 ++--
2 files changed, 69 insertions(+), 88 deletions(-)
diff --git a/Controllers/Warehouse/TransferOutController.cs b/Controllers/Warehouse/TransferOutController.cs
index e4a02de..fdd53dd 100644
--- a/Controllers/Warehouse/TransferOutController.cs
+++ b/Controllers/Warehouse/TransferOutController.cs
@@ -1,9 +1,10 @@
-锘縰sing System.Dynamic;
-using Microsoft.AspNetCore.Mvc;
+锘縰sing Microsoft.AspNetCore.Mvc;
using NewPdaSqlServer.Dto.service;
using NewPdaSqlServer.service.@base;
using NewPdaSqlServer.service.Warehouse;
using NewPdaSqlServer.util;
+using System.Dynamic;
+using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
namespace NewPdaSqlServer.Controllers.Warehouse;
@@ -12,7 +13,7 @@
/// </summary>
[Route("api/[controller]")]
[ApiController]
-public class TransferOutController : ControllerBase
+public class TransferOutController : BaseController
{
private readonly TransferOutManager _manager = new();
@@ -109,12 +110,12 @@
/// <response code="200">鎴愬姛鑾峰彇璋冩嫧鍑哄簱鍗曞彿鍒楄〃</response>
/// <response code="400">鑾峰彇澶辫触</response>
[HttpPost("GetTransferOutNoList")]
- public ResponseResult GetTransferOutNoList()
+ public ResponseResult GetTransferOutNoList(WarehouseQuery query)
{
try
{
dynamic resultInfos = new ExpandoObject();
- resultInfos.tbBillList = _manager.GetTransferOutNoList();
+ resultInfos.tbBillList = _manager.GetTransferOutNoList(query,RequestInfo);
return new ResponseResult
{
status = 0,
@@ -155,7 +156,7 @@
{
dynamic resultInfos = new ExpandoObject();
resultInfos.tbBillList =
- _manager.GetTransferOutDetailListByBillNo(query);
+ _manager.GetTransferOutDetailListByBillNo(query,RequestInfo);
return new ResponseResult
{
status = 0,
diff --git a/service/Warehouse/TransferOutManager.cs b/service/Warehouse/TransferOutManager.cs
index 34119aa..5420cba 100644
--- a/service/Warehouse/TransferOutManager.cs
+++ b/service/Warehouse/TransferOutManager.cs
@@ -19,34 +19,33 @@
/// 鑾峰彇鏈畬鎴愮殑璋冩嫧鍑哄簱鍗曞彿鍒楄〃
/// </summary>
/// <returns>鏈畬鎴愮殑璋冩嫧鍑哄簱鍗曞彿鍒楄〃</returns>
- public List<string> GetTransferOutNoList()
+ public List<string> GetTransferOutNoList(WarehouseQuery query, dynamic RequestInfo)
{
- // 鍏堜粠鏁版嵁搴撹幏鍙朤ransfer_Out_ETAIL琛ㄧ殑鏁版嵁
- var transferOutDetails = Db.Queryable<MesDbckDetail>().ToList();
+ var orgId = RequestInfo.OrgId;
- // 浣跨敤LINQ瀵硅幏鍙栫殑鏁版嵁杩涜鍒嗙粍鍜岀瓫閫�
- // 绛涢�夋潯浠�:鐢宠鏁伴噺(sq)涓嶇瓑浜庡凡鎵暟閲�(ys)鐨勮褰�
- var result = transferOutDetails
- .GroupBy(x => x.Pid)
- .Select(g => new
- {
- pid = g.Key,
- sq = g.Sum(x => x.FQty), // 鐢宠鏁伴噺鍚堣
- ys = g.Sum(x => x.SQty), // 璋冨嚭宸叉壂鏁伴噺鍚堣
- rs = g.Sum(x => x.RQty), // 璋冨叆宸叉壂鏁伴噺鍚堣
- })
- .Where(x => !((x.sq ?? 0) == (x.ys ?? 0) && (x.sq ?? 0) == (x.rs ?? 0)))
- .Select(x => x.pid)
- .ToList();
+ if (orgId == null)
+ throw new Exception("缁勭粐涓嶅瓨鍦紒");
- // 鏍规嵁pid鏌ヨ瀵瑰簲鐨勫嚭搴撳崟鍙�
- var billNos = Db.Queryable<MesDbck>()
- .Where(x => result.Contains(x.Id) && x.FApproveStatus == 1)
- .OrderBy(x => x.FCreateDate)
- .Select(x => x.FBillNo)
- .ToList();
-
- return billNos;
+ // 鑾峰彇鏈畬鎴愮殑閫�鏂欏崟鍙峰垪琛�
+ var parameters = new[]
+ {
+ new SugarParameter("@pi_orgId", orgId),
+ new SugarParameter("@inP1", null),
+ new SugarParameter("@inP2", null),
+ new SugarParameter("@inP3", null),
+ new SugarParameter("@inP4", null)
+ };
+ try
+ {
+ // 杩斿洖鍗曞彿瀛楃涓插垪琛℅et_Qt_ck_List
+ var list = Db.Ado.SqlQuery<string>(
+ "EXEC prc_pda_dbck_list @pi_orgId,@inP1,@inP2,@inP3,@inP4", parameters);
+ return list;
+ }
+ catch (Exception ex)
+ {
+ throw new Exception($"{ex.Message}");
+ }
}
/// <summary>
@@ -54,71 +53,52 @@
/// </summary>
/// <param name="query">鏌ヨ鍙傛暟,鍖呭惈鍗曟嵁鍙�</param>
/// <returns>寰呭鐞嗙殑璋冩嫧鍑哄簱鏄庣粏鍒楄〃</returns>
- public ProductionPickDto GetTransferOutDetailListByBillNo(
- WarehouseQuery query)
+ public dynamic GetTransferOutDetailListByBillNo(WarehouseQuery query, dynamic RequestInfo)
{
- if (string.IsNullOrEmpty(query.billNo)) throw new Exception("璋冩嫧鍗曞彿涓虹┖");
+ if (string.IsNullOrEmpty(query.billNo))
+ throw new Exception("璇烽�夊崟鎹彿锛�");
- var sql1 = string.Format(@"SELECT * FROM MES_DBCK WHERE FDocumentStatus = 'C' AND FBillNo = '{0}'", query.billNo);
+ if (query == null)
+ throw new ArgumentNullException(nameof(query), "鍙傛暟瀵硅薄涓嶈兘涓簄ull");
- var dbck = Db.Ado.SqlQuery<ItemDetailModel>(sql1);
+ if (string.IsNullOrEmpty(query.billNo?.ToString()))
+ throw new ArgumentException("鍗曟嵁鍙蜂笉鑳戒负绌�", nameof(query.billNo));
- if (dbck.Count < 1) throw new Exception("璋冩嫧鍗曞彿涓嶅瓨鍦ㄦ垨鏈鏍革紒");
+ var orgId = RequestInfo.OrgId;
- var sql2 = string.Format(@"SELECT c.item_no ItemNo,c.item_name ItemName,c.item_model ItemModel,b.FQty FQty,b.SQty SQty,b.FQty - b.SQty DSQty ,
- dbo.F_QX_GETRECODEPOTSE(B.FMATERIALID,'','','') as RecoKw
- FROM MES_DBCK_DETAIL B
- LEFT JOIN MES_DBCK A ON A.ID = B.pid
- LEFT JOIN MES_ITEMS C ON B.FMATERIALID = C.item_id
- LEFT JOIN WOMCAB D ON B.erpid = D.ERPID
- WHERE A.FBillNo = '{0}' ORDER BY FSEQ", query.billNo);
+ if (orgId == null)
+ throw new Exception("缁勭粐涓嶅瓨鍦紒");
- var womdabs = Db.Ado.SqlQuery<ItemDetailModel>(sql2);
-
-
- var DS_list = womdabs.Where(s => s.DSQty > 0).ToList();
-
- var YS_list = womdabs.Where(s => s.SQty > 0).ToList();
-
- //var p_bill_no = query.billNo;
-
- //// 鏍规嵁SQL鏌ヨ鏉′欢鑾峰彇寰呭鐞嗙殑鍑哄簱鏄庣粏
- //// 鍏宠仈鏌ヨTransferOutDetail銆乀ransferOut鍜孧esItems涓夊紶琛�
- //// 绛涢�夋潯浠�:鏈畬鎴愭暟閲忓ぇ浜�0涓斿崟鎹凡瀹℃牳
- //var result = Db.Queryable<MesDbckDetail, MesDbck, MesItems>(
- // (b, a, s) => new JoinQueryInfos(
- // JoinType.Left, b.Pid == a.Id,
- // JoinType.Left, b.FMaterialId == s.Id.ToString()))
- // .Where((b, a, s) =>
- // !((b.FQty ?? 0) == (b.SQty ?? 0) && (b.FQty ?? 0) == (b.RQty ?? 0))
- // && a.FBillNo == p_bill_no // 鍖归厤鍗曟嵁鍙�
- // && a.FApproveStatus == 1) // 鍗曟嵁宸插鏍�
- // .OrderBy((b, a, s) => s.ItemNo)
- // .Select((b, a, s) => new ItemDetailModel
- // {
- // ItemNo = s.ItemNo,
- // ItemName = s.ItemName,
- // ItemModel = s.ItemModel,
- // FQty = b.FQty, // 鐢宠鏁伴噺
- // SQty = b.SQty, // 宸叉壂鏁伴噺
- // RQty = b.RQty, // 宸叉壂鏁伴噺
- // // 淇濈暀鍏朵粬蹇呰瀛楁...
- // Pid = b.Pid.ToString(),
- // FMaterialId = b.FMaterialId,
- // Id = b.Id.ToString()
- // })
- // .ToList();
-
- //if(result.Count < 1) throw new Exception("璇ヨ皟鎷ㄥ崟涓嶅瓨鍦ㄦ垨宸叉壂瀹岋紝璇烽噸鏂版壂鎻�");
-
- var dto = new ProductionPickDto
+ // 鑾峰彇鏈畬鎴愮殑鍙戣揣閫氱煡鍗曟槑缁�
+ var parameters = new[]
+{
+ new SugarParameter("@billNo", query.billNo),
+ new SugarParameter("@pi_orgId",orgId),
+ new SugarParameter("@inP1", null),
+ new SugarParameter("@inP2", null),
+ new SugarParameter("@inP3", null),
+ new SugarParameter("@inP4", null)
+ };
+ try
{
- items = DS_list,
- Ysitems = YS_list
- // yisao = mesInvItemOutCDetailsList
- };
+ List<dynamic>? blDetails = Db.Ado.SqlQuery<dynamic>(
+ "EXEC prc_pda_dbck_detailList @billNo,@pi_orgId,@inP1,@inP2,@inP3,@inP4", parameters);
+ var items = blDetails.Where(x => x.DSQty > 0).ToList(); // 寰呮壂鐗╂枡
+ var ysitems = blDetails.Where(x => x.SQty > 0).ToList(); // 宸叉壂鐗╂枡
- return dto;
+ return new
+ {
+ //tbBillList = result,
+ blDetails = blDetails.Where(x => x.DSQty > 0).ToList(),
+ ysDetails = blDetails.Where(x => x.SQty > 0).ToList(),
+ Count = items.Count + ysitems.Count
+ };
+ }
+ catch (Exception ex)
+ {
+ // 淇濈暀鍘熸湁寮傚父澶勭悊閫昏緫
+ throw new Exception($"{ex.Message}");
+ }
}
--
Gitblit v1.9.3