| | |
| | | if (obj.Result != "0")//可用,生成小车拉净桶任务 |
| | | { |
| | | //查找是否有空余脏桶位 |
| | | sql = $"select LocatNo from SysStorageLocat where AreaNo like '%04' and WareHouseNo = wareno and Status = 0"; |
| | | sql = $"select LocatNo from SysStorageLocat where AreaNo like '%04' and WareHouseNo = '{house}' and Status = 0"; |
| | | locat = Db.Ado.SqlQuery<SysStorageLocat>(sql).FirstOrDefault(); |
| | | if (locat == null) |
| | | { |
| | |
| | | Startport = item.LocatNo, |
| | | Endport = locat.LocatNo, |
| | | Pallno = item.PalletNo, |
| | | Type = "4", |
| | | Type = "3", |
| | | Crtype = "0", |
| | | Noticedetailno = int.Parse(noticeno), |
| | | }; |
| | | CreateLotTask(ztask); |
| | | return; |
| | | continue; |
| | | } |
| | | //下发小车任务 |
| | | var task2 = new TaskDetial |
| | |
| | | } |
| | | noticeno = ArriveMes.Id.ToString();*/ |
| | | //查找库存中是否有可用的此批次的混料桶 |
| | | sql= $"select PalletNo,LocatNo from DataStockDetail where a.LotNo = '{pallnetmsg.LotNo}'and AreaNo like '%02' " + |
| | | $"and a.WareHouseNo = '{house}' and b.status = '0' order by CompleteTime desc"; |
| | | sql= $"select PalletNo,LocatNo from DataStockDetail where LotNo = '{pallnetmsg.LotNo}'and AreaNo like '%02' " + |
| | | $"and WareHouseNo = '{house}' and status = '0' order by CompleteTime desc"; |
| | | pallet = Db.Ado.SqlQuery<DataStockDetail>(sql).FirstOrDefault(); |
| | | if (pallet == null) |
| | | { |
| | |
| | | throw new Exception("批次号为空!"); |
| | | } |
| | | //查找是否有此批次出库单 |
| | | sql = $"select * from BllSoNoticeDetail where LotNo = '{pallnetmsg.LotNo}' order by CreateTime desc"; |
| | | sql = $"select * from BllExportNoticeDetail where LotNo = '{pallnetmsg.LotNo}' order by CreateTime desc"; |
| | | bllSo = Db.Ado.SqlQuery<BllExportNoticeDetail>(sql).FirstOrDefault(); |
| | | if (bllSo == null) |
| | | { |
| | |
| | | } |
| | | noticeno = bllSo.Id.ToString(); |
| | | //查找库存中是否有此批次的下料桶 |
| | | sql += $"select PalletNo,LocatNo from DataStockDetail where a.LotNo = '{pallnetmsg.LotNo}'and AreaNo like '%03' " + |
| | | $"and a.WareHouseNo = '{house}' and b.status = '0' order by CompleteTime desc"; |
| | | sql = $"select PalletNo,LocatNo from DataStockDetail where LotNo = '{pallnetmsg.LotNo}'and AreaNo like '%03' " + |
| | | $"and WareHouseNo = '{house}' and status = '0' order by CompleteTime desc"; |
| | | pallet = Db.Ado.SqlQuery<DataStockDetail>(sql).FirstOrDefault(); |
| | | if (pallet == null) |
| | | { |
| | |
| | | { |
| | | Startport = pallet.LocatNo, |
| | | Endport = pallnetmsg.Location, |
| | | Pallno = pallet.PackagNo, |
| | | Pallno = pallet.PalletNo, |
| | | Type = pallnetmsg.Type, |
| | | Crtype = "1", |
| | | Noticedetailno = int.Parse(noticeno), |
| | | LotNo = pallnetmsg.LotNo, |
| | | }; |
| | | CreateLotTask(task); |
| | | return; |
| | |
| | | var sql = $"select LocatNo from SysStorageLocat where status = '0'"; |
| | | var sql2 = ""; |
| | | var house = "W01";//……叫桶位置,后续根据位置关联或定义,来判断叫桶位置所属车间 |
| | | var noticeno = "";//出入库单据明细ID |
| | | var noticeno = "0";//出入库单据明细ID |
| | | SysStorageLocat loction = new SysStorageLocat(); |
| | | BllArrivalNoticeDetail ArriveMes = new BllArrivalNoticeDetail(); |
| | | try |
| | |
| | | switch (pallnetmsg.Type) |
| | | { |
| | | case "0"://净桶申请储位 |
| | | sql += $"and AreaNo like '%01' and WareHouseNo = {house}"; |
| | | sql += $"and AreaNo like '%01' and WareHouseNo = '{house}'"; |
| | | loction = Db.Ado.SqlQuery<SysStorageLocat>(sql).OrderByDescending(a => a.CreateTime).FirstOrDefault(); |
| | | if (loction == null) |
| | | { |
| | |
| | | throw new Exception("该批次没有对应的入库单"); |
| | | } |
| | | noticeno = ArriveMes.Id.ToString();*/ |
| | | sql += $"and AreaNo like '%02' and WareHouseNo = {house}"; |
| | | sql += $"and AreaNo like '%02' and WareHouseNo = '{house}'"; |
| | | loction = Db.Ado.SqlQuery<SysStorageLocat>(sql).OrderByDescending(a => a.CreateTime).FirstOrDefault(); |
| | | if (loction == null) |
| | | { |
| | |
| | | } |
| | | //校验此批次是否有入库单 |
| | | sql2 = $"select * from BllArrivalNoticeDetail where LotNo = '{pallnetmsg.LotNo}' order by CreateTime desc"; |
| | | ArriveMes = Db.Ado.SqlQuery<BllArrivalNoticeDetail>(sql).FirstOrDefault(); |
| | | ArriveMes = Db.Ado.SqlQuery<BllArrivalNoticeDetail>(sql2).FirstOrDefault(); |
| | | if (ArriveMes == null) |
| | | { |
| | | throw new Exception("该批次没有对应的入库单"); |
| | | } |
| | | noticeno = ArriveMes.Id.ToString(); |
| | | sql += $"and AreaNo like '%03' and WareHouseNo = {house}"; |
| | | sql += $"and AreaNo like '%03' and WareHouseNo = '{house}'"; |
| | | loction = Db.Ado.SqlQuery<SysStorageLocat>(sql).OrderByDescending(a => a.CreateTime).FirstOrDefault(); |
| | | if (loction == null) |
| | | { |
| | |
| | | } |
| | | break; |
| | | case "3"://脏桶申请储位 |
| | | sql += $"and AreaNo like '%04' and WareHouseNo = {house}"; |
| | | sql += $"and AreaNo like '%04' and WareHouseNo = '{house}'"; |
| | | loction = Db.Ado.SqlQuery<SysStorageLocat>(sql).OrderByDescending(a => a.CreateTime).FirstOrDefault(); |
| | | if (loction == null) |
| | | { |
| | |
| | | Type = pallnetmsg.Type, |
| | | Crtype = "0", |
| | | Noticedetailno = int.Parse(noticeno), |
| | | LotNo = pallnetmsg.LotNo, |
| | | }; |
| | | CreateLotTask(task); |
| | | } |
| | |
| | | { |
| | | try |
| | | { |
| | | //开启事务 |
| | | Db.BeginTran(); |
| | | var na = taskDetial.Crtype == "0"?"入库":"出库"; |
| | | var bz = ""; |
| | | switch (taskDetial.Type) |
| | | { |
| | | case "0": |
| | | bz = "净桶"+na+"任务"; |
| | | break; |
| | | case "1": |
| | | bz = "预混料桶" + na + "任务"; |
| | | break; |
| | | case "2": |
| | | bz = "半成品料桶" + na + "任务"; |
| | | break; |
| | | case "3": |
| | | bz = "脏桶" + na + "任务"; |
| | | break; |
| | | } |
| | | var sql = ""; |
| | | var sql2 = ""; |
| | | var ordertype = "3"; |
| | | if (taskDetial.Type == "2" && taskDetial.Crtype =="1") |
| | | //涉及出入库单据的状态信息改变 |
| | | if (taskDetial.Type == "2" && taskDetial.Crtype =="1")//半成品出库 |
| | | { |
| | | ordertype = "1"; |
| | | sql = $"UPDATE BllExportNotice SET Status ='1' " + |
| | | $"where asnno = (select ASNNO from BllExportNoticeDetail where id = {taskDetial.Noticedetailno})"; |
| | | Db.Ado.ExecuteCommand(sql); |
| | | } |
| | | else if(taskDetial.Type =="2" && taskDetial.Crtype == "0") |
| | | else if(taskDetial.Type =="2" && taskDetial.Crtype == "0")//半成品入库 |
| | | { |
| | | ordertype = "0"; |
| | | var ArrivalMsg = Db.Queryable<BllArrivalNoticeDetail>().First(it => it.Id == taskDetial.Noticedetailno); |
| | | //修改入库单总表中单据状态为正在执行 |
| | | sql = $"UPDATE BllArrivalNotice SET Status ='1' where asnno = '{ArrivalMsg.ASNNo}'"; |
| | | Db.Ado.ExecuteCommand(sql); |
| | | //库存中添加此托盘物料编码和编码名称 |
| | | sql2 = $"UPDATE DataStockDetail SET SkuNo = '{ArrivalMsg.SkuNo}',SkuName = '{ArrivalMsg.SkuName}' " + |
| | | $"where PalletNo = '{taskDetial.Pallno}'and LotNo = '{taskDetial.LotNo}'"; |
| | | Db.Ado.ExecuteCommand(sql2); |
| | | } |
| | | //开启事务 |
| | | Db.BeginTran(); |
| | | |
| | | //判断任务是否为新任务 |
| | | if (string.IsNullOrWhiteSpace(taskDetial.Taskno)) |
| | | { |
| | | taskDetial.Taskno = new Common().GetMaxNo("T"); |
| | | taskDetial.Taskno = new Common().GetMaxNo("TK"); |
| | | } |
| | | var logTaskEntry = new LogTask |
| | | { |
| | |
| | | OrderType = ordertype,//单据类型 0 入库 1 出库 3其他 |
| | | Status = "0",//任务状态0:等待执行1正在执行2执行完成 |
| | | NoticeDetailNo = int.Parse(taskDetial.Noticedetailno.ToString()), |
| | | Msg = $"{taskDetial.Endport}的{na}任务", //关键信息 |
| | | Msg = bz, //关键信息 |
| | | }; |
| | | var Agv = new AgvTask |
| | | { |
| | |
| | | endPos = taskDetial.Endport, |
| | | agvCode = "1",//……需要和AGV确认此字段值 |
| | | }; |
| | | |
| | | //请求小车 |
| | | genAgvSchedulingTaskRep chrep =genAgvSchedulingTask(Agv, "url"); |
| | | if (chrep.code != "0") |
| | |
| | | Db.CommitTran(); |
| | | throw new Exception("RCS任务下发错误,RCS返回消息:" + chrep.message); |
| | | } |
| | | //请求成功修改任务表相应字段状态 |
| | | logTaskEntry.IsSuccess = 1; |
| | | logTaskEntry.BackDate = DateTime.Now; |
| | | logTaskEntry.Status = "1"; |
| | | if (taskDetial.Crtype == "0") |
| | | { |
| | | sql = $"UPDATE SysStorageLocat SET Status = '2' where LocatNo = '{taskDetial.Endport}'"; |
| | | sql2 = $"UPDATE DataStockDetail SET PalletStatus = '{taskDetial.Type}' where PalletNo = '{taskDetial.Pallno}'"; |
| | | Db.Ado.ExecuteCommand(sql2); |
| | | if (taskDetial.Type == "2") |
| | | { |
| | | sql2 = $"UPDATE DataStockDetail SET PalletStatus = '{taskDetial.Type}',LotNo = '{taskDetial.LotNo}' " + |
| | | $"where PalletNo = '{taskDetial.Pallno}'"; |
| | | Db.Ado.ExecuteCommand(sql2); |
| | | } |
| | | } |
| | | else |
| | | { |