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.List.PlugIn;
|
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.Data;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
|
namespace Demo.BillView.PRD
|
{
|
[Description("[日计划工单] 列表插件"), HotUpdate]
|
public class Pro_DayPlanList : AbstractListPlugIn
|
{
|
//点击按钮触发
|
public override void BarItemClick(BarItemClickEventArgs e)
|
{
|
base.BarItemClick(e);
|
//关闭
|
if (e.BarItemKey.Equals("BTNCLOSE"))
|
{
|
//获取选择记录
|
ListSelectedRowCollection selectRows = this.ListView.SelectedRowsInfo;
|
|
//读取ID,放到数组
|
string[] ID = selectRows.GetPrimaryKeyValues();
|
string FID = "";
|
|
//没有选择行提示
|
if (ID.Length == 0)
|
{
|
//如果选择的是0,即没有选择行记录,弹窗报错,返回
|
this.View.ShowMessage("请选择单据!", MessageBoxType.Notice);
|
return;
|
}
|
else
|
{
|
//如果点击成功,循环ID
|
for (int i = 0; i < ID.Length; i++)
|
{
|
FID = FID + ID[i].ToString() + ",";
|
}
|
FID = FID.Substring(0, FID.Length - 1);
|
string sql = $"/*dialect*/ update Sc_WorkBillSortBillMain set FDocumentStatus = 'E',FHCloseMan = '{Context.UserId}',FHCloseDate = GETDATE() where FID in ({FID})";
|
////LogHelper.Info(sql);
|
DBServiceHelper.Execute(Context, sql);
|
this.View.ShowMessage("操作成功");
|
}
|
}
|
//反关闭
|
else if (e.BarItemKey.Equals("BTNCANCELCLOSE"))
|
{
|
//获取选择记录
|
ListSelectedRowCollection selectRows = this.ListView.SelectedRowsInfo;
|
|
//读取ID,放到数组
|
string[] ID = selectRows.GetPrimaryKeyValues();
|
string FID = "";
|
|
//没有选择行提示
|
if (ID.Length == 0)
|
{
|
//如果选择的是0,即没有选择行记录,弹窗报错,返回
|
this.View.ShowMessage("请选择单据!", MessageBoxType.Notice);
|
return;
|
}
|
else
|
{
|
//如果点击成功,循环ID
|
for (int i = 0; i < ID.Length; i++)
|
{
|
FID = FID + ID[i].ToString() + ",";
|
}
|
FID = FID.Substring(0, FID.Length - 1);
|
//验证 关闭订单
|
//验证所选订单是否存在相同数据 生产订单号+生产订单明细行号
|
string errmsg = "";
|
string fbillno = "";
|
string yzSql = string.Format(@"/*dialect*/
|
SELECT FBILLNO FROM SC_WORKBILLSORTBILLMAIN WHERE FSCORDERNO+CONVERT(VARCHAR,FSRCBILLENTRYSEQ) IN (
|
SELECT FSCORDERNO+CONVERT(VARCHAR,FSRCBILLENTRYSEQ) FROM SC_WORKBILLSORTBILLMAIN
|
WHERE FID IN ({0})
|
GROUP BY
|
FSCORDERNO,FSRCBILLENTRYSEQ
|
HAVING COUNT(*)>1
|
)", FID);
|
DataTable dataTable = DBServiceHelper.ExecuteDataSet(Context, yzSql).Tables[0];
|
if (dataTable.Rows.Count > 0)
|
{
|
errmsg += "所选订单中存在相同生产订单和明细行号数据,订单号:";
|
foreach (DataRow dr in dataTable.Rows)
|
{
|
errmsg += dr["FBILLNO"].ToString();
|
fbillno += $"'{dr["FBILLNO"].ToString()}',";
|
}
|
}
|
yzSql = string.Format(@"/*dialect*/
|
SELECT A.FBILLNO FROM SC_WORKBILLSORTBILLMAIN A
|
JOIN (SELECT * FROM SC_WORKBILLSORTBILLMAIN WHERE FDOCUMENTSTATUS <>'E') B ON A.FSCORDERNO=B.FSCORDERNO AND A.FSRCBILLENTRYSEQ=B.FSRCBILLENTRYSEQ
|
WHERE A.FID IN ({0})
|
", FID);
|
dataTable = DBServiceHelper.ExecuteDataSet(Context, yzSql).Tables[0];
|
if (dataTable.Rows.Count > 0)
|
{
|
errmsg += "\n" + "所选订单中存在生产订单和明细行号关闭后数据重复,订单号:";
|
foreach (DataRow dr in dataTable.Rows)
|
{
|
errmsg += dr["FBILLNO"].ToString();
|
fbillno += $"'{dr["FBILLNO"].ToString()}',";
|
}
|
}
|
string sql = $"/*dialect*/ update Sc_WorkBillSortBillMain set FDocumentStatus = 'C',FHCloseMan = '',FHCloseDate = NULL where FID in ({FID})";
|
if (fbillno.Length > 0)
|
{
|
fbillno = fbillno.Substring(0, fbillno.Length - 1);
|
sql = $"/*dialect*/ update Sc_WorkBillSortBillMain set FDocumentStatus = 'C',FHCloseMan = '',FHCloseDate = NULL where FID in ({FID}) AND FBILLNO NOT IN ({fbillno})";
|
}
|
////LogHelper.Info(sql);
|
DBServiceHelper.Execute(Context, sql);
|
if (errmsg != "")
|
{
|
this.View.ShowMessage("部分单据操作成功\n" + errmsg);
|
return;
|
}
|
this.View.ShowMessage("操作成功");
|
}
|
}
|
else if (e.BarItemKey.Equals("BTNDISPATCH"))
|
{
|
PushDispatchBill();
|
}
|
}
|
public void PushDispatchBill()
|
{
|
try
|
{
|
//获取选择记录
|
ListSelectedRowCollection selectRows = this.ListView.SelectedRowsInfo;
|
if (selectRows.Count == 0)
|
{
|
this.View.ShowMessage("请选择数据!", MessageBoxType.Notice);
|
return;
|
}
|
List<string> fidList = selectRows.GetEntryPrimaryKeyValues().ToList();
|
string fentryids = string.Join(",", fidList);
|
DataTable dt = new DataTable();
|
string dtsql = $"/*dialect*/ exec proc_jit_saveDispatchBill '{fentryids}'";
|
dt = DBServiceHelper.ExecuteDataSet(Context, dtsql).Tables[0];
|
// 一次性获取10个单据编号
|
var billNos = BusinessDataServiceHelper.GetListBillNO(this.Context, "bsv_dispatchBill", dt.Rows.Count, "635782b535d236");
|
//LogService.Write("billNos:" + string.Join(",", billNos)); ;
|
List<string> sqllist = new List<string>();
|
for (int i = 0; i < dt.Rows.Count; i++)
|
{
|
string sql = string.Format(@"
|
/*dialect*/
|
insert into z_jit_prdDispatchBill values('')
|
INSERT INTO [t_jit_prdDispatchBill]([FID],[FBILLNO],[FDOCUMENTSTATUS],[FCREATORID],[FCREATEDATE],[FMODIFIERID],[FMODIFYDATE],[FWORKSHOPID],[FSCX],[FSALEORDERNO],[FMONO],[FMATERIALID],[FQTY],[FDAYPLANQTY],[FWAREHOUSQTY],[F_SB],[FKHXH],[FDATE],F_dy,F_gl,F_db,FDAYPLANFID,FDAYPLANFENTRYID,FDAYPLANBILLNO)
|
select id,'{0}','A',{1},GETDATE(),{1},GETDATE(),{2},{3},'{4}','{5}',{6},{7},{8},{9},'{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}' from z_jit_prdDispatchBill
|
delete z_jit_prdDispatchBill", billNos[i], Context.UserId, dt.Rows[i]["FWORKSHOPID"], dt.Rows[i]["FSCX"], dt.Rows[i]["FSALEORDERNO"], dt.Rows[i]["FMONO"], dt.Rows[i]["FMATERIALID"], dt.Rows[i]["FQTY"], dt.Rows[i]["FDAYPLANQTY"], dt.Rows[i]["FWAREHOUSQTY"], dt.Rows[i]["F_SB"], dt.Rows[i]["FKHXH"],dt.Rows[i]["FDATE"], dt.Rows[i]["F_dy"], dt.Rows[i]["F_gl"], dt.Rows[i]["F_db"], dt.Rows[i]["FDAYPLANFID"], dt.Rows[i]["FDAYPLANFENTRYID"], dt.Rows[i]["FDAYPLANBILLNO"]);
|
//LogService.Write(sql);
|
sqllist.Add(sql);
|
}
|
var ret = DBServiceHelper.ExecuteBatch(Context, sqllist);
|
//LogService.Write("ret:" + ret);
|
this.View.ShowMessage("操作成功,生成派工单数量为" + billNos.Count);
|
}
|
catch (Exception ex)
|
{
|
//LogService.Write(ex.ToString());
|
this.View.ShowErrMessage(ex.Message.ToString());
|
}
|
}
|
}
|
}
|