From 250d7667b3229969a6dd3bc6ebc68d828a266fe8 Mon Sep 17 00:00:00 2001
From: 快乐的昕的电脑 <快乐的昕的电脑@DESKTOP-C2BQPQU>
Date: 星期六, 20 十二月 2025 14:31:19 +0800
Subject: [PATCH] 修改员工初始密码

---
 MES.Service/service/WomcaaManager.cs |  350 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 328 insertions(+), 22 deletions(-)

diff --git a/MES.Service/service/WomcaaManager.cs b/MES.Service/service/WomcaaManager.cs
index 9f9a6e6..57342c4 100644
--- a/MES.Service/service/WomcaaManager.cs
+++ b/MES.Service/service/WomcaaManager.cs
@@ -3,9 +3,12 @@
 using MES.Service.Modes;
 using MES.Service.util;
 using SqlSugar;
+using System.Data;
 
 namespace MES.Service.service;
-
+/// <summary>
+/// 鐢熶骇璁㈠崟
+/// </summary>
 public class WomcaaManager : Repository<Womcaa>
 {
     //褰撳墠绫诲凡缁忕户鎵夸簡 Repository 澧炪�佸垹銆佹煡銆佹敼鐨勬柟娉�
@@ -65,10 +68,30 @@
         if (StringUtil.CheckGuid(mesWomcaa.Guid))
             base.DeleteById(mesWomcaa.Guid);
 
+        //if (mesWomcabs.Count > 0)
+        //    db.Deleteable<Womcab>()
+        //        .Where(s => s.Pid == mesWomcaa.Erpid).ExecuteCommand();
 
+        // 鍦ㄦ彃鍏� mesWomcabs 涔嬪墠锛屽厛鍒犻櫎鎵�鏈� Guid 宸插瓨鍦ㄧ殑璁板綍
+        //var guids = mesWomcabs.Select(x => x.Guid).ToList();
+        //if (guids.Count > 0)
+        //{
+        //    db.Deleteable<Womcab>().In(x => x.Guid, guids).ExecuteCommand();
+        //}
         if (mesWomcabs.Count > 0)
+        {
+            // 鍏堟寜 Pid 鍒犻櫎
             db.Deleteable<Womcab>()
                 .Where(s => s.Pid == mesWomcaa.Erpid).ExecuteCommand();
+
+            //    // 鍐嶆寜 Guid 鍒犻櫎锛屽交搴曢伩鍏嶄富閿啿绐�
+            //    var guids = mesWomcabs.Select(x => x.Guid).ToList();
+            //    db.Deleteable<Womcab>().In(x => x.Guid, guids).ExecuteCommand();
+        }
+
+        //// 妫�鏌� Guid 鏄惁鍞竴
+        //if (mesWomcabs.Select(x => x.Guid).Distinct().Count() != mesWomcabs.Count)
+        //    throw new Exception("鍗冲皢鎻掑叆鐨刉omcab鏁版嵁涓瓨鍦ㄩ噸澶嶇殑Guid锛岃妫�鏌ユ暟鎹敓鎴愰�昏緫銆�");
 
         //鍗曟潯鎻掑叆蹇界暐绌哄瓧娈�
         var orUpdate = db.Insertable(mesWomcaa)
@@ -119,12 +142,17 @@
         var entity = new Womcaa
         {
             Erpid = Convert.ToInt32(dto.Id), ///     ERPID
-            Caa001 = PPBOMNO, ///     鍗曞彿
-            Caa021 = dto.FWorkShopID, ///     宸ヤ綔杞﹂棿
+
+            SrcBillType = dto.FSrcBillType, ///     宸ュ崟鍗曞埆
+            Caa001=dto.FBillNo, ///     宸ュ崟鍗曞彿
+            //Caa001 = PPBOMNO, ///     鍗曞彿
+            Caa021 = dto.FWorkShopID0, ///     宸ヤ綔涓績
+            //Caa021 = dto.FWorkShopID, ///     宸ヤ綔杞﹂棿
             RoutingId = dto.FRoutingId, ///     宸ヨ壓璺嚎
             WorkShopId = dto.FREMWorkShopId, ///     浜х嚎
             DepotCode = dto.FStockId, ///     浠撳簱
             CreateDate = dto.FDate, ///     鍗曟嵁鏃ユ湡
+
             Caa004 = dto.FBILLTYPE, ///     鍗曟嵁绫诲瀷
             Caa023 = dto.FStatus, ///     鐘舵�� 瀹屽伐锛屾湭瀹屽伐
             Caa006 = dto.FMaterialId, ///     浜у搧缂栫爜
@@ -144,17 +172,9 @@
             Mtono = dto.FMTONO, ///     璁″垝璺熻釜鍙�
             Lot = dto.FLot, ///     鎵瑰彿
             Caa013 = dto.FBomId, ///     BOM鐗堟
-
+            Caa015 = dto.F_UNW_Text_xsddh, ///     璁㈠崟鍗曞彿
+            Caa015Head = dto.xsddh_type, ///     璁㈠崟鍗曞埆
             CreateType = dto.FCreateType, ///     鐢熸垚鏂瑰紡
-            SrcBillType = dto.FSrcBillType, ///     婧愬崟绫诲瀷
-            SrcBillNo = dto.FSrcBillNo, ///     婧愬崟缂栧彿
-            SrcBillentryseq = dto.FSrcBillEntrySeq, ///     婧愬崟鍒嗗綍琛屽彿
-            SaleOrderNo = dto.FSaleOrderNo, ///     闇�姹傚崟鎹彿
-            SaleOrderEntryseq = dto.FSaleOrderEntrySeq, ///     闇�姹傚崟鎹鍙�
-            ForceCloserid = dto.FForceCloserId, ///     缁撴浜�
-            CloseType = dto.FCloseType, ///     缁撴绫诲瀷
-            SrcSplitBillno = dto.FSrcSplitBillNo, ///     婧愭媶鍒嗚鍗曠紪鍙�
-            Caa016 = dto.FDESCRIPTION, ///     澶囨敞
 
             Caa018 = !string.IsNullOrEmpty(dto.PLAN_ID)
                 ? Convert.ToInt32(dto.PLAN_ID)
@@ -163,11 +183,23 @@
                 ? Convert.ToInt32(dto.PLAN_SEQ)
                 : null, ///     ERP婧愬崟琛屽彿
             Caa020 = dto.PLAN_NUM, ///     ERP婧愬崟鍗曞彿(浠诲姟鍗曞彿)
-            //Caa015 = dto.F_UNW_Text_xsddh, ///     閿�鍞鍗曞彿
+
+            ForceCloserid = dto.FForceCloserId, ///     缁撴浜�
+            CloseType = dto.FCloseType, ///     缁撴绫诲瀷
+            SrcSplitBillno = dto.FSrcSplitBillNo, ///     婧愭媶鍒嗚鍗曠紪鍙�
+            Caa016 = dto.FMemoItem, ///     澶囨敞
+
+            SrcBillNo = dto.FSrcBillNo, ///     婧愬崟缂栧彿
+            SrcBillentryseq = dto.FSrcBillEntrySeq, ///     婧愬崟鍒嗗綍琛屽彿
+            SaleOrderNo = dto.FSaleOrderNo, ///     闇�姹傚崟鎹彿
+            SaleOrderEntryseq = dto.FSaleOrderEntrySeq, ///     闇�姹傚崟鎹鍙�
+
+
+            CustNumber = dto.CustNumber, ///     瀹㈡埛缂栧彿
             ErpSczz = Convert.ToInt32(dto.FPrdOrgId), ///     鐢熶骇缁勭粐ID
             ErpWtzz = Convert.ToInt32(dto.FEnTrustOrgId), ///     濮旀墭缁勭粐ID
             Btbz = dto.Btbz, ///     濮旀墭缁勭粐ID
-            //Caa015Head = dto.F_XIFG_Integer_tzk, ///     閿�鍞鍗曡鍙�
+            
             //MainProductNo = dto.F_XIFG_Base_w5c, ///     涓讳骇鍝佺紪鐮�
             // MainProductQty =
             //     Convert.ToInt32(dto.F_XIFG_Qty_yrr), ///     涓讳骇鍝佺敓浜ф暟閲�
@@ -175,12 +207,129 @@
             // PackingListNumber = dto.F_XIFG_Text_yrr, ///     鍖呰鍗曞彿
             // CustomerName = dto.F_XIFG_Text_qtr1, ///     瀹㈡埛鍚嶇О
             // Customer = dto.F_XIFG_Base_83g1, ///     瀹㈡埛
-            Caa0111 = dto.FPlanFinishDate, ///     棰勮瀹屽伐鏃堕棿澶囦唤
-            Typea = dto.TypeA, ///     棰勮瀹屽伐鏃堕棿澶囦唤
+            //Caa0111 = dto.FPlanFinishDate, ///     棰勮瀹屽伐鏃堕棿澶囦唤
+            //Typea = dto.TypeA, ///     棰勮瀹屽伐鏃堕棿澶囦唤
             //Typeb = dto.TypeB ///     棰勮瀹屽伐鏃堕棿澶囦唤
             SynchronousDate = DateTime.Now,
             DocumentStatus = dto.FDocumentStatus
         };
+
+        //宸ヤ綔涓績缂栫爜杞琁D,Caa021 = dto.FWorkShopID0
+        var entityCaa021 = Db.Queryable<SysDepartment>()
+        .Where(x => x.Departmentcode == dto.FWorkShopID0)
+        .Select(x => x.Id.ToString())
+        .First();
+        if (!string.IsNullOrWhiteSpace(entityCaa021))
+        {
+            entity.Caa021 = entityCaa021;
+        }
+        else
+        {
+            entity.Caa021 = "0";
+        }
+
+        //浠撳簱缂栫爜杞琁D,DepotCode = dto.FStockId,
+        var entityDepotCode = Db.Queryable<MesDepots>()
+        .Where(x => x.DepotCode == dto.FStockId)
+        .Select(x => x.DepotId.ToString())
+        .First();
+        if (!string.IsNullOrWhiteSpace(entityDepotCode))
+        {
+            entity.DepotCode = entityDepotCode;
+        }
+        else
+        {
+            entity.DepotCode = "0";
+        }
+
+        //浜у搧(鐗╂枡)缂栫爜杞琁D,Caa006 = dto.FMaterialId, ///     
+        var entityCaa006 = Db.Queryable<MesItems>()
+        .Where(x => x.ItemNo == dto.FMaterialId)
+        .Select(x => x.Id.ToString())
+        .First();
+        if (!string.IsNullOrWhiteSpace(entityCaa006))
+        {
+            entity.Caa006 = entityCaa006;
+        }
+        else
+        {
+            entity.Caa006 = "0";
+        }
+
+        //鍗曚綅缂栫爜杞琁D,Caa009 = dto.FUnitId, 
+        var entityCaa009 = Db.Queryable<MesUnit>()
+        .Where(x => x.Fnumber == dto.FUnitId)
+        .Select(x => x.Id.ToString())
+        .First();
+        if (!string.IsNullOrWhiteSpace(entityCaa009))
+        {
+            entity.Caa009 = entityCaa009;
+        }
+        else
+        {
+            entity.Caa009 = "0";
+        }
+
+        //璁″垝鍛樼紪鐮佽浆ID,PlanId = dto.FPlannerID,
+        var entityPlanId = Db.Queryable<MesStaff>()
+        .Where(x => x.StaffNo == dto.FPlannerID)
+        .Select(x => x.Id.ToString())
+        .First();
+        if (!string.IsNullOrWhiteSpace(entityPlanId))
+        {
+            entity.PlanId = entityPlanId;
+        }
+        else
+        {
+            entity.PlanId = "0";
+        }
+
+        //缁撴浜虹紪鐮佽浆ID,ForceCloserid = dto.FForceCloserId,
+        var entityForceCloserid = Db.Queryable<MesStaff>()
+        .Where(x => x.StaffNo == dto.FForceCloserId)
+        .Select(x => x.Id.ToString())
+        .First();
+        if (!string.IsNullOrWhiteSpace(entityForceCloserid))
+        {
+            entity.ForceCloserid = entityForceCloserid;
+        }
+        else
+        {
+            entity.ForceCloserid = "0";
+        }
+
+        //瀹㈡埛缂栫爜杞琁D,CustNumber = dto.CustNumber,
+        var entityCustNumber = Db.Queryable<MesStaff>()
+        .Where(x => x.StaffNo == dto.CustNumber)
+        .Select(x => x.Id.ToString())
+        .First();
+        if (!string.IsNullOrWhiteSpace(entityCustNumber))
+        {
+            entity.CustNumber = entityCustNumber;
+        }
+        else
+        {
+            entity.CustNumber = "0";
+        }
+
+        //鏍规嵁鍗曞彿+鍗曞埆锛岃幏鍙栧搴旂殑id
+        var singleId = Db.Queryable<Womcaa>()
+            .Where(x => x.SrcBillType == dto.FSrcBillType && x.Caa001 == dto.FBillNo)
+            .Select(x => x.Erpid)
+            .First();
+
+        //濡傛灉娌℃湁鍒欑敓鎴愪竴涓柊鐨刬d
+        if (singleId == null || string.IsNullOrWhiteSpace(singleId.ToString()))
+        {
+            entity.Erpid = (int)GenerateNewId();
+            //entity.Erpid = GenerateNewId().ToString();
+            //rohIn.id = GenerateNewId().ToString("0");
+        }
+        else//濡傛灉鏈夊垯浣跨敤宸叉湁鐨刬d
+        {
+            entity.Erpid = Convert.ToInt32(singleId);
+            //entity.Erpid = singleId.ToString();
+        }
 
         var single = base.GetSingle(it => it.Erpid == entity.Erpid);
         if (single != null) entity.Guid = single.Guid;
@@ -198,8 +347,9 @@
             {
                 Erpid = Convert.ToInt32(dto.Id), /// ERPID 
                 Cab001 = dto.FBillNo, /// 宸ュ崟鍗曞彿 
-                Cab002 = Convert.ToInt32(dto.FSeq), /// 搴忓彿 
-                Cab003 = dto.FMaterialID, /// 鏉愭枡缂栫爜 
+                //Cab002 = Convert.ToInt32(dto.FSeq), /// 搴忓彿 
+                Cab002 = Convert.ToInt32(dto.FBillNoType), /// 搴忓彿 
+                Cab003 = dto.FMaterialID2, /// 鏉愭枡缂栫爜 
                 Cab006 = !string.IsNullOrEmpty(dto.FNeedQty)
                     ? Convert.ToDecimal(dto.FNeedQty)
                     : null, /// 闇�棰嗙敤閲� 
@@ -214,7 +364,7 @@
                 Lot = dto.FLot, /// 鎵瑰彿 
                 DepotCode = dto.FStockID, /// 浠撳簱 
                 IssueType = dto.FIssueType, /// 鍙戞枡鏂瑰紡 
-                // Cab008 = dto.F_UNW_Text_tpgy, /// 宸ヨ壓 
+                Cab008 = dto.F_UNW_Text_tpgy, /// 宸ヨ壓 
                 Cab009 = dto.FUnitID, /// 鍗曚綅 
                 SupplyType = dto.FSupplyType, /// 渚涘簲绫诲瀷(C閲囪喘 Z鑷埗 W濮斿) 
                 Cab012 = !string.IsNullOrEmpty(dto.FStdQty)
@@ -244,13 +394,169 @@
                 // ParentItemName = dto.F_XIFG_Base_apv /// 鐖堕」鐗╂枡鍚嶇О 
             };
 
+            //浠撳簱缂栫爜杞琁D,DepotCode = dto.FStockID,
+            var entityDepotCode = Db.Queryable<MesDepots>()
+            .Where(x => x.DepotCode == dto.FStockID)
+            .Select(x => x.DepotId.ToString())
+            .First();
+            if (!string.IsNullOrWhiteSpace(entityDepotCode))
+            {
+                womcab.DepotCode = entityDepotCode;
+            }
+            else
+            {
+                womcab.DepotCode = "0";
+            }
+
+            //鍗曚綅缂栫爜杞琁D,Cab009 = dto.FUnitID,
+            var entityCab009 = Db.Queryable<MesUnit>()
+            .Where(x => x.Fnumber == dto.FUnitID)
+            .Select(x => x.Id.ToString())
+            .First();
+            if (!string.IsNullOrWhiteSpace(entityCab009))
+            {
+                womcab.Cab009 = entityCab009;
+            }
+            else
+            {
+                womcab.Cab009 = "0";
+            }
+
+            //鏍规嵁鍗曞彿+鍗曞埆+鏉愭枡鍝佸彿锛岃幏鍙栧搴旂殑id
+            var singleId = Db.Queryable<Womcab>()
+            .Where(x => x.Cab001 == dto.FBillNo && x.Cab003 == dto.FMaterialID2 && x.Cab002 == Convert.ToInt32(dto.FBillNoType))
+            .Select(x => x.Erpid)
+            .First();
+
+            if (singleId == null)//濡傛灉娌℃湁鍒欑敓鎴愪竴涓柊鐨刬d
+            {
+                //entity.EbelnK3id = GenerateNewId2().ToString();
+                womcab.Erpid = (int)GenerateNewId2();
+            }
+            else//濡傛灉鏈夊垯浣跨敤宸叉湁鐨刬d
+            {
+                //entity.EbelnK3id = singleId.EbelnK3id;
+                womcab.Erpid = singleId;
+            }
+
             var entity = Db.Queryable<Womcab>()
-                .Where(s => s.Eid == womcab.Eid).Single();
-            if (entity != null) womcab.Guid = entity.Guid;
+                .Where(s => s.Cab001 == womcab.Cab001 && s.Cab002 == womcab.Cab002 && s.Cab003 == womcab.Cab003)
+                .Single();
+            if (entity != null)
+                womcab.Guid = entity.Guid;
+            else
+                womcab.Guid = Guid.NewGuid(); // 纭繚姣忔潯鏂版暟鎹敮涓�
 
             womcabList.Add(womcab);
         }
 
         return womcabList;
     }
+
+    ///// <summary>
+    ///// 鐢熸垚鏂扮殑涓昏〃ID锛岀‘淇濅笉閲嶅
+    ///// </summary>
+    //private decimal GenerateNewId()
+    //{
+    //    // 澶勭悊绌鸿〃鐨勬儏鍐碉紝浠�1寮�濮�
+    //    var maxId = Db.Queryable<Womcaa>().Max(x => (decimal?)x.Erpid) ?? 0;
+    //    var newId = maxId + 1;
+
+    //    // 鍙岄噸妫�鏌ワ紝纭繚鐢熸垚鐨処D涓嶅瓨鍦�
+    //    while (Db.Queryable<Womcaa>().Where(x => x.Erpid == newId).Any())
+    //    {
+    //        newId++;
+    //    }
+
+    //    return newId;
+    //}
+
+    /// <summary>
+    /// 鐢熸垚鏂扮殑涓昏〃ID锛岄�氳繃鏁版嵁搴撳簭鍒楄幏鍙栧敮涓�ID
+    /// </summary>
+    private decimal GenerateNewId()
+    {
+        try
+        {
+            // 鏇挎崲涓猴細
+            var sequenceValueObj = Db.Ado.GetScalar("SELECT NEXT VALUE FOR MES_WOMCAB_IN_seq");
+            var sequenceValue = Convert.ToDecimal(sequenceValueObj);
+            // 楠岃瘉搴忓垪鍊兼槸鍚︽湁鏁�
+            if (sequenceValue <= 0)
+            {
+                throw new InvalidOperationException($"鏁版嵁搴撳簭鍒� MES_WOMCAB_IN_seq 杩斿洖浜嗘棤鏁堢殑鍊�: {sequenceValue}");
+            }
+
+            return sequenceValue;
+        }
+        catch (Exception ex)
+        {
+            // 璁板綍寮傚父淇℃伅
+            Console.WriteLine($"璋冪敤鏁版嵁搴撳簭鍒� MES_WOMCAB_IN_seq 澶辫触: {ex.Message}");
+
+            // 鍚戜笂灞傛姏鍑烘槑纭殑寮傚父淇℃伅
+            throw new InvalidOperationException($"鐢熸垚瀛愯〃ID澶辫触锛屾棤娉曡幏鍙栨暟鎹簱搴忓垪鍊�: {ex.Message}", ex);
+        }
+    }
+
+    /// <summary>
+    /// 鐢熸垚鏂扮殑瀛愯〃ID锛岄�氳繃鏁版嵁搴撳簭鍒楄幏鍙栧敮涓�ID
+    /// </summary>
+    private decimal GenerateNewId2()
+    {
+        try
+        {
+            // 鏇挎崲涓猴細
+            var sequenceValueObj = Db.Ado.GetScalar("SELECT NEXT VALUE FOR MES_WOMCAB_IN_DATA_seq");
+            var sequenceValue = Convert.ToDecimal(sequenceValueObj);
+            // 楠岃瘉搴忓垪鍊兼槸鍚︽湁鏁�
+            if (sequenceValue <= 0)
+            {
+                throw new InvalidOperationException($"鏁版嵁搴撳簭鍒� MES_WOMCAB_IN_DATA_seq 杩斿洖浜嗘棤鏁堢殑鍊�: {sequenceValue}");
+            }
+
+            return sequenceValue;
+        }
+        catch (Exception ex)
+        {
+            // 璁板綍寮傚父淇℃伅
+            Console.WriteLine($"璋冪敤鏁版嵁搴撳簭鍒� MES_WOMCAB_IN_DATA_seq 澶辫触: {ex.Message}");
+
+            // 鍚戜笂灞傛姏鍑烘槑纭殑寮傚父淇℃伅
+            throw new InvalidOperationException($"鐢熸垚瀛愯〃ID澶辫触锛屾棤娉曡幏鍙栨暟鎹簱搴忓垪鍊�: {ex.Message}", ex);
+        }
+    }
+    //鍞竴閿粍鍚堬細涓昏〃灏辨槸宸ュ崟鍗曞埆+宸ュ崟鍗曞彿锛屽瓙琛ㄦ槸宸ュ崟鍗曞彿+宸ュ崟鍗曞彿+鏉愭枡鍝佸彿
+
+    /// <summary>
+    /// 鏁村崟鍒犻櫎锛岃皟鐢ㄥ瓨鍌ㄨ繃绋�
+    /// </summary>
+    /// <param name="billNo">鍗曞彿</param>
+    /// <returns>琚垹闄ょ殑鍗曞彿</returns>
+    public (int outSum, string outMsg) Delete(string FBillNo, string FBillTypeID)
+    {
+        try
+        {
+            var outMsg = string.Empty;
+            var outSum = 0;
+
+            var parameters = new List<SugarParameter>
+    {
+        new SugarParameter("@FBillNo", FBillNo),
+        new SugarParameter("@FBillTypeID", FBillTypeID),
+        new SugarParameter("@outMsg", outMsg, typeof(string), ParameterDirection.Output, 2500),
+        new SugarParameter("@outSum", outSum, typeof(int), ParameterDirection.Output)
+    };
+
+            Db.Ado.UseStoredProcedure().ExecuteCommand("ERP_DeleteWomcaaByBillNo", parameters);
+
+            outMsg = parameters[2].Value?.ToString() ?? "";
+            outSum = parameters[3].Value != null ? Convert.ToInt32(parameters[index: 3].Value) : -1;
+            return (outSum, outMsg);
+        }
+        catch (Exception ex)
+        {
+            throw new InvalidOperationException($"璋冪敤瀛樺偍杩囩▼ ERP_DeleteWomcaaByBillNo 澶辫触: {ex.Message}", ex);
+        }
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.3