wxw
2025-11-11 3aaad4bc18d4919a9008465a0d984b84f64193b2
Wms/WMS.BLL/BllTransServer/RcsServer.cs
@@ -115,6 +115,24 @@
                                Db.Updateable(pallet).ExecuteCommand();
                                taskMsg = "设备叫净桶任务";
                                try
                                {
                                    #region 请求MES接口发送净桶编号
                                    var reObj = new
                                    {
                                        deviceCode = pallet.PackagNo,
                                        reqType = "1"
                                    };
                                    string jsonReq = JsonConvert.SerializeObject(reObj);
                                    var response = HttpHelper.DoPost(urlMes, jsonReq, "回传MES净桶编号接料设备", "MES").ToString();
                                    var obj = JsonConvert.DeserializeObject<ReMes>(response);//解析返回数据
                                    #endregion
                                }
                                catch
                                {
                                }
                            }
                            break;
                        case "1"://混料设备叫料桶(混料)
@@ -250,17 +268,18 @@
                                //遍历库存脏桶,返回MES验证
                                foreach (var item in palletList)
                                {
                                    #region 去掉MES
                                    #region 请求MES接口验证该桶是否支持小清洗
                                    var reObj = new
                                    {
                                        devive = item.PackagNo
                                        deviceCode = item.PalletNo,
                                        reqType = "0"
                                    };
                                    string jsonReq = JsonConvert.SerializeObject(reObj);
                                    var response = HttpHelper.DoPost(urlMes, jsonReq, "回传MES脏桶编号判断是否可清洗", "MES").ToString();
                                    var obj = JsonConvert.DeserializeObject<ReMes>(response);//解析返回数据
                                    if (obj.state == "200")
                                    {
                                        if (obj.data != "1")//不可清洗,将脏桶冻结
                                        if (obj.data.status != "1")//不可清洗,将脏桶冻结
                                        {
                                            item.Status = "5";//异常冻结
                                            //修改该桶库存状态
@@ -774,7 +793,7 @@
                Db.BeginTran();
                //查找是否有空余脏桶位
                var endLocat = Db.Queryable<SysStorageLocat>().First(w => w.WareHouseNo == detail.WareHouseNo && w.AreaNo.Contains("04") && w.Status == "0" && w.Flag == "0");
                var endLocat = GetLocatModel(detail.WareHouseNo, "3");
                if (endLocat == null)
                {
                    detail.Status = "5";//异常锁定
@@ -784,27 +803,71 @@
                }
                else
                {
                    //生成调度小车净桶去脏桶区任务
                    var ztask = new TaskDetial
                    var taskNo = new Common().GetMaxNo("TN");//任务号
                    //任务信息
                    var logTaskEntry = new LogTask
                    {
                        Startport = detail.LocatNo,
                        Endport = endLocat.LocatNo,
                        Pallno = PalletNo,
                        Crtype = "2",
                        TaskNo = taskNo,
                        Sender = "WMS",
                        Receiver = "RCS",
                        //IsSuccess = 1, //是否下发成功 0失败 1成功
                        SendDate = DateTime.Now,  //发送时间
                        //BackDate = DateTime.Now,  //返回时间
                        StartLocat = statrtLocat.LocatNo,//起始位置
                        EndLocat = endLocat.LocatNo,//目标位置
                        PalletNo = detail.PalletNo,//桶号
                        IsSend = 1,//是否可再次下发
                        IsCancel = 1,//是否可取消
                        IsFinish = 1,//是否可完成
                        Type = "0",//任务类型 0 入库任务 1 出库任务  2 移库任务
                        OrderType = "3",//单据类型 0 入库 1 出库 3 移库
                        Status = "0",//任务状态0:等待执行1正在执行2执行完成
                        NoticeDetailNo = 0,
                        Msg = "MES下发将净桶改为脏桶并拉到脏桶区", //关键信息
                        LotNo = ""//批次号
                    };
                    string taskNo = "";
                    var task = new TaskDetial
                    {
                        Taskno = taskNo,//任务号
                        Startport = statrtLocat.LocatNo,//起始位置
                        Endport = endLocat.LocatNo,//目标位置
                        Pallno = detail.PalletNo,
                        Crtype = "0",//入库
                        WareHouseNo = detail.WareHouseNo
                    };
                    string agvMsg = string.Empty;
                    CreateTaskForAgv(ztask, url, out agvMsg);
                    //给下车下发任务
                    logTaskEntry.SendDate = DateTime.Now;//发送时间
                    var agvResult = CreateTaskForAgv(task, url, out agvMsg);
                    if (agvResult)//成功
                    {
                        //请求成功修改任务表相应字段状态
                        logTaskEntry.IsSuccess = 1;
                        logTaskEntry.IsSend = 0;
                        //logTaskEntry.IsCancel = 0;
                        logTaskEntry.BackDate = DateTime.Now;
                        logTaskEntry.Status = "1";//正在执行
                        Db.Insertable(logTaskEntry).ExecuteCommand();
                    statrtLocat.Status = "3";//出库中
                    //修改起始储位状态
                    Db.Updateable(statrtLocat).ExecuteCommand();
                        statrtLocat.Status = "3";//出库中
                        Db.Updateable(statrtLocat).ExecuteCommand();
                    detail.Status = "5";//异常锁定
                    detail.PalletStatus = "3";//脏桶
                    //修改库存状态
                    Db.Updateable(detail).ExecuteCommand();
                        endLocat.Status = "2";//入库中
                        Db.Updateable(endLocat).ExecuteCommand();
                        detail.Status = "2";//分配状态 0:待分配,1:部分分配 , 2:已分配
                        //更新桶库存明细
                        Db.Updateable(detail).ExecuteCommand();
                    }
                    else//失败
                    {
                        logTaskEntry.IsSuccess = 0;
                        logTaskEntry.Information = agvMsg;
                        Db.Insertable(logTaskEntry).ExecuteCommand();
                    }
                }
                //提交事务
                Db.CommitTran();
            }
            catch (Exception ex)
@@ -879,7 +942,7 @@
                {
                    Taskno = taskNo,//任务号
                    Startport = startLoction.LocatNo,//起始位置
                    Endport = endLoction.LocatNo,//目标位置
                    Endport = pallnetmsg.Location,//目标位置
                    Pallno = detail.PalletNo,//桶号
                    Crtype = "1",//叫桶
                    WareHouseNo = detail.WareHouseNo//车间编码