From e3355fba66b7f23bfca7dc213b27ad5f6721763e Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期五, 27 十二月 2024 12:58:03 +0800
Subject: [PATCH] 111
---
Controllers/Wom/MesWorkProdController.cs | 34
Dto/service/ScanWorkResult.cs | 3
entity/MesItemQtrk.cs | 144 +++++++
service/Warehouse/MesItemBlManager.cs | 21
service/Warehouse/MesItemTblManager.cs | 2
service/Wom/MesWorkProdManager.cs | 121 ++++-
entity/MesItemQtrrDetail.cs | 124 ++++++
Controllers/Warehouse/MesItemQtrkController.cs | 222 +++++++++++
service/Warehouse/MesItemQtrkManager.cs | 473 +++++++++++++++++++++++
9 files changed, 1,073 insertions(+), 71 deletions(-)
diff --git a/Controllers/Warehouse/MesItemQtrkController.cs b/Controllers/Warehouse/MesItemQtrkController.cs
new file mode 100644
index 0000000..d60c3bb
--- /dev/null
+++ b/Controllers/Warehouse/MesItemQtrkController.cs
@@ -0,0 +1,222 @@
+锘縰sing System.Dynamic;
+using Microsoft.AspNetCore.Mvc;
+using NewPdaSqlServer.Dto.service;
+using NewPdaSqlServer.service.Warehouse;
+using NewPdaSqlServer.util;
+
+namespace NewPdaSqlServer.Controllers.Warehouse;
+
+/// <summary>
+/// 鍏朵粬鍏ュ簱鐩稿叧鎺ュ彛
+/// </summary>
+[Route("api/[controller]")]
+[ApiController]
+public class MesItemQtrkController : ControllerBase
+{
+ private readonly MesItemQtrkManager _manager = new();
+
+ #region 鍩虹CRUD
+
+ /// <summary>
+ /// 鑾峰彇鎵�鏈�
+ /// </summary>
+ /// <returns>鍏朵粬鍏ュ簱鍗曞垪琛�</returns>
+ [HttpPost("GetList")]
+ public ResponseResult GetList()
+ {
+ try
+ {
+ dynamic resultInfos = new ExpandoObject();
+ resultInfos.tbBillList = _manager.GetList();
+ return new ResponseResult
+ {
+ status = 0,
+ message = "OK",
+ data = resultInfos
+ };
+ }
+ catch (Exception ex)
+ {
+ return ResponseResult.ResponseError(ex);
+ }
+ }
+
+ /// <summary>
+ /// 鏍规嵁涓婚敭鑾峰彇
+ /// </summary>
+ /// <returns>鍏朵粬鍏ュ簱鍗曚俊鎭�</returns>
+ [HttpPost("GetById")]
+ public ResponseResult GetById(int id)
+ {
+ try
+ {
+ dynamic resultInfos = new ExpandoObject();
+ resultInfos.tbBillList = _manager.GetById(id);
+ return new ResponseResult
+ {
+ status = 0,
+ message = "OK",
+ data = resultInfos
+ };
+ }
+ catch (Exception ex)
+ {
+ return ResponseResult.ResponseError(ex);
+ }
+ }
+
+ #endregion
+
+ #region 鍏朵粬鍏ュ簱涓氬姟
+
+ /// <summary>
+ /// 鑾峰彇鍏朵粬鍏ュ簱鍗曞彿鍒楄〃
+ /// </summary>
+ /// <returns>鍏朵粬鍏ュ簱鍗曞彿鍒楄〃</returns>
+ /// <remarks>
+ /// 鑾峰彇鐘舵�佷负宸插鏍�(Qt015=1)涓旀湭瀹岀粨(Qt014=0)鐨勫叾浠栧叆搴撳崟鍙峰垪琛�
+ /// </remarks>
+ /// <response code="200">鎴愬姛鑾峰彇鍏ュ簱鍗曞彿鍒楄〃</response>
+ /// <response code="400">鑾峰彇澶辫触</response>
+ [HttpPost("GetQtckList")]
+ public ResponseResult GetQtckList()
+ {
+ try
+ {
+ dynamic resultInfos = new ExpandoObject();
+ resultInfos.tbBillList = _manager.GetQtckList();
+ return new ResponseResult
+ {
+ status = 0,
+ message = "OK",
+ data = resultInfos
+ };
+ }
+ catch (Exception ex)
+ {
+ return ResponseResult.ResponseError(ex);
+ }
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍏朵粬鍏ュ簱鍗曟槑缁嗗垪琛�
+ /// </summary>
+ /// <param name="query">鏌ヨ鍙傛暟锛屽繀椤诲寘鍚玝illNo(鍏ュ簱鍗曞彿)</param>
+ /// <returns>鍏ュ簱鍗曟槑缁嗗垪琛�</returns>
+ /// <remarks>
+ /// 璇锋眰绀轰緥:
+ ///
+ /// POST /api/MesItemQtrk/GetQtckDetailList
+ /// {
+ /// "billNo": "QT202401010001"
+ /// }
+ ///
+ /// 杩斿洖鏈畬鎴愬叆搴撶殑鏄庣粏璁板綍(Qd007-Qd008>0)
+ /// </remarks>
+ /// <response code="200">鎴愬姛鑾峰彇鍏ュ簱鍗曟槑缁�</response>
+ /// <response code="400">鑾峰彇澶辫触锛岃繑鍥炲叿浣撻敊璇俊鎭�</response>
+ [HttpPost("GetQtckDetailList")]
+ public ResponseResult GetQtckDetailList([FromBody] WarehouseQuery query)
+ {
+ try
+ {
+ dynamic resultInfos = new ExpandoObject();
+ resultInfos.tbBillList = _manager.GetQtckDetailList(query);
+ return new ResponseResult
+ {
+ status = 0,
+ message = "OK",
+ data = resultInfos
+ };
+ }
+ catch (Exception ex)
+ {
+ return ResponseResult.ResponseError(ex);
+ }
+ }
+
+ /// <summary>
+ /// 鎵弿搴撲綅
+ /// </summary>
+ /// <param name="query">鏌ヨ鍙傛暟</param>
+ /// <returns>搴撲綅淇℃伅</returns>
+ /// <remarks>
+ /// 璇锋眰绀轰緥:
+ ///
+ /// POST /api/MesItemQtrk/ScanInDepotsQT
+ /// {
+ /// "sectionCode": "A01-01-01",
+ /// "billNo": "QT202401010001"
+ /// }
+ ///
+ /// 楠岃瘉搴撲綅鏄惁灞炰簬鐢宠鍗曟寚瀹氱殑浠撳簱
+ /// </remarks>
+ /// <response code="200">鎵弿鎴愬姛</response>
+ /// <response code="400">鎵弿澶辫触锛岃繑鍥炲叿浣撻敊璇俊鎭�</response>
+ [HttpPost("ScanInDepotsQT")]
+ public ResponseResult ScanInDepotsQT([FromBody] WarehouseQuery query)
+ {
+ try
+ {
+ dynamic resultInfos = new ExpandoObject();
+ resultInfos.message = _manager.ScanInDepotsQT(query);
+ return new ResponseResult
+ {
+ status = 0,
+ message = "OK",
+ data = resultInfos
+ };
+ }
+ catch (Exception ex)
+ {
+ return ResponseResult.ResponseError(ex);
+ }
+ }
+
+ /// <summary>
+ /// 鎵弿鏉$爜鍏ュ簱
+ /// </summary>
+ /// <param name="query">鏌ヨ鍙傛暟</param>
+ /// <returns>鍏ュ簱缁撴灉鍜屽緟澶勭悊鏄庣粏</returns>
+ /// <remarks>
+ /// 璇锋眰绀轰緥:
+ ///
+ /// POST /api/MesItemQtrk/ScanInBcodeQtrk
+ /// {
+ /// "userName": "admin",
+ /// "sectionCode": "A01-01-01",
+ /// "barcode": "BC001",
+ /// "billNo": "QT202401010001"
+ /// }
+ ///
+ /// - 楠岃瘉鏉$爜鏄惁宸插叆搴�
+ /// - 楠岃瘉鏉$爜鏄惁涓哄叾浠栧叆搴撴潯鐮�
+ /// - 楠岃瘉鍏ュ簱鏁伴噺鏄惁瓒呰繃鐢宠鏁伴噺
+ /// - 鎵ц鍏ュ簱浜嬪姟澶勭悊
+ /// </remarks>
+ /// <response code="200">鎵弿鎴愬姛</response>
+ /// <response code="400">鎵弿澶辫触锛岃繑鍥炲叿浣撻敊璇俊鎭�</response>
+ [HttpPost("ScanInBcodeQtrk")]
+ public ResponseResult ScanInBcodeQtrk([FromBody] WarehouseQuery query)
+ {
+ try
+ {
+ dynamic resultInfos = new ExpandoObject();
+ var (form, items) = _manager.ScanInBcodeQtrk(query);
+ resultInfos.form = form;
+ resultInfos.items = items;
+ return new ResponseResult
+ {
+ status = 0,
+ message = "OK",
+ data = resultInfos
+ };
+ }
+ catch (Exception ex)
+ {
+ return ResponseResult.ResponseError(ex);
+ }
+ }
+
+ #endregion
+}
\ No newline at end of file
diff --git a/Controllers/Wom/MesWorkProdController.cs b/Controllers/Wom/MesWorkProdController.cs
index d10af04..92b1a8e 100644
--- a/Controllers/Wom/MesWorkProdController.cs
+++ b/Controllers/Wom/MesWorkProdController.cs
@@ -8,7 +8,7 @@
namespace NewPdaSqlServer.Controllers.Wom;
/// <summary>
-/// 鐢熶骇鎶ュ伐鐩稿叧鎺ュ彛
+/// 鐢熶骇鎶ュ伐鐩稿叧鎺ュ彛
/// </summary>
[Route("api/[controller]")]
[ApiController]
@@ -19,7 +19,7 @@
#region 鍩虹CRUD
/// <summary>
- /// 鑾峰彇鎵�鏈�
+ /// 鑾峰彇鎵�鏈�
/// </summary>
/// <returns>鎶ュ伐鍗曞垪琛�</returns>
[HttpPost("GetList")]
@@ -43,7 +43,7 @@
}
/// <summary>
- /// 鏍规嵁涓婚敭鑾峰彇
+ /// 鏍规嵁涓婚敭鑾峰彇
/// </summary>
/// <returns>鎶ュ伐鍗曚俊鎭�</returns>
[HttpPost("GetById")]
@@ -67,7 +67,7 @@
}
/// <summary>
- /// 鏍规嵁涓婚敭鍒犻櫎
+ /// 鏍规嵁涓婚敭鍒犻櫎
/// </summary>
/// <returns>鍒犻櫎缁撴灉</returns>
[HttpPost("DeleteByIds")]
@@ -91,7 +91,7 @@
}
/// <summary>
- /// 娣诲姞
+ /// 娣诲姞
/// </summary>
/// <returns>娣诲姞缁撴灉</returns>
[HttpPost("Insert")]
@@ -115,7 +115,7 @@
}
/// <summary>
- /// 淇敼
+ /// 淇敼
/// </summary>
/// <returns>淇敼缁撴灉</returns>
[HttpPost("Update")]
@@ -143,18 +143,17 @@
#region 鐢熶骇鎶ュ伐
/// <summary>
- /// PDA鎵弿鐢熶骇鎶ュ伐
+ /// PDA鎵弿鐢熶骇鎶ュ伐
/// </summary>
/// <param name="request">鎶ュ伐璇锋眰鍙傛暟</param>
/// <returns>鎶ュ伐缁撴灉</returns>
/// <remarks>
- /// 璇锋眰绀轰緥:
- ///
+ /// 璇锋眰绀轰緥:
/// POST /api/MesWorkProd/ScanWork
/// {
- /// "staffNo": "ST001",
- /// "itemBarcode": "BC001",
- /// "userNo": "admin"
+ /// "staffNo": "ST001",
+ /// "itemBarcode": "BC001",
+ /// "userNo": "admin"
/// }
/// </remarks>
/// <response code="200">鎵弿鎴愬姛</response>
@@ -180,18 +179,17 @@
}
/// <summary>
- /// PDA鎵弿鐢熶骇鎶ュ伐(甯︽暟閲�)
+ /// PDA鎵弿鐢熶骇鎶ュ伐(甯︽暟閲�)
/// </summary>
/// <param name="request">鎶ュ伐璇锋眰鍙傛暟</param>
/// <returns>鎶ュ伐缁撴灉</returns>
/// <remarks>
- /// 璇锋眰绀轰緥:
- ///
+ /// 璇锋眰绀轰緥:
/// POST /api/MesWorkProd/ScanWorkProd
/// {
- /// "itemBarcode": "BC001",
- /// "quantity": 10,
- /// "userNo": "admin"
+ /// "itemBarcode": "BC001",
+ /// "quantity": 10,
+ /// "userNo": "admin"
/// }
/// </remarks>
/// <response code="200">鎵弿鎴愬姛</response>
diff --git a/Dto/service/ScanWorkResult.cs b/Dto/service/ScanWorkResult.cs
index cda78d6..ff8bb47 100644
--- a/Dto/service/ScanWorkResult.cs
+++ b/Dto/service/ScanWorkResult.cs
@@ -1,8 +1,7 @@
锘縩amespace NewPdaSqlServer.Dto.service;
-
/// <summary>
-/// 鐢熶骇鎶ュ伐鎵弿缁撴灉
+/// 鐢熶骇鎶ュ伐鎵弿缁撴灉
/// </summary>
public class ScanWorkResult
{
diff --git a/entity/MesItemQtrk.cs b/entity/MesItemQtrk.cs
new file mode 100644
index 0000000..4421a99
--- /dev/null
+++ b/entity/MesItemQtrk.cs
@@ -0,0 +1,144 @@
+锘縰sing SqlSugar;
+
+namespace NewPdaSqlServer.entity;
+
+/// <summary>
+/// 鍏朵粬鍏ュ簱鐢宠
+/// </summary>
+[SugarTable("MES_ITEM_QTRK")]
+public class MesItemQtrk
+{
+ /// <summary>
+ /// 榛樿鍊�: (newid())
+ /// </summary>
+ [SugarColumn(ColumnName = "guid", IsPrimaryKey = true)]
+ public Guid Guid { get; set; }
+
+ /// <summary>
+ /// 鐢宠鍗曞彿
+ /// </summary>
+ [SugarColumn(ColumnName = "qtck")]
+ public string? Qtck { get; set; }
+
+ /// <summary>
+ /// 鐢宠鏃ユ湡
+ /// </summary>
+ [SugarColumn(ColumnName = "qt001")]
+ public DateTime? Qt001 { get; set; }
+
+ /// <summary>
+ /// 瀹℃牳鏃ユ湡
+ /// </summary>
+ [SugarColumn(ColumnName = "qt002")]
+ public DateTime? Qt002 { get; set; }
+
+ /// <summary>
+ /// 鍏ュ簱绫诲埆
+ /// </summary>
+ [SugarColumn(ColumnName = "qt003")]
+ public string? Qt003 { get; set; }
+
+ /// <summary>
+ /// 涓氬姟绫诲瀷
+ /// </summary>
+ [SugarColumn(ColumnName = "qt004")]
+ public string? Qt004 { get; set; }
+
+ /// <summary>
+ /// 鍒跺崟浜�
+ /// </summary>
+ [SugarColumn(ColumnName = "qt005")]
+ public string? Qt005 { get; set; }
+
+ /// <summary>
+ /// 鐢熶骇宸ュ崟
+ /// </summary>
+ [SugarColumn(ColumnName = "qt006")]
+ public string? Qt006 { get; set; }
+
+ /// <summary>
+ /// 鍙戞枡浠撳簱id
+ /// </summary>
+ [SugarColumn(ColumnName = "qt008")]
+ public string? Qt008 { get; set; }
+
+ /// <summary>
+ /// 鐢宠閮ㄩ棬id
+ /// </summary>
+ [SugarColumn(ColumnName = "qt009")]
+ public string? Qt009 { get; set; }
+
+ /// <summary>
+ /// 鍏ュ簱鍘熷洜
+ /// </summary>
+ [SugarColumn(ColumnName = "qt010")]
+ public string? Qt010 { get; set; }
+
+ /// <summary>
+ /// 浠撳簱缂栫爜
+ /// </summary>
+ [SugarColumn(ColumnName = "qt011")]
+ public string? Qt011 { get; set; }
+
+ /// <summary>
+ /// 閮ㄩ棬缂栫爜
+ /// </summary>
+ [SugarColumn(ColumnName = "qt012")]
+ public string? Qt012 { get; set; }
+
+ /// <summary>
+ /// 鏁伴噺
+ /// </summary>
+ [SugarColumn(ColumnName = "qt013")]
+ public int? Qt013 { get; set; }
+
+ /// <summary>
+ /// 瀹岀粨鏍囪瘑
+ /// 榛樿鍊�: ((0))
+ /// </summary>
+ [SugarColumn(ColumnName = "qt014")]
+ public int? Qt014 { get; set; }
+
+ /// <summary>
+ /// 瀹℃牳鐘舵��
+ /// 榛樿鍊�: ((0))
+ /// </summary>
+ [SugarColumn(ColumnName = "qt015")]
+ public int? Qt015 { get; set; }
+
+ /// <summary>
+ /// 瀹℃牳浜�
+ /// </summary>
+ [SugarColumn(ColumnName = "qt016")]
+ public string? Qt016 { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鍗曞彿
+ /// </summary>
+ [SugarColumn(ColumnName = "qt017")]
+ public string? Qt017 { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟唅d
+ /// </summary>
+ [SugarColumn(ColumnName = "qt018")]
+ public string? Qt018 { get; set; }
+
+ /// <summary>
+ /// 鍏ュ簱鏂瑰悜锛堥��璐э紝鏅�氾級
+ /// </summary>
+ [SugarColumn(ColumnName = "qt019")]
+ public string? Qt019 { get; set; }
+
+ /// <summary>
+ /// 鍏ュ簱绫诲瀷 1鐩樼泩 2妯″叿 3杈呭姪 4鎵撴牱 5鍥炴枡 6閲囪喘
+ /// </summary>
+ [SugarColumn(ColumnName = "qt020")]
+ public string? Qt020 { get; set; }
+
+ /// <summary>
+ /// 閿�鍞鍗曞彿
+ /// </summary>
+ [SugarColumn(ColumnName = "qt021")]
+ public string? Qt021 { get; set; }
+}
\ No newline at end of file
diff --git a/entity/MesItemQtrrDetail.cs b/entity/MesItemQtrrDetail.cs
new file mode 100644
index 0000000..7536467
--- /dev/null
+++ b/entity/MesItemQtrrDetail.cs
@@ -0,0 +1,124 @@
+锘縰sing SqlSugar;
+
+namespace NewPdaSqlServer.entity;
+
+/// <summary>
+/// </summary>
+[SugarTable("MES_ITEM_QTRR_DETAIL")]
+public class MesItemQtrrDetail
+{
+ /// <summary>
+ /// 榛樿鍊�: (newid())
+ /// </summary>
+ [SugarColumn(ColumnName = "guid", IsPrimaryKey = true)]
+ public Guid Guid { get; set; }
+
+ /// <summary>
+ /// 涓昏〃guid
+ /// </summary>
+ [SugarColumn(ColumnName = "qtrkGuid")]
+ public Guid? QtrkGuid { get; set; }
+
+ /// <summary>
+ /// 宸ュ崟鍙�
+ /// </summary>
+ [SugarColumn(ColumnName = "qd001")]
+ public string? Qd001 { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ [SugarColumn(ColumnName = "qd002")]
+ public string? Qd002 { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ [SugarColumn(ColumnName = "qd003")]
+ public string? Qd003 { get; set; }
+
+ /// <summary>
+ /// 瑙勬牸鍨嬪彿
+ /// </summary>
+ [SugarColumn(ColumnName = "qd004")]
+ public string? Qd004 { get; set; }
+
+ /// <summary>
+ /// 棰滆壊
+ /// </summary>
+ [SugarColumn(ColumnName = "qd005")]
+ public string? Qd005 { get; set; }
+
+ /// <summary>
+ /// 璁″垝鏁伴噺
+ /// </summary>
+ [SugarColumn(ColumnName = "qd006")]
+ public int? Qd006 { get; set; }
+
+ /// <summary>
+ /// 鐢宠鏁伴噺
+ /// </summary>
+ [SugarColumn(ColumnName = "qd007")]
+ public int? Qd007 { get; set; }
+
+ /// <summary>
+ /// 宸插叆鏁伴噺
+ /// </summary>
+ [SugarColumn(ColumnName = "qd008")]
+ public int? Qd008 { get; set; }
+
+ /// <summary>
+ /// 鍗曚綅
+ /// </summary>
+ [SugarColumn(ColumnName = "qd009")]
+ public string? Qd009 { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ [SugarColumn(ColumnName = "qd010")]
+ public string? Qd010 { get; set; }
+
+ /// <summary>
+ /// 瀹岀粨鏍囪瘑
+ /// </summary>
+ [SugarColumn(ColumnName = "qd011")]
+ public int? Qd011 { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡ID
+ /// </summary>
+ [SugarColumn(ColumnName = "itemId")]
+ public string? ItemId { get; set; }
+
+ /// <summary>
+ /// YDYNUM
+ /// </summary>
+ [SugarColumn(ColumnName = "YDYNUM")]
+ public string? Ydynum { get; set; }
+
+ /// <summary>
+ /// 鍙墦鍗版暟閲�
+ /// </summary>
+ [SugarColumn(ColumnName = "KDYNUM")]
+ public string? Kdynum { get; set; }
+
+
+ /// <summary>
+ /// 鐢宠鍗曞彿
+ /// </summary>
+ [SugarColumn(IsIgnore = true)]
+ public string? Qtck { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栫爜 = ERP鐗╂枡缂栧彿||棰滆壊缂栧彿
+ /// </summary>
+ [SugarColumn(IsIgnore = true)]
+ public string? ItemNo { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ [SugarColumn(IsIgnore = true)]
+ public string? ItemName { get; set; }
+}
\ No newline at end of file
diff --git a/service/Warehouse/MesItemBlManager.cs b/service/Warehouse/MesItemBlManager.cs
index 46d86b9..2d70ca7 100644
--- a/service/Warehouse/MesItemBlManager.cs
+++ b/service/Warehouse/MesItemBlManager.cs
@@ -186,7 +186,7 @@
{
// 鑾峰彇鎴栧垱寤哄嚭搴撳崟
var outId = Guid.NewGuid();
- var outNo = BillNo.GetBillNo("SCBL");
+ var outNo = BillNo.GetBillNo("BL(宸ュ崟琛ユ枡)");
var existingOut = db.Queryable<MesInvItemOuts>()
.Where(a => a.BbillNo == query.blNo
@@ -239,7 +239,6 @@
.Count();
if (itemCount > 0)
- {
// 鏇存柊宸插瓨鍦ㄧ殑鐗╂枡鏄庣粏鏁伴噺
db.Updateable<MesInvItemOutItems>()
.SetColumns(i =>
@@ -247,9 +246,7 @@
.Where(i =>
i.ItemOutId == outId && i.ItemId == stockBarcode.ItemId)
.ExecuteCommand();
- }
else
- {
// 鎻掑叆鏂扮殑鐗╂枡鏄庣粏璁板綍
db.Insertable(new MesInvItemOutItems
{
@@ -275,8 +272,7 @@
// Unit = blDetail.Bld009,
// DepotId = (int)stockBarcode.DepotsId
}).IgnoreColumns(true).ExecuteCommand();
- }
-
+
// 鎻掑叆鍑哄簱鍗曟潯鐮佹槑缁�
db.Insertable(new MesInvItemOutCDetails
{
@@ -682,7 +678,7 @@
{
// 鍒涘缓鏂扮殑鍑哄簱鍗�
var outId = Guid.NewGuid();
- var outNo = BillNo.GetBillNo("SCBL");
+ var outNo = BillNo.GetBillNo("BL(宸ュ崟琛ユ枡)");
// 鎻掑叆鍑哄簱鍗曚富琛�
executeCommand += db.Insertable(new MesInvItemOuts
@@ -911,8 +907,9 @@
/// </summary>
/// <param name="query">鏌ヨ鍙傛暟</param>
/// <returns>鐢熶骇瓒呴鍗曟槑缁嗗垪琛�</returns>
- public (string bl001,List<MesItemBlDetail> item) GetMesItemBlDetailBySccBillNo(
- WarehouseQuery query)
+ public (string bl001, List<MesItemBlDetail> item)
+ GetMesItemBlDetailBySccBillNo(
+ WarehouseQuery query)
{
if (string.IsNullOrEmpty(query.billNo))
throw new Exception("璇烽�夊崟鎹彿锛�");
@@ -959,7 +956,7 @@
})
.ToList();
- return (mesItemBl.Bl001,pendingDetails);
+ return (mesItemBl.Bl001, pendingDetails);
}
/// <summary>
@@ -1113,7 +1110,7 @@
if (outRecord == null)
{
outId = Guid.NewGuid();
- outNo = BillNo.GetBillNo("SCBL"); // 闇�瑕佸疄鐜扮敓鎴愬崟鍙风殑鏂规硶
+ outNo = BillNo.GetBillNo("BL(宸ュ崟琛ユ枡)"); // 闇�瑕佸疄鐜扮敓鎴愬崟鍙风殑鏂规硶
// 鎻掑叆鍑哄簱鍗曚富琛�
db.Insertable(new MesInvItemOuts
@@ -1517,7 +1514,7 @@
itemOut = new MesInvItemOuts
{
Guid = Guid.NewGuid(),
- ItemOutNo = BillNo.GetBillNo("SCBL"), // 闇�瑕佸疄鐜扮敓鎴愬崟鍙风殑鏂规硶
+ ItemOutNo = BillNo.GetBillNo("BL(宸ュ崟琛ユ枡)"), // 闇�瑕佸疄鐜扮敓鎴愬崟鍙风殑鏂规硶
TaskNo = query.blNo,
CreateBy = query.userName,
CreateDate = DateTime.Now,
diff --git a/service/Warehouse/MesItemQtrkManager.cs b/service/Warehouse/MesItemQtrkManager.cs
new file mode 100644
index 0000000..c6baffe
--- /dev/null
+++ b/service/Warehouse/MesItemQtrkManager.cs
@@ -0,0 +1,473 @@
+锘縰sing NewPdaSqlServer.DB;
+using NewPdaSqlServer.Dto.service;
+using NewPdaSqlServer.entity;
+using NewPdaSqlServer.util;
+using SqlSugar;
+
+namespace NewPdaSqlServer.service.Warehouse;
+
+public class MesItemQtrkManager : Repository<MesItemQtrk>
+{
+ public List<string> GetQtckList()
+ {
+ return Db.Queryable<MesItemQtrk>()
+ .Where(x => (x.Qt015 ?? 0) == 1 && (x.Qt014 ?? 0) == 0)
+ .Select(x => x.Qtck)
+ .ToList();
+ }
+
+ public List<MesItemQtrrDetail> GetQtckDetailList(WarehouseQuery query)
+ {
+ // 1. 楠岃瘉鐢宠鍗曟槸鍚﹀瓨鍦�
+ var qtrk = Db.Queryable<MesItemQtrk>()
+ .Where(x => x.Qtck == query.billNo)
+ .First();
+ if (qtrk == null)
+ throw new Exception($"鏈煡璇㈠埌姝ゅ叾浠栧叆搴撶敵璇峰崟 {query.billNo}");
+
+ // 2. 楠岃瘉鐢宠鍗曠姸鎬�
+ if (qtrk.Qt015 != 1)
+ throw new Exception($"鍏朵粬鍏ュ簱鐢宠鍗� {query.billNo} 鏈鏍革紝璇风‘璁わ紒");
+
+ if (qtrk.Qt014 == 1)
+ throw new Exception($"鍏朵粬鍏ュ簱鐢宠鍗� {query.billNo} 宸插畬缁擄紝璇风‘璁わ紒");
+
+ // 3. 鏌ヨ鐢宠鍗曟槑缁�
+ var details = Db.Queryable<MesItemQtrk, MesItemQtrrDetail, MesItems>(
+ (a, b, c) => new JoinQueryInfos(
+ JoinType.Left, a.Guid == b.QtrkGuid,
+ JoinType.Left, c.Id.ToString() == b.ItemId))
+ .Where((a, b, c) =>
+ a.Qtck == query.billNo &&
+ (b.Qd007 ?? 0) - (b.Qd008 ?? 0) > 0)
+ .OrderBy((a, b, c) => b.Qd002)
+ .Select((a, b, c) => new MesItemQtrrDetail
+ {
+ Qtck = a.Qtck,
+ ItemNo = c.ItemNo,
+ ItemName = c.ItemName,
+ Qd007 = b.Qd007 ?? 0,
+ Qd008 = b.Qd008 ?? 0
+ })
+ .ToList();
+
+ return details;
+ }
+
+ public String ScanInDepotsQT(WarehouseQuery query)
+ {
+ var sectionCode = query.sectionCode;
+ var billNo = query.billNo;
+
+ // 1. 楠岃瘉搴撲綅鏉$爜鏄惁涓虹┖
+ if (string.IsNullOrEmpty(sectionCode))
+ {
+ throw new Exception("璇锋壂搴撲綅鏉$爜锛�");
+ }
+
+ // 2. 鏌ヨ搴撲綅瀵瑰簲鐨勪粨搴撶紪鐮�
+ var depotCode = Db.Queryable<MesDepotSections, MesDepots>(
+ (a, b) => new JoinQueryInfos(
+ JoinType.Inner, a.DepotGuid == b.Guid))
+ .Where((a, b) => a.DepotSectionCode == sectionCode)
+ .Select((a, b) => b.DepotCode)
+ .First();
+
+ if (depotCode == null)
+ {
+ throw new Exception($"搴撲綅缂栫爜 {sectionCode} 涓嶅瓨鍦紝璇风‘璁わ紒");
+ }
+
+ // 3. 鏌ヨ鐢宠鍗曞搴旂殑浠撳簱
+ var qtrk = Db.Queryable<MesItemQtrk>()
+ .Where(x => x.Qtck == billNo)
+ .Select(x => x.Qt011)
+ .First();
+
+ if (qtrk == null)
+ {
+ throw new Exception($"搴撲綅缂栫爜 {sectionCode} 涓嶅瓨鍦紝璇风‘璁わ紒");
+ }
+
+ // 4. 楠岃瘉搴撲綅鏄惁灞炰簬鐢宠浠撳簱
+ if (depotCode != qtrk)
+ {
+ throw new Exception($"鎵爜搴撲綅 {sectionCode} 涓嶅睘浜庣敵璇锋浠撳簱!");
+ }
+
+ // 5. 杩斿洖鎴愬姛淇℃伅
+ return $"浠撳簱锛歿qtrk} 搴撲綅锛歿sectionCode}";
+ }
+
+ public (WarehouseQuery form, List<MesItemQtrrDetail> item)
+ ScanInBcodeQtrk(WarehouseQuery query)
+ {
+ var c_user = query.userName;
+ var p_section_code = query.sectionCode;
+ var p_item_barcode = query.barcode;
+ var p_bill_no = query.billNo;
+
+ var billTypeId = 100;
+ var transactionNo = 102;
+
+ // 1. 楠岃瘉搴撲綅鏉$爜鏄惁涓虹┖
+ if (string.IsNullOrEmpty(p_section_code))
+ {
+ throw new Exception("璇锋壂搴撲綅鏉$爜锛�");
+ }
+
+ // 2. 鏌ヨ搴撲綅瀵瑰簲鐨勪粨搴撶紪鐮佸拰浠撳簱ID
+ var depotInfo = Db.Queryable<MesDepotSections, MesDepots>(
+ (a, b) =>
+ new JoinQueryInfos(JoinType.Inner, a.DepotGuid == b.Guid))
+ .Where((a, b) => a.DepotSectionCode == p_section_code)
+ .Select((a, b) => new { b.DepotCode, b.DepotId })
+ .First();
+
+ if (depotInfo == null)
+ {
+ throw new Exception($"搴撲綅缂栫爜 {p_section_code} 涓嶅瓨鍦紝璇风‘璁わ紒");
+ }
+
+ var c_depot_code = depotInfo.DepotCode;
+ var c_depot_id = depotInfo.DepotId;
+
+ // 3. 楠岃瘉鏉$爜鏄惁宸插叆搴�
+ var existsInStock = Db.Queryable<MesInvItemInCDetails>()
+ .Any(x => x.ItemBarcode == p_item_barcode);
+
+ if (existsInStock)
+ {
+ throw new Exception("姝ゆ潯鐮佸凡鎵爜鍏ュ簱瀹屾垚,璇锋牳瀵癸紒");
+ }
+
+ // 4. 鏌ヨ鏉$爜淇℃伅
+ var barcode = Db.Queryable<MesInvItemBarcodes>()
+ .Where(x => x.ItemBarcode == p_item_barcode)
+ .First();
+
+ if (barcode == null)
+ {
+ throw new Exception("鏉$爜涓嶅瓨鍦�,璇锋牳瀵癸紒");
+ }
+
+ if (barcode.ComeFlg != 3)
+ {
+ throw new Exception("鏉$爜涓嶆槸鍏朵粬鍏ュ簱鏉$爜,鏃犳硶鐢ㄥ叾浠栧叆搴擄紒");
+ }
+
+ // 楠岃瘉鏉$爜鏄惁宸插湪搴撳瓨涓�
+ var stockCount = Db.Queryable<MesInvItemStocks>()
+ .Where(x => x.ItemBarcode == p_item_barcode)
+ .Count();
+
+ if (stockCount > 0)
+ {
+ throw new Exception("姝ゆ潯鐮佸凡鎵爜鍏ュ簱瀹屾垚,璇锋牳瀵癸紒");
+ }
+
+ // 5. 鏌ヨ鍏朵粬鍏ュ簱鐢宠鍗�
+ var qtrk = Db.Queryable<MesItemQtrk>()
+ .Where(x => x.Qtck == p_bill_no)
+ .First();
+
+ if (qtrk == null)
+ {
+ throw new Exception("鍏朵粬鍏ュ簱鐢宠鍗曚笉瀛樺湪锛�");
+ }
+
+ // 6. 鏌ヨ鐢宠鍗曟槑缁�
+ var detail = Db.Queryable<MesItemQtrrDetail>()
+ .Where(x =>
+ x.QtrkGuid == qtrk.Guid &&
+ x.ItemId == barcode.ItemId.ToString())
+ .First();
+
+ if (detail == null)
+ {
+ throw new Exception($"鍏朵粬鍏ュ簱鐢宠鍗晎p_bill_no}鏃犳鐗╂枡{barcode.ItemNo} 璇锋牳瀵癸紒");
+ }
+
+ // 7. 楠岃瘉鏁伴噺
+ if (barcode.Quantity > (detail.Qd007 ?? 0) - (detail.Qd008 ?? 0))
+ {
+ throw new Exception("鏉$爜鏁伴噺瓒呰繃鐢宠鏁伴噺,璇锋牳瀵癸紒");
+ }
+
+ var details = new List<MesItemQtrrDetail>();
+
+ // 8. 鎵ц鍏ュ簱浜嬪姟
+ UseTransaction(db =>
+ {
+ var res = 0;
+ // 鏌ヨ鏄惁瀛樺湪鏈叆搴撶殑鍏ュ簱鍗�
+ var existingInv = db.Queryable<MesInvItemIns>()
+ .Where(x => x.Status == 0
+ && x.TransctionNo == transactionNo.ToString()
+ && x.CbillNo == p_bill_no
+ && x.SuppNo == barcode.SuppNo
+ // && x.DepotsCode == c_depot_code)
+ && x.DepotsId == c_depot_id)
+ .First();
+
+ var newId = Guid.Empty;
+ var billNo = "";
+ // 濡傛灉涓嶅瓨鍦ㄥ垯鍒涘缓鏂板叆搴撳崟
+ if (existingInv == null)
+ {
+ newId = Guid.NewGuid();
+ billNo = BillNo.GetBillNo("INV_IN_OTHER");
+
+ barcode.UrgentFlag ??= false;
+
+ res += db.Insertable(new MesInvItemIns
+ {
+ Guid = newId,
+ BillNo = billNo,
+ BillTypeId = billTypeId,
+ InsDate = DateTime.Now,
+ DepotsCode = c_depot_code,
+ TransctionNo = transactionNo.ToString(),
+ SuppNo = barcode.SuppNo,
+ CreateBy = c_user,
+ CreateDate = DateTime.Now,
+ LastupdateBy = c_user,
+ LastupdateDate = DateTime.Now,
+ UrgentFlag = barcode.UrgentFlag.Value ? (byte)1 : (byte)0,
+ CbillNo = p_bill_no,
+ Fstatus = 0,
+ Status = 0,
+ Reason = qtrk.Qt010
+ }).IgnoreColumns(true).ExecuteCommand();
+ }
+ else
+ {
+ newId = existingInv.Guid;
+ billNo = existingInv.BillNo;
+ }
+
+ // 鏌ヨ鏄惁瀛樺湪鐩稿悓鐗╂枡鍜屽伐鍗曡鐨勫叆搴撴槑缁�
+ var existingItem = db.Queryable<MesInvItemInCItems>()
+ .Where(x => x.ItemInId == newId
+ && x.ItemId == barcode.ItemId
+ && x.WorkNo == barcode.WorkNo
+ && x.WorkLine == barcode.WorkLine)
+ .First();
+
+ if (existingItem == null)
+ {
+ // 涓嶅瓨鍦ㄥ垯鏂板鍏ュ簱鏄庣粏
+ res += db.Insertable(new MesInvItemInCItems
+ {
+ Guid = Guid.NewGuid(),
+ ItemInId = newId,
+ Quantity = barcode.Quantity,
+ CreateBy = c_user,
+ CreateDate = DateTime.Now,
+ ItemNo = barcode.ItemNo,
+ DepotCode = c_depot_code,
+ ItemSname = barcode.ItemSname,
+ Unit = barcode.Unit,
+ Ebeln = barcode.WorkNo,
+ BillNo = billNo,
+ Factory = barcode.Factory,
+ Company = barcode.Company,
+ WorkNo = barcode.WorkNo,
+ EbelnLineNo = barcode.WorkLine,
+ CbillNo = barcode.BillNo,
+ WorkLine = barcode.WorkLine,
+ SuppNo = barcode.SuppNo,
+ Remark = barcode.Memo,
+ EbelnK3id = barcode.EbelnK3id,
+ LineK3id = barcode.LineK3id,
+ ItemId = barcode.ItemId
+ }).IgnoreColumns(true).ExecuteCommand();
+ }
+ else
+ {
+ // 瀛樺湪鍒欐洿鏂版暟閲�
+ res += db.Updateable<MesInvItemInCItems>()
+ .SetColumns(
+ x => x.Quantity == x.Quantity + barcode.Quantity)
+ .Where(x => x.ItemInId == newId
+ && x.ItemId == barcode.ItemId
+ && x.WorkNo == barcode.WorkNo
+ && x.WorkLine == barcode.WorkLine)
+ .ExecuteCommand();
+ }
+
+
+ // 鎻掑叆鍏ュ簱鏄庣粏璁板綍
+ res += db.Insertable(new MesInvItemInCDetails
+ {
+ ItemInId = newId,
+ BillNo = billNo,
+ ItemBarcode = barcode.ItemBarcode,
+ Quantity = barcode.Quantity,
+ BarcodeFlag = true,
+ EpFlag = true,
+ WorkType = 1,
+ ItemNo = barcode.ItemNo,
+ LotNo = barcode.LotNo,
+ SuppId = barcode.SuppId,
+ SuppNo = barcode.SuppNo,
+ DepotId = c_depot_id,
+ DepotCode = c_depot_code,
+ DepotSectionCode = p_section_code,
+ ItemSname = barcode.ItemSname,
+ Unit = barcode.Unit,
+ CreateBy = c_user,
+ CreateDate = DateTime.Now,
+ LastupdateBy = c_user,
+ LastupdateDate = DateTime.Now,
+ Remark = barcode.Memo,
+ Factory = barcode.Factory,
+ Company = barcode.Company,
+ Ebeln = barcode.Mblnr,
+ EbelnLineNo = barcode.Zeile,
+ WorkNo = barcode.WorkNo,
+ WorkLine = barcode.WorkLine,
+ CbillNo = barcode.BillNo,
+ UrgentFlag = barcode.UrgentFlag,
+ BoardStyle = barcode.BoardStyle,
+ TaskNo = barcode.TaskNo,
+ EbelnK3id = barcode.EbelnK3id,
+ LineK3id = barcode.LineK3id,
+ ItemId = barcode.ItemId,
+ Ischeck = true
+ }).IgnoreColumns(true).ExecuteCommand();
+
+ // 鎻掑叆搴撳瓨涓氬姟娴佹按璁板綍
+ res += db.Insertable(new MesInvBusiness2
+ {
+ Guid = Guid.NewGuid(),
+ Status = 1,
+ BillTypeId = billTypeId,
+ TransactionCode = transactionNo.ToString(),
+ BusinessType = 1,
+ ItemBarcode = barcode.ItemBarcode,
+ ItemNo = barcode.ItemNo,
+ LotNo = barcode.LotNo,
+ EpFlag = true,
+ Quantity = barcode.Quantity,
+ InvDepotId = c_depot_id,
+ ToInvDepotsCode = c_depot_code,
+ ToInvDepotSectionsCode = p_section_code,
+ Description = "鍏朵粬鍏ュ簱",
+ CreateBy = c_user,
+ CreateDate = DateTime.Now,
+ LastupdateBy = c_user,
+ LastupdateDate = DateTime.Now,
+ TaskNo = barcode.BillNo,
+ BillNo = billNo,
+ WorkNo = barcode.WorkNo,
+ WorkLine = barcode.WorkLine,
+ SuppId = barcode.SuppId,
+ SuppNo = barcode.SuppNo,
+ EbelnK3id = barcode.EbelnK3id,
+ LineK3id = barcode.LineK3id,
+ ItemId = barcode.ItemId,
+ // SalesOrder = barcode.SalesOrder,
+ // IsZy = barcode.IsZy,
+ // OuterBarcode = barcode.OuterBarcode
+ }).IgnoreColumns(true).ExecuteCommand();
+
+ barcode.EpFlag ??= false;
+
+ // 鎻掑叆搴撳瓨璁板綍
+ res += db.Insertable(new MesInvItemStocks
+ {
+ TaskNo = barcode.TaskNo,
+ ItemBarcode = p_item_barcode,
+ ItemNo = barcode.ItemNo,
+ LotNo = barcode.LotNo,
+ Quantity = barcode.Quantity,
+ EpFlag = barcode.EpFlag.Value ? (byte)1 : (byte)0,
+ DepotId = c_depot_id,
+ DepotsCode = c_depot_code,
+ DepotSectionsCode = p_section_code,
+ CheckDate = DateTime.Now,
+ IndepDate = DateTime.Now,
+ Factory = barcode.Factory,
+ Company = barcode.Company,
+ BoardStyle = barcode.BoardStyle,
+ WorkNo = barcode.WorkNo,
+ WorkLine = barcode.WorkLine,
+ SuppId = barcode.SuppId,
+ SuppNo = barcode.SuppNo,
+ EbelnK3id = barcode.EbelnK3id,
+ LineK3id = barcode.LineK3id,
+ ItemId = barcode.ItemId,
+ BillNo = barcode.BillNo,
+ // SalesOrder = barcode.SalesOrder,
+ // IsZy = barcode.IsZy,
+ // Visable = 0,
+ // OuterBarcode = barcode.OuterBarcode
+ }).IgnoreColumns(true).ExecuteCommand();
+
+ // 鏇存柊鏉$爜鍏ュ簱鏍囧織
+ // db.Updateable<MesInvItemBarcodes>()
+ // .SetColumns(x => x.rkf == 1)
+ // .Where(x => x.ItemBarcode == p_item_barcode)
+ // .ExecuteCommand();
+
+ // 鏇存柊鐢宠鍗曟槑缁嗗凡鍏ュ簱鏁伴噺
+ res += db.Updateable<MesItemQtrrDetail>()
+ .SetColumns(x => x.Qd008 == (x.Qd008 ?? 0) + barcode.Quantity)
+ .Where(x => x.Guid == barcode.Guid)
+ .ExecuteCommand();
+
+ // 妫�鏌ユ槸鍚﹀畬鍏ㄥ叆搴撳苟鏇存柊鐘舵��
+ var detail1 = db.Queryable<MesItemQtrrDetail>()
+ .Where(x => x.Guid == detail.Guid)
+ .First();
+
+ if ((detail1.Qd007 ?? 0) - (detail1.Qd008 ?? 0) == barcode.Quantity)
+ {
+ res += db.Updateable<MesItemQtrrDetail>()
+ .SetColumns(x => x.Qd011 == 1)
+ .Where(x => x.Guid == detail1.Guid)
+ .ExecuteCommand();
+ }
+
+ details = Db.Queryable<MesItemQtrk, MesItemQtrrDetail, MesItems>(
+ (a, b, c) => new JoinQueryInfos(
+ JoinType.Left, a.Guid == b.QtrkGuid,
+ JoinType.Left, c.Id.ToString() == b.ItemId))
+ .Where((a, b, c) =>
+ a.Qtck == p_bill_no &&
+ (b.Qd007 ?? 0) - (b.Qd008 ?? 0) > 0)
+ .OrderBy((a, b, c) => b.Qd002)
+ .Select((a, b, c) => new MesItemQtrrDetail
+ {
+ Qtck = a.Qtck,
+ ItemNo = c.ItemNo,
+ ItemName = c.ItemName,
+ Qd007 = b.Qd007 ?? 0,
+ Qd008 = b.Qd008 ?? 0
+ })
+ .ToList();
+
+ if (CollectionUtil.IsNullOrEmpty(details))
+ {
+ res += db.Updateable<MesItemQtrk>()
+ .SetColumns(s => s.Qt014 == 1)
+ .Where(x => x.Qtck == p_bill_no)
+ .ExecuteCommand();
+ }
+
+ if (res < 5)
+ {
+ throw new Exception("鎻掑叆鎴栨洿鏂板け璐�");
+ }
+
+ return res;
+ });
+
+ query.itemNo = barcode.ItemNo;
+ query.Num = barcode.Quantity;
+
+ return (query, details);
+ }
+ // End of Selection
+}
\ No newline at end of file
diff --git a/service/Warehouse/MesItemTblManager.cs b/service/Warehouse/MesItemTblManager.cs
index 75ee6e3..d0284e4 100644
--- a/service/Warehouse/MesItemTblManager.cs
+++ b/service/Warehouse/MesItemTblManager.cs
@@ -406,7 +406,7 @@
return totalResult;
});
-
+
query.itemNo = c_mes_inv_item_barcodes.ItemNo;
query.Num = c_quantity.Value;
return query;
diff --git a/service/Wom/MesWorkProdManager.cs b/service/Wom/MesWorkProdManager.cs
index 04a170c..3d88cb7 100644
--- a/service/Wom/MesWorkProdManager.cs
+++ b/service/Wom/MesWorkProdManager.cs
@@ -11,49 +11,76 @@
//褰撳墠绫诲凡缁忕户鎵夸簡 Repository 澧炪�佸垹銆佹煡銆佹敼鐨勬柟娉�
/// <summary>
- /// PDA鎵弿鐢熶骇鎶ュ伐
+ /// PDA鎵弿鐢熶骇鎶ュ伐
/// </summary>
+ /// <param name="request">
+ /// 鎶ュ伐璇锋眰鍙傛暟锛屽寘鍚�:
+ /// - StaffNo: 鍛樺伐宸ュ彿锛屽繀濉�
+ /// - ItemBarcode: 鐗╂枡鏉$爜锛屽繀濉�
+ /// - UserNo: 鎿嶄綔鐢ㄦ埛璐﹀彿锛屽繀濉�
+ /// </param>
+ /// <returns>
+ /// 杩斿洖鎶ュ伐缁撴灉瀵硅薄锛屽寘鍚�:
+ /// - TaskNo: 宸ュ崟鍙�
+ /// - ItemNo: 鐗╂枡缂栧彿
+ /// - PlanQty: 璁″垝鏁伴噺
+ /// - ReportedQty: 宸叉姤宸ユ暟閲�
+ /// - CurrentQty: 鏈鎶ュ伐鏁伴噺
+ /// - BarcodeQty: 鏉$爜鏁伴噺
+ /// - ItemName: 鐗╂枡鍚嶇О
+ /// - ItemModel: 鐗╂枡鍨嬪彿
+ /// - Message: 澶勭悊缁撴灉娑堟伅
+ /// </returns>
+ /// <exception cref="Exception">
+ /// - 褰撳憳宸ヤ笉瀛樺湪鏃舵姏鍑哄紓甯�
+ /// - 褰撴潯鐮佷笉瀛樺湪鏃舵姏鍑哄紓甯�
+ /// - 褰撶墿鏂欎笉瀛樺湪鏃舵姏鍑哄紓甯�
+ /// - 褰撴潯鐮侀噸澶嶆壂鎻忔椂鎶涘嚭寮傚父
+ /// - 褰撳伐鍗曚笉瀛樺湪鏃舵姏鍑哄紓甯�
+ /// - 褰撴姤宸ユ暟閲忓皬浜庣瓑浜�0鏃舵姏鍑哄紓甯�
+ /// - 褰撴姤宸ユ�绘暟閲忚秴杩囪鍒掓暟閲忔椂鎶涘嚭寮傚父
+ /// </exception>
public ScanWorkResult ScanWorkAsync(ScanWorkRequest request)
{
- // 鏌ヨ浜哄憳淇℃伅
+ // 1. 楠岃瘉鍛樺伐淇℃伅
var staff = Db.Queryable<MesStaff>()
.Where(x => x.StaffNo == request.StaffNo)
.First();
if (staff == null)
throw new Exception("璇峰厛閫夋嫨浜哄憳");
- // 鏌ヨ鏉$爜淇℃伅
+ // 2. 楠岃瘉鏉$爜淇℃伅
var barcode = Db.Queryable<MesInvItemBarcodes>()
.Where(x => x.ItemBarcode == request.ItemBarcode)
.First();
if (barcode == null)
throw new Exception($"鏃犳鏉$爜锛岃鏍稿锛亄request.ItemBarcode}");
- // 鏌ヨ鐗╂枡淇℃伅
+ // 3. 楠岃瘉鐗╂枡淇℃伅
var item = Db.Queryable<MesItems>()
.Where(x => x.Id == barcode.ItemId)
.First();
if (item == null)
throw new Exception($"鏃犳鐗╂枡锛岃鏍稿锛亄request.ItemBarcode}");
- // 纭畾鍗曟嵁绫诲瀷
- int billTypeId = 900;
- int transactionNo = 902;
+ // 4. 鏍规嵁鏉$爜澶囨敞纭畾鍗曟嵁绫诲瀷鍜屼氦鏄撳彿
+ var billTypeId = 900; // 榛樿鍗曟嵁绫诲瀷
+ var transactionNo = 902; // 榛樿浜ゆ槗鍙�
switch (barcode.Memo?.Trim() ?? "0")
{
case "涓濆嵃":
- transactionNo = 901;
+ transactionNo = 901; // 涓濆嵃宸ュ簭
break;
case "鍗婃垚鍝�":
- transactionNo = 902;
+ transactionNo = 902; // 鍗婃垚鍝佸伐搴�
break;
case "鍖呰":
case "鎴愬搧":
- transactionNo = 903;
+ transactionNo = 903; // 鎴愬搧/鍖呰宸ュ簭
break;
}
- // 妫�鏌ユ潯鐮佹槸鍚﹂噸澶嶆壂鎻�
+ // 5. 妫�鏌ユ潯鐮佹槸鍚﹂噸澶嶆壂鎻�
var exists = Db.Queryable<MesWorkProd, MesWorkProdCDetails>(
(a, b) =>
new JoinQueryInfos(JoinType.Inner,
@@ -66,7 +93,7 @@
if (exists)
throw new Exception("鏉$爜閲嶅鎵弿锛岃鏍稿锛�");
- // 鑾峰彇宸叉姤宸ユ暟閲�
+ // 6. 鑾峰彇宸叉姤宸ユ暟閲�
var reportedQty = Db.Queryable<MesWorkProd, MesWorkProdCDetails>(
(a, b) =>
new JoinQueryInfos(JoinType.Inner,
@@ -76,7 +103,7 @@
&& a.TaskNo == barcode.BillNo)
.Sum((a, b) => b.Quantity);
- // 鑾峰彇宸ュ崟璁″垝鏁伴噺鍜屽瀷鍙�
+ // 7. 鑾峰彇宸ュ崟璁″垝鏁伴噺鍜屽瀷鍙�
var workOrder = Db.Queryable<Womdaa>()
.Where(x => x.Daa001 == barcode.BillNo)
.First();
@@ -86,9 +113,10 @@
var planQty = workOrder.Daa008;
var itemModel = workOrder.Daa004;
+ // 8. 浣跨敤浜嬪姟澶勭悊鎶ュ伐鏁版嵁
UseTransaction(db =>
{
- // 鏈夋暟閲忔潯鐮佽嚜鍔ㄦ姤宸�
+ // 9. 澶勭悊鏈夋暟閲忔潯鐮佺殑鑷姩鎶ュ伐
if (barcode.Quantity > 0)
{
var reportQty = barcode.Quantity;
@@ -101,7 +129,7 @@
throw new Exception(
$"鏈鎶ュ伐鏁伴噺锛歿reportQty} 澶т簬鍓╀綑鎶ュ伐鏁伴噺锛歿workOrder.Daa008 - reportedQty ?? 0}锛岃鏍稿锛�");
- // 鏇存柊鏉$爜鐘舵��
+ // 10. 鏇存柊鏉$爜鐘舵��
db.Updateable<MesInvItemBarcodes>()
.SetColumns(x => new MesInvItemBarcodes
{
@@ -111,7 +139,7 @@
.Where(x => x.Guid == barcode.Guid)
.ExecuteCommandAsync();
- // 鑾峰彇鎴栧垱寤烘姤宸ュ崟
+ // 11. 鑾峰彇鎴栧垱寤烘姤宸ュ崟
var workProd = db.Queryable<MesWorkProd>()
.Where(x => x.TaskNo == barcode.BillNo
&& x.CreateDate.Value.Date.ToString(
@@ -125,7 +153,7 @@
if (workProd == null)
{
var id = Guid.NewGuid();
- var billNo = BillNo.GetBillNo("MES_WORK");
+ var billNo = BillNo.GetBillNo("BG(鎶ュ伐缂栧彿)");
workProd = new MesWorkProd
{
@@ -147,7 +175,7 @@
.ExecuteCommand();
}
- // 鎻掑叆鎶ュ伐鏄庣粏
+ // 12. 鎻掑叆鎶ュ伐鏄庣粏
var detailId = Guid.NewGuid();
db.Insertable(new MesWorkProdCDetails
{
@@ -169,7 +197,7 @@
BgYg = staff.Id
}).IgnoreColumns(true).ExecuteCommand();
- // 鏇存柊宸ュ崟宸叉姤宸ユ暟閲�
+ // 13. 鏇存柊宸ュ崟宸叉姤宸ユ暟閲�
db.Updateable<Womdaa>()
.SetColumns(x =>
x.Daa011 == (x.Daa011 ?? 0) + (int)barcode.Quantity
@@ -177,7 +205,7 @@
.Where(x => x.Daa001 == barcode.BillNo)
.ExecuteCommandAsync();
- // 閲嶆柊鑾峰彇宸叉姤宸ユ暟閲�
+ // 14. 閲嶆柊鑾峰彇鏈�鏂板凡鎶ュ伐鏁伴噺
reportedQty = db.Queryable<MesWorkProd, MesWorkProdCDetails>(
(a, b) =>
new JoinQueryInfos(JoinType.Inner,
@@ -191,6 +219,7 @@
return 1;
});
+ // 15. 杩斿洖澶勭悊缁撴灉
return new ScanWorkResult
{
TaskNo = barcode.TaskNo,
@@ -207,45 +236,59 @@
/// <summary>
- /// PDA鎵弿鐢熶骇鎶ュ伐 prc_rf_pda_scan_work_prod
+ /// PDA鎵弿鐢熶骇鎶ュ伐 prc_rf_pda_scan_work_prod
/// </summary>
+ /// <param name="request">
+ /// 鎶ュ伐璇锋眰鍙傛暟锛屽寘鍚�:
+ /// - ItemBarcode: 鐗╂枡鏉$爜锛屽繀濉�
+ /// - Quantity: 鎶ュ伐鏁伴噺锛屽繀濉笖澶т簬0
+ /// - UserNo: 鎿嶄綔鐢ㄦ埛璐﹀彿锛屽繀濉�
+ /// </param>
+ /// <returns>杩斿洖甯冨皵鍊硷紝true琛ㄧず鎶ュ伐鎴愬姛锛宖alse琛ㄧず鎶ュ伐澶辫触</returns>
+ /// <exception cref="Exception">
+ /// - 褰撴姤宸ユ暟閲忓皬浜庣瓑浜�0鏃舵姏鍑哄紓甯�
+ /// - 褰撴潯鐮佷笉瀛樺湪鏃舵姏鍑哄紓甯�
+ /// - 褰撳伐鍗曚笉瀛樺湪鏃舵姏鍑哄紓甯�
+ /// - 褰撴姤宸ユ�绘暟閲忚秴杩囪鍒掓暟閲忔椂鎶涘嚭寮傚父
+ /// </exception>
public bool ScanWorkProdAsync(ScanWorkRequest request)
{
+ // 1. 楠岃瘉鎶ュ伐鏁伴噺鏄惁澶т簬0
if (request.Quantity <= 0)
throw new Exception("鎶ュ伐鏁伴噺涓嶈兘灏忎簬绛変簬 0锛岃鏍稿锛�");
- // 鏌ヨ鏉$爜淇℃伅
+ // 2. 鏌ヨ鏉$爜淇℃伅锛岄獙璇佹潯鐮佹槸鍚﹀瓨鍦�
var barcode = Db.Queryable<MesInvItemBarcodes>()
.Where(x => x.ItemBarcode == request.ItemBarcode)
.First();
if (barcode == null)
throw new Exception($"搴撳瓨涓棤姝ゆ潯鐮侊紝璇锋牳瀵癸紒{request.ItemBarcode}");
- // 鏌ヨ宸ュ崟淇℃伅
+ // 3. 鏌ヨ宸ュ崟淇℃伅锛岄獙璇佸伐鍗曟槸鍚﹀瓨鍦�
var womdaa = Db.Queryable<Womdaa>()
.Where(x => x.Daa001 == barcode.BillNo)
.First();
if (womdaa == null)
throw new Exception($"鏉$爜涓嶆槸鎶ュ伐鏉$爜/鏃犲搴斿伐鍗曪紝璇锋牳瀵癸紒{request.ItemBarcode}");
- // 纭畾鍗曟嵁绫诲瀷
- int billTypeId = 900;
- int transactionNo = 902;
+ // 4. 鏍规嵁鏉$爜澶囨敞纭畾鍗曟嵁绫诲瀷鍜屼氦鏄撳彿
+ var billTypeId = 900; // 榛樿鍗曟嵁绫诲瀷
+ var transactionNo = 902; // 榛樿浜ゆ槗鍙�(鍗婃垚鍝佸伐搴�)
switch (barcode.Memo?.Trim() ?? "0")
{
case "涓濆嵃":
- transactionNo = 901;
+ transactionNo = 901; // 涓濆嵃宸ュ簭
break;
case "鍗婃垚鍝�":
- transactionNo = 902;
+ transactionNo = 902; // 鍗婃垚鍝佸伐搴�
break;
case "鎴愬搧":
case "鍖呰":
- transactionNo = 903;
+ transactionNo = 903; // 鎴愬搧/鍖呰宸ュ簭
break;
}
- // 姹囨�诲凡鎵潯鐮佹暟閲�
+ // 5. 姹囨�诲凡鎵潯鐮佹暟閲忥紝楠岃瘉鏄惁瓒呭嚭璁″垝鏁伴噺
var sumQty = Db.Queryable<MesWorkProd, MesWorkProdCDetails>((a, b) =>
new JoinQueryInfos(JoinType.Inner, a.BillNo == b.BillNo))
.Where((a, b) => a.BillTypeId == billTypeId
@@ -260,16 +303,17 @@
throw new Exception(
$"鏈鎶ュ伐鏁伴噺锛歿request.Quantity} 澶т簬鍓╀綑鎶ュ伐鏁伴噺锛歿womdaa.Daa008 - (sumQty - request.Quantity)}锛岃鏍稿锛�");
+ // 6. 寮�鍚簨鍔″鐞嗘姤宸ユ暟鎹�
return UseTransaction(db =>
{
- // 鏇存柊鏉$爜淇℃伅
+ // 6.1 鏇存柊鏉$爜淇℃伅锛岃缃凡鎶ュ伐鏍囪鍜屾暟閲�
db.Updateable<MesInvItemBarcodes>()
.SetColumns(x => x.WorkFlg == true)
.SetColumns(x => x.Quantity == request.Quantity)
.Where(x => x.Guid == barcode.Guid)
.ExecuteCommand();
- // 鑾峰彇鎴栧垱寤烘姤宸ュ崟
+ // 6.2 鑾峰彇鎴栧垱寤烘姤宸ュ崟
var workProd = db.Queryable<MesWorkProd>()
.Where(x => x.TaskNo == barcode.BillNo
&& x.CreateDate.Value.Date.ToString("yyyy-MM-dd") ==
@@ -279,12 +323,13 @@
&& x.Status == 0)
.First();
+ // 6.3 濡傛灉鎶ュ伐鍗曚笉瀛樺湪鍒欏垱寤烘柊鐨勬姤宸ュ崟
if (workProd == null)
{
- var billNo = BillNo.GetBillNo("MES_WORK");
+ var billNo = BillNo.GetBillNo("BG(鎶ュ伐缂栧彿)");
workProd = new MesWorkProd
{
- Id = Guid.NewGuid(),
+ Id = Guid.NewGuid(),
BillNo = billNo,
LineNo = barcode.LineNo,
Company = barcode.Company,
@@ -293,7 +338,7 @@
CreateDate = DateTime.Now,
LastupdateBy = request.UserNo,
LastupdateDate = DateTime.Now,
- PbillNo = barcode.BillNo, // Added PbillNo field
+ PbillNo = barcode.BillNo,
BillTypeId = billTypeId,
TransactionNo = transactionNo,
TaskNo = barcode.BillNo
@@ -302,10 +347,10 @@
db.Insertable(workProd).IgnoreColumns(true).ExecuteCommand();
}
- // 鎻掑叆鎶ュ伐鏄庣粏
+ // 6.4 鎻掑叆鎶ュ伐鏄庣粏璁板綍
var detail = new MesWorkProdCDetails
{
- Id = Guid.NewGuid(),
+ Id = Guid.NewGuid(),
BillNo = workProd.BillNo,
ItemBarcode = request.ItemBarcode,
Quantity = (int)request.Quantity,
@@ -316,7 +361,7 @@
LastupdateBy = request.UserNo,
LastupdateDate = DateTime.Now,
ItemNo = barcode.ItemNo,
- PbillNo = barcode.BillNo, // Added PbillNo from barcode
+ PbillNo = barcode.BillNo,
WorkLast = barcode.WorkLast,
SilkPqty = barcode.SilkPqty,
SilkId = barcode.SilkId,
--
Gitblit v1.9.3