src/BLL/Demo.BillView/Demo.BillView.csproj | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/BLL/Demo.BillView/PRD/Prd_Pickmtrl.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/BLL/Demo.BillView/PRD/Pro_DayPlan.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/BLL/Demo.BillView/PRD/Pro_SCLLFSH.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/BLL/Demo.BillView/PRD/Pro_SCLLSH.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/BLL/Demo.BillView/PRD/Pro_ScDayImport.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/BLL/Demo.BillView/PRD/Pro_TlPush.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/BLL/Demo.BillView/Demo.BillView.csproj
@@ -222,6 +222,7 @@ <Compile Include="PRD\ProTardinessDetails.cs" /> <Compile Include="PRD\ProCompleteAnalysisMateriel.cs" /> <Compile Include="PRD\ProCompleteAnalysisDetails.cs" /> <Compile Include="PRD\Prd_Pickmtrl.cs" /> <Compile Include="PRD\Pro_DayPlan.cs" /> <Compile Include="PRD\Pro_DayPlanCheckSelectMenu.cs" /> <Compile Include="PRD\Pro_DayPlanPushSCHB.cs" /> src/BLL/Demo.BillView/PRD/Prd_Pickmtrl.cs
New file @@ -0,0 +1,150 @@ using Kingdee.BOS; using Kingdee.BOS.Core.Bill.PlugIn; using Kingdee.BOS.Core.DynamicForm; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel; using Kingdee.BOS.Core.List; using Kingdee.BOS.Core.Metadata.EntityElement; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.ServiceHelper; using Kingdee.BOS.Util; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Demo.BillView.PRD { [Description("[生产领料单] 表单插件"), HotUpdate] public class Prd_Pickmtrl : AbstractBillPlugIn { public override void BarItemClick(BarItemClickEventArgs e) { base.BarItemClick(e); try { if (e.BarItemKey.ToUpper() == "TBDAYPLANMENU") { string pageId = Guid.NewGuid().ToString(); ListShowParameter showParameter = new ListShowParameter(); showParameter.FormId = "Paez_Sc_WorkBillAutoSortBill"; showParameter.PageId = pageId; showParameter.UseOrgId = this.Context.CurrentOrganizationInfo.ID; showParameter.IsLookUp = true; this.View.ShowForm(showParameter); this.View.ShowForm(showParameter, delegate (FormResult result) { object returnData = result.ReturnData; if (returnData is ListSelectedRowCollection) { ListSelectedRowCollection listSelectedRowCollection = returnData as ListSelectedRowCollection; if (listSelectedRowCollection != null) { DynamicObjectDataRow datarow = (DynamicObjectDataRow)listSelectedRowCollection[0].DataRow; this.View.Model.SetValue("FMATERIALID", datarow.DynamicObject["FHMaterID_Id"].ToString()); this.View.Model.SetValue("FPROORDERNO", datarow.DynamicObject["FSCOrderNo"].ToString()); this.View.Model.SetValue("FQty", datarow.DynamicObject["FHOrderNeedQty"].ToString()); this.View.Model.SetValue("FDayPlanFID", datarow.DynamicObject["FID"].ToString()); this.View.Model.SetValue("FDayPlanFentryID", datarow.DynamicObject["t1_FENTRYID"].ToString()); this.View.Model.SetValue("FSourceBillNo", datarow.DynamicObject["FBillNo"].ToString()); this.View.Model.SetValue("FSourceBillType", datarow.DynamicObject["FBillTypeID"].ToString()); } } }); } } catch (Exception ex) { this.View.ShowErrMessage(ex.Message.ToString()); } } public override void EntryBarItemClick(BarItemClickEventArgs e) { base.EntryBarItemClick(e); if (e.BarItemKey.ToUpper() == "TBROWCLOSE") { int[] selectedIndexsR = this.View.GetControl<EntryGrid>("FEntity").GetSelectedRows(); //单据体数据 Array.Sort(selectedIndexsR); DynamicObjectCollection selectedRowsDy = this.Model.DataObject["FEntity"] as DynamicObjectCollection; //选中行数据 DynamicObject selectedRow; StringBuilder result = new StringBuilder(); List<string> sqlList = new List<string>(); foreach (var item in selectedIndexsR) { selectedRow = selectedRowsDy[item]; string sql = string.Format(@" /*dialect*/ select isnull(c.FRealQty,0)FRealQty from Sc_WorkBillSortBillSub a left join T_PRD_MORPTENTRY b on a.FEntryID = b.FDAYPLANFID left join T_PRD_INSTOCKENTRY c on b.FENTRYID = c.FSrcEntryId where a.FEntryID in ({0})", selectedRow["Id"]); decimal FRealQty = DBServiceHelper.ExecuteScalar<decimal>(Context, sql, 0); if (FRealQty == 0) { result.Append($"分录行:{selectedRow["Seq"]},日计划明细未下推生成生产入库单\r\n"); continue; } sql = string.Format(@" /*dialect*/ select count(*)res from Sc_WorkBillSortBillSub a left join Sc_DayPlanPPBomBillMain b on a.FEntryID = b.FDayPlanFID left join Sc_DayPlanPPBomBillSub c on b.FID = c.FID where a.FEntryID in ({0}) and FISSUETYPE in (1, 2) and FDwyl * {1} < FPickedQty", selectedRow["Id"], FRealQty); decimal Count = DBServiceHelper.ExecuteScalar<decimal>(Context, sql, 0); if (Count > 0) { result.Append($"分录行:{selectedRow["Seq"]},下游领料单的已领料数小于入库的标准用量\r\n"); continue; } sql = string.Format(@" /*dialect*/ update Sc_WorkBillSortBillSub set FInStockCount = {0}, FNotInStockCount = FHQty - {0}, FHEntryCloseDate = getdate(), FHCloseTypeSub = 1 where FEntryID={1}", FRealQty, selectedRow["Id"]); sqlList.Add(sql); } DBServiceHelper.ExecuteBatch(Context, sqlList); this.View.Refresh(); if (string.IsNullOrEmpty(result.ToString())) this.View.ShowMessage("操作成功"); else this.View.ShowErrMessage(result.ToString()); } else if (e.BarItemKey.ToUpper() == "TBROWCANCELCLOSE") { int[] selectedIndexsR = this.View.GetControl<EntryGrid>("FEntity").GetSelectedRows(); //单据体数据 Array.Sort(selectedIndexsR); DynamicObjectCollection selectedRowsDy = this.Model.DataObject["FEntity"] as DynamicObjectCollection; //选中行数据 DynamicObject selectedRow; List<string> sqlList = new List<string>(); foreach (var item in selectedIndexsR) { selectedRow = selectedRowsDy[item]; string sql = string.Format(@" /*dialect*/ update Sc_WorkBillSortBillSub set FInStockCount = 0, FNotInStockCount =0, FHEntryCloseDate = null, FHCloseTypeSub = 0 where FEntryID={0}", selectedRow["Id"]); sqlList.Add(sql); } DBServiceHelper.ExecuteBatch(Context, sqlList); this.View.Refresh(); this.View.ShowMessage("操作成功"); } } } } src/BLL/Demo.BillView/PRD/Pro_DayPlan.cs
@@ -112,13 +112,15 @@ where FEntryID={1}", FRealQty, selectedRow["Id"]); sqlList.Add(sql); } var fid = this.View.Model.GetPKValue(); sqlList.Add($"update Sc_WorkBillSortBillMain set FCloseCount = (select sum(FNotInStockCount) from Sc_WorkBillSortBillSub where FID ={fid}) where FID ={fid}"); DBServiceHelper.ExecuteBatch(Context, sqlList); this.View.Refresh(); if (string.IsNullOrEmpty(result.ToString())) this.View.ShowMessage("操作成功"); else this.View.ShowErrMessage(result.ToString()); } else if (e.BarItemKey.ToUpper() == "TBROWCANCELCLOSE") { @@ -140,6 +142,8 @@ where FEntryID={0}", selectedRow["Id"]); sqlList.Add(sql); } var fid = this.View.Model.GetPKValue(); sqlList.Add($"update Sc_WorkBillSortBillMain set FCloseCount = (select sum(FNotInStockCount) from Sc_WorkBillSortBillSub where FID ={fid}) where FID ={fid}"); DBServiceHelper.ExecuteBatch(Context, sqlList); this.View.Refresh(); this.View.ShowMessage("操作成功"); src/BLL/Demo.BillView/PRD/Pro_SCLLFSH.cs
@@ -33,6 +33,7 @@ e.FieldKeys.Add("FBaseJoinQty"); e.FieldKeys.Add("FDayPlanBillNo"); e.FieldKeys.Add("FDayPlanFentryId"); e.FieldKeys.Add("FisFX"); } /// <summary> ///反审核 反更新日计划用料清单调拨数量 @@ -52,12 +53,14 @@ foreach (var entryRow in entryRows) { //生产用料清单为空时 if (Convert.ToString(entryRow["FDayPlanBillNo"]) == "") if (Convert.ToString(entryRow["FDayPlanBillNo"]) == "" || !Convert.ToBoolean(entryRow["FisFX"])) continue; string fentryId = entryRow["FDayPlanFentryId"].ToString(); decimal FBaseQty = Convert.ToDecimal(entryRow["BaseActualQty"]); sql = string.Format($"/*dialect*/update Sc_DayPlanPPBomBillSub set FPickedQty -= {FBaseQty} where FEntryID = { fentryId} "); sqlList.Add(sql); sql = string.Format($"/*dialect*/update T_PRD_PICKMTRLDATA set FisFX = 0 where FentryId = {entryRow["Id"]}"); sqlList.Add(sql); } } DBServiceHelper.ExecuteBatch(Context, sqlList); src/BLL/Demo.BillView/PRD/Pro_SCLLSH.cs
@@ -37,7 +37,7 @@ e.FieldKeys.Add("FBaseActualQty"); } /// <summary> ///反审核 反更新日计划用料清单领料数量 ///审核更新日计划用料清单领料数量 /// </summary> /// <param name="e"></param> public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e) @@ -59,6 +59,8 @@ sql = string.Format($"/*dialect*/update Sc_DayPlanPPBomBillSub set FPickedQty = FPickedQty + {Convert.ToDecimal(entryRow["BaseActualQty"])} where FEntryID = {fentryId} "); //LogHelper.Info("领料单的日计划用料清单ID:" + fentryId); sqlList.Add(sql); sql = string.Format($"/*dialect*/update T_PRD_PICKMTRLDATA set FisFX = 1 where FentryId = {entryRow["Id"]}"); sqlList.Add(sql); } } DBServiceHelper.ExecuteBatch(Context, sqlList); src/BLL/Demo.BillView/PRD/Pro_ScDayImport.cs
@@ -144,10 +144,11 @@ FBILLNO = _dt.Rows[0]["FBILLNO"].ToString(); FMoFBillType = _dt.Rows[0]["FMoFBillType"].ToString(); } //物料编码 + 生产订单号 + 生产资源 + 生产订单行号 去判断是否导入过 带出日计划工单ID及编号 //物料编码 + 生产订单号 + 生产资源 + 生产订单行号 去判断是否导入过 带出日计划工单ID及编号 和 关闭数量(6.18更) string fDayPlanID = ""; string fDayPlanBillNo = ""; sql = string.Format(@"select a.FID,FBILLNO,FSCOrderNo,FHMaterID,FHSourceID from Sc_WorkBillSortBillMain a JOIN T_BD_MATERIAL b ON a.FHMaterID = b.FMATERIALID string fCloseCount = ""; sql = string.Format(@"select a.FID,FBILLNO,FSCOrderNo,FHMaterID,FHSourceID,a.FCloseCount from Sc_WorkBillSortBillMain a JOIN T_BD_MATERIAL b ON a.FHMaterID = b.FMATERIALID left join T_ENG_WORKCENTER c on a.FHSourceID=c.fid where FSCOrderNo ='{0}' and b.FNUMBER ='{1}' and a.FSRCBILLENTRYSEQ ='{3}' and (isnull(c.FNUMBER,'') ='{2}' or (select count(*) from T_ENG_WORKCENTER where isnull(c.FNUMBER,'') ='{2}')=0)", dt.Rows[i][1].ToString(), dt.Rows[i][5].ToString(), dt.Rows[i][4].ToString(), dt.Rows[i][2].ToString()); DataTable dayPlanDt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0]; @@ -155,6 +156,7 @@ { fDayPlanID = dayPlanDt.Rows[0]["FID"].ToString(); fDayPlanBillNo = dayPlanDt.Rows[0]["FBILLNO"].ToString(); fCloseCount = dayPlanDt.Rows[0]["FCloseCount"].ToString(); } //DynamicObject row = new DynamicObject(entity.DynamicObjectType); this.Model.CreateNewEntryRow("FEntity"); @@ -176,6 +178,7 @@ this.Model.SetValue("FDayPlanID", fDayPlanID, i);//日计划工单ID this.Model.SetValue("FDayPlanBillNo", fDayPlanBillNo, i);//日工单编号 this.Model.SetValue("FSRCBILLENTRYSEQ", dt.Rows[i][2].ToString(), i);//生产订单明细行号 this.Model.SetValue("FCloseCount", fCloseCount, i);//关闭数量 for (int j = 0; j <= 60; j++) { this.Model.SetValue("FT" + "" + j + "", dt.Rows[i][15 + j].ToString(), i); @@ -296,8 +299,9 @@ } foreach (DynamicObject current in entityDataObjoct) { if (Convert.ToInt32(current["FNoScheduled"]) < 0) _result += "序号:" + Convert.ToString(current["SEQ"]) + ",日计划总数量超出生产订单数量"; //未排数量= 总数 - 日计划 超出日计划为负 + 关闭数量 < 0 表示超出了总计划数量 if (Convert.ToInt32(current["FNoScheduled"]) + Convert.ToInt32(current["FCloseCount"]) < 0) _result += "序号:" + Convert.ToString(current["SEQ"]) + ",日计划总数量超出生产订单数量+关闭数量"; } if (_result != "") { src/BLL/Demo.BillView/PRD/Pro_TlPush.cs
@@ -138,7 +138,7 @@ ["IsDeleteEntry"] = "false", ["SubSystemId"] = "", ["IsVerifyBaseDataField"] = "false", // ["IsAutoSubmitAndAudit"] = true,//自动调用提交和审核功能 ["IsAutoSubmitAndAudit"] = true,//自动调用提交和审核功能 ["Model"] = model };