352 lines
16 KiB
C#
352 lines
16 KiB
C#
using NPOI.SS.Formula.Functions;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Data;
|
||
using System.Data.SqlClient;
|
||
using System.Linq;
|
||
using System.Windows.Media.Animation;
|
||
using System.Windows;
|
||
using Model;
|
||
|
||
namespace BLL
|
||
{
|
||
public class PointBatchService
|
||
{
|
||
/// <summary>
|
||
///
|
||
/// </summary>
|
||
/// <param name="batchId"></param>
|
||
/// <returns></returns>
|
||
public static Model.HJGL_Batch_PointBatch GetPointBatchById(string pointBatchId)
|
||
{
|
||
return Funs.DB.HJGL_Batch_PointBatch.FirstOrDefault(e => e.PointBatchId == pointBatchId);
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 修改批主表批关闭状态
|
||
/// </summary>
|
||
/// <param name="batch"></param>
|
||
public static void UpdateBatchIsClosed(string PointBatchId, DateTime endDate)
|
||
{
|
||
Model.HJGL_Batch_PointBatch newBatch = Funs.DB.HJGL_Batch_PointBatch.FirstOrDefault(e => e.PointBatchId == PointBatchId);
|
||
if (newBatch != null)
|
||
{
|
||
newBatch.EndDate = endDate;
|
||
Funs.DB.SubmitChanges();
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 修改批主表批关闭状态
|
||
/// </summary>
|
||
/// <param name="batch"></param>
|
||
public static void UpdateBatchIsClosed2(string PointBatchId, DateTime endDate)
|
||
{
|
||
Model.HJGL_Batch_PointBatch newBatch = Funs.DB.HJGL_Batch_PointBatch.FirstOrDefault(e => e.PointBatchId == PointBatchId);
|
||
if (newBatch != null)
|
||
{
|
||
newBatch.EndDate = endDate;
|
||
newBatch.IsClosed = true;
|
||
Funs.DB.SubmitChanges();
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 添加
|
||
/// </summary>
|
||
/// <param name="check"></param>
|
||
public static void AddPointBatch(Model.HJGL_Batch_PointBatch batch)
|
||
{
|
||
Model.SGGLDB db = Funs.DB;
|
||
Model.HJGL_Batch_PointBatch newBatch = new Model.HJGL_Batch_PointBatch();
|
||
newBatch.PointBatchId = batch.PointBatchId;
|
||
newBatch.PointBatchCode = batch.PointBatchCode;
|
||
newBatch.BatchCondition = batch.BatchCondition;
|
||
newBatch.ProjectId = batch.ProjectId;
|
||
newBatch.UnitWorkId = batch.UnitWorkId;
|
||
newBatch.UnitId = batch.UnitId;
|
||
newBatch.DetectionTypeId = batch.DetectionTypeId;
|
||
|
||
newBatch.DetectionRateId = batch.DetectionRateId;
|
||
newBatch.PipingClassId = batch.PipingClassId;
|
||
newBatch.PipelineId = batch.PipelineId;
|
||
newBatch.WelderId = batch.WelderId;
|
||
newBatch.StartDate = batch.StartDate;
|
||
|
||
db.HJGL_Batch_PointBatch.InsertOnSubmit(newBatch);
|
||
db.SubmitChanges();
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 删除
|
||
/// </summary>
|
||
/// <param name="checkId"></param>
|
||
public static void DeleteBatch(string batchId)
|
||
{
|
||
Model.SGGLDB db = Funs.DB;
|
||
Model.HJGL_Batch_PointBatch batch = db.HJGL_Batch_PointBatch.FirstOrDefault(e => e.PointBatchId == batchId);
|
||
|
||
db.HJGL_Batch_PointBatch.DeleteOnSubmit(batch);
|
||
db.SubmitChanges();
|
||
}
|
||
/// <summary>
|
||
/// 根据焊口id删除批信息
|
||
/// </summary>
|
||
/// <param name="weldJointId"></param>
|
||
public static void DeleteBatchByWeldJointId(string weldJointId)
|
||
{
|
||
var newWeldJoint = BLL.WeldJointService.GetWeldJointByWeldJointId(weldJointId);
|
||
|
||
if (newWeldJoint != null)
|
||
{
|
||
var isTrust = from x in Funs.DB.HJGL_Batch_BatchTrustItem
|
||
where x.WeldJointId == weldJointId
|
||
select x; ;
|
||
if (!isTrust.Any())
|
||
{
|
||
var pointBatchItems = from x in Funs.DB.HJGL_Batch_PointBatchItem where x.WeldJointId == weldJointId select x;
|
||
string pointBatchId = pointBatchItems.FirstOrDefault()?.PointBatchId;
|
||
|
||
// 删除焊口所在批明细信息
|
||
BLL.PointBatchDetailService.DeleteBatchDetail(weldJointId);
|
||
|
||
// 删除批信息
|
||
var batch = from x in Funs.DB.HJGL_Batch_PointBatchItem where x.PointBatchId == pointBatchId select x;
|
||
if (!string.IsNullOrEmpty(pointBatchId) && !batch.Any())
|
||
{
|
||
DeleteBatch(pointBatchId);
|
||
}
|
||
//BLL.Batch_NDEItemService.DeleteAllNDEInfoToWeldJoint(item.WeldJointId);
|
||
|
||
}
|
||
else
|
||
{
|
||
// errlog += "焊口【" + newWeldJoint.WeldJointCode + "】已进委托单了,不能删除。";
|
||
}
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 根据焊口id组批
|
||
/// </summary>
|
||
public static string AddBatchByWeldJointId(string weldJointId, DateTime? weldingDate, string batchCondition)
|
||
{
|
||
string errlog = string.Empty;
|
||
string[] condition = batchCondition.Split('|');
|
||
var newWeldJoint = BLL.WeldJointService.GetWeldJointByWeldJointId(weldJointId);
|
||
var pipeline = BLL.PipelineService.GetPipelineByPipelineId(newWeldJoint.PipelineId);
|
||
var project = BLL.ProjectService.GetProjectByProjectId(pipeline.ProjectId);
|
||
var unitWork = BLL.UnitWorkService.GetUnitWorkByUnitWorkId(pipeline.UnitWorkId);
|
||
var WeldingDaily = BLL.WeldingDailyService.GetPipeline_WeldingDailyByWeldingDailyId(newWeldJoint.WeldingDailyId);
|
||
var ndt = BLL.Base_DetectionTypeService.GetDetectionTypeByDetectionTypeId(pipeline.DetectionType);
|
||
var ndtr = BLL.Base_DetectionRateService.GetDetectionRateByDetectionRateId(pipeline.DetectionRateId);
|
||
|
||
if (newWeldJoint != null)
|
||
{
|
||
bool isPass = true;
|
||
foreach (string c in condition)
|
||
{
|
||
if (c == "1")
|
||
{
|
||
if (string.IsNullOrEmpty(pipeline.UnitWorkId))
|
||
{
|
||
isPass = false;
|
||
break;
|
||
|
||
}
|
||
}
|
||
if (c == "2")
|
||
{
|
||
if (string.IsNullOrEmpty(WeldingDaily.UnitId))
|
||
{
|
||
isPass = false;
|
||
break;
|
||
|
||
}
|
||
}
|
||
if (c == "3")
|
||
{
|
||
if (string.IsNullOrEmpty(newWeldJoint.DetectionTypeId))
|
||
{
|
||
isPass = false;
|
||
break;
|
||
}
|
||
}
|
||
if (c == "4")
|
||
{
|
||
if (string.IsNullOrEmpty(pipeline.DetectionRateId))
|
||
{
|
||
isPass = false;
|
||
break;
|
||
}
|
||
}
|
||
if (c == "5")
|
||
{
|
||
if (string.IsNullOrEmpty(pipeline.PipingClassId))
|
||
{
|
||
isPass = false;
|
||
break;
|
||
}
|
||
}
|
||
// 6是管线,7是焊工都不可能为空,这里就不判断了
|
||
}
|
||
if (isPass)
|
||
{
|
||
string strSql = @"SELECT PointBatchId FROM dbo.HJGL_Batch_PointBatch
|
||
WHERE (EndDate IS NULL OR EndDate ='')
|
||
AND ProjectId = @ProjectId
|
||
AND UnitWorkId = @UnitWorkId AND UnitId =@UnitId
|
||
AND DetectionTypeId =@DetectionTypeId
|
||
AND DetectionRateId =@DetectionRateId";
|
||
List<SqlParameter> listStr = new List<SqlParameter>
|
||
{
|
||
new SqlParameter("@ProjectId", project.ProjectId),
|
||
new SqlParameter("@UnitWorkId", pipeline.UnitWorkId),
|
||
new SqlParameter("@UnitId", WeldingDaily.UnitId),
|
||
new SqlParameter("@DetectionTypeId", pipeline.DetectionType),
|
||
new SqlParameter("@DetectionRateId", pipeline.DetectionRateId)
|
||
};
|
||
|
||
// 5,6,7项为可选项
|
||
if (condition.Contains("5"))
|
||
{
|
||
strSql += " AND PipingClassId =@PipingClassId";
|
||
listStr.Add(new SqlParameter("@PipingClassId", pipeline.PipingClassId));
|
||
}
|
||
if (condition.Contains("6"))
|
||
{
|
||
strSql += " AND PipelineId =@PipelineId";
|
||
listStr.Add(new SqlParameter("@PipelineId", newWeldJoint.PipelineId));
|
||
}
|
||
if (condition.Contains("7"))
|
||
{
|
||
strSql += " AND WelderId =@WelderId";
|
||
listStr.Add(new SqlParameter("@WelderId", newWeldJoint.CoverWelderId));
|
||
}
|
||
|
||
SqlParameter[] parameter = listStr.ToArray();
|
||
DataTable batchInfo = SQLHelper.GetDataTableRunText(strSql, parameter);
|
||
|
||
string batchId = string.Empty;
|
||
if (batchInfo.Rows.Count == 0)
|
||
{
|
||
Model.HJGL_Batch_PointBatch batch = new Model.HJGL_Batch_PointBatch();
|
||
batch.PointBatchId = SQLHelper.GetNewID(typeof(Model.HJGL_Batch_PointBatch));
|
||
batchId = batch.PointBatchId;
|
||
string perfix = project.ProjectCode + "-" + unitWork.UnitWorkCode + "-GD-DK-" + ndt.DetectionTypeCode + "-" + ndtr.DetectionRateValue.ToString() + "%-";
|
||
//batch.PointBatchCode = BLL.SQLHelper.RunProcNewIdByProjectId("SpGetNewCode4ByProjectId", "dbo.HJGL_Batch_PointBatch", "PointBatchCode", project.ProjectId, perfix);
|
||
var maxBatch = (from x in Funs.DB.HJGL_Batch_PointBatch where x.ProjectId == project.ProjectId && x.PointBatchCode.Contains(perfix) select x).FirstOrDefault();
|
||
if (maxBatch == null)
|
||
{
|
||
batch.PointBatchCode = perfix + "0001";
|
||
}
|
||
else
|
||
{
|
||
int code = Funs.GetNewIntOrZero(maxBatch.PointBatchCode.Substring(maxBatch.PointBatchCode.Length - 4));
|
||
code = code + 1;
|
||
if (code < 10)
|
||
{
|
||
batch.PointBatchCode = perfix + "000" + code.ToString();
|
||
}
|
||
else if (code >= 10 && code < 100)
|
||
{
|
||
batch.PointBatchCode = perfix + "00" + code.ToString();
|
||
}
|
||
else if (code >= 100 && code < 1000)
|
||
{
|
||
batch.PointBatchCode = perfix + "0" + code.ToString();
|
||
}
|
||
else
|
||
{
|
||
batch.PointBatchCode = perfix + code.ToString();
|
||
}
|
||
}
|
||
batch.ProjectId = project.ProjectId;
|
||
batch.UnitWorkId = pipeline.UnitWorkId;
|
||
batch.BatchCondition = batchCondition;
|
||
batch.UnitId = WeldingDaily.UnitId;
|
||
batch.DetectionTypeId = pipeline.DetectionType;
|
||
batch.DetectionRateId = pipeline.DetectionRateId;
|
||
if (condition.Contains("5"))
|
||
{
|
||
batch.PipingClassId = pipeline.PipingClassId;
|
||
}
|
||
if (condition.Contains("6"))
|
||
{
|
||
batch.PipelineId = newWeldJoint.PipelineId;
|
||
if (pipeline.PipeArea == PipelineService.PipeArea_FIELD)
|
||
{
|
||
perfix += "XC-";
|
||
batch.PointBatchCode = BLL.SQLHelper.RunProcNewIdByProjectId("SpGetNewCode4ByProjectId", "dbo.HJGL_Batch_PointBatch", "PointBatchCode", project.ProjectId, perfix);
|
||
|
||
}
|
||
else if (pipeline.PipeArea == PipelineService.PipeArea_SHOP)
|
||
{
|
||
perfix += "GC-";
|
||
batch.PointBatchCode = BLL.SQLHelper.RunProcNewIdByProjectId("SpGetNewCode4ByProjectId", "dbo.HJGL_Batch_PointBatch", "PointBatchCode", project.ProjectId, perfix);
|
||
|
||
}
|
||
}
|
||
if (condition.Contains("7"))
|
||
{
|
||
batch.WelderId = newWeldJoint.CoverWelderId;
|
||
}
|
||
batch.StartDate = DateTime.Now;
|
||
BLL.PointBatchService.AddPointBatch(batch);
|
||
}
|
||
else
|
||
{
|
||
batchId = batchInfo.Rows[0][0].ToString();
|
||
}
|
||
|
||
var b = BLL.PointBatchDetailService.GetBatchDetailByJotId(weldJointId);
|
||
if (b == null)
|
||
{
|
||
try
|
||
{
|
||
Model.HJGL_Batch_PointBatchItem batchDetail = new Model.HJGL_Batch_PointBatchItem();
|
||
string pointBatchItemId = SQLHelper.GetNewID(typeof(Model.HJGL_Batch_PointBatchItem));
|
||
batchDetail.PointBatchItemId = pointBatchItemId;
|
||
batchDetail.PointBatchId = batchId;
|
||
batchDetail.WeldJointId = weldJointId;
|
||
batchDetail.WeldingDate = weldingDate;
|
||
batchDetail.CreatDate = DateTime.Now;
|
||
BLL.Funs.DB.HJGL_Batch_PointBatchItem.InsertOnSubmit(batchDetail);
|
||
BLL.Funs.DB.SubmitChanges();
|
||
|
||
/*// 焊工首道口RT必点
|
||
var joints = from x in Funs.DB.HJGL_Batch_PointBatchItem
|
||
join y in Funs.DB.HJGL_Batch_PointBatch on x.PointBatchId equals y.PointBatchId
|
||
join z in Funs.DB.Base_DetectionType on y.DetectionTypeId equals z.DetectionTypeId
|
||
join j in Funs.DB.HJGL_WeldJoint on x.WeldJointId equals j.WeldJointId
|
||
where z.DetectionTypeCode == "RT"
|
||
&& j.CoverWelderId == newWeldJoint.CoverWelderId
|
||
select x;
|
||
if (joints.Count() <= 1)
|
||
{
|
||
BLL.PointBatchDetailService.UpdatePointBatchDetail(pointBatchItemId, "1", System.DateTime.Now);
|
||
BLL.PointBatchDetailService.UpdateWelderFirst(pointBatchItemId, true);
|
||
}*/
|
||
}
|
||
catch
|
||
{
|
||
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
errlog += "焊口【" + newWeldJoint.WeldJointCode + "】组批条件不能为空。";
|
||
}
|
||
|
||
}
|
||
|
||
return errlog;
|
||
}
|
||
|
||
|
||
|
||
}
|
||
}
|