This commit is contained in:
2024-06-20 17:12:59 +08:00
parent 8b222bd7c3
commit 6b59df065d
31 changed files with 1138 additions and 404 deletions
@@ -114,6 +114,14 @@
<f:Button ID="btnHandGenerate" Text="手动生成委托单" ToolTip="勾选需要生成委托单的焊口手动生成委托单" Icon="TableEdit" runat="server"
OnClick="btnHandGenerate_Click" >
</f:Button>
</Items>
</f:Toolbar>
<f:Toolbar ID="Toolbar4" Position="Top" runat="server" ToolbarAlign="Right">
<Items>
<f:Button ID="btnDailyCompPoint" Text="日报完成点口" ToolTip="日报忋完成审核点口" Icon="ArrowUndo"
runat="server" OnClick="btnDailyCompPoint_Click">
</f:Button>
<f:Button ID="btnbtnOpenResetPoint" Text="打开重新点口" ToolTip="打开重新点口" Icon="ArrowUndo"
runat="server" OnClick="btnbtnOpenResetPoint_Click">
</f:Button>
@@ -854,6 +854,332 @@ namespace FineUIPro.Web.WeldingProcess.TrustManage
}
}
/// <summary>
/// 日报完成点口
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnDailyCompPoint_Click(object sender, EventArgs e)
{
if (CommonService.GetAllButtonPowerList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, Const.HJGL_PointManageMenuId, Const.BtnOpenResetPoint))
{
string strSql = @"SELECT jot.ProjectId, pItem.PointBatchId,jot.CoverWelderId,rate.DetectionRateValue
FROM dbo.Batch_PointBatchItem pItem
LEFT JOIN dbo.Batch_PointBatch point ON point.PointBatchId = pItem.PointBatchId
LEFT JOIN dbo.Pipeline_WeldJoint jot ON jot.WeldJointId = pItem.WeldJointId
LEFT JOIN dbo.Base_DetectionRate rate ON rate.DetectionRateId=point.DetectionRateId
WHERE pItem.IsCompletedPoint=0
GROUP BY jot.ProjectId, pItem.PointBatchId,jot.CoverWelderId,rate.DetectionRateValue";
DataTable dt = SQLHelper.GetDataTableRunText(strSql, null);
if (dt.Rows.Count > 0)
{
foreach (DataRow r in dt.Rows)
{
// 已处理但批段未关闭的焊口
List<PointBatchList> batchNoClose = (from x in Funs.DB.Batch_PointBatchItem
join y in Funs.DB.Pipeline_WeldJoint on x.WeldJointId equals y.WeldJointId
where x.PointBatchId == r["PointBatchId"].ToString()
&& y.CoverWelderId == r["CoverWelderId"].ToString()
&& (x.BatchOrder == false || x.BatchOrder == null)
&& x.IsCompletedPoint == true
&& (y.IsCancel == false || y.IsCancel == null)
select new PointBatchList { PointBatchItemId = x.PointBatchItemId, JointAttribute = y.JointAttribute }).ToList();
// 未处理焊口
List<PointBatchList> jotList = (from x in Funs.DB.Batch_PointBatchItem
join y in Funs.DB.Pipeline_WeldJoint on x.WeldJointId equals y.WeldJointId
where x.PointBatchId == r["PointBatchId"].ToString()
&& y.CoverWelderId == r["CoverWelderId"].ToString()
&& (x.IsCompletedPoint == false || x.IsCompletedPoint == null)
&& (y.IsCancel == false || y.IsCancel == null)
orderby x.EnterDate
select new PointBatchList { PointBatchItemId = x.PointBatchItemId, JointAttribute = y.JointAttribute }).ToList();
// 未处理固定焊口
List<PointBatchList> GJot = jotList.Where(x=>x.JointAttribute == "固定F").ToList();
if (Convert.ToInt32(r["DetectionRateValue"]) != 0)
{
// 批中一段的数量
int dnum = Convert.ToInt32((double)100 / (int)r["DetectionRateValue"]);
// 已处理但批段未关闭的焊口数量
int batchNoCloseNum = batchNoClose.Count();
// 未处理焊口数量
int jotListNum = jotList.Count();
// 未处理固定焊口数量
int GJotNum = GJot.Count();
#region batchNoCloseNum大于0表示批段已处理但批段未关闭的焊口集合里
if (batchNoCloseNum > 0)
{
if ((batchNoCloseNum + jotListNum) > dnum)
{
// 关闭上一个批段还需要的数量
int closeNum = dnum - batchNoCloseNum;
var bachtclose = jotList.GetRange(0, closeNum);
// 补足上一个批段,关闭同时状态为已处理
foreach (var g in bachtclose)
{
BLL.Batch_PointBatchItemService.UpdatePointBatchOrder(g.PointBatchItemId, true);
BLL.Batch_PointBatchItemService.UpdateIsCompletedPoint(g.PointBatchItemId, true);
}
foreach (var g in batchNoClose)
{
BLL.Batch_PointBatchItemService.UpdatePointBatchOrder(g.PointBatchItemId, true);
}
if ((jotListNum - closeNum) > dnum)
{
// 取模(余数)
int modelNum = (jotListNum - closeNum) % dnum;
// 取整
double doubleNum = Math.Ceiling((double)((jotListNum - closeNum) / (double)dnum));
int intNum = Convert.ToInt32(doubleNum);
// 补足上一个批段后剩余的待处理的列表
var remailList = jotList.GetRange(closeNum, (jotListNum - closeNum));
for (int i = 0; i < intNum; i++)
{
if (modelNum == 0)
{
var bachtOrder = remailList.GetRange(i * dnum, dnum);
var bachtOrderG = bachtOrder.Where(p => p.JointAttribute == "固定F").ToList();
// 点口
GetRandomPoint(bachtOrderG, bachtOrder);
// 状态为已处理状态,并关闭此批段
foreach (var g in bachtOrder)
{
BLL.Batch_PointBatchItemService.UpdateIsCompletedPoint(g.PointBatchItemId, true);
BLL.Batch_PointBatchItemService.UpdatePointBatchOrder(g.PointBatchItemId, true);
}
}
else
{
if (i != intNum - 1)
{
var bachtOrder = remailList.GetRange(i * dnum, dnum);
var bachtOrderG = bachtOrder.Where(p => p.JointAttribute == "固定F").ToList();
// 点口
GetRandomPoint(bachtOrderG, bachtOrder);
// 状态为已处理状态,并关闭此批段
foreach (var g in bachtOrder)
{
BLL.Batch_PointBatchItemService.UpdateIsCompletedPoint(g.PointBatchItemId, true);
BLL.Batch_PointBatchItemService.UpdatePointBatchOrder(g.PointBatchItemId, true);
}
}
// 最后一个段
else
{
var bachtOrder = remailList.GetRange(i * dnum, modelNum);
var bachtOrderG = bachtOrder.Where(p => p.JointAttribute == "固定F").ToList();
// 点口
GetRandomPoint(bachtOrderG, bachtOrder);
// 状态为已处理状态,此批段不关闭
foreach (var g in bachtOrder)
{
BLL.Batch_PointBatchItemService.UpdateIsCompletedPoint(g.PointBatchItemId, true);
}
}
}
}
}
else if ((jotListNum - closeNum) == dnum)
{
var bachtOrder = jotList.GetRange(closeNum, (jotListNum - closeNum));
var bachtOrderG = bachtOrder.Where(p => p.JointAttribute == "固定F").ToList();
// 点口
GetRandomPoint(bachtOrderG, bachtOrder);
// 状态为已处理状态,并关闭此批段
foreach (var g in bachtOrder)
{
BLL.Batch_PointBatchItemService.UpdateIsCompletedPoint(g.PointBatchItemId, true);
BLL.Batch_PointBatchItemService.UpdatePointBatchOrder(g.PointBatchItemId, true);
}
}
else
{
var bachtOrder = jotList.GetRange(closeNum, (jotListNum - closeNum));
var bachtOrderG = bachtOrder.Where(p => p.JointAttribute == "固定F").ToList();
// 点口
GetRandomPoint(bachtOrderG, bachtOrder);
// 状态为已处理状态,此批段没关闭
foreach (var g in bachtOrder)
{
BLL.Batch_PointBatchItemService.UpdateIsCompletedPoint(g.PointBatchItemId, true);
}
}
}
// 当未关闭的批段+未处理焊口的数量等于探伤比例数量时批段关闭
else if (batchNoCloseNum + jotListNum == dnum)
{
// 批段关闭
foreach (var g in batchNoClose)
{
BLL.Batch_PointBatchItemService.UpdatePointBatchOrder(g.PointBatchItemId, true);
}
// 批段关闭,状态为已处理
foreach (var g in jotList)
{
BLL.Batch_PointBatchItemService.UpdatePointBatchOrder(g.PointBatchItemId, true);
BLL.Batch_PointBatchItemService.UpdateIsCompletedPoint(g.PointBatchItemId, true);
}
}
else
{
// 待处理完成,但批段未关闭
foreach (var g in jotList)
{
BLL.Batch_PointBatchItemService.UpdateIsCompletedPoint(g.PointBatchItemId, true);
}
}
}
#endregion
#region batchNoCloseNum等于0表示这个批段开始
else
{
if (jotListNum > dnum)
{
// 取模(余数)
int modelNum = jotList.Count() % dnum;
// 取整
double doubleNum = Math.Ceiling((double)jotList.Count() / (double)dnum);
int intNum=Convert.ToInt32(doubleNum);
for (int i = 0; i < intNum; i++)
{
if (modelNum == 0)
{
var bachtOrder = jotList.GetRange(i * dnum, dnum);
var bachtOrderG = bachtOrder.Where(p => p.JointAttribute == "固定F").ToList();
// 点口
GetRandomPoint(bachtOrderG, bachtOrder);
// 状态为已处理状态,并关闭此批段
foreach (var g in bachtOrder)
{
BLL.Batch_PointBatchItemService.UpdateIsCompletedPoint(g.PointBatchItemId, true);
BLL.Batch_PointBatchItemService.UpdatePointBatchOrder(g.PointBatchItemId, true);
}
}
else
{
if (i != intNum - 1)
{
var bachtOrder = jotList.GetRange(i * dnum, dnum);
var bachtOrderG = bachtOrder.Where(p => p.JointAttribute == "固定F").ToList();
// 点口
GetRandomPoint(bachtOrderG, bachtOrder);
// 状态为已处理状态,并关闭此批段
foreach (var g in bachtOrder)
{
BLL.Batch_PointBatchItemService.UpdateIsCompletedPoint(g.PointBatchItemId, true);
BLL.Batch_PointBatchItemService.UpdatePointBatchOrder(g.PointBatchItemId, true);
}
}
// 最后一个段
else
{
var bachtOrder = jotList.GetRange(i * dnum, modelNum);
var bachtOrderG = bachtOrder.Where(p => p.JointAttribute == "固定F").ToList();
// 点口
GetRandomPoint(bachtOrderG, bachtOrder);
// 状态为已处理状态,此批段不关闭
foreach (var g in bachtOrder)
{
BLL.Batch_PointBatchItemService.UpdateIsCompletedPoint(g.PointBatchItemId, true);
}
}
}
}
}
else if (jotListNum == dnum)
{
// 点口
GetRandomPoint(GJot, jotList);
// 状态为已处理状态,并关闭此批段
foreach (var g in jotList)
{
BLL.Batch_PointBatchItemService.UpdateIsCompletedPoint(g.PointBatchItemId, true);
BLL.Batch_PointBatchItemService.UpdatePointBatchOrder(g.PointBatchItemId, true);
}
}
else
{
// 点口
GetRandomPoint(GJot, jotList);
// 状态为已处理状态,但批段不关闭
foreach (var g in jotList)
{
BLL.Batch_PointBatchItemService.UpdateIsCompletedPoint(g.PointBatchItemId, true);
}
}
}
#endregion
}
else
{
// 不点口,状态为变已处理,批段完成
foreach (var q in jotList)
{
BLL.Batch_PointBatchItemService.UpdateIsCompletedPoint(q.PointBatchItemId, true);
BLL.Batch_PointBatchItemService.UpdatePointBatchOrder(q.PointBatchItemId, true);
}
}
}
}
}
else
{
ShowNotify(Resources.Lan.NoPrivilegePrompt, MessageBoxIcon.Warning);
return;
}
}
private void GetRandomPoint(List<PointBatchList> GJot, List<PointBatchList> jotList)
{
// 先查找固定口数量,如有固定口,则优先点
if (GJot.Count() > 0)
{
int Gnum = GJot.Count();
int rnum = Funs.GetRandomNum(1, Gnum);
int j = 1;
foreach (var g in GJot)
{
if (rnum == j)
{
BLL.Batch_PointBatchItemService.UpdatePointBatchItem(g.PointBatchItemId, "1", System.DateTime.Now, null);
}
j++;
}
}
else
{
if (jotList.Count() > 0)
{
int rnum = Funs.GetRandomNum(1, jotList.Count());
int j = 1;
foreach (var g in jotList)
{
if (rnum == j)
{
BLL.Batch_PointBatchItemService.UpdatePointBatchItem(g.PointBatchItemId, "1", System.DateTime.Now, null);
}
j++;
}
}
}
}
/// <summary>
/// 手动结束批
/// </summary>
@@ -1632,6 +1958,20 @@ namespace FineUIPro.Web.WeldingProcess.TrustManage
return newTrustCode;
}
private class PointBatchList
{
public string PointBatchItemId
{
get;
set;
}
public string JointAttribute
{
get;
set;
}
}
}
}
@@ -203,6 +203,24 @@ namespace FineUIPro.Web.WeldingProcess.TrustManage
/// </remarks>
protected global::FineUIPro.Button btnHandGenerate;
/// <summary>
/// Toolbar4 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar4;
/// <summary>
/// btnDailyCompPoint 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnDailyCompPoint;
/// <summary>
/// btnbtnOpenResetPoint 控件。
/// </summary>