liudl
2025-03-13 b71144811c970ddb7296f5243f722ec6b00cf805
Admin.NET/WCS.Application/OpenApi/DemoOpenApi.cs
@@ -1,5 +1,6 @@
using Dm.filter;
using DocumentFormat.OpenXml.Drawing.Charts;
using DocumentFormat.OpenXml.Office.CustomUI;
using DocumentFormat.OpenXml.Presentation;
using Elastic.Clients.Elasticsearch;
using Furion.Logging;
@@ -373,24 +374,83 @@
            //获取包装数量
            int Fqty = int.Parse(models.FinishQty);
            int bzQty = 0;
            var boxinfolog = _db.Queryable<WcsBoxInfoLog>().Where(m => m.SkuNo == models.SkuNo && m.LotNo == models.LotNo && m.BitBoxMark == "0").First();
            if (boxinfolog == null)
            {
                var boxinfo = _db.Queryable<WcsBoxInfo>().Where(m => m.SkuNo == models.SkuNo && m.LotNo == models.LotNo && m.BitBoxMark == "0").First();
                Fqty = (int)(Fqty /boxinfo.QtyCount);
                bzQty = (int)boxinfo.QtyCount;
            }
            else
            {
                Fqty = (int)(Fqty / boxinfolog.QtyCount);
                bzQty = (int)boxinfolog.QtyCount;
            }
            int Jpqty = 0;
            //写入该任务完成数量
            foreach (var item in num)
            {
                item.FinishQty = Fqty;
                //判断当前单据码垛数量是否和完工数量相等,是则结批该单据
                var checkNum = _db.Queryable<WcsBoxInfoLog>().Where(m => m.SkuNo == models.SkuNo && m.LotNo == models.LotNo && m.OrderCode == item.OrderNo).ToList();//组盘表箱码信息
                if (checkNum.Count>0)
                {
                    if (checkNum.First().Qty != 0)//有支码
                    {
                        foreach (var item2 in checkNum)
                        {
                            Jpqty = (int)(Jpqty + item2.Qty);
                        }
                    }
                    else//无支码
                    {
                        foreach (var item2 in checkNum)
                        {
                            Jpqty = (int)(Jpqty + item2.QtyCount);
                        }
                    }
                }
                var checkNum2 = _db.Queryable<WcsBoxInfo>().Where(m => m.SkuNo == models.SkuNo && m.LotNo == models.LotNo && m.OrderCode == item.OrderNo).ToList();//箱码表已码垛箱码信息
                if (checkNum2.Count>0)
                {
                    if (checkNum2.First().Qty != 0)//有支码
                    {
                        foreach (var item2 in checkNum)
                        {
                            Jpqty = (int)(Jpqty + item2.Qty);
                        }
                    }
                    else//无支码
                    {
                        foreach (var item2 in checkNum)
                        {
                            Jpqty = (int)(Jpqty + item2.QtyCount);
                        }
                    }
                }
                if (Jpqty/bzQty == Fqty)
                {
                    //预结批信号下发
                    var modPlc = _db.Queryable<WcsPlc>().Where(s => s.Type == PLCTypeEnum.ConveyorLine && s.Text == ("2层托盘输送线")).First();
                    if (modPlc == null)
                        throw Oops.Bah("未找到输送线PLC");
                    PLCUtil plcConn = new PLCUtil(modPlc);
                    //获取工位点位信息
                    var portno = item.Port;
                    var modDevice = _db.Queryable<WcsPosition>().Where(s => s.StationNum == portno).First();
                    var listPlcDevice = _db.Queryable<WcsDevice>().Where(s => s.StationNum == portno && s.Text.Contains("2楼")).First();
                    var ret = plcConn.SetPlcDBValue(modDevice.PosType, listPlcDevice.DbNumber, modDevice.PlcPos, "1");//写入开始结批信号
                    if (ret.IsSucceed)
                    {
                        item.Status = "2";//结批中
                    }
                    else { throw new Exception("完工结批信号下发给PLC错误"); }
                }
                _db.Updateable(item).ExecuteCommand();
                return new ResponseFuMaModel() { Success = "0", Message = "接受完工结批数量成功" };
            }
            _db.Updateable(num).ExecuteCommand();
            return new ResponseFuMaModel() { Success = "0", Message = "接受完工结批数量成功" };
        }
        catch (Exception ex)
@@ -415,7 +475,7 @@
            string str = JsonConvert.SerializeObject(models);
            Log.Information("接收WMS入库放货确认,放货口:" + models.Port+"入库口");
            var portno = "";
            var portno = models.Port;
            var layer = "3";
            switch (models.Port)
            {
@@ -479,9 +539,9 @@
        try
        {
            string str = JsonConvert.SerializeObject(models);
            Log.Information("接收WMS入库放货确认,放货口:" + models.Port + "入库口");
            Log.Information("接收WMS入库放货请求,放货口:" + models.Port + "入库口");
            var portno = "";
            var portno = models.Port;
            var layer = "3";
            switch (models.Port)
            {
@@ -542,9 +602,9 @@
        try
        {
            string str = JsonConvert.SerializeObject(models);
            Log.Information("接收WMS入库放货确认,放货口:" + models.Port + "入库口");
            Log.Information("接收WMS入库放货完成,放货口:" + models.Port + "入库口");
            var portno = "";
            var portno = models.Port;
            var layer = "3";
            switch (models.Port)
            {