You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

797 lines
34 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using System.Data;
using System.Collections;
using System.Text;
using Estsh.Core.Models;
using Estsh.Core.Repository.IRepositories;
using Estsh.Core.Services.IServices;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using System.Text.RegularExpressions;
/***************************************************************************************************
*
* 更新人sitong.dong
* 描述:采购周计划导入
* 修改时间2022.06.22
* 修改日志:系统迭代升级
*
**************************************************************************************************/
namespace Estsh.Core.Services
{
/// <summary>
/// 采购周计划业务处理类
/// </summary>
public class PurchaseNoteService : BaseService<SysStock>, IPurchaseNoteService
{
#region 类局部变量
private System.Data.DataTable dtWeekSchedule = null;
private System.Data.DataTable dtDaySchedule = null;
private System.Data.DataTable dtWeekDate = null;
private bool isReadWeekDate = false;
private string[] strArrayWeekValue = null;
private const int ISTARTSHEETINDEX = 6; //起始SHEET值(不读取)
private const int IENDSHEETCOUNT = 3; //尾通用SHEET数量(不读取)
private const int ISTARTROWINDEX = 18; //数据起始行值
private const int ISTARTDATEINDEX = 7; //日期起始列值
private const int IENDDATEINDEX = 13; //日期结束列值
private const int IROWINTERVAL = 8; //上、下模板差值
private const int ICOLINTERVAL = 6; //左、右模板差值
private const int IFIRSTLETTER = 65; //起始字母值(A ASSIC value)
#endregion
private readonly IPurchaseNoteRepository repository;
public PurchaseNoteService(IPurchaseNoteRepository _repository) : base(_repository)
{
repository = _repository;
strArrayWeekValue = new string[7];
strArrayWeekValue[0] = "日";
strArrayWeekValue[1] = "一";
strArrayWeekValue[2] = "二";
strArrayWeekValue[3] = "三";
strArrayWeekValue[4] = "四";
strArrayWeekValue[5] = "五";
strArrayWeekValue[6] = "六";
isReadWeekDate = false;
}
/// <summary>
/// 读取采购订单文件并更新至数据库
/// </summary>
/// <param name="inputStream">文件全路径</param>
/// <param name="userInfo">登录用户信息</param>
public Hashtable ReadExcelFile(Stream inputStream, int userID)
{
HSSFWorkbook hsWorkbook = new HSSFWorkbook(inputStream);
Hashtable result = new Hashtable();
int iSheetCount = hsWorkbook.Workbook.NumSheets;
if (iSheetCount < 9)
{
result.Add("log","所选取周计划数据[Sheet]数量不足,请确认采购单格式!");
result.Add("message", "所选取周计划数据[Sheet]数量不足,请确认采购单格式!\r\n");
result.Add("flag","error");
return result;
}
if (!isReadWeekDate)
{
string strReadWeekDate = this.ReadWeekDate(hsWorkbook);
if (strReadWeekDate != "")
{
result.Add("log", strReadWeekDate);
result.Add("message", strReadWeekDate);
result.Add("flag", "error");
return result;
}
isReadWeekDate = true;
//this.ListBoxItemAdd(lstInfo, "[" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
// + "]:周数及对应日期读取成功!正在读取周计划表头数据,请稍候...");
//this.MessageShow(plInfo, lblInfo, "周数及对应日期读取成功!\r\n正在读取周计划表头数据请稍候...", 1);
//System.Windows.Forms.Application.DoEvents();
}
string strReadWeekResult = this.ReadWeekSchedule(hsWorkbook, iSheetCount,userID);
if (strReadWeekResult != "")
{
result.Add("log", strReadWeekResult);
result.Add("message", strReadWeekResult);
result.Add("flag", "error");
return result;
}
string strReadDayResult = this.ReadDaySchedule(hsWorkbook, iSheetCount);
if (strReadDayResult != "")
{
result.Add("log", strReadDayResult);
result.Add("message", strReadDayResult);
result.Add("flag", "error");
return result;
}
string strResult = this.repository.DataSaveTransact(dtWeekSchedule, dtDaySchedule, userID).Trim();
if (string.IsNullOrEmpty(strResult))
{
result.Add("log", "周计划数据文件更新成功!日程单已转结,请确认...\r\n周计划订单数据文件更新成功!");
result.Add("message", "周计划数据文件更新成功,日程单已转结,请确认!");
result.Add("flag", "success");
return result;
}
else
{
result.Add("log", "周计划数据文件更新失败!请重试...\r\n周计划订单数据文件更新失败!");
result.Add("message", "周计划数据文件更新失败,请重试!");
result.Add("flag", "error");
return result;
//#if DEBUG
//this.MessageShow(plInfo, lblInfo, strResult, 0);
//#endif
}
}
/// <summary>
/// 读取EXCEL周计划文件详细要货数据
/// </summary>
/// <param name="hsWorkbook">EXCEL工作簿对象</param>
/// <param name="iSheetCount">EXCEL工作表数量</param>
/// <returns></returns>
public string ReadDaySchedule(HSSFWorkbook hsWorkbook, int iSheetCount)
{
dtDaySchedule = new System.Data.DataTable();
dtDaySchedule.TableName = "DaySchedule";
DataColumn dcSeNo = new DataColumn("se_no", typeof(string)); //周计划单据号
DataColumn dcChNo = new DataColumn("ch_no", typeof(string)); //采购单
DataColumn dcSeDate = new DataColumn("se_date", typeof(string)); //送货日期
DataColumn dcSeTime = new DataColumn("se_time", typeof(string)); //送货时间
DataColumn dcElNo = new DataColumn("el_no", typeof(string)); //零件号
DataColumn dcBoxQty = new DataColumn("carton_qty", typeof(string)); //送货数量(箱数量)
DataColumn dcSnpQty = new DataColumn("snp_qty", typeof(string)); //标准包装规格
DataColumn dcQty = new DataColumn("qty", typeof(string)); //总数量
DataColumn dcProject = new DataColumn("se_project", typeof(string)); //项目
DataColumn dcChNoSheet = new DataColumn("ch_no_sheet", typeof(string)); //周计划单行采购订单
DataColumn dcSuNo = new DataColumn("su_no", typeof(string)); //供应商代码
DataColumn dcDayOrder = new DataColumn("day_order", typeof(string)); //日程单单据号
DataColumn dcVendorId = new DataColumn("vendor_id", typeof(string)); //供应商信息所属行ID
DataColumn dcPartId = new DataColumn("part_id", typeof(string)); //零件号信息所属行ID
DataColumn dcTypeId = new DataColumn("type_id", typeof(string)); //项目(车型)信息所属行ID
dtDaySchedule.Columns.AddRange(new DataColumn[] { dcSeNo, dcChNo, dcSeDate, dcSeTime, dcElNo
, dcBoxQty, dcSnpQty, dcQty, dcProject, dcChNoSheet, dcSuNo, dcDayOrder, dcVendorId, dcPartId, dcTypeId });
for (int i = ISTARTSHEETINDEX; i < iSheetCount - IENDSHEETCOUNT; i++)
{
//string strTemppp = dtWeekSchedule.Rows[i - ISTARTSHEETINDEX][19].ToString().Trim().ToUpper();
if (dtWeekSchedule.Rows[i - ISTARTSHEETINDEX]["is_print"].ToString().Trim().ToUpper() != "Y")
{
continue;
}
string strSuNo = dtWeekSchedule.Rows[i - ISTARTSHEETINDEX]["su_no"].ToString().Trim().ToUpper();
string strSeNo = dtWeekSchedule.Rows[i - ISTARTSHEETINDEX]["se_no"].ToString().Trim().ToUpper();
string strVendorId = dtWeekSchedule.Rows[i - ISTARTSHEETINDEX]["vendor_id"].ToString().Trim().ToUpper();
HSSFSheet hsSheet = (HSSFSheet)hsWorkbook.GetSheetAt(i);
//string strSupplierCode = dtWeekSchedule.Rows[i - ISTARTSHEETINDEX][1].ToString();
string strChNo = dtWeekSchedule.Rows[0][1].ToString();
for (int j = ISTARTROWINDEX; j < 65535; j++)
{
HSSFCell hsCell = (HSSFCell)hsSheet.GetRow(j).GetCell(0);
string strElNo = this.GetCellValue(hsCell).Trim();
if (strElNo == "备注")
{
break;
}
hsCell = (HSSFCell)hsSheet.GetRow(j).GetCell(6);
if (this.GetCellValue(hsCell).Trim() == "")
{
break;
}
//标准包装获取
hsCell = (HSSFCell)hsSheet.GetRow(j).GetCell(5);
string strSnp = this.GetCellValue(hsCell);
hsCell = (HSSFCell)hsSheet.GetRow(j).GetCell(2);
string strProject = this.GetCellValue(hsCell).ToUpper().Replace(" ", "");
hsCell = (HSSFCell)hsSheet.GetRow(j).GetCell(3);
strChNo = this.GetCellValue(hsCell).ToUpper().Trim();
if (strElNo == "")
{
//同零件多送货时间,寻找第一送货时间点的零件号及标准包装
for (int n = j; n >= ISTARTROWINDEX; n--)
{
hsCell = (HSSFCell)hsSheet.GetRow(n).GetCell(0);
string strTempCellValue = this.GetCellValue(hsCell).Trim();
if (strTempCellValue == "")
{
continue;
}
strElNo = strTempCellValue;
hsCell = (HSSFCell)hsSheet.GetRow(n).GetCell(5);
strSnp = this.GetCellValue(hsCell);
hsCell = (HSSFCell)hsSheet.GetRow(n).GetCell(2);
strProject = this.GetCellValue(hsCell);
hsCell = (HSSFCell)hsSheet.GetRow(n).GetCell(3);
strChNo = this.GetCellValue(hsCell);
break;
}
}
if (strElNo == "")
{
return "第[" + Convert.ToString(j + 1) +
"]行,零件号读取错误!\r\nSheet Name:[" + hsSheet.SheetName + "]";
}
string partId = this.repository.QueryPartId(strElNo);
if (string.IsNullOrEmpty(partId))
{
return "第[" + Convert.ToString(j + 1) +
"]行,零件号信息查询错误!\r\nSheet Name:[" + hsSheet.SheetName + "]";
}
if (!this.IsNumeric(strSnp))
{
return "第[" + Convert.ToString(j + 1) +
"]行,零件标准包装读取错误!\r\nSheet Name:[" + hsSheet.SheetName + "]";
}
int iSnp = Convert.ToInt32(strSnp);
if (iSnp < 1)
{
return "第[" + Convert.ToString(j + 1) +
"]行,零件标准包装配置有误!\r\nSheet Name:[" + hsSheet.SheetName + "]";
}
int snpTemp = this.repository.QueryPartSnp(partId);
if (snpTemp < 1)
{
return "第[" + Convert.ToString(j + 1) +
"]行,无此零件配置信息或标准包装配置有误!\r\nSheet Name:[" + hsSheet.SheetName + "]";
}
if (strSnp != snpTemp.ToString())
{
return "第[" + Convert.ToString(j + 1) + "]行,此零件标准包装[" + strSnp + "]与系统配置数据[" +
snpTemp.ToString() + "]不符!\r\nSheet Name:[" + hsSheet.SheetName + "]";
}
string itemId = this.repository.QueryItemId(strProject);
if (string.IsNullOrEmpty(itemId))
{
return "第[" + Convert.ToString(j + 1) + "]行,此零件所属项目[" + strProject +
"]信息未配置或与系统不符!\r\nSheet Name:[" + hsSheet.SheetName + "]";
}
if (!this.repository.ValidatePurNo(strChNo, strElNo))
{
return "第[" + Convert.ToString(j + 1) + "]行,此零件所属采购单号[" + strChNo +
"]信息验证失败请确认QAD采购单数据已同步!\r\nSheet Name:[" + hsSheet.SheetName + "]";
}
hsCell = (HSSFCell)hsSheet.GetRow(j).GetCell(6);
string strTime = this.GetTimeCellValue(hsCell);
if (strTime == "")
{
return "第[" + Convert.ToString(j + 1) +
"]行,送货时间读取错误!\r\nSheet Name:[" + hsSheet.SheetName + "]";
}
string strDateNow = this.repository.GetApDateTime(0);
if (strDateNow == "")
{
return "服务器日期获取错误!\r\nSheet Name:[" + hsSheet.SheetName + "]";
}
for (int k = ISTARTDATEINDEX; k <= IENDDATEINDEX; k++)
{
//判断文件内日期是否早于服务器日期
string strSeDate = dtWeekDate.Rows[k - ISTARTDATEINDEX][1].ToString();
if (strSeDate.CompareTo(strDateNow) < 0)
{
continue;
}
hsCell = (HSSFCell)hsSheet.GetRow(j).GetCell(k);
string strSendQty = this.GetCellValue(hsCell);
if (strSendQty == "0" || strSendQty == "")
{
continue;
}
if (!this.IsNumeric(strSendQty))
{
return "第[" + Convert.ToString(j + 1) + "]行,第[" + Convert.ToString(k + 1) +
"]列,数据格式错误!\r\nSheet Name:[" + hsSheet.SheetName + "]"; ;
}
int iSendQty = Convert.ToInt32(strSendQty);
//int iBoxQty = iSendQty / iSnp;
int iBoxQty = (int)Math.Ceiling(Convert.ToDouble(iSendQty) / iSnp);
DataRow dr = dtDaySchedule.NewRow();
dr["se_no"] = strSeNo;
dr["ch_no_sheet"] = dtWeekSchedule.Rows[i - ISTARTSHEETINDEX]["ch_no"].ToString();
dr["ch_no"] = strChNo;
dr["se_date"] = strSeDate;
dr["se_time"] = strTime;
dr["el_no"] = strElNo;
dr["carton_qty"] = iBoxQty.ToString();
dr["snp_qty"] = strSnp;
dr["qty"] = strSendQty;
dr["se_project"] = strProject;
dr["su_no"] = strSuNo;
dr["day_order"] = "DR" + strSeDate.Replace("/", "");
dr["vendor_id"] = strVendorId;
dr["part_id"] = partId;
dr["type_id"] = itemId;
dtDaySchedule.Rows.Add(dr);
}
}
}
if (dtDaySchedule == null || dtDaySchedule.Rows.Count < 1)
{
return "所选择采购周计划订单文件未读取到任何数据,请确认文件格式!";
}
DataView dvDaySchedule = new DataView();
dvDaySchedule = dtDaySchedule.Copy().DefaultView;
dvDaySchedule.Sort = "el_no,se_date,se_time";
dtDaySchedule.Clear();
dtDaySchedule = dvDaySchedule.ToTable();
return "";
}
/// <summary>
/// 获取周计划段内详细日期数据
/// </summary>
/// <param name="hsWorkbook">工作簿对象</param>
/// <returns></returns>
public string ReadWeekDate(HSSFWorkbook hsWorkbook)
{
dtWeekDate = new System.Data.DataTable();
dtWeekDate.TableName = "WeekDate";
DataColumn dcWeekNo = new DataColumn("week_no", typeof(string)); //周数
DataColumn dcDayValue = new DataColumn("day_value", typeof(string)); //日期
DataColumn dcWeekValue = new DataColumn("week_value", typeof(string)); //星期值
dtWeekDate.Columns.AddRange(new DataColumn[] { dcWeekNo, dcDayValue, dcWeekValue });
HSSFSheet hsSheet = (HSSFSheet)hsWorkbook.GetSheetAt(ISTARTDATEINDEX - 1);
for (int i = ISTARTDATEINDEX; i <= IENDDATEINDEX; i++)
{
DataRow dr = dtWeekDate.NewRow();
HSSFCell hsCell = (HSSFCell)hsSheet.GetRow(15).GetCell(i);
string strWeekNo = this.GetCellValue(hsCell);
int iWeekNo = 0;
try
{
iWeekNo = Convert.ToInt32(strWeekNo);
}
catch
{
return "订单数据所属周数读取错误,请确认订单格式!\r\nSheet Name:[" + hsSheet.SheetName + "]";
}
if (iWeekNo < 10)
{
dr["week_no"] = "0" + strWeekNo;
}
else
{
dr["week_no"] = strWeekNo;
}
hsCell = (HSSFCell)hsSheet.GetRow(16).GetCell(i);
DateTime dtTemp = DateTime.FromOADate(Convert.ToInt32(this.GetCellValue(hsCell)));
//dr[1] = dtTemp.ToShortDateString().Replace("-", "/");
dr["day_value"] = dtTemp.ToString("yyyy/MM/dd").Replace('-', '/');
dr["week_value"] = strArrayWeekValue[(int)dtTemp.DayOfWeek];
if (dr["week_no"].ToString() == "" || dr["day_value"].ToString() == "" || dr["week_value"].ToString() == "")
{
return "订单周数及日期查询错误,请确认订单格式!\r\nSheet Name:[" + hsSheet.SheetName + "]";
}
dtWeekDate.Rows.Add(dr);
}
return "";
}
/// <summary>
/// 获取EXCEL周计划文件内各供应商表头信息
/// </summary>
/// <param name="hsWorkbook">工作簿对象</param>
/// <param name="iSheetCount">工作表数量</param>
/// <returns></returns>
public string ReadWeekSchedule(HSSFWorkbook hsWorkbook, int iSheetCount,int userID)
{
dtWeekSchedule = new System.Data.DataTable();
dtWeekSchedule.TableName = "WeekSchedule";
DataColumn dcSeNo = new DataColumn("se_no", typeof(string)); //周计划单
DataColumn dcSuNo = new DataColumn("su_no", typeof(string)); //供应商代码
DataColumn dcChNo = new DataColumn("ch_no", typeof(string)); //采购单
DataColumn dcSuContact = new DataColumn("su_contact", typeof(string)); //供应商联系人
DataColumn dcSuTel = new DataColumn("su_tel", typeof(string));
DataColumn dcSuFax = new DataColumn("su_fax", typeof(string));
DataColumn dcSuMtel = new DataColumn("su_mtel", typeof(string));
DataColumn dcSuAddr = new DataColumn("su_addr", typeof(string));
DataColumn dcSuMile = new DataColumn("su_mile", typeof(string));
DataColumn dcSeDate = new DataColumn("se_date", typeof(string));
DataColumn dcSeAddr = new DataColumn("se_addr", typeof(string));
DataColumn dcSeContact = new DataColumn("se_contact", typeof(string));
DataColumn dcSeTel = new DataColumn("se_tel", typeof(string));
DataColumn dcSeMtel = new DataColumn("se_mtel", typeof(string));
DataColumn dcSeFax = new DataColumn("se_fax", typeof(string));
DataColumn dcSeMile = new DataColumn("se_mile", typeof(string));
DataColumn dcWaNo = new DataColumn("wa_no", typeof(string));
DataColumn dcSeWeek = new DataColumn("se_week", typeof(string));
DataColumn dcRtdSure = new DataColumn("rtd_sure", typeof(string));
DataColumn dcIsPrint = new DataColumn("is_print", typeof(string));
DataColumn dcSuPwd = new DataColumn("su_pwd", typeof(string));
DataColumn dcIssId = new DataColumn("iss_id", typeof(string));
DataColumn dcVendorId = new DataColumn("vendor_id", typeof(string));
dtWeekSchedule.Columns.AddRange(new DataColumn[] { dcSeNo, dcSuNo, dcChNo, dcSuContact,
dcSuTel, dcSuFax, dcSuMtel, dcSuAddr, dcSuMile, dcSeDate, dcSeAddr, dcSeContact,
dcSeTel, dcSeMtel, dcSeFax, dcSeMile, dcWaNo, dcSeWeek, dcRtdSure, dcIsPrint ,dcSuPwd ,dcVendorId ,dcIssId });
HSSFSheet hsSheet = new HSSFSheet(hsWorkbook);
for (int i = ISTARTSHEETINDEX; i < iSheetCount - IENDSHEETCOUNT; i++)
{
hsSheet = (HSSFSheet)hsWorkbook.GetSheetAt(i);
string[] strArrayTemp = null;
strArrayTemp = this.GetSupplierInfo(hsSheet,userID);
if (strArrayTemp[0] != "")
{
return strArrayTemp[0];
}
string strSeWeek = dtWeekDate.Rows[0]["week_no"].ToString();
DataRow dr = dtWeekSchedule.NewRow();
dr["se_no"] = "WR" + this.repository.GetServerDateTime("YYYY") + strSeWeek;
for (int j = 1; j <= 16; j++)
{
dr[j] = strArrayTemp[j];
}
dr["se_week"] = strSeWeek;
dr["rtd_sure"] = "N";
dr["is_print"] = strArrayTemp[19];
dr["su_pwd"] = strArrayTemp[20];
dr["vendor_id"] = strArrayTemp[21];
dr["iss_id"] = strArrayTemp[22];
dtWeekSchedule.Rows.Add(dr);
}
return "";
}
public string[] GetSupplierInfo(HSSFSheet hsSheet,int userID)
{
string[] strArrayInfo = new string[23];
strArrayInfo[0] = "";
string factoryId = this.repository.GetFactoryId(userID);
if (string.IsNullOrEmpty(factoryId))
{
strArrayInfo[0] = "登录用户所属厂区信息查询错误!";
return strArrayInfo;
}
HSSFCell hsCell = (HSSFCell)hsSheet.GetRow(5).GetCell(0);
string strSupplierCode = this.SeparateByColon(GetCellValue(hsCell));
if (strSupplierCode == "")
{
strArrayInfo[0] = "供应商代码查询错误,请确认订单格式!\r\nSheet Name:[" + hsSheet.SheetName + "]";
return strArrayInfo;
}
strArrayInfo[1] = strSupplierCode.Trim().ToUpper(); //su_no:供应商代码
hsCell = (HSSFCell)hsSheet.GetRow(7).GetCell(0);
string strBuyerNo = this.SeparateByColon(GetCellValue(hsCell)).ToUpper();
if (strBuyerNo == "")
{
strArrayInfo[0] = "采购单号查询错误,请确认订单格式!\r\nSheet Name:[" + hsSheet.SheetName + "]";
return strArrayInfo;
}
strArrayInfo[2] = strBuyerNo; //ch_no:采购单
List<SysVendor> dtTemp = this.repository.QuerySupplierInfo(strSupplierCode);
if (dtTemp != null && dtTemp.Count > 0)
{
strArrayInfo[3] = dtTemp[0].VendorSale.ToString(); //su_contact:供应商联系人
strArrayInfo[4] = dtTemp[0].VendorTel.ToString(); //su_tel:供应商电话
strArrayInfo[5] = dtTemp[0].VendorFax.ToString(); //su_fax:供应商传真
strArrayInfo[6] = dtTemp[0].VendorMtel.ToString(); //su_mtel:供应商移动电话
strArrayInfo[7] = dtTemp[0].VendorAddr.ToString(); //su_addr:供应商联系地址
strArrayInfo[8] = dtTemp[0].VendorMail.ToString(); //su_mile:供应商联系Mail
strArrayInfo[19] = dtTemp[0].IsPrint.ToString().Trim().ToUpper(); //供应商是否要打印打码
strArrayInfo[20] = dtTemp[0].VendorPwd.ToString().Trim().ToUpper();//供应商压缩密码
strArrayInfo[21] = dtTemp[0].VendorId.ToString().Trim(); //供应商信息所属行ID
}
else
{
strArrayInfo[0] = "供应商[" + strSupplierCode +
"]信息查询错误,请确认供应商基本信息已维护!\r\nSheet Name:[" + hsSheet.SheetName + "]";
return strArrayInfo;
}
hsCell = (HSSFCell)hsSheet.GetRow(5).GetCell(10);
string strSeDate = this.GetCellValue(hsCell);
if (strSeDate == "")
{
strArrayInfo[0] = "下单日期查询错误,请确认订单格式!\r\nSheet Name:[" + hsSheet.SheetName + "]";
return strArrayInfo;
}
strArrayInfo[9] = DateTime.FromOADate(Convert.ToInt32(strSeDate)).ToString("yyyy/MM/dd").Replace("-", "/"); //se_date:送货日期
hsCell = (HSSFCell)hsSheet.GetRow(7).GetCell(6);
string strOrderName = this.SeparateByColon(GetCellValue(hsCell));
if (strOrderName == "")
{
strArrayInfo[0] = "下单员信息查询错误,请确认订单格式!\r\nSheet Name:[" + hsSheet.SheetName + "]";
return strArrayInfo;
}
List<SysIssuser> dtiss = this.repository.QueryOrderInfo(strOrderName);
if (dtiss != null && dtiss.Count > 0)
{
strArrayInfo[10] = dtiss[0].IssAddr.ToString(); //se_addr:订单员联系地址
strArrayInfo[11] = dtiss[0].IssName.ToString(); //se_contact:订单员姓名
strArrayInfo[12] = dtiss[0].IssTel.ToString(); //se_tel:订单员电话
strArrayInfo[13] = dtiss[0].IssMtel.ToString(); //se_mtel:订单员移动电话
strArrayInfo[14] = dtiss[0].IssFax.ToString(); //se_fax:订单员传真
strArrayInfo[15] = dtiss[0].IssMail.ToString(); //se_mile:订单员联系Mail
strArrayInfo[22] = dtiss[0].IssId.ToString(); //订单员信息所属行ID
}
else
{
strArrayInfo[0] = "订单员[" + strOrderName +
"]信息查询错误,请确认订单员基本信息已维护!\r\nSheet Name:[" + hsSheet.SheetName + "]";
return strArrayInfo;
}
strArrayInfo[16] = factoryId; //wa_no:厂别
return strArrayInfo;
}
/// <summary>
/// NPOI获取EXCEL工作表中单元格内容
/// </summary>
/// <param name="hsCell">EXCEL单元格对象</param>
/// <returns></returns>
public string GetCellValue(HSSFCell hsCell)
{
if (hsCell == null)
{
return "";
}
switch (hsCell.CellType)
{
case CellType.Numeric:
return hsCell.NumericCellValue.ToString();
case CellType.Formula:
return hsCell.NumericCellValue.ToString();
case CellType.String:
return hsCell.StringCellValue;
case CellType.Boolean:
return hsCell.BooleanCellValue.ToString();
default:
return "";
}
}
/// <summary>
/// NPOI获取EXCEL工作表中时间类型单元格内容
/// </summary>
/// <param name="hsCell">EXCEL单元格对象</param>
/// <returns></returns>
public string GetTimeCellValue(HSSFCell hsCell)
{
if (hsCell == null)
{
return "";
}
if (hsCell.CellType != CellType.Numeric)
{
return "";
}
string strResult = hsCell.DateCellValue.ToString();
try
{
DateTime dt = Convert.ToDateTime(strResult);
strResult = dt.ToString("HH:mm");
}
catch
{
return "";
}
if (strResult.Length > 1)
{
string strLastChar = strResult.Substring(strResult.Length - 1, 1);
if (strLastChar == ":" || strLastChar == "")
{
strResult = strResult.Substring(0, strResult.Length - 1);
}
}
return strResult;
}
/// <summary>
/// separate the string by colon
/// </summary>
/// <param name="src">source string</param>
/// <returns>return part content as string</returns>
public string SeparateByColon(string src)
{
string split = ":";
string[] strArray = null;
src = src.Replace("", split);
if (src.IndexOf(split) < 0)
{
return "";
}
strArray = src.Split(split.ToCharArray());
if (strArray.Length > 2)
{
string strTemp = "";
for (int i = 1; i < strArray.Length; i++)
{
if (strTemp == "")
{
strTemp += strArray[i];
}
else
{
strTemp += split + strArray[i];
}
}
return strTemp;
}
else
{
return strArray[1];
}
}
/// <summary>
/// separate the string by split string & flag
/// </summary>
/// <param name="src">source string</param>
/// <param name="split">split string</param>
/// <param name="flag">part flag</param>
/// <returns>return part content as string</returns>
public string Separater(string src, string split, int flag)
{
string[] strArray = null;
if (src.IndexOf(split) < 0)
{
if (flag == 0)
{
return src;
}
else
{
return "";
}
}
strArray = src.Split(split.ToCharArray());
if (flag == 0)
{
return strArray[0].Trim();
}
else
{
if (strArray.Length > 2)
{
string strTemp = "";
for (int i = 1; i < strArray.Length; i++)
{
if (strTemp == "")
{
strTemp += strArray[i];
}
else
{
strTemp += split + strArray[i];
}
}
return strTemp;
}
else
{
return strArray[1];
}
}
}
/// <summary>
/// verdict the src is number
/// </summary>
/// <param name="src">source string</param>
/// <returns>return a value as bool</returns>
public bool IsNumeric(string src)
{
if (src == "")
{
return false;
}
if (src.Substring(0, 1) == "-")
{
src = src.Substring(1);
}
Regex regex = new Regex("[0-9]");
for (int i = 0; i < src.Length; i++)
{
if (!regex.IsMatch(src.Substring(i, 1)))
{
return false;
}
}
return true;
}
/// <summary>
/// 获取日期、时间
/// </summary>
/// <returns></returns>
public string GetDateTimeFlag()
{
int iStartCount = 30;
int iEndCount = 255;
StringBuilder sbResult = new StringBuilder();
sbResult.Length = 0;
for (int i = 0; i < iStartCount; i++)
{
sbResult.Append("-");
}
sbResult.Append("[" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "]");
for (int i = 0; i < iEndCount; i++)
{
sbResult.Append("-");
}
return sbResult.ToString();
}
}
}