| | |
| | | using DocumentFormat.OpenXml.Presentation; |
| | | using Dm.filter; |
| | | using DocumentFormat.OpenXml.Drawing.Charts; |
| | | using DocumentFormat.OpenXml.Presentation; |
| | | using Elastic.Clients.Elasticsearch; |
| | | using Furion.Logging; |
| | | using Newtonsoft.Json; |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// WCS接收WMS下发的入库单任务 |
| | | /// WCS接收WMS下发的出入库单任务 |
| | | /// </summary> |
| | | /// <param name="models"></param> |
| | | /// <returns></returns> |
| | |
| | | { |
| | | foreach (var item in models) |
| | | { |
| | | string str = JsonConvert.SerializeObject(models); |
| | | Log.Information("接收WMS推送的箱码信息:" + str); |
| | | // 验证任务是否已存在 |
| | | //var taskInfo = _db.Queryable<WcsOderTask>().First(w => w.OrderNo == item.OrderNo && w.SkuNo == item.SkuNo && w.LotNo == item.LotNo); |
| | | //if (taskInfo == null) |
| | | //{ |
| | | var orderAdd = new WcsOderTask() |
| | | //var taskid = _db.Queryable<WcsOderTask>().OrderByDescending(w=>w.CreateTime).First(); |
| | | //int newid = (int)taskid.Id + 1; |
| | | var orderAdd = new WcsOderTask() |
| | | { |
| | | |
| | | OrderNo = item.OrderNo, |
| | | TaskNo = "", |
| | | LotNo = item.LotNo, |
| | |
| | | BoxType = item.BoxType, |
| | | Qty = item.Qty, |
| | | TaskType = (TaskTypeEnum)item.TaskType, |
| | | CreateTime = DateTime.Now, |
| | | Status = TaskStatusEnum.Wait, |
| | | }; |
| | | _db.Insertable(orderAdd).ExecuteCommand(); |
| | | //} |
| | |
| | | SkuName = models.SkuName, |
| | | Standard = models.Standard, |
| | | LotNo = models.LotNo, |
| | | LineNo = models.LineNo, // 产线号或产线名称 |
| | | Qty = item2.Qty, |
| | | FullQty = models.FullQty, |
| | | //SupplierLot = models.SupplierLot, |
| | |
| | | BoxNo3 = item2.BoxNo3, |
| | | QtyCount = item2.QtyCount, |
| | | QtyOrd = item2.QtyOrd, |
| | | |
| | | |
| | | Status = "0", |
| | | Level = level, |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// WCS接受赋码系统推送的结批总数量 |
| | | /// </summary> |
| | | /// <param name="models">结批数量信息</param> |
| | | /// <returns>反馈信息</returns> |
| | | [HttpPost] |
| | | [AllowAnonymous] |
| | | public ResponseFuMaModel HttpTotalNum(FumaJiepiModel models) |
| | | { |
| | | |
| | | try |
| | | { |
| | | string str = JsonConvert.SerializeObject(models); |
| | | Log.Information("接收赋码推送的完工结批总数量:" + str); |
| | | //查看赋码下发的任务信息是否正在分拣 |
| | | var num = _db.Queryable<WcsCheckTask>().Where(m => m.SkuNo == models.SkuNo &&m.LotNo == models.LotNo && m.Status == "1").ToList(); |
| | | if (num.Count < 1) |
| | | { |
| | | return new ResponseFuMaModel() { Success = "-1", Message = "该批次未进行分拣或已结批" }; |
| | | } |
| | | |
| | | //获取包装数量 |
| | | int Fqty = int.Parse(models.FinishQty); |
| | | var boxinfolog = _db.Queryable<WcsBoxInfoLog>().Where(m => m.SkuNo == models.SkuNo && m.LotNo == models.LotNo && m.BitBoxMark == "0").First(); |
| | | if (boxinfolog == null) |
| | | { |
| | | var boxinfo = _db.Queryable<WcsBoxInfo>().Where(m => m.SkuNo == models.SkuNo && m.LotNo == models.LotNo && m.BitBoxMark == "0").First(); |
| | | Fqty = (int)(Fqty /boxinfo.QtyCount); |
| | | } |
| | | else |
| | | { |
| | | Fqty = (int)(Fqty / boxinfolog.QtyCount); |
| | | } |
| | | |
| | | //写入该任务完成数量 |
| | | foreach (var item in num) |
| | | { |
| | | item.FinishQty = Fqty; |
| | | } |
| | | _db.Updateable(num).ExecuteCommand(); |
| | | |
| | | return new ResponseFuMaModel() { Success = "0", Message = "接受完工结批数量成功" }; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return new ResponseFuMaModel() { Success = "-1", Message = ex.Message }; |
| | | } |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// WCS接受WMS入库放货确认接口 |
| | | /// </summary> |
| | | /// <param name="models"></param> |
| | | /// <returns>反馈信息</returns> |
| | | [HttpPost] |
| | | [AllowAnonymous] |
| | | public IsBaleModel2 HttpInConfirm(PortModel models) |
| | | { |
| | | |
| | | try |
| | | { |
| | | string str = JsonConvert.SerializeObject(models); |
| | | Log.Information("接收WMS入库放货确认,放货口:" + models.Port+"入库口"); |
| | | |
| | | var portno = ""; |
| | | switch (models.Port) |
| | | { |
| | | case "033": |
| | | portno = "33"; |
| | | break; |
| | | case "039": |
| | | portno = "39"; |
| | | break; |
| | | case "044": |
| | | portno = "44"; |
| | | break; |
| | | case "051": |
| | | portno = "51"; |
| | | break; |
| | | } |
| | | |
| | | //检测入库口状态,120为可放,占用则修改为130 |
| | | |
| | | WcsDeviceDto mod = new WcsDeviceDto(); |
| | | var plcConn = mod.PLCUtil; |
| | | //获取工位点位信息 |
| | | var listPlcDevice = _db.Queryable<WcsDevice>().Where(s => s.LedIP != null && s.StationNum == portno).First(); |
| | | var modDevice = _db.Queryable<WcsPosition>().Where(s => s.StationNum == portno && s.Text == "PLC流程字").First(); |
| | | |
| | | var (res1, val) = plcConn.GetPlcDBValue(modDevice.PosType, listPlcDevice.DbNumber, modDevice.PlcPos); |
| | | if (val.ToString() == "120") |
| | | { |
| | | //读取成功后写入130 |
| | | modDevice = _db.Queryable<WcsPosition>().Where(s => s.StationNum == portno && s.Text == "WCS流程字").First(); |
| | | var ret = plcConn.SetPlcDBValue(modDevice.PosType, listPlcDevice.DbNumber, modDevice.PlcPos, "130");//占用此工位 |
| | | if (ret.IsSucceed) |
| | | { |
| | | //回传WMS可放信号 |
| | | return new IsBaleModel2() { Success = 0, Message = "接受成功" }; |
| | | } |
| | | } |
| | | return new IsBaleModel2() { Success = -1, Message = "读取PLC点位信息失败" }; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return new IsBaleModel2() { Success = -1, Message = ex.Message }; |
| | | } |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// WCS接受WMS入库放货请求接口 |
| | | /// </summary> |
| | | /// <param name="models"></param> |
| | | /// <returns>反馈信息</returns> |
| | | [HttpPost] |
| | | [AllowAnonymous] |
| | | public IsBaleModel2 HttpInRequest(PortRequestModel models) |
| | | { |
| | | try |
| | | { |
| | | string str = JsonConvert.SerializeObject(models); |
| | | Log.Information("接收WMS入库放货确认,放货口:" + models.Port + "入库口"); |
| | | |
| | | var portno = ""; |
| | | switch (models.Port) |
| | | { |
| | | case "033": |
| | | portno = "33"; |
| | | break; |
| | | case "039": |
| | | portno = "39"; |
| | | break; |
| | | case "044": |
| | | portno = "44"; |
| | | break; |
| | | case "051": |
| | | portno = "51"; |
| | | break; |
| | | } |
| | | |
| | | WcsDeviceDto mod = new WcsDeviceDto(); |
| | | var plcConn = mod.PLCUtil; |
| | | //获取工位点位信息 |
| | | var listPlcDevice = _db.Queryable<WcsDevice>().Where(s=>s.LedIP != null && s.StationNum == portno).First(); |
| | | var modDevice = _db.Queryable<WcsPosition>().Where(s => s.StationNum == portno && s.Text == "任务号").First(); |
| | | plcConn.SetPlcDBValue(modDevice.PosType, listPlcDevice.DbNumber, modDevice.PlcPos, models.TaskNo);//写入任务号 |
| | | // |
| | | modDevice = _db.Queryable<WcsPosition>().Where(s => s.StationNum == portno && s.Text == "WCS流程字").First(); |
| | | var ret = plcConn.SetPlcDBValue(modDevice.PosType, listPlcDevice.DbNumber, modDevice.PlcPos, "140");//写入开始放货信号 |
| | | if (ret.IsSucceed) |
| | | { |
| | | //回传WMS放货信号 |
| | | return new IsBaleModel2() { Success = 0, Message = "接受成功" }; |
| | | } |
| | | return new IsBaleModel2() { Success = -1, Message = "读取PLC点位信息失败" }; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return new IsBaleModel2() { Success = -1, Message = ex.Message }; |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// WCS接受WMS小车放完成接口 |
| | | /// </summary> |
| | | /// <param name="models"></param> |
| | | /// <returns>反馈信息</returns> |
| | | [HttpPost] |
| | | [AllowAnonymous] |
| | | public IsBaleModel2 HttpInFinish(PortModel models) |
| | | { |
| | | |
| | | try |
| | | { |
| | | string str = JsonConvert.SerializeObject(models); |
| | | Log.Information("接收WMS入库放货确认,放货口:" + models.Port + "入库口"); |
| | | |
| | | var portno = ""; |
| | | switch (models.Port) |
| | | { |
| | | case "033": |
| | | portno = "33"; |
| | | break; |
| | | case "039": |
| | | portno = "39"; |
| | | break; |
| | | case "044": |
| | | portno = "44"; |
| | | break; |
| | | case "051": |
| | | portno = "51"; |
| | | break; |
| | | } |
| | | |
| | | WcsDeviceDto mod = new WcsDeviceDto(); |
| | | var plcConn = mod.PLCUtil; |
| | | //获取工位点位信息 |
| | | var listPlcDevice = _db.Queryable<WcsDevice>().Where(s => s.LedIP != null && s.StationNum == portno).First(); |
| | | var modDevice = _db.Queryable<WcsPosition>().Where(s => s.StationNum == portno && s.Text == "WCS流程字").First(); |
| | | |
| | | var ret = plcConn.SetPlcDBValue(modDevice.PosType, listPlcDevice.DbNumber, modDevice.PlcPos, "160");//放完成 |
| | | if (ret.IsSucceed) |
| | | { |
| | | //回传WMS放货信号 |
| | | return new IsBaleModel2() { Success = 0, Message = "接受成功" }; |
| | | } |
| | | return new IsBaleModel2() { Success = -1, Message = "读取PLC点位信息失败" }; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return new IsBaleModel2() { Success = -1, Message = ex.Message }; |
| | | } |
| | | } |
| | | |
| | | } |