kazelee
4 天以前 63e94e068622d4ef843cee0d19d4f2d231316304
wms/WCSHelper.cs
@@ -11,6 +11,9 @@
using System.Threading.Tasks;
namespace HH.WCS.Mobox3.DSZSH.wms {
    /// <summary>
    /// [ 通用业务 ] 帮助类
    /// </summary>
    internal class WCSHelper {
        internal static string GenerateTaskNo() {
            var id = SYSHelper.GetSerialNumber("任务号", "TN");
@@ -52,30 +55,7 @@
            return loc == null ? "0" : loc.S_AGV_SITE;
        }
        /// <summary>
        /// <!--弃用|理由:不灵活,涉及业务过于具体-->检查容器类型是否正确
        /// </summary>
        /// <param name="cntrCode"></param>
        /// <param name="cntrType"></param>
        /// <param name="errMsg"></param>
        /// <returns></returns>
        private static bool CheckCntrType(string cntrCode, string cntrType, out string errMsg) {
            var db = new SqlHelper<object>().GetInstance();
            errMsg = string.Empty;
            var cntr = db.Queryable<TN_Container>().Where(c => c.S_CODE == cntrType).First();
            if (cntr == null) {
                errMsg = $"容器'{cntrCode}'在[容器表]中不存在,请在前台页面中维护!";
                return false;
            }
            if (cntr.S_TYPE != cntrType) {
                errMsg = $"容器'{cntrCode}'在[容器表]中的类型是'{cntr.S_TYPE},不是'{cntrType}'!";
                return false;
            }
            return true;
        }
        #region 容器相关信息 查询 / 绑定
        /// <summary>
        /// 根据 [ 容器号 ] , 查询当前容器关联的 [ 货位 ] [ 货位容器 ] [ 容器货品 ] 信息 ( 只查询 1 条 )
        /// </summary>
@@ -154,12 +134,14 @@
            loc.T_MODIFY = DateTime.Now;
            return locCntrRel;
        }
        }
        #endregion
        #region 起点 / 终点货位锁 + 创建任务
        /// <summary>
        /// 起点出库锁
        /// </summary>
        /// <remarks>要求: loc != null; 锁状态='无';</remarks>
        /// <remarks><b>[ 要求 ]</b> loc ≠ null ; 锁状态='无' ;</remarks>
        /// <param name="loc"></param>
        /// <param name="lockSource"></param>
        public static void LockStartLoc(TN_Location loc, string lockSource = "") {
@@ -178,7 +160,7 @@
        /// <summary>
        /// 终点入库锁
        /// </summary>
        /// <remarks>要求 : loc ≠ null ; 锁状态='无' ;</remarks>
        /// <remarks><b>[ 要求 ]</b> loc ≠ null ; 锁状态='无' ;</remarks>
        /// <param name="loc"></param>
        /// <param name="lockSource"></param>
        public static void LockEndLoc(TN_Location loc, string lockSource = "") {
@@ -197,13 +179,13 @@
        /// <summary>
        /// 创建任务
        /// </summary>
        /// <remarks>要求 : <br/>(1) startLoc / endLoc ≠ null<br/>(2) startLoc / endLoc 存在 S_CODE , S_AREA_CODE 字段</remarks>
        /// <param name="startLoc">起点货位:至少提供:S_CODE,S_AREA_CODE</param>
        /// <param name="endLoc">终点货位:至少提供:S_CODE,S_AREA_CODE</param>
        /// <remarks><b>[ 要求 ]</b> startLoc / endLoc ≠ null ; startLoc / endLoc 存在 S_CODE , S_AREA_CODE 字段</remarks>
        /// <param name="startLoc">起点货位 : 至少提供:S_CODE , S_AREA_CODE</param>
        /// <param name="endLoc">终点货位 : 至少提供:S_CODE , S_AREA_CODE</param>
        /// <param name="cntId">容器号</param>
        /// <param name="type">任务类型(名称)</param>
        /// <param name="type">任务类型 ( 名称 )</param>
        /// <param name="pri">优先级</param>
        /// <param name="agv">AGV类型</param>
        /// <param name="agv">AGV 类型</param>
        /// <returns></returns>
        public static TN_Task BuildTask(TN_Location startLoc, TN_Location endLoc, string cntId, string type, int pri = 3, int agv = 1) {
            TN_Task task = new TN_Task() {
@@ -227,13 +209,13 @@
        /// <summary>
        /// 创建任务 + 货位锁
        /// </summary>
        /// <remarks>要求 : <br/>(1) startLoc / endLoc ≠ null<br/>(2) startLoc / endLoc 存在 S_CODE , S_AREA_CODE 字段</remarks>
        /// <remarks><b>[ 要求 ]</b> (1) startLoc / endLoc ≠ null ; (2) startLoc / endLoc 存在 S_CODE , S_AREA_CODE 字段</remarks>
        /// <param name="startLoc">起点货位 : 至少提供 : S_CODE , S_AREA_CODE</param>
        /// <param name="endLoc">终点货位 : 至少提供 : S_CODE , S_AREA_CODE</param>
        /// <param name="cntId">容器号</param>
        /// <param name="type">任务类型(名称)</param>
        /// <param name="type">任务类型 ( 名称 )</param>
        /// <param name="pri">优先级</param>
        /// <param name="agv">AGV类型</param>
        /// <param name="agv">AGV 类型</param>
        /// <returns></returns>
        public static TN_Task BuildTaskWithLocLock(TN_Location startLoc, TN_Location endLoc, string cntId, string type, int pri = 3, int agv = 1) {
            var task = BuildTask(startLoc, endLoc, cntId, type, pri);
@@ -241,7 +223,8 @@
            LockEndLoc(endLoc, task.S_CODE);
            return task;
        }
        }
        #endregion
        internal static bool CheckActionRecordExist(string no, int code) {
            var db = new SqlHelper<TN_Task_Action>().GetInstance();