using Infrastructure; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using ServiceReference1; using System; using System.Collections.Generic; using System.Configuration; using System.Diagnostics; using System.Linq; using System.Xml; using WebApp; using WebRepository; namespace WebMvc { /// <summary> /// 立库任务表 /// </summary> [Area("task")] public class TaskController : BaseController { private readonly TaskApp _app; private IUnitWork _unitWork; public TaskController(IAuth authUtil, TaskApp app,IUnitWork unitWork) : base(authUtil) { _app = app.SetLoginInfo(_loginInfo); _unitWork = unitWork; } #region 视图功能 /// <summary> /// 默认视图Action /// </summary> /// <returns></returns> [Authenticate] [ServiceFilter(typeof(OperLogFilter))] public ActionResult Index() { return View(); } /// <summary> /// 出入库视图 /// </summary> /// <returns></returns> [Authenticate] [ServiceFilter(typeof(OperLogFilter))] public ActionResult PalletInOut() { return View(); } /// <summary> /// 切片机入库视图 /// </summary> /// <returns></returns> [Authenticate] [ServiceFilter(typeof(OperLogFilter))] public ActionResult PalletIn() { return View(); } /// <summary> /// 临时添加库内物料视图 /// </summary> /// <returns></returns> [Authenticate] [ServiceFilter(typeof(OperLogFilter))] public ActionResult AddLocation() { return View(); } /// <summary> /// PP片从铜箔入空板 /// </summary> /// <returns></returns> [Authenticate] [ServiceFilter(typeof(OperLogFilter))] public ActionResult PPEmptyIn() { return View(); } #endregion #region 获取数据 /// <summary> /// 加载及分页查询 /// </summary> /// <param name="pageRequest">表单请求信息</param> /// <param name="entity">请求条件实例</param> /// <returns></returns> [HttpPost] public string Load(PageReq pageRequest, Task entity) { return JsonHelper.Instance.Serialize(_app.Load(pageRequest, entity)); } #endregion #region 提交数据 /// <summary> /// 新增数据 /// </summary> /// <param name="Table_entity">新增实例</param> /// <returns></returns> [HttpPost] [ServiceFilter(typeof(OperLogFilter))] public string Ins(Task Table_entity) { try { _app.Ins(Table_entity); } catch (Exception ex) { Result.Status = false; Result.Message = ex.Message; } return JsonHelper.Instance.Serialize(Result); } /// <summary> /// 修改数据 /// </summary> /// <param name="Table_entity">修改实例</param> /// <returns></returns> [HttpPost] [ServiceFilter(typeof(OperLogFilter))] public string Upd(Task Table_entity) { try { _app.Upd(Table_entity); } catch (Exception ex) { Result.Status = false; Result.Message = ex.Message; } return JsonHelper.Instance.Serialize(Result); } [HttpPost] [ServiceFilter(typeof(OperLogFilter))] public string DelByIds(int[] ids) { try { _app.DelByIds(ids); } catch (Exception ex) { Result.Status = false; Result.Message = ex.Message; } return JsonHelper.Instance.Serialize(Result); } #endregion #region 导出数据 /// <summary> /// 导出数据 /// </summary> /// <param name="entity">请求条件实例</param> /// <returns></returns> [HttpPost] public string Export(Task entity) { return JsonHelper.Instance.Serialize(_app.ExportData(entity)); } #endregion #region 导出模板 /// <summary> /// 导出模板 /// </summary> /// <returns></returns> [HttpPost] public string GetTemplate() { var result = new TableData(); List<Task> listTask = new List<Task>(); Task entity = _app.FindSingle(u => u.Id > 0); if (entity != null) { listTask.Add(entity); } else { listTask.Add(new Task()); } result.data = listTask; result.count = listTask.Count; return JsonHelper.Instance.Serialize(result); } #endregion #region 导入数据 /// <summary> /// 导入数据 /// </summary> /// <param name="excelfile">表单提交的文件信息</param> /// <returns></returns> [HttpPost] public string Import(IFormFile excelfile) { try { Response result = _app.ImportIn(excelfile); if (!result.Status) { Result.Status = false; Result.Message = result.Message; } } catch (Exception ex) { Result.Status = false; Result.Message = ex.Message; } return JsonHelper.Instance.Serialize(Result); } #endregion #region 自定义方法 /// <summary> /// 查询容器的第一个任务 /// </summary> /// <param name="Code"></param> /// <returns></returns> [HttpPost] [ServiceFilter(typeof(OperLogFilter))] public string FindSourceCode(string Code) { TableData tab = new TableData(); try { tab = _app.FindCode(Code); } catch (Exception ex) { tab.code = 300; tab.msg = ex.Message; } return JsonHelper.Instance.Serialize(tab); } /// <summary> /// 托盘回库 /// </summary> /// <param name="containerCode"></param> /// <param name="IsFull"></param> /// <returns></returns> [HttpPost] [ServiceFilter(typeof(OperLogFilter))] public string BulidContainerBack(string containerCode, string IsFull) { return JsonHelper.Instance.Serialize(_app.ContainerBack(containerCode, IsFull)); } /// <summary> /// 空板回库 /// </summary> /// <param name="station">站台</param> /// <param name="type">托盘类型</param> /// <param name="containerCode">托盘号</param> /// <returns></returns> [HttpPost] [ServiceFilter(typeof(OperLogFilter))] public string BulidEmptyContainerBack(string station, string type, string containerCode ) { return JsonHelper.Instance.Serialize(_app.EmptyContainerBack(station,containerCode, type)); } /// <summary> /// 收(取)料完成 /// </summary> /// <param name="taskDel"></param> /// <returns></returns> [HttpPost] [ServiceFilter(typeof(OperLogFilter))] public string FinishPick(TaskDetail taskDel) { return JsonHelper.Instance.Serialize(_app.FinishPickApp(taskDel)); } /// <summary> /// 出库查看完成 /// </summary> /// <param name="taskDel"></param> /// <returns></returns> [HttpPost] [ServiceFilter(typeof(OperLogFilter))] public string FinishCheck(TaskDetail taskDel) { return JsonHelper.Instance.Serialize(_app.FinishCheckApp(taskDel)); } //取消任务 [HttpPost] [ServiceFilter(typeof(OperLogFilter))] public string TaskCancel(List<Task> tasklist) { return JsonHelper.Instance.Serialize(_app.TaskCancelApp(tasklist)); } #endregion //整托手动任务 [HttpPost] [ServiceFilter(typeof(OperLogFilter))] public string HandTaskIn(string containerCode, string station,int isBuffer, string isPack, string isFold,string status) { return JsonHelper.Instance.Serialize(_app.HandTaskInApp(containerCode, station, isBuffer, isPack, isFold, status)); } /// <summary> /// 手动添加物料库存 /// </summary> /// <param name="containerCode">托盘号</param> /// <param name="station">站台号</param> /// <param name="material">料号</param> /// <param name="Lot">批号</param> /// <param name="num">数量</param> /// <param name="Batch">批次</param> /// <param name="Customer">客户编号</param> /// <param name="Typesetting">排版数量</param> /// <param name="Supplier">供应商</param> /// <param name="ResidualWeight">厚度</param> /// <param name="Retreat">退料人</param> /// <returns></returns> [HttpPost] [ServiceFilter(typeof(OperLogFilter))] public string AddInventory(string containerCode, string station, string material, string Lot, decimal num, string Batch, string Customer, string Typesetting, string Supplier, decimal ResidualWeight, string Retreat) { TableData tab = new TableData(); string specification = ""; string nameDescription = ""; string unit = ""; string Size = ""; decimal NumberofSheets = -1; decimal Groupnum = -1; decimal time = -1; Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); //查询是否启用该接口 WebStart webStart_get_ima_oa = _unitWork.Find<WebStart>(n => n.InterfaceNmae == "get_ima_oa").FirstOrDefault(); //排除工单号回库和废铜箔回库 if (Batch != "000" && material != "1111111111" && webStart_get_ima_oa != null) { if (webStart_get_ima_oa.IsStart) { try { //webservice引用 TIPTOPServiceGateWayPortTypeClient C = new TIPTOPServiceGateWayPortTypeClient(); ConfigXmlDocument doc = new ConfigXmlDocument(); //读取传入的xml var config = AppSettingsJson.GetAppSettings(); doc.Load(config.GetSection("NouYaWebService:Url").Value); //将物料号填入 XmlNodeList ns = doc.SelectNodes("//Field"); foreach (XmlElement node in ns) { if (node.GetAttribute("name") == "ima01") { node.SetAttribute("value", material); } } //调用方法 var response = C.get_ima_oa(doc.InnerXml); //处理回传数据 doc.LoadXml(response); XmlElement element = (XmlElement)doc.SelectSingleNode("//Status"); string code = element.GetAttribute("code"); string name = ""; string value = ""; if (code == "0") { XmlNodeList nodes = doc.SelectNodes("//Field"); foreach (XmlElement node in nodes) { name = node.GetAttribute("name"); value = node.GetAttribute("value"); if (name == "ima02") { nameDescription = value; } else if (name == "ima021") { specification = value; } else if (name == "ima25") { unit = value; } } } else { string description = element.GetAttribute("description"); tab.code = 300; tab.msg = "查找物料信息失败:" + description; return JsonHelper.Instance.Serialize(tab); } } catch (Exception ex) { tab.code = 300; tab.msg = "查找物料信息失败:" + ex.Message; return JsonHelper.Instance.Serialize(tab); } } } //查询是否启用该接口 WebStart webStart_get_sfb = _unitWork.Find<WebStart>(n => n.InterfaceNmae == "get_sfb").FirstOrDefault(); //排除工单号回库和废铜箔回库 if (Batch != "000" && containerCode.Contains("PP") && webStart_get_sfb != null) { if (webStart_get_sfb.IsStart) { try { //webservice引用 ServiceReference2.TIPTOPServiceGateWayPortTypeClient C2 = new ServiceReference2.TIPTOPServiceGateWayPortTypeClient(); ConfigXmlDocument doc = new ConfigXmlDocument(); //读取传入的xml var config = AppSettingsJson.GetAppSettings(); doc.Load(config.GetSection("NouYaWebPPService:Url").Value); //将物料号填入 XmlNodeList ns = doc.SelectNodes("//Field"); foreach (XmlElement node in ns) { if (node.GetAttribute("name") == "sfb01") { node.SetAttribute("value", Lot); } } //调用方法 var response = C2.get_sfb(doc.InnerXml); //处理回传数据 doc.LoadXml(response); string name = ""; string value = ""; XmlNodeList nodes = doc.SelectNodes("//Field "); foreach (XmlElement node in nodes) { name = node.GetAttribute("name"); value = node.GetAttribute("value"); if (name == "sfbud10" && !string.IsNullOrEmpty(value)) { Size = value; } else if (name == "sfbud11" && !string.IsNullOrEmpty(value)) { NumberofSheets = num / decimal.Parse(value); } else if (name == "sfbud12" && !string.IsNullOrEmpty(value)) { Groupnum = decimal.Parse(value); } else if (name == "sfb01") { if (value != Lot) { tab.code = 300; tab.msg = "回传工单号不统一<" + value + ">"; return JsonHelper.Instance.Serialize(tab); } } } } catch (Exception ex) { tab.code = 300; tab.msg = "查找物料信息失败:" + ex.Message; return JsonHelper.Instance.Serialize(tab); } } } stopwatch.Stop(); double millisecond = stopwatch.ElapsedMilliseconds; time = decimal.Parse(millisecond.ToString()); return JsonHelper.Instance.Serialize(_app.AddInventoryApp(containerCode, station, material, Lot, num, Batch, Customer, Typesetting, Supplier, ResidualWeight, Retreat, nameDescription, specification, unit,time,Size,NumberofSheets,Groupnum)); } //站台到站台 [HttpPost] [ServiceFilter(typeof(OperLogFilter))] public string StationToStation(string containerCode, string startStation, string endStation) { return JsonHelper.Instance.Serialize(_app.StationToStationApp(containerCode, startStation, endStation)); } //通过站台查询库存 [HttpPost] [ServiceFilter(typeof(OperLogFilter))] public string StationToInventory(string stationCode) { return JsonHelper.Instance.Serialize(_app.StationToInventoryApp(stationCode)); } //空栈板出库 [HttpPost] [ServiceFilter(typeof(OperLogFilter))] public string EmptyPalletOut(string station, string type) { return JsonHelper.Instance.Serialize(_app.EmptyPalletOutApp(station, type)); } //比对托盘号,占用站台并创建容器 [HttpPost] [ServiceFilter(typeof(OperLogFilter))] public string PalletIsNo(string Pallet, string station) { return JsonHelper.Instance.Serialize(_app.PalletIsNo(Pallet, station)); } //通过站台查询已锁站台托盘号(暂存区专用) [HttpPost] [ServiceFilter(typeof(OperLogFilter))] public string SelStation(string station) { return JsonHelper.Instance.Serialize(_app.SelStation( station)); } } }