From 0cff826ea489a1faa5cbb320cad52d102530a9e0 Mon Sep 17 00:00:00 2001
From: zjh <2207896513@qq.com>
Date: 星期四, 13 三月 2025 10:53:42 +0800
Subject: [PATCH] 代码提交

---
 StandardPda/MES.Service/service/QC/SJService.cs                |  458 ++++
 StandardPda/MES.Service/Modes/MesInvItemStocks.cs              |  203 +
 StandardPda/MES.Service/Modes/VLineUser.cs                     |   23 
 StandardPda/MES.Service/Modes/MesQa.cs                         |   73 
 StandardPda/MES.Service/Modes/MesInvItemIns.cs                 |  322 +++
 StandardPda/MES.Service/Dto/service/XJDto.cs                   |   35 
 StandardPda/MES.Service/Modes/MesDeptUser.cs                   |   80 
 StandardPda/MES.Service/service/QC/SuspendService.cs           |  119 +
 StandardPda/MESApplication/Controllers/QC/RKJController.cs     |  391 +++
 StandardPda/MES.Service/Modes/MesInvItemInCDetails.cs          |  362 +++
 StandardPda/MES.Service/Modes/MesScgdGx.cs                     |  128 +
 StandardPda/MES.Service/Modes/QsItemOqcReq.cs                  |    3 
 StandardPda/MES.Service/service/QC/RKJService.cs               |  864 ++++++++
 StandardPda/MES.Service/Modes/MesQsSuspend.cs                  |   89 
 StandardPda/MES.Service/Modes/MesQualityStandard.cs            |  204 +
 StandardPda/MES.Service/Modes/QsItemOqcItemDetail.cs           |    2 
 StandardPda/MES.Service/service/QC/BaseService.cs              |   20 
 StandardPda/MES.Service/Dto/service/RKJDaa001.cs               |    2 
 StandardPda/MESApplication/Controllers/QC/SJController.cs      |  322 +++
 StandardPda/MES.Service/Modes/MesLineUser.cs                   |   40 
 StandardPda/MESApplication/Controllers/QC/XJController.cs      |  445 ++++
 StandardPda/MES.Service/Dto/service/RkDaa002.cs                |    3 
 StandardPda/MES.Service/Modes/MesInvItemInCDetails2.cs         |  368 +++
 StandardPda/MESApplication/Controllers/QC/SuspendController.cs |  176 +
 StandardPda/MES.Service/Modes/MesInvItemBarcodes.cs            |  496 ++++
 StandardPda/MES.Service/Modes/MesLine.cs                       |  167 +
 StandardPda/MES.Service/Modes/MesQaItemsDetect02.cs            |  487 ++++
 StandardPda/MES.Service/service/QC/XJService.cs                |  531 ++++
 28 files changed, 6,403 insertions(+), 10 deletions(-)

diff --git a/StandardPda/MES.Service/Dto/service/RKJDaa001.cs b/StandardPda/MES.Service/Dto/service/RKJDaa001.cs
index e7a61de..53172d8 100644
--- a/StandardPda/MES.Service/Dto/service/RKJDaa001.cs
+++ b/StandardPda/MES.Service/Dto/service/RKJDaa001.cs
@@ -21,4 +21,6 @@
     // 璁㈠崟鏁伴噺
     [SugarColumn(ColumnName = "QUANTITY")]
     public decimal? Quantity { get; set; }
+
+    [SugarColumn(ColumnName = "LOT_NO")] public string? LotNo { get; set; }
 }
\ No newline at end of file
diff --git a/StandardPda/MES.Service/Dto/service/RkDaa002.cs b/StandardPda/MES.Service/Dto/service/RkDaa002.cs
index cd53487..2080108 100644
--- a/StandardPda/MES.Service/Dto/service/RkDaa002.cs
+++ b/StandardPda/MES.Service/Dto/service/RkDaa002.cs
@@ -24,4 +24,7 @@
 
     [SugarColumn(ColumnName = "ITEM_NAME")]
     public string? ItemName { get; set; }
+
+    [SugarColumn(ColumnName = "DAA020")]
+    public string? Daa020 { get; set; }
 }
\ No newline at end of file
diff --git a/StandardPda/MES.Service/Dto/service/XJDto.cs b/StandardPda/MES.Service/Dto/service/XJDto.cs
new file mode 100644
index 0000000..f36a69b
--- /dev/null
+++ b/StandardPda/MES.Service/Dto/service/XJDto.cs
@@ -0,0 +1,35 @@
+锘縰sing MES.Service.Modes;
+
+namespace MES.Service.Dto.service;
+
+public class XJDto
+{
+    public string? userNo { get; set; }
+
+    //涓昏〃id
+    public int? gid { get; set; }
+
+    //瀛愯〃id
+    public int? pid { get; set; }
+
+    //瀛欒〃id
+    public int? id { get; set; }
+
+    //澶囨敞
+    public string? Remarks { get; set; }
+
+    //==========================================
+    //宸℃涓诲瓙琛ㄩ渶瑕佺殑鏁版嵁
+    public QsQaItemXj? from { get; set; }
+
+    public List<QsQaItemXj01>? items { get; set; }
+
+    //==========================================
+    //宸℃瀛愬瓩琛ㄩ渶瑕佺殑鏁版嵁
+
+    public QsQaItemXj01? ItemXj01 { get; set; }
+
+    public List<QsQaItemXj02>? ItemXj02s { get; set; }
+
+    public MesQsSuspend? entity { get; set; }
+}
\ No newline at end of file
diff --git a/StandardPda/MES.Service/Modes/MesDeptUser.cs b/StandardPda/MES.Service/Modes/MesDeptUser.cs
new file mode 100644
index 0000000..287728a
--- /dev/null
+++ b/StandardPda/MES.Service/Modes/MesDeptUser.cs
@@ -0,0 +1,80 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using SqlSugar;
+
+namespace MES.Service.Modes
+{
+    /// <summary>
+    /// 
+    ///</summary>
+    [SugarTable("MES_DEPT_USER")]
+    public class MesDeptUser
+    {
+        /// <summary>
+        /// SEQ_USER 
+        ///</summary>
+        [SugarColumn(ColumnName = "ID", IsPrimaryKey = true)]
+        public decimal Id { get; set; }
+
+        /// <summary>
+        /// 杞﹂棿 
+        ///</summary>
+        [SugarColumn(ColumnName = "WORKSHOP")]
+        public string Workshop { get; set; }
+
+        /// <summary>
+        /// 缂栫爜 
+        ///</summary>
+        [SugarColumn(ColumnName = "CODE")]
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鐢ㄦ埛 
+        ///</summary>
+        [SugarColumn(ColumnName = "USER_NO")]
+        public string UserNo { get; set; }
+
+        /// <summary>
+        /// 宀椾綅 
+        ///</summary>
+        [SugarColumn(ColumnName = "POST")]
+        public string Post { get; set; }
+
+        /// <summary>
+        /// 鐢佃瘽 
+        ///</summary>
+        [SugarColumn(ColumnName = "PHONE")]
+        public string Phone { get; set; }
+
+        /// <summary>
+        /// 鏄惁绂昏亴 
+        ///</summary>
+        [SugarColumn(ColumnName = "IS_DEPARTURE")]
+        public short? IsDeparture { get; set; }
+
+        /// <summary>
+        /// 0鏈鏍� 1瀹℃牳 
+        ///</summary>
+        [SugarColumn(ColumnName = "STATUS")]
+        public decimal? Status { get; set; }
+
+        /// <summary>
+        /// 瀹℃牳浜� 
+        ///</summary>
+        [SugarColumn(ColumnName = "ISSUED_BY")]
+        public string IssuedBy { get; set; }
+
+        /// <summary>
+        /// 瀹℃牳鏃堕棿 
+        ///</summary>
+        [SugarColumn(ColumnName = "ISSUED_DATE")]
+        public DateTime? IssuedDate { get; set; }
+
+        /// <summary>
+        /// 鐢ㄦ埛鍚� 
+        ///</summary>
+        [SugarColumn(ColumnName = "USER_NAME")]
+        public string UserName { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/StandardPda/MES.Service/Modes/MesInvItemBarcodes.cs b/StandardPda/MES.Service/Modes/MesInvItemBarcodes.cs
new file mode 100644
index 0000000..fc6f2cc
--- /dev/null
+++ b/StandardPda/MES.Service/Modes/MesInvItemBarcodes.cs
@@ -0,0 +1,496 @@
+锘縰sing SqlSugar;
+
+namespace MES.Service.Modes;
+
+/// <summary>
+///     鐗╂枡鏉$爜琛�
+/// </summary>
+[SugarTable("MES_INV_ITEM_BARCODES")]
+public class MesInvItemBarcodes
+{
+    /// <summary>
+    ///     SEQ_BARCODE_PSN_ID
+    /// </summary>
+    [SugarColumn(ColumnName = "ID", OracleSequenceName = "SEQ_EQBASE",
+        IsPrimaryKey = true)]
+    public decimal Id { get; set; }
+
+    /// <summary>
+    ///     鐗╂枡鏉$爜
+    /// </summary>
+    [SugarColumn(ColumnName = "ITEM_BARCODE")]
+    public string? ItemBarcode { get; set; }
+
+    /// <summary>
+    ///     瀹㈡埛鎴愬搧缂栫爜
+    /// </summary>
+    [SugarColumn(ColumnName = "C_PRODUCT_CODE")]
+    public string? CProductCode { get; set; }
+
+    /// <summary>
+    ///     瀹㈡埛鐗╂枡鏉$爜
+    /// </summary>
+    [SugarColumn(ColumnName = "C_ITEM_BARCODE")]
+    public string? CItemBarcode { get; set; }
+
+    /// <summary>
+    ///     瀹㈡埛鐗╂枡缂栫爜
+    /// </summary>
+    [SugarColumn(ColumnName = "C_ITEM_CODE")]
+    public string? CItemCode { get; set; }
+
+    /// <summary>
+    ///     鏈徃鐗╂枡缂栫爜
+    /// </summary>
+    [SugarColumn(ColumnName = "ITEM_NO")]
+    public string? ItemNo { get; set; }
+
+    /// <summary>
+    ///     鍘傚鎵规
+    /// </summary>
+    [SugarColumn(ColumnName = "LOT_NO")]
+    public string? LotNo { get; set; }
+
+    /// <summary>
+    ///     鏁伴噺
+    /// </summary>
+    [SugarColumn(ColumnName = "QUANTITY")]
+    public decimal? Quantity { get; set; }
+
+    /// <summary>
+    ///     鏄惁鐜繚(0:鍚�,1:鏄�)
+    /// </summary>
+    [SugarColumn(ColumnName = "EP_FLAG")]
+    public short? EpFlag { get; set; }
+
+    /// <summary>
+    ///     鐢熶骇宸ュ崟
+    /// </summary>
+    [SugarColumn(ColumnName = "TASK_NO")]
+    public string? TaskNo { get; set; }
+
+    /// <summary>
+    ///     鍒涘缓浜�
+    /// </summary>
+    [SugarColumn(ColumnName = "CREATE_BY")]
+    public string? CreateBy { get; set; }
+
+    /// <summary>
+    ///     鍒涘缓鏃堕棿
+    /// </summary>
+    [SugarColumn(ColumnName = "CREATE_DATE")]
+    public DateTime? CreateDate { get; set; }
+
+    /// <summary>
+    ///     鏈�鍚庢洿鏂颁汉
+    /// </summary>
+    [SugarColumn(ColumnName = "LASTUPDATE_BY")]
+    public string? LastupdateBy { get; set; }
+
+    /// <summary>
+    ///     鏈�鍚庢洿鏂版椂闂�
+    /// </summary>
+    [SugarColumn(ColumnName = "LASTUPDATE_DATE")]
+    public DateTime? LastupdateDate { get; set; }
+
+    /// <summary>
+    ///     瀹㈡埛缂栧彿
+    /// </summary>
+    [SugarColumn(ColumnName = "CUST_NO")]
+    public string? CustNo { get; set; }
+
+    /// <summary>
+    ///     鐗╂枡鏉$爜娉ㄩ噴琛孾鍐椾綑锛屾潯鐮侀噸鎵撲娇鐢╙
+    /// </summary>
+    [SugarColumn(ColumnName = "ITEM_BARCODE_TEXT")]
+    public string? ItemBarcodeText { get; set; }
+
+    /// <summary>
+    ///     鍘烶SN鐗╂枡鏉$爜
+    /// </summary>
+    [SugarColumn(ColumnName = "OLD_ITEM_BARCODE")]
+    public string? OldItemBarcode { get; set; }
+
+    /// <summary>
+    ///     SAP鏀惰揣鐗╂枡鍑瘉鍙�    --閲囪喘鍗曞彿
+    /// </summary>
+    [SugarColumn(ColumnName = "MBLNR")]
+    public string? Mblnr { get; set; }
+
+    /// <summary>
+    ///     SAP鏀惰揣鐗╂枡鍑瘉琛屽彿  --閲囪喘鍗曡鍙�
+    /// </summary>
+    [SugarColumn(ColumnName = "ZEILE")]
+    public decimal? Zeile { get; set; }
+
+    /// <summary>
+    ///     鏀舵枡琛↖D
+    /// </summary>
+    [SugarColumn(ColumnName = "ROH_IN_ID")]
+    public decimal? RohInId { get; set; }
+
+    /// <summary>
+    ///     0涓烘湁鏁堟潯鐮侊紱1涓烘棤鏁堟潯鐮�
+    /// </summary>
+    [SugarColumn(ColumnName = "BARCODESTATUS")]
+    public short? Barcodestatus { get; set; }
+
+    /// <summary>
+    ///     鍘熷鏁伴噺
+    /// </summary>
+    [SugarColumn(ColumnName = "OLDQTY")]
+    public decimal? Oldqty { get; set; }
+
+    /// <summary>
+    ///     浣跨敤鏁伴噺
+    /// </summary>
+    [SugarColumn(ColumnName = "USEQTY")]
+    public decimal? Useqty { get; set; }
+
+    /// <summary>
+    ///     0鍦ㄥ簱锛�1鍦ㄧ嚎锛�2浣滃簾
+    /// </summary>
+    [SugarColumn(ColumnName = "LOCATION")]
+    public short? Location { get; set; }
+
+    /// <summary>
+    ///     鍗曚綅
+    /// </summary>
+    [SugarColumn(ColumnName = "UNIT")]
+    public string? Unit { get; set; }
+
+    /// <summary>
+    ///     閲嶉噺锛堝崟浣嶏細鍏枻锛�
+    /// </summary>
+    [SugarColumn(ColumnName = "WEIGHT_UNIT")]
+    public decimal? WeightUnit { get; set; }
+
+    /// <summary>
+    ///     鍗曚环
+    /// </summary>
+    [SugarColumn(ColumnName = "PRICE")]
+    public decimal? Price { get; set; }
+
+    /// <summary>
+    ///     鍘熸潯鐮佹暟閲�
+    /// </summary>
+    [SugarColumn(ColumnName = "OLD_BAR_QUANTITY")]
+    public decimal? OldBarQuantity { get; set; }
+
+    /// <summary>
+    ///     姹囨�绘潯鐮�
+    /// </summary>
+    [SugarColumn(ColumnName = "SUM_BARCODE")]
+    public string? SumBarcode { get; set; }
+
+    /// <summary>
+    ///     鐢熶骇鏃ユ湡
+    /// </summary>
+    [SugarColumn(ColumnName = "LOT_DATE")]
+    public string? LotDate { get; set; }
+
+    /// <summary>
+    ///     妯″彿
+    /// </summary>
+    [SugarColumn(ColumnName = "MOCODE")]
+    public string? Mocode { get; set; }
+
+    /// <summary>
+    ///     鏉ユ簮
+    /// </summary>
+    [SugarColumn(ColumnName = "MEMO")]
+    public string? Memo { get; set; }
+
+    /// <summary>
+    ///     渚涘簲鍟嗙紪鐮�
+    /// </summary>
+    [SugarColumn(ColumnName = "SUPP_NO")]
+    public string? SuppNo { get; set; }
+
+    /// <summary>
+    ///     妗d綅浣庡��
+    /// </summary>
+    [SugarColumn(ColumnName = "SPOSTION")]
+    public string? Spostion { get; set; }
+
+    /// <summary>
+    ///     妗d綅楂樺��
+    /// </summary>
+    [SugarColumn(ColumnName = "EPOSTION")]
+    public string? Epostion { get; set; }
+
+    /// <summary>
+    ///     鐗╂枡绠�绉�
+    /// </summary>
+    [SugarColumn(ColumnName = "ITEM_SNAME")]
+    public string? ItemSname { get; set; }
+
+    /// <summary>
+    ///     鏄惁宸插喕缁�,1鍐荤粨
+    /// </summary>
+    [SugarColumn(ColumnName = "VISABLE")]
+    public short? Visable { get; set; }
+
+    /// <summary>
+    ///     渚涘簲鍟嗘壒娆�
+    /// </summary>
+    [SugarColumn(ColumnName = "TR_LOTNO")]
+    public string? TrLotno { get; set; }
+
+    /// <summary>
+    ///     鍐荤粨鏃堕棿
+    /// </summary>
+    [SugarColumn(ColumnName = "FLEZZ_DATE")]
+    public DateTime? FlezzDate { get; set; }
+
+    /// <summary>
+    ///     鍐荤粨鍘熷洜
+    /// </summary>
+    [SugarColumn(ColumnName = "FLEZZ_REASON")]
+    public string? FlezzReason { get; set; }
+
+    /// <summary>
+    ///     鍐荤粨浜�
+    /// </summary>
+    [SugarColumn(ColumnName = "FLEZZ_BY")]
+    public string? FlezzBy { get; set; }
+
+    /// <summary>
+    ///     寤堕暱淇濊川鏈�
+    /// </summary>
+    [SugarColumn(ColumnName = "DELANY_MONTH")]
+    public decimal? DelanyMonth { get; set; }
+
+    /// <summary>
+    ///     鏈�灏忓寘瑁呮爣璇�
+    /// </summary>
+    [SugarColumn(ColumnName = "MINPACK_FLAG")]
+    public short? MinpackFlag { get; set; }
+
+    /// <summary>
+    ///     鎵撳嵃ID锛岀敤鏉ュ尯鍒嗘墦鍗版鏁�
+    /// </summary>
+    [SugarColumn(ColumnName = "PRINT_ID")]
+    public string? PrintId { get; set; }
+
+    /// <summary>
+    ///     鐜繚椤圭洰
+    /// </summary>
+    [SugarColumn(ColumnName = "EP_ITEM")]
+    public string? EpItem { get; set; }
+
+    /// <summary>
+    ///     宸ュ巶缂栧彿
+    /// </summary>
+    [SugarColumn(ColumnName = "FACTORY")]
+    public string? Factory { get; set; }
+
+    /// <summary>
+    ///     鍏徃缂栧彿
+    /// </summary>
+    [SugarColumn(ColumnName = "COMPANY")]
+    public string? Company { get; set; }
+
+    /// <summary>
+    ///     鍗℃澘缂栫爜
+    /// </summary>
+    [SugarColumn(ColumnName = "CB_NO")]
+    public string? CbNo { get; set; }
+
+    /// <summary>
+    ///     鍘傚鐢熶骇绾�
+    /// </summary>
+    [SugarColumn(ColumnName = "LINFLINE")]
+    public string? Linfline { get; set; }
+
+    /// <summary>
+    ///     鏈夋晥鏈�
+    /// </summary>
+    [SugarColumn(ColumnName = "VALID_TIME")]
+    public DateTime? ValidTime { get; set; }
+
+    /// <summary>
+    ///     璐ㄦ缁撴灉
+    /// </summary>
+    [SugarColumn(ColumnName = "IQC_STATUS")]
+    public string? IqcStatus { get; set; }
+
+    /// <summary>
+    ///     灏忚溅鏉$爜
+    /// </summary>
+    [SugarColumn(ColumnName = "FCAR")]
+    public string? Fcar { get; set; }
+
+    /// <summary>
+    ///     姣涢噸
+    /// </summary>
+    [SugarColumn(ColumnName = "GWEIGHT")]
+    public string? Gweight { get; set; }
+
+    /// <summary>
+    ///     鍑�閲�
+    /// </summary>
+    [SugarColumn(ColumnName = "NWEIGHT")]
+    public string? Nweight { get; set; }
+
+    /// <summary>
+    ///     淇濊川鏈�
+    /// </summary>
+    [SugarColumn(ColumnName = "EXT_DATE")]
+    public decimal? ExtDate { get; set; }
+
+    /// <summary>
+    ///     渚涘簲鍟嗐�佽禒鍝併�佸渚涙枡銆佸澶�
+    /// </summary>
+    [SugarColumn(ColumnName = "BARCODETYPE")]
+    public string? Barcodetype { get; set; }
+
+    /// <summary>
+    ///     渚涘簲鍟嗗悕绉�
+    /// </summary>
+    [SugarColumn(ColumnName = "SUPP_NAME")]
+    public string? SuppName { get; set; }
+
+    /// <summary>
+    ///     鍒拌揣鍗曞彿/鍏ュ簱鍗曞彿
+    /// </summary>
+    [SugarColumn(ColumnName = "BILL_NO")]
+    public string? BillNo { get; set; }
+
+    /// <summary>
+    ///     鎬ユ枡鏍囪瘑
+    /// </summary>
+    [SugarColumn(ColumnName = "URGENT_FLAG")]
+    public short? UrgentFlag { get; set; }
+
+    /// <summary>
+    ///     棰滆壊
+    /// </summary>
+    [SugarColumn(ColumnName = "COLOR_NAME")]
+    public string? ColorName { get; set; }
+
+    /// <summary>
+    ///     浜у搧鍨嬪彿
+    /// </summary>
+    [SugarColumn(ColumnName = "BOARD_STYLE")]
+    public string? BoardStyle { get; set; }
+
+    /// <summary>
+    ///     鏉ユ枡鏃ユ湡
+    /// </summary>
+    [SugarColumn(ColumnName = "INS_DATE")]
+    public DateTime? InsDate { get; set; }
+
+    /// <summary>
+    ///     鍒拌揣鍗曡鍙�
+    /// </summary>
+    [SugarColumn(ColumnName = "WORK_LINE")]
+    public decimal? WorkLine { get; set; }
+
+    /// <summary>
+    ///     涓嶈壇鍘熷洜
+    /// </summary>
+    [SugarColumn(ColumnName = "MEMO_BAD")]
+    public string? MemoBad { get; set; }
+
+    /// <summary>
+    ///     浠诲姟鍗曞彿
+    /// </summary>
+    [SugarColumn(ColumnName = "WORK_NO")]
+    public string? WorkNo { get; set; }
+
+    /// <summary>
+    ///     鏉$爜鏉ユ簮鏍囪瘑锛�0-鍒濇湡鐗╂枡,1-閲囪喘鍏ュ簱锛�2銆佺敓浜ч��鏂欙紝3銆佸叾瀹冨叆搴擄紝4-瀹緵鏂�,5-鍦ㄥ簱鍒嗘枡锛�6-鍒剁▼鏉$爜
+    /// </summary>
+    [SugarColumn(ColumnName = "COME_FLG")]
+    public short? ComeFlg { get; set; }
+
+    /// <summary>
+    ///     鐢熶骇绾夸綋
+    /// </summary>
+    [SugarColumn(ColumnName = "LINE_NO")]
+    public string? LineNo { get; set; }
+
+    /// <summary>
+    ///     涓濆嵃娆℃暟
+    /// </summary>
+    [SugarColumn(ColumnName = "SILK_PQTY")]
+    public decimal? SilkPqty { get; set; }
+
+    /// <summary>
+    ///     涓濆嵃娆℃暟姣�
+    /// </summary>
+    [SugarColumn(ColumnName = "SILK")]
+    public string? Silk { get; set; }
+
+    /// <summary>
+    ///     涓濆嵃娲惧伐浠庤〃ID
+    /// </summary>
+    [SugarColumn(ColumnName = "SILK_ID")]
+    public decimal? SilkId { get; set; }
+
+    /// <summary>
+    ///     宸叉姤宸ユ爣璇�
+    /// </summary>
+    [SugarColumn(ColumnName = "WORK_FLG")]
+    public decimal? WorkFlg { get; set; }
+
+    /// <summary>
+    ///     鏈�鍚庡伐搴�
+    /// </summary>
+    [SugarColumn(ColumnName = "WORK_LAST")]
+    public decimal? WorkLast { get; set; }
+
+    /// <summary>
+    ///     0-鏈悎骞舵墦鍗帮紝1-鍚堝苟鎵撳嵃
+    /// </summary>
+    [SugarColumn(ColumnName = "HBDY")]
+    public decimal? Hbdy { get; set; }
+
+    /// <summary>
+    ///     0-鏈夋晥鏉$爜锛�1-鍚堝苟鎷嗗垎鐨勬潯鐮侊紝鏃犳晥
+    /// </summary>
+    [SugarColumn(ColumnName = "HBDYTM")]
+    public decimal? Hbdytm { get; set; }
+
+    /// <summary>
+    ///     鎶ュ伐鏃堕棿
+    /// </summary>
+    [SugarColumn(ColumnName = "WORK_FLGTIME")]
+    public string? WorkFlgtime { get; set; }
+
+    /// <summary>
+    ///     閲囪喘璁㈠崟ID
+    /// </summary>
+    [SugarColumn(ColumnName = "EBELN_K3ID")]
+    public decimal? EbelnK3id { get; set; }
+
+    /// <summary>
+    ///     閲囪喘璁㈠崟琛孖D
+    /// </summary>
+    [SugarColumn(ColumnName = "LINE_K3ID")]
+    public decimal? LineK3id { get; set; }
+
+    /// <summary>
+    /// </summary>
+    [SugarColumn(ColumnName = "ITEM_ID")]
+    public decimal? ItemId { get; set; }
+
+    /// <summary>
+    ///     鐢熶骇宸ュ簭ID
+    /// </summary>
+    [SugarColumn(ColumnName = "GX_ID")]
+    public decimal? GxId { get; set; }
+
+    /// <summary>
+    ///     缁勭粐id
+    /// </summary>
+    [SugarColumn(ColumnName = "ORG_NAME")]
+    public string? OrgName { get; set; }
+
+    /// <summary>
+    ///     璐т富id
+    /// </summary>
+    [SugarColumn(ColumnName = "ORG_OWNER")]
+    public string? OrgOwner { get; set; }
+}
\ No newline at end of file
diff --git a/StandardPda/MES.Service/Modes/MesInvItemInCDetails.cs b/StandardPda/MES.Service/Modes/MesInvItemInCDetails.cs
new file mode 100644
index 0000000..0bf8253
--- /dev/null
+++ b/StandardPda/MES.Service/Modes/MesInvItemInCDetails.cs
@@ -0,0 +1,362 @@
+锘縰sing SqlSugar;
+
+namespace MES.Service.Modes;
+
+/// <summary>
+///     鐗╂枡鍏ュ簱鏉$爜鏄庣粏
+/// </summary>
+[SugarTable("MES_INV_ITEM_IN_C_DETAILS")]
+public class MesInvItemInCDetails
+{
+    /// <summary>
+    ///     SEQ_OUT
+    /// </summary>
+    [SugarColumn(ColumnName = "ID", OracleSequenceName = "SEQ_INV_ID",
+        IsPrimaryKey = true)]
+    public decimal Id { get; set; }
+
+    /// <summary>
+    ///     鍏ュ簱鍗昳d
+    /// </summary>
+    [SugarColumn(ColumnName = "ITEM_IN_ID", IsPrimaryKey = true)]
+    public decimal ItemInId { get; set; }
+
+    /// <summary>
+    ///     鐗╂枡鏉$爜PSN
+    /// </summary>
+    [SugarColumn(ColumnName = "ITEM_BARCODE")]
+    public string ItemBarcode { get; set; }
+
+    /// <summary>
+    ///     瀹㈡埛鐗╂枡缂栫爜锛堟棤鏉$爜鎵嬪伐褰曞叆锛屾湁鏉$爜涓哄啑浣欏瓧娈碉級
+    /// </summary>
+    [SugarColumn(ColumnName = "C_ITEM_CODE")]
+    public string CItemCode { get; set; }
+
+    /// <summary>
+    ///     瀹㈡埛鐗╂枡鏉$爜
+    /// </summary>
+    [SugarColumn(ColumnName = "C_ITEM_BARCODE")]
+    public string CItemBarcode { get; set; }
+
+    /// <summary>
+    ///     楠屾敹鏁伴噺
+    /// </summary>
+    [SugarColumn(ColumnName = "QUANTITY")]
+    public decimal? Quantity { get; set; }
+
+    /// <summary>
+    ///     鍏ュ簱鏂瑰紡(1:鏈夋潯鐮�,0:鏃犳潯鐮�)
+    /// </summary>
+    [SugarColumn(ColumnName = "BARCODE_FLAG")]
+    public short? BarcodeFlag { get; set; }
+
+    /// <summary>
+    ///     鐜繚鏍囧織锛�0-闈炵幆淇�,1-鐜繚.鏃犳潯鐮佹墜宸ュ綍鍏ワ紝鏈夋潯鐮佷负鍐椾綑瀛楁锛�
+    /// </summary>
+    [SugarColumn(ColumnName = "EP_FLAG")]
+    public short? EpFlag { get; set; }
+
+    /// <summary>
+    ///     鍒涘缓浜�
+    /// </summary>
+    [SugarColumn(ColumnName = "CREATE_BY")]
+    public string CreateBy { get; set; }
+
+    /// <summary>
+    ///     鍒涘缓鏃堕棿
+    /// </summary>
+    [SugarColumn(ColumnName = "CREATE_DATE")]
+    public DateTime? CreateDate { get; set; }
+
+    /// <summary>
+    ///     鏈�鍚庢洿鏂颁汉
+    /// </summary>
+    [SugarColumn(ColumnName = "LASTUPDATE_BY")]
+    public string LastupdateBy { get; set; }
+
+    /// <summary>
+    ///     鏈�鍚庢洿鏂版椂闂�
+    /// </summary>
+    [SugarColumn(ColumnName = "LASTUPDATE_DATE")]
+    public DateTime? LastupdateDate { get; set; }
+
+    /// <summary>
+    ///     浣滀笟鏂瑰紡0-鏈夌嚎鏉$爜鏋�1-鏃犵嚎鏉$爜鏋�
+    /// </summary>
+    [SugarColumn(ColumnName = "WORK_TYPE")]
+    public decimal? WorkType { get; set; }
+
+    /// <summary>
+    ///     鏈徃鐗╂枡缂栫爜锛堟棤鏉$爜鎵嬪伐褰曞叆锛屾湁鏉$爜涓哄啑浣欏瓧娈碉級
+    /// </summary>
+    [SugarColumn(ColumnName = "ITEM_NO")]
+    public string ItemNo { get; set; }
+
+    /// <summary>
+    ///     鍘傚鎵规
+    /// </summary>
+    [SugarColumn(ColumnName = "LOT_NO")]
+    public string LotNo { get; set; }
+
+    /// <summary>
+    ///     鏄惁鍏辩鐗╂枡(0:鍚︼紝1:鏄�)
+    /// </summary>
+    [SugarColumn(ColumnName = "COMANAGEMENT_FLAG")]
+    public short? ComanagementFlag { get; set; }
+
+    /// <summary>
+    ///     瀹㈡埛缂栫爜
+    /// </summary>
+    [SugarColumn(ColumnName = "CUST_NO")]
+    public string CustNo { get; set; }
+
+    /// <summary>
+    ///     妫�楠岀粨鏋�
+    /// </summary>
+    [SugarColumn(ColumnName = "CHECK_RES")]
+    public string CheckRes { get; set; }
+
+    /// <summary>
+    ///     杩涜揣鏁伴噺
+    /// </summary>
+    [SugarColumn(ColumnName = "CHECK_QTY")]
+    public decimal? CheckQty { get; set; }
+
+    /// <summary>
+    ///     妫�楠岀姸鎬�
+    /// </summary>
+    [SugarColumn(ColumnName = "CHECK_STATES")]
+    public string CheckStates { get; set; }
+
+    /// <summary>
+    ///     寮哄埗鍏ュ簱鏍囪0鏃狅紝1-寮哄埗鍏ュ簱  閫�鏂欏崟浣跨敤
+    /// </summary>
+    [SugarColumn(ColumnName = "FORCE_IN_FLAG")]
+    public short? ForceInFlag { get; set; }
+
+    /// <summary>
+    ///     浠撳簱缂栫爜
+    /// </summary>
+    [SugarColumn(ColumnName = "DEPOT_CODE")]
+    public string DepotCode { get; set; }
+
+    /// <summary>
+    ///     璐т綅缂栫爜
+    /// </summary>
+    [SugarColumn(ColumnName = "DEPOT_SECTION_CODE")]
+    public string DepotSectionCode { get; set; }
+
+    /// <summary>
+    ///     鐗硅浜嬮」
+    /// </summary>
+    [SugarColumn(ColumnName = "REMARK")]
+    public string Remark { get; set; }
+
+    /// <summary>
+    ///     鐗╂枡鏉$爜
+    /// </summary>
+    [SugarColumn(ColumnName = "ITEM_BARCODE2")]
+    public string ItemBarcode2 { get; set; }
+
+    /// <summary>
+    ///     鏂版潯鐮�
+    /// </summary>
+    [SugarColumn(ColumnName = "ITEM_BARCODE3")]
+    public string ItemBarcode3 { get; set; }
+
+    /// <summary>
+    ///     浣跨敤鏁伴噺
+    /// </summary>
+    [SugarColumn(ColumnName = "USE_QTY")]
+    public decimal? UseQty { get; set; }
+
+    /// <summary>
+    ///     棰嗘枡鏁伴噺
+    /// </summary>
+    [SugarColumn(ColumnName = "OUT_QTY")]
+    public decimal? OutQty { get; set; }
+
+    /// <summary>
+    ///     鐗╂枡绠�绉�
+    /// </summary>
+    [SugarColumn(ColumnName = "ITEM_SNAME")]
+    public string ItemSname { get; set; }
+
+    /// <summary>
+    ///     妗d綅浣庡��
+    /// </summary>
+    [SugarColumn(ColumnName = "SPOSTION")]
+    public decimal? Spostion { get; set; }
+
+    /// <summary>
+    ///     妗d綅楂樺��
+    /// </summary>
+    [SugarColumn(ColumnName = "EPOSTION")]
+    public decimal? Epostion { get; set; }
+
+    /// <summary>
+    ///     妫�楠屾棩鏈�
+    /// </summary>
+    [SugarColumn(ColumnName = "CHECK_DATE")]
+    public DateTime? CheckDate { get; set; }
+
+    /// <summary>
+    ///     鍗曚綅
+    /// </summary>
+    [SugarColumn(ColumnName = "UNIT")]
+    public string Unit { get; set; }
+
+    /// <summary>
+    ///     鏄惁妫�楠�
+    /// </summary>
+    [SugarColumn(ColumnName = "ISCHECK")]
+    public decimal? Ischeck { get; set; }
+
+    /// <summary>
+    ///     閲囪喘璁㈠崟
+    /// </summary>
+    [SugarColumn(ColumnName = "EBELN")]
+    public string Ebeln { get; set; }
+
+    /// <summary>
+    ///     鐢熶骇鏃ユ湡
+    /// </summary>
+    [SugarColumn(ColumnName = "LOT_DATE")]
+    public string LotDate { get; set; }
+
+    /// <summary>
+    ///     鍏ュ簱鍗曞彿
+    /// </summary>
+    [SugarColumn(ColumnName = "BILL_NO")]
+    public string BillNo { get; set; }
+
+    /// <summary>
+    ///     鍏ュ簱瀹℃牳鏍囧織
+    /// </summary>
+    [SugarColumn(ColumnName = "STOCK_OK")]
+    public short? StockOk { get; set; }
+
+    /// <summary>
+    ///     鍒嗗巶缂栫爜
+    /// </summary>
+    [SugarColumn(ColumnName = "FACTORY")]
+    public string Factory { get; set; }
+
+    /// <summary>
+    ///     鍏徃浠g爜
+    /// </summary>
+    [SugarColumn(ColumnName = "COMPANY")]
+    public string Company { get; set; }
+
+    /// <summary>
+    ///     鍗℃澘缂栫爜
+    /// </summary>
+    [SugarColumn(ColumnName = "CB_NO")]
+    public string CbNo { get; set; }
+
+    /// <summary>
+    ///     绠卞彿
+    /// </summary>
+    [SugarColumn(ColumnName = "BOX_NO")]
+    public string BoxNo { get; set; }
+
+    /// <summary>
+    ///     浠撳簱ID
+    /// </summary>
+    [SugarColumn(ColumnName = "DEPOT_ID")]
+    public decimal? DepotId { get; set; }
+
+    /// <summary>
+    ///     璐т綅ID
+    /// </summary>
+    [SugarColumn(ColumnName = "DEPOT_SECTION_ID")]
+    public decimal? DepotSectionId { get; set; }
+
+    /// <summary>
+    ///     琛屽彿
+    /// </summary>
+    [SugarColumn(ColumnName = "LINE_NUM")]
+    public string LineNum { get; set; }
+
+    /// <summary>
+    ///     鎵爜鏁伴噺
+    /// </summary>
+    [SugarColumn(ColumnName = "SM_QTY")]
+    public decimal? SmQty { get; set; }
+
+    /// <summary>
+    ///     閿�鍞鍗�
+    /// </summary>
+    [SugarColumn(ColumnName = "VGBEL")]
+    public string Vgbel { get; set; }
+
+    /// <summary>
+    ///     閿�鍞鍗曡鍙�
+    /// </summary>
+    [SugarColumn(ColumnName = "KDPOS")]
+    public decimal? Kdpos { get; set; }
+
+    /// <summary>
+    ///     浠诲姟鍗曞彿
+    /// </summary>
+    [SugarColumn(ColumnName = "WORK_NO")]
+    public string WorkNo { get; set; }
+
+    /// <summary>
+    ///     琛屽彿
+    /// </summary>
+    [SugarColumn(ColumnName = "EBELN_LINE_NO")]
+    public decimal? EbelnLineNo { get; set; }
+
+    /// <summary>
+    ///     鍒拌揣鍗曞彿
+    /// </summary>
+    [SugarColumn(ColumnName = "CBILL_NO")]
+    public string CbillNo { get; set; }
+
+    /// <summary>
+    ///     鎬ユ枡鏍囪瘑
+    /// </summary>
+    [SugarColumn(ColumnName = "URGENT_FLAG")]
+    public decimal? UrgentFlag { get; set; }
+
+    /// <summary>
+    ///     浜у搧鍨嬪彿
+    /// </summary>
+    [SugarColumn(ColumnName = "BOARD_STYLE")]
+    public string BoardStyle { get; set; }
+
+    /// <summary>
+    ///     浠诲姟鍗曡鍙�
+    /// </summary>
+    [SugarColumn(ColumnName = "WORK_LINE")]
+    public decimal? WorkLine { get; set; }
+
+    /// <summary>
+    ///     鐢熶骇宸ュ崟
+    /// </summary>
+    [SugarColumn(ColumnName = "TASK_NO")]
+    public string TaskNo { get; set; }
+
+    /// <summary>
+    ///     渚涘簲鍟�
+    /// </summary>
+    [SugarColumn(ColumnName = "SUPP_NO")]
+    public string SuppNo { get; set; }
+
+    /// <summary>
+    ///     浠诲姟姹囨姤鍗�
+    /// </summary>
+    [SugarColumn(ColumnName = "RBILL_NO")]
+    public string RbillNo { get; set; }
+
+    // 娣诲姞鐨勫瓧娈碉紝骞朵笖瀹冧滑涓嶅睘浜庢暟鎹簱琛�
+    [SugarColumn(IsIgnore = true)] public string? ItemName { get; set; }
+
+    [SugarColumn(IsIgnore = true)] public string? ItemModel { get; set; }
+
+    [SugarColumn(IsIgnore = true)] public string? ItemUnit { get; set; }
+
+    [SugarColumn(IsIgnore = true)] public decimal? SumQuantity { get; set; }
+}
\ No newline at end of file
diff --git a/StandardPda/MES.Service/Modes/MesInvItemInCDetails2.cs b/StandardPda/MES.Service/Modes/MesInvItemInCDetails2.cs
new file mode 100644
index 0000000..4d50f32
--- /dev/null
+++ b/StandardPda/MES.Service/Modes/MesInvItemInCDetails2.cs
@@ -0,0 +1,368 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using SqlSugar;
+
+namespace MES.Service.Modes
+{
+    /// <summary>
+    /// 鐗╂枡鎴愬搧鍏ュ簱鐢宠鏉$爜鏄庣粏
+    ///</summary>
+    [SugarTable("MES_INV_ITEM_IN_C_DETAILS2")]
+    public class MesInvItemInCDetails2
+    {
+        /// <summary>
+        /// SEQ_OUT 
+        ///</summary>
+        [SugarColumn(ColumnName = "ID", IsPrimaryKey = true)]
+        public decimal Id { get; set; }
+
+        /// <summary>
+        /// 鍏ュ簱鍗昳d 
+        ///</summary>
+        [SugarColumn(ColumnName = "ITEM_IN_ID", IsPrimaryKey = true)]
+        public decimal ItemInId { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鏉$爜PSN 
+        ///</summary>
+        [SugarColumn(ColumnName = "ITEM_BARCODE")]
+        public string ItemBarcode { get; set; }
+
+        /// <summary>
+        /// 瀹㈡埛鐗╂枡缂栫爜锛堟棤鏉$爜鎵嬪伐褰曞叆锛屾湁鏉$爜涓哄啑浣欏瓧娈碉級 
+        ///</summary>
+        [SugarColumn(ColumnName = "C_ITEM_CODE")]
+        public string CItemCode { get; set; }
+
+        /// <summary>
+        /// 瀹㈡埛鐗╂枡鏉$爜 
+        ///</summary>
+        [SugarColumn(ColumnName = "C_ITEM_BARCODE")]
+        public string CItemBarcode { get; set; }
+
+        /// <summary>
+        /// 楠屾敹鏁伴噺 
+        ///</summary>
+        [SugarColumn(ColumnName = "QUANTITY")]
+        public decimal? Quantity { get; set; }
+
+        /// <summary>
+        /// 鍏ュ簱鏂瑰紡(1:鏈夋潯鐮�,0:鏃犳潯鐮�) 
+        ///</summary>
+        [SugarColumn(ColumnName = "BARCODE_FLAG")]
+        public short? BarcodeFlag { get; set; }
+
+        /// <summary>
+        /// 鐜繚鏍囧織锛�0-闈炵幆淇�,1-鐜繚.鏃犳潯鐮佹墜宸ュ綍鍏ワ紝鏈夋潯鐮佷负鍐椾綑瀛楁锛� 
+        ///</summary>
+        [SugarColumn(ColumnName = "EP_FLAG")]
+        public short? EpFlag { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓浜� 
+        ///</summary>
+        [SugarColumn(ColumnName = "CREATE_BY")]
+        public string CreateBy { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓鏃堕棿 
+        ///</summary>
+        [SugarColumn(ColumnName = "CREATE_DATE")]
+        public DateTime? CreateDate { get; set; }
+
+        /// <summary>
+        /// 鏈�鍚庢洿鏂颁汉 
+        ///</summary>
+        [SugarColumn(ColumnName = "LASTUPDATE_BY")]
+        public string LastupdateBy { get; set; }
+
+        /// <summary>
+        /// 鏈�鍚庢洿鏂版椂闂� 
+        ///</summary>
+        [SugarColumn(ColumnName = "LASTUPDATE_DATE")]
+        public DateTime? LastupdateDate { get; set; }
+
+        /// <summary>
+        /// 浣滀笟鏂瑰紡0-鏈夌嚎鏉$爜鏋�1-鏃犵嚎鏉$爜鏋� 
+        ///</summary>
+        [SugarColumn(ColumnName = "WORK_TYPE")]
+        public decimal? WorkType { get; set; }
+
+        /// <summary>
+        /// 鏈徃鐗╂枡缂栫爜锛堟棤鏉$爜鎵嬪伐褰曞叆锛屾湁鏉$爜涓哄啑浣欏瓧娈碉級 
+        ///</summary>
+        [SugarColumn(ColumnName = "ITEM_NO")]
+        public string ItemNo { get; set; }
+
+        /// <summary>
+        /// 鍘傚鎵规 
+        ///</summary>
+        [SugarColumn(ColumnName = "LOT_NO")]
+        public string LotNo { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍏辩鐗╂枡(0:鍚︼紝1:鏄�) 
+        ///</summary>
+        [SugarColumn(ColumnName = "COMANAGEMENT_FLAG")]
+        public short? ComanagementFlag { get; set; }
+
+        /// <summary>
+        /// 瀹㈡埛缂栫爜 
+        ///</summary>
+        [SugarColumn(ColumnName = "CUST_NO")]
+        public string CustNo { get; set; }
+
+        /// <summary>
+        /// 妫�楠岀粨鏋� 
+        ///</summary>
+        [SugarColumn(ColumnName = "CHECK_RES")]
+        public string CheckRes { get; set; }
+
+        /// <summary>
+        /// 杩涜揣鏁伴噺 
+        ///</summary>
+        [SugarColumn(ColumnName = "CHECK_QTY")]
+        public decimal? CheckQty { get; set; }
+
+        /// <summary>
+        /// 妫�楠岀姸鎬� 
+        ///</summary>
+        [SugarColumn(ColumnName = "CHECK_STATES")]
+        public string CheckStates { get; set; }
+
+        /// <summary>
+        /// 寮哄埗鍏ュ簱鏍囪0鏃狅紝1-寮哄埗鍏ュ簱  閫�鏂欏崟浣跨敤 
+        ///</summary>
+        [SugarColumn(ColumnName = "FORCE_IN_FLAG")]
+        public short? ForceInFlag { get; set; }
+
+        /// <summary>
+        /// 浠撳簱缂栫爜 
+        ///</summary>
+        [SugarColumn(ColumnName = "DEPOT_CODE")]
+        public string DepotCode { get; set; }
+
+        /// <summary>
+        /// 璐т綅缂栫爜 
+        ///</summary>
+        [SugarColumn(ColumnName = "DEPOT_SECTION_CODE")]
+        public string DepotSectionCode { get; set; }
+
+        /// <summary>
+        /// 鐗硅浜嬮」 
+        ///</summary>
+        [SugarColumn(ColumnName = "REMARK")]
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鏉$爜 
+        ///</summary>
+        [SugarColumn(ColumnName = "ITEM_BARCODE2")]
+        public string ItemBarcode2 { get; set; }
+
+        /// <summary>
+        /// 鏂版潯鐮� 
+        ///</summary>
+        [SugarColumn(ColumnName = "ITEM_BARCODE3")]
+        public string ItemBarcode3 { get; set; }
+
+        /// <summary>
+        /// 浣跨敤鏁伴噺 
+        ///</summary>
+        [SugarColumn(ColumnName = "USE_QTY")]
+        public decimal? UseQty { get; set; }
+
+        /// <summary>
+        /// 棰嗘枡鏁伴噺 
+        ///</summary>
+        [SugarColumn(ColumnName = "OUT_QTY")]
+        public decimal? OutQty { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡绠�绉� 
+        ///</summary>
+        [SugarColumn(ColumnName = "ITEM_SNAME")]
+        public string ItemSname { get; set; }
+
+        /// <summary>
+        /// 妗d綅浣庡�� 
+        ///</summary>
+        [SugarColumn(ColumnName = "SPOSTION")]
+        public decimal? Spostion { get; set; }
+
+        /// <summary>
+        /// 妗d綅楂樺�� 
+        ///</summary>
+        [SugarColumn(ColumnName = "EPOSTION")]
+        public decimal? Epostion { get; set; }
+
+        /// <summary>
+        /// 妫�楠屾棩鏈� 
+        ///</summary>
+        [SugarColumn(ColumnName = "CHECK_DATE")]
+        public DateTime? CheckDate { get; set; }
+
+        /// <summary>
+        /// 鍗曚綅 
+        ///</summary>
+        [SugarColumn(ColumnName = "UNIT")]
+        public string Unit { get; set; }
+
+        /// <summary>
+        /// 鏄惁妫�楠� 
+        ///</summary>
+        [SugarColumn(ColumnName = "ISCHECK")]
+        public decimal? Ischeck { get; set; }
+
+        /// <summary>
+        /// 閲囪喘璁㈠崟 
+        ///</summary>
+        [SugarColumn(ColumnName = "EBELN")]
+        public string Ebeln { get; set; }
+
+        /// <summary>
+        /// 鐢熶骇鏃ユ湡 
+        ///</summary>
+        [SugarColumn(ColumnName = "LOT_DATE")]
+        public string LotDate { get; set; }
+
+        /// <summary>
+        /// 鍏ュ簱鍗曞彿 
+        ///</summary>
+        [SugarColumn(ColumnName = "BILL_NO")]
+        public string BillNo { get; set; }
+
+        /// <summary>
+        /// 鍏ュ簱瀹℃牳鏍囧織 
+        ///</summary>
+        [SugarColumn(ColumnName = "STOCK_OK")]
+        public short? StockOk { get; set; }
+
+        /// <summary>
+        /// 鍒嗗巶缂栫爜 
+        ///</summary>
+        [SugarColumn(ColumnName = "FACTORY")]
+        public string Factory { get; set; }
+
+        /// <summary>
+        /// 鍏徃浠g爜 
+        ///</summary>
+        [SugarColumn(ColumnName = "COMPANY")]
+        public string Company { get; set; }
+
+        /// <summary>
+        /// 鍗℃澘缂栫爜 
+        ///</summary>
+        [SugarColumn(ColumnName = "CB_NO")]
+        public string CbNo { get; set; }
+
+        /// <summary>
+        /// 绠卞彿 
+        ///</summary>
+        [SugarColumn(ColumnName = "BOX_NO")]
+        public string BoxNo { get; set; }
+
+        /// <summary>
+        /// 浠撳簱ID 
+        ///</summary>
+        [SugarColumn(ColumnName = "DEPOT_ID")]
+        public decimal? DepotId { get; set; }
+
+        /// <summary>
+        /// 璐т綅ID 
+        ///</summary>
+        [SugarColumn(ColumnName = "DEPOT_SECTION_ID")]
+        public decimal? DepotSectionId { get; set; }
+
+        /// <summary>
+        /// 琛屽彿 
+        ///</summary>
+        [SugarColumn(ColumnName = "LINE_NUM")]
+        public string LineNum { get; set; }
+
+        /// <summary>
+        /// 鎵爜鏁伴噺 
+        ///</summary>
+        [SugarColumn(ColumnName = "SM_QTY")]
+        public decimal? SmQty { get; set; }
+
+        /// <summary>
+        /// 閿�鍞鍗� 
+        ///</summary>
+        [SugarColumn(ColumnName = "VGBEL")]
+        public string Vgbel { get; set; }
+
+        /// <summary>
+        /// 閿�鍞鍗曡鍙� 
+        ///</summary>
+        [SugarColumn(ColumnName = "KDPOS")]
+        public decimal? Kdpos { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鍗曞彿 
+        ///</summary>
+        [SugarColumn(ColumnName = "WORK_NO")]
+        public string WorkNo { get; set; }
+
+        /// <summary>
+        /// 琛屽彿 
+        ///</summary>
+        [SugarColumn(ColumnName = "EBELN_LINE_NO")]
+        public decimal? EbelnLineNo { get; set; }
+
+        /// <summary>
+        /// 鍒拌揣鍗曞彿 
+        ///</summary>
+        [SugarColumn(ColumnName = "CBILL_NO")]
+        public string CbillNo { get; set; }
+
+        /// <summary>
+        /// 鎬ユ枡鏍囪瘑 
+        ///</summary>
+        [SugarColumn(ColumnName = "URGENT_FLAG")]
+        public decimal? UrgentFlag { get; set; }
+
+        /// <summary>
+        /// 浜у搧鍨嬪彿 
+        ///</summary>
+        [SugarColumn(ColumnName = "BOARD_STYLE")]
+        public string BoardStyle { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鍗曡鍙� 
+        ///</summary>
+        [SugarColumn(ColumnName = "WORK_LINE")]
+        public decimal? WorkLine { get; set; }
+
+        /// <summary>
+        /// 鐢熶骇宸ュ崟 
+        ///</summary>
+        [SugarColumn(ColumnName = "TASK_NO")]
+        public string TaskNo { get; set; }
+
+        /// <summary>
+        /// 渚涘簲鍟� 
+        ///</summary>
+        [SugarColumn(ColumnName = "SUPP_NO")]
+        public string SuppNo { get; set; }
+
+        /// <summary>
+        /// 浠诲姟姹囨姤鍗� 
+        ///</summary>
+        [SugarColumn(ColumnName = "RBILL_NO")]
+        public string RbillNo { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡ID 
+        ///</summary>
+        [SugarColumn(ColumnName = "ITEM_ID")]
+        public decimal? ItemId { get; set; }
+
+        /// <summary>
+        /// 宸ュ崟鎶ュ伐ID (鐢ㄤ簬妫�楠屽崟鏇存柊鎶ュ伐琛ㄤ笂鐨勬楠岀粨鏋�) 
+        ///</summary>
+        [SugarColumn(ColumnName = "MES_SCGD_GX_ID")]
+        public decimal? MesScgdGxId { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/StandardPda/MES.Service/Modes/MesInvItemIns.cs b/StandardPda/MES.Service/Modes/MesInvItemIns.cs
new file mode 100644
index 0000000..a65fee7
--- /dev/null
+++ b/StandardPda/MES.Service/Modes/MesInvItemIns.cs
@@ -0,0 +1,322 @@
+using SqlSugar;
+
+namespace MES.Service.Modes;
+
+/// <summary>
+///     鐗╂枡鍏ュ簱涓昏〃
+/// </summary>
+[SugarTable("MES_INV_ITEM_INS")]
+public class MesInvItemIns
+{
+    /// <summary>
+    ///     ID(SEQ_INV_ID)
+    /// </summary>
+    [SugarColumn(ColumnName = "ID", OracleSequenceName = "SEQ_INV_ID",
+        IsPrimaryKey = true)]
+    public decimal Id { get; set; }
+
+    /// <summary>
+    /// 鍏ュ簱鍗曞彿 
+    ///</summary>
+    [SugarColumn(ColumnName = "BILL_NO")]
+    public string BillNo { get; set; }
+
+    /// <summary>
+    /// 鐘舵�亅0-鏈鏍�1-瀹℃牳鍏ュ簱\缁撴 
+    ///</summary>
+    [SugarColumn(ColumnName = "STATUS")]
+    public short? Status { get; set; }
+
+    /// <summary>
+    /// 浠撳簱 
+    ///</summary>
+    [SugarColumn(ColumnName = "DEPOTS_ID")]
+    public decimal? DepotsId { get; set; }
+
+    /// <summary>
+    /// 鍘熷洜 
+    ///</summary>
+    [SugarColumn(ColumnName = "REASON")]
+    public string Reason { get; set; }
+
+    /// <summary>
+    /// 鍒涘缓浜� 
+    ///</summary>
+    [SugarColumn(ColumnName = "CREATE_BY")]
+    public string CreateBy { get; set; }
+
+    /// <summary>
+    /// 鍒涘缓鏃堕棿 
+    ///</summary>
+    [SugarColumn(ColumnName = "CREATE_DATE")]
+    public DateTime? CreateDate { get; set; }
+
+    /// <summary>
+    /// 鏈�鍚庢洿鏂颁汉 
+    ///</summary>
+    [SugarColumn(ColumnName = "LASTUPDATE_BY")]
+    public string LastupdateBy { get; set; }
+
+    /// <summary>
+    /// 鏈�鍚庢洿鏂版椂闂� 
+    ///</summary>
+    [SugarColumn(ColumnName = "LASTUPDATE_DATE")]
+    public DateTime? LastupdateDate { get; set; }
+
+    /// <summary>
+    /// 鍗曟嵁绫诲瀷ID 
+    ///</summary>
+    [SugarColumn(ColumnName = "BILL_TYPE_ID")]
+    public decimal? BillTypeId { get; set; }
+
+    /// <summary>
+    /// 浜嬪姟绫诲瀷ID 
+    ///</summary>
+    [SugarColumn(ColumnName = "TRANSACTION_ID")]
+    public decimal? TransactionId { get; set; }
+
+    /// <summary>
+    /// 澶囨敞 
+    ///</summary>
+    [SugarColumn(ColumnName = "REMARK")]
+    public string Remark { get; set; }
+
+    /// <summary>
+    /// 閫佽揣鍗曞彿 
+    ///</summary>
+    [SugarColumn(ColumnName = "PAPER_BILL_NO")]
+    public string PaperBillNo { get; set; }
+
+    /// <summary>
+    /// 閫�鏂欎汉宸ュ彿 
+    ///</summary>
+    [SugarColumn(ColumnName = "USER_NO_BACK")]
+    public string UserNoBack { get; set; }
+
+    /// <summary>
+    /// 瀹℃牳浜� 
+    ///</summary>
+    [SugarColumn(ColumnName = "CHECK_USER")]
+    public string CheckUser { get; set; }
+
+    /// <summary>
+    /// 瀹℃牳鏃ユ湡 
+    ///</summary>
+    [SugarColumn(ColumnName = "CHECK_DATE")]
+    public DateTime? CheckDate { get; set; }
+
+    /// <summary>
+    /// 鐢熶骇璁㈠崟鍙� 
+    ///</summary>
+    [SugarColumn(ColumnName = "TASK_NO")]
+    public string TaskNo { get; set; }
+
+    /// <summary>
+    /// 鍏ュ簱鏃ユ湡 
+    ///</summary>
+    [SugarColumn(ColumnName = "INS_DATE")]
+    public DateTime? InsDate { get; set; }
+
+    /// <summary>
+    /// 妫�楠岀粨鏋� 
+    ///</summary>
+    [SugarColumn(ColumnName = "CHECK_RES")]
+    public string CheckRes { get; set; }
+
+    /// <summary>
+    /// 宸叉崱鏁伴噺 
+    ///</summary>
+    [SugarColumn(ColumnName = "CHECK_QTY")]
+    public decimal? CheckQty { get; set; }
+
+    /// <summary>
+    /// 棰嗘枡宸ユ 
+    ///</summary>
+    [SugarColumn(ColumnName = "MMLIST")]
+    public string Mmlist { get; set; }
+
+    /// <summary>
+    /// SAP閲囪喘璁㈠崟鍙� 
+    ///</summary>
+    [SugarColumn(ColumnName = "EBELN")]
+    public string Ebeln { get; set; }
+
+    /// <summary>
+    /// 浠撳簱缂栫爜 
+    ///</summary>
+    [SugarColumn(ColumnName = "DEPOTS_CODE")]
+    public string DepotsCode { get; set; }
+
+    /// <summary>
+    /// 浜嬪姟绫诲瀷缂栫爜 
+    ///</summary>
+    [SugarColumn(ColumnName = "TRANSCTION_NO")]
+    public string TransctionNo { get; set; }
+
+    /// <summary>
+    /// 渚涘簲鍟嗙紪鐮� 
+    ///</summary>
+    [SugarColumn(ColumnName = "SUPP_NO")]
+    public string SuppNo { get; set; }
+
+    /// <summary>
+    /// 鍏ュ簱鐘舵�� 
+    ///</summary>
+    [SugarColumn(ColumnName = "FSTATUS")]
+    public short? Fstatus { get; set; }
+
+    /// <summary>
+    /// 宸ュ巶缂栫爜 
+    ///</summary>
+    [SugarColumn(ColumnName = "FACTORY")]
+    public string Factory { get; set; }
+
+    /// <summary>
+    /// 鏄惁宸插洖鍐橲AP 
+    ///</summary>
+    [SugarColumn(ColumnName = "SAPSTATUS")]
+    public short? Sapstatus { get; set; }
+
+    /// <summary>
+    /// SAP杩斿洖鍗曟嵁 
+    ///</summary>
+    [SugarColumn(ColumnName = "SAPNO")]
+    public string Sapno { get; set; }
+
+    /// <summary>
+    /// SAP杩斿洖骞翠唤 
+    ///</summary>
+    [SugarColumn(ColumnName = "SAPYEAR")]
+    public short? Sapyear { get; set; }
+
+    /// <summary>
+    /// SAP杩斿洖淇℃伅 
+    ///</summary>
+    [SugarColumn(ColumnName = "SAPTEXT")]
+    public string Saptext { get; set; }
+
+    /// <summary>
+    /// 纭鍏ュ簱鏃ユ湡 
+    ///</summary>
+    [SugarColumn(ColumnName = "INSDATE")]
+    public DateTime? Insdate { get; set; }
+
+    /// <summary>
+    /// 鏄惁妫�楠� 
+    ///</summary>
+    [SugarColumn(ColumnName = "ISCHECK")]
+    public decimal? Ischeck { get; set; }
+
+    /// <summary>
+    /// 瀹℃牳鍏ュ簱浜� 
+    ///</summary>
+    [SugarColumn(ColumnName = "INSBY")]
+    public string Insby { get; set; }
+
+    /// <summary>
+    /// 鏄惁鏄剧ず 
+    ///</summary>
+    [SugarColumn(ColumnName = "IS_VISUAL")]
+    public decimal? IsVisual { get; set; }
+
+    /// <summary>
+    /// 鍏徃浠g爜 
+    ///</summary>
+    [SugarColumn(ColumnName = "COMPANY")]
+    public string Company { get; set; }
+
+    /// <summary>
+    /// 鎬ユ枡鏍囪瘑 
+    ///</summary>
+    [SugarColumn(ColumnName = "URGENT_FLAG")]
+    public short? UrgentFlag { get; set; }
+
+    /// <summary>
+    /// 閲囪喘鍗曡鍙� 
+    ///</summary>
+    [SugarColumn(ColumnName = "LINE_NO")]
+    public string LineNo { get; set; }
+
+    /// <summary>
+    /// 鍐查攢浜嬪姟绫诲瀷缂栫爜 
+    ///</summary>
+    [SugarColumn(ColumnName = "MTTRANSCTION_NO")]
+    public decimal? MttransctionNo { get; set; }
+
+    /// <summary>
+    /// 宸ュ崟琛屽彿 
+    ///</summary>
+    [SugarColumn(ColumnName = "TASK_LINO")]
+    public string TaskLino { get; set; }
+
+    /// <summary>
+    /// 鎶曟枡閫氱煡鍗曞崟鍙� 
+    ///</summary>
+    [SugarColumn(ColumnName = "FBILLNO")]
+    public string Fbillno { get; set; }
+
+    /// <summary>
+    /// 鎶曟枡鍗曡鍙� 
+    ///</summary>
+    [SugarColumn(ColumnName = "FBILL_LINO")]
+    public string FbillLino { get; set; }
+
+    /// <summary>
+    /// 瀹㈡埛缂栧彿 
+    ///</summary>
+    [SugarColumn(ColumnName = "CUST_NO")]
+    public string CustNo { get; set; }
+
+    /// <summary>
+    /// 瀹㈡埛鍚嶇О 
+    ///</summary>
+    [SugarColumn(ColumnName = "CUST_NAME")]
+    public string CustName { get; set; }
+
+    /// <summary>
+    /// IQC妫�楠屽崟鍙� 
+    ///</summary>
+    [SugarColumn(ColumnName = "IQC_RELEASE_NO")]
+    public string IqcReleaseNo { get; set; }
+
+    /// <summary>
+    /// 鍒拌揣鍗曞彿 
+    ///</summary>
+    [SugarColumn(ColumnName = "CBILL_NO")]
+    public string CbillNo { get; set; }
+
+    /// <summary>
+    /// 0 鐢宠鍗曪紝1鍏ュ簱鍗曟爣璇� 
+    ///</summary>
+    [SugarColumn(ColumnName = "PICK_INS")]
+    public decimal? PickIns { get; set; }
+
+    /// <summary>
+    /// 鍏ュ簱瀹℃牳浜� 
+    ///</summary>
+    [SugarColumn(ColumnName = "FCHECK_USER")]
+    public string FcheckUser { get; set; }
+
+    /// <summary>
+    /// 鍏ュ簱瀹℃牳鏃ユ湡 
+    ///</summary>
+    [SugarColumn(ColumnName = "FCHECK_DATE")]
+    public DateTime? FcheckDate { get; set; }
+
+    /// <summary>
+    /// 浠诲姟姹囨姤鍗�/宸ュ崟鍙凤紙鎴愬搧鍏ュ簱锛� 
+    ///</summary>
+    [SugarColumn(ColumnName = "RBILL_NO")]
+    public string RbillNo { get; set; }
+
+    /// <summary>
+    /// 鎶ュ伐浜� 
+    ///</summary>
+    [SugarColumn(ColumnName = "BGR")]
+    public string Bgr { get; set; }
+
+    //鍦ㄦ暟鎹簱鏌ヨ鏃跺拷鐣ヨ繖涓瓧娈�
+    [SugarColumn(IsIgnore = true)] public string? DepotName { get; set; }
+
+    [SugarColumn(IsIgnore = true)] public string? SuppName { get; set; }
+}
\ No newline at end of file
diff --git a/StandardPda/MES.Service/Modes/MesInvItemStocks.cs b/StandardPda/MES.Service/Modes/MesInvItemStocks.cs
new file mode 100644
index 0000000..2a5a4d1
--- /dev/null
+++ b/StandardPda/MES.Service/Modes/MesInvItemStocks.cs
@@ -0,0 +1,203 @@
+锘縰sing SqlSugar;
+
+namespace MES.Service.Modes;
+
+/// <summary>
+///     鐗╂枡搴撳瓨琛�
+/// </summary>
+[SugarTable("MES_INV_ITEM_STOCKS")]
+public class MesInvItemStocks
+{
+    /// <summary>
+    ///     SEQ_ME_ID
+    /// </summary>
+    [SugarColumn(ColumnName = "ID", OracleSequenceName = "SEQ_ME_ID",
+        IsPrimaryKey = true)]
+    public decimal Id { get; set; }
+
+    /// <summary>
+    ///     鐢熶骇璁㈠崟
+    /// </summary>
+    [SugarColumn(ColumnName = "TASK_NO")]
+    public string? TaskNo { get; set; }
+
+    /// <summary>
+    ///     鐗╂枡鏉$爜
+    /// </summary>
+    [SugarColumn(ColumnName = "ITEM_BARCODE")]
+    public string? ItemBarcode { get; set; }
+
+    /// <summary>
+    ///     瀹㈡埛鐗╂枡缂栫爜锛堟棤鏉$爜鎵嬪伐褰曞叆锛屾湁鏉$爜涓哄啑浣欏瓧娈碉級
+    /// </summary>
+    [SugarColumn(ColumnName = "C_ITEM_CODE")]
+    public string? CItemCode { get; set; }
+
+    /// <summary>
+    ///     鏈徃鐗╂枡缂栫爜锛堟棤鏉$爜鎵嬪伐褰曞叆锛屾湁鏉$爜涓哄啑浣欏瓧娈碉級
+    /// </summary>
+    [SugarColumn(ColumnName = "ITEM_NO")]
+    public string? ItemNo { get; set; }
+
+    /// <summary>
+    ///     瀛愬簱id
+    /// </summary>
+    [SugarColumn(ColumnName = "DEPOTS_ID")]
+    public decimal? DepotsId { get; set; }
+
+    /// <summary>
+    ///     璐т綅id
+    /// </summary>
+    [SugarColumn(ColumnName = "DEPOT_SECTIONS_ID")]
+    public decimal? DepotSectionsId { get; set; }
+
+    /// <summary>
+    ///     鍘傚鎵规
+    /// </summary>
+    [SugarColumn(ColumnName = "LOT_NO")]
+    public string? LotNo { get; set; }
+
+    /// <summary>
+    ///     鏁伴噺
+    /// </summary>
+    [SugarColumn(ColumnName = "QUANTITY")]
+    public decimal? Quantity { get; set; }
+
+    /// <summary>
+    ///     鐜繚鏍囧織锛堟棤鏉$爜鎵嬪伐褰曞叆锛屾湁鏉$爜涓哄啑浣欏瓧娈碉級(0-鍚︼紝1-鏄�)
+    /// </summary>
+    [SugarColumn(ColumnName = "EP_FLAG")]
+    public short? EpFlag { get; set; }
+
+    /// <summary>
+    ///     瀹㈡埛缂栫爜
+    /// </summary>
+    [SugarColumn(ColumnName = "CUSTOMER_NO")]
+    public string? CustomerNo { get; set; }
+
+    /// <summary>
+    ///     閲嶉噺
+    /// </summary>
+    [SugarColumn(ColumnName = "ITEM_WT")]
+    public decimal? ItemWt { get; set; }
+
+    /// <summary>
+    ///     瀛愬簱CODE
+    /// </summary>
+    [SugarColumn(ColumnName = "DEPOTS_CODE")]
+    public string? DepotsCode { get; set; }
+
+    /// <summary>
+    ///     璐т綅CODE
+    /// </summary>
+    [SugarColumn(ColumnName = "DEPOT_SECTIONS_CODE")]
+    public string? DepotSectionsCode { get; set; }
+
+    /// <summary>
+    ///     妫�楠屾棩鏈�
+    /// </summary>
+    [SugarColumn(ColumnName = "CHECK_DATE")]
+    public DateTime? CheckDate { get; set; }
+
+    /// <summary>
+    ///     0 鐗╂枡 1 鍗婃垚鍝� 2 鎴愬搧
+    /// </summary>
+    [SugarColumn(ColumnName = "ITEM_TYPE")]
+    public short? ItemType { get; set; }
+
+    /// <summary>
+    ///     鍏ュ簱鏃ユ湡
+    /// </summary>
+    [SugarColumn(ColumnName = "INDEP_DATE")]
+    public DateTime? IndepDate { get; set; }
+
+    /// <summary>
+    ///     宸ュ巶缂栧彿
+    /// </summary>
+    [SugarColumn(ColumnName = "FACTORY")]
+    public string? Factory { get; set; }
+
+    /// <summary>
+    ///     鍏徃缂栧彿
+    /// </summary>
+    [SugarColumn(ColumnName = "COMPANY")]
+    public string? Company { get; set; }
+
+    /// <summary>
+    ///     璐ㄦ鐘舵��
+    /// </summary>
+    [SugarColumn(ColumnName = "IQC_STATUS")]
+    public string? IqcStatus { get; set; }
+
+    /// <summary>
+    ///     灏忚溅鏉$爜
+    /// </summary>
+    [SugarColumn(ColumnName = "FCAR")]
+    public string? Fcar { get; set; }
+
+    /// <summary>
+    ///     鍐荤粨鎻愪氦閲嶆锛�0锛氬喕缁撴湭鎻愪氦閲嶆锛�1锛氬喕缁撳苟鎻愪氦閲嶆
+    /// </summary>
+    [SugarColumn(ColumnName = "VISABLE_SUBMIT")]
+    public short? VisableSubmit { get; set; }
+
+    /// <summary>
+    ///     鎻愪氦閲嶆浜�
+    /// </summary>
+    [SugarColumn(ColumnName = "VISABLE_SUBMIT_BY")]
+    public string? VisableSubmitBy { get; set; }
+
+    /// <summary>
+    ///     鎻愪氦閲嶆鏃堕棿
+    /// </summary>
+    [SugarColumn(ColumnName = "VISABLE_SUBMIT_DATE")]
+    public DateTime? VisableSubmitDate { get; set; }
+
+    /// <summary>
+    ///     浜у搧鍨嬪彿
+    /// </summary>
+    [SugarColumn(ColumnName = "BOARD_STYLE")]
+    public string? BoardStyle { get; set; }
+
+    /// <summary>
+    ///     浠诲姟鍗曞彿
+    /// </summary>
+    [SugarColumn(ColumnName = "WORK_NO")]
+    public string? WorkNo { get; set; }
+
+    /// <summary>
+    ///     浠诲姟鍗曡鍙�
+    /// </summary>
+    [SugarColumn(ColumnName = "WORK_LINE")]
+    public decimal? WorkLine { get; set; }
+
+    /// <summary>
+    ///     渚涘簲鍟�
+    /// </summary>
+    [SugarColumn(ColumnName = "SUPP_NO")]
+    public string? SuppNo { get; set; }
+
+    /// <summary>
+    ///     鐢熶骇绾�
+    /// </summary>
+    [SugarColumn(ColumnName = "LINE_NO")]
+    public string? LineNo { get; set; }
+
+    /// <summary>
+    ///     鍗婃垚鍝佸叆搴撳崟鍙�
+    /// </summary>
+    [SugarColumn(ColumnName = "BILL_NO")]
+    public string? BillNo { get; set; }
+
+    /// <summary>
+    ///     閲囪喘璁㈠崟id
+    /// </summary>
+    [SugarColumn(ColumnName = "EBELN_K3ID")]
+    public decimal? EbelnK3id { get; set; }
+
+    /// <summary>
+    ///     閲囪喘璁㈠崟琛宨d
+    /// </summary>
+    [SugarColumn(ColumnName = "LINE_K3ID")]
+    public decimal? LineK3id { get; set; }
+}
\ No newline at end of file
diff --git a/StandardPda/MES.Service/Modes/MesLine.cs b/StandardPda/MES.Service/Modes/MesLine.cs
new file mode 100644
index 0000000..b1d8449
--- /dev/null
+++ b/StandardPda/MES.Service/Modes/MesLine.cs
@@ -0,0 +1,167 @@
+锘縰sing SqlSugar;
+
+namespace MES.Service.Modes;
+
+/// <summary>
+///     绾夸綋
+/// </summary>
+[SugarTable("MES_LINE")]
+public class MesLine
+{
+    /// <summary>
+    ///     涓婚敭
+    /// </summary>
+    [SugarColumn(ColumnName = "ID", IsPrimaryKey = true)]
+    public decimal Id { get; set; }
+
+    /// <summary>
+    ///     绾夸綋缂栧彿
+    /// </summary>
+    [SugarColumn(ColumnName = "LINE_NO")]
+    public string LineNo { get; set; }
+
+    /// <summary>
+    ///     绾夸綋鍚嶇О
+    /// </summary>
+    [SugarColumn(ColumnName = "LINE_NAME")]
+    public string LineName { get; set; }
+
+    /// <summary>
+    ///     宸ヤ綔涓績缂栧彿
+    /// </summary>
+    [SugarColumn(ColumnName = "WORKSHOP_CENTER_CODE")]
+    public string WorkshopCenterCode { get; set; }
+
+    /// <summary>
+    ///     澶囨敞
+    /// </summary>
+    [SugarColumn(ColumnName = "MEMO")]
+    public string Memo { get; set; }
+
+    /// <summary>
+    ///     鍒涘缓浜�
+    /// </summary>
+    [SugarColumn(ColumnName = "CREATE_BY")]
+    public string CreateBy { get; set; }
+
+    /// <summary>
+    ///     鍒涘缓鏃ユ湡
+    /// </summary>
+    [SugarColumn(ColumnName = "CREATE_DATE")]
+    public DateTime? CreateDate { get; set; }
+
+    /// <summary>
+    ///     鏈�鍚庝慨鏀逛汉
+    /// </summary>
+    [SugarColumn(ColumnName = "LASTUPDATE_BY")]
+    public string LastupdateBy { get; set; }
+
+    /// <summary>
+    ///     鏈�鍚庝慨鏀规棩鏈�
+    /// </summary>
+    [SugarColumn(ColumnName = "LASTUPDATE_DATE")]
+    public DateTime? LastupdateDate { get; set; }
+
+    /// <summary>
+    ///     鍗℃澘鍒嗙被
+    /// </summary>
+    [SugarColumn(ColumnName = "BK01")]
+    public string Bk01 { get; set; }
+
+    /// <summary>
+    ///     鏍囩鏄剧ず鍊�
+    /// </summary>
+    [SugarColumn(ColumnName = "LABEL")]
+    public string Label { get; set; }
+
+    /// <summary>
+    ///     杞﹂棿绠�鐮�
+    /// </summary>
+    [SugarColumn(ColumnName = "WORKHOMEJM")]
+    public string Workhomejm { get; set; }
+
+    /// <summary>
+    ///     绾跨畝鐮�
+    /// </summary>
+    [SugarColumn(ColumnName = "LINEJM")]
+    public string Linejm { get; set; }
+
+    /// <summary>
+    ///     鏉$爜绫诲瀷
+    /// </summary>
+    [SugarColumn(ColumnName = "BARTYPE")]
+    public string Bartype { get; set; }
+
+    /// <summary>
+    ///     寰俊鏄剧ず鍊�
+    /// </summary>
+    [SugarColumn(ColumnName = "WX_LABLE")]
+    public string WxLable { get; set; }
+
+    /// <summary>
+    ///     鍖哄垎閿傞敯閿備簹
+    /// </summary>
+    [SugarColumn(ColumnName = "WORKCENTERTYPE")]
+    public string Workcentertype { get; set; }
+
+    /// <summary>
+    /// </summary>
+    [SugarColumn(ColumnName = "SIMPLENAME")]
+    public string Simplename { get; set; }
+
+    /// <summary>
+    /// </summary>
+    [SugarColumn(ColumnName = "SHOW_INDEX")]
+    public decimal? ShowIndex { get; set; }
+
+    /// <summary>
+    /// </summary>
+    [SugarColumn(ColumnName = "COMPANY")]
+    public string Company { get; set; }
+
+    /// <summary>
+    /// </summary>
+    [SugarColumn(ColumnName = "FACTORY")]
+    public string Factory { get; set; }
+
+    /// <summary>
+    ///     绾胯竟浠撳簱
+    /// </summary>
+    [SugarColumn(ColumnName = "DEPOT_CODE")]
+    public string DepotCode { get; set; }
+
+    /// <summary>
+    ///     榛樿搴撲綅
+    /// </summary>
+    [SugarColumn(ColumnName = "DEPOT_SECTION_CODE")]
+    public string DepotSectionCode { get; set; }
+
+    /// <summary>
+    ///     鎶ュ伐鏂瑰紡锛�0銆佺鏁f姤宸ワ紝1銆佹暣绾挎姤宸ワ級
+    /// </summary>
+    [SugarColumn(ColumnName = "WORK_TYPE")]
+    public decimal? WorkType { get; set; }
+
+    /// <summary>
+    ///     閮ㄩ棬缂栧彿
+    /// </summary>
+    [SugarColumn(ColumnName = "DEPARTMENTCODE")]
+    public string Departmentcode { get; set; }
+
+    /// <summary>
+    ///     鎵�灞炲伐搴�
+    /// </summary>
+    [SugarColumn(ColumnName = "PROC_NO")]
+    public string ProcNo { get; set; }
+
+    /// <summary>
+    /// </summary>
+    [SugarColumn(ColumnName = "LINE_STYLE")]
+    public string LineStyle { get; set; }
+
+    /// <summary>
+    ///     缁勯暱缂栧彿
+    /// </summary>
+    [SugarColumn(ColumnName = "L_CODE")]
+    public string LCode { get; set; }
+}
\ No newline at end of file
diff --git a/StandardPda/MES.Service/Modes/MesLineUser.cs b/StandardPda/MES.Service/Modes/MesLineUser.cs
new file mode 100644
index 0000000..f96faf3
--- /dev/null
+++ b/StandardPda/MES.Service/Modes/MesLineUser.cs
@@ -0,0 +1,40 @@
+锘縰sing SqlSugar;
+
+namespace MES.Service.Modes;
+
+/// <summary>
+///     鏈哄彴涓庝汉鍛樺鐓�
+/// </summary>
+[SugarTable("MES_LINE_USER")]
+public class MesLineUser
+{
+    /// <summary>
+    ///     搴忓垪SEQ_LINE_US
+    /// </summary>
+    [SugarColumn(ColumnName = "ID", IsPrimaryKey = true)]
+    public decimal Id { get; set; }
+
+    /// <summary>
+    ///     鏈哄彴缂栫爜
+    /// </summary>
+    [SugarColumn(ColumnName = "LINE_NO")]
+    public string? LineNo { get; set; }
+
+    /// <summary>
+    ///     鏈哄彴涓枃
+    /// </summary>
+    [SugarColumn(ColumnName = "LINE_NAME")]
+    public string? LineName { get; set; }
+
+    /// <summary>
+    ///     浜哄憳缂栫爜
+    /// </summary>
+    [SugarColumn(ColumnName = "FCODE")]
+    public string? Fcode { get; set; }
+
+    /// <summary>
+    ///     浜哄憳鍚嶇О
+    /// </summary>
+    [SugarColumn(ColumnName = "FNAME")]
+    public string? Fname { get; set; }
+}
\ No newline at end of file
diff --git a/StandardPda/MES.Service/Modes/MesQa.cs b/StandardPda/MES.Service/Modes/MesQa.cs
new file mode 100644
index 0000000..198761e
--- /dev/null
+++ b/StandardPda/MES.Service/Modes/MesQa.cs
@@ -0,0 +1,73 @@
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using SqlSugar;
+
+namespace MES.Service.Modes;
+
+/// <summary>
+///     妫�楠岄」鐩富琛�
+/// </summary>
+[Table("MES_QA")]
+[SugarTable("MES_QA")] //鐢ㄤ簬SqlSugar
+public class MesQa
+{
+    /// <summary>
+    ///     鍒涘缓浜�
+    /// </summary>
+    [Column("CREATE_BY")]
+    [SugarColumn(ColumnName = "CREATE_BY")] //鐢ㄤ簬SqlSugar
+    [StringLength(20, ErrorMessage = "鍒涘缓浜洪暱搴︿笉鑳借秴鍑�20")]
+    public string? CreateBy { get; set; }
+
+    /// <summary>
+    ///     鍒涘缓鏃堕棿
+    /// </summary>
+    [Column("CREATE_DATE")]
+    [SugarColumn(ColumnName = "CREATE_DATE")] //鐢ㄤ簬SqlSugar
+    public DateTime? CreateDate { get; set; }
+
+    /// <summary>
+    ///     瀹℃牳鐘舵��
+    /// </summary>
+    [Column("FSUBMIT")]
+    [SugarColumn(ColumnName = "FSUBMIT")] //鐢ㄤ簬SqlSugar
+    public decimal? Fsubmit { get; set; }
+
+    /// <summary>
+    ///     瀹℃牳浜�
+    /// </summary>
+    [Column("FSUBMIT_BY")]
+    [SugarColumn(ColumnName = "FSUBMIT_BY")] //鐢ㄤ簬SqlSugar
+    [StringLength(50, ErrorMessage = "瀹℃牳浜洪暱搴︿笉鑳借秴鍑�50")]
+    public string? FsubmitBy { get; set; }
+
+    /// <summary>
+    ///     瀹℃牳鏃堕棿
+    /// </summary>
+    [Column("FSUBMIT_DATE")]
+    [SugarColumn(ColumnName = "FSUBMIT_DATE")] //鐢ㄤ簬SqlSugar
+    public DateTime? FsubmitDate { get; set; }
+
+    /// <summary>
+    ///     搴忓垪SEQ_QS
+    /// </summary>
+    [Column("ID")]
+    [SugarColumn(ColumnName = "ID")] //鐢ㄤ簬SqlSugar
+    public decimal? Id { get; set; }
+
+    /// <summary>
+    ///     鐗╂枡缂栧彿
+    /// </summary>
+    [Column("ITEM_NO")]
+    [SugarColumn(ColumnName = "ITEM_NO")] //鐢ㄤ簬SqlSugar
+    [StringLength(50, ErrorMessage = "鐗╂枡缂栧彿闀垮害涓嶈兘瓒呭嚭50")]
+    public string? ItemNo { get; set; }
+
+    /// <summary>
+    ///     1涓洪妫�锛�2涓哄贰妫�锛�3涓哄叆搴撴
+    /// </summary>
+    [Column("QS_TYPE")]
+    [SugarColumn(ColumnName = "QS_TYPE")] //鐢ㄤ簬SqlSugar
+    [StringLength(1, ErrorMessage = "1涓洪妫�锛�2涓哄贰妫�锛�3涓哄叆搴撴闀垮害涓嶈兘瓒呭嚭1")]
+    public string? QsType { get; set; }
+}
\ No newline at end of file
diff --git a/StandardPda/MES.Service/Modes/MesQaItemsDetect02.cs b/StandardPda/MES.Service/Modes/MesQaItemsDetect02.cs
new file mode 100644
index 0000000..d5e1b35
--- /dev/null
+++ b/StandardPda/MES.Service/Modes/MesQaItemsDetect02.cs
@@ -0,0 +1,487 @@
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using SqlSugar;
+
+namespace MES.Service.Modes;
+
+/// <summary>
+///     IQC鎶芥琛ㄥご
+/// </summary>
+[Table("MES_QA_ITEMS_DETECT_02")]
+[SugarTable("MES_QA_ITEMS_DETECT_02")] //鐢ㄤ簬SqlSugar
+public class MesQaItemsDetect02
+{
+    /// <summary>
+    ///     SEQ_QM_ID
+    /// </summary>
+    [Key]
+    [Column("ID")]
+    [SugarColumn(IsPrimaryKey = true, OracleSequenceName = "SEQ_QM_ID",
+        ColumnName = "ID")] //鐢ㄤ簬SqlSugar
+    public decimal Id { get; set; }
+
+    /// <summary>
+    ///     鍏ュ簱鍗曞彿
+    /// </summary>
+    [Column("AUFNR")]
+    [SugarColumn(ColumnName = "AUFNR")] //鐢ㄤ簬SqlSugar
+    [StringLength(100, ErrorMessage = "鍏ュ簱鍗曞彿闀垮害涓嶈兘瓒呭嚭100")]
+    public string? Aufnr { get; set; }
+
+    /// <summary>
+    ///     鏉$爜
+    /// </summary>
+    [Column("BARCODE_A")]
+    [SugarColumn(ColumnName = "BARCODE_A")] //鐢ㄤ簬SqlSugar
+    [StringLength(100, ErrorMessage = "鏉$爜闀垮害涓嶈兘瓒呭嚭100")]
+    public string? BarcodeA { get; set; }
+
+    /// <summary>
+    ///     鏉$爜
+    /// </summary>
+    [Column("BARCODE_B")]
+    [SugarColumn(ColumnName = "BARCODE_B")] //鐢ㄤ簬SqlSugar
+    [StringLength(100, ErrorMessage = "鏉$爜闀垮害涓嶈兘瓒呭嚭100")]
+    public string? BarcodeB { get; set; }
+
+    /// <summary>
+    ///     浜у搧缂栫爜
+    /// </summary>
+    [Column("BOARD_ITEM")]
+    [SugarColumn(ColumnName = "BOARD_ITEM")] //鐢ㄤ簬SqlSugar
+    [StringLength(100, ErrorMessage = "浜у搧缂栫爜闀垮害涓嶈兘瓒呭嚭100")]
+    public string? BoardItem { get; set; }
+
+    /// <summary>
+    ///     璁よ瘉瑕佹眰
+    /// </summary>
+    [Column("CARD")]
+    [SugarColumn(ColumnName = "CARD")] //鐢ㄤ簬SqlSugar
+    [StringLength(100, ErrorMessage = "璁よ瘉瑕佹眰闀垮害涓嶈兘瓒呭嚭100")]
+    public string? Card { get; set; }
+
+    /// <summary>
+    /// </summary>
+    [Column("CLASS_NAME")]
+    [SugarColumn(ColumnName = "CLASS_NAME")] //鐢ㄤ簬SqlSugar
+    [StringLength(100, ErrorMessage = "ClassName闀垮害涓嶈兘瓒呭嚭100")]
+    public string? ClassName { get; set; }
+
+    /// <summary>
+    /// </summary>
+    [Column("CLASS_NO")]
+    [SugarColumn(ColumnName = "CLASS_NO")] //鐢ㄤ簬SqlSugar
+    [StringLength(100, ErrorMessage = "ClassNo闀垮害涓嶈兘瓒呭嚭100")]
+    public string? ClassNo { get; set; }
+
+    /// <summary>
+    /// </summary>
+    [Column("COMPANY")]
+    [SugarColumn(ColumnName = "COMPANY")] //鐢ㄤ簬SqlSugar
+    [StringLength(20, ErrorMessage = "Company闀垮害涓嶈兘瓒呭嚭20")]
+    public string? Company { get; set; }
+
+    /// <summary>
+    ///     鍒涘缓浜�
+    /// </summary>
+    [Column("CREATE_BY")]
+    [SugarColumn(ColumnName = "CREATE_BY")] //鐢ㄤ簬SqlSugar
+    [StringLength(100, ErrorMessage = "鍒涘缓浜洪暱搴︿笉鑳借秴鍑�100")]
+    public string? CreateBy { get; set; }
+
+    /// <summary>
+    ///     鍒涘缓鏃ユ湡
+    /// </summary>
+    [Column("CREATE_DATE")]
+    [SugarColumn(ColumnName = "CREATE_DATE")] //鐢ㄤ簬SqlSugar
+    public DateTime? CreateDate { get; set; }
+
+    /// <summary>
+    ///     瀹㈡埛
+    /// </summary>
+    [Column("CUST_NAME")]
+    [SugarColumn(ColumnName = "CUST_NAME")] //鐢ㄤ簬SqlSugar
+    [StringLength(100, ErrorMessage = "瀹㈡埛闀垮害涓嶈兘瓒呭嚭100")]
+    public string? CustName { get; set; }
+
+    /// <summary>
+    /// </summary>
+    [Column("FAC_LEVEL")]
+    [SugarColumn(ColumnName = "FAC_LEVEL")] //鐢ㄤ簬SqlSugar
+    [StringLength(100, ErrorMessage = "FacLevel闀垮害涓嶈兘瓒呭嚭100")]
+    public string? FacLevel { get; set; }
+
+    /// <summary>
+    /// </summary>
+    [Column("FACTORY")]
+    [SugarColumn(ColumnName = "FACTORY")] //鐢ㄤ簬SqlSugar
+    [StringLength(100, ErrorMessage = "Factory闀垮害涓嶈兘瓒呭嚭100")]
+    public string? Factory { get; set; }
+
+    /// <summary>
+    ///     閿�鍞柟鍚�
+    /// </summary>
+    [Column("FANG")]
+    [SugarColumn(ColumnName = "FANG")] //鐢ㄤ簬SqlSugar
+    [StringLength(100, ErrorMessage = "閿�鍞柟鍚戦暱搴︿笉鑳借秴鍑�100")]
+    public string? Fang { get; set; }
+
+    /// <summary>
+    ///     閫佹鏁伴噺
+    /// </summary>
+    [Column("FBATCH_QTY")]
+    [SugarColumn(ColumnName = "FBATCH_QTY")] //鐢ㄤ簬SqlSugar
+    public decimal? FbatchQty { get; set; }
+
+    /// <summary>
+    ///     浣滃簾鏍囪瘑
+    /// </summary>
+    [Column("FCANCEL")]
+    [SugarColumn(ColumnName = "FCANCEL")] //鐢ㄤ簬SqlSugar
+    [StringLength(2, ErrorMessage = "浣滃簾鏍囪瘑闀垮害涓嶈兘瓒呭嚭2")]
+    public string? Fcancel { get; set; }
+
+    /// <summary>
+    ///     浜х嚎鑷鍛�
+    /// </summary>
+    [Column("FCHECK_BY")]
+    [SugarColumn(ColumnName = "FCHECK_BY")] //鐢ㄤ簬SqlSugar
+    [StringLength(100, ErrorMessage = "浜х嚎鑷鍛橀暱搴︿笉鑳借秴鍑�100")]
+    public string? FcheckBy { get; set; }
+
+    /// <summary>
+    ///     妫�楠屾棩鏈�
+    /// </summary>
+    [Column("FCHECK_DATE")]
+    [SugarColumn(ColumnName = "FCHECK_DATE")] //鐢ㄤ簬SqlSugar
+    public DateTime? FcheckDate { get; set; }
+
+    /// <summary>
+    ///     涓嶅悎鏍肩▼搴�
+    /// </summary>
+    [Column("FCHECK_LEVEL")]
+    [SugarColumn(ColumnName = "FCHECK_LEVEL")] //鐢ㄤ簬SqlSugar
+    [StringLength(50, ErrorMessage = "涓嶅悎鏍肩▼搴﹂暱搴︿笉鑳借秴鍑�50")]
+    public string? FcheckLevel { get; set; }
+
+    /// <summary>
+    ///     鐗硅浜嬮」
+    /// </summary>
+    [Column("FCHECK_MEMO")]
+    [SugarColumn(ColumnName = "FCHECK_MEMO")] //鐢ㄤ簬SqlSugar
+    [StringLength(500, ErrorMessage = "鐗硅浜嬮」闀垮害涓嶈兘瓒呭嚭500")]
+    public string? FcheckMemo { get; set; }
+
+    /// <summary>
+    ///     IPQC妫�楠屽憳
+    /// </summary>
+    [Column("FCHECK_RESU")]
+    [SugarColumn(ColumnName = "FCHECK_RESU")] //鐢ㄤ簬SqlSugar
+    [StringLength(100, ErrorMessage = "IPQC妫�楠屽憳闀垮害涓嶈兘瓒呭嚭100")]
+    public string? FcheckResu { get; set; }
+
+    /// <summary>
+    ///     璁惧缂栧彿
+    /// </summary>
+    [Column("FEQP")]
+    [SugarColumn(ColumnName = "FEQP")] //鐢ㄤ簬SqlSugar
+    [StringLength(100, ErrorMessage = "璁惧缂栧彿闀垮害涓嶈兘瓒呭嚭100")]
+    public string? Feqp { get; set; }
+
+    /// <summary>
+    ///     涓嶈壇鎻忚堪
+    /// </summary>
+    [Column("FNG_DESC")]
+    [SugarColumn(ColumnName = "FNG_DESC")] //鐢ㄤ簬SqlSugar
+    [StringLength(2000, ErrorMessage = "涓嶈壇鎻忚堪闀垮害涓嶈兘瓒呭嚭2000")]
+    public string? FngDesc { get; set; }
+
+    /// <summary>
+    ///     澶勭悊鏂规硶
+    /// </summary>
+    [Column("FNG_HANDLE")]
+    [SugarColumn(ColumnName = "FNG_HANDLE")] //鐢ㄤ簬SqlSugar
+    [StringLength(100, ErrorMessage = "澶勭悊鏂规硶闀垮害涓嶈兘瓒呭嚭100")]
+    public string? FngHandle { get; set; }
+
+    /// <summary>
+    ///     鐢熶骇鏃ユ湡
+    /// </summary>
+    [Column("FPROD_DATE")]
+    [SugarColumn(ColumnName = "FPROD_DATE")] //鐢ㄤ簬SqlSugar
+    public DateTime? FprodDate { get; set; }
+
+    /// <summary>
+    ///     鐢熶骇绫诲瀷
+    /// </summary>
+    [Column("FPROD_TYPE")]
+    [SugarColumn(ColumnName = "FPROD_TYPE")] //鐢ㄤ簬SqlSugar
+    [StringLength(200, ErrorMessage = "鐢熶骇绫诲瀷闀垮害涓嶈兘瓒呭嚭200")]
+    public string? FprodType { get; set; }
+
+    /// <summary>
+    ///     浜屾鍒ゅ畾缁撴灉
+    /// </summary>
+    [Column("FSECOND_RESU")]
+    [SugarColumn(ColumnName = "FSECOND_RESU")] //鐢ㄤ簬SqlSugar
+    [StringLength(100, ErrorMessage = "浜屾鍒ゅ畾缁撴灉闀垮害涓嶈兘瓒呭嚭100")]
+    public string? FsecondResu { get; set; }
+
+    /// <summary>
+    ///     1涓洪妫�锛�2涓哄畬宸ユ楠�
+    /// </summary>
+    [Column("FSTATUS")]
+    [SugarColumn(ColumnName = "FSTATUS")] //鐢ㄤ簬SqlSugar
+    public decimal? Fstatus { get; set; }
+
+    /// <summary>
+    ///     鎻愪氦鏍囪瘑锛堜骇绾匡級
+    /// </summary>
+    [Column("FSUBMIT")]
+    [SugarColumn(ColumnName = "FSUBMIT")] //鐢ㄤ簬SqlSugar
+    public decimal? Fsubmit { get; set; }
+
+    /// <summary>
+    ///     鎻愪氦浜�
+    /// </summary>
+    [Column("FSUBMIT_BY")]
+    [SugarColumn(ColumnName = "FSUBMIT_BY")] //鐢ㄤ簬SqlSugar
+    [StringLength(50, ErrorMessage = "鎻愪氦浜洪暱搴︿笉鑳借秴鍑�50")]
+    public string? FsubmitBy { get; set; }
+
+    /// <summary>
+    ///     鎻愪氦鏃ユ湡
+    /// </summary>
+    [Column("FSUBMIT_DATE")]
+    [SugarColumn(ColumnName = "FSUBMIT_DATE")] //鐢ㄤ簬SqlSugar
+    public DateTime? FsubmitDate { get; set; }
+
+    /// <summary>
+    /// </summary>
+    [Column("FTYPE")]
+    [SugarColumn(ColumnName = "FTYPE")] //鐢ㄤ簬SqlSugar
+    [StringLength(100, ErrorMessage = "Ftype闀垮害涓嶈兘瓒呭嚭100")]
+    public string? Ftype { get; set; }
+
+    /// <summary>
+    ///     鐗堟湰
+    /// </summary>
+    [Column("FVERSION")]
+    [SugarColumn(ColumnName = "FVERSION")] //鐢ㄤ簬SqlSugar
+    public decimal? Fversion { get; set; }
+
+    /// <summary>
+    ///     澶勭疆浜�
+    /// </summary>
+    [Column("IPQC_BY")]
+    [SugarColumn(ColumnName = "IPQC_BY")] //鐢ㄤ簬SqlSugar
+    [StringLength(50, ErrorMessage = "澶勭疆浜洪暱搴︿笉鑳借秴鍑�50")]
+    public string? IpqcBy { get; set; }
+
+    /// <summary>
+    ///     澶勭疆鏃ユ湡
+    /// </summary>
+    [Column("IPQC_DATE")]
+    [SugarColumn(ColumnName = "IPQC_DATE")] //鐢ㄤ簬SqlSugar
+    public DateTime? IpqcDate { get; set; }
+
+    /// <summary>
+    ///     瀹℃牳鏍囪瘑
+    /// </summary>
+    [Column("IPQC_STATUS")]
+    [SugarColumn(ColumnName = "IPQC_STATUS")] //鐢ㄤ簬SqlSugar
+    public decimal? IpqcStatus { get; set; }
+
+    /// <summary>
+    /// </summary>
+    [Column("ISMODIFY1")]
+    [SugarColumn(ColumnName = "ISMODIFY1")] //鐢ㄤ簬SqlSugar
+    public decimal? Ismodify1 { get; set; }
+
+    /// <summary>
+    /// </summary>
+    [Column("ITEM_NO")]
+    [SugarColumn(ColumnName = "ITEM_NO")] //鐢ㄤ簬SqlSugar
+    [StringLength(100, ErrorMessage = "ItemNo闀垮害涓嶈兘瓒呭嚭100")]
+    public string? ItemNo { get; set; }
+
+    /// <summary>
+    ///     鏇存柊浜�
+    /// </summary>
+    [Column("LASTUPDATE_BY")]
+    [SugarColumn(ColumnName = "LASTUPDATE_BY")] //鐢ㄤ簬SqlSugar
+    [StringLength(100, ErrorMessage = "鏇存柊浜洪暱搴︿笉鑳借秴鍑�100")]
+    public string? LastupdateBy { get; set; }
+
+    /// <summary>
+    ///     鏇存柊鏃ユ湡
+    /// </summary>
+    [Column("LASTUPDATE_DATE")]
+    [SugarColumn(ColumnName = "LASTUPDATE_DATE")] //鐢ㄤ簬SqlSugar
+    public DateTime? LastupdateDate { get; set; }
+
+    /// <summary>
+    ///     宸ヤ綅ID
+    /// </summary>
+    [Column("LINEINFO_ID")]
+    [SugarColumn(ColumnName = "LINEINFO_ID")] //鐢ㄤ簬SqlSugar
+    [StringLength(20, ErrorMessage = "宸ヤ綅ID闀垮害涓嶈兘瓒呭嚭20")]
+    public string? LineinfoId { get; set; }
+
+    /// <summary>
+    ///     绾夸綋缂栧彿
+    /// </summary>
+    [Column("LINE_NO")]
+    [SugarColumn(ColumnName = "LINE_NO")] //鐢ㄤ簬SqlSugar
+    [StringLength(100, ErrorMessage = "绾夸綋缂栧彿闀垮害涓嶈兘瓒呭嚭100")]
+    public string? LineNo { get; set; }
+
+    /// <summary>
+    /// </summary>
+    [Column("LOT_NO")]
+    [SugarColumn(ColumnName = "LOT_NO")] //鐢ㄤ簬SqlSugar
+    [StringLength(100, ErrorMessage = "LotNo闀垮害涓嶈兘瓒呭嚭100")]
+    public string? LotNo { get; set; }
+
+    /// <summary>
+    ///     澶勭疆浜�
+    /// </summary>
+    [Column("MANAGE_BY")]
+    [SugarColumn(ColumnName = "MANAGE_BY")] //鐢ㄤ簬SqlSugar
+    [StringLength(50, ErrorMessage = "澶勭疆浜洪暱搴︿笉鑳借秴鍑�50")]
+    public string? ManageBy { get; set; }
+
+    /// <summary>
+    ///     澶勭疆鏃ユ湡
+    /// </summary>
+    [Column("MANAGE_DATE")]
+    [SugarColumn(ColumnName = "MANAGE_DATE")] //鐢ㄤ簬SqlSugar
+    public DateTime? ManageDate { get; set; }
+
+    /// <summary>
+    /// </summary>
+    [Column("MAX_CHECK_QTY")]
+    [SugarColumn(ColumnName = "MAX_CHECK_QTY")] //鐢ㄤ簬SqlSugar
+    public decimal? MaxCheckQty { get; set; }
+
+    /// <summary>
+    ///     鍘熷洜鍒嗘瀽
+    /// </summary>
+    [Column("MEMO_A")]
+    [SugarColumn(ColumnName = "MEMO_A")] //鐢ㄤ簬SqlSugar
+    [StringLength(4000, ErrorMessage = "鍘熷洜鍒嗘瀽闀垮害涓嶈兘瓒呭嚭4000")]
+    public string? MemoA { get; set; }
+
+    /// <summary>
+    ///     涓存椂瀵圭瓥
+    /// </summary>
+    [Column("MEMO_B")]
+    [SugarColumn(ColumnName = "MEMO_B")] //鐢ㄤ簬SqlSugar
+    [StringLength(4000, ErrorMessage = "涓存椂瀵圭瓥闀垮害涓嶈兘瓒呭嚭4000")]
+    public string? MemoB { get; set; }
+
+    /// <summary>
+    ///     闀挎湡瀵圭瓥
+    /// </summary>
+    [Column("MEMO_C")]
+    [SugarColumn(ColumnName = "MEMO_C")] //鐢ㄤ簬SqlSugar
+    [StringLength(4000, ErrorMessage = "闀挎湡瀵圭瓥闀垮害涓嶈兘瓒呭嚭4000")]
+    public string? MemoC { get; set; }
+
+    /// <summary>
+    /// </summary>
+    [Column("MENU_ID")]
+    [SugarColumn(ColumnName = "MENU_ID")] //鐢ㄤ簬SqlSugar
+    public decimal? MenuId { get; set; }
+
+    /// <summary>
+    ///     瀹℃牳浜�
+    /// </summary>
+    [Column("MODIFY1_BY")]
+    [SugarColumn(ColumnName = "MODIFY1_BY")] //鐢ㄤ簬SqlSugar
+    [StringLength(100, ErrorMessage = "瀹℃牳浜洪暱搴︿笉鑳借秴鍑�100")]
+    public string? Modify1By { get; set; }
+
+    /// <summary>
+    ///     瀹℃牳鏃ユ湡
+    /// </summary>
+    [Column("MODIFY1_DATE")]
+    [SugarColumn(ColumnName = "MODIFY1_DATE")] //鐢ㄤ簬SqlSugar
+    public DateTime? Modify1Date { get; set; }
+
+    /// <summary>
+    ///     瀹℃牳鏍囪瘑
+    /// </summary>
+    [Column("MODIFY1_FLAG")]
+    [SugarColumn(ColumnName = "MODIFY1_FLAG")] //鐢ㄤ簬SqlSugar
+    public decimal? Modify1Flag { get; set; }
+
+    /// <summary>
+    ///     鍝佺増
+    /// </summary>
+    [Column("PINGPAI")]
+    [SugarColumn(ColumnName = "PINGPAI")] //鐢ㄤ簬SqlSugar
+    [StringLength(100, ErrorMessage = "鍝佺増闀垮害涓嶈兘瓒呭嚭100")]
+    public string? Pingpai { get; set; }
+
+    /// <summary>
+    ///     璁″垝鏁伴噺
+    /// </summary>
+    [Column("PLAN_QTY")]
+    [SugarColumn(ColumnName = "PLAN_QTY")] //鐢ㄤ簬SqlSugar
+    public decimal? PlanQty { get; set; }
+
+    /// <summary>
+    ///     PQC绫诲瀷璇存槑
+    /// </summary>
+    [Column("PQC_TEXT")]
+    [SugarColumn(ColumnName = "PQC_TEXT")] //鐢ㄤ簬SqlSugar
+    [StringLength(200, ErrorMessage = "PQC绫诲瀷璇存槑闀垮害涓嶈兘瓒呭嚭200")]
+    public string? PqcText { get; set; }
+
+    /// <summary>
+    ///     PQC妫�楠岀被鍨�
+    /// </summary>
+    [Column("PQC_TYPE")]
+    [SugarColumn(ColumnName = "PQC_TYPE")] //鐢ㄤ簬SqlSugar
+    [StringLength(30, ErrorMessage = "PQC妫�楠岀被鍨嬮暱搴︿笉鑳借秴鍑�30")]
+    public string? PqcType { get; set; }
+
+    /// <summary>
+    /// </summary>
+    [Column("PROC_NAME")]
+    [SugarColumn(ColumnName = "PROC_NAME")] //鐢ㄤ簬SqlSugar
+    [StringLength(100, ErrorMessage = "ProcName闀垮害涓嶈兘瓒呭嚭100")]
+    public string? ProcName { get; set; }
+
+    /// <summary>
+    /// </summary>
+    [Column("PROC_NO")]
+    [SugarColumn(ColumnName = "PROC_NO")] //鐢ㄤ簬SqlSugar
+    [StringLength(100, ErrorMessage = "ProcNo闀垮害涓嶈兘瓒呭嚭100")]
+    public string? ProcNo { get; set; }
+
+    /// <summary>
+    ///     妫�楠屽崟鍙�
+    /// </summary>
+    [Column("RELEASE_NO")]
+    [SugarColumn(ColumnName = "RELEASE_NO")] //鐢ㄤ簬SqlSugar
+    [StringLength(100, ErrorMessage = "妫�楠屽崟鍙烽暱搴︿笉鑳借秴鍑�100")]
+    public string? ReleaseNo { get; set; }
+
+    /// <summary>
+    ///     宸ヤ綔涓績
+    /// </summary>
+    [Column("WORKSHOP_CENTER_CODE")]
+    [SugarColumn(ColumnName = "WORKSHOP_CENTER_CODE")] //鐢ㄤ簬SqlSugar
+    [StringLength(100, ErrorMessage = "宸ヤ綔涓績闀垮害涓嶈兘瓒呭嚭100")]
+    public string? WorkshopCenterCode { get; set; }
+
+    /// <summary>
+    ///     宸ヤ綔涓績
+    /// </summary>
+    [Column("GID")]
+    [SugarColumn(ColumnName = "GID")] //鐢ㄤ簬SqlSugar
+    [StringLength(100, ErrorMessage = "GID100")]
+    public decimal? Gid { get; set; }
+}
\ No newline at end of file
diff --git a/StandardPda/MES.Service/Modes/MesQsSuspend.cs b/StandardPda/MES.Service/Modes/MesQsSuspend.cs
new file mode 100644
index 0000000..23ff075
--- /dev/null
+++ b/StandardPda/MES.Service/Modes/MesQsSuspend.cs
@@ -0,0 +1,89 @@
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using SqlSugar;
+
+namespace MES.Service.Modes;
+
+/// <summary>
+/// </summary>
+[Table("MES_QS_SUSPEND")]
+[SugarTable("MES_QS_SUSPEND")] //鐢ㄤ簬SqlSugar
+public class MesQsSuspend
+{
+    /// <summary>
+    ///     SEQ_QS_IMG
+    /// </summary>
+    [Key]
+    [Column("ID")]
+    [SugarColumn(IsPrimaryKey = true, OracleSequenceName = "SEQ_QS_IMG",
+        ColumnName = "ID")] //鐢ㄤ簬SqlSugar
+    public decimal? Id { get; set; }
+
+    /// <summary>
+    ///     閮ㄩ棬鍚嶇О
+    /// </summary>
+    [Column("DEPT_NAME")]
+    [SugarColumn(ColumnName = "DEPT_NAME")] //鐢ㄤ簬SqlSugar
+    [StringLength(50, ErrorMessage = "閮ㄩ棬鍚嶇О闀垮害涓嶈兘瓒呭嚭50")]
+    public string? DeptName { get; set; }
+
+    /// <summary>
+    ///     閮ㄩ棬缂栧彿
+    /// </summary>
+    [Column("DEPT_NO")]
+    [SugarColumn(ColumnName = "DEPT_NO")] //鐢ㄤ簬SqlSugar
+    [StringLength(50, ErrorMessage = "閮ㄩ棬缂栧彿闀垮害涓嶈兘瓒呭嚭50")]
+    public string? DeptNo { get; set; }
+
+    /// <summary>
+    ///     鏄惁鍋滄満
+    /// </summary>
+    [Column("IS_SUSPEND")]
+    [SugarColumn(ColumnName = "IS_SUSPEND")] //鐢ㄤ簬SqlSugar
+    public decimal? IsSuspend { get; set; }
+
+    /// <summary>
+    ///     浜х嚎鍚嶇О
+    /// </summary>
+    [Column("LINE_NAME")]
+    [SugarColumn(ColumnName = "LINE_NAME")] //鐢ㄤ簬SqlSugar
+    [StringLength(50, ErrorMessage = "浜х嚎鍚嶇О闀垮害涓嶈兘瓒呭嚭50")]
+    public string? LineName { get; set; }
+
+    /// <summary>
+    ///     浜х嚎缂栧彿
+    /// </summary>
+    [Column("LINE_NO")]
+    [SugarColumn(ColumnName = "LINE_NO")] //鐢ㄤ簬SqlSugar
+    [StringLength(50, ErrorMessage = "浜х嚎缂栧彿闀垮害涓嶈兘瓒呭嚭50")]
+    public string? LineNo { get; set; }
+
+    /// <summary>
+    ///     鏆傚仠鏃ユ湡
+    /// </summary>
+    [Column("CREATE_DATE")]
+    [SugarColumn(ColumnName = "CREATE_DATE")] //鐢ㄤ簬SqlSugar
+    public DateTime? CreateDate { get; set; }
+
+    /// <summary>
+    ///     澶囨敞
+    /// </summary>
+    [Column("REMARKS")]
+    [SugarColumn(ColumnName = "REMARKS")] //鐢ㄤ簬SqlSugar
+    [StringLength(500, ErrorMessage = "澶囨敞闀垮害涓嶈兘瓒呭嚭500")]
+    public string? Remarks { get; set; }
+
+    /// <summary>
+    ///     寮�鍚椂闂�
+    /// </summary>
+    [Column("OPEN_DATE")]
+    [SugarColumn(ColumnName = "OPEN_DATE")] //鐢ㄤ簬SqlSugar
+    public DateTime? OpenDate { get; set; }
+
+    /// <summary>
+    ///     鏃跺樊闂撮殧(鍒�)
+    /// </summary>
+    [Column("TIME_DIFFERENCE")]
+    [SugarColumn(ColumnName = "TIME_DIFFERENCE")] //鐢ㄤ簬SqlSugar
+    public decimal? TimeDifference { get; set; }
+}
\ No newline at end of file
diff --git a/StandardPda/MES.Service/Modes/MesQualityStandard.cs b/StandardPda/MES.Service/Modes/MesQualityStandard.cs
new file mode 100644
index 0000000..bf414fa
--- /dev/null
+++ b/StandardPda/MES.Service/Modes/MesQualityStandard.cs
@@ -0,0 +1,204 @@
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using SqlSugar;
+
+namespace MES.Service.Modes;
+
+/// <summary>
+///     璐ㄩ噺鏍囧噯琛�
+/// </summary>
+[Table("MES_QUALITY_STANDARD")]
+[SugarTable("MES_QUALITY_STANDARD")] //鐢ㄤ簬SqlSugar
+public class MesQualityStandard
+{
+    /// <summary>
+    ///     搴忓垪SEQ_QS
+    /// </summary>
+    [Key]
+    [Column("ID")]
+    [SugarColumn(ColumnName = "ID")] //鐢ㄤ簬SqlSugar
+    public decimal Id { get; set; }
+
+    /// <summary>
+    ///     鍒涘缓浜�
+    /// </summary>
+    [Column("CREATE_BY")]
+    [SugarColumn(ColumnName = "CREATE_BY")] //鐢ㄤ簬SqlSugar
+    [StringLength(20, ErrorMessage = "鍒涘缓浜洪暱搴︿笉鑳借秴鍑�20")]
+    public string CreateBy { get; set; }
+
+    /// <summary>
+    ///     鍒涘缓鏃堕棿
+    /// </summary>
+    [Column("CREATE_DATE")]
+    [SugarColumn(ColumnName = "CREATE_DATE")] //鐢ㄤ簬SqlSugar
+    public DateTime? CreateDate { get; set; }
+
+    /// <summary>
+    ///     鎺ユ敹姘村钩
+    /// </summary>
+    [Column("FAC_LEVEL")]
+    [SugarColumn(ColumnName = "FAC_LEVEL")] //鐢ㄤ簬SqlSugar
+    [StringLength(100, ErrorMessage = "鎺ユ敹姘村钩闀垮害涓嶈兘瓒呭嚭100")]
+    public string FacLevel { get; set; }
+
+    /// <summary>
+    ///     妫�楠屾按骞�
+    /// </summary>
+    [Column("FCHECK_LEVEL")]
+    [SugarColumn(ColumnName = "FCHECK_LEVEL")] //鐢ㄤ簬SqlSugar
+    [StringLength(100, ErrorMessage = "妫�楠屾按骞抽暱搴︿笉鑳借秴鍑�100")]
+    public string FcheckLevel { get; set; }
+
+    /// <summary>
+    ///     瀹℃牳鐘舵��
+    /// </summary>
+    [Column("FSUBMIT")]
+    [SugarColumn(ColumnName = "FSUBMIT")] //鐢ㄤ簬SqlSugar
+    public decimal? Fsubmit { get; set; }
+
+    /// <summary>
+    ///     瀹℃牳浜�
+    /// </summary>
+    [Column("FSUBMIT_BY")]
+    [SugarColumn(ColumnName = "FSUBMIT_BY")] //鐢ㄤ簬SqlSugar
+    [StringLength(50, ErrorMessage = "瀹℃牳浜洪暱搴︿笉鑳借秴鍑�50")]
+    public string FsubmitBy { get; set; }
+
+    /// <summary>
+    ///     瀹℃牳鏃堕棿
+    /// </summary>
+    [Column("FSUBMIT_DATE")]
+    [SugarColumn(ColumnName = "FSUBMIT_DATE")] //鐢ㄤ簬SqlSugar
+    public DateTime? FsubmitDate { get; set; }
+
+    /// <summary>
+    ///     妯℃暟
+    /// </summary>
+    [Column("INSPECTION_LEVEL")]
+    [SugarColumn(ColumnName = "INSPECTION_LEVEL")] //鐢ㄤ簬SqlSugar
+    public decimal? InspectionLevel { get; set; }
+
+    /// <summary>
+    ///     妫�楠屾柟娉�
+    /// </summary>
+    [Column("INSPECTION_METHOD")]
+    [SugarColumn(ColumnName = "INSPECTION_METHOD")] //鐢ㄤ簬SqlSugar
+    [StringLength(50, ErrorMessage = "妫�楠屾柟娉曢暱搴︿笉鑳借秴鍑�50")]
+    public string InspectionMethod { get; set; }
+
+    /// <summary>
+    ///     璐ㄩ噺瑕佹眰
+    /// </summary>
+    [Column("ITEM_MOD")]
+    [SugarColumn(ColumnName = "ITEM_MOD")] //鐢ㄤ簬SqlSugar
+    [StringLength(500, ErrorMessage = "璐ㄩ噺瑕佹眰闀垮害涓嶈兘瓒呭嚭500")]
+    public string ItemMod { get; set; }
+
+    /// <summary>
+    ///     鐗╂枡缂栧彿
+    /// </summary>
+    [Column("ITEM_NO")]
+    [SugarColumn(ColumnName = "ITEM_NO")] //鐢ㄤ簬SqlSugar
+    [StringLength(50, ErrorMessage = "鐗╂枡缂栧彿闀垮害涓嶈兘瓒呭嚭50")]
+    public string ItemNo { get; set; }
+
+    /// <summary>
+    ///     姣忔ā澶氬皯涓�
+    /// </summary>
+    [Column("LEVEL_NUM")]
+    [SugarColumn(ColumnName = "LEVEL_NUM")] //鐢ㄤ簬SqlSugar
+    public decimal? LevelNum { get; set; }
+
+    /// <summary>
+    ///     鏈�澶у��
+    /// </summary>
+    [Column("MAX_VALUE")]
+    [SugarColumn(ColumnName = "MAX_VALUE")] //鐢ㄤ簬SqlSugar
+    public decimal? MaxValue { get; set; }
+
+    /// <summary>
+    ///     鏈�灏忓��
+    /// </summary>
+    [Column("MIN_VALUE")]
+    [SugarColumn(ColumnName = "MIN_VALUE")] //鐢ㄤ簬SqlSugar
+    public decimal? MinValue { get; set; }
+
+    /// <summary>
+    ///     妯″叿鍙�
+    /// </summary>
+    [Column("MOID_NUM")]
+    [SugarColumn(ColumnName = "MOID_NUM")] //鐢ㄤ簬SqlSugar
+    [StringLength(50, ErrorMessage = "妯″叿鍙烽暱搴︿笉鑳借秴鍑�50")]
+    public string MoidNum { get; set; }
+
+    /// <summary>
+    ///     澶囨敞
+    /// </summary>
+    [Column("NOTES")]
+    [SugarColumn(ColumnName = "NOTES")] //鐢ㄤ簬SqlSugar
+    [StringLength(100, ErrorMessage = "澶囨敞闀垮害涓嶈兘瓒呭嚭100")]
+    public string Notes { get; set; }
+
+    /// <summary>
+    ///     鍥剧墖鍦板潃
+    /// </summary>
+    [Column("PICTURE")]
+    [SugarColumn(ColumnName = "PICTURE")] //鐢ㄤ簬SqlSugar
+    public byte[]? Picture { get; set; }
+
+    /// <summary>
+    ///     鍥剧墖鍚嶇О
+    /// </summary>
+    [Column("PICTURENAME")]
+    [SugarColumn(ColumnName = "PICTURENAME")] //鐢ㄤ簬SqlSugar
+    [StringLength(32, ErrorMessage = "Picturename闀垮害涓嶈兘瓒呭嚭32")]
+    public string? Picturename { get; set; }
+
+    /// <summary>
+    ///     椤圭洰鍚嶇О
+    /// </summary>
+    [Column("PROJ_NAME")]
+    [SugarColumn(ColumnName = "PROJ_NAME")] //鐢ㄤ簬SqlSugar
+    [StringLength(50, ErrorMessage = "椤圭洰鍚嶇О闀垮害涓嶈兘瓒呭嚭50")]
+    public string ProjName { get; set; }
+
+    /// <summary>
+    ///     妫�楠屾爣鍑嗙紪鐮�
+    /// </summary>
+    [Column("QS_CODE")]
+    [SugarColumn(ColumnName = "QS_CODE")] //鐢ㄤ簬SqlSugar
+    [StringLength(100, ErrorMessage = "妫�楠屾爣鍑嗙紪鐮侀暱搴︿笉鑳借秴鍑�100")]
+    public string QsCode { get; set; }
+
+    /// <summary>
+    ///     妫�楠屾爣鍑嗗悕绉�
+    /// </summary>
+    [Column("QS_NAME")]
+    [SugarColumn(ColumnName = "QS_NAME")] //鐢ㄤ簬SqlSugar
+    [StringLength(100, ErrorMessage = "妫�楠屾爣鍑嗗悕绉伴暱搴︿笉鑳借秴鍑�100")]
+    public string QsName { get; set; }
+
+    /// <summary>
+    ///     1涓洪妫�锛�2涓哄贰妫�锛�3涓哄叆搴撴
+    /// </summary>
+    [Column("QS_TYPE")]
+    [SugarColumn(ColumnName = "QS_TYPE")] //鐢ㄤ簬SqlSugar
+    [StringLength(1, ErrorMessage = "1涓洪妫�锛�2涓哄贰妫�锛�3涓哄叆搴撴闀垮害涓嶈兘瓒呭嚭1")]
+    public string QsType { get; set; }
+
+    /// <summary>
+    ///     鏍囧噯鍊�
+    /// </summary>
+    [Column("STANDARD_VALUE")]
+    [SugarColumn(ColumnName = "STANDARD_VALUE")] //鐢ㄤ簬SqlSugar
+    public decimal? StandardValue { get; set; }
+
+    /// <summary>
+    ///     浣跨敤浠〃
+    /// </summary>
+    [Column("USING_INSTRUMENTS")]
+    [SugarColumn(ColumnName = "USING_INSTRUMENTS")] //鐢ㄤ簬SqlSugar
+    [StringLength(50, ErrorMessage = "浣跨敤浠〃闀垮害涓嶈兘瓒呭嚭50")]
+    public string UsingInstruments { get; set; }
+}
\ No newline at end of file
diff --git a/StandardPda/MES.Service/Modes/MesScgdGx.cs b/StandardPda/MES.Service/Modes/MesScgdGx.cs
new file mode 100644
index 0000000..783ac1e
--- /dev/null
+++ b/StandardPda/MES.Service/Modes/MesScgdGx.cs
@@ -0,0 +1,128 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using SqlSugar;
+
+namespace MES.Service.Modes
+{
+    /// <summary>
+    /// 宸ュ崟鎶ュ伐淇℃伅琛�
+    ///</summary>
+    [SugarTable("MES_SCGD_GX")]
+    public class MesScgdGx
+    {
+        /// <summary>
+        ///  
+        ///</summary>
+        [SugarColumn(ColumnName = "ID", IsPrimaryKey = true)]
+        public decimal? Id { get; set; }
+
+        /// <summary>
+        /// 鐢熶骇宸ュ崟 
+        ///</summary>
+        [SugarColumn(ColumnName = "TASK_NO")]
+        public string TaskNo { get; set; }
+
+        /// <summary>
+        /// 鐢熶骇鏉$爜 
+        ///</summary>
+        [SugarColumn(ColumnName = "ITEM_BARCODE")]
+        public string ItemBarcode { get; set; }
+
+        /// <summary>
+        /// 鏉$爜鏁伴噺 
+        ///</summary>
+        [SugarColumn(ColumnName = "QUANTITY")]
+        public decimal? Quantity { get; set; }
+
+        /// <summary>
+        /// 鎶ュ伐鏁伴噺 
+        ///</summary>
+        [SugarColumn(ColumnName = "QUANT")]
+        public decimal? Quant { get; set; }
+
+        /// <summary>
+        /// 宸ュ簭 
+        ///</summary>
+        [SugarColumn(ColumnName = "GX")]
+        public string Gx { get; set; }
+
+        /// <summary>
+        /// 宸ュ簭ID 
+        ///</summary>
+        [SugarColumn(ColumnName = "GX_ID")]
+        public string GxId { get; set; }
+
+        /// <summary>
+        /// 鎶ュ伐浜� 
+        ///</summary>
+        [SugarColumn(ColumnName = "CREATE_BY")]
+        public string CreateBy { get; set; }
+
+        /// <summary>
+        /// 鎶ュ伐鏃堕棿 
+        ///</summary>
+        [SugarColumn(ColumnName = "CREATE_BY_DATE")]
+        public DateTime? CreateByDate { get; set; }
+
+        /// <summary>
+        /// 鍒拌揣鍗曞彿/鍏ュ簱鍗曞彿 
+        ///</summary>
+        [SugarColumn(ColumnName = "BILL_NO")]
+        public string BillNo { get; set; }
+
+        /// <summary>
+        /// 鐝 
+        ///</summary>
+        [SugarColumn(ColumnName = "F_BC")]
+        public string FBc { get; set; }
+
+        /// <summary>
+        /// 宸ュ簭瀹屾瘯鏍囪瘑 
+        ///</summary>
+        [SugarColumn(ColumnName = "GX_FLAE")]
+        public decimal? GxFlae { get; set; }
+
+        /// <summary>
+        /// 鎶ュ伐鏃堕棿锛堝勾鏈堟棩锛� 
+        ///</summary>
+        [SugarColumn(ColumnName = "CREATE_BY1")]
+        public string CreateBy1 { get; set; }
+
+        /// <summary>
+        /// 鎷嗗垎鏁� 
+        ///</summary>
+        [SugarColumn(ColumnName = "C_QUANT")]
+        public decimal? CQuant { get; set; }
+
+        /// <summary>
+        /// 寮�宸ユ椂闂� 
+        ///</summary>
+        [SugarColumn(ColumnName = "KG_TIME")]
+        public string KgTime { get; set; }
+
+        /// <summary>
+        /// 瀹屽伐鏃堕棿 
+        ///</summary>
+        [SugarColumn(ColumnName = "WG_TIME")]
+        public string WgTime { get; set; }
+
+        /// <summary>
+        /// 鏈哄彴 
+        ///</summary>
+        [SugarColumn(ColumnName = "JT")]
+        public string Jt { get; set; }
+
+        /// <summary>
+        /// 鎶ュ伐浜虹紪鐮� 
+        ///</summary>
+        [SugarColumn(ColumnName = "CREATE_CODE")]
+        public string CreateCode { get; set; }
+
+        /// <summary>
+        ///  
+        ///</summary>
+        [SugarColumn(ColumnName = "CHECK_FLAG")]
+        public string CheckFlag { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/StandardPda/MES.Service/Modes/QsItemOqcItemDetail.cs b/StandardPda/MES.Service/Modes/QsItemOqcItemDetail.cs
index c0e169d..b661544 100644
--- a/StandardPda/MES.Service/Modes/QsItemOqcItemDetail.cs
+++ b/StandardPda/MES.Service/Modes/QsItemOqcItemDetail.cs
@@ -84,4 +84,6 @@
     public string? Remarks { get; set; }
 
     [SugarColumn(IsIgnore = true)] public int? count { get; set; }
+
+    [SugarColumn(IsIgnore = true)] public decimal? ItemInId { get; set; }
 }
\ No newline at end of file
diff --git a/StandardPda/MES.Service/Modes/QsItemOqcReq.cs b/StandardPda/MES.Service/Modes/QsItemOqcReq.cs
index b1fb7b6..4183733 100644
--- a/StandardPda/MES.Service/Modes/QsItemOqcReq.cs
+++ b/StandardPda/MES.Service/Modes/QsItemOqcReq.cs
@@ -135,4 +135,7 @@
     [SugarColumn(IsIgnore = true)] public string? LineNo { get; set; }
 
     [SugarColumn(IsIgnore = true)] public decimal? Quantity { get; set; }
+    [SugarColumn(IsIgnore = true)] public decimal? ItemInId { get; set; }
+
+    [SugarColumn(IsIgnore = true)] public string? Bgr { get; set; }
 }
\ No newline at end of file
diff --git a/StandardPda/MES.Service/Modes/VLineUser.cs b/StandardPda/MES.Service/Modes/VLineUser.cs
new file mode 100644
index 0000000..300b3bc
--- /dev/null
+++ b/StandardPda/MES.Service/Modes/VLineUser.cs
@@ -0,0 +1,23 @@
+锘縰sing SqlSugar;
+
+namespace MES.Service.Modes
+{
+    /// <summary>
+    /// 浜х嚎涓庣敤鎴峰鐓�
+    ///</summary>
+    [SugarTable("V_LINE_USER")]
+    public class VLineUser
+    {
+        /// <summary>
+        ///  浜х嚎鍚�
+        ///</summary>
+        [SugarColumn(ColumnName = "LINE_NO")]
+        public string? LineNo { get; set; }
+
+        /// <summary>
+        ///  鐢ㄦ埛鍚�
+        ///</summary>
+        [SugarColumn(ColumnName = "FNAME")]
+        public string? FName { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/StandardPda/MES.Service/service/QC/BaseService.cs b/StandardPda/MES.Service/service/QC/BaseService.cs
index d99828f..4c9af3a 100644
--- a/StandardPda/MES.Service/service/QC/BaseService.cs
+++ b/StandardPda/MES.Service/service/QC/BaseService.cs
@@ -5,16 +5,16 @@
 
 public class BaseService
 {
-    // public string?[] getUserLineNo(string userNo)
-    // {
-    //     //MesLineUser
-    //     var db = SqlSugarHelper.GetInstance();
-    //     var mesLineUsers = db.Queryable<MesLineUser>()
-    //         .Where(a => a.Fcode == userNo)
-    //         .ToList();
-    //     // 浣跨敤 Distinct 鏂规硶瀵� LineNo 杩涜鍘婚噸  
-    //     return mesLineUsers.Select(s => s.LineNo).Distinct().ToArray();
-    // }
+    public string?[] getUserLineNo(string userNo)
+    {
+        //MesLineUser
+        var db = SqlSugarHelper.GetInstance();
+        var mesLineUsers = db.Queryable<MesLineUser>()
+            .Where(a => a.Fcode == userNo)
+            .ToList();
+        // 浣跨敤 Distinct 鏂规硶瀵� LineNo 杩涜鍘婚噸  
+        return mesLineUsers.Select(s => s.LineNo).Distinct().ToArray();
+    }
 
     public int saveImage(List<MesQsImage> entity)
     {
diff --git a/StandardPda/MES.Service/service/QC/RKJService.cs b/StandardPda/MES.Service/service/QC/RKJService.cs
new file mode 100644
index 0000000..6ad9bb9
--- /dev/null
+++ b/StandardPda/MES.Service/service/QC/RKJService.cs
@@ -0,0 +1,864 @@
+锘縰sing MES.Service.DB;
+using MES.Service.Dto.service;
+using MES.Service.Modes;
+using MES.Service.util;
+using SqlSugar;
+
+namespace MES.Service.service.QC;
+
+public class RKJService
+{
+    private readonly BaseService _baseService = new();
+
+    //鎵嬪姩鎵цsql
+    //鐢熸垚妫�楠屽崟鍙�
+    public string getMaxBillNo()
+    {
+        var db = SqlSugarHelper.GetInstance();
+        var date = DateTime.Now.ToString("yyyy-MM-dd");
+        var sql =
+            "select max(RELEASE_NO) from QS_ITEM_OQC_REQ where RELEASE_NO like 'RKJN%' and to_char(CREATE_DATE,'yyyy-mm-dd') ='" +
+            date + "'";
+
+        var maxBillNo = db.Ado.SqlQuerySingle<string>(sql);
+
+        var number = "0001";
+        if (maxBillNo != null)
+        {
+            maxBillNo = maxBillNo.Substring(12);
+            var no = Convert.ToInt32(maxBillNo);
+            no++;
+            number = no.ToString().PadLeft(4, '0');
+        }
+
+        return "RKJN" + date.Replace("-", "") + number;
+    }
+
+    //閫夋嫨浜х嚎
+    public List<MesLine> getLineNo()
+    {
+        var db = SqlSugarHelper.GetInstance();
+        return db.Queryable<MesLine>()
+            .Where(t =>
+                t.LineStyle == "鍖呰" ||
+                SqlFunc.ContainsArray(new[] { "V1", "V3", "V5", "V6" },
+                    t.LineNo))
+            .OrderBy(t => t.LineNo)
+            .Select(t => new MesLine
+            {
+                LineNo = t.LineNo,
+                LineName = t.LineName
+            }).OrderBy("LINE_NO")
+            .ToList();
+    }
+
+
+    //鑾峰彇宸ュ崟鍙�
+    public List<RkDaa002> GetDaa001s(string lineNo)
+    {
+        var db = SqlSugarHelper.GetInstance();
+        return db.Queryable<RkDaa002>()
+            .Where(t => lineNo.Contains(t.Daa020))
+            .OrderBy(t => t.BillNo, OrderByType.Desc)
+            .ToList();
+    }
+
+    //鏍规嵁妫�楠屾爣鍑嗘潵璁$畻妫�楠屼釜鏁�
+    public List<QsItemOqcItem> SetItems(string itemNo, decimal quantity)
+    {
+        var db = SqlSugarHelper.GetInstance();
+
+        var count = db.Queryable<MesQa>().Where(s => s.QsType == "3"
+            && s.ItemNo == itemNo && s.Fsubmit == 1).Count();
+
+        if (count <= 0) return [];
+
+        var qsItemOqcItems = db
+            .Queryable<MesQualityStandard>()
+            .Where(b => b.QsType == "3"
+                        && b.ItemNo == itemNo).Select(
+                b => new QsItemOqcItem
+                {
+                    ProjName = b.ProjName,
+                    ItemMod = b.ItemMod,
+                    InspectionMethod = b.InspectionMethod,
+                    UsingInstruments = b.UsingInstruments,
+                    LevelNum = SqlFunc.IsNull(
+                        SqlFunc.IsNull(b.LevelNum * b.InspectionLevel, 1),
+                        b.InspectionLevel),
+                    MaxValue = b.MaxValue,
+                    StandardValue = b.StandardValue,
+                    MinValue = b.MinValue,
+                    Notes = b.Notes,
+                    FcheckLevel = b.FcheckLevel,
+                    FacLevel = b.FacLevel,
+                    QsCode = b.QsCode,
+                    QsName = b.QsName,
+                    Result = "鏈娴�",
+                    isCheck = 0,
+                    Picture = b.Picture,
+                    Picturename = b.Picturename
+                }).ToList();
+
+        qsItemOqcItems.ForEach(item =>
+        {
+            string LEV = null;
+            switch (item.FcheckLevel)
+            {
+                case null:
+                    LEV = ""; // 榛樿鍊�
+                    break;
+                case { } s when s.Contains("S1"):
+                    LEV = "B.FLEVEL_S1";
+                    break;
+                case { } s when s.Contains("S2"):
+                    LEV = "B.FLEVEL_S2";
+                    break;
+                case { } s when s.Contains("S3"):
+                    LEV = "B.FLEVEL_S3";
+                    break;
+                case { } s when s.Contains("S4"):
+                    LEV = "B.FLEVEL_S4";
+                    break;
+                case { } s when s.Contains("(I)"):
+                    LEV = "B.FLEVEL_I";
+                    break;
+                case { } s when s.Contains("(II)"):
+                    LEV = "B.FLEVEL_II";
+                    break;
+                case { } s when s.Contains("(III)"):
+                    LEV = "B.FLEVEL_III";
+                    break;
+                default:
+                    LEV = ""; // 榛樿鍊�
+                    break;
+            }
+
+            if (string.IsNullOrEmpty(LEV))
+                throw new Exception(item.QsCode + "涓嬬殑妫�楠屾按骞崇淮鎶ょ殑涓嶆纭�");
+
+            var sql =
+                "SELECT " + LEV +
+                " FROM MES_QM_AQL1 A LEFT JOIN MES_QM_AQL2 B ON B.AQL1_ID=A.ID WHERE A.SAMPLE_SIZE_NO='" +
+                item.QsCode + "' AND B.LOT_FROM<= " + quantity + "   AND " +
+                quantity + "<=B.LOT_TO";
+
+            var maxBillNo = db.Ado.SqlQuerySingle<string>(sql);
+
+            if (string.IsNullOrEmpty(maxBillNo))
+                throw new Exception(
+                    item.QsCode + "涓嬫病鏈�" + quantity + "杩欎釜鑼冨洿鐨勬娊鏍峰熀鍑�");
+
+            var result = ExtractSubstring(item.FacLevel, '(', ')');
+
+            if (string.IsNullOrEmpty(result))
+                throw new Exception(item.QsCode +
+                                    "缁存姢鐨勬帴鏀舵按骞充笉姝g‘锛屽簲璇ユ槸0.010---(AQL_0_0010)杩欐牱");
+
+            sql = "SELECT FSAMPLE_SIZE_WORD, " + result +
+                  " Result FROM MES_QM_AQL1 A LEFT JOIN MES_QM_AQL3 C ON C.AQL1_ID=A.ID WHERE A.SAMPLE_SIZE_NO= '" +
+                  item.QsCode + "'  AND SAMPLE_SIZE_WORD= '" + maxBillNo + "'";
+            var resultClass = db.Ado.SqlQuerySingle<ResultClass>(sql);
+
+            item.LevelNum = resultClass.FSAMPLE_SIZE_WORD;
+            item.FreQty = resultClass.Result;
+        });
+
+        return qsItemOqcItems;
+    }
+
+    private string ExtractSubstring(string input, char startChar, char endChar)
+    {
+        var startIndex = input.IndexOf(startChar);
+        var endIndex = input.IndexOf(endChar, startIndex);
+
+        if (startIndex == -1 || endIndex == -1)
+            // 濡傛灉鏈壘鍒拌捣濮嬪瓧绗︽垨缁撴潫瀛楃锛屽垯杩斿洖绌哄瓧绗︿覆鎴栬�呮姏鍑哄紓甯革紝鏍规嵁瀹為檯鎯呭喌閫夋嫨
+            return string.Empty;
+        // 鎴栬�呮姏鍑哄紓甯�
+        // throw new ArgumentException("Start or end character not found");
+        // 鎻愬彇瀛愬瓧绗︿覆
+        var length = endIndex - startIndex - 1;
+        return input.Substring(startIndex + 1, length);
+    }
+
+    public List<QsItemOqcItem> GetItems(decimal? pid, decimal? id)
+    {
+        var db = SqlSugarHelper.GetInstance();
+        return db.Queryable<QsItemOqcItem, QsItemOqcItemDetail>((a, b) =>
+                new JoinQueryInfos(JoinType.Left, a.Id == b.Pid))
+            .WhereIF(pid > 0, (a, b) => a.Pid == pid)
+            .WhereIF(id > 0, (a, b) => a.Id == id)
+            .GroupBy((a, b) => new
+            {
+                a.Id,
+                a.ProjName,
+                a.ItemMod,
+                a.InspectionMethod,
+                a.UsingInstruments,
+                a.LevelNum,
+                a.MaxValue,
+                a.StandardValue,
+                a.MinValue,
+                a.Notes,
+                a.IsPass,
+                a.FcheckLevel,
+                a.FacLevel,
+                a.QsCode,
+                a.QsName
+            }).Select((a, b) => new QsItemOqcItem
+            {
+                ProjName = a.ProjName,
+                Id = a.Id,
+                ItemMod = a.ItemMod,
+                InspectionMethod = a.InspectionMethod,
+                UsingInstruments = a.UsingInstruments,
+                LevelNum = a.LevelNum,
+                MaxValue = a.MaxValue,
+                StandardValue = a.StandardValue,
+                MinValue = a.MinValue,
+                Notes = a.Notes,
+                FcheckLevel = a.FcheckLevel,
+                FacLevel = a.FacLevel,
+                QsCode = a.QsCode,
+                QsName = a.QsName,
+                isCheck = SqlFunc.AggregateCount(b.Id),
+                Result = a.IsPass == 1 &&
+                         a.LevelNum == SqlFunc.AggregateCount(b.Id) ? "鍚堟牸"
+                    : a.IsPass == 0 &&
+                      a.LevelNum == SqlFunc.AggregateCount(b.Id) ? "涓嶅悎鏍�"
+                    : "鏈畬鎴�"
+            }).OrderBy("result desc").ToList();
+    }
+
+    public dynamic save(RKJDto rkjDto)
+    {
+        var xj = rkjDto.from;
+        var items = rkjDto.items;
+        var userNo = rkjDto.userNo;
+
+        SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            var commit = 0;
+
+            xj.CreateBy = userNo;
+            xj.CreateDate = DateTime.Now;
+
+            var pid = db.Insertable(xj).ExecuteReturnIdentity();
+
+            xj.Id = pid;
+
+            rkjDto.gid = pid;
+
+            foreach (var item in items) item.Pid = pid;
+
+            commit += db.Insertable(items).ExecuteCommand();
+
+            return commit;
+        });
+
+
+        // using (var connection =
+        //        new OracleConnection(OracleSQLHelper.ConnectionString))        //     connection.Open();
+        //
+        //     var transaction = connection.BeginTransaction();
+        //
+        //     try
+        //     {
+        //         using (var command = new OracleCommand())
+        //         {
+        //             command.Connection = connection;
+        //             command.Transaction = transaction;
+        //             command.CommandText = "insert_and_update_picture_RKJ";
+        //             command.CommandType = CommandType.StoredProcedure;
+        //
+        //             // Add parameters
+        //             command.Parameters.Add("p_QS_TYPE", OracleDbType.Varchar2)
+        //                 .Value = "3";
+        //             command.Parameters.Add("p_MOID_NUM", OracleDbType.Varchar2)
+        //                 .Value = rkjDto.moidNum;
+        //             command.Parameters.Add("p_pid", OracleDbType.Int32).Value =
+        //                 xj.Id;
+        //
+        //             command.ExecuteNonQuery();
+        //         }
+        //
+        //         transaction.Commit();
+        //     }
+        //     catch (Exception)
+        //     {
+        //         transaction.Rollback();
+        //         throw;
+        //     }
+        // }
+
+        rkjDto.items = GetItems(xj.Id, null);
+
+        rkjDto.items.ForEach(s =>
+        {
+            if (s.MaxValue != null || s.StandardValue != null ||
+                s.MinValue != null) return;
+            var detail = new QsItemOqcItemDetail();
+            detail.Pid = s.Id;
+            detail.Gid = rkjDto.gid;
+            detail.Fstand = "鈭�";
+            detail.FcheckResu = "1";
+            detail.UpdateBy = rkjDto.userNo;
+            detail.count = (int?)s.LevelNum;
+            SetQSItemDetail(detail);
+        });
+
+        return Convert.ToInt32(xj.Id);
+    }
+
+    public int SetQSItemDetail(QsItemOqcItemDetail detail)
+    {
+        var db = SqlSugarHelper.GetInstance();
+
+        var qsItemOqcReq = db.Queryable<QsItemOqcReq>()
+            .Where(o => o.Id == detail.Gid)
+            .First();
+
+        if (qsItemOqcReq == null)
+        {
+            throw new Exception("璇ユ楠屽崟涓嶅瓨鍦紝璇峰洖鍒板叆搴撴鍒楄〃閲嶆柊鏌ョ湅");
+        }
+
+        if (!string.IsNullOrEmpty(qsItemOqcReq.FcheckResu))
+        {
+            throw new Exception("璇ユ楠屽崟宸�" + qsItemOqcReq.FcheckResu + "锛屼笉杩愯淇敼缁撴灉");
+        }
+
+        var oracle = SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            List<QsItemOqcItemDetail> result = new();
+            for (var i = 0; i < detail.count; i++)
+            {
+                var item = new QsItemOqcItemDetail();
+                item.Gid = detail.Gid;
+                item.Pid = detail.Pid;
+                item.Fstand = detail.Fstand;
+                item.FcheckResu = detail.FcheckResu;
+                item.CreateBy = detail.UpdateBy;
+                item.CreateDate = DateTime.Now;
+                result.Add(item);
+            }
+
+            return db.Insertable(result).ExecuteCommand();
+        });
+
+        detail.CreateBy = detail.UpdateBy;
+
+        autoResult(detail);
+
+        return oracle;
+    }
+
+    private int autoResult(QsItemOqcItemDetail detail)
+    {
+        var db = SqlSugarHelper.GetInstance();
+
+        // Single 娌℃湁鏌ヨ鍒扮粨鏋滄椂杩斿洖Null锛屽鏋滅粨鏋滃ぇ浜�1鏉′細鎶涘嚭閿欒
+        var QsItemOqcItem = db.Queryable<QsItemOqcItem>()
+            .Single(s => s.Id == detail.Pid);
+
+        if (QsItemOqcItem == null) return 0;
+
+        //鏌ヨ杩欎釜妫�楠岄」鐩笅鐨勬楠岀粨鏋�
+        var count = db.Queryable<QsItemOqcItemDetail>()
+            .Where(s => s.Pid == detail.Pid).Count();
+
+
+        var result = 0;
+
+        //妫�楠屽疄闄呯粨鏋滀笉绛変簬搴旇妫�楠岀殑涓暟鏃剁洿鎺ユ帹鍑�
+        if (QsItemOqcItem.LevelNum != count) return 0;
+
+        //鍚堟牸鐨勬湁澶氬皯涓�
+        var passCount = db.Queryable<QsItemOqcItemDetail>()
+            .Where(s => s.Pid == detail.Pid && s.Fstand == "鈭�").Count();
+
+        if (count == passCount)
+            result = 1;
+        else if (count - passCount < QsItemOqcItem.FreQty) result = 1;
+
+        var useTransactionWithOracle = SqlSugarHelper.UseTransactionWithOracle(
+            db =>
+            {
+                var commit = 0;
+                commit += db.Updateable<QsItemOqcItem>()
+                    .SetColumns(s => s.IsPass == result)
+                    .Where(s => s.Id == detail.Pid)
+                    .ExecuteCommand();
+
+                return commit;
+            });
+
+        var isNull = db.Queryable<QsItemOqcItem>()
+            .Where(s => s.Pid == detail.Gid && s.IsPass == null).Count();
+
+        if (isNull > 0) return 1;
+
+
+        //鑾峰彇妫�楠屽崟鐨勬楠岄」鐩殑涓暟
+        var sum = db.Queryable<QsItemOqcItem>()
+            .Where(s => s.Pid == detail.Gid).Count();
+
+        if (sum == 0) return 1;
+
+        //鑾峰彇妫�楠屽崟涓嬬殑鍚堟牸鐨勬楠岄」鐩釜鏁�
+        var icount = db.Queryable<QsItemOqcItem>()
+            .Where(s => s.Pid == detail.Gid && s.IsPass == 1).Count();
+
+        var FcheckResu = "涓嶅悎鏍�";
+
+        //瀹為檯涓暟绛変簬鐞嗚涓暟鏃跺妫�楠屽崟杩涜鍒ゅ畾
+        if (sum == icount)
+            //鍚堟牸鐨勬楠岀粨鏋滅瓑浜庢�绘楠屾暟瑙嗕负鍚堟牸
+            FcheckResu = "鍚堟牸";
+
+        SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            return db.Updateable<QsItemOqcReq>()
+                .SetColumns(s => s.FcheckResu == FcheckResu)
+                .SetColumns(s => s.FcheckDate == DateTime.Now)
+                .SetColumns(s => s.FcheckBy == detail.CreateBy)
+                .SetColumns(s => s.LastupdateBy == detail.CreateBy)
+                .SetColumns(s => s.LastupdateDate == DateTime.Now)
+                .Where(s => s.Id == detail.Gid)
+                .ExecuteCommand();
+        });
+
+        // if (FcheckResu.Equals("涓嶅悎鏍�"))
+        //     //鑷姩鐢熸垚鍏ュ簱妫�寮傚父瀵圭瓥
+        //     saveDetect02(detail.Gid, detail.CreateBy);
+
+        setBarCodes(FcheckResu, detail, db);
+
+        return useTransactionWithOracle;
+    }
+
+    /// <summary>
+    ///  褰撴楠屽崟涓嶅悎鏍兼椂锛�
+    /// 鍙栨秷mes_inv_item_barcodes 鐨勬姤宸ユ爣璇� WORK_FLG
+    /// womdaa 宸茬敓浜ч噺 DAA011鍔犲洖鏉$爜鎶ュ伐鏁伴噺
+    /// MES_SCGD_GX 妫�楠屾爣璇� CHECK_FLAG锛�('鈭�','脳')
+    /// 閫氳繃mes_inv_item_in_c_details2鐨凪ES_SCGD_GX_ID杩炴帴
+    ///</summary>
+    private void setBarCodes(string? FcheckResu, QsItemOqcItemDetail detail,
+        SqlSugarClient db)
+    {
+        var oqcReqList = db.Queryable<QsItemOqcReq, MesInvItemIns, Womdaa>(
+                (a, b, c) =>
+                    new JoinQueryInfos(
+                        JoinType.Left, a.BillNo == b.BillNo,
+                        JoinType.Left, c.Daa001 == b.RbillNo
+                    ))
+            .Where(a => a.Id == detail.Gid)
+            .Select((a, b, c) =>
+                new
+                {
+                    a.Id, a.BillNo, c.Daa001
+                })
+            .ToList();
+
+        if (oqcReqList.Count <= 0)
+        {
+            return;
+        }
+
+        var qsItemOqcReq = oqcReqList.First(); // 鑾峰彇绗竴涓厓绱�  
+
+        if (qsItemOqcReq.Id is null or 0) return;
+
+        var mesInvItemInsList = db
+            .Queryable<MesInvItemIns, MesInvItemInCDetails2>((a, b) =>
+                new JoinQueryInfos(
+                    JoinType.Left, a.Id == b.ItemInId))
+            .Where((a, b) => a.BillNo == qsItemOqcReq.BillNo)
+            .Select((a, b) => new
+                { b.ItemBarcode, b.Quantity, b.MesScgdGxId })
+            .ToList();
+
+        var barCodes = mesInvItemInsList.Select(s => s.ItemBarcode).ToList();
+
+        var count = db.Queryable<MesInvItemBarcodes>()
+            .Where(s => barCodes.Contains(s.ItemBarcode) && s.WorkFlg == 0)
+            .Count();
+
+        var gxId = mesInvItemInsList.Select(s => s.MesScgdGxId).ToList();
+
+        var sumQty = mesInvItemInsList.Sum(s => s.Quantity);
+
+        if ("鍚堟牸".Equals(FcheckResu))
+        {
+            //鏍规嵁宸ュ簭id鏇存柊宸ュ簭琛ㄧ殑妫�楠岀粨鏋�
+            db.Updateable<MesScgdGx>()
+                .SetColumns(s => s.CheckFlag == "鈭�")
+                .Where(s => gxId.Contains(s.Id))
+                .ExecuteCommand();
+
+            if (count <= 0) return;
+            
+            //鍙栨秷mes_inv_item_barcodes 鐨勬姤宸ユ爣璇� WORK_FLG 浣跨敤鏉$爜
+            var executeCommand = db.Updateable<MesInvItemBarcodes>()
+                .SetColumns(a => a.WorkFlg == 1)
+                .Where(a => barCodes.Contains(a.ItemBarcode))
+                .ExecuteCommand();
+
+            if (executeCommand > 0)
+            {
+                //womdaa 宸茬敓浜ч噺 DAA011鍔犲洖鏉$爜鎶ュ伐鏁伴噺
+                db.Updateable<Womdaa>()
+                    .SetColumns(b => b.Daa011 == b.Daa011 + sumQty)
+                    .Where(b => b.Daa001 == qsItemOqcReq.Daa001)
+                    .ExecuteCommand();
+            }
+        }
+        else if ("涓嶅悎鏍�".Equals(FcheckResu))
+        {
+            //鏍规嵁宸ュ簭id鏇存柊宸ュ簭琛ㄧ殑妫�楠岀粨鏋�
+            db.Updateable<MesScgdGx>()
+                .SetColumns(s => s.CheckFlag == "脳")
+                .Where(s => gxId.Contains(s.Id))
+                .ExecuteCommand();
+
+            //鍙栨秷mes_inv_item_barcodes 鐨勬姤宸ユ爣璇� WORK_FLG 浣跨敤鏉$爜
+            var executeCommand = db.Updateable<MesInvItemBarcodes>()
+                .SetColumns(a => a.WorkFlg == 0)
+                .Where(a => barCodes.Contains(a.ItemBarcode))
+                .ExecuteCommand();
+
+            if (executeCommand > 0)
+            {
+                //womdaa 宸茬敓浜ч噺 DAA011鍔犲洖鏉$爜鎶ュ伐鏁伴噺
+                db.Updateable<Womdaa>()
+                    .SetColumns(b => b.Daa011 == b.Daa011 - sumQty)
+                    .Where(b => b.Daa001 == qsItemOqcReq.Daa001)
+                    .ExecuteCommand();
+            }
+        }
+    }
+
+    public int saveDetect02(decimal? gid, string? createBy)
+    {
+        var db = SqlSugarHelper.GetInstance();
+
+        var qsItemOqcReq =
+            db.Queryable<QsItemOqcReq>().Single(s => s.Id == gid);
+
+        var mesInvItemIns = db.Queryable<MesInvItemIns>()
+            .Single(s => s.BillNo == qsItemOqcReq.BillNo);
+
+        var mesSchemeResult = db.Queryable<Womdaa>()
+            .Single(s => s.Daa001 == mesInvItemIns.CbillNo);
+
+        var entity = new MesQaItemsDetect02();
+        // entity.ItemNo = mesSchemeResult.BoardItem;
+        // entity.BoardItem = mesSchemeResult.BoardItem;
+        entity.LineNo = mesSchemeResult.Daa015;
+        // entity.Aufnr = mesSchemeResult.TaskNo;
+        entity.ReleaseNo = qsItemOqcReq.ReleaseNo;
+        entity.LotNo = qsItemOqcReq.BillNo;
+        entity.FcheckDate = qsItemOqcReq.FcheckDate;
+        entity.FcheckMemo = qsItemOqcReq.Remarks;
+        entity.Gid = qsItemOqcReq.Id;
+        // entity.PlanQty = qsItemOqcReq.FcheckDate;
+
+
+        entity.FcheckResu = "涓嶅悎鏍�";
+        entity.FcheckLevel = "涓ラ噸";
+        entity.CreateDate = DateTime.Now;
+        entity.Factory = "10000";
+        entity.Company = "1000";
+        entity.Ftype = "4";
+        entity.Fversion = 0;
+        entity.Modify1Flag = 0;
+        entity.IpqcStatus = 0;
+        entity.Fsubmit = 1;
+        entity.CreateBy = createBy;
+        entity.FcheckBy = createBy;
+
+        return SqlSugarHelper.UseTransactionWithOracle(db => db
+            .Insertable(entity)
+            .ExecuteCommand());
+    }
+
+
+    public (List<QsItemOqcReq> items, int TotalCount) getPage(
+        XJPageResult queryObj)
+    {
+        var db = SqlSugarHelper.GetInstance();
+
+        var totalCount = 0;
+
+        string[]? lineNo = null;
+
+        if (StringUtil.IsNotNullOrEmpty(queryObj.createUser))
+            lineNo = _baseService.getUserLineNo(queryObj.createUser);
+
+        var qsItemOqcReqs = db
+            .Queryable<QsItemOqcReq, MesItems, MesInvItemIns, MesInvTransaction,
+                RKJDaa001, Womdaa, VLineUser>(
+                (a, b, c, ca, m, da, z) => new JoinQueryInfos(
+                    JoinType.Left, a.ItemNo == b.ItemNo,
+                    JoinType.Left, a.BillNo == c.BillNo,
+                    JoinType.Left,
+                    c.TransctionNo == ca.TransactionNo.ToString() &&
+                    c.Company == ca.Company &&
+                    c.Factory == ca.Factory,
+                    JoinType.Left, c.Id == m.ItemInId && a.ItemNo == m.ItemNo,
+                    JoinType.Left, da.Daa001 == c.RbillNo,
+                    JoinType.Left, da.Daa015 == z.LineNo//,
+                    //JoinType.Left,c.Bgr == d.UserNo
+                ))
+            // .WhereIF(lineNo != null && lineNo.Length > 0,
+            //     (a, b, c, ca, m, da) => lineNo.Contains(da.Daa015))
+            .WhereIF(!"PL017".Equals(queryObj.createUser),
+                (a, b, c, ca, m, da, z) => lineNo.Contains(da.Daa015))
+            .WhereIF(!string.IsNullOrEmpty(queryObj.id),
+                (a, b, c, ca, m, da, z) => a.Id.ToString() == queryObj.id)
+            .WhereIF(
+                StringUtil.IsNotNullOrEmpty(queryObj.result) &&
+                "鏈畬鎴�".Equals(queryObj.result),
+                (a, b, c, ca, m, da, z) => a.FcheckResu == null)
+            .WhereIF(
+                StringUtil.IsNotNullOrEmpty(queryObj.result) &&
+                !"鏈畬鎴�".Equals(queryObj.result),
+                (a, b, c, ca, m, da, z) => a.FcheckResu != null)
+            //鍔犵瓫閫夋潯浠�,鏍规嵁渚涘簲鍟嗭紝鐗╂枡缂栫爜锛岀墿鏂欏悕绉版悳绱�
+            //.WhereIF(queryObj.SearchValue!=null && queryObj.SearchValue!="", (a) => a.SuppName == queryObj.SearchValue|| a.ItemName == queryObj.SearchValue || a.ItemNo == queryObj.SearchValue )
+            .WhereIF(queryObj.SearchValue != null && queryObj.SearchValue != "",
+            (a, b, c, ca, m, da, z) => b.ItemName.ToLower().Contains(queryObj.SearchValue.ToLower())
+            || a.ItemNo.ToLower().Contains(queryObj.SearchValue.ToLower()))
+            .Select((a, b, c, ca, m, da, z) => new QsItemOqcReq
+            {
+                BillNo = a.BillNo,
+                Fsubmit = a.Fsubmit,
+                Remarks = a.Remarks,
+                Id = a.Id,
+                CreateDate = a.CreateDate,
+                CreateBy = a.CreateBy,
+                FcheckResu = a.FcheckResu,
+                ItemNo = a.ItemNo,
+                FcheckBy = a.FcheckBy,
+                FcheckDate = a.FcheckDate,
+                ReleaseNo = a.ReleaseNo,
+                ItemName = b.ItemName,
+                ItemModel = b.ItemModel,
+                //Dab001 = m.LotNo,
+                ItemInId = m.ItemInId,
+                Daa015 = da.Daa015,
+                LineNo = c.LineNo,
+                Quantity = m.Quantity,
+                //Bgr = d.UserName
+            })
+            .OrderBy(a => a.CreateDate, OrderByType.Desc)
+            .ToPageList(queryObj.PageIndex, queryObj.Limit, ref totalCount);
+
+        return (qsItemOqcReqs, totalCount);
+    }
+
+    //鍒犻櫎涓昏〃骞朵笖杩炵骇鍒犻櫎瀛愯〃鍜屽瓩琛�
+    public int removeXJ(decimal? id)
+    {
+        var withOracle = SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            var commit = 0;
+            //鍒犻櫎涓昏〃
+            commit += db.Deleteable<QsItemOqcReq>().Where(s => s.Id == id)
+                .ExecuteCommand();
+            //鍒犻櫎瀛愯〃
+            commit += db.Deleteable<QsItemOqcItem>().Where(s => s.Pid == id)
+                .ExecuteCommand();
+            //鍒犻櫎瀛欒〃
+            commit += db.Deleteable<QsItemOqcItemDetail>()
+                .Where(s => s.Gid == id)
+                .ExecuteCommand();
+            return commit;
+        });
+
+        return withOracle;
+    }
+
+
+    public RKJDto getXjDetail02ById(decimal? id)
+    {
+        var rkjDto = new RKJDto();
+
+        var db = SqlSugarHelper.GetInstance();
+        var qsItemOqcItem =
+            db.Queryable<QsItemOqcItem>().Single(s => s.Id == id);
+
+        if (qsItemOqcItem.IsPass == 0)
+            qsItemOqcItem.Result = "涓嶅悎鏍�";
+        else if (qsItemOqcItem.IsPass == 1)
+            qsItemOqcItem.Result = "鍚堟牸";
+        else
+            qsItemOqcItem.Result = "鏈畬鎴�";
+
+        if (qsItemOqcItem.Picture is { Length: > 0 })
+            qsItemOqcItem.imageData =
+                Convert.ToBase64String(qsItemOqcItem.Picture);
+
+        //鑾峰彇涓嶅悎鏍兼暟
+        var count = db.Queryable<QsItemOqcItemDetail>()
+            .Where(s => s.Fstand == "脳" && s.Pid == id).Count();
+
+        qsItemOqcItem.Unqualified = count;
+
+        rkjDto.ItemXj01 = qsItemOqcItem;
+
+
+        rkjDto.ItemXj02s = db.Queryable<QsItemOqcItemDetail>()
+            .Where(s => s.Pid == id)
+            .ToList();
+
+        return rkjDto;
+    }
+
+    public int UpdateQSItemDetail(QsItemOqcItemDetail detail)
+    {
+        if (isRk(detail.ItemInId)) throw new Exception("宸叉湁鏉$爜鍏ュ簱锛屼笉鍏佽淇敼妫�楠岀粨鏋�");
+
+        var db = SqlSugarHelper.GetInstance();
+
+        var qsItemOqcReq = db.Queryable<QsItemOqcReq>()
+            .Where(o => o.Id == detail.Gid)
+            .First();
+
+        if (qsItemOqcReq == null)
+        {
+            throw new Exception("璇ユ楠屽崟涓嶅瓨鍦紝璇峰洖鍒板叆搴撴鍒楄〃閲嶆柊鏌ョ湅");
+        }
+
+        if (!string.IsNullOrEmpty(qsItemOqcReq.FcheckResu))
+        {
+            throw new Exception("璇ユ楠屽崟宸�" + qsItemOqcReq.FcheckResu + "锛屼笉杩愯淇敼缁撴灉");
+        }
+
+        var withOracle = SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            return db.Updateable<QsItemOqcItemDetail>()
+                .SetColumns(s => s.UpdateBy == detail.UpdateBy)
+                .SetColumns(s => s.UpdateDate == DateTime.Now)
+                .SetColumnsIF(StringUtil.IsNotNullOrEmpty(detail.Fstand),
+                    s => s.Fstand == detail.Fstand)
+                .SetColumnsIF(StringUtil.IsNotNullOrEmpty(detail.FcheckResu),
+                    s => s.FcheckResu == detail.FcheckResu)
+                .Where(s => s.Id == detail.Id)
+                .ExecuteCommand();
+        });
+
+        detail.CreateBy = detail.UpdateBy;
+
+        withOracle += autoResult(detail);
+
+        return withOracle;
+    }
+
+    //淇敼缁撴灉鍓嶉獙璇佹槸鍚﹀叆搴�
+    private bool isRk(decimal? ItemInId)
+    {
+        var db = SqlSugarHelper.GetInstance();
+        return db.Queryable<MesInvItemInCDetails>()
+            .Where(s => s.ItemInId == ItemInId).Count() > 0;
+    }
+
+
+    //涓昏〃淇敼澶囨敞瀛楁
+    public int saveRemarksGid(RKJDto dto)
+    {
+        return SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            return db.Updateable<QsItemOqcReq>()
+                .SetColumns(it =>
+                    it.Remarks == dto.Remarks) //SetColumns鏄彲浠ュ彔鍔犵殑 鍐�2涓氨2涓瓧娈佃祴鍊�
+                .Where(it => it.Id == dto.gid)
+                .ExecuteCommand();
+        });
+    }
+
+    //瀛愯〃淇敼澶囨敞瀛楁
+    public int saveRemarksPid(RKJDto dto)
+    {
+        return SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            return db.Updateable<QsItemOqcItem>()
+                .SetColumns(it =>
+                    it.Remarks == dto.Remarks) //SetColumns鏄彲浠ュ彔鍔犵殑 鍐�2涓氨2涓瓧娈佃祴鍊�
+                .Where(it => it.Id == dto.pid)
+                .ExecuteCommand();
+        });
+    }
+
+    //瀛欒〃淇敼澶囨敞瀛楁
+    public int saveRemarksById(RKJDto dto)
+    {
+        return SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            return db.Updateable<QsItemOqcItemDetail>()
+                .SetColumns(it =>
+                    it.Remarks == dto.Remarks) //SetColumns鏄彲浠ュ彔鍔犵殑 鍐�2涓氨2涓瓧娈佃祴鍊�
+                .Where(it => it.Id == dto.id)
+                .ExecuteCommand();
+        });
+    }
+
+    public int saveItem(RKJDto rkjDto)
+    {
+        var items = rkjDto.items;
+        var userNo = rkjDto.userNo;
+
+        SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            foreach (var item in items) item.Pid = rkjDto.gid;
+
+            return db.Insertable(items).ExecuteCommand();
+        });
+
+        rkjDto.items = GetItems(rkjDto.gid, null);
+
+        rkjDto.items.ForEach(s =>
+        {
+            if (s.MaxValue != null || s.StandardValue != null ||
+                s.MinValue != null) return;
+            var detail = new QsItemOqcItemDetail();
+            detail.Pid = s.Id;
+            detail.Gid = rkjDto.gid;
+            detail.Fstand = "鈭�";
+            detail.FcheckResu = "1";
+            detail.UpdateBy = rkjDto.userNo;
+            detail.count = (int?)s.LevelNum;
+            SetQSItemDetail(detail);
+        });
+
+        return Convert.ToInt32(rkjDto.gid);
+    }
+
+    public int cleanReqResult(RKJDto dto)
+    {
+        if (isRk(dto.gid)) throw new Exception("宸叉湁鏉$爜鍏ュ簱锛屼笉鍏佽娓呴櫎妫�楠岀粨鏋�");
+
+
+        return SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            return db.Updateable<QsItemOqcReq>()
+                .SetColumns(s => s.FcheckResu == null)
+                .Where(s => s.Id == dto.gid).ExecuteCommand();
+        });
+    }
+
+    private bool isRk(int? gid)
+    {
+        var db = SqlSugarHelper.GetInstance();
+        return db.Queryable<QsItemOqcReq, MesInvItemIns, MesInvItemInCDetails2,MesInvItemStocks>(
+                (a, b, c,d) => new JoinQueryInfos(
+                    JoinType.Inner, a.BillNo == b.BillNo,
+                    JoinType.Inner, b.Id == c.ItemInId,
+                    JoinType.Inner,c.ItemBarcode == d.ItemBarcode
+                ))
+            .Where((a, b, c,d) => a.Id == gid)
+            .Count() > 0;
+    }
+}
\ No newline at end of file
diff --git a/StandardPda/MES.Service/service/QC/SJService.cs b/StandardPda/MES.Service/service/QC/SJService.cs
new file mode 100644
index 0000000..db188ef
--- /dev/null
+++ b/StandardPda/MES.Service/service/QC/SJService.cs
@@ -0,0 +1,458 @@
+锘縰sing MES.Service.DB;
+using MES.Service.Dto.service;
+using MES.Service.Modes;
+using MES.Service.util;
+using SqlSugar;
+
+namespace MES.Service.service.QC;
+
+public class SJService
+{
+    private readonly BaseService _baseService = new();
+
+    //鑾峰彇鏈�澶у崟鍙�
+    public string getMaxBillNo()
+    {
+        var db = SqlSugarHelper.GetInstance();
+        var date = DateTime.Now.ToString("yyyy-MM-dd");
+        var sql =
+            "select max(BILL_NO) from QS_ITEM_IPI_REQ where to_char(CREATE_TIME,'yyyy-mm-dd') = '" +
+            date + "'";
+
+        var maxBillNo = db.Ado.SqlQuerySingle<string>(sql);
+
+        var number = "0001";
+        if (maxBillNo != null)
+        {
+            maxBillNo = maxBillNo.Substring(12);
+            var no = Convert.ToInt32(maxBillNo);
+            no++;
+            number = no.ToString().PadLeft(4, '0');
+        }
+
+        return "SJN" + date.Replace("-", "") + number;
+    }
+
+    //鑾峰彇鎵�鏈夋暟鎹垎椤�
+    public List<SJPageResult> getPage(SJPageResult queryObj)
+    {
+        var db = SqlSugarHelper.GetInstance();
+
+        string[]? lineNo = null;
+
+        if (StringUtil.IsNotNullOrEmpty(queryObj.StatusUser))
+            lineNo = _baseService.getUserLineNo(queryObj.StatusUser);
+
+        var data = db.Queryable<SJPageResult>()
+            .WhereIF(lineNo != null && lineNo.Length > 0,
+                a => lineNo.Contains(a.line))
+            .WhereIF(queryObj.Id != null, a => a.Id == queryObj.Id)
+            .WhereIF(StringUtil.IsNotNullOrEmpty(queryObj.BillNo),
+                a => a.BillNo == queryObj.BillNo)
+            .WhereIF(
+                StringUtil.IsNotNullOrEmpty(queryObj.Result) &&
+                "鏈畬鎴�".Equals(queryObj.Result),
+                a => a.Result == queryObj.Result)
+            .WhereIF(
+                StringUtil.IsNotNullOrEmpty(queryObj.Result) &&
+                !"鏈畬鎴�".Equals(queryObj.Result),
+                a => a.Result != "鏈畬鎴�")
+            .OrderBy(a => a.BillNo, OrderByType.Desc)
+            .ToPageList(queryObj.PageIndex, queryObj.Limit);
+
+        return data;
+    }
+
+
+    //SetQSItem
+    // public List<QsItemIpiItem> SetQSItems(string itemNo)
+    // {
+    //     var db = SqlSugarHelper.GetInstance();
+    //     return db
+    //         .Queryable<MoidToItem, MesQualityStandard>((a, b) =>
+    //             new JoinQueryInfos(JoinType.Inner, a.MoidNum == b.MoidNum))
+    //         .Where((a, b) => b.QsType == "1" && a.Fsubmit == 1 && a.ItemNo == itemNo).Select(
+    //             (a, b) => new QsItemIpiItem
+    //             {
+    //                 ProjName = b.ProjName,
+    //                 ItemMod = b.ItemMod,
+    //                 InspectionMethod = b.InspectionMethod,
+    //                 UsingInstruments = b.UsingInstruments,
+    //                 LevelNum = SqlFunc.IsNull(
+    //                     SqlFunc.IsNull(b.LevelNum * b.InspectionLevel, 1),
+    //                     b.InspectionLevel),
+    //                 MaxValue = b.MaxValue,
+    //                 StandardValue = b.StandardValue,
+    //                 MinValue = b.MinValue,
+    //                 Notes = b.Notes,
+    //                 FcheckLevel = b.FcheckLevel,
+    //                 FacLevel = b.FacLevel,
+    //                 QsCode = b.QsCode,
+    //                 QsName = b.QsName,
+    //                 result = "鏈娴�"
+    //             }).ToList();
+    // }
+    public List<QsItemIpiItem> SetQSItems(string itemNo)
+    {
+        var db = SqlSugarHelper.GetInstance();
+
+        var count = db.Queryable<MesQa>().Where(s => s.QsType == "1"
+            && s.ItemNo == itemNo && s.Fsubmit == 1).Count();
+
+        if (count <= 0) return [];
+
+        return db
+            .Queryable<MesQualityStandard>()
+            .Where(b => b.QsType == "1" && b.ItemNo == itemNo).Select(
+                b => new QsItemIpiItem
+                {
+                    ProjName = b.ProjName,
+                    ItemMod = b.ItemMod,
+                    InspectionMethod = b.InspectionMethod,
+                    UsingInstruments = b.UsingInstruments,
+                    LevelNum = SqlFunc.IsNull(
+                        SqlFunc.IsNull(b.LevelNum * b.InspectionLevel, 1),
+                        b.InspectionLevel),
+                    MaxValue = b.MaxValue,
+                    StandardValue = b.StandardValue,
+                    MinValue = b.MinValue,
+                    Notes = b.Notes,
+                    FcheckLevel = b.FcheckLevel,
+                    FacLevel = b.FacLevel,
+                    QsCode = b.QsCode,
+                    QsName = b.QsName,
+                    Picture = b.Picture,
+                    Picturename = b.Picturename,
+                    result = "鏈娴�",
+                    isCheck = 0
+                }).ToList();
+    }
+
+    public List<QsItemIpiItem> getQSItems(decimal? pid, decimal? id)
+    {
+        var db = SqlSugarHelper.GetInstance();
+        var qsItemIpiItems = db
+            .Queryable<QsItemIpiItem>()
+            .WhereIF(pid > 0, a => a.Pid == pid)
+            .WhereIF(id > 0, a => a.Id == id).ToList();
+
+        var array = qsItemIpiItems.Select(s => s.Id).ToArray();
+        var qsItemIpiItemDetails = db.Queryable<QsItemIpiItemDetail>()
+            .Where(s => array.Contains(s.Pid))
+            .GroupBy(s => s.Pid)
+            .Select(s => new
+            {
+                s.Pid,
+                count = SqlFunc.AggregateCount(s.Id)
+            }).ToList();
+
+        qsItemIpiItems.ForEach(s =>
+        {
+            var find = qsItemIpiItemDetails.Find(a => s.Id == a.Pid);
+            if (find == null)
+            {
+                s.isCheck = 0;
+                s.result = "鏈畬鎴�";
+            }
+            else
+            {
+                s.isCheck = find.count;
+                if (find.count == s.LevelNum && s.IsPass == 1)
+                    s.result = "鍚堟牸";
+                else if (find.count == s.LevelNum && s.IsPass == 0)
+                    s.result = "涓嶅悎鏍�";
+                else
+                    s.result = "鏈畬鎴�";
+            }
+        });
+
+        //浣跨敤linq琛ㄨ揪寮忚繃婊ゅ嚭鍥剧墖id涓嶄负绌虹殑鏁版嵁
+        var itemIpiItems =
+            qsItemIpiItems.Where(s => s.Picture is { Length: > 0 })
+                .ToList();
+        if (itemIpiItems.Count > 0)
+            itemIpiItems.ForEach(s =>
+            {
+                var qsItemIpiItem = qsItemIpiItems.Find(t => t.Id == s.Id);
+                //灏嗗瓧鑺傛暟缁勮浆鎹负Base64缂栫爜鐨勫瓧绗︿覆
+                qsItemIpiItem.imageData = Convert.ToBase64String(s.Picture);
+            });
+
+        //鎺掑簭锛屾湭瀹屾垚鐨勬帓鍦ㄥ墠闈�
+        qsItemIpiItems = qsItemIpiItems.OrderBy(s => s.isCheck).ToList();
+
+        return qsItemIpiItems;
+    }
+
+    public QsItem Save(QsItem item)
+    {
+        var qsItemIpiReq = item.From;
+        var qsItemIpiItems = item.Items;
+        SqlSugarHelper.UseTransactionWithOracle(
+            db =>
+            {
+                qsItemIpiReq.StatusDate = DateTime.Now;
+                var pid = db.Insertable(qsItemIpiReq)
+                    .ExecuteReturnIdentity();
+                qsItemIpiReq.Id = pid;
+
+                item.gid = pid;
+
+                qsItemIpiItems.ForEach(s => s.Pid = pid);
+
+                return db.Insertable(qsItemIpiItems)
+                    .ExecuteCommand();
+            });
+        item.Items = getQSItems(qsItemIpiReq.Id, null);
+
+        //娌℃湁涓婁笅闄愮殑妫�楠岄」鐩嚜鍔ㄧ洏鐐逛负鍚堟牸
+        item.Items.ForEach(s =>
+        {
+            if (s.MaxValue != null || s.StandardValue != null ||
+                s.MinValue != null) return;
+            var detail = new QsItemIpiItemDetail();
+            detail.Pid = s.Id;
+            detail.Gid = item.gid;
+            detail.Fstand = "鈭�";
+            detail.FcheckResu = "1";
+            detail.UpdateBy = item.From.StatusUser;
+            detail.count = (int?)s.LevelNum;
+            SetQSItemDetail(detail);
+        });
+
+        item.Items = getQSItems(qsItemIpiReq.Id, null);
+        var sjPageResult = new SJPageResult
+            { Id = item.From.Id, Limit = 1, PageIndex = 1 };
+        item.Result = getPage(sjPageResult)[0];
+
+        return item;
+    }
+
+    public QsItem SaveItem(QsItem item)
+    {
+        var qsItemIpiItems = item.Items;
+        SqlSugarHelper.UseTransactionWithOracle(
+            db =>
+            {
+                qsItemIpiItems.ForEach(s => s.Pid = item.gid);
+
+                return db.Insertable(qsItemIpiItems)
+                    .ExecuteCommand();
+            });
+        item.Items = getQSItems(item.gid, null);
+
+        //娌℃湁涓婁笅闄愮殑妫�楠岄」鐩嚜鍔ㄧ洏鐐逛负鍚堟牸
+        item.Items.ForEach(s =>
+        {
+            if (s.MaxValue != null || s.StandardValue != null ||
+                s.MinValue != null) return;
+            var detail = new QsItemIpiItemDetail();
+            detail.Pid = s.Id;
+            detail.Gid = item.gid;
+            detail.Fstand = "鈭�";
+            detail.FcheckResu = "1";
+            detail.UpdateBy = item.StatusUser;
+            detail.count = (int?)s.LevelNum;
+            SetQSItemDetail(detail);
+        });
+
+        item.Items = getQSItems(item.gid, null);
+
+        return item;
+    }
+
+    public int SetQSItemDetail(QsItemIpiItemDetail detail)
+    {
+        var oracle = SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            List<QsItemIpiItemDetail> result = new();
+            for (var i = 0; i < detail.count; i++)
+            {
+                var item = new QsItemIpiItemDetail();
+                item.Gid = detail.Gid;
+                item.Pid = detail.Pid;
+                item.Fstand = detail.Fstand;
+                item.FcheckResu = detail.FcheckResu;
+                item.CreateBy = detail.UpdateBy;
+                item.CreateDate = DateTime.Now;
+                result.Add(item);
+            }
+
+            return db.Insertable(result).ExecuteCommand();
+        });
+
+        detail.CreateBy = detail.UpdateBy;
+
+        autoResult(detail);
+
+        return oracle;
+    }
+
+    public List<QsItemIpiItemDetail> getQSItemDetail(decimal? pid, decimal? gid)
+    {
+        var db = SqlSugarHelper.GetInstance();
+        return db.Queryable<QsItemIpiItemDetail>()
+            .Where(s => s.Pid == pid)
+            .WhereIF(gid > 0, s => s.Gid == gid)
+            .ToList();
+    }
+
+
+    //鑷姩鍒ゅ畾鏄惁鍚堟牸
+    private int autoResult(QsItemIpiItemDetail detail)
+    {
+        var db = SqlSugarHelper.GetInstance();
+
+        // Single 娌℃湁鏌ヨ鍒扮粨鏋滄椂杩斿洖Null锛屽鏋滅粨鏋滃ぇ浜�1鏉′細鎶涘嚭閿欒
+        var qsItemIpiItem = db.Queryable<QsItemIpiItem>()
+            .Single(s => s.Id == detail.Pid);
+
+        if (qsItemIpiItem == null) return 0;
+
+        var count = db.Queryable<QsItemIpiItemDetail>()
+            .Where(s => s.Pid == detail.Pid).Count();
+
+
+        var result = 0;
+
+        if (qsItemIpiItem.LevelNum != count) return 0;
+
+        var passCount = db.Queryable<QsItemIpiItemDetail>()
+            .Where(s => s.Pid == detail.Pid && s.Fstand == "鈭�").Count();
+
+        if (count == passCount) result = 1;
+
+        var useTransactionWithOracle = SqlSugarHelper.UseTransactionWithOracle(
+            db =>
+            {
+                var commit = 0;
+                commit += db.Updateable<QsItemIpiItem>()
+                    .SetColumns(s => s.IsPass == result)
+                    .Where(s => s.Id == detail.Pid)
+                    .ExecuteCommand();
+                return commit;
+            });
+
+
+        //鑷姩鍒ゅ畾鏄惁鍚堟牸
+        //鑾峰彇妫�楠屽崟鐨勬楠岄」鐩悊璁轰釜鏁�
+        var sum = db.Queryable<QsItemIpiItem>()
+            .Where(s => s.Pid == detail.Gid).Sum(it => it.LevelNum);
+        if (sum == null || sum == 0) return 1;
+
+        //鑾峰彇妫�楠屽崟涓嬬殑妫�楠岄」鐩疄闄呬釜鏁�
+        var icount = db.Queryable<QsItemIpiItemDetail>()
+            .Where(s => s.Gid == detail.Gid).Count();
+
+        if (icount == 0) return 1;
+
+        //瀹為檯涓暟绛変簬鐞嗚涓暟鏃跺妫�楠屽崟杩涜鍒ゅ畾
+        if (sum == icount)
+        {
+            result = 0;
+
+            //鑾峰彇杩欎釜妫�楠屽崟涓嬬殑鎵�鏈夊悎鏍肩殑妫�楠岀粨鏋�
+            passCount = db.Queryable<QsItemIpiItemDetail>()
+                .Where(s => s.Gid == detail.Gid && s.Fstand == "鈭�").Count();
+
+            //鍚堟牸鐨勬楠岀粨鏋滅瓑浜庢�绘楠屾暟瑙嗕负鍚堟牸
+            if (icount == passCount) result = 1;
+
+            useTransactionWithOracle += SqlSugarHelper.UseTransactionWithOracle(
+                db =>
+                {
+                    return db.Updateable<QsItemIpiReq>()
+                        .SetColumns(s => s.IsPass == result)
+                        .SetColumns(s => s.StatusUser == detail.CreateBy)
+                        .SetColumns(s => s.CompleteTime == DateTime.Now)
+                        .Where(s => s.Id == detail.Gid)
+                        .ExecuteCommand();
+                });
+        }
+
+        return useTransactionWithOracle;
+    }
+
+    public int UpdateQSItemDetail(QsItemIpiItemDetail detail)
+    {
+        var withOracle = SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            return db.Updateable<QsItemIpiItemDetail>()
+                .SetColumns(s => s.UpdateBy == detail.UpdateBy)
+                .SetColumns(s => s.UpdateDate == DateTime.Now)
+                .SetColumnsIF(StringUtil.IsNotNullOrEmpty(detail.Fstand),
+                    s => s.Fstand == detail.Fstand)
+                .SetColumnsIF(StringUtil.IsNotNullOrEmpty(detail.FcheckResu),
+                    s => s.FcheckResu == detail.FcheckResu)
+                .Where(s => s.Id == detail.Id)
+                .ExecuteCommand();
+        });
+
+        detail.CreateBy = detail.UpdateBy;
+
+        withOracle += autoResult(detail);
+
+        return withOracle;
+    }
+
+
+    //涓昏〃淇敼澶囨敞瀛楁
+    public int saveRemarksGid(QsItem dto)
+    {
+        return SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            return db.Updateable<QsItemIpiReq>()
+                .SetColumns(it =>
+                    it.Remarks == dto.Remarks) //SetColumns鏄彲浠ュ彔鍔犵殑 鍐�2涓氨2涓瓧娈佃祴鍊�
+                .Where(it => it.Id == dto.gid)
+                .ExecuteCommand();
+        });
+    }
+
+    //瀛愯〃淇敼澶囨敞瀛楁
+    public int saveRemarksPid(QsItem dto)
+    {
+        return SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            return db.Updateable<QsItemIpiItem>()
+                .SetColumns(it =>
+                    it.Remarks == dto.Remarks) //SetColumns鏄彲浠ュ彔鍔犵殑 鍐�2涓氨2涓瓧娈佃祴鍊�
+                .Where(it => it.Id == dto.pid)
+                .ExecuteCommand();
+        });
+    }
+
+    //瀛欒〃淇敼澶囨敞瀛楁
+    public int saveRemarksById(QsItem dto)
+    {
+        return SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            return db.Updateable<QsItemIpiItemDetail>()
+                .SetColumns(it =>
+                    it.Remarks == dto.Remarks) //SetColumns鏄彲浠ュ彔鍔犵殑 鍐�2涓氨2涓瓧娈佃祴鍊�
+                .Where(it => it.Id == dto.id)
+                .ExecuteCommand();
+        });
+    }
+
+    public int removeXJ(decimal? id)
+    {
+        var withOracle = SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            var commit = 0;
+            //鍒犻櫎涓昏〃
+            commit += db.Deleteable<QsItemIpiReq>().Where(s => s.Id == id)
+                .ExecuteCommand();
+            //鍒犻櫎瀛愯〃
+            commit += db.Deleteable<QsItemIpiItem>().Where(s => s.Pid == id)
+                .ExecuteCommand();
+            //鍒犻櫎瀛欒〃
+            commit += db.Deleteable<QsItemIpiItemDetail>()
+                .Where(s => s.Gid == id)
+                .ExecuteCommand();
+            return commit;
+        });
+
+        return withOracle;
+    }
+}
\ No newline at end of file
diff --git a/StandardPda/MES.Service/service/QC/SuspendService.cs b/StandardPda/MES.Service/service/QC/SuspendService.cs
new file mode 100644
index 0000000..ce48de9
--- /dev/null
+++ b/StandardPda/MES.Service/service/QC/SuspendService.cs
@@ -0,0 +1,119 @@
+锘縰sing MES.Service.DB;
+using MES.Service.Modes;
+using SqlSugar;
+
+namespace MES.Service.service.QC;
+
+public class SuspendService
+{
+    private readonly string[] statusArray = ["寮�宸�", "寰呭紑宸�"];
+
+    public List<SysDepartment> getDept()
+    {
+        var db = SqlSugarHelper.GetInstance();
+        //return db.Queryable<SysDepartment>().ToList();
+        return db
+            .Queryable<Womdaa, MesLine, QsQaItemXj, SysDepartment>(
+                (a, b, c, d) =>
+                    new JoinQueryInfos(JoinType.Left,
+                        a.Daa002 == b.Id.ToString(),
+                        JoinType.Inner, a.Daa001 == c.BillNo,
+                        JoinType.Left, b.Departmentcode == d.Departmentcode))
+            .Where((a, b, c, d) => b.LineName != null &&
+                                   statusArray.Contains(a.Daa018))
+            .GroupBy((a, b, c, d) => new
+            {
+                b.Departmentcode, d.Departmentname
+            })
+            .Select((a, b, c, d) => new SysDepartment
+            {
+                Departmentcode = b.Departmentcode,
+                Departmentname = d.Departmentname
+            }).ToList();
+    }
+
+    public List<MesLine> GetLines(string deptCode)
+    {
+        var db = SqlSugarHelper.GetInstance();
+        var mesLines = db.Queryable<Womdaa, MesLine, QsQaItemXj>(
+                (a, b, c) =>
+                    new JoinQueryInfos(JoinType.Left,
+                        a.Daa002 == b.Id.ToString(),
+                        JoinType.Inner, a.Daa001 == c.BillNo))
+            .Where((a, b, c) => b.LineName != null &&
+                                statusArray.Contains(a.Daa018)
+                                && b.Departmentcode == deptCode)
+            .GroupBy((a, b, c) => new
+            {
+                b.LineNo, b.LineName
+            })
+            .Select((a, b, c) => new MesLine
+            {
+                LineNo = b.LineNo,
+                LineName = b.LineName
+            }).ToList();
+
+        var mesQsSuspends = db.Queryable<MesQsSuspend>()
+            .Where(s => s.IsSuspend == 0).ToList();
+
+        return mesLines.Where(p => mesQsSuspends.All(e => e.LineNo != p.LineNo))
+            .ToList();
+    }
+
+    public int save(MesQsSuspend entity)
+    {
+        entity.CreateDate = DateTime.Now;
+        return SqlSugarHelper.UseTransactionWithOracle(db =>
+            db.Insertable(entity).ExecuteCommand());
+    }
+
+    public List<MesQsSuspend> getAllByDeptNo(string deptNo)
+    {
+        var db = SqlSugarHelper.GetInstance();
+        return db.Queryable<MesQsSuspend>()
+            .Where(a => a.DeptNo == deptNo && a.IsSuspend == 0).ToList();
+    }
+
+    public List<MesQsSuspend> getOpenDept()
+    {
+        var db = SqlSugarHelper.GetInstance();
+        return db.Queryable<MesQsSuspend>().GroupBy(a => new
+        {
+            a.DeptNo,
+            a.DeptName
+        }).Select<MesQsSuspend>(a => new MesQsSuspend
+        {
+            DeptNo = a.DeptNo,
+            DeptName = a.DeptName
+        }).ToList();
+    }
+
+    public List<MesQsSuspend> getOpenLine(string deptNo)
+    {
+        var db = SqlSugarHelper.GetInstance();
+        return db.Queryable<MesQsSuspend>()
+            .Where(a => a.DeptNo == deptNo && a.IsSuspend == 0)
+            .GroupBy(a => new
+            {
+                a.LineNo,
+                a.LineName
+            }).Select<MesQsSuspend>(a => new MesQsSuspend
+            {
+                LineNo = a.LineNo,
+                LineName = a.LineName
+            }).ToList();
+    }
+
+    public int UpdateById(MesQsSuspend entity)
+    {
+        return SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            return db.Updateable<MesQsSuspend>()
+                .SetColumns(a => a.IsSuspend == entity.IsSuspend)
+                .SetColumns(a => a.OpenDate == DateTime.Now)
+                .SetColumns(a => a.TimeDifference == entity.TimeDifference)
+                .Where(a => a.Id == entity.Id)
+                .ExecuteCommand();
+        });
+    }
+}
\ No newline at end of file
diff --git a/StandardPda/MES.Service/service/QC/XJService.cs b/StandardPda/MES.Service/service/QC/XJService.cs
new file mode 100644
index 0000000..9ed2beb
--- /dev/null
+++ b/StandardPda/MES.Service/service/QC/XJService.cs
@@ -0,0 +1,531 @@
+锘縰sing MES.Service.DB;
+using MES.Service.Dto.service;
+using MES.Service.Modes;
+using MES.Service.util;
+using SqlSugar;
+
+namespace MES.Service.service.QC;
+
+public class XJService
+{
+    private static readonly OracleSQLHelper SQLHelper = new();
+
+    private readonly BaseService _baseService = new();
+
+
+    private readonly string[] statusArray = ["寮�宸�", "寰呭紑宸�"];
+
+    //鐢熸垚鏈�鏂扮殑妫�楠屽崟鍙�
+    public string getMaxReleaseNo()
+    {
+        var sql =
+            string.Format(
+                "select max(RELEASE_NO) from QS_QA_ITEM_XJ where RELEASE_NO like 'XJN%' and to_char(CREATE_DATE,'yyyy-mm-dd') = '{0}'",
+                DateTime.Now.ToString("yyyy-MM-dd"));
+
+        var executeScalar = SQLHelper.ExecuteScalar(sql);
+        var date = DateTime.Now.ToString("yyMMdd");
+        var number = "0001";
+        var olReleaseNo = executeScalar.ToString();
+        //鍒ゆ柇浠婂ぉ鏄惁鐢熸垚浜嗗贰妫�鍗�
+        if (string.IsNullOrEmpty(olReleaseNo)) return "XJN" + date + number;
+        //鎴彇鍚庡洓浣嶇殑娴佹按鍙风疮鍔�
+        var substring = Convert.ToInt32(olReleaseNo.Substring(10));
+        substring += 1;
+        number = substring.ToString("D4");
+
+        //濡傛灉涓虹┖鐩存帴杩斿洖0001
+        return "XJN" + date + number;
+    }
+
+    public List<Womdaa> getItem(string daa001)
+    {
+        var db = SqlSugarHelper.GetInstance();
+
+        //in鐨勫啓娉� https://www.donet5.com/Home/Doc?typeId=1187
+
+        return db.Queryable<Womdaa>()
+            .Where(a =>
+                a.Daa001 == daa001 &&
+                statusArray.Contains(a.Daa018))
+            .ToList();
+    }
+
+    public List<MesLine> getLineAll()
+    {
+        var db = SqlSugarHelper.GetInstance();
+
+        return db.Queryable<Womdaa, MesLine>((a, b) =>
+                new JoinQueryInfos(JoinType.Left, a.Daa015 == b.LineNo))
+            .Where((a, b) => b.LineName != null &&
+                             statusArray.Contains(a.Daa018))
+            .GroupBy((a, b) => new
+            {
+                b.LineNo, b.LineName
+            })
+            .Select((a, b) => new MesLine
+            {
+                LineNo = b.LineNo,
+                LineName = b.LineName
+            }).OrderBy("b.LINE_NO").ToList();
+    }
+
+    public List<Womdaa> getDaa001(string daa020, string item)
+    {
+        var db = SqlSugarHelper.GetInstance();
+        return db.Queryable<Womdaa, MesItems>((a, b) =>
+                new JoinQueryInfos(JoinType.Inner, a.Daa002 == b.Id.ToString()))
+            .Where((a, b) =>
+                a.Daa015 == daa020 &&
+                b.ItemNo == item &&
+                statusArray.Contains(a.Daa018))
+            .Select<Womdaa>(a => new Womdaa
+            {
+                Id = a.Id,
+                Daa001 = a.Daa001,
+                Daa003 = a.Daa003,
+                Daa008 = a.Daa008
+            }).ToList();
+    }
+
+    public List<MesItems> getBoardItem(string lineNo)
+    {
+        var db = SqlSugarHelper.GetInstance();
+        return db.Queryable<Womdaa, MesItems>((a, b) =>
+                new JoinQueryInfos(JoinType.Inner, a.Daa002 == b.Id.ToString()))
+            .Where((a, b) => statusArray.Contains(a.Daa018) &&
+                             a.Daa015 == lineNo)
+            .OrderBy((a, b) => b.ItemName)
+            .Select<MesItems>((a, b) =>
+                new MesItems
+                {
+                    Id = b.Id,
+                    ItemNo = b.ItemNo,
+                    ItemName = b.ItemName,
+                    ItemModel = b.ItemModel
+                }).ToList();
+    }
+
+    public List<QsQaItemXj> getPage(XJPageResult queryObj)
+    {
+        var db = SqlSugarHelper.GetInstance();
+
+        var id = Convert.ToDecimal(queryObj.id);
+
+        string[]? lineNo = null;
+
+        if (StringUtil.IsNotNullOrEmpty(queryObj.createUser))
+            lineNo = _baseService.getUserLineNo(queryObj.createUser);
+
+        return db
+            .Queryable<QsQaItemXj, Womdaa, MesLine,
+                MesItems>((s, a, c, b) =>
+                new JoinQueryInfos(
+                    JoinType.Inner, s.BillNo == a.Daa001,
+                    JoinType.Left, a.Daa015 == c.LineNo,
+                    JoinType.Left, s.ItemId == b.Id
+                )
+            )
+            .WhereIF(lineNo != null && lineNo.Length > 0,
+                (s, a, c, b) => lineNo.Contains(c.LineNo))
+            .WhereIF(
+                StringUtil.IsNotNullOrEmpty(queryObj.result) &&
+                "鏈畬鎴�".Equals(queryObj.result),
+                (s, a, c, b) => s.FcheckResu == null)
+            .WhereIF(
+                StringUtil.IsNotNullOrEmpty(queryObj.result) &&
+                !"鏈畬鎴�".Equals(queryObj.result),
+                (s, a, c, b) => s.FcheckResu != null)
+            .WhereIF(id > 0, (s, a, c, b) => s.Id == id)
+            .Select((s, a, c, b) => new QsQaItemXj
+            {
+                Daa020 = c.LineNo,
+                Id = s.Id,
+                PlanQty = a.Daa008,
+                CreateBy = s.CreateBy,
+                CreateDate = s.CreateDate,
+                ReleaseNo = s.ReleaseNo,
+                ItemNo = s.ItemNo,
+                BillNo = s.BillNo,
+                ItemName = b.ItemName,
+                ItemModel = b.ItemModel,
+                FcheckBy = s.FcheckBy,
+                FcheckResu = s.FcheckResu,
+                Remarks = s.Remarks
+            }).OrderBy(s => s.CreateDate, OrderByType.Desc)
+            .ToPageList(queryObj.PageIndex, queryObj.Limit);
+    }
+
+
+    public List<QsQaItemXj01> setJYItem(string itemNo)
+    {
+        var db = SqlSugarHelper.GetInstance();
+
+        var count = db.Queryable<MesQa>().Where(s => s.QsType == "2"
+            && s.ItemNo == itemNo && s.Fsubmit == 1).Count();
+
+        if (count <= 0) return new List<QsQaItemXj01>();
+
+        return db
+            .Queryable<MesQualityStandard>()
+            .Where(b => b.QsType == "2"
+                        && b.ItemNo == itemNo).Select(
+                b => new QsQaItemXj01
+                {
+                    ProjName = b.ProjName,
+                    ItemMod = b.ItemMod,
+                    InspectionMethod = b.InspectionMethod,
+                    UsingInstruments = b.UsingInstruments,
+                    LevelNum = SqlFunc.IsNull(
+                        SqlFunc.IsNull(b.LevelNum * b.InspectionLevel, 1),
+                        b.InspectionLevel),
+                    MaxValue = b.MaxValue,
+                    StandardValue = b.StandardValue,
+                    MinValue = b.MinValue,
+                    Notes = b.Notes,
+                    FcheckLevel = b.FcheckLevel,
+                    FacLevel = b.FacLevel,
+                    QsCode = b.QsCode,
+                    QsName = b.QsName,
+                    result = "鏈娴�",
+                    isCheck = 0,
+                    Picture = b.Picture,
+                    Picturename = b.Picturename
+                }).ToList();
+    }
+
+    public List<QsQaItemXj01> getJYItem(decimal? pid, decimal? id)
+    {
+        var db = SqlSugarHelper.GetInstance();
+        var qsQaItemXj01s = db.Queryable<QsQaItemXj01>()
+            .WhereIF(pid > 0, a => a.Pid == pid)
+            .WhereIF(id > 0, a => a.Id == id)
+            .ToList();
+
+        var array = qsQaItemXj01s.Select(s => s.Id).ToArray();
+        var qsQaItemDetails = db.Queryable<QsQaItemXj02>()
+            .Where(s => array.Contains(s.Pid))
+            .GroupBy(s => s.Pid)
+            .Select(s => new
+            {
+                s.Pid,
+                count = SqlFunc.AggregateCount(s.Id)
+            }).ToList();
+
+        qsQaItemXj01s.ForEach(s =>
+        {
+            var find = qsQaItemDetails.Find(a => s.Id == a.Pid);
+            if (find == null)
+            {
+                s.isCheck = 0;
+                s.result = "鏈畬鎴�";
+            }
+            else
+            {
+                s.isCheck = find.count;
+                if (find.count == s.LevelNum && s.IsPass == 1)
+                    s.result = "鍚堟牸";
+                else if (find.count == s.LevelNum && s.IsPass == 0)
+                    s.result = "涓嶅悎鏍�";
+                else
+                    s.result = "鏈畬鎴�";
+            }
+
+            //杩囨护鍑哄浘鐗噄d涓嶄负绌虹殑鏁版嵁杞负base64
+            if (s.Picture is { Length: > 0 })
+                s.imageData = Convert.ToBase64String(s.Picture);
+        });
+
+        //鎺掑簭锛屾湭瀹屾垚鐨勬帓鍦ㄥ墠闈�
+        qsQaItemXj01s = qsQaItemXj01s.OrderBy(s => s.isCheck).ToList();
+
+        return qsQaItemXj01s;
+    }
+
+
+    public int save(XJDto xjDto)
+    {
+        var xj = xjDto.from;
+        var items = xjDto.items;
+        var userNo = xjDto.userNo;
+
+        SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            var commit = 0;
+
+            xj.CreateBy = userNo;
+            xj.CreateDate = DateTime.Now;
+
+            var pid = db.Insertable(xj).ExecuteReturnIdentity();
+
+            xj.Id = pid;
+
+            xjDto.gid = pid;
+
+            foreach (var item in items) item.Pid = pid;
+
+            commit += db.Insertable(items).ExecuteCommand();
+
+            return commit;
+        });
+
+        xjDto.items = getJYItem(xj.Id, null);
+
+        xjDto.items.ForEach(s =>
+        {
+            if (s.MaxValue != null || s.StandardValue != null ||
+                s.MinValue != null) return;
+            var detail = new QsQaItemXj02();
+            detail.Pid = s.Id;
+            detail.Gid = xjDto.gid;
+            detail.Fstand = "鈭�";
+            detail.FcheckResu = "1";
+            detail.UpdateBy = xjDto.userNo;
+            detail.count = (int?)s.LevelNum;
+            SetQSItemDetail(detail);
+        });
+
+        return Convert.ToInt32(xj.Id);
+    }
+
+    public int saveItem(XJDto xjDto)
+    {
+        var items = xjDto.items;
+        var userNo = xjDto.userNo;
+
+        SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            foreach (var item in items) item.Pid = xjDto.gid;
+
+            return db.Insertable(items).ExecuteCommand();
+        });
+
+        xjDto.items = getJYItem(xjDto.gid, null);
+
+        xjDto.items.ForEach(s =>
+        {
+            if (s.MaxValue != null || s.StandardValue != null ||
+                s.MinValue != null) return;
+            var detail = new QsQaItemXj02();
+            detail.Pid = s.Id;
+            detail.Gid = xjDto.gid;
+            detail.Fstand = "鈭�";
+            detail.FcheckResu = "1";
+            detail.UpdateBy = xjDto.userNo;
+            detail.count = (int?)s.LevelNum;
+            SetQSItemDetail(detail);
+        });
+
+        return Convert.ToInt32(xjDto.gid);
+    }
+
+
+    public XJDto getXjDetail02ById(decimal? id)
+    {
+        var xjDto = new XJDto();
+
+        var db = SqlSugarHelper.GetInstance();
+        var qsQaItemXj01 =
+            db.Queryable<QsQaItemXj01>().Single(s => s.Id == id);
+
+        if (qsQaItemXj01.IsPass == 0)
+            qsQaItemXj01.result = "涓嶅悎鏍�";
+        else if (qsQaItemXj01.IsPass == 1)
+            qsQaItemXj01.result = "鍚堟牸";
+        else
+            qsQaItemXj01.result = "鏈畬鎴�";
+
+        if (qsQaItemXj01.Picture is { Length: > 0 })
+            qsQaItemXj01.imageData =
+                Convert.ToBase64String(qsQaItemXj01.Picture);
+
+        xjDto.ItemXj01 = qsQaItemXj01;
+
+
+        xjDto.ItemXj02s = db.Queryable<QsQaItemXj02>().Where(s => s.Pid == id)
+            .ToList();
+
+        return xjDto;
+    }
+
+    public int SetQSItemDetail(QsQaItemXj02 detail)
+    {
+        var oracle = SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            List<QsQaItemXj02> result = new();
+            for (var i = 0; i < detail.count; i++)
+            {
+                var item = new QsQaItemXj02();
+                item.Gid = detail.Gid;
+                item.Pid = detail.Pid;
+                item.Fstand = detail.Fstand;
+                item.FcheckResu = detail.FcheckResu;
+                item.CreateBy = detail.UpdateBy;
+                item.CreateDate = DateTime.Now;
+                result.Add(item);
+            }
+
+            return db.Insertable(result).ExecuteCommand();
+        });
+
+        detail.CreateBy = detail.UpdateBy;
+
+        autoResult(detail);
+
+        return oracle;
+    }
+
+    private int autoResult(QsQaItemXj02 detail)
+    {
+        var db = SqlSugarHelper.GetInstance();
+
+        // Single 娌℃湁鏌ヨ鍒扮粨鏋滄椂杩斿洖Null锛屽鏋滅粨鏋滃ぇ浜�1鏉′細鎶涘嚭閿欒
+        var QsQaItemXj01 = db.Queryable<QsQaItemXj01>()
+            .Single(s => s.Id == detail.Pid);
+
+        if (QsQaItemXj01 == null) return 0;
+
+        var count = db.Queryable<QsQaItemXj02>()
+            .Where(s => s.Pid == detail.Pid).Count();
+
+
+        var result = 0;
+
+        if (QsQaItemXj01.LevelNum != count) return 0;
+
+        var passCount = db.Queryable<QsQaItemXj02>()
+            .Where(s => s.Pid == detail.Pid && s.Fstand == "鈭�").Count();
+
+        if (count == passCount) result = 1;
+
+        var useTransactionWithOracle = SqlSugarHelper.UseTransactionWithOracle(
+            db =>
+            {
+                var commit = 0;
+                commit += db.Updateable<QsQaItemXj01>()
+                    .SetColumns(s => s.IsPass == result)
+                    .Where(s => s.Id == detail.Pid)
+                    .ExecuteCommand();
+
+                return commit;
+            });
+
+        //鑾峰彇妫�楠屽崟鐨勬楠岄」鐩悊璁轰釜鏁�
+        var sum = db.Queryable<QsQaItemXj01>()
+            .Where(s => s.Pid == detail.Gid).Sum(it => it.LevelNum);
+
+        if (sum == null || sum == 0) return 1;
+
+        //鑾峰彇妫�楠屽崟涓嬬殑妫�楠岄」鐩疄闄呬釜鏁�
+        var icount = db.Queryable<QsQaItemXj02>()
+            .Where(s => s.Gid == detail.Gid).Count();
+
+        if (icount == 0) return 1;
+
+        //瀹為檯涓暟绛変簬鐞嗚涓暟鏃跺妫�楠屽崟杩涜鍒ゅ畾
+        if (sum == icount)
+        {
+            var FcheckResu = "涓嶅悎鏍�";
+
+            //鑾峰彇杩欎釜妫�楠屽崟涓嬬殑鎵�鏈夊悎鏍肩殑妫�楠岀粨鏋�
+            passCount = db.Queryable<QsQaItemXj02>()
+                .Where(s => s.Gid == detail.Gid && s.Fstand == "鈭�").Count();
+
+            //鍚堟牸鐨勬楠岀粨鏋滅瓑浜庢�绘楠屾暟瑙嗕负鍚堟牸
+            if (icount == passCount) FcheckResu = "鍚堟牸";
+
+            SqlSugarHelper.UseTransactionWithOracle(db =>
+            {
+                return db.Updateable<QsQaItemXj>()
+                    .SetColumns(s => s.FcheckResu == FcheckResu)
+                    .SetColumns(s => s.FcheckDate == DateTime.Now)
+                    .SetColumns(s => s.FcheckBy == detail.CreateBy)
+                    .SetColumns(s => s.LastupdateBy == detail.CreateBy)
+                    .SetColumns(s => s.LastupdateDate == DateTime.Now)
+                    .Where(s => s.Id == detail.Gid)
+                    .ExecuteCommand();
+            });
+        }
+
+        return useTransactionWithOracle;
+    }
+
+    public int UpdateQSItemDetail(QsQaItemXj02 detail)
+    {
+        var withOracle = SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            return db.Updateable<QsQaItemXj02>()
+                .SetColumns(s => s.UpdateBy == detail.UpdateBy)
+                .SetColumns(s => s.UpdateDate == DateTime.Now)
+                .SetColumnsIF(StringUtil.IsNotNullOrEmpty(detail.Fstand),
+                    s => s.Fstand == detail.Fstand)
+                .SetColumnsIF(StringUtil.IsNotNullOrEmpty(detail.FcheckResu),
+                    s => s.FcheckResu == detail.FcheckResu)
+                .Where(s => s.Id == detail.Id)
+                .ExecuteCommand();
+        });
+
+        detail.CreateBy = detail.UpdateBy;
+
+        withOracle += autoResult(detail);
+
+        return withOracle;
+    }
+
+    //鍒犻櫎涓昏〃骞朵笖杩炵骇鍒犻櫎瀛愯〃鍜屽瓩琛�
+    public int removeXJ(decimal? id)
+    {
+        var withOracle = SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            var commit = 0;
+            commit += db.Deleteable<QsQaItemXj>().Where(s => s.Id == id)
+                .ExecuteCommand();
+            commit += db.Deleteable<QsQaItemXj01>().Where(s => s.Pid == id)
+                .ExecuteCommand();
+            commit += db.Deleteable<QsQaItemXj02>().Where(s => s.Gid == id)
+                .ExecuteCommand();
+            return commit;
+        });
+
+        return withOracle;
+    }
+
+    //涓昏〃淇敼澶囨敞瀛楁
+    public int saveRemarksGid(XJDto dto)
+    {
+        return SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            return db.Updateable<QsQaItemXj>()
+                .SetColumns(it =>
+                    it.Remarks == dto.Remarks) //SetColumns鏄彲浠ュ彔鍔犵殑 鍐�2涓氨2涓瓧娈佃祴鍊�
+                .Where(it => it.Id == dto.gid)
+                .ExecuteCommand();
+        });
+    }
+
+    //瀛愯〃淇敼澶囨敞瀛楁
+    public int saveRemarksPid(XJDto dto)
+    {
+        return SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            return db.Updateable<QsQaItemXj01>()
+                .SetColumns(it =>
+                    it.Remarks == dto.Remarks) //SetColumns鏄彲浠ュ彔鍔犵殑 鍐�2涓氨2涓瓧娈佃祴鍊�
+                .Where(it => it.Id == dto.pid)
+                .ExecuteCommand();
+        });
+    }
+
+    //瀛欒〃淇敼澶囨敞瀛楁
+    public int saveRemarksById(XJDto dto)
+    {
+        return SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            return db.Updateable<QsQaItemXj02>()
+                .SetColumns(it =>
+                    it.Remarks == dto.Remarks) //SetColumns鏄彲浠ュ彔鍔犵殑 鍐�2涓氨2涓瓧娈佃祴鍊�
+                .Where(it => it.Id == dto.id)
+                .ExecuteCommand();
+        });
+    }
+}
\ No newline at end of file
diff --git a/StandardPda/MESApplication/Controllers/QC/RKJController.cs b/StandardPda/MESApplication/Controllers/QC/RKJController.cs
new file mode 100644
index 0000000..427250f
--- /dev/null
+++ b/StandardPda/MESApplication/Controllers/QC/RKJController.cs
@@ -0,0 +1,391 @@
+锘縰sing System.Dynamic;
+using MES.Service.Dto.service;
+using MES.Service.Modes;
+using MES.Service.service.QC;
+using MES.Service.util;
+using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json.Linq;
+
+namespace MESApplication.Controllers.QC;
+
+[Route("api/[controller]")]
+[ApiController]
+public class RKJController : ControllerBase
+{
+    //getMaxReleaseNo
+    [HttpPost("getMaxReleaseNo")]
+    public ResponseResult getMaxReleaseNo()
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new RKJService().getMaxBillNo();
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    //getLine
+    [HttpPost("getLineAll")]
+    public ResponseResult getLineAll()
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new RKJService().getLineNo();
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+
+    //getDaa001
+    [HttpPost("getDaa001")]
+    public ResponseResult getDaa001([FromBody] JObject data)
+    {
+        var lineNo = data["lineNo"].ToString();
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new RKJService().GetDaa001s(lineNo);
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    [HttpPost("setJYItem")]
+    public ResponseResult setJYItem([FromBody] JObject data)
+    {
+        var itemNo = data["itemNo"].ToString();
+        var quantity = Convert.ToDecimal(data["quantity"].ToString());
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new RKJService().SetItems(itemNo, quantity);
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    [HttpPost("save")]
+    public ResponseResult save([FromBody] RKJDto rkjDto)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new RKJService().save(rkjDto);
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    [HttpPost("getPage")]
+    public ResponseResult getPage([FromBody] XJPageResult queryObj)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var (items, totalCount) = new RKJService().getPage(queryObj);
+            var tbBillList = items;
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos,
+                TotalCount = totalCount
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    //getItems
+    [HttpPost("getItems")]
+    public ResponseResult getJYItem([FromBody] JObject data)
+    {
+        var pid = data["pid"]?.ToString();
+        var id = data["id"]?.ToString();
+
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new RKJService().GetItems(Convert.ToDecimal(pid),
+                    Convert.ToDecimal(id));
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    //removeXJ
+    [HttpPost("removeXJ")]
+    public ResponseResult removeXJ([FromBody] JObject data)
+    {
+        var id = data["id"]?.ToString();
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new RKJService().removeXJ(Convert.ToDecimal(id));
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    //getXjDetail02ById
+    [HttpPost("getXjDetail02ById")]
+    public ResponseResult getXjDetail02ById([FromBody] JObject data)
+    {
+        var id = data["id"]?.ToString();
+
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new RKJService().getXjDetail02ById(Convert.ToDecimal(id));
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+
+    [HttpPost("SetQSItemDetail")]
+    public ResponseResult SetQSItemDetail([FromBody] QsItemOqcItemDetail detail)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList = new RKJService();
+            var detail021 = tbBillList.SetQSItemDetail(detail);
+            resultInfos.tbBillList = detail021;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    [HttpPost("UpdateQSItemDetail")]
+    public ResponseResult UpdateQSItemDetail(
+        [FromBody] QsItemOqcItemDetail detail)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList = new RKJService();
+            var detail021 = tbBillList.UpdateQSItemDetail(detail);
+            resultInfos.tbBillList = detail021;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    //saveRemarksGid
+    [HttpPost("saveRemarksGid")]
+    public ResponseResult saveRemarksGid([FromBody] RKJDto rkjDto)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new RKJService().saveRemarksGid(rkjDto);
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    //saveRemarksPid
+    [HttpPost("saveRemarksPid")]
+    public ResponseResult saveRemarksPid([FromBody] RKJDto rkjDto)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new RKJService().saveRemarksPid(rkjDto);
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    //saveRemarksById
+    [HttpPost("saveRemarksById")]
+    public ResponseResult saveRemarksById([FromBody] RKJDto rkjDto)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new RKJService().saveRemarksById(rkjDto);
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+
+    [HttpPost("saveItem")]
+    public ResponseResult saveItem([FromBody] RKJDto xjDto)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new RKJService().saveItem(xjDto);
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    //cleanReqResult
+    [HttpPost("cleanReqResult")]
+    public ResponseResult cleanReqResult([FromBody] RKJDto xjDto)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new RKJService().cleanReqResult(xjDto);
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+}
\ No newline at end of file
diff --git a/StandardPda/MESApplication/Controllers/QC/SJController.cs b/StandardPda/MESApplication/Controllers/QC/SJController.cs
new file mode 100644
index 0000000..107d6b9
--- /dev/null
+++ b/StandardPda/MESApplication/Controllers/QC/SJController.cs
@@ -0,0 +1,322 @@
+锘縰sing System.Dynamic;
+using MES.Service.Dto.service;
+using MES.Service.Modes;
+using MES.Service.service.QC;
+using MES.Service.util;
+using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json.Linq;
+
+namespace MESApplication.Controllers.QC;
+
+[Route("api/[controller]")]
+[ApiController]
+public class SJController : ControllerBase
+{
+    [HttpPost("GetMaxBillNo")]
+    public ResponseResult GetMaxBillNo()
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new SJService().getMaxBillNo();
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+
+    [HttpPost("GetPage")]
+    public ResponseResult GetPage([FromBody] SJPageResult queryObj)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new SJService().getPage(queryObj);
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+
+    //SetQSItems
+    [HttpPost("SetQSItems")]
+    public ResponseResult SetQSItems([FromBody] JObject data)
+    {
+        var itemNo = data["itemNo"].ToString();
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList = new SJService();
+            var detail021 = tbBillList.SetQSItems(itemNo);
+            resultInfos.tbBillList = detail021;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    [HttpPost("Save")]
+    public ResponseResult Save([FromBody] QsItem item)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList = new SJService();
+            var detail021 = tbBillList.Save(item);
+            resultInfos.tbBillList = detail021;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    //SaveItem
+    [HttpPost("SaveItem")]
+    public ResponseResult SaveItem([FromBody] QsItem item)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList = new SJService();
+            var detail021 = tbBillList.SaveItem(item);
+            resultInfos.tbBillList = detail021;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    //getQSItems
+    [HttpPost("getQSItems")]
+    public ResponseResult getQSItems([FromBody] JObject data)
+    {
+        var pid = data["pid"]?.ToString();
+        var id = data["id"]?.ToString();
+
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList = new SJService();
+            var detail021 = tbBillList.getQSItems(Convert.ToDecimal(pid),
+                Convert.ToDecimal(id));
+            resultInfos.tbBillList = detail021;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    [HttpPost("SetQSItemDetail")]
+    public ResponseResult SetQSItemDetail([FromBody] QsItemIpiItemDetail detail)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList = new SJService();
+            var detail021 = tbBillList.SetQSItemDetail(detail);
+            resultInfos.tbBillList = detail021;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+
+    [HttpPost("getQSItemDetail")]
+    public ResponseResult getQSItemDetail([FromBody] JObject data)
+    {
+        var pid = data["pid"]?.ToString();
+        var gid = data["gid"]?.ToString();
+
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList = new SJService();
+            var detail021 = tbBillList.getQSItemDetail(Convert.ToDecimal(pid),
+                Convert.ToDecimal(gid));
+            resultInfos.tbBillList = detail021;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+
+    [HttpPost("UpdateQSItemDetail")]
+    public ResponseResult UpdateQSItemDetail(
+        [FromBody] QsItemIpiItemDetail detail)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList = new SJService();
+            var detail021 = tbBillList.UpdateQSItemDetail(detail);
+            resultInfos.tbBillList = detail021;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    //saveRemarksGid
+    [HttpPost("saveRemarksGid")]
+    public ResponseResult saveRemarksGid([FromBody] QsItem rkjDto)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new SJService().saveRemarksGid(rkjDto);
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    //saveRemarksPid
+    [HttpPost("saveRemarksPid")]
+    public ResponseResult saveRemarksPid([FromBody] QsItem rkjDto)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new SJService().saveRemarksPid(rkjDto);
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    //saveRemarksById
+    [HttpPost("saveRemarksById")]
+    public ResponseResult saveRemarksById([FromBody] QsItem rkjDto)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new SJService().saveRemarksById(rkjDto);
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    //removeSJ
+    [HttpPost("removeSJ")]
+    public ResponseResult removeSJ([FromBody] JObject data)
+    {
+        var id = data["id"]?.ToString();
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new SJService().removeXJ(Convert.ToDecimal(id));
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+}
\ No newline at end of file
diff --git a/StandardPda/MESApplication/Controllers/QC/SuspendController.cs b/StandardPda/MESApplication/Controllers/QC/SuspendController.cs
new file mode 100644
index 0000000..ff980df
--- /dev/null
+++ b/StandardPda/MESApplication/Controllers/QC/SuspendController.cs
@@ -0,0 +1,176 @@
+锘縰sing System.Dynamic;
+using MES.Service.Dto.service;
+using MES.Service.service.QC;
+using MES.Service.util;
+using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json.Linq;
+
+namespace MESApplication.Controllers.QC;
+
+[Route("api/[controller]")]
+[ApiController]
+public class SuspendController : ControllerBase
+{
+    [HttpPost("getDept")]
+    public ResponseResult saveImage()
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new SuspendService().getDept();
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    [HttpPost("getDeptCode")]
+    public ResponseResult getDeptCode([FromBody] JObject data)
+    {
+        var deptCode = data["deptCode"].ToString();
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new SuspendService().GetLines(deptCode);
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    [HttpPost("save")]
+    public ResponseResult save([FromBody] XJDto dto)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new SuspendService().save(dto.entity);
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    //getAllByDeptNo
+    [HttpPost("getAllByDeptNo")]
+    public ResponseResult getAllByDeptNo([FromBody] JObject data)
+    {
+        var deptCode = data["deptCode"].ToString();
+
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new SuspendService().getAllByDeptNo(deptCode);
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    //getOpenDept
+    [HttpPost("getOpenDept")]
+    public ResponseResult getOpenDept()
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new SuspendService().getOpenDept();
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    //getOpenLine
+    [HttpPost("getOpenLine")]
+    public ResponseResult getOpenLine([FromBody] JObject data)
+    {
+        var deptCode = data["deptCode"].ToString();
+
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new SuspendService().getOpenLine(deptCode);
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    //UpdateById
+    [HttpPost("UpdateById")]
+    public ResponseResult UpdateById([FromBody] XJDto dto)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new SuspendService().UpdateById(dto.entity);
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+}
\ No newline at end of file
diff --git a/StandardPda/MESApplication/Controllers/QC/XJController.cs b/StandardPda/MESApplication/Controllers/QC/XJController.cs
new file mode 100644
index 0000000..ef25d6b
--- /dev/null
+++ b/StandardPda/MESApplication/Controllers/QC/XJController.cs
@@ -0,0 +1,445 @@
+锘縰sing System.Dynamic;
+using MES.Service.Dto.service;
+using MES.Service.Modes;
+using MES.Service.service.QC;
+using MES.Service.util;
+using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json.Linq;
+
+namespace MESApplication.Controllers.QC;
+
+[Route("api/[controller]")]
+[ApiController]
+public class XJController : ControllerBase
+{
+    [HttpPost("getAll")]
+    public ResponseResult getAll([FromBody] JObject data)
+    {
+        var modify1Flag = Convert.ToInt32(data["modify1Flag"].ToString());
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            // var tbBillList =
+            //     new XJService().getAll(modify1Flag);
+            // resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    //getMaxReleaseNo
+    [HttpPost("getMaxReleaseNo")]
+    public ResponseResult getMaxReleaseNo()
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new XJService().getMaxReleaseNo();
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    //getLine
+    [HttpPost("getLineAll")]
+    public ResponseResult getLineAll()
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new XJService().getLineAll();
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+
+    /// <summary>
+    ///     鑾峰彇宸ュ崟
+    /// </summary>
+    [HttpPost("getDaa001")]
+    public ResponseResult getDaa001([FromBody] JObject data)
+    {
+        var daa020 = data["daa020"].ToString();
+        var item = data["item"].ToString();
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new XJService().getDaa001(daa020, item);
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    /// <summary>
+    ///     鏍规嵁浜х嚎鑾峰彇鐗╂枡缂栫爜  lineNo
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost("getBoardItem")]
+    public ResponseResult getBoardItem([FromBody] JObject data)
+    {
+        var lineNo = data["lineNo"].ToString();
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new XJService().getBoardItem(lineNo);
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    //getItem
+    [HttpPost("getItem")]
+    public ResponseResult getItem([FromBody] JObject data)
+    {
+        var daa001 = data["daa001"].ToString();
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new XJService().getItem(daa001);
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    //setJYItem
+    [HttpPost("setJYItem")]
+    public ResponseResult setJYItem([FromBody] JObject data)
+    {
+        var itemNo = data["itemNo"].ToString();
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new XJService().setJYItem(itemNo);
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    //save
+    [HttpPost("save")]
+    public ResponseResult save([FromBody] XJDto xjDto)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new XJService().save(xjDto);
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    [HttpPost("saveItem")]
+    public ResponseResult saveItem([FromBody] XJDto xjDto)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new XJService().saveItem(xjDto);
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    //getPage
+    [HttpPost("getPage")]
+    public ResponseResult getPage([FromBody] XJPageResult queryObj)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new XJService().getPage(queryObj);
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    //getJYItem
+    [HttpPost("getJYItem")]
+    public ResponseResult getJYItem([FromBody] JObject data)
+    {
+        var pid = data["pid"]?.ToString();
+        var id = data["id"]?.ToString();
+
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new XJService().getJYItem(Convert.ToDecimal(pid),
+                    Convert.ToDecimal(id));
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    //getXjDetail02ById
+    [HttpPost("getXjDetail02ById")]
+    public ResponseResult getXjDetail02ById([FromBody] JObject data)
+    {
+        var id = data["id"]?.ToString();
+
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new XJService().getXjDetail02ById(Convert.ToDecimal(id));
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    [HttpPost("SetQSItemDetail")]
+    public ResponseResult SetQSItemDetail([FromBody] QsQaItemXj02 detail)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList = new XJService();
+            var detail021 = tbBillList.SetQSItemDetail(detail);
+            resultInfos.tbBillList = detail021;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    [HttpPost("UpdateQSItemDetail")]
+    public ResponseResult UpdateQSItemDetail(
+        [FromBody] QsQaItemXj02 detail)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList = new XJService();
+            var detail021 = tbBillList.UpdateQSItemDetail(detail);
+            resultInfos.tbBillList = detail021;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    //removeXJ
+    [HttpPost("removeXJ")]
+    public ResponseResult removeXJ([FromBody] JObject data)
+    {
+        var id = data["id"]?.ToString();
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new XJService().removeXJ(Convert.ToDecimal(id));
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+
+    //saveRemarksGid
+    [HttpPost("saveRemarksGid")]
+    public ResponseResult saveRemarksGid([FromBody] XJDto rkjDto)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new XJService().saveRemarksGid(rkjDto);
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    //saveRemarksPid
+    [HttpPost("saveRemarksPid")]
+    public ResponseResult saveRemarksPid([FromBody] XJDto rkjDto)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new XJService().saveRemarksPid(rkjDto);
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    //saveRemarksById
+    [HttpPost("saveRemarksById")]
+    public ResponseResult saveRemarksById([FromBody] XJDto rkjDto)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList =
+                new XJService().saveRemarksById(rkjDto);
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.3