This commit is contained in:
2025-08-27 19:26:53 +08:00
parent 9979f006e0
commit 2066763c90
44 changed files with 488 additions and 0 deletions

View File

@@ -0,0 +1,85 @@
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.List.PlugIn;
using Kingdee.BOS.Util;
using Kingdee.K3.SCM.Common.BusinessEntity.Sales;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.Bill.PlugIn.Args;
using static System.Net.WebRequestMethods;
using Newtonsoft.Json;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS;
namespace NoPackageMachine
{
[Description("销售订单列表获取裸机信息#列表插件:审核后获取单据体中成品编码下的裸机信息"), HotUpdate]
public class GetSingleLuoJi : AbstractOperationServicePlugIn
{
public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e)
{
base.BeforeExecuteOperationTransaction(e);
var formId = this.BusinessInfo.GetForm().Id;
try
{
// 获取销售订单信息
foreach (var entry in e.DataEntitys)
{
var s = JsonConvert.SerializeObject(entry);
var order = JsonConvert.DeserializeObject<SalOrderModel>(s);
foreach (var item in order.SaleOrderEntry)
{
string sql = string.Format("/*dialect*/select m0.FNUMBER PMaterialCode,m.FMATERIALID,m.FNUMBER MaterialCode,t.FSPECIFICATION FModel,sum(isnull(i.FBASEQTY,0)) AS Qty from T_ENG_BOM a left jOIN T_ORG_ORGANIZATIONS O ON O.FORGID = a.FUSEORGID " +
"left join T_ENG_BOMCHILD b on a.FID=b.FID " +
"left join T_BD_MATERIAL m0 on m0.FMATERIALID=a.FMATERIALID " +
"left join T_BD_MATERIAL m on m.FMATERIALID=b.FMATERIALID " +
"left join T_BD_MATERIAL_L t on t.FMATERIALID=m.FMATERIALID " +
"left join T_BD_MATERIALBASE s on s.FMATERIALID=m.FMATERIALID " +
"left join t_BD_MaterialStock ms on ms.fmaterialid=m.fmaterialid " +
"left join T_STK_INVENTORY i on i.FMATERIALID=m.FMASTERID and i.fstockorgid=m0.fuseorgid " +
"left JOIN T_BD_Stock invSIC ON invSIC.FSTOCKID = i.FSTOCKID " +
"left JOIN T_BD_Stock SIC ON SIC.FSTOCKID = ms.FSTOCKID " +
"where a.FDOCUMENTSTATUS='C' and a.FFORBIDSTATUS='A' and O.fnumber='PL' and m0.FMATERIALID='{0}' and (m.fnumber like 'N.%' or m.fnumber like 'M.%') group by m0.FNUMBER,m.FNUMBER,t.FSPECIFICATION,m.FMATERIALID", item.MaterialId_Id);
var data = DBServiceHelper.ExecuteDynamicObject(this.Context, sql);
if (data != null && data.Count > 0)
{
if (formId == "SAL_SaleOrder")
{
if (data.Count > 1)
{
sql = string.Format("/*dialect*/update t_sal_orderentry set F_ISLUOJI='是' where FENTRYID={0}", item.Id);
}
else
{
sql = string.Format("/*dialect*/update t_sal_orderentry set F_ISLUOJI='否',F_LJBM='{0}',F_LUOJIDESC='{1}' where FENTRYID={2}", data[0]["FMATERIALID"].ToString(), data[0]["FModel"].ToString(), item.Id);
}
}
else
{
if (data.Count > 1)
{
sql = string.Format("/*dialect*/update t_sal_xorderentry set F_ISLUOJI='是' where FENTRYID={0}", item.Id);
}
else
{
sql = string.Format("/*dialect*/update t_sal_xorderentry set F_ISLUOJI='否',F_LJBM='{0}',F_LUOJIDESC='{1}' where FENTRYID={2}", data[0]["FMATERIALID"].ToString(), data[0]["FModel"].ToString(), item.Id);
}
}
DBServiceHelper.Execute(this.Context, sql);
}
}
}
}
catch(Exception ex)
{
throw new KDBusinessException("",ex.Message);
}
}
}
}

View File

@@ -0,0 +1,53 @@
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.List;
using Kingdee.BOS.Core.List.PlugIn;
using Kingdee.BOS.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Kingdee.BOS.Core.Metadata.EntityElement;
using Kingdee.BOS.Orm.DataEntity;
namespace NoPackageMachine
{
[Description("销售订单获取裸机信息#按钮列表插件:点击按钮显示裸机信息动态表单"), HotUpdate]
public class GetSonMachines: AbstractListPlugIn
{
public override void BarItemClick(BarItemClickEventArgs e)
{
base.BarItemClick(e);
if (e.BarItemKey.EqualsIgnoreCase("LJBM_tbButton"))
{
//获取选中行
var listView = this.View as IListView;
var selectedRows = listView.SelectedRowsInfo;
if (selectedRows == null || selectedRows.Count == 0)
{
this.View.ShowMessage("列表中的销售订单没有被选中");
return;
}
if (selectedRows.Count > 1)
{
this.View.ShowMessage("列表中的销售订单不能多选");
return;
}
var materialID = selectedRows.Select(c => c.DataRow["FMaterialId_Id"]).ToList()[0].ToString();
//var Params = string.Join(",", number);
DynamicFormShowParameter parameter = new DynamicFormShowParameter();
parameter.OpenStyle.ShowType = ShowType.Floating;
//选择需要打开的窗体FID
parameter.FormId = "VRYF_LJBM_FORM"; //YKQC_LJBM_FORM 测试环境
parameter.MultiSelect = false;
//获取的FID以字符串发送到输出的窗体
parameter.CustomComplexParams.Add("EntryPrimaryKeys", materialID);
this.View.ShowForm(parameter);
}
}
}
}

View File

@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace NoPackageMachine
{
public class SalOrderEntryModel
{
public int FID { get; set; }
public int Id { get; set; }
public int MaterialId_Id { get; set; }
}
}

View File

@@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace NoPackageMachine
{
public class SalOrderModel
{
public int Id { get; set; }
public string FBILLNO { get; set; }
public string F_CONTRACTNUMBER { get; set; }
public List<SalOrderEntryModel> SaleOrderEntry = new List<SalOrderEntryModel>();
}
}

View File

@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace NoPackageMachine
{
public class SonMachine
{
public int RowNum { get; set; }
public string PMaterialCode { get; set; }
public string MaterialCode { get; set; }
public string FModel { get; set; }
public decimal Qty { get; set; }
}
}

View File

@@ -0,0 +1,156 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{9788649F-42E6-4687-A1BF-5064CF806553}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>NoPackageMachine</RootNamespace>
<AssemblyName>NoPackageMachine</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="EZ.DB">
<HintPath>..\Component\EZ.DB.dll</HintPath>
</Reference>
<Reference Include="K3Cloud.WebApi.Client">
<HintPath>..\Component\K3Cloud.WebApi.Client.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS">
<HintPath>..\Component\Kingdee.BOS.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.App">
<HintPath>..\Component\Kingdee.BOS.App.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.App.Core">
<HintPath>..\Component\Kingdee.BOS.App.Core.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.ApprovalFlow.PlugIns">
<HintPath>..\Component\Kingdee.BOS.ApprovalFlow.PlugIns.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.BusinessEntity">
<HintPath>..\Component\Kingdee.BOS.BusinessEntity.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.Contracts">
<HintPath>..\Component\Kingdee.BOS.Contracts.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.Core">
<HintPath>..\Component\Kingdee.BOS.Core.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.DataEntity">
<HintPath>..\Component\Kingdee.BOS.DataEntity.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.ServiceHelper">
<HintPath>..\Component\Kingdee.BOS.ServiceHelper.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.VerificationHelper">
<HintPath>..\Component\Kingdee.BOS.VerificationHelper.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.Web">
<HintPath>..\Component\Kingdee.BOS.Web.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.WebApi.Client">
<HintPath>..\Component\Kingdee.BOS.WebApi.Client.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.WebApi.FormService">
<HintPath>..\Component\Kingdee.BOS.WebApi.FormService.dll</HintPath>
</Reference>
<Reference Include="Kingdee.BOS.WebApi.ServicesStub">
<HintPath>..\Component\Kingdee.BOS.WebApi.ServicesStub.dll</HintPath>
</Reference>
<Reference Include="Kingdee.K3.Core">
<HintPath>..\Component\Kingdee.K3.Core.dll</HintPath>
</Reference>
<Reference Include="Kingdee.K3.FIN.App.Core">
<HintPath>..\Component\Kingdee.K3.FIN.App.Core.dll</HintPath>
</Reference>
<Reference Include="Kingdee.K3.FIN.CB.App.Report">
<HintPath>..\Component\Kingdee.K3.FIN.CB.App.Report.dll</HintPath>
</Reference>
<Reference Include="Kingdee.K3.FIN.HS.App.Report">
<HintPath>..\Component\Kingdee.K3.FIN.HS.App.Report.dll</HintPath>
</Reference>
<Reference Include="Kingdee.K3.MFG.App">
<HintPath>..\Component\Kingdee.K3.MFG.App.dll</HintPath>
</Reference>
<Reference Include="Kingdee.K3.MFG.PLN.App.MrpModel">
<HintPath>..\Component\Kingdee.K3.MFG.PLN.App.MrpModel.dll</HintPath>
</Reference>
<Reference Include="Kingdee.K3.SCM.App">
<HintPath>..\Component\Kingdee.K3.SCM.App.dll</HintPath>
</Reference>
<Reference Include="Kingdee.K3.SCM.App.Core">
<HintPath>..\Component\Kingdee.K3.SCM.App.Core.dll</HintPath>
</Reference>
<Reference Include="Kingdee.K3.SCM.App.Credit.Core">
<HintPath>..\Component\Kingdee.K3.SCM.App.Credit.Core.dll</HintPath>
</Reference>
<Reference Include="Kingdee.K3.SCM.App.Sal.ServicePlugIn">
<HintPath>..\Component\Kingdee.K3.SCM.App.Sal.ServicePlugIn.dll</HintPath>
</Reference>
<Reference Include="Kingdee.K3.SCM.App.Stock.Report">
<HintPath>..\Component\Kingdee.K3.SCM.App.Stock.Report.dll</HintPath>
</Reference>
<Reference Include="Kingdee.K3.SCM.Business">
<HintPath>..\Component\Kingdee.K3.SCM.Business.dll</HintPath>
</Reference>
<Reference Include="Kingdee.K3.SCM.Common.BusinessEntity">
<HintPath>..\Component\Kingdee.K3.SCM.Common.BusinessEntity.dll</HintPath>
</Reference>
<Reference Include="Kingdee.K3.SCM.Contracts">
<HintPath>..\Component\Kingdee.K3.SCM.Contracts.dll</HintPath>
</Reference>
<Reference Include="Kingdee.K3.SCM.Core">
<HintPath>..\Component\Kingdee.K3.SCM.Core.dll</HintPath>
</Reference>
<Reference Include="Kingdee.K3.SCM.ServiceHelper">
<HintPath>..\Component\Kingdee.K3.SCM.ServiceHelper.dll</HintPath>
</Reference>
<Reference Include="Kingdee.K3.SCM.Stock.Business.PlugIn">
<HintPath>..\Component\Kingdee.K3.SCM.Stock.Business.PlugIn.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="GetSingleLuoJi.cs" />
<Compile Include="GetSonMachines.cs" />
<Compile Include="Model\SalOrderEntryModel.cs" />
<Compile Include="Model\SalOrderModel.cs" />
<Compile Include="NoPackageMaterialForm.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Model\SonMachine.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@@ -0,0 +1,58 @@
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.List;
using Kingdee.BOS.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using Kingdee.BOS.ServiceHelper;
using System.Threading.Tasks;
namespace NoPackageMachine
{
[Description("动态窗口插件:获取产品的裸机编码和库存"), HotUpdate]
public class NoPackageMaterialForm: AbstractDynamicFormPlugIn
{
string ListFidS = null;
public override void OnLoad(EventArgs e)
{
base.OnLoad(e);
//接受传输的值
ListFidS = Convert.ToString(this.View.OpenParameter.GetCustomParameter("EntryPrimaryKeys"));
string sql = string.Format("/*dialect*/select m0.FNUMBER PMaterialCode,m.FNUMBER MaterialCode,t.FSPECIFICATION FModel,sum(isnull(i.FBASEQTY,0)) AS Qty from T_ENG_BOM a left jOIN T_ORG_ORGANIZATIONS O ON O.FORGID = a.FUSEORGID " +
"left join T_ENG_BOMCHILD b on a.FID=b.FID " +
"left join T_BD_MATERIAL m0 on m0.FMATERIALID=a.FMATERIALID " +
"left join T_BD_MATERIAL m on m.FMATERIALID=b.FMATERIALID " +
"left join T_BD_MATERIAL_L t on t.FMATERIALID=m.FMATERIALID " +
"left join T_BD_MATERIALBASE s on s.FMATERIALID=m.FMATERIALID " +
"left join t_BD_MaterialStock ms on ms.fmaterialid=m.fmaterialid " +
"left join T_STK_INVENTORY i on i.FMATERIALID=m.FMASTERID and i.fstockorgid=m0.fuseorgid " +
"left JOIN T_BD_Stock invSIC ON invSIC.FSTOCKID = i.FSTOCKID " +
"left JOIN T_BD_Stock SIC ON SIC.FSTOCKID = ms.FSTOCKID " +
"where a.FDOCUMENTSTATUS='C' and a.FFORBIDSTATUS='A' and O.fnumber='PL' and m0.FMATERIALID='{0}' and (m.fnumber like 'N.%' or m.fnumber like 'M.%') group by m0.FNUMBER,m.FNUMBER,t.FSPECIFICATION", ListFidS);
List<SonMachine> sonMachines = new List<SonMachine>();
//var result = DBServiceHelper.ExecuteScalar<List<SonMachine>>(this.Context, sql, sonMachines);
var data = DBServiceHelper.ExecuteDynamicObject(this.Context, sql);
int num = 0;
foreach (var one in data)
{
this.View.Model.SetValue("F_MaterialCode", one["MaterialCode"], num);
this.View.Model.SetValue("F_FModel", one["FModel"], num);
this.View.Model.SetValue("F_Qty", one["Qty"], num);
num++;
}
//foreach(SonMachine sonMachine in result)
//{
// //this.View.Model.SetValue("PMaterialCode", sonMachine.PMaterialCode, num);
// this.View.Model.SetValue("F_MaterialCode", sonMachine.MaterialCode, num);
// this.View.Model.SetValue("F_FModel", sonMachine.FModel, num);
// this.View.Model.SetValue("F_Qty", sonMachine.Qty, num);
// num++;
//}
}
}
}

View File

@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("NoPackageMachine")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("NoPackageMachine")]
[assembly: AssemblyCopyright("Copyright © 2025")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 会使此程序集中的类型
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
//请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("9788649f-42e6-4687-a1bf-5064cf806553")]
// 程序集的版本信息由下列四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]