You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

185 lines
7.3 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Mesnac.Codd.Session;
using System.Data;
using Mesnac.Action.Feeding.BasicInfo;
namespace Mesnac.Action.Feeding.FinishBatch
{
/// <summary>
/// 车条码
/// </summary>
public class LotBarcode
{
private string planID = string.Empty;
private int finishedNumber = 1;
private int _llSerialId = 0; //玲珑车次
public LotBarcode(DbHelper _localHelper, DbHelper _serverHelper, string _planID, int _finishedNumber)
{
this.planID = _planID;
this.finishedNumber = _finishedNumber;
getLotBarcode(_localHelper);
}
private string barcode = string.Empty;
private int serialBatchId = 1;
/// <summary>
/// 条码
/// </summary>
public string Barcode { get { return barcode; } }
/// <summary>
/// 计划ID
/// </summary>
public string PlanID { get { return planID; } }
private string firstPlanID = string.Empty;
/// <summary>
/// 第一个计划
/// </summary>
public string FirstPlanID { get { return firstPlanID.Trim(); } }
/// <summary>
/// 车次
/// </summary>
public int SerialId { get { return finishedNumber; } }
/// <summary>
/// 玲珑车次
/// </summary>
public int LLSerialId { get { return _llSerialId; } }
/// <summary>
/// 当班同物料累计车次
/// </summary>
public int SerialBatchId { get { return serialBatchId; } }
/// <summary>
/// 判断车报表中条码是否存在
/// </summary>
/// <param name="localHelper"></param>
/// <param name="barcode"></param>
/// <returns>存在返回true不存在返回false</returns>
private bool hasSaveBarCode(DbHelper localHelper, string barcode)
{
try
{
string sqlstr = "SELECT 1 FROM dbo.PptLotData WHERE Barcode=@Barcode";
localHelper.CommandType = CommandType.Text;
localHelper.CommandText = sqlstr;
localHelper.ClearParameter();
localHelper.AddParameter("@Barcode", barcode);
DataTable dt = localHelper.ToDataTable();
return dt.Rows.Count > 0;
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("存盘业务-判断车报表中条码是否存在失败:" + ex.Message);
return false;
}
}
private void getLotBarcode(DbHelper localHelper)
{
string barcode = planID.Trim() + finishedNumber.ToString("D4");
//ICSharpCode.Core.LoggingService.Debug("每车存盘barcode=" + barcode);
if (hasSaveBarCode(localHelper, barcode))
{
ICSharpCode.Core.LoggingService.Debug("返回了2222每车存盘barcode=" + barcode);
return;
}
//ICSharpCode.Core.LoggingService.Debug("赋值了每车存盘barcode=" + barcode);
this.barcode = barcode;
}
public void IniLotBarcode(DbHelper localHelper, RecipeData.PptPlanInfo planInfo)
{
try
{
#region 获取当班物料生产数量 SerialBatchId
localHelper.CommandType = CommandType.Text;
string sqlstr = @"SELECT * FROM PptLotBatchCount t1
INNER JOIN ppt_plan t2 ON t1.FirstPlanID=t2.plan_id
INNER JOIN ppt_plan t3
ON t2.down_date=t3.down_date AND t2.shift=t3.shift
AND t2.mater_code=t3.mater_code
AND t2.edt_code=t3.edt_code
WHERE t3.plan_id=@PlanID";
localHelper.CommandText = sqlstr;
localHelper.ClearParameter();
localHelper.AddParameter("@PlanID", this.planID);
DataTable dt = localHelper.ToDataTable();
int iLotBatchCount = 0;
if (dt != null && dt.Rows.Count > 0)
{
object maxCode = dt.Rows[0]["PCount"];
if (maxCode != null && maxCode != DBNull.Value)
{
int.TryParse(maxCode.ToString(), out iLotBatchCount);
}
this.firstPlanID = dt.Rows[0]["FirstPlanID"].ToString().Trim();
}
else
{
sqlstr = @"INSERT INTO dbo.PptLotBatchCount ( FirstPlanID ,PCount) VALUES ( @FirstPlanID, 0);";
localHelper.ClearParameter();
localHelper.CommandText = sqlstr;
localHelper.AddParameter("@FirstPlanID", this.planID.Trim());
localHelper.ExecuteNonQuery();
this.firstPlanID = this.planID;
}
iLotBatchCount++;
sqlstr = @"UPDATE PptLotBatchCount SET PCount=PCount+1 WHERE FirstPlanID=@FirstPlanID";
localHelper.ClearParameter();
localHelper.CommandText = sqlstr;
localHelper.AddParameter("@FirstPlanID", this.firstPlanID);
localHelper.ExecuteNonQuery();
this.serialBatchId = iLotBatchCount;
#endregion
#region 获取玲珑车次
this._llSerialId = this.GetLLSerialID(localHelper, planInfo.RecipeMaterialCode.Trim());
#endregion
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("存盘业务-判断车报表中条码是否存在失败:" + ex.Message);
}
}
/// <summary>
/// 获取玲珑车次
/// </summary>
/// <param name="localHelper">本地数据访问对象</param>
/// <param name="materCode">配方物料代码</param>
/// <returns>返回玲珑车次</returns>
public int GetLLSerialID(DbHelper localHelper, string materCode)
{
try
{
FeedingAction action = new FeedingAction();
string hrCode = action.GetConfigValue("LastUserID", "");
localHelper.CommandType = CommandType.StoredProcedure;
localHelper.ClearParameter();
localHelper.CommandText = "GetMaxSerialIDNew";
localHelper.AddParameter("@HrCode", hrCode);
localHelper.AddParameter("@MaterialCode", materCode);
localHelper.AddParameter("@ZJSCode", "");
object result = localHelper.ToScalar();
if (result == null || result == System.DBNull.Value)
{
return 0;
}
else
{
int IntResult = 0;
int.TryParse(result.ToString(), out IntResult);
return IntResult;
}
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("存盘业务-获取玲珑车次失败:" + ex.Message);
return 0;
}
}
}
}