You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
423 lines
15 KiB
423 lines
15 KiB
3 years ago
|
using System;
|
||
|
using System.Collections.Generic;
|
||
|
using System.Linq;
|
||
|
using System.Text;
|
||
|
|
||
|
//Ref:
|
||
|
using System.Data;
|
||
|
|
||
|
using QMAPP.BoraUpgrade.DAL;
|
||
|
using QMAPP.BoraUpgrade.Entity;
|
||
|
|
||
|
using System.Text.RegularExpressions;
|
||
|
|
||
|
namespace QMAPP.BoraUpgrade.BLL
|
||
|
{
|
||
|
public class PrintCodeRouteHelper
|
||
|
{
|
||
|
#region 获取全部打码规则
|
||
|
/// <summary>
|
||
|
/// 获取全部打码规则
|
||
|
/// </summary>
|
||
|
/// <returns></returns>
|
||
|
public static List<T_CC_PrintCodeRoute> GetAllPrintCodeRouteList()
|
||
|
{
|
||
|
List<T_CC_PrintCodeRoute> returnVal = null;
|
||
|
|
||
|
DataTable dataSrouce = PrintCodeRouteDataAccess.GetPrintCodeRouteAllList();
|
||
|
|
||
|
if (dataSrouce.Rows.Count > 0)
|
||
|
{
|
||
|
returnVal = new List<T_CC_PrintCodeRoute>();
|
||
|
|
||
|
foreach (DataRow currDataRow in dataSrouce.Rows)
|
||
|
{
|
||
|
T_CC_PrintCodeRoute newPrintCodeRoute = new T_CC_PrintCodeRoute();
|
||
|
|
||
|
newPrintCodeRoute.PrintCodeRouteID = int.Parse(currDataRow[0].ToString());
|
||
|
|
||
|
newPrintCodeRoute.BarCodeRule = currDataRow[1].ToString();
|
||
|
|
||
|
newPrintCodeRoute.MachineName = currDataRow[2].ToString();
|
||
|
|
||
|
newPrintCodeRoute.MachineCode = currDataRow[3].ToString();
|
||
|
|
||
|
newPrintCodeRoute.Material_Code = currDataRow[4].ToString();
|
||
|
|
||
|
newPrintCodeRoute.WorkCell_Code = currDataRow[5].ToString();
|
||
|
|
||
|
newPrintCodeRoute.WorkLoc_Code = currDataRow[6].ToString();
|
||
|
|
||
|
newPrintCodeRoute.WorkCenter = currDataRow[7].ToString();
|
||
|
|
||
|
newPrintCodeRoute.Matrail_Type = currDataRow[8].ToString();
|
||
|
|
||
|
newPrintCodeRoute.IsProduct = bool.Parse(currDataRow[9].ToString());
|
||
|
|
||
|
newPrintCodeRoute.IsAppend = bool.Parse(currDataRow[10].ToString());
|
||
|
|
||
|
newPrintCodeRoute.Color = int.Parse(currDataRow["Color"].ToString());
|
||
|
|
||
|
newPrintCodeRoute.MachineID = currDataRow["MachineID"].ToString();
|
||
|
|
||
|
returnVal.Add(newPrintCodeRoute);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
return returnVal;
|
||
|
}
|
||
|
#endregion
|
||
|
|
||
|
#region
|
||
|
/// <summary>
|
||
|
/// 处理打码路由
|
||
|
/// </summary>
|
||
|
/// <param name="ProductCode">产品码</param>
|
||
|
/// <param name="WorkCell_Code">工位码</param>
|
||
|
public static T_CC_PrintCodeRoute ProcessPrintCodeRoute(List<T_CC_PrintCodeRoute> ePrintCodeRouteList, string ProductCode, string WorkCell_Code)
|
||
|
{
|
||
|
T_CC_PrintCodeRoute returnVal = null;
|
||
|
|
||
|
//提取产品信息
|
||
|
T_AW_PRODUCT eProduct = ProductHelper.GetProductByProductCode(ProductCode);
|
||
|
|
||
|
if (eProduct == null)
|
||
|
{
|
||
|
#region 处理新增
|
||
|
foreach ( T_CC_PrintCodeRoute ePrintCodeRoute in ePrintCodeRouteList )
|
||
|
{
|
||
|
//匹配工位
|
||
|
T_CC_PrintCodeRoute eMatchingPrintCodeRoute =
|
||
|
ePrintCodeRouteList.Find(s => s.WorkCell_Code == WorkCell_Code);
|
||
|
|
||
|
//判断是否存在匹配
|
||
|
if ( eMatchingPrintCodeRoute == null )
|
||
|
{
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
//changed by wrx 20200312 Regex.IsMatch("A3ZQZC202003120003", "1")=true Regex.IsMatch("A3ZQZC202003", "1")=false 不知道为什么
|
||
|
|
||
|
string realProductCode = string.Empty;
|
||
|
|
||
|
string createTime = string.Empty;
|
||
|
|
||
|
string color = string.Empty;
|
||
|
|
||
|
string machineID = string.Empty;
|
||
|
|
||
|
|
||
|
if ( ProductCode.Length == 29 )
|
||
|
{
|
||
|
realProductCode = ProductCode.Substring(0, 23);
|
||
|
|
||
|
createTime = string.Format("20{0}-{1}-{2} {3}:{4}:{5}", ProductCode.Substring(11, 2), ProductCode.Substring(13, 2), ProductCode.Substring(15, 2),
|
||
|
ProductCode.Substring(17, 2), ProductCode.Substring(19, 2), ProductCode.Substring(21, 2)
|
||
|
);
|
||
|
|
||
|
color = ProductCode.Substring(23, 1);
|
||
|
|
||
|
machineID = ProductCode.Substring(24, 1);
|
||
|
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
if (System.Text.RegularExpressions.Regex.IsMatch(realProductCode, ePrintCodeRoute.BarCodeRule) == true
|
||
|
&& ePrintCodeRoute.WorkCell_Code.ToUpper().Trim() == WorkCell_Code.ToUpper().Trim()
|
||
|
&& ePrintCodeRoute.BarCodeRule != "1" && ePrintCodeRoute.BarCodeRule != "2" && ePrintCodeRoute.BarCodeRule != "3"
|
||
|
&& color == ePrintCodeRoute.Color.ToString() && machineID == ePrintCodeRoute.MachineID
|
||
|
)
|
||
|
{
|
||
|
if (eMatchingPrintCodeRoute.IsProduct == true)
|
||
|
{
|
||
|
//判断是否追加
|
||
|
if (eMatchingPrintCodeRoute.IsAppend == true)
|
||
|
{
|
||
|
#region 组成新增产品实例
|
||
|
T_AW_PRODUCT newProduct = new T_AW_PRODUCT();
|
||
|
|
||
|
newProduct.PID = Guid.NewGuid().ToString();
|
||
|
|
||
|
newProduct.PRODUCTTYPE = string.Empty;
|
||
|
|
||
|
newProduct.PRODUCTCODE = ProductCode;
|
||
|
|
||
|
newProduct.PRODUCTSOURCE = "0";
|
||
|
|
||
|
newProduct.MACHINENAME = ePrintCodeRoute.MachineName;
|
||
|
|
||
|
newProduct.MACHINECODDE = ePrintCodeRoute.MachineCode;
|
||
|
|
||
|
newProduct.MATERIAL_CODE = ePrintCodeRoute.Material_Code;
|
||
|
|
||
|
newProduct.STATUS = "0";
|
||
|
|
||
|
newProduct.OUTFLAG = "0";
|
||
|
|
||
|
newProduct.CAPACITY = 1;
|
||
|
|
||
|
newProduct.USINGCOUNT = 0;
|
||
|
|
||
|
newProduct.WORKCELL_CODE = ePrintCodeRoute.WorkCell_Code;
|
||
|
|
||
|
newProduct.WORKLOC_CODE = ePrintCodeRoute.WorkLoc_Code;
|
||
|
|
||
|
newProduct.WORKCENTER_CODE = ePrintCodeRoute.WorkCenter;
|
||
|
|
||
|
newProduct.MATERIAL_TYPE = ePrintCodeRoute.Matrail_Type;
|
||
|
|
||
|
newProduct.USINGSTATE = "0";
|
||
|
|
||
|
newProduct.CREATEDATE = DateTime.Parse(createTime);
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
//新增
|
||
|
ProductHelper.Insert(newProduct);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//非产品
|
||
|
if (eMatchingPrintCodeRoute.IsProduct == false)
|
||
|
{
|
||
|
returnVal = eMatchingPrintCodeRoute;
|
||
|
}
|
||
|
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
#endregion
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if (ePrintCodeRouteList == null || ePrintCodeRouteList.Count == 0) return null;
|
||
|
//匹配工位
|
||
|
List<T_CC_PrintCodeRoute> eMatchingPrintCodeRouteList =
|
||
|
ePrintCodeRouteList.FindAll(s => s.WorkCell_Code == WorkCell_Code);
|
||
|
|
||
|
|
||
|
#region 处理更新
|
||
|
foreach (T_CC_PrintCodeRoute ePrintCodeRoute in eMatchingPrintCodeRouteList)
|
||
|
{
|
||
|
if ( System.Text.RegularExpressions.Regex.IsMatch(ProductCode, ePrintCodeRoute.BarCodeRule) == false )
|
||
|
{
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
//changed by wrx 20200312 Regex.IsMatch("A3ZQZC202003120003", "1")=true Regex.IsMatch("A3ZQZC202003", "1")=false 不知道为什么
|
||
|
if (ePrintCodeRoute.WorkCell_Code.ToUpper().Trim() == WorkCell_Code.ToUpper().Trim() && ePrintCodeRoute.IsAppend == false && eProduct.USINGSTATE == "0"
|
||
|
&& ePrintCodeRoute.BarCodeRule != "1" && ePrintCodeRoute.BarCodeRule != "2" && ePrintCodeRoute.BarCodeRule != "3")
|
||
|
{
|
||
|
T_AW_PRODUCT modifyProduct = new T_AW_PRODUCT();
|
||
|
|
||
|
modifyProduct.PID = eProduct.PID;
|
||
|
|
||
|
//modifyProduct.MATERIAL_CODE = ePrintCodeRoute.Material_Code;
|
||
|
|
||
|
modifyProduct.WORKCELL_CODE = ePrintCodeRoute.WorkCell_Code;
|
||
|
|
||
|
modifyProduct.WORKLOC_CODE = ePrintCodeRoute.WorkLoc_Code;
|
||
|
|
||
|
modifyProduct.WORKCENTER_CODE = ePrintCodeRoute.WorkCenter;
|
||
|
|
||
|
modifyProduct.MATERIAL_TYPE = ePrintCodeRoute.Matrail_Type;
|
||
|
|
||
|
ProductHelper.Modify(modifyProduct);
|
||
|
}
|
||
|
}
|
||
|
#endregion
|
||
|
}
|
||
|
|
||
|
return returnVal;
|
||
|
}
|
||
|
|
||
|
|
||
|
public static void SaveLLightBarCode(List<T_CC_PrintCodeRoute> pPrintCodeRouteList,string pProductCode,string pWorkCellCode)
|
||
|
{
|
||
|
foreach(T_CC_PrintCodeRoute route in pPrintCodeRouteList)
|
||
|
{
|
||
|
if(System.Text.RegularExpressions.Regex.IsMatch(pProductCode, route.BarCodeRule) == true && route.WorkCell_Code == pWorkCellCode)
|
||
|
{
|
||
|
DataTable exsitTable = PrintCodeRouteDataAccess.GetExsitProductCodeQty(pProductCode, pWorkCellCode);
|
||
|
if(exsitTable.Rows.Count == 0)
|
||
|
{
|
||
|
T_AW_PRODUCT newProduct = new T_AW_PRODUCT();
|
||
|
|
||
|
newProduct.PID = Guid.NewGuid().ToString();
|
||
|
|
||
|
newProduct.PRODUCTTYPE = string.Empty;
|
||
|
|
||
|
newProduct.PRODUCTCODE = pProductCode;
|
||
|
|
||
|
newProduct.PRODUCTSOURCE = "0";
|
||
|
|
||
|
newProduct.MACHINENAME = route.MachineName;
|
||
|
|
||
|
newProduct.MACHINECODDE = route.MachineCode;
|
||
|
|
||
|
newProduct.MATERIAL_CODE = route.Material_Code;
|
||
|
|
||
|
newProduct.STATUS = "0";
|
||
|
|
||
|
newProduct.OUTFLAG = "0";
|
||
|
|
||
|
newProduct.CAPACITY = 1;
|
||
|
|
||
|
newProduct.USINGCOUNT = 0;
|
||
|
|
||
|
newProduct.WORKCELL_CODE = route.WorkCell_Code;
|
||
|
|
||
|
newProduct.WORKLOC_CODE = route.WorkLoc_Code;
|
||
|
|
||
|
newProduct.WORKCENTER_CODE = route.WorkCenter;
|
||
|
|
||
|
newProduct.MATERIAL_TYPE = route.Matrail_Type;
|
||
|
|
||
|
newProduct.USINGSTATE = "0";
|
||
|
|
||
|
newProduct.CREATEDATE = DateTime.Now;
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
//新增
|
||
|
ProductHelper.Insert(newProduct);
|
||
|
}
|
||
|
//else
|
||
|
//{
|
||
|
// T_AW_PRODUCT modifyProduct = new T_AW_PRODUCT();
|
||
|
|
||
|
// modifyProduct.PID = exsitTable.Rows[0]["PID"].ToString();
|
||
|
|
||
|
// //modifyProduct.MATERIAL_CODE = ePrintCodeRoute.Material_Code;
|
||
|
|
||
|
// modifyProduct.WORKCELL_CODE = route.WorkCell_Code;
|
||
|
|
||
|
// modifyProduct.WORKLOC_CODE = route.WorkLoc_Code;
|
||
|
|
||
|
// modifyProduct.WORKCENTER_CODE = route.WorkCenter;
|
||
|
|
||
|
// modifyProduct.MATERIAL_TYPE = route.Matrail_Type;
|
||
|
|
||
|
// ProductHelper.Modify(modifyProduct);
|
||
|
//}
|
||
|
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
#region 处理打码路由
|
||
|
/// <summary>
|
||
|
/// 处理打码路由
|
||
|
/// </summary>
|
||
|
/// <param name="ProductCode">产品码</param>
|
||
|
/// <param name="WorkCell_Code">工位码</param>
|
||
|
public static T_CC_PrintCodeRoute ProcessPrintCodeRoute(List<T_CC_PrintCodeRoute> ePrintCodeRouteList, string ProductCode)
|
||
|
{
|
||
|
T_CC_PrintCodeRoute returnVal = null;
|
||
|
|
||
|
//提取产品信息
|
||
|
T_AW_PRODUCT eProduct = ProductHelper.GetProductByProductCode(ProductCode);
|
||
|
|
||
|
if (eProduct == null)
|
||
|
{
|
||
|
#region 处理新增
|
||
|
foreach (T_CC_PrintCodeRoute ePrintCodeRoute in ePrintCodeRouteList)
|
||
|
{
|
||
|
|
||
|
//changed by wrx 20200312 Regex.IsMatch("A3ZQZC202003120003", "1")=true Regex.IsMatch("A3ZQZC202003", "1")=false 不知道为什么
|
||
|
|
||
|
string realProductCode = string.Empty;
|
||
|
|
||
|
string createTime = string.Empty;
|
||
|
|
||
|
string color = string.Empty;
|
||
|
|
||
|
string machineID = string.Empty;
|
||
|
|
||
|
|
||
|
if (ProductCode.Length == 29)
|
||
|
{
|
||
|
realProductCode = ProductCode.Substring(0, 23);
|
||
|
|
||
|
createTime = string.Format("20{0}-{1}-{2} {3}:{4}:{5}", ProductCode.Substring(11, 2), ProductCode.Substring(13, 2), ProductCode.Substring(15, 2),
|
||
|
ProductCode.Substring(17, 2), ProductCode.Substring(19, 2), ProductCode.Substring(21, 2)
|
||
|
);
|
||
|
|
||
|
color = ProductCode.Substring(23, 1);
|
||
|
|
||
|
machineID = ProductCode.Substring(24, 1);
|
||
|
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
if (System.Text.RegularExpressions.Regex.IsMatch(realProductCode, ePrintCodeRoute.BarCodeRule) == true
|
||
|
&& ePrintCodeRoute.BarCodeRule != "1" && ePrintCodeRoute.BarCodeRule != "2" && ePrintCodeRoute.BarCodeRule != "3"
|
||
|
&& color == ePrintCodeRoute.Color.ToString() && machineID == ePrintCodeRoute.MachineID
|
||
|
)
|
||
|
{
|
||
|
#region 组成新增产品实例
|
||
|
T_AW_PRODUCT newProduct = new T_AW_PRODUCT();
|
||
|
|
||
|
newProduct.PID = Guid.NewGuid().ToString();
|
||
|
|
||
|
newProduct.PRODUCTTYPE = string.Empty;
|
||
|
|
||
|
newProduct.PRODUCTCODE = ProductCode;
|
||
|
|
||
|
newProduct.PRODUCTSOURCE = "0";
|
||
|
|
||
|
newProduct.MACHINENAME = ePrintCodeRoute.MachineName;
|
||
|
|
||
|
newProduct.MACHINECODDE = ePrintCodeRoute.MachineCode;
|
||
|
|
||
|
newProduct.MATERIAL_CODE = ePrintCodeRoute.Material_Code;
|
||
|
|
||
|
newProduct.STATUS = "0";
|
||
|
|
||
|
newProduct.OUTFLAG = "0";
|
||
|
|
||
|
newProduct.CAPACITY = 1;
|
||
|
|
||
|
newProduct.USINGCOUNT = 0;
|
||
|
|
||
|
newProduct.WORKCELL_CODE = ePrintCodeRoute.WorkCell_Code;
|
||
|
|
||
|
newProduct.WORKLOC_CODE = ePrintCodeRoute.WorkLoc_Code;
|
||
|
|
||
|
newProduct.WORKCENTER_CODE = ePrintCodeRoute.WorkCenter;
|
||
|
|
||
|
newProduct.MATERIAL_TYPE = ePrintCodeRoute.Matrail_Type;
|
||
|
|
||
|
newProduct.USINGSTATE = "0";
|
||
|
|
||
|
newProduct.CREATEDATE = DateTime.Parse(createTime);
|
||
|
|
||
|
#endregion
|
||
|
|
||
|
//新增
|
||
|
ProductHelper.Insert(newProduct);
|
||
|
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
#endregion
|
||
|
}
|
||
|
|
||
|
return returnVal;
|
||
|
}
|
||
|
#endregion
|
||
|
}
|
||
|
}
|