| | |
| | | info.S_ITEM_NAME = a.itemName; |
| | | info.S_IS_MANAGE = a.isManage; |
| | | info.S_IS_MANAGEDATE = a.isManageDate; |
| | | db.Updateable<TN_Material>(info).UpdateColumns(it => new { it.S_ITEM_NAME, it.S_IS_MANAGE, it.S_IS_MANAGEDATE }).ExecuteCommand(); |
| | | info.S_UOM = a.unit; |
| | | db.Updateable<TN_Material>(info).UpdateColumns(it => new { it.S_ITEM_NAME, it.S_IS_MANAGE, it.S_IS_MANAGEDATE,it.S_UOM }).ExecuteCommand(); |
| | | |
| | | |
| | | db.Updateable<CntrItemRel>().SetColumns(it => new CntrItemRel() { S_ITEM_NAME = a.itemName , S_UOM = a.unit }).Where(it=>it.S_ITEM_CODE==a.itemCode).ExecuteCommand(); |
| | | } |
| | | else |
| | | { |
| | | db.Insertable(new TN_Material { S_ITEM_CODE = a.itemCode, S_ITEM_NAME = a.itemName, S_IS_MANAGE = a.isManage, S_IS_MANAGEDATE = a.isManageDate }).ExecuteCommand(); |
| | | db.Insertable(new TN_Material { S_ITEM_CODE = a.itemCode, S_ITEM_NAME = a.itemName, S_IS_MANAGE = a.isManage, S_IS_MANAGEDATE = a.isManageDate, S_UOM = a.unit }).ExecuteCommand(); |
| | | } |
| | | //db.Updateable<TN_Material>().SetColumns(it => new TN_Material() { S_ITEM_NAME = a.itemName }).Where(it => it.S_ITEM_CODE == a.itemCode).ExecuteCommand(); |
| | | //db.Updateable<WHInventory>().SetColumns(it => new WHInventory() { S_ITEM_NAME = a.itemName }).Where(it => it.S_ITEM_CODE == a.itemCode).ExecuteCommand(); |
| | |
| | | S_BATCH_NO = a.batchNo, |
| | | S_OWNER = a.factoryCode, |
| | | S_ERP_WH_CODE = a.stockLoc, |
| | | S_UOM=itemName.S_UOM, |
| | | F_QTY = a.qty, |
| | | S_SUPPLIER_NO = a.vendorCode, |
| | | S_SERIAL_NO = a.serialNo, |
| | |
| | | S_ITEM_NAME = itemName.S_ITEM_NAME, |
| | | S_ITEM_CODE = a.itemCode, |
| | | S_BATCH_NO = a.batchNo, |
| | | S_UOM=itemName.S_UOM, |
| | | S_BS_NO=a.inWorkNo, |
| | | S_OWNER = a.factoryCode, |
| | | S_ERP_WH_CODE = a.stockLocation, |
| | |
| | | S_CNTR_CODE = model.cntrNo, |
| | | S_WU = a.rowID, |
| | | S_ITEM_NAME = itemName.S_ITEM_NAME, |
| | | S_UOM = itemName.S_UOM, |
| | | S_ITEM_CODE = a.itemCode, |
| | | S_BATCH_NO = a.batchNo, |
| | | S_OWNER = a.factoryCode, |
| | |
| | | { |
| | | S_CNTR_CODE = cntr, |
| | | S_ITEM_NAME = itemName.S_ITEM_NAME, |
| | | S_UOM = itemName.S_UOM, |
| | | S_ITEM_CODE = a.itemCode, |
| | | S_BATCH_NO = a.batchNo, |
| | | S_OWNER = a.factoryCode, |
| | |
| | | { |
| | | S_CNTR_CODE = cntr, |
| | | S_ITEM_NAME = itemName.S_ITEM_NAME, |
| | | S_UOM = itemName.S_UOM, |
| | | S_ITEM_CODE = it.itemCode, |
| | | S_BATCH_NO = it.batchNo, |
| | | S_OWNER = it.factoryCode, |
| | |
| | | /// 生产日期管理 |
| | | /// </summary> |
| | | public string isManageDate { get; set; } = "Y"; |
| | | /// <summary> |
| | | /// 物料单位 |
| | | /// </summary> |
| | | public string unit { get; set; } = "kg"; |
| | | } |
| | | public class ReceivingNoteModel |
| | | { |
| | |
| | | |
| | | TaskActionList.ForEach(a => |
| | | { |
| | | tasks.Add(Task.Run(() => |
| | | { |
| | | //tasks.Add(Task.Run(() => |
| | | //{ |
| | | var TN_Task = WCSHelper.GetTask(a.TASK_NO); |
| | | if (TN_Task != null) |
| | | { |
| | |
| | | } |
| | | db.Deleteable(a).ExecuteCommand(); |
| | | } |
| | | })); |
| | | //})); |
| | | }); |
| | | Task.WaitAll(tasks.ToArray(), 3000); |
| | | //Task.WaitAll(tasks.ToArray(), 12000); |
| | | |
| | | |
| | | } |
| | |
| | | var startloc = db.Queryable<Location>().Where(it => it.S_CODE == a.S_LOC_CODE).First(); |
| | | if (startloc != null) |
| | | { |
| | | LogHelper.Info($"托盘{a.S_CNTR_CODE} 绑定位置{a.S_LOC_CODE} 锁状态{startloc.S_LOCK_STATE}"); |
| | | LogHelper.Info($"托盘{a.S_CNTR_CODE} 绑定位置{a.S_LOC_CODE} 盘点状态{a.N_B_STATE} 锁状态{startloc.S_LOCK_STATE}"); |
| | | if (a.N_B_STATE == 0 && startloc.S_LOCK_STATE == "其它锁") |
| | | { |
| | | if (Settings.LKCodes.Where(it => it.LiKuCode == startloc.S_AREA_CODE).FirstOrDefault() != null) |
| | |
| | | S_CNTR_CODE = a.S_CNTR_CODE, |
| | | }; |
| | | |
| | | var res = true; |
| | | |
| | | if (type == "NDC" && (a.S_OP_DEF_NAME == "出库" || a.S_OP_DEF_NAME == "分拣出" || a.S_OP_DEF_NAME == "空框出库")) |
| | | { |
| | | string workNo = ""; |
| | |
| | | { |
| | | LogHelper.Info($"中台返回终点{endbit} 不存在货位信息"); |
| | | LocationHelper.UnLockLoc(end.S_CODE); |
| | | break; |
| | | //break; |
| | | res = false; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info($"中台并未返回终点"); |
| | | LocationHelper.UnLockLoc(end.S_CODE); |
| | | break; |
| | | res = false; |
| | | //break; |
| | | } |
| | | } |
| | | |
| | | if (WCSHelper.CreateTask(wcsTask)) |
| | | if (res) |
| | | { |
| | | LogHelper.Info($"作业{a.S_CODE} 创建任务成功 修改作业状态"); |
| | | //更新作业状态为执行 |
| | | a.N_B_STATE = 1; |
| | | a.S_B_STATE = "执行"; |
| | | WMSHelper.UpdateTaskState(a); |
| | | if (WCSHelper.CreateTask(wcsTask)) |
| | | { |
| | | LogHelper.Info($"作业{a.S_CODE} 创建任务成功 修改作业状态"); |
| | | //更新作业状态为执行 |
| | | a.N_B_STATE = 1; |
| | | a.S_B_STATE = "执行"; |
| | | WMSHelper.UpdateTaskState(a); |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | |
| | | public string S_IS_MANAGE { get; set; } |
| | | public string S_IS_MANAGEDATE { get; set; } |
| | | public string S_AREA_CODE { get; set; } = ""; |
| | | public string S_UOM { get; set; } = "kg"; |
| | | } |
| | | } |
| | |
| | | { |
| | | db.Updateable<Location>().SetColumns(it => new Location() { N_CURRENT_NUM = 0 }).Where(a => a.S_CODE == mst.S_START_LOC).ExecuteCommand(); |
| | | } |
| | | |
| | | |
| | | |
| | | LocationHelper.UnLockLoc(mst.S_START_LOC); |
| | | LocationHelper.UnLockLoc(mst.S_END_LOC); |
| | |
| | | db.Updateable(InWorkOrder).UpdateColumns(it => new { it.F_ACC_B_QTY }).ExecuteCommand(); |
| | | } |
| | | } |
| | | else |
| | | else |
| | | { |
| | | LogHelper.Info($"未找到托盘{wmsTask.S_CNTR_CODE}的物料明细"); |
| | | } |
| | | } |
| | | else |
| | | else |
| | | { |
| | | LogHelper.Info($"作业类型为{wmsTask.S_OP_DEF_NAME} 无须降量"); |
| | | } |
| | |
| | | if (codeReader != null) |
| | | { |
| | | LogHelper.Info($"agv={codeReader.agv},ip={codeReader.ip}"); |
| | | for (int i = 1; i <= 5; i++) |
| | | for (int i = 1; i <= 3; i++) |
| | | { |
| | | //try |
| | | //{ |
| | | //var res = OITcpHelper.HexTransit(new OITcpHelper.StrTransitData { data = "4C 4F 4E 0D", host = codeReader.ip, port = 9004 }); |
| | | var res = SendHexOnce(codeReader.ip, codeReader.port, "41"); |
| | | LogHelper.Info($"扫码返回报文{res}"); |
| | | if (string.IsNullOrEmpty(res)) |
| | | { |
| | | NDCApi.ChangeOrderParam(mst.S_CODE, 6, "3"); |
| | | } |
| | | else |
| | | //if (string.IsNullOrEmpty(res)) |
| | | //{ |
| | | // NDCApi.ChangeOrderParam(mst.S_CODE, 6, "3"); |
| | | //} |
| | | //else |
| | | //{ |
| | | if (res.Length >= 18) |
| | | { |
| | | res = res.Substring(2, 16); |
| | | var code = hexToStr(res); |
| | | Console.WriteLine(code); |
| | | LogHelper.Info($"托盘信息为={mst.S_CNTR_CODE},扫码结果为={code},结果:{mst.S_CNTR_CODE.Trim() == code.Trim()}"); |
| | | if (res != null && code.Trim() != "ERROR") |
| | | } |
| | | |
| | | |
| | | var code = hexToStr(res); |
| | | Console.WriteLine(code); |
| | | LogHelper.Info($"托盘信息为={mst.S_CNTR_CODE},扫码结果为={code},结果:{mst.S_CNTR_CODE.Trim() == code.Trim()}"); |
| | | if (!string.IsNullOrEmpty(code) && res.Trim() != "022503") |
| | | { |
| | | if (mst.S_CNTR_CODE.Trim() == code.Trim()) |
| | | { |
| | | if (mst.S_CNTR_CODE.Trim() == code.Trim()) |
| | | { |
| | | NDCApi.ChangeOrderParam(mst.S_CODE, 6, "1"); |
| | | } |
| | | else |
| | | { |
| | | NDCApi.ChangeOrderParam(mst.S_CODE, 6, "2"); |
| | | } |
| | | return; |
| | | NDCApi.ChangeOrderParam(mst.S_CODE, 6, "1"); |
| | | } |
| | | else if (i == 5) |
| | | else |
| | | { |
| | | if (res != null) |
| | | { |
| | | NDCApi.ChangeOrderParam(mst.S_CODE, 6, "3"); |
| | | } |
| | | else |
| | | { |
| | | NDCApi.ChangeOrderParam(mst.S_CODE, 6, "4"); |
| | | } |
| | | NDCApi.ChangeOrderParam(mst.S_CODE, 6, "2"); |
| | | } |
| | | return; |
| | | } |
| | | else if (i == 3) |
| | | { |
| | | if (!string.IsNullOrEmpty(code)) |
| | | { |
| | | NDCApi.ChangeOrderParam(mst.S_CODE, 6, "3"); |
| | | } |
| | | else |
| | | { |
| | | NDCApi.ChangeOrderParam(mst.S_CODE, 6, "4"); |
| | | } |
| | | } |
| | | //} |
| | | |
| | | //} |
| | | //catch (Exception ex) |
| | |
| | | private static string SendHexOnce(string ip, int port, string hex) |
| | | { |
| | | var res = string.Empty; |
| | | Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); |
| | | client.Connect(ip, port); |
| | | client.ReceiveTimeout = 2000; |
| | | if (client.Connected) |
| | | try |
| | | { |
| | | client.Send(Hex2Bytes(hex)); |
| | | byte[] buffer = new byte[1024]; |
| | | try |
| | | Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); |
| | | //client.Connect(ip, port); |
| | | IAsyncResult connectResult = client.BeginConnect(ip, port, null, null); |
| | | if (!connectResult.AsyncWaitHandle.WaitOne(5000)) |
| | | { |
| | | client.Close(); |
| | | return ""; |
| | | } |
| | | client.ReceiveTimeout = 2000; |
| | | if (client.Connected) |
| | | { |
| | | client.Send(Hex2Bytes(hex)); |
| | | byte[] buffer = new byte[1024]; |
| | | |
| | | var length = client.Receive(buffer, SocketFlags.None); |
| | | byte[] data = new byte[length]; |
| | | Array.Copy(buffer, data, length); |
| | | res = BitConverter.ToString(data).Replace("-", ""); |
| | | |
| | | |
| | | client.Disconnect(true); |
| | | client.Dispose(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | LogHelper.Error(ex.Message, ex); |
| | | } |
| | | client.Disconnect(true); |
| | | client.Dispose(); |
| | | client = null; |
| | | } |
| | | client = null; |
| | | catch (Exception ex) |
| | | { |
| | | LogHelper.Error(ex.Message, ex); |
| | | } |
| | | return res; |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | var wmsTask = db.Queryable<WMSTask>().Where(a => a.S_CODE == mst.S_OP_CODE).First(); |
| | | if (wmsTask != null && wmsTask.N_TRAY_WEIGHT > 0) |
| | | if (wmsTask != null && wmsTask.N_TRAY_WEIGHT > 0) |
| | | { |
| | | // 1000 2000 3000 4000 5000 |
| | | Trow = (wmsTask.N_TRAY_WEIGHT * 4096).ToString(); |
| | | } |
| | | |
| | | |
| | | |
| | | Console.WriteLine($"SendTask {mst.S_CODE}"); |
| | | Console.WriteLine("start=" + start); |
| | |
| | | itemCode = it.S_ITEM_CODE, |
| | | factoryCode = string.IsNullOrEmpty(it.S_OWNER) ? "" : it.S_OWNER, |
| | | stockCode = string.IsNullOrEmpty(it.S_ERP_WH_CODE) ? "" : it.S_ERP_WH_CODE, |
| | | qty = Convert.ToInt32(it.F_QTY), |
| | | qty = it.F_QTY, |
| | | vendorCode = string.IsNullOrEmpty(it.S_SUPPLIER_NO) ? "" : it.S_SUPPLIER_NO, |
| | | batchNo = string.IsNullOrEmpty(it.S_BATCH_NO) ? "" : it.S_BATCH_NO, |
| | | serialNo = string.IsNullOrEmpty(it.S_SERIAL_NO) ? "" : it.S_SERIAL_NO |
| | |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | task.T_MODIFY = DateTime.Now; |
| | | task.S_B_STATE = WMSTask.GetStateStr(task.N_B_STATE); |
| | | db.Updateable<WMSTask>(task).UpdateColumns(a => new { a.N_B_STATE, a.S_B_STATE, a.T_MODIFY }).ExecuteCommand(); |
| | | var res=db.Updateable<WMSTask>(task).UpdateColumns(a => new { a.N_B_STATE, a.S_B_STATE, a.T_MODIFY }).ExecuteCommand()>0; |
| | | LogHelper.Info($"修改作业状态 作业号{task.S_CODE} 作业状态{task.N_B_STATE} 修改结果{res}"); |
| | | } |
| | | |
| | | internal static bool UpdateTaskEnd(WMSTask a) |