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("操作成功");
|
}
|
}
|
}
|
}
|
}
|