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.

365 lines
16 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 Aspose.Cells;
using Estsh.Core.Models;
using Estsh.Core.Repository.IRepositories;
using Estsh.Core.Services.IServices;
using Estsh.Core.Model.Result;
/***************************************************************************************************
*
* 更新人sitong.dong
* 描述:采购周计划条码导出业务类
* 修改时间2022.06.22
* 修改日志:系统迭代升级
*
**************************************************************************************************/
namespace Estsh.Core.Services
{
/// <summary>
/// 采购周计划条码导出业务处理类
/// </summary>
public class PurchaseExportService : BaseService<SysVendor>, IPurchaseExportService
{
private readonly IPurchaseExportRepository repository;
public PurchaseExportService(IPurchaseExportRepository _repository) : base(_repository)
{
repository = _repository;
}
#region 类局部变量
private const int IROWINTERVAL = 8; //上、下模板差值
private const int ICOLINTERVAL = 6; //左、右模板差值
private const int IFIRSTLETTER = 65; //起始字母值(A ASSIC value)
private const int ISTANDARDCOUNT = 8; //每页打印箱数量
//private Excel.Application app;
//private Excel.Workbooks wbs;
//private Excel.Workbook wb;
//private Excel.Worksheets wss;
//private Excel.Worksheet ws;
#endregion
/// <summary>
/// 获取要货单数据
/// </summary>
/// <returns></returns>
public List<KeyValueResult> getOrderList(String dtpSeDate)
{
return repository.getOrderList(dtpSeDate);
}
/// <summary>
/// 获取要货供应商列表
/// </summary>
/// <returns></returns>
public List<KeyValueResult> geVendorList(String orderNo)
{
return repository.geVendorList(orderNo);
}
/// <summary>
/// 导出采购周计划条码信息
/// </summary>
/// <param name="orderNo"></param>
/// <param name="vendorCode"></param>
/// <param name="excelTemplate"></param>
/// <returns></returns>
public Hashtable ExportDataToExcel(string folder, string orderNo, string vendorCode, string excelTemplate)
{
DataTable dtBarcode = new DataTable();
Hashtable result = new Hashtable();
//dtBarcode = this.repository.GetBarcodeData(orderNo, vendorCode);
//if (dtBarcode == null || dtBarcode.Rows.Count < 1)
//{
// result.Add("log", "[" + orderNo + "]:此要货单没有任何条码数据,请确认输入!");
// result.Add("message", "[" + orderNo + "]:此要货单没有任何条码数据,请确认输入!");
// result.Add("flag", "error");
// return result;
//}
//ArrayList alSuNo = new ArrayList();
//ArrayList alSuPwd = new ArrayList();
//for (int i = 0; i < dtBarcode.Rows.Count; i++)
//{
// string strSuNoTemp = dtBarcode.Rows[i]["vendor_code"].ToString().Trim().ToUpper();
// bool isFind = false;
// foreach (string item in alSuNo)
// {
// if (item.Trim().ToUpper() == strSuNoTemp)
// {
// isFind = true;
// break;
// }
// }
// if (isFind)
// {
// continue;
// }
// string strSuPwd = this.repository.QuerySupplierPwd(strSuNoTemp);
// if (string.IsNullOrEmpty(strSuNoTemp))
// {
// result.Add("log", "[" + strSuNoTemp + "]:不存在此供应商数据或供应商密码未维护,请确认配置!");
// result.Add("message", "[" + strSuNoTemp + "]:不存在此供应商数据或供应商密码未维护,请确认配置!");
// result.Add("flag", "error");
// return result;
// }
// alSuPwd.Add(strSuPwd);
// alSuNo.Add(strSuNoTemp);
//}
//string strZipPath = folder + DateTime.Now.Ticks.ToString() + "\\";
//if (!Directory.Exists(strZipPath))
//{
// Directory.CreateDirectory(strZipPath);
//}
//try
//{
// for (int i = 0; i < alSuNo.Count; i++)
// {
// string strSuPwd = alSuPwd[i].ToString().Trim(); //su_pwd
// string strSheetName = alSuNo[i].ToString().Trim(); //su_no
// string strXlsName = orderNo + "-" + strSheetName + ".xls";
// string strXlsFullName = strZipPath + strXlsName;
// string strZipName = orderNo + "-" + strSheetName + ".zip";
// string strZipFullName = strZipPath + strZipName;
// DataRow[] drSuLoop = dtBarcode.Select("vendor_code='" + strSheetName + "'");
// if (drSuLoop.Length < 1)
// {
// continue;
// }
// Excel.Application app = new Excel.Application();
// app.Visible = false;
// //打开模板文件获得WorkBook对象
// Excel.Workbook workBook = app.Workbooks.Open(excelTemplate, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
// Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
// string strExportResult = this.WriteDataToExcel(drSuLoop, orderNo, strSheetName, strXlsFullName, workBook);
// workBook.Close(null, null, null);
// app.Workbooks.Close();
// app.Application.Quit();
// app.Quit();
// System.Runtime.InteropServices.Marshal.ReleaseComObject(workBook);
// System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
// workBook = null;
// app = null;
// GC.Collect();
// //压缩数据
// ZipHelper.Zip(strXlsFullName, strZipFullName, strSuPwd);
// if (File.Exists(strZipFullName))
// {
// File.Delete(strXlsFullName);
// }
// }
// String zipFile = folder + DateTime.Now.Ticks.ToString()+".zip";
// ZipHelper.Zip(strZipPath, zipFile, "");
// if (Directory.Exists(strZipPath))
// {
// Directory.Delete(strZipPath,true);
// }
// result.Add("fileName",zipFile);
// result.Add("log", "[" + orderNo + "]:此要货单数据文件已成功导出!");
// result.Add("message", "[" + orderNo + "]:此要货单箱条码数据文件已生成!");
// result.Add("flag", "success");
//}
//catch (Exception e)
//{
// if (Directory.Exists(strZipPath))
// {
// Directory.Delete(strZipPath, true);
// }
// result.Add("log", "[" + orderNo + "]:此要货单导出异常!" + e.Message);
// result.Add("message", "[" + orderNo + "]:此要货单导出异常!" + e.Message);
// result.Add("flag", "error");
//}
return result;
}
/// <summary>
/// 导出到Excel
/// </summary>
/// <param name="drLoop"></param>
/// <param name="orderNo"></param>
/// <param name="sheetName"></param>
/// <param name="fileFullPath"></param>
/// <param name="workBook"></param>
/// <returns></returns>
private string WriteDataToExcel(DataRow[] drLoop, string orderNo, string sheetName, string fileFullPath, Workbook workBook)
{
int iRecordCount = drLoop.Length;
int iPageCount = iRecordCount % ISTANDARDCOUNT;
if (iPageCount == 0)
{
iPageCount = iRecordCount / ISTANDARDCOUNT;
}
else
{
iPageCount = (iRecordCount / ISTANDARDCOUNT) + 1;
}
//Excel.Worksheet workSheetSn = (Excel.Worksheet)workBook.Sheets.get_Item(1);
//workSheetSn.Activate();
//for (int j = 0; j < iPageCount; j++)
//{
// int iCurrentPage = j + 1;
// int iStartRecord = (iCurrentPage - 1) * ISTANDARDCOUNT;
// int iEndRecord = (iCurrentPage * ISTANDARDCOUNT) - 1;
// if (iEndRecord >= iRecordCount)
// {
// iEndRecord = iRecordCount - 1;
// }
// ((Excel.Worksheet)workBook.Worksheets.get_Item(iCurrentPage)).Copy(Missing.Value, workBook.Worksheets[iCurrentPage]);
// Excel.Sheets m_objSheets = null;
// Excel._Worksheet m_objSheet = null;
// Excel.Range m_objRange = null;
// m_objSheets = (Excel.Sheets)workBook.Worksheets;
// m_objSheet = (Excel._Worksheet)(m_objSheets.get_Item(iCurrentPage));
// m_objSheet.Name = sheetName + "-" + iCurrentPage.ToString("0000");
// int iIndexInPage = 0;
// for (int k = iStartRecord; k <= iEndRecord; k++)
// {
// iIndexInPage++;
// int iRowDiff = (iIndexInPage + 1) / 2;
// int iColDiff = (iIndexInPage + 1) % 2;
// ArrayList alData = new ArrayList();
// DataRow drItem = (DataRow)drLoop[k];
// int iIndex = k + 1;
// alData.Add(drItem["carton_no"].ToString().Trim()); //el_sno
// alData.Add(drItem["qty"].ToString().Trim()); //el_qty
// alData.Add(drItem["part_no"].ToString().Trim()); //el_no
// alData.Add(drItem["lot_no"].ToString().Trim()); //lot_no
// alData.Add(drItem["part_spec"].ToString().Trim()); //el_name
// alData.Add(iIndex.ToString() + @"/" + iRecordCount.ToString()); //iBoxIndex/iBoxCount
// alData.Add(orderNo);
// int iVendorLength = drItem["vendor_name"].ToString().Trim().Length;
// if (iVendorLength > 8)
// {
// iVendorLength = 8;
// }
// alData.Add(drItem["vendor_name"].ToString().Trim().Substring(0, iVendorLength)); //su_name
// alData.Add(drItem["buy_no"].ToString().Trim()); //ch_no-->pur_no
// string strColName = ((char)IFIRSTLETTER).ToString();
// if (iColDiff > 0)
// {
// strColName = ((char)(IFIRSTLETTER + ICOLINTERVAL)).ToString();
// }
// int iColValue = (iRowDiff - 1) * IROWINTERVAL;
// int iRowIndexFact = 0;
// string strCellName = string.Empty;
// #region Fill Excel content
// iRowIndexFact = iColValue + 1;
// strCellName = strColName + iRowIndexFact.ToString();
// m_objRange = m_objSheet.get_Range(strCellName, Missing.Value);
// m_objRange.Value2 = "*" + alData[0].ToString() + "*";
// iRowIndexFact++;
// strCellName = strColName + iRowIndexFact.ToString();
// m_objRange = m_objSheet.get_Range(strCellName, Missing.Value);
// m_objRange.Value2 = "标签号:" + alData[0].ToString();
// iRowIndexFact++;
// strCellName = strColName + iRowIndexFact.ToString();
// m_objRange = m_objSheet.get_Range(strCellName, Missing.Value);
// m_objRange.Value2 = "零件号:" + alData[2].ToString();
// iRowIndexFact++;
// strCellName = strColName + iRowIndexFact.ToString();
// m_objRange = m_objSheet.get_Range(strCellName, Missing.Value);
// m_objRange.Value2 = "描述:" + alData[4].ToString();
// iRowIndexFact++;
// strCellName = strColName + iRowIndexFact.ToString();
// m_objRange = m_objSheet.get_Range(strCellName, Missing.Value);
// m_objRange.Value2 = "要货单:" + alData[6].ToString();
// iRowIndexFact++;
// strCellName = strColName + iRowIndexFact.ToString();
// m_objRange = m_objSheet.get_Range(strCellName, Missing.Value);
// m_objRange.Value2 = "采购单:" + alData[8].ToString();
// iRowIndexFact++;
// strCellName = strColName + iRowIndexFact.ToString();
// m_objRange = m_objSheet.get_Range(strCellName, Missing.Value);
// m_objRange.Value2 = "";// "状态:";
// strColName = ((char)(IFIRSTLETTER + 3)).ToString();
// if (iColDiff > 0)
// {
// strColName = ((char)(IFIRSTLETTER + 3 + ICOLINTERVAL)).ToString();
// }
// iRowIndexFact = 0;
// strCellName = string.Empty;
// iRowIndexFact = iColValue + 2;
// strCellName = strColName + iRowIndexFact.ToString();
// m_objRange = m_objSheet.get_Range(strCellName, Missing.Value);
// m_objRange.Value2 = "数量:" + alData[1].ToString();
// iRowIndexFact++;
// strCellName = strColName + iRowIndexFact.ToString();
// m_objRange = m_objSheet.get_Range(strCellName, Missing.Value);
// m_objRange.Value2 = "批号:" + alData[3].ToString();
// iRowIndexFact++;
// strCellName = strColName + iRowIndexFact.ToString();
// m_objRange = m_objSheet.get_Range(strCellName, Missing.Value);
// m_objRange.Value2 = "箱号:" + alData[5].ToString();
// iRowIndexFact++;
// strCellName = strColName + iRowIndexFact.ToString();
// m_objRange = m_objSheet.get_Range(strCellName, Missing.Value);
// m_objRange.Value2 = "供应商:" + alData[7].ToString();
// strColName = ((char)(IFIRSTLETTER + 2)).ToString();
// if (iColDiff > 0)
// {
// strColName = ((char)(IFIRSTLETTER + 2 + ICOLINTERVAL)).ToString();
// }
// iRowIndexFact = iColValue + 6;
// strCellName = strColName + iRowIndexFact.ToString();
// m_objRange = m_objSheet.get_Range(strCellName, Missing.Value);
// m_objRange.Value2 = "";// "供应商批号:";
// #endregion
// }
//}
//if (File.Exists(fileFullPath))
//{
// File.Delete(fileFullPath);
//}
////workBook.WritePassword = "111";
////workBook.Password = "222";
//workBook.SaveAs(fileFullPath, Missing.Value, Missing.Value, Missing.Value,
// Missing.Value, Missing.Value, Excel.XlSaveAsAccessMode.xlExclusive,
// Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
//System.Runtime.InteropServices.Marshal.ReleaseComObject(workSheetSn);
//workSheetSn = null;
return "";
}
}
}