From 4fae819b7e89a751699b44474f4dedca5bcecc6a Mon Sep 17 00:00:00 2001
From: kyy <3283105747@qq.com>
Date: 星期三, 08 十月 2025 10:33:40 +0800
Subject: [PATCH] 1、采购验退
---
Dto/service/WarehouseQuery.cs | 7 +
entity/Base/ItemInBaseModel.cs | 8 +
service/Warehouse/MesInvItemInCDetailsManager.cs | 242 ++++++++++++++++++++++++++++++++++++++++
Controllers/Warehouse/MesInvItemInCDetailsController.cs | 49 ++++++++
4 files changed, 305 insertions(+), 1 deletions(-)
diff --git a/Controllers/Warehouse/MesInvItemInCDetailsController.cs b/Controllers/Warehouse/MesInvItemInCDetailsController.cs
index 026df77..d06388c 100644
--- a/Controllers/Warehouse/MesInvItemInCDetailsController.cs
+++ b/Controllers/Warehouse/MesInvItemInCDetailsController.cs
@@ -287,4 +287,53 @@
return ResponseResult.ResponseError(ex);
}
}
+
+ /// <summary>
+ /// 楠岄��鎵爜
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost("GetReturnBarcodeInfo")]
+ public ResponseResult GetReturnBarcodeInfo(WarehouseQuery entity)
+ {
+ try
+ {
+ dynamic resultInfos = new ExpandoObject();
+ resultInfos.tbBillList = m.GetReturnBarcodeInfo(entity);
+ return new ResponseResult
+ {
+ status = 0,
+ message = resultInfos.tbBillList.Message,
+ data = resultInfos
+ };
+ }
+ catch (Exception ex)
+ {
+ return ResponseResult.ResponseError(ex);
+ }
+ }
+
+ /// <summary>
+ /// 楠岄��
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost("ConfirmReturn")]
+ public ResponseResult ConfirmReturn(WarehouseQuery entity)
+ {
+ try
+ {
+ dynamic resultInfos = new ExpandoObject();
+ resultInfos.tbBillList = m.ConfirmReturn(entity);
+ return new ResponseResult
+ {
+ status = 0,
+ message = resultInfos.tbBillList.Message,
+ data = resultInfos
+ };
+ }
+ catch (Exception ex)
+ {
+ return ResponseResult.ResponseError(ex);
+ }
+ }
+
}
\ No newline at end of file
diff --git a/Dto/service/WarehouseQuery.cs b/Dto/service/WarehouseQuery.cs
index ac13440..9312733 100644
--- a/Dto/service/WarehouseQuery.cs
+++ b/Dto/service/WarehouseQuery.cs
@@ -15,6 +15,11 @@
public DateTime? date { get; set; }
public string? Type { get; set; }
+ //楠岄��鏉$爜銆佹暟閲�
+ public string? returnBarcode { get; set; }
+ public decimal? returnQuantity { get; set; }
+
+
//搴撲綅缂栫爜
public string? DepotCode { get; set; }
@@ -35,4 +40,6 @@
public string? itemNo { get; set; }
public string? message { get; set; }
+
+
}
\ No newline at end of file
diff --git a/entity/Base/ItemInBaseModel.cs b/entity/Base/ItemInBaseModel.cs
index dc6418e..d7f5548 100644
--- a/entity/Base/ItemInBaseModel.cs
+++ b/entity/Base/ItemInBaseModel.cs
@@ -5,12 +5,16 @@
//璋冩嫧鍑哄叆搴撳崟閫氱敤绫�
public class ItemInBaseModel
{
+
+
//鐗╂枡淇℃伅
public MesItems itemDetail { get; set; }
- //鏉$爜鏄庣粏
+ //鍏ュ簱鏉$爜鏄庣粏
public List<dynamic>? ItemBarCDetails { get; set; }
//鐗╂枡姹囨�绘槑缁�
public List<dynamic>? ItemInDetails { get; set; }
+ public MesInvItemBarcodes itemBarcodeDetails { get; set; }
+
//鍑�/鍏ュ簱鍗曚俊鎭�
public List<dynamic>? MesInvItem { get; set; }
@@ -19,4 +23,6 @@
//鍏ュ簱鎬绘暟
public decimal? SumQuantity { get; set; }
+
+
}
\ No newline at end of file
diff --git a/service/Warehouse/MesInvItemInCDetailsManager.cs b/service/Warehouse/MesInvItemInCDetailsManager.cs
index 8dfc5d4..c8271a1 100644
--- a/service/Warehouse/MesInvItemInCDetailsManager.cs
+++ b/service/Warehouse/MesInvItemInCDetailsManager.cs
@@ -7,6 +7,9 @@
using NewPdaSqlServer.util;
using Newtonsoft.Json;
using SqlSugar;
+using System;
+using System.Data;
+using System.Data.SqlClient;
using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
namespace NewPdaSqlServer.service.Warehouse;
@@ -1140,4 +1143,243 @@
return encodedUrl;
}
+
+ // 楠岄��鎵爜
+ public ItemInBaseModel GetReturnBarcodeInfo(WarehouseQuery entity)
+ {
+ ItemInBaseModel res = new ItemInBaseModel();
+
+ // 鍙傛暟楠岃瘉
+ if (string.IsNullOrEmpty(entity.userName)) throw new ArgumentNullException(nameof(entity.userName), "鐢ㄦ埛鍚嶄笉鍏佽涓虹┖");
+ if (string.IsNullOrEmpty(entity.sectionCode)) throw new ArgumentNullException(nameof(entity.sectionCode), "搴撲綅缂栧彿涓嶅厑璁镐负绌�");
+ if (string.IsNullOrEmpty(entity.returnBarcode)) throw new ArgumentNullException(nameof(entity.returnBarcode), "鏉$爜涓嶅厑璁镐负绌�");
+
+ try
+ {
+ // 妫�鏌ユ潯鐮佹槸鍚﹀凡鍏ュ簱
+ var isInStock = Db.Queryable<MesInvItemInCDetails>()
+ .Where(it => it.ItemBarcode == entity.returnBarcode)
+ .Any();
+
+ if (isInStock)
+ throw new Exception($"璇ユ潯鐮佺墿鏂橻{entity.returnBarcode}]宸插叆搴擄紝涓嶈兘鍐嶆鎵弿锛�");
+
+ // 妫�鏌ユ潯鐮佹槸鍚﹀凡鎵弿楠岄��
+ var sqlParams = new List<SugarParameter> { new("@barcode", entity.returnBarcode) };
+ var isReturnScanned = Db.Ado.SqlQuery<dynamic>(
+ "SELECT 1 FROM MES_INV_ITEM_CGYT_C_DETAILS WHERE ITEM_BARCODE = @barcode",
+ sqlParams);
+
+
+ if (isReturnScanned.Count > 0)
+ throw new Exception($"璇ユ潯鐮佺墿鏂橻{entity.returnBarcode}]宸叉壂鎻忛獙閫�锛岃鏍稿锛�");
+ // 浣跨敤鍙傛暟鍖栨煡璇㈠苟蹇界暐澶у皬鍐欙紙閫傜敤浜庢敮鎸佺殑鏁版嵁搴擄級
+ var itemBarcode = Db.Queryable<MesInvItemBarcodes>()
+ .Where(it => it.ItemBarcode.Trim().ToLower() == entity.returnBarcode.Trim().ToLower())
+ .First() ?? throw new InvalidOperationException($"鏈壘鍒版潯鐮� '{entity.returnBarcode}' 鐨勫尮閰嶄俊鎭�");
+
+ // 灏嗘煡璇㈠埌鐨勬潯鐮佷俊鎭祴鍊肩粰杩斿洖妯″瀷
+ res.itemBarcodeDetails = itemBarcode;
+
+
+ res.Message = "鏌ヨ鎴愬姛";
+
+
+ return res;
+ }
+ catch (Exception ex)
+ {
+ // 璁板綍寮傚父鏃ュ織锛堝缓璁ˉ鍏呭叿浣撴棩蹇楄褰曚唬鐮侊級
+ res.Message = $"鎿嶄綔澶辫触: {ex.Message}";
+ res.SumQuantity = -1;
+ return res;
+ }
+ }
+
+ // 楠岄��
+ public ItemInBaseModel ConfirmReturn(WarehouseQuery entity)
+ {
+ ItemInBaseModel res = new ItemInBaseModel();
+
+ // 鍙傛暟楠岃瘉
+ if (string.IsNullOrEmpty(entity.userName)) throw new ArgumentNullException(nameof(entity.userName), "鐢ㄦ埛鍚嶄笉鍏佽涓虹┖");
+ if (string.IsNullOrEmpty(entity.sectionCode)) throw new ArgumentNullException(nameof(entity.sectionCode), "搴撲綅缂栧彿涓嶅厑璁镐负绌�");
+ if (string.IsNullOrEmpty(entity.returnBarcode)) throw new ArgumentNullException(nameof(entity.returnBarcode), "鏉$爜涓嶅厑璁镐负绌�");
+ if (entity.returnQuantity <= 0) throw new ArgumentException("楠岄��鏁伴噺蹇呴』澶т簬0", nameof(entity.returnQuantity));
+
+ try
+ {
+ // 妫�鏌ユ潯鐮佹槸鍚﹀凡鍏ュ簱
+ var isInStock = Db.Queryable<MesInvItemInCDetails>()
+ .Where(it => it.ItemBarcode == entity.returnBarcode)
+ .Any();
+
+ if (isInStock)
+ throw new Exception($"璇ユ潯鐮佺墿鏂橻{entity.returnBarcode}]宸插叆搴擄紝涓嶈兘鍐嶆鎵弿锛�");
+
+ // 妫�鏌ユ潯鐮佹槸鍚﹀凡鎵弿楠岄��
+ var sqlParams = new List<SugarParameter> { new("@barcode", entity.returnBarcode) };
+ var isReturnScanned = Db.Ado.SqlQuery<dynamic>(
+ "SELECT 1 FROM MES_INV_ITEM_CGYT_C_DETAILS WHERE ITEM_BARCODE = @barcode",
+ sqlParams);
+
+
+ // 璋冪敤瀛樺偍杩囩▼ prc_pda_bar_cf_before
+ string strMsg = "";
+ string intSum = "";
+ string cfBar = "";
+
+ using (var conn = new SqlConnection(DbHelperSQL.strConn))
+ {
+ using (var cmd = new SqlCommand("[prc_pda_bar_cf_before]", conn))
+ {
+ conn.Open();
+ cmd.CommandType = CommandType.StoredProcedure;
+ SqlParameter[] parameters =
+ {
+ new("@outMsg", SqlDbType.NVarChar, 300),
+ new("@outSum", SqlDbType.NVarChar, 300),
+ new("@barcode_new", SqlDbType.NVarChar, 300),
+ new("@c_user", entity.userName),
+ new("@p_old_barcode", entity.returnBarcode),
+ new("@p_qty", entity.returnQuantity),
+ };
+ parameters[0].Direction = ParameterDirection.Output;
+ parameters[1].Direction = ParameterDirection.Output;
+ parameters[2].Direction = ParameterDirection.Output;
+
+ foreach (var parameter in parameters)
+ cmd.Parameters.Add(parameter);
+ cmd.ExecuteNonQuery();
+ strMsg = parameters[0].Value.ToString();
+ intSum = parameters[1].Value.ToString();
+ cfBar = parameters[2].Value.ToString();
+
+ var result = Convert.ToInt32(intSum);
+ if (result <= 0) throw new Exception(strMsg);
+ }
+ }
+
+ // 璋冪敤楠岄��瀛樺偍杩囩▼ prc_pda_scan_CGYT锛屼娇鐢ㄦ媶鍒嗗悗鐨勬柊鏉$爜
+ string ytMsg = "";
+ string ytSum = "";
+ string ytdh = "";
+
+ using (var conn = new SqlConnection(DbHelperSQL.strConn))
+ {
+ using (var cmd = new SqlCommand("prc_pda_scan_CGYT", conn))
+ {
+ conn.Open();
+ cmd.CommandType = CommandType.StoredProcedure;
+ SqlParameter[] ytParameters =
+ {
+ new("@pi_user", SqlDbType.NVarChar, 100) { Value = entity.userName },
+ new("@pi_barcode", SqlDbType.NVarChar, 100) { Value = cfBar }, // 浣跨敤鎷嗗垎鍚庣殑鏂版潯鐮�
+ new("@po_outMsg", SqlDbType.NVarChar, 2000) { Direction = ParameterDirection.Output },
+ new("@po_outSum", SqlDbType.Int) { Direction = ParameterDirection.Output },
+ new("@po_ygdh", SqlDbType.NVarChar, 200) { Direction = ParameterDirection.Output }
+ };
+
+ cmd.Parameters.AddRange(ytParameters);
+ cmd.ExecuteNonQuery();
+
+ ytMsg = ytParameters[2].Value.ToString();
+ ytSum = ytParameters[3].Value.ToString();
+ ytdh = ytParameters[4].Value.ToString();
+
+ if (ytSum == "-1") throw new Exception(ytMsg);
+ }
+ }
+
+ // 璋冪敤鍏ュ簱瀛樺偍杩囩▼ prc_pda_inv_cgrk锛屼娇鐢ㄥ師濮嬫潯鐮�
+ string rkMsg = "";
+ string rkSum = "";
+
+ using (var conn = new SqlConnection(DbHelperSQL.strConn))
+ {
+ using (var cmd = new SqlCommand("prc_pda_inv_cgrk", conn))
+ {
+ conn.Open();
+ cmd.CommandType = CommandType.StoredProcedure;
+ SqlParameter[] rkParameters =
+ {
+ new("@pi_user", SqlDbType.NVarChar, 100) { Value = entity.userName },
+ new("@pi_barcode", SqlDbType.NVarChar, 100) { Value = entity.returnBarcode }, // 浣跨敤鍘熷鏉$爜
+ new("@pi_sectionCode", SqlDbType.NVarChar, 100) { Value = entity.sectionCode },
+ new("@po_outMsg", SqlDbType.NVarChar, 2000) { Direction = ParameterDirection.Output },
+ new("@po_outSum", SqlDbType.Int) { Direction = ParameterDirection.Output }
+ };
+
+ cmd.Parameters.AddRange(rkParameters);
+ cmd.ExecuteNonQuery();
+
+ rkMsg = rkParameters[3].Value.ToString();
+ rkSum = rkParameters[4].Value.ToString();
+
+ if (rkSum == "-1") throw new Exception(rkMsg);
+ }
+ }
+
+ // 浣跨敤鍙傛暟鍖栨煡璇㈠苟蹇界暐澶у皬鍐欙紙閫傜敤浜庢敮鎸佺殑鏁版嵁搴擄級
+ var itemBarcode = Db.Queryable<MesInvItemBarcodes>()
+ .Where(it => it.ItemBarcode.Trim().ToLower() == entity.returnBarcode.Trim().ToLower())
+ .First() ?? throw new InvalidOperationException($"鏈壘鍒版潯鐮� '{entity.returnBarcode}' 鐨勫尮閰嶄俊鎭�");
+
+ // 灏嗘煡璇㈠埌鐨勬潯鐮佷俊鎭祴鍊肩粰杩斿洖妯″瀷
+ res.itemBarcodeDetails = itemBarcode;
+
+ // 浼樺寲鏌ヨ锛堝幓闄ょ┖鏍煎苟蹇界暐澶у皬鍐欙級
+ var mesInvItemInCDetails = Db.Queryable<MesInvItemInCDetails>()
+ .Where(it => it.ItemBarcode.Trim().ToLower() == entity.returnBarcode.Trim().ToLower())
+ .First() ?? throw new InvalidOperationException($"鏈壘鍒版潯鐮� '{entity.returnBarcode}' 鐨勫尮閰嶇殑鍏ュ簱淇℃伅");
+
+ // 浠庡叆搴撴潯鐮佷腑鑾峰彇鏈夋晥鐨処temInId
+ var cId = mesInvItemInCDetails.ItemInId; // 鍋囪瀛樺湪ItemInId灞炴��
+
+ // 鏌ヨ鐗╂枡姹囨�绘槑缁嗭紙浣跨敤鍙傛暟鍖栨煡璇㈤槻姝QL娉ㄥ叆锛�
+ var sql = @"
+ SELECT
+ b.Item_No AS ItemNo,
+ b.Item_Name AS ItemName,
+ b.Item_Model AS ItemModel,
+ a.Quantity AS FQty,
+ b.Item_Id AS FMaterialId,
+ CONVERT(VARCHAR(36), b.Guid) AS Id
+ FROM MES_INV_ITEM_IN_C_ITEMS a
+ LEFT JOIN Mes_Items b ON a.Item_Id = b.Item_Id
+ WHERE a.Item_In_Id = @cId AND a.Item_Id = @itemId";
+
+ res.ItemInDetails = Db.Ado.SqlQuery<dynamic>(sql, new { cId, itemId = itemBarcode.ItemId });
+
+ // 鏌ヨ鍏ュ簱鏉$爜鏄庣粏锛堜娇鐢ㄥ弬鏁板寲鏌ヨ闃叉SQL娉ㄥ叆锛�
+ var sql2 = @"
+ SELECT
+ b.Item_No AS ItemNo,
+ b.Item_Name AS ItemName,
+ b.Item_Model AS ItemModel,
+ a.Quantity AS FQty,
+ b.Item_Id AS FMaterialId,
+ CONVERT(VARCHAR(36), a.Guid) AS Id,
+ a.Depot_Section_Code AS kw,
+ a.Item_Barcode AS barcode
+ FROM Mes_Inv_Item_In_C_Details a
+ LEFT JOIN Mes_Items b ON a.Item_Id = b.Item_Id
+ WHERE a.Item_In_Id = @cId AND a.Item_Id = @itemId";
+
+ res.ItemBarCDetails = Db.Ado.SqlQuery<dynamic>(sql2, new { cId, itemId = itemBarcode.ItemId });
+
+ res.Message = $"楠岄��鎿嶄綔鎴愬姛锛屾媶鍒嗗悗鏉$爜锛歿cfBar}锛岄獙閫�鍗曞彿锛歿ytdh}";
+ res.SumQuantity = res.ItemBarCDetails?.Count ?? 0;
+
+ return res;
+ }
+ catch (Exception ex)
+ {
+ // 璁板綍寮傚父鏃ュ織锛堝缓璁ˉ鍏呭叿浣撴棩蹇楄褰曚唬鐮侊級
+ res.Message = $"鎿嶄綔澶辫触: {ex.Message}";
+ res.SumQuantity = -1;
+ return res;
+ }
+ }
+
}
\ No newline at end of file
--
Gitblit v1.9.3