|
|
|
@ -398,7 +398,7 @@ namespace DAJYun.Application
|
|
|
|
|
/// <param name="bytes">文件流二进制</param>
|
|
|
|
|
/// <param name="modifySIDateType">样单截止时间变更类型</param>
|
|
|
|
|
/// <returns>返回变更后的文件流</returns>
|
|
|
|
|
public static MemoryStream GetModifyPDF(byte[] bytes,string modifySIDateType = "Kangqian")
|
|
|
|
|
public static MemoryStream GetModifyPDF(byte[] bytes, DrawModifyBCConfig drawModifyBCConfig = null)
|
|
|
|
|
{
|
|
|
|
|
var logger = Log.CreateLogger($"{nameof(PDFReaderHelper)}.GetModifyPDF");
|
|
|
|
|
|
|
|
|
@ -520,15 +520,15 @@ namespace DAJYun.Application
|
|
|
|
|
3、周一至周五,12点以后的,调整到当天的10点
|
|
|
|
|
4、周末的调整到周五的15点
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
if (modifySIDateType == "Kangqian")
|
|
|
|
|
{
|
|
|
|
|
siDate = SICutDateCalculate(siDate);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
siDate = siDate.AddHours(-6);
|
|
|
|
|
}
|
|
|
|
|
siDate = SICutDateCalculate(siDate);
|
|
|
|
|
//if (modifySIDateType == "Kangqian")
|
|
|
|
|
//{
|
|
|
|
|
|
|
|
|
|
//}
|
|
|
|
|
//else
|
|
|
|
|
//{
|
|
|
|
|
// siDate = siDate.AddHours(-6);
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
string newStr = Regex.Replace(findStr, dateRegex, siDate.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
|
|
|
|
|
|
|
@ -556,14 +556,14 @@ namespace DAJYun.Application
|
|
|
|
|
|
|
|
|
|
if (DateTime.TryParse(siDateStr, out siDate))
|
|
|
|
|
{
|
|
|
|
|
if (modifySIDateType == "Kangqian")
|
|
|
|
|
{
|
|
|
|
|
//if (modifySIDateType == "Kangqian")
|
|
|
|
|
//{
|
|
|
|
|
siDate = SICutDateCalculate(siDate);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
siDate = siDate.AddHours(-6);
|
|
|
|
|
}
|
|
|
|
|
//}
|
|
|
|
|
//else
|
|
|
|
|
//{
|
|
|
|
|
// siDate = siDate.AddHours(-6);
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
System.Globalization.DateTimeFormatInfo myDTFI = new System.Globalization.CultureInfo("en-US", false).DateTimeFormat;
|
|
|
|
|
string newDate = siDate.ToString("dd/MMM/yyyy HH:mm", myDTFI);
|
|
|
|
@ -629,14 +629,14 @@ namespace DAJYun.Application
|
|
|
|
|
4、周末的调整到周五的15点
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
if (modifySIDateType == "Kangqian")
|
|
|
|
|
{
|
|
|
|
|
//if (modifySIDateType == "Kangqian")
|
|
|
|
|
//{
|
|
|
|
|
siDate = SICutDateCalculate(siDate);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
siDate = siDate.AddHours(-6);
|
|
|
|
|
}
|
|
|
|
|
//}
|
|
|
|
|
//else
|
|
|
|
|
//{
|
|
|
|
|
// siDate = siDate.AddHours(-6);
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
if (!isLineFeed)
|
|
|
|
|
{
|
|
|
|
@ -676,6 +676,69 @@ namespace DAJYun.Application
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(drawModifyBCConfig != null)
|
|
|
|
|
{
|
|
|
|
|
if (drawModifyBCConfig.drawTypeArg.Any(a => a == DrawModifyBCConfigTypeEnum.EraseMore))
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (drawModifyBCConfig.drawTypeArg.Any(a => a == DrawModifyBCConfigTypeEnum.ChangeToSplitBillNo))
|
|
|
|
|
{
|
|
|
|
|
/*
|
|
|
|
|
1、先取bookingno如何跟原号一致,则进行修改覆盖
|
|
|
|
|
*/
|
|
|
|
|
if (Regex.IsMatch(s, "Booking\\s+No\\.:\\s+\\w+\\s+(?=Print\\s+Date:)"))
|
|
|
|
|
{
|
|
|
|
|
string findStr = Regex.Match(s, "Booking\\s+No\\.:\\s+\\w+\\s+(?=Print\\s+Date:)").Value;
|
|
|
|
|
|
|
|
|
|
string repStr = Regex.Match(findStr, "(?<=Booking\\sNo\\.:)\\s+\\w+").Value?.Trim();
|
|
|
|
|
|
|
|
|
|
//这里用取出的单号跟原始单号匹配,如果不一致抛错误终止返回文件流
|
|
|
|
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(repStr))
|
|
|
|
|
throw new Exception("当前请求的是修改提单号,因为未解析到提单号终止修改文件");
|
|
|
|
|
|
|
|
|
|
if (!repStr.Trim().Equals(drawModifyBCConfig.origBillNo))
|
|
|
|
|
throw new Exception($"当前请求的是修改提单号,因为解析到提单号:{findStr}与 原始提单号:{drawModifyBCConfig.origBillNo} 不一致,终止修改文件");
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(repStr))
|
|
|
|
|
{
|
|
|
|
|
ReplaceText(page, repStr, drawModifyBCConfig.newBillNo,"Normal");
|
|
|
|
|
|
|
|
|
|
logger.LogInformation($"PDF 覆盖提单号信息{repStr} 成功 改为{drawModifyBCConfig.newBillNo}");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (drawModifyBCConfig.drawTypeArg.Any(a => a == DrawModifyBCConfigTypeEnum.SplitBC))
|
|
|
|
|
{
|
|
|
|
|
if (Regex.IsMatch(s, "Quantity.*Cargo Volume\\s+[0-9]+\\s+(?=[a-zA-Z0-9]+)"))
|
|
|
|
|
{
|
|
|
|
|
string findStr = Regex.Match(s, "Quantity.*Cargo Volume\\s+[0-9]+\\s+(?=[a-zA-Z0-9]+)").Value;
|
|
|
|
|
|
|
|
|
|
string repStr = Regex.Match(findStr, "(?<=Quantity.*Cargo Volume)\\s+[0-9]+\\s+").Value;
|
|
|
|
|
|
|
|
|
|
//这里用取出的单号跟原始单号匹配,如果不一致抛错误终止返回文件流
|
|
|
|
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(repStr))
|
|
|
|
|
throw new Exception("当前请求的是修改集装箱数量,因为未解析到集装箱数量终止修改文件");
|
|
|
|
|
|
|
|
|
|
int ctnNum = int.Parse(repStr.Trim());
|
|
|
|
|
if (ctnNum != drawModifyBCConfig.origCtnNum.Value)
|
|
|
|
|
throw new Exception($"当前请求的是修改集装箱数量,因为解析到集装箱数量:{repStr}与集装箱数量:{drawModifyBCConfig.origCtnNum.Value} 不一致,终止修改文件");
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(repStr))
|
|
|
|
|
{
|
|
|
|
|
ReplaceText(page, $" {repStr.Trim()}", drawModifyBCConfig.newCtnNum.Value.ToString(), "CtnNum");
|
|
|
|
|
|
|
|
|
|
logger.LogInformation($"PDF 覆盖提单号信息{repStr} 成功 改为{drawModifyBCConfig.newCtnNum.Value.ToString()}");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
doc.SaveToStream(ms, FileFormat.PDF);
|
|
|
|
@ -736,6 +799,24 @@ namespace DAJYun.Application
|
|
|
|
|
PdfBrush brush2 = new PdfSolidBrush(new PdfRGBColor(255,255,128));
|
|
|
|
|
page.Canvas.DrawRectangle(brush2, new RectangleF(rec.X,rec.Y -1 ,rec.Width,rec.Height + 2));
|
|
|
|
|
|
|
|
|
|
page.Canvas.DrawString(replace, pdfFont, solidbrush, rec.X, rec.Y - 2);
|
|
|
|
|
}
|
|
|
|
|
else if (pdfBrushes == "Normal")
|
|
|
|
|
{
|
|
|
|
|
PdfSolidBrush solidbrush = new PdfSolidBrush(Color.Black);
|
|
|
|
|
|
|
|
|
|
PdfBrush brush2 = new PdfSolidBrush(new PdfRGBColor(255, 255, 255));
|
|
|
|
|
page.Canvas.DrawRectangle(brush2, new RectangleF(rec.X, rec.Y - 1, rec.Width, rec.Height + 2));
|
|
|
|
|
|
|
|
|
|
page.Canvas.DrawString(replace, pdfFont, solidbrush, rec.X, rec.Y);
|
|
|
|
|
}
|
|
|
|
|
else if (pdfBrushes == "CtnNum")
|
|
|
|
|
{
|
|
|
|
|
PdfSolidBrush solidbrush = new PdfSolidBrush(Color.Black);
|
|
|
|
|
|
|
|
|
|
PdfBrush brush2 = new PdfSolidBrush(new PdfRGBColor(255, 255, 255));
|
|
|
|
|
page.Canvas.DrawRectangle(brush2, new RectangleF(rec.X, rec.Y - 1, rec.Width - 60, rec.Height));
|
|
|
|
|
|
|
|
|
|
page.Canvas.DrawString(replace, pdfFont, solidbrush, rec.X, rec.Y - 2);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|