using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WIDESEA.Core.ManageUser;
using WIDESEA.Entity.DomainModels;
using WIDESEA.Services.Repositories;
namespace WIDESEA.Services.Services
{
public partial class CommonFunction
{
///
/// 添加实托库存
///
///
///
public static void AddBoxContainer(Dt_taskinfo taskInfo, Dt_boxing_head boxHead, Dt_boxing_detail boxDetail, Dt_mes_goods_info goodsInfo)
{
if (boxHead == null || boxDetail == null || goodsInfo == null)
throw new Exception($"没有找到对任务托盘号:【{taskInfo.task_barcode}】对应的组盘信息或者是录入信息");
//这里是获取空托盘重量,调试占时注释
Dt_container_head_hty container_Head_Hty = Dt_container_head_htyRepository.Instance.Find(x => x.containerhead_barcode == taskInfo.task_barcode
&& x.containerhead_operatetype == "empty" && x.containerhead_creator != "WCS" && !string.IsNullOrEmpty(x.containerhead_palletweight) && "0" != x.containerhead_palletweight)
.OrderByDescending(x => x.containerhead_finishtime).First();
if (container_Head_Hty == null)
throw new Exception($"没有找到对任务托盘号:【{taskInfo.task_barcode}】对应的空托盘出库记录");
//0不合格,1合格
int weighingResult = 0;
Dt_weighing_standards standars = Dt_weighing_standardsRepository.Instance.FindFirst(r => r.weighing_materiel_id == boxDetail.boxdtl_materielid &&
r.weighing_bearing_id == boxDetail.boxdtl_type && r.weighing_manufacturer == goodsInfo.mesInfo_madeUnit && r.weighing_type == goodsInfo.mesInfo_standard);
if (null != standars)
{
//当前轴承
decimal currentWeighing = (decimal.Parse(taskInfo.task_weight) - decimal.Parse(container_Head_Hty.containerhead_palletweight))
+ standars.weighing_addWeighing.GetValueOrDefault();
//是否计算
if (standars.weighing_isCompute == 1)
{
//差异值
decimal differencWeiging = standars.weighing_standard_value.GetValueOrDefault() - currentWeighing;
if (differencWeiging < 0)
{
if (standars.weighing_positive_value >= -differencWeiging)
weighingResult = 1;
}
else
{
if (differencWeiging <= standars.weighing_negative_value)
weighingResult = 1;
}
}
else
weighingResult = 1;
}
Dt_container_head conHead = new Dt_container_head();
conHead.containerhead_id = Guid.NewGuid();
conHead.containerhead_barcode = taskInfo.task_barcode;
conHead.containerhead_creator = taskInfo.task_creator;
conHead.containerhead_createtime = DateTime.Now;
conHead.containerhead_palletweight = container_Head_Hty.containerhead_palletweight;
Dt_container_headRepository.Instance.Add(conHead, true);
Dt_container_detail conDetail = new Dt_container_detail();
conDetail.containerdtl_id = Guid.NewGuid();
conDetail.containerdtl_headid = conHead.containerhead_id.ToString();
conDetail.containerdtl_materielid = taskInfo.task_materielid;
conDetail.containerdtl_qty = "1";
conDetail.containerdtl_operator = taskInfo.task_creator;
conDetail.containerdtl_identifierNo = "";
conDetail.containerdtl_inboundUnit = goodsInfo.mesInfo_inUnit;
conDetail.containerdtl_standard = goodsInfo.mesInfo_standard;
conDetail.containerdtl_madeDate = goodsInfo.mesInfo_madeDate;
conDetail.containerdtl_carType = goodsInfo.mesInfo_carType;
conDetail.containerdtl_type = goodsInfo.mesInfo_type;
conDetail.containerdtl_barcode = taskInfo.task_barcode;
conDetail.containerdtl_madeUnit = goodsInfo.mesInfo_madeUnit;
conDetail.containerdtl_number = goodsInfo.mesInfo_number;
conDetail.containerdtl_goodsCode = goodsInfo.mesInfo_qrCode;
conDetail.containerdtl_goodsWeight = ((decimal.Parse(taskInfo.task_weight) - decimal.Parse(container_Head_Hty.containerhead_palletweight))
+ standars.weighing_addWeighing.GetValueOrDefault()).ToString();
conDetail.containerdtl_creator = taskInfo.task_creator;
conDetail.containerdtl_createtime = DateTime.Now;
conDetail.containerdtl_text1 = "未测量";
//称重结果
conDetail.containerdtl_standardResult = weighingResult;
//生产日期\批次 - 2024年6月27日新增启用
conDetail.containerdtl_lotNumber = boxDetail.boxdtl_text2; //批次
conDetail.containerdtl_ProductDate = Convert.ToDateTime(boxDetail.boxdtl_text3).AddYears(2).ToString("yyyy-MM-dd"); //生产日期
//批次 - 2025年7月9日新增启用 当相同批次,有确认后,则后面的按入库时间
Dt_container_detail containerList = Dt_container_detailRepository.Instance.Find(r => r.containerdtl_lotNumber == boxDetail.boxdtl_text2 && r.containerdtl_qualityCheck==true).FirstOrDefault();
if (containerList != null)
{
conDetail.containerdtl_qualityCheck = true;
conDetail.containerdtl_qualityCheckTime = DateTime.Now;
conDetail.containerdtl_qualityCheckUser = containerList.containerdtl_qualityCheckUser;
}
Dt_container_detailRepository.Instance.Add(conDetail, true);
Dt_barcodeinfo barcodeinfo = new Dt_barcodeinfo();
barcodeinfo.barcodeinfo_id = Guid.NewGuid();
barcodeinfo.barcode_value = taskInfo.task_barcode;
barcodeinfo.barcode_intime = DateTime.Now;
barcodeinfo.barcode_locationid = taskInfo.task_tolocationid;
barcodeinfo.barcode_creator = taskInfo.task_creator;
barcodeinfo.barcode_createtime = DateTime.Now;
Dt_barcodeinfoRepository.Instance.Add(barcodeinfo, true);
Dt_container_size_info size_Info = Dt_container_size_infoRepository.Instance.FindFirst(x => x.csize_barcode == goodsInfo.mesInfo_qrCode);
if (null != size_Info)
{
Dt_container_size_info_hty hty = new Dt_container_size_info_hty()
{
csize_barcode = size_Info.csize_barcode,
csize_container_detail_id = size_Info.csize_container_detail_id,
csize_four_1 = size_Info.csize_four_1,
csize_four_2 = size_Info.csize_four_2,
csize_four_3 = size_Info.csize_four_3,
csize_four_result = size_Info.csize_four_result,
csize_id = Guid.NewGuid(),
csize_in_1 = size_Info.csize_in_1,
csize_in_10 = size_Info.csize_in_10,
csize_in_11 = size_Info.csize_in_11,
csize_in_12 = size_Info.csize_in_12,
csize_in_13 = size_Info.csize_in_13,
csize_in_14 = size_Info.csize_in_14,
csize_in_15 = size_Info.csize_in_15,
csize_in_16 = size_Info.csize_in_16,
csize_in_2 = size_Info.csize_in_2,
csize_in_3 = size_Info.csize_in_3,
csize_in_4 = size_Info.csize_in_4,
csize_in_5 = size_Info.csize_in_5,
csize_in_6 = size_Info.csize_in_6,
csize_in_7 = size_Info.csize_in_7,
csize_in_8 = size_Info.csize_in_8,
csize_in_9 = size_Info.csize_in_9,
csize_in_result = size_Info.csize_in_result,
csize_in_value = size_Info.csize_in_value,
csize_out_1 = size_Info.csize_out_1,
csize_out_10 = size_Info.csize_out_10,
csize_out_11 = size_Info.csize_out_11,
csize_out_12 = size_Info.csize_out_12,
csize_out_13 = size_Info.csize_out_13,
csize_out_14 = size_Info.csize_out_14,
csize_out_15 = size_Info.csize_out_15,
csize_out_16 = size_Info.csize_out_16,
csize_out_2 = size_Info.csize_out_2,
csize_out_3 = size_Info.csize_out_3,
csize_out_4 = size_Info.csize_out_4,
csize_out_5 = size_Info.csize_out_5,
csize_out_6 = size_Info.csize_out_6,
csize_out_7 = size_Info.csize_out_7,
csize_out_8 = size_Info.csize_out_8,
csize_out_9 = size_Info.csize_out_9,
csize_out_result = size_Info.csize_out_result,
csize_out_value = size_Info.csize_out_value,
csize_three_1 = size_Info.csize_three_1,
csize_three_2 = size_Info.csize_three_2,
csize_three_3 = size_Info.csize_three_3,
csize_three_result = size_Info.csize_three_result,
cszie_bak_1 = size_Info.cszie_bak_1,
cszie_bak_2 = size_Info.cszie_bak_2,
cszie_bak_3 = size_Info.cszie_bak_3,
cszie_bak_4 = size_Info.cszie_bak_4,
cszie_bak_5 = size_Info.cszie_bak_5,
};
Dt_container_size_info_htyRepository.Instance.Add(hty, true);
Dt_container_size_infoRepository.Instance.Delete(size_Info, true);
}
//插入默认的测量信息记录
Dt_container_size_info newsize_Info = new Dt_container_size_info();
newsize_Info.csize_id = Guid.NewGuid();
newsize_Info.csize_container_detail_id = conDetail.containerdtl_id.ToString();
newsize_Info.csize_barcode = goodsInfo.mesInfo_qrCode;
Dt_container_size_infoRepository.Instance.Add(newsize_Info, true);
}
///
/// 添加空托盘库存
///
///
///
public static void AddEmptyPalletContainer(Dt_taskinfo taskInfo)
{
Dt_container_head conHead = new Dt_container_head();
conHead.containerhead_id = Guid.NewGuid();
conHead.containerhead_barcode = taskInfo.task_barcode;
conHead.containerhead_creator = taskInfo.task_creator;
conHead.containerhead_createtime = DateTime.Now;
conHead.containerhead_palletweight = taskInfo.task_weight;
Dt_container_headRepository.Instance.Add(conHead, true);
Dt_container_detail conDetail = new Dt_container_detail();
conDetail.containerdtl_id = Guid.NewGuid();
conDetail.containerdtl_headid = conHead.containerhead_id.ToString();
conDetail.containerdtl_materielid = taskInfo.task_materielid;
conDetail.containerdtl_qty = "1";
conDetail.containerdtl_creator = taskInfo.task_creator;
conDetail.containerdtl_createtime = DateTime.Now;
Dt_container_detailRepository.Instance.Add(conDetail, true);
Dt_barcodeinfo barcodeinfo = new Dt_barcodeinfo();
barcodeinfo.barcodeinfo_id = Guid.NewGuid();
barcodeinfo.barcode_value = taskInfo.task_barcode;
barcodeinfo.barcode_intime = DateTime.Now;
barcodeinfo.barcode_locationid = taskInfo.task_tolocationid;
barcodeinfo.barcode_creator = taskInfo.task_creator;
barcodeinfo.barcode_createtime = DateTime.Now;
Dt_barcodeinfoRepository.Instance.Add(barcodeinfo, true);
}
}
}