From 26e7644be352af722ea055d084b2e4a65efb382f Mon Sep 17 00:00:00 2001
From: 王 垚 <1402714037@qq.com>
Date: 星期日, 28 二月 2021 10:08:05 +0800
Subject: [PATCH] 报表过滤框

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

diff --git a/src/BLL/Demo.BillView/PRD/ProductScheduleButtonClick.cs b/src/BLL/Demo.BillView/PRD/ProductScheduleButtonClick.cs
index 1b0d679..1ad007e 100644
--- a/src/BLL/Demo.BillView/PRD/ProductScheduleButtonClick.cs
+++ b/src/BLL/Demo.BillView/PRD/ProductScheduleButtonClick.cs
@@ -1,5 +1,4 @@
-锘縰sing Kingdee.BOS.Core.DynamicForm;
-using Kingdee.BOS.Core.DynamicForm.PlugIn;
+锘縰sing Kingdee.BOS.Core.DynamicForm.PlugIn;
 using Kingdee.BOS.Orm.DataEntity;
 using Kingdee.BOS.Util;
 using System;
@@ -8,7 +7,6 @@
 using Kingdee.BOS.ServiceHelper;
 using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
 using Kingdee.BOS.Core.Metadata.EntityElement;
-using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;
 using ZD.Cloud.Logger;
 using Demo.Model.Model;
 using System.Collections.Generic;
@@ -16,6 +14,8 @@
 using System.Linq;
 using Newtonsoft.Json.Linq;
 using ZD.Cloud.WebApi;
+using Kingdee.BOS.Core.DynamicForm;
+using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;
 
 namespace Demo.BillView
 {
@@ -23,14 +23,212 @@
     [HotUpdate]
     public class ProductScheduleButtonClick : AbstractDynamicFormPlugIn
     {
+        /// <summary>
+        /// 瀹氫箟宸ヤ綔鏃ュ巻鐝粍List<Model>
+        /// </summary>
         public List<ENG_WORKCALFULLDATA> ENG_WORKCALFULLDATA = new List<ENG_WORKCALFULLDATA>();
+        /// <summary>
+        /// 寰呮帓浠诲姟鍙屽嚮琛� 灏嗚鍗曢綈濂楄祴鍊�
+        /// </summary>
+        /// <param name="e"></param>
+        public override void EntityRowDoubleClick(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.EntityRowClickEventArgs e)
+        {
+            base.EntityRowClick(e);
+            isSearched = false;
+            DynamicFormShowParameter formPa = new DynamicFormShowParameter();
+            if (!e.Key.ToString().Contains("FDPRWENTITY"))
+                return;
+            var model = this.View.Model;
+            var fid = model.GetValue("FID", e.Row).ToString();
+            while (this.Model.GetEntryRowCount("FQtfxEntity") > 0)
+            {
+                this.Model.DeleteEntryRow("FQtfxEntity", 0);
+            }
+            string sql = $"/*dialect*/select * from view_JIT_MOMaterReadysBill where  FHICMOInterID='{fid}' order by FPlanDate, FHStockQty desc ,FHMaterID ";
+            DataTable dt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0];
+            if (dt.Rows.Count > 0)
+            {
+                for (int i = 0; i < dt.Rows.Count; i++)
+                {
+                    this.Model.CreateNewEntryRow("FQtfxEntity");
+                    this.Model.SetValue("FSEQ", i + 1, i);//搴忓彿
+                    this.Model.SetValue("FMateralDetailId", dt.Rows[i]["FHMATERID"], i);
+                    this.Model.SetValue("FPlanIssueCount", dt.Rows[i]["FSumPlanCount"], i);//璁″垝鍙戞枡鏁伴噺
+                    this.Model.SetValue("FCompleteCount", dt.Rows[i]["FCompleteCount1"], i);//榻愬鏁伴噺  
+                    this.Model.SetValue("FLackCount", dt.Rows[i]["FLackCount"], i);//缂烘枡鏁伴噺  
+                    this.Model.SetValue("FPassableCount", dt.Rows[i]["FHLeftQty"].ToString(), i);//鍙敤鏁伴噺   
+                    this.Model.SetValue("FMateralCount", dt.Rows[i]["FHStockQty"].ToString(), i);//鐗╂枡鏁伴噺   
+                    this.Model.SetValue("FOccupyCount", dt.Rows[i]["FOccupyCount"].ToString(), i);//鍗犵敤鏁伴噺   
+                    this.Model.SetValue("FCompleteDetailStatus", dt.Rows[i]["FComPlete"].ToString(), i);//鏄惁榻愬   
+                    this.Model.SetValue("FIsHavePur", dt.Rows[i]["FIsHavePur"].ToString(), i);//鏄惁鏈夐噰璐鍗�   
+                    this.Model.SetValue("FHMainICMOInterIDr", dt.Rows[i]["FHMainICMOInterIDr"].ToString(), i);//鐢熶骇璁㈠崟鍐呯爜   
+                    this.Model.SetValue("FPRDBillNo", dt.Rows[i]["FPRDBillNo"].ToString(), i);//鐢熶骇璁㈠崟鍐呯爜   
+                    this.Model.SetValue("FPlanDate", dt.Rows[i]["FPlanDate"].ToString(), i);//鏃ヨ鍒掓棩鏈�   
+                    this.Model.SetValue("FOrgId", dt.Rows[i]["FHStockOrgID"], i);//搴撳瓨缁勭粐  
+                    this.Model.SetValue("FOwnerTypeId", dt.Rows[i]["FOwnerTypeId"], i);//璐т富绫诲瀷  
+                    this.Model.SetValue("FOwnerId", dt.Rows[i]["FOwnerId"], i);//璐т富 
+                    this.Model.SetValue("FErpClsID", dt.Rows[i]["FErpClsID"], i);//鐗╂枡灞炴�� 
+                }
+                ChangeColor();
+            }
+            isSearched = true;
+        }
+        /// <summary>
+        /// 涓嶉綈濂椾俊鎭覆鏌撳簳鑹�
+        /// </summary>
+        private void ChangeColor()
+        {
+            Entity entity = this.View.BillBusinessInfo.GetEntity("FQtfxEntity");
+            //鍗曟嵁浣撲俊鎭浆鎹负鍒楄〃闆嗗悎
+            DynamicObjectCollection entityDataObjoct = this.View.Model.GetEntityDataObject(entity);
+            EntryGrid grid = this.View.GetControl<EntryGrid>("FQtfxEntity");
+            int _i = 0;
+            foreach (DynamicObject current in entityDataObjoct)
+            {
+                if (Convert.ToString(current["FCompleteDetailStatus"]) == "鏈綈濂�")
+                {
+                    // grid.SetRowBackcolor("#FF0000", _i);
+                    grid.SetRowBackcolor("#71FF98CB", _i);
+                }
+                _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>
+        /// 鍊兼洿鏂颁簨浠�
+        /// </summary>
+        /// <param name="e"></param>
+        public override void DataChanged(DataChangedEventArgs e)
+        {
+            try
+            {
+                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 + " 鍒嗛厤鎬绘暟瓒呭嚭鐢熶骇璁㈠崟鏁般��");
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                this.View.ShowErrMessage(ex.Message);
+            }
+        }
+        /// <summary>
+        /// 椤甸潰鍒濆鍖� 娓叉煋鐣岄潰 灏員0-T60鏇存敼涓烘棩鏈熸樉绀�
+        /// </summary>
+        /// <param name="e"></param>
+        public override void OnInitialize(InitializeEventArgs e)
+        {
+            base.OnInitialize(e);
+            DateTime DateNow = DateTime.Now;
+            for (int m = 0; m <= 60; m++)
+            {
+                this.View.GetControl("FT" + "" + m + "").ControlAppearance.TextColor = "#FFFF00";
+                this.View.GetControl("FT" + "" + m + "").Text = DateNow.AddDays(m).ToShortDateString();
+            }
+            this.View.SendDynamicFormAction(View);
+        }
+        /// <summary>
+        /// 鍒濆鍔犺浇浜嬩欢
+        /// </summary>
+        /// <param name="e"></param>
+        public override void OnLoad(EventArgs e)
+        {
+            base.OnLoad(e);
+            SearchList();
+        }
         /// <summary>
         /// 椤甸潰鎸夐挳鐐瑰嚮浜嬩欢
         /// </summary>
         /// <param name="e"></param>
         public override void ButtonClick(ButtonClickEventArgs e)
         {
-            base.OnLoad(e);
+            base.ButtonClick(e);
             try
             {
                 //閫夋嫨
@@ -38,28 +236,56 @@
                 {
                     ShowFDprwEntity();
                 }
-                //鐢熶骇璁㈠崟      鏌ヨ
+                //寰呮帓浠诲姟 鏌ヨ
+                if (e.Key.ToUpper().Equals("FSEARCHBUTTON"))
+                {
+                    string FDepartId = (this.Model.GetValue("FDpDepartment") as DynamicObject)?["Id"].ToString();
+                    string FDate = Convert.ToString(this.Model.GetValue("FNewPzDate"));
+                    isSearched = false;
+                    DprwSearcrList(FDepartId, FDate);
+                    isSearched = true;
+                }
+                //鐢熶骇璁㈠崟 鏌ヨ
                 if (e.Key.ToUpper().Equals("FSEARCHBUTTONSC"))
                 {
-                    this.View.ShowErrMessage("鐢熶骇璁㈠崟鍢垮樋!");
+                    string FMaterialId = (this.Model.GetValue("FMATERIALIDCX") as DynamicObject)?["Id"].ToString();
+                    string FProOrderNo = Convert.ToString(this.Model.GetValue("FOrderNoCX"));
+                    isSearched = false;
+                    ScddSearchList(FMaterialId, FProOrderNo);
+                    isSearched = true;
                 }
             }
             catch (Exception ex)
             {
                 LogHelper.Error("鐢熶骇鎺掔▼鍗曞姩鎬佽〃鍗�-Button鎸夐挳鐐瑰嚮浜嬩欢 鎶涘嚭寮傚父锛�" + ex.Message.ToString());
                 this.View.ShowErrMessage(ex.Message.ToString());
-
             }
         }
+        /// <summary>
+        /// 椤甸潰鎸夐挳宸ュ叿鏍忎簨浠�
+        /// </summary>
+        /// <param name="e"></param>
         public override void BarItemClick(BarItemClickEventArgs e)
         {
-            base.OnLoad(e);
+            base.BarItemClick(e);
             try
             {
                 //鎺掔▼
                 if (e.BarItemKey.ToUpper().Equals("TBPC"))
                 {
                     ProductSchedul();
+                }
+                //淇濆瓨
+                if (e.BarItemKey.ToUpper().Equals("TBSAVE"))
+                {
+                    ZdpcSave();
+                }
+                //鍒锋柊
+                if (e.BarItemKey.ToUpper().Equals("TBREFASH"))
+                {
+                    isSearched = false;
+                    SearchList();
+                    isSearched = true;
                 }
             }
             catch (Exception ex)
@@ -68,7 +294,170 @@
                 this.View.ShowErrMessage(ex.Message.ToString());
             }
         }
+        /// <summary>
+        /// 绐椾綋椤甸潰鍔犺浇 鍙� 鏌ヨ
+        /// </summary>
+        public void SearchList()
+        {
+            isSearched = false;
+            DprwSearcrList("", "");
+            ScddSearchList("", "");
+            isSearched = true;
+        }
+        /// <summary>
+        /// 鐣岄潰涓婃柟鈥滃緟鎺掍换鍔♀�濈殑椤电
+        /// </summary>
+        /// <param name="FDepartId"></param>
+        /// <param name="FDate"></param>
+        public void DprwSearcrList(string FDepartId, string FDate)
+        {
+            try
+            {
+                string sqlWhere = " where 1=1 ";
+                if (!string.IsNullOrEmpty(FDepartId))
+                    sqlWhere += $" and FHMATERID ={FDepartId}";
+                if (!string.IsNullOrEmpty(FDate))
+                    sqlWhere += $" and dadediff(d,FDate,) =0 ";
+                //寰呮帓浠诲姟 鍒濆鍖栧姞杞� where FNoScheduled > 0 鏈帓浜ф暟閲忓ぇ浜�0
+                string sql = @"select *  ,isnull((select SUM(isnull(FHQTY,0)) from SC_WORKBILLSORTBILLSub t2 where t2.FID = t1.FID and DATEDIFF(D,FHMASTERDATE,GETDATE())>0),0)FQTYLS from Sc_WorkBillSortBillMain t1";
+                DataTable dt = DBServiceHelper.ExecuteDataSet(this.Context, sql).Tables[0];
+                if (dt.Rows.Count > 0)
+                {
+                    while (this.Model.GetEntryRowCount("FDprwEntity") > 0)
+                    {
+                        this.Model.DeleteEntryRow("FDprwEntity", 0);
+                    }
+                    for (int i = 0; i < dt.Rows.Count; i++)
+                    {
+                        this.Model.CreateNewEntryRow("FDprwEntity");
+                        this.Model.SetValue("FSczy", dt.Rows[i]["FHSourceID"], i);//鐢熶骇璧勬簮  
+                        this.Model.SetValue("FProOrderNo", dt.Rows[i]["FSCOrderNo"], i);//鐢熶骇璁㈠崟鍙�  
+                        this.Model.SetValue("FSRCBILLENTRYSEQ", dt.Rows[i]["FSRCBILLENTRYSEQ"], i);//鐢熶骇璁㈠崟鏄庣粏琛屽彿  
+                        this.Model.SetValue("FMATERIALID", dt.Rows[i]["FHMaterID"], i);//鐗╂枡浠g爜  
+                        this.Model.SetValue("FSCOrderCount", dt.Rows[i]["FOrderQuantity"], i);//鐢熶骇璁㈠崟鏁�  
+                        //this.Model.SetValue("FFinishConut", dt.Rows[i]["FNOTE"], i);//瀹屽伐鏁� 锛堟病鏈夊搴斿瓧娈碉級
+                        this.Model.SetValue("FStoredCount", dt.Rows[i]["FHInstockQty"], i);//宸插叆搴撴暟  
+                        this.Model.SetValue("FPriority", dt.Rows[i]["FHYX"], i);//浼樺厛绾�  
+                        this.Model.SetValue("FCapacity", dt.Rows[i]["FHWorkQty"], i);//浜ц兘  
+                        this.Model.SetValue("FPlanBeginDate", dt.Rows[i]["FHPlanBeginDate"], i);//璁″垝寮�濮嬫棩鏈�  
+                        this.Model.SetValue("FPlanEndDate", dt.Rows[i]["FHPlanEndDate"], i);//璁″垝瀹屽伐鏃ユ湡  
+                        this.Model.SetValue("FSalOrderCount", dt.Rows[i]["FHOrderQty"], i);//閿�鍞鍗曟暟閲�  
+                        //this.Model.SetValue("FCustormer", dt.Rows[i]["FNOTE"], i);//瀹㈡埛 锛堟病鏈夊搴斿瓧娈碉級 
+                        this.Model.SetValue("FSalOrderNo", dt.Rows[i]["FHSeOrderBillNo"], i);//閿�鍞鍗曞彿  
+                        //this.Model.SetValue("FSalDeliveryDate", dt.Rows[i]["FNOTE"], i);//閿�鍞鍗曚氦璐ф湡  锛堟病鏈夊搴斿瓧娈碉級
+                        //this.Model.SetValue("FOrderRemake", dt.Rows[i]["FNOTE"], i);//璁㈠崟澶囨敞  锛堟病鏈夊搴斿瓧娈碉級
+                        this.Model.SetValue("FID", dt.Rows[i]["FID"], i);//鏃ヨ鍒掑伐鍗旾D  
+                    }
+                }
 
+                //鑷姩鎺掔▼ 鍒濆鍖栧姞杞�  where FNoScheduled > 0 鏈帓浜ф暟閲忓ぇ浜�0
+                if (dt.Rows.Count > 0)
+                {
+                    while (this.Model.GetEntryRowCount("FZdpcEntity") > 0)
+                    {
+                        this.Model.DeleteEntryRow("FZdpcEntity", 0);
+                    }
+                    DateTime DateNow = DateTime.Now;//鑾峰彇褰撳墠鏃ユ湡
+                    for (int i = 0; i < dt.Rows.Count; i++)
+                    {
+                        this.Model.CreateNewEntryRow("FZdpcEntity");
+                        this.Model.SetValue("FSczyZD", dt.Rows[i]["FHSourceID"], i);//鐢熶骇璧勬簮  
+                        this.Model.SetValue("FProOrderNoZD", dt.Rows[i]["FSCOrderNo"], i);//鐢熶骇璁㈠崟鍙�  
+                        this.Model.SetValue("FSRCBILLENTRYSEQZD", dt.Rows[i]["FSRCBILLENTRYSEQ"], i);//鐢熶骇璁㈠崟鏄庣粏琛屽彿  
+                        this.Model.SetValue("FMATERIALIDZD", dt.Rows[i]["FHMaterID"], i);//鐗╂枡浠g爜  
+                        this.Model.SetValue("FSCOrderCountZD", dt.Rows[i]["FOrderQuantity"], i);//鐢熶骇璁㈠崟鏁�  
+                        //this.Model.SetValue("FFinishConutZD", dt.Rows[i]["FNOTE"], i);//瀹屽伐鏁� 锛堟病鏈夊搴斿瓧娈碉級
+                        this.Model.SetValue("FQTYLS", dt.Rows[i]["FQTYLS"].ToString(), i);//鍘嗗彶閬楃暀
+                        this.Model.SetValue("FNoScheduledCount", Convert.ToDecimal(dt.Rows[i]["FOrderQuantity"]) - Convert.ToDecimal(dt.Rows[i]["FDayPlanQuantity"]), i);//寰呮帓鏁�  
+                        this.Model.SetValue("FSumQty", Convert.ToDecimal(dt.Rows[i]["FDAYPLANQUANTITY"]) - Convert.ToDecimal(dt.Rows[i]["FQTYLS"]), i);// 
+                        this.Model.SetValue("FPriorityZD", dt.Rows[i]["FHYX"], i);//浼樺厛绾�  
+                        this.Model.SetValue("FCapacityZD", dt.Rows[i]["FHWorkQty"], i);//浜ц兘  
+                        this.Model.SetValue("FIDZD", dt.Rows[i]["FID"], i);//鏃ヨ鍒掑伐鍗旾D  
+                        sql = @"/*dialect*/SELECT * FROM Sc_WorkBillSortBillSub WHERE DATEDIFF(D,GETDATE(),FHMASTERDATE)>=0 and FID=" + dt.Rows[i]["FID"].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;
+                            this.Model.SetValue("FT" + getDay.Days.ToString(), dr["FHQTY"].ToString(), i);//鏃ヨ鍒掑伐鍗旻ID
+                            if (dr["FHLockedSub"].ToString() == "1")
+                                this.View.GetFieldEditor("FT" + getDay.Days.ToString(), i).Enabled = false; //鍗曟嵁浣撹閿佸畾瀛楁
+                        }
+                    }
+                    //for (int m = 0; m <= 60; m++)
+                    //{
+                    //    this.View.GetControl("FT" + "" + m + "").Text = DateNow.AddDays(m).ToShortDateString();
+                    //}
+                    ChangeColorZDPC();
+
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Error("鐢熶骇鎺掔▼鍗曞姩鎬佽〃鍗�-椤甸潰灞曠ず 寰呮帓浠诲姟鎶涘嚭寮傚父锛�" + ex.Message.ToString());
+                this.View.ShowErrMessage("閿欒锛�" + ex.Message.ToString());
+            }
+        }
+        /// <summary>
+        /// 鐣岄潰涓嬫柟鈥滅敓浜ц鍗曗�濈殑椤电
+        /// </summary>
+        /// <param name="FMaterialId">鐗╂枡</param>
+        /// <param name="FProOrderNo">鐢熶骇璁㈠崟鍙�</param>
+        public void ScddSearchList(string FMaterialId, string FProOrderNo)
+        {
+            try
+            {
+                string sqlWhere = " and 1=1 ";
+                if (!string.IsNullOrEmpty(FMaterialId))
+                    sqlWhere += $" and b.FMATERIALID ='{FMaterialId}'";
+                if (!string.IsNullOrEmpty(FProOrderNo))
+                    sqlWhere += $" and a.FBILLNO like '%{FProOrderNo}%' ";
+
+                //鐣岄潰涓嬫柟鈥滅敓浜ц鍗曗�濈殑椤电锛屽姞杞芥湭鎺掔▼宸插鏍哥殑鐢熶骇璁㈠崟 (娴嬭瘯鏈姞鏉′欢 鏇存敼鍚庡幓闄よ鏍囪)
+                string sql = @"
+SELECT A.FBILLNO,B.FSEQ,B.FMATERIALID,B.FQTY,B.FPlanStartDate,b.FPlanFinishDate,b.FSaleOrderNo,c.FCustId,d.FQTY as FQTYXSDD ,d.FNOTE,d.FPLANDELIVERYDATE,e.FSCOrderNo
+FROM T_PRD_MO a
+LEFT JOIN T_PRD_MOENTRY b on a.FID = B.FID
+left join T_SAL_ORDER c on b.FSaleOrderNo =c.FBILLNO
+left join T_SAL_ORDERENTRY d on c.FID = d.FID and b.FMATERIALID = d.FMATERIALID
+left join Sc_WorkBillSortBillMain e on b.FMATERIALID = e.FHMaterID and b.FSEQ = e.FSRCBILLENTRYSEQ and a.FBILLNO = e.FSCOrderNo
+where ISNULL(e.FSCOrderNo,'')=''";
+                sql += sqlWhere;
+                DataTable dt = DBServiceHelper.ExecuteDataSet(this.Context, sql).Tables[0];
+                if (dt.Rows.Count > 0)
+                {
+                    //this.Model.DeleteEntryData("FScddEntity");
+                    while (this.Model.GetEntryRowCount("FScddEntity") > 0)
+                    {
+                        this.Model.DeleteEntryRow("FScddEntity", 0);
+                    }
+                    for (int i = 0; i < dt.Rows.Count; i++)
+                    {
+                        this.Model.CreateNewEntryRow("FScddEntity");
+                        this.Model.SetValue("FSEQ", i + 1, i);//搴忓彿
+                        this.Model.SetValue("FProOrderNoSC", dt.Rows[i]["FBILLNO"], i);//鐢熶骇璁㈠崟鍙�  
+                        this.Model.SetValue("FSRCBILLENTRYSEQSC", dt.Rows[i]["FSEQ"], i);//鐢熶骇璁㈠崟鏄庣粏鍙�  
+                        this.Model.SetValue("FSCOrderCountSC", dt.Rows[i]["FQTY"], i);//鐢熶骇璁㈠崟鏁�
+                        this.Model.SetValue("FPlanBeginDateSC", dt.Rows[i]["FPlanStartDate"], i);//璁″垝寮�宸ユ棩鏈�
+                        this.Model.SetValue("FPlanEndDateSC", dt.Rows[i]["FPlanFinishDate"], i);//璁″垝瀹屽伐鏃ユ湡  
+                        this.Model.SetValue("FSalOrderNoSC", dt.Rows[i]["FSaleOrderNo"], i);//閿�鍞鍗曞彿  
+                        this.Model.SetValue("FMATERIALIDSC", dt.Rows[i]["FMATERIALID"], i);//鐗╂枡  
+                        this.Model.SetValue("FCustormerSC", dt.Rows[i]["FCustId"], i);//瀹㈡埛  
+                        this.Model.SetValue("FSalOrderCountSC", dt.Rows[i]["FQTYXSDD"], i);//閿�鍞鍗曟暟閲�  
+                        this.Model.SetValue("FSalDeliveryDateSC", dt.Rows[i]["FPLANDELIVERYDATE"], i);//閿�鍞鍗曚氦璐ф湡
+                        this.Model.SetValue("FOrderRemakeSC", dt.Rows[i]["FNOTE"], i);//璁㈠崟澶囨敞  
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Error("鐢熶骇鎺掔▼鍗曞姩鎬佽〃鍗�-椤甸潰灞曠ず 鐢熶骇璁㈠崟鎶涘嚭寮傚父锛�" + ex.Message.ToString());
+                this.View.ShowErrMessage("閿欒锛�" + ex.Message.ToString());
+            }
+        }
         /// <summary>
         /// 鐢熶骇璁㈠崟鏁版嵁鎺ㄥ埌寰呮帓浠诲姟鏍�
         /// </summary>
@@ -109,23 +498,29 @@
                 i++;
             }
         }
-
         /// <summary>
         /// 浜ц兘璁$畻
         /// </summary>
         public void Jscn()
         {
             //鏌ヨ鍑洪噸澶嶇敓浜х嚎瀵瑰簲鐨勫伐浣滄棩鍘嗕俊鎭�
-            string _sql = @"
-select FCalUserId,FCalUserType,FShiftId,FIsWorkTime,FDay,FDateStyle,c.FALLHOURS,b.FENTRYID from T_ENG_WORKCAL a
+            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);
@@ -134,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();
+                    decimal dayFCapacity = 0;//褰撴棩鍓╀綑浜ч噺 = 灏忔椂浜ц兘 * 鏃ュ墿浣欏伐浣滄椂闀�
+                    _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)
@@ -153,13 +582,13 @@
                             FDay = item.FDay,
                             FQTY = fqty
                         }); ;
-                        //褰撴棩浜ч噺澶т簬鍓╀綑鐢熶骇璁㈠崟鏁伴噺鏃� 鎸夊皬鏃朵骇閲忓幓璁$畻闇�瑕佹椂闂� list<>鍘绘墸闄ょ浉搴旂殑宸ユ椂
+                        //褰撴棩鍓╀綑浜ч噺澶т簬鍓╀綑鐢熶骇璁㈠崟鏁伴噺鏃� 鎸夊皬鏃朵骇閲忓幓璁$畻闇�瑕佹椂闂� list<>鍘绘墸闄ょ浉搴旂殑宸ユ椂
                         if (dayFCapacity > FSCOrderCount)
                         {
                             //鏀瑰彉list涓煇涓厓绱犲��
                             var model = ENG_WORKCALFULLDATA.Where(c => c.FENTRYID == item.FENTRYID).FirstOrDefault();
-                            model.FALLHOURS -= Math.Ceiling(fqty / FCapacity);
-
+                            //model.FALLHOURS -= Math.Ceiling(fqty / FCapacity);
+                            model.FALLHOURS -= fqty / FCapacity; // 鐢熶骇鏁� / 灏忔椂浜ц兘 = 娑堣�楃殑灏忔椂 锛堟暟鍊肩被鍨嬩负decimal锛�
                         }
                         else
                         {
@@ -168,9 +597,6 @@
                         }
                         FSCOrderCount = FSCOrderCount - fqty;
                     }
-
-                    //continue;
-
                     //鏍规嵁鐢熶骇璁㈠崟鍙峰拰鐗╂枡鏌ヨ鏄惁瀛樺湪鏄庣粏 +鐢熶骇璁㈠崟鏄庣粏琛屽彿
                     string sql = string.Format(@"
 /*dialect*/
@@ -199,12 +625,14 @@
                     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", "");
 
                     JObject jsonModel = new JObject();
                     jsonModel.Add("FPreparatDate", DateTime.Now.ToString());//缂栧埗鏃ユ湡
+                    jsonModel.Add("FHPlanBeginDate", Convert.ToString(order["FPlanBeginDate"]));//璁″垝寮�濮嬫棩鏈�
+                    jsonModel.Add("FHPlanEndDate", Convert.ToString(order["FPlanEndDate"]));//璁″垝瀹屽伐鏃ユ湡
                     jsonModel.Add("FSRCBILLENTRYSEQ", Convert.ToString(order["FSRCBILLENTRYSEQ"]));//鐢熶骇璁㈠崟鏄庣粏琛屽彿
                     jsonModel.Add("FSCOrderNo", Convert.ToString(order["FProOrderNo"])); //鐢熶骇璁㈠崟鍙稦SCOrderNo
                     jsonModel.Add("FHSeOrderBillNo", Convert.ToString(order["FSalOrderNo"]));//閿�鍞鍗曞彿
@@ -221,7 +649,7 @@
                     jsonModel.Add("FHMaterID", new JObject() { ["Fnumber"] = Convert.ToString(((order["FMATERIALID"]) as DynamicObject)?["Number"].ToString()) });//鐗╂枡
                     jsonModel.Add("FHSourceID", new JObject() { ["Fnumber"] = Convert.ToString(((order["FSczy"]) as DynamicObject)?["Number"].ToString()) });//鐢熶骇璧勬簮
                     jsonModel.Add("FHWorkQty", Convert.ToString(order["FCapacity"])); ;//浜ц兘
-                    jsonModel.Add("FHYX", Convert.ToString(order["FPriority"])); ;//浼樺厛绾�
+                    jsonModel.Add("FHYX", seq++); ;//浼樺厛绾�
                     if (Convert.ToInt32(order["FID"]) > 0)
                         jsonModel.Add("FID", Convert.ToString(order["FID"])); ;//鏃ヨ鍒掑伐鍗旾D
                     JArray Entry = new JArray();
@@ -291,6 +719,78 @@
                 LogHelper.Error("鐢熶骇鎺掔▼鍗曞姩鎬佽〃鍗� 鎺掔▼鎸夐挳鐐瑰嚮鍔熻兘" + ex.Message.ToString());
             }
         }
+        /// <summary>
+        /// 鑷姩鎺掔▼淇濆瓨鍔熻兘
+        /// </summary>
+        public void ZdpcSave()
+        {
+            List<string> sqlList = new List<string>();
+            string sql;
+            //鑾峰彇鍗曟嵁浣撲俊鎭�
+            Entity entity = this.View.BillBusinessInfo.GetEntity("FZdpcEntity");
+            //鍗曟嵁浣撲俊鎭浆鎹负鍒楄〃闆嗗悎
+            DynamicObjectCollection entityDataObjoct = this.View.Model.GetEntityDataObject(entity);
+            DateTime date = Convert.ToDateTime(DateTime.Now.ToString("d"));
+            string _result = "";
+            foreach (DynamicObject current in entityDataObjoct)
+            {
+                if (Convert.ToInt32(current["FNoScheduledCount"]) < 0)
+                    _result += "搴忓彿锛�" + Convert.ToString(current["SEQ"]) + ",鏃ヨ鍒掓�绘暟閲忚秴鍑虹敓浜ц鍗曟暟閲�";
+            }
+            if (_result != "")
+            {
+                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();
+                jsonRoot.Add("Creator", "");
+                jsonRoot.Add("NeedUpDateFields", new JArray());
+                jsonRoot.Add("NeedReturnFields", new JArray());
+                jsonRoot.Add("IsDeleteEntry", "false");
+                jsonRoot.Add("SubSystemId", "");
+                jsonRoot.Add("IsVerifyBaseDataField", "");
+                JObject jsonModel = new JObject();
+                jsonModel.Add("FID", Convert.ToString(current["FIDZD"]));
+                //jsonModel.Add("FOrderQuantity", Convert.ToString(current["FOrderQuantity"]));
+                //jsonModel.Add("FDayPlanQuantity", Convert.ToString(current["FDayPlanQuantity"]));
+                //jsonModel.Add("FNoScheduled", Convert.ToString(current["FNoScheduled"]));
+                sql = $" /*dialect*/ select FEntryID, FHMASTERDATE from SC_WORKBILLSORTBILLSub  where FID={Convert.ToString(current["FIDZD"])} ";
+                List<DayPlanModel> dayPlanModel = new List<DayPlanModel>();
+                dayPlanModel = DBServiceHelper.ExecuteDataSet(Context, sql).ToModelList<DayPlanModel>();
+                JArray Entry = new JArray();
+                for (int i = 0; i <= 60; i++)
+                {
+                    if (Convert.ToString(current["FT" + "" + i + ""]) == "" || Convert.ToString(current["FT" + "" + i + ""]) == "0")
+                        continue;
+                    JObject jsonFPOOrderEntry = new JObject();
+                    jsonFPOOrderEntry.Add("FHMasterDate", date.AddDays(i).ToShortDateString()); ;//涓绘棩鏈�
+                    jsonFPOOrderEntry.Add("FHQty ", Convert.ToString(current["FT" + "" + i + ""])); ;//鏃ヨ鍒掓暟閲�
+                    List<DayPlanModel> _dayPlanModel = dayPlanModel.Where(x => x.FHMASTERDATE == date.AddDays(i)).ToList();
+                    if (_dayPlanModel.Count > 0)
+                    {
+                        jsonFPOOrderEntry.Add("FEntryID", _dayPlanModel.FirstOrDefault().FEntryID); ;//搴忓彿
+                    }
+                    Entry.Add(jsonFPOOrderEntry);
+                }
+                jsonModel.Add("FEntity", Entry);
+                jsonRoot.Add("Model", jsonModel);
+                CloudClient cloudClient = new CloudClient("http://localhost//k3cloud/");
+                var result = cloudClient.Save("Paez_Sc_WorkBillAutoSortBill", jsonRoot.ToString());
+                JObject saveObj = JObject.Parse(result);
+                string saveIsSuc = saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper();
+                if (saveIsSuc != "TRUE")
+                {
+                    LogHelper.Error("鐢熶骇璁″垝骞冲彴淇濆瓨澶辫触:" + jsonRoot.ToString());
+                    this.View.ShowMessage(saveObj["Result"]["ResponseStatus"]["Errors"][0]["Message"].ToString());
+                }
+            }
+
+            this.View.ShowMessage("鎿嶄綔鎴愬姛");
+        }
 
     }
 }

--
Gitblit v1.9.1