This commit is contained in:
liqionghai 2025-09-19 17:05:27 +08:00
parent 90046c7165
commit edfda0c2ac
3 changed files with 443 additions and 0 deletions

View File

@ -46,6 +46,8 @@
<SpecificVersion>False</SpecificVersion>
<HintPath>dll\Aspose.Cells.dll</HintPath>
</Reference>
<Reference Include="DevExpress.Data.v17.2, Version=17.2.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Xpo.v17.2, Version=17.2.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DocumentFormat.OpenXml, Version=3.1.1.0, Culture=neutral, PublicKeyToken=8fb06cb64d019a17, processorArchitecture=MSIL">
<HintPath>packages\DocumentFormat.OpenXml.3.1.1\lib\net40\DocumentFormat.OpenXml.dll</HintPath>
</Reference>
@ -242,6 +244,7 @@
<Compile Include="Sal_Order\CreateItem.cs" />
<Compile Include="Sal_Order\CreateFolder.cs" />
<Compile Include="Sal_Order\Audit.cs" />
<Compile Include="Sal_Order\RePushInterface.cs" />
<Compile Include="Sal_Order\UPDATESpecialContracts.cs" />
<Compile Include="Sal_Order\Save.cs" />
<Compile Include="Sal_OutStock\AbstractOperationServicePlugIn.cs" />

View File

@ -532,5 +532,18 @@ namespace GZ_KD_Parino.SQL
var n = DBServiceHelper.Execute(ctx, sql.ToString(), param.ToList());
}
/// <summary>
/// 获取销保订单中的辅助资料代码
/// </summary>
/// <returns></returns>
public static DynamicObjectCollection GetSalOrderSub(Context ctx, string FID)
{
//定义SQL,调用物料视图
string sql = string.Format(@"/*dialect*/
SELECT * FROM v_SalOrderSub WHERE FId = '{0}' ", FID);
//执行SQL
return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null) as DynamicObjectCollection;
}
}
}

View File

@ -0,0 +1,427 @@
using GZ_KD_Parino.SQL;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Report;
using Kingdee.BOS.Core.Report.PlugIn;
using Kingdee.BOS.Log;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
namespace GZ_KD_Parino.Sal_Order
{
[Description("重推接口功能插件")]
public class RePushInterface : AbstractSysReportPlugIn
{
public override void BarItemClick(BarItemClickEventArgs e)
{
base.BarItemClick(e);
string text = e.BarItemKey.ToUpperInvariant();
if (text != null)
{
if ((text == "TBNPUSHAGAIN"))//tbnPushAgain 结果查询
{
SetRePushInterface();
}
}
}
private void SetRePushInterface()
{
try
{
//SelectRows = this.View.SelectedDataRows;
var view = this.View as ISQLReportView;
if (view.SelectedDataRows != null && view.SelectedDataRows.Length > 0)
{
// 获取选中行数据
DataRow[] selectedRows = view.SelectedDataRows;
// 遍历选中行
foreach (DataRow row in selectedRows)
{
// 获取指定列的值
//var sbillId = row["单据主键ID"];
var sType = row["方法"];
//状态
var sStatus = row["状态"];
if (!sStatus.Equals("成功")) //失败就需要重新推送
{
//销售订单--审核发送URL改变商机PMS阶段
if (sType.Equals("销售订单--审核发送URL改变商机PMS阶段"))
{
GetPMSInterface(row);
}
//销售订单--提交创建PMS htbaseinfo 对象
if (sType.Equals("提交创建PMS htbaseinfo 对象"))
{
GetHtbaseinfoInterface(row);
}
//销售订单--审核创建待分配项目
if (sType.Equals("销售订单--审核创建待分配项目"))
{
GetCreateItemInterface(row);
}
//销售订单--审核创建文档云文件夹
if (sType.Equals("销售订单--审核创建文档云文件夹"))
{
GetCreateFolderInterface(row);
}
//销售订单--审核创建BPM流程发起
if (sType.Equals("销售订单--审核创建BPM流程发起"))
{
GetCreateBPMInterface(row);
}
}
}
}
}
catch (Exception ex)
{
Logger.Error("重载接口完成", "重载接口 error:" + ex.Message + ex.StackTrace, ex);
throw ex;
}
}
//销售订单--审核发送URL改变商机PMS阶段
private void GetPMSInterface(DataRow dyObject)
{
//var key = SqlManage.SetDockingPLMLog(this.Context, "销售订单--审核发送URL改变商机PMS阶段", Convert.ToInt32(dyObject["单据主键ID"]));
var key = Guid.Parse(Convert.ToString(dyObject["主键"]));
try
{
////获取单据FID
//var SaleOrgId = dyObject["saleOrgId"] as DynamicObject;
//根据销售订单的FID获取商机字段CRMID
var data = SQL.SqlManage.GetF_BOMCRMID(this.Context, Convert.ToString(dyObject["单据主键ID"]));
string Token = "";
if (data.Count > 0)
{
/*API名称 Opportunity
* update
* id id
* jieduan= '5-' ,
* jdnew='5-'
*/
var json = new
{
id = data[0]["F_CRMID"],//销售订单上商机名称的CRMID字段
jieduan = "5-商机赢单",
jdnew = "5-商机赢单"
};
//调用PMS接口
Token = Common.CommonHelper.PMSLogin(data, this.Context, JsonConvert.SerializeObject(json), "Opportunity", Convert.ToInt32(dyObject["单据主键ID"]));
if (Token != "")
{
//发送修改请求更改PMS商机阶段
var Resultstring = Common.CommonHelper.UpdateF_BOM(data, this.Context, JsonConvert.SerializeObject(json), "Opportunity", Token, Convert.ToInt32(dyObject["单据主键ID"]));
SQL.SqlManage.UpdateAuditF_VRYF_CheckBox_apv(this.Context, Convert.ToString(dyObject["单据主键ID"]));
}
}
//修改日志为成功
SqlManage.UpdateDockingPLMLog(this.Context, key, "100", "", Token, Convert.ToString(dyObject["单据主键ID"]), "更改PMS商机阶段", "插件日志");
//}
}
catch (Exception ex)
{
//修改日志为异常
SqlManage.UpdateDockingPLMLog(this.Context, key, "4", ex.Message, "", Convert.ToString(dyObject["单据主键ID"]), "更改PMS商机阶段", "插件日志");
}
}
//销售订单--提交创建PMS htbaseinfo 对象
private void GetHtbaseinfoInterface(DataRow Billobj)
{
string Resultstring = "";
var key = Guid.Parse(Convert.ToString(Billobj["主键"]));
//var key = SqlManage.SetDockingPLMLog(this.Context, "提交创建PMS htbaseinfo对象", Convert.ToInt32(Billobj["单据主键ID"]));
try
{
if (Convert.ToInt64(Billobj["销售组织"]) == 100302)//100302
{
//获取销售订单数据
var data = SqlManage.GetSaleOrderData3(this.Context, Convert.ToString(Billobj["单据主键ID"]));
if (data.Count > 0)
{
var Json = new
{
name = data[0]["纸质合同号"],// 销售订单纸质合同号
khmc = data[0]["客户名称"],// 销售订单客户名称
ddbh = data[0]["单据编号"],//销售订单单据编号
xmmc = data[0]["工程项目名称"],// 销售订单工程项目名称
ywy = data[0]["业务员"], //销售订单销售业务员名称
sj = data[0]["商机"],//销售订单商机FID
htje = data[0]["金额"],//销售订单财务明细的价税合计(本位币)
sjid = data[0]["商机ID"],//销售订单上商机的值
zzbm = data[0]["组织编码"] //销售订单销售组织的组织编码
};
//调用PMS接口
var Token = Common.CommonHelper.PMSLogin(data, this.Context, JsonConvert.SerializeObject(Json), "htbaseinfo", Convert.ToInt32(Billobj["单据主键ID"]));
if (Token != "")
{
Resultstring = Common.CommonHelper.PushPMSItem(data, this.Context, JsonConvert.SerializeObject(Json), "htbaseinfo", Token, Convert.ToInt32(Billobj["单据主键ID"]));
//预防二次提交
SqlManage.UpdateSubmitF_VRYF_CheckBox_re5(this.Context, Convert.ToString(Billobj["单据主键ID"]));
}
}
}
//修改日志为成功
SqlManage.UpdateDockingPLMLog(this.Context, key, "100", "", Resultstring, Convert.ToString(Billobj["单据主键ID"]), "PMS合同基本信息", "插件日志");
}
catch (Exception ex)
{
//修改日志为异常
SqlManage.UpdateDockingPLMLog(this.Context, key, "4", ex.Message, "", Convert.ToString(Billobj["单据主键ID"]), "PMS合同基本信息", "插件日志");
}
//}
}
//销售订单--审核创建待分配项目
private void GetCreateItemInterface(DataRow Billobj)
{
var key = Guid.Parse(Convert.ToString(Billobj["主键"]));
//var key = SqlManage.SetDockingPLMLog(this.Context, "销售订单--审核创建待分配项目", Convert.ToInt32(Billobj["单据主键ID"]));
try
{
//if (Convert.ToString(SaleOrgId["Number"]) == "PL")
if (Convert.ToInt64(Billobj["销售组织"]) == 100302)//100302
{
//var key = SqlManage.SetDockingPLMLog(this.Context, "销售订单--审核创建待分配项目", Convert.ToInt32(Billobj["Id"]));
List<string> FOrdercategoryList = new List<string>() { "SX", "CS", "W", "CW", "CY" };
string sOrdercategory = "";//获取订单类型编码
var dt = SqlManage.GetSalOrderSub(this.Context, Convert.ToString(Billobj["单据主键ID"]));
if (dt.Count > 0)
{
foreach (var item in dt)
{
//获取订单类型编码
sOrdercategory = Convert.ToString(item["FNumber"]);
}
}
////获取单据FID
//var Billno = Convert.ToString(Billobj["Billno"]);
////获取日期
//var FDate = Convert.ToDateTime(Billobj["Date"]);
////FID
//var FID = Convert.ToString(Billobj["id"]);
//获取订单类型编码
//DynamicObject F_Ordercategory = Billobj["F_Ordercategory"] as DynamicObject;
//获取销售订单数据
var data = SqlManage.GetSaleOrderData3_LTH(this.Context, Convert.ToString(Billobj["单据主键ID"]));
string Token = "";
if (data.Count > 0)
{
var Json = new
{
sj = data[0]["商机ID"],// 销售订单商机对应到基础档案的crm商机ID 值
bumen = data[0]["部门名称"],// 销售订单销售部门名称
sjname = data[0]["工程项目名称"],//销售订单工程项目名称
xsrymc = data[0]["业务员"],//销售订单 业务员名称
htcjrzh = data[0]["Bpm账号"],//商务人员bpm账号
yflxr = data[0]["业务员"],//销售订单 业务员名称
htmc = data[0]["工程项目名称"],//销售订单工程项目名称
khmcname = data[0]["客户名称"],//销售订单客户名称
htbh = data[0]["纸质合同号"],//纸质合同号
htcjsj = data[0]["日期"],//销售订单业务日期
htje = data[0]["价税合计"],//销售订单价税合计
xmzlcfdz = data[0]["项目盒子路径值"],//销售订单项目盒子路径值
//xmzlcfdz = "",//销售订单项目盒子路径值
sfjc = data[0]["是否集采项目"]//是否集采项目
};
try
{
Token = Common.CommonHelper.PMSLogin(data, this.Context, JsonConvert.SerializeObject(Json), "xmfpb", Convert.ToInt32(Billobj["单据主键ID"]));
var Resultstring = Common.CommonHelper.PushPMSItem(data, this.Context, JsonConvert.SerializeObject(Json), "xmfpb", Token, Convert.ToInt32(Billobj["单据主键ID"]));
var Result = (JObject)JsonConvert.DeserializeObject(Resultstring);//获取binding
if (Convert.ToString(Result["returnCode"]) == "-2")
{
Common.CommonHelper.PushPMSItem(data, this.Context, JsonConvert.SerializeObject(Json), "xmfpb", Token, Convert.ToInt32(Billobj["单据主键ID"]));
//预防二次提交
SqlManage.UpdateSubmitF_XMYSB(this.Context, Convert.ToString(Billobj["单据主键ID"]));
}
}
catch (Exception ex)
{
Logger.Error("报错", ex.Message, ex);
}
}
if (FOrdercategoryList.Contains(sOrdercategory))
{
if (data.Count > 0)
{
var Json = new
{
sfdr = data[0]["是否导入"],// 是否导入
htqdrq = data[0]["日期"],// 销售订单业务日期
htbh = data[0]["纸质合同号"],//销售订单纸质合同号
xmmc = data[0]["工程项目名称"],// 销售订单工程项目名称
htje = data[0]["价税合计"],// 销售订单价税合计
htjf = data[0]["业务员"],// 销售订单客户名称
name = data[0]["客户名称"],//销售订单工程项目名称
htlxr = data[0]["利润率"],// 销售订单利润率
createbyid = data[0]["createbyid"],//"005201301273691NMUvx" 固定值
ownerid = data[0]["ownerid"],//"005201301273691NMUvx" 固定值
};
try
{
Token = Common.CommonHelper.PMSLogin(data, this.Context, JsonConvert.SerializeObject(Json), "otherItem", Convert.ToInt32(Billobj["单据主键ID"]));
var Resultstring = Common.CommonHelper.PushPMSItem(data, this.Context, JsonConvert.SerializeObject(Json), "otherItem", Token, Convert.ToInt32(Billobj["单据主键ID"]));
var Result = (JObject)JsonConvert.DeserializeObject(Resultstring);//获取binding
if (Convert.ToString(Result["returnCode"]) == "-2")
{
Common.CommonHelper.PushPMSItem(data, this.Context, JsonConvert.SerializeObject(Json), "otherItem", Token, Convert.ToInt32(Billobj["单据主键ID"]));
}
}
catch (Exception ex)
{
Logger.Error("报错", ex.Message, ex);
}
}
}
}
//修改日志为成功
SqlManage.UpdateDockingPLMLog(this.Context, key, "100", "", "", Convert.ToString(Billobj["单据主键ID"]), "PMS项目分配表,PMS系统项目资料检索表", "插件日志");
}
catch (Exception ex)
{
//修改日志为异常
SqlManage.UpdateDockingPLMLog(this.Context, key, "4", ex.Message, "", Convert.ToString(Billobj["单据主键ID"]), "PMS项目分配表,PMS系统项目资料检索表", "插件日志");
}
}
//销售订单--审核创建文档云文件夹
private void GetCreateFolderInterface(DataRow Billobj)
{
var FOrderTypeList = new List<string>() { "CS", "CW", "CY", "W", "S", "SX", "ES" };
string sOrdercategory = "";//获取订单类型编码
var key = Guid.Parse(Convert.ToString(Billobj["主键"]));
//var key = SqlManage.SetDockingPLMLog(this.Context, "审核创建文档云文件夹", Convert.ToInt32(Billobj["单据主键ID"]));
try
{
//if (Convert.ToString(SaleOrgId["Number"]) == "PL")
if (Convert.ToInt64(Billobj["销售组织"]) == 100302)//100302
{
var dt = SqlManage.GetSalOrderSub(this.Context, Convert.ToString(Billobj["单据主键ID"]));
if (dt.Count > 0)
{
foreach (var item in dt)
{
//获取订单类型编码
sOrdercategory = Convert.ToString(item["FNumber"]);
}
}
if (FOrderTypeList.Contains(sOrdercategory))
{
//获取单据FID
var Billno = Convert.ToString(Billobj["Billno"]);
//获取日期
var FDate = Convert.ToDateTime(Billobj["Date"]);
//FID
var FID = Convert.ToString(Billobj["id"]);
//文件名
string FolderName = "AAA";
//获取FolderName
FolderName = SQL.SqlManage.GetFolderName(this.Context, FID);
var Token = Common.CommonHelper.UserLogin(this.Context, string.Format(@"D:\Api日志\{3}\创建文件夹\{0}\{1}\获取Token\{2}.txt",
Billno, FolderName, DateTime.Now.ToString("yyyyMMddHHmmss"), this.Context.DataCenterName), Convert.ToInt32(Billobj["单据主键ID"]));
if (Token != "")
{
//获取文件夹
var FolderId = Common.CommonHelper.GetFolderInfoByNamePath(Token, string.Format(@"1\珠海派诺科技股份有限公司\001-派诺科技项目资料\{0}年项目\", FDate.Year),
string.Format(@"D:\Api日志\{3}\创建文件夹\{0}\{1}\获取文件夹Id\{2}.txt",
Billno, FolderName, DateTime.Now.ToString("yyyyMMddHHmmssfff"), this.Context.DataCenterName), this.Context, Convert.ToInt32(Billobj["单据主键ID"]));
//父项文件夹不存在
if (FolderId == "")
{
//获取文件夹
FolderId = Common.CommonHelper.GetFolderInfoByNamePath(Token, string.Format(@"1\珠海派诺科技股份有限公司\001-派诺科技项目资料\"),
string.Format(@"D:\Api日志\{3}\创建文件夹\{0}\{1}\获取文件夹Id\{2}.txt",
Billno, FolderName, DateTime.Now.ToString("yyyyMMddHHmmssfff"), this.Context.DataCenterName), this.Context, Convert.ToInt32(Billobj["单据主键ID"]));
//创建父项文件夹
FolderId = Common.CommonHelper.CreateFolder(Token, FolderId, string.Format("{0}年项目", FDate.Year), string.Format(@"D:\Api日志\{3}\创建文件夹\{0}\{1}\创建文件夹\{2}.txt",
Billno, FolderName, DateTime.Now.ToString("yyyyMMddHHmmssfff"), this.Context.DataCenterName), this.Context, Convert.ToInt32(Billobj["单据主键ID"]));
}
// string FolderId2 = "";
// //获取文件夹
// FolderId2 = Common.CommonHelper.GetFolderInfoByNamePath(Token, string.Format(@"1\珠海派诺科技股份有限公司\001-派诺科技项目资料\{0}年项目\{1}\", FDate.Year, FolderName),
// string.Format(@"D:\Api日志\{3}\创建文件夹\{0}\{1}\获取文件夹Id\{2}.txt",
//Billno, FolderName, DateTime.Now.ToString("yyyyMMddHHmmssfff"), this.Context.DataCenterName), this.Context);
//创建文件夹
string FolderId2 = Common.CommonHelper.CreateFolder(Token, FolderId, FolderName, string.Format(@"D:\Api日志\{3}\创建文件夹\{0}\{1}\创建文件夹\{2}.txt",
Billno, FolderName, DateTime.Now.ToString("yyyyMMddHHmmssfff"), this.Context.DataCenterName), this.Context, Convert.ToInt32(Billobj["单据主键ID"]));
//声明明细文件夹字段
Dictionary<string, List<string>> DIC = new Dictionary<string, List<string>>();
DIC.Add("A-商机至合同阶段", new List<string> { "A01-合同扫描件", "A02-技术方案资料", "A04-中标相关资料", "A05-其他资料" });
DIC.Add("B-实施准备阶段", new List<string> { "B01-项目需求分析", "B02-项目启动会议", "B03-施工组织计划", "B04-供货采购计划", "B05-成本管理计划", "B06-项目管理计划", "B07-施工方案", "B08-施工分包管理", "B09-施工布线指导", "B10-其他文件" });
DIC.Add("C-实施执行阶段", new List<string> { "C01-网络拓扑图", "C02-设计院成套厂图纸", "C03-机柜原理及结构图", "C04-深化施工平面图", "C05-项目设备点表", "C06-采集器配置备份", "C07-系统及数据库备份", "C08-第三方产品资料库", "C09-工程签证单", "C10-分项工程报验单", "C11-工程联络单", "C12-分包成本管理", "C13-整套竣工图纸", "C14-产品定制单", "C15-前最终施工图纸全套", "C16-报价工程量清单", "C17-项目交接单", "C18-注册码", "C19-机柜出厂测试报告", "C20-系统调试方案", "C21-项目日志", "C22-其他文件" });
DIC.Add("D-验收交付阶段", new List<string> { "D01-验收报告扫描件", "D02-设备调试记录报告", "D03-发货单(签字回单)", "D04-试运行或真实运行报告", "D05-审计结算资料", "D06-项目总结报告", "D07-遗留问题清单", "D08-说明书或操作手册", "D09-现场照片或界面截图", "D10-移交甲方的资料", "D11-其他文件" });
DIC.Add("E-验收后运维阶段", new List<string> { "E01-用户证明和客户评价文件", "E02-巡检报告", "E03-售后满意度调查表", "E04-现场更新资料备份", "E05-其他文件" });
if (FolderId2 != "")
{
//创建明细文件夹
foreach (var item in DIC)
{
//创建文件夹
string FolderId3 = Common.CommonHelper.CreateFolder(Token, FolderId2, item.Key, string.Format(@"D:\Api日志\{3}\创建文件夹\{0}\{1}\创建文件夹\{2}.txt",
Billno, FolderName, DateTime.Now.ToString("yyyyMMddHHmmssfff"), this.Context.DataCenterName), this.Context, Convert.ToInt32(Billobj["单据主键ID"]));
foreach (var item2 in item.Value)
{
//创建文件夹
Common.CommonHelper.CreateFolder(Token, FolderId3, item2, string.Format(@"D:\Api日志\{3}\创建文件夹\{0}\{1}\创建文件夹\{2}.txt",
Billno, FolderName, DateTime.Now.ToString("yyyyMMddHHmmssfff"), this.Context.DataCenterName), this.Context, Convert.ToInt32(Billobj["单据主键ID"]));
}
}
//更新销售订单
SqlManage.UpdateSaleOrderisdoccreate(this.Context, FID, string.Format(@"http://doc.pmac.com.cn/index.html#doc/enterprise/{0}", FolderId2));
}
}
}
}
//修改日志为成功
SqlManage.UpdateDockingPLMLog(this.Context, key, "100", "", "", Convert.ToString(Billobj["单据主键ID"]), "文档云产生项目盒子", "插件日志");
}
catch (Exception ex)
{
//修改日志为异常
SqlManage.UpdateDockingPLMLog(this.Context, key, "4", ex.Message, "", Convert.ToString(Billobj["单据主键ID"]), "文档云产生项目盒子", "插件日志");
}
}
//销售订单--审核创建BPM流程发起
private void GetCreateBPMInterface(DataRow Billobj)
{
//if (Convert.ToString(SaleOrgId["Number"]) == "PL" || Convert.ToString(SaleOrgId["Number"]) == "WH")
if (Convert.ToInt64(Billobj["销售组织"]) == 100302 || Convert.ToInt64(Billobj["销售组织"]) == 100305)
{
var key = Guid.Parse(Convert.ToString(Billobj["主键"]));
//var key = SqlManage.SetDockingPLMLog(this.Context, "审核创建BPM流程发起", Convert.ToInt32(Billobj["单据主键ID"]));
try
{
//获取销售订单数据
var Result = SqlManage.GetSaleOrderData(this.Context, Convert.ToString(Billobj["单据主键ID"]));
string sn = "";
if (Result.Count > 0)
{
//调用接口,获取SN数据
sn = Common.CommonHelper.CreateDocument(Result, this.Context, Convert.ToInt32(Billobj["单据主键ID"]));
}
//获取销售订单数据,是否预置
var Result2 = SqlManage.GetSaleOrderData2(this.Context, Convert.ToString(Billobj["单据主键ID"]));
if (Result2.Count > 0)
{
//调用接口,获取SN数据
sn = Common.CommonHelper.CreateDocument2(Result2, this.Context, Convert.ToInt32(Billobj["单据主键ID"]));
}
//更新销售订单的SN数据
SqlManage.UpdateBMPSN(this.Context, Convert.ToString(Billobj["单据主键ID"]), sn);
//修改日志为成功
SqlManage.UpdateDockingPLMLog(this.Context, key, "100", "", sn, Convert.ToString(Billobj["单据主键ID"]), "产品生产出货预置单,BPM产品定制再次出货确认单", "插件日志");
}
catch (Exception ex)
{
//修改日志为异常
SqlManage.UpdateDockingPLMLog(this.Context, key, "4", ex.Message, "", Convert.ToString(Billobj["单据主键ID"]), "产品生产出货预置单,BPM产品定制再次出货确认单", "插件日志");
}
}
}
}
}