| | |
| | | if (orderModel != null) |
| | | { |
| | | // 根据boxinfo表产线字段自动绑定分道(1线产品只能绑定到8道) |
| | | if (boxInfo.LineNo != "1") |
| | | if (boxInfo.LineNo != "一线") |
| | | {// 绑定到除8道外其他道 |
| | | |
| | | // 获取未绑定道 |
| | |
| | | lineNoModel.LotNo = boxInfo.LotNo; |
| | | lineNoModel.SkuNo = boxInfo.SkuNo; |
| | | lineNoModel.SkuName = boxInfo.SkuName; |
| | | lineNoModel.Qty = orderModel.Qty; |
| | | lineNoModel.Qty = 0; |
| | | lineNoModel.Status = "1";//已绑定 |
| | | lineNoModel.PZNo = skuInfo.PZNo; |
| | | lineNoModel.FinishQty = 0; |
| | | |
| | | // 给PLC写入品规 |
| | | var ret = plcConn.SetPlcDBValue(lineNoModel.PosType, lineNoModel.DbNumber, lineNoModel.PlcPos, skuInfo.PZNo); |
| | |
| | | lineNo8Model.LotNo = boxInfo.LotNo; |
| | | lineNo8Model.SkuNo = boxInfo.SkuNo; |
| | | lineNo8Model.SkuName = boxInfo.SkuName; |
| | | lineNo8Model.Qty = orderModel.Qty; |
| | | lineNo8Model.Qty = 0; |
| | | lineNo8Model.Status = "1";//已绑定 |
| | | lineNo8Model.PZNo = skuInfo.PZNo; |
| | | lineNo8Model.FinishQty = 0; |
| | | |
| | | // 给PLC写入品规 |
| | | var ret = plcConn.SetPlcDBValue(lineNo8Model.PosType, lineNo8Model.DbNumber, lineNo8Model.PlcPos, skuInfo.PZNo); |
| | |
| | | break; |
| | | } |
| | | // 获取当前分道托盘号 |
| | | var checkTaskMedel = _db.Queryable<WcsCheckTask>().First(m => m.Port == modDevice.StationNum && m.IsDelete == false); |
| | | string port = modDevice.StationNum.ToString(); |
| | | var checkTaskMedel = _db.Queryable<WcsCheckTask>().First(m => m.Port == port && m.Status == "1"); |
| | | if (checkTaskMedel == null) |
| | | { |
| | | Log.Error(string.Format("根据码垛工位{0},获取分道失败!", modDevice.StationNum)); |
| | |
| | | item.OrderCode = checkTaskMedel.OrderNo; |
| | | } |
| | | |
| | | checkTaskMedel.Qty += boxInfo.First().QtyCount;//记录当前托盘上物料数量 |
| | | _db.Updateable(checkTaskMedel).ExecuteCommand(); |
| | | var rowCount = _db.Updateable(boxInfo).ExecuteCommand(); |
| | | Log.Information(string.Format("插码成功,箱码是:" + boxNo, modDevice.StationNum)); |
| | | if (rowCount > 0) |
| | |
| | | var retVal = plcConn.SetPlcDBValue(modAddCode.PosType, modDevice.DbNumber, modAddCode.PlcPos, "1"); |
| | | |
| | | //是否结批箱 |
| | | if (boxInfo[0].EndLotFlag == "1" && retVal.IsSucceed) |
| | | //if (boxInfo[0].EndLotFlag == "1" && retVal.IsSucceed) |
| | | //{ |
| | | // // 触发结批 分道变为结批中 |
| | | // AutoEndLot(boxInfo[0].LotNo, plcConn, "2"); |
| | | //} |
| | | if (retVal.IsSucceed) |
| | | { |
| | | //判读是否接收完工数量 |
| | | var models = _db.Queryable<WcsCheckTask>().First(w => w.SkuNo == boxInfo.First().SkuNo && w.LotNo == boxInfo.First().LotNo); |
| | | if (models.FinishQty>0) |
| | | { |
| | | //检查已码垛箱数(不含零箱),码垛数量与完工数量相等后自动结批:写入PLC信号——结批中 |
| | | int Fqty = (int)models.FinishQty;//完工数量 |
| | | int Jpqty = 0;//已码垛数量 |
| | | |
| | | //获取已组盘数量 |
| | | var checkNum = _db.Queryable<WcsBoxInfoLog>().Where(m => m.SkuNo == models.SkuNo && m.LotNo == models.LotNo && m.OrderCode == checkTaskMedel.OrderNo).ToList();//组盘表箱码信息 |
| | | if (checkNum.Count > 0) |
| | | { |
| | | if (!string.IsNullOrEmpty(checkNum.First().BoxNo2) || !string.IsNullOrEmpty(checkNum.First().BoxNo3))//有支码 |
| | | { |
| | | foreach (var item in checkNum) |
| | | { |
| | | Jpqty = (int)(Jpqty + item.Qty); |
| | | } |
| | | } |
| | | else//无支码 |
| | | { |
| | | foreach (var item in checkNum) |
| | | { |
| | | Jpqty = (int)(Jpqty + item.QtyCount); |
| | | } |
| | | } |
| | | } |
| | | //获取已插码数量 |
| | | var checkNum2 = _db.Queryable<WcsBoxInfo>().Where(m => m.SkuNo == models.SkuNo && m.LotNo == models.LotNo &&(m.PalletNo != null || m.PalletNo != "") && m.OrderCode == checkTaskMedel.OrderNo).ToList();//箱码表已码垛箱码信息 |
| | | if (checkNum2.Count > 0) |
| | | { |
| | | if (!string.IsNullOrEmpty(checkNum2.First().BoxNo2) || !string.IsNullOrEmpty(checkNum2.First().BoxNo3))//有支码 |
| | | { |
| | | foreach (var item2 in checkNum2) |
| | | { |
| | | Jpqty = (int)(Jpqty + item2.Qty); |
| | | } |
| | | } |
| | | else//无支码 |
| | | { |
| | | foreach (var item2 in checkNum2) |
| | | { |
| | | Jpqty = (int)(Jpqty + item2.QtyCount); |
| | | } |
| | | } |
| | | } |
| | | //获取零箱数量 |
| | | var checkNum3 = _db.Queryable<WcsBoxInfo>().Where(m => m.BitBoxMark == "1" && m.SkuNo == models.SkuNo && m.LotNo == models.LotNo).ToList(); |
| | | if (checkNum3.Count > 0) |
| | | { |
| | | if (!string.IsNullOrEmpty(checkNum3.First().BoxNo2) || !string.IsNullOrEmpty(checkNum3.First().BoxNo3))//有支码 |
| | | { |
| | | foreach (var item3 in checkNum3) |
| | | { |
| | | Jpqty = (int)(Jpqty + item3.Qty); |
| | | } |
| | | } |
| | | else//无支码 |
| | | { |
| | | foreach (var item3 in checkNum3) |
| | | { |
| | | Jpqty = (int)(Jpqty + item3.QtyCount); |
| | | } |
| | | } |
| | | } |
| | | if (Jpqty == Fqty) |
| | | { |
| | | // 触发结批 分道变为结批中 |
| | | AutoEndLot(boxInfo[0].LotNo, plcConn, "2"); |
| | | } |
| | | |
| | | //检查已码垛箱数,码垛数量与完工数量相等后自动结批 |
| | | //var finishiqty = _db.Queryable<WcsBoxInfoLog>().Count(m => m.SkuNo = ) |
| | | //if (true) |
| | | //{ |
| | | |
| | | //} |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | |
| | | string sqlStr2 = $"delete from WCSBoxInfo where IsDelete=0 and PalletNo='{palletNo}'"; |
| | | _db.Ado.ExecuteCommand(sqlStr2); |
| | | } |
| | | //组盘成功后清空分拣表当前托盘上物料数量 |
| | | checkTaskMedel.Qty = 0; |
| | | _db.Updateable(checkTaskMedel).ExecuteCommand(); |
| | | |
| | | // 向WMS申请巷道 |
| | | var http = new HttpService(); |
| | | string TaskNo = "", EndLocate = ""; |
| | | string strMsg = http.BindRequestRoadWay(checkTaskMedel.OrderNo, palletNo, checkTaskMedel.BoxCount.ToDecimal(), "0", checkTaskMedel.SkuNo, checkTaskMedel.LotNo, "", "", boxInfoList, |
| | | string strMsg = http.BindRequestRoadWay(checkTaskMedel.OrderNo, palletNo, checkTaskMedel.Qty.ToDecimal(), "0", checkTaskMedel.SkuNo, checkTaskMedel.LotNo, "", "", boxInfoList, |
| | | modDevice.StationNum, "1", "2", ref EndLocate, ref TaskNo); |
| | | if (strMsg.Contains("-1")) |
| | | { |
| | |
| | | var ret1 = plcConn.SetPlcDBValue(checkTaskMedel.PosTypeLot, modDevice.DbNumber, checkTaskMedel.PlcPos, "0"); |
| | | if (ret1.IsSucceed) |
| | | { |
| | | //更新入库订单 |
| | | var orderTask = _db.Queryable<WcsOderTask>().Where(w => w.SkuNo == checkTaskMedel.SkuNo && w.LotNo == checkTaskMedel.LotNo && w.IsDelete == false).ToList(); |
| | | if (orderTask.Count >0) |
| | | { |
| | | foreach (var item in orderTask) |
| | | { |
| | | item.Status = TaskStatusEnum.Complete; |
| | | _db.Updateable(item).ExecuteCommand(); |
| | | } |
| | | } |
| | | |
| | | //写入流程字成功后更新分拣任务 liudl 最后一托盘申请完入库才可清空 |
| | | checkTaskMedel.OrderNo = ""; |
| | | checkTaskMedel.TaskNo = ""; |
| | |
| | | checkTaskMedel.Qty = 0; |
| | | checkTaskMedel.PZNo = ""; |
| | | checkTaskMedel.Status = "0"; // 绑定分道 0:解绑 1:绑定 |
| | | checkTaskMedel.FinishQty = 0; |
| | | |
| | | //更新分拣任务 |
| | | _db.Updateable(checkTaskMedel).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); |
| | | |
| | | |
| | | } |
| | | } |
| | | // 获取入库任务信息 |