111
cjs
4 天以前 99004292e20a9e1efa4e3b11b8c319bfd796912c
HH.WCS.Mobox3.NongFuLinZhi/api/ApiHelper.cs
@@ -294,17 +294,11 @@
            db.Updateable(task).UpdateColumns(it => new { it.S_NOTE }).ExecuteCommand();
        }
        internal static WeiLiResult CancelOrder(CancelOrderModel model)
        {
            WeiLiResult result = new WeiLiResult();
            var db = new SqlHelper<object>().GetInstance();
            var tasks = db.Queryable<WCSTask>().Where(a => a.S_OP_CODE == model.orderNo).ToList();
            var tasks = db.Queryable<WCSTask>().Where(a => a.S_OP_CODE == model.task_no).ToList();
            if (tasks.Count >= 1)
            {
                //流程任务数量执行超过一条 任务不允许取消
@@ -312,7 +306,7 @@
                result.msg = "流程任务执行中途不允许取消";
                return result;
            }
            var task = db.Queryable<WCSTask>().Where(a => a.S_OP_CODE == model.orderNo).OrderByDescending(a => a.T_CREATE).First();
            var task = db.Queryable<WCSTask>().Where(a => a.S_OP_CODE == model.task_no).OrderByDescending(a => a.T_CREATE).First();
            if (task != null)
            {
                if (WCSHelper.CheckActionRecordExist(task.S_CODE, 4))
@@ -324,7 +318,7 @@
                if (task.N_B_STATE == 0)
                {
                    //等待直接修改状态为取消
                    WCSHelper.UpdateStatus(model.orderNo, 5);
                    WCSHelper.UpdateStatus(model.task_no, 5);
                    //result.msg = "任务等待,直接取消";
                }
                else if (task.N_B_STATE != 3 && task.N_B_STATE != 4)
@@ -336,7 +330,8 @@
                    else
                    {
                        //已推送但是没有完成或者取消,通知hosttoagv
                        NDCHelper.Cancel(task.S_CODE.Trim());
                        //NDCHelper.Cancel(task.S_CODE.Trim());
                        NDCApi.CancelOrder(task.S_CODE.Trim());
                        //result.msg = "任务取消已经发送给小车";
                    }
                }
@@ -379,7 +374,8 @@
                    else
                    {
                        //通知杭叉修改优先级
                        NDCHelper.Cancel(task.S_CODE.Trim());
                        //NDCHelper.Cancel(task.S_CODE.Trim());
                        NDCApi.CancelOrder(task.S_CODE.Trim());
                        result.msg = "修改优先级成功";
                    }
                }
@@ -677,6 +673,116 @@
            return result;
        }
        internal static ReturnResult bindCntr(bindModel model)
        {
            ReturnResult result = new ReturnResult() {ResultCode = -1 };
            var db = new SqlHelper<object>().GetInstance();
            if (TaskProcess.BindLocCntr(model.S_LOC_CODE, model.S_CNTR_CODE, model.S_ITEM_CODE, model.S_BATCH_CODE))
            {
                int num = model.S_CNTR_CODE.Split(',').Count();
                var locInfo = db.Queryable<Location>().Where(a => a.S_CODE == model.S_LOC_CODE).First();
                if(locInfo != null)
                {
                    locInfo.N_CURRENT_NUM = locInfo.N_CURRENT_NUM + num > locInfo.N_CAPACITY ? locInfo.N_CAPACITY : locInfo.N_CURRENT_NUM + num;
                    db.Updateable(locInfo).UpdateColumns(a => new { a.N_CURRENT_NUM }).ExecuteCommand();
                    result.ResultCode = 0;
                }
            }
            return result;
        }
        internal static ReturnResult unBindCntr(unBindModel model)
        {
            ReturnResult result = new ReturnResult() { ResultCode = -1 };
            var db = new SqlHelper<object>().GetInstance();
            var locInfo = db.Queryable<Location>().Where(a => a.S_CODE == model.S_LOC_CODE).First();
            if(locInfo != null)
            {
                var cntrList = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == model.S_LOC_CODE).ToList();
                if(cntrList.Count > 0)
                {
                    for (int i = cntrList.Count - 1; i >= 0; i --)
                    {
                        string cntrCode = cntrList[i].S_CNTR_CODE;
                        db.Deleteable<CntrItemRel>().Where(a => a.S_CNTR_CODE == cntrCode).ExecuteCommand();
                        db.Deleteable<LocCntrRel>().Where(a => a.S_CNTR_CODE == cntrCode).ExecuteCommand();
                        db.Deleteable<Container>().Where(a => a.S_CODE == cntrCode).ExecuteCommand();
                    }
                }
                locInfo.N_CURRENT_NUM = locInfo.N_CURRENT_NUM - 1;
                if (locInfo.N_CURRENT_NUM < 0) locInfo.N_CURRENT_NUM = 0;
                db.Updateable(locInfo).UpdateColumns(a => new { a.N_CURRENT_NUM }).ExecuteCommand();
                result.ResultCode = 0;
            }
            return result;
        }
        internal static ReturnResult JBIn(JBInModel model)
        {
            ReturnResult result = new ReturnResult() { ResultCode = -1 };
            string cntrCode = Guid.NewGuid().ToString("N");
            string batch = "";
            if (model.S_ITEM_TYPE == "小包装盖")
            {
                //小包装盖默认一层
                batch = "小包装盖";
            }
            if (model.S_ITEM_TYPE == "瓶坯")
            {
                //瓶坯默认两层
                cntrCode = cntrCode + ","+ Guid.NewGuid().ToString("N");
            }
            if (model.S_ITEM_TYPE == "大包装盖")
            {
                //大包装盖默认三层
                cntrCode = cntrCode + "," + Guid.NewGuid().ToString("N") + "," + Guid.NewGuid().ToString("N");
                batch = "大包装盖";
            }
            //创建作业
            LogHelper.Info($"JBIn:{model.S_LOC_CODE},{cntrCode},{"指定库区-" + model.S_END_AREA}");
            if(WMSHelper.CreateOpTask(model.S_LOC_CODE, "", "入库", "接驳位入库", cntrCode, "指定库区-" + model.S_END_AREA))
            {
                TaskProcess.BindLocCntr(model.S_LOC_CODE, cntrCode, model.S_ITEM_CODE, batch);
                result.ResultCode = 0;
            }
            return result;
        }
        internal static ReturnResult PtpTask(PtpTaskModel model, ReturnResult result)
        {
            var db = new SqlHelper<object>().GetInstance();
            var startLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.S_START_LOC).First();
            if(startLoc != null && startLoc.S_LOCK_STATE == "无")
            {
                string cntrCode = "";
                var cntrInfo = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == startLoc.S_CODE).First();
                if(cntrInfo != null)
                {
                    cntrCode = cntrInfo.S_CNTR_CODE;
                }
                else
                {
                    cntrCode = Guid.NewGuid().ToString("N");
                }
                var endLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.S_END_LOC).First();
                if (endLoc != null && endLoc.S_LOCK_STATE == "无")
                {
                    WMSHelper.CreateOpTask(model.S_START_LOC, model.S_END_LOC, "入库", "点到点转运", cntrCode, "");
                }
                else
                {
                    result.ResultMsg = $"终点货位不存在或者有锁,货位编码:{model.S_END_LOC}";
                }
            }
            else
            {
                result.ResultMsg = $"起点货位不存在或者有锁,货位编码:{model.S_START_LOC}";
            }
            return result;
        }
        //public class AddTaskModel
        //{