From 8add357b725e95202edd5ef9809afd44518c2c82 Mon Sep 17 00:00:00 2001
From: 南骏 池 <chiffly@163.com>
Date: 星期五, 25 七月 2025 13:24:31 +0800
Subject: [PATCH] Merge branch 'master' of http://git.gs-mes.com:8080/r/~tjx/NewPdaSqlServer
---
service/Warehouse/TransferOutManager.cs | 236 ++++++++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 211 insertions(+), 25 deletions(-)
diff --git a/service/Warehouse/TransferOutManager.cs b/service/Warehouse/TransferOutManager.cs
index 1314b8c..06d5955 100644
--- a/service/Warehouse/TransferOutManager.cs
+++ b/service/Warehouse/TransferOutManager.cs
@@ -1,8 +1,10 @@
锘縰sing System.Data;
using System.Data.SqlClient;
+using MES.Service.Modes;
using NewPdaSqlServer.DB;
using NewPdaSqlServer.Dto.service;
using NewPdaSqlServer.entity;
+using NewPdaSqlServer.entity.Base;
using SqlSugar;
namespace NewPdaSqlServer.service.Warehouse;
@@ -11,7 +13,7 @@
/// 璋冩嫧鍑哄叆搴撶鐞嗙被
/// 璐熻矗澶勭悊璋冩嫧鍑哄簱鐩稿叧鐨勪笟鍔¢�昏緫
/// </summary>
-public class TransferOutManager : Repository<TransferOut>
+public class TransferOutManager : Repository<MesDbck>
{
/// <summary>
/// 鑾峰彇鏈畬鎴愮殑璋冩嫧鍑哄簱鍗曞彿鍒楄〃
@@ -20,7 +22,7 @@
public List<string> GetTransferOutNoList()
{
// 鍏堜粠鏁版嵁搴撹幏鍙朤ransfer_Out_ETAIL琛ㄧ殑鏁版嵁
- var transferOutDetails = Db.Queryable<TransferOutDetail>().ToList();
+ var transferOutDetails = Db.Queryable<MesDbckDetail>().ToList();
// 浣跨敤LINQ瀵硅幏鍙栫殑鏁版嵁杩涜鍒嗙粍鍜岀瓫閫�
// 绛涢�夋潯浠�:鐢宠鏁伴噺(sq)涓嶇瓑浜庡凡鎵暟閲�(ys)鐨勮褰�
@@ -29,17 +31,18 @@
.Select(g => new
{
pid = g.Key,
- sq = g.Sum(x => x.ShNum), // 鐢宠鏁伴噺鍚堣
- ys = g.Sum(x => x.YsNum) // 宸叉壂鏁伴噺鍚堣
+ 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))
+ .Where(x => !((x.sq ?? 0) == (x.ys ?? 0) && (x.sq ?? 0) == (x.rs ?? 0)))
.Select(x => x.pid)
.ToList();
// 鏍规嵁pid鏌ヨ瀵瑰簲鐨勫嚭搴撳崟鍙�
- var billNos = Db.Queryable<TransferOut>()
- .Where(x => result.Contains(x.Guid))
- .Select(x => x.BillNo)
+ var billNos = Db.Queryable<MesDbck>()
+ .Where(x => result.Contains(x.Id) && x.FApproveStatus == 1)
+ .Select(x => x.FBillNo)
.ToList();
return billNos;
@@ -50,7 +53,7 @@
/// </summary>
/// <param name="query">鏌ヨ鍙傛暟,鍖呭惈鍗曟嵁鍙�</param>
/// <returns>寰呭鐞嗙殑璋冩嫧鍑哄簱鏄庣粏鍒楄〃</returns>
- public List<TransferOutDetail> GetTransferOutDetailListByBillNo(
+ public List<ItemDetailModel> GetTransferOutDetailListByBillNo(
WarehouseQuery query)
{
var p_bill_no = query.billNo;
@@ -58,25 +61,64 @@
// 鏍规嵁SQL鏌ヨ鏉′欢鑾峰彇寰呭鐞嗙殑鍑哄簱鏄庣粏
// 鍏宠仈鏌ヨTransferOutDetail銆乀ransferOut鍜孧esItems涓夊紶琛�
// 绛涢�夋潯浠�:鏈畬鎴愭暟閲忓ぇ浜�0涓斿崟鎹凡瀹℃牳
- var result = Db.Queryable<TransferOutDetail, TransferOut, MesItems>(
+ var result = Db.Queryable<MesDbckDetail, MesDbck, MesItems>(
(b, a, s) => new JoinQueryInfos(
- JoinType.Left, b.Pid == a.Guid,
- JoinType.Left, b.ItemId == s.Id))
+ JoinType.Left, b.Pid == a.Id,
+ JoinType.Left, b.FMaterialId == s.Id.ToString()))
.Where((b, a, s) =>
- (b.ShNum ?? 0) - (b.YsNum ?? 0) > 0 // 鏈畬鎴愭暟閲忓ぇ浜�0
- && a.BillNo == p_bill_no // 鍖归厤鍗曟嵁鍙�
- && a.Status == 1) // 鍗曟嵁宸插鏍�
+ !((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 TransferOutDetail
+ .Select((b, a, s) => new ItemDetailModel
{
ItemNo = s.ItemNo,
+ ItemName = s.ItemName,
ItemModel = s.ItemModel,
- ShNum = b.ShNum, // 鐢宠鏁伴噺
- YsNum = b.YsNum, // 宸叉壂鏁伴噺
+ FQty = b.FQty, // 鐢宠鏁伴噺
+ SQty = b.SQty, // 宸叉壂鏁伴噺
+ RQty = b.RQty, // 宸叉壂鏁伴噺
// 淇濈暀鍏朵粬蹇呰瀛楁...
- Pid = b.Pid,
- ItemId = b.ItemId,
- Guid = b.Guid
+ Pid = b.Pid.ToString(),
+ FMaterialId = b.FMaterialId,
+ Id = b.Id.ToString()
+ })
+ .ToList();
+
+ if(result.Count < 1) throw new Exception("璇ヨ皟鎷ㄥ崟涓嶅瓨鍦ㄦ垨宸叉壂瀹岋紝璇烽噸鏂版壂鎻�");
+
+ return result;
+ }
+
+ public List<ItemDetailModel> GetDBCKDetal(
+ WarehouseQuery query)
+ {
+ 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)) // 鏈畬鎴愭暟閲忓ぇ浜�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();
@@ -88,7 +130,7 @@
/// </summary>
/// <param name="query">鍖呭惈鍗曟嵁鍙枫�佺敤鎴峰悕鍜屾潯鐮佷俊鎭殑鏌ヨ鍙傛暟</param>
/// <returns>澶勭悊鍚庣殑琛ㄥ崟鍜屽緟澶勭悊鏄庣粏鍒楄〃</returns>
- public (WarehouseQuery form, List<TransferOutDetail> items)
+ public (WarehouseQuery form, List<ItemDetailModel> items)
ScanMoveBarcode(WarehouseQuery query)
{
var p_bill_no = query.billNo;
@@ -98,8 +140,8 @@
if (string.IsNullOrEmpty(p_bill_no)) throw new Exception("璇烽�夊彇鍗曟嵁鍙凤紒");
// 鏌ヨ鍑哄簱鍗曞苟楠岃瘉鐘舵��
- var transferOut = Db.Queryable<TransferOut>()
- .Where(x => x.BillNo == p_bill_no && x.Status == 1)
+ var transferOut = Db.Queryable<MesDbck>()
+ .Where(x => x.FBillNo == p_bill_no && x.FApproveStatus == 1)
.First();
if (transferOut == null) throw new Exception("鏈壘鍒拌皟鎷ㄧ敵璇峰崟鎴栬�呰皟鎷ㄧ敵璇峰崟娌″鏍�");
@@ -158,7 +200,151 @@
query.Fum = Convert.ToDecimal(splitNum);
// 杩斿洖鏇存柊鍚庣殑琛ㄥ崟鍜屽緟澶勭悊鏄庣粏
- return (query, GetTransferOutDetailListByBillNo(query));
+ return (query, GetDBCKDetal(query));
+ }
+ catch (Exception ex)
+ {
+ throw new Exception(ex.Message);
+ }
+ finally
+ {
+ conn.Close();
+ }
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鎵弿鏉$爜杩涜璋冩嫧鍏ュ簱澶勭悊
+ /// </summary>
+ /// <param name="query">鍖呭惈鍗曟嵁鍙枫�佺敤鎴峰悕鍜屾潯鐮佷俊鎭殑鏌ヨ鍙傛暟</param>
+ /// <returns>澶勭悊鍚庣殑琛ㄥ崟鍜屽緟澶勭悊鏄庣粏鍒楄〃</returns>
+ public (WarehouseQuery form, List<ItemDetailModel> items)
+ ScanReceiveBarcode(WarehouseQuery query)
+ {
+ var p_bill_no = query.billNo;
+ var p_item_barcode = query.barcode;
+
+ var barinfo = Db.Queryable<MesInvItemStocks>()
+ .Where(x => x.ItemBarcode == p_item_barcode)
+ .First();
+
+ // 楠岃瘉鍗曟嵁鍙�
+ if (string.IsNullOrEmpty(p_bill_no)) throw new Exception("璇烽�夊彇鍗曟嵁鍙凤紒");
+
+ // 鏌ヨ鍑哄簱鍗曞苟楠岃瘉鐘舵��
+ var transferOut = Db.Queryable<MesDbck>()
+ .Where(x => x.FBillNo == p_bill_no && x.FApproveStatus == 1)
+ .First();
+ if (transferOut == null) throw new Exception("鏈壘鍒拌皟鎷ㄧ敵璇峰崟鎴栬�呰皟鎷ㄧ敵璇峰崟娌″鏍�");
+
+ // 鏌ヨ鏉$爜搴撳瓨淇℃伅骞堕獙璇�
+ var stock = Db.Queryable<MesDbckDetail>()
+ .Where(x => x.FMaterialId == barinfo.ItemId.ToString()
+ && x.FQty > 0
+ && !string.IsNullOrEmpty(x.FStockInId)
+ && !string.IsNullOrEmpty(x.FOwnerInId))
+ .First();
+ if (stock == null) throw new Exception($"璋冩嫧鏄庣粏涓� 銆愮墿鏂欍�戞垨 銆愯皟鍏ヤ粨搴撱�戞垨銆愯皟鍏ヨ揣涓汇�戜俊鎭笉瀛樺湪锛岃鏍稿锛亄p_item_barcode}");
+
+ // 鏌ヨ鐗╂枡淇℃伅
+ var item = Db.Queryable<MesItems>()
+ .Where(x => x.Id.ToString() == stock.FMaterialId)
+ .First();
+ if (item == null) throw new Exception("鏈壘鍒扮墿鏂�");
+
+ var _strMsg = "";
+ var _intSum = "";
+ using (var conn = new SqlConnection(DbHelperSQL.strConn))
+ {
+ using (var cmd = new SqlCommand("[prc_pda_DBRK]", conn))
+ {
+ try
+ {
+ conn.Open();
+ cmd.CommandType = CommandType.StoredProcedure;
+ SqlParameter[] parameters =
+ {
+ new("@outMsg", SqlDbType.NVarChar, 300),
+ new("@outSum", SqlDbType.NVarChar, 300),
+ new("@barcode_num", SqlDbType.NVarChar, 300),
+ new("@split_num", SqlDbType.NVarChar, 300),
+ new("@c_user", query.userName),
+ new("@p_bill_no", p_bill_no),
+ new("@p_item_barcode", p_item_barcode),
+ new("@p_depot_section_code", query.sectionCode),
+ };
+ parameters[0].Direction = ParameterDirection.Output;
+ parameters[1].Direction = ParameterDirection.Output;
+ parameters[2].Direction = ParameterDirection.Output;
+ parameters[3].Direction = ParameterDirection.Output;
+ foreach (var parameter in parameters)
+ cmd.Parameters.Add(parameter);
+ cmd.ExecuteNonQuery();
+ _strMsg = parameters[0].Value.ToString();
+ _intSum = parameters[1].Value.ToString();
+
+ var barcodeNum = parameters[2].Value.ToString();
+ var splitNum = parameters[3].Value.ToString();
+
+ var result = Convert.ToInt32(_intSum);
+ if (result <= 0) throw new Exception(_strMsg);
+
+ query.itemNo = item.ItemNo;
+ query.Num = Convert.ToDecimal(barcodeNum);
+ query.Fum = Convert.ToDecimal(splitNum);
+
+ // 杩斿洖鏇存柊鍚庣殑琛ㄥ崟鍜屽緟澶勭悊鏄庣粏
+ return (query, GetDBCKDetal(query));
+ }
+ catch (Exception ex)
+ {
+ throw new Exception(ex.Message);
+ }
+ finally
+ {
+ conn.Close();
+ }
+ }
+ }
+ }
+
+ //璋冩嫧鍑哄簱鎷嗗垎 prc_pda_DBCK_CF
+ public string SplitBarcode(WarehouseQuery query)
+ {
+ var _strMsg = "";
+ var _intSum = "";
+ using (var conn = new SqlConnection(DbHelperSQL.strConn))
+ {
+ using (var cmd = new SqlCommand("[prc_pda_DBRK]", conn))
+ {
+ try
+ {
+ conn.Open();
+ cmd.CommandType = CommandType.StoredProcedure;
+ SqlParameter[] parameters =
+ {
+ new("@outMsg", SqlDbType.NVarChar, 300),
+ new("@outSum", SqlDbType.NVarChar, 300),
+ new("@c_user", query.userName),
+ new("@p_bill_no", query.billNo),
+ new("@p_item_barcode", query.barcode),
+ new("@NUM", query.Fum),
+ };
+
+ parameters[0].Direction = ParameterDirection.Output;
+ parameters[1].Direction = ParameterDirection.Output;
+
+ foreach (var parameter in parameters)
+ cmd.Parameters.Add(parameter);
+ cmd.ExecuteNonQuery();
+ _strMsg = parameters[0].Value.ToString();
+ _intSum = parameters[1].Value.ToString();
+
+ var result = Convert.ToInt32(_intSum);
+ if (result <= 0) throw new Exception(_strMsg);
+
+ return _strMsg;
}
catch (Exception ex)
{
--
Gitblit v1.9.3