前端页面
@{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title></title> </head> <body> <div> @using (Html.BeginForm("SinglePrintOrder", "Order", FormMethod.Post)) {<div>@Html.TextBox("id")<input type="submit" value="提交" /></div>} </div> </body> </html>
后端逻辑
public ActionResult SinglePrintOrder(int id) { using (var entity = new YXXEntities()) { var order = entity.TOrder.FirstOrDefault(p => p.POrderId == id); try { var sb=new StringBuilder(); if (order == null) { return Json(new {ok = false, msg = "订单无效!"}); } //获得与之匹配的FSN和FKey的那条数据 var printSets = entity.TPrintSet.Where(p => p.FType == 2 && //云端配置 p.FState == 1);//&& p.KStoreId == order.KStoreId); if (!printSets.Any()) { return Json(new { ok = false, msg = "查找不到打印配置!" }); } #region 单个查询 //这个是商品详情 //var singleProduct = (from od in entity.TOrderDetail // //匹配打印规格 // join ps in entity.TProductSpec on od.KProductSpecId equals ps.PProductSpecId//检验打印OrderDetail的外键的和他的规格相对应TProductSpec的主键是否相等 // join p in entity.TProduct on ps.KProductId equals p.PProductId // //检查是否被打印,并且od.KOrderId==传进来的id // where (od.FIsPrint != true || !od.FIsPrint.Value) && od.KOrderId == id // select new { p.KPrintSetId, ps.FSpecName, ps.FSpecName2, ps.FSpecName3, ps.FPrice, p.FName, od.FCount, ps.KProductId }).ToList(); var singleProduct = entity.TProduct.Join( entity.TProductSpec, p => p.PProductId, ps => ps.PProductSpecId, (p, ps) => new { p.KPrintSetId, p.FName, ps.FSpecName, ps.FSpecName2, ps.FSpecName3, ps.FPrice, ps.KProductId }); #endregion //#region 多个查询 //var products = (from od in entity.TOrderDetail // //每次点单数据库就会增加一个OrderDetail,查出这条OrderDetail // join ps in entity.TProductSpec on od.KProductSpecId equals ps.PProductSpecId // //检验打印OrderDetail的外键的和他的规格相对应TProductSpec的主键是否相等 // join p in entity.TProduct on ps.KProductId equals p.PProductId // //todo:如果说打印有问题,那么就是这里 // //todo:连接TProduct表检查打印规格表TProductSpec的外键KProductId和这个打印产品的主键是否相等 // where (od.FIsPrint != true || !od.FIsPrint.Value) && od.KOrderId == order.POrderId // //检查order表里的主键和OrderDetail是否相等 // select new { p.KPrintSetId, ps.FSpecName, ps.FSpecName2, ps.FSpecName3, ps.FPrice, p.FName, od.FCount, ps.KProductId }).ToList(); //#endregion var storeName = entity.TStore.Single(p => p.PStoreId == id).FName; var regionTable = entity.TRegionTable.SingleOrDefault(p => p.PRegionTableId == order.KRegionTableId); var userAddress = entity.TUserAddress.SingleOrDefault(p => p.PUserAddressId == order.KUserAddressId); //遍历打印机 foreach (var printSet in printSets) { sb.Append($"<CB>{storeName}</CB><BR>"); if (order.FSort != null) { sb.Append($"<CB>序号:{order.FSort}</CB><BR>"); } if (regionTable != null) { sb.Append($"<CB>{regionTable.FName}</CB><BR>"); } if (printSet.FSpec == 1)//打印纸张 80规格 { sb.Append("名称 数量 单价<BR>"); sb.Append("--------------------------------------------<BR>"); } else { sb.Append("名称 数量 单价<BR>"); sb.Append("------------------------------<BR>"); } var productPrintSet = entity.TProductPrintSet.Where(p => p.KPrintSetId == printSet.PPrintSetId).Select(p => p.KProductId); //var pros = singleProduct.Where(p => productPrintSet.Contains(p.KProductId)).ToList(); var pro = singleProduct.FirstOrDefault(p => p.KProductId == id); //foreach (var pro in pros) //{ sb.Append(pro.FName + "[" + pro.FSpecName); if (!String.IsNullOrWhiteSpace(pro.FSpecName2)) { sb.Append(" " + pro.FSpecName2); } if (!String.IsNullOrWhiteSpace(pro.FSpecName3)) { sb.Append(" " + pro.FSpecName3); } sb.Append("]<BR>"); if (printSet.FSpec == 1) { //sb.Append($"<RIGHT>{pro.FPrice} {pro.FCount} {pro.FPrice * pro.FCount} </RIGHT> <BR>"); sb.Append($"<RIGHT> 1 {pro.FPrice} </RIGHT> <BR>"); } else { //sb.Append($"<RIGHT>{pro.FPrice} {pro.FCount} {pro.FPrice * pro.FCount} </RIGHT> <BR>"); sb.Append($"<RIGHT> 1 {pro.FPrice} </RIGHT> <BR>"); } //} if (printSet.FSpec == 1) { sb.Append("--------------------------------------------<BR>"); } else { sb.Append("-----------------------------<BR>"); } //sb.Append($"合计:{pros.Sum(p => p.FCount * p.FPrice)}<BR>"); sb.Append($"备注:{order.FRemark}<BR>"); if (userAddress != null) { sb.Append($"送货地址:{userAddress.FProvince}{userAddress.FCity}{userAddress.FRegion}{userAddress.FAddress}<BR>"); sb.Append($"联系电话:{userAddress.FPhone}<BR>"); sb.Append($"收货人:{userAddress.FReceiveName}<BR>"); } sb.Append($"时间:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}<BR>"); sb.Append($"订单号:{order.FOrderNo}<BR>"); if (pro != null )//&& pro.Any()) { LogHelper.WriteError(typeof(UserInfo), "打印产品" + pro + "\n"); PrintAPI.PrintContent(printSet.FSN, sb.ToString()); var sbtest = sb.ToString(); } sb.Clear(); } var orderDetail = entity.TOrderDetail.Where(p => p.KOrderId == id).ToList(); orderDetail.ForEach(p => p.FIsPrint = true); orderDetail.ForEach(p => entity.Entry(p).State = System.Data.Entity.EntityState.Modified); entity.SaveChanges(); order.FIsPrint = true; entity.Entry(order).State = System.Data.Entity.EntityState.Modified; return Json(new { ok = true, msg = "打印成功!" }); } catch (Exception e) { LogHelper.WriteError(typeof(UserInfo), "打印出错" + e.Message + "\n" + e.StackTrace); return Json(new { ok = false, msg = "打印出错!" }); } } } public ActionResult TestSinglePrintOrder() { return View(); }
浙公网安备 33010602011771号