SGGL_SHJ/SGGL/BLL/HJGL/PointTrust/PointBatchService.cs

352 lines
16 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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(pipeline.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;
}
}
}