| | |
| | | lay-filter="LAY-app-contlist-shenqing"> |
| | | <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>申请储位 |
| | | </button> --> |
| | | <button class="layui-btn layui-btn-sm layuiadmin-btn-list shenqingClass" lay-submit |
| | | <!-- <button class="layui-btn layui-btn-sm layuiadmin-btn-list shenqingClass" lay-submit |
| | | lay-filter="LAY-app-contlist-shenqing" id="add"> |
| | | <i class="layui-icon layui-icon-add layuiadmin-button-btn"></i>申请储位 |
| | | </button> |
| | | </button> --> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | var TotalColsArr = [[ |
| | | { field: '', title: '序号', type: 'numbers', width: 50, align: 'center', fixed: 'left', "disabled": true }, |
| | | { field: 'SONo', title: '出库单号', align: 'center', fixed: 'left', width: 165, "disabled": true }, |
| | | { field: 'Type', title: '单据类型', align: 'center', templet: '#templetType' }, |
| | | //{ field: 'Type', title: '单据类型', align: 'center', templet: '#templetType' }, |
| | | { field: 'Status', title: '执行状态', align: 'center', templet: '#templetStatus' }, |
| | | // { field: 'LogisticsName', title: '承运商', align: 'center' }, |
| | | // { field: 'CustomerName', title: '客户名称', align: 'center' }, |
| | | { field: 'LotNo', title: '批次号', align: 'center' }, |
| | | { field: 'LotNoText', title: '批次描述', align: 'center' }, |
| | | //{ field: 'LotNo', title: '批次号', align: 'center' }, |
| | | //{ field: 'LotNoText', title: '批次描述', align: 'center' }, |
| | | //{ field: 'IsDespatch', title: '是否发运', align: 'center', templet: '#templetIsDespatch' }, |
| | | //{ field: 'SupplierLot', title: '供货批次', align: 'center' }, |
| | | { field: 'Origin', title: '来源', align: 'center' }, |
| | |
| | | { field: 'UpdateTime', title: '修改时间', align: 'center', templet: '#templetUpdateTime' }, |
| | | { field: 'CheckUserName', title: '复核人', align: 'center', width: 110 }, |
| | | { field: 'CheckTime', title: '复核时间', align: 'center', templet: '#templetCheckTime' }, |
| | | { field: 'caozuo', title: '操作', fixed: 'right', align: 'center', width: 200, toolbar: '#table-content-list', "disabled": false } |
| | | //{ field: 'caozuo', title: '操作', fixed: 'right', align: 'center', width: 200, toolbar: '#table-content-list', "disabled": false } |
| | | ]]; |
| | | var TotalColsSysArr = encodeURIComponent(encodeURIComponent(JSON.stringify(TotalColsArr)))//将表头数据进行url编码 |
| | | //#endregion |
| | |
| | | //{ field: 'SupplierLot', title: '供货批次', align: 'center', width: 120 }, |
| | | //{ field: 'Price', title: '单价', align: 'center', width: 80 }, |
| | | //{ field: 'Money', title: '总金额', align: 'center', width: 90 }, |
| | | { field: 'caozuo', title: '操作', fixed: 'right', width: 100, align: 'left', toolbar: '#table-content-list2', "disabled": true } |
| | | //{ field: 'caozuo', title: '操作', fixed: 'right', width: 100, align: 'left', toolbar: '#table-content-list2', "disabled": true } |
| | | ]]; |
| | | var DetailColsSysArr = encodeURIComponent(encodeURIComponent(JSON.stringify(DetailColsArr)))//将表头数据进行url编码 |
| | | //#endregion |
| | |
| | | } |
| | | return html; |
| | | } |
| | | }} |
| | | }} |
| | | {{ GetBtn11(d) }} |
| | | </script> |
| | | <script type="text/html" id="InspectStatus1"> |
| | | {{# if(d.InspectStatus == '0') { }} |
| | | <p>待检验</p> |
| | | {{# } else if(d.InspectStatus == '1'){ }} |
| | | <p>检验合格</p> |
| | | {{# } else if(d.InspectStatus == '2'){ }} |
| | | <p>不合格</p> |
| | | {{# } else if(d.InspectStatus == '4') { }} |
| | | <p>放置期</p> |
| | | {{# } }} |
| | | </script> |
| | | <script type="text/html" id="toolbarDemo"> |
| | | |
| | | <button class="layui-btn layuiadmin-btn-list layui-btn-sm addClass" lay-event="add"> |
| | |
| | | {field: 'Qty', title: '数量', align: 'center'}, |
| | | {field: 'LockQty', title: '锁定数量', align: 'center',}, |
| | | {field: 'FrozenQty', title: '冻结数量', align: 'center'}, |
| | | {field: 'InspectStatus', title: '质检状态', align: 'center', templet: '#InspectStatus1'}, |
| | | //{field: 'InspectMark', title: '抽检标记', align: 'center', templet: '#InspectMarkStatus'}, |
| | | //{field: 'BitPalletMark', title: '零托标记', align: 'center', templet: '#BitPalletMarkStatus'}, |
| | | ]]; |
| | |
| | | AreaNo: field.AreaNo, //所属区域 |
| | | LocatNo:field.LocatNo,//所属储位 |
| | | PalletStatus: field.PalletStatus, //托盘类别 |
| | | SkuNo:field.SkuNo, |
| | | SkuName:field.SkuName, |
| | | LotNo:field.LotNo |
| | | }; |
| | | if(doing){ |
| | | doing = false; |
| | |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">所属储位</label> |
| | | <div class="layui-input-block"> |
| | | <select name="LocatNo" id="LocatNo" lay-verify="" lay-search > |
| | | <select name="LocatNo" id="LocatNo" lay-verify="required" lay-search > |
| | | <option value=""></option> |
| | | </select> |
| | | </div> |
| | |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">托盘状态</label> |
| | | <div class="layui-input-block"> |
| | | <select name="PalletStatus" id="PalletStatus" lay-verify="" lay-search> |
| | | <select name="PalletStatus" id="PalletStatus" lay-verify="required" lay-search> |
| | | <option value=""></option> |
| | | <option value="0">净桶</option> |
| | | <option value="1">混料</option> |
| | |
| | | </select> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">物料编码</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" name="SkuNo" lay-verify="" placeholder="请输入物料编码" autocomplete="off" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">物料名称</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" name="SkuName" lay-verify="" placeholder="请输入物料名称" autocomplete="off" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">批次号</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" name="LotNo" lay-verify="" placeholder="请输入批次号" autocomplete="off" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item layui-hide"> |
| | | <input type="button" lay-submit lay-filter="layuiadmin-app-form-submit" id="layuiadmin-app-form-submit" value="确认添加"> |
| | | <input type="button" lay-submit lay-filter="layuiadmin-app-form-edit" id="layuiadmin-app-form-edit" value="确认编辑"> |
| | |
| | | public string Location { get; set; } |
| | | public string Type { get; set; } |
| | | public string LotNo { get; set; } |
| | | public string Palletno { get; set; } |
| | | public string PalletNo { get; set; } |
| | | |
| | | } |
| | | |
| | |
| | | /// 任务类型 |
| | | /// 0:入库 |
| | | /// 1:出库 |
| | | /// 2:移库 |
| | | /// </summary> |
| | | public string Crtype { get; set; } |
| | | /// <summary> |
| | |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using Utility.Tools; |
| | | using WMS.BLL.LogServer; |
| | | using WMS.DAL; |
| | | using WMS.Entity.BllAsnEntity; |
| | |
| | | using WMS.Entity.LogEntity; |
| | | using WMS.Entity.SysEntity; |
| | | using WMS.IBLL.IBllTransServer; |
| | | using static Model.InterFaceModel.RCSModel; |
| | | |
| | | namespace WMS.BLL.BllTransServer |
| | | { |
| | |
| | | |
| | | resultModel.Success = 0; |
| | | resultModel.Message = "成功"; |
| | | |
| | | //提交事务 |
| | | Db.CommitTran(); |
| | | |
| | | return resultModel; |
| | | } |
| | | switch (taskInfo.OrderType) |
| | |
| | | IsBale = "0", |
| | | IsBelt = "0", |
| | | |
| | | PalletStatus = "1", |
| | | PalletStatus = "2", |
| | | |
| | | IsDel = "0", |
| | | CreateUser = 0, |
| | |
| | | sd1.LocatNo = locatInfo.LocatNo;//储位地址 |
| | | sd1.CompleteTime = comTime; |
| | | sd1.InspectStatus = "0";//待检验 |
| | | sd1.PalletStatus = "1";//预混 |
| | | sd1.PalletStatus = "2";//半成品 |
| | | |
| | | //修改库存明细 |
| | | Db.Updateable(sd1).ExecuteCommand(); |
| | |
| | | resultModel.Message = "起始储位信息不存在!"; |
| | | return resultModel; |
| | | } |
| | | //目标储位信息 |
| | | var endLocatInfo = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == taskInfo.EndLocat && w.IsDel == "0"); |
| | | if (endLocatInfo == null) |
| | | { |
| | | resultModel.Message = "目标储位信息不存在!"; |
| | | return resultModel; |
| | | } |
| | | //库存明细 |
| | | var sd2 = Db.Queryable<DataStockDetail>().First(w => w.PalletNo == taskInfo.PalletNo); |
| | | if (sd2 == null) |
| | |
| | | sd2.InspectQty = 0; |
| | | sd2.ASNNo = ""; |
| | | sd2.ASNDetailNo = null; |
| | | sd2.WareHouseNo = endLocatInfo.WareHouseNo;//所属仓库 |
| | | sd2.RoadwayNo = endLocatInfo.RoadwayNo;//所属巷道 |
| | | sd2.AreaNo = endLocatInfo.AreaNo;//所属区域 |
| | | sd2.LocatNo = endLocatInfo.LocatNo;//储位地址 |
| | | sd2.WareHouseNo = "";//所属仓库 |
| | | sd2.RoadwayNo = "";//所属巷道 |
| | | sd2.AreaNo = "";//所属区域 |
| | | sd2.LocatNo = "";//储位地址 |
| | | sd2.CompleteTime = comTime; |
| | | //修改库存明细 |
| | | Db.Updateable(sd2).ExecuteCommand(); |
| | |
| | | startLocatInfo.Status = "0";//空储位 |
| | | //修改起始储位状态 |
| | | Db.Updateable(startLocatInfo).ExecuteCommand(); |
| | | |
| | | endLocatInfo.Status = "1";//有物品 |
| | | //修改目标储位状态 |
| | | Db.Updateable(endLocatInfo).ExecuteCommand(); |
| | | |
| | | break; |
| | | #endregion |
| | |
| | | sd3.RoadwayNo = endLocatInfo2.RoadwayNo;//所属巷道 |
| | | sd3.AreaNo = endLocatInfo2.AreaNo;//所属区域 |
| | | sd3.LocatNo = endLocatInfo2.LocatNo;//储位地址 |
| | | if (endLocatInfo2.AreaNo == "A01")//洁净区 |
| | | if (endLocatInfo2.AreaNo.Contains("01"))//洁净区 |
| | | { |
| | | sd3.PalletStatus = "0"; |
| | | sd3.PalletStatus = "0"; |
| | | } |
| | | else if (endLocatInfo2.AreaNo == "A02")//预混区 |
| | | else if (endLocatInfo2.AreaNo.Contains("02"))//预混区 |
| | | { |
| | | sd3.PalletStatus = "1"; |
| | | } |
| | | else if (endLocatInfo2.AreaNo == "A03")//半成品区 |
| | | else if (endLocatInfo2.AreaNo.Contains("03"))//半成品区 |
| | | { |
| | | sd3.PalletStatus = "2"; |
| | | } |
| | | else if (endLocatInfo2.AreaNo == "A04")//脏桶区 |
| | | else if (endLocatInfo2.AreaNo.Contains("04"))//脏桶区 |
| | | { |
| | | sd3.PalletStatus = "3"; |
| | | } |
| | | sd3.LotNo = "";//批次 |
| | | sd3.SkuNo = ""; |
| | | sd3.SkuName = ""; |
| | | sd3.InspectStatus = "0";//待检验 |
| | | } |
| | | } |
| | | if (taskInfo.Type == "1")//出库任务 |
| | | else if (taskInfo.Type == "1")//出库任务 |
| | | { |
| | | //起始储位信息 |
| | | var startLocatInfo2 = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == taskInfo.StartLocat && w.IsDel == "0"); |
| | |
| | | sd3.AreaNo = "";//所属区域 |
| | | sd3.LocatNo = "";//储位地址 |
| | | } |
| | | else if (taskInfo.Type == "2")//移库任务 |
| | | { |
| | | //起始储位信息 |
| | | var startLocatInfo2 = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == taskInfo.StartLocat && w.IsDel == "0"); |
| | | if (startLocatInfo2 == null) |
| | | { |
| | | resultModel.Message = "起始储位信息不存在!"; |
| | | return resultModel; |
| | | } |
| | | startLocatInfo2.Status = "0";//空储位 |
| | | //修改起始储位状态 |
| | | Db.Updateable(startLocatInfo2).ExecuteCommand(); |
| | | |
| | | //目标储位信息 |
| | | var endLocatInfo2 = Db.Queryable<SysStorageLocat>().First(w => w.LocatNo == taskInfo.EndLocat && w.IsDel == "0"); |
| | | if (endLocatInfo2 == null) |
| | | { |
| | | resultModel.Message = "目标储位信息不存在!"; |
| | | return resultModel; |
| | | } |
| | | endLocatInfo2.Status = "1";//有物品 |
| | | //修改目标储位状态 |
| | | Db.Updateable(endLocatInfo2).ExecuteCommand(); |
| | | |
| | | sd3.WareHouseNo = endLocatInfo2.WareHouseNo;//所属仓库 |
| | | sd3.RoadwayNo = endLocatInfo2.RoadwayNo;//所属巷道 |
| | | sd3.AreaNo = endLocatInfo2.AreaNo;//所属区域 |
| | | sd3.LocatNo = endLocatInfo2.LocatNo;//储位地址 |
| | | sd3.Status = "0"; |
| | | if (endLocatInfo2.AreaNo.Contains("01"))//洁净区 |
| | | { |
| | | sd3.PalletStatus = "0"; |
| | | sd3.Status = "0"; |
| | | } |
| | | else if (endLocatInfo2.AreaNo.Contains("02"))//预混区 |
| | | { |
| | | sd3.PalletStatus = "1"; |
| | | } |
| | | else if (endLocatInfo2.AreaNo.Contains("03"))//半成品区 |
| | | { |
| | | sd3.PalletStatus = "2"; |
| | | } |
| | | else if (endLocatInfo2.AreaNo.Contains("04"))//脏桶区 |
| | | { |
| | | sd3.PalletStatus = "3"; |
| | | sd3.LotNo = "";//批次 |
| | | sd3.SkuNo = ""; |
| | | sd3.SkuName = ""; |
| | | sd3.InspectStatus = "0";//待检验 |
| | | } |
| | | } |
| | | //修改库存明细 |
| | | Db.Updateable(sd3).ExecuteCommand(); |
| | | |
| | | //回传桶状态给MES |
| | | BackPalletStatus(taskInfo.PalletNo, sd3.PalletStatus); |
| | | |
| | | break; |
| | | #endregion |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 回传桶状态给MES |
| | | /// </summary> |
| | | /// <param name="PalletNo">桶号</param> |
| | | /// <param name="Status">0:净桶 1:预混 2:半成品 3:脏桶</param> |
| | | /// <param name="url"></param> |
| | | public void BackPalletStatus(string PalletNo, string Status,string url="") |
| | | { |
| | | try |
| | | { |
| | | var obj = new |
| | | { |
| | | PalletNo = PalletNo, |
| | | Status = Status |
| | | }; |
| | | string jsonReq = JsonConvert.SerializeObject(obj); |
| | | var response = HttpHelper.DoPost(url, jsonReq, "回传MES桶状态", "MES").ToString(); |
| | | var result = JsonConvert.DeserializeObject<ReMes>(response);//解析返回数据 |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw ex; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 下发出库单 |
| | | /// </summary> |
| | | /// <param name="model"></param> |
| | |
| | | using Microsoft.IdentityModel.Protocols; |
| | | using Newtonsoft.Json; |
| | | using Newtonsoft.Json; |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | |
| | | public void GetPalletNo(Pallnetmsg pallnetmsg) |
| | | { |
| | | DataStockDetail pallet = new DataStockDetail(); |
| | | SysStorageLocat locat = new SysStorageLocat(); |
| | | try |
| | | { |
| | | var house = "W01";//叫桶位置,后续根据位置关联或定义,来判断叫桶位置所属车间 |
| | |
| | | switch (pallnetmsg.Type) |
| | | { |
| | | case "0"://叫净桶 |
| | | List<DataStockDetail> jtpallet = new List<DataStockDetail>(); |
| | | sql += $"and WareHouseNo = '{house}' and AreaNo like '%01' order by CreateTime desc"; |
| | | jtpallet = Db.Ado.SqlQuery<DataStockDetail>(sql).ToList(); |
| | | if (jtpallet.Count == 0) |
| | | sql += $"and WareHouseNo = '{house}' and AreaNo like '%01' and PalletStatus = '0' order by CreateTime desc"; |
| | | pallet = Db.Ado.SqlQuery<DataStockDetail>(sql).FirstOrDefault(); |
| | | if (pallet == null) |
| | | { |
| | | throw new Exception("暂无净桶可分配"); |
| | | } |
| | | //遍历库存净桶,返回MES验证 |
| | | foreach (var item in jtpallet) |
| | | { |
| | | string jsonReq = JsonConvert.SerializeObject(item.PalletNo); |
| | | var response = HttpHelper.DoPost(url, jsonReq, "回传MES净桶编号", "RCS").ToString(); |
| | | var obj = JsonConvert.DeserializeObject<ReMes>(response);//解析返回数据 |
| | | if (obj.Success == "0") |
| | | { |
| | | if (obj.Result != "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) |
| | | { |
| | | Db.Ado.BeginTran(); |
| | | //脏桶区无空余库位,则锁定此净桶库存,并重新遍历 |
| | | sql = $"UPDATE DataStockDetail Set Status = '5' Where locat ='{locat.LocatNo}'"; |
| | | Db.Ado.ExecuteCommand(sql); |
| | | Db.Ado.CommitTran(); |
| | | break; |
| | | } |
| | | //生成调度小车净桶去脏桶区任务 |
| | | var ztask = new TaskDetial |
| | | { |
| | | Startport = item.LocatNo, |
| | | Endport = locat.LocatNo, |
| | | Pallno = item.PalletNo, |
| | | Type = "3", |
| | | Crtype = "0", |
| | | Noticedetailno = int.Parse(noticeno), |
| | | }; |
| | | CreateLotTask(ztask); |
| | | continue; |
| | | } |
| | | //下发小车任务 |
| | | var task2 = new TaskDetial |
| | | { |
| | | Startport = item.LocatNo, |
| | | Endport = pallnetmsg.Location, |
| | | Pallno = item.PalletNo, |
| | | Type = pallnetmsg.Type, |
| | | Crtype = "1", |
| | | Noticedetailno = int.Parse(noticeno), |
| | | }; |
| | | CreateLotTask(task2); |
| | | return; |
| | | } |
| | | else |
| | | { |
| | | throw new Exception("回传MES净桶编号失败!"); |
| | | } |
| | | } |
| | | |
| | | break; |
| | | case "1"://叫料桶(混料) |
| | | //判断是否有批次号 |
| | |
| | | } |
| | | noticeno = ArriveMes.Id.ToString();*/ |
| | | //查找库存中是否有可用的此批次的混料桶 |
| | | sql= $"select PalletNo,LocatNo from DataStockDetail where LotNo = '{pallnetmsg.LotNo}'and AreaNo like '%02' " + |
| | | $"and WareHouseNo = '{house}' and 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' and PalletStatus = '1' order by CompleteTime desc"; |
| | | pallet = Db.Ado.SqlQuery<DataStockDetail>(sql).FirstOrDefault(); |
| | | if (pallet == null) |
| | | { |
| | |
| | | } |
| | | noticeno = bllSo.Id.ToString(); |
| | | //查找库存中是否有此批次的下料桶 |
| | | sql = $"select PalletNo,LocatNo from DataStockDetail where LotNo = '{pallnetmsg.LotNo}'and AreaNo like '%03' " + |
| | | $"and WareHouseNo = '{house}' and 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' and PalletStatus = '2' order by CompleteTime desc"; |
| | | pallet = Db.Ado.SqlQuery<DataStockDetail>(sql).FirstOrDefault(); |
| | | if (pallet == null) |
| | | { |
| | |
| | | |
| | | break; |
| | | case "3"://叫脏桶 |
| | | sql += $"and WareHouseNo = '{house}' and AreaNo like '%04' order by CreateTime desc"; |
| | | pallet = Db.Ado.SqlQuery<DataStockDetail>(sql).FirstOrDefault(); |
| | | if (pallet == null) |
| | | sql += $"and WareHouseNo = '{house}' and AreaNo like '%04' and PalletStatus='3' order by CreateTime desc"; |
| | | List<DataStockDetail> palletList = Db.Ado.SqlQuery<DataStockDetail>(sql).ToList(); |
| | | if (palletList.Count <= 0) |
| | | { |
| | | throw new Exception("暂无脏桶可分配"); |
| | | } |
| | | //遍历库存脏桶,返回MES验证 |
| | | foreach (var item in palletList) |
| | | { |
| | | string jsonReq = JsonConvert.SerializeObject(item.PalletNo); |
| | | var response = HttpHelper.DoPost(url, jsonReq, "回传MES脏桶编号", "RCS").ToString(); |
| | | var obj = JsonConvert.DeserializeObject<ReMes>(response);//解析返回数据 |
| | | if (obj.Success == "0") |
| | | { |
| | | if (obj.Result != "1")//不可清洗,将脏桶冻结 |
| | | { |
| | | item.Status = "5";//异常冻结 |
| | | //修改该桶库存状态 |
| | | Db.Updateable(item).ExecuteCommand(); |
| | | |
| | | continue; |
| | | } |
| | | //下发小车任务 |
| | | var task2 = new TaskDetial |
| | | { |
| | | Startport = item.LocatNo, |
| | | Endport = pallnetmsg.Location, |
| | | Pallno = item.PalletNo, |
| | | Type = pallnetmsg.Type, |
| | | Crtype = "1", |
| | | Noticedetailno = int.Parse(noticeno), |
| | | }; |
| | | CreateLotTask(task2); |
| | | return; |
| | | } |
| | | else |
| | | { |
| | | throw new Exception("回传MES净桶编号失败!"); |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | //下发小车任务 |
| | |
| | | catch (Exception ex) |
| | | { |
| | | Db.Ado.RollbackTran(); |
| | | throw ex; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// MES下发将净桶改为脏桶并拉到脏桶区 |
| | | /// </summary> |
| | | /// <param name="PalletNo"></param> |
| | | /// <returns></returns> |
| | | public void ChangePalletStatus(string PalletNo) |
| | | { |
| | | try |
| | | { |
| | | var detail = Db.Queryable<DataStockDetail>().First(w => w.PalletNo == PalletNo && w.PalletStatus == "0"); |
| | | if (detail == null) |
| | | { |
| | | throw new Exception($"库存中不存在桶号为:{PalletNo}的库存!"); |
| | | } |
| | | //起始目标储位信息 |
| | | var statrtLocat = Db.Queryable<SysStorageLocat>().First(w => w.WareHouseNo == detail.WareHouseNo && w.AreaNo == detail.AreaNo && w.LocatNo == detail.LocatNo); |
| | | if (statrtLocat == null) |
| | | { |
| | | throw new Exception($"该桶所在的储位信息不存在!"); |
| | | } |
| | | //开启事务 |
| | | Db.BeginTran(); |
| | | |
| | | //查找是否有空余脏桶位 |
| | | var endLocat = Db.Queryable<SysStorageLocat>().First(w => w.WareHouseNo == detail.WareHouseNo && w.AreaNo.Contains("04") && w.Status == "0" && w.Flag=="0"); |
| | | if (endLocat == null) |
| | | { |
| | | detail.Status = "5";//异常锁定 |
| | | detail.PalletStatus = "3";//脏桶 |
| | | //修改库存状态 |
| | | Db.Updateable(detail).ExecuteCommand(); |
| | | } |
| | | else |
| | | { |
| | | //生成调度小车净桶去脏桶区任务 |
| | | var ztask = new TaskDetial |
| | | { |
| | | Startport = detail.LocatNo, |
| | | Endport = endLocat.LocatNo, |
| | | Pallno = PalletNo, |
| | | Type = "3", |
| | | Crtype = "2", |
| | | Noticedetailno = 0, |
| | | }; |
| | | CreateLotTask(ztask); |
| | | |
| | | statrtLocat.Status = "3";//出库中 |
| | | //修改起始储位状态 |
| | | Db.Updateable(statrtLocat).ExecuteCommand(); |
| | | |
| | | detail.Status = "5";//异常锁定 |
| | | detail.PalletStatus = "3";//脏桶 |
| | | //修改库存状态 |
| | | Db.Updateable(detail).ExecuteCommand(); |
| | | } |
| | | Db.CommitTran(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Db.RollbackTran(); |
| | | throw ex; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// MES下发清洗锁定脏桶 |
| | | /// </summary> |
| | | /// <param name="pallnetmsg"></param> |
| | | public void CleanPallet(Pallnetmsg pallnetmsg) |
| | | { |
| | | try |
| | | { |
| | | var detail = Db.Queryable<DataStockDetail>().First(w => w.PalletNo == pallnetmsg.PalletNo && w.PalletStatus == "3"); |
| | | if (detail == null) |
| | | { |
| | | throw new Exception($"库存中不存在桶号为:{pallnetmsg.PalletNo}的库存!"); |
| | | } |
| | | //下发小车任务 |
| | | var task = new TaskDetial |
| | | { |
| | | Startport = detail.LocatNo, |
| | | Endport = pallnetmsg.Location, |
| | | Pallno = detail.PalletNo, |
| | | Type = "3", |
| | | Crtype = "1", |
| | | Noticedetailno = 0, |
| | | LotNo = "", |
| | | }; |
| | | CreateLotTask(task); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw ex; |
| | | } |
| | | } |
| | |
| | | { |
| | | Startport = pallnetmsg.Location, |
| | | Endport = loction.LocatNo, |
| | | Pallno = pallnetmsg.Palletno, |
| | | Pallno = pallnetmsg.PalletNo, |
| | | Type = pallnetmsg.Type, |
| | | Crtype = "0", |
| | | Noticedetailno = int.Parse(noticeno), |
| | |
| | | { |
| | | //开启事务 |
| | | Db.BeginTran(); |
| | | var na = taskDetial.Crtype == "0"?"入库":"出库"; |
| | | var na = ""; |
| | | switch (taskDetial.Crtype) |
| | | { |
| | | case "0": |
| | | na = "入库"; |
| | | break; |
| | | case "1": |
| | | na = "出库"; |
| | | break; |
| | | case "2": |
| | | na = "移库"; |
| | | break; |
| | | } |
| | | var bz = ""; |
| | | switch (taskDetial.Type) |
| | | { |
| | |
| | | logTaskEntry.IsSuccess = 1; |
| | | logTaskEntry.BackDate = DateTime.Now; |
| | | logTaskEntry.Status = "1"; |
| | | if (taskDetial.Crtype == "0") |
| | | if (taskDetial.Crtype == "0" || taskDetial.Crtype == "2") |
| | | { |
| | | sql = $"UPDATE SysStorageLocat SET Status = '2' where LocatNo = '{taskDetial.Endport}'"; |
| | | if (taskDetial.Type == "2") |
| | |
| | | Db.RollbackTran(); |
| | | throw ex; |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | |
| | | /// <summary> |
| | | /// 添加托盘库存明细 |
| | | /// </summary> |
| | | public void InsertStockDetail(string PalletNo,string WareHouseNo,string AreaNo,string LocatNo, string PalletStatus,int userId) |
| | | public void InsertStockDetail(string PalletNo,string WareHouseNo,string AreaNo,string LocatNo, string PalletStatus, string SkuNo, string SkuName, string LotNo, int userId) |
| | | { |
| | | try |
| | | { |
| | |
| | | IsBale = "0", |
| | | IsBelt = "0", |
| | | |
| | | SkuNo = SkuNo, |
| | | SkuName = SkuName, |
| | | LotNo = LotNo, |
| | | |
| | | PalletStatus = PalletStatus, |
| | | |
| | | IsDel = "0", |
| | |
| | | using System; |
| | | using Model.InterFaceModel; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Text; |
| | | using static Model.InterFaceModel.RCSModel; |
| | |
| | | /// <returns></returns> |
| | | public void GetPalletNo(Pallnetmsg pallnetmsg); |
| | | |
| | | |
| | | /// <summary> |
| | | /// 将净桶改为脏桶并拉到脏桶区 |
| | | /// </summary> |
| | | /// <param name="PalletNo"></param> |
| | | /// <returns></returns> |
| | | public void ChangePalletStatus(string PalletNo); |
| | | |
| | | /// <summary> |
| | | /// MES下发清洗锁定脏桶 |
| | | /// </summary> |
| | | /// <param name="pallnetmsg"></param> |
| | | public void CleanPallet(Pallnetmsg pallnetmsg); |
| | | |
| | | /// <summary> |
| | | /// 申请储位 |
| | | /// </summary> |
| | |
| | | /// <summary> |
| | | /// 添加托盘库存明细 |
| | | /// </summary> |
| | | public void InsertStockDetail(string PalletNo, string WareHouseNo, string AreaNo, string LocatNo, string PalletStatus, int userId); |
| | | public void InsertStockDetail(string PalletNo, string WareHouseNo, string AreaNo, string LocatNo, string PalletStatus, string SkuNo, string SkuName, string LotNo, int userId); |
| | | } |
| | | } |
| | |
| | | throw new Exception("未获取到用户信息"); |
| | | } |
| | | |
| | | _stockDetail.InsertStockDetail(model.PalletNo,model.WareHouseNo,model.AreaNo,model.LocatNo,model.PalletStatus,int.Parse(userId)); |
| | | _stockDetail.InsertStockDetail(model.PalletNo, model.WareHouseNo, model.AreaNo, model.LocatNo, model.PalletStatus, model.SkuNo, model.SkuName, model.LotNo, int.Parse(userId)); |
| | | |
| | | return Ok(new { code = 0, count = 0, msg = "添加成功", data = "" }); |
| | | } |
| | |
| | | return Ok(result); |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// 将净桶改为脏桶并拉到脏桶区 |
| | | /// </summary> |
| | | /// <param name="pallmsg"></param> |
| | | /// <returns></returns> |
| | | [HttpPost] |
| | | public IActionResult ChangePalletStatus(Pallnetmsg pallmsg) |
| | | { |
| | | var result = new ErpModel { Success = -1, Message = "", }; |
| | | try |
| | | { |
| | | if (string.IsNullOrWhiteSpace(pallmsg.PalletNo)) |
| | | { |
| | | result.Message = "桶编号不能为空!"; |
| | | return Ok(result); |
| | | } |
| | | _rcsserver.ChangePalletStatus(pallmsg.PalletNo); |
| | | result.Success = 0; |
| | | result.Message = "操作成功!"; |
| | | return Ok(result); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | result.Message = e.Message; |
| | | return Ok(result); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// MES下发清洗锁定脏桶 |
| | | /// </summary> |
| | | /// <param name="pallmsg"></param> |
| | | /// <returns></returns> |
| | | [HttpPost] |
| | | public IActionResult CleanPallet(Pallnetmsg pallmsg) |
| | | { |
| | | var result = new ErpModel { Success = -1, Message = "", }; |
| | | try |
| | | { |
| | | if (string.IsNullOrWhiteSpace(pallmsg.Location)) |
| | | { |
| | | result.Message = "叫料位置为空!"; |
| | | return Ok(result); |
| | | } |
| | | if (string.IsNullOrWhiteSpace(pallmsg.PalletNo)) |
| | | { |
| | | result.Message = "桶号为空!"; |
| | | return Ok(result); |
| | | } |
| | | _rcsserver.CleanPallet(pallmsg); |
| | | result.Success = 0; |
| | | result.Message = "叫桶成功!"; |
| | | return Ok(result); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | result.Message = e.Message; |
| | | return Ok(result); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// RCS申请储位 |
| | |
| | | result.Message = "任务类型为空!"; |
| | | return Ok(result); |
| | | } |
| | | if (string.IsNullOrWhiteSpace(pallmsg.Palletno)) |
| | | if (string.IsNullOrWhiteSpace(pallmsg.PalletNo)) |
| | | { |
| | | result.Message = "申请托盘号为空!"; |
| | | return Ok(result); |
| | |
| | | throw new Exception("未获取到用户信息"); |
| | | }*/ |
| | | |
| | | SoResInfo result = _exNoticeSvc.ErpAddExportNotice(model); |
| | | SoResInfo result = _noticeSvc.CreateSoWork(model); |
| | | return Ok(result); |
| | | |
| | | } |