2023-05-23 16:13:17 +08:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Collections;
|
|
|
|
|
using System.Data;
|
|
|
|
|
using System.Data.OleDb;
|
|
|
|
|
using System.IO;
|
|
|
|
|
using System.Security.Cryptography;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Diagnostics;
|
|
|
|
|
using System.Reflection;
|
|
|
|
|
using System.Web;
|
|
|
|
|
using System.Web.UI;
|
|
|
|
|
using System.Web.UI.WebControls;
|
|
|
|
|
using System.Net;
|
|
|
|
|
using System.Text.RegularExpressions;
|
|
|
|
|
using System.Globalization;
|
2023-09-04 22:41:19 +08:00
|
|
|
|
using System.Runtime.Serialization.Json;
|
|
|
|
|
using Newtonsoft.Json;
|
2023-11-21 19:18:23 +08:00
|
|
|
|
using ThoughtWorks.QRCode.Codec;
|
2023-05-23 16:13:17 +08:00
|
|
|
|
namespace DeiNiu.Utils
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
// public enum op_flag { add = 1, update, delete, getObj, queryAll, queryExample,queryActived,getPk, getCount};
|
|
|
|
|
// public enum ProjectStatus { <20><><EFBFBD><EFBFBD>δ<EFBFBD>ύ, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԥ<EFBFBD><D4A4>, <20><><EFBFBD><EFBFBD>Ԥ<EFBFBD><D4A4>ͨ<EFBFBD><CDA8>, <20><><EFBFBD><EFBFBD>Ԥ<EFBFBD><D4A4>δͨ<CEB4><CDA8>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δͨ<CEB4><CDA8>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δͨ<CEB4><CDA8>,ɾ<><C9BE>δ<EFBFBD>ύ,ɾ<><C9BE><EFBFBD><EFBFBD>Ԥ<EFBFBD><D4A4>,ɾ<><C9BE>Ԥ<EFBFBD><D4A4>ͨ<EFBFBD><CDA8>,ɾ<><C9BE>Ԥ<EFBFBD><D4A4>δͨ<CEB4><CDA8>,ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>,ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δͨ<CEB4><CDA8>,ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>,ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δͨ<CEB4><CDA8>,<2C><>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD> };
|
|
|
|
|
public enum FileType {Project,ProjectDetail,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼƻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD>ȼƻ<EFBFBD> };
|
|
|
|
|
public struct ProjectDetailStatus
|
|
|
|
|
{
|
|
|
|
|
public static string <EFBFBD><EFBFBD><EFBFBD><EFBFBD>δͨ<EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return "<22><><EFBFBD><EFBFBD>δͨ<CEB4><CDA8>";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static string <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return "<22><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public static string <EFBFBD><EFBFBD><EFBFBD><EFBFBD>δͨ<EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return "<22><><EFBFBD><EFBFBD>δͨ<CEB4><CDA8>";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static string <EFBFBD>¶<EFBFBD>δ<EFBFBD>ύ
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return "<22>¶<EFBFBD>δ<EFBFBD>ύ";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static string <EFBFBD>¶<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ύ
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return "<22>¶<EFBFBD><C2B6><EFBFBD><EFBFBD>ύ";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public static string <EFBFBD><EFBFBD>Ԥ<EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return "<22><>Ԥ<EFBFBD><D4A4>";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public static string Ԥ<EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return "Ԥ<><D4A4>ͨ<EFBFBD><CDA8>";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public static string Ԥ<EFBFBD><EFBFBD>δͨ<EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return "Ԥ<><D4A4>δͨ<CEB4><CDA8>";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public static string <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return "<22><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public struct ApproveRoles
|
|
|
|
|
{
|
|
|
|
|
public static string YuShen
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return "<22><>ĿԤ<C4BF><D4A4>";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public static string ShenHe
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return "<22><>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public static string KaoHe
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return "<22><>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public static string <EFBFBD><EFBFBD>Ŀά<EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return "<22><>Ŀά<C4BF><CEAC>";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public struct ProjectStatus
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
public static string <EFBFBD><EFBFBD>Ŀ<EFBFBD>ѷ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return "<22><>Ŀ<EFBFBD>ѷ<EFBFBD><D1B7><EFBFBD>";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public static string <EFBFBD><EFBFBD>Ŀδ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return "<22><>Ŀδ<C4BF><CEB4><EFBFBD><EFBFBD>";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static string <EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD>ύ
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return "<22><><EFBFBD><EFBFBD>δ<EFBFBD>ύ";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static string <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ύ
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ύ";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static string <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public static string <EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return "<22><>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public static string <EFBFBD><EFBFBD>Ŀ<EFBFBD>ⶳ
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return "<22><>Ŀ<EFBFBD>ⶳ";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public static string <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public static string <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δͨ<EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δͨ<CEB4><CDA8>";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public static string <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԥ<EFBFBD><EFBFBD>δͨ<EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return "<22><><EFBFBD><EFBFBD>Ԥ<EFBFBD><D4A4>δͨ<CEB4><CDA8>";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public static string <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԥ<EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return "<22><><EFBFBD><EFBFBD>Ԥ<EFBFBD><D4A4>ͨ<EFBFBD><CDA8>";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static string ɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δͨ<EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return "ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δͨ<CEB4><CDA8>";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static string ɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return "ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public static string ɾ<EFBFBD><EFBFBD>Ԥ<EFBFBD><EFBFBD>δͨ<EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return "ɾ<><C9BE>Ԥ<EFBFBD><D4A4>δͨ<CEB4><CDA8>";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public static string ɾ<EFBFBD><EFBFBD>Ԥ<EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return "ɾ<><C9BE>Ԥ<EFBFBD><D4A4>ͨ<EFBFBD><CDA8>";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static string ɾ<EFBFBD><EFBFBD>δ<EFBFBD>ύ
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return "ɾ<><C9BE>δ<EFBFBD>ύ";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public static string ɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ύ
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return "ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD>ύ";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public static string <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δͨ<EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δͨ<CEB4><CDA8>";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public static string <EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return "<22><>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public static string <EFBFBD><EFBFBD>Ŀδ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return "<22><>Ŀδ<C4BF><CEB4><EFBFBD><EFBFBD>";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public static string ɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δͨ<EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return "ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δͨ<CEB4><CDA8>";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public static string ɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return "ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
<EFBFBD><EFBFBD> public struct appScope
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// used for storing logic object in session
|
|
|
|
|
/// when page changes in server side, logic object in session
|
|
|
|
|
/// will be replaced by new one.
|
|
|
|
|
/// </summary>
|
|
|
|
|
public static string PagelevelObj
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return "PageLevelObj";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public class MyTracer
|
|
|
|
|
{
|
|
|
|
|
private static TraceSwitch appSwitch = new TraceSwitch("TraceSwitch", "Switch in config file");
|
|
|
|
|
|
|
|
|
|
private static string render(object clz, string msg)
|
|
|
|
|
{
|
|
|
|
|
//time
|
|
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
|
|
DateTime dt = DateTime.Now;
|
|
|
|
|
sb.Append(dt.ToLongDateString()).Append(" ").Append(dt.ToLongTimeString()).Append(" - ");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
StackTrace stackTrace = new StackTrace();
|
|
|
|
|
StackFrame stackFrame = stackTrace.GetFrame(2);
|
|
|
|
|
|
|
|
|
|
//class name
|
|
|
|
|
sb.Append(clz.GetType().FullName).Append(" [");
|
|
|
|
|
|
|
|
|
|
//method name
|
|
|
|
|
MethodBase methodBase = stackFrame.GetMethod();
|
|
|
|
|
|
|
|
|
|
sb.Append(methodBase.Name).Append("] ");
|
|
|
|
|
|
|
|
|
|
//the msg
|
|
|
|
|
sb.Append(msg);
|
|
|
|
|
|
|
|
|
|
return sb.ToString();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
public static void Error(object clz, string msg)
|
|
|
|
|
{
|
|
|
|
|
Trace.WriteLineIf(appSwitch.TraceError, render(clz, "[ERROR] " + msg));
|
|
|
|
|
}
|
|
|
|
|
public static void Warning(object clz, string msg)
|
|
|
|
|
{
|
|
|
|
|
Trace.WriteLineIf(appSwitch.TraceWarning, render(clz, "[WARNING] " + msg));
|
|
|
|
|
}
|
|
|
|
|
public static void Info(object clz, string msg)
|
|
|
|
|
{
|
|
|
|
|
Trace.WriteLineIf(appSwitch.TraceInfo, render(clz, "[INFO] " + msg));
|
|
|
|
|
}
|
|
|
|
|
public static void Verbose(object clz, string msg)
|
|
|
|
|
{
|
|
|
|
|
Trace.WriteLineIf(appSwitch.TraceVerbose, render(clz, "[VERBOSE] " + msg));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public class Util
|
|
|
|
|
{
|
|
|
|
|
public static string Encrypt(string password)//<2F><><EFBFBD>ܺ<EFBFBD><DCBA><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
/*
|
|
|
|
|
Byte[] clearBytes = new UnicodeEncoding().GetBytes(password);
|
|
|
|
|
Byte[] hashedBytes = ((HashAlgorithm)CryptoConfig.CreateFromName("MD5")).ComputeHash(clearBytes);
|
|
|
|
|
return BitConverter.ToString(hashedBytes);
|
|
|
|
|
*/
|
|
|
|
|
return MD5(password);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//http://events.jianshu.io/p/41b07b52fc33
|
|
|
|
|
public static String MD5(String str)
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
byte[] result = ((HashAlgorithm)CryptoConfig.CreateFromName("MD5")).ComputeHash(Encoding.UTF8.GetBytes(str));
|
|
|
|
|
|
|
|
|
|
StringBuilder output = new StringBuilder(16);
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < result.Length; i++)
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
// convert from hexa-decimal to character?
|
|
|
|
|
|
|
|
|
|
output.Append((result[i]).ToString("x2", System.Globalization.CultureInfo.InvariantCulture));
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return output.ToString();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
2023-11-21 19:18:23 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static void GetCheckedNode(TreeNodeCollection tnc, ArrayList checkedvalues)
|
2023-05-23 16:13:17 +08:00
|
|
|
|
{
|
|
|
|
|
foreach (TreeNode node in tnc)
|
|
|
|
|
{
|
|
|
|
|
if (node.Checked)
|
|
|
|
|
{
|
|
|
|
|
checkedvalues.Add(node.Value);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
GetCheckedNode(node.ChildNodes, checkedvalues);
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-11-21 19:18:23 +08:00
|
|
|
|
public static void GetCheckedNode(TreeNodeCollection tnc, ArrayList checkedvalues, ArrayList checkedText)
|
2023-05-23 16:13:17 +08:00
|
|
|
|
{
|
|
|
|
|
foreach (TreeNode node in tnc)
|
|
|
|
|
{
|
|
|
|
|
if (node.Checked)
|
|
|
|
|
{
|
|
|
|
|
checkedvalues.Add(node.Value);
|
|
|
|
|
checkedText.Add(node.Text);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
GetCheckedNode(node.ChildNodes, checkedvalues);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2023-11-21 19:18:23 +08:00
|
|
|
|
public static void SetCheckedNode(TreeNodeCollection tnc, ArrayList setcheckedvalues)
|
2023-05-23 16:13:17 +08:00
|
|
|
|
{
|
|
|
|
|
foreach (TreeNode node in tnc)
|
|
|
|
|
{
|
|
|
|
|
node.Checked = setcheckedvalues.Contains(Convert.ToInt32(node.Value));
|
|
|
|
|
|
|
|
|
|
SetCheckedNode(node.ChildNodes, setcheckedvalues);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD>in sql,return like " 1,2,3"
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="al"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public static string buildWhereIntIn(ArrayList al)
|
|
|
|
|
{
|
|
|
|
|
string whereString = string.Empty;
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < al.Count; i++)
|
|
|
|
|
{
|
2023-11-21 19:18:23 +08:00
|
|
|
|
whereString += "'" + al[i] + "',";
|
2023-05-23 16:13:17 +08:00
|
|
|
|
}
|
|
|
|
|
if (whereString.EndsWith(","))
|
|
|
|
|
{
|
|
|
|
|
whereString = whereString.Substring(0, whereString.Length - 1);
|
|
|
|
|
}
|
|
|
|
|
return whereString;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static DataSet Excel2DataSet(string filepath)
|
|
|
|
|
{
|
|
|
|
|
DataSet ds = new DataSet();
|
|
|
|
|
ArrayList SheeNames = ExcelSheetName(filepath);
|
2023-11-21 19:18:23 +08:00
|
|
|
|
for (int i = 0; i < SheeNames.Count; i++)
|
2023-05-23 16:13:17 +08:00
|
|
|
|
{
|
|
|
|
|
DataTable dt = (ExcelDataSource(filepath, SheeNames[i].ToString())).Tables[0].Copy();
|
|
|
|
|
dt.TableName = SheeNames[i].ToString();
|
|
|
|
|
dt.TableName = dt.TableName.Substring(0, dt.TableName.IndexOf("$"));
|
2023-11-21 19:18:23 +08:00
|
|
|
|
ds.Tables.Add(dt);
|
2023-05-23 16:13:17 +08:00
|
|
|
|
}
|
|
|
|
|
return ds;
|
|
|
|
|
}
|
|
|
|
|
//<2F>÷<EFBFBD><C3B7><EFBFBD>ʵ<EFBFBD>ִ<EFBFBD>Excel<65>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>DataSet<65>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD>filepathΪExcel<65>ļ<EFBFBD><C4BC>ľ<EFBFBD><C4BE><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD> sheetnameΪexcel<65>ļ<EFBFBD><C4BC>еı<D0B5><C4B1><EFBFBD>
|
|
|
|
|
public static DataSet ExcelDataSource(string filepath, string sheetname)
|
|
|
|
|
{
|
|
|
|
|
string strConn;
|
|
|
|
|
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=Excel 8.0;";
|
|
|
|
|
OleDbConnection conn = new OleDbConnection(strConn);
|
|
|
|
|
OleDbDataAdapter oada = new OleDbDataAdapter("select * from [" + sheetname + "]", strConn);
|
|
|
|
|
DataSet ds = new DataSet();
|
|
|
|
|
oada.Fill(ds);
|
|
|
|
|
conn.Close();
|
|
|
|
|
return ds;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>Excel<65>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>sheetname<6D><65>
|
|
|
|
|
public static ArrayList ExcelSheetName(string filepath)
|
|
|
|
|
{
|
|
|
|
|
ArrayList al = new ArrayList();
|
|
|
|
|
string strConn;
|
|
|
|
|
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=Excel 8.0;";
|
|
|
|
|
OleDbConnection conn = new OleDbConnection(strConn);
|
|
|
|
|
conn.Open();
|
|
|
|
|
DataTable sheetNames = conn.GetOleDbSchemaTable
|
|
|
|
|
(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
|
|
|
|
|
conn.Close();
|
|
|
|
|
foreach (DataRow dr in sheetNames.Rows)
|
|
|
|
|
{
|
|
|
|
|
al.Add(dr[2]);
|
|
|
|
|
}
|
|
|
|
|
return al;
|
|
|
|
|
}
|
|
|
|
|
|
2023-11-21 19:18:23 +08:00
|
|
|
|
public static DataView GetTopDataViewRows(DataView dv, int n)
|
|
|
|
|
{
|
|
|
|
|
DataTable dt = dv.Table.Clone();
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < n - 1; i++)
|
|
|
|
|
{
|
|
|
|
|
if (i >= dv.Count)
|
|
|
|
|
{
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
dt.ImportRow(dv[i].Row);
|
|
|
|
|
}
|
|
|
|
|
return new DataView(dt, dv.RowFilter, dv.Sort, dv.RowStateFilter);
|
|
|
|
|
}
|
2023-05-23 16:13:17 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="key">appSettings<67><73>key</param>
|
|
|
|
|
/// <returns>appSettings<67><73>Value</returns>
|
|
|
|
|
//public static string GetConfig(string key)
|
|
|
|
|
//{
|
2023-11-21 19:18:23 +08:00
|
|
|
|
//string _value = string.Empty;
|
|
|
|
|
//System.Configuration.ConfigurationManager config = System.Configuration.ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
|
|
|
|
|
//if (config.AppSettings.Settings[key] != null)
|
|
|
|
|
//{
|
|
|
|
|
// _value = config.AppSettings.Settings[key].Value;
|
|
|
|
|
//}
|
|
|
|
|
//return _value;
|
2023-05-23 16:13:17 +08:00
|
|
|
|
//}
|
2023-11-21 19:18:23 +08:00
|
|
|
|
private static char[] constant =
|
|
|
|
|
{
|
|
|
|
|
'0','1','2','3','4','5','6','7','8','9',
|
|
|
|
|
'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
|
|
|
|
|
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'
|
2023-05-23 16:13:17 +08:00
|
|
|
|
};
|
|
|
|
|
public static string GenerateRandomNumber(int Length)
|
|
|
|
|
{
|
|
|
|
|
System.Text.StringBuilder newRandom = new System.Text.StringBuilder(62);
|
|
|
|
|
Random rd = new Random();
|
|
|
|
|
for (int i = 0; i < Length; i++)
|
|
|
|
|
{
|
|
|
|
|
newRandom.Append(constant[rd.Next(62)]);
|
|
|
|
|
}
|
|
|
|
|
return newRandom.ToString().ToUpper();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
|
|
|
|
|
public static string getCode128(string codeIn)
|
|
|
|
|
{
|
|
|
|
|
//string str ="";
|
|
|
|
|
string result;
|
|
|
|
|
int checksum = 104;
|
|
|
|
|
for (int i = 0; i < codeIn.Length; i++)
|
|
|
|
|
{
|
|
|
|
|
if (codeIn[i] >= 32)
|
|
|
|
|
{
|
|
|
|
|
checksum += (codeIn[i] - 32) * (i + 1);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
checksum += (codeIn[i] + 64) * (i + 1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
checksum = checksum % 103;
|
|
|
|
|
if (checksum < 95)
|
|
|
|
|
{
|
|
|
|
|
checksum += 32;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
checksum += 100;
|
|
|
|
|
}
|
|
|
|
|
result = Convert.ToChar(204) + codeIn +
|
|
|
|
|
Convert.ToChar(checksum) + Convert.ToChar(206);
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static string getPrefix(enumCreateOrderType orderType)
|
|
|
|
|
{
|
|
|
|
|
string prefix = "UN";
|
|
|
|
|
switch (orderType)
|
|
|
|
|
{
|
|
|
|
|
case enumCreateOrderType.repOrderIn:
|
|
|
|
|
prefix = "RPI";
|
|
|
|
|
break;
|
|
|
|
|
case enumCreateOrderType.repOrderOut:
|
|
|
|
|
prefix = WmsConstants.ORDER_PRI_RPO;// "RPO";
|
|
|
|
|
break;
|
|
|
|
|
case enumCreateOrderType.pickOrder:
|
|
|
|
|
prefix = WmsConstants.ORDER_PRI_PICK;//"PICK";
|
|
|
|
|
break;
|
|
|
|
|
case enumCreateOrderType.waveOrder:
|
|
|
|
|
prefix = WmsConstants.ORDER_PRI_WAVE;//"WAVE";
|
|
|
|
|
break;
|
|
|
|
|
case enumCreateOrderType.transOrder:
|
|
|
|
|
prefix = WmsConstants.ORDER_PRI_TRAN;//"TRAN";
|
|
|
|
|
break;
|
|
|
|
|
case enumCreateOrderType.seedsPickOrder:
|
|
|
|
|
prefix = WmsConstants.ORDER_PRI_SEEDS;//"SEED";
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case enumCreateOrderType.pandianOrder:
|
|
|
|
|
prefix = WmsConstants.ORDER_PRI_PANDIAN;//"PAN";
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case enumCreateOrderType.preInOrder:
|
|
|
|
|
prefix = WmsConstants.ORDER_PRI_INORDER;//"PREIN";
|
|
|
|
|
break;
|
|
|
|
|
case enumCreateOrderType.pickJobNo:
|
|
|
|
|
prefix = WmsConstants.ORDER_PRI_WAVEJOB;//"PREIN";
|
|
|
|
|
break;
|
|
|
|
|
case enumCreateOrderType.dpsOrder:
|
|
|
|
|
prefix = WmsConstants.ORDER_DPS_WAVE;//"PREIN";
|
|
|
|
|
break;
|
|
|
|
|
case enumCreateOrderType.obsolete:
|
|
|
|
|
prefix = WmsConstants.ORDER_PRI_OBSOLETE;//"PREIN";
|
|
|
|
|
break;
|
|
|
|
|
case enumCreateOrderType.transferOutside:
|
|
|
|
|
prefix = WmsConstants.ORDER_PRI_TRANSFER_OUTSIDE;//"PREIN";
|
|
|
|
|
break;
|
|
|
|
|
case enumCreateOrderType.transferInternal:
|
2023-12-03 22:13:49 +08:00
|
|
|
|
prefix = WmsConstants.ORDER_PRI_TRANSFER_INSIDE;//"TRI";
|
2023-05-23 16:13:17 +08:00
|
|
|
|
break;
|
|
|
|
|
case enumCreateOrderType.returnVender:
|
2023-12-03 22:13:49 +08:00
|
|
|
|
prefix = WmsConstants.ORDER_PRI_RETURN_VENDER;//"RTV";
|
2023-05-23 16:13:17 +08:00
|
|
|
|
break;
|
|
|
|
|
case enumCreateOrderType.pickOutInvoice:
|
2023-12-03 22:13:49 +08:00
|
|
|
|
prefix = WmsConstants.ORDER_PRI_PICK_OUT_INVOICE;//"PKI";
|
2023-05-23 16:13:17 +08:00
|
|
|
|
break;
|
2023-11-21 19:18:23 +08:00
|
|
|
|
case enumCreateOrderType.selfPickOrder:
|
|
|
|
|
prefix = WmsConstants.ORDER_PRI_PICK_SELF;// ITK
|
|
|
|
|
break;
|
|
|
|
|
case enumCreateOrderType.stockInWithNoOrder:
|
2023-12-03 22:13:49 +08:00
|
|
|
|
prefix = WmsConstants.ORDER_PRI_STK_IN;// STI
|
|
|
|
|
break;
|
|
|
|
|
case enumCreateOrderType.stockLocationDown:
|
|
|
|
|
prefix = WmsConstants.ORDER_PRI_STK_DOWN;// XJ
|
2023-11-21 19:18:23 +08:00
|
|
|
|
break;
|
2023-05-23 16:13:17 +08:00
|
|
|
|
}
|
|
|
|
|
return prefix;
|
|
|
|
|
}
|
|
|
|
|
|
2023-11-21 19:18:23 +08:00
|
|
|
|
public static string getOrderNo(enumCreateOrderType orderType, int seq)
|
|
|
|
|
{
|
2023-05-23 16:13:17 +08:00
|
|
|
|
|
|
|
|
|
string prefix = getPrefix(orderType);
|
|
|
|
|
|
|
|
|
|
|
2024-10-27 23:47:52 +08:00
|
|
|
|
// string orderno = string.Format("{0}{1:D2}{2:D2}{6}{3:D2}{4}{5:D6}", prefix, DateTime.Now.Year - 2000,
|
|
|
|
|
// DateTime.Now.Month, DateTime.Now.Day, GenerateRandomNumber(2), seq, GenerateRandomNumber(1));
|
|
|
|
|
//LogHelper.debug("Utils", string.Format( "create order no ,seq is {0}, orderno is {1}", seq,orderno));
|
|
|
|
|
string orderno = string.Format("{0}{1:D2}{2:D2}{3:D2}{4}{5:D6}", prefix, DateTime.Now.Year - 2000,
|
|
|
|
|
DateTime.Now.Month, DateTime.Now.Day, GenerateRandomNumber(1), seq);
|
2023-05-23 16:13:17 +08:00
|
|
|
|
return orderno;
|
|
|
|
|
}
|
|
|
|
|
public static enumStockRecordType getStockRecordType(int outStoretype)
|
|
|
|
|
{
|
|
|
|
|
enumOutStoreType ost = (enumOutStoreType)outStoretype;
|
|
|
|
|
|
|
|
|
|
switch (ost)
|
|
|
|
|
{
|
|
|
|
|
case enumOutStoreType.<EFBFBD><EFBFBD><EFBFBD>ϳ<EFBFBD><EFBFBD><EFBFBD>:
|
|
|
|
|
return enumStockRecordType.<EFBFBD><EFBFBD><EFBFBD>ϳ<EFBFBD><EFBFBD><EFBFBD>;
|
|
|
|
|
case enumOutStoreType.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
|
|
|
|
return enumStockRecordType.<EFBFBD>˹<EFBFBD>Ӧ<EFBFBD>̳<EFBFBD><EFBFBD><EFBFBD>;
|
|
|
|
|
case enumOutStoreType.<EFBFBD><EFBFBD><EFBFBD>۳<EFBFBD><EFBFBD><EFBFBD>:
|
|
|
|
|
return enumStockRecordType.<EFBFBD><EFBFBD><EFBFBD>۳<EFBFBD><EFBFBD><EFBFBD>;
|
|
|
|
|
case enumOutStoreType.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
|
|
|
|
return enumStockRecordType.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
2023-09-04 22:41:19 +08:00
|
|
|
|
case enumOutStoreType.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
2023-11-21 19:18:23 +08:00
|
|
|
|
return enumStockRecordType.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|
|
|
|
case enumOutStoreType.<EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD><EFBFBD><EFBFBD>:
|
|
|
|
|
return enumStockRecordType.<EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD><EFBFBD><EFBFBD>;
|
|
|
|
|
case enumOutStoreType.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
|
|
|
|
return enumStockRecordType.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|
|
|
|
|
2023-12-03 22:13:49 +08:00
|
|
|
|
case enumOutStoreType.<EFBFBD><EFBFBD>λ<EFBFBD>¼<EFBFBD>:
|
|
|
|
|
return enumStockRecordType.<EFBFBD>ƿ<EFBFBD><EFBFBD>¼<EFBFBD>;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-05-23 16:13:17 +08:00
|
|
|
|
default:
|
|
|
|
|
return enumStockRecordType.<EFBFBD><EFBFBD><EFBFBD>۳<EFBFBD><EFBFBD><EFBFBD>;
|
2023-11-21 19:18:23 +08:00
|
|
|
|
|
2023-05-23 16:13:17 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static string getShortDateString(string date)
|
|
|
|
|
{
|
|
|
|
|
// DateTimeFormatInfo dtFormat = new System.Globalization.DateTimeFormatInfo() ;
|
|
|
|
|
|
|
|
|
|
// dtFormat.ShortDatePattern = "yyyy-MM-dd";
|
|
|
|
|
// return Convert.ToDateTime(date, dtFormat);
|
|
|
|
|
DateTime dt;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
dt = Convert.ToDateTime(date);
|
2023-09-04 22:41:19 +08:00
|
|
|
|
return string.Format("{0}-{1:d2}-{2:d2}", dt.Year, dt.Month, dt.Day);
|
2023-05-23 16:13:17 +08:00
|
|
|
|
}
|
2023-11-21 19:18:23 +08:00
|
|
|
|
catch { }
|
2023-05-23 16:13:17 +08:00
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
dt = DateTime.ParseExact(date, "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture);
|
2023-09-04 22:41:19 +08:00
|
|
|
|
return string.Format("{0}-{1:d2}-{2:d2}", dt.Year, dt.Month, dt.Day);
|
2023-05-23 16:13:17 +08:00
|
|
|
|
}
|
|
|
|
|
catch { }
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static enumOutStoreType getOutStoreTypeByOrderType(int orderType)
|
|
|
|
|
{
|
|
|
|
|
enumOrderType ost = (enumOrderType)orderType;
|
|
|
|
|
|
|
|
|
|
switch (ost)
|
|
|
|
|
{
|
|
|
|
|
case enumOrderType.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
|
|
|
|
return enumOutStoreType.<EFBFBD><EFBFBD><EFBFBD>ϳ<EFBFBD><EFBFBD><EFBFBD>;
|
|
|
|
|
case enumOrderType.<EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
|
|
|
|
return enumOutStoreType.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|
|
|
|
case enumOrderType.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>:
|
|
|
|
|
return enumOutStoreType.<EFBFBD>ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|
|
|
|
case enumOrderType.<EFBFBD>˹<EFBFBD>Ӧ<EFBFBD><EFBFBD>:
|
|
|
|
|
return enumOutStoreType.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
2023-11-21 19:18:23 +08:00
|
|
|
|
|
|
|
|
|
case enumOrderType.<EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
|
|
|
|
return enumOutStoreType.<EFBFBD><EFBFBD><EFBFBD>ó<EFBFBD><EFBFBD><EFBFBD>;
|
|
|
|
|
case enumOrderType.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
|
|
|
|
return enumOutStoreType.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
2023-12-03 22:13:49 +08:00
|
|
|
|
case enumOrderType.<EFBFBD><EFBFBD>λ<EFBFBD>¼<EFBFBD>:
|
|
|
|
|
return enumOutStoreType.<EFBFBD><EFBFBD>λ<EFBFBD>¼<EFBFBD>;
|
2023-05-23 16:13:17 +08:00
|
|
|
|
default:
|
2023-11-21 19:18:23 +08:00
|
|
|
|
return enumOutStoreType.<EFBFBD><EFBFBD><EFBFBD>ϳ<EFBFBD><EFBFBD><EFBFBD>; ;
|
2023-05-23 16:13:17 +08:00
|
|
|
|
}
|
2023-11-21 19:18:23 +08:00
|
|
|
|
|
2023-05-23 16:13:17 +08:00
|
|
|
|
}
|
2023-09-04 22:41:19 +08:00
|
|
|
|
public static EnumFlowTaskType getTaskType(int recordType)
|
2023-05-23 16:13:17 +08:00
|
|
|
|
{
|
|
|
|
|
enumStockRecordType type = (enumStockRecordType)recordType;
|
|
|
|
|
|
|
|
|
|
switch (type)
|
|
|
|
|
{
|
|
|
|
|
case enumStockRecordType.<EFBFBD><EFBFBD><EFBFBD>ϳ<EFBFBD><EFBFBD><EFBFBD>:
|
2023-09-04 22:41:19 +08:00
|
|
|
|
return EnumFlowTaskType.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>;
|
2023-05-23 16:13:17 +08:00
|
|
|
|
case enumStockRecordType.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
2023-11-21 19:18:23 +08:00
|
|
|
|
return EnumFlowTaskType.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>;
|
2023-05-23 16:13:17 +08:00
|
|
|
|
case enumStockRecordType.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
2023-11-21 19:18:23 +08:00
|
|
|
|
return EnumFlowTaskType.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD>;
|
2023-05-23 16:13:17 +08:00
|
|
|
|
case enumStockRecordType.<EFBFBD><EFBFBD><EFBFBD>۳<EFBFBD><EFBFBD><EFBFBD>:
|
2023-11-21 19:18:23 +08:00
|
|
|
|
return EnumFlowTaskType.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>;
|
2023-05-23 16:13:17 +08:00
|
|
|
|
case enumStockRecordType.<EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
2023-09-04 22:41:19 +08:00
|
|
|
|
return EnumFlowTaskType.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD>;
|
2023-05-23 16:13:17 +08:00
|
|
|
|
case enumStockRecordType.<EFBFBD>ƿ<EFBFBD><EFBFBD>ϼ<EFBFBD>:
|
2023-09-04 22:41:19 +08:00
|
|
|
|
return EnumFlowTaskType.<EFBFBD>ƿ<EFBFBD><EFBFBD>ϼ<EFBFBD>;
|
2023-05-23 16:13:17 +08:00
|
|
|
|
case enumStockRecordType.<EFBFBD>ƿ<EFBFBD><EFBFBD>¼<EFBFBD>:
|
2023-09-04 22:41:19 +08:00
|
|
|
|
return EnumFlowTaskType.<EFBFBD>ƿ<EFBFBD><EFBFBD>¼<EFBFBD>;
|
2023-05-23 16:13:17 +08:00
|
|
|
|
case enumStockRecordType.<EFBFBD>˹<EFBFBD>Ӧ<EFBFBD>̳<EFBFBD><EFBFBD><EFBFBD>:
|
2023-11-21 19:18:23 +08:00
|
|
|
|
return EnumFlowTaskType.<EFBFBD>ƿ<EFBFBD><EFBFBD>¼<EFBFBD>;
|
2024-02-06 19:36:47 +08:00
|
|
|
|
case enumStockRecordType.<EFBFBD>˻<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
|
|
|
|
return EnumFlowTaskType.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD>;
|
2023-09-04 22:41:19 +08:00
|
|
|
|
case enumStockRecordType.ֱͨԽ<EFBFBD><EFBFBD>:
|
2023-11-21 19:18:23 +08:00
|
|
|
|
return EnumFlowTaskType.ֱͨ<EFBFBD>ֻ<EFBFBD>;
|
|
|
|
|
|
|
|
|
|
case enumStockRecordType.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD>:
|
|
|
|
|
return EnumFlowTaskType.<EFBFBD><EFBFBD><EFBFBD>ַֻ<EFBFBD>;
|
2024-02-06 19:36:47 +08:00
|
|
|
|
|
2023-11-21 19:18:23 +08:00
|
|
|
|
|
|
|
|
|
case enumStockRecordType.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
|
|
|
|
return EnumFlowTaskType.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
2024-02-06 19:36:47 +08:00
|
|
|
|
|
|
|
|
|
case enumStockRecordType.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD>:
|
|
|
|
|
return EnumFlowTaskType.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD>;
|
2023-09-04 22:41:19 +08:00
|
|
|
|
|
2024-04-16 09:29:04 +08:00
|
|
|
|
case enumStockRecordType.<EFBFBD>ֳ<EFBFBD><EFBFBD>̵<EFBFBD>:
|
|
|
|
|
return EnumFlowTaskType.<EFBFBD>ճ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|
|
|
|
|
|
|
|
|
|
2023-05-23 16:13:17 +08:00
|
|
|
|
default:
|
2023-11-21 19:18:23 +08:00
|
|
|
|
return EnumFlowTaskType.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>;
|
2023-05-23 16:13:17 +08:00
|
|
|
|
}
|
2023-11-21 19:18:23 +08:00
|
|
|
|
|
2023-05-23 16:13:17 +08:00
|
|
|
|
}
|
|
|
|
|
|
2023-11-21 19:18:23 +08:00
|
|
|
|
|
|
|
|
|
public static enumWhType getTargetWhType(enumOrderType orderType, enumWhType fromWh = enumWhType.<EFBFBD>ϸ<EFBFBD><EFBFBD><EFBFBD>)
|
2023-05-23 16:13:17 +08:00
|
|
|
|
{
|
|
|
|
|
switch (orderType)
|
|
|
|
|
{
|
2023-11-21 19:18:23 +08:00
|
|
|
|
case enumOrderType.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
|
|
|
|
return enumWhType.<EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD>;
|
|
|
|
|
|
|
|
|
|
case enumOrderType.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>:
|
|
|
|
|
return fromWh;
|
|
|
|
|
|
2023-05-23 16:13:17 +08:00
|
|
|
|
case enumOrderType.<EFBFBD>˹<EFBFBD>Ӧ<EFBFBD><EFBFBD>:
|
|
|
|
|
return enumWhType.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|
|
|
|
default: return enumWhType.<EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><EFBFBD><EFBFBD>;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public static long getTimeStamp()
|
|
|
|
|
{
|
|
|
|
|
TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
|
|
|
|
|
return Convert.ToInt64(ts.TotalMilliseconds);
|
|
|
|
|
}
|
|
|
|
|
|
2023-11-21 19:18:23 +08:00
|
|
|
|
public static string getPartLightKey(int color, int labelId, int address, int part)
|
2023-05-23 16:13:17 +08:00
|
|
|
|
{
|
|
|
|
|
return string.Format("{0}-{1}-{2}", color, labelId, address);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2023-11-21 19:18:23 +08:00
|
|
|
|
public static string getLightKey(int color, int labelId, int address)
|
2023-05-23 16:13:17 +08:00
|
|
|
|
{
|
|
|
|
|
return string.Format("{0}-{1}-{2}", color, labelId, address);
|
|
|
|
|
}
|
|
|
|
|
|
2023-12-03 22:13:49 +08:00
|
|
|
|
public static string getBoxId(enumPlateLevel type, int color, int id)
|
2023-05-23 16:13:17 +08:00
|
|
|
|
{
|
2023-12-03 22:13:49 +08:00
|
|
|
|
string prefix = "H";
|
|
|
|
|
switch (type)
|
|
|
|
|
{
|
|
|
|
|
case enumPlateLevel.<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
|
|
|
|
prefix = WmsConstants.PLATE_TMP_PREFIX;
|
|
|
|
|
break;
|
|
|
|
|
case enumPlateLevel.<EFBFBD>̶<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
|
|
|
|
prefix = WmsConstants.PLATE_BOX_PREFIX;
|
|
|
|
|
break;
|
|
|
|
|
case enumPlateLevel.<EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
|
|
|
|
prefix = WmsConstants.PLATE_CUST_PREFIX;
|
|
|
|
|
break;
|
|
|
|
|
case enumPlateLevel.<EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
|
|
|
|
prefix = WmsConstants.PLATE_LINE_PREFIX;
|
|
|
|
|
break;
|
|
|
|
|
case enumPlateLevel.<EFBFBD><EFBFBD><EFBFBD>䳵:
|
|
|
|
|
prefix = WmsConstants.PLATE_TRUCK_PREFIX;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
2024-02-06 19:36:47 +08:00
|
|
|
|
return string.Format("{0}-{1}-{2}-{3:D4}",prefix, (int)type, color, id);
|
2023-05-23 16:13:17 +08:00
|
|
|
|
}
|
|
|
|
|
public static int getBoxColor(string boxId)
|
|
|
|
|
{
|
2023-11-21 19:18:23 +08:00
|
|
|
|
string[] s = boxId.Split('-');
|
2023-05-23 16:13:17 +08:00
|
|
|
|
return Convert.ToInt16(s[2].ToString());
|
|
|
|
|
}
|
|
|
|
|
public static int getBoxId(string boxId)
|
|
|
|
|
{
|
|
|
|
|
string[] s = boxId.Split('-');
|
|
|
|
|
return Convert.ToInt16(s[3].ToString());
|
|
|
|
|
}
|
|
|
|
|
|
2023-11-21 19:18:23 +08:00
|
|
|
|
public static Dictionary<int, string> convertEnumToDic(Type enumType)
|
|
|
|
|
{
|
2023-05-23 16:13:17 +08:00
|
|
|
|
|
|
|
|
|
Dictionary<int, string> dic = new Dictionary<int, string>();
|
2023-11-21 19:18:23 +08:00
|
|
|
|
foreach (int myCode in Enum.GetValues(enumType))
|
2023-05-23 16:13:17 +08:00
|
|
|
|
{
|
|
|
|
|
string strName = Enum.GetName(enumType, myCode);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|
|
|
|
string strVaule = myCode.ToString();//<2F><>ȡֵ
|
|
|
|
|
dic[myCode] = strName;
|
2023-11-21 19:18:23 +08:00
|
|
|
|
|
2023-05-23 16:13:17 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return dic;
|
2023-11-21 19:18:23 +08:00
|
|
|
|
}
|
|
|
|
|
|
2023-05-23 16:13:17 +08:00
|
|
|
|
|
2023-11-21 19:18:23 +08:00
|
|
|
|
public static DateTime pareseDateString(string dateStr)
|
|
|
|
|
{
|
2023-09-04 22:41:19 +08:00
|
|
|
|
/*
|
2023-05-23 16:13:17 +08:00
|
|
|
|
string[] invailidChars = { ".","-","/"};
|
|
|
|
|
|
|
|
|
|
foreach (string s in invailidChars)
|
|
|
|
|
{
|
|
|
|
|
if (WmsConstants.GOODS_VALID_DATE_FORMAT.IndexOf(s) == -1)
|
|
|
|
|
{
|
|
|
|
|
dateStr = dateStr.Replace(s, "x");
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
string year = dateStr.Split('x')[0];
|
|
|
|
|
string month = dateStr.Split('x')[1];
|
|
|
|
|
string day = dateStr.Split('x')[2];
|
|
|
|
|
|
|
|
|
|
month = month.Length == 1 ? "0" + month : month;
|
|
|
|
|
day = day.Length == 1 ? "0" + day : day;
|
|
|
|
|
|
|
|
|
|
dateStr = year + month + day;
|
2023-09-04 22:41:19 +08:00
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
return DateTime.ParseExact(dateStr, WmsConstants.GOODS_VALID_DATE_FORMAT, System.Globalization.CultureInfo.CurrentCulture);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception)
|
|
|
|
|
{
|
|
|
|
|
|
2023-11-21 19:18:23 +08:00
|
|
|
|
return DateTime.ParseExact(dateStr, "yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture);
|
2023-09-04 22:41:19 +08:00
|
|
|
|
}
|
|
|
|
|
|
2023-05-23 16:13:17 +08:00
|
|
|
|
|
2023-11-21 19:18:23 +08:00
|
|
|
|
// return DateTime.ParseExact(dateStr, WmsConstants.GOODS_VALID_DATE_FORMAT, System.Globalization.CultureInfo.CurrentCulture);
|
2023-05-23 16:13:17 +08:00
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ip<69><70>ַ
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="netType">"InterNetwork":ipv4<76><34>ַ<EFBFBD><D6B7>"InterNetworkV6":ipv6<76><36>ַ</param>
|
|
|
|
|
/// <returns>ip<69><70>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD></returns>
|
|
|
|
|
public static List<string> GetLocalIpAddress(string netType)
|
|
|
|
|
{
|
|
|
|
|
string hostName = Dns.GetHostName(); //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
IPAddress[] addresses = Dns.GetHostAddresses(hostName); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP<49><50>ַ
|
|
|
|
|
|
|
|
|
|
List<string> IPList = new List<string>();
|
|
|
|
|
if (netType == string.Empty)
|
|
|
|
|
{
|
|
|
|
|
for (int i = 0; i < addresses.Length; i++)
|
|
|
|
|
{
|
|
|
|
|
IPList.Add(addresses[i].ToString());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//AddressFamily.InterNetwork<72><6B>ʾ<EFBFBD><CABE>IPΪIPv4,
|
|
|
|
|
//AddressFamily.InterNetworkV6<56><36>ʾ<EFBFBD>˵<EFBFBD>ַΪIPv6<76><36><EFBFBD><EFBFBD>
|
|
|
|
|
for (int i = 0; i < addresses.Length; i++)
|
|
|
|
|
{
|
|
|
|
|
if (addresses[i].AddressFamily.ToString() == netType)
|
|
|
|
|
{
|
|
|
|
|
IPList.Add(addresses[i].ToString());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return IPList;
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>Ҵ<EFBFBD>дת<D0B4><D7AA>
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="number"><3E><><EFBFBD><EFBFBD></param>
|
|
|
|
|
/// <returns><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҵ<EFBFBD>д,<2C>磺ҼԪ<D2BC><D4AA></returns>
|
|
|
|
|
public static string convertToChinese(decimal number)
|
|
|
|
|
{
|
|
|
|
|
var s = number.ToString("#L#E#D#C#K#E#D#C#J#E#D#C#I#E#D#C#H#E#D#C#G#E#D#C#F#E#D#C#.0B0A");
|
|
|
|
|
var d = Regex.Replace(s, @"((?<=-|^)[^1-9]*)|((?'z'0)[0A-E]*((?=[1-9])|(?'-z'(?=[F-L\.]|$))))|((?'b'[F-L])(?'z'0)[0A-L]*((?=[1-9])|(?'-z'(?=[\.]|$))))", "${b}${z}");
|
|
|
|
|
var r = Regex.Replace(d, ".", m => "<22><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>Ҽ<EFBFBD><D2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><C2BD><EFBFBD>ƾ<EFBFBD><C6BE>տտտտտտշֽ<D5B7>ʰ<EFBFBD><CAB0>Ǫ<EFBFBD><C7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><D7BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"[m.Value[0] - '-'].ToString());
|
|
|
|
|
return r;
|
2023-09-04 22:41:19 +08:00
|
|
|
|
}
|
|
|
|
|
public static string getJson(Object obj)
|
|
|
|
|
{
|
|
|
|
|
try
|
2023-11-21 19:18:23 +08:00
|
|
|
|
{
|
2023-09-04 22:41:19 +08:00
|
|
|
|
|
2023-11-21 19:18:23 +08:00
|
|
|
|
return JsonConvert.SerializeObject(obj);
|
2023-09-04 22:41:19 +08:00
|
|
|
|
/*
|
|
|
|
|
DataContractJsonSerializer jsonSerializer
|
|
|
|
|
= new DataContractJsonSerializer(typeof(Object));
|
|
|
|
|
var stream = new MemoryStream();
|
|
|
|
|
jsonSerializer.WriteObject(stream, obj);
|
|
|
|
|
|
|
|
|
|
byte[] dataBytes = new byte[stream.Length];
|
|
|
|
|
|
|
|
|
|
stream.Position = 0;
|
|
|
|
|
|
|
|
|
|
stream.Read(dataBytes, 0, (int)stream.Length);
|
|
|
|
|
|
|
|
|
|
string dataString = Encoding.UTF8.GetString(dataBytes);
|
|
|
|
|
|
|
|
|
|
return dataString;
|
|
|
|
|
*/
|
|
|
|
|
}
|
2023-11-21 19:18:23 +08:00
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LogHelper.debug("Utls", e.Message);
|
2023-09-04 22:41:19 +08:00
|
|
|
|
|
|
|
|
|
return e.Message;
|
|
|
|
|
}
|
|
|
|
|
|
2023-11-21 19:18:23 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static string CreateQRcode(string content)
|
|
|
|
|
{
|
|
|
|
|
//https://blog.csdn.net/qyr20/article/details/119885812
|
2023-09-04 22:41:19 +08:00
|
|
|
|
|
2023-11-21 19:18:23 +08:00
|
|
|
|
|
|
|
|
|
System.IO.MemoryStream MStream = new System.IO.MemoryStream();
|
|
|
|
|
getQrCode( content).Save(MStream, System.Drawing.Imaging.ImageFormat.Png);
|
|
|
|
|
byte[] qrByte = MStream.ToArray();
|
|
|
|
|
string qrStr = Convert.ToBase64String(qrByte); //<2F><>Ҫת<D2AA><D7AA>һ<EFBFBD><D2BB>
|
|
|
|
|
|
|
|
|
|
return qrStr;
|
|
|
|
|
//Response.ClearContent();
|
|
|
|
|
//Response.ContentType = "image/Png";
|
|
|
|
|
//Response.BinaryWrite(MStream.ToArray());
|
|
|
|
|
}
|
2023-09-04 22:41:19 +08:00
|
|
|
|
|
2023-11-21 19:18:23 +08:00
|
|
|
|
public static System.Drawing.Bitmap getQrCode(string content)
|
|
|
|
|
{
|
|
|
|
|
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
|
|
|
|
|
qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
|
|
|
|
|
qrCodeEncoder.QRCodeScale = 4;
|
|
|
|
|
qrCodeEncoder.QRCodeVersion = 8;
|
|
|
|
|
qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
|
|
|
|
|
System.Drawing.Bitmap image = qrCodeEncoder.Encode(content);
|
|
|
|
|
return image;
|
2023-05-23 16:13:17 +08:00
|
|
|
|
}
|
2023-11-21 19:18:23 +08:00
|
|
|
|
|
2023-12-03 22:13:49 +08:00
|
|
|
|
public static string getReportPath()
|
|
|
|
|
{
|
|
|
|
|
return string.IsNullOrEmpty(WmsConstants.FILE_SVR_PRINT) ? "utils\\reports\\" : WmsConstants.FILE_SVR_PRINT;
|
|
|
|
|
}
|
|
|
|
|
|
2023-05-23 16:13:17 +08:00
|
|
|
|
}
|
2023-11-21 19:18:23 +08:00
|
|
|
|
|
2023-05-23 16:13:17 +08:00
|
|
|
|
}
|