using Dapper; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Web; using VueWebApi.Models; using VueWebApi.Tools; namespace VueWebApi.DLL.DAL { public class AppPurchManagementDAL { public static DataTable dt; //定义全局变量dt public static bool res; //定义全局变量dt public static ToMessage mes = new ToMessage(); //定义全局返回信息对象 public static string strProcName = ""; //定义全局sql变量 public static List listStr = new List(); //定义全局参数集合 public static SqlParameter[] parameters; //定义全局SqlParameter参数数组 #region[采购到货:获取采购订单列表] public static ToMessage MesAppPurchOrderSearch(string purchordercode) { string sql = ""; string search = ""; var dynamicParams = new DynamicParameters(); try { if (purchordercode != "" && purchordercode != null) //订单号不为空 { search += " and A.ordercode like '%'+@purchordercode+'%' "; //dynamicParams.Add("@purchordercode", purchordercode); } //查询未关闭且未全部到货的采购订单 sql = @"select distinct A.ordercode from T_PurchaseOrder A inner join T_PurchaseOrder_sub B on A.ordercode=B.purchaseorder_code where B.countarrivalquantity 0) { mes.code = "200"; mes.Message = "查询成功!"; mes.data = data; } else { mes.code = "300"; mes.Message = "无订单数据!"; mes.data = null; } } catch (Exception e) { mes.code = "300"; mes.count = 0; mes.Message = e.Message; mes.data = null; } return mes; } #endregion #region[采购到货:选择采购订单获取物料信息] public static ToMessage MesAppPurchOrderPartSearch(string purchordercode) { string sql = ""; var dynamicParams = new DynamicParameters(); try { //根据采购订单号查询物料信息,供应商信息 sql = @"select B.rownumber, B.materiel_code as partcode,M.partname,M.partspec,M.is_batchno,M.is_incheck, B.quantity,B.customercode,C.name as customername,A.departmentcode,T.org_name as departmentname,U.code as uomcode,U.name as uomname, A.ordercode,B.countarrivalquantity,A.acceptdate from T_PurchaseOrder A inner join T_PurchaseOrder_sub B on A.ordercode=B.purchaseorder_code left join TMateriel_Info M on B.materiel_code=M.partcode left join TUom U on M.uom_code=U.code left join TCustomer C on B.customercode=C.code left join TOrganization T on A.departmentcode=T.org_code where A.ordercode=@purchordercode"; dynamicParams.Add("@purchordercode", purchordercode); var data = DapperHelper.selectdata(sql, dynamicParams); if (data.Rows.Count > 0) { mes.code = "200"; mes.Message = "查询成功!"; mes.data = data; } else { mes.code = "300"; mes.Message = "暂无物料数据!"; mes.data = null; } } catch (Exception e) { mes.code = "300"; mes.count = 0; mes.Message = e.Message; mes.data = null; } return mes; } #endregion #region[采购到货:生成系统条码] public static ToMessage MesAppPurchOrderLabelBarCode(string partcode, string arrivalqty, string onelableqty) { mes = AppLableBarCode.EncodingSeach("2060", partcode, arrivalqty, onelableqty); return mes; } #endregion #region[采购到货:提交] public static ToMessage MesAppPurchOrderSave(string purordercode, string orderstaus, string username, List json) { var sql = ""; string djwo = "", numvalue = ""; List list = new List(); var dynamicParams = new DynamicParameters(); try { list.Clear(); mes = SeachEncode.EncodingSeach("2060"); //APP端采购到货生成单号 if (mes.code == "300") { return mes; } else { List wo = (List)mes.data; djwo = wo[0].ToString(); //获取单号 numvalue = wo[1].ToString(); //获取流水号 } if (json == null || json.Count <= 0) { mes.code = "300"; mes.count = 0; mes.Message = "物料信息不能为空!"; mes.data = null; return mes; } //Lambda表达式过滤获取预计到货日期、部门、供应商 string hacceptdate = json.Select(p => p.hacceptdate).ToList().Distinct().ToString(); //预计到货日期 string dpartment = json.Select(p => p.hdepartmentcode).ToList().Distinct().ToString(); //部门 string customercode = json.Select(p => p.hcustomercode).ToList().Distinct().ToString(); //供应商 //写入采购到货单主表 sql = @"insert into T_PurchaseArrivalOrder(hbillno,hdate,hacceptdate,hbillstaus,hdepartmentcode,hcustomercode,hsourcebillno,lm_user,lm_date) values(@hbillno,@hdate,@hacceptdate,@hbillstaus,@hdepartmentcode,@hcustomercode,@hsourcebillno,@lm_user,@lm_date)"; list.Add(new { str = sql, parm = new { hbillno = djwo, hdate = DateTime.Now.ToString(), hacceptdate = Convert.ToDateTime(hacceptdate), hbillstaus = orderstaus, hdepartmentcode = dpartment, hcustomercode = customercode, hsourcebillno = purordercode, lm_user = username, lm_date = DateTime.Now.ToString() } }); //循环获取物信息 for (int i = 0; i < json.Count; i++) { //写入采购到货单子表 sql = @"insert into T_PurchaseArrivalOrder_sub(hbillno,hpartcode,hplanqty,hqty,hacceptdate,hischeck,hbatchno) values(@hbillno,@hpartcode,@hplanqty,@hqty,@hacceptdate,@hischeck,@hbatchno)"; list.Add(new { str = sql, parm = new { hbillno = djwo, hpartcode = json[i].hpartcode, hplanqty = decimal.Parse(json[i].hplanqty), hqty = decimal.Parse(json[i].hqty), hacceptdate = Convert.ToDateTime(hacceptdate), hischeck = json[i].hischeck, hbatchno = json[i].hbatchno } }); //循环获取物料生成标签信息 for (int j = 0; j < json[i].children.Count; j++) { //写入条码档案表 sql = @"insert into T_BarCodeBill(rightcode,hbillno,hbilltype,hbarcode,hbarcodestatus,hbarcodetype,hmaterialcode,hqty,hbatchno,hcustomercode,hdeptcode,hsourcebillno,hsourcebilltype,barcodeposition,lm_user,lm_date) values(@rightcode,hbillno,@hbilltype,@hbarcode,@hbarcodestatus,@hbarcodetype,@hmaterialcode,@hqty,@hbatchno,@hcustomercode,@hdeptcode,@hsourcebillno,@hsourcebilltype,@barcodeposition,@lm_user,@lm_date)"; list.Add(new { str = sql, parm = new { rightcode = "2060", hbillno = djwo, hbilltype = "1103", //采购到货单类型 hbarcode = json[i].children[j].labcode, hbarcodestatus = "Y", hbarcodetype = "P", hmaterialcode = json[i].children[j].partnumber, hqty = decimal.Parse(json[i].children[j].labqty), hbatchno = json[i].hbatchno, hcustomercode = customercode, hdeptcode = dpartment, hsourcebillno = purordercode, hsourcebilltype = "1102", barcodeposition="2060;采购到货", lm_user = username, lm_date = DateTime.Now.ToString() } }); } //更新采购订单子表:累计到货数量 sql = @"update T_PurchaseOrder_sub set countarrivalquantity=countarrivalquantity+@hqty where ordercode=@purordercode and materiel_code=@materiel_code and rownumber=@rownumber"; list.Add(new { str = sql, parm = new { purordercode = purordercode, materiel_code = json[i].hpartcode, rownumber=json[i].rownumber, hqty=decimal.Parse(json[i].hqty) } }); } //更新采购订单主表:订单状态 sql = @"update T_PurchaseOrder set status=@status where ordercode=@purordercode"; list.Add(new { str = sql, parm = new { status = orderstaus, ordercode = purordercode } }); bool aa = DapperHelper.DoTransaction(list); if (aa) { mes.code = "200"; mes.count = 0; mes.Message = "采购到货成功!"; mes.data = null; } else { mes.code = "300"; mes.count = 0; mes.Message = "采购到货失败!"; mes.data = null; } } catch (Exception e) { mes.code = "300"; mes.count = 0; mes.Message = e.Message; mes.data = null; } return mes; } #endregion } }