using Admin.NET.Core;
using iWareCommon;
using iWareCommon.Utils;
using iWareSql.MyDbContext;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Data.Entity.Migrations;
using System.Linq;
using System.Net.Http;
using System.Threading;
namespace iWareCC
{
///
/// po单收货线程
///
public class ReceivingPoOrderHandler
{
private static object _lock;
public static void Handler()
{
var errMsg = "";
while (true)
{
try
{
SystemWarningMsg.lbl_Alert_ReceivingPoOrderHandler = "循环开始...";
if (SystemValue.isAllowRuning_ReceivingPoOrderHandler && SystemValue.isStartedModel)
{
errMsg = "";//重置
try
{
lock (_lock)
{
Do(errMsg);
if (!string.IsNullOrEmpty(errMsg))
{
SystemWarningMsg.lbl_Alert_ReceivingPoOrderHandler = errMsg;
}
}
}
catch (Exception ex)
{
Log4NetHelper.WriteErrorLog(LogType.ReceivingPoOrderHandler, "收货处理的线程=>" + errMsg + ",异常:" + ex.Message, ex);
SystemWarningMsg.lbl_Alert_ReceivingPoOrderHandler = "收货处理的线程=>" + errMsg + ",异常:" + ex.Message;
}
}
}
catch (Exception ex)
{
SystemWarningMsg.lbl_Alert_ReceivingPoOrderHandler = "出现异常:" + ex.Message;
Log4NetHelper.WriteErrorLog(LogType.ReceivingPoOrderHandler, "PrintHandler 出现异常:" + ex.Message, ex);
}
Thread.Sleep(1 * 1000);//休眠40秒
}
}
///
/// 接收收发货记录
///
///
///
///
///
private static async void Do(string errMsg)
{
using (MyDbContext mycontext = new MyDbContext())
{
var inputData = new UpdateAdapterRecordByCCInput();
var infoData = new AdapterLogsInfoUpdateInput();
var recordAdapterIdList = new List();
var query_ErpPushStatus = 2;
var receivingList = mycontext.wms_adapter_record.Where(x => (x.IsDelete == false) && x.DealWithStatus == query_ErpPushStatus && x.AdapterMethodName == "PO单收货")
.OrderBy(x => x.Id).ToList();
if (receivingList.Count > 0)
{
}
else
{
errMsg = $"没有可收货的内容!";
return;
}
foreach (var receiving in receivingList)
{
recordAdapterIdList.Add(receiving.Id);
inputData.ErpVoucher = Yitter.IdGenerator.YitIdHelper.NextId().ToString();
}
inputData.RecordAdapterIdList = recordAdapterIdList;
infoData.RecordAdapterIdList = recordAdapterIdList;
string jsonData = JsonConvert.SerializeObject(inputData);
string apiUrl1 = "http://localhost:5005/api/RecordAdapter/UpdateAdapterRecordByCC";
string apiUrl2 = "http://localhost:5005/api/RecordAdapter/UpdateAdapterRecordInfo";
using (var httpClient = new HttpClient())
{
try
{
// 创建HttpContent对象,设置为JSON格式
var httpContent = new StringContent(jsonData, System.Text.Encoding.UTF8, "application/json");
// 发送POST请求
var response = await httpClient.PostAsync(apiUrl1, httpContent);
//// 检查响应是否成功
//response.EnsureSuccessStatusCode();
//// 读取响应内容
//string jsonResponse = await response.Content.ReadAsStringAsync();
//infoData.AdapterInputInfo = jsonResponse;
//string infoJsonData = JsonConvert.SerializeObject(infoData);
//var infoHttpContent = new StringContent(infoJsonData, System.Text.Encoding.UTF8, "application/json");
//// 发送POST请求
//var response2 = await httpClient.PostAsync(apiUrl2, infoHttpContent);
}
catch (Exception ex)
{
// 处理异常情况
throw ex;
}
}
}
}
///
/// 接收收发货记录
///
///
///
///
///
private static void Do2(ref string errMsg)
{
using (MyDbContext mycontext = new MyDbContext())
{
var inputData = new UpdateAdapterRecordByCCInput();
var query_ErpPushStatus = 0;
var receivingList = mycontext.wms_adapter_record.Where(x => (x.IsDelete == false) && x.DealWithStatus == query_ErpPushStatus)
.OrderBy(x => x.Id).ToList();
if (receivingList.Count > 0)
{
foreach (var item in receivingList)
{
//判断是否是 PO收货
if (1 == 1)
{//是PO收货
//1、模拟调用SERP
//2、模拟调用成功ERP
//3、调用成功后- 更新wms_adapter_record的状态
item.DealWithStatus = 0;//已处理
item.UpdateTime = DateTime.Now;
item.UpdateUserName = "调度系统";
//查询收货记录表 ,更新他的ErpPushStatusEnum值
//
}
}
}
else
{
errMsg = $"没有可收货的内容!";
return;
}
foreach (var receiving in receivingList)
{
inputData.ErpVoucher = Yitter.IdGenerator.YitIdHelper.NextId().ToString();
}
string jsonData = JsonConvert.SerializeObject(inputData);
string apiUrl = "http://localhost:5005/api/RecordAdapter/UpdateAdapterRecordByCC";
using (var httpClient = new HttpClient())
{
try
{
// 创建HttpContent对象,设置为JSON格式
var httpContent = new StringContent(jsonData, System.Text.Encoding.UTF8, "application/json");
// 发送POST请求
var response = httpClient.PostAsync(apiUrl, httpContent);
}
catch (Exception ex)
{
// 处理异常情况
Console.WriteLine($"发生异常:{ex.Message}");
}
}
}
}
public class UpdateAdapterRecordByCCInput
{
public List RecordAdapterIdList { get; set; }
public string ErpVoucher { get; set; }
}
public class AdapterLogsInfoUpdateInput
{
public List RecordAdapterIdList { get; set; }
public string AdapterInputInfo { get; set; }
}
private static bool GetPrintClassifyEnum(wms_record_sncode_print item, MyDbContext mycontext, ref string errMsg, ref PrintClassifyEnum printClassifyEnum)
{
if (item.PrintType == (int)PrintTypeEnum.看板卡)
{
printClassifyEnum = PrintClassifyEnum.看板卡;
}
else
{
wms_config_sncode_rule rule = null;
var ruleList = mycontext.wms_config_sncode_rule.Where(x => (x.RuleName == "ASN一维码" || x.RuleName == "ASN二维码") && x.IsDisabled == false).ToList();
if (ruleList != null && ruleList.Count > 1)
{
errMsg = "条码生成规则配置中,ASN一维码和ASN二维码只能启用其中一个!";
return false;
}
if (ruleList == null || ruleList.Count == 0)
{
errMsg = "条码生成规则配置中,ASN一维码和ASN二维码两个都没有配置启用!";
return false;
}
rule = ruleList.First();
printClassifyEnum = default(PrintClassifyEnum);
if (rule.RuleName == "ASN一维码")
{
printClassifyEnum = PrintClassifyEnum.一维跟踪码;
}
else
{
printClassifyEnum = PrintClassifyEnum.二维跟踪码;
}
}
return true;
}
}
}