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.
83 lines
2.8 KiB
83 lines
2.8 KiB
4 years ago
|
using System;
|
||
|
using System.Collections.Generic;
|
||
|
using System.Linq;
|
||
|
using System.Text;
|
||
|
using QMAPP.FJC.Entity.Operation;
|
||
|
using QMAPP.FJC.DAL.Operation;
|
||
|
|
||
|
namespace QMAPP.FJC.TRACING.CodeGenerators
|
||
|
{
|
||
|
public class AssemblyCodeGenerator:DAInterface.ICodeGenerator
|
||
|
{
|
||
|
public string Generate(string materialcode, DateTime time, dynamic parameters)
|
||
|
{
|
||
|
DAL.Operation.MainDAL maindal = new DAL.Operation.MainDAL();
|
||
|
PrintCode printcode = maindal.GetMaxANDMinMainCode(materialcode);
|
||
|
string maxcode = maindal.GetMaxMainCode(printcode.MINVALUE, printcode.MAXVALUE);
|
||
|
string newcode = "1";
|
||
|
if (!string.IsNullOrEmpty(maxcode))
|
||
|
{
|
||
|
newcode = (Convert.ToInt32(maxcode) + 1) + "";
|
||
|
}
|
||
|
|
||
|
if (Convert.ToInt32(newcode) > printcode.MAXVALUE)
|
||
|
{
|
||
|
throw new Exception("该配置零件条码流水号溢出,请重新设置!");
|
||
|
}
|
||
|
newcode = "052 4XR" + newcode.PadLeft(7, '0');
|
||
|
|
||
|
string finalcode = newcode + CalculateChecksum(newcode);
|
||
|
|
||
|
printcode.MAINCODE = finalcode;
|
||
|
printcode.ISCOMPLETE = 0;
|
||
|
printcode.SERIAL_NUM = 0;
|
||
|
PrintCodeDAL dal = new PrintCodeDAL();
|
||
|
dal.Update(printcode);
|
||
|
|
||
|
return finalcode;
|
||
|
|
||
|
#region
|
||
|
//DAL.Operation.MainDAL maindal = new DAL.Operation.MainDAL();
|
||
|
|
||
|
//PrintCode condition = maindal.NewGetMaxMainCode(materialcode);
|
||
|
|
||
|
//string newcode = "1";
|
||
|
//if (!string.IsNullOrEmpty(condition.MAINCODE))
|
||
|
//{
|
||
|
// newcode = (Convert.ToInt32(condition.MAINCODE.Substring(1, 6)) + 1) + "";
|
||
|
//}
|
||
|
//newcode = "052 4XR" + condition.MAINCODE.Substring(0, 1) + newcode.PadLeft(6, '0');
|
||
|
|
||
|
//newcode = newcode + CalculateChecksum(newcode);
|
||
|
|
||
|
////更新T_AW_PRINTCODE表
|
||
|
//PrintCode pc = new PrintCode();
|
||
|
//pc.PID = condition.PID;
|
||
|
//pc.MAINCODE = newcode;
|
||
|
//pc.ISCOMPLETE = 0;
|
||
|
//pc.PRODUCTCODE = condition.PRODUCTCODE;
|
||
|
//pc.CREATETIME = System.DateTime.Now;
|
||
|
|
||
|
//PrintCodeDAL dal = new PrintCodeDAL();
|
||
|
//dal.Update(pc);
|
||
|
//return newcode;
|
||
|
#endregion
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// 计算验证码
|
||
|
/// </summary>
|
||
|
/// <returns></returns>
|
||
|
public static string CalculateChecksum(string barcode)
|
||
|
{
|
||
|
string chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%";
|
||
|
int sum = 0;
|
||
|
foreach (var c in barcode)
|
||
|
{
|
||
|
sum += chars.IndexOf(c);
|
||
|
}
|
||
|
int rem = sum % chars.Length;
|
||
|
return chars[rem].ToString();
|
||
|
}
|
||
|
}
|
||
|
}
|