修改BA,修改提单号和箱型数量

master
jianghaiqing 3 months ago
parent 3487e3dc95
commit 73812ceab0

@ -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
31210
415
*/
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
415
*/
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))
{
/*
1bookingno
*/
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);
}
}

@ -19,6 +19,8 @@ using System.Dynamic;
using System.Globalization;
using System.Reflection.Emit;
using Microsoft.CodeAnalysis.Operations;
using System.ComponentModel;
using Microsoft.EntityFrameworkCore.ValueGeneration.Internal;
namespace DAJYun.Application.TaskManagePlatDomain
{
@ -1218,7 +1220,17 @@ namespace DAJYun.Application.TaskManagePlatDomain
//请求格式单PDF解析
DateTime transBeginDate = DateTime.Now;
MemoryStream ms = PDFReaderHelper.GetModifyPDF(bytes);
DrawModifyBCConfig drawModifyBCConfig = null;
if (!string.IsNullOrWhiteSpace(jsonMessage))
{
try
{
drawModifyBCConfig = JSON.Deserialize<DrawModifyBCConfig>(jsonMessage);
}
catch { }
}
MemoryStream ms = PDFReaderHelper.GetModifyPDF(bytes, drawModifyBCConfig);
DateTime transEndDate = DateTime.Now;
TimeSpan ts = transEndDate.Subtract(transBeginDate);
@ -1922,4 +1934,69 @@ namespace DAJYun.Application.TaskManagePlatDomain
}
#endregion
}
public class DrawModifyBCConfig
{
/// <summary>
/// 擦除枚举
/// </summary>
public DrawModifyBCConfigTypeEnum[] drawTypeArg { get; set; }
/// <summary>
/// 原箱数量
/// </summary>
public Nullable<int> origCtnNum { get; set; }
/// <summary>
/// 修改箱数量
/// </summary>
public Nullable<int> newCtnNum { get; set; }
/// <summary>
/// 箱类型
/// </summary>
public string ctnAll { get; set; }
/// <summary>
/// 原提单号
/// </summary>
public string origBillNo { get; set; }
/// <summary>
/// 新提单号
/// </summary>
public string newBillNo { get; set; }
}
public enum DrawModifyBCConfigTypeEnum
{
/// <summary>
/// 标准
/// </summary>
[Description("标准")]
Standard,
/// <summary>
/// 擦除更多(展鸿要求)
/// </summary>
[Description("擦除更多")]
EraseMore,
/// <summary>
/// 手工指定截单时间
/// </summary>
[Description("手工指定截单时间")]
DrawManualSIDate,
/// <summary>
/// 分票修改(康乾,主要考虑拆票时箱数量按照拆票显示)
/// </summary>
[Description("分票修改")]
SplitBC,
/// <summary>
/// 改提单号为分票号
/// </summary>
[Description("改提单号为分票号")]
ChangeToSplitBillNo,
}
}

Loading…
Cancel
Save