using Dapper; using Estsh.Core.Base; using Estsh.Core.Models; using Estsh.Core.Repository.IRepositories; using Estsh.Core.Services.IServices; using Estsh.Core.Util; using System.Collections; using System.Data; /*************************************************************************************************** * * 更新人:sitong.dong * 描述:SAP指令导入模块业务类 * 修改时间:2022.06.22 * 修改日志:系统迭代升级 * **************************************************************************************************/ namespace Estsh.Core.Services { /// /// SAP指令导入模块业务类 /// public class SAPOrderImportService : BaseService, ISAPOrderImportService { private readonly ISAPOrderImportRepository repository; public SAPOrderImportService(ISAPOrderImportRepository _repository) : base(_repository) { repository = _repository; } private Hashtable result = new Hashtable(); private const int SAPO = 10; private const int SPORADIC_OUT = 20; private const int SPORADIC_IN = 30; private const int NC_DISASSEMBLY_OUT = 40; private const int NC_DISASSEMBLY_IN = 50; private const int NC_DISCARD = 60; private const int NON_JIS_SHIPMENT = 70; private const int SUPPLIER_RETURN = 80; private const int NC_IN = 90; private const int INVENTORY = 100; private const int INVENTORY_ADJUST = 110; private const int MONTHLY_PLAN = 120; private const int ADDITIONAL_SAPO = 130;//追加采购指令 private const int DAYPLAN_SAPO = 140;//日计划采购指令 #region 公共方法 /// /// 读取采购订单文件并更新至数据库 /// /// 文件全路径 /// 登录用户信息 public Hashtable ReadExcelFile(Stream inputStream, int orderType, int userId) { DataTable dt; //采购计划导入--自动生成订单号版本(启用此段代码) if (orderType == SAPO || orderType == ADDITIONAL_SAPO || orderType == DAYPLAN_SAPO) { dt = AsposeExcelTools.ExcelFileToDataTable(inputStream); } else if (orderType == MONTHLY_PLAN) { dt = AsposeExcelTools.ExcelFileToDataTable(inputStream); } else { dt = AsposeExcelTools.ExcelFileToDataTable(inputStream, true); } //dt = AsposeExcelTools.ExcelFileToDataTable(inputStream, true); if (dt == null || dt.Rows.Count <= 0) { result.Add("message", "Excel数据为空!"); result.Add("flag", "error"); } else { try { switch (orderType) { case SAPO: case ADDITIONAL_SAPO: //采购计划导入--自动生成订单号版本(启用此段代码) if (CheckSAPOInput(dt, orderType)) { ImportSAPOData(dt, userId, orderType); } //采购计划导入 //ImportSapDspoData(dt); break; case MONTHLY_PLAN: //月计划 if (CheckSAPOInput(dt, orderType)) { ImportMonthlyPlanData(dt, userId); } break; case DAYPLAN_SAPO: //日计划 if (CheckDayPlanSAPOInput(dt, orderType)) { DayPlanImportSAPOData(dt, userId, orderType); } break; case SPORADIC_OUT: case SPORADIC_IN: case NC_DISASSEMBLY_OUT: case NC_DISASSEMBLY_IN: case NC_DISCARD: ImportSapMiscoData(dt, orderType); break; case NON_JIS_SHIPMENT: ImportSapDnData(dt); break; case SUPPLIER_RETURN: ImportSapRetoData(dt); break; case NC_IN: ImportSapMovoData(dt); break; case INVENTORY: ImportSapCycoData(dt); break; case INVENTORY_ADJUST: // break; default: // break; } } catch (Exception e) { result.Clear(); result.Add("message", e.Message); result.Add("flag", "error"); } } return result; } /// /// 判断字符串是否为日期 /// /// /// public bool IsDate(string date) { try { DateTime.Parse(date); return true; } catch { return false; } } /// /// 判断字符串是否为月数 /// /// /// public bool IsMonth(string date) { try { if (!(date.Length == 6)) { return false; } date = date.Substring(4, 2); string[] monthList = { "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12" }; if (monthList.Contains(date)) { return true; } else { return false; } } catch { return false; } } #endregion #region 采购计划导入--自动生成订单号版本 /// /// 检查待导入的数据 /// /// /// private bool CheckSAPOInput(DataTable dtCheck, int orderType) { string erpWarehouse = dtCheck.Rows[0][1].ToString().Trim(); List erpWarehouseInfo = repository.getErpWarehouseInfo(erpWarehouse); if (null == erpWarehouseInfo || erpWarehouseInfo.Count <= 0) { result.Add("message", string.Format("收货库存地{0}不存在,请确认基础数据!", erpWarehouse)); result.Add("flag", "error"); return false; } string time = dtCheck.Rows[0][3].ToString(); if (time.Length != 10) { result.Add("message", "交货时间格式不正确!"); result.Add("flag", "error"); return false; } string date = ""; int sycles = 0; if (orderType == 10 || orderType == 130) { sycles = 7; } else if (orderType == 120) { sycles = 12; } for (int i = 0; i < sycles; i++) { date = dtCheck.Rows[1][i + 5].ToString(); if (date == null || date.Equals("")) { result.Add("message", string.Format("第2行,第{0}列处交货日期不能为空!", i + 6)); result.Add("flag", "error"); return false; } if (orderType == 10 || orderType == 130) { if (!IsDate(date)) { result.Add("message", string.Format("第2行,第{0}列处交货日期不是日期格式!", i + 6)); result.Add("flag", "error"); return false; } } else if (orderType == 120) { if (!IsMonth(date)) { result.Add("message", string.Format("第2行,第{0}列处月数格式不正确!", i + 6)); result.Add("flag", "error"); return false; } } } string partNo; string vendor; List partInfo; List vendorInfo; for (int j = 2; j < dtCheck.Rows.Count; j++) { partNo = dtCheck.Rows[j][3].ToString(); vendor = dtCheck.Rows[j][1].ToString().Trim(); ////第1天 //string date1 = dtCheck.Rows[2][5].ToString().Trim(); ////第2天 //string date2 = dtCheck.Rows[2][5].ToString().Trim(); ////第3天 //string date3 = dtCheck.Rows[2][5].ToString().Trim(); ////第4天 //string date4 = dtCheck.Rows[2][5].ToString().Trim(); ////第5天 //string date5 = dtCheck.Rows[2][5].ToString().Trim(); ////第6天 //string date6 = dtCheck.Rows[2][5].ToString().Trim(); ////第7天 //string date7 = dtCheck.Rows[2][5].ToString().Trim(); partInfo = repository.getPartInfo(partNo); if (null == partInfo || partInfo.Count <= 0) { result.Add("message", string.Format("第{0}行,第{1}列,物料编码{2}不存在,请确认基础数据!", j + 1, 4, partNo)); result.Add("flag", "error"); return false; } if (string.IsNullOrEmpty(partInfo[0].DefaultBoxQty.ToString())) { result.Add("message", string.Format("第{0}行,物料{1}最小包装未维护,请确认基础数据!", j + 1, partNo)); result.Add("flag", "error"); return false; } else { if (Convert.ToInt32(partInfo[0].DefaultBoxQty) <= 0) { result.Add("message", string.Format("第{0}行,物料{1}最小包装小于等于零,请确认基础数据!", j + 1, partNo)); result.Add("flag", "error"); return false; } } vendorInfo = repository.getVendorInfo(vendor); if (null == vendorInfo || vendorInfo.Count <= 0) { result.Add("message", string.Format("第{0}行,第{1}列,供应商代码{2}不存在,请确认基础数据!", j + 1, 4, vendor)); result.Add("flag", "error"); return false; } } return true; } /// /// 检查待日计划导入的数据 /// /// /// private bool CheckDayPlanSAPOInput(DataTable dtCheck, int orderType) { string erpWarehouse = dtCheck.Rows[0][1].ToString().Trim(); List erpWarehouseInfo = repository.getErpWarehouseInfo(erpWarehouse); if (null == erpWarehouseInfo || erpWarehouseInfo.Count <= 0) { result.Add("message", string.Format("收货库存地{0}不存在,请确认基础数据!", erpWarehouse)); result.Add("flag", "error"); return false; } string time = dtCheck.Rows[0][3].ToString(); string date = ""; int sycles = 0; if (orderType == 140) { sycles = 24; } for (int i = 0; i < sycles; i++) { date = dtCheck.Rows[1][i + 5].ToString(); if (date == null || date.Equals("")) { result.Add("message", string.Format("第2行,第{0}列处交货日期不能为空!", i + 6)); result.Add("flag", "error"); return false; } } string partNo; string vendor; List partInfo; List vendorInfo; for (int j = 2; j < dtCheck.Rows.Count; j++) { partNo = dtCheck.Rows[j][3].ToString(); vendor = dtCheck.Rows[j][1].ToString().Trim(); partInfo = repository.getPartInfo(partNo); if (null == partInfo || partInfo.Count <= 0) { result.Add("message", string.Format("第{0}行,第{1}列,物料编码{2}不存在,请确认基础数据!", j + 1, 4, partNo)); result.Add("flag", "error"); return false; } if (string.IsNullOrEmpty(partInfo[0].DefaultBoxQty.ToString())) { result.Add("message", string.Format("第{0}行,物料{1}最小包装未维护,请确认基础数据!", j + 1, partNo)); result.Add("flag", "error"); return false; } else { if (Convert.ToInt32(partInfo[0].DefaultBoxQty) <= 0) { result.Add("message", string.Format("第{0}行,物料{1}最小包装小于等于零,请确认基础数据!", j + 1, partNo)); result.Add("flag", "error"); return false; } } vendorInfo = repository.getVendorInfo(vendor); if (null == vendorInfo || vendorInfo.Count <= 0) { result.Add("message", string.Format("第{0}行,第{1}列,供应商代码{2}不存在,请确认基础数据!", j + 1, 4, vendor)); result.Add("flag", "error"); return false; } } return true; } /// /// 导入采购计划 /// /// /// /// //private int ImportSAPOData(DataTable dtFile,int empId) //{ // int count = 0; // bool isNewOrderNo = true; // try // { // string erpWarehouse = dtFile.Rows[0][1].ToString(); // DataTable factoryCodeList = repository.getFactoryCode(); // string factoryCode = factoryCodeList == null || factoryCodeList.Rows.Count <= 0 ? "" : factoryCodeList.Rows[0][0].ToString(); // string time = dtFile.Rows[0][3].ToString(); // DataTable dtCopy = new DataTable(); // dtCopy = dtFile.Copy(); // dtCopy.Rows.RemoveAt(0); // dtCopy.Rows.RemoveAt(0); // DataView dv = dtCopy.DefaultView; // dv.Sort = "column2 asc"; // dtCopy = dv.ToTable(); // string vendor = ""; // string oldVendor = ""; // string partNo = ""; // string modelNo; // DataTable partDt = new DataTable(); // double qty = 0.0; // string date = ""; // string orderNo = ""; // int seq = 0; // string weekNo = ""; // weekNo = repository.GetWeekNo(); // Hashtable insertHt = new Hashtable(); // List insertList = new List(); // List sqlList = new List(); // foreach (DataRow dr1 in dtCopy.Rows) // { // vendor = dr1[1].ToString().Trim(); // partNo = dr1[3].ToString().Trim(); // modelNo = dr1[4] == null ? "" : dr1[4].ToString().Trim(); // partDt = repository.getPartInfo(partNo); // if (oldVendor.Equals("") || !oldVendor.Equals(vendor)) // { // oldVendor = vendor; // seq = 0; // } // for (int i = 0; i < 7; i++) // { // insertHt = new Hashtable(); // if (dr1[i + 5] == null || dr1[i + 5].ToString().Trim().Equals("")) // { // qty = 0.0; // } // else // { // qty = Convert.ToDouble(dr1[i + 5].ToString()); // } // if (qty > 0) // { // if (isNewOrderNo) // { // orderNo = repository.GetOrderNo(); // //isNewOrderNo = false; // } // isNewOrderNo = true; // count++; // seq++; // date = DateTime.Parse(dtFile.Rows[1][i + 5].ToString()).ToString("yyyyMMdd"); // insertHt.Add("@EBELN", orderNo); // insertHt.Add("@REVNO", "1"); // insertHt.Add("@EVRTP", seq); // insertHt.Add("@LIFNR", vendor); // insertHt.Add("@MATNR", partNo); // insertHt.Add("@MODEL_NO", modelNo); // insertHt.Add("@ZDEV_NUM", qty); // insertHt.Add("@UNIT", partDt.Rows[0]["uom"]); // insertHt.Add("@ZDATE", date); // insertHt.Add("@ZCJSJ", time); // insertHt.Add("@WERKS", factoryCode); // insertHt.Add("@LGORT", erpWarehouse); // insertHt.Add("@ZPZPS", "4"); // insertHt.Add("@ZSTAS", "N"); // insertHt.Add("@BSTRF", partDt.Rows[0]["default_box_qty"]); // insertHt.Add("@RECUSR", empId); // insertHt.Add("@WEEKNO", weekNo); // sqlList.Add(repository.InsertSAPOData()); // insertList.Add(insertHt); // } // } // } // repository.ExecuteSqlTransaction(sqlList, insertList); // result.Add("message", string.Format("导入成功,共导入{0}条数据!周计划单号为:{1}", count, weekNo)); // result.Add("flag", "OK"); // } // catch (Exception ex) // { // result.Add("message", ex.Message); // result.Add("flag", "error"); // return 0; // } // return 1; //} private int ImportSAPOData(DataTable dtFile, int empId, int orderType) { int count = 0; bool isNewOrderNo = true; try { string erpWarehouse = dtFile.Rows[0][1].ToString(); List factoryCodeList = repository.getFactoryCode(); string factoryCode = factoryCodeList == null || factoryCodeList.Count <= 0 ? "" : factoryCodeList[0].FactoryCode.ToString(); string time = dtFile.Rows[0][3].ToString(); DataTable dtCopy = new DataTable(); dtCopy = dtFile.Copy(); dtCopy.Rows.RemoveAt(0); dtCopy.Rows.RemoveAt(0); DataView dv = dtCopy.DefaultView; dv.Sort = "column2 asc"; dtCopy = dv.ToTable(); string vendor = ""; string oldVendor = ""; string partNo = ""; string modelNo; List partDt = new List(); double qty = 0.0; string date = ""; string orderNo = ""; int seq = 0; string weekNo = ""; weekNo = repository.GetWeekNo(); DynamicParameters insertHt = new DynamicParameters(); List insertList = new List(); List sqlList = new List(); //foreach (DataRow dr1 in dtCopy.Rows) //{ ArrayList al = new ArrayList(); for (int j = 0; j < dtCopy.Rows.Count; j++) { string ifRepeat = dtCopy.Rows[j]["column2"].ToString(); if (!al.Contains(ifRepeat)) { al.Add(ifRepeat); } } for (int z = 0; z < al.Count; z++) { DataRow[] drRepeat = null; insertList = new List(); sqlList = new List(); drRepeat = dtCopy.Select("column2='" + al[z].ToString() + "'"); for (int i = 0; i < 7; i++) { if (isNewOrderNo) { orderNo = repository.GetOrderNo(); isNewOrderNo = false; } for (int x = 0; x < drRepeat.Length; x++) { vendor = drRepeat[x]["column2"].ToString().Trim(); partNo = drRepeat[x]["column4"].ToString().Trim(); modelNo = drRepeat[x]["column5"] == null ? "" : drRepeat[x]["column5"].ToString().Trim(); partDt = repository.getPartInfo(partNo); if (oldVendor.Equals("") || !oldVendor.Equals(vendor)) { oldVendor = vendor; seq = 0; } insertHt = new DynamicParameters(); if (drRepeat[x]["column" + (i + 6).ToString()].ToString().Trim() == null || drRepeat[x]["column" + (i + 6).ToString()].ToString().Trim().Equals("")) { qty = 0.0; } else { qty = Convert.ToDouble(drRepeat[x]["column" + (i + 6).ToString()].ToString().Trim()); } if (qty > 0) { isNewOrderNo = true; count++; seq++; date = DateTime.Parse(dtFile.Rows[1][i + 5].ToString()).ToString("yyyyMMdd"); if (orderType != 130) { List dtDSPO = repository.IfZDATE(date, vendor, time); if (dtDSPO.Count > 0) { string STAFLG = dtDSPO[0].Staflg.ToString(); if (STAFLG != " ") { result.Add("message", "订单已发布,不允许修改,请联系供应商!"); result.Add("flag", "error"); return 0; } repository.delDSPO(date, vendor); } } insertHt.Add("@EBELN", orderNo); insertHt.Add("@REVNO", "1"); insertHt.Add("@EVRTP", seq); insertHt.Add("@LIFNR", vendor); insertHt.Add("@MATNR", partNo); //insertHt.Add("@MODEL_NO", modelNo); insertHt.Add("@ZDEV_NUM", qty); insertHt.Add("@UNIT", partDt[0].Unit); insertHt.Add("@ZDATE", date); insertHt.Add("@ZCJSJ", time); insertHt.Add("@WERKS", factoryCode); insertHt.Add("@LGORT", erpWarehouse); insertHt.Add("@ZPZPS", "4"); insertHt.Add("@ZSTAS", "N"); insertHt.Add("@BSTRF", partDt[0].DefaultBoxQty); insertHt.Add("@RECUSR", empId); insertHt.Add("@WEEKNO", weekNo); sqlList.Add(repository.InsertSAPOData()); insertList.Add(insertHt); } } isNewOrderNo = true; } string msg = ""; bool bl = repository.ExecuteSqlTransaction(sqlList, insertList, ref msg); if (bl == false) { result.Add("message", msg); result.Add("flag", "error"); return 0; } } if (orderType == 130) { result.Add("message", string.Format("导入成功,共导入{0}条数据!追加采购单号为:{1}", count, weekNo)); result.Add("flag", "OK"); } else { result.Add("message", string.Format("导入成功,共导入{0}条数据!周计划单号为:{1}", count, weekNo)); result.Add("flag", "OK"); } } catch (Exception ex) { result.Add("message", ex.Message); result.Add("flag", "error"); return 0; } return 1; } #endregion #region 采购计划导入 private bool ImportSapDspoData(DataTable dtCheck) { int isflag = 0; string orderNo; string lineNo; string uom; string itemStatus; string partNo; List partInfo; string vendor; List vendorInfo; string factoryCode; List factoryInfo; string erpWarehouse; List erpWarehouseInfo; string sendDate; string sendTime; List SqlStrings = new List(); for (int j = 0; j < dtCheck.Rows.Count; j++) { orderNo = dtCheck.Rows[j]["SA_PO编号"] == null ? "" : dtCheck.Rows[j]["SA_PO编号"].ToString().Trim(); lineNo = dtCheck.Rows[j]["行项目"] == null ? "" : dtCheck.Rows[j]["行项目"].ToString().Trim(); if (orderNo.Equals("") || Convert.ToDecimal(dtCheck.Rows[j]["数量"].ToString()) == 0) { result.Add("message", "第" + j.ToString() + "行编号,行号,数量,不能为空,请检查数据!"); result.Add("flag", "error"); return false; } itemStatus = dtCheck.Rows[j]["行项目状态"] == null ? "" : dtCheck.Rows[j]["行项目状态"].ToString().Trim().ToUpper(); if ("".Equals(itemStatus)) { result.Add("message", "第" + j.ToString() + "行行项目状态为空,状态只能使用 N,M, C 三个字符,请检查数据!"); result.Add("flag", "error"); return false; } if (!"NMC".Contains(itemStatus)) { result.Add("message", "行项目状态只能使用 N,M, C 三个字符,请检查数据!"); result.Add("flag", "error"); return false; } partNo = dtCheck.Rows[j]["物料编码"] == null ? "" : dtCheck.Rows[j]["物料编码"].ToString().Trim(); partInfo = repository.getPartInfo(partNo); if (null == partInfo || partInfo.Count <= 0) { result.Add("message", string.Format("物料编码{0}不存在,请确认基础数据!", partNo)); result.Add("flag", "error"); return false; } vendor = dtCheck.Rows[j]["供应商代码"] == null ? "" : dtCheck.Rows[j]["供应商代码"].ToString(); vendorInfo = repository.getVendorInfo(vendor); if (null == vendorInfo || vendorInfo.Count <= 0) { result.Add("message", string.Format("供应商代码{0}不存在,请确认基础数据!", vendor)); result.Add("flag", "error"); return false; } factoryCode = dtCheck.Rows[j]["工厂代码"] == null ? "" : dtCheck.Rows[j]["工厂代码"].ToString().Trim(); factoryInfo = repository.getFactoryInfo(factoryCode); if (null == factoryInfo || factoryInfo.Count <= 0) { result.Add("message", string.Format("工厂代码{0}不存在,请确认基础数据!", factoryCode)); result.Add("flag", "error"); return false; } erpWarehouse = dtCheck.Rows[j]["收货库存地"] == null ? "" : dtCheck.Rows[j]["收货库存地"].ToString().Trim(); erpWarehouseInfo = repository.getErpWarehouseInfo(erpWarehouse); if (null == erpWarehouseInfo || erpWarehouseInfo.Count <= 0) { result.Add("message", string.Format("收货库存地{0}不存在,请确认基础数据!", erpWarehouse)); result.Add("flag", "error"); return false; } sendDate = dtCheck.Rows[j]["计划交货日期"].ToString(); sendTime = dtCheck.Rows[j]["计划交货时间"].ToString(); if (sendDate.Length != 8) { result.Add("message", "交货日期格式不正确!"); result.Add("flag", "error"); return false; } try { DateTime date = DateTime.ParseExact(sendDate, "yyyyMMdd", null); } catch (Exception ex) { result.Add("message", string.Format("第{0}行交货日期格式不正确,要货计划导入的日期为{1},请检查!" + ex.Message, j + 1, sendDate)); result.Add("flag", "error"); return false; } if (sendTime.Length != 6) { result.Add("message", "交货时间格式不正确!"); result.Add("flag", "error"); return false; } try { DateTime dt = DateTime.ParseExact(sendTime, "HHmmss", null); } catch (Exception e) { result.Add("message", string.Format("第{0}行交货时间格式不正确,要货计划导入的时间为{1},请检查!" + e.Message, j + 1, sendTime)); result.Add("flag", "error"); return false; } uom = dtCheck.Rows[j]["计量单位"].ToString(); if (string.IsNullOrEmpty(uom)) { result.Add("message", "第" + j.ToString() + "行计量单位为空,请检查数据!"); result.Add("flag", "error"); return false; } if (!partInfo[0].Unit.ToString().Trim().Equals(uom) && !partInfo[0].Uom1.ToString().Trim().Equals(uom) && !partInfo[0].Uom2.ToString().Trim().Equals(uom) && !partInfo[0].Uom3.ToString().Trim().Equals(uom)) { result.Add("message", string.Format("物料编码{0}采购单位不存在于零件基础数据中,无法导入,请检查!", partNo)); result.Add("flag", "error"); return false; } if (!partInfo[0].Unit.ToString().Trim().Equals(uom)) { result.Add("message", string.Format("物料编码{0}采购单位与标准单位不一致,取消导入!", partNo)); result.Add("flag", "OK"); return false; } //partDefultBox = dtCheck.Rows[j]["最小包装数量"] == null ? "" : dtCheck.Rows[j]["最小包装数量"].ToString(); //if (!partInfo.Rows[0]["default_box_qty"].ToString().Trim().Equals(partDefultBox.Trim())) //{ // result.Add("message", string.Format("物料编码{0}最小包装数量与标准包装数量不一致,取消导入!", partNo)); // result.Add("flag", "OK"); // return false; //} //循环遍历Excel的编号-行号不能重复 foreach (DataRow dr1 in dtCheck.Rows) { if ((orderNo + "-" + lineNo).Equals(dr1["SA_PO编号"].ToString().Trim() + "-" + dr1["行项目"].ToString().Trim())) { isflag = isflag + 1; if (isflag > 1) { result.Add("message", string.Format("Excel里面有重复SA_PO编号-行项目:{0},无法新增!", orderNo + "-" + lineNo)); result.Add("flag", "error"); return false; } } } isflag = 0; List sapDspoInfo = repository.getSapDspoInfo(orderNo, lineNo); if (sapDspoInfo.Count > 0) { if (itemStatus.Equals("N")) { result.Add("message", string.Format("SA_PO编号-行项目:{0}已经存在,无法新增!", orderNo + "-" + lineNo)); result.Add("flag", "error"); return false; } else if (itemStatus.Equals("M") || itemStatus.Equals("C")) { //更新指令 SqlStrings.Add(repository.updateSapDspo(dtCheck.Rows[j]["SA_PO编号"].ToString().ToUpper(), dtCheck.Rows[j]["版本"].ToString(), Convert.ToInt32(dtCheck.Rows[j]["行项目"]), dtCheck.Rows[j]["供应商代码"].ToString(), dtCheck.Rows[j]["物料编码"].ToString().Trim(), dtCheck.Rows[j]["数量"].ToString(), dtCheck.Rows[j]["计量单位"].ToString(), dtCheck.Rows[j]["特殊采购标识"].ToString(), dtCheck.Rows[j]["计划交货日期"].ToString(), dtCheck.Rows[j]["计划交货时间"].ToString(), dtCheck.Rows[j]["工厂代码"].ToString(), dtCheck.Rows[j]["收货库存地"].ToString(), dtCheck.Rows[j]["凭证标识"].ToString(), dtCheck.Rows[j]["行项目状态"].ToString(), Convert.ToDecimal(dtCheck.Rows[j]["最小包装数量"]))); } } else { if (!itemStatus.Equals("N")) { result.Add("message", string.Format("此为新增数据,编号-行号:{0}状态不正确,不允许导入!", orderNo + "-" + lineNo)); result.Add("flag", "error"); return false; } else { //插入指令 SqlStrings.Add(repository.insertSapDspo(dtCheck.Rows[j]["SA_PO编号"].ToString().ToUpper(), dtCheck.Rows[j]["版本"].ToString(), Convert.ToInt32(dtCheck.Rows[j]["行项目"]), dtCheck.Rows[j]["供应商代码"].ToString(), dtCheck.Rows[j]["物料编码"].ToString().Trim(), dtCheck.Rows[j]["数量"].ToString(), dtCheck.Rows[j]["计量单位"].ToString(), dtCheck.Rows[j]["特殊采购标识"].ToString(), dtCheck.Rows[j]["计划交货日期"].ToString(), dtCheck.Rows[j]["计划交货时间"].ToString(), dtCheck.Rows[j]["工厂代码"].ToString(), dtCheck.Rows[j]["收货库存地"].ToString(), dtCheck.Rows[j]["凭证标识"].ToString(), dtCheck.Rows[j]["行项目状态"].ToString(), Convert.ToDecimal(dtCheck.Rows[j]["最小包装数量"]))); } } } bool res = repository.ExecuteSqlTransaction(SqlStrings); if (res) { result.Add("message", "导入成功!"); result.Add("flag", "OK"); } else { result.Add("message", "导入数据库失败!"); result.Add("flag", "error"); } return res; } #endregion #region 月计划导入 private int ImportMonthlyPlanData(DataTable dtFile, int empId) { int count = 0; bool isNewOrderNo = true; try { string erpWarehouse = dtFile.Rows[0][1].ToString(); List factoryCodeList = repository.getFactoryCode(); string factoryCode = factoryCodeList == null || factoryCodeList.Count <= 0 ? "" : factoryCodeList[0].FactoryCode.ToString(); string time = dtFile.Rows[0][3].ToString(); DataTable dtCopy = new DataTable(); dtCopy = dtFile.Copy(); dtCopy.Rows.RemoveAt(0); dtCopy.Rows.RemoveAt(0); DataView dv = dtCopy.DefaultView; dv.Sort = "column2 asc"; dtCopy = dv.ToTable(); string vendor = ""; string oldVendor = ""; string partNo = ""; string modelNo; List partDt = new List(); double qty = 0.0; string date = ""; string orderNo = ""; int seq = 0; string weekNo = ""; weekNo = repository.GetWeekNo(); DynamicParameters insertHt = new DynamicParameters(); List insertList = new List(); List sqlList = new List(); //foreach (DataRow dr1 in dtCopy.Rows) //{ ArrayList al = new ArrayList(); for (int j = 0; j < dtCopy.Rows.Count; j++) { string ifRepeat = dtCopy.Rows[j]["column2"].ToString(); if (!al.Contains(ifRepeat)) { al.Add(ifRepeat); } } for (int z = 0; z < al.Count; z++) { DataRow[] drRepeat = null; insertList = new List(); sqlList = new List(); drRepeat = dtCopy.Select("column2='" + al[z].ToString() + "'"); for (int i = 0; i < 12; i++) { if (isNewOrderNo) { orderNo = repository.GetMonthOrderNo(); isNewOrderNo = false; } for (int x = 0; x < drRepeat.Length; x++) { vendor = drRepeat[x]["column2"].ToString().Trim(); partNo = drRepeat[x]["column4"].ToString().Trim(); modelNo = drRepeat[x]["column5"] == null ? "" : drRepeat[x]["column5"].ToString().Trim(); partDt = repository.getPartInfo(partNo); if (oldVendor.Equals("") || !oldVendor.Equals(vendor)) { oldVendor = vendor; seq = 0; } insertHt = new DynamicParameters(); if (drRepeat[x]["column" + (i + 6).ToString()].ToString().Trim() == null || drRepeat[x]["column" + (i + 6).ToString()].ToString().Trim().Equals("")) { qty = 0.0; } else { qty = Convert.ToDouble(drRepeat[x]["column" + (i + 6).ToString()].ToString().Trim()); } if (qty > 0) { isNewOrderNo = true; count++; seq++; date = dtFile.Rows[1][i + 5].ToString(); List dtDSPO = repository.IfZDATE(date, vendor, time); if (dtDSPO.Count > 0) { string STAFLG = dtDSPO[0].Staflg.ToString(); if (STAFLG != " ") { result.Add("message", "订单已发布,不允许修改,请联系供应商!"); result.Add("flag", "error"); return 0; } repository.delDSPO(date, vendor); } insertHt.Add("@EBELN", orderNo); insertHt.Add("@REVNO", "1"); insertHt.Add("@EVRTP", seq); insertHt.Add("@LIFNR", vendor); insertHt.Add("@MATNR", partNo); insertHt.Add("@MODEL_NO", modelNo); insertHt.Add("@ZDEV_NUM", qty); insertHt.Add("@UNIT", partDt[0].Unit); insertHt.Add("@ZDATE", date); insertHt.Add("@ZCJSJ", time); insertHt.Add("@WERKS", factoryCode); insertHt.Add("@LGORT", erpWarehouse); insertHt.Add("@ZPZPS", "4"); insertHt.Add("@ZSTAS", "N"); insertHt.Add("@BSTRF", partDt[0].DefaultBoxQty); insertHt.Add("@RECUSR", empId); insertHt.Add("@WEEKNO", weekNo); sqlList.Add(repository.InsertMonthlyPlanData()); insertList.Add(insertHt); } } isNewOrderNo = true; } string msg = ""; bool bl = repository.ExecuteSqlTransaction(sqlList, insertList, ref msg); if (bl==false) { result.Add("message", msg); result.Add("flag", "error"); return 0; } } result.Add("message", string.Format("导入成功,共导入{0}条数据!月计划单号为:{1}", count, weekNo)); result.Add("flag", "OK"); } catch (Exception ex) { result.Add("message", ex.Message); result.Add("flag", "error"); return 0; } return 1; } #endregion /// /// 日计划 /// /// /// /// /// private int DayPlanImportSAPOData(DataTable dtFile, int empId, int orderType) { int count = 0; bool isNewOrderNo = true; try { string erpWarehouse = dtFile.Rows[0][1].ToString(); List factoryCodeList = repository.getFactoryCode(); string factoryCode = factoryCodeList == null || factoryCodeList.Count <= 0 ? "" : factoryCodeList[0].FactoryCode.ToString(); string time = dtFile.Rows[0][3].ToString(); DataTable dtCopy = new DataTable(); dtCopy = dtFile.Copy(); dtCopy.Rows.RemoveAt(0); dtCopy.Rows.RemoveAt(0); DataView dv = dtCopy.DefaultView; dv.Sort = "column2 asc"; dtCopy = dv.ToTable(); string vendor = ""; string oldVendor = ""; string partNo = ""; string modelNo; List partDt = new List(); double qty = 0.0; string date = ""; string orderNo = ""; int seq = 0; string weekNo = ""; weekNo = repository.GetWeekNo(); DynamicParameters insertHt = new DynamicParameters(); List insertList = new List(); List sqlList = new List(); //foreach (DataRow dr1 in dtCopy.Rows) //{ ArrayList al = new ArrayList(); for (int j = 0; j < dtCopy.Rows.Count; j++) { string ifRepeat = dtCopy.Rows[j]["column2"].ToString(); if (!al.Contains(ifRepeat)) { al.Add(ifRepeat); } } for (int z = 0; z < al.Count; z++) { DataRow[] drRepeat = null; insertList = new List(); sqlList = new List(); drRepeat = dtCopy.Select("column2='" + al[z].ToString() + "'"); for (int i = 0; i < 24; i++) { if (isNewOrderNo) { orderNo = repository.GetOrderNo(); isNewOrderNo = false; } for (int x = 0; x < drRepeat.Length; x++) { vendor = drRepeat[x]["column2"].ToString().Trim(); partNo = drRepeat[x]["column4"].ToString().Trim(); modelNo = drRepeat[x]["column5"] == null ? "" : drRepeat[x]["column5"].ToString().Trim(); partDt = repository.getPartInfo(partNo); if (oldVendor.Equals("") || !oldVendor.Equals(vendor)) { oldVendor = vendor; seq = 0; } insertHt = new DynamicParameters(); if (drRepeat[x]["column" + (i + 6).ToString()].ToString().Trim() == null || drRepeat[x]["column" + (i + 6).ToString()].ToString().Trim().Equals("")) { qty = 0.0; } else { qty = Convert.ToDouble(drRepeat[x]["column" + (i + 6).ToString()].ToString().Trim()); } if (qty > 0) { isNewOrderNo = true; count++; seq++; string ReceivingTime = dtFile.Rows[1][i + 5].ToString().Replace(":", ""); if (ReceivingTime.Length == 3) { ReceivingTime = "0" + ReceivingTime + "00"; } else { ReceivingTime = ReceivingTime + "00"; } date = (DateTime.Parse(time).ToString("yyyyMMdd")); if (orderType != 130) { List dtDSPO = repository.IfZDATE(date, vendor, ReceivingTime); if (dtDSPO.Count > 0) { string STAFLG = dtDSPO[0].Staflg.ToString(); if (STAFLG != " ") { result.Add("message", "订单已发布,不允许修改,请联系供应商!"); result.Add("flag", "error"); return 0; } repository.delDSPO(date, vendor); } } insertHt.Add("@EBELN", orderNo); insertHt.Add("@REVNO", "1"); insertHt.Add("@EVRTP", seq); insertHt.Add("@LIFNR", vendor); insertHt.Add("@MATNR", partNo); insertHt.Add("@MODEL_NO", modelNo); insertHt.Add("@ZDEV_NUM", qty); insertHt.Add("@UNIT", partDt[0].Unit); insertHt.Add("@ZDATE", date); insertHt.Add("@ZCJSJ", ReceivingTime); insertHt.Add("@WERKS", factoryCode); insertHt.Add("@LGORT", erpWarehouse); insertHt.Add("@ZPZPS", "4"); insertHt.Add("@ZSTAS", "N"); insertHt.Add("@BSTRF", partDt[0].DefaultBoxQty); insertHt.Add("@RECUSR", empId); insertHt.Add("@WEEKNO", weekNo); sqlList.Add(repository.InsertSAPOData()); insertList.Add(insertHt); } } isNewOrderNo = true; } string msg = ""; bool bl = repository.ExecuteSqlTransaction(sqlList, insertList, ref msg); if (bl == false) { result.Add("message", msg); result.Add("flag", "error"); return 0; } } result.Add("message", string.Format("导入成功,共导入{0}条数据!日计划单号为:{1}", count, weekNo)); result.Add("flag", "OK"); } catch (Exception ex) { result.Add("message", ex.Message); result.Add("flag", "error"); return 0; } return 1; } #region 零星领(退)料指令业务 private bool ImportSapMiscoData(DataTable dtCheck, int orderType) { int isflag = 0; string orderNo; string lineNo; string orderStatus; string partNo; List partInfo; string uom; string factoryCode; List factoryInfo; string erpWarehouse; List erpWarehouseInfo; List sapMiscoInfo; List SqlStrings = new List(); int j = 0; foreach (DataRow dr in dtCheck.Rows) { j++; orderNo = dr["编号"] == null ? "" : dr["编号"].ToString().Trim(); lineNo = dr["行号"] == null ? "" : dr["行号"].ToString().Trim(); if (orderNo.Length < 1 || lineNo.Length < 1 || dr["数量"] == null || dr["数量"].ToString().Trim().Length < 1) { result.Add("message", "第" + j.ToString() + "行编号,行号,数量,不能为空,请检查数据!"); result.Add("flag", "error"); return false; } if (Convert.ToDecimal(dr["数量"].ToString()) == 0) { continue; } orderStatus = dr["状态"] == null ? "" : dr["状态"].ToString().Trim(); if (orderNo.Equals("")) { result.Add("message", "第" + j.ToString() + "行状态为空,状态只能使用 1, 2, 3, 4, 5 共5个字符,请检查数据!"); result.Add("flag", "error"); return false; } if (!"12345".Contains(orderStatus)) { result.Add("message", "状态只能使用 1, 2, 3, 4, 5 共5个字符,请检查数据!"); result.Add("flag", "error"); return false; } partNo = dr["物料编码"].ToString().Trim(); partInfo = repository.getPartInfo(partNo); if (null == partInfo || partInfo.Count <= 0) { result.Add("message", string.Format("物料编码{0}不存在,请确认基础数据!", partNo)); result.Add("flag", "error"); return false; } uom = dr["计量单位"].ToString().Trim(); if (!partInfo[0].Unit.ToString().Trim().Equals(uom) && !partInfo[0].Uom1.ToString().Trim().Equals(uom) && !partInfo[0].Uom2.ToString().Trim().Equals(uom) && !partInfo[0].Uom3.ToString().Trim().Equals(uom)) { result.Add("message", string.Format("物料编码{0}单位不存在于零件基础数据中,无法导入,请检查!", partNo)); result.Add("flag", "error"); return false; } if (!partInfo[0].Unit.ToString().Trim().Equals(uom)) { result.Add("message", string.Format("物料编码{0}单位与标准单位不一致,取消导入!", partNo)); result.Add("flag", "error"); return false; } factoryCode = dr["工厂"].ToString().Trim(); factoryInfo = repository.getFactoryInfo(factoryCode); if (null == factoryInfo || factoryInfo.Count <= 0) { result.Add("message", string.Format("工厂代码{0}不存在,请确认基础数据!", factoryCode)); result.Add("flag", "error"); return false; } erpWarehouse = dr["发出库存地点(退回库存地点)"].ToString().Trim(); erpWarehouseInfo = repository.getErpWarehouseInfo(erpWarehouse); if (null == erpWarehouseInfo || erpWarehouseInfo.Count <= 0) { result.Add("message", string.Format("收货库存地{0}不存在,请确认基础数据!", erpWarehouse)); result.Add("flag", "error"); return false; } if (dr["业务类型"].ToString().Length < 1) { result.Add("message", string.Format("业务类型{0}错误,不能为空!", dr["业务类型"].ToString())); result.Add("flag", "error"); return false; } if ((!dr["业务类型"].ToString().Equals("C00") && orderType == SPORADIC_OUT) || (!dr["业务类型"].ToString().Equals("C01") && orderType == SPORADIC_IN) || (!dr["业务类型"].ToString().Equals("C02") && orderType == NC_DISASSEMBLY_OUT) || (!dr["业务类型"].ToString().Equals("C03") && orderType == NC_DISASSEMBLY_IN) || (!dr["业务类型"].ToString().Equals("C04") && orderType == NC_DISCARD)) { result.Add("message", string.Format("业务类型{0}与指令类型不符!", dr["业务类型"].ToString())); result.Add("flag", "error"); return false; } //循环遍历Excel的编号-行号不能重复 foreach (DataRow dr1 in dtCheck.Rows) { if ((orderNo + "-" + lineNo).Equals(dr1["编号"].ToString().Trim() + "-" + dr1["行号"].ToString())) { isflag = isflag + 1; if (isflag > 1) { result.Add("message", string.Format("Excel里面有重复编号-行项目:{0},无法新增!", orderNo + "-" + lineNo)); result.Add("flag", "error"); return false; } } } isflag = 0; sapMiscoInfo = repository.getSapMiscoInfo(orderNo, lineNo); if (sapMiscoInfo.Count > 0) { if (orderStatus.Equals("1")) { result.Add("message", string.Format("编号-行号:{0}已经存在,无法新增!", orderNo + "-" + lineNo)); result.Add("flag", "error"); return false; } else { //更新指令 SqlStrings.Add(repository.getUpdateSapMisco(dr["编号"].ToString(), dr["行号"].ToString(), dr["工厂"].ToString(), dr["发出库存地点(退回库存地点)"].ToString(), dr["物料编码"].ToString().Trim(), dr["数量"].ToString(), dr["计量单位"].ToString(), dr["特殊库存标识"].ToString(), dr["特殊库存描述"].ToString(), dr["状态"].ToString(), dr["业务类型"].ToString())); } } else { if (!orderStatus.Equals("1")) { result.Add("message", string.Format("此为新增数据,编号-行号:{0}状态不正确,不允许导入!", orderNo + "-" + lineNo)); result.Add("flag", "error"); return false; } else { //插入指令 SqlStrings.Add(repository.getInsertSapMisco(dr["编号"].ToString(), dr["行号"].ToString(), dr["工厂"].ToString(), dr["发出库存地点(退回库存地点)"].ToString(), dr["物料编码"].ToString().Trim(), dr["数量"].ToString(), dr["计量单位"].ToString(), dr["特殊库存标识"].ToString(), dr["特殊库存描述"].ToString(), dr["状态"].ToString(), dr["业务类型"].ToString())); } } } bool res = repository.ExecuteSqlTransaction(SqlStrings); if (res) { result.Add("message", "导入成功!"); result.Add("flag", "OK"); } else { result.Add("message", "导入数据库失败!"); result.Add("flag", "error"); } return res; } #endregion #region 非JIS发运指令 private bool ImportSapDnData(DataTable dtCheck) { int isflag = 0; string orderNo; string lineNo; string partNo; List partInfo; string uom; string factoryCode; List factoryInfo; string erpWarehouse; List erpWarehouseInfo; string customerCode; List customerInfo; string planDate; List sapDnInfo; List SqlStrings = new List(); for (int j = 0; j < dtCheck.Rows.Count; j++) { orderNo = dtCheck.Rows[j]["销售交货单号"].ToString().Trim(); lineNo = dtCheck.Rows[j]["行项目"].ToString(); if (string.IsNullOrEmpty(orderNo) || dtCheck.Rows[j]["交货数量"].ToString().Trim().Length < 1) { result.Add("message", "销售交货单号或者交货数量不能为空,请确认基础数据!"); result.Add("flag", "error"); return false; } partNo = dtCheck.Rows[j]["物料号"].ToString().Trim(); partInfo = repository.getPartInfo(partNo); if (null == partInfo || partInfo.Count <= 0) { result.Add("message", string.Format("物料编码{0}不存在,请确认基础数据!", partNo)); result.Add("flag", "error"); return false; } uom = dtCheck.Rows[j]["单位"].ToString().Trim(); if (!partInfo[0].Unit.ToString().Trim().Equals(uom) && !partInfo[0].Uom1.ToString().Trim().Equals(uom) && !partInfo[0].Uom2.ToString().Trim().Equals(uom) && !partInfo[0].Uom3.ToString().Trim().Equals(uom)) { result.Add("message", string.Format("物料编码{0}单位不存在于零件基础数据中,无法导入,请检查!", partNo)); result.Add("flag", "error"); return false; } if (!partInfo[0].Unit.ToString().Trim().Equals(uom)) { result.Add("message", string.Format("物料编码{0}单位与标准单位不一致,取消导入!", partNo)); result.Add("flag", "error"); return false; } factoryCode = dtCheck.Rows[j]["发货工厂"].ToString().Trim(); factoryInfo = repository.getFactoryInfo(factoryCode); if (null == factoryInfo || factoryInfo.Count <= 0) { result.Add("message", string.Format("发货工厂{0}不存在,请确认基础数据!", factoryCode)); result.Add("flag", "error"); return false; } erpWarehouse = dtCheck.Rows[j]["发货库存地"].ToString().Trim(); erpWarehouseInfo = repository.getErpWarehouseInfo(erpWarehouse); if (null == erpWarehouseInfo || erpWarehouseInfo.Count <= 0) { result.Add("message", string.Format("发货库存地{0}不存在,请确认基础数据!", erpWarehouse)); result.Add("flag", "error"); return false; } customerCode = dtCheck.Rows[j]["客户编码"].ToString().Trim(); customerInfo = repository.getCustomerInfo(customerCode); if (null == customerInfo || customerInfo.Count <= 0) { result.Add("message", string.Format("客户编码{0}不存在,请确认基础数据!", customerCode)); result.Add("flag", "error"); return false; } planDate = dtCheck.Rows[j]["计划交货日期"].ToString().Trim(); if (planDate.Length != 8) { result.Add("message", "交货日期格式不正确!"); result.Add("flag", "error"); return false; } //循环遍历Excel的编号-行号不能重复 foreach (DataRow dr1 in dtCheck.Rows) { if ((orderNo + "-" + lineNo).Equals(dr1["销售交货单号"].ToString().Trim() + "-" + dr1["行项目"].ToString())) { isflag = isflag + 1; if (isflag > 1) { result.Add("message", string.Format("Excel里面有重复销售交货单号-行项目:{0},无法新增!", orderNo + "-" + lineNo)); result.Add("flag", "error"); return false; } } } isflag = 0; sapDnInfo = repository.getSapDnInfo(orderNo, lineNo); if (sapDnInfo.Count > 0) { result.Add("message", string.Format("销售交货单号-行项目:{0}已经存在,无法新增!!", orderNo + "-" + lineNo)); result.Add("flag", "error"); return false; } else { //插入指令 SqlStrings.Add(repository.getInsertSapDn(dtCheck.Rows[j]["销售交货单号"].ToString().Trim(), dtCheck.Rows[j]["行项目"].ToString().Trim(), dtCheck.Rows[j]["发货工厂"].ToString().Trim(), dtCheck.Rows[j]["发货库存地"].ToString().Trim(), dtCheck.Rows[j]["计划交货日期"].ToString().Trim(), dtCheck.Rows[j]["客户编码"].ToString().Trim(), dtCheck.Rows[j]["物料号"].ToString().Trim(), dtCheck.Rows[j]["客户物料号"].ToString().Trim(), dtCheck.Rows[j]["交货数量"].ToString().Trim(), dtCheck.Rows[j]["单位"].ToString().Trim())); } } bool res = repository.ExecuteSqlTransaction(SqlStrings); if (res) { result.Add("message", "导入成功!"); result.Add("flag", "OK"); } else { result.Add("message", "导入数据库失败!"); result.Add("flag", "error"); } return res; } #endregion #region 供应商退货(SMRR/DMR) private bool ImportSapRetoData(DataTable dtCheck) { int isflag = 0; string orderNo; string lineNo; string qty; string orderStatus; string orderType; string partNo; List partInfo; string uom; string factoryCode; List factoryInfo; string erpWarehouse; List erpWarehouseInfo; string vendor; List vendorInfo; List sapRetoInfo; List SqlStrings = new List(); for (int j = 0; j < dtCheck.Rows.Count; j++) { orderNo = dtCheck.Rows[j]["编号"].ToString().Trim(); lineNo = dtCheck.Rows[j]["行号"].ToString().Trim(); qty = dtCheck.Rows[j]["退货数量"].ToString(); if (string.IsNullOrEmpty(qty) || string.IsNullOrEmpty(orderNo) || string.IsNullOrEmpty(lineNo)) { result.Add("message", "第" + j.ToString() + "行退货数量,行号或者编号不能为空,请检查数据!"); result.Add("flag", "error"); return false; } orderStatus = dtCheck.Rows[j]["状态"].ToString(); if (string.IsNullOrEmpty(orderStatus) || !"123".Contains(orderStatus)) { result.Add("message", "第" + j.ToString() + "行状态为空或不正确,状态只能使用1,2,3共3个字符,请检查数据!"); result.Add("flag", "error"); return false; } partNo = dtCheck.Rows[j]["物料编码"].ToString().Trim(); partInfo = repository.getPartInfo(partNo); if (null == partInfo || partInfo.Count <= 0) { result.Add("message", string.Format("物料编码{0}不存在,请确认基础数据!", partNo)); result.Add("flag", "error"); return false; } uom = dtCheck.Rows[j]["计量单位"].ToString().Trim(); if (!partInfo[0].Unit.ToString().Trim().Equals(uom) && !partInfo[0].Uom1.ToString().Trim().Equals(uom) && !partInfo[0].Uom2.ToString().Trim().Equals(uom) && !partInfo[0].Uom3.ToString().Trim().Equals(uom)) { result.Add("message", string.Format("物料编码{0}单位不存在于零件基础数据中,无法导入,请检查!", partNo)); result.Add("flag", "error"); return false; } if (!partInfo[0].Unit.ToString().Trim().Equals(uom)) { result.Add("message", string.Format("物料编码{0}单位与标准单位不一致,取消导入!", partNo)); result.Add("flag", "error"); return false; } factoryCode = dtCheck.Rows[j]["工厂"].ToString().Trim(); factoryInfo = repository.getFactoryInfo(factoryCode); if (null == factoryInfo || factoryInfo.Count <= 0) { result.Add("message", string.Format("工厂代码{0}不存在,请确认基础数据!", factoryCode)); result.Add("flag", "error"); return false; } erpWarehouse = dtCheck.Rows[j]["库存地点"].ToString().Trim(); erpWarehouseInfo = repository.getErpWarehouseInfo(erpWarehouse); if (null == erpWarehouseInfo || erpWarehouseInfo.Count <= 0) { result.Add("message", string.Format("库存地点{0}不存在,请确认基础数据!", erpWarehouse)); result.Add("flag", "error"); return false; } vendor = dtCheck.Rows[j]["供应商"].ToString(); vendorInfo = repository.getVendorInfo(vendor); if (null == vendorInfo || vendorInfo.Count <= 0) { result.Add("message", string.Format("供应商{0}不存在,请确认基础数据!", vendor)); result.Add("flag", "error"); return false; } orderType = dtCheck.Rows[j]["业务类型"].ToString().Trim(); if (string.IsNullOrEmpty(orderType)) { result.Add("message", string.Format("业务类型{0}错误,不能为空!", orderType)); result.Add("flag", "error"); return false; } if (!orderType.Equals("B00") && !orderType.Equals("B01")) { result.Add("message", string.Format("业务类型{0}错误!", orderType)); result.Add("flag", "error"); return false; } //循环遍历Excel的编号-行号不能重复 foreach (DataRow dr1 in dtCheck.Rows) { if ((orderNo + "-" + lineNo).Equals(dr1["编号"].ToString().Trim() + "-" + dr1["行号"].ToString())) { isflag = isflag + 1; if (isflag > 1) { result.Add("message", string.Format("Excel里面有重复编号-行号:{0},无法新增!", orderNo + "-" + lineNo)); result.Add("flag", "error"); return false; } } } isflag = 0; sapRetoInfo = repository.getSapRetoInfo(orderNo, lineNo); if (sapRetoInfo.Count > 0) { if (orderStatus.Equals("1")) { result.Add("message", string.Format("编号-行号:{0}已经存在,无法新增!", orderNo + "-" + lineNo)); result.Add("flag", "error"); return false; } else { //更新指令 SqlStrings.Add(repository.getUpdateSapReto(dtCheck.Rows[j]["业务类型"].ToString().Trim(), dtCheck.Rows[j]["编号"].ToString().Trim(), dtCheck.Rows[j]["行号"].ToString().Trim(), dtCheck.Rows[j]["供应商"].ToString().Trim(), dtCheck.Rows[j]["工厂"].ToString().Trim(), dtCheck.Rows[j]["物料编码"].ToString().Trim(), dtCheck.Rows[j]["库存地点"].ToString().Trim(), dtCheck.Rows[j]["退货数量"].ToString().Trim(), dtCheck.Rows[j]["计量单位"].ToString().Trim(), dtCheck.Rows[j]["退货原因"].ToString().Trim(), dtCheck.Rows[j]["SMRR号(或DMR号)"].ToString().Trim(), dtCheck.Rows[j]["状态"].ToString().Trim())); } } else { if (!orderStatus.Equals("1")) { result.Add("message", string.Format("此为新增数据,编号-行号:{0}状态不正确,不允许导入!", orderNo + "-" + lineNo)); result.Add("flag", "error"); return false; } else { //插入指令 SqlStrings.Add(repository.getInsertSapReto(dtCheck.Rows[j]["业务类型"].ToString().Trim(), dtCheck.Rows[j]["编号"].ToString().Trim(), dtCheck.Rows[j]["行号"].ToString().Trim(), dtCheck.Rows[j]["供应商"].ToString().Trim(), dtCheck.Rows[j]["工厂"].ToString().Trim(), dtCheck.Rows[j]["物料编码"].ToString().Trim(), dtCheck.Rows[j]["库存地点"].ToString().Trim(), dtCheck.Rows[j]["退货数量"].ToString().Trim(), dtCheck.Rows[j]["计量单位"].ToString().Trim(), dtCheck.Rows[j]["退货原因"].ToString().Trim(), dtCheck.Rows[j]["SMRR号(或DMR号)"].ToString().Trim(), dtCheck.Rows[j]["状态"].ToString().Trim())); } } } bool res = repository.ExecuteSqlTransaction(SqlStrings); if (res) { result.Add("message", "导入成功!"); result.Add("flag", "OK"); } else { result.Add("message", "导入数据库失败!"); result.Add("flag", "error"); } return res; } #endregion #region NC入库指令 private bool ImportSapMovoData(DataTable dtCheck) { int isflag = 0; string orderNo; string lineNo; string qty; string orderStatus; string orderType; string partNo; List partInfo; string uom; string factoryCode; List factoryInfo; string erpWarehouse; string goErpWarehouse; List erpWarehouseInfo; List sapMovoInfo; List SqlStrings = new List(); for (int j = 0; j < dtCheck.Rows.Count; j++) { orderNo = dtCheck.Rows[j]["编号"].ToString().Trim(); lineNo = dtCheck.Rows[j]["行号"].ToString().Trim(); qty = dtCheck.Rows[j]["数量"].ToString().Trim(); if (string.IsNullOrEmpty(orderNo) || string.IsNullOrEmpty(lineNo) || string.IsNullOrEmpty(qty)) { result.Add("message", "第" + j.ToString() + "行编号,行号,数量,不能为空,请检查数据!"); result.Add("flag", "error"); return false; } orderStatus = dtCheck.Rows[j]["状态"].ToString().Trim(); if (string.IsNullOrEmpty(orderStatus) || !("1234".Contains(orderStatus))) { result.Add("message", "第" + j.ToString() + "行状态为空或不正确,状态只能使用1,2,3,4共4个字符,请检查数据!"); result.Add("flag", "error"); return false; } partNo = dtCheck.Rows[j]["物料编码"].ToString().Trim(); partInfo = repository.getPartInfo(partNo); if (null == partInfo || partInfo.Count <= 0) { result.Add("message", string.Format("物料编码{0}不存在,请确认基础数据!", partNo)); result.Add("flag", "error"); return false; } uom = dtCheck.Rows[j]["计量单位"].ToString().Trim(); if (!partInfo[0].Unit.ToString().Trim().Equals(uom) && !partInfo[0].Uom1.ToString().Trim().Equals(uom) && !partInfo[0].Uom2.ToString().Trim().Equals(uom) && !partInfo[0].Uom3.ToString().Trim().Equals(uom)) { result.Add("message", string.Format("物料编码{0}单位不存在于零件基础数据中,无法导入,请检查!", partNo)); result.Add("flag", "error"); return false; } if (!partInfo[0].Unit.ToString().Trim().Equals(uom)) { result.Add("message", string.Format("物料编码{0}单位与标准单位不一致,取消导入!", partNo)); result.Add("flag", "error"); return false; } factoryCode = dtCheck.Rows[j]["工厂"].ToString().Trim(); factoryInfo = repository.getFactoryInfo(factoryCode); if (null == factoryInfo || factoryInfo.Count <= 0) { result.Add("message", string.Format("工厂代码{0}不存在,请确认基础数据!", factoryCode)); result.Add("flag", "error"); return false; } erpWarehouse = dtCheck.Rows[j]["接收库存地点"].ToString().Trim(); erpWarehouseInfo = repository.getErpWarehouseInfo(erpWarehouse); if (null == erpWarehouseInfo || erpWarehouseInfo.Count <= 0) { result.Add("message", string.Format("接收库存地点{0}不存在,请确认基础数据!", erpWarehouse)); result.Add("flag", "error"); return false; } goErpWarehouse = dtCheck.Rows[j]["发出库存地点"].ToString().Trim(); erpWarehouseInfo = repository.getErpWarehouseInfo(goErpWarehouse); if (null == erpWarehouseInfo || erpWarehouseInfo.Count <= 0) { result.Add("message", string.Format("发出库存地点{0}不存在,请确认基础数据!", goErpWarehouse)); result.Add("flag", "error"); return false; } orderType = dtCheck.Rows[j]["业务类型"].ToString().Trim(); if (string.IsNullOrEmpty(orderType)) { result.Add("message", string.Format("业务类型{0}错误,不能为空!", orderType)); result.Add("flag", "error"); return false; } if (!(orderType.Equals("D01") || orderType.Equals("D00"))) { result.Add("message", string.Format("业务类型{0}错误!", orderType)); result.Add("flag", "error"); return false; } //NC入库为空,指令移库为“I” string ORDTYP = ""; if (orderType == "D00") { ORDTYP = "I"; } //循环遍历Excel的编号-行号不能重复 foreach (DataRow dr1 in dtCheck.Rows) { if ((orderNo + "-" + lineNo).Equals(dr1["编号"].ToString().Trim() + "-" + dr1["行号"].ToString())) { isflag = isflag + 1; if (isflag > 1) { result.Add("message", string.Format("Excel里面有重复编号-行号:{0},无法新增!", orderNo + "-" + lineNo)); result.Add("flag", "error"); return false; } } } isflag = 0; sapMovoInfo = repository.getSapMovoInfo(orderNo, lineNo); if (sapMovoInfo.Count > 0) { //if (orderStatus.Equals("1")) //{ // result.Add("message", string.Format("编号-行号:{0}已经存在,无法新增!", orderNo + "-" + lineNo)); // result.Add("flag", "error"); // return false; //} //else //{ //更新指令 SqlStrings.Add(repository.getUpdateSapMovo(dtCheck.Rows[j]["编号"].ToString().Trim(), dtCheck.Rows[j]["业务类型"].ToString().Trim(), dtCheck.Rows[j]["行号"].ToString().Trim(), dtCheck.Rows[j]["工厂"].ToString().Trim(), dtCheck.Rows[j]["发出库存地点"].ToString().Trim(), dtCheck.Rows[j]["接收库存地点"].ToString().Trim(), dtCheck.Rows[j]["物料编码"].ToString().Trim(), dtCheck.Rows[j]["旧物料编码(针对物料号切换)"].ToString().Trim(), dtCheck.Rows[j]["数量"].ToString().Trim(), dtCheck.Rows[j]["计量单位"].ToString().Trim(), dtCheck.Rows[j]["库存状态"].ToString().Trim(), dtCheck.Rows[j]["特殊库存标识"].ToString().Trim(), dtCheck.Rows[j]["特殊库存描述"].ToString().Trim(), dtCheck.Rows[j]["状态"].ToString().Trim(), dtCheck.Rows[j]["不合格单据号"].ToString().Trim(), ORDTYP)); //} } else { if (!orderStatus.Equals("1")) { result.Add("message", string.Format("此为新增数据,编号-行号:{0}状态不正确,不允许导入!", orderNo + "-" + lineNo)); result.Add("flag", "error"); return false; } else { //插入指令 SqlStrings.Add(repository.getInsertSapMovo(dtCheck.Rows[j]["编号"].ToString().Trim(), dtCheck.Rows[j]["业务类型"].ToString().Trim(), dtCheck.Rows[j]["行号"].ToString(), dtCheck.Rows[j]["工厂"].ToString().Trim(), dtCheck.Rows[j]["发出库存地点"].ToString().Trim(), dtCheck.Rows[j]["接收库存地点"].ToString().Trim(), dtCheck.Rows[j]["物料编码"].ToString().Trim(), dtCheck.Rows[j]["旧物料编码(针对物料号切换)"].ToString().Trim(), dtCheck.Rows[j]["数量"].ToString().Trim(), dtCheck.Rows[j]["计量单位"].ToString().Trim(), dtCheck.Rows[j]["库存状态"].ToString().Trim(), dtCheck.Rows[j]["特殊库存标识"].ToString().Trim(), dtCheck.Rows[j]["特殊库存描述"].ToString().Trim(), dtCheck.Rows[j]["状态"].ToString().Trim(), dtCheck.Rows[j]["不合格单据号"].ToString().Trim(), ORDTYP)); } } } bool res = repository.ExecuteSqlTransaction(SqlStrings); if (res) { result.Add("message", "NC指令导入成功!"); result.Add("flag", "OK"); } else { result.Add("message", "NC指令导入数据库失败!"); result.Add("flag", "error"); } return res; } #endregion #region SAP盘点表指令 private bool ImportSapCycoData(DataTable dtCheck) { int isflag = 0; string orderNo; string lineNo; string partNo; List partInfo; string uom; string factoryCode; List factoryInfo; string erpWarehouse; List erpWarehouseInfo; List sapCycoInfo; List SqlStrings = new List(); for (int j = 0; j < dtCheck.Rows.Count; j++) { orderNo = dtCheck.Rows[j]["盘点凭证号"].ToString().Trim(); lineNo = dtCheck.Rows[j]["行号"].ToString().Trim(); if (string.IsNullOrEmpty(orderNo) || string.IsNullOrEmpty(lineNo)) { result.Add("message", "第" + j.ToString() + "行盘点凭证号,行号不能为空,请检查数据!"); result.Add("flag", "error"); return false; } if (dtCheck.Rows[j]["特殊库存标识"].ToString().Trim().Length > 1) { result.Add("message", "第" + j.ToString() + "特殊库存标识长度不能大于1,请检查数据!"); result.Add("flag", "error"); return false; } partNo = dtCheck.Rows[j]["物料编码"].ToString().Trim(); partInfo = repository.getPartInfo(partNo); if (null == partInfo || partInfo.Count <= 0) { result.Add("message", string.Format("物料编码{0}不存在,请确认基础数据!", partNo)); result.Add("flag", "error"); return false; } uom = dtCheck.Rows[j]["计量单位"].ToString().Trim(); if (!partInfo[0].Unit.ToString().Trim().Equals(uom) && !partInfo[0].Uom1.ToString().Trim().Equals(uom) && !partInfo[0].Uom2.ToString().Trim().Equals(uom) && !partInfo[0].Uom3.ToString().Trim().Equals(uom)) { result.Add("message", string.Format("物料编码{0}单位不存在于零件基础数据中,无法导入,请检查!", partNo)); result.Add("flag", "error"); return false; } if (!partInfo[0].Unit.ToString().Trim().Equals(uom)) { result.Add("message", string.Format("物料编码{0}单位与标准单位不一致,取消导入!", partNo)); result.Add("flag", "error"); return false; } factoryCode = dtCheck.Rows[j]["工厂"].ToString().Trim(); factoryInfo = repository.getFactoryInfo(factoryCode); if (null == factoryInfo || factoryInfo.Count <= 0) { result.Add("message", string.Format("工厂代码{0}不存在,请确认基础数据!", factoryCode)); result.Add("flag", "error"); return false; } erpWarehouse = dtCheck.Rows[j]["库存地点"].ToString().Trim(); erpWarehouseInfo = repository.getErpWarehouseInfo(erpWarehouse); if (null == erpWarehouseInfo || erpWarehouseInfo.Count <= 0) { result.Add("message", string.Format("库存地点{0}不存在,请确认基础数据!", erpWarehouse)); result.Add("flag", "error"); return false; } //循环遍历Excel的编号-行号不能重复 foreach (DataRow dr1 in dtCheck.Rows) { if ((orderNo + "-" + lineNo).Equals(dr1["盘点凭证号"].ToString().Trim() + "-" + dr1["行号"].ToString())) { isflag = isflag + 1; if (isflag > 1) { result.Add("message", string.Format("Excel里面有重复盘点凭证号-行号:{0},无法新增!", orderNo + "-" + lineNo)); result.Add("flag", "error"); return false; } } } isflag = 0; sapCycoInfo = repository.getSapCycoInfo(orderNo, lineNo); if (sapCycoInfo.Count > 0) { result.Add("message", string.Format("盘点凭证号-行号:{0}已经存在,无法新增!", orderNo + "-" + lineNo)); result.Add("flag", "error"); return false; } else { //插入指令 SqlStrings.Add(repository.getInsertSapCyco(dtCheck.Rows[j]["盘点凭证号"].ToString().Trim(), dtCheck.Rows[j]["行号"].ToString().Trim(), dtCheck.Rows[j]["物料编码"].ToString().Trim(), dtCheck.Rows[j]["计量单位"].ToString().Trim(), dtCheck.Rows[j]["工厂"].ToString().Trim(), dtCheck.Rows[j]["库存地点"].ToString().Trim(), dtCheck.Rows[j]["库存状态"].ToString().Trim(), dtCheck.Rows[j]["特殊库存标识"].ToString().Trim(), dtCheck.Rows[j]["项目号"].ToString().Trim(), dtCheck.Rows[j]["库存账冻结标识"].ToString().Trim(), dtCheck.Rows[j]["删除标识"].ToString().Trim(), dtCheck.Rows[j]["年度"].ToString().Trim())); } } bool res = repository.ExecuteSqlTransaction(SqlStrings); if (res) { result.Add("message", "导入成功!"); result.Add("flag", "OK"); } else { result.Add("message", "导入数据库失败!"); result.Add("flag", "error"); } return res; } #endregion #region SAP盘点调差指令 private bool CheckInput20(DataTable dtCheck, DataTable _dtExits20) { int isflag = 0; string orderNo; string lineNo; string checkStockOrderNo; List checkStockInfo; string factoryCode; List factoryInfo; List sapCycoInfo; List sapDifoInfo; List SqlStrings = new List(); for (int j = 0; j < dtCheck.Rows.Count; j++) { orderNo = dtCheck.Rows[j]["盘点凭证号"].ToString().Trim(); lineNo = dtCheck.Rows[j]["行号"].ToString().Trim(); if (string.IsNullOrEmpty(orderNo) || string.IsNullOrEmpty(lineNo)) { result.Add("message", "第" + j.ToString() + "行盘点凭证号,行号不能为空,请检查数据!"); result.Add("flag", "error"); return false; } if (dtCheck.Rows[j]["调整"].ToString().Trim().Equals("1")) { result.Add("message", "第" + j.ToString() + "调整必须填1,请检查数据!"); result.Add("flag", "error"); return false; } factoryCode = dtCheck.Rows[j]["工厂"].ToString().Trim(); factoryInfo = repository.getFactoryInfo(factoryCode); if (null == factoryInfo || factoryInfo.Count <= 0) { result.Add("message", string.Format("工厂代码{0}不存在,请确认基础数据!", factoryCode)); result.Add("flag", "error"); return false; } checkStockOrderNo = orderNo + dtCheck.Rows[j]["年度"].ToString().Trim(); checkStockInfo = repository.getCheckStockInfo(checkStockOrderNo); if (null == checkStockInfo || checkStockInfo.Count <= 0) { result.Add("message", string.Format("单据号{0}不存在,或者未完成盘点或者已经关闭,请确认单号是否正确!", orderNo)); result.Add("flag", "error"); return false; } sapCycoInfo = repository.getSapCycoInfo(orderNo, lineNo); if (null == checkStockInfo || checkStockInfo.Count <= 0) { result.Add("message", string.Format("单据号{0}和行号{1}不存在,请查看单号,行号是否正确", orderNo, lineNo)); result.Add("flag", "error"); return false; } //循环遍历Excel的编号-行号不能重复 foreach (DataRow dr1 in dtCheck.Rows) { if ((orderNo + "-" + lineNo).Equals(dr1["盘点凭证号"].ToString().Trim() + "-" + dr1["行号"].ToString())) { isflag = isflag + 1; if (isflag > 1) { result.Add("message", string.Format("Excel里面有重复盘点凭证号-行号:{0},无法新增!", orderNo + "-" + lineNo)); result.Add("flag", "error"); return false; } } } isflag = 0; sapDifoInfo = repository.getSapDifoInfo(orderNo, lineNo); if (sapDifoInfo.Count > 0) { result.Add("message", string.Format("盘点凭证号-行号:{0}已经存在,无法新增!", orderNo + "-" + lineNo)); result.Add("flag", "error"); return false; } else { //插入指令 SqlStrings.Add(repository.getInsertSapDifo(dtCheck.Rows[j]["工厂"].ToString().Trim(), dtCheck.Rows[j]["盘点凭证号"].ToString().Trim(), dtCheck.Rows[j]["行号"].ToString().Trim(), dtCheck.Rows[j]["调整"].ToString().Trim(), dtCheck.Rows[j]["年度"].ToString().Trim())); } } bool res = repository.ExecuteSqlTransaction(SqlStrings); if (res) { result.Add("message", "导入成功!"); result.Add("flag", "OK"); } else { result.Add("message", "导入数据库失败!"); result.Add("flag", "error"); } return res; } #endregion #region SAP销售退货收货指令 private bool ImportSapRdnData(DataTable dtCheck) { int isflag = 0; string orderNo; string lineNo; string partNo; List partInfo; string uom; string factoryCode; List factoryInfo; string erpWarehouse; List erpWarehouseInfo; string customerCode; List customerInfo; List sapRdnInfo; List SqlStrings = new List(); for (int j = 0; j < dtCheck.Rows.Count; j++) { orderNo = dtCheck.Rows[j]["退货交货单"].ToString().Trim(); lineNo = dtCheck.Rows[j]["Item"].ToString(); if (string.IsNullOrEmpty(orderNo) || string.IsNullOrEmpty(lineNo)) { result.Add("message", "第" + j.ToString() + "行编号,行号,不能为空,请检查数据!"); result.Add("flag", "error"); return false; } if (dtCheck.Rows[j]["收货数量"] is DBNull || dtCheck.Rows[j]["收货数量"].ToString().Trim().Length < 1) { result.Add("message", "第" + j.ToString() + "行物料收货数量不能为空,请检查数据!"); result.Add("flag", "error"); return false; } partNo = dtCheck.Rows[j]["物料号"].ToString().Trim(); partInfo = repository.getPartInfo(partNo); if (null == partInfo || partInfo.Count <= 0) { result.Add("message", string.Format("物料编码{0}不存在,请确认基础数据!", partNo)); result.Add("flag", "error"); return false; } uom = dtCheck.Rows[j]["物料单位"].ToString().Trim(); if (!partInfo[0].Unit.ToString().Trim().Equals(uom) && !partInfo[0].Uom1.ToString().Trim().Equals(uom) && !partInfo[0].Uom2.ToString().Trim().Equals(uom) && !partInfo[0].Uom3.ToString().Trim().Equals(uom)) { result.Add("message", string.Format("物料编码{0}单位不存在于零件基础数据中,无法导入,请检查!", partNo)); result.Add("flag", "error"); return false; } if (!partInfo[0].Unit.ToString().Trim().Equals(uom)) { result.Add("message", string.Format("物料编码{0}单位与标准单位不一致,取消导入!", partNo)); result.Add("flag", "error"); return false; } factoryCode = dtCheck.Rows[j]["收货工厂"].ToString().Trim(); factoryInfo = repository.getFactoryInfo(factoryCode); if (null == factoryInfo || factoryInfo.Count <= 0) { result.Add("message", string.Format("收货工厂{0}不存在,请确认基础数据!", factoryCode)); result.Add("flag", "error"); return false; } erpWarehouse = dtCheck.Rows[j]["收货库存地"].ToString().Trim(); erpWarehouseInfo = repository.getErpWarehouseInfo(erpWarehouse); if (null == erpWarehouseInfo || erpWarehouseInfo.Count <= 0) { result.Add("message", string.Format("收货库存地{0}不存在,请确认基础数据!", erpWarehouse)); result.Add("flag", "error"); return false; } customerCode = dtCheck.Rows[j]["客户编码"].ToString().Trim(); customerInfo = repository.getCustomerInfo(customerCode); if (null == customerInfo || customerInfo.Count <= 0) { result.Add("message", string.Format("客户编码{0}不存在,请确认基础数据!", customerCode)); result.Add("flag", "error"); return false; } if (dtCheck.Rows[j]["收货日期"].ToString().Length != 8) { result.Add("message", string.Format("收货日期{0}格式错误,请确认基础数据!", dtCheck.Rows[j]["收货日期"].ToString())); result.Add("flag", "error"); return false; } try { int resINT = int.Parse(dtCheck.Rows[j]["收货日期"].ToString()); double CountINT = double.Parse(dtCheck.Rows[j]["收货数量"].ToString()); } catch { result.Add("message", string.Format("收货日期或者收货数量格式错误,请确认基础数据!")); result.Add("flag", "error"); return false; } //循环遍历Excel的编号-行号不能重复 foreach (DataRow dr1 in dtCheck.Rows) { if ((orderNo + "-" + lineNo).Equals(dr1["退货交货单"].ToString().Trim() + "-" + dr1["Item"].ToString())) { isflag = isflag + 1; if (isflag > 1) { result.Add("message", string.Format("Excel里面有重复退交货单-Item:{0},无法新增!", orderNo + "-" + lineNo)); result.Add("flag", "error"); return false; } } } isflag = 0; sapRdnInfo = repository.getSapRdnInfo(orderNo, lineNo); if (sapRdnInfo.Count > 0) { result.Add("message", string.Format("退货交货单-Item:{0}已经存在,无法新增!!", orderNo + "-" + lineNo)); result.Add("flag", "error"); return false; } else { //插入指令 SqlStrings.Add(repository.getInsertSapRdn(dtCheck.Rows[j]["退货交货单"].ToString().Trim(), dtCheck.Rows[j]["Item"].ToString().Trim(), dtCheck.Rows[j]["收货工厂"].ToString(), dtCheck.Rows[j]["收货库存地"].ToString().Trim(), dtCheck.Rows[j]["收货日期"].ToString().Trim(), dtCheck.Rows[j]["客户编码"].ToString().Trim(), dtCheck.Rows[j]["物料号"].ToString().Trim(), dtCheck.Rows[j]["收货数量"].ToString().Trim(), dtCheck.Rows[j]["物料单位"].ToString().Trim())); } } bool res = repository.ExecuteSqlTransaction(SqlStrings); if (res) { result.Add("message", "导入成功!"); result.Add("flag", "OK"); } else { result.Add("message", "导入数据库失败!"); result.Add("flag", "error"); } return res; } #endregion } }