using Admin.NET.Core;
using Admin.NET.Core.QualityControl.Enum;
using Admin.NET.Core.WareHouse.Enum;
using iWareSql.MyDbContext;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
namespace Admin.NET.Application
{
public class MyCommonHelper
{
///
/// 生产配餐单备注计划生产月 转换日期格式,/将 格式ddmm 转换为日期类型
///
///
///
public static DateTime ConvertToDateTimeForDDMMByKittingRemark(string str)
{
try
{
//将 格式dd/mm/yyyy 转换为日期类型
str = str.Trim();
if (str.Length != 6)//牧野约定备注日期填6位罗马数字 比如:202403
{
throw new System.Exception($"日期类型格式不正确,应该是长度6位的年月罗马数字,实际是{str}!");
}
var year = str.Substring(0, 4); //前4位是年纷
var month = str.Substring(str.Length - 2);//后两位是月份
int i_month, i_year = 0;
bool isSu = int.TryParse(month, out i_month);
if (isSu == false)
{
throw new System.Exception($"月'{month}'格式不正确!");
}
isSu = int.TryParse(year, out i_year);
if (isSu == false)
{
throw new System.Exception($"年'{year}'格式不正确!");
}
if (i_month < 1 || i_month > 12)
{
throw new System.Exception($"月'{i_month}'不在正确范围内!");
}
string dateString = string.Format("{0}-{1}",//得到日期字符串
year, month);
DateTime result = DateTime.ParseExact(dateString, "yyyy-MM", CultureInfo.InvariantCulture);
return result;
}
catch (Exception ex)
{
throw new System.Exception($"日期{str}转换异常:" + ex.Message);
}
}
///
/// 获取展示用的生产配餐单备注计划生产月字符串
///
///
///
///
public static string GetPlannedProductionDate(int PlannedProductionYear, int PlannedProductionMonth)
{
if (PlannedProductionYear > 0 && PlannedProductionMonth > 0)
{
string year = PlannedProductionYear.ToString();
string month = PlannedProductionMonth.ToString();
if (month.Length == 1) // 单月前面补全0
{
month = "0" + month;
}
return month + "-" + year;
}
return string.Empty;
}
///
/// 根据物料编号获取物料基础信息 【Editby shaocx,2023-07-25】
///
///
///
///
public static ware_material GetWareMaterialInfo(MyDbContext dbContext, string materialCode)
{
var material = dbContext.ware_material.Where(x => x.Code == materialCode).FirstOrDefault();
if (material == null)
{
throw new System.Exception($"物料基础信息没有找到物料编号为{materialCode}的信息!");
}
return material;
}
///
/// 根据物料编号获取物料基础信息 【Editby shaocx,2023-07-25】
///
///
///
///
public static ware_material GetWareMaterialInfo( List _list, string materialCode)
{
var material = _list.Where(x => x.Code == materialCode).FirstOrDefault();
if (material == null)
{
throw new System.Exception($"物料基础信息没有找到物料编号为{materialCode}的信息!");
}
return material;
}
///
/// 根据物料编号获取物料基础信息 【Editby shaocx,2023-07-25】
///
///
///
///
public static List GetWareMaterialInfoList(MyDbContext dbContext)
{
var material = dbContext.ware_material.ToList();
return material;
}
///
/// 获取发货记录 不能用于撤销
///
///
///
///
///
///
///
///
///
///
///
public static WareDeliveryInfo GetWareDeliveryRecord(
MyDbContext dbContext,
ref List ware_common_sap_delivery_infos,
ware_material ware_material,
List records,
string orderNo,
string sortingNo,
string equipment,
string process,
string img, ware_orders_details ordersDetail)
{
List ware_delivery_records = new List();
WareDeliveryInfo returnInfo = new WareDeliveryInfo();
returnInfo.WareDeliveryRecords = new List();
var orderType = SysAllOrderTypeEnum.生产出库单;
foreach (var item in records)
{
long Id = Yitter.IdGenerator.YitIdHelper.NextId();
var ware_delivery_record = new ware_delivery_record()
{
Id = Id,
MaterialCode = ordersDetail.WareMaterialCode,
MaterialName = ware_material.Name,
Quantity = (decimal)item.Quantity,
OrderNo = orderNo,
BatchNo = item.BarNo,
Sap_Location = item.Sap_Location,
SortingNo = sortingNo,
Equipment = equipment,
Process = process,
OrderType = (int)orderType,
Unit = ware_material.Unit,//单位
LineNumber = ordersDetail.LineNumber,//行号
SAP_ConfirmStatus = (int)EnumSAPConfirmStatus.待发送,
SAP_CancelConfirmStatus = (int)EnumSAPCancelConfirmStatus.未撤销,
//这两个字段必须赋值!
OrderDetailId = ordersDetail.Id,//订单详情id
//SortOrderDetailId = deliveryRecordInput.SortOrderDetailId,
MaterialResvItem = ordersDetail.MaterialResvItem,//Kitting 单预约行号
MaterialResvNo = ordersDetail.MaterialResvNo,//Kitting 单预约号
SubOrderNo = ordersDetail.SubOrderNo,//Kitting 单号
ImgPath = img,
CancelStatus = (int)EnumCancelStatus.未撤销,//默认未撤销
//增加一些事项 【Editby shaocx,2023-08-02】
CheckStatus = item.CheckStatus,
SupplierNo = item.SupplierNo,
SupplierName = item.SupplierName,
PurchaseOrderDetailId = item.PurchaseOrderDetailId,
RecordInsertTime = item.RecordInsertTime,
Costcenter = ordersDetail.Costcenter//成本中心
};
ware_delivery_records.Add(ware_delivery_record);
DO_GetWareDeliveryInfo(ref ware_common_sap_delivery_infos, orderType, ware_material, ordersDetail, ware_delivery_record);
}
returnInfo.WareDeliveryRecords.AddRange(ware_delivery_records);
return returnInfo;
}
#region 根据发货记录创建sap推送发货记录
///
/// 根据发货记录创建sap推送发货记录 可以用于撤销-DeliveryOrderDetails
///
///
///
///
///
///
public static void DO_GetWareDeliveryInfo(ref List ware_common_sap_delivery_infos, SysAllOrderTypeEnum orderType, ware_material ware_material,
ware_orders_details ordersDetail, ware_delivery_record ware_delivery_record)
{
}
#endregion
}
}