wxw
1 天以前 f3a9a3ad429d86028c884e3476dc0badcd8da966
Wms/WMS.BLL/BllQualityServer/InspectionRequestServer.cs
@@ -358,98 +358,15 @@
                    var Locats = Db.Queryable<SysStorageLocat>()
                        .Where(m => m.LocatNo == pallet.LocatNo && m.WareHouseNo == pallet.WareHouseNo 
                        && m.IsDel == "0").ToList().FirstOrDefault();
                    if (Locats.Depth == "02")
                    var Locats2 = Db.Queryable<SysStorageLocat>().Where(m => m.LocatNo == model.Code && m.IsDel == "0").ToList().FirstOrDefault();
                    if (Locats2 == null)
                    {
                        // 获取外侧储位地址
                        string locatNo = Locats.LocatNo.Substring(0, 6) + "01";
                        var Locatwc = Db.Queryable<SysStorageLocat>()
                        .Where(m => m.LocatNo == locatNo && m.WareHouseNo == pallet.WareHouseNo
                        && m.IsDel == "0").ToList().FirstOrDefault();
                        if (Locatwc.Status == "1")
                        {
                            // 外侧有货物
                            var Locatwcsku = Db.Queryable<DataStockDetail>()
                                .Where(m => m.LocatNo == locatNo
                                && m.IsDel == "0"
                                && m.WareHouseNo== Locatwc.WareHouseNo).ToList().FirstOrDefault();
                            // 获取移库地址
                            var newSlot = com.MoveAddress(locatNo, Locatwc.RoadwayNo, Locatwcsku.SkuNo);
                            var taskNo1 = new Common().GetMaxNo("TK");
                            var exTask1 = new LogTask();    //出库任务
                            exTask1.TaskNo = taskNo1;
                            exTask1.Sender = "WMS";
                            exTask1.Receiver = "WCS";
                            exTask1.IsSuccess = 0;                  //是否下发成功 0失败 1成功
                            exTask1.StartLocat = locatNo;           //起始位置
                            exTask1.PalletNo = Locatwcsku.PalletNo; //托盘码
                            exTask1.IsSend = 1;//是否可再次下发
                            exTask1.IsCancel = 1;//是否可取消
                            exTask1.IsFinish = 1;//是否可完成
                            exTask1.Status = "0";//任务状态0:等待执行1正在执行2执行完成
                            exTask1.OrderType = "4";    //0 入库单 1 出库单  2 盘点单  3 移库单 4 取样出库单
                            OutCommandDto taskModel = new OutCommandDto();
                            taskModel.TaskNo = com.GetMaxNo("TK");      // 任务号
                            taskModel.StartRoadway = Locatwc.RoadwayNo;
                            taskModel.PalletNo = Locatwcsku.PalletNo;       // 托盘号
                            taskModel.StartLocate = locatNo;                // 起始位置
                            taskModel.Order = 1;
                            if (newSlot == "")
                            {
                                exTask1.EndLocat = model.Code;          //目标位置
                                exTask1.Type = "1";                     //任务类型 0 入库任务 1 出库任务  2 移库任务
                                exTask1.Msg = Locats.LocatNo +"托盘出库创建的"+locatNo + "托盘的出库任务";
                                // 没有多余的空储位
                                taskModel.EndLocate = model.Code;           // 出库口
                                taskModel.EndRoadway = "";                  // 目标巷道
                                taskModel.TaskType = "1";// 任务类型 (出库)
                                taskModel.OutMode = model.Code;  //目标地址
                                // 更新储位地址
                                Locatwc.Status = "3";
                                Db.Updateable(Locatwc).ExecuteCommand();
                            }
                            else
                            {
                                // 获取移库巷道号
                                var Locatyk = Db.Queryable<SysStorageLocat>()
                                    .Where(m => m.LocatNo == newSlot && m.WareHouseNo == pallet.WareHouseNo
                                    && m.IsDel == "0").ToList().FirstOrDefault();
                                exTask1.EndLocat = newSlot;          //目标位置
                                exTask1.Type = "2";                     //任务类型 0 入库任务 1 出库任务  2 移库任务
                                exTask1.Msg = Locats.LocatNo + "托盘出库创建的" + locatNo + "托盘的移库任务";
                                taskModel.EndLocate = newSlot;              // 目标地址
                                taskModel.EndRoadway = Locatyk.RoadwayNo;   // 目标巷道
                                taskModel.TaskType = "2";                   // 任务类型 (移库)
                                taskModel.OutMode = newSlot;
                                // 更新储位地址
                                Locatwc.Status = "5";               // 移出中
                                Locatyk.Status = "4";               // 移入中
                                Db.Updateable(Locatyk).ExecuteCommand();
                            }
                            Db.Updateable(Locatwc).ExecuteCommand();
                            // 插入任务日志
                            Db.Insertable(exTask1).ExecuteCommand();
                            outWhs.Add(taskModel);
                        }
                        if (Locatwc.Status == "2" || Locatwc.Status == "4")
                        {
                            numberQty = numberQty + pallet.Qty;
                            continue;
                        }
                        throw new Exception("目标储位错误");
                    }
                    if (Locats2.Status != "0")
                    {
                        throw new Exception("目标储位状态不是空储位,请核实");
                    }
                    var taskNo2 = new Common().GetMaxNo("TK");
                    var exTask2 = new LogTask();    //出库任务
                    exTask2.TaskNo = taskNo2;
@@ -464,7 +381,7 @@
                    exTask2.Status = "0";//任务状态0:等待执行1正在执行2执行完成
                    exTask2.OrderType = "4";    //0 入库单 1 出库单  2 盘点单  3 移库单 4 取样出库单
                    exTask2.EndLocat = model.Code;          //目标位置
                    exTask2.Type = "1";                     //任务类型 0 入库任务 1 出库任务  2 移库任务
                    exTask2.Type = "2";                     //任务类型 0 入库任务 1 出库任务  2 移库任务
                    exTask2.Msg = pallet.LocatNo + "托盘出库任务";
                    // 插入任务日志
                    Db.Insertable(exTask2).ExecuteCommand();
@@ -476,51 +393,53 @@
                    taskModel1.Order = 1;
                    taskModel1.EndLocate = model.Code;           // 目标地址
                    taskModel1.EndRoadway = "";                  // 目标巷道 
                    taskModel1.TaskNo = com.GetMaxNo("TK");      // 任务号
                    taskModel1.TaskType = "1";// 任务类型 (出库)
                    taskModel1.OutMode = model.Code;
                    taskModel1.TaskNo = taskNo2;      // 任务号
                    taskModel1.TaskType = "2";// 任务类型 (出库)
                    taskModel1.Type = PLCTypeEnum.AGV;
                    // 更新储位状态
                    Locats.Status = "3";
                    Locats.Status = "5";
                    Db.Updateable(Locats).ExecuteCommand();
                    Locats2.Status = "4";
                    Db.Updateable(Locats2).ExecuteCommand();
                    outWhs.Add(taskModel1);
                    // 向WCS下发出库任务
                    if (outWhs.Count > 0)
                    {
                        // 正式运行程序放开
                        var list2 = outWhs.Select(m => m.TaskNo).ToList();
                        var jsonData = JsonConvert.SerializeObject(outWhs);
                        //string response = "";
                        try
                        {
                            //var time1 = DateTime.Now;//发送时间 .ToString("yyyy-MM-dd HH:mm:ss")
                            //response = HttpHelper.DoPost(url, jsonData, "下发给WCS出库命令", "WCS");
                            //var time2 = DateTime.Now;//返回时间 .ToString("yyyy-MM-dd HH:mm:ss")
                            ////解析返回数据
                            //var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response);
                            //if (wcsModel.StatusCode == 0)
                            //{
                            //    //更改任务的发送返回时间//
                                //new TaskServer().EditTaskIssueOk(list2, time1, time2);
                            //}
                            //if (wcsModel.StatusCode == -1)
                            //{
                            //    new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.Msg);
                            //    throw new Exception(wcsModel.Msg);
                            //}
                        }
                        catch (Exception ex)
                        {
                            throw new Exception(ex.Message);
                        }
                    }
                }
                // 向WCS下发出库任务
                if (outWhs.Count > 0)
                {
                    // 正式运行程序放开
                    var list2 = outWhs.Select(m => m.TaskNo).ToList();
                    var jsonData = JsonConvert.SerializeObject(outWhs);
                    string response = "";
                    try
                    {
                        var time1 = DateTime.Now;//发送时间 .ToString("yyyy-MM-dd HH:mm:ss")
                        response = HttpHelper.DoPost(url, jsonData, "下发给WCS出库命令", "WCS");
                        var time2 = DateTime.Now;//返回时间 .ToString("yyyy-MM-dd HH:mm:ss")
                        //解析返回数据
                        var wcsModel = JsonConvert.DeserializeObject<WcsModel2>(response);
                        if (wcsModel.code == 200)
                        {
                            //更改任务的发送返回时间//
                            new TaskServer().EditTaskIssueOk(list2, time1, time2);
                        }
                        else
                        {
                            new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.message);
                            throw new Exception(wcsModel.message);
                        }
                    }
                    catch (Exception ex)
                    {
                        throw new Exception(ex.Message);
                    }
                }
                //添加操作日志记录
                var k = new OperationCrServer()
                    .AddLogOperationCr("质量管理", "质检请验", data.QcNo, "出库", $"点击了出库操作;请验单:{data.QcNo}!", userId);