|
|
|
using BBWYB.Common.Log;
|
|
|
|
using BBWYB.Common.Models;
|
|
|
|
using BBWYB.Server.Model.Db;
|
|
|
|
using FreeSql;
|
|
|
|
using Yitter.IdGenerator;
|
|
|
|
|
|
|
|
namespace BBWYB.Server.Business
|
|
|
|
{
|
|
|
|
public class DataRepairBusiness : BaseBusiness, IDenpendency
|
|
|
|
{
|
|
|
|
private KuaiDi100Manager kuaiDi100Manager;
|
|
|
|
public DataRepairBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, KuaiDi100Manager kuaiDi100Manager) : base(fsql, nLogManager, idGenerator)
|
|
|
|
{
|
|
|
|
this.kuaiDi100Manager = kuaiDi100Manager;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void RepairPurchaseExpressOrder()
|
|
|
|
{
|
|
|
|
|
|
|
|
#region 修复快递单
|
|
|
|
var purchaseExpressOrderList = fsql.Select<PurchaseExpressOrder>().Where(peo => !string.IsNullOrEmpty(peo.PurchaseOrderId)).ToList();
|
|
|
|
var wayBillNos = purchaseExpressOrderList.Select(peo => peo.WaybillNo).ToList();
|
|
|
|
var relationList = fsql.Select<ExpressOrderRelationInfo>().Where(eori => wayBillNos.Contains(eori.WayBillNo)).ToList();
|
|
|
|
|
|
|
|
List<ExpressOrderRelationInfo> insertExpressOrderRelationInfoList = new List<ExpressOrderRelationInfo>();
|
|
|
|
foreach (var peo in purchaseExpressOrderList)
|
|
|
|
{
|
|
|
|
var relation = relationList.FirstOrDefault(r => r.WayBillNo == peo.WaybillNo && r.PurchaseOrderId == peo.PurchaseOrderId);
|
|
|
|
if (relation != null)
|
|
|
|
continue;
|
|
|
|
insertExpressOrderRelationInfoList.Add(new ExpressOrderRelationInfo()
|
|
|
|
{
|
|
|
|
Id = idGenerator.NewLong(),
|
|
|
|
CreateTime = DateTime.Now,
|
|
|
|
OrderId = peo.OrderId,
|
|
|
|
PurchaseOrderId = peo.PurchaseOrderId,
|
|
|
|
ShopId = peo.ShopId,
|
|
|
|
WayBillNo = peo.WaybillNo
|
|
|
|
});
|
|
|
|
}
|
|
|
|
fsql.Transaction(() =>
|
|
|
|
{
|
|
|
|
fsql.Insert(insertExpressOrderRelationInfoList).ExecuteAffrows();
|
|
|
|
});
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 批量清理取消单数据
|
|
|
|
/// </summary>
|
|
|
|
public void ClearCancelOrderData()
|
|
|
|
{
|
|
|
|
var cancelOrderList = fsql.Select<Order>().Where(o => o.OrderState == Model.Enums.OrderState.已取消).ToList();
|
|
|
|
var cancelOrderIds = cancelOrderList.Select(o => o.Id);
|
|
|
|
|
|
|
|
//var noUsingExpressOrderList = fsql.Select<PurchaseExpressOrder>().Where(peo => !fsql.Select<ExpressOrderRelationInfo>()
|
|
|
|
// .As("b")
|
|
|
|
// .ToList(b => b.WayBillNo)
|
|
|
|
// .Contains(peo.WaybillNo))
|
|
|
|
// .ToList();
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
select * from purchaseexpressorder peo where not exists (select r.waybillno from expressorderrelationinfo r where peo.WaybillNo=r.WaybillNo);
|
|
|
|
*/
|
|
|
|
fsql.Transaction(() =>
|
|
|
|
{
|
|
|
|
fsql.Delete<OrderPurchaseInfo>().Where(opi => cancelOrderIds.Contains(opi.OrderId)).ExecuteAffrows();
|
|
|
|
fsql.Delete<OrderPurchaseSkuInfo>().Where(posku => cancelOrderIds.Contains(posku.OrderId)).ExecuteAffrows();
|
|
|
|
fsql.Delete<OrderPurchaseRelationInfo>().Where(opri => cancelOrderIds.Contains(opri.OrderId)).ExecuteAffrows();
|
|
|
|
fsql.Delete<OrderCost>().Where(oc => cancelOrderIds.Contains(oc.OrderId)).ExecuteAffrows();
|
|
|
|
fsql.Delete<OrderCostDetail>().Where(ocd => cancelOrderIds.Contains(ocd.OrderId)).ExecuteAffrows();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
public void SubscribeKD100(string waybillNo, string targetCompanyCode)
|
|
|
|
{
|
|
|
|
kuaiDi100Manager.SubscribeKuaiDi100(waybillNo, targetCompanyCode, "http://bbwyb.qiyue666.com/api/purchaseorder/kuaidi100publish");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|