예제 #1
0
        public void Run(Context ctx, Schedule schedule)
        {
            ctx.UserId   = 101901;
            ctx.UserName = "******";

            string strDateSql = string.Format(@"/*dialect*/select top 1 fdate from altablein where status=3 and isPur =0 and ferrorstatus=0 order by fdate");
            DynamicObjectCollection dateData = DBUtils.ExecuteDynamicObject(ctx, strDateSql, null);

            if (dateData.Count() > 0)
            {
                //添加按照车间分组取不同的车间
                string strproducesql = string.Format(@"/*dialect*/select   distinct  tbm.FWORKSHOPID  FWORKSHOPID
from  altablein   alin
left join T_SAL_ORDER tso on alin.salenumber=tso.FBILLNO 
left join T_SAL_ORDERENTRY tsoe on tso.fid=tsoe.FID and alin.Linenumber=tsoe.FSEQ
left join t_BD_MaterialBase tbmb on  tbmb.FMATERIALID=tsoe.FMATERIALID
left join  t_BD_MaterialProduce tbm on   tbm.FMATERIALID=tbmb.FMATERIALID
where    status=3  and tbm.FWORKSHOPID>0   and tbm.FWORKSHOPID>0    and isPur =0 and ferrorstatus=0  and  alin.fdate='{0}'", Convert.ToDateTime(dateData[0]["fdate"]));
                DynamicObjectCollection workshopDataObject = DBUtils.ExecuteDynamicObject(ctx, strproducesql, null);
                foreach (DynamicObject itemworkshopDataObject in workshopDataObject)
                {
                    long workshopid = Convert.ToInt64(itemworkshopDataObject["FWORKSHOPID"]);//取车间ID



                    if (_3DServiceHelper.isTransfer(ctx, ObjectEnum.AlInStock, UpdateAltableinEnum.BeforeSave))
                    {
                        //调用新的根据生产车间ID
                        transferData = _3DServiceHelper.getALInstockSaveData(ctx, UpdateAltableinEnum.BeforeSave, ObjectEnum.AlInStock, workshopid); //本次执行计划处理的数据
                        long[] bb = transferData.SalOrder2DirectTrans.Select(s => s.altID).ToArray();                                                //本次执行计划要处理的数据的主键ID
                                                                                                                                                     //根据主键对数据标识进行更新,同时设置更新时间戳
                        _3DServiceHelper.updateAltableStatus(ctx, UpdateAltableinEnum.AfterGetDate, ObjectEnum.AlInStock, bb);

                        List <DynamicObject>             modelList         = new List <DynamicObject>();
                        Action <IDynamicFormViewService> fillBillPropertys = new Action <IDynamicFormViewService>(fillPropertys);
                        DynamicObject billModel = _3DServiceHelper.CreateBillMode(ctx, "SP_InStock", fillBillPropertys);
                        modelList.Add(billModel);

                        DynamicObject[]  model      = modelList.Select(p => p).ToArray() as DynamicObject[];
                        IOperationResult saveResult = _3DServiceHelper.BatchSave(ctx, "SP_InStock", model);
                        String           id         = Convert.ToString(model[0]["id"]);
                        //对结果进行处理
                        //数据包整理完成后,将实际的分录主键反写回altablein表,便于未来反写其他状态所用
                        List <UpdateAltableinEntity> updateAltList = _3DServiceHelper.InstallUpdateAlPackage(ctx, UpdateAltableinEnum.AfterCreateModel, ObjectEnum.AlInStock, model, null, null, null, null, 0, "", "Entity");
                        if (updateAltList != null)
                        {
                            _3DServiceHelper.updateAltableStatus(ctx, UpdateAltableinEnum.AfterCreateModel, ObjectEnum.AlInStock, null, updateAltList);
                        }
                        //处理保存结果,成功、失败
                        if (saveResult.SuccessDataEnity != null)
                        {
                            object[] ids = (from c in saveResult.SuccessDataEnity
                                            select c[0]).ToArray();//保存成功的结果
                            IOperationResult submitResult = ids.Count() > 0 ? _3DServiceHelper.Submit(ctx, "SP_InStock", ids) : null;
                            if (submitResult.SuccessDataEnity != null)
                            {
                                List <UpdateAltableinEntity> exceptPrtList  = new List <UpdateAltableinEntity>();
                                List <UpdateAltableinEntity> successPrtList = new List <UpdateAltableinEntity>();
                                foreach (DynamicObject item in submitResult.SuccessDataEnity)
                                {
                                    object[]         ips         = new object[] { item[0] };
                                    IOperationResult auditResult = _3DServiceHelper.Audit(ctx, "SP_InStock", ips);
                                    if (auditResult.IsSuccess)
                                    {
                                        successPrtList = _3DServiceHelper.InstallUpdateAlPackage(ctx, UpdateAltableinEnum.AuditSucess, ObjectEnum.AlInStock, null, null, successPrtList, auditResult, null);
                                        //更新altablein表审核成功信息
                                        _3DServiceHelper.updateAltableStatus(ctx, UpdateAltableinEnum.AuditSucess, ObjectEnum.AlInStock, null, successPrtList);
                                    }
                                    else if (!auditResult.InteractionContext.SimpleMessage.Equals("") && auditResult.InteractionContext.SimpleMessage != null)
                                    {
                                        exceptPrtList = _3DServiceHelper.InstallUpdateAlPackage(ctx, UpdateAltableinEnum.AuditError, ObjectEnum.AlInStock, null, null, exceptPrtList, auditResult, item);
                                        //更新altablein表 审核错误信息
                                        _3DServiceHelper.updateAltableStatus(ctx, UpdateAltableinEnum.AuditError, ObjectEnum.AlInStock, null, exceptPrtList);

                                        //插入审核错误信息进入错误信息表
                                        _3DServiceHelper.insertAllocationtableTable(ctx, UpdateAltableinEnum.AuditError, ObjectEnum.AlInStock, id);
                                    }
                                }
                            }
                        }
                        if (((List <ValidationErrorInfo>)saveResult.ValidationErrors).Count() > 0)
                        {
                            List <UpdateAltableinEntity> updateVoSavePrtList = _3DServiceHelper.InstallUpdateAlPackage(ctx, UpdateAltableinEnum.SaveError, ObjectEnum.AlInStock, null, saveResult);
                            //更新altablein表状态
                            _3DServiceHelper.updateAltableStatus(ctx, UpdateAltableinEnum.SaveError, ObjectEnum.AlInStock, bb, updateVoSavePrtList);

                            //插入保存错误信息进入错误信息表
                            _3DServiceHelper.insertAllocationtableTable(ctx, UpdateAltableinEnum.SaveError, ObjectEnum.AlInStock, id);
                        }
                    }
                }
            }
        }
예제 #2
0
        public void Run(Context ctx, Schedule schedule)
        {
            ctx.UserId   = 101901;
            ctx.UserName = "******";
            if (_3DServiceHelper.isTransfer(ctx, ObjectEnum.AlPurTransfer, UpdateAltableinEnum.BeforeSave))
            {
                transferData = _3DServiceHelper.getALSaveData(ctx, UpdateAltableinEnum.BeforeSave, ObjectEnum.AlPurTransfer); //本次执行计划处理的数据
                long[] bb = transferData.SalOrder2DirectTrans.Select(s => s.altID).ToArray();                                 //本次执行计划要处理的数据的主键ID
                //根据主键对数据标识进行更新,同时设置更新时间戳
                _3DServiceHelper.updateAltableStatus(ctx, UpdateAltableinEnum.AfterGetDate, ObjectEnum.AlPurTransfer, bb);

                List <DynamicObject>             modelList         = new List <DynamicObject>();
                Action <IDynamicFormViewService> fillBillPropertys = new Action <IDynamicFormViewService>(fillPropertys);
                DynamicObject billModel = _3DServiceHelper.CreateBillMode(ctx, "STK_TransferDirect", fillBillPropertys);
                modelList.Add(billModel);

                DynamicObject[]  model      = modelList.Select(p => p).ToArray() as DynamicObject[];
                IOperationResult saveResult = _3DServiceHelper.BatchSave(ctx, "STK_TransferDirect", model);
                String           id         = Convert.ToString(model[0]["id"]);
                //对结果进行处理
                //数据包整理完成后,将实际的分录主键反写回altablein表,便于未来反写其他状态所用
                List <UpdateAltableinEntity> updateAltList = _3DServiceHelper.InstallUpdateAlPackage(ctx, UpdateAltableinEnum.AfterCreateModel, ObjectEnum.AlPurTransfer, model, null, null, null, null, 0, "", "TransferDirectEntry");
                if (updateAltList != null)
                {
                    _3DServiceHelper.updateAltableStatus(ctx, UpdateAltableinEnum.AfterCreateModel, ObjectEnum.AlPurTransfer, null, updateAltList);
                }
                //处理保存结果,成功、失败
                if (saveResult.SuccessDataEnity != null)
                {
                    object[] ids = (from c in saveResult.SuccessDataEnity
                                    select c[0]).ToArray();//保存成功的结果
                    IOperationResult submitResult = ids.Count() > 0 ? _3DServiceHelper.Submit(ctx, "STK_TransferDirect", ids) : null;
                    if (submitResult.SuccessDataEnity != null)
                    {
                        List <UpdateAltableinEntity> exceptPrtList  = new List <UpdateAltableinEntity>();
                        List <UpdateAltableinEntity> successPrtList = new List <UpdateAltableinEntity>();
                        foreach (DynamicObject item in submitResult.SuccessDataEnity)
                        {
                            object[]         ips         = new object[] { item[0] };
                            IOperationResult auditResult = _3DServiceHelper.Audit(ctx, "STK_TransferDirect", ips);
                            if (auditResult.IsSuccess)
                            {
                                successPrtList = _3DServiceHelper.InstallUpdateAlPackage(ctx, UpdateAltableinEnum.AuditSucess, ObjectEnum.AlPurTransfer, null, null, successPrtList, auditResult, null);
                                //更新altablein表审核成功信息
                                _3DServiceHelper.updateAltableStatus(ctx, UpdateAltableinEnum.AuditSucess, ObjectEnum.AlPurTransfer, null, successPrtList);
                            }
                            else if (!auditResult.InteractionContext.SimpleMessage.Equals("") && auditResult.InteractionContext.SimpleMessage != null)
                            {
                                exceptPrtList = _3DServiceHelper.InstallUpdateAlPackage(ctx, UpdateAltableinEnum.AuditError, ObjectEnum.AlPurTransfer, null, null, exceptPrtList, auditResult, item);
                                //更新altablein表 审核错误信息
                                _3DServiceHelper.updateAltableStatus(ctx, UpdateAltableinEnum.AuditError, ObjectEnum.AlPurTransfer, null, exceptPrtList);

                                //插入审核错误信息进入错误信息表
                                _3DServiceHelper.insertAllocationtableTable(ctx, UpdateAltableinEnum.AuditError, ObjectEnum.AlPurTransfer, id);
                            }
                        }
                    }
                }
                if (((List <ValidationErrorInfo>)saveResult.ValidationErrors).Count() > 0)
                {
                    List <UpdateAltableinEntity> updateVoSavePrtList = _3DServiceHelper.InstallUpdateAlPackage(ctx, UpdateAltableinEnum.SaveError, ObjectEnum.AlPurTransfer, null, saveResult);
                    //更新altablein表状态
                    _3DServiceHelper.updateAltableStatus(ctx, UpdateAltableinEnum.SaveError, ObjectEnum.AlPurTransfer, bb, updateVoSavePrtList);

                    //插入保存错误信息进入错误信息表
                    _3DServiceHelper.insertAllocationtableTable(ctx, UpdateAltableinEnum.SaveError, ObjectEnum.AlPurTransfer, id);
                }
            }
        }