| | |
| | | </Reference> |
| | | </ItemGroup> |
| | | <ItemGroup> |
| | | <Compile Include="PRD\KDExtension.cs" /> |
| | | <Compile Include="PRD\LogService.cs" /> |
| | | <Compile Include="PRD\PODemandPlanListFilter.cs" /> |
| | | <Compile Include="PRD\PODemandPlanListLoad.cs" /> |
| | |
| | | <Compile Include="PRD\Pro_DayPlan.cs" /> |
| | | <Compile Include="PRD\Pro_DayPlanCheckSelectMenu.cs" /> |
| | | <Compile Include="PRD\Pro_DayPlanPushSCHB.cs" /> |
| | | <Compile Include="PRD\Pro_DayPlanBG.cs" /> |
| | | <Compile Include="PRD\Pro_PPBomSubmit.cs" /> |
| | | <Compile Include="PRD\Pro_RJHYLQDBGFSH.cs" /> |
| | | <Compile Include="PRD\Pro_SCHBFSH.cs" /> |
| | | <Compile Include="PRD\Pro_SCLLFSH.cs" /> |
| | | <Compile Include="PRD\Pro_SCHBSH.cs" /> |
| | | <Compile Include="PRD\Pro_RJHYLQDBGSH.cs" /> |
| | | <Compile Include="PRD\Pro_SCLLSH.cs" /> |
| | | <Compile Include="PRD\Pro_RjhylqdDatachange.cs" /> |
| | | <Compile Include="PRD\Pro_PPBomSave.cs" /> |
| New file |
| | |
| | | using Kingdee.BOS.Orm.DataEntity; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace Demo.BillView.PRD |
| | | { |
| | | public static class KDExtension |
| | | { |
| | | |
| | | /// <summary> |
| | | /// 获取一级值 可用于获取文本、数组 |
| | | /// </summary> |
| | | /// <param name="dynamicObject"></param> |
| | | /// <param name="key"></param> |
| | | /// <returns></returns> |
| | | public static object GetValue(this DynamicObject dynamicObject, string propertyName) |
| | | { |
| | | return dynamicObject[propertyName]; |
| | | } |
| | | |
| | | |
| | | private static long GetLongTime2() |
| | | { |
| | | return (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取一级基础资料或单据体对象 |
| | | /// </summary> |
| | | /// <typeparam name="T"></typeparam> |
| | | /// <param name="dynamicObject"></param> |
| | | /// <param name="key"></param> |
| | | /// <returns></returns> |
| | | public static T GetValue<T>(this DynamicObject dynamicObject, string propertyName) |
| | | { |
| | | var value = dynamicObject.GetValue(propertyName); |
| | | if (value != null) |
| | | { |
| | | return (T)Convert.ChangeType(value, typeof(T)); |
| | | } |
| | | return default(T); |
| | | } |
| | | /// <summary> |
| | | /// 获取基础资料的属性 |
| | | /// </summary> |
| | | /// <param name="dynamicObject"></param> |
| | | /// <param name="dataBaseKey"></param> |
| | | /// <param name="propertyName"></param> |
| | | /// <returns></returns> |
| | | public static object GetDataBaseProperty(this DynamicObject dynamicObject, string dataBaseKey, string propertyName) |
| | | { |
| | | var dataBase = dynamicObject.GetValue<DynamicObject>(dataBaseKey); |
| | | if (dataBase != null) |
| | | { |
| | | return dataBase.GetValue(propertyName); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public static T GetDataBaseProperty<T>(this DynamicObject dynamicObject, string dataBaseKey, string propertyName) |
| | | { |
| | | var dataBase = dynamicObject.GetValue<DynamicObject>(dataBaseKey); |
| | | if (dataBase != null) |
| | | { |
| | | var value = dataBase.GetValue(propertyName)?.ToString(); |
| | | |
| | | return (T)Convert.ChangeType(value, typeof(T)); |
| | | } |
| | | return default(T); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取基础资料的编码 |
| | | /// </summary> |
| | | /// <param name="dynamicObject"></param> |
| | | /// <param name="dataBaseKey"></param> |
| | | /// <returns></returns> |
| | | public static object GetDataBaseNumber(this DynamicObject dynamicObject, string dataBaseKey) |
| | | { |
| | | return dynamicObject.GetDataBaseProperty(dataBaseKey, "Number"); |
| | | } |
| | | |
| | | public static T GetDataBaseNumber<T>(this DynamicObject dynamicObject, string dataBaseKey) |
| | | { |
| | | return dynamicObject.GetDataBaseProperty<T>(dataBaseKey, "Number"); |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 获取基础资料的内码 |
| | | /// </summary> |
| | | /// <param name="dynamicObject"></param> |
| | | /// <param name="dataBaseKey"></param> |
| | | /// <returns></returns> |
| | | public static object GetDataBaseId(this DynamicObject dynamicObject, string dataBaseKey) |
| | | { |
| | | return dynamicObject.GetDataBaseProperty(dataBaseKey, "Id"); |
| | | } |
| | | |
| | | public static T GetDataBaseId<T>(this DynamicObject dynamicObject, string dataBaseKey) |
| | | { |
| | | return dynamicObject.GetDataBaseProperty<T>(dataBaseKey, "Id"); |
| | | } |
| | | } |
| | | } |
| New file |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.ComponentModel; |
| | | using System.Data; |
| | | using Kingdee.BOS.Core.Bill; |
| | | using Kingdee.BOS.Core.Bill.PlugIn; |
| | | using Kingdee.BOS.Core.DynamicForm; |
| | | using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; |
| | | using Kingdee.BOS.Core.Metadata; |
| | | using Kingdee.BOS.Core.Metadata.EntityElement; |
| | | using Kingdee.BOS.Orm.DataEntity; |
| | | using Kingdee.BOS.ServiceHelper; |
| | | using Newtonsoft.Json.Linq; |
| | | using ZD.Cloud.Logger; |
| | | using ZD.Cloud.WebApi; |
| | | using Demo.Model.Model; |
| | | using System.Diagnostics; |
| | | using System.Linq; |
| | | using Kingdee.BOS.Core.Bill.PlugIn.Args; |
| | | |
| | | namespace Demo.BillView.PRD |
| | | { |
| | | /// <summary> |
| | | /// 日计划用料清单变更单 表单插件 |
| | | /// </summary> |
| | | [Description("日计划用料清单变更单表单插件")] |
| | | [Kingdee.BOS.Util.HotUpdate] |
| | | public class Pro_DayPlanBG : AbstractBillPlugIn |
| | | { |
| | | CloudClient cloudClient = new CloudClient("http://localhost//k3cloud/"); |
| | | |
| | | public override void DataChanged(DataChangedEventArgs e) |
| | | { |
| | | base.DataChanged(e); |
| | | var model = this.View.Model; |
| | | double FHQty = Convert.ToDouble(model.GetValue("FHQty")); |
| | | if (e.Field.Key.Contains("FUseRateNew")) |
| | | { |
| | | if (e.OldValue == e.NewValue) |
| | | return; |
| | | var m = e.Row; |
| | | double FNumerator = Convert.ToDouble(model.GetValue("FNumerator", e.Row));//分子 |
| | | double FDenominator = Convert.ToDouble(model.GetValue("FDenominator", e.Row));//分母 |
| | | double FUseRateNew = Convert.ToDouble(model.GetValue("FUseRateNew", e.Row));//使用比例 |
| | | double Hqty; |
| | | if (FNumerator == 0 || FDenominator == 0) |
| | | { |
| | | Hqty = Math.Ceiling(FHQty * (FUseRateNew / 100)); |
| | | } |
| | | Hqty = Math.Ceiling((FNumerator / FDenominator) * FHQty * (FUseRateNew / 100)); |
| | | this.View.Model.SetValue("FHQtyMustNew", Hqty, e.Row);//新计划数量 |
| | | |
| | | |
| | | int FentryID = Convert.ToInt32(model.GetEntryPKValue("FEntity",e.Row));//明细表id |
| | | //查询同项次的序号 |
| | | string sql = |
| | | $"select top 1 FSEQ from Sc_DayPlanPPBomBillSubBG where FReplaceGroup in(select FReplaceGroup from Sc_DayPlanPPBomBillSubBG where FEntryID = {FentryID} )and FEntryID<> { FentryID} "; |
| | | int Fseq = DBServiceHelper.ExecuteScalar<int>(Context,sql,0); |
| | | if (Fseq > 0) { |
| | | this.View.Model.SetValue("FUseRateNew", 100 - FUseRateNew, Fseq - 1);//新计划数量 |
| | | } |
| | | } |
| | | if (e.Field.Key.Contains("FHQtyMustNew")) |
| | | { |
| | | if (e.OldValue == e.NewValue) |
| | | return; |
| | | var m = e.Row; |
| | | double FNumerator = Convert.ToDouble(model.GetValue("FNumerator", e.Row));//分子 |
| | | double FDenominator = Convert.ToDouble(model.GetValue("FDenominator", e.Row));//分母 |
| | | double FHQtyMustNew = Convert.ToDouble(model.GetValue("FHQtyMustNew", e.Row));//新计划数量 |
| | | double Hqty; |
| | | if (FNumerator == 0 || FDenominator == 0) |
| | | { |
| | | Hqty = Math.Ceiling(FHQtyMustNew / FHQty * 100); |
| | | } |
| | | Hqty = Math.Ceiling(FHQtyMustNew / ((FNumerator / FDenominator) * FHQty) * 100); |
| | | this.View.Model.SetValue("FUseRateNew", Hqty, e.Row);//新计划数量 |
| | | |
| | | int FentryID = Convert.ToInt32(model.GetEntryPKValue("FEntity", e.Row));//明细表id |
| | | //查询同项次的序号 |
| | | string sql = |
| | | $"select top 1 FSEQ from Sc_DayPlanPPBomBillSubBG where FReplaceGroup in(select FReplaceGroup from Sc_DayPlanPPBomBillSubBG where FEntryID = {FentryID} )and FEntryID<> { FentryID} "; |
| | | int Fseq = DBServiceHelper.ExecuteScalar<int>(Context, sql, 0); |
| | | if (Fseq > 0) |
| | | { |
| | | double FUseRateNew = Convert.ToDouble(model.GetValue("FUseRateNew", e.Row));//使用比例 |
| | | this.View.Model.SetValue("FUseRateNew", 100 - FUseRateNew, Fseq - 1);//新计划数量 |
| | | } |
| | | } |
| | | } |
| | | |
| | | //public override void BeforeSave(BeforeSaveEventArgs e) |
| | | //{ |
| | | // base.BeforeSave(e); |
| | | |
| | | // e.Cancel = true; |
| | | //} |
| | | } |
| | | } |
| | | |
| New file |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using Kingdee.BOS.Util; |
| | | using Kingdee.BOS.Core.Metadata; |
| | | using Kingdee.BOS.Core.Metadata.EntityElement; |
| | | using Kingdee.BOS.Core.DynamicForm.PlugIn; |
| | | using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; |
| | | using Kingdee.BOS.Orm.DataEntity; |
| | | using Kingdee.BOS.Contracts; |
| | | using Kingdee.BOS.App; |
| | | using Kingdee.BOS.Core.Metadata.FieldElement; |
| | | using System.ComponentModel; |
| | | using Kingdee.BOS.ServiceHelper; |
| | | using Kingdee.K3.SCM.App; |
| | | using ZD.Cloud.Logger; |
| | | |
| | | namespace Demo.DynamicForm.PRD |
| | | { |
| | | [Description("[日计划用料清单变更-反审核]按钮功能]")] |
| | | [HotUpdate] |
| | | public class Pro_RJHYLQDBGFSH : AbstractOperationServicePlugIn |
| | | { |
| | | public override void OnPreparePropertys(PreparePropertysEventArgs e) |
| | | { |
| | | base.OnPreparePropertys(e); |
| | | e.FieldKeys.Add("FSrcBillType"); |
| | | e.FieldKeys.Add("FSrcBillNo"); |
| | | e.FieldKeys.Add("FBillNo"); |
| | | e.FieldKeys.Add("FDayPlanId"); |
| | | e.FieldKeys.Add("FDayPlanFentryId"); |
| | | e.FieldKeys.Add("FHQtyMust"); |
| | | e.FieldKeys.Add("FHQtyMustNew"); |
| | | e.FieldKeys.Add("FUseRate"); |
| | | e.FieldKeys.Add("FUseRateNew"); |
| | | e.FieldKeys.Add("FHPPBomEntryID"); |
| | | e.FieldKeys.Add("FDwyl"); |
| | | } |
| | | /// <summary> |
| | | ///审核更新日计划用料清单领料数量 |
| | | /// </summary> |
| | | /// <param name="e"></param> |
| | | public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e) |
| | | { |
| | | base.AfterExecuteOperationTransaction(e); |
| | | List<string> sqlList = new List<string>(); |
| | | string sql = ""; |
| | | //审核时更新生产用料清单表明细领料数量 |
| | | Entity entity = this.BusinessInfo.GetEntity("FEntity");//获取明细信息 |
| | | foreach (var billObj in e.SelectedRows) |
| | | { |
| | | DynamicObjectCollection entryRows = entity.DynamicProperty.GetValue(billObj.DataEntity) |
| | | as DynamicObjectCollection; |
| | | foreach (var entryRow in entryRows) |
| | | { |
| | | string fDayPlanFentryId = entryRow["FDayPlanFentryId"].ToString(); |
| | | string fHQtyMust = entryRow["FHQtyMust"].ToString(); |
| | | string fUseRate = entryRow["FUseRate"].ToString(); |
| | | string fDwyl = entryRow["FDwyl"].ToString(); |
| | | string fHPPBomEntryID = entryRow["FHPPBomEntryID"].ToString(); |
| | | sql = string.Format($"/*dialect*/update Sc_DayPlanPPBomBillSub set FHQtyMust = {fHQtyMust},FUseRate = { fUseRate} where FEntryID ={fDayPlanFentryId} "); |
| | | sqlList.Add(sql); |
| | | sql = string.Format(@"/*dialect*/ |
| | | update T_PRD_PPBOMENTRY set |
| | | FBASENEEDQTY = c.FHQtyMust, |
| | | FBASEMUSTQTY = c.FHQtyMust, |
| | | FSTDQTY = c.FHQtyMust, |
| | | FNEEDQTY = c.FHQtyMust, |
| | | FMUSTQTY = c.FHQtyMust, |
| | | FUSERATE = (c.FHQtyMust / {0} / b.FQTY *100) |
| | | from T_PRD_PPBOMENTRY a |
| | | join T_PRD_PPBOM b on a.FID=b.FID |
| | | join (select sum(FHQtyMust) FHQtyMust,FHPPBomEntryID from Sc_DayPlanPPBomBillSub where FHPPBomEntryID = {1} group by FHPPBomEntryID) c on a.FENTRYID=c.FHPPBomEntryID |
| | | where a.FENTRYID = {1}", fDwyl, fHPPBomEntryID); |
| | | sqlList.Add(sql); |
| | | sql = string.Format(@"/*dialect*/ |
| | | update T_PRD_PPBOMENTRY_Q set |
| | | FNOPICKEDQTY = b.FMUSTQTY - a.FPICKEDQTY, |
| | | FBASENOPICKEDQTY = b.FMUSTQTY - a.FPICKEDQTY |
| | | from T_PRD_PPBOMENTRY_Q a |
| | | join T_PRD_PPBOMENTRY b on a.FENTRYID=b.FENTRYID |
| | | where a.FENTRYID = {0} |
| | | ", fHPPBomEntryID); |
| | | sqlList.Add(sql); |
| | | } |
| | | } |
| | | DBServiceHelper.ExecuteBatch(Context, sqlList); |
| | | } |
| | | } |
| | | } |
| New file |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using Kingdee.BOS.Util; |
| | | using Kingdee.BOS.Core.Metadata; |
| | | using Kingdee.BOS.Core.Metadata.EntityElement; |
| | | using Kingdee.BOS.Core.DynamicForm.PlugIn; |
| | | using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; |
| | | using Kingdee.BOS.Orm.DataEntity; |
| | | using Kingdee.BOS.Contracts; |
| | | using Kingdee.BOS.App; |
| | | using Kingdee.BOS.Core.Metadata.FieldElement; |
| | | using System.ComponentModel; |
| | | using Kingdee.BOS.ServiceHelper; |
| | | using Kingdee.K3.SCM.App; |
| | | using ZD.Cloud.Logger; |
| | | |
| | | namespace Demo.DynamicForm.PRD |
| | | { |
| | | [Description("[日计划用料清单变更-审核]按钮功能]")] |
| | | [HotUpdate] |
| | | public class Pro_RJHYLQDBGSH : AbstractOperationServicePlugIn |
| | | { |
| | | public override void OnPreparePropertys(PreparePropertysEventArgs e) |
| | | { |
| | | base.OnPreparePropertys(e); |
| | | e.FieldKeys.Add("FSrcBillType"); |
| | | e.FieldKeys.Add("FSrcBillNo"); |
| | | e.FieldKeys.Add("FBillNo"); |
| | | e.FieldKeys.Add("FDayPlanId"); |
| | | e.FieldKeys.Add("FDayPlanFentryId"); |
| | | e.FieldKeys.Add("FHQtyMust"); |
| | | e.FieldKeys.Add("FHQtyMustNew"); |
| | | e.FieldKeys.Add("FUseRate"); |
| | | e.FieldKeys.Add("FUseRateNew"); |
| | | e.FieldKeys.Add("FHPPBomEntryID"); |
| | | e.FieldKeys.Add("FDwyl"); |
| | | } |
| | | /// <summary> |
| | | ///审核更新日计划用料清单领料数量 |
| | | /// </summary> |
| | | /// <param name="e"></param> |
| | | public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e) |
| | | { |
| | | base.AfterExecuteOperationTransaction(e); |
| | | List<string> sqlList = new List<string>(); |
| | | string sql = ""; |
| | | //审核时更新生产用料清单表明细领料数量 |
| | | Entity entity = this.BusinessInfo.GetEntity("FEntity");//获取明细信息 |
| | | foreach (var billObj in e.SelectedRows) |
| | | { |
| | | DynamicObjectCollection entryRows = entity.DynamicProperty.GetValue(billObj.DataEntity) |
| | | as DynamicObjectCollection; |
| | | foreach (var entryRow in entryRows) |
| | | { |
| | | string fDayPlanFentryId = entryRow["FDayPlanFentryId"].ToString(); |
| | | string fHQtyMustNew = entryRow["FHQtyMustNew"].ToString(); |
| | | string fUseRateNew = entryRow["FUseRateNew"].ToString(); |
| | | string fDwyl = entryRow["FDwyl"].ToString(); |
| | | string fHPPBomEntryID = entryRow["FHPPBomEntryID"].ToString(); |
| | | if (fHQtyMustNew == "0") |
| | | continue; |
| | | sql = string.Format($"/*dialect*/update Sc_DayPlanPPBomBillSub set FHQtyMust = {fHQtyMustNew},FUseRate = { fUseRateNew} where FEntryID ={fDayPlanFentryId} "); |
| | | sqlList.Add(sql); |
| | | sql = string.Format(@"/*dialect*/ |
| | | update T_PRD_PPBOMENTRY set |
| | | FBASENEEDQTY = c.FHQtyMust, |
| | | FBASEMUSTQTY = c.FHQtyMust, |
| | | FSTDQTY = c.FHQtyMust, |
| | | FNEEDQTY = c.FHQtyMust, |
| | | FMUSTQTY = c.FHQtyMust, |
| | | FUSERATE = (c.FHQtyMust / {0} / b.FQTY *100) |
| | | from T_PRD_PPBOMENTRY a |
| | | join T_PRD_PPBOM b on a.FID=b.FID |
| | | join (select sum(FHQtyMust) FHQtyMust,FHPPBomEntryID from Sc_DayPlanPPBomBillSub where FHPPBomEntryID = {1} group by FHPPBomEntryID) c on a.FENTRYID=c.FHPPBomEntryID |
| | | where a.FENTRYID = {1}", fDwyl, fHPPBomEntryID); |
| | | sqlList.Add(sql); |
| | | sql = string.Format(@"/*dialect*/ |
| | | update T_PRD_PPBOMENTRY_Q set |
| | | FNOPICKEDQTY = b.FMUSTQTY - a.FPICKEDQTY, |
| | | FBASENOPICKEDQTY = b.FMUSTQTY - a.FPICKEDQTY |
| | | from T_PRD_PPBOMENTRY_Q a |
| | | join T_PRD_PPBOMENTRY b on a.FENTRYID=b.FENTRYID |
| | | where a.FENTRYID = {0} |
| | | ", fHPPBomEntryID); |
| | | sqlList.Add(sql); |
| | | } |
| | | } |
| | | DBServiceHelper.ExecuteBatch(Context, sqlList); |
| | | } |
| | | } |
| | | } |
| | |
| | | var model = this.View.Model; |
| | | double FHQty = Convert.ToDouble(model.GetValue("FHQty")); |
| | | //分子 |
| | | if (e.Field.Key.Contains("FNumerator") || e.Field.Key.Contains("FDenominator")) |
| | | if (e.Field.Key.Contains("FNumerator") || e.Field.Key.Contains("FDenominator") || e.Field.Key.Contains("FUseRate")) |
| | | { |
| | | double FNumerator = Convert.ToDouble(model.GetValue("FNumerator", e.Row));//分子 |
| | | double FDenominator = Convert.ToDouble(model.GetValue("FDenominator", e.Row));//分母 |
| | | double FUseRate = Convert.ToDouble(model.GetValue("FUseRate", e.Row));//使用比例 |
| | | if (FNumerator == 0 || FDenominator == 0) |
| | | return; |
| | | var Hqty = Math.Ceiling((FNumerator / FDenominator) * FHQty); |
| | | var Hqty = Math.Ceiling((FNumerator / FDenominator) * FHQty * (FUseRate / 100)); |
| | | this.View.Model.SetValue("FHQtySub", Hqty, e.Row);//计划数量 |
| | | this.View.Model.SetValue("FHQtyMust", Hqty, e.Row);//应发数量 |
| | | this.View.Model.SetValue("FDwyl", FNumerator / FDenominator, e.Row);//单位用量 |
| | | |
| | | |
| | | } |
| | | |
| | | |