| | |
| | | |
| | | } |
| | | |
| | | public class RequesIsBale |
| | | { |
| | | |
| | | public string PalletNo { get; set; } |
| | | } |
| | | |
| | | } |
| | |
| | | public string TaskNo { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 任务类型 |
| | | /// 任务类型 0:入库,1:出库,2:移库,3:入库裹包 |
| | | /// </summary> |
| | | public string TaskType { get; set; } |
| | | |
| | |
| | | /// <summary> |
| | | /// 生产日期【yyyy-MM-dd |
| | | /// </summary> |
| | | public DateTime? producttime { get; set; } |
| | | public string producttime { get; set; } |
| | | /// <summary> |
| | | /// 有效期至【yyyy-MM-dd |
| | | /// </summary> |
| | | public DateTime? expiry { get; set; } |
| | | public string expiry { get; set; } |
| | | /// <summary> |
| | | /// 外箱吗【string(100)/非空】 |
| | | /// </summary> |
| | |
| | | /// 生成一维码路径 |
| | | /// </summary> |
| | | public string ImgStr { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 数量的单位 |
| | | /// </summary> |
| | | public string unit { get; set; } |
| | | } |
| | | } |
| | |
| | | /// 更新人名称 |
| | | /// </summary> |
| | | public string UpdateUserName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 是否缠膜 |
| | | /// </summary> |
| | | public string IsWrap { get; set; } |
| | | } |
| | | } |
| | |
| | | /// </summary> |
| | | [MaxLength(3)] |
| | | public string Temperature { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 区域 |
| | | /// </summary> |
| | | [MaxLength(3)] |
| | | public string Area { get; set; } |
| | | |
| | | } |
| | | /// <summary> |
| | | /// 查询储位model |
| | |
| | | using System.Security.Policy; |
| | | using WMS.Entity.DataEntity; |
| | | using WMS.Entity.BllQualityEntity; |
| | | using Microsoft.VisualBasic; |
| | | |
| | | namespace WMS.BLL.BllAsnServer |
| | | { |
| | |
| | | continue; |
| | | } |
| | | } |
| | | if (!string.IsNullOrEmpty(detailModel.IsBale)) |
| | | { |
| | | detailModel.IsBale = detailModel.IsBale == "是" ? "1" : "0"; |
| | | if (detailModel.IsBale != "1" && detailModel.IsBale != "0") |
| | | { |
| | | //判断是否裹包 |
| | | strMessage = "-1:裹包字段只能录入“是”或“否”;"; |
| | | continue; |
| | | } |
| | | } |
| | | if (model.Type != "7") |
| | | { |
| | | if (!TypeLot.Contains(model.Type)) |
| | |
| | | { |
| | | var time1 = DateTime.Now;//发送时间 .ToString("yyyy-MM-dd HH:mm:ss") |
| | | //给WCS下发入库单信息 |
| | | response = HttpHelper.DoPost(url, jsonData, "下发给WCS出库命令", "WCS"); |
| | | response = HttpHelper.DoPost(url, jsonData, "下发给WCS入库命令", "WCS"); |
| | | |
| | | //解析返回数据 |
| | | var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response); |
| | |
| | | return strMessage; |
| | | } |
| | | |
| | | |
| | | sqlString += $"select * from BllArrivalNotice where ASNNo = '{model.ASNNo}' and isDel = '0';"; |
| | | var asnInfo = Db.Ado.SqlQuery<BllArrivalNotice>(sqlString).FirstOrDefault(); |
| | | if (asnInfo.Status != "0") |
| | |
| | | { |
| | | strMessage = "-1:批次号不可为空;"; |
| | | continue; |
| | | } |
| | | if (!string.IsNullOrEmpty(detailModel.IsBale)) |
| | | { |
| | | detailModel.IsBale = detailModel.IsBale == "是" ? "1" : "0"; |
| | | if (detailModel.IsBale != "1" && detailModel.IsBale != "0") |
| | | { |
| | | //判断是否裹包 |
| | | strMessage = "-1:裹包字段只能录入“是”或“否”;"; |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | if (model.Type == "2") // 2:中间品入库 |
| | |
| | | resultModel.Message = "单据类型不可为空!"; |
| | | return resultModel; |
| | | } |
| | | if (string.IsNullOrEmpty(model.Customer)) |
| | | { |
| | | resultModel.Message = "客户不可为空!"; |
| | | return resultModel; |
| | | } |
| | | //if (string.IsNullOrEmpty(model.Customer)) |
| | | //{ |
| | | // resultModel.Message = "客户不可为空!"; |
| | | // return resultModel; |
| | | //} |
| | | if (string.IsNullOrEmpty(model.OrderCode)) |
| | | { |
| | | resultModel.Message = "上游系统单号不可为空!"; |
| | |
| | | } |
| | | |
| | | // 根据客户编号获取客户名称 |
| | | var custname = ""; |
| | | var CustomerModel = Db.Queryable<SysCustomer>().First(it => it.CustomerNo == model.Customer && it.IsDel == "0"); |
| | | if (CustomerModel == null) |
| | | if (CustomerModel != null) |
| | | { |
| | | resultModel.Message = "客户编号不存在!"; |
| | | return resultModel; |
| | | custname = CustomerModel.CustomerName; |
| | | //CustomerModel.CustomerName = ""; |
| | | //resultModel.Message = "客户编号不存在!"; |
| | | //return resultModel; |
| | | } |
| | | |
| | | // 入库总表信息 |
| | |
| | | Type = model.AsnType, |
| | | Origin = string.IsNullOrEmpty(model.Origin) ? "ERP" : model.Origin, |
| | | CustomerNo = model.Customer, |
| | | CustomerName = CustomerModel.CustomerName, |
| | | CustomerName = custname, |
| | | OrderCode = model.OrderCode, |
| | | }; |
| | | |
| | |
| | | if (mesList.Contains(notice.Type)) // mes |
| | | { |
| | | //获取令牌 |
| | | var token = new Token().GetMesToken(mesTokenUrl); |
| | | //var token = new Token().GetMesToken(mesTokenUrl); //测试不使用TOKEN,正式运行时放开 |
| | | var token = ""; |
| | | Dictionary<string, string> mesDic = new Dictionary<string, string>() |
| | | { |
| | | {"Authorization",token } |
| | |
| | | var response = HttpHelper.DoPost(mesUrl, jsonData, "入库单完成上传", "MES", mesDic); |
| | | |
| | | var obj = JsonConvert.DeserializeObject<MesModel>(response);//解析返回数据 |
| | | if (obj.status != "0") |
| | | if (obj.status != "success") |
| | | { |
| | | throw new Exception("上传失败" + obj.message); |
| | | } |
| | |
| | | using WMS.Entity.SysEntity; |
| | | using WMS.IBLL.IBllAsnServer; |
| | | using ZXing; |
| | | using Model.ModelDto.BllCheckDto; |
| | | using WMS.Entity.BllCheckEntity; |
| | | using System.Data.SqlTypes; |
| | | |
| | | namespace WMS.BLL.BllAsnServer |
| | | { |
| | |
| | | var data = GetAllWhereAsync(item) |
| | | .LeftJoin<SysUserInfor>((a, b) => a.CreateUser == b.Id) |
| | | .LeftJoin<SysUserInfor>((a, b, c) => a.UpdateUser == c.Id) |
| | | .Select((a, b, c) => new BoxInfoDto() |
| | | .LeftJoin<SysMaterials>((a, b, c,d) => a.SkuNo == d.SkuNo) |
| | | .LeftJoin<SysUnit>((a, b, c, d,e) => d.UnitNo == e.UnitNo) |
| | | .Select((a, b, c,d,e) => new BoxInfoDto() |
| | | { |
| | | Id = a.Id, |
| | | ASNNo = a.ASNNo, |
| | |
| | | |
| | | LotNo = a.LotNo, |
| | | LotText = a.LotText, |
| | | |
| | | unit = e.UnitName, |
| | | |
| | | Status = a.Status, |
| | | SupplierLot = a.SupplierLot, |
| | |
| | | //List<WmsLabelPrintLog> printlog = new List<WmsLabelPrintLog>(); |
| | | //标签表数据信息 |
| | | var list = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.Origin == "WMS生成").ToList(); |
| | | |
| | | |
| | | |
| | | #region MyRegion |
| | | |
| | |
| | | { |
| | | throw new Exception($"未查询到{boxNo}信息"); |
| | | } |
| | | //单位 |
| | | var sqlString = "select a.UnitName as unit from SysUnit a left join SysMaterials b on a.UnitNo = b.UnitNo where b.SkuNo = '" + data.SkuNo + "'"; |
| | | var unitname = Db.Ado.SqlQuery<BoxInfoDto>(sqlString).FirstOrDefault() ; |
| | | // 物料条码信息赋值 |
| | | BoxInfoDto model = new BoxInfoDto(); |
| | | model.SkuNo = data.SkuNo; |
| | |
| | | model.StoreTime = data.StoreTime; // 储存期至 |
| | | |
| | | model.Qty = dataList.Sum(m=>m.Qty);// 数量 |
| | | model.unit = unitname.unit; |
| | | |
| | | model.BoxNo = data.BoxNo; // 箱号 |
| | | |
| | |
| | | { |
| | | throw new Exception($"未查询到{item}信息"); |
| | | } |
| | | //单位 |
| | | var sqlString = "select a.UnitName as unit from SysUnit a left join SysMaterials b on a.UnitNo = b.UnitNo where b.SkuNo = '" + data.SkuNo + "'"; |
| | | var unitname = Db.Ado.SqlQuery<BoxInfoDto>(sqlString).FirstOrDefault(); |
| | | // 物料条码信息赋值 |
| | | BoxInfoDto model = new BoxInfoDto(); |
| | | model.SkuNo = data.SkuNo; |
| | |
| | | model.StoreTime = data.StoreTime; // 储存期至 |
| | | |
| | | model.Qty = data1.Sum(m => m.Qty);// 数量 |
| | | model.unit = unitname.unit; |
| | | |
| | | model.BoxNo = data.BoxNo; // 箱号 |
| | | |
| | |
| | | { |
| | | throw new Exception($"未查询到{boxNo2}信息"); |
| | | } |
| | | //单位 |
| | | var sqlString = "select a.UnitName as unit from SysUnit a left join SysMaterials b on a.UnitNo = b.UnitNo where b.SkuNo = '" + data.SkuNo + "'"; |
| | | var unitname = Db.Ado.SqlQuery<BoxInfoDto>(sqlString).FirstOrDefault(); |
| | | // 物料条码信息赋值 |
| | | BoxInfoDto model = new BoxInfoDto(); |
| | | model.SkuNo = data.SkuNo; |
| | |
| | | model.StoreTime = data.StoreTime; // 储存期至 |
| | | |
| | | model.Qty = data.Qty;// 数量 |
| | | model.unit = unitname.unit; |
| | | |
| | | model.BoxNo = data.BoxNo3; // 支号 |
| | | |
| | |
| | | var i = 0; |
| | | foreach (var data in data2) |
| | | { |
| | | //单位 |
| | | var sqlString = "select a.UnitName as unit from SysUnit a left join SysMaterials b on a.UnitNo = b.UnitNo where b.SkuNo = '" + data.SkuNo + "'"; |
| | | var unitname = Db.Ado.SqlQuery<BoxInfoDto>(sqlString).FirstOrDefault(); |
| | | // 物料条码信息赋值 |
| | | BoxInfoDto model = new BoxInfoDto(); |
| | | model.SkuNo = data.SkuNo; |
| | |
| | | model.StoreTime = data.StoreTime; // 储存期至 |
| | | |
| | | model.Qty = data.Qty;// 数量 |
| | | model.unit = unitname.unit; |
| | | |
| | | model.BoxNo = data.BoxNo3; // 箱号 |
| | | |
| | |
| | | { |
| | | throw new Exception($"当前支码不是箱码内"); |
| | | } |
| | | |
| | | |
| | | //单位 |
| | | var sqlString = "select a.UnitName as unit from SysUnit a left join SysMaterials b on a.UnitNo = b.UnitNo where b.SkuNo = '" + data.SkuNo + "'"; |
| | | var unitname = Db.Ado.SqlQuery<BoxInfoDto>(sqlString).FirstOrDefault(); |
| | | // 物料条码信息赋值 箱码 |
| | | BoxInfoDto model1 = new BoxInfoDto(); |
| | | model1.SkuNo = data.SkuNo; |
| | |
| | | model1.ExpirationTime = data.ExpirationTime; // 有效期至 |
| | | model1.StoreTime = data.StoreTime; // 储存期至 |
| | | model1.Qty = dataList.Sum(m=>m.Qty);// 数量 |
| | | model1.unit = unitname.unit; |
| | | model1.BoxNo = data.BoxNo; // 箱号 |
| | | |
| | | model1.ImgStr = BarcodeHelper.GetCodeBarBase64(model1.BoxNo, 160, 40, false); |
| | |
| | | model.ExpirationTime = data.ExpirationTime; // 有效期至 |
| | | model.StoreTime = data.StoreTime; // 储存期至 |
| | | model.Qty = data.Qty;// 数量 |
| | | model.unit = unitname.unit; |
| | | model.BoxNo = data.BoxNo3; // 支号 |
| | | |
| | | model.ImgStr = BarcodeHelper.GetCodeBarBase64(model.BoxNo, 160, 40, false); |
| | |
| | | |
| | | var data = list.Where(m => m.BoxNo == boxNo); |
| | | var boxData = data2.FirstOrDefault(); |
| | | //单位 |
| | | var sqlString = "select a.UnitName as unit from SysUnit a left join SysMaterials b on a.UnitNo = b.UnitNo where b.SkuNo = '" + boxData.SkuNo + "'"; |
| | | var unitname = Db.Ado.SqlQuery<BoxInfoDto>(sqlString).FirstOrDefault(); |
| | | // 物料条码信息赋值 |
| | | BoxInfoDto model = new BoxInfoDto(); |
| | | model.SkuNo = boxData.SkuNo; |
| | |
| | | model.ExpirationTime = boxData.ExpirationTime; // 有效期至 |
| | | model.StoreTime = boxData.StoreTime; // 储存期至 |
| | | model.Qty = data.Sum(m => m.Qty); // 数量 |
| | | model.unit = unitname.unit; |
| | | model.BoxNo = boxData.BoxNo; // 支号 |
| | | |
| | | model.ImgStr = BarcodeHelper.GetCodeBarBase64(model.BoxNo, 160, 40, false); |
| | |
| | | var i = 0; |
| | | foreach (var item in data2) |
| | | { |
| | | //单位 |
| | | sqlString = "select a.UnitName as unit from SysUnit a left join SysMaterials b on a.UnitNo = b.UnitNo where b.SkuNo = '" + item.SkuNo + "'"; |
| | | unitname = Db.Ado.SqlQuery<BoxInfoDto>(sqlString).FirstOrDefault(); |
| | | // 物料条码信息赋值 |
| | | BoxInfoDto model1 = new BoxInfoDto(); |
| | | model1.SkuNo = item.SkuNo; |
| | |
| | | model1.ExpirationTime = item.ExpirationTime; // 有效期至 |
| | | model1.StoreTime = item.StoreTime; // 储存期至 |
| | | model1.Qty = item.Qty;// 数量 |
| | | model1.unit = unitname.unit; |
| | | model1.BoxNo = item.BoxNo3; // 支号 |
| | | |
| | | model.ImgStr = BarcodeHelper.GetCodeBarBase64(model1.BoxNo, 160, 40, false); |
| | |
| | | { |
| | | throw new Exception($"未查询到{boxNo}箱码信息"); |
| | | } |
| | | //单位 |
| | | var sqlString = "select a.UnitName as unit from SysUnit a left join SysMaterials b on a.UnitNo = b.UnitNo where b.SkuNo = '" + boxData.SkuNo + "'"; |
| | | var unitname = Db.Ado.SqlQuery<BoxInfoDto>(sqlString).FirstOrDefault(); |
| | | // 物料条码信息赋值 |
| | | BoxInfoDto model = new BoxInfoDto(); |
| | | model.SkuNo = boxData.SkuNo; |
| | |
| | | model.ExpirationTime = boxData.ExpirationTime; // 有效期至 |
| | | model.StoreTime = boxData.StoreTime; // 储存期至 |
| | | model.Qty = data.Sum(m => m.Qty); // 数量 |
| | | model.unit = unitname.unit; |
| | | model.BoxNo = boxData.BoxNo; // 支号 |
| | | |
| | | model.ImgStr = BarcodeHelper.GetCodeBarBase64(model.BoxNo, 160, 40, false); |
| | |
| | | var i = 0; |
| | | foreach (var item in data) |
| | | { |
| | | //单位 |
| | | sqlString = "select a.UnitName as unit from SysUnit a left join SysMaterials b on a.UnitNo = b.UnitNo where b.SkuNo = '" + item.SkuNo + "'"; |
| | | unitname = Db.Ado.SqlQuery<BoxInfoDto>(sqlString).FirstOrDefault(); |
| | | // 物料条码信息赋值 |
| | | BoxInfoDto model1 = new BoxInfoDto(); |
| | | model1.SkuNo = item.SkuNo; |
| | |
| | | model1.ExpirationTime = item.ExpirationTime; // 有效期至 |
| | | model1.StoreTime = item.StoreTime; // 储存期至 |
| | | model1.Qty = item.Qty; // 数量 |
| | | model1.unit = unitname.unit; |
| | | model1.BoxNo = item.BoxNo3; // 支号 |
| | | |
| | | model1.ImgStr = BarcodeHelper.GetCodeBarBase64(model1.BoxNo, 160, 40, false); |
| | |
| | | { |
| | | throw new Exception($"未查询到{demo}箱码信息"); |
| | | } |
| | | //单位 |
| | | var sqlString = "select a.UnitName as unit from SysUnit a left join SysMaterials b on a.UnitNo = b.UnitNo where b.SkuNo = '" + boxData.SkuNo + "'"; |
| | | var unitname = Db.Ado.SqlQuery<BoxInfoDto>(sqlString).FirstOrDefault(); |
| | | // 物料条码信息赋值 |
| | | BoxInfoDto model = new BoxInfoDto(); |
| | | model.SkuNo = boxData.SkuNo; |
| | |
| | | model.ExpirationTime = boxData.ExpirationTime; // 有效期至 |
| | | model.StoreTime = boxData.StoreTime; // 储存期至 |
| | | model.Qty = data.Sum(m => m.Qty); // 数量 |
| | | model.unit = unitname.unit; |
| | | model.BoxNo = boxData.BoxNo; // 支号 |
| | | |
| | | model.ImgStr = BarcodeHelper.GetCodeBarBase64(model.BoxNo, 160, 40, false); |
| | |
| | | { |
| | | foreach (var item in data.OrderBy(m => m.BoxNo3).ToList()) |
| | | { |
| | | //单位 |
| | | sqlString = "select a.UnitName as unit from SysUnit a left join SysMaterials b on a.UnitNo = b.UnitNo where b.SkuNo = '" + item.SkuNo + "'"; |
| | | unitname = Db.Ado.SqlQuery<BoxInfoDto>(sqlString).FirstOrDefault(); |
| | | // 物料条码信息赋值 |
| | | BoxInfoDto model1 = new BoxInfoDto(); |
| | | model1.SkuNo = item.SkuNo; |
| | |
| | | model1.ExpirationTime = item.ExpirationTime; // 有效期至 |
| | | model1.StoreTime = item.StoreTime; // 储存期至 |
| | | model1.Qty = item.Qty;// 数量 |
| | | model1.unit = unitname.unit; |
| | | model1.BoxNo = item.BoxNo3; // 支号 |
| | | |
| | | model1.ImgStr = BarcodeHelper.GetCodeBarBase64(model1.BoxNo, 160, 40, false); |
| | |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | |
| | | |
| | | return printModelList; |
| | | } |
| | |
| | | using WMS.Entity.SysEntity; |
| | | using WMS.IBLL.IBllAsnServer; |
| | | using WMS.Entity.BllQualityEntity; |
| | | using WMS.Entity.BllCheckEntity; |
| | | |
| | | namespace WMS.BLL.BllAsnServer |
| | | { |
| | |
| | | EndLocate = beingTask.EndLocat, // 目标位置 |
| | | EndRoadway = beingTask.EndRoadway, // 目标巷道 |
| | | TaskNo = beingTask.TaskNo, // 任务号 |
| | | TaskType = "0",// 任务类型 (出库) |
| | | TaskType = "0",// 任务类型 (入库) |
| | | OutMode = "", //目标地址 |
| | | Order = 1 |
| | | }; |
| | |
| | | EndLocate = beingTask.EndLocat, // 目标位置 |
| | | EndRoadway = beingTask.EndRoadway, // 目标巷道 |
| | | TaskNo = beingTask.TaskNo, // 任务号 |
| | | TaskType = "0",// 任务类型 (出库) |
| | | TaskType = "0",// 任务类型 (出库) |
| | | OutMode = "", //目标地址 |
| | | Order = 1 |
| | | Order = 1 |
| | | }; |
| | | if (beingTask.IsSuccess == 0) |
| | | { |
| | |
| | | } |
| | | |
| | | |
| | | //申请缠膜入库 |
| | | public int RequestPackWcs(string palletNo) |
| | | { |
| | | try |
| | | { |
| | | int t = -1; |
| | | //验证托盘条码是否为空 |
| | | if (string.IsNullOrEmpty(palletNo)) |
| | | { |
| | | throw new Exception("未找到该托盘条码:"+ palletNo); |
| | | } |
| | | var palletBindList = Db.Queryable<BllPalletBind>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo && m.Status == "1").OrderByDescending(m=>m.CreateTime).First(); |
| | | if (palletBindList.IsBale == "1") |
| | | { |
| | | t = 1; |
| | | } |
| | | return t; |
| | | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | throw new Exception(e.Message); |
| | | |
| | | } |
| | | } |
| | | |
| | | //申请拆膜出库 |
| | | public int RequestUnPackWcs(string palletNo) |
| | | { |
| | | try |
| | | { |
| | | int t = -1; |
| | | //验证托盘条码是否为空 |
| | | if (string.IsNullOrEmpty(palletNo)) |
| | | { |
| | | throw new Exception("未找到该托盘条码:" + palletNo); |
| | | } |
| | | var palletBindList = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo && m.LocatNo.Substring(0,1) != "B").First(); |
| | | if (palletBindList.IsBelt == "1") |
| | | { |
| | | palletBindList.IsBelt = "0"; |
| | | Db.Updateable(palletBindList).ExecuteCommand(); |
| | | t = 1; |
| | | } |
| | | |
| | | return t; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | throw new Exception(e.Message); |
| | | |
| | | } |
| | | } |
| | | |
| | | //缠膜完成 |
| | | public int RequestPackedWcs(string palletNo) |
| | | { |
| | | try |
| | | { |
| | | int t = -1; |
| | | //验证托盘条码是否为空 |
| | | if (string.IsNullOrEmpty(palletNo)) |
| | | { |
| | | throw new Exception("未找到该托盘条码:" + palletNo); |
| | | } |
| | | var palletBindList = Db.Queryable<BllPalletBind>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo && m.Status == "1").OrderByDescending(m => m.CreateTime).First(); |
| | | if (palletBindList.IsBale == "1") |
| | | { |
| | | palletBindList.IsBelt = "1"; |
| | | Db.Updateable(palletBindList).ExecuteCommand(); |
| | | } |
| | | |
| | | return t; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | throw new Exception(e.Message); |
| | | |
| | | } |
| | | } |
| | | |
| | | ////重新下发入库任务 |
| | | //public OutCommandDto AgainSendAsnTask(string taskNo, int userId, string url) |
| | |
| | | materiel_name = item.SkuName, |
| | | qty = item.Qty, |
| | | batch = item.LotNo, |
| | | producttime = item.ProductionTime, |
| | | expiry = item.ExpirationTime |
| | | producttime = item.ProductionTime.ToString().Substring(1, 8), |
| | | expiry = item.ExpirationTime.ToString().Substring(1, 8) |
| | | |
| | | }); |
| | | } |
| | |
| | | SupplierLot = "", |
| | | InspectMark = "0", |
| | | BitPalletMark = "1", |
| | | IsBale = "0", |
| | | IsBelt = "0", |
| | | IsBale = arrivalnotice.IsBale, |
| | | IsBelt = arrivalnotice.IsBelt, |
| | | CreateUser = userId |
| | | }; |
| | | // 插入托盘绑定表 |
| | |
| | | BitPalletMark = "1", |
| | | InspectStatus = sku.IsInspect,// 组盘的时候就要默认设定好是否合格 |
| | | PackagNo = sku.PackagNo, |
| | | IsBale = null, |
| | | IsBelt = null, |
| | | IsBale = arrivalnotice.IsBale, |
| | | IsBelt = arrivalnotice.IsBelt, |
| | | CreateUser = userId, |
| | | CreateTime = serverTime |
| | | }; |
| | |
| | | SupplierLot = detail.SupplierLot, |
| | | InspectMark = "0", |
| | | BitPalletMark = "1", |
| | | IsBale = "0", |
| | | IsBelt = "0", |
| | | IsBale = detail.IsBale, |
| | | IsBelt = detail.IsBelt, |
| | | CreateUser = userId, |
| | | Demo = model.Demo, |
| | | |
| | |
| | | try |
| | | { |
| | | #region 判断信息 |
| | | //开启事务 |
| | | Db.BeginTran(); |
| | | |
| | | var stockDetail = Db.Queryable<DataStockDetail>().Where(w => w.IsDel == "0" && w.PalletNo == palletNo).ToList(); |
| | | if (stockDetail.Count == 0) |
| | |
| | | throw new Exception("该托盘未在平库内,请检查!"); |
| | | } |
| | | |
| | | |
| | | |
| | | //起始储位信息 |
| | | var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == locatNo); |
| | | if (storageLocat == null) |
| | |
| | | |
| | | #endregion |
| | | |
| | | //开启事务 |
| | | Db.BeginTran(); |
| | | |
| | | |
| | | //需先判断目标地址前方是否有空储位 |
| | | |
| | |
| | | { |
| | | throw new Exception("托盘上物料箱码信息不存在,请检查!"); |
| | | } |
| | | //var boxno = boxInfo.GroupBy(w => w.BoxNo).ToList(); |
| | | var boxno = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == item.Id).GroupBy(m => new |
| | | { |
| | | m.BoxNo |
| | | }).Select(it => new DataBoxInfo() |
| | | { |
| | | BoxNo = it.BoxNo |
| | | }).ToList(); |
| | | |
| | | //记录托盘上信息给MES |
| | | foreach (var item2 in boxInfo) { |
| | | foreach (var item2 in boxno) { |
| | | var a = item.ProductionTime.ToString(); |
| | | data.Add(new RequertBeiliaoInfoModel() |
| | | { |
| | | no = item2.BoxNo, |
| | |
| | | materiel_name = item.SkuName, |
| | | qty = item.Qty, |
| | | batch = item.LotNo, |
| | | producttime = item.ProductionTime, |
| | | expiry = item.ExpirationTime |
| | | producttime = item.ProductionTime.ToString().Substring(0,10), |
| | | expiry = item.ExpirationTime.ToString().Substring(0, 10) |
| | | |
| | | }); |
| | | } |
| | |
| | | if (EndLocat != null && EndLocat.AreaNo == "B12") |
| | | { |
| | | //获取令牌 |
| | | var token = new Token().GetMesToken(mesTokenUrl); |
| | | //var token = new Token().GetMesToken(mesTokenUrl); |
| | | var token = ""; |
| | | Dictionary<string, string> mesDic = new Dictionary<string, string>() |
| | | { |
| | | {"Authorization",token } |
| | | }; |
| | | var mescode = Db.Queryable<BllExportNotice>().Where(w => w.SONo == stockDetail.First().SONo).First(); |
| | | var mesData = new RequertBeiliaoModel() |
| | | { |
| | | morder_no = stockDetail.First().SONo, |
| | | morder_no = mescode.OrderCode, |
| | | pallet = stockDetail.First().PalletNo, |
| | | layer_no = EndLocat.LocatNo, |
| | | items = data |
| | |
| | | var response = HttpHelper.DoPost(mesUrl, jsonData, "备料完成运至缓存区反馈至MES", "MES", mesDic); |
| | | |
| | | var obj = JsonConvert.DeserializeObject<MesModel>(response);//解析返回数据 |
| | | if (obj.status != "0") |
| | | if (obj.status != "success") |
| | | { |
| | | throw new Exception("备料同步MES失败:" + obj.message); |
| | | } |
| | |
| | | |
| | | |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region 箱码查询 |
| | |
| | | throw new Exception("该箱码内存在支码不能进行数量拣货"); |
| | | } |
| | | decimal boxQty = boxInfo.First().Qty; |
| | | if (Convert.ToInt32(pickQty1) > boxQty) |
| | | if (decimal.Parse(pickQty1) > boxQty) |
| | | { |
| | | throw new Exception("拣货数量不能大于箱内数量"); |
| | | } |
| | | if (Convert.ToInt32(pickQty1) > needQty) |
| | | if (decimal.Parse(pickQty1) > needQty) |
| | | { |
| | | throw new Exception("拣货数量不能大于剩余待拣数量"); |
| | | } |
| | |
| | | Type = model.SoType, |
| | | Status = "0", |
| | | Origin = model.Origin, |
| | | OrderCode = model.OrderNo, |
| | | //CustomerNo = model.Customer, |
| | | //CustomerName = customer.CustomerName, |
| | | LogisticsId = logisticsId, |
| | |
| | | //添加出库单 |
| | | foreach (var d in model.Detail) |
| | | { |
| | | if (d.Qty < 1) |
| | | if (d.Qty <=0) |
| | | { |
| | | throw new Exception("出库数量必须大于0"); |
| | | } |
| | |
| | | |
| | | if (unstackingMode2 == "0")//机器人拆垛 |
| | | { |
| | | toLocation = loadingAddre;//装车口 |
| | | toLocation = "009";//机器人拆垛统一发送到009工位,由PLC自动分配拆垛位 |
| | | } |
| | | else //PDA拆垛 |
| | | { |
| | |
| | | } |
| | | if (!string.IsNullOrEmpty(categoryNo)) |
| | | { |
| | | str += " and area.CategoryNo = @categoryNo"; |
| | | str += " and cat.CategoryNo = @categoryNo"; |
| | | } |
| | | if (!string.IsNullOrEmpty(type)) |
| | | { |
| | |
| | | case "4": |
| | | str = "空托区"; |
| | | break; |
| | | case "5": |
| | | str = "耗材区"; |
| | | break; |
| | | case "6": |
| | | str = "中间品区"; |
| | | break; |
| | | default: |
| | | str = ""; |
| | | break; |
| | |
| | | { |
| | | try |
| | | { |
| | | var bl = LocatRst.EditStorageLocat(model.Id, model.Status, model.Flag, model.Temperature, userId); |
| | | var bl = LocatRst.EditStorageLocat(model.Id, model.Status, model.Flag, model.Temperature,model.Area, userId); |
| | | |
| | | return bl; |
| | | } |
| | |
| | | |
| | | var obj = JsonConvert.DeserializeObject<MesTokenModel>(response);//解析返回数据 |
| | | |
| | | |
| | | if (obj.status != "success") |
| | | { |
| | | throw new Exception("上传失败" + obj.message); |
| | |
| | | return token; |
| | | } |
| | | } |
| | | |
| | | |
| | | #endregion |
| | | } |
| | | catch (Exception) |
| | |
| | | /// <returns></returns> |
| | | public List<SysMaterials> GetMateByNo(string SkuNo) |
| | | { |
| | | string str = "select * from SysMaterials where SkuNo = @skuno"; |
| | | string str = "select * from SysMaterials where SkuNo = @skuno and isdel = '0'"; |
| | | List<SysMaterials> mate = Db.Ado.SqlQuery<SysMaterials>(str, new |
| | | { |
| | | skuno = SkuNo //物料编号 |
| | |
| | | /// <param name="temperature">存储环境</param> |
| | | /// <param name="userId">操作人</param> |
| | | /// <returns></returns> |
| | | public bool EditStorageLocat(int id, string status, string flag, string temperature, int userId) |
| | | public bool EditStorageLocat(int id, string status, string flag, string temperature,string area, int userId) |
| | | { |
| | | try |
| | | { |
| | |
| | | locate.Temperature = temperature; |
| | | locate.UpdateUser = userId; |
| | | locate.UpdateTime = DateTime.Now; |
| | | locate.AreaNo = area; |
| | | var i = Edit(locate); |
| | | Db.CommitTran(); |
| | | return i > 0; |
| | |
| | | /// Nullable:True |
| | | /// </summary> |
| | | public int QtyOrd { get; set; } |
| | | |
| | | } |
| | | } |
| | |
| | | /// </summary> |
| | | public DateTime? ExpireTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 删除标记 |
| | | /// Nullable:true |
| | | /// </summary> |
| | | public string IsDel { get; set; } |
| | | /// <summary> |
| | | /// 创建人 |
| | | /// Nullable:true |
| | | /// </summary> |
| | | public int? CreateUser { get; set; } |
| | | /// <summary> |
| | | /// 创建时间 |
| | | /// Nullable:true |
| | | /// </summary> |
| | | public DateTime? CreateTime { get; set; } |
| | | /// <summary> |
| | | /// 修改人 |
| | | /// Nullable:true |
| | | /// </summary> |
| | | |
| | | public int? UpdateUser { get; set; } |
| | | /// <summary> |
| | | /// 修改时间 |
| | | /// Nullable:true |
| | | /// </summary> |
| | | public DateTime? UpdateTime { get; set; } |
| | | |
| | | } |
| | | } |
| | |
| | | /// <returns></returns> |
| | | OutCommandDto FullException(ReceiveWcsSignal model); |
| | | |
| | | /// <summary> |
| | | /// WCS申请缠膜入库 |
| | | /// </summary> |
| | | /// <param name="palletNo">托盘号</param> |
| | | /// <returns></returns> |
| | | int RequestPackWcs(string palletNo); |
| | | |
| | | /// <summary> |
| | | /// WCS申请拆膜出库 |
| | | /// </summary> |
| | | /// <param name="palletNo">托盘号</param> |
| | | /// <returns></returns> |
| | | int RequestUnPackWcs(string palletNo); |
| | | |
| | | /// <summary> |
| | | /// WCS申请缠膜完成 |
| | | /// </summary> |
| | | /// <param name="palletNo">托盘号</param> |
| | | /// <returns></returns> |
| | | int RequestPackedWcs(string palletNo); |
| | | |
| | | |
| | | |
| | | ///// <summary> |
| | | ///// 重新下发入库任务 |
| | |
| | | /// <param name="temperature">存储环境</param> |
| | | /// <param name="userId">操作人</param> |
| | | /// <returns></returns> |
| | | bool EditStorageLocat(int id, string status, string flag, string temperature, int userId); |
| | | bool EditStorageLocat(int id, string status, string flag, string temperature,string area, int userId); |
| | | /// <summary> |
| | | /// 编辑储位信息集合 |
| | | /// </summary> |
| | |
| | | int i = await _mate.AddMate(matedto); |
| | | |
| | | await _operation.InsertOperation("基础信息", "物料管理", matedto.SkuNo, "添加", "添加物料信息 物料号:" + matedto.SkuNo, uid); |
| | | return Ok(new { data = i, code = 0, msg = "成功" }); |
| | | return Ok(new { data = i, code = i, msg = "成功" }); |
| | | |
| | | } |
| | | catch (Exception ex) |
| | |
| | | var bl = _exNoticeSvc.EmptyException(model); |
| | | |
| | | LogFile.SaveLogToFile($"空取异常:(执行结果成功),", logStr); |
| | | return Ok(new { Success = 0, Message = "" }); |
| | | return Ok(new { Success = 0,StatusCode = 0, Message = "" }); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | |
| | | var list = _asnPalletBindSvc.FullException(model); |
| | | |
| | | LogFile.SaveLogToFile($"满入异常:( {JsonConvert.SerializeObject(list)} ),", logStr); |
| | | return Ok(new { Success = 0, Message = "", TaskList = list }); |
| | | return Ok(new { Success = 0, StatusCode = 0, Message = "", TaskList = list }); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// WCS申请是否缠膜 |
| | | /// </summary> |
| | | /// <param name="model"></param> |
| | | /// <returns></returns> |
| | | [AllowAnonymous] |
| | | [HttpPost] |
| | | public IActionResult RequestPackWcs(RequesIsBale model) |
| | | { |
| | | var logStr = $@".\log\WCS\WCS申请缠膜拆膜" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | try |
| | | { |
| | | int t = _asnPalletBindSvc.RequestPackWcs(model.PalletNo); |
| | | LogFile.SaveLogToFile($"WCS申请缠膜入库请求,请求托盘呈:( {model.PalletNo} ),", logStr); |
| | | |
| | | return Ok(new { Success = t, Message = "缠膜指令发送成功" }); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | LogFile.SaveLogToFile($"WCS申请缠膜入库异常返回:( {e.Message} ),", logStr); |
| | | |
| | | return Ok(new ErpModel { Success = -1, Message = e.Message }); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// WCS申请是否拆膜 |
| | | /// </summary> |
| | | /// <param name="model"></param> |
| | | /// <returns></returns> |
| | | [AllowAnonymous] |
| | | [HttpPost] |
| | | public IActionResult RequestUnPackWcs(RequesIsBale model) |
| | | { |
| | | var logStr = $@".\log\WCS\WCS申请缠膜拆膜" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | try |
| | | { |
| | | int t = _asnPalletBindSvc.RequestUnPackWcs(model.PalletNo); |
| | | |
| | | return Ok(new { Success = t, Message = "拆膜指令发送成功" }); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | LogFile.SaveLogToFile($"WCS申请拆膜出库异常返回:( {e.Message} ),", logStr); |
| | | |
| | | return Ok(new ErpModel { Success = -1, Message = e.Message }); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// WCS反馈缠膜完成 |
| | | /// </summary> |
| | | /// <param name="model"></param> |
| | | /// <returns></returns> |
| | | [AllowAnonymous] |
| | | [HttpPost] |
| | | public IActionResult RequestPackedWcs(RequesIsBale model) |
| | | { |
| | | var logStr = $@".\log\WCS\WCS申请缠膜拆膜" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | try |
| | | { |
| | | int t = _asnPalletBindSvc.RequestPackedWcs(model.PalletNo); |
| | | |
| | | return Ok(new { Success = t, Message = "缠膜完成指令发送成功" }); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | LogFile.SaveLogToFile($"WCS申请缠膜完成异常返回:( {e.Message} ),", logStr); |
| | | |
| | | return Ok(new ErpModel { Success = -1, Message = e.Message }); |
| | | } |
| | | } |
| | | |
| | | ///// <summary> |
| | | ///// 成品箱码拆垛拣货 |
| | |
| | | switch (orderType) |
| | | { |
| | | case "0"://入库任务执行 |
| | | |
| | | case "1"://出库任务执行 |
| | | case "2"://盘库任务执行 |
| | | case "3"://移库任务执行 |
| | |
| | | }, |
| | | "ApiUrlConfig": { |
| | | "ErpHost": "http://10.110.24.30:8081", //erpIP |
| | | "MesHost": "http://10.110.24.30:8081", //mesIP |
| | | "WcsHost": "http://10.18.52.10:5005", // "http://localhost:57061", //wcsIPhttp://localhost:57061/ |
| | | "MesHost": "http://10.18.99.67:3000", //mesIP |
| | | "WcsHost": "http://10.60.16.10:5005", // "http://localhost:57061", //wcsIPhttp://localhost:57061/ |
| | | "BoxHost": "http://10.110.24.30:8081", //boxIP |
| | | "AgvHost": "http://10.110.24.30:8081", //agvIP |
| | | |
| | |
| | | "GetBoxUrl": "/api/wmsInterface/OutStockTask", //获取箱码信息 |
| | | |
| | | //MES |
| | | "MesAsnFinishUrl": "/port/mes/service/mes/save_worder_feedback", //入库单关单反馈 |
| | | "MesBeiLiaoUrl": "/port/mes/service/mes/save_morder_feedback", //备料反馈(原料备料到生产车间缓存区) |
| | | "MesGetTokenUrl": "/port/mes/service/system/sign_login", //获取令牌 |
| | | "MesAsnFinishUrl": "/mes/service/mes/save_worder_feedback", //入库单关单反馈 |
| | | "MesBeiLiaoUrl": "/mes/service/mes/save_morder_feedback", //备料反馈(原料备料到生产车间缓存区) |
| | | "MesGetTokenUrl": "/mes/service/system/sign_login", //获取令牌 |
| | | // 赋码 |
| | | "FuMaGetBoxUrl": "/port/mes/service/system/sign_login", //获取赋码箱码信息 |
| | | "FuMaGetTokenUrl": "/port/mes/service/system/sign_login", //获取令牌 |