Exemplo n.º 1
0
        public override bool Excute()
        {
            bool result = true;

            try
            {
                //删除已存在的文档
                if (System.IO.File.Exists(Entry.ExportPath))
                {
                    System.IO.File.Delete(Entry.ExportPath);
                }
                //拷贝模板word
                System.IO.File.Copy(Entry.GetTemplateFilePath(), Entry.ExportPath, true);
                //开启编辑
                mHelper = new WorkHelper(Entry.ExportPath);
                //执行自定义写入方法
                onWriteCustomContext(Entry);
                //保存
                mHelper.Save();
            }
            catch (Exception ex)
            {
                ErrorMessage = ex.Message;
                result       = false;
            }
            return(result);
        }
Exemplo n.º 2
0
        public object PostPerson([FromBody] IEnumerable <PersonDetail> details)
        {
            if (details == null || !details.Any())
            {
                return(Result.GenError <Result>(Error.ParamError));
            }
            if (details.Any(x => x.AccountId == 0))
            {
                return(Result.GenError <Result>(Error.PersonNotEmpty));
            }
            if (details.GroupBy(x => x.AccountId).Any(y => y.Count() > 1))
            {
                return(Result.GenError <Result>(Error.PersonDuplicate));
            }

            var wId   = details.FirstOrDefault()?.WorkshopId ?? 0;
            var sames = details.Select(x => x.AccountId);

            if (WorkHelper.GetHaveSame(wId, sames))
            {
                return(Result.GenError <Result>(Error.PersonIsExist));
            }

            var userId         = Request.GetIdentityInformation();
            var markedDateTime = DateTime.Now;

            foreach (var detail in details)
            {
                detail.CreateUserId   = userId;
                detail.MarkedDateTime = markedDateTime;
                detail.Remark         = detail.Remark ?? "";
            }
            WorkHelper.Instance.Add(details);
            return(Result.GenError <Result>(Error.Success));
        }
Exemplo n.º 3
0
        protected override void Execute(NativeActivityContext context)
        {
            const string isnullerrorformat = "Свойство '{0}' должно быть задано.";

            _context = context;

            var workerId = WorkerId.Get(context);

            if (!workerId.HasValue)
            {
                throw new DeveloperException(isnullerrorformat, WorkingIdPropertyName);
            }

            string filter             = null;
            var    excludedOperations = ExcludedOperations.Get(context);

            if (!string.IsNullOrEmpty(excludedOperations))
            {
                var ops = excludedOperations.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                if (ops.Length > 0)
                {
                    filter = string.Format(" and w.operationcode_r not in ({0})",
                                           string.Join(",", ops.Select(p => string.Format("'{0}'", p))));
                }
            }

            var workhelper = new WorkHelper();
            var result     = workhelper.ClosingWorking(workerId: workerId.Value, filter: filter, dialogTitle: "Подтверждение",
                                                       workername: WorkerFullName.Get(context),
                                                       dialogMessageHandler: ActivityHelpers.ClosingWorkingDialogMessage,
                                                       dialogWorkerDateTillHandler: ShowDialogWorkerDateTill, fontSize: FontSize.Get(context));

            Result.Set(context, result);
        }
Exemplo n.º 4
0
    private void DrawSelection()
    {
        GUI.skin = ResourceManager.SelectBoxSkin;
        Rect selectBox = WorkHelper.CalculateSelectionBox(boundsSelection, playingArea);

        //Draw the selection box around the currently selected object, within the bounds of the playing area
        GUI.BeginGroup(playingArea);
        DrawSelectionBox(selectBox);
        GUI.EndGroup();
    }
Exemplo n.º 5
0
        public object PostWork([FromBody] IEnumerable <WorkDetail> details)
        {
            if (details == null || !details.Any())
            {
                return(Result.GenError <Result>(Error.ParamError));
            }
            if (details.Any(x => x.EstimatedTime == default(DateTime)))
            {
                return(Result.GenError <Result>(Error.WorkEstimatedTimeError));
            }
            if (details.Any(x => x.EstimatedTime < DateTime.Today))
            {
                return(Result.GenError <Result>(Error.WorkEstimatedTimeMin));
            }
            if (details.Any(x => x.Target <= 0))
            {
                return(Result.GenError <Result>(Error.WorkTargetError));
            }
            var opQIds             = details.Select(x => x.OProductionId).Distinct();
            var oldWorkProductions = OrderProductionHelper.GetDetails(null, null, opQIds);

            if (oldWorkProductions.Count() != opQIds.Count())
            {
                return(Result.GenError <Result>(Error.OrderProductionNotExist));
            }
            var userId         = Request.GetIdentityInformation();
            var markedDateTime = DateTime.Now;

            foreach (var detail in details)
            {
                detail.CreateUserId   = userId;
                detail.MarkedDateTime = markedDateTime;
                detail.CreateTime     = markedDateTime;
                detail.Remark         = detail.Remark ?? "";
            }

            var numbers = WorkHelper.GetNumbers(userId, markedDateTime, details.Count(), "DD");

            if (numbers.Count() != details.Count())
            {
                return(Result.GenError <Result>(Error.OrderIdFail));
            }
            details = details.Select((x, i) =>
            {
                x.WoNumber = numbers.ElementAt(i).WoNumber;
                return(x);
            });
            WorkHelper.Instance.Add(details);
            var result = new DataResult();

            result.datas.AddRange(numbers.Select(x => x.WoNumber));
            return(result);
        }
Exemplo n.º 6
0
        //Проверяем открытые работы для данного workerId
        private bool ValidateWorkingByWorkerId(decimal?workerId)
        {
            if (!workerId.HasValue)
            {
                return(false);
            }

            var workhelper = new WorkHelper();
            var result     = workhelper.ClosingWorking(workerId: workerId.Value, filter: null, dialogTitle: "Подтверждение",
                                                       workername: null, dialogMessageHandler: ActivityHelpers.ClosingWorkingDialogMessage, dialogWorkerDateTillHandler: null, fontSize: FontSize.Get(_context));

            return(result);
        }
Exemplo n.º 7
0
        public object PutPerson([FromBody] IEnumerable <PersonDetail> details)
        {
            if (details == null || !details.Any())
            {
                return(Result.GenError <Result>(Error.ParamError));
            }
            if (details.Any(x => x.Id == 0))
            {
                return(Result.GenError <Result>(Error.PersonNotExist));
            }
            if (details.Any(x => x.AccountId == 0))
            {
                var ids = details.Select(x => x.Id);
                var cnt = WorkHelper.Instance.GetCountByIds(ids);
                if (cnt != details.Count())
                {
                    return(Result.GenError <Result>(Error.PersonNotExist));
                }
                WorkHelper.Enable(details);
            }
            else
            {
                //if (details.GroupBy(x => x.AccountId).Any(y => y.Count() > 1))
                //{
                //    return Result.GenError<Result>(Error.PersonDuplicate);
                //}

                //var wId = details.FirstOrDefault()?.WorkshopId ?? 0;
                //var sames = details.Select(x => x.AccountId);
                var ids = details.Select(x => x.Id);
                //if (PersonHelper.GetHaveSame(wId, sames, ids))
                //{
                //    return Result.GenError<Result>(Error.PersonIsExist);
                //}

                var cnt = WorkHelper.Instance.GetCountByIds(ids);
                if (cnt != details.Count())
                {
                    return(Result.GenError <Result>(Error.PersonNotExist));
                }

                var markedDateTime = DateTime.Now;
                foreach (var detail in details)
                {
                    detail.MarkedDateTime = markedDateTime;
                    detail.Remark         = detail.Remark ?? "";
                }
                WorkHelper.Instance.Update(details);
            }
            return(Result.GenError <Result>(Error.Success));
        }
Exemplo n.º 8
0
        public DataResult GetWork([FromQuery] int wId, int qId, int oId, bool menu)
        {
            var result = new DataResult();

            result.datas.AddRange(menu
                ? WorkHelper.GetMenu(wId, qId, oId)
                : WorkHelper.GetDetail(wId, qId, oId));
            if (qId != 0 && !result.datas.Any())
            {
                result.errno = Error.WorkNotExist;
                return(result);
            }
            return(result);
        }
Exemplo n.º 9
0
        public void Register()
        {
            #region 用户
            AddAccount += (o, args) =>
            {
                try
                {
                    var time     = args.Item1;
                    var accounts = args.Item2;
                    var plats    = accounts.Where(x => x.Platform && x.Belongs.Any());
                    if (plats.Any())
                    {
                        WorkHelper.Instance.Add(plats.SelectMany(x => x.Belongs.Select(y => new Person
                        {
                            MarkedDateTime = time,
                            WorkshopId     = y,
                            AccountId      = x.Id,
                        })));
                    }
                }
                catch (Exception e)
                {
                    Log.Error(e);
                }
            };

            UpdateAccount += (o, args) =>
            {
                try
                {
                    var time        = args.Item1;
                    var newAccounts = args.Item2;
                    var oldAccounts = args.Item3;
                    //生产平台
                    var oldAccountDic = oldAccounts.ToDictionary(x => x.Id);

                    var plats = newAccounts.Where(x => oldAccountDic[x.Id].Platform != x.Platform || oldAccountDic[x.Id].Belong != x.Belong);
                    if (plats.Any())
                    {
                        var wIds = plats.SelectMany(x => x.Belongs).Distinct();
                        var aIds = plats.Select(x => x.Id).Distinct();
                        if (plats.Any() && plats.Any())
                        {
                            var oldWIds = plats.SelectMany(x => oldAccountDic[x.Id].Belongs).Distinct();
                            var pers    = WorkHelper.GetDetailsNoM(oldWIds, aIds);
                            var add     = new List <Person>();
                            var delR    = new List <Person>();
                            var del     = new List <int>();

                            var platTmps = plats.Where(x => x.Platform).SelectMany(x => x.Belongs
                                                                                   .Select(y => new Person
                            {
                                MarkedDateTime = time,
                                WorkshopId     = y,
                                AccountId      = x.Id,
                            }));
                            add.AddRange(platTmps.Where(x => !pers.Any(y => y.WorkshopId == x.WorkshopId && y.AccountId == x.AccountId)));
                            delR.AddRange(pers.Where(x => platTmps.Any(y => y.WorkshopId == x.WorkshopId && y.AccountId == x.AccountId) && x.MarkedDelete).Select(x =>
                            {
                                x.MarkedDateTime = time;
                                x.MarkedDelete   = false;
                                return(x);
                            }));
                            del.AddRange(pers.Where(x => !platTmps.Any(y => y.WorkshopId == x.WorkshopId && y.AccountId == x.AccountId)).Select(x => x.Id));
                            if (add.Any())
                            {
                                WorkHelper.Instance.Add(add);
                            }
                            if (delR.Any())
                            {
                                WorkHelper.DeleteRecover(delR);
                            }
                            if (del.Any())
                            {
                                WorkHelper.Instance.Delete(del);
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    Log.Error(e);
                }
            };

            DeleteAccount += (o, accountIds) =>
            {
                try
                {
                    var time     = DateTime.Now;
                    var accounts = AccountInfoHelper.Instance.GetByIdsNoM <AccountInfo>(accountIds);
                    var plats    = accounts.Where(x => x.Platform && x.Belongs.Any());
                    if (plats.Any())
                    {
                        WorkHelper.Instance.DeleteFromParent(plats.Select(x => x.Id));
                    }
                }
                catch (Exception e)
                {
                    Log.Error(e);
                }
            };
            #endregion

            #region 流程卡
            SmartFlowCardCreated += (o, flowCards) =>
            {
            };

            SmartFlowCardProcessCreated += (o, param) =>
            {
                var flowCards = param.Item1;
                if (flowCards == null || !flowCards.Any())
                {
                    return;
                }

                var smartFlowCardProcesses = param.Item2;
                if (smartFlowCardProcesses == null || !smartFlowCardProcesses.Any())
                {
                    return;
                }

                var createUserId           = smartFlowCardProcesses.First().CreateUserId;
                var markedDateTime         = smartFlowCardProcesses.First().MarkedDateTime;
                var taskOrderIds           = flowCards.GroupBy(x => x.TaskOrderId).Select(y => y.Key);
                var processCodeCategoryIds = flowCards.GroupBy(x => x.ProcessCodeId).Select(y => y.Key);
                var processes =
                    SmartProcessCodeCategoryProcessHelper.GetDetailByCategoryId(processCodeCategoryIds);
                var existTaskOrderLines = ServerConfig.ApiDb
                                          .Query <SmartLineTaskOrder>(
                    "SELECT TaskOrderId, ProcessCodeCategoryId FROM `t_line_task_order` " +
                    "WHERE MarkedDelete = 0 AND TaskOrderId IN @taskOrderIds AND ProcessCodeCategoryId IN @processCodeCategoryIds GROUP BY TaskOrderId, ProcessCodeCategoryId;",
                    new { taskOrderIds, processCodeCategoryIds });

                var taskOrderLines = new List <SmartLineTaskOrder>();
                foreach (var taskOrderId in taskOrderIds)
                {
                    var ids = flowCards.Where(x => x.TaskOrderId == taskOrderId).GroupBy(y => y.ProcessCodeId).Select(z => z.Key);
                    foreach (var id in ids)
                    {
                        if (existTaskOrderLines.Any(x => x.TaskOrderId == taskOrderId && x.ProcessCodeCategoryId == id))
                        {
                            continue;
                        }
                        var ps = processes.Where(x => x.ProcessCodeCategoryId == id);
                        if (!ps.Any())
                        {
                            continue;
                        }
                        taskOrderLines.AddRange(ps.Select(x => new SmartLineTaskOrder
                        {
                            CreateUserId          = createUserId,
                            MarkedDateTime        = markedDateTime,
                            TaskOrderId           = taskOrderId,
                            ProcessCodeCategoryId = id,
                            ProcessId             = x.Id,
                        }));
                    }
                }


                var taskOrders          = SmartTaskOrderHelper.Instance.GetByIds <SmartTaskOrder>(taskOrderIds);
                var workOrderIds        = taskOrders.GroupBy(x => x.WorkOrderId).Select(y => y.Key);
                var existWorkOrderLines = ServerConfig.ApiDb
                                          .Query <SmartLineWorkOrder>(
                    "SELECT WorkOrderId, ProcessCodeCategoryId FROM `t_line_work_order` " +
                    "WHERE MarkedDelete = 0 AND WorkOrderId IN @workOrderIds AND ProcessCodeCategoryId IN @processCodeCategoryIds GROUP BY WorkOrderId, ProcessCodeCategoryId;",
                    new { workOrderIds, processCodeCategoryIds });
                var workOrderLines = new List <SmartLineWorkOrder>();

                foreach (var workOrderId in workOrderIds)
                {
                    var tasks = taskOrders.Where(x => x.WorkOrderId == workOrderId);
                    var ids   = flowCards.Where(x => tasks.Any(a => a.Id == x.TaskOrderId)).GroupBy(y => y.ProcessCodeId).Select(z => z.Key);
                    foreach (var id in ids)
                    {
                        if (existWorkOrderLines.Any(x => x.WorkOrderId == workOrderId && x.ProcessCodeCategoryId == id))
                        {
                            continue;
                        }
                        var ps = processes.Where(x => x.ProcessCodeCategoryId == id);
                        if (!ps.Any())
                        {
                            continue;
                        }

                        workOrderLines.AddRange(ps.Select(x => new SmartLineWorkOrder
                        {
                            CreateUserId          = createUserId,
                            MarkedDateTime        = markedDateTime,
                            WorkOrderId           = workOrderId,
                            ProcessCodeCategoryId = id,
                            ProcessId             = x.Id,
                        }));
                    }
                }

                SmartLineTaskOrderHelper.Instance.Add <SmartLineTaskOrder>(taskOrderLines);
                SmartLineWorkOrderHelper.Instance.Add <SmartLineWorkOrder>(workOrderLines);
            };
            #endregion


            #region 物料
            #endregion
        }
Exemplo n.º 10
0
        private async Task <bool> GetWorkAsync(decimal workerId)
        {
            var workOperation = BillOperationCode.OP_INPUT_REG.ToString();

            var workhelper = new WorkHelper();
            Func <DataRow[], string, string> dialogMessageHandler = (rows, workername) =>
            {
                return(string.Format(StringResources.YouHaveWorkingsMessageFormat, Environment.NewLine,
                                     string.Join(Environment.NewLine, rows.Select(p => string.Format("'{0}' ('{1}').", p["operationname"], p["workid"])))));
            };

            var result = workhelper.ClosingWorking(workerId: workerId, filter: null, dialogTitle: StringResources.Confirmation, workername: null, dialogMessageHandler: dialogMessageHandler);

            if (!result)
            {
                return(false);
            }

            //Создаем работу
            List <Work> workList;

            using (var mgr = IoC.Instance.Resolve <IBaseManager <Work> >())
            {
                var filter =
                    string.Format(
                        "operationcode_r = '{1}' and workid in (select w2e.workid_r from wmswork2entity w2e where w2e.work2entityentity = 'CARGOIWB' " +
                        "and w2e.work2entitykey in (select to_char(min(i2c.cargoiwbid_r)) from wmsiwb2cargo i2c " +
                        "left join wmsiwbpos ip on i2c.iwbid_r = ip.iwbid_r " +
                        "where ip.iwbposid ={0}))", _posID, workOperation);

                workList = mgr.GetFiltered(filter, GetModeEnum.Partial).ToList();
            }
            if (workList.Any())
            {
                using (var mgr = IoC.Instance.Resolve <IBaseManager <Working> >())
                {
                    var working = new Working
                    {
                        WORKID_R    = workList.First().GetKey <decimal>(),
                        WORKERID_R  = workerId,
                        WORKINGFROM = BPH.GetSystemDate()
                    };
                    mgr.Insert(ref working);
                }
            }
            else
            {
                List <CargoIWB> cargoIWBList;
                using (var mgr = IoC.Instance.Resolve <IBaseManager <CargoIWB> >())
                {
                    cargoIWBList = mgr.GetFiltered(string.Format("cargoiwbid in (select min(i2c.cargoiwbid_r) from wmsiwb2cargo i2c join wmsiwbpos ip on ip.iwbid_r = i2c.iwbid_r where ip.iwbposid = {0} )", _posID), GetModeEnum.Partial).ToList();
                }
                if (cargoIWBList.Any())
                {
                    var  mgrBpProcessManager = IoC.Instance.Resolve <IBPProcessManager>();
                    Work mywork;

                    mgrBpProcessManager.StartWorking("CARGOIWB", cargoIWBList.First().GetKey().ToString(), workOperation, workerId, cargoIWBList.First().MandantID, null, null, out mywork);
                }
            }

            Workings = RefreshWorking();
            return(true);
        }
Exemplo n.º 11
0
 public void Put([FromBody] SysInfoDM sysInfoDM)
 {
     var res = DbCommands.PutSysInfo(WorkHelper.DataModelToEFModel(sysInfoDM));
 }
Exemplo n.º 12
0
        private async Task <bool> GetWorkAsync(decimal workerId)
        {
            _warningMessage = null;
            if (!HasPl())
            {
                return(false);
            }

            return(await Task.Factory.StartNew(() =>
            {
                var workhelper = new WorkHelper();
                Func <DataRow[], string, string> dialogMessageHandler = (rows, workername) =>
                {
                    return string.Format(StringResources.YouHaveWorkingsMessageFormat, Environment.NewLine,
                                         string.Join(Environment.NewLine, rows.Select(p => string.Format("'{0}' ('{1}').", p["operationname"], p["workid"]))));
                };

                var result = workhelper.ClosingWorking(workerId: workerId, filter: null, dialogTitle: StringResources.Confirmation, workername: null, dialogMessageHandler: dialogMessageHandler);
                if (!result)
                {
                    return false;
                }

                //Работа
                var workOperation = BillOperationCode.OP_PICK_END_MAN_REG.ToString();
                Work mywork;
                IBPProcessManager mgrBpProcessManager = null;
                IBaseManager <Work> mgrWork = null;

                try
                {
                    //Получим манданта
                    var skuid = Source.First().Get <decimal>("SKUID_R");
                    SKU sku;
                    using (var mgrsku = IoC.Instance.Resolve <IBaseManager <SKU> >())
                    {
                        sku = mgrsku.Get(skuid, GetModeEnum.Partial);
                    }
                    if (sku == null)
                    {
                        throw new DeveloperException("Can't find SKU.");
                    }

                    var mandantid = sku.Get <decimal>("MANDANTID");

                    mgrBpProcessManager = IoC.Instance.Resolve <IBPProcessManager>();
                    var splid = GetPlId().ToString(CultureInfo.InvariantCulture);
                    mgrBpProcessManager.StartWorking(PlEntity, splid, workOperation, workerId, mandantid, null, null, out mywork);

                    mgrWork = IoC.Instance.Resolve <IBaseManager <Work> >();
                    if (mywork == null)
                    {
                        mywork = mgrBpProcessManager.GetWorkByOperation(PlEntity, splid, workOperation);
                        if (mywork == null)
                        {
                            throw new DeveloperException("Work is not created.");
                        }
                    }
                    else
                    {
                        if (mywork.WORKINGL == null)
                        {
                            mywork = mgrWork.Get(mywork.GetKey <decimal>());
                        }
                    }

                    _openWorkings = null;
                    if (mywork.WORKINGL != null)
                    {
                        _openWorkings = mywork.WORKINGL.Where(p => p.WORKERID_R == workerId && !p.WORKINGTILL.HasValue).ToArray();
                    }

                    if (_openWorkings == null || _openWorkings.Length == 0)
                    {
                        throw new DeveloperException("Working is not created.");
                    }

                    //Проверяем группу работ
                    var workOp = GetWorksByOperations();
                    if (workOp != null && workOp.WORKGROUPID_R.HasValue &&
                        mywork.WORKGROUPID_R != workOp.WORKGROUPID_R)
                    {
                        mywork.WORKGROUPID_R = workOp.WORKGROUPID_R;
                        mgrWork.Update(mywork);
                    }

                    if (!mywork.WORKGROUPID_R.HasValue)
                    {
                        Mandant mandant;
                        using (var mgrmandant = IoC.Instance.Resolve <IBaseManager <Mandant> >())
                        {
                            mandant = mgrmandant.Get(mandantid, GetModeEnum.Partial);
                        }

                        _warningMessage = string.Format(StringResources.UndefinedWorkGroupForOperation,
                                                        workOperation,
                                                        (mandant == null ? mandantid.ToString(CultureInfo.InvariantCulture) : mandant.MandantCode));

                        //throw new DeveloperException(DeveloperExceptionResources.WorkGropUndefined);
                    }
                }
                finally
                {
                    if (mgrBpProcessManager != null)
                    {
                        mgrBpProcessManager.Dispose();
                    }
                    if (mgrWork != null)
                    {
                        mgrWork.Dispose();
                    }
                }

                return true;
            }));
        }