//public static bool GethuadongTmsOrderNode(List<Model_Waybill_Node> nodeList) //{ // if (nodeList.Count == 0) // return false; // bool result = false; // try // { // //查询关联表是否存在信息 // List<Model_Huadong_Tmsorder_Waybillbase> numberList = GetHuadongWaybillbase(nodeList.Select(l => l.BaseId).Distinct().ToList()); // if (numberList.Count == 0) // return true; // List<Model_Waybill_Base> baseId = GetExistWaybills(numberList.Select(l => l.number).Distinct().ToList()); // if (baseId.Count == 0) // return true; // int receiveContinue = 0; // foreach (Model_Waybill_Node node in nodeList) // { // foreach (Model_Waybill_Base waybase in baseId) // { // //if (waybase.Number == waynode.BaseId) // //{ // //判断运单状态是否签收 // //if (baseId.Find(l => l.Number == numberList.Find(n => n.relationId == node.BaseId).number).Stage==Enum_WaybillStage.Received) // if (waybase.Stage == Enum_WaybillStage.Received) // { // receiveContinue++; // continue; // } // int no = AddNode(node, waybase); // if (no > 0) // result = true; // else // result = false; // //} // } // } // if (receiveContinue == nodeList.Count) // return true; // } // catch (Exception ex) // { // throw ex; // } // return result; //} public static int AddNode(Model_Waybill_Node nodeList, Model_Waybill_Base baseList) { string sql = "insert into waybill_node (baseId,operateAt,storageId,storageName,content,arrived) values(?baseId,?operateAt,?storageId,?storageName,?content,?arrived) ;"; MySqlParameter[] para = new MySqlParameter[6]; para[0] = new MySqlParameter("baseId", baseList.Id); para[1] = new MySqlParameter("operateAt", nodeList.operateAt); para[2] = new MySqlParameter("storageId", nodeList.StorageId); para[3] = new MySqlParameter("storageName", nodeList.StorageName); para[4] = new MySqlParameter("content", nodeList.Content); para[5] = new MySqlParameter("arrived", nodeList.Arrived); int result = 0; result = _SqlHelp.ExecuteNonQuery(sql, para); if (result > 0) { if (nodeList.Arrived == Enum_Arrived.HaveArrived) { string upsql = "update waybill_base set stage=1 ,signinAt=?signinAt where number=?number ;"; MySqlParameter[] par = new MySqlParameter[2]; par[0] = new MySqlParameter("signinAt", nodeList.operateAt); par[1] = new MySqlParameter("number", baseList.Number); result = _SqlHelp.ExecuteNonQuery(upsql, par); } } return(result); }
/// <summary> /// 上传运单 /// </summary> private static int UploadOrder() { ResultModelOfboolean result = new ResultModelOfboolean(); List <Model_Waybill_Base> list = new List <Model_Waybill_Base>(); string msg = string.Empty; string err = string.Empty; try { DataTable dt = WaybillServer.GetNotUploadOrders(Common._MaxUploadOrderCount); if (dt != null && dt.Rows.Count > 0) { foreach (DataRow row in dt.Rows) { Model_Waybill_Base b = new Model_Waybill_Base(); b.Numberk__BackingField = row["number"].ToString(); b.SenderIdk__BackingField = Convert.ToInt32(row["senderId"]); b.SenderOrgk__BackingField = row["senderOrg"].ToString(); b.SenderPersonk__BackingField = row["senderPerson"].ToString(); b.SenderTelk__BackingField = row["senderTel"].ToString(); b.SenderAddressk__BackingField = row["senderAddress"].ToString(); b.ReceiverIdk__BackingField = row["receiverId"] is DBNull ? 0 : Convert.ToInt32((row["receiverId"])); b.ReceiverOrgk__BackingField = row["receiverOrg"].ToString(); b.ReceiverPersonk__BackingField = row["receiverPerson"].ToString(); b.ReceiverTelk__BackingField = row["receiverTel"].ToString(); b.ReceiverAddressk__BackingField = row["receiverAddress"].ToString(); b.BillingCountk__BackingField = Convert.ToInt32(row["billingCount"]); b.Stagek__BackingField = (Enum_WaybillStage)Enum.ToObject(typeof(Enum_WaybillStage), Convert.ToInt32(row["stage"])); b.BeginAtk__BackingField = Convert.ToDateTime(row["beginAt"]); list.Add(b); msg = b.Numberk__BackingField; } if (_isContinue) { return(0); } FrmParent.ParentForm.SetNewInfo("正在上报运单" + msg + ",请稍候...", null); result = Common._PdaServer.UploadWaybill_Base(list.ToArray()); } return(list.Count); } catch (Exception ex) { err = ex.Message; throw ex; } finally { if (result.Data) { WaybillServer.DeleteUploadSuccessOrders(list.Select(l => l.Numberk__BackingField).ToList()); } else if (string.IsNullOrEmpty(err)) { err = result.Message; } err = err == null ? string.Empty : err; FrmParent.ParentForm.SetNewInfo(string.Format("{0}{1} {2}", (msg.Length == 0 ? "没有待上报的运单." : "上报运单"), msg, (err.Length == 0 ? (msg.Length == 0 ? "" : "成功") : "失败 " + err)), err.Length == 0); } }
/// <summary> /// 冷链数据 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tsmColdChainData_Click(object sender, EventArgs e) { try { Model_Waybill_Node node = dgvWaybill_Node.SelectedRows[0].Tag as Model_Waybill_Node; //获取开始时间的下面的时间 ResultModelOfArrayOfModel_Waybill_Noded4FqxSXX nodedate = cs.GetWaybillNodeList(node.BaseIdk__BackingField.ToString(), node.operateAtk__BackingField.ToString(), null); if (nodedate.Code != 0) { MessageBox.Show(nodedate.Message); } else { if (nodedate.Data.Length <= 0) { MessageBox.Show("没有下一条物流节点...."); return; } } Model_Waybill_Base waybase = waybill_base; FrmLogisticsNodeSuperView nodesuper = new FrmLogisticsNodeSuperView(); nodesuper.waybase = waybase; nodesuper.node = node; nodesuper.ShowDialog(); } catch (Exception ex) { MessageBox.Show(ex.Message, "error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
/// <summary> /// 详细 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tsmDetailed_Click(object sender, EventArgs e) { Model_Waybill_Base waybill = dataGridView1.SelectedRows[0].Tag as Model_Waybill_Base; FrmWaybillShow waybillshow = new FrmWaybillShow(); waybillshow.waybill_base = waybill; waybillshow.ShowDialog(); }
/// <summary> /// 签收图片 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tsmSignPicture_Click(object sender, EventArgs e) { Model_Waybill_Base waybase = waybill_base; Model_Waybill_Node node = dgvWaybill_Node.SelectedRows[0].Tag as Model_Waybill_Node; FrmSignPicture sp = new FrmSignPicture(); sp.mwb = waybase; sp.mwn = node; sp.ShowDialog(); }
/// <summary> /// 查询临时图片表是否存在图片信息,存在保存到图片表中 /// </summary> /// <param name="RelationId"></param> public static void HuaDongFcCoPictures(string RelationId) { try { LogServer.AddLogText("开始删除临时图片表超过一个月的信息", RelationId); //删除超过一个月的数据 string sql = string.Format("delete from temporarypictures where inserttime<'{0}' ;", DateTime.Now.AddMonths(-1).ToString("yyyy-MM-dd HH:mm:ss")); _SqlHelp.ExecuteNonQuery(sql); //查询关系表是否存在信息 sql = string.Format("select * from huadong_tmsorder_waybillbase where relationId='{0}';", RelationId); Model_Huadong_Tmsorder_Waybillbase huadongbase = _SqlHelp.ExecuteObject <Model_Huadong_Tmsorder_Waybillbase>(sql); if (huadongbase != null) { //查询运单信息是否存在 sql = string.Format("select * from waybill_base where number='{0}'; ", huadongbase.number); Model_Waybill_Base waybbase = _SqlHelp.ExecuteObject <Model_Waybill_Base>(sql); if (waybbase != null) { //查询临时图片表是否存在图片信息 sql = string.Format("select * from temporarypictures where baseId='{0}' and operateAt>='{1}';", RelationId, waybbase.BeginAt.ToString("yyyy-MM-dd HH:mm:ss")); List <Model_TemporaryPictures> waybnode = _SqlHelp.ExecuteObjects <Model_TemporaryPictures>(sql); if (waybnode.Count != 0) { sql = string.Empty;//清空sql语句 foreach (Model_TemporaryPictures item in waybnode) { string tempSql = string.Format("insert into waybill_postback_pic(baseId,picName) values({0},'{1}') ; ", waybbase.Id, item.PicName); LogServer.AddLogText("插入图片:" + tempSql, RelationId); //查询到的信息保存到节点中 sql += tempSql; //删除暂存表中的信息 tempSql = string.Format("delete from temporarypictures where id={0} ;", item.id); LogServer.AddLogText("删除临时图片:" + tempSql, RelationId); sql += tempSql; tempSql = string.Format("update waybill_base set picPostbackAt='{0}' where number='{1}';", item.operateAt, waybbase.Number); LogServer.AddLogText("更新运单图片时间:" + tempSql, RelationId); sql += tempSql; } int result = _SqlHelp.ExecuteNonQuery(sql); LogServer.AddLogText("临时图片信息保存到图片表,删除临时图片表中的信息,结果:" + result, RelationId); } else { LogServer.AddLogText(string.Format("图片表不存在图片信息,sql:{0},结果:{1}", sql, waybnode.Count), RelationId); } } else { LogServer.AddLogText(string.Format("运单信息不存在,sql:{0},结果:{1}", sql, waybbase == null ? "没有信息" : "1"), RelationId); } } else { LogServer.AddLogText(string.Format("关联信息不存在,sql:{0},结果:{1}", sql, huadongbase == null ? "没有信息" : "1"), RelationId); } } catch (Exception ex) { LogServer.AddLogText("HuaDongFcCoTable异常:" + ex.Message, RelationId); } }
/// <summary> /// 查询暂存表是否存在运单节点信息,存在保存到节点表中 /// </summary> /// <param name="RelationId">运单号</param> public static void HuaDongFcCoTable(string RelationId) { try { LogServer.AddLogText("开始删除临时表超过一个月的信息", RelationId); //删除超过一个月的数据 string sql = string.Format("delete from unnecessary_node where inserttime<'{0}' ;", DateTime.Now.AddMonths(-1).ToString("yyyy-MM-dd HH:mm:ss")); _SqlHelp.ExecuteNonQuery(sql); //查询关系表是否存在信息 sql = string.Format("select * from huadong_tmsorder_waybillbase where relationId='{0}';", RelationId); LogServer.AddLogText(string.Format("查询关系表是否存在信息{0}", sql), RelationId); Model_Huadong_Tmsorder_Waybillbase huadongbase = _SqlHelp.ExecuteObject <Model_Huadong_Tmsorder_Waybillbase>(sql); if (huadongbase != null) { //查询运单信息是否存在 sql = string.Format("select * from waybill_base where number='{0}'; ", huadongbase.number); LogServer.AddLogText(string.Format("查询运单信息是否存在{0} ", sql), RelationId); Model_Waybill_Base waybbase = _SqlHelp.ExecuteObject <Model_Waybill_Base>(sql); if (waybbase != null) { //查询暂存表是否存在节点信息 sql = string.Format("select * from unnecessary_node where baseId='{0}' and operateAt>='{1}';", RelationId, waybbase.BeginAt.ToString("yyyy-MM-dd HH:mm:ss")); LogServer.AddLogText(string.Format("查询暂存表是否存在节点信息{0}", sql), RelationId); List <Model_UnnecessaryNode> waybnode = _SqlHelp.ExecuteObjects <Model_UnnecessaryNode>(sql); if (waybnode.Count != 0) { sql = string.Empty;//清空sql语句 foreach (Model_UnnecessaryNode item in waybnode) { string tempSql = string.Format("insert into waybill_node (baseId,operateAt,storageId,storageName,content,arrived,parentStorageId,handleFlag,scanNumber,customerId,insertTime) values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{10}','{8}','{9}') ; ", waybbase.Id, item.operateAt.ToString("yyyy-MM-dd HH:mm:ss"), item.StorageId, item.StorageName, item.Content, (int)item.Arrived, item.ParentStorageId, (item.CustomerId == 0 ? -1 : 0), item.CustomerId, item.InsertTime.ToString("yyyy-MM-dd HH:mm:ss"), item.BaseId); LogServer.AddLogText("插入节点:" + tempSql, RelationId); //查询到的信息保存到节点中 sql += tempSql; //删除暂存表中的信息 tempSql = string.Format("delete from unnecessary_node where id={0} ;", item.Id); LogServer.AddLogText("删除临时节点:" + tempSql, RelationId); sql += tempSql; if (item.Arrived == Enum_Arrived.HaveArrived) { tempSql = string.Format("update waybill_base set stage=1 ,signinAt='{0}' where number='{1}';", item.operateAt, waybbase.Number); LogServer.AddLogText("更新运单运抵时间:" + tempSql, RelationId); sql += tempSql; } } int result = _SqlHelp.ExecuteNonQuery(sql); LogServer.AddLogText("查询到的信息保存到节点中,删除暂存表中的信息", RelationId); } else { LogServer.AddLogText("暂存表不存在节点信息", RelationId); } } else { LogServer.AddLogText("运单信息不存在", RelationId); } } else { LogServer.AddLogText("关系表信息不存在", RelationId); } } catch (Exception ex) { LogServer.AddLogText("HuaDongFcCoTable异常:" + ex.Message, RelationId); } }
/// <summary> /// 创建第三方运单 /// </summary> /// <param name="orderInfo"></param> /// <returns>0:处理失败; 1:处理成功; 2:运单已存在</returns> public static int UploadThirdPartyOrder(Model_ThirdPartOrder orderInfo, int customerId = 0) { int result = 0; try { LogServer.AddLogText(string.Format("进入创建第三方运单逻辑{0},操作时间{1}", orderInfo.RelationId, orderInfo.OperateAt), orderInfo.RelationId); if (orderInfo == null) { result = 1; } string sql = string.Empty; Model_ThirdCustomer customerInfo = new Model_ThirdCustomer(); //检查是否已经创建过第三方运单的关联运单 Model_Waybill_Base IsExist = CheckThirdPartyNumberExist(orderInfo.RelationId); LogServer.AddLogText(string.Format("CheckThirdPartyNumberExist:{0}", IsExist != null ? 1 : 0), orderInfo.RelationId); if (IsExist == null) { #region 获取自动生成的运单号 //sql = "select concat('99', 1000000000 + Count(*) + 1) from waybill_base where company = 1"; //object obj = _SqlHelp.ExecuteScalar(sql); string number = string.Empty; string nHead = "981000000000"; if (customerId != 2) { nHead = "991000000000"; } int jLen = orderInfo.RelationId.Length; //if (orderInfo.RelationId.Length >= 12) // jLen = 10; //number = nHead.Substring(0, 12 - orderInfo.RelationId.Length) + orderInfo.RelationId; if (orderInfo.RelationId.Length > 9) { string str1 = orderInfo.RelationId.ToString().Substring(orderInfo.RelationId.Length - 9); number = nHead.Substring(0, 12 - str1.Length) + str1; } else { number = nHead.Substring(0, 12 - orderInfo.RelationId.Length) + orderInfo.RelationId; } LogServer.AddLogText("拼接后的运单号:" + number + "", orderInfo.RelationId); //if (obj != null) //{ // number = obj.ToString(); // if (obj.ToString() == "System.Byte[]") // number = Encoding.Default.GetString(obj as byte[]); //} #endregion #region 旧版通过配置文件获取第三方供应商名称,新版查询根据CustomerID查询 int Huadong_Id = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["Huadong_Id"]); string Huadong_Name = System.Configuration.ConfigurationManager.AppSettings["Huadong_Name"]; if (customerId != 0) { Huadong_Id = customerId; customerInfo = PDA_CustomerServer.GetThirdCustomers(customerId).First(); Huadong_Name = customerInfo.CustomerName; } #endregion List <string> sqlList = new List <string>(); //更新关系ID sql = string.Format("update huadong_tms_order set relationId='{0}' where (SHIPDETAILID = '{0}' or LEGCODE = '{0}' )", orderInfo.RelationId); sql += customerId == 0 ? string.Empty : (" and customerId = " + customerId); int count = _SqlHelp.ExecuteNonQuery(sql); LogServer.AddLogText(string.Format("更新第三方运单relationId:{0},结果:{1}", sql, count), orderInfo.RelationId); if (count == 0) { LogServer.AddLogText(string.Format("第三方运单不存在时,先插入一条空信息的运单,待第三方运单同步回来时更新运单信息", orderInfo.RelationId, orderInfo.OperateAt, customerId), orderInfo.RelationId); //第三方运单不存在时,先插入一条空信息的运单,待第三方运单同步回来时更新运单信息 sqlList.Add(string.Format("INSERT INTO `coldchain_logistics_db`.`huadong_tms_order` ( `relationId`, `code`, `SRCEXPNO`, `ROADID`, `SHIPDETAILID`, `TOTALID`, `LEGCODE`, `SHIPMENTCODE`, `CONSIGNORCODE`, `CONSIGNORNAME`, `DEPTNO`, `DEPTNAME`, `CUSTOMERCODE`, `CUSTOMERNAME`, `AREAHOUSE`, `SALESMAN`, `TRANSMODEID`, `ERPTRANSMODENAME`, `OPERATIONTYPE`, `DEMANDARRIVETIME`, `TRANSPORTTYPE`, `ORDERINSTANCY`, `TRANSPORTCATEGORY`, `ROUTENO`, `TRANSDEADLINE`, `FROMGTRANSID`, `FROMGTRANSNAME`, `TOGTRANSID`, `TOGTRANSNAME`, `RECEIVEADDR`, `RECEIVEMAN`, `RECEIVEPHONE`, `CREDATE`, `INOUTFLAG`, `WMSROUTEWAVENO`, `PRINTTYPE`, `TOTALQUNTITY`, `WHOLEQUNTITY`, `PARTQUNTITY`, `JFQUNTITY`, `DESCRIPTION`, `EXTCOL0`, `EXTCOL1`, `EXTCOL2`, `EXTCOL3`, `EXTCOL4`, `EXTCOL5`, `EXTCOL6`, `EXTCOL7`, `EXTCOL8`, `EXTCOL9`, `EXTCOL10`, `EXTCOL11`, `EXTCOL12`, `EXTCOL13`, `EXTCOL14`, `EXTCOL15`, `EXTCOL16`, `EXTCOL17`, `EXTCOL18`, `EXTCOL19`, `senderOrg`, `senderPerson`, `senderTel`, `senderAddress`, `receiverOrg`, `receiverPerson`, `receiverTel`, `receiverAddress`, `SecretKey`, `CreateTime`, `customerId`) VALUES ( '{0}', '', '', '', '{0}', '', '{0}', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0,0, 0, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '未知', '{1}', '{2}');", orderInfo.RelationId, orderInfo.OperateAt, customerId)); } LogServer.AddLogText("开始添加关联运单", orderInfo.RelationId); //插入本系统自用的关联运单 sqlList.Add(string.Format("insert into huadong_tmsorder_waybillbase(relationId,number{2}) values('{0}', '{1}'{3})", orderInfo.RelationId, number, customerId != 0 ? ",customerId" : "", customerId != 0 ? "," + customerId : "")); string updateReceiverIdSql = string.Empty; if (customerInfo.LinkType == 2) { sql = string.Format("insert into waybill_base (number,senderId,senderOrg,senderPerson,senderTel,senderAddress,receiverId,receiverOrg,receiverPerson, receiverTel, receiverAddress, billingCount, stage, beginAt, signinAt, picPostbackAt, company) select '{4}' as number, {0} as senderId, '{1}' as senderOrg, senderPerson , senderTel , senderAddress ,null as receiverId, receiverOrg , receiverPerson , receiverTel , receiverAddress,(if(isnull(JFQUNTITY),0,JFQUNTITY)) as billingCount, 0 as stage, '{2}' as beginAt, null as signinAt, null as picPostbackAt, 1 as company from huadong_tms_order where (SHIPDETAILID = '{3}' or LEGCODE = '{3}') and customerId={5} limit 1", Huadong_Id, Huadong_Name, orderInfo.OperateAt, orderInfo.RelationId, number, customerId); //宁波医药 updateReceiverIdSql = ("update waybill_base set receiverId = (select Id from customer where BindReceiverOrg=receiverOrg order by lastUpdateTime desc limit 1) where number = '" + number + "'"); } else { sql = string.Format("insert into waybill_base (number,senderId,senderOrg,senderPerson,senderTel,senderAddress,receiverId,receiverOrg,receiverPerson, receiverTel, receiverAddress, billingCount, stage, beginAt, signinAt, picPostbackAt, company) select '{4}' as number, {0} as senderId, '{1}' as senderOrg, EXTCOL12 as senderPerson, '' as senderTel, EXTCOL11 as senderAddress,null as receiverId, CUSTOMERNAME as receiverOrg, RECEIVEMAN as receiverPerson, RECEIVEPHONE as receiverTel, RECEIVEADDR as receiverAddress,0 as billingCount, 0 as stage, '{2}' as beginAt, null as signinAt, null as picPostbackAt, 1 as company from huadong_tms_order where SHIPDETAILID = '{3}' or LEGCODE = '{3}' limit 1", Huadong_Id, Huadong_Name, orderInfo.OperateAt, orderInfo.RelationId, number); //大华东 updateReceiverIdSql = ("update waybill_base set receiverId = (select Id from customer where fullName=receiverOrg order by lastUpdateTime desc limit 1) where number = '" + number + "'"); } sqlList.Add(sql); sqlList.Add(updateReceiverIdSql); foreach (string item in sqlList) { LogServer.AddLogText(item, orderInfo.RelationId); } result = _SqlHelp.ExecuteTranstration(sqlList) ? 1 : 0; LogServer.AddLogText(string.Format("执行结果:{0}", result), orderInfo.RelationId); //回滚暂存表中的可用节点 if (result == 1) { HuaDongFcCoTable(orderInfo.RelationId); HuaDongFcCoPictures(orderInfo.RelationId); } LogServer.AddLogText("创建第三方运单逻辑结束", orderInfo.RelationId); } else { //判断运单操作时间先后,操作时间早的更新后的 if (Convert.ToDateTime(orderInfo.OperateAt) < IsExist.BeginAt) { sql = string.Format("update waybill_base set beginAt='{0}' where number='{1}' ;", orderInfo.OperateAt, IsExist.Number); int updatbeginAt = _SqlHelp.ExecuteNonQuery(sql); LogServer.AddLogText(string.Format("sql:{0},结果:{1}", sql, updatbeginAt), orderInfo.RelationId); result = 1; } else { result = 1; } } } catch (Exception ex) { throw ex; } return(result); }
public static bool UploadWaybill_Node(Model_Waybill_Node node, int customerId, int?parentStorageId) { bool saveUploadDataProgress = false;//是否保存到冷链数据上报进度表 bool isFirstNode = false; try { if (node != null) { LogServer.AddLogText(string.Format("进入创建运单节点逻辑{0},操作时间{1}", node.BaseId, node.operateAt), node.BaseId); string cwMsg = "(上报节点)NodeNumber=" + node.BaseId + ";Content=" + node.Content + ";CustomerId=" + customerId + ";ParentStorageId=" + (parentStorageId == null ? "无" : parentStorageId.ToString()); Console.WriteLine(cwMsg); LogServer.AddLogText(cwMsg, node.BaseId); if (!string.IsNullOrEmpty(node.BaseId) && node.BaseId.Contains(@"\")) { node.BaseId = node.BaseId.Replace(@"\", "").Replace("/", ""); Console.WriteLine("替换运单号中的斜杠:" + node.BaseId); LogServer.AddLogText("替换运单号中的斜杠:" + node.BaseId, node.BaseId); } } string sql = string.Empty; string number = node.BaseId;//PDA传过来的BaseId就是运单号 //Customer=0为自运单,否则为第三方运单 if (customerId != 0) { //第三方运单需要查询关系表获取转换后的运单号 sql = "select number from huadong_tmsorder_waybillbase where relationid='" + number + "' and customerId=" + customerId; number = _SqlHelp.ExecuteScalar <string>(sql); LogServer.AddLogText(string.Format("第三方运单需要查询关系表获取转换后的运单号{0},结果:{1}", sql, number), node.BaseId); } else { LogServer.AddLogText("自运单 :", node.BaseId); } Model_Waybill_Base waybillBase = null;//根据运单号获取到BaseId sql = "select * from waybill_base where number = '" + number + "' order by id desc limit 1"; LogServer.AddLogText("查询运单是否存在:" + sql, node.BaseId); waybillBase = _SqlHelp.ExecuteObject <Model_Waybill_Base>(sql); if (waybillBase == null) { string remark = "运单[" + (string.IsNullOrEmpty(number) ? node.BaseId : number) + "]不存在"; remark += "传入的CustomerId=" + customerId; sql = string.Format("insert into unnecessary_node(baseId,operateAt,storageId,storageName,content,arrived,remarks,inserttime,parentStorageId,customerId) values('{0}', '{1}', {2}, '{3}', '{4}', {5}, '{6}','{7}','{8}','{9}');", node.BaseId, node.operateAt.ToString("yyyy-MM-dd HH:mm:ss"), node.StorageId, node.StorageName, node.Content, (int)node.Arrived, remark, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), parentStorageId, customerId); int insertResult = _SqlHelp.ExecuteNonQuery(sql); saveUploadDataProgress = insertResult > 0; LogServer.AddLogText(remark + ":" + sql + " 执行结果:" + insertResult, node.BaseId); return(true);//运单不存在,将存入暂存表 } else { LogServer.AddLogText("当前运单存在,开始添加节点", node.BaseId); } if (waybillBase.BeginAt == node.operateAt) { isFirstNode = true; } //查询该运单已有的所有节点 List <Model_Waybill_Node> base_NodeList = new List <Model_Waybill_Node>(); sql = "select id, convert(baseId, CHAR) as baseId ,operateAt,storageId,storageName,content,arrived from waybill_node where baseId = " + waybillBase.Id; base_NodeList = _SqlHelp.ExecuteObjects <Model_Waybill_Node>(sql); LogServer.AddLogText("查询该运单已有的所有节点:" + sql + ",查询到的节点条数:" + base_NodeList.Count + "", node.BaseId); foreach (Model_Waybill_Node item in base_NodeList) { //存在内容一致,时间一致的节点时丢弃 if (item.operateAt == node.operateAt) { LogServer.AddLogText(string.Format("内容一致,时间一致的节点丢弃;节点ID[{0}] 节点时间[{1}] 节点内容[{2}]", item.Id, item.operateAt.ToString("yyyy-MM-dd HH:mm:ss"), item.Content), node.BaseId); return(true); } if (item.Arrived == Enum_Arrived.HaveArrived) { if (node.Arrived == Enum_Arrived.HaveArrived) //存在运抵节点时,并且当前上报的也是运抵节点则丢弃 { LogServer.AddLogText("已存在运抵节点,当前也是运抵节点,弃之", node.BaseId); return(true); } else if (node.operateAt >= item.operateAt) //存在运抵节点时,当前节点虽然不是运抵节点但是创建时间比运抵时间大的也丢弃 { LogServer.AddLogText("已存在运抵节点,当前节点时间大于运抵节点时间,弃之", node.BaseId); return(true); } } } List <string> sqlList = new List <string>(); sqlList.Add(string.Format("insert into waybill_node (baseId,operateAt,storageId,storageName,content,arrived,parentStorageId,handleFlag,scanNumber,CustomerId,insertTime) values ('{0}', '{1}', '{2}', '{3}', '{4}', '{5}','{6}','{7}','{8}','{9}','{10}');", waybillBase.Id, node.operateAt.ToString("yyyy-MM-dd HH:mm:ss"), node.StorageId, node.StorageName.Replace("[默认]", ""), node.Content, (int)node.Arrived, (parentStorageId == null?-1:parentStorageId), (parentStorageId == null ? -1 : (customerId == 0 ? -1 : 0)), node.BaseId, customerId, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))); if (node.Arrived == Enum_Arrived.HaveArrived) { sqlList.Add(string.Format("update waybill_base set stage=1 ,signinAt='{0}' where number='{1}';", node.operateAt.ToString("yyyy-MM-dd HH:mm:ss"), number)); //运抵时更新此单的上报优先级(第三方运单) //if (customerId != 0) // sqlList.Add(string.Format("update huadong_tmsorder_waybillbase set handleCount = null,handleLastTime=now() where number = '{0}';", number)); } foreach (string item in sqlList) { LogServer.AddLogText(string.Format("添加节点:{0}", item), node.BaseId); } bool result = _SqlHelp.ExecuteTranstration(sqlList); LogServer.AddLogText("添加结果:" + result.ToString(), node.BaseId); saveUploadDataProgress = result; return(result); } catch (Exception ex) { LogServer.AddLogText("添加节点失败:" + ex.Message, node.BaseId); throw ex; } finally { try { if (customerId != 0 && parentStorageId != null && saveUploadDataProgress) { SaveUploadDataProgress(node, (int)parentStorageId, isFirstNode); } } catch (Exception ex) { LogServer.AddLogText("添加冷链数据上报进度失败,但未影响该节点上报:" + ex.Message, node.BaseId); } } }
///// <summary> ///// 查询运单以前是否存在节点信息,没有超过一个月的节点信息保存到节点表中,超过时间的节点信息删除。 ///// </summary> ///// <param name="waybillList"></param> ///// <returns></returns> //public static int GetNode(List<Model_Waybill_Base> waybillList) //{ // int result = 0; // try // { // //是否存在运单信息 // List<Model_Waybill_Base> numberList = GetExistWaybills(waybillList.Select(l => l.Number).Distinct().ToList()); // foreach (Model_Waybill_Base item in waybillList) // { // //查询unnecessary_node是否存在节点信息 // string sql = string.Format("select * from unnecessary_node where baseId='{0}' ;", item.Number); // List<Model_Waybill_Node> waybillnode = _SqlHelp.ExecuteObjects<Model_Waybill_Node>(sql); // if (waybillnode.Count != 0) // { // //获取id // int baseId = numberList.Find(l => l.Number == item.Number).Id; // foreach (Model_Waybill_Node node in waybillnode) // { // //节点信息超过一个月就删除 // if (node.operateAt.AddMonths(1) > item.BeginAt) // { // sql = string.Format("insert into waybill_node (baseId,operateAt,storageId,storageName,content,arrived) values('{0}','{1}','{2}','{3}','{4}','{5}') ;", // baseId, node.operateAt, node.StorageId, node.StorageName, node.Content, (int)node.Arrived); // result = _SqlHelp.ExecuteNonQuery(sql); // //添加成功后删除节点 // if (result > 0) // { // sql = string.Format("delete from unnecessary_node where id={0} ", node.Id); // _SqlHelp.ExecuteNonQuery(sql); // } // } // else // { // sql = string.Format("delete from unnecessary_node where id={0} ", node.Id); // _SqlHelp.ExecuteNonQuery(sql); // } // } // } // } // } // catch (Exception ex) // { // throw ex; // } // return result; //} /// <summary> /// 上传图片,插入签收拍照信息 /// </summary> /// <param name="postback">签收拍照信息</param> /// <param name="postbackTime">签收拍照时间</param> /// <param name="picList">图片列表</param> /// <returns></returns> public static bool UploadWaybill_Postbacks(Model_Waybill_Postback_Pic postback, DateTime postbackTime, List <object> picList, int customerId = 0) { LogServer.AddLogText(string.Format("开始进入保存图片逻辑{0},DateTime:{1}", postback.BaseId, postbackTime), postback.BaseId); bool result = false; int picIndex = 0;//成功上传的图片数量 if (picList.Count == 0) { LogServer.AddLogText(string.Format("图片列表{0}", picList.Count), postback.BaseId); return(false); } if (string.IsNullOrEmpty(postback.PicName)) { LogServer.AddLogText(string.Format("图片名称{0}", postback.PicName), postback.BaseId); return(false); } string[] picNameArr = postback.PicName.Split('|'); if (picNameArr.Length != picList.Count) { LogServer.AddLogText(string.Format("picNameArr:{0},picList:{1}", picNameArr.Length, picList.Count), postback.BaseId); return(false); } //配置文件中的路径 string filePath = string.Empty; string tempPath = System.Configuration.ConfigurationManager.AppSettings["PostbackPath"]; if (string.IsNullOrEmpty(tempPath)) { LogServer.AddLogText(string.Format("配置文件路径:{0}", tempPath), postback.BaseId); return(false); } string timePath = DateTime.Now.ToString("yyyyMM"); filePath = tempPath + "\\" + timePath; try { string sql = string.Empty; string number = postback.BaseId;//PDA传过来的BaseId就是运单号 //Customer=0为自运单,否则为第三方运单 if (customerId != 0) { //第三方运单需要查询关系表获取转换后的运单号 sql = "select number from huadong_tmsorder_waybillbase where relationid='" + number + "' and customerId=" + customerId; number = _SqlHelp.ExecuteScalar <string>(sql); LogServer.AddLogText(string.Format("查询关联表,huadong_tmsorder_waybillbase:{0},结果:{1}", sql, number), postback.BaseId); if (string.IsNullOrEmpty(number)) { string remark = "运单[" + (string.IsNullOrEmpty(number) ? postback.BaseId : number) + "]不存在"; remark += "传入的CustomerId=" + customerId; if (!System.IO.Directory.Exists(filePath)) { System.IO.Directory.CreateDirectory(filePath); } StringBuilder pic = new StringBuilder("insert into temporarypictures(baseId,operateAt,PicName,remarks,inserttime) values "); for (int i = 0; i < picList.Count; i++) { string fileName = postback.BaseId + "_" + System.IO.Path.GetFileName(postback.PicName.Split('|')[i]); MyTool.SaveImage(MyTool.GetGzipPicBytes(picList[i] as byte[]), filePath + "\\" + fileName); pic.AppendFormat("('{0}', '{1}', '{2}', '{3}', '{4}'),", postback.BaseId, postbackTime.ToString("yyyy-MM-dd HH:mm:ss"), timePath + "/" + fileName, remark, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); //picIndex++; } pic.Length -= 1; List <string> sqlpicList = new List <string>(); sqlpicList.Add(pic.ToString()); bool pictures = _SqlHelp.ExecuteTranstration(sqlpicList); LogServer.AddLogText(string.Format("sql:{0},结果:{1}", sql, pictures), postback.BaseId); return(true); } } Model_Waybill_Base waybillBase = null;//根据运单号获取到BaseId sql = "select * from waybill_base where number = '" + number + "' order by id desc limit 1"; waybillBase = _SqlHelp.ExecuteObject <Model_Waybill_Base>(sql); if (waybillBase == null) { string remark = "运单[" + (string.IsNullOrEmpty(number) ? postback.BaseId : number) + "]不存在"; remark += "传入的CustomerId=" + customerId; if (!System.IO.Directory.Exists(filePath)) { System.IO.Directory.CreateDirectory(filePath); } StringBuilder pic = new StringBuilder("insert into temporarypictures(baseId,operateAt,PicName,remarks,inserttime) values "); for (int i = 0; i < picList.Count; i++) { string fileName = postback.BaseId + "_" + System.IO.Path.GetFileName(postback.PicName.Split('|')[i]); MyTool.SaveImage(MyTool.GetGzipPicBytes(picList[i] as byte[]), filePath + "\\" + fileName); pic.AppendFormat("('{0}', '{1}', '{2}', '{3}', '{4}'),", postback.BaseId, postbackTime.ToString("yyyy-MM-dd HH:mm:ss"), timePath + "/" + fileName, remark, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); //picIndex++; } pic.Length -= 1; List <string> sqlpicList = new List <string>(); sqlpicList.Add(pic.ToString()); bool pictures = _SqlHelp.ExecuteTranstration(sqlpicList); LogServer.AddLogText(string.Format("查询运单,waybill_base:{0},结果:{1}", sql, waybillBase == null ? "未查询到信息" : waybillBase.Number), postback.BaseId); return(true);//运单还未上传,无法上传签收图片 } //List<Model_Waybill_Base> numberList = GetExistWaybills(new List<string> { postback.BaseId }).Distinct().ToList(); //if (numberList.Count == 0) // return true;//运单还未上传,无法上传签收图片 if (!System.IO.Directory.Exists(filePath)) { System.IO.Directory.CreateDirectory(filePath); } StringBuilder sb = new StringBuilder("insert into waybill_postback_pic (baseId,picName) values "); for (int i = 0; i < picList.Count; i++) { string fileName = postback.BaseId + "_" + System.IO.Path.GetFileName(postback.PicName.Split('|')[i]); MyTool.SaveImage(MyTool.GetGzipPicBytes(picList[i] as byte[]), filePath + "\\" + fileName); sb.AppendFormat("('{0}','{1}'),", waybillBase.Id, timePath + "/" + fileName); picIndex++; } sb.Length -= 1; List <string> sqlList = new List <string>(); sqlList.Add(sb.ToString()); sqlList.Add(string.Format("update waybill_base set picPostbackAt='{0}' where number='{1}'", postbackTime.ToString("yyyy-MM-dd HH:mm:ss"), waybillBase.Number)); result = _SqlHelp.ExecuteTranstration(sqlList); foreach (string item in sqlList) { LogServer.AddLogText(string.Format("sql:{0}", item), postback.BaseId); } LogServer.AddLogText(string.Format("保存结果:{0}", result), postback.BaseId); } catch (Exception ex) { LogServer.AddLogText("保存图片失败:" + ex.Message, postback.BaseId); throw ex; } finally { if (result == false && picIndex > 0) { //失败时删除图片 for (int i = picIndex; i > 0; i--) { string fileName = postback.BaseId + "_" + System.IO.Path.GetFileName(postback.PicName.Split('|')[i - 1]); System.IO.File.Delete(filePath + "\\" + fileName); LogServer.AddLogText(string.Format("失败时删除图片,路径:{0}", filePath + "\\" + fileName), postback.BaseId); } } } return(result); }