From 7af4d9d0181f2442bc60b218ec65bfaf831d0422 Mon Sep 17 00:00:00 2001
From: 王 垚 <1402714037@qq.com>
Date: 星期四, 02 九月 2021 09:27:22 +0800
Subject: [PATCH] nothing

---
 src/BLL/Demo.BillView/PRD/ProductScheduleButtonClick.cs |  165 +++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 142 insertions(+), 23 deletions(-)

diff --git a/src/BLL/Demo.BillView/PRD/ProductScheduleButtonClick.cs b/src/BLL/Demo.BillView/PRD/ProductScheduleButtonClick.cs
index b1ad125..1ad007e 100644
--- a/src/BLL/Demo.BillView/PRD/ProductScheduleButtonClick.cs
+++ b/src/BLL/Demo.BillView/PRD/ProductScheduleButtonClick.cs
@@ -93,6 +93,52 @@
                 _i++;
             }
         }
+        /// <summary>
+        /// 鑷姩鎺掔▼鏃ヨ鍒� 榻愬鍒嗘瀽鍚庣殑缁撴灉娓叉煋
+        /// </summary>
+        private void ChangeColorZDPC()
+        {
+            DateTime DateNow = DateTime.Now;
+            string sql = "";
+            Entity entity = this.View.BillBusinessInfo.GetEntity("FZdpcEntity");
+            //鍗曟嵁浣撲俊鎭浆鎹负鍒楄〃闆嗗悎
+            DynamicObjectCollection entityDataObjoct = this.View.Model.GetEntityDataObject(entity);
+            EntryGrid grid = this.View.GetControl<EntryGrid>("FZdpcEntity");
+            int _i = 0;
+            foreach (DynamicObject current in entityDataObjoct)
+            {
+                sql = @"/*dialect*/SELECT * FROM Sc_WorkBillSortBillSub WHERE DATEDIFF(D,GETDATE(),FHMASTERDATE)>=0 and FID=" + current["FIDZD"].ToString();
+                DataTable _dt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0];
+                foreach (DataRow dr in _dt.Rows)
+                {
+                    DateTime start = Convert.ToDateTime(DateNow.ToShortDateString());
+                    DateTime end = Convert.ToDateTime(Convert.ToDateTime(dr["FHMASTERDATE"]).ToShortDateString());
+                    TimeSpan getDay = end.Subtract(start);
+                    if (getDay.Days > 60)
+                        continue;
+
+                    if (dr["FHLockedSub"].ToString() == "1")
+                        this.View.GetFieldEditor("FT" + getDay.Days.ToString(), _i).Enabled = false; //鍗曟嵁浣撹閿佸畾瀛楁
+                    if (dr["FCOMPLETE"].ToString() == "鏈綈濂�")
+                    {
+                        this.View.GetFieldEditor("FT" + getDay.Days.ToString(), _i).Enabled = false; //鍗曟嵁浣撹閿佸畾瀛楁
+                        grid.SetForecolor("FT" + "" + getDay.Days.ToString() + "", "#FF0000", _i);
+                    }
+                    else if (dr["FCOMPLETE"].ToString() == "榻愬")
+                    {
+                        this.View.GetFieldEditor("FT" + getDay.Days.ToString(), _i).Enabled = false; //鍗曟嵁浣撹閿佸畾瀛楁
+                        grid.SetForecolor("FT" + "" + getDay.Days.ToString() + "", "#00FF00", _i);
+                    }
+                    //鎵嬪伐淇敼鏍囪
+                    if (dr["FIsSGXG"].ToString() == "1")
+                    {
+                        this.View.GetFieldEditor("FT" + getDay.Days.ToString(), _i).Enabled = false; //鍗曟嵁浣撹閿佸畾瀛楁
+                        grid.SetForecolor("FT" + "" + getDay.Days.ToString() + "", "#00FFFF", _i);
+                    }
+                }
+                _i++;
+            }
+        }
         private bool isSearched = true;
         /// <summary>
         /// 鍊兼洿鏂颁簨浠�
@@ -100,27 +146,56 @@
         /// <param name="e"></param>
         public override void DataChanged(DataChangedEventArgs e)
         {
-            if (!isSearched) return;
-            base.DataChanged(e);
-            var columns = new List<string>() { "", "" };
-            for (int i = 0; i < 100; i++)
+            try
             {
-                columns.Add("FT" + i.ToString());
+                if (!isSearched) return;
+                base.DataChanged(e);
+                var columns = new List<string>() { "", "" };
+                for (int i = 0; i < 100; i++)
+                {
+                    columns.Add("FT" + i.ToString());
+                }
+                var model = this.View.Model;
+                if (columns.Contains(e.Field.Key))
+                {
+                    //if (Convert.ToDouble(model.GetValue(e.Field.Key, e.Row)) == 0)
+                    //{
+                    //    this.View.ShowErrMessage("鏃ヨ鍒掓暟閲忛渶澶т簬0");
+                    //    //this.View.Model.SetValue("FT0", 100, e.Row);//杩斿洖鍊�
+                    //    return;
+                    //}
+                    var sum = columns.Select(x => Convert.ToDouble(model.GetValue(x, e.Row))).Sum();//鏃ヨ鍒掓�诲拰
+                    var scOrderCount = Convert.ToDouble(model.GetValue("FSCOrderCountZD", e.Row));//鐢熶骇璁㈠崟鏁伴噺
+                    var FQTYLS = Convert.ToDouble(model.GetValue("FQTYLS", e.Row));//鍘嗗彶
+                    this.View.Model.SetValue("FNoScheduledCount", scOrderCount - sum - FQTYLS, e.Row);//寰呮帓鏁�
+                    this.View.Model.SetValue("FSumQty", sum, e.Row);//鏃ヨ鍒掓�绘暟
+                    string sql = $"update Sc_WorkBillSortBillSub set FIsSGXG =1 where FID ={model.GetValue("FIDZD", e.Row)} AND DATEDIFF(D,GETDATE(),FHMasterDate) = '{e.Field.Key.Substring(2)}'";
+                    DBServiceHelper.Execute(Context, sql);
+                }
+                //鍒嗛厤鏁伴噺
+                if (e.Field.Key == "FAllocatedCount")
+                {
+                    var scOrderNo = model.GetValue("FProOrderNo", e.Row).ToString();
+                    var scOrderFentrySeqNo = model.GetValue("FSRCBILLENTRYSEQ", e.Row).ToString();
+                    var scOrderCount = Convert.ToDouble(model.GetValue("FSCOrderCount", e.Row));
+                    Entity entity = this.View.BillBusinessInfo.GetEntity("FDprwEntity");
+                    //鍗曟嵁浣撲俊鎭浆鎹负鍒楄〃闆嗗悎
+                    DynamicObjectCollection entityDataObjoct = this.View.Model.GetEntityDataObject(entity);
+                    var groups = entityDataObjoct.Where(x => Convert.ToString(x["FProOrderNo"]) == scOrderNo && Convert.ToString(x["FSRCBILLENTRYSEQ"]) == scOrderFentrySeqNo);//鐢熶骇璧勬簮鍒嗙粍锛堣绠椾紭鍏堢骇锛�
+                    double allocatedCount = 0;
+                    foreach (var group in groups)
+                    {
+                        allocatedCount += Convert.ToDouble(group["FAllocatedCount"]);
+                    }
+                    if (allocatedCount > scOrderCount)
+                    {
+                        this.View.ShowErrMessage("搴忓彿锛�" + model.GetValue("FSEQ", e.Row).ToString() + ",璁㈠崟鍙凤細" + scOrderNo + "锛岃鍙�:" + scOrderFentrySeqNo + " 鍒嗛厤鎬绘暟瓒呭嚭鐢熶骇璁㈠崟鏁般��");
+                    }
+                }
             }
-            var model = this.View.Model;
-            if (columns.Contains(e.Field.Key))
+            catch (Exception ex)
             {
-                //if (Convert.ToDouble(model.GetValue(e.Field.Key, e.Row)) == 0)
-                //{
-                //    this.View.ShowErrMessage("鏃ヨ鍒掓暟閲忛渶澶т簬0");
-                //    //this.View.Model.SetValue("FT0", 100, e.Row);//杩斿洖鍊�
-                //    return;
-                //}
-                var sum = columns.Select(x => Convert.ToDouble(model.GetValue(x, e.Row))).Sum();//鏃ヨ鍒掓�诲拰
-                var scOrderCount = Convert.ToDouble(model.GetValue("FSCOrderCountZD", e.Row));//鐢熶骇璁㈠崟鏁伴噺
-                var FQTYLS = Convert.ToDouble(model.GetValue("FQTYLS", e.Row));//鍘嗗彶
-                this.View.Model.SetValue("FNoScheduledCount", scOrderCount - sum - FQTYLS, e.Row);//寰呮帓鏁�
-                this.View.Model.SetValue("FSumQty", sum, e.Row);//鏃ヨ鍒掓�绘暟
+                this.View.ShowErrMessage(ex.Message);
             }
         }
         /// <summary>
@@ -316,6 +391,8 @@
                     //{
                     //    this.View.GetControl("FT" + "" + m + "").Text = DateNow.AddDays(m).ToShortDateString();
                     //}
+                    ChangeColorZDPC();
+
                 }
             }
             catch (Exception ex)
@@ -427,17 +504,23 @@
         public void Jscn()
         {
             //鏌ヨ鍑洪噸澶嶇敓浜х嚎瀵瑰簲鐨勫伐浣滄棩鍘嗕俊鎭�
-            string _sql = @"
+            string _sql = @"/*dialect*/ 
 select FCalUserId,FCalUserType,FShiftId,FIsWorkTime,FDay,FDateStyle,c.FALLHOURS ,c.FALLHOURS FALLHOURSCONST,b.FENTRYID from T_ENG_WORKCAL a
 left join  T_ENG_WORKCALFULLDATA b on a.FID=b.FID
 left join T_ENG_SHIFT c on b.FShiftId =c.FID
 where FDateStyle = 1 and FIsWorkTime = 1
 and FCalUserType ='ENG_RepetitiveProductLine'
 and DATEDIFF(D,getdate(),FDAY)>0
+and   convert(nvarchar(20),FCalUserId)+convert(nvarchar(20),FDay,23) not in 
+(
+ select DISTINCT convert(nvarchar(20),FHSourceID)+convert(nvarchar(20),FHMasterDate,23) from Sc_WorkBillSortBillMain a
+join Sc_WorkBillSortBillSub b on a.FID =B.FID 
+WHERE FIsSGXG =1
+)
+--鍘婚櫎鎵嬪姩淇敼杩囩殑鏃ユ湡
 --鏉′欢涓� 宸ヤ綔鏃�+鏄惁鐢熶骇 == 1 ";
             ENG_WORKCALFULLDATA = DBServiceHelper.ExecuteDataSet(Context, _sql).ToModelList<ENG_WORKCALFULLDATA>();
 
-            var list = new List<object>();
             Entity entity = this.View.BillBusinessInfo.GetEntity("FDprwEntity");
             //鍗曟嵁浣撲俊鎭浆鎹负鍒楄〃闆嗗悎
             DynamicObjectCollection entityDataObjoct = this.View.Model.GetEntityDataObject(entity);
@@ -446,14 +529,48 @@
             {
                 var orders = group.OrderBy(x => Convert.ToDateTime(x["FPlanEndDate"]));//璁″垝瀹屽伐鏃ユ湡鎺掑簭
                 var seq = 1;
+                string fMaterialID = ""; //璁板綍寰幆鏃剁殑浜у搧 鐢ㄤ簬浜у搧鎹㈢嚎鏃跺垽鏂紙鍚屼竴涓骇绾挎椂鐨勮绠楋級
                 foreach (var order in orders)
                 {
+                    List<ENG_WORKCALFULLDATA> _ENG_WORKCALFULLDATA = ENG_WORKCALFULLDATA.Where(x => x.FALLHOURS > 0 && x.FCalUserId == Convert.ToInt32(order["FSczy_Id"])).ToList();
+                    //浜у搧鍙戠敓鍙樺够鏃舵墸闄ょ浉搴旂殑鎹㈢嚎鏃堕棿
+                    if (fMaterialID == "")
+                    {
+                        fMaterialID = order["FMATERIALID_Id"].ToString();
+                    }
+                    decimal FChangeLine = Convert.ToDecimal(order["FChangeLine"]);//鎹㈢嚎鏃堕棿
+                    if (fMaterialID != order["FMATERIALID_Id"].ToString())
+                    {
+                        foreach (var item in _ENG_WORKCALFULLDATA)
+                        {
+                            if (FChangeLine < item.FALLHOURS)
+                            {
+                                //鏀瑰彉list涓煇涓厓绱犲��
+                                var model = ENG_WORKCALFULLDATA.Where(c => c.FENTRYID == item.FENTRYID).FirstOrDefault();
+                                //model.FALLHOURS -= Math.Ceiling(fqty / FCapacity);
+                                model.FALLHOURS -= FChangeLine; // 鐢熶骇鏁� / 灏忔椂浜ц兘 = 娑堣�楃殑灏忔椂 锛堟暟鍊肩被鍨嬩负decimal锛�
+                            }
+                            else
+                            {
+                                var model = ENG_WORKCALFULLDATA.Where(c => c.FENTRYID == item.FENTRYID).FirstOrDefault();
+                                model.FALLHOURS = 0;
+                            }
+                        }
+                        fMaterialID = order["FMATERIALID_Id"].ToString();
+                    }
                     //璁$畻浜ц兘
                     decimal FCapacity = Convert.ToDecimal(order["FCapacity"]);//灏忔椂浜ц兘
-                    decimal FSCOrderCount = Convert.ToDecimal(order["FSCOrderCount"]);//鐢熶骇璁㈠崟鏁�
+                    decimal FSCOrderCount = Convert.ToDecimal(order["FSCOrderCount"]);//鐢熶骇璁㈠崟
+                    var _FID = order["FID"]?.ToString();
+                    string cnSql = "";
+                    cnSql = $"select sum(FHQty) from Sc_WorkBillSortBillSub where FID = {_FID} and FIsSGXG =1";
+                    decimal fDayPlanQuality = DBServiceHelper.ExecuteScalar<decimal>(Context, cnSql, 0);
+                    cnSql = $"delete Sc_WorkBillSortBillSub where FID = {_FID} and FIsSGXG <>1";
+                    DBServiceHelper.Execute(Context, cnSql);
+                    FSCOrderCount = FSCOrderCount - fDayPlanQuality;
                     List<ENG_WORKCALFULLDATA> finalyResult = new List<ENG_WORKCALFULLDATA>();
                     decimal dayFCapacity = 0;//褰撴棩鍓╀綑浜ч噺 = 灏忔椂浜ц兘 * 鏃ュ墿浣欏伐浣滄椂闀�
-                    List<ENG_WORKCALFULLDATA> _ENG_WORKCALFULLDATA = ENG_WORKCALFULLDATA.Where(x => x.FALLHOURS > 0 && x.FCalUserId == Convert.ToInt32(order["FSczy_Id"])).ToList();
+                    _ENG_WORKCALFULLDATA = ENG_WORKCALFULLDATA.Where(x => x.FALLHOURS > 0 && x.FCalUserId == Convert.ToInt32(order["FSczy_Id"])).ToList();
                     foreach (var item in _ENG_WORKCALFULLDATA)
                     {
                         if (FSCOrderCount == 0)
@@ -508,7 +625,7 @@
                     jsonRoot.Add("Creator", "");
                     jsonRoot.Add("NeedUpDateFields", new JArray());
                     jsonRoot.Add("NeedReturnFields", new JArray());
-                    jsonRoot.Add("IsDeleteEntry", "true");//
+                    //jsonRoot.Add("IsDeleteEntry", "true");//
                     jsonRoot.Add("SubSystemId", "");
                     jsonRoot.Add("IsVerifyBaseDataField", "");
 
@@ -625,6 +742,8 @@
                 this.View.ShowErrMessage(_result);
                 return;
             }
+            //var groups = entityDataObjoct.GroupBy(x => new {x});//鐢熶骇璧勬簮鍒嗙粍锛堣绠椾紭鍏堢骇锛�
+            //var groups = entityDataObjoct.GroupBy(x => x["FSczy_Id"]);//鐢熶骇璧勬簮鍒嗙粍锛堣绠椾紭鍏堢骇锛�
             foreach (DynamicObject current in entityDataObjoct)
             {
                 JObject jsonRoot = new JObject();

--
Gitblit v1.9.1