ASP.NET MVC WebAPI 上传图片实例与实战计算BOM成本的存储过程

ASP.NET MVC WebAPI 上传图片实例
[HttpPost] 
  public Task<Hashtable> ImgUpload() 
  { 
      // 检查是否是 multipart/form-data 
      if (!Request.Content.IsMimeMultipartContent("form-data")) 
          throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); 
      //文件保存目录路径 
      string SaveTempPath = "~/SayPlaces/" + "/SayPic/SayPicTemp/"; 
      String dirTempPath = HttpContext.Current.Server.MapPath(SaveTempPath); 
     // 设置上传目录 
     var provider = new MultipartFormDataStreamProvider(dirTempPath); 
     //var queryp = Request.GetQueryNameValuePairs();//获得查询字符串的键值集合 
     var task = Request.Content.ReadAsMultipartAsync(provider). 
         ContinueWith<Hashtable>(o => 
         { 
             Hashtable hash = new Hashtable(); 
             hash["error"] = 1; 
             hash["errmsg"] = "上传出错"; 
             var file = provider.FileData[0];//provider.FormData 
             string orfilename = file.Headers.ContentDisposition.FileName.TrimStart('"').TrimEnd('"'); 
             FileInfo fileinfo = new FileInfo(file.LocalFileName);                     
             //最大文件大小 
             int maxSize = 10000000; 
             if (fileinfo.Length <= 0) 
             { 
                 hash["error"] = 1; 
                 hash["errmsg"] = "请选择上传文件。"; 
             } 
             else if (fileinfo.Length > maxSize) 
             { 
                 hash["error"] = 1; 
                 hash["errmsg"] = "上传文件大小超过限制。"; 
             } 
             else
             { 
                 string fileExt = orfilename.Substring(orfilename.LastIndexOf('.')); 
                 //定义允许上传的文件扩展名 
                 String fileTypes = "gif,jpg,jpeg,png,bmp"; 
                 if (String.IsNullOrEmpty(fileExt) || Array.IndexOf(fileTypes.Split(','), fileExt.Substring(1).ToLower()) == -1) 
                 { 
                     hash["error"] = 1; 
                     hash["errmsg"] = "上传文件扩展名是不允许的扩展名。"; 
                 } 
                 else
                 { 
                     String ymd = DateTime.Now.ToString("yyyyMMdd", System.Globalization.DateTimeFormatInfo.InvariantInfo); 
                     String newFileName = DateTime.Now.ToString("yyyyMMddHHmmss_ffff", System.Globalization.DateTimeFormatInfo.InvariantInfo); 
                     fileinfo.CopyTo(Path.Combine(dirTempPath, newFileName + fileExt), true); 
                     fileinfo.Delete(); 
                     hash["error"] = 0; 
                     hash["errmsg"] = "上传成功"; 
                 } 
             } 
             return hash; 
         }); 
     return task; 
 } 
实战计算BOM成本的存储过程
 
USE [TD_ManagerInfo]
   GO
   /****** 对象:  StoredProcedure [dbo].[pro_GetBOMList]    脚本日期: 06/20/2013 20:55:43 ******/
   SET ANSI_NULLS ON
   GO
   SET QUOTED_IDENTIFIER ON
   GO
   
  -- =============================================
  -- Author:  JOY
  -- Create date: 2013-6-6
  -- Description: 根据品号查询所有BOM清单
  -- =============================================
  ALTER PROCEDURE [dbo].[pro_GetBOMList]
   -- 存储过程参数
   @PROID varchar(100)
  AS
  BEGIN
  
      --检查临时表
      If object_id('tempdb..##BOMINFO') is not null Drop Table ##BOMINFO
  
      --创建临时表
      Create table ##BOMINFO
      (
             BOM_NO varchar(100) not null,    --BOM号
             PRD_NO varchar(100) PRIMARY KEY, --品号
             PRDNAME varchar(100),            --品名
          MIN_PURCHASE INT default(0),     --最小采购量
             PRICE [numeric](18,5) default(0),           --单价
             PRICESubtotal [numeric](18,5) default(0),   --单个部品金额 采购量*单价
             SUP_COUNT INT default(0),        --供应商/家
             ID_NO varchar(100),              --子件ID
             LAYER INT,
      )
  
      --递归读取BOM表(With前面有语句需要用分好隔开)
      ;With TBOM as 
   ( 
    Select BOM_NO,PRD_NO,[NAME],ID_NO,QTY from DB_TD02.DB_TD02.dbo.TF_BOM WHERE BOM_NO '" target="_blank">=@PROID+'->'
    UNION ALL
    Select B.BOM_NO,B.PRD_NO,B.NAME,B.ID_NO,B.QTY from TBOM
    inner join DB_TD02.DB_TD02.dbo.TF_BOM B on TBOM.ID_NO=B.BOM_NO
   )
  
   --Select * from TBOM (测试数据)
      --根据型号查询BOM记录复制到临时表(层级)
      Insert into ##BOMINFO(BOM_NO,PRD_NO,PRDNAME,ID_NO) Select B.BOM_NO,B.PRD_NO,B.NAME,B.ID_NO from TBOM B
  
  
      -----------------------------------------------------------------------------------------------------
      -------------------------------游标执行对递归后TBOM的其他计算处理-------------------------------------
      -----------------------------------------------------------------------------------------------------
      --申明变量(用户游标复制操作)
      declare @PRD_NO varchar(100)
      declare @PRDNAME varchar(100)
      declare @BomCusCount int       --货品对应供应商总数
      declare @PRICE numeric(18,8)   --部品单价
      declare @MIN_PURCHASE int      --最小采购量
      declare @Layer int --层级
      declare @KND varchar(1)   --大类代号
      declare @IDX1 varchar(10) --中类代号(包装类、喷油件、电镀件...)
      declare @SUP1 varchar(12) --主供应商
      declare @MAXDAYS numeric(18,8) --最长前置期
      declare @MAXDAYSVALUE numeric(18,8) --存放最终前置值
      Select @MAXDAYSVALUE=0 --初始化最长前置期
      Select @MAXDAYS=0      --初始化最长前置期
  
      --声明一个游标cur_BOMINFO,select语句中参数的个数必须要和从游标取出的变量名相同
      declare cur_BOMINFO cursor for select PRD_NO from ##BOMINFO
      --打开游标
      Open cur_BOMINFO
      --读取游标 一条记录插入变量
      Fetch next from cur_BOMINFO into @PRD_NO
      While(@@fetch_status = 0)
    Begin
     --根据品号查找对应供应商个数
              Select @BomCusCount=COUNT(C.CUS_NO) from DB_TD02.DB_TD02.dbo.PRDT_CUS C WHERE C.PRD_NO =@PRD_NO
             
              --修改前Select top 1 @KND=KND,@IDX1=IDX1,@SUP1=SUP1 from DB_TD02.DB_TD02.dbo.PRDT P WHERE P.PRD_NO =@PRD_NO
              
              --根据品号供应商信息更新
              Update ##BOMINFO set SUP_COUNT=SUP_COUNT+@BomCusCount where PRD_NO=@PRD_NO
               
              --查找货品查找单价
              Select top 1 @PRICE=isnull(UP_DEF.UP,0.0000) from DB_TD02.DB_TD02.dbo.UP_DEF UP_DEF WHERE PRD_NO=@PRD_NO
              --根据品号查找单价信息更新
              Update ##BOMINFO set PRICE=@PRICE where PRD_NO=@PRD_NO
  
              --根据品号查找最小采购量
              Select @MIN_PURCHASE=isnull(QTY_MIN,0),@MAXDAYS=NEED_DAYS from DB_TD02.DB_TD02.dbo.PRDT WHERE PRD_NO=@PRD_NO
              --根据品号查找最先采购量信息更新
              Update ##BOMINFO set MIN_PURCHASE=@MIN_PURCHASE where PRD_NO=@PRD_NO
              
              --判断最长前置期
              IF @MAXDAYS>@MAXDAYSVALUE
                begin
                  Set  @MAXDAYSVALUE=@MAXDAYSVALUE
                 end
 
             --继续....
    Fetch next from cur_BOMINFO into @PRD_NO
   End
     --关闭游标
  Close cur_BOMINFO
     --删除游标
  Deallocate cur_BOMINFO
 
     --查询结果
     --print @MAXDAYSVALUE
     --Select * from ##BOMINFO
 
 END
原文地址: http://www.cnblogs.com/iplaycode
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值