| | |
| | | using iWareCommon.Common.Globle; |
| | | using Admin.NET.Application; |
| | | using iWareCommon.Common.Globle; |
| | | using iWareCommon.Utils; |
| | | using iWareModel; |
| | | using iWareModel.EnumType.XiGangPublicCommon; |
| | | using iWareSql.DataAccess; |
| | | using iWareSql.DBModel; |
| | | using iWareSql.WmsDBModel; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | |
| | | /// </summary> |
| | | public class MyExtendHelper |
| | | { |
| | | |
| | | /// <summary> |
| | | /// å¤ç 表 mes_order_gather |
| | | /// </summary> |
| | | /// <param name="wmsDB"></param> |
| | | /// <param name="package"></param> |
| | | /// <param name="qitaoValue"></param> |
| | | /// <param name="_UnlinePerson"></param> |
| | | /// <param name="errMsg"></param> |
| | | /// <returns></returns> |
| | | public static bool HandlerOrderGather(WmsDBModel wmsDB, mes_package_gather package, string qitaoValue, string _UnlinePerson, out string errMsg) |
| | | { |
| | | errMsg = ""; |
| | | //å¤ç表 mes_order_gather |
| | | if (package == null) { |
| | | return true; |
| | | } |
| | | var isAddOrder = false; |
| | | var packageList = wmsDB.mes_package_gather.Where(x => x.Info5 == package.Info5).ToList(); |
| | | if (packageList == null || packageList?.Count == 0) |
| | | { |
| | | errMsg = $"æ²¡ææ¾å°ç产åå·{package.Info5}çæ±æ»æ°æ®"; |
| | | return false; |
| | | } |
| | | var order = wmsDB.mes_order_gather.Where(x => x.Info5 == package.Info5).FirstOrDefault(); |
| | | if (order != null) |
| | | { |
| | | |
| | | } |
| | | else |
| | | { |
| | | order = new mes_order_gather() |
| | | { |
| | | Id = Yitter.IdGenerator.YitIdHelper.NextId(), |
| | | Info5 = package.Info5, |
| | | OrderId = package.OrderId, |
| | | PlanNo = package.PlanNo, |
| | | }; |
| | | isAddOrder = true; |
| | | } |
| | | order.PackageNum = packageList.Count(); |
| | | order.UnLinePackageNum = packageList.Where(x => x.UpiStatus == (int)UpiStatusEnum.å·²ä¸çº¿).Count(); |
| | | order.NoUnLinePackageNum = order.PackageNum - order.UnLinePackageNum; |
| | | |
| | | order.AllPackageArea = packageList.Sum(x => Convert.ToDecimal(x.Info13)); |
| | | order.ScanPackageArea = packageList.Where(x => x.UpiStatus == (int)UpiStatusEnum.å·²ä¸çº¿).Sum(x => Convert.ToDecimal(x.Info13)); |
| | | order.NoScanPackageArea = order.AllPackageArea - order.ScanPackageArea; |
| | | order.IsKitting = qitaoValue == "é½å¥" ? true : false; |
| | | |
| | | var order_unLine = false; |
| | | //æ¥è¯¢ä¸ä¸ä¸ªå
æ¯ä¸æ¯å±äºè¯¥è®¢å |
| | | var newLineQueue = wmsDB.mes_package_linequeue.OrderBy(x => x.Id).FirstOrDefault(); |
| | | if (newLineQueue != null && newLineQueue.Info5 != order.Info5) |
| | | { |
| | | //è¡¨ç¤ºæ¯ åæ¢ æ°è®¢åäºï¼è¯¥è®¢åè¦æ´æ°ä¸º å·²ä¸çº¿ã |
| | | order_unLine = true; |
| | | } |
| | | else |
| | | { |
| | | //å¤æè¯¥è®¢åæ¯å¦å·²ä¸çº¿ |
| | | if (order.PackageNum == order.UnLinePackageNum) |
| | | { |
| | | order_unLine = true; |
| | | } |
| | | } |
| | | //å¤æè¯¥è®¢åæ¯å¦å·²ä¸çº¿ |
| | | if (order_unLine) |
| | | { |
| | | order.IsUnline = true; |
| | | order.UnlineTime = DateTime.Now; |
| | | order.UnlinePerson = _UnlinePerson; |
| | | } |
| | | else |
| | | { |
| | | order.IsUnline = false; |
| | | } |
| | | |
| | | if (isAddOrder) |
| | | { |
| | | wmsDB.mes_order_gather.Add(order); |
| | | } |
| | | |
| | | return true; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// é
置缺æåå |
| | |
| | | #endregion |
| | | |
| | | /// <summary> |
| | | /// æ°å»ºè½¬è¿ä»»å¡ |
| | | /// </summary> |
| | | /// <param name="flag">1:转移å°1014ä½ç½® 2:转移å°ç«ä½åºä¸ 3:1009å°1011 4:ç«ä½åºå°1014ä½ç½® </param> |
| | | /// <param name="rgvEDevice">RGV设å¤å·</param> |
| | | /// <param name="user"></param> |
| | | /// <param name="store"></param> |
| | | /// <returns></returns> |
| | | public static FunRetEntity AddTransferTask(AddTransferTaskEnum flag, EDevice rgvEDevice, SysUser user, V_AllStore store) |
| | | { |
| | | FunRetEntity fr = new FunRetEntity(); |
| | | var errMsg = ""; |
| | | var remark = "æ°å¢è½¬è¿ä»»å¡"; |
| | | try |
| | | { |
| | | #region äºå¡ |
| | | #endregion |
| | | using (DbModel edm = new DbModel()) |
| | | { |
| | | //å¢å éªè¯ ãEditBy shaocx,2022-04-28ã |
| | | switch (flag) |
| | | { |
| | | case AddTransferTaskEnum.ä½ç½®1011转移å°1014ä½ç½®: |
| | | case AddTransferTaskEnum.ä½ç½®1011转移å°ç«ä½åºä¸: |
| | | //廿è¿ä¸ªéªè¯ï¼åé¢å
许å建任å¡å°±åå»ºå§ ãEditBy shaocx,2022-05-15ã |
| | | /* |
| | | var isAllow = IsAllowCreateTaskForInStore(edm, ref errMsg); |
| | | if (!isAllow) |
| | | { |
| | | return FunRetEntity.Fail(errMsg); |
| | | } |
| | | //*/ |
| | | break; |
| | | } |
| | | |
| | | using (var trans = edm.Database.BeginTransaction()) |
| | | { |
| | | try |
| | | { |
| | | Task_Main mainTask = new Task_Main(); |
| | | mainTask.IsVirtual = false;//éèæå
¥åº |
| | | mainTask.TaskNo = TaskNoHelper.GenerateTaskNo("TR"); |
| | | mainTask.TaskName = "空æè½¬è¿"; |
| | | |
| | | |
| | | |
| | | #region è·åä»»å¡èµ·ç¹ |
| | | |
| | | //èµ·ç¹ |
| | | var realSourcePlace = ""; |
| | | Base_Station sourcePlace = null; |
| | | if (flag == AddTransferTaskEnum.ç«ä½åºå°1014ä½ç½®) |
| | | {//4:ç«ä½åºå°1014ä½ç½® |
| | | var srmStore = MyExtendHelper.FindStoreForEmptySalverTo1014(edm, ref errMsg); |
| | | if (srmStore == null) |
| | | { |
| | | return FunRetEntity.Fail(errMsg); |
| | | } |
| | | store = ClassHelper.RotationMapping<V_AllStore, V_Store>(srmStore); |
| | | sourcePlace = StationHandler.GetPlaceByPlaceId(store.StationId, edm); |
| | | realSourcePlace = sourcePlace.SrmStationCode; |
| | | |
| | | //è®°å½åºå [EditBy shaocx,2022-05-02] |
| | | var device = BusinessHelper.GetSrmDeviceByPlaceNo(sourcePlace.SrmStationCode); |
| | | mainTask.Area = ((int)device).ToString(); |
| | | } |
| | | else if (flag == AddTransferTaskEnum.ä½ç½®1014å°1020) |
| | | {//5:ä½ç½®1014å°1020 |
| | | sourcePlace = StationHandler.GetPlaceByPlaceId(store.StationId, edm); |
| | | realSourcePlace = sourcePlace.RgvStationCode; |
| | | } |
| | | else |
| | | { |
| | | var getSourcePlaceResult = StationHandler.GetTargtStationForAddTransferTask(edm, rgvEDevice, ref errMsg, ref sourcePlace); |
| | | if (getSourcePlaceResult.result == false) return getSourcePlaceResult; |
| | | realSourcePlace = sourcePlace.RgvStationCode; |
| | | } |
| | | mainTask.SourcePlace = sourcePlace.Id; |
| | | mainTask.RealSourcePlace = realSourcePlace; |
| | | |
| | | #endregion |
| | | |
| | | #region è·åä¸é´ç¹åç®æ ç¹ |
| | | |
| | | Base_Station toPlace = null; |
| | | Base_Station midPlace = null; |
| | | var getMidToPlaceResult = MainTaskHandler.GetMidToPlaceForAddTransferTask(sourcePlace, flag, edm, ref errMsg, ref toPlace, ref midPlace, ref mainTask); |
| | | if (getMidToPlaceResult.result == false) return getMidToPlaceResult; |
| | | |
| | | #endregion |
| | | |
| | | SetTaskTypeStateAndInOutFlagForMainTask(flag, ref mainTask); |
| | | |
| | | Base_Salver salver = null; |
| | | Base_Material newMaterial = null; |
| | | if (store == null) |
| | | {//æ°å»ºç©æï¼æ°å»ºæçï¼æ°å»ºç»å®å
³ç³» |
| | | //ç»å®æçåç«ç¹çå
³ç³» |
| | | //æ°å»ºç©æ |
| | | var salverStackCount = GetSalverStackCountForBackToStore(); |
| | | if (salverStackCount == 0) |
| | | { |
| | | //æ¥é |
| | | return FunRetEntity.Fail("æ ¹æ®1009ç«ç¹çå
çµè·åè¿åç«ä½åºçæçæ°ä¸º0"); |
| | | } |
| | | |
| | | newMaterial = MaterialHandler.CreateEmptySlaverMaterial(edm, "空æçè½¬è¿æ¶å建", salverStackCount); |
| | | //夿æçæ¯å¦åå¨ï¼å¦æåå¨ï¼å°±ä¸éè¦é建ï¼å¦æä¸åå¨ï¼å°±æ°å»ºæç |
| | | salver = SalverHandler.CreateVirtualSalver(edm, "空æç转è¿"); |
| | | if (!string.IsNullOrEmpty(errMsg)) |
| | | { |
| | | return FunRetEntity.Fail(errMsg); |
| | | } |
| | | //ç»å®æçåç©æçå
³ç³» |
| | | Salver_Material_Handler.CreateCvIRelation(edm, user.Name, salver, newMaterial, remark); |
| | | //ç»å®æçåç«ç¹çå
³ç³» |
| | | Salver_Station_Handler.CreateCvPRelation(edm, user.Name, salver, sourcePlace, Salver_V_Station_StateEnum.å
¥åºç»å®, remark); |
| | | } |
| | | else |
| | | { |
| | | salver = SalverHandler.GetSalveById(edm, store.SalverId); |
| | | newMaterial = MaterialHandler.GetMaterialById(edm, store.MaterialId); |
| | | } |
| | | |
| | | mainTask.SalverId = salver.Id; |
| | | mainTask.SalverCode = salver.SalverCode; |
| | | mainTask.MaterialId = newMaterial.Id; |
| | | //ç©æä¿¡æ¯ |
| | | MainTaskHandler.SetMaterialForMainTask(ref mainTask, newMaterial); |
| | | |
| | | //åºåå·å订货å·èµå¼ [Editby shaocx,2022-04-05] |
| | | mainTask.SerialNumber = ""; |
| | | mainTask.OrderNo = ""; |
| | | |
| | | mainTask.CreateTime = mainTask.ModifyTime = mainTask.StartTime = DateTime.Now; |
| | | mainTask.CreateBy = mainTask.ModifyBy = user.Name; |
| | | mainTask.CreateId = mainTask.ModifyId = user.ID; |
| | | mainTask.OperationRemark = "æ·»å "; |
| | | |
| | | string taskSequenceGuid = ""; |
| | | mainTask.TaskSequence = MainTaskHandler.GenerateTaskSequence(edm, ref taskSequenceGuid);//çæä»»å¡åºåå· |
| | | mainTask.TaskSequenceGuid = taskSequenceGuid; |
| | | |
| | | edm.Task_Main.Add(mainTask); |
| | | edm.SaveChanges();//ä¿å䏿¬¡ï¼æ¤æ¶mainTaskçèªå¢IDå°±æå¼äº |
| | | |
| | | var plcTaskNo = BusinessHelper.CreatePlcTaskIdForSrmTask(); |
| | | var createTime = DateTime.Now; |
| | | |
| | | if (flag == AddTransferTaskEnum.ä½ç½®1011转移å°1014ä½ç½®) |
| | | {//转移å°1014ä½ç½® |
| | | //å建RGVä»»å¡ |
| | | FunRetEntity fre = PartTaskHandler.CreatePartTask(createTime, plcTaskNo, edm, EDeviceType.RGV, user.Name, 1, DeviceTaskTypeEnum.空æè½¬è¿å°æçæºå
¥å£, mainTask, salver, sourcePlace, toPlace, remark); |
| | | if (fre.result == false) |
| | | { |
| | | throw new Exception(fr.resMsg); |
| | | } |
| | | } |
| | | else if (flag == AddTransferTaskEnum.ä½ç½®1011转移å°ç«ä½åºä¸) |
| | | {//转移å°ç«ä½åºä¸ |
| | | //å建RGVä»»å¡ |
| | | FunRetEntity fre = PartTaskHandler.CreatePartTask(createTime, plcTaskNo, edm, EDeviceType.RGV, user.Name, 1, DeviceTaskTypeEnum.空æè½¬è¿å°ç«ä½åº, mainTask, salver, sourcePlace, midPlace, remark); |
| | | if (fre.result == false) |
| | | { |
| | | throw new Exception(fr.resMsg); |
| | | } |
| | | //å建å åæºä»»å¡ |
| | | fre = PartTaskHandler.CreatePartTask(createTime, plcTaskNo, edm, EDeviceType.å åæº, user.Name, 2, DeviceTaskTypeEnum.空æè½¬è¿å°ç«ä½åº, mainTask, salver, midPlace, toPlace, remark); |
| | | if (fre.result == false) |
| | | { |
| | | throw new Exception(fr.resMsg); |
| | | } |
| | | } |
| | | else if (flag == AddTransferTaskEnum.ä½ç½®1009å°ä½ç½®1011) |
| | | {// 3:1009å°1011 |
| | | //å建RGVä»»å¡ |
| | | FunRetEntity fre = PartTaskHandler.CreatePartTask(createTime, plcTaskNo, edm, EDeviceType.RGV, user.Name, 1, DeviceTaskTypeEnum.空æç¼åä½è½¬è¿, mainTask, salver, sourcePlace, toPlace, remark); |
| | | if (fre.result == false) |
| | | { |
| | | throw new Exception(fr.resMsg); |
| | | } |
| | | } |
| | | else if (flag == AddTransferTaskEnum.ç«ä½åºå°1014ä½ç½®) |
| | | {//4:ç«ä½åºå°1014ä½ç½® |
| | | |
| | | //å建å åæºä»»å¡ |
| | | FunRetEntity fre = PartTaskHandler.CreatePartTask(createTime, plcTaskNo, edm, EDeviceType.å åæº, user.Name, 1, DeviceTaskTypeEnum.ç«åºç©ºæå°æçæºå
¥å£, mainTask, salver, sourcePlace, midPlace, remark); |
| | | if (fre.result == false) |
| | | { |
| | | throw new Exception(fr.resMsg); |
| | | } |
| | | //å建RGVä»»å¡ |
| | | fre = PartTaskHandler.CreatePartTask(createTime, plcTaskNo, edm, EDeviceType.RGV, user.Name, 2, DeviceTaskTypeEnum.ç«åºç©ºæå°æçæºå
¥å£, mainTask, salver, midPlace, toPlace, remark); |
| | | if (fre.result == false) |
| | | { |
| | | throw new Exception(fr.resMsg); |
| | | } |
| | | } |
| | | else if (flag == AddTransferTaskEnum.ä½ç½®1014å°1020) |
| | | {//5:1014å°1020ä½ç½® |
| | | //å建RGVä»»å¡ |
| | | FunRetEntity fre = PartTaskHandler.CreatePartTask(createTime, plcTaskNo, edm, EDeviceType.RGV, user.Name, 1, DeviceTaskTypeEnum.æçæºå
¥å£å°æçæº, mainTask, salver, sourcePlace, toPlace, remark); |
| | | if (fre.result == false) |
| | | { |
| | | throw new Exception(fr.resMsg); |
| | | } |
| | | } |
| | | |
| | | edm.SaveChanges();//ç¬¬äºæ¬¡ä¿å |
| | | |
| | | trans.Commit();//äºå¡æäº¤ |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | trans.Rollback(); |
| | | throw ex; |
| | | } |
| | | } |
| | | return FunRetEntity.Success("æå"); |
| | | } |
| | | } |
| | | catch (System.Exception ex) |
| | | { |
| | | throw ex; |
| | | } |
| | | } |
| | | |
| | | private static void SetTaskTypeStateAndInOutFlagForMainTask(AddTransferTaskEnum flag, ref Task_Main mainTask) |
| | | { |
| | | var _InOutFlag = default(MainInOutFlagEnum); |
| | | var _taskType = default(MainTaskTypeEnum); |
| | | var _taskState = default(MainTaskStatusEnum); |
| | | switch (flag) |
| | | { |
| | | case AddTransferTaskEnum.ç«ä½åºå°1014ä½ç½®: |
| | | _taskType = MainTaskTypeEnum.èªå¨åºåº; |
| | | _taskState = MainTaskStatusEnum.åºåºä¸; |
| | | _InOutFlag = MainInOutFlagEnum.åºåº; |
| | | break; |
| | | case AddTransferTaskEnum.ä½ç½®1009å°ä½ç½®1011: |
| | | case AddTransferTaskEnum.ä½ç½®1011转移å°1014ä½ç½®: |
| | | case AddTransferTaskEnum.ä½ç½®1014å°1020: |
| | | _taskType = MainTaskTypeEnum.空æè½¬è¿; |
| | | _taskState = MainTaskStatusEnum.å¾
转è¿; |
| | | _InOutFlag = MainInOutFlagEnum.转è¿; |
| | | break; |
| | | case AddTransferTaskEnum.ä½ç½®1011转移å°ç«ä½åºä¸: |
| | | _taskType = MainTaskTypeEnum.èªå¨å
¥åº; |
| | | _taskState = MainTaskStatusEnum.å
¥åºä¸; |
| | | _InOutFlag = MainInOutFlagEnum.å
¥åº; |
| | | break; |
| | | default: |
| | | throw new Exception("䏿¯æçç±»å"); |
| | | } |
| | | mainTask.TaskType = Convert.ToInt32(_taskType); |
| | | mainTask.TaskTypeName = _taskType.ToString(); |
| | | mainTask.TaskState = Convert.ToInt32(_taskState); |
| | | mainTask.TaskStateName = _taskState.ToString(); |
| | | |
| | | mainTask.InOutFlag = (int)_InOutFlag; |
| | | mainTask.InOutFlagName = _InOutFlag.ToString(); |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// æ¯å¦å
许ç»1014åéç®æ ç¹æ¯1014çä»»å¡ |
| | | /// </summary> |
| | | /// <param name="context"></param> |
| | |
| | | |
| | | public static FunRetEntity DoHandler(DbModel context, V_AllStore store, EDevice rgvStationCode) |
| | | { |
| | | try |
| | | { |
| | | SysUser user = new SysUser() |
| | | { |
| | | ID = 0, |
| | | Name = SysGloble.WCSSystem |
| | | }; |
| | | if (rgvStationCode == EDevice.空æç¼å1011) |
| | | { |
| | | //夿1014æ¯å¦æç©ºä½ |
| | | var queryRgvStationCode = ((int)EDevice.æçæºå
¥å£1014).ToString(); |
| | | V_AllStore my1014Store = null; |
| | | var isAllow = MyExtendHelper.IsAllowSendTaskToPlace1014(context, queryRgvStationCode, ref my1014Store); |
| | | if (isAllow) |
| | | { |
| | | return AddTransferTask(AddTransferTaskEnum.ä½ç½®1011转移å°1014ä½ç½®, rgvStationCode, user, store); |
| | | } |
| | | else |
| | | { |
| | | //寻æ¾ç«ä½åºæ¯å¦æåºå |
| | | return AddTransferTask(AddTransferTaskEnum.ä½ç½®1011转移å°ç«ä½åºä¸, rgvStationCode, user, store); |
| | | } |
| | | //*/ |
| | | //var isGD_HasCatogryForRgvStattion = IsGD_HasCatogryForRgvStattion(queryRgvStationCode); |
| | | //var store_1014_count = context.V_AllStore.Where(x => x.RgvStationCode == queryRgvStationCode).Count(); |
| | | //if (store_1014_count > 0 || isGD_HasCatogryForRgvStattion) |
| | | //{ |
| | | |
| | | //} |
| | | //else |
| | | //{//1014æ è´§ï¼åå»ºä»»å¡ |
| | | // return MainTaskHandler.AddTransferTask(AddTransferTaskEnum.转移å°1014ä½ç½®, rgvStationCode, user, store); |
| | | //} |
| | | } |
| | | else if (rgvStationCode == EDevice.空æç¼å1009) |
| | | { |
| | | return AddTransferTask(AddTransferTaskEnum.ä½ç½®1009å°ä½ç½®1011, rgvStationCode, user, store); |
| | | } |
| | | else if (rgvStationCode == EDevice.æçæºå
¥å£1014) |
| | | {//æçæºå
¥å£1014夿°å»ºä»ç«ä½åºå«æçä»»å¡ |
| | | return AddTransferTask(AddTransferTaskEnum.ç«ä½åºå°1014ä½ç½®, rgvStationCode, user, store); |
| | | } |
| | | else if (rgvStationCode == EDevice.æçæº1020) |
| | | {// ä»1014å°1020 |
| | | return AddTransferTask(AddTransferTaskEnum.ä½ç½®1014å°1020, rgvStationCode, user, store); |
| | | } |
| | | return null; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return FunRetEntity.Fail("æ°å¢ç©ºæç转è¿ä»»å¡å¼å¸¸:" + ex.Message); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /// <summary> |