From 02b26bfaca24386f7b4f4a5e9f336812370ed49b Mon Sep 17 00:00:00 2001
From: cdk <2441919651@qq.com>
Date: 星期一, 22 十二月 2025 09:45:46 +0800
Subject: [PATCH] 获取BOM参数调整
---
service/Warehouse/TransferOutManager.cs | 726 ++++++++++++++++++++++++++++++++-----------------------
1 files changed, 421 insertions(+), 305 deletions(-)
diff --git a/service/Warehouse/TransferOutManager.cs b/service/Warehouse/TransferOutManager.cs
index 2788646..5420cba 100644
--- a/service/Warehouse/TransferOutManager.cs
+++ b/service/Warehouse/TransferOutManager.cs
@@ -1,55 +1,180 @@
-锘縰sing NewPdaSqlServer.DB;
+锘縰sing System.Data;
+using System.Data.SqlClient;
+using MES.Service.Modes;
+using NewPdaSqlServer.DB;
using NewPdaSqlServer.Dto.service;
using NewPdaSqlServer.entity;
-using NewPdaSqlServer.util;
+using NewPdaSqlServer.entity.Base;
using SqlSugar;
namespace NewPdaSqlServer.service.Warehouse;
/// <summary>
-/// 璋冩嫧鍑哄簱绠$悊绫�
-/// 璐熻矗澶勭悊璋冩嫧鍑哄簱鐩稿叧鐨勪笟鍔¢�昏緫
+/// 璋冩嫧鍑哄叆搴撶鐞嗙被
+/// 璐熻矗澶勭悊璋冩嫧鍑哄簱鐩稿叧鐨勪笟鍔¢�昏緫
/// </summary>
-public class TransferOutManager : Repository<TransferOut>
+public class TransferOutManager : Repository<MesDbck>
{
/// <summary>
- /// 鑾峰彇鏈畬鎴愮殑璋冩嫧鍑哄簱鍗曞彿鍒楄〃
+ /// 鑾峰彇鏈畬鎴愮殑璋冩嫧鍑哄簱鍗曞彿鍒楄〃
/// </summary>
/// <returns>鏈畬鎴愮殑璋冩嫧鍑哄簱鍗曞彿鍒楄〃</returns>
- public List<string> GetTransferOutNoList()
+ public List<string> GetTransferOutNoList(WarehouseQuery query, dynamic RequestInfo)
{
- // 鍏堜粠鏁版嵁搴撹幏鍙朤ransfer_Out_ETAIL琛ㄧ殑鏁版嵁
- var transferOutDetails = Db.Queryable<TransferOutDetail>().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.ShNum), // 鐢宠鏁伴噺鍚堣
- ys = g.Sum(x => x.YsNum) // 宸叉壂鏁伴噺鍚堣
- })
- .Where(x => (x.sq ?? 0) != (x.ys ?? 0))
- .Select(x => x.pid)
- .ToList();
+ if (orgId == null)
+ throw new Exception("缁勭粐涓嶅瓨鍦紒");
- // 鏍规嵁pid鏌ヨ瀵瑰簲鐨勫嚭搴撳崟鍙�
- var billNos = Db.Queryable<TransferOut>()
- .Where(x => result.Contains(x.Guid))
- .Select(x => x.BillNo)
- .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>
- /// 鏍规嵁鍗曟嵁鍙疯幏鍙栧緟澶勭悊鐨勮皟鎷ㄥ嚭搴撴槑缁嗗垪琛�
+ /// 鏍规嵁鍗曟嵁鍙疯幏鍙栧緟澶勭悊鐨勮皟鎷ㄥ嚭搴撴槑缁嗗垪琛�
/// </summary>
/// <param name="query">鏌ヨ鍙傛暟,鍖呭惈鍗曟嵁鍙�</param>
/// <returns>寰呭鐞嗙殑璋冩嫧鍑哄簱鏄庣粏鍒楄〃</returns>
- public List<TransferOutDetail> GetTransferOutDetailListByBillNo(
+ public dynamic GetTransferOutDetailListByBillNo(WarehouseQuery query, dynamic RequestInfo)
+ {
+ if (string.IsNullOrEmpty(query.billNo))
+ throw new Exception("璇烽�夊崟鎹彿锛�");
+
+ if (query == null)
+ throw new ArgumentNullException(nameof(query), "鍙傛暟瀵硅薄涓嶈兘涓簄ull");
+
+ if (string.IsNullOrEmpty(query.billNo?.ToString()))
+ throw new ArgumentException("鍗曟嵁鍙蜂笉鑳戒负绌�", nameof(query.billNo));
+
+ var orgId = RequestInfo.OrgId;
+
+ if (orgId == null)
+ throw new Exception("缁勭粐涓嶅瓨鍦紒");
+
+ // 鑾峰彇鏈畬鎴愮殑鍙戣揣閫氱煡鍗曟槑缁�
+ 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
+ {
+ 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 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}");
+ }
+ }
+
+
+ /// <summary>
+ /// 鏍规嵁鍗曟嵁鍙疯幏鍙栧緟澶勭悊鐨勮皟鎷ㄥ嚭搴撴槑缁嗗垪琛�
+ /// </summary>
+ /// <param name="query">鏌ヨ鍙傛暟,鍖呭惈鍗曟嵁鍙�</param>
+ /// <returns>寰呭鐞嗙殑璋冩嫧鍑哄簱鏄庣粏鍒楄〃</returns>
+ public ProductionPickDto GetTransferInDetailListByBillNo(
+ WarehouseQuery query)
+ {
+ if (string.IsNullOrEmpty(query.billNo)) throw new Exception("璋冩嫧鍗曞彿涓虹┖");
+
+ var sql1 = string.Format(@"SELECT * FROM MES_DBCK WHERE FDocumentStatus = 'C' AND FBillNo = '{0}'", query.billNo);
+
+ var dbck = Db.Ado.SqlQuery<ItemDetailModel>(sql1);
+
+ if (dbck.Count < 1) throw new Exception("璋冩嫧鍗曞彿涓嶅瓨鍦ㄦ垨鏈鏍革紒");
+
+ var sql2 = string.Format(@"SELECT c.item_no ItemNo,c.item_name ItemName,c.item_model ItemModel,b.FQty FQty,b.SQty SQty,b.RQty RQty,b.SQty - b.RQty 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);
+
+ var womdabs = Db.Ado.SqlQuery<ItemDetailModel>(sql2);
+
+
+ var DS_list = womdabs.Where(s => s.DSQty > 0).ToList();
+
+ var YS_list = womdabs.Where(s => s.RQty > 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
+ {
+ items = DS_list,
+ Ysitems = YS_list
+ // yisao = mesInvItemOutCDetailsList
+ };
+
+ return dto;
+ }
+
+ public List<ItemDetailModel> GetDBCKDetal(
WarehouseQuery query)
{
var p_bill_no = query.billNo;
@@ -57,25 +182,27 @@
// 鏍规嵁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)) // 鏈畬鎴愭暟閲忓ぇ浜�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();
@@ -83,299 +210,288 @@
}
/// <summary>
- /// 鎵弿鏉$爜杩涜璋冩嫧鍑哄簱澶勭悊
+ /// 鎵弿鏉$爜杩涜璋冩嫧鍑哄簱澶勭悊
/// </summary>
/// <param name="query">鍖呭惈鍗曟嵁鍙枫�佺敤鎴峰悕鍜屾潯鐮佷俊鎭殑鏌ヨ鍙傛暟</param>
/// <returns>澶勭悊鍚庣殑琛ㄥ崟鍜屽緟澶勭悊鏄庣粏鍒楄〃</returns>
- public (WarehouseQuery form, List<TransferOutDetail> items)
+ public ProductionPickDto
ScanMoveBarcode(WarehouseQuery query)
{
var p_bill_no = query.billNo;
- var c_user = query.userName;
var p_item_barcode = query.barcode;
- var p_bill_type_id = 300; // 鍗曟嵁绫诲瀷ID
- var p_transaction_no = 301; // 浜ゆ槗缂栧彿
-
// 楠岃瘉鍗曟嵁鍙�
- if (string.IsNullOrEmpty(p_bill_no))
- {
- throw new Exception("璇烽�夊彇鍗曟嵁鍙凤紒");
- }
+ 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("鏈壘鍒拌皟鎷ㄧ敵璇峰崟鎴栬�呰皟鎷ㄧ敵璇峰崟娌″鏍�");
- }
+ if (transferOut == null) throw new Exception("鏈壘鍒拌皟鎷ㄧ敵璇峰崟鎴栬�呰皟鎷ㄧ敵璇峰崟娌″鏍�");
// 鏌ヨ鏉$爜搴撳瓨淇℃伅骞堕獙璇�
var stock = Db.Queryable<MesInvItemStocks>()
.Where(x => x.ItemBarcode == p_item_barcode
- && x.Quantity > 0
- && !string.IsNullOrEmpty(x.DepotsCode))
+ && x.Quantity > 0)
.First();
- if (stock == null)
- {
- throw new Exception($"搴撳瓨涓棤姝ゆ潯鐮侊紝璇锋牳瀵癸紒{p_item_barcode}");
- }
-
- // 楠岃瘉浠撳簱涓�鑷存��
- if (stock.DepotsCode != transferOut.InvCode)
- {
- throw new Exception(
- $"鏉$爜搴撳瓨浠撳簱{stock.DepotsCode}鍜岀敵璇蜂粨搴撲笉涓�鑷磠transferOut.InvCode}");
- }
+ if (stock == null) throw new Exception($"搴撳瓨涓棤姝ゆ潯鐮侊紝璇锋牳瀵癸紒{p_item_barcode}");
// 鏌ヨ鐗╂枡淇℃伅
var item = Db.Queryable<MesItems>()
.Where(x => x.Id == stock.ItemId)
.First();
- if (item == null)
- {
- throw new Exception("鏈壘鍒扮墿鏂�");
- }
+ if (item == null) throw new Exception("鏈壘鍒扮墿鏂�");
- // 鏌ヨ璋冩嫧鏄庣粏骞堕獙璇�
- var detail = Db.Queryable<TransferOutDetail>()
- .Where(x => x.ItemId == stock.ItemId && x.Pid == transferOut.Guid)
- .First();
- if (detail == null)
+ var _strMsg = "";
+ var _intSum = "";
+ using (var conn = new SqlConnection(DbHelperSQL.strConn))
{
- throw new Exception("鏈壘鍒版潯鐮佺墿鏂欑浉搴旂殑璋冩嫧鐢宠");
- }
-
- // 楠岃瘉鏁伴噺鏄惁瓒呭嚭鏈壂鏁伴噺
- if ((detail.ShNum ?? 0) - (detail.YsNum ?? 0) < stock.Quantity)
- {
- throw new Exception("鏉$爜鏁伴噺澶т簬鐢宠鏈壂鏁伴噺锛岃鎷嗗垎浜嗗啀鎵爜");
- }
-
- // 浣跨敤浜嬪姟澶勭悊鏁版嵁鏇存柊
- UseTransaction(db =>
- {
- // 鏌ヨ鐜版湁绉诲簱璁板綍
- var existingMove = db.Queryable<MesInvItemMoves>()
- .Where(x => x.TaskNo == p_bill_no
- && x.TransactionNo == p_transaction_no
- && (x.Status ?? 0) == 0)
- .First();
-
- var commit = 0; // 璁板綍鏇存柊鎿嶄綔娆℃暟
- var c_id = Guid.Empty;
-
- // 澶勭悊绉诲簱涓昏〃璁板綍
- if (existingMove != null)
+ using (var cmd = new SqlCommand("[prc_pda_DBCK]", conn))
{
- // 鏇存柊鐜版湁璁板綍鐨勬渶鍚庝慨鏀逛俊鎭�
- commit += db.Updateable<MesInvItemMoves>()
- .SetColumns(s => s.LastupdateDate == DateTime.Now)
- .SetColumns(s => s.LastupdateBy == c_user)
- .Where(s => s.Guid == existingMove.Guid)
- .ExecuteCommand();
-
- c_id = existingMove.Guid;
- }
- else
- {
- // 鏌ヨ鐩稿叧浠撳簱淇℃伅
- var mesDepots = db.Queryable<MesDepots>()
- .Where(s => s.DepotCode == transferOut.FromCode)
- .First();
-
- var invMesDepots = db.Queryable<MesDepots>()
- .Where(s => s.DepotCode == transferOut.InvCode)
- .First();
-
- c_id = Guid.NewGuid();
-
- // 鍒涘缓鏂扮殑绉诲簱璁板綍
- var newMove = new MesInvItemMoves
+ try
{
- Guid = c_id,
- BillNo = BillNo.GetBillNo("DBCKD"),
- CreateBy = c_user,
- CreateDate = DateTime.Now,
- BillTypeId = p_bill_type_id,
- TransactionNo = p_transaction_no,
- InvDepotSectionsId = mesDepots.DepotId,
- // InvDepotSectionsCode = transferOut.FromCode,
- // FromDepotsCode = transferOut.InvCode,
- FromDepotsId = invMesDepots.DepotId.ToString(),
- TaskNo = p_bill_no
- };
- commit += db.Insertable(newMove).IgnoreColumns(true)
- .ExecuteCommand();
- }
+ 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),
+ };
+ 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 business = new MesInvBusiness2
- {
- Guid = Guid.NewGuid(),
- Status = 1,
- BillTypeId = p_bill_type_id,
- TransactionCode = p_transaction_no.ToString(),
- BusinessType = -1,
- ItemBarcode = p_item_barcode,
- ItemNo = item.ItemNo,
- LotNo = stock.LotNo,
- EpFlag = true,
- Quantity = stock.Quantity,
- FromInvDepotsCode = stock.DepotsCode,
- FromInvDepotSectionsCode = stock.DepotSectionsCode,
- ToInvDepotsCode = transferOut.FromCode,
- ToInvDepotSectionsCode = stock.DepotSectionsCode,
- CreateBy = c_user,
- CreateDate = DateTime.Now,
- LastupdateBy = c_user,
- LastupdateDate = DateTime.Now,
- Factory = stock.Factory,
- Company = stock.Company,
- TaskNo = stock.TaskNo,
- BillNo = p_bill_no,
- WorkNo = stock.WorkNo,
- WorkLine = stock.WorkLine,
- SuppNo = stock.SuppNo,
- ItemId = stock.ItemId,
- EbelnK3id = stock.EbelnK3id,
- LineK3id = stock.LineK3id,
- // RkDepot = transferOut.RkDepot,
- // CkDepot = transferOut.CkDepot
- };
+ var barcodeNum = parameters[2].Value.ToString();
+ var splitNum = parameters[3].Value.ToString();
+
+ var result = Convert.ToInt32(_intSum);
+ if (result <= 0) throw new Exception(_strMsg);
- commit += db.Insertable(business).IgnoreColumns(true)
- .ExecuteCommand();
+ query.itemNo = item.ItemNo;
+ query.Num = Convert.ToDecimal(barcodeNum);
+ query.Fum = Convert.ToDecimal(splitNum);
- // 鍐欏叆鏂版潯鐮佷氦鏄撴槑缁�
- var moveDetail = new MesInvItemMovesCDetails
- {
- Guid = Guid.NewGuid(),
- ItemMoveGuid = c_id,
- ItemBarcode = p_item_barcode,
- CItemCode = stock.CItemCode,
- ItemNo = item.ItemNo,
- LotNo = stock.LotNo,
- Quantity = stock.Quantity,
- EpFlag = stock.EpFlag,
- CreateBy = c_user,
- CreateDate = DateTime.Now,
- LastupdateBy = c_user,
- LastupdateDate = DateTime.Now,
- // CustomerNo = stock.CustomerNo,
- TaskNo = stock.TaskNo,
- FromDepotsCode = stock.DepotsCode,
- FromDepotSectionsCode = stock.DepotSectionsCode,
- Factory = stock.Factory,
- Company = stock.Company,
- InvDepotsCode = transferOut.FromCode,
- // InvDepotSectionsCode = p_sectioncode,
- IqcStatus = stock.IqcStatus,
- Fcar = stock.Fcar,
- IndepDate = stock.IndepDate,
- VisableSubmit = stock.VisableSubmit,
- VisableSubmitBy = stock.VisableSubmitBy,
- VisableSubmitDate = stock.VisableSubmitDate,
- BoardStyle = stock.BoardStyle,
- WorkNo = stock.WorkNo,
- WorkLine = stock.WorkLine,
- SuppNo = stock.SuppNo,
- ItemId = (int)stock.ItemId,
- EbelnK3id = stock.EbelnK3id,
- LineK3id = stock.LineK3id,
- // RkDepot = transferOut.RkDepot,
- // CkDepot = transferOut.CkDepot
- };
+ // 杩斿洖鏇存柊鍚庣殑琛ㄥ崟鍜屽緟澶勭悊鏄庣粏
+ //return (query, GetDBCKDetal(query));
+ var dto = new ProductionPickDto
+ {
+ itemNo = item.ItemNo,
+ barcodeNum = barcodeNum,
+ splitNum = splitNum,
+ barcode = query.barcode,
+ strMsg = _strMsg,
+ result = _intSum
+ };
- commit += db.Insertable(moveDetail).IgnoreColumns(true)
- .ExecuteCommand();
-
- // 鏇存柊鎴栨彃鍏ュ嚭搴撴槑缁嗚褰�
- var outItem = db.Queryable<MesInvItemOutItems>()
- .Where(x => x.ItemOutId == c_id && x.ItemId == stock.ItemId)
- .First();
-
- if (outItem != null)
- {
- // 鏇存柊鐜版湁璁板綍鐨勬暟閲�
- outItem.Quantity += stock.Quantity;
- commit += db.Updateable<MesInvItemOutItems>()
- .SetColumns(x => x.Quantity == outItem.Quantity)
- .Where(x => x.Guid == outItem.Guid)
- .ExecuteCommand();
- }
- else
- {
- // 鎻掑叆鏂拌褰�
- var newOutItem = new MesInvItemOutItems
+ return dto;
+ }
+ catch (Exception ex)
{
- Guid = Guid.NewGuid(),
- ItemOutId = c_id,
- ItemId = stock.ItemId,
- CreateBy = c_user,
- CreateDate = DateTime.Now,
- TaskNo = stock.TaskNo,
- WorkNo = stock.WorkNo,
- WorkLine = stock.WorkLine,
- EbelnK3id = (int)stock.EbelnK3id,
- LineK3id = (int)stock.LineK3id,
- Quantity = stock.Quantity,
- // Unit = stock.ItemUnit
- };
-
- commit += db.Insertable(newOutItem).IgnoreColumns(true)
- .ExecuteCommand();
+ throw new Exception(ex.Message);
+ }
+ finally
+ {
+ conn.Close();
+ }
}
-
- // 鏇存柊璋冩嫧鐢宠宸叉壂鏁伴噺
- detail = db.Queryable<TransferOutDetail>()
- .Where(x => x.Guid == detail.Guid)
- .First();
-
- if (detail != null)
- {
- detail.YsNum = (detail.YsNum ?? 0) + stock.Quantity as int?;
- commit += db.Updateable<TransferOutDetail>()
- .SetColumns(x => x.YsNum == detail.YsNum)
- .Where(x => x.Guid == detail.Guid)
- .ExecuteCommand();
- }
-
- // 妫�鏌ユ槸鍚︽墍鏈夋槑缁嗛兘宸插畬鎴�
- var totals = db.Queryable<TransferOutDetail, TransferOut>((b, a) =>
- new JoinQueryInfos(JoinType.Left, b.Pid == a.Guid))
- .Where((b, a) => a.BillNo == p_bill_no)
- .Select((b, a) => new {
- ShNum = SqlFunc.AggregateSum(b.ShNum), // 鐢宠鎬绘暟閲�
- YsNum = SqlFunc.AggregateSum(b.YsNum) // 宸叉壂鎬绘暟閲�
- })
- .First();
-
- // 濡傛灉鐢宠鏁伴噺绛変簬宸叉壂鏁伴噺锛屾洿鏂板崟鎹畬鎴愮姸鎬�
- if (totals.ShNum == totals.YsNum)
- {
- commit += db.Updateable<TransferOut>()
- .SetColumns(x => x.IsWc == 1)
- .Where(x => x.BillNo == p_bill_no)
- .ExecuteCommand();
- }
-
- // 鏇存柊杩斿洖鍙傛暟
- query.itemNo = item.ItemNo;
- query.Num = stock.Quantity;
-
- // 楠岃瘉鏇存柊鎿嶄綔鏄惁鍏ㄩ儴鎴愬姛
- if (commit < 4)
- {
- throw new Exception("鏇存柊澶辫触");
- }
-
- return commit;
- });
-
- // 杩斿洖鏇存柊鍚庣殑琛ㄥ崟鍜屽緟澶勭悊鏄庣粏
- return (query, GetTransferOutDetailListByBillNo(query));
+ }
}
+
+ /// <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("@outBillNo", 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 outBillNo = 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);
+ query.billNo = outBillNo;
+
+ // 杩斿洖鏇存柊鍚庣殑琛ㄥ崟鍜屽緟澶勭悊鏄庣粏
+ return (query, GetDBCKDetal(query));
+ }
+ catch (Exception ex)
+ {
+ throw new Exception(ex.Message);
+ }
+ finally
+ {
+ conn.Close();
+ }
+ }
+ }
+ }
+
+ public ProductionPickDto ScanCodeCF(WarehouseQuery query)
+ {
+ var p_bill_no = query.daa001;
+ 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 = "";
+ var _cfBar = "";
+ using (var conn = new SqlConnection(DbHelperSQL.strConn))
+ {
+ using (var cmd = new SqlCommand("[prc_pda_DBCK_CF]", conn))
+ {
+ try
+ {
+ conn.Open();
+ cmd.CommandType = CommandType.StoredProcedure;
+ SqlParameter[] parameters =
+ {
+ new("@outMsg", SqlDbType.NVarChar, 2000),
+ new("@outSum", SqlDbType.NVarChar, 300),
+ new("@outCfBar", SqlDbType.NVarChar, 300),
+ new("@c_User", query.userName),
+ new("@p_biLL_no", query.daa001),
+ new("@p_item_barcode", query.barcode),
+ new("@num", query.Num)
+ };
+ 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);
+
+ var dto = new ProductionPickDto
+ {
+ daa001 = query.daa001,
+ barcode = query.barcode,//鍘熸潯鐮�
+ cfBarcode = _cfBar//鎷嗗垎鍚庢潯鐮�
+ };
+
+ return dto;
+ }
+ catch (Exception ex)
+ {
+ throw new Exception(ex.Message);
+ }
+ finally
+ {
+ conn.Close();
+ }
+ }
+ }
+ }
+
}
\ No newline at end of file
--
Gitblit v1.9.3