¶Ô±ÈÐÂÎļþ |
| | |
| | | using MES.Service.DB; |
| | | using MES.Service.Dto.service; |
| | | using MES.Service.Modes; |
| | | |
| | | namespace MES.Service.service.Warehouse; |
| | | |
| | | public class MesInvItemOutsManager : Repository<MesInvItemOuts> |
| | | { |
| | | private readonly int BILL_TYPE_ID = 200; |
| | | private readonly int TRANSACTION_NO = 203; |
| | | |
| | | public bool ReturnRequest(ItemOut oItemOut) |
| | | { |
| | | var itemOutFrom = oItemOut.from; |
| | | var itemOutLists = oItemOut.items; |
| | | |
| | | // æ ¹æ®AsnNoåMesNo对æç»è¿è¡åç» |
| | | var groupedItems = itemOutLists |
| | | .GroupBy(item => new { item.MesNo, item.SqNo }) |
| | | .ToList(); |
| | | |
| | | bool result = true; |
| | | foreach (var group in groupedItems) |
| | | { |
| | | //if (group.Key.AsnNo == null) |
| | | //{ |
| | | // throw new NotImplementedException("AsnNoä¸è½ä¸ºç©º"); |
| | | //} |
| | | |
| | | if (group.Key.MesNo == null) |
| | | { |
| | | throw new NotImplementedException("å
¥åºååå·ä¸è½ä¸ºç©º"); |
| | | } |
| | | |
| | | if (group.Key.SqNo == null) |
| | | { |
| | | throw new NotImplementedException("éè´§ç³è¯·åè¡å·ä¸è½ä¸ºç©º"); |
| | | } |
| | | |
| | | // å建ä¸ä¸ªä¸´æ¶çitemOutFrom对象ï¼ä½¿ç¨åç»çKeyä½ä¸ºä¸»è¦å±æ§ |
| | | var tempItemOutFrom = new ItemOutFrom |
| | | { |
| | | |
| | | MesNo = group.Key.MesNo, |
| | | SqNo = group.Key.SqNo, |
| | | // ç»§æ¿åå§itemOutFromçå
¶ä»å±æ§ |
| | | RtnNo = itemOutFrom.RtnNo, |
| | | Type = itemOutFrom.Type, |
| | | CreateBy = itemOutFrom.CreateBy, |
| | | FMRMODE = itemOutFrom.FMRMODE, |
| | | DepotId = itemOutFrom.DepotId, |
| | | SupperId = itemOutFrom.SupperId |
| | | }; |
| | | |
| | | // æ ¹æ®Typeæ§è¡ä¸åçé»è¾ |
| | | switch (tempItemOutFrom.Type) |
| | | { |
| | | case "1": |
| | | { |
| | | var mesInvItemOuts = Db.Queryable<MesInvItemOuts>() |
| | | .Where(s => s.BillTypeId == BILL_TYPE_ID |
| | | && s.TransactionNo == TRANSACTION_NO |
| | | && s.ItemOutNo == tempItemOutFrom.RtnNo |
| | | |
| | | ) |
| | | .Count(); |
| | | |
| | | if (mesInvItemOuts > 0) |
| | | { |
| | | throw new NotImplementedException( |
| | | tempItemOutFrom.RtnNo + |
| | | "çéæç³è¯·åå·²ç»åå¨"); |
| | | } |
| | | |
| | | // 为å½ååç»ä¿åæ°æ® |
| | | var groupResult = Save(tempItemOutFrom, group.ToList()); |
| | | if (!groupResult) |
| | | { |
| | | result = false; |
| | | } |
| | | |
| | | break; |
| | | } |
| | | case "4": |
| | | var removeResult = Remove(tempItemOutFrom); |
| | | if (!removeResult) |
| | | { |
| | | result = false; |
| | | } |
| | | |
| | | break; |
| | | default: |
| | | result = false; |
| | | break; |
| | | } |
| | | } |
| | | |
| | | return result; |
| | | } |
| | | |
| | | private bool Save(ItemOutFrom from, List<ItemOutList> items) |
| | | { |
| | | var mesInvItemIns = Db.Queryable<MesInvItemIns>() |
| | | .Where(s => s.BillTypeId == 100 |
| | | && s.TransctionNo == "101" |
| | | && s.BillNo == from.MesNo |
| | | ).First(); |
| | | |
| | | if (mesInvItemIns == null) |
| | | { |
| | | throw new NotImplementedException("éè´å
¥åºä¸åå¨"); |
| | | } |
| | | |
| | | var mesDepots = Db.Queryable<MesDepots>() |
| | | .Where(s => s.DepotId == Decimal.Parse(from.DepotId)).First(); |
| | | |
| | | var mesLinkU9 = Db.Queryable<MesLinkU9>() |
| | | .Where(s => s.TableType == "MES_SUPPLIER" |
| | | && s.U9Id == from.SupperId).First(); |
| | | |
| | | if (mesLinkU9 == null) |
| | | { |
| | | throw new NotImplementedException("ä¾åºåIDä¸å卿æªåæ¥äºU9"); |
| | | } |
| | | |
| | | var mesSupplier = Db.Queryable<MesSupplier>() |
| | | .Where(s => s.Id == Decimal.Parse(mesLinkU9.MesId)) |
| | | .First(); |
| | | |
| | | if (mesDepots == null) |
| | | { |
| | | throw new NotImplementedException("[" + from.DepotId + |
| | | "]ä»åºä¸åå¨ï¼è¯·åæ¥ç»MES"); |
| | | } |
| | | |
| | | if (mesSupplier == null) |
| | | { |
| | | throw new NotImplementedException("[" + from.SupperId + |
| | | "]ä¾åºåä¸åå¨ï¼è¯·åæ¥ç»MES"); |
| | | } |
| | | |
| | | var nextSequenceValue = |
| | | Db.Ado.SqlQuery<decimal>("SELECT SEQ_OUT_ID.NEXTVAL FROM DUAL") |
| | | .First(); |
| | | |
| | | // var billCode = |
| | | // Db.Ado.SqlQuery<string>( |
| | | // "SELECT GETBILLCODE1('1000', '1000', 'TLSQ') FROM DUAL") |
| | | // .First(); |
| | | var billCode = from.RtnNo; |
| | | |
| | | // å建éè´éæåè®°å½ |
| | | var mesInvItemOuts = new MesInvItemOuts |
| | | { |
| | | Id = nextSequenceValue, |
| | | ItemOutNo = billCode, |
| | | Status = 0, |
| | | CreateBy = "PL017", |
| | | CreateDate = DateTime.Now, |
| | | BillTypeId = 200, |
| | | TransactionNo = 203, |
| | | DepotCode = mesDepots.DepotCode, |
| | | FType = 0, |
| | | OutStatus = 0, |
| | | IsVisual = 1, |
| | | Factory = "1000", |
| | | Company = "1000", |
| | | SuppNo = mesSupplier.SuppNo, |
| | | ItemFlag = 0, |
| | | BoardFlag = 0, |
| | | OutType = "éè´éæ", |
| | | Nflag = 0, |
| | | Fmrmode = from.FMRMODE, |
| | | Sapno = from.SqNo, |
| | | Organizeid = "1002503270000079", |
| | | }; |
| | | |
| | | // å建éè´éæåè®°å½ |
| | | var mesInvItemOutItems = new List<MesInvItemOutItems>(); |
| | | |
| | | foreach (var itemOutList in items) |
| | | { |
| | | // æ£æ¥å¿
è¦å段æ¯å¦ä¸ºç©º |
| | | if (string.IsNullOrEmpty(itemOutList.SrcDocNo)) |
| | | { |
| | | throw new NotImplementedException("éè´è®¢åå·ä¸è½ä¸ºç©º"); |
| | | } |
| | | |
| | | if (string.IsNullOrEmpty(itemOutList.SrcDocLineNo)) |
| | | { |
| | | throw new NotImplementedException("éè´è®¢åè¡å·ä¸è½ä¸ºç©º"); |
| | | } |
| | | |
| | | //if (string.IsNullOrEmpty(itemOutList.AsnLineNo)) |
| | | //{ |
| | | // throw new NotImplementedException("ASNè¡å·ä¸è½ä¸ºç©º"); |
| | | //} |
| | | |
| | | if (string.IsNullOrEmpty(itemOutList.itemId)) |
| | | { |
| | | throw new NotImplementedException("ç©æIDä¸è½ä¸ºç©º"); |
| | | } |
| | | |
| | | var mesRohInData = Db.Queryable<MesRohInData>() |
| | | .Where(s => s.BillNo == itemOutList.SrcDocNo |
| | | && s.OrderLineId == itemOutList.SrcDocLineNo) |
| | | .First(); |
| | | |
| | | if (mesRohInData == null) |
| | | { |
| | | throw new NotImplementedException("éè´è®¢åä¸åå¨"); |
| | | } |
| | | |
| | | //var deliveryDetail = Db.Queryable<DeliveryDetail>() |
| | | // .Where(a => Int32.Parse(a.ZzitemId) == |
| | | // Int32.Parse(itemOutList.AsnLineNo)) |
| | | // .Count(); |
| | | |
| | | //if (deliveryDetail <= 0) |
| | | //{ |
| | | // throw new NotImplementedException("[" + from.AsnNo + "]çæç»è¡[" + |
| | | // itemOutList.AsnLineNo + |
| | | // "]ä¸åå¨"); |
| | | //} |
| | | |
| | | var itemIdLinkU9 = Db.Queryable<MesLinkU9>() |
| | | .Where(s => s.TableType == "MES_ITEMS" |
| | | && s.U9Id == itemOutList.itemId).First(); |
| | | |
| | | if (mesLinkU9 == null) |
| | | { |
| | | throw new NotImplementedException("ä¾åºåIDä¸å卿æªåæ¥äºU9"); |
| | | } |
| | | |
| | | var mesItems = Db.Queryable<MesItems>() |
| | | .Where(s => s.Id == Decimal.Parse(itemIdLinkU9.MesId)) |
| | | .First(); |
| | | |
| | | if (mesItems == null) |
| | | { |
| | | throw new NotImplementedException("[" + itemOutList.itemId + |
| | | "]ç©æä¸åå¨ï¼è¯·åæ¥ç»MES"); |
| | | } |
| | | |
| | | var mesInvItemInCItems = Db.Queryable<MesInvItemInCItems>() |
| | | .Where(s => s.ItemInId == mesInvItemIns.Id |
| | | && s.ItemNo == mesItems.ItemNo |
| | | && s.Ebeln == itemOutList.SrcDocNo |
| | | && s.EbelnLineNo == |
| | | Decimal.Parse(itemOutList.SrcDocLineNo) |
| | | && s.SuppNo == mesSupplier.SuppNo |
| | | ).First(); |
| | | |
| | | if (mesInvItemInCItems == null) |
| | | { |
| | | throw new NotImplementedException("没æå¯¹åºçå
¥åºæç»"); |
| | | } |
| | | |
| | | |
| | | // ç¡®ä¿CbillNoä¸ä¸ºç©º |
| | | if (string.IsNullOrEmpty(mesInvItemIns.CbillNo)) |
| | | { |
| | | throw new NotImplementedException("å
¥åºåå
³èçéè´åå·ä¸è½ä¸ºç©º"); |
| | | } |
| | | |
| | | mesInvItemOutItems.Add(new MesInvItemOutItems |
| | | { |
| | | ItemOutId = nextSequenceValue, |
| | | ItemNo = mesItems.ItemNo, |
| | | Quantity = Decimal.Parse(itemOutList.qty), |
| | | CreateBy = "PL017", |
| | | CreateDate = DateTime.Now, |
| | | Factory = "1000", |
| | | Company = "1000", |
| | | DepotCode = mesDepots.DepotCode, |
| | | WorkNo = itemOutList.SrcDocNo, // ç¡®ä¿WorkNoæå¼ |
| | | WorkLine = |
| | | Decimal.Parse(itemOutList.SrcDocLineNo), // ç¡®ä¿WorkLineæå¼ |
| | | EbelnK3id = Decimal.Parse(mesRohInData.ErpId), |
| | | LineK3id = Decimal.Parse(mesRohInData.EbelnK3id), |
| | | FType = 0, |
| | | Status = 0, |
| | | PbillNo = mesInvItemIns.CbillNo, // ç¡®ä¿PbillNoæå¼ |
| | | RkNo = from.MesNo, // ç¡®ä¿RkNoæå¼ |
| | | RkLine = mesInvItemInCItems.Id, // ç¡®ä¿RkLineæå¼ |
| | | RkQty = mesInvItemInCItems.Quantity, |
| | | TlQty = 0, |
| | | ItemId = Decimal.Parse(itemIdLinkU9.MesId), // ç¡®ä¿ItemIdæå¼ |
| | | //SqNo = itemOutList.SqNo, // ç¡®ä¿ItemIdæå¼ |
| | | //ZzitemId = itemOutList.AsnLineNo, // ç¡®ä¿ItemIdæå¼ |
| | | // Unit = item.Unit, |
| | | }); |
| | | } |
| | | |
| | | var outItemCommand = Db.Insertable(mesInvItemOutItems) |
| | | .PageSize(1).IgnoreColumnsNull().ExecuteCommand(); |
| | | if (outItemCommand <= 0) |
| | | { |
| | | throw new Exception("å建éè´éæåå表失败"); |
| | | } |
| | | |
| | | // æå
¥éè´éæåè®°å½ |
| | | var insertResult = Db.Insertable(mesInvItemOuts).IgnoreColumns(true) |
| | | .ExecuteCommand(); |
| | | if (insertResult <= 0) |
| | | { |
| | | throw new Exception("å建éè´éæå失败"); |
| | | } |
| | | |
| | | return outItemCommand + insertResult >= 2; |
| | | } |
| | | |
| | | private bool Remove(ItemOutFrom from) |
| | | { |
| | | // æ¥æ¾è¦å é¤çéè´éæå |
| | | var mesInvItemOuts = Db.Queryable<MesInvItemOuts>() |
| | | .Where(s => s.BillTypeId == BILL_TYPE_ID |
| | | && s.TransactionNo == TRANSACTION_NO |
| | | && s.ItemOutNo == from.RtnNo).ToList(); |
| | | |
| | | if (mesInvItemOuts == null || mesInvItemOuts.Count == 0) |
| | | { |
| | | throw new NotImplementedException("æ¾ä¸å°å¯¹åºçéè´éæå: " + from.RtnNo); |
| | | } |
| | | |
| | | // æ£æ¥æ¯å¦æå·²å®¡æ ¸çåæ®ï¼å¦æåå¨å·²å®¡æ ¸(Status=1)åä¸å
许å é¤ |
| | | if (mesInvItemOuts.Any(item => item.Status == 1)) |
| | | { |
| | | throw new NotImplementedException("åå¨å·²å®¡æ ¸çéè´éæåï¼ä¸å
许å é¤"); |
| | | } |
| | | |
| | | // å 餿æç¸å
³åæ® |
| | | foreach (var itemOut in mesInvItemOuts) |
| | | { |
| | | // æ¥æ¾è¦å é¤çéè´éæåæç» |
| | | var mesInvItemOutItems = Db.Queryable<MesInvItemOutItems>() |
| | | .Where(s => s.ItemOutId == itemOut.Id) |
| | | .ToList(); |
| | | |
| | | if (mesInvItemOutItems == null || mesInvItemOutItems.Count == 0) |
| | | { |
| | | throw new NotImplementedException( |
| | | $"æ¾ä¸å°éè´éæå[{itemOut.ItemOutNo}]对åºçæç»"); |
| | | } |
| | | |
| | | // å é¤éè´éæåæç» |
| | | var deleteItemsResult = Db.Deleteable<MesInvItemOutItems>() |
| | | .Where(s => s.ItemOutId == itemOut.Id) |
| | | .ExecuteCommand(); |
| | | |
| | | if (deleteItemsResult <= 0) |
| | | { |
| | | throw new Exception($"å é¤éè´éæå[{itemOut.ItemOutNo}]æç»å¤±è´¥"); |
| | | } |
| | | |
| | | // å é¤éè´éæå |
| | | var deleteResult = Db.Deleteable<MesInvItemOuts>() |
| | | .Where(s => s.Id == itemOut.Id) |
| | | .ExecuteCommand(); |
| | | |
| | | if (deleteResult <= 0) |
| | | { |
| | | throw new Exception($"å é¤éè´éæå[{itemOut.ItemOutNo}]失败"); |
| | | } |
| | | } |
| | | |
| | | return true; |
| | | } |
| | | } |