using Tiger.Model; using SqlSugar; using System; using System.Collections.Generic; using System.Linq.Expressions; using System.Text; using System.Threading.Tasks; using Rhea.Common; using System.Net; using System.Linq; using Newtonsoft.Json; using Tiger.IBusiness; using Microsoft.AspNetCore.Http; using System.Collections; using System.Data; using Sundial; namespace Tiger.Business.MES { /// /// 工具管理 /// public partial class SmtTool : ISmtTool { /// /// 获取未上料列表 /// /// /// public async Task>> GetNotLoadingMaterial(SmtLoadingInput paras) { var res = new ApiAction>(); List sList = new List(); try { sList = Biz.Db.Queryable((t, l) => new JoinQueryInfos( JoinType.Left, t.WORK_ORDER == l.WORK_ORDER && t.PROD_CODE == l.PROD_CODE && t.PCB_SURFACE == l.PCB_SURFACE && t.LINE_CODE == l.LINE_CODE && t.SLOT_NO == l.SLOT_NO )) .Where((t, l) => SqlFunc.IsNullOrEmpty(l.WORK_ORDER) && t.WORK_ORDER == paras.moCode && t.PROD_CODE == paras.prodCode && t.LINE_CODE == paras.lineCode && t.PCB_SURFACE == paras.pcbSurface) .WhereIF(SqlFunc.IsNullOrEmpty(paras.machineCode), (t, l) => t.SMT_CODE == paras.machineCode) .Select((t, l) => t) .ToList(); } catch (Exception ex) { res.CatchExceptionWithLog(ex, "查询异常"); } res.Data = sList; return await Task.FromResult(res); } /// /// 导入工单料站表 /// /// /// public async Task>> ValidateTableImport(List paras) { var result = new ApiAction>(); try { //DataTable dt = JsonConvert.DeserializeObject(paras.ToString()); List currentList = new List(); if (paras?.Count > 0) { //var duplicateWo = paras.GroupBy(p => p.关联工单号) // .Where(g => g.Count() > 1) // .Select(g => g.Key) // .ToList(); //if (duplicateWo.Count() > 0)//存在重复数据 //{ // string WORK_ORDER = string.Empty; // foreach (var item in duplicateWo) // { // WORK_ORDER += item; // } // WORK_ORDER = WORK_ORDER.TrimEnd(';'); // result.IsSuccessed = false; // result.Message = $"导入的物料中有重复数据:关联工单:{WORK_ORDER}"; //} //else { foreach (var item in paras) { item.处理方式 = "新增"; item.原因 = null; if (item.关联工单号 == null || item.关联工单号 == " ") { item.处理方式 = "数据异常"; item.原因 += "工单号空或不存在!"; } if (item.产品编码 == null || item.产品编码 == " ") { item.处理方式 = "数据异常"; item.原因 += $"产品编码为空!"; } if (item.物料编码 == null || item.物料编码 == " ") { item.处理方式 = "数据异常"; item.原因 += $"物料编码为空!"; } if (item.站位号 == null || item.站位号 == " ") { item.处理方式 = "数据异常"; item.原因 += $"站位号为空!"; } currentList.Add(item); if (await Biz.Db.Queryable().AnyAsync(x => x.WORK_ORDER == item.关联工单号 && x.ITEM_CODE == item.物料编码 && x.SLOT_NO == item.站位号 && x.SMT_CODE == item.贴片机编码)) { item.处理方式 = "修改"; item.原因 += $"工单{item.关联工单号},物料编码{item.物料编码},站位号{item.站位号},贴片机编码{item.贴片机编码}与数据库重复!"; } } //for (int i = 0; i < item..Count; i++) { } } } else { result.IsSuccessed = false; result.Message = $"导入的物料不能为空"; } result.Data = currentList; } catch (Exception ex) { result.CatchException(ex, $"验证导入工单料站表异常"); } return result; } /// /// 导入工单料站表 /// /// /// public async Task SaveValidateTableImport(List paras) { var result = new ApiAction(); try { //DataTable dt = JsonConvert.DeserializeObject(paras.ToString()); List currentList = new List(); if (paras.Count > 0) { var db = Biz.Db; foreach (var item in paras) { var workorder = item.关联工单号.ToString(); var id = db.Queryable().Where(s => s.WORK_ORDER == workorder).Select(q => q.ID).First(); SMT_WO_TABLE table = new SMT_WO_TABLE(); table.ID = item.处理方式?.ToString() == "新增" ? Guid.NewGuid().ToString() : id; table.CREATE_TIME = DateTime.Now; table.UPDATE_TIME = DateTime.Now; table.WORK_ORDER = item.关联工单号.ToString(); table.PROD_CODE = item.产品编码?.ToString(); table.ITEM_CODE = item.物料编码?.ToString(); table.SUBITEM_CODE = item.替代料?.ToString(); table.UNIT = item.单位?.ToString(); table.UNIT_QTY = item.单位用量.ToInt32(); table.LINE_CODE = item.产线编码?.ToString(); table.SMT_CODE = item.贴片机编码?.ToString(); table.SMT_STENCIL = item.钢网编码?.ToString(); table.SLOT_NO = item.站位号?.ToString(); table.LOCATION = item.贴片位置?.ToString(); table.FEEDER_CODE = item.飞达编码?.ToString(); table.FEEDER_TYPE = item.飞达类型?.ToString(); table.PCB_SURFACE = item.加工面?.ToString(); table.LOAD_SEQ = item.上料顺序.ToInt32(); table.REMARK = item.备注?.ToString(); table.VALIDATION_TYPE = item.处理方式?.ToString(); table.VALIDATION_RESULT = item.原因?.ToString(); currentList.Add(table); } var add = currentList.Where(q => q.VALIDATION_TYPE == "新增").ToList(); var upd = currentList.Where(q => q.VALIDATION_TYPE == "修改").ToList(); if (add.Count > 0) { Biz.Db.Insertable(add).ExecuteCommand(); } if (upd.Count > 0) { Biz.Db.Updateable(upd).ExecuteCommand(); } } } catch (Exception ex) { result.CatchException(ex, $"验证导入工单料站表异常"); } return result; } } }