| | |
| | | try |
| | | { |
| | | List<Dt_MaterielInfo> OldMaterielInfos = BaseDal.QueryData(x => x.WarehouseId == WarehouseEnum.LLDYL.ObjToInt()); |
| | | //夿é夿å
¥ |
| | | Dt_MaterielInfo? ExistMaterial = OldMaterielInfos.FirstOrDefault(x => bSTMaterialDTOs.Where(x => x.Way == 1).Select(x => x.MaterialId).Contains(x.MaterialSourceId)); |
| | | if (ExistMaterial != null) |
| | | //æ°å¢ |
| | | List<BSTMaterialDTO> bSTMaterialsDTOAdd = bSTMaterialDTOs.Where(x => x.Way == 1).ToList(); |
| | | //ä¿®æ¹ |
| | | List<BSTMaterialDTO> bSTMaterialsDTOUpdate = bSTMaterialDTOs.Where(x => x.Way == 2).ToList(); |
| | | //å é¤ |
| | | List<BSTMaterialDTO> bSTMaterialsDTODel = bSTMaterialDTOs.Where(x => x.Way == 3).ToList(); |
| | | List<Dt_MaterielInfo> materielInfosAdd = new List<Dt_MaterielInfo>(); |
| | | List<Dt_MaterielInfo> materielInfosUpdate = new List<Dt_MaterielInfo>(); |
| | | //æ°å¢ |
| | | if (bSTMaterialsDTOAdd.Count>0) |
| | | { |
| | | return content.Error($"ç©æId{nameof(BSTMaterialDTO.MaterialId)}:{ExistMaterial.MaterialSourceId}å·²åå¨"); |
| | | //夿é夿å
¥ |
| | | Dt_MaterielInfo? ExistMaterial = OldMaterielInfos.FirstOrDefault(x => bSTMaterialsDTOAdd.Select(x => x.MaterialId).Contains(x.MaterialSourceId)); |
| | | if (ExistMaterial != null) |
| | | { |
| | | return content.Error($"ç©æ{nameof(BSTMaterialDTO.MaterialId)}:{ExistMaterial.MaterialSourceId}å·²åå¨"); |
| | | } |
| | | |
| | | foreach (var item in bSTMaterialsDTOAdd) |
| | | { |
| | | if (bSTMaterialsDTOUpdate.FirstOrDefault(x=>x.MaterialId==item.MaterialId)!=null) |
| | | { |
| | | continue; |
| | | } |
| | | Dt_MaterielInfo materielInfo = _mapper.Map<Dt_MaterielInfo>(item); |
| | | materielInfosAdd.Add(materielInfo); |
| | | } |
| | | } |
| | | List<Dt_MaterielInfo> materielInfos = new List<Dt_MaterielInfo>(); |
| | | foreach (var item in bSTMaterialDTOs) |
| | | //æ´æ° |
| | | if (bSTMaterialsDTOUpdate.Count > 0) |
| | | { |
| | | Dt_MaterielInfo materielInfo = _mapper.Map<Dt_MaterielInfo>(item); |
| | | materielInfos.Add(materielInfo); |
| | | //è·åå·²åå¨çç©æ |
| | | List<Dt_MaterielInfo>? ExistbSTMaterialsUpdate = OldMaterielInfos.Where(x => bSTMaterialsDTOUpdate.Select(x => x.MaterialId).Contains(x.MaterialSourceId)).ToList(); |
| | | foreach (var item in bSTMaterialsDTOUpdate) |
| | | { |
| | | Dt_MaterielInfo? materielInfoUpdate = ExistbSTMaterialsUpdate.FirstOrDefault(x => x.MaterialSourceId == item.MaterialId); |
| | | //å¦æç©æå·²åå¨åè¿è¡æ´æ¹ |
| | | if (materielInfoUpdate!=null) |
| | | { |
| | | materielInfoUpdate.MaterielCode = item.MaterialNo; |
| | | materielInfoUpdate.MaterielName = item.Name; |
| | | materielInfoUpdate.MaterielSpec = item.Spec; |
| | | materielInfoUpdate.MaterielWide = item.MaterielWide; |
| | | materielInfoUpdate.MaterielThickness = item.MaterielThickness; |
| | | materielInfoUpdate.MaterielLength = item.MaterielLength; |
| | | materielInfoUpdate.MaterielWeight = item.Weight; |
| | | materielInfoUpdate.MaterielUnit = item.Unit; |
| | | materielInfosUpdate.Add(materielInfoUpdate); |
| | | } |
| | | else//妿ä¸åå¨åè¿è¡æ°å¢ |
| | | { |
| | | Dt_MaterielInfo materielInfo = _mapper.Map<Dt_MaterielInfo>(item); |
| | | materielInfosAdd.Add(materielInfo); |
| | | } |
| | | } |
| | | } |
| | | BaseDal.AddData(materielInfos); |
| | | //å é¤ |
| | | if (bSTMaterialsDTODel.Count > 0) |
| | | { |
| | | |
| | | } |
| | | //æ´æ°æ°æ® |
| | | _unitOfWorkManage.CommitTran(); |
| | | BaseDal.AddData(materielInfosAdd); |
| | | BaseDal.UpdateData(materielInfosUpdate); |
| | | _unitOfWorkManage.CommitTran(); |
| | | return content.OK("æ¥æ¶æå"); |
| | | } |
| | | catch (Exception ex) |
| | |
| | | using WIDESEA_Common.LocationEnum; |
| | | using WIDESEA_Common.TaskEnum; |
| | | using WIDESEA_Common.WareHouseEnum; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup; |
| | | |
| | | namespace WIDESEA_BasicService |
| | | { |
| | |
| | | { |
| | | throw new Exception($"æªæ¾å°ä»åºä¿¡æ¯"); |
| | | } |
| | | //Dt_PalletTypeInfo? palletTypeInfo = _basicRepository.PalletTypeInfoRepository.QueryFirst(x => x.PalletType == palletType && x.WarehouseId == warehouseId); |
| | | //if (palletTypeInfo == null) |
| | | //{ |
| | | // if (warehouse.WarehouseCode == WarehouseEnum.HA153.ToString() && warehouse.WarehouseCode == WarehouseEnum.HA71.ToString() && warehouse.WarehouseCode == WarehouseEnum.HA60.ToString()) |
| | | // { |
| | | // palletTypeInfo = new Dt_PalletTypeInfo() |
| | | // { |
| | | // LocaitonCount = 1, |
| | | // PalletType = 0, |
| | | // IsOdd = false, |
| | | // }; |
| | | // } |
| | | // else |
| | | // throw new Exception($"请é
ç½®æçç±»åä¿¡æ¯"); |
| | | //} |
| | | Dt_PalletTypeInfo? palletTypeInfo = _basicRepository.PalletTypeInfoRepository.QueryFirst(x => x.PalletType == palletType && x.WarehouseId == warehouseId); |
| | | if (palletTypeInfo == null) |
| | | { |
| | | if (warehouse.WarehouseCode == WarehouseEnum.LLDYL.ToString()) |
| | | { |
| | | throw new Exception($"请é
ç½®æçç±»åä¿¡æ¯"); |
| | | } |
| | | } |
| | | |
| | | return warehouse.WarehouseCode switch |
| | | { |
| | | "LLDCP" or "LLDYL"=> AssignLocation(roadwayNo), |
| | | "LLDCP" or "LLDFL" => AssignLocation(roadwayNo), |
| | | "LLDYL" => AssignLocationYL(roadwayNo, palletTypeInfo), |
| | | _ => throw new Exception($"æªæ¾å°ä»åºè´§ä½åé
æ¹æ³") |
| | | }; |
| | | } |
| | | |
| | | private readonly static object _locker = new object(); |
| | | private readonly static object _AssignLocationYL = new object(); |
| | | private static List<LocationCache> locationCaches = new List<LocationCache>(); |
| | | /// <summary> |
| | | /// |
| | | /// åé
è´§ä½ |
| | | /// </summary> |
| | | /// <param name="roadwayNo"></param> |
| | | /// <returns></returns> |
| | |
| | | |
| | | List<string> lockLocations = locationCaches.Select(x => x.LocationCode).ToList(); |
| | | |
| | | List<Dt_LocationInfo> locationInfos = BaseDal.QueryData(x => x.RoadwayNo == roadwayNo);//æ¥è¯¢å··éææè´§ä½ä¿¡æ¯ |
| | | |
| | | Dictionary<string, OrderByType> orderBy = new Dictionary<string, OrderByType>() |
| | | { |
| | | |
| | | { nameof(Dt_LocationInfo.Column),OrderByType.Desc }, |
| | | { nameof(Dt_LocationInfo.Layer),OrderByType.Asc }, |
| | | { nameof(Dt_LocationInfo.Depth),OrderByType.Desc }, |
| | |
| | | return BaseDal.QueryFirst(x => x.RoadwayNo == roadwayNo && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.EnableStatus != EnableStatusEnum.Disable.ObjToInt() && !lockLocations.Contains(x.LocationCode), orderBy);//æ¥è¯¢ç©ºè´§ä½ä¿¡æ¯å¹¶æé¤5åéå
åé
çè´§ä½,æ ¹æ®å±ãåãæ·±åº¦ãè¡æåº |
| | | } |
| | | } |
| | | public Dt_LocationInfo? AssignLocationYL(string roadwayNo, Dt_PalletTypeInfo palletTypeInfo) |
| | | { |
| | | lock (_AssignLocationYL) |
| | | { |
| | | List<LocationCache> removeItems = locationCaches.Where(x => (DateTime.Now - x.DateTime).TotalMinutes > 5).ToList();//æ¥è¯¢æ·»å éæåéè¶
è¿5åéçè´§ä½ |
| | | int count = removeItems.Count; |
| | | for (int i = 0; i < count; i++) |
| | | { |
| | | locationCaches.Remove(removeItems[i]);//ç§»é¤æ¥è¯¢æ·»å éæåéè¶
è¿5åéçè´§ä½ |
| | | } |
| | | |
| | | List<string> lockLocations = locationCaches.Select(x => x.LocationCode).ToList(); |
| | | |
| | | List<Dt_LocationInfo> locationInfos = BaseDal.QueryData(x => x.RoadwayNo == roadwayNo);//æ¥è¯¢å··éææè´§ä½ä¿¡æ¯ |
| | | |
| | | Dictionary<string, OrderByType> orderBy = new Dictionary<string, OrderByType>() |
| | | { |
| | | { nameof(Dt_LocationInfo.Column),OrderByType.Desc }, |
| | | { nameof(Dt_LocationInfo.Layer),OrderByType.Asc }, |
| | | { nameof(Dt_LocationInfo.Depth),OrderByType.Desc }, |
| | | { nameof(Dt_LocationInfo.Row),OrderByType.Asc } |
| | | }; |
| | | if (roadwayNo.Contains("YLDual")) |
| | | { |
| | | if (palletTypeInfo.LocaitonCount==1) |
| | | { |
| | | return BaseDal.QueryFirst(x => x.LocationType == LocationTypeEnum.SmallPallet.ObjToInt() && x.RoadwayNo == roadwayNo && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.EnableStatus != EnableStatusEnum.Disable.ObjToInt() && !lockLocations.Contains(x.LocationCode), orderBy);//æ¥è¯¢ç©ºè´§ä½ä¿¡æ¯å¹¶æé¤5åéå
åé
çè´§ä½,æ ¹æ®å±ãåãæ·±åº¦ãè¡æåº |
| | | } |
| | | else |
| | | { |
| | | //æ¥è¯¢ç©ºè´§ä½ä¿¡æ¯å¹¶æé¤5åéå
åé
çè´§ä½,æ ¹æ®å±ãåãæ·±åº¦ãè¡æåº |
| | | List<Dt_LocationInfo> locationInfosMedium = BaseDal.QueryData(x => x.LocationType == LocationTypeEnum.MediumPallet.ObjToInt() && x.RoadwayNo == roadwayNo && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.EnableStatus != EnableStatusEnum.Disable.ObjToInt() && !lockLocations.Contains(x.LocationCode), orderBy); |
| | | Dt_LocationInfo locationInfo = new Dt_LocationInfo(); |
| | | foreach (var item in locationInfosMedium) |
| | | { |
| | | //è·åæ´æ¹åºä½ |
| | | Dt_LocationInfo? nearLocation1; |
| | | Dt_LocationInfo? nearLocation2; |
| | | |
| | | nearLocation1 = locationInfos.FirstOrDefault(x => x.LocationType == LocationTypeEnum.SmallPallet.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.Row == item.Row && x.Layer == item.Layer && x.Depth == item.Depth && x.Column == item.Column - 1); |
| | | nearLocation2 = locationInfos.FirstOrDefault(x => x.LocationType == LocationTypeEnum.SmallPallet.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.Row == item.Row && x.Layer == item.Layer && x.Depth == item.Depth && x.Column == item.Column + 1); |
| | | if (nearLocation1!=null && nearLocation2!=null) |
| | | { |
| | | locationInfo = item; |
| | | } |
| | | } |
| | | return locationInfo; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | return BaseDal.QueryFirst(x => x.RoadwayNo == roadwayNo && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.EnableStatus != EnableStatusEnum.Disable.ObjToInt() && !lockLocations.Contains(x.LocationCode), orderBy);//æ¥è¯¢ç©ºè´§ä½ä¿¡æ¯å¹¶æé¤5åéå
åé
çè´§ä½,æ ¹æ®å±ãåãæ·±åº¦ãè¡æåº |
| | | } |
| | | |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// ä¿®æ¹è´§ä½ç¶æåç±»å |
| | | /// </summary> |
| | |
| | | // Repository.UpdateData(locations); |
| | | //} |
| | | |
| | | public void UpdateLocationStatus(Dt_LocationInfo location, int palletType, LocationStatusEnum locationStatus, int warehousId) |
| | | public void UpdateLocationStatus(Dt_LocationInfo location, int palletType, LocationStatusEnum locationStatus, int warehouseId) |
| | | { |
| | | List<Dt_LocationInfo> locationInfos = Repository.QueryData(x => x.RoadwayNo == location.RoadwayNo); |
| | | |
| | | List<Dt_PalletTypeInfo> palletTypeInfos = _basicRepository.PalletTypeInfoRepository.QueryData(x => x.WarehouseId == warehousId); |
| | | Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == warehousId); |
| | | //Dt_PalletTypeInfo? palletTypeInfo = palletTypeInfos.FirstOrDefault(x => x.PalletType == palletType && x.WarehouseId == warehousId); |
| | | //if (palletTypeInfo == null || warehouse.WarehouseCode == WarehouseEnum.HA60.ToString()) |
| | | //{ |
| | | // if (warehouse.WarehouseCode == WarehouseEnum.HA153.ToString() || warehouse.WarehouseCode == WarehouseEnum.HA71.ToString() || warehouse.WarehouseCode == WarehouseEnum.HA60.ToString()) |
| | | // { |
| | | // palletTypeInfo = new Dt_PalletTypeInfo() |
| | | // { |
| | | // LocaitonCount = 1, |
| | | // PalletType = 0, |
| | | // IsOdd = false, |
| | | // }; |
| | | // } |
| | | // else |
| | | // throw new Exception($"请é
ç½®æçç±»åä¿¡æ¯"); |
| | | //} |
| | | List<Dt_PalletTypeInfo> palletTypeInfos = _basicRepository.PalletTypeInfoRepository.QueryData(x => x.WarehouseId == warehouseId); |
| | | Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == warehouseId); |
| | | |
| | | Dt_PalletTypeInfo? palletTypeInfo = _basicRepository.PalletTypeInfoRepository.QueryFirst(x => x.PalletType == palletType && x.WarehouseId == warehouseId); |
| | | if (palletTypeInfo == null) |
| | | { |
| | | if (warehouse.WarehouseCode == WarehouseEnum.LLDYL.ToString()) |
| | | { |
| | | throw new Exception($"请é
ç½®æçç±»åä¿¡æ¯"); |
| | | } |
| | | } |
| | | List<Dt_LocationInfo> locations = GetGroupLocations(locationInfos, location); |
| | | if (locationInfos.Max(x => x.Depth) < 3) |
| | | { |
| | |
| | | |
| | | if (palletTypeInfos.FirstOrDefault(x => x.LocaitonCount == 2) != null) |
| | | { |
| | | Dt_LocationInfo? nearLocation; |
| | | //if (palletTypeInfo.IsOdd) |
| | | //{ |
| | | // nearLocation = locationInfos.FirstOrDefault(x => x.Row == location.Row && x.Layer == location.Layer && x.Depth == location.Depth && x.Column == location.Column + 1); |
| | | //} |
| | | //else |
| | | //{ |
| | | nearLocation = locationInfos.FirstOrDefault(x => x.Row == location.Row && x.Layer == location.Layer && x.Depth == location.Depth && x.Column == location.Column - 1); |
| | | //} |
| | | //è·åæ´æ¹åºä½ |
| | | Dt_LocationInfo? nearLocation1; |
| | | Dt_LocationInfo? nearLocation2; |
| | | |
| | | if (nearLocation!=null && location.RoadwayNo.Contains("BC")) |
| | | { |
| | | if (nearLocation?.LocationType == LocationTypeEnum.SmallPallet.ObjToInt()) |
| | | { |
| | | nearLocation = null; |
| | | } |
| | | } |
| | | if (location.RoadwayNo == "SC01_BC" && palletType != PalletTypeEnum.SmallPallet.ObjToInt()) |
| | | { |
| | | nearLocation = locationInfos.FirstOrDefault(x => x.Row == location.Row && x.Layer == location.Layer && x.Depth == location.Depth && x.Column == location.Column - 1); |
| | | if (nearLocation?.LocationType == LocationTypeEnum.SmallPallet.ObjToInt()) |
| | | { |
| | | nearLocation = null; |
| | | } |
| | | } |
| | | nearLocation1 = locationInfos.FirstOrDefault(x => x.LocationType == LocationTypeEnum.SmallPallet.ObjToInt() && x.Row == location.Row && x.Layer == location.Layer && x.Depth == location.Depth && x.Column == location.Column - 1); |
| | | nearLocation2 = locationInfos.FirstOrDefault(x => x.LocationType == LocationTypeEnum.SmallPallet.ObjToInt() && x.Row == location.Row && x.Layer == location.Layer && x.Depth == location.Depth && x.Column == location.Column + 1); |
| | | |
| | | if (nearLocation != null) |
| | | |
| | | if (nearLocation1 != null && nearLocation2 != null) |
| | | { |
| | | List<Dt_LocationInfo> nearLocations = GetGroupLocations(locationInfos, nearLocation); |
| | | //åè¾
æ |
| | | List<Dt_LocationInfo> nearLocations = new List<Dt_LocationInfo>() |
| | | { |
| | | nearLocation1, |
| | | nearLocation2 |
| | | }; |
| | | for (int i = 0; i < nearLocations.Count; i++) |
| | | { |
| | | List<int> palletTypes = palletTypeInfos.Select(x => x.PalletType).ToList(); |
| | | palletTypes.Add(0); |
| | | if (palletTypes.Contains(nearLocations[i].LocationType)) |
| | | if (locationStatus == LocationStatusEnum.Lock) |
| | | { |
| | | if (nearLocations[i].LocationType != palletType) |
| | | if (nearLocations[i].LocationStatus == LocationStatusEnum.Free.ObjToInt()) |
| | | { |
| | | nearLocations[i].LocationType = palletType; |
| | | nearLocations[i].LocationStatus = LocationStatusEnum.FreeLock.ObjToInt(); |
| | | } |
| | | |
| | | if (locationStatus == LocationStatusEnum.Lock) |
| | | } |
| | | else if (locationStatus == LocationStatusEnum.Free) |
| | | { |
| | | if (nearLocations[i].LocationStatus == LocationStatusEnum.FreeLock.ObjToInt()) |
| | | { |
| | | if (nearLocations[i].LocationStatus == LocationStatusEnum.InStock.ObjToInt()) |
| | | { |
| | | nearLocations[i].LocationStatus = LocationStatusEnum.InStockLock.ObjToInt(); |
| | | } |
| | | else if (nearLocations[i].LocationStatus == LocationStatusEnum.Free.ObjToInt()) |
| | | { |
| | | nearLocations[i].LocationStatus = LocationStatusEnum.FreeLock.ObjToInt(); |
| | | } |
| | | } |
| | | else if (locationStatus == LocationStatusEnum.Free || locationStatus == LocationStatusEnum.InStock) |
| | | { |
| | | if (nearLocations[i].LocationStatus == LocationStatusEnum.InStockLock.ObjToInt()) |
| | | { |
| | | nearLocations[i].LocationStatus = LocationStatusEnum.InStock.ObjToInt(); |
| | | } |
| | | else if (nearLocations[i].LocationStatus == LocationStatusEnum.FreeLock.ObjToInt()) |
| | | { |
| | | nearLocations[i].LocationStatus = LocationStatusEnum.Free.ObjToInt(); |
| | | } |
| | | nearLocations[i].LocationStatus = LocationStatusEnum.Free.ObjToInt(); |
| | | } |
| | | } |
| | | } |
| | | locations.AddRange(nearLocations); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | else |
| | | { |
| | |
| | | try |
| | | { |
| | | List<Dt_SupplierInfo> OldsupplierInfos = BaseDal.QueryData(x => x.InvOrgId == MaterielInvOrgEnum.èå.ObjToInt()); |
| | | //夿é夿å
¥ |
| | | Dt_SupplierInfo? ExistSupplier = OldsupplierInfos.FirstOrDefault(x => bSTSupplierDTOs.Where(x => x.Way == 1).Select(x => x.VendId).Contains(x.SupplierSourceId)); |
| | | if (ExistSupplier != null) |
| | | //æ°å¢ |
| | | List<BSTSupplierDTO> bSTSupplierDTOsAdd = bSTSupplierDTOs.Where(x => x.Way == 1).ToList(); |
| | | //ä¿®æ¹ |
| | | List<BSTSupplierDTO> bSTSupplierDTOsUpdate = bSTSupplierDTOs.Where(x => x.Way == 2).ToList(); |
| | | //å é¤ |
| | | List<BSTSupplierDTO> bSTSupplierDTOsDTODel = bSTSupplierDTOs.Where(x => x.Way == 3).ToList(); |
| | | List<Dt_SupplierInfo> supplierInfosAdd = new List<Dt_SupplierInfo>(); |
| | | List<Dt_SupplierInfo> supplierInfosUpdate = new List<Dt_SupplierInfo>(); |
| | | //æ°å¢ |
| | | if (bSTSupplierDTOsAdd.Count > 0) |
| | | { |
| | | return content.Error($"ç©æId{nameof(BSTSupplierDTO.VendId)}:{ExistSupplier.SupplierSourceId}å·²åå¨"); |
| | | //夿é夿å
¥ |
| | | Dt_SupplierInfo? ExistSupplier = OldsupplierInfos.FirstOrDefault(x => bSTSupplierDTOsAdd.Select(x => x.VendId).Contains(x.SupplierSourceId)); |
| | | if (ExistSupplier != null) |
| | | { |
| | | return content.Error($"ä¾åºå{nameof(BSTSupplierDTO.VendId)}:{ExistSupplier.SupplierSourceId}å·²åå¨"); |
| | | } |
| | | |
| | | foreach (var item in bSTSupplierDTOsAdd) |
| | | { |
| | | if (bSTSupplierDTOsUpdate.FirstOrDefault(x => x.VendId == item.VendId) != null) |
| | | { |
| | | continue; |
| | | } |
| | | Dt_SupplierInfo supplierInfo = _mapper.Map<Dt_SupplierInfo>(item); |
| | | supplierInfosAdd.Add(supplierInfo); |
| | | } |
| | | } |
| | | List<Dt_SupplierInfo> supplierInfos = new List<Dt_SupplierInfo>(); |
| | | foreach (var item in bSTSupplierDTOs) |
| | | //æ´æ° |
| | | if (bSTSupplierDTOsUpdate.Count > 0) |
| | | { |
| | | Dt_SupplierInfo supplierInfo = _mapper.Map<Dt_SupplierInfo>(item); |
| | | supplierInfos.Add(supplierInfo); |
| | | //è·åå·²åå¨çç©æ |
| | | List<Dt_SupplierInfo>? ExistbSTSuppliersUpdate = OldsupplierInfos.Where(x => bSTSupplierDTOsUpdate.Select(x => x.VendId).Contains(x.SupplierSourceId)).ToList(); |
| | | foreach (var item in bSTSupplierDTOsUpdate) |
| | | { |
| | | Dt_SupplierInfo? supplierInfoUpdate = ExistbSTSuppliersUpdate.FirstOrDefault(x => x.SupplierSourceId == item.VendId); |
| | | //å¦æç©æå·²åå¨åè¿è¡æ´æ¹ |
| | | if (supplierInfoUpdate != null) |
| | | { |
| | | supplierInfoUpdate.SupplierSourceId = item.VendId; |
| | | supplierInfoUpdate.SupplierCode = item.VendNo; |
| | | supplierInfoUpdate.SupplierShortName = item.ShortName; |
| | | supplierInfoUpdate.SupplierName = item.ShortName; |
| | | supplierInfoUpdate.Contacts = item.BusinessContact; |
| | | supplierInfoUpdate.ContactNumber = item.Tel; |
| | | supplierInfoUpdate.ContactAddress = item.Address; |
| | | supplierInfosUpdate.Add(supplierInfoUpdate); |
| | | } |
| | | else//妿ä¸åå¨åè¿è¡æ°å¢ |
| | | { |
| | | Dt_SupplierInfo supplierInfo = _mapper.Map<Dt_SupplierInfo>(item); |
| | | supplierInfosAdd.Add(supplierInfo); |
| | | } |
| | | } |
| | | } |
| | | BaseDal.AddData(supplierInfos); |
| | | //å é¤ |
| | | if (bSTSupplierDTOsDTODel.Count > 0) |
| | | { |
| | | |
| | | } |
| | | //æ´æ°æ°æ® |
| | | _unitOfWorkManage.CommitTran(); |
| | | BaseDal.AddData(supplierInfosAdd); |
| | | BaseDal.UpdateData(supplierInfosUpdate); |
| | | _unitOfWorkManage.CommitTran(); |
| | | content.OK("æ¥æ¶æå"); |
| | | } |
| | | catch (Exception ex) |
| | |
| | | InStockLock = 10, |
| | | |
| | | /// <summary> |
| | | /// æè´§éå® |
| | | /// 空é²éå® |
| | | /// </summary> |
| | | [Description("空é²éå®")] |
| | | FreeLock = 20, |
| | |
| | | /// <summary> |
| | | /// æååºå屿§ï¼<br/> |
| | | /// 1:æå<br/> |
| | | /// 2:å°¾æ°<br/> |
| | | /// 3:ç å<br/> |
| | | /// 2:åæå<br/> |
| | | /// 3:åææ<br/> |
| | | /// 4:è¾
æå¤ä»¶<br/> |
| | | /// 5:空æ<br/> |
| | | /// </summary> |
| | | public enum ProStockAttributeEnum |
| | | { |
| | |
| | | /// è¾
æåº |
| | | /// </summary> |
| | | [Description("è¾
æåº")] |
| | | LLDFL = 3 |
| | | |
| | | LLDFL = 3, |
| | | /// <summary> |
| | | /// èåæååº |
| | | /// </summary> |
| | | [Description("èåæååº")] |
| | | LLDOldCache = 4 |
| | | } |
| | | } |
| | |
| | | /// <summary> |
| | | /// åå¡è系人 |
| | | /// </summary> |
| | | [PropertyValidate("ä¾åºåç®ç§°", NotNullAndEmpty = true)] |
| | | [PropertyValidate("summary", NotNullAndEmpty = true)] |
| | | public string BusinessContact { get; set; } |
| | | |
| | | /// <summary> |
| | |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.Attributes; |
| | | |
| | | namespace WIDESEA_DTO.Basic |
| | | namespace WIDESEA_DTO.ERP |
| | | { |
| | | /// <summary> |
| | | /// åæééè´å
¥åºåæ¥æ¶å®ä½ |
| | |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.Attributes; |
| | | |
| | | namespace WIDESEA_DTO.Basic |
| | | namespace WIDESEA_DTO.ERP |
| | | { |
| | | /// <summary> |
| | | /// åæééè´å
¥åºåæ¥æ¶å®ä½ |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.Attributes; |
| | | |
| | | namespace WIDESEA_DTO.ERP |
| | | { |
| | | /// <summary> |
| | | /// åæééææ¥æ¶å®ä½ |
| | | /// </summary> |
| | | [ModelValidate] |
| | | public class BSTReturnOrderDTO |
| | | { |
| | | /// <summary> |
| | | /// æ°æ®è·åæ¹å¼æ è¯(1:æ°å¢ 2:ä¿®æ¹ 3:å é¤) |
| | | /// </summary> |
| | | [PropertyValidate("æ°æ®è·åæ¹å¼æ è¯(1:æ°å¢ 2:ä¿®æ¹ 3:å é¤)", NotNullAndEmpty = true)] |
| | | public int Way { get; set; } |
| | | /// <summary> |
| | | /// éæåID |
| | | /// </summary> |
| | | [PropertyValidate("éæåID", NotNullAndEmpty = true)] |
| | | public int PaperWreturnId { get; set; } |
| | | /// <summary> |
| | | /// éæåç¼å· |
| | | /// </summary> |
| | | [PropertyValidate("éæåç¼å·", NotNullAndEmpty = true)] |
| | | public string PaperWreturnNo { get; set; } |
| | | /// <summary> |
| | | /// éææ¥æ |
| | | /// </summary> |
| | | [PropertyValidate("éææ¥æ", NotNullAndEmpty = true)] |
| | | public long WreturnDate { get; set; } |
| | | /// <summary> |
| | | /// éæåå·¥ |
| | | /// </summary> |
| | | [PropertyValidate("éæåå·¥", NotNullAndEmpty = false)] |
| | | public string EmployeeName { get; set; } |
| | | /// <summary> |
| | | /// éææç» |
| | | /// </summary> |
| | | [PropertyValidate("éææç»", NotNullAndEmpty = true)] |
| | | public List<BSTReturnOrderDTOItem> BstPaperWreturnDetails { get; set; } |
| | | } |
| | | /// <summary> |
| | | /// éææç» |
| | | /// </summary> |
| | | public class BSTReturnOrderDTOItem |
| | | { |
| | | /// <summary> |
| | | /// éæID |
| | | /// </summary> |
| | | [PropertyValidate("éæID", NotNullAndEmpty = true)] |
| | | public int PaperWreturnId { get; set; } |
| | | /// <summary> |
| | | /// ç©æID |
| | | /// </summary> |
| | | [PropertyValidate("ç©æID", NotNullAndEmpty = true)] |
| | | public int MaterialId { get; set; } |
| | | /// <summary> |
| | | /// ç©ææ¡ç |
| | | /// </summary> |
| | | [PropertyValidate("ç©ææ¡ç ", NotNullAndEmpty = true)] |
| | | public string Barcode { get; set; } |
| | | /// <summary> |
| | | /// ç©æç¼å· |
| | | /// </summary> |
| | | [PropertyValidate("ç©æç¼å·", NotNullAndEmpty = true)] |
| | | public string MaterialNo { get; set; } |
| | | /// <summary> |
| | | /// ç©ææ¹æ¬¡åºå· |
| | | /// </summary> |
| | | [PropertyValidate("ç©ææ¹æ¬¡åºå·", NotNullAndEmpty = true)] |
| | | public int SeqNo { get; set; } |
| | | /// <summary> |
| | | /// å¹
宽ï¼mmï¼ |
| | | /// </summary> |
| | | [PropertyValidate("å¹
宽ï¼mmï¼", NotNullAndEmpty = true)] |
| | | public decimal W { get; set; } |
| | | /// <summary> |
| | | /// ç´å¾ |
| | | /// </summary> |
| | | [PropertyValidate("ç´å¾", NotNullAndEmpty = true)] |
| | | public decimal Thick { get; set; } |
| | | /// <summary> |
| | | /// é¿åº¦ |
| | | /// </summary> |
| | | [PropertyValidate("é¿åº¦", NotNullAndEmpty = true)] |
| | | public decimal ProcurementLength { get; set; } |
| | | /// <summary> |
| | | /// éè´§æ°é |
| | | /// </summary> |
| | | [PropertyValidate("éè´§æ°é", NotNullAndEmpty = true)] |
| | | public decimal Qty { get; set; } |
| | | /// <summary> |
| | | /// åä½ |
| | | /// </summary> |
| | | [PropertyValidate("åä½", NotNullAndEmpty = true)] |
| | | public string Unit { get; set; } |
| | | } |
| | | } |
| | |
| | | { |
| | | ContractResolver = new CamelCasePropertyNamesContractResolver() |
| | | }; |
| | | |
| | | /// <summary> |
| | | /// è°ç¨ERPæ¥å£ |
| | | /// </summary> |
| | | public string BSTPurchaseUp(BSTPurchaseUpModel bSTPurchaseUpModel) |
| | | { |
| | | Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x=>x.ApiCode==APIEnum.BSTPurchaseUp.ToString()); |
| | |
| | | /// </summary> |
| | | public class BSTPurchaseUpModel |
| | | { |
| | | /// <summary> |
| | | /// æ¡ç |
| | | /// </summary> |
| | | public string Barcode { get; set; } |
| | | /// <summary> |
| | | /// æ°é |
| | | /// </summary> |
| | | public int BarcodeQty { get; set;} |
| | | /// <summary> |
| | | /// RFID |
| | | /// </summary> |
| | | public string Rfid { get; set; } |
| | | /// <summary> |
| | | /// å
¥åºæ¶é´ |
| | | /// </summary> |
| | | public string RfidUpdateTime { get; set; } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_IInboundRepository |
| | | { |
| | | /// <summary> |
| | | /// éææç»ä»å¨æ¥å£å± |
| | | /// </summary> |
| | | public interface IReturnBSTOrderDetailRepository : IRepository<Dt_ReturnBSTOrderDetail> |
| | | { |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_IInboundRepository |
| | | { |
| | | /// <summary> |
| | | /// éæåä»å¨æ¥å£å± |
| | | /// </summary> |
| | | public interface IReturnBSTOrderRepository : IRepository<Dt_ReturnBSTOrder> |
| | | { |
| | | } |
| | | } |
| | |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_DTO; |
| | | using WIDESEA_DTO.Basic; |
| | | using WIDESEA_DTO.ERP; |
| | | using WIDESEA_IInboundRepository; |
| | | using WIDESEA_Model.Models; |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_IInboundRepository; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_IInboundService |
| | | { |
| | | public interface IReturnBSTOrderDetailService : IService<Dt_ReturnBSTOrderDetail> |
| | | { |
| | | IReturnBSTOrderDetailRepository Repository { get; } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_DTO.ERP; |
| | | using WIDESEA_IInboundRepository; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_IInboundService |
| | | { |
| | | public interface IReturnBSTOrderService : IService<Dt_ReturnBSTOrder> |
| | | { |
| | | IReturnBSTOrderRepository Repository { get; } |
| | | /// <summary> |
| | | /// æ¥æ¶åæééæä¿¡æ¯ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | WebResponseContent ReceiveReturnOrder(List<BSTReturnOrderDTO> bSTReturnOrderDTOs); |
| | | } |
| | | } |
| | |
| | | /// <summary> |
| | | /// æååºåº |
| | | /// </summary> |
| | | /// <param name="Count"></param> |
| | | /// <returns></returns> |
| | | WebResponseContent RequestCPWMSTaskOut(int Count); |
| | | WebResponseContent RequestCPWMSTaskOut(string materialCode, int Count,int targetId); |
| | | |
| | | /// <summary> |
| | | /// æ 纺å¸åºåº |
| | | /// </summary> |
| | | /// <param name="Count"></param> |
| | | /// <returns></returns> |
| | | WebResponseContent RequestWFBWMSTaskOut(int Count); |
| | | ///// <summary> |
| | | ///// æ 纺å¸åºåº |
| | | ///// </summary> |
| | | ///// <param name="Count"></param> |
| | | ///// <returns></returns> |
| | | //WebResponseContent RequestWFBWMSTaskOut(int Count); |
| | | |
| | | /// <summary> |
| | | /// åæåºåºä»»å¡ |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_IInboundRepository; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_InboundRepository |
| | | { |
| | | /// <summary> |
| | | /// éæåæç»ä»å¨å®ç°å± |
| | | /// </summary> |
| | | public class ReturnBSTOrderDetailRepository : RepositoryBase<Dt_ReturnBSTOrderDetail>, IReturnBSTOrderDetailRepository |
| | | { |
| | | public ReturnBSTOrderDetailRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage) |
| | | { |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_IInboundRepository; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_InboundRepository |
| | | { |
| | | /// <summary> |
| | | /// éæåä»å¨å®ç°å± |
| | | /// </summary> |
| | | public class ReturnBSTOrderRepository : RepositoryBase<Dt_ReturnBSTOrder>, IReturnBSTOrderRepository |
| | | { |
| | | public ReturnBSTOrderRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage) |
| | | { |
| | | } |
| | | } |
| | | } |
| | |
| | | using WIDESEA_Core.Enums; |
| | | using WIDESEA_Core.Helper; |
| | | using WIDESEA_DTO; |
| | | using WIDESEA_DTO.Basic; |
| | | using WIDESEA_DTO.ERP; |
| | | using WIDESEA_IBasicRepository; |
| | | using WIDESEA_IInboundRepository; |
| | | using WIDESEA_IInboundService; |
| | |
| | | List<Dt_PurchaseBSTOrder> purchaseAddBSTOrders = new List<Dt_PurchaseBSTOrder>(); |
| | | List<Dt_PurchaseBSTOrder> purchaseUpdateBSTOrders = new List<Dt_PurchaseBSTOrder>(); |
| | | List<Dt_PurchaseBSTOrder> purchaseDeleteBSTOrders = new List<Dt_PurchaseBSTOrder>(); |
| | | List<Dt_PurchaseBSTOrderDetail> purchaseBSTOrderDetailsDel = new List<Dt_PurchaseBSTOrderDetail>(); |
| | | //æ°å¢ |
| | | if (bSTPurchaseOrderDTOsAdd.Count>0) |
| | | { |
| | | //夿ä¾åºå |
| | |
| | | } |
| | | //éªè¯æ¡ç éå¤ |
| | | List<Dt_PurchaseBSTOrderDetail> purchaseBSTOrderDetails = OldpurchaseBSTOrders.SelectMany(x => x.Details).ToList(); |
| | | List<PaperReceiptDetailsItem> paperReceiptDetailsItems = bSTPurchaseOrderDTOsAdd.SelectMany(x => x.PaperReceiptDetails).ToList(); |
| | | var ExistDetail = purchaseBSTOrderDetails.FirstOrDefault(x => paperReceiptDetailsItems.Select(x => x.Barcode).Contains(x.Barcode)); |
| | | List<PaperReceiptDetailsItem> paperReceiptDetailsItemsAdd = bSTPurchaseOrderDTOsAdd.SelectMany(x => x.PaperReceiptDetails).ToList(); |
| | | var ExistDetail = purchaseBSTOrderDetails.FirstOrDefault(x => paperReceiptDetailsItemsAdd.Select(x => x.Barcode).Contains(x.Barcode)); |
| | | if (ExistDetail!=null) |
| | | { |
| | | return content.Error($"éè´æ¡ç {nameof(ExistDetail.Barcode)}:{ExistDetail.Barcode}å·²åå¨"); |
| | | } |
| | | //夿æ¯å¦åå¨ç©æ |
| | | PaperReceiptDetailsItem? paperReceiptDetailsItem = paperReceiptDetailsItems.FirstOrDefault(x => !materielInfos.Select(x => x.MaterialSourceId).Contains(x.MaterialId)); |
| | | PaperReceiptDetailsItem? paperReceiptDetailsItem = paperReceiptDetailsItemsAdd.FirstOrDefault(x => !materielInfos.Select(x => x.MaterialSourceId).Contains(x.MaterialId)); |
| | | if (paperReceiptDetailsItem!=null) |
| | | { |
| | | return content.Error($"éè´æ¡ç {nameof(ExistDetail.Barcode)}:{ExistDetail.Barcode}ç©æId:{paperReceiptDetailsItem.MaterialId}ä¸åå¨"); |
| | | return content.Error($"éè´æ¡ç {nameof(paperReceiptDetailsItem.Barcode)}:{paperReceiptDetailsItem.Barcode}ç©æId:{paperReceiptDetailsItem.MaterialId}ä¸åå¨"); |
| | | } |
| | | foreach (var item in bSTPurchaseOrderDTOsAdd) |
| | | { |
| | | if (bSTPurchaseOrderDTOsUpdate.FirstOrDefault(x=>x.PaperReceiptId== item.PaperReceiptId)!=null) |
| | | { |
| | | continue; |
| | | } |
| | | List<Dt_PurchaseBSTOrderDetail> bSTOrderDetails = item.PaperReceiptDetails.Select(x=>_mapper.Map<Dt_PurchaseBSTOrderDetail>(x)).ToList(); |
| | | Dt_PurchaseBSTOrder purchaseBSTOrder = _mapper.Map<Dt_PurchaseBSTOrder>(item); |
| | | purchaseBSTOrder.Details = bSTOrderDetails; |
| | | purchaseAddBSTOrders.Add(purchaseBSTOrder); |
| | | } |
| | | } |
| | | |
| | | //æ´æ° |
| | | if (bSTPurchaseOrderDTOsUpdate.Count > 0) |
| | | { |
| | | List<Dt_PurchaseBSTOrder>? ExistUpdatePurchase = OldpurchaseBSTOrders.Where(x => bSTPurchaseOrderDTOsUpdate.Select(x => x.PaperReceiptId).Contains(x.PaperReceiptId)).ToList(); |
| | | //æ´æ°çåæ®æ¯å¦åå¨ |
| | | if (ExistUpdatePurchase.Count == bSTPurchaseOrderDTOsUpdate.Count) |
| | | { |
| | | //åå¨çéè´å |
| | | List<Dt_PurchaseBSTOrder>? ExistpurchaseBSTOrders = OldpurchaseBSTOrders.Where(x => bSTPurchaseOrderDTOsUpdate.Select(x => x.PaperReceiptId).Contains(x.PaperReceiptId)).Distinct().ToList(); |
| | | |
| | | } |
| | | else |
| | | foreach (var item in bSTPurchaseOrderDTOsUpdate) |
| | | { |
| | | BSTPurchaseOrderDTO? bSTPurchaseOrderDTO = bSTPurchaseOrderDTOsUpdate.FirstOrDefault(x => !ExistUpdatePurchase.Select(x => x.PaperReceiptId).Contains(x.PaperReceiptId)); |
| | | return content.Error($"æªæ¾å°æå®éè´æ¶è´§å{nameof(BSTPurchaseOrderDTO.PaperReceiptId)}:{bSTPurchaseOrderDTO?.PaperReceiptId}"); |
| | | Dt_PurchaseBSTOrder? purchaseBSTOrderUpdate = ExistpurchaseBSTOrders.FirstOrDefault(x => x.PaperReceiptId == item.PaperReceiptId); |
| | | //å¦æè®¢åå·²åå¨åè¿è¡æ´æ¹ |
| | | if (purchaseBSTOrderUpdate != null) |
| | | { |
| | | if (purchaseBSTOrderUpdate.PurchaseOrderStatus!=InOrderStatusEnum.æªå¼å§.ObjToInt()) |
| | | { |
| | | return content.Error($"éè´{nameof(purchaseBSTOrderUpdate.PaperReceiptId)}:{purchaseBSTOrderUpdate.PaperReceiptId}订åå
¥åºä¸ï¼ä¸å¯æ´æ¹"); |
| | | } |
| | | purchaseBSTOrderDetailsDel.AddRange(purchaseBSTOrderUpdate.Details); |
| | | |
| | | //æ´æ° |
| | | List<Dt_PurchaseBSTOrderDetail> bSTOrderDetails = item.PaperReceiptDetails.Select(x => _mapper.Map<Dt_PurchaseBSTOrderDetail>(x)).ToList(); |
| | | bSTOrderDetails.ForEach(x => |
| | | { |
| | | x.PurchaseBSTOrderId = purchaseBSTOrderUpdate.Id; |
| | | }); |
| | | purchaseBSTOrderUpdate.Details = bSTOrderDetails; |
| | | purchaseBSTOrderUpdate.PaperReceiptId = item.PaperReceiptId; |
| | | purchaseBSTOrderUpdate.PaperReceiptNo = item.PaperReceiptNo; |
| | | purchaseBSTOrderUpdate.VendNo = item.VendNo; |
| | | purchaseBSTOrderUpdate.ReceiptDate = DateTimeOffset.FromUnixTimeMilliseconds(item.ReceiptDate).DateTime; |
| | | purchaseBSTOrderUpdate.TotalProcurementLength = item.TotalProcurementLength; |
| | | purchaseUpdateBSTOrders.Add(purchaseBSTOrderUpdate); |
| | | } |
| | | else //妿ä¸åå¨åè¿è¡æ°å¢ |
| | | { |
| | | List<Dt_PurchaseBSTOrderDetail> bSTOrderDetails = item.PaperReceiptDetails.Select(x => _mapper.Map<Dt_PurchaseBSTOrderDetail>(x)).ToList(); |
| | | Dt_PurchaseBSTOrder purchaseBSTOrder = _mapper.Map<Dt_PurchaseBSTOrder>(item); |
| | | purchaseBSTOrder.Details = bSTOrderDetails; |
| | | purchaseAddBSTOrders.Add(purchaseBSTOrder); |
| | | } |
| | | } |
| | | |
| | | } |
| | | //å é¤ |
| | | if (bSTPurchaseOrderDTOsDel.Count>0) |
| | | { |
| | | List<Dt_PurchaseBSTOrder>? ExistDelPurchase = OldpurchaseBSTOrders.Where(x => bSTPurchaseOrderDTOsDel.Select(x => x.PaperReceiptId).Contains(x.PaperReceiptId)).ToList(); |
| | |
| | | return content.Error($"æªæ¾å°æå®éè´æ¶è´§å{nameof(BSTPurchaseOrderDTO.PaperReceiptId)}:{bSTPurchaseOrderDTO?.PaperReceiptId}"); |
| | | } |
| | | } |
| | | //æ´æ°æ°æ® |
| | | _unitOfWorkManage.BeginTran(); |
| | | BaseDal.Db.InsertNav(purchaseAddBSTOrders).Include(x => x.Details).ExecuteCommand(); |
| | | _purchaseBSTOrderDetailRepository.DeleteData(purchaseBSTOrderDetailsDel); |
| | | BaseDal.Db.UpdateNav(purchaseUpdateBSTOrders).Include(x => x.Details).ExecuteCommand(); |
| | | _unitOfWorkManage.CommitTran(); |
| | | content.OK("æ¥æ¶æå"); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_IInboundRepository; |
| | | using WIDESEA_IInboundService; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_InboundService |
| | | { |
| | | public class ReturnBSTOrderDetailService : ServiceBase<Dt_ReturnBSTOrderDetail, IReturnBSTOrderDetailRepository>, IReturnBSTOrderDetailService |
| | | { |
| | | public IReturnBSTOrderDetailRepository Repository => BaseDal; |
| | | |
| | | public ReturnBSTOrderDetailService(IReturnBSTOrderDetailRepository BaseDal) : base(BaseDal) |
| | | { |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using AutoMapper; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Common.MaterielEnum; |
| | | using WIDESEA_Common.OrderEnum; |
| | | using WIDESEA_Common.WareHouseEnum; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_Core.Helper; |
| | | using WIDESEA_DTO.ERP; |
| | | using WIDESEA_IBasicRepository; |
| | | using WIDESEA_IInboundRepository; |
| | | using WIDESEA_IInboundService; |
| | | using WIDESEA_InboundRepository; |
| | | using WIDESEA_IStockRepository; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_InboundService |
| | | { |
| | | public class ReturnBSTOrderService : ServiceBase<Dt_ReturnBSTOrder, IReturnBSTOrderRepository>, IReturnBSTOrderService |
| | | { |
| | | public IReturnBSTOrderRepository Repository => BaseDal; |
| | | private IUnitOfWorkManage _unitOfWorkManage; |
| | | private IBasicRepository _basicRepository; |
| | | private IStockInfoRepository _stockInfoRepository; |
| | | private IReturnBSTOrderDetailRepository _returnBSTOrderDetailRepository; |
| | | private IMapper _mapper; |
| | | |
| | | public ReturnBSTOrderService(IReturnBSTOrderRepository BaseDal,IUnitOfWorkManage unitOfWorkManage,IBasicRepository basicRepository, IStockInfoRepository stockInfoRepository, IReturnBSTOrderDetailRepository returnBSTOrderDetailRepository, IMapper mapper) : base(BaseDal) |
| | | { |
| | | _unitOfWorkManage = unitOfWorkManage; |
| | | _basicRepository = basicRepository; |
| | | _stockInfoRepository = stockInfoRepository; |
| | | _returnBSTOrderDetailRepository = returnBSTOrderDetailRepository; |
| | | _mapper = mapper; |
| | | } |
| | | /// <summary> |
| | | /// æ¥æ¶åæééæä¿¡æ¯ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public WebResponseContent ReceiveReturnOrder(List<BSTReturnOrderDTO> bSTReturnOrderDTOs) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | List<Dt_ReturnBSTOrder> OldreturnBSTOrders = BaseDal.Db.Queryable<Dt_ReturnBSTOrder>().Includes(x => x.Details).ToList(); |
| | | List<Dt_StockInfo> ExiststockInfos = _stockInfoRepository.QueryData(x=>x.WarehouseId==WarehouseEnum.LLDOldCache.ObjToInt()); |
| | | //æ°å¢ |
| | | List<BSTReturnOrderDTO> bSTReturnOrderDTOsAdd = bSTReturnOrderDTOs.Where(x => x.Way == 1).ToList(); |
| | | //ä¿®æ¹ |
| | | List<BSTReturnOrderDTO> bSTReturnOrderDTOsUpdate = bSTReturnOrderDTOs.Where(x => x.Way == 2).ToList(); |
| | | //å é¤ |
| | | List<BSTReturnOrderDTO> bSTReturnOrderDTOsDel = bSTReturnOrderDTOs.Where(x => x.Way == 3).ToList(); |
| | | //è·åææç©æ |
| | | List<Dt_MaterielInfo> materielInfos = _basicRepository.MaterielInfoRepository.QueryData(x => x.WarehouseId == WarehouseEnum.LLDYL.ObjToInt() && x.MaterielInvOrgId == MaterielInvOrgEnum.èå.ObjToInt() && x.MaterialSourceId != 0); |
| | | |
| | | List<Dt_ReturnBSTOrder> returnAddBSTOrders = new List<Dt_ReturnBSTOrder>(); |
| | | List<Dt_ReturnBSTOrder> returnUpdateBSTOrders = new List<Dt_ReturnBSTOrder>(); |
| | | List<Dt_ReturnBSTOrder> returnDeleteBSTOrders = new List<Dt_ReturnBSTOrder>(); |
| | | List<Dt_ReturnBSTOrderDetail> returnBSTOrderDetailsDel = new List<Dt_ReturnBSTOrderDetail>(); |
| | | List<Dt_StockInfo> stockInfosUpdate = new List<Dt_StockInfo>(); |
| | | //æ°å¢ |
| | | if (bSTReturnOrderDTOsAdd.Count > 0) |
| | | { |
| | | //夿忮 |
| | | Dt_ReturnBSTOrder? ExistAddReturn = OldreturnBSTOrders.FirstOrDefault(x => bSTReturnOrderDTOsAdd.Select(x => x.PaperWreturnId).Contains(x.PaperWreturnId)); |
| | | if (ExistAddReturn != null) |
| | | { |
| | | return content.Error($"éæå{nameof(BSTReturnOrderDTO.PaperWreturnId)}:{ExistAddReturn.PaperWreturnId}å·²åå¨"); |
| | | } |
| | | List<BSTReturnOrderDTOItem> bSTReturnOrderDTOItemsAdd = bSTReturnOrderDTOsAdd.SelectMany(x => x.BstPaperWreturnDetails).ToList(); |
| | | //夿æ¯å¦åå¨ç©æ |
| | | BSTReturnOrderDTOItem? bSTReturnOrderDTOItem = bSTReturnOrderDTOItemsAdd.FirstOrDefault(x => !materielInfos.Select(x => x.MaterialSourceId).Contains(x.MaterialId)); |
| | | if (bSTReturnOrderDTOItem != null) |
| | | { |
| | | return content.Error($"éæ{nameof(bSTReturnOrderDTOItem.Barcode)}:{bSTReturnOrderDTOItem.Barcode}ç©æ{nameof(BSTReturnOrderDTOItem.MaterialId)}:{bSTReturnOrderDTOItem.MaterialId}ä¸åå¨"); |
| | | } |
| | | //éªè¯éææ¡ç æ¯å¦å¨åºåä¸ |
| | | var ExiststockInfo = bSTReturnOrderDTOItemsAdd.FirstOrDefault(x => !ExiststockInfos.Select(x => x.PalletCode).Contains(x.Barcode)); |
| | | if (ExiststockInfo != null) |
| | | { |
| | | return content.Error($"éææ¡ç {nameof(ExiststockInfo.Barcode)}:{ExiststockInfo.Barcode}ç©ææªå¨èåæååº"); |
| | | } |
| | | //è·å对åºåºåä¿®æ£åºåæ°é |
| | | List<Dt_StockInfo> returnStockinfos = ExiststockInfos.Where(x => bSTReturnOrderDTOItemsAdd.Select(x => x.Barcode).Contains(x.PalletCode)).ToList(); |
| | | foreach (var item in bSTReturnOrderDTOsAdd) |
| | | { |
| | | if (bSTReturnOrderDTOsUpdate.FirstOrDefault(x => x.PaperWreturnId == item.PaperWreturnId) != null) |
| | | { |
| | | continue; |
| | | } |
| | | List<Dt_ReturnBSTOrderDetail> bSTOrderDetails = item.BstPaperWreturnDetails.Select(x => _mapper.Map<Dt_ReturnBSTOrderDetail>(x)).ToList(); |
| | | Dt_ReturnBSTOrder returnBSTOrder = _mapper.Map<Dt_ReturnBSTOrder>(item); |
| | | returnBSTOrder.Details = bSTOrderDetails; |
| | | returnAddBSTOrders.Add(returnBSTOrder); |
| | | } |
| | | } |
| | | //æ´æ° |
| | | if (bSTReturnOrderDTOsUpdate.Count > 0) |
| | | { |
| | | //åå¨çéè´å |
| | | List<Dt_ReturnBSTOrder>? ExistreturnBSTOrders = OldreturnBSTOrders.Where(x => bSTReturnOrderDTOsUpdate.Select(x => x.PaperWreturnId).Contains(x.PaperWreturnId)).Distinct().ToList(); |
| | | |
| | | foreach (var item in bSTReturnOrderDTOsUpdate) |
| | | { |
| | | Dt_ReturnBSTOrder? returnBSTOrderUpdate = ExistreturnBSTOrders.FirstOrDefault(x => x.PaperWreturnId == item.PaperWreturnId); |
| | | //å¦æè®¢åå·²åå¨åè¿è¡æ´æ¹ |
| | | if (returnBSTOrderUpdate != null) |
| | | { |
| | | if (returnBSTOrderUpdate.ReturnOrderStatus != InOrderStatusEnum.æªå¼å§.ObjToInt()) |
| | | { |
| | | return content.Error($"éæ{nameof(returnBSTOrderUpdate.PaperWreturnId)}:{returnBSTOrderUpdate.PaperWreturnId}订åéæå
¥åºä¸ï¼ä¸å¯æ´æ¹"); |
| | | } |
| | | returnBSTOrderDetailsDel.AddRange(returnBSTOrderUpdate.Details); |
| | | |
| | | //æ´æ° |
| | | List<Dt_ReturnBSTOrderDetail> bSTOrderDetails = item.BstPaperWreturnDetails.Select(x => _mapper.Map<Dt_ReturnBSTOrderDetail>(x)).ToList(); |
| | | bSTOrderDetails.ForEach(x => |
| | | { |
| | | x.ReturnBSTOrderId = returnBSTOrderUpdate.Id; |
| | | }); |
| | | returnBSTOrderUpdate.Details = bSTOrderDetails; |
| | | returnBSTOrderUpdate.PaperWreturnId = item.PaperWreturnId; |
| | | returnBSTOrderUpdate.PaperWreturnNo = item.PaperWreturnNo; |
| | | returnBSTOrderUpdate.EmployeeName = item.EmployeeName; |
| | | returnBSTOrderUpdate.WreturnDate = DateTimeOffset.FromUnixTimeMilliseconds(item.WreturnDate).DateTime; |
| | | returnUpdateBSTOrders.Add(returnBSTOrderUpdate); |
| | | } |
| | | else //妿ä¸åå¨åè¿è¡æ°å¢ |
| | | { |
| | | List<Dt_ReturnBSTOrderDetail> bSTOrderDetails = item.BstPaperWreturnDetails.Select(x => _mapper.Map<Dt_ReturnBSTOrderDetail>(x)).ToList(); |
| | | Dt_ReturnBSTOrder returnBSTOrder = _mapper.Map<Dt_ReturnBSTOrder>(item); |
| | | returnBSTOrder.Details = bSTOrderDetails; |
| | | returnAddBSTOrders.Add(returnBSTOrder); |
| | | } |
| | | } |
| | | |
| | | } |
| | | //å é¤ |
| | | if (bSTReturnOrderDTOsDel.Count > 0) |
| | | { |
| | | |
| | | } |
| | | //æ´æ°æ°æ® |
| | | _unitOfWorkManage.BeginTran(); |
| | | BaseDal.Db.InsertNav(returnAddBSTOrders).Include(x => x.Details).ExecuteCommand(); |
| | | _returnBSTOrderDetailRepository.DeleteData(returnBSTOrderDetailsDel); |
| | | BaseDal.Db.UpdateNav(returnUpdateBSTOrders).Include(x => x.Details).ExecuteCommand(); |
| | | _unitOfWorkManage.CommitTran(); |
| | | content.OK("æ¥æ¶æå"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | } |
| | | } |
| | |
| | | namespace WIDESEA_Model.Models |
| | | { |
| | | /// <summary> |
| | | /// æ¥å£ä¿¡æ¯ |
| | | /// AGVç«ç¹ä¿¡æ¯è¡¨ |
| | | /// </summary> |
| | | [SugarTable(nameof(Dt_AGVStationInfo), "AGVç«ç¹ä¿¡æ¯è¡¨")] |
| | | public class Dt_AGVStationInfo : BaseEntity |
| | |
| | | /// <summary> |
| | | /// BSTéè´å
¥åºå |
| | | /// </summary> |
| | | [SugarTable(nameof(Dt_PurchaseBSTOrder), "BSTéè´å
¥åºå"), ModelValidate] |
| | | [SugarTable(nameof(Dt_PurchaseBSTOrder), "BSTéè´å
¥åºå")] |
| | | public class Dt_PurchaseBSTOrder : BaseEntity |
| | | { |
| | | /// <summary> |
| | |
| | | /// <summary> |
| | | /// BSTéè´å
¥åºåæç» |
| | | /// </summary> |
| | | [SugarTable(nameof(Dt_PurchaseBSTOrderDetail), "BSTéè´å
¥åºåæç»"), ModelValidate] |
| | | [SugarTable(nameof(Dt_PurchaseBSTOrderDetail), "BSTéè´å
¥åºåæç»")] |
| | | public class Dt_PurchaseBSTOrderDetail : BaseEntity |
| | | { |
| | | /// <summary> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.Attributes; |
| | | using WIDESEA_Core.CodeConfigEnum; |
| | | using WIDESEA_Core.DB.Models; |
| | | |
| | | namespace WIDESEA_Model.Models |
| | | { |
| | | /// <summary> |
| | | /// BSTéæå |
| | | /// </summary> |
| | | [SugarTable(nameof(Dt_ReturnBSTOrder), "BSTéæå")] |
| | | public class Dt_ReturnBSTOrder : BaseEntity |
| | | { |
| | | /// <summary> |
| | | /// ä¸»é® |
| | | /// </summary> |
| | | [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "主é®")] |
| | | public int Id { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä»åºä¸»é® |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "ä»åºä¸»é®")] |
| | | public int WarehouseId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// éæåæ¥æºID |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "éæåæ¥æºID")] |
| | | public int PaperWreturnId { get; set; } |
| | | /// <summary> |
| | | /// WMSåæ®ç¼å· |
| | | /// </summary> |
| | | [CodeRule(RuleCodeEnum.TLCodeRule)] |
| | | [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "WMSåæ®ç¼å·", IsOnlyIgnoreUpdate = true)] |
| | | public string ReturnInboundNo { get; set; } |
| | | |
| | | /// <summary> |
| | | /// éæåç¼å·(䏿¸¸) |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "éæåç¼å·(䏿¸¸)")] |
| | | public string PaperWreturnNo { get; set; } |
| | | |
| | | /// <summary> |
| | | /// éæåå·¥ |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "éæåå·¥")] |
| | | public string EmployeeName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// éææ»é¿åº¦ |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "éææ»é¿åº¦")] |
| | | public decimal TotalPaperWreturnLength { get; set; } |
| | | |
| | | /// <summary> |
| | | /// éæåç¶æ |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "éæåå
¥åºç¶æ")] |
| | | public int ReturnOrderStatus { get; set; } |
| | | |
| | | /// <summary> |
| | | /// éææ¥æ |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "éææ¥æ")] |
| | | public DateTime WreturnDate { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 夿³¨ |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "夿³¨")] |
| | | public string Remark { get; set; } |
| | | |
| | | /// <summary> |
| | | /// éè´å表 |
| | | /// </summary> |
| | | [Navigate(NavigateType.OneToMany, nameof(Dt_ReturnBSTOrderDetail.ReturnBSTOrderId), nameof(Id))] |
| | | public List<Dt_ReturnBSTOrderDetail> Details { get; set; } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.DB.Models; |
| | | |
| | | namespace WIDESEA_Model.Models |
| | | { |
| | | /// <summary> |
| | | /// BSTéæåæç» |
| | | /// </summary> |
| | | [SugarTable(nameof(Dt_ReturnBSTOrderDetail), "BSTéæåæç»")] |
| | | public class Dt_ReturnBSTOrderDetail : BaseEntity |
| | | { |
| | | /// <summary> |
| | | /// ä¸»é® |
| | | /// </summary> |
| | | [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "主é®")] |
| | | public int Id { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å¤´è¡¨ä¸»é® |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "头表主é®")] |
| | | public int ReturnBSTOrderId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// éææ¥æºID |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "éææ¥æºID")] |
| | | public int PaperWreturnId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©ææ¥æºID(䏿¸¸) |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "ç©ææ¥æºID(䏿¸¸)")] |
| | | public int MaterialId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©ææ¡ç |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "ç©ææ¡ç ")] |
| | | public string Barcode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æç¼å· |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "ç©æç¼å·")] |
| | | public string MaterialNo { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¹æ¬¡åºåå· |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "æ¹æ¬¡åºåå·")] |
| | | public int SeqNo { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å¹
宽 |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "å¹
宽")] |
| | | public decimal MaterialWide { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç´å¾ |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "ç´å¾")] |
| | | public decimal MaterialThick { get; set; } |
| | | |
| | | /// <summary> |
| | | /// éæé¿åº¦ |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "éæé¿åº¦")] |
| | | public decimal ProcurementLength { get; set; } |
| | | |
| | | /// <summary> |
| | | /// éè´§æ°é |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "éè´§æ°é")] |
| | | public decimal Qty { get; set; } |
| | | |
| | | /// <summary> |
| | | /// éæåæç»ç¶æ |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "éæåæç»ç¶æ")] |
| | | public int ReturnBSTOrderDetailStatus { get; set; } |
| | | |
| | | /// <summary> |
| | | /// åä½ |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "åä½")] |
| | | public string Unit { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç©æåç§° |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "ç©æåç§°")] |
| | | public string MaterielName { get; set; } |
| | | } |
| | | } |
| | |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Common.MaterielEnum; |
| | | using WIDESEA_Common.OrderEnum; |
| | | using WIDESEA_Common.WareHouseEnum; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_Core.Helper; |
| | | using WIDESEA_DTO.Basic; |
| | | using WIDESEA_DTO.ERP; |
| | | using WIDESEA_IBasicRepository; |
| | | using WIDESEA_IOutboundRepository; |
| | | using WIDESEA_IOutboundService; |
| | |
| | | private readonly IBasicRepository _basicRepository; |
| | | private readonly IMapper _mapper; |
| | | private readonly IUnitOfWorkManage _unitOfWorkManage; |
| | | private readonly IOutBSTOrderDetailRepository _outBSTOrderDetailRepository; |
| | | |
| | | public OutBSTOrderService(IOutBSTOrderRepository BaseDal,IBasicRepository basicRepository,IMapper mapper,IUnitOfWorkManage unitOfWorkManage) : base(BaseDal) |
| | | public OutBSTOrderService(IOutBSTOrderRepository BaseDal,IBasicRepository basicRepository,IMapper mapper,IUnitOfWorkManage unitOfWorkManage,IOutBSTOrderDetailRepository outBSTOrderDetailRepository) : base(BaseDal) |
| | | { |
| | | _basicRepository = basicRepository; |
| | | _mapper = mapper; |
| | | _unitOfWorkManage = unitOfWorkManage; |
| | | _outBSTOrderDetailRepository = outBSTOrderDetailRepository; |
| | | } |
| | | /// <summary> |
| | | /// æ·»å åºåºæç¨ä¿¡æ¯ |
| | |
| | | List<Dt_OutBSTOrder> outBSTAddOrders = new List<Dt_OutBSTOrder>(); |
| | | List<Dt_OutBSTOrder> outBSTUpOrders = new List<Dt_OutBSTOrder>(); |
| | | List<Dt_OutBSTOrder> outBSTDelOrders = new List<Dt_OutBSTOrder>(); |
| | | List<Dt_OutBSTOrderDetail> outBSTOrderDetailsDel = new List<Dt_OutBSTOrderDetail>(); |
| | | //æ°å¢ |
| | | if (outOrderDTOsAdd.Count>0) |
| | | { |
| | |
| | | { |
| | | return content.Error($"åºåºæç¨Id{nameof(BSTOutOrderDTO.BoardMpsId)}:{ExistAddOutOrder.BoardMpsId}å·²åå¨"); |
| | | } |
| | | List<BstBoardMpsDetailItem> bstBoardMpsDetailItems = outOrderDTOsAdd.SelectMany(x => x.BstBoardMpsDetails).ToList(); |
| | | //夿æ¯å¦åå¨ç©æ |
| | | List<BstBoardMpsDetailItem> bstBoardMpsDetailItems = outOrderDTOsAdd.SelectMany(x => x.BstBoardMpsDetails).ToList(); |
| | | BstBoardMpsDetailItem? bstBoardMpsDetailItem = bstBoardMpsDetailItems.FirstOrDefault(x => !materielInfos.Select(x => x.MaterialSourceId).Contains(x.MaterialId)); |
| | | if (bstBoardMpsDetailItem != null) |
| | | { |
| | |
| | | } |
| | | foreach (var item in outOrderDTOsAdd) |
| | | { |
| | | if (outOrderDTOsUpdate.FirstOrDefault(x => x.BoardMpsId == item.BoardMpsId) != null) |
| | | { |
| | | continue; |
| | | } |
| | | List<Dt_OutBSTOrderDetail> bSTOrderDetails = item.BstBoardMpsDetails.Select(x => _mapper.Map<Dt_OutBSTOrderDetail>(x)).ToList(); |
| | | Dt_OutBSTOrder outBSTOrder = _mapper.Map<Dt_OutBSTOrder>(item); |
| | | outBSTOrder.Details=bSTOrderDetails; |
| | |
| | | //ä¿®æ¹ |
| | | if (outOrderDTOsUpdate.Count > 0) |
| | | { |
| | | List<Dt_OutBSTOrder>? ExistUpdateoutBSTOrders = OldoutBSTOrders.Where(x => outOrderDTOsUpdate.Select(x => x.BoardMpsId).Contains(x.BoardMpsId)).ToList(); |
| | | //æ´æ°çåæ®æ¯å¦åå¨ |
| | | if (ExistUpdateoutBSTOrders.Count == outOrderDTOsUpdate.Count) |
| | | List<Dt_OutBSTOrder>? ExistUpdateOutBSTOrders = OldoutBSTOrders.Where(x => outOrderDTOsUpdate.Select(x => x.BoardMpsId).Contains(x.BoardMpsId)).ToList(); |
| | | |
| | | foreach (var item in outOrderDTOsUpdate) |
| | | { |
| | | |
| | | } |
| | | else |
| | | { |
| | | BSTOutOrderDTO? bSTOutOrderDTO = outOrderDTOsUpdate.FirstOrDefault(x => !ExistUpdateoutBSTOrders.Select(x => x.BoardMpsId).Contains(x.BoardMpsId)); |
| | | return content.Error($"æªæ¾å°æå®ç产æç¨åId{nameof(BSTOutOrderDTO.BoardMpsId)}:{bSTOutOrderDTO?.BoardMpsId}"); |
| | | Dt_OutBSTOrder? outBSTOrderUpdate = ExistUpdateOutBSTOrders.FirstOrDefault(x=>x.BoardMpsId==item.BoardMpsId); |
| | | //å¦æè®¢åå·²åå¨åè¿è¡æ´æ¹ |
| | | if (outBSTOrderUpdate != null) |
| | | { |
| | | if (outBSTOrderUpdate.OutBSTOrderStatus != OutOrderStatusEnum.æªå¼å§.ObjToInt()) |
| | | { |
| | | return content.Error($"éè´{nameof(outBSTOrderUpdate.BoardMpsId)}:{outBSTOrderUpdate.BoardMpsId}订ååºåºä¸ï¼ä¸å¯æ´æ¹"); |
| | | } |
| | | //æ´æ°æ°æ® |
| | | outBSTOrderDetailsDel.AddRange(outBSTOrderUpdate.Details); |
| | | List<Dt_OutBSTOrderDetail> bSTOrderDetails = item.BstBoardMpsDetails.Select(x => _mapper.Map<Dt_OutBSTOrderDetail>(x)).ToList(); |
| | | bSTOrderDetails.ForEach(x => |
| | | { |
| | | x.OutBSTOrderId = outBSTOrderUpdate.Id; |
| | | }); |
| | | outBSTOrderUpdate.Details = bSTOrderDetails; |
| | | outBSTOrderUpdate.BoardMpsId= item.BoardMpsId; |
| | | outBSTOrderUpdate.BoardMpsNo= item.BoardMpsNo; |
| | | outBSTOrderUpdate.ProductionDate = DateTimeOffset.FromUnixTimeMilliseconds(item.ProductionDate).DateTime; |
| | | outBSTUpOrders.Add(outBSTOrderUpdate); |
| | | } |
| | | else//妿ä¸åå¨åè¿è¡æ°å¢ |
| | | { |
| | | List<Dt_OutBSTOrderDetail> bSTOrderDetails = item.BstBoardMpsDetails.Select(x => _mapper.Map<Dt_OutBSTOrderDetail>(x)).ToList(); |
| | | Dt_OutBSTOrder outBSTOrder = _mapper.Map<Dt_OutBSTOrder>(item); |
| | | outBSTOrder.Details = bSTOrderDetails; |
| | | outBSTAddOrders.Add(outBSTOrder); |
| | | } |
| | | } |
| | | } |
| | | //å é¤ |
| | |
| | | } |
| | | _unitOfWorkManage.BeginTran(); |
| | | BaseDal.Db.InsertNav(outBSTAddOrders).Include(x => x.Details).ExecuteCommand(); |
| | | _outBSTOrderDetailRepository.DeleteData(outBSTOrderDetailsDel); |
| | | BaseDal.Db.UpdateNav(outBSTUpOrders).Include(x => x.Details).ExecuteCommand(); |
| | | _unitOfWorkManage.CommitTran(); |
| | | content.OK("æ¥æ¶æå"); |
| | | } |
| | |
| | | var weight = saveModel.MainData["weight"].ObjToInt(); |
| | | //å¹
宽 |
| | | var wide = saveModel.MainData["wide"].ObjToInt(); |
| | | Dt_MaterielInfo? materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x=>x.MaterielCode== materSn); |
| | | Dt_MaterielInfo? materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == materSn); |
| | | if (materielInfo==null) |
| | | { |
| | | return content.Error("æªæ¾å°ç©æä¿¡æ¯"); |
| | |
| | | } |
| | | |
| | | string roadwayNo = ""; |
| | | //éå¶ç´å¾ |
| | | if (stockInfo.MaterielThickness > 800) |
| | | |
| | | if (stockInfo.MaterielInvOrgId==MaterielInvOrgEnum.æ°å.ObjToInt()) |
| | | { |
| | | //è·ååé
|
| | | List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.RoadwayNo.Contains("YL")).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList(); |
| | | if (stockInfo.MaterielWide > 2200) |
| | | //éå¶ç´å¾ |
| | | if (stockInfo.MaterielThickness <= 1200) |
| | | { |
| | | locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.RoadwayNo=="SC02_YL").GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList(); |
| | | } |
| | | List<LocationCount> useLocationCounts = Db.Queryable<Dt_Task>().Where(x => x.WarehouseId == warehouse.WarehouseId |
| | | && locationCounts.Select(j => j.RoadwayNo).Contains(x.Roadway) |
| | | && TaskInboundTypes.Contains(x.TaskType)).GroupBy(x => x.Roadway).Select(x => new LocationCount { RoadwayNo = x.Roadway, Count = SqlFunc.AggregateCount(x) }).ToList(); |
| | | foreach (var item in locationCounts) |
| | | { |
| | | LocationCount? count = useLocationCounts.FirstOrDefault(x => x.RoadwayNo == item.RoadwayNo); |
| | | if (count != null) |
| | | //è·ååé
|
| | | List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.RoadwayNo.Contains("YLDual")).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList(); |
| | | |
| | | //å··éä»»å¡åé
æ°é |
| | | List<LocationCount> useLocationCounts = Db.Queryable<Dt_Task>().Where(x => x.WarehouseId == warehouse.WarehouseId |
| | | && locationCounts.Select(j => j.RoadwayNo).Contains(x.Roadway) |
| | | && TaskInboundTypes.Contains(x.TaskType)).GroupBy(x => x.Roadway).Select(x => new LocationCount { RoadwayNo = x.Roadway, Count = SqlFunc.AggregateCount(x) }).ToList(); |
| | | |
| | | foreach (var item in locationCounts) |
| | | { |
| | | item.Count -= count.Count; |
| | | LocationCount? count = useLocationCounts.FirstOrDefault(x => x.RoadwayNo == item.RoadwayNo); |
| | | if (count != null) |
| | | { |
| | | item.Count -= count.Count; |
| | | } |
| | | } |
| | | roadwayNo = locationCounts.OrderByDescending(x => x.Count).FirstOrDefault()?.RoadwayNo ?? ""; |
| | | } |
| | | roadwayNo = locationCounts.OrderByDescending(x => x.Count).FirstOrDefault()?.RoadwayNo ?? ""; |
| | | } |
| | | else |
| | | { |
| | | //éå¶ç´å¾ |
| | | if (stockInfo.MaterielThickness >= 800 && stockInfo.MaterielThickness <= 1500) |
| | | { |
| | | //è·ååé
|
| | | List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.RoadwayNo.Contains("YL") && !x.RoadwayNo.Contains("YLDual")).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList(); |
| | | if (stockInfo.MaterielWide > 2200) |
| | | { |
| | | locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.RoadwayNo == "SC02_YL").GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList(); |
| | | } |
| | | |
| | | //å··éä»»å¡åé
æ°é |
| | | List<LocationCount> useLocationCounts = Db.Queryable<Dt_Task>().Where(x => x.WarehouseId == warehouse.WarehouseId |
| | | && locationCounts.Select(j => j.RoadwayNo).Contains(x.Roadway) |
| | | && TaskInboundTypes.Contains(x.TaskType)).GroupBy(x => x.Roadway).Select(x => new LocationCount { RoadwayNo = x.Roadway, Count = SqlFunc.AggregateCount(x) }).ToList(); |
| | | foreach (var item in locationCounts) |
| | | { |
| | | LocationCount? count = useLocationCounts.FirstOrDefault(x => x.RoadwayNo == item.RoadwayNo); |
| | | if (count != null) |
| | | { |
| | | item.Count -= count.Count; |
| | | } |
| | | } |
| | | roadwayNo = locationCounts.OrderByDescending(x => x.Count).FirstOrDefault()?.RoadwayNo ?? ""; |
| | | } |
| | | } |
| | | |
| | | return !string.IsNullOrEmpty(roadwayNo) ? (roadwayNo) : throw new Exception("æªæ¾å°å¯åé
å··é"); |
| | | } |
| | | catch (Exception ex) |
| | |
| | | try |
| | | { |
| | | Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == task.WarehouseId); |
| | | if (warehouse.WarehouseCode == WarehouseEnum.LLDCP.ToString()) //æå宿 |
| | | if (warehouse.WarehouseCode == WarehouseEnum.LLDCP.ToString() || warehouse.WarehouseCode == WarehouseEnum.LLDFL.ToString()) //æå/è¾
æå®æ |
| | | { |
| | | Dt_LocationInfo locationInfoEnd = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress); |
| | | if (locationInfoEnd == null) |
| | |
| | | _stockService.StockInfoService.Repository.UpdateData(stockInfo); |
| | | _basicService.LocationInfoService.UpdateLocationStatus(locationInfoEnd, stockInfo.PalletType, LocationStatusEnum.InStock, stockInfo.WarehouseId); |
| | | BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? WIDESEA_Core.Enums.OperateTypeEnum.äººå·¥å®æ : WIDESEA_Core.Enums.OperateTypeEnum.èªå¨å®æ); |
| | | //if (stockInfo.MaterielInvOrgId==MaterielInvOrgEnum.èå.ObjToInt()) |
| | | //{ |
| | | // int Qty = Convert.ToInt32(stockInfo.MaterielWeight); |
| | | // BSTPurchaseUpModel bSTPurchaseUpModel = new BSTPurchaseUpModel() |
| | | // { |
| | | // Barcode = stockInfo.PalletCode, |
| | | // BarcodeQty = Qty, |
| | | // Rfid = stockInfo.PalletCode |
| | | // }; |
| | | // BSTResponse bSTResponse = _invokeERPService.BSTPurchaseUp(bSTPurchaseUpModel).DeserializeObject<BSTResponse>(); |
| | | // if (bSTResponse.Code==500) |
| | | // { |
| | | // throw new Exception($"BST䏿ERP忥å
¥åºä¿¡æ¯å¤±è´¥,é误信æ¯{bSTResponse.Msg}"); |
| | | // } |
| | | //} |
| | | //䏿¥èåERP |
| | | if (stockInfo.MaterielInvOrgId == MaterielInvOrgEnum.èå.ObjToInt()) |
| | | { |
| | | int Qty = Convert.ToInt32(stockInfo.MaterielWeight); |
| | | BSTPurchaseUpModel bSTPurchaseUpModel = new BSTPurchaseUpModel() |
| | | { |
| | | Barcode = stockInfo.PalletCode, |
| | | BarcodeQty = Qty, |
| | | Rfid = stockInfo.PalletCode, |
| | | RfidUpdateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") |
| | | }; |
| | | BSTResponse bSTResponse = _invokeERPService.BSTPurchaseUp(bSTPurchaseUpModel).DeserializeObject<BSTResponse>(); |
| | | if (bSTResponse.Code == 500) |
| | | { |
| | | throw new Exception($"BST䏿ERP忥å
¥åºä¿¡æ¯å¤±è´¥,é误信æ¯ï¼{bSTResponse.Msg}"); |
| | | } |
| | | } |
| | | _unitOfWorkManage.CommitTran(); |
| | | } |
| | | return content.OK(); |
| | |
| | | { |
| | | try |
| | | { |
| | | Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == 2); |
| | | if (warehouse == null) |
| | | { |
| | | throw new Exception($"æªæ¾å°å··é对åºä»åºä¿¡æ¯"); |
| | | } |
| | | |
| | | string roadwayNo = ""; |
| | | List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.RoadwayNo.Contains("CP")).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList(); |
| | | //è·åå··éå¯åé
çè´§ä½æ°é |
| | | List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == WarehouseEnum.LLDCP.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.RoadwayNo.Contains("CP")).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList(); |
| | | //çéå½åå
¥åºä»»å¡ä¸å·²åé
å··é任塿°é |
| | | List<LocationCount> useLocationCounts = Db.Queryable<Dt_Task>().Where(x => x.WarehouseId == warehouse.WarehouseId |
| | | List<LocationCount> useLocationCounts = Db.Queryable<Dt_Task>().Where(x => (x.WarehouseId == WarehouseEnum.LLDCP.ObjToInt()|| x.WarehouseId == WarehouseEnum.LLDFL.ObjToInt()) |
| | | && locationCounts.Select(j=>j.RoadwayNo).Contains(x.Roadway) |
| | | && TaskInboundTypes.Contains(x.TaskType)).GroupBy(x => x.Roadway).Select(x => new LocationCount { RoadwayNo = x.Roadway, Count = SqlFunc.AggregateCount(x) }).ToList(); |
| | | foreach (var item in locationCounts) |
| | |
| | | item.Count -= count.Count; |
| | | } |
| | | } |
| | | //éè¿å¯ç¨è´§ä½æ°éæåºï¼æå¤çä¼å
åé
|
| | | roadwayNo = locationCounts.OrderByDescending(x => x.Count).FirstOrDefault()?.RoadwayNo ?? ""; |
| | | return !string.IsNullOrEmpty(roadwayNo) ? (roadwayNo) : throw new Exception("æªæ¾å°å¯åé
å··é"); |
| | | } |
| | |
| | | //åé
å··é |
| | | string roadWay=AssignCPRoadwayNo(); |
| | | |
| | | //è·åæååº |
| | | Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.LLDCP.ToString()); |
| | | Dt_ProStockInfo proStockInfo = new Dt_ProStockInfo() |
| | | { |
| | | PalletCode=barCode, |
| | | ProStockAttribute=ProStockAttributeEnum.空æ.ObjToInt(), |
| | | PalletType=1, |
| | | LocationCode="", |
| | | WarehouseId=warehouse.WarehouseId, |
| | | WarehouseId= WarehouseEnum.LLDFL.ObjToInt(), |
| | | StockStatus=StockStatusEmun.MES空æéåº.ObjToInt() |
| | | }; |
| | | |
| | |
| | | TargetAddress = "", |
| | | TaskType = TaskTypeEnum.EmptyProductBack.ObjToInt(), |
| | | TaskStatus = TaskStatusEnum.New.ObjToInt(), |
| | | WarehouseId = warehouse.WarehouseId, |
| | | WarehouseId = WarehouseEnum.LLDFL.ObjToInt(), |
| | | PalletType = 1 |
| | | }; |
| | | _unitOfWorkManage.BeginTran(); |
| | |
| | | //{ |
| | | // return content.Error($"æ¡ç æ ¼å¼é误{barCode}"); |
| | | //} |
| | | Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == matCode && x.MaterielInvOrgId == MaterielInvOrgEnum.æ°å.ObjToInt() && x.WarehouseId==WarehouseEnum.LLDCP.ObjToInt()); |
| | | //è·åç©æ |
| | | Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == matCode && x.MaterielInvOrgId == MaterielInvOrgEnum.æ°å.ObjToInt() && (x.WarehouseId==WarehouseEnum.LLDCP.ObjToInt() || x.WarehouseId == WarehouseEnum.LLDFL.ObjToInt())); |
| | | if (materielInfo == null) |
| | | { |
| | | return content.Error($"æªæ¾å°ç©æä¿¡æ¯{matCode}"); |
| | |
| | | string roadWay = AssignCPRoadwayNo(); |
| | | |
| | | //è·åæååº |
| | | Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.LLDCP.ToString()); |
| | | WarehouseEnum warehouseEnum = materielInfo.MaterielSourceType == MaterielTypeEnum.æå.ObjToInt() ? WarehouseEnum.LLDCP : WarehouseEnum.LLDFL; |
| | | Dt_ProStockInfoDetail proStockInfoDetail = new Dt_ProStockInfoDetail() |
| | | { |
| | | ProductCode = materielInfo.MaterielCode, |
| | |
| | | ProStockAttribute = materielInfo.MaterielSourceType, |
| | | PalletType = 1, |
| | | LocationCode = "", |
| | | WarehouseId = warehouse.WarehouseId, |
| | | WarehouseId = warehouseEnum.ObjToInt(), |
| | | StockStatus = StockStatusEmun.æå¨ç»çå
¥åºç¡®è®¤.ObjToInt(), |
| | | proStockInfoDetails = new List<Dt_ProStockInfoDetail> { proStockInfoDetail } |
| | | }; |
| | |
| | | TargetAddress = "", |
| | | TaskType = TaskTypeEnum.Inbound.ObjToInt(), |
| | | TaskStatus = TaskStatusEnum.New.ObjToInt(), |
| | | WarehouseId = warehouse.WarehouseId, |
| | | WarehouseId = warehouseEnum.ObjToInt(), |
| | | PalletType = 1 |
| | | }; |
| | | _unitOfWorkManage.BeginTran(); |
| | |
| | | try |
| | | { |
| | | Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == task.WarehouseId); |
| | | if (warehouse.WarehouseCode == WarehouseEnum.LLDCP.ToString()) //æå宿 |
| | | if (warehouse.WarehouseCode == WarehouseEnum.LLDCP.ToString() || warehouse.WarehouseCode == WarehouseEnum.LLDFL.ToString()) //æå宿 |
| | | { |
| | | Dt_LocationInfo locationInfoStart = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.SourceAddress); |
| | | if (locationInfoStart == null) |
| | |
| | | } |
| | | return tasks; |
| | | } |
| | | public List<Dt_Task> GetTasks(List<Dt_ProStockInfo> stockInfos, TaskTypeEnum taskType) |
| | | public List<Dt_Task> GetTasks(List<Dt_ProStockInfo> stockInfos, TaskTypeEnum taskType,List<Dt_LocationInfo> locationInfos) |
| | | { |
| | | List<Dt_Task> tasks = new List<Dt_Task>(); |
| | | for (int i = 0; i < stockInfos.Count; i++) |
| | |
| | | |
| | | if (stockInfo != null) |
| | | { |
| | | Dt_LocationInfo locationInfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == stockInfo.LocationCode); |
| | | Dt_LocationInfo locationInfo = locationInfos.FirstOrDefault(x => x.LocationCode == stockInfo.LocationCode); |
| | | if (!tasks.Exists(x => x.PalletCode == stockInfo.PalletCode)) |
| | | { |
| | | Dt_Task task = new() |
| | |
| | | /// <summary> |
| | | /// æååºåº |
| | | /// </summary> |
| | | /// <param name="Count"></param> |
| | | /// <returns></returns> |
| | | public WebResponseContent RequestCPWMSTaskOut(int Count) |
| | | public WebResponseContent RequestCPWMSTaskOut(string materialCode,int Count, int targetId) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | List<Dt_AGVStationInfo> aGVStationInfos = _agvStationInfoRepository.QueryData(x=>x.StationArea==AGVStationAreaEnum.AreaA.ObjToInt() && x.IsOccupied==WhetherEnum.False.ObjToInt()); |
| | | List<Dt_AGVStationInfo> aGVStationInfos = _agvStationInfoRepository.QueryData(x=>x.StationArea == targetId && x.IsOccupied==WhetherEnum.False.ObjToInt()); |
| | | if (aGVStationInfos.Count< Count) |
| | | { |
| | | return content.Error($"å¯ç¨ç¼åæ°ä¸è¶³"); |
| | | } |
| | | List<Dt_ProStockInfo> stockInfos = _stockRepository.ProStockInfoRepository.QueryData(x => x.ProStockAttribute == ProStockAttributeEnum.æå.ObjToInt() && x.StockStatus == StockStatusEmun.å
¥åºå®æ.ObjToInt()).OrderBy(x=>x.CreateDate).Take(Count).ToList(); |
| | | List<Dt_LocationInfo> locationInfos = _basicRepository.LocationInfoRepository.QueryData(x => stockInfos.Select(x => x.LocationCode).Contains(x.LocationCode)); |
| | | if (stockInfos.Count < Count) |
| | | //è·åè´§ä½ |
| | | List<Dt_LocationInfo> locationInfos = _basicRepository.LocationInfoRepository.QueryData(x => x.WarehouseId == WarehouseEnum.LLDCP.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyOut.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.LocationStatus == LocationStatusEnum.InStock.ObjToInt()); |
| | | |
| | | //è·åå¯ç¨åºå |
| | | List<Dt_ProStockInfo> stockInfos = BaseDal.Db.Queryable<Dt_ProStockInfo>().Where(x => locationInfos.Select(x => x.LocationCode).Contains(x.LocationCode) && x.StockStatus == StockStatusEmun.å
¥åºå®æ.ObjToInt()).Includes(x => x.proStockInfoDetails) |
| | | .Where(x => x.proStockInfoDetails |
| | | .Any(v => |
| | | v.ProductCode == materialCode) |
| | | ).ToList(); |
| | | |
| | | if (stockInfos.Count!=Count) |
| | | { |
| | | return content.Error($"åºåæ°éä¸è¶³"); |
| | | return content.Error($"åºå{materialCode}æ°éä¸è¶³"); |
| | | } |
| | | List<Dt_LocationInfo> AssignLocations = new List<Dt_LocationInfo>(); |
| | | foreach (var item in stockInfos) |
| | | { |
| | | Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.LocationCode == item.LocationCode); |
| | | if (locationInfo != null && (locationInfo.EnableStatus == EnableStatusEnum.OnlyOut.ObjToInt() || locationInfo.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && locationInfo.LocationStatus == LocationStatusEnum.InStock.ObjToInt()) |
| | | if (locationInfo != null) |
| | | { |
| | | AssignLocations.Add(locationInfo); |
| | | item.StockStatus = StockStatusEmun.åºåºéå®.ObjToInt(); |
| | | } |
| | | else |
| | | { |
| | | return content.Error($"è´§ä½ç¶æä¸æ£ç¡®"); |
| | | } |
| | | } |
| | | List<Dt_Task> tasks = GetTasks(stockInfos, TaskTypeEnum.OutProduct); |
| | | TaskTypeEnum typeEnum = targetId switch |
| | | { |
| | | (int)AGVStationAreaEnum.AreaA => TaskTypeEnum.OutProduct, |
| | | (int)AGVStationAreaEnum.AreaC => TaskTypeEnum.OutWFB, |
| | | _ => throw new Exception("æªæ¾å°å¯¹åºä»»å¡") |
| | | }; |
| | | List<Dt_Task> tasks = GetTasks(stockInfos, typeEnum, AssignLocations); |
| | | if (tasks == null || tasks.Count <= 0) |
| | | { |
| | | return content.Error($"çæä»»å¡å¤±è´¥"); |
| | |
| | | _stockRepository.ProStockInfoRepository.UpdateData(stockInfos); |
| | | _agvStationInfoRepository.UpdateData(aGVStationInfos); |
| | | //æ´æ°è´§ä½ç¶æ |
| | | _basicRepository.LocationInfoRepository.UpdateLocationStatus(locationInfos, LocationStatusEnum.Lock); |
| | | _basicRepository.LocationInfoRepository.UpdateLocationStatus(AssignLocations, LocationStatusEnum.Lock); |
| | | //å å
¥è´§ä½åå¨è®°å½ |
| | | _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfos, LocationStatusEnum.Lock, LocationChangeType.OutboundAssignLocation, taskNums: tasks.Select(x => x.TaskNum).ToList()); |
| | | _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(AssignLocations, LocationStatusEnum.Lock, LocationChangeType.OutboundAssignLocation, taskNums: tasks.Select(x => x.TaskNum).ToList()); |
| | | //æ°å»ºä»»å¡ |
| | | BaseDal.AddData(tasks); |
| | | _unitOfWorkManage.CommitTran(); |
| | |
| | | /// </summary> |
| | | /// <param name="Count"></param> |
| | | /// <returns></returns> |
| | | public WebResponseContent RequestWFBWMSTaskOut(int Count) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | List<Dt_AGVStationInfo> aGVStationInfos = _agvStationInfoRepository.QueryData(x => x.StationArea == AGVStationAreaEnum.AreaC.ObjToInt() && x.IsOccupied == WhetherEnum.False.ObjToInt()); |
| | | if (aGVStationInfos.Count < Count) |
| | | { |
| | | return content.Error($"å¯ç¨ç¼åæ°ä¸è¶³"); |
| | | } |
| | | List<Dt_ProStockInfo> stockInfos = _stockRepository.ProStockInfoRepository.QueryData(x => x.ProStockAttribute == ProStockAttributeEnum.è¾
æå¤ä»¶.ObjToInt() && x.StockStatus == StockStatusEmun.å
¥åºå®æ.ObjToInt()).OrderBy(x => x.CreateDate).Take(Count).ToList(); |
| | | List<Dt_LocationInfo> locationInfos = _basicRepository.LocationInfoRepository.QueryData(x => stockInfos.Select(x => x.LocationCode).Contains(x.LocationCode)); |
| | | if (stockInfos.Count < Count) |
| | | { |
| | | return content.Error($"åºåæ°éä¸è¶³"); |
| | | } |
| | | foreach (var item in stockInfos) |
| | | { |
| | | Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.LocationCode == item.LocationCode); |
| | | if (locationInfo != null && (locationInfo.EnableStatus == EnableStatusEnum.OnlyOut.ObjToInt() || locationInfo.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && locationInfo.LocationStatus == LocationStatusEnum.InStock.ObjToInt()) |
| | | { |
| | | item.StockStatus = StockStatusEmun.åºåºéå®.ObjToInt(); |
| | | } |
| | | else |
| | | { |
| | | return content.Error($"è´§ä½ç¶æä¸æ£ç¡®"); |
| | | } |
| | | } |
| | | List<Dt_Task> tasks = GetTasks(stockInfos, TaskTypeEnum.OutWFB); |
| | | if (tasks == null || tasks.Count <= 0) |
| | | { |
| | | return content.Error($"çæä»»å¡å¤±è´¥"); |
| | | } |
| | | for (int i = 0; i < tasks.Count; i++) |
| | | { |
| | | aGVStationInfos[i].IsOccupied = WhetherEnum.True.ObjToInt(); |
| | | tasks[i].TargetAddress = aGVStationInfos[i].AGVStationCode; |
| | | } |
| | | //夿æ¯å¦æåºåºåä¿¡æ¯ |
| | | _unitOfWorkManage.BeginTran(); |
| | | //æ´æ°åºåç¶æ |
| | | _stockRepository.ProStockInfoRepository.UpdateData(stockInfos); |
| | | _agvStationInfoRepository.UpdateData(aGVStationInfos); |
| | | //æ´æ°è´§ä½ç¶æ |
| | | _basicRepository.LocationInfoRepository.UpdateLocationStatus(locationInfos, LocationStatusEnum.Lock); |
| | | //å å
¥è´§ä½åå¨è®°å½ |
| | | _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfos, LocationStatusEnum.Lock, LocationChangeType.OutboundAssignLocation, taskNums: tasks.Select(x => x.TaskNum).ToList()); |
| | | //æ°å»ºä»»å¡ |
| | | BaseDal.AddData(tasks); |
| | | _unitOfWorkManage.CommitTran(); |
| | | PushTasksToWCS(tasks); |
| | | content.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | //public WebResponseContent RequestWFBWMSTaskOut(int Count) |
| | | //{ |
| | | // WebResponseContent content = new WebResponseContent(); |
| | | // try |
| | | // { |
| | | // List<Dt_AGVStationInfo> aGVStationInfos = _agvStationInfoRepository.QueryData(x => x.StationArea == AGVStationAreaEnum.AreaC.ObjToInt() && x.IsOccupied == WhetherEnum.False.ObjToInt()); |
| | | // if (aGVStationInfos.Count < Count) |
| | | // { |
| | | // return content.Error($"å¯ç¨ç¼åæ°ä¸è¶³"); |
| | | // } |
| | | // List<Dt_ProStockInfo> stockInfos = _stockRepository.ProStockInfoRepository.QueryData(x => x.ProStockAttribute == ProStockAttributeEnum.è¾
æå¤ä»¶.ObjToInt() && x.StockStatus == StockStatusEmun.å
¥åºå®æ.ObjToInt()).OrderBy(x => x.CreateDate).Take(Count).ToList(); |
| | | // List<Dt_LocationInfo> locationInfos = _basicRepository.LocationInfoRepository.QueryData(x => stockInfos.Select(x => x.LocationCode).Contains(x.LocationCode)); |
| | | // if (stockInfos.Count < Count) |
| | | // { |
| | | // return content.Error($"åºåæ°éä¸è¶³"); |
| | | // } |
| | | // foreach (var item in stockInfos) |
| | | // { |
| | | // Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.LocationCode == item.LocationCode); |
| | | // if (locationInfo != null && (locationInfo.EnableStatus == EnableStatusEnum.OnlyOut.ObjToInt() || locationInfo.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && locationInfo.LocationStatus == LocationStatusEnum.InStock.ObjToInt()) |
| | | // { |
| | | // item.StockStatus = StockStatusEmun.åºåºéå®.ObjToInt(); |
| | | // } |
| | | // else |
| | | // { |
| | | // return content.Error($"è´§ä½ç¶æä¸æ£ç¡®"); |
| | | // } |
| | | // } |
| | | // List<Dt_Task> tasks = GetTasks(stockInfos, TaskTypeEnum.OutWFB); |
| | | // if (tasks == null || tasks.Count <= 0) |
| | | // { |
| | | // return content.Error($"çæä»»å¡å¤±è´¥"); |
| | | // } |
| | | // for (int i = 0; i < tasks.Count; i++) |
| | | // { |
| | | // aGVStationInfos[i].IsOccupied = WhetherEnum.True.ObjToInt(); |
| | | // tasks[i].TargetAddress = aGVStationInfos[i].AGVStationCode; |
| | | // } |
| | | // //夿æ¯å¦æåºåºåä¿¡æ¯ |
| | | // _unitOfWorkManage.BeginTran(); |
| | | // //æ´æ°åºåç¶æ |
| | | // _stockRepository.ProStockInfoRepository.UpdateData(stockInfos); |
| | | // _agvStationInfoRepository.UpdateData(aGVStationInfos); |
| | | // //æ´æ°è´§ä½ç¶æ |
| | | // _basicRepository.LocationInfoRepository.UpdateLocationStatus(locationInfos, LocationStatusEnum.Lock); |
| | | // //å å
¥è´§ä½åå¨è®°å½ |
| | | // _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfos, LocationStatusEnum.Lock, LocationChangeType.OutboundAssignLocation, taskNums: tasks.Select(x => x.TaskNum).ToList()); |
| | | // //æ°å»ºä»»å¡ |
| | | // BaseDal.AddData(tasks); |
| | | // _unitOfWorkManage.CommitTran(); |
| | | // PushTasksToWCS(tasks); |
| | | // content.OK(); |
| | | // } |
| | | // catch (Exception ex) |
| | | // { |
| | | // content.Error(ex.Message); |
| | | // } |
| | | // return content; |
| | | //} |
| | | /// <summary> |
| | | /// åæåºåºä»»å¡ |
| | | /// </summary> |
| | |
| | | item.StockStatus = StockStatusEmun.åºåºéå®.ObjToInt(); |
| | | } |
| | | } |
| | | //åºåä»»å¡ |
| | | TaskTypeEnum taskTypeEnum = new(); |
| | | if (stockInfos.FirstOrDefault()?.MaterielInvOrgId==MaterielInvOrgEnum.èå.ObjToInt()) |
| | | { |
| | |
| | | List<Dt_OutBSTOrderDetail> outBSTOrderDetails = new List<Dt_OutBSTOrderDetail>(); |
| | | List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>(); |
| | | List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>(); |
| | | |
| | | //çæä»»å¡ãåºåçä¿¡æ¯ |
| | | (List<Dt_Task>, List<Dt_StockInfo>?, List<Dt_OutBSTOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?) result = OutboundTaskDataHandle(keys); |
| | | if (result.Item2 != null && result.Item2.Count > 0) |
| | | { |
| | |
| | | { |
| | | tasks.AddRange(result.Item1); |
| | | } |
| | | |
| | | //å¤çåºåºæ°æ® |
| | | return GenerateOutboundTaskDataUpdate(tasks, stockInfos, outBSTOrderDetails, outStockLockInfos, locationInfos); |
| | | } |
| | | catch (Exception ex) |
| | |
| | | private readonly IInvokeERPService _invokeERPService; |
| | | private readonly IPurchaseBSTOrderService _purchaseBSTOrderService; |
| | | private readonly IOutBSTOrderService _outBSTOrderService; |
| | | private readonly IReturnBSTOrderService _returnBSTOrderService; |
| | | |
| | | public ErpBSTController(IBasicService basicService, IInvokeERPService invokeERPService,IPurchaseBSTOrderService purchaseBSTOrderService,IOutBSTOrderService outBSTOrderService) |
| | | public ErpBSTController(IBasicService basicService, IInvokeERPService invokeERPService,IPurchaseBSTOrderService purchaseBSTOrderService,IOutBSTOrderService outBSTOrderService,IReturnBSTOrderService returnBSTOrderService) |
| | | { |
| | | _basicService = basicService; |
| | | _invokeERPService = invokeERPService; |
| | | _purchaseBSTOrderService = purchaseBSTOrderService; |
| | | _outBSTOrderService = outBSTOrderService; |
| | | _returnBSTOrderService = returnBSTOrderService; |
| | | } |
| | | /// <summary> |
| | | /// æ·»å èåç©æ |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ·»å èåä¾åºåä¿¡æ¯ |
| | | /// æ¥æ¶èåä¾åºåä¿¡æ¯ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpPost, HttpGet, Route("ReceiveSupplier"), AllowAnonymous] |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ·»å èåéè´åä¿¡æ¯ |
| | | /// æ¥æ¶èåéè´åä¿¡æ¯ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpPost, HttpGet, Route("ReceivePurchaseOrder"), AllowAnonymous] |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ·»å åºåºæç¨ä¿¡æ¯ |
| | | /// æ¥æ¶åºåºæç¨ä¿¡æ¯ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpPost, HttpGet, Route("ReceiveOutOrder"), AllowAnonymous] |
| | |
| | | { |
| | | return _outBSTOrderService.AddOutBSTOrder(bSTOutOrderDTOs); |
| | | } |
| | | /// <summary> |
| | | /// æ¥æ¶åæéé¢æä¿¡æ¯ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpPost, HttpGet, Route("ReceivePicking"), AllowAnonymous] |
| | | public WebResponseContent ReceivePicking() |
| | | { |
| | | return WebResponseContent.Instance.Error("æªæ¾å°å¯¹åºåºåä¿¡æ¯") ; |
| | | } |
| | | /// <summary> |
| | | /// æ¥æ¶åæééæä¿¡æ¯ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpPost, HttpGet, Route("ReceiveReturnOrder"), AllowAnonymous] |
| | | public WebResponseContent ReceiveReturnOrder([FromBody] List<BSTReturnOrderDTO> bSTReturnOrderDTOs) |
| | | { |
| | | return _returnBSTOrderService.ReceiveReturnOrder(bSTReturnOrderDTOs); |
| | | } |
| | | /// <summary> |
| | | /// æ¥æ¶åæéçç¹ä¿¡æ¯ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpPost, HttpGet, Route("ReceiveStockCheckOrder"), AllowAnonymous] |
| | | public WebResponseContent ReceiveStockCheckOrder([FromBody] List<BSTOutOrderDTO> bSTOutOrderDTOs) |
| | | { |
| | | return _outBSTOrderService.AddOutBSTOrder(bSTOutOrderDTOs); |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Microsoft.AspNetCore.Mvc; |
| | | using WIDESEA_Core.BaseController; |
| | | using WIDESEA_IInboundService; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_WMSServer.Controllers.Inbound |
| | | { |
| | | /// <summary> |
| | | /// BSTéæå |
| | | /// </summary> |
| | | [Route("api/ReturnBSTOrder")] |
| | | [ApiController] |
| | | public class ReturnBSTOrderController : ApiBaseController<IReturnBSTOrderService, Dt_ReturnBSTOrder> |
| | | { |
| | | public ReturnBSTOrderController(IReturnBSTOrderService service) : base(service) |
| | | { |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Microsoft.AspNetCore.Mvc; |
| | | using WIDESEA_Core.BaseController; |
| | | using WIDESEA_IInboundService; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_WMSServer.Controllers.Inbound |
| | | { |
| | | /// <summary> |
| | | /// BSTéæåæç» |
| | | /// </summary> |
| | | [Route("api/ReturnBSTOrderDetail")] |
| | | [ApiController] |
| | | public class ReturnBSTOrderDetailController : ApiBaseController<IReturnBSTOrderDetailService, Dt_ReturnBSTOrderDetail> |
| | | { |
| | | public ReturnBSTOrderDetailController(IReturnBSTOrderDetailService service) : base(service) |
| | | { |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | /// <summary> |
| | | /// æååºåºä»»å¡è¯·æ± |
| | | /// <param name="targetId"> |
| | | /// 1 æå°åº<br/> |
| | | /// 2 å
¥åºåº<br/> |
| | | /// 3 ç»å¸åº<br/> |
| | | /// 4 æ·èåº<br/> |
| | | /// 5 æååº<br/> |
| | | /// 6 å°å·åº<br/> |
| | | /// 7 å²ååº<br/> |
| | | /// 8 åæåº<br/> |
| | | /// 9 纸è¢åº<br/> |
| | | /// 10 å¸è¢åº<br/> |
| | | /// 11 纸æ¯åº<br/> |
| | | /// 12 é¾ååº<br/> |
| | | /// </param> |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpPost, HttpGet, Route("RequestCPWMSTaskOut"), AllowAnonymous] |
| | | public WebResponseContent RequestCPWMSTaskOut(int Count) |
| | | public WebResponseContent RequestCPWMSTaskOut(string materialCode,int Count, int targetId) |
| | | { |
| | | return Service.RequestCPWMSTaskOut(Count); |
| | | return Service.RequestCPWMSTaskOut(materialCode, Count, targetId); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ 纺å¸åºåº |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpPost, HttpGet, Route("RequestWFBWMSTaskOut"), AllowAnonymous] |
| | | public WebResponseContent RequestWFBWMSTaskOut(int Count) |
| | | { |
| | | return Service.RequestWFBWMSTaskOut(Count); |
| | | } |
| | | ///// <summary> |
| | | ///// æ 纺å¸åºåº |
| | | ///// </summary> |
| | | ///// <returns></returns> |
| | | //[HttpPost, HttpGet, Route("RequestWFBWMSTaskOut"), AllowAnonymous] |
| | | //public WebResponseContent RequestWFBWMSTaskOut(int Count) |
| | | //{ |
| | | // return Service.RequestWFBWMSTaskOut(Count); |
| | | //} |
| | | |
| | | /// <summary> |
| | | /// åæåºåºä»»å¡ |
| | |
| | | /// <summary> |
| | | /// å建å纸ç产æç¨åºåºä»»å¡ |
| | | /// </summary> |
| | | /// <param name="saveModel"></param> |
| | | /// <returns></returns> |
| | | [HttpPost, HttpGet, Route("CreateBSTOutboundTasks"), AllowAnonymous] |
| | | public WebResponseContent CreateBSTOutboundTasks([FromBody] int[] keys) |
| | | { |
| | |
| | | //BSTåºåºæç¨å®ä½è½¬æ¢ |
| | | CreateMap<BSTOutOrderDTO, Dt_OutBSTOrder>().ForMember(x => x.OutBSTOrderStatus, b => b.MapFrom(b => OutOrderStatusEnum.æªå¼å§.ObjToInt())).ForMember(x => x.ProductionDate, b => b.MapFrom(b => DateTimeOffset.FromUnixTimeMilliseconds(b.ProductionDate).DateTime)).ForMember(x => x.WarehouseId, b => b.MapFrom(b => WarehouseEnum.LLDYL.ObjToInt())); |
| | | CreateMap<BstBoardMpsDetailItem, Dt_OutBSTOrderDetail>().ForMember(x => x.OutBSTOrderDetailStatus, b => b.MapFrom(b => OutOrderStatusEnum.æªå¼å§.ObjToInt())); |
| | | //BSTéæåå®ä½è½¬æ¢ |
| | | CreateMap<BSTReturnOrderDTO, Dt_ReturnBSTOrder>().ForMember(x => x.ReturnOrderStatus, b => b.MapFrom(b => InOrderStatusEnum.æªå¼å§.ObjToInt())).ForMember(x => x.WreturnDate, b => b.MapFrom(b => DateTimeOffset.FromUnixTimeMilliseconds(b.WreturnDate).DateTime)).ForMember(x => x.WarehouseId, b => b.MapFrom(b => WarehouseEnum.LLDYL.ObjToInt())); |
| | | CreateMap<BSTReturnOrderDTOItem, Dt_ReturnBSTOrderDetail>().ForMember(x => x.ReturnBSTOrderDetailStatus, b => b.MapFrom(b => OutOrderStatusEnum.æªå¼å§.ObjToInt())).ForMember(x => x.MaterialWide, b => b.MapFrom(b => b.W)).ForMember(x => x.MaterialThick, b => b.MapFrom(b => b.Thick)); |
| | | } |
| | | } |
| | | } |