Browse Source

tijiao

master
学 赵 4 years ago
parent
commit
231e500498
  1. 127
      UniApiGroup/Controller/OdbcApiWmsController.cs

127
UniApiGroup/Controller/OdbcApiWmsController.cs

@ -62,6 +62,7 @@ namespace CK.SCP.GrupUniApi.Controller
Console.WriteLine($"调用WMS 接口数据:{wmsCtrlList.Count.ToString()}");
foreach (var wmsCtrl in wmsCtrlList)
{
int state = 0;
if (tableNameList.All(p => p.Name != wmsCtrl.xxwms_table)) continue;
try
{
@ -88,6 +89,7 @@ namespace CK.SCP.GrupUniApi.Controller
Console.WriteLine($"发现 WMS 接口数据:{wmsCtrl.xxwms_table}:{wmsCtrl.xxwms_table_qty}");
AddMaterialReceive(idb, wdb, wmsCtrl.xxwms_seq, 0);//xxwms_seq:流水号
AddMaterialReturn_RC(idb, wdb, wmsCtrl.xxwms_seq, 1);//xxwms_seq:流水号
state = 1;
}
break;
case WmsTableName.xxwms_rt_det:
@ -125,8 +127,12 @@ namespace CK.SCP.GrupUniApi.Controller
break;
}
wmsCtrl.xxwms_scm = ((int)UniApiState.).ToString();
EntitiesFactory.SaveDb(wdb);
}
catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)//捕获实体验证异常
{
@ -154,6 +160,11 @@ namespace CK.SCP.GrupUniApi.Controller
finally
{
EntitiesFactory.SaveDb(idb);
if (wmsCtrl.xxwms_scm == "1" && state==1)
{
UpdateReceive(wmsCtrl.xxwms_seq);
}
}
}
}
@ -195,6 +206,49 @@ namespace CK.SCP.GrupUniApi.Controller
Console.WriteLine($"更新 原料库存 数据:{wmsld_detList.Count}");
}
private static void UpdateReceive(string p_seq)
{
ScpEntities scpdb = EntitiesFactory.CreateScpInstance();
UniApiEntities idb = EntitiesFactory.CreateUniApiInstance();
try
{
string _sql = "Update TB_ASN_DETAIL set extend1=recqty from tb_asn_detail D inner join\n" +
" (SELECT SUM(a.Qty) AS RecQty, a.AsnBillNum, a.PoLine, a.PartCode, a.PoBillNum,a.batch\n" +
" FROM V_TB_RECEIVE_DETAIL AS a INNER JOIN\n" +
" TB_ASN_DETAIL AS B ON a.AsnBillNum = B.AsnBillNum AND a.PoLine = B.PoLine AND\n" +
" a.PartCode = B.PartCode AND a.PoBillNum = B.PoBillNum and a.Batch=b.Batch\n" +
" where a.AsnBillNum in ({0})\n" +
" GROUP BY a.AsnBillNum, a.PoLine, a.PartCode, a.PoBillNum,a.Batch) AS C on D.AsnBillNum = C.AsnBillNum AND D.PoLine = C.PoLine AND\n" +
" D.PartCode = C.PartCode AND D.PoBillNum = C.PoBillNum and D.Batch=C.Batch";
var qadRcvDetailList = idb.xxwms_rc_det.Where(p => p.xxwms_rc_seq == p_seq && p.xxwms_rc_qty_total >= 0).ToList();
var _lst = qadRcvDetailList.Select(p => p.xxwms_rc_ps_nbr).ToList().Distinct();
if (_lst.Count() > 0)
{
var _list = new List<string>();
foreach (var itm in _lst)
{
_list.Add(string.Format("'{0}'", itm));
}
scpdb.Database.ExecuteSqlCommand(_sql, string.Join(",", _list));
}
}
catch (Exception e)
{
}
finally
{
EntitiesFactory.SaveDb(idb);
EntitiesFactory.SaveDb(scpdb);
}
}
/// <summary>
///接收收货单
/// </summary>
@ -204,26 +258,11 @@ namespace CK.SCP.GrupUniApi.Controller
/// <param name="billtype">0:收货,1:退货</param>
private static void AddMaterialReceive(UniApiEntities idb, ScpEntities wdb, string seq, int billtype)
{
//string _recvQty = "SELECT RecQty, AsnBillNum, PoLine, PartCode, PoBillNum,Batch\n" +
//"FROM (SELECT SUM(a.Qty) AS RecQty, a.AsnBillNum, a.PoLine, a.PartCode, a.PoBillNum,a.batch\n" +
//" FROM V_TB_RECEIVE_DETAIL AS a INNER JOIN\n" +
//" V_TB_ASN_DETAIL AS B ON a.AsnBillNum = B.AsnBillNum AND a.PoLine = B.PoLine AND\n" +
//" a.PartCode = B.PartCode AND a.PoBillNum = B.PoBillNum and a.Batch=b.Batch\n" +
//" GROUP BY a.AsnBillNum, a.PoLine, a.PartCode, a.PoBillNum) AS d\n" +
//"WHERE (AsnBillNum = '{0}')";
var qadRcvDetailList = idb.xxwms_rc_det.Where(p => p.xxwms_rc_seq == seq&&p.xxwms_rc_qty_total>=0).ToList();
var scpRcvList = new List<TB_RECEIVE>();
var scpRcveDetailList = new List<TB_RECEIVE_DETAIL>();
//根据xxwms_rc_po_nbr采购单字段去重
var qadReceiveNbrList = qadRcvDetailList.Select(p => p.xxwms_rc_nbr.ToUpper()).DistinctBy(p => p);
foreach (var qadRcvNbrList in qadReceiveNbrList)
{
//qadRcvDetailList同一xxqad_prh_receiver所有记录
@ -232,18 +271,15 @@ namespace CK.SCP.GrupUniApi.Controller
{
continue;
}
var firstqadData = qadDataList[0];
List<TB_RECEIVE_QTY> _lsQty = new List<TB_RECEIVE_QTY>();
var scpRcv = wdb.TB_RECEIVE.SingleOrDefault(p => p.RecvBillNum != null && p.RecvBillNum == qadRcvNbrList && p.Site==firstqadData.xxwms_rc_domain);
//判断0100工厂的收货自动审核是否为允许
bool isRerviceOk = false;
if (!string.IsNullOrEmpty(firstqadData.xxwms_rc_domain))
{
string site = firstqadData.xxwms_rc_domain;//0100
List<TA_FACTORY_CONFIG> configs = wdb.TA_FACTORY_CONFIG.Where(p => p.FactoryId == site).ToList();
foreach (TA_FACTORY_CONFIG cfg in configs)
{
TA_CONFIG tacfg = wdb.TA_CONFIG.Where(p => p.UID == cfg.ConfigId).SingleOrDefault();
@ -279,21 +315,13 @@ namespace CK.SCP.GrupUniApi.Controller
BillType = billtype
};
scpRcvList.Add(scpRcv);
//if (!string.IsNullOrEmpty(scpRcv.AsnBillNum))
//{
// _lsQty = wdb.Database.SqlQuery<TB_RECEIVE_QTY>(_recvQty, scpRcv.RecvBillNum).ToList();
//}
}
scpRcv.PoBillNum = firstqadData.xxwms_rc_po_nbr;//采购单
scpRcv.AsnBillNum = firstqadData.xxwms_rc_ps_nbr;//发货单号
scpRcv.Site = firstqadData.xxwms_rc_domain;//地点
scpRcv.VendId = firstqadData.xxwms_rc_vend;//供货商名称
scpRcv.ShipTime = firstqadData.xxwms_rc_date_ship;//收货日期
scpRcv.SubSite = !string.IsNullOrEmpty(firstqadData.xxwms_rc_site)? firstqadData.xxwms_rc_site: firstqadData.xxwms_rc_domain;
scpRcv.SubSite = !string.IsNullOrEmpty(firstqadData.xxwms_rc_site)? firstqadData.xxwms_rc_site: firstqadData.xxwms_rc_domain;
//var scpAsn = wdb.TF_ASN.FirstOrDefault(p => p.BillNum == scpRcv.AsnBillNum);
var scpAsn = wdb.TB_ASN.Where(p => p.AsnBillNum== scpRcv.AsnBillNum && p.IsDeleted==false).ToList();//发货单主表订单号==收货单主表发货单号
if (scpAsn != null && scpAsn.Count>0)
@ -361,50 +389,9 @@ namespace CK.SCP.GrupUniApi.Controller
BillType = billtype
};
scpRcveDetailList.Add(scpRcvDetail);
//var _first= wdb.TB_ASN_DETAIL.FirstOrDefault(p => p.AsnBillNum == scpRcv.AsnBillNum
//&& p.PartCode== qadData.xxwms_rc_part
//&& p.Batch==qadData.xxwms_rc_lot
//&& p.PoBillNum==qadData.xxwms_rc_po_nbr
//&& p.PoLine==qadData.xxwms_rc_po_line
//);
//var _fs=_lsQty.FirstOrDefault(p => p.AsnBillNum == scpRcv.AsnBillNum
// && p.PartCode == qadData.xxwms_rc_part
// && p.Batch == qadData.xxwms_rc_lot
// && p.PoBillNum == qadData.xxwms_rc_po_nbr
// && p.PoLine == qadData.xxwms_rc_po_line);
//if (_first != null && _fs!=null)
//{
// _first.Extend1 = (_fs.RecQty!=null?_fs.RecQty.Value:0 + qadData.xxwms_rc_qty_total).ToString();
// wdb.TB_ASN_DETAIL.AddOrUpdate(_first);
//}
}
//var scpPoDetail =
// wdb.TB_PO_DETAIL.FirstOrDefault(
// p => p.PoBillNum == qadData.xxwms_rc_po_nbr && p.PoLine == poLineNum);
//if (scpPoDetail != null)
//{
// //订单明细ReceivedQty已收数量 += 收货明细Qty已结束量
// scpPoDetail.ReceivedQty += scpRcvDetail.Qty;
//}
//var scpPo = wdb.TB_PO.FirstOrDefault(p => p.ErpBillNum == qadData.xxwms_rc_po_nbr);
//if (scpPo != null)
//{
// //订单明细
// var scpPoDetails = wdb.TB_PO_DETAIL.Where(p => p.PoBillNum == qadData.xxwms_rc_po_nbr);
// //if (scpPoDetails.All(p => p.BillQty == p.ReceivedQty))
// // scpPo.State = (int)PlanState.Complete;
// if (scpPoDetails.All(p => p.PlanQty == p.ReceivedQty))//订货数量==已收数量
// {
// scpPo.State = (int)PlanState.Complete;
// //var _detail = wdb.TB_ASK_DETAIL.Where(p => p.PoBillNum == qadData.xxwms_rc_po_nbr && p.PoLine == poLineNum );
// //if (_detail!=null && _detail.Count() > 0)
// //{
// // var _qty=_detail.Sum(p=>p.AskQty);
// // if(_qty== p.ReceivedQty)
// //}
// }
//}
qadData.xxwms_rc_wmsread = ((int)UniApiState.).ToString();
}
catch (Exception ex)

Loading…
Cancel
Save