1.定时充电问题排查,增加状态字段增加定时更新状态2.删除webservice所有日志 api接口日志(超时问题优化)
| | |
| | | <Compile Include="models\OutboundRecord.cs" /> |
| | | <Compile Include="models\SapReturn.cs" /> |
| | | <Compile Include="models\SapRoot.cs" /> |
| | | <Compile Include="models\TN_CD.cs" /> |
| | | <Compile Include="models\TN_DPRECORD.cs" /> |
| | | <Compile Include="models\TN_GENERATE_ORDER.cs" /> |
| | | <Compile Include="models\TN_Location_Ext.cs" /> |
| | |
| | | tasks.Add(GetTask(WMSCore.CheckDistributionCNTROrder)); |
| | | //tasks.Add(GetTask(WMSCore.TransportTask)); |
| | | tasks.Add(GetTask(WCSCore.Dispatch)); |
| | | tasks.Add(GetTask(WCSCore.Dispatch1)); |
| | | //添加自定义线程 |
| | | |
| | | //tasks.Add(GetTask(Monitor.CheckDevice)); |
| | |
| | | [HttpPost] |
| | | public WLReturnRoot.Root MaterReceiveXmlData([FromBody] MaterDto.Root xmlData) |
| | | { |
| | | #region xml数据接收转数组 |
| | | |
| | | //LogHelper.Info("物料接收接口:" + JsonConvert.SerializeObject(xmlData)); |
| | | |
| | | ////接收xml数据 |
| | | //XmlDocument xmlDoc = new XmlDocument(); |
| | | //xmlDoc.LoadXml(xmlData.ToString()); |
| | | |
| | | //// 将 XmlDocument 转换为 JSON 字符串 |
| | | //JObject jsonObject = JsonConvert.DeserializeObject<JObject>(JsonConvert.SerializeXmlNode(xmlDoc)); |
| | | |
| | | //// 处理特定字段,强制转换为数组 |
| | | //WmsSpaHelper.EnsureArrayFormats(jsonObject, "ITEM"); |
| | | //// 反序列化为RootWithArray |
| | | //var data = JsonConvert.DeserializeObject<MaterDto.Root>(jsonObject.ToString()); |
| | | #endregion |
| | | |
| | | |
| | | #region 外采入库业务流程 |
| | | WLReturnRoot.Root simpleResult = WmsSpaHelper.Mater_In(xmlData); |
| | | //接收返回参数 生成sap对接文档返回格式 |
| | | //var json = WmsSpaHelper.GetJsonResult(simpleResult.WLPZBH, simpleResult.resultCode.ToString(), simpleResult.resultMsg); |
| | | |
| | | //#endregion |
| | | //#region 返回xml |
| | | //string xml = JsonConvert.DeserializeXmlNode(json, "root").OuterXml; |
| | | ////返回json |
| | | //var response = new HttpResponseMessage() |
| | | //{ |
| | | // Content = new StringContent(xml, Encoding.UTF8, "application/xml") |
| | | //}; |
| | | //return response; |
| | | |
| | | |
| | | var json = JsonConvert.SerializeObject(simpleResult); |
| | | return simpleResult; |
| | |
| | | #region xml数据接收转数组 |
| | | //LogHelper.Info("生产订单领料单(生成领料单)接口:" + JsonConvert.SerializeObject(xmlData)); |
| | | |
| | | |
| | | |
| | | #endregion |
| | | |
| | | #region 出库业务流程 |
| | | return WmsSpaHelper.Out_Order_Ins(xmlData); |
| | | return WmsSpaHelper.Out_Order_Ins(xmlData); |
| | | |
| | | |
| | | |
| | | //sw.Stop(); |
| | | //long elapsedMilliseconds = sw.ElapsedMilliseconds; |
| | | //LogHelper.Info("生产订单领料单(生成领料单)返回时长:" + elapsedMilliseconds); |
| | | |
| | | |
| | | #endregion |
| | | } |
| | | |
| | |
| | | bool panduan = true; |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | |
| | | var po = db.Queryable<TN_Material_KC>().Where(a => a.S_ITEM_CODE == ItemCode).First(); |
| | | var po = db.Queryable<TN_Material_KC>().Where(a => a.S_ITEM_CODE== ItemCode).First(); |
| | | |
| | | var po1 = db.Queryable<CntrItemRel>().Where(a => a.S_ITEM_CODE == ItemCode).First(); |
| | | if (po != null) |
| | |
| | | db.BeginTran(); |
| | | List<WLReturnRoot.ITEM> list = new List<WLReturnRoot.ITEM>(); |
| | | |
| | | |
| | | var itemCodes = model.ROOT.ITEM.Select(item => item.WLBM).ToList(); |
| | | List<TN_Material> tN_Materials = new List<TN_Material>(); |
| | | var itemCodes = model.ROOT.ITEM.Select(item => item.WLBM).Distinct().ToList(); |
| | | var itemlist = db.Queryable<TN_Material>() |
| | | .Where(it => itemCodes.Contains(it.S_ITEM_CODE)) |
| | | .ToList(); |
| | |
| | | { |
| | | try |
| | | { |
| | | |
| | | var result = new WLReturnRoot.ITEM(); |
| | | |
| | | var materlist = itemlist.Where(it => it.S_ITEM_CODE == item.WLBM).First(); |
| | | var materlist = itemlist.Where(it => it.S_ITEM_CODE == item.WLBM).FirstOrDefault(); |
| | | if (materlist == null) |
| | | { |
| | | TN_Material tN_Material = new TN_Material(); |
| | |
| | | tN_Material.S_CPZ = item.CPZ; |
| | | tN_Material.S_CPZMS = item.CPZMS; |
| | | tN_Material.S_ITEM_NAME = item.VTEXT; |
| | | db.Insertable<TN_Material>(tN_Material).ExecuteCommand(); |
| | | tN_Materials.Add(tN_Material); |
| | | //db.Insertable<TN_Material>(tN_Material).ExecuteCommand(); |
| | | result.MSGDESP = "成功"; |
| | | result.MSGCODE = 0; |
| | | result.GCBM = item.GCBM; |
| | |
| | | } |
| | | } |
| | | response.ROOT.ITEM = list; |
| | | if (tN_Materials.Count()>0) |
| | | { |
| | | db.Insertable<TN_Material>(tN_Materials).ExecuteCommand(); |
| | | //using (var bulkCopy = new SqlBulkCopy(util.Settings.SqlServer)) |
| | | //{ |
| | | // bulkCopy.DestinationTableName = "TN_Material"; |
| | | // bulkCopy.BatchSize = 500; |
| | | // var dataTable = new DataTable(); |
| | | // dataTable = list.ToDataTable(); |
| | | // // 添加列映射(确保名称匹配) |
| | | // foreach (DataColumn col in dataTable.Columns) |
| | | // { |
| | | // bulkCopy.ColumnMappings.Add(col.ColumnName, col.ColumnName); |
| | | // } |
| | | // bulkCopy.WriteToServer(tN_Materials.ToDataTable()); |
| | | //} |
| | | } |
| | | |
| | | //db.Insertable<TN_Material>(list).ExecuteCommand(); |
| | | db.CommitTran(); |
| | | |
| | |
| | | var po1 = new TN_Outbound_Order { S_NO = WMSHelper.GenerateShippNo(), UNAME = po.UNAME, S_FACTORY = po.S_FACTORY, S_CBZX = po.S_CBZX, S_ZZKM = po.S_ZZKM, S_LRZX = po.S_LRZX, BLDAT = po.BLDAT, BUDAT = po.BUDAT, S_OUT_TYPE = po.S_OUT_TYPE, S_BS_TYPE = po.S_BS_TYPE, S_AREA_CODE = po.S_AREA_CODE, S_BS_NO = po.S_NO }; |
| | | List<TN_Ll_detail> tN_Ll_Details = new List<TN_Ll_detail>(); |
| | | po1.Details = new List<TN_Outbound_Detail>(); |
| | | var list = po.Details.Where(s => s.F_QTY > s.F_ACC_D_QTY).Select(s => s.S_ITEM_CODE).Distinct().ToArray(); |
| | | var Sitemlist = db.Queryable<CntrItemRel>().Where(s => list.Contains(s.S_ITEM_CODE)).Select(s => s.S_ITEM_CODE).ToArray(); |
| | | |
| | | po.Details = po.Details.Where(s => s.F_QTY > s.F_ACC_D_QTY && Sitemlist.Contains(s.S_ITEM_CODE)).ToList(); |
| | | var list = po.Details.Where(s => s.F_QTY > s.F_ACC_D_QTY&&s.S_ERP_WH_CODE=="4004").Select(s => s.S_ITEM_CODE).Distinct().ToArray(); |
| | | |
| | | var Sitemlist = db.Queryable<CntrItemRel>().Where(s => list.Contains(s.S_ITEM_CODE)).Select(s => s.S_ITEM_CODE).ToArray().Select(x => x.Trim()).ToArray(); ; |
| | | |
| | | po.Details = po.Details.Where(s => Sitemlist.Contains(s.S_ITEM_CODE)).ToList(); |
| | | if (po.Details.Count() > 0) |
| | | { |
| | | |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Threading.Tasks; |
| | | using static HH.WCS.Mobox3.pinggao.api.ApiModel; |
| | | |
| | | namespace HH.WCS.Mobox3.pinggao.core { |
| | |
| | | |
| | | |
| | | } |
| | | } internal static void Dispatch1() { |
| | | //查询任务 |
| | | //获取所有等待的任务 |
| | | TaskProcess.SendCd(); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | { |
| | | //< Order TS = '60' Pri = '" + mst.CN_N_PRIORITY.ToString() + "' From = '" + start.CN_N_AGV_TN_Location + "' To = '" + end.CN_N_AGV_TN_Location + "' No = '" + mst.S_CODE + "_1' Ext1 = '1' Ext2 = '" + Constants.TN_MID_COMMANDEQ_CALLAGVOrderCommandType + "' N_CNTR_COUNT = '' FRow = '" + sFloor + "' TRow = '" + eFloor + "' /> |
| | | var sb = new StringBuilder(); |
| | | sb.Append($"<Req><Order "); |
| | | sb.Append($"<Req> "); |
| | | if (ts != 0) |
| | | { |
| | | sb.Append($"TS='{ts}'"); |
| | |
| | | sb.Append("/></Req>"); |
| | | return sb.ToString(); |
| | | } |
| | | |
| | | private static string GetReqStrcd(int ts, Dictionary<string, string> param) |
| | | { |
| | | //< Order TS = '60' Pri = '" + mst.CN_N_PRIORITY.ToString() + "' From = '" + start.CN_N_AGV_TN_Location + "' To = '" + end.CN_N_AGV_TN_Location + "' No = '" + mst.S_CODE + "_1' Ext1 = '1' Ext2 = '" + Constants.TN_MID_COMMANDEQ_CALLAGVOrderCommandType + "' N_CNTR_COUNT = '' FRow = '" + sFloor + "' TRow = '" + eFloor + "' /> |
| | | var sb = new StringBuilder(); |
| | | sb.Append($"<Req><Order "); |
| | | if (ts != 0) |
| | | { |
| | | sb.Append($"<TS No='{ts}'>"); |
| | | } |
| | | foreach (var kv in param) |
| | | { |
| | | sb.Append($"<Param Name='{kv.Key}' >{kv.Value}</Param>"); |
| | | } |
| | | sb.Append("</TS>/></Req>"); |
| | | return sb.ToString(); |
| | | } |
| | | public static AGVResult OrderAdd(int ts, Dictionary<string, string> param, Dictionary<string, string> param1) |
| | | { |
| | | //< Req >< Order TS = '1' Pri = '1' No = 'TN2302020001' Ext1 = '' Ext2 = '' N_CNTR_COUNT = '' >< Param Name = 'From' Value = '2' />< Param Name = 'To' Value = '1' /></ Order ></ Req > |
| | |
| | | return new AGVResult { Res = new Res { ErrCode = -1, ErrInfo = e.Message } }; |
| | | } |
| | | } |
| | | public static AGVResult OrderAdd2(int ts, Dictionary<string, string> param) |
| | | { |
| | | //< Req >< Order TS = '1' Pri = '1' No = 'TN2302020001' Ext1 = '' Ext2 = '' N_CNTR_COUNT = '' >< Param Name = 'From' Value = '2' />< Param Name = 'To' Value = '1' /></ Order ></ Req > |
| | | |
| | | var bufin = GetReqStrcd(ts, param); |
| | | |
| | | try |
| | | { |
| | | var result = callClient.OrderAdd(bufin); |
| | | LogHelper.Info($"OrderAdd req={bufin} res={result}", "NDC"); |
| | | //LogHelper.Info(result.bufout, "ts"); |
| | | return GetResult(result); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | LogHelper.Info($"OrderAdd req={bufin} res={e.Message}", "NDC"); |
| | | return new AGVResult { Res = new Res { ErrCode = -1, ErrInfo = e.Message } }; |
| | | } |
| | | } |
| | | public static AGVResult AddNewOrder(int ts, Dictionary<string, string> param) { |
| | | //< Req >< Order TS = '1' Pri = '1' No = 'TN2302020001' Ext1 = '' Ext2 = '' N_CNTR_COUNT = '' >< Param Name = 'From' Value = '2' />< Param Name = 'To' Value = '1' /></ Order ></ Req > |
| | | |
New file |
| | |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace HH.WCS.Mobox3.pinggao.models |
| | | { |
| | | [SugarTable("TN_CD")] |
| | | public class TN_CD : BaseModel |
| | | { |
| | | public string S_TIME { get; set; } |
| | | public int N_STATE { get; set; } |
| | | } |
| | | } |
| | |
| | | using static HH.WCS.Mobox3.pinggao.models.SapRoot.WcReturnRoot; |
| | | using static HH.WCS.Mobox3.pinggao.api.OtherModel; |
| | | using NLog.Fluent; |
| | | using System.Xml.Linq; |
| | | |
| | | namespace HH.WCS.Mobox3.pinggao.process |
| | | { |
| | |
| | | .ToList(); |
| | | if (TN_Task.N_ERR == 2)//前移车 |
| | | { |
| | | |
| | | |
| | | endlist = endlist.Where(s => s.N_LAYER < 7).ToList(); |
| | | } |
| | | foreach (var item in endlist) |
| | |
| | | |
| | | |
| | | } |
| | | public static DateTime? ParseCustomFormatDate(string dateStr) |
| | | { |
| | | // 假设日期格式是 yy:mm |
| | | if (DateTime.TryParseExact(dateStr, "HH:mm", null, System.Globalization.DateTimeStyles.None, out DateTime result)) |
| | | { |
| | | return result; |
| | | } |
| | | return null; |
| | | } |
| | | public static bool SendCd() |
| | | { |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | var dstart = db.Queryable<TN_CD>().Where(s => s.N_STATE == 0).First(); |
| | | |
| | | public static bool SendCd() { |
| | | |
| | | |
| | | |
| | | var result=false; |
| | | |
| | | var dic = new Dictionary<string, string>(); |
| | | var dic1 = new Dictionary<string, string>(); |
| | | |
| | | dic.Add("ExtDeviceNo", "1"); |
| | | |
| | | //判断 |
| | | var res = NDC.OrderAdd(99, dic, dic1); |
| | | if (res != null && (res.Res.ErrCode == 0 || res.Res.ErrCode == 50009)) |
| | | var result = false; |
| | | if (dstart != null) |
| | | { |
| | | DateTime currentDate = DateTime.Now; |
| | | // 格式化输出时分部分 |
| | | string currentHourMinute = currentDate.ToString("HH:mm"); |
| | | if (currentHourMinute == "00:00") |
| | | { |
| | | result = true; |
| | | |
| | | dstart.N_STATE = 0; |
| | | db.Updateable<TN_CD>(dstart).UpdateColumns(a => new { a.N_STATE }).ExecuteCommand(); |
| | | } |
| | | if (dstart.S_TIME == currentHourMinute) |
| | | { |
| | | var dic = new Dictionary<string, string>(); |
| | | var dic1 = new Dictionary<string, string>(); |
| | | var no = WMSHelper.GenerateTaskNo(); |
| | | dic.Add("No", no); |
| | | dic.Add("Pri", "0"); |
| | | dic1.Add("ExtDeviceNo", "1"); |
| | | |
| | | //判断 |
| | | var res = NDC.OrderAdd(99, dic, dic1); |
| | | if (res != null && (res.Res.ErrCode == 0 || res.Res.ErrCode == 50009)) |
| | | { |
| | | // dstart.N_STATE = 1; |
| | | // db.Updateable<TN_CD>(dstart).UpdateColumns(a => new { a.N_STATE }).ExecuteCommand(); |
| | | |
| | | // result = true; |
| | | } |
| | | |
| | | |
| | | var dic12 = new Dictionary<string, string>(); |
| | | var dic11 = new Dictionary<string, string>(); |
| | | var no1 = WMSHelper.GenerateTaskNo(); |
| | | dic12.Add("No", no1); |
| | | dic12.Add("Pri", "0"); |
| | | dic11.Add("ExtDeviceNo", "2"); |
| | | |
| | | //判断 |
| | | var res1 = NDC.OrderAdd(99, dic12, dic11); |
| | | if (res1 != null && (res1.Res.ErrCode == 0 || res1.Res.ErrCode == 50009)) |
| | | { |
| | | dstart.N_STATE = 1; |
| | | db.Updateable<TN_CD>(dstart).UpdateColumns(a => new { a.N_STATE }).ExecuteCommand(); |
| | | |
| | | result = true; |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | return result; |
| | | } |
| | | /// <summary> |
| | |
| | | //LogHelper.Info($"{sql}"); |
| | | if (db.Ado.SqlExecutionTime.TotalSeconds > 1) { |
| | | //Console.WriteLine(sql + "\r\n" + db.Utilities.SerializeObject(p.ToDictionary(it => it.ParameterName, it => it.Value))); |
| | | LogHelper.Info("错误日志"+sql + "\r\n" + db.Utilities.SerializeObject(p.ToDictionary(it => it.ParameterName, it => it.Value))); |
| | | //代码CS文件名 |
| | | var fileName = db.Ado.SqlStackTrace.FirstFileName; |
| | | //LogHelper.Info("错误日志"+sql + "\r\n" + db.Utilities.SerializeObject(p.ToDictionary(it => it.ParameterName, it => it.Value))); |
| | | //代码CS文件名 |
| | | var fileName = db.Ado.SqlStackTrace.FirstFileName; |
| | | //代码行数 |
| | | var fileLine = db.Ado.SqlStackTrace.FirstLine; |
| | | //方法名 |