示例#1
0
        public ActivityInfo(string name, string abbrv, int basePriority, int exhaustionLevel, ActivityFlags flags = ActivityFlags.None, int maxD = 1, int minD = 1, int duration = 1, int maxConcurrent = 1) : base(ID_COUNTER, abbrv)
        {
            MinDorms      = minD;
            MaxDorms      = maxD;
            MaxConcurrent = maxConcurrent;
            Name          = name;
            //Zone = zone;
            Duration        = duration;
            Priority        = basePriority;
            ExhaustionLevel = exhaustionLevel;
            Flags           = flags;
            ++ID_COUNTER;
            IncompatibleActivities = new SortedSet <int>();

            if (!Flags.HasFlag(ActivityFlags.Manual))
            {
                if (Flags.HasFlag(ActivityFlags.Exclusive))
                {
                    ExclusiveActivityIDs.Add(ID);
                }
                else
                {
                    ActivityIDs.Add(ID);
                }

                if (Flags.HasFlag(ActivityFlags.Repeatable))
                {
                    RepeatableActivities.Add(ID);
                }

                if (Flags.HasFlag(ActivityFlags.MultiDorm))
                {
                    MultiDormActivities.Add(ID);
                    if (Flags.HasFlag(ActivityFlags.Concurrent) && abbrv == "GB")
                    {
                        Flags |= ActivityFlags.PriorityExclusive;
                    }
                }
            }

            if (Flags.HasFlag(ActivityFlags.Exhausting))
            {
                HighFatigueActivities.Add(ID);
            }
            else if (Flags.HasFlag(ActivityFlags.Relaxing))
            {
                LowFatigueActivities.Add(ID);
            }
        }
        public static IEnumerable <BPMaterial> GetMaterialsExtra(BlueprintID bpID, ActivityIDs activity = ActivityIDs.Manufacturing)
        {
            using (var cnn = new SQLiteConnection(DefaultDatabase.dbConnection))
            {
                cnn.Open();
                var query   = string.Format(@"
SELECT t.typeName, r.requiredTypeID, r.quantity, r.damagePerJob
FROM ramTypeRequirements AS r
INNER JOIN invTypes AS t ON r.requiredTypeID = t.typeID
INNER JOIN invGroups AS g ON t.groupID = g.groupID
WHERE r.typeID = {0}
 AND r.activityID = {1}
 AND g.categoryID != {2};", bpID, (int)activity, CategoryID.Skill);
                var reader  = DefaultDatabase.RunSQLTableQuery(query, cnn);
                var results = new List <BPMaterial>();
                while (reader.Read())
                {
                    results.Add(new BPMaterial(new MaterialID(reader["requiredTypeID"].ToInt()), reader["quantity"].ToLong(), reader["damagePerJob"].ToDecimal()));
                }
                return(results);
            }
        }
 public static IEnumerable<BPMaterial> GetMaterialsExtra(BlueprintID bpID, ActivityIDs activity = ActivityIDs.Manufacturing)
 {
     using (var cnn = new SQLiteConnection(DefaultDatabase.dbConnection))
     {
         cnn.Open();
         var query = string.Format(@"
     SELECT t.typeName, r.requiredTypeID, r.quantity, r.damagePerJob
     FROM ramTypeRequirements AS r
     INNER JOIN invTypes AS t ON r.requiredTypeID = t.typeID
     INNER JOIN invGroups AS g ON t.groupID = g.groupID
     WHERE r.typeID = {0}
      AND r.activityID = {1}
      AND g.categoryID != {2};", bpID, (int)activity, CategoryID.Skill);
         var reader = DefaultDatabase.RunSQLTableQuery(query, cnn);
         var results = new List<BPMaterial>();
         while (reader.Read())
         {
             results.Add(new BPMaterial(new MaterialID(reader["requiredTypeID"].ToInt()), reader["quantity"].ToLong(), reader["damagePerJob"].ToDecimal()));
         }
         return results;
     }
 }
        private void PersonalSubmit(out string msg)
        {
            msg = string.Empty;
            try
            {
                BLL.Loger.Log4Net.Info("【个人工单提交Step1——数据验证】");
                #region 验证

                validate(out msg);

                if (msg != string.Empty)
                {
                    msg = "{'result':'false','msg':'" + msg + "'}";
                    return;
                }

                #endregion

                #region 插入工单表

                Entities.WorkOrderInfo model_WorkOrderInfo = bindWorkOrderInfo(out msg);

                if (msg != string.Empty)
                {
                    return;
                }

                //个人类型增加工单,状态默认-已完成
                model_WorkOrderInfo.WorkOrderStatus = (int)Entities.WorkOrderStatus.Completed;

                model_WorkOrderInfo.WorkCategory = 1;//工单类型-个人;add lxw 13.9.11
                BLL.Loger.Log4Net.Info("【个人工单提交Step2——添加工单开始】");
                model_WorkOrderInfo.OrderID = BLL.WorkOrderInfo.Instance.Insert(model_WorkOrderInfo);
                BLL.Loger.Log4Net.Info("【个人工单提交Step2——添加工单结束】OrderID=" + model_WorkOrderInfo.OrderID);
                //回写IM库
                BLL.Loger.Log4Net.Info("【个人工单提交Step3——工单数据回写IM开始】");
                UpdateCCWorkOrder2IM(model_WorkOrderInfo);
                BLL.Loger.Log4Net.Info("【个人工单提交Step3——工单数据回写IM结束】");
                #endregion

                //如果有推荐活动,插入WorkOrderActivity表,add lxw 13.1.14
                #region 插入推荐活动

                if (ActivityIDs != "")
                {
                    string[] aIDs = ActivityIDs.Split(',');
                    for (int i = 0; i < aIDs.Length; i++)
                    {
                        Entities.WorkOrderActivity model_Activity = new Entities.WorkOrderActivity();
                        model_Activity.ActivityGUID = new Guid(aIDs[i]);
                        model_Activity.OrderID      = model_WorkOrderInfo.OrderID;
                        model_Activity.CreateTime   = operTime;
                        model_Activity.CreateUserID = operUserID;
                        BLL.Loger.Log4Net.Info("【个人工单提交Step4——WorkOrderActivity数据入库开始】");
                        BLL.WorkOrderActivity.Instance.Insert(model_Activity);
                        BLL.Loger.Log4Net.Info("【个人工单提交Step4——WorkOrderActivity数据入库结束】");
                    }
                }

                #endregion

                #region 插入工单回复表

                Entities.WorkOrderRevert model_Revert = bindWorkOrderRevert(out msg);

                if (msg != string.Empty)
                {
                    return;
                }

                model_Revert.OrderID            = model_WorkOrderInfo.OrderID;
                model_Revert.ReceiverDepartName = BitAuto.YanFa.SysRightManager.Common.UserInfo.Instance.GetDistrictNameByUserID(operUserID);
                model_Revert.WorkOrderStatus    = "已完成";
                if (CallID != string.Empty)
                {
                    model_Revert.CallID = Int64.Parse(CallID);
                }
                BLL.Loger.Log4Net.Info("【个人工单提交Step5——WorkOrderRevert数据入库开始】");
                BLL.WorkOrderRevert.Instance.Insert(model_Revert);
                BLL.Loger.Log4Net.Info("【个人工单提交Step5——WorkOrderRevert数据入库结束】");
                #endregion

                #region 插入标签

                if (TagIDs != string.Empty)
                {
                    string[] array_TagIDs = TagIDs.Split(',');
                    for (int k = 0; k < array_TagIDs.Length; k++)
                    {
                        Entities.WorkOrderTagMapping model_Mapping = new Entities.WorkOrderTagMapping();
                        model_Mapping.OrderID      = model_WorkOrderInfo.OrderID;
                        model_Mapping.TagID        = int.Parse(array_TagIDs[k]);
                        model_Mapping.Status       = 0;
                        model_Mapping.CreateTime   = model_Mapping.ModifyTime = operTime;
                        model_Mapping.CreateUserID = model_Mapping.ModifyUserID = operUserID;
                        BLL.Loger.Log4Net.Info("【个人工单提交Step6——插入标签数据入库开始】");
                        BLL.WorkOrderTagMapping.Instance.Insert(model_Mapping);
                        BLL.Loger.Log4Net.Info("【个人工单提交Step6——插入标签数据入库结束】");
                    }
                }

                #endregion
                msg = "{'result':'true','OrderID':'" + model_WorkOrderInfo.OrderID + "'}";
            }
            catch (Exception ex)
            {
                BLL.Loger.Log4Net.Error("【个人工单提交】出现方法出现问题:" + ex.Message);
            }
        }