王 垚
2021-03-02 a05018727c284e1d24967e0cf120a934796191b8
src/BLL/Demo.BillView/PRD/Pro_WorkBillPlatform.cs
@@ -2,11 +2,13 @@
using Demo.Model.Model.PODemandPlan;
using K3Cloud.Extend.Utils;
using Kingdee.BOS.Core;
using Kingdee.BOS.Core.Bill;
using Kingdee.BOS.Core.Const;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Core.Metadata.EntityElement;
using Kingdee.BOS.JSON;
using Kingdee.BOS.KDThread;
@@ -66,6 +68,7 @@
            base.BarItemClick(e);
            try
            {
                LogHelper.Info("生产计划平台按钮");
                if (e.BarItemKey.ToUpper() == "BTEXPORT")
                {
                    ExportExcel();
@@ -173,9 +176,14 @@
                    sqlList.Add(sql);
                    sql = $"truncate table Sc_WorkBillSubXnqt";
                    sqlList.Add(sql);
                    sql = $"insert into  Sc_WorkBillMainXnqt select * from  Sc_WorkBillSortBillMain";
                    string columnName = DBServiceHelper.ExecuteScalar<string>(Context, "/*dialect*/ select stuff((select ',' + name  from syscolumns Where id = object_Id('Sc_WorkBillMainXnqt') for xml path('')),1,1,'') as name ", "");
                    sql = $"insert into  Sc_WorkBillMainXnqt({columnName}) select {columnName} from  Sc_WorkBillSortBillMain";
                    LogHelper.Info("测试1:" + sql);
                    sqlList.Add(sql);
                    sql = $"insert into  Sc_WorkBillSubXnqt select * from  Sc_WorkBillSortBillSub";
                    columnName = DBServiceHelper.ExecuteScalar<string>(Context, "/*dialect*/ select stuff((select ',' + name  from syscolumns Where id = object_Id('Sc_WorkBillSubXnqt') for xml path('')),1,1,'') as name ", "");
                    sql = $"insert into  Sc_WorkBillSubXnqt({columnName}) select {columnName} from  Sc_WorkBillSortBillSub";
                    LogHelper.Info("测试1:" + sql);
                    sqlList.Add(sql);
                    sql = $"update Sc_WorkBillSubXnqt set  FComplete=''";
                    sqlList.Add(sql);
@@ -205,14 +213,30 @@
                //生产计划平台拖期明细跳转
                formPa.FormId = "paez_TardinessDetails";
                formPa.CustomParams.Add("FID", Convert.ToString(this.View.Model.GetValue("FDayPlanWorkID", e.Row).ToString()));
                this.View.ShowForm(formPa);
            }
            else if (e.ColKey == "FQTYLS")
            {
                //生产计划平台
                string pageId = Guid.NewGuid().ToString();
                BillShowParameter showParameter = new BillShowParameter();
                showParameter.FormId = "Paez_Sc_WorkBillAutoSortBill";
                showParameter.OpenStyle.ShowType = ShowType.MainNewTabPage;
                showParameter.PageId = pageId;
                showParameter.Status = OperationStatus.EDIT;
                // 传入需要修改的日计划工单内码,
                showParameter.PKey = Convert.ToString(this.View.Model.GetValue("FDayPlanWorkID", e.Row).ToString());
                this.View.ShowForm(showParameter);
            }
            else
            {
                //齐套分析明细列表跳转
                formPa.FormId = "paez_CompleteAnalysisDetail";
                formPa.CustomParams.Add("FHICMOInterID", Convert.ToString(this.View.Model.GetValue("FDayPlanWorkID", e.Row).ToString()));
                this.View.ShowForm(formPa);
            }
            this.View.ShowForm(formPa);
        }
        /// <summary>
        /// 查看虚拟齐套
@@ -1013,7 +1037,6 @@
            {
                Stopwatch sw = new Stopwatch();
                sw.Start();//开始计时
                LogHelper.Info("齐套分析开始准备数据:" + sw.Elapsed);
                //清空齐套临时表
                DBServiceHelper.Execute(Context, "/*dialect*/  delete JIT_MOMaterReadysBill ");
                //更新状态
@@ -1085,9 +1108,9 @@
                int i = 1;
                //创建字典 用于储存物料 + 占用数量
                Dictionary<string, decimal> occupyDic = new Dictionary<string, decimal>();
                LogHelper.Info("齐套分析准备数据完成:" + sw.Elapsed);
                foreach (var item in DatePlanList)
                {
                    //筛选出当日计划数据
                    var _BomList = BomList.Where(x => x.FHMASTERDATE == item.FHMASTERDATE && x.FPRDMOENTYID == item.FPRDMOENTYID).ToList();
                    foreach (var _item in _BomList)
@@ -1103,7 +1126,6 @@
                            decimal _fLackCount = _item.PlanCount > sjkcList.FBASEQTY ? (_item.PlanCount - sjkcList.FBASEQTY) : 0;//缺料数量
                            foreach (var Inventory in _ListInventory)
                            {
                                if (need == 0)
                                    break;
                                decimal fCompleteCount = need >= Inventory.FBASEQTY ? Inventory.FBASEQTY : need;//齐套数量
@@ -1823,8 +1845,8 @@
            {
                string sql = string.Format(@"
/*dialect*/
 select t1.FID,t1.FSEQ FDayPlanFSEQ,t1.FEntryID,T2.FBILLNO AS FDayPlanFBILLNO,t3.FMATERIALID,T5.FNUMBER,t1.FHMASTERDATE,t1.FHQTY,t4.FMATERIALID FMATERIALID2,T6.FNUMBER FNUMBER2,T7.FNUMBER FUNITNUMBER,FNumerator,FDenominator,convert(decimal(18,2),(FNumerator/FDenominator) *t1.FHQTY) FHQtyMust,T4.FUnitID,t8.FNUMBER FUNITNUMBER2,T3.FID FPPBOM,T4.FENTRYID FPPBOMENTRYID,isnull(T9.FBillNo,'')FBillNo,t10.FNUMBER FORGNUMBER,t11.FNUMBER FHSOURCENUMBER,FSCRAPRATE,FFIXSCRAPQTY,T9.FID AS DayPlanFID,t2.FSCORDERNO,
t3.FMOENTRYID,t3.FBILLNO FPPBOMBILLNO,T4.FSEQ,tc.FOWNERTYPEID,tc.FOWNERID,tc.FEntrustPickOrgId,torg.FNUMBER as FORGNUMBER,t3.FMOID,FIssueType,FMaterialType
 select t1.FID,t1.FSEQ FDayPlanFSEQ,t1.FEntryID,T2.FBILLNO AS FDayPlanFBILLNO,t3.FMATERIALID,T5.FNUMBER,t1.FHMASTERDATE,t1.FHQTY,t4.FMATERIALID FMATERIALID2,T6.FNUMBER FNUMBER2,T7.FNUMBER FUNITNUMBER,FNumerator,FDenominator,convert(decimal(18,2),(t4.FMustQty/T3.FQTY) *t1.FHQTY) FHQtyMust,T4.FUnitID,t8.FNUMBER FUNITNUMBER2,T3.FID FPPBOM,T4.FENTRYID FPPBOMENTRYID,isnull(T9.FBillNo,'')FBillNo,t10.FNUMBER FORGNUMBER,t11.FNUMBER FHSOURCENUMBER,FSCRAPRATE,FFIXSCRAPQTY,T9.FID AS DayPlanFID,t2.FSCORDERNO,
t3.FMOENTRYID,t3.FBILLNO FPPBOMBILLNO,T4.FSEQ,tc.FOWNERTYPEID,tc.FOWNERID,tc.FEntrustPickOrgId,torg.FNUMBER as FORGNUMBER,t3.FMOID,FIssueType,FMaterialType,td.FNUMBER as FWORKSHOPID,t4.FReplaceGroup,t4.FUseRate
FROM Sc_WorkBillSortBillSub t1
JOIN Sc_WorkBillSortBillMAIN t2 on t1.FID = t2.FID
JOIN T_PRD_PPBOM T3 on T2.FPRDMOMAINID=t3.FMOID AND T2.FPRDMOENTYID=T3.FMOENTRYID
@@ -1838,7 +1860,16 @@
 LEFT JOIN Sc_DayPlanPPBomBillMain T9 ON T1.FEntryID=T9.FDayPlanFID
 LEFT join T_ORG_Organizations t10 on t2.FHPRDORGID = t10.FORGID
 LEFT join T_ENG_WORKCENTER t11 on t2.FHSOURCEID = t11.FID
 WHERE t1.FHQTY>0
 left join T_BD_DEPARTMENT td on t3.FWORKSHOPID=td.FDEPTID
 WHERE t1.FEntryID not in
(
select distinct FDAYPLANFID from Sc_DayPlanPPBomBillMain where FID IN (
select distinct FDAYPLANFID from T_PRD_PICKMTRLDATA)
)
-- and T4.FMustQty>0
-- (
-- select  FDayPlanFID FROM Sc_DayPlanPPBomBillMain WHERE FID IN ( select distinct FID from  Sc_DayPlanPPBomBillSub WHERE FTranslateQty >0 or FPickedQty >0)
-- )
"
);
                LogHelper.Info("生成日计划用料清单准备数据sql:" + sql);
@@ -1882,7 +1913,10 @@
                            FIssueType = dr["FIssueType"].ToString(),
                            FMaterialType = dr["FMaterialType"].ToString(),
                            FDayPlanFSEQ = dr["FDayPlanFSEQ"].ToString(),
                            FDayPlanFBILLNO = dr["FDayPlanFBILLNO"].ToString()
                            FDayPlanFBILLNO = dr["FDayPlanFBILLNO"].ToString(),
                            FWORKSHOPID = dr["FWORKSHOPID"].ToString(),
                            FReplaceGroup = dr["FReplaceGroup"].ToString(),
                            FUseRate = dr["FUseRate"].ToString()
                        });
                    }
                    LogHelper.Info($"日计划用料清单,数据准备完成,保存到Model实体,总行数:{DayPlanMaterial.Count},耗时:" + sw.Elapsed);
@@ -1932,10 +1966,11 @@
                            ModelEnty.Add("FMOID", _item.FMOID);//  
                            ModelEnty.Add("FISSUETYPE", _item.FIssueType);//  
                            ModelEnty.Add("FMaterialType", _item.FMaterialType);//  
                                                                                // ModelEnty.Add("FSEQ", FSEQ);//
                            ModelEnty.Add("FWORKSHOPID", new JObject() { ["Fnumber"] = _item.FWORKSHOPID });//
                            ModelEnty.Add("FReplaceGroup", _item.FReplaceGroup);//
                            ModelEnty.Add("FUseRate",_item.FUseRate);//
                            Entry.Add(ModelEnty);
                            FSEQ++;
                        }
                        model.Add("FEntity", Entry);
@@ -1957,6 +1992,20 @@
                            var result = cloudClient.BatchSave("Paez_Sc_DayPlanPPBomBill", jsonRoot.ToString());
                            JObject saveObj = JObject.Parse(result);
                            string saveIsSuc = saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper();
                            if (saveIsSuc == "TRUE")
                            {
                                var Success = saveObj["Result"]["ResponseStatus"]["SuccessEntitys"].ToString().TrimStart('{').TrimEnd('}');
                                var allList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(Success);
                                List<string> ls = new List<string>();
                                foreach (var it in allList)
                                {
                                    it.TryGetValue("Id", out string value);
                                    ls.Add(value);
                                }
                                var resultAA = String.Join(",", ls.ToArray());
                                string resSql = string.Format(@"/*dialect*/ update Sc_WorkBillSortBillSub set Sc_WorkBillSortBillSub.FDAYPLANPPBOMBILLNO = Sc_DayPlanPPBomBillMain.FBILLNO from Sc_WorkBillSortBillSub   join Sc_DayPlanPPBomBillMain   on Sc_WorkBillSortBillSub.FEntryID = Sc_DayPlanPPBomBillMain.FDayPlanFID where Sc_DayPlanPPBomBillMain.FID in ({0})", resultAA);
                                DBServiceHelper.Execute(Context, resSql);
                            }
                            if (saveIsSuc != "TRUE")
                            {
                                LogHelper.Error("日计划用料清单列表生成失败:" + jsonRoot.ToString());
@@ -2089,7 +2138,7 @@
                        _PurchaseInventory = PurchaseInventory.Where(x => x.FMATERIALID == item.FMATERIALID && x.FStockOrgId == item.FStockOrgId && x.FQTY > 0).OrderBy(x => x.FENTRYID).ToList();
                        if (_PurchaseInventory.Count == 0)
                        {
                            LogHelper.Info("[提料计划开始]当前物料明细无采购信息:" + item.FMATERIALID + " 库存组织:" + item.FStockOrgId);
                            //LogHelper.Info("[提料计划开始]当前物料明细无采购信息:" + item.FMATERIALID + " 库存组织:" + item.FStockOrgId);
                            break;
                        }
@@ -2113,7 +2162,7 @@
                        //{
                        foreach (var Purchase in _PurchaseInventory)
                        {
                            LogHelper.Info("采购订单号测试:" + Purchase.FBillNo);
                            //LogHelper.Info("采购订单号测试:" + Purchase.FBillNo);
                            //LogHelper.Info("物料:" + Purchase.FMATERIALID + ",采购订单数量:" + Purchase.FQTY);
                            if (Purchase.FQTY >= NeedQty)
                            {