Beispiel #1
0
        /// <summary>
        /// 添加资产
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public ReturnInfo AddAssets(AssetsInputDto entity)
        {
            ReturnInfo    RInfo = new ReturnInfo();
            StringBuilder sb    = new StringBuilder();

            if (string.IsNullOrEmpty(entity.AssId))
            {
                string MaxId = _AssetsRepository.GetMaxID();
                string AssId = Helper.GenerateID("ASS", MaxId);
                //产生资产编号
                entity.AssId = AssId;
            }
            string ValidateInfo = Helper.ValidateAssets(entity).ToString();

            sb.Append(ValidateInfo);
            if (sb.Length == 0)
            {
                try
                {
                    Assets assets = Mapper.Map <AssetsInputDto, Assets>(entity);
                    assets.STATUS     = (int)STATUS.闲置;
                    assets.CREATEDATE = DateTime.Now;
                    assets.MODIFYDATE = DateTime.Now;
                    _unitOfWork.RegisterNew(assets);
                    var pr = new AssProcessRecord
                    {
                        ASSID          = entity.AssId,
                        CREATEDATE     = DateTime.Now,
                        CREATEUSER     = entity.CreateUser,
                        HANDLEDATE     = DateTime.Now,
                        HANDLEMAN      = entity.CreateUser,
                        MODIFYDATE     = DateTime.Now,
                        MODIFYUSER     = entity.ModifyUser,
                        PROCESSCONTENT = entity.CreateUser + "入库了" + entity.AssId + ",数量为1",
                        PROCESSMODE    = (int)PROCESSMODE.入库,
                        QUANTITY       = 1
                    };
                    _unitOfWork.RegisterNew(pr);

                    bool result = _unitOfWork.Commit();
                    RInfo.IsSuccess = result;
                    RInfo.ErrorInfo = entity.AssId;
                    return(RInfo);
                }
                catch (Exception ex)
                {
                    _unitOfWork.Rollback();
                    sb.Append(ex.Message);
                    RInfo.IsSuccess = false;
                    RInfo.ErrorInfo = sb.ToString();
                    return(RInfo);
                }
            }
            else
            {
                RInfo.IsSuccess = false;
                RInfo.ErrorInfo = sb.ToString();
                return(RInfo);
            }
        }
Beispiel #2
0
        /// <summary>
        /// 更换使用者
        /// </summary>
        /// <param name="ASSID">资产编号</param>
        /// <param name="CurrentUser">当前使用者</param>
        /// <param name="UserID">操作用户</param>
        /// <returns></returns>
        public ReturnInfo ChangeUser(String ASSID, String CurrentUser, String UserID)
        {
            ReturnInfo RInfo  = new ReturnInfo();
            Assets     assets = _assetsRepository.GetByID(ASSID).FirstOrDefault();

            if (assets != null)
            {
                String LastUser = assets.CURRENTUSER;
                assets.CURRENTUSER = CurrentUser;
                try
                {
                    _unitOfWork.RegisterDirty(assets);

                    AssProcessRecord assRecord = new AssProcessRecord
                    {
                        ASSID          = ASSID,
                        HANDLEDATE     = DateTime.Now,
                        HANDLEMAN      = UserID,
                        PROCESSMODE    = (int)PROCESSMODE.使用人变更,
                        PROCESSCONTENT = "变更资产" + ASSID + "的使用者:" + LastUser + "为" + CurrentUser,
                        CREATEDATE     = DateTime.Now,
                        CREATEUSER     = UserID,
                        MODIFYDATE     = DateTime.Now,
                        MODIFYUSER     = UserID,
                        QUANTITY       = 1,
                    };
                    _unitOfWork.RegisterNew(assRecord);
                    bool result = _unitOfWork.Commit();
                    RInfo.IsSuccess = result;
                    RInfo.ErrorInfo = "变更使用人成功";
                    return(RInfo);
                }
                catch (Exception ex)
                {
                    _unitOfWork.Rollback();
                    RInfo.IsSuccess = false;
                    RInfo.ErrorInfo = ex.Message;
                    return(RInfo);
                }
            }
            else
            {
                throw new Exception("不存在该资产");
            }
        }
Beispiel #3
0
        /// <summary>
        /// 创建ProcessRecorder表数据
        /// </summary>
        /// <param name="Data"></param>
        /// <param name="RowData"></param>
        /// <param name="Type"></param>
        public void CreateSR(SOInputDto Data, AssScrapOrderRow RowData, PROCESSMODE Type)
        {
            AssProcessRecord assProcessRecord = new AssProcessRecord
            {
                ASSID      = RowData.ASSID,     //资产条码
                CREATEDATE = DateTime.Now,      //创建时间
                CREATEUSER = Data.CREATEUSER,   //创建用户
                HANDLEDATE = DateTime.Now,      //处理时间
                MODIFYDATE = DateTime.Now,      //修改时间
                MODIFYUSER = Data.MODIFYUSER,   //修改用户
            };

            switch (Type)
            {
            case PROCESSMODE.清理报废:
                assProcessRecord.QUANTITY    = RowData.SCRAPQTY;
                assProcessRecord.PROCESSMODE = (Int32)PROCESSMODE.清理报废;
                assProcessRecord.HANDLEMAN   = Data.CREATEUSER;
                break;

            case PROCESSMODE.报废还原:
                assProcessRecord.QUANTITY    = RowData.SCRAPQTY;
                assProcessRecord.PROCESSMODE = (Int32)PROCESSMODE.报废还原;
                assProcessRecord.HANDLEMAN   = Data.MODIFYUSER;
                break;
            }
            assProcessRecord.ASSID = RowData.ASSID;
            switch (Type)         //根据操作模式,输入操作内容
            {
            case PROCESSMODE.清理报废:
                assProcessRecord.PROCESSCONTENT = Data.CREATEUSER + "报废了物品编号为" + RowData.ASSID + "的资产";
                break;

            case PROCESSMODE.报废还原:
                assProcessRecord.PROCESSCONTENT = Data.CREATEUSER + "还原了物品编号为" + RowData.ASSID + "的资产";
                break;
            }
            _unitOfWork.RegisterNew(assProcessRecord);
        }
        /// <summary>
        /// 创建ProcessRecorder表数据
        /// </summary>
        /// <param name="Data"></param>
        /// <param name="RowData"></param>
        /// <param name="Type"></param>
        public void CreatePR(ROInputDto Data, AssRepairOrderRow RowData, PROCESSMODE Type)
        {
            AssProcessRecord assProcessRecord = new AssProcessRecord
            {
                ASSID      = RowData.ASSID,     //资产条码
                CREATEDATE = DateTime.Now,      //创建时间
                CREATEUSER = Data.CREATEUSER,   //创建用户
                HANDLEDATE = DateTime.Now,      //处理时间
                MODIFYDATE = DateTime.Now,      //修改时间
                MODIFYUSER = Data.MODIFYUSER,   //修改用户
            };

            switch (Type)
            {
            case PROCESSMODE.报修:
                assProcessRecord.QUANTITY    = RowData.WAITREPAIRQTY;
                assProcessRecord.PROCESSMODE = (Int32)PROCESSMODE.报修;
                assProcessRecord.HANDLEMAN   = Data.CREATEUSER;
                break;

            case PROCESSMODE.维修完毕:
                assProcessRecord.QUANTITY    = RowData.REPAIREDQTY;
                assProcessRecord.PROCESSMODE = (Int32)PROCESSMODE.维修完毕;
                assProcessRecord.HANDLEMAN   = Data.MODIFYUSER;
                break;
            }
            switch (Type)         //根据操作模式,输入操作内容
            {
            case PROCESSMODE.报修:
                assProcessRecord.PROCESSCONTENT = Data.CREATEUSER + "报修了物品编号为" + RowData.ASSID + "的资产";
                break;

            case PROCESSMODE.维修完毕:
                assProcessRecord.PROCESSCONTENT = Data.CREATEUSER + "维修了物品编号为" + RowData.ASSID + "的资产";
                break;
            }
            _unitOfWork.RegisterNew(assProcessRecord);
        }
Beispiel #5
0
        /// <summary>
        /// 添加退库单
        /// </summary>
        /// <param name="restoreOrderInput">退库单信息</param>
        /// <returns></returns>
        public ReturnInfo AddAssRestoreOrder(AssRestoreOrderInputDto restoreOrderInput)
        {
            //验证
            ReturnInfo rInfo = new ReturnInfo();
            StringBuilder sb = new StringBuilder();
            string maxId = _assRestoreOrderRepository.GetMaxID();
            string rsoId = Helper.GenerateIDEx("RS", maxId);
            restoreOrderInput.RSOID = rsoId;
            sb.Append(Helper.BasicValidate(restoreOrderInput).ToString());
            if (sb.Length == 0)
            {
                var assrso = Mapper.Map<AssRestoreOrderInputDto, AssRestoreOrder>(restoreOrderInput);
                assrso.CREATEDATE = DateTime.Now;
                assrso.MODIFYDATE = DateTime.Now;
                try
                {
                    _unitOfWork.RegisterNew(assrso);

                    foreach (var assId in restoreOrderInput.AssIds)
                    {
                        //修改Asset的状态
                        Assets assets = _assetsRepository.GetByID(assId).FirstOrDefault();
                        if (assets != null)
                        {
                            assets.STATUS = (int)STATUS.闲置;
                            assets.CURRENTUSER = "";
                            _unitOfWork.RegisterDirty(assets);
                        }
                        //添加行项
                        var corow = new AssRestoreOrderRow
                        {
                            ASSID = assId,
                            RSOID = rsoId,
                            CREATEDATE = DateTime.Now,
                            CREATEUSER = restoreOrderInput.CREATEUSER,
                            MODIFYDATE = DateTime.Now,
                            MODIFYUSER = restoreOrderInput.MODIFYUSER
                        };
                        _unitOfWork.RegisterNew(corow);

                        //添加处理记录
                        var pr = new AssProcessRecord
                        {
                            ASSID = assId,
                            CREATEDATE = DateTime.Now,
                            CREATEUSER = restoreOrderInput.CREATEUSER,
                            HANDLEDATE = DateTime.Now,
                            HANDLEMAN = restoreOrderInput.HANDLEMAN,
                            MODIFYDATE = DateTime.Now,
                            MODIFYUSER = restoreOrderInput.MODIFYUSER,
                            PROCESSCONTENT = restoreOrderInput.HANDLEMAN + "退库了" + assId,
                            PROCESSMODE = (int)PROCESSMODE.退库,
                            QUANTITY = 1
                        };
                        _unitOfWork.RegisterNew(pr);
                    }
                    bool result = _unitOfWork.Commit();
                    rInfo.IsSuccess = result;
                    rInfo.ErrorInfo = sb.ToString();
                    return rInfo;
                }
                catch (Exception ex)
                {
                    _unitOfWork.Rollback();
                    sb.Append(ex.Message);
                    rInfo.IsSuccess = false;
                    rInfo.ErrorInfo = sb.ToString();
                    return rInfo;
                }
            }
            else
            {
                rInfo.IsSuccess = false;
                rInfo.ErrorInfo = sb.ToString();
                return rInfo;
            }
        }
Beispiel #6
0
        /// <summary>
        /// 添加领用单
        /// </summary>
        /// <param name="collarOrderInput">领用单信息</param>
        /// <returns></returns>
        public ReturnInfo AddAssCollarOrder(AssCollarOrderInputDto collarOrderInput)
        {
            //验证
            ReturnInfo rInfo = new ReturnInfo();
            StringBuilder sb = new StringBuilder();
            string maxId = _assCollarOrderRepository.GetMaxId();
            string coId = Helper.GenerateIDEx("CO", maxId);
            collarOrderInput.COID = coId;
            sb.Append(Helper.BasicValidate(collarOrderInput).ToString());
            if (sb.Length == 0)
            {
                var assco = Mapper.Map<AssCollarOrderInputDto, AssCollarOrder>(collarOrderInput);
                assco.CREATEDATE = DateTime.Now;
                assco.MODIFYDATE = DateTime.Now;
                try
                {
                    _unitOfWork.RegisterNew(assco);

                    foreach (var assId in collarOrderInput.AssIds)
                    {
                        //修改Asset的状态
                        Assets assets = _assetsRepository.GetByID(assId).FirstOrDefault();
                        if (assets != null)
                        {
                            assets.STATUS = (int)STATUS.使用中;
                            assets.CURRENTUSER = collarOrderInput.USERID;

                            var User = _SMOSECDbContext.coreUsers.Where(a => a.USER_ID == assco.USERID)
                                .AsNoTracking().FirstOrDefault();
                            if (User != null)
                            {
                                assets.LOCATIONID = User.USER_LOCATIONID;
                                assets.DEPARTMENTID = User.USER_DEPARTMENTID;
                            }
                            else
                            {
                                throw new Exception("该用户不存在。");
                            }
                            _unitOfWork.RegisterDirty(assets);
                        }
                        //添加行项
                        var corow = new AssCollarOrderRow
                        {
                            ASSID = assId,
                            COID = coId,
                            CREATEDATE = DateTime.Now,
                            CREATEUSER = collarOrderInput.CREATEUSER,
                            MODIFYDATE = DateTime.Now,
                            MODIFYUSER = collarOrderInput.MODIFYUSER
                        };
                        _unitOfWork.RegisterNew(corow);

                        //添加处理记录
                        var pr = new AssProcessRecord
                        {
                            ASSID = assId,
                            CREATEDATE = DateTime.Now,
                            CREATEUSER = collarOrderInput.CREATEUSER,
                            HANDLEDATE = DateTime.Now,
                            HANDLEMAN = collarOrderInput.HANDLEMAN,
                            MODIFYDATE = DateTime.Now,
                            MODIFYUSER = collarOrderInput.MODIFYUSER,
                            PROCESSCONTENT = collarOrderInput.USERID + "领用了" + assId,
                            PROCESSMODE = (int)PROCESSMODE.领用,
                            QUANTITY = 1
                        };
                        _unitOfWork.RegisterNew(pr);
                    }

                    bool result = _unitOfWork.Commit();
                    rInfo.IsSuccess = result;
                    rInfo.ErrorInfo = sb.ToString();
                    return rInfo;
                }
                catch (Exception ex)
                {
                    _unitOfWork.Rollback();
                    sb.Append(ex.Message);
                    rInfo.IsSuccess = false;
                    rInfo.ErrorInfo = sb.ToString();
                    return rInfo;
                }
            }
            else
            {
                rInfo.IsSuccess = false;
                rInfo.ErrorInfo = sb.ToString();
                return rInfo;
            }
        }
Beispiel #7
0
        /// <summary>
        /// 采购入库
        /// </summary>
        /// <param name="inputDto">采购入库相关信息</param>
        /// <returns></returns>
        public ReturnInfo InstorageAss(AssInStorageInputDto inputDto)
        {
            ReturnInfo    RInfo        = new ReturnInfo();
            StringBuilder sb           = new StringBuilder();
            string        ValidateInfo = Helper.BasicValidate(inputDto).ToString();

            sb.Append(ValidateInfo);
            if (sb.Length == 0)
            {
                try
                {
                    //先确定数量是否超出
                    AssPurchaseOrderRow row = _assPoRowRepository
                                              .GetByPOIDandTemplateID(inputDto.POID, inputDto.TEMPLATEID).FirstOrDefault();
                    if (row != null)
                    {
                        if (row.QUANTPURCHASED < row.QUANTSTORED + inputDto.SnList.Count)
                        {
                            RInfo.IsSuccess = false;
                            RInfo.ErrorInfo = "入库量超过采购量!";
                            return(RInfo);
                        }
                        else
                        {
                            row.QUANTSTORED = row.QUANTSTORED + inputDto.SnList.Count;
                            var asspo = _assPurchaseOrderRepository.GetById(inputDto.POID).FirstOrDefault();
                            if (asspo != null)
                            {
                                asspo.STATUS = (int)PurchaseOrderStatus.入库中;
                                if (row.QUANTPURCHASED == row.QUANTSTORED)
                                {
                                    row.STATUS = (int)PurchaseOrderStatus.已完成;

                                    //判断是否需要将整个采购单状态改为"已完成"
                                    //得到采购单的行项数
                                    var count = _assPoRowRepository.GetByPOID(inputDto.POID).Count();
                                    //得到已完成的行项数
                                    var count2 = _assPoRowRepository.GetByPOID(inputDto.POID)
                                                 .Count(a => a.STATUS == (int)PurchaseOrderStatus.已完成);
                                    if (count == count2 + 1)
                                    {
                                        //包括当前行项,所有行项均已完成,则更新整个采购单状态为"已完成"
                                        asspo.STATUS = (int)PurchaseOrderStatus.已完成;
                                        _unitOfWork.RegisterDirty(asspo);
                                    }
                                }
                                else
                                {
                                    row.STATUS = (int)PurchaseOrderStatus.入库中;
                                }
                            }
                            _unitOfWork.RegisterDirty(row);
                        }
                    }


                    AssTemplate assTemplate = _assTemplateRepository.GetById(inputDto.TEMPLATEID).AsNoTracking()
                                              .FirstOrDefault();
                    if (assTemplate != null)
                    {
                        for (int i = 0; i < inputDto.SnList.Count; i++)
                        {
                            //资产入库
                            string MaxId  = _assetsRepository.GetMaxID();
                            string ASSID  = Helper.GenerateASSID("ASS", MaxId, i);
                            Assets assets = new Assets
                            {
                                STATUS        = (int)STATUS.闲置,
                                ASSID         = ASSID,
                                BUYDATE       = DateTime.Now,
                                CREATEUSER    = inputDto.UserId,
                                EXPIRYDATE    = DateTime.Now.AddYears(1),
                                IMAGE         = assTemplate.IMAGE,
                                ISINWAREHOUSE = 1,
                                ISLOCKED      = 0,
                                MODIFYUSER    = inputDto.UserId,
                                NAME          = assTemplate.NAME,
                                NOTE          = assTemplate.NOTE,
                                PRICE         = assTemplate.PRICE,
                                SLID          = inputDto.SLID,
                                WAREID        = inputDto.WAREID,
                                STID          = inputDto.STID,
                                SPECIFICATION = assTemplate.SPECIFICATION,
                                TYPEID        = assTemplate.TYPEID,
                                UNIT          = assTemplate.UNIT,
                                VENDOR        = assTemplate.VENDOR,
                                CREATEDATE    = DateTime.Now,
                                MODIFYDATE    = DateTime.Now,
                                SN            = inputDto.SnList[i],
                                TEMPLATEID    = inputDto.TEMPLATEID
                            };
                            _unitOfWork.RegisterNew(assets);
                            var pr = new AssProcessRecord
                            {
                                ASSID          = ASSID,
                                CREATEDATE     = DateTime.Now,
                                CREATEUSER     = inputDto.UserId,
                                HANDLEDATE     = DateTime.Now,
                                HANDLEMAN      = inputDto.UserId,
                                MODIFYDATE     = DateTime.Now,
                                MODIFYUSER     = inputDto.UserId,
                                PROCESSCONTENT = inputDto.UserId + "入库了" + ASSID + ",数量为1",
                                PROCESSMODE    = (int)PROCESSMODE.入库,
                                QUANTITY       = 1
                            };
                            _unitOfWork.RegisterNew(pr);
                            string SN = inputDto.SnList[i];
                            //添加采购入库关联表
                            AssPurchaseOrderInstorage instorage = new AssPurchaseOrderInstorage
                            {
                                POID       = inputDto.POID,
                                SN         = SN,
                                TEMPLATEID = inputDto.TEMPLATEID,
//                                Time = DateTime.Now
                            };
                            _unitOfWork.RegisterNew(instorage);
                        }
                        bool result = _unitOfWork.Commit();
                        RInfo.IsSuccess = result;
                        RInfo.ErrorInfo = "";
                        return(RInfo);
                    }
                    else
                    {
                        RInfo.IsSuccess = false;
                        RInfo.ErrorInfo = "该资产模板不存在!";
                        return(RInfo);
                    }
                }
                catch (Exception ex)
                {
                    _unitOfWork.Rollback();
                    sb.Append(ex.Message);
                    RInfo.IsSuccess = false;
                    RInfo.ErrorInfo = sb.ToString();
                    return(RInfo);
                }
            }
            else
            {
                RInfo.IsSuccess = false;
                RInfo.ErrorInfo = sb.ToString();
                return(RInfo);
            }
        }
Beispiel #8
0
        /// <summary>
        /// 采购退货
        /// </summary>
        /// <param name="inputDto">采购退货相关信息</param>
        /// <returns></returns>
        public ReturnInfo ReturnAss(AssReturnInputDto inputDto)
        {
            ReturnInfo    RInfo = new ReturnInfo();
            StringBuilder sb    = new StringBuilder();

            try
            {
                //先从Asset表得到属于这个POID的资产的全部SN,放入List<string>
                var allSn = from instorage in SMOWMSDbContext.AssPurchaseOrderInstorages
                            join assetse in SMOWMSDbContext.Assetss on instorage.SN equals assetse.SN
                            where assetse.ISINWAREHOUSE == 1 && instorage.POID == inputDto.POID
                            select instorage.SN;
                List <string> allList = allSn.ToList();
                //2个List<string>取交集,如果所传的SN都包括,则继续
                List <string> bothList = allList.Intersect(inputDto.sns).ToList();


                //取出SN在范围内的所有资产

                var assets = _assetsRepository.GetAll().Where(a => bothList.Contains(a.SN));

                //遍历,修改状态为已不在库

                foreach (var asset in assets)
                {
                    //修改状态为已不在库
                    asset.ISINWAREHOUSE = 0;
                    _unitOfWork.RegisterDirty(asset);
                    //添加退货关联表
                    AssPurchaseOrderReturn poReturn = new AssPurchaseOrderReturn
                    {
                        POID       = inputDto.POID,
                        SN         = asset.SN,
                        TEMPLATEID = asset.TEMPLATEID,
//                        Time = DateTime.Now
                    };
                    _unitOfWork.RegisterNew(poReturn);

                    var pr = new AssProcessRecord
                    {
                        ASSID          = asset.ASSID,
                        CREATEDATE     = DateTime.Now,
                        CREATEUSER     = inputDto.UserId,
                        HANDLEDATE     = DateTime.Now,
                        HANDLEMAN      = inputDto.UserId,
                        MODIFYDATE     = DateTime.Now,
                        MODIFYUSER     = inputDto.UserId,
                        PROCESSCONTENT = inputDto.UserId + "采购退回了" + asset.ASSID + ",数量为1",
                        PROCESSMODE    = (int)PROCESSMODE.出库,
                        QUANTITY       = 1
                    };
                    _unitOfWork.RegisterNew(pr);
                }
                var countDictionary = _assetsRepository.GetCountBySnList(bothList);
                if (countDictionary != null)
                {
                    foreach (var templateId in countDictionary.Keys)
                    {
                        var asspoRow = _assPoRowRepository.GetByPOIDandTemplateID(inputDto.POID, templateId)
                                       .FirstOrDefault();
                        if (asspoRow != null)
                        {
                            asspoRow.QUANTRETREATED = asspoRow.QUANTRETREATED + countDictionary[templateId];
                            _unitOfWork.RegisterDirty(asspoRow);
                        }
                    }
                }

                bool result = _unitOfWork.Commit();
                RInfo.IsSuccess = result;
                RInfo.ErrorInfo = "";
                return(RInfo);
            }
            catch (Exception ex)
            {
                _unitOfWork.Rollback();
                sb.Append(ex.Message);
                RInfo.IsSuccess = false;
                RInfo.ErrorInfo = sb.ToString();
                return(RInfo);
            }
        }
        /// <summary>
        /// 销售资产
        /// </summary>
        /// <param name="inputDto">相关信息</param>
        /// <returns></returns>
        public ReturnInfo SaleAss(AssSalesInputDto inputDto)
        {
            ReturnInfo    RInfo = new ReturnInfo();
            StringBuilder sb    = new StringBuilder();

            try
            {
                //先判断所有sn是否在库
                //先得到所有在库的sn集合
                var allInSn = _AssetsRepository.GetAll().Where(a => a.ISINWAREHOUSE == 1).Select(a => a.SN).ToList();
                foreach (var sn in inputDto.sns)
                {
                    if (!allInSn.Contains(sn))
                    {
                        RInfo.IsSuccess = false;
                        RInfo.ErrorInfo = "序列号" + sn + "不在库!";
                        return(RInfo);
                    }
                }

                //根据sns,得到<templateId,sn数>的Dictionary
                var assDictionary = _AssetsRepository.GetCountBySnList(inputDto.sns);
                //记录现在追加的行项完成数
                int nowComplete = 0;
                //更改Row中的数值
                foreach (var templateId in assDictionary.Keys)
                {
                    var row = _assSoRowRepository.GetBySOIDandTemplateID(inputDto.SOID, templateId).FirstOrDefault();
                    if (row != null)
                    {
                        row.QUANTOUT = row.QUANTOUT + assDictionary[templateId];
                        if (row.QUANTSALED < row.QUANTOUT)
                        {
                            RInfo.IsSuccess = false;
                            RInfo.ErrorInfo = "模板" + templateId + "的出库量出过销售量!";
                            return(RInfo);
                        }
                        else
                        {
                            if (row.QUANTSALED == row.QUANTOUT)
                            {
                                row.STATUS = (int)SalesOrderStatus.已完成;
                                nowComplete++;
                            }
                            else
                            {
                                row.STATUS = (int)SalesOrderStatus.出库中;
                            }
                        }
                        _unitOfWork.RegisterDirty(row);
                    }
                }
                var assSo = _assSalesOrderRepository.GetById(inputDto.SOID).FirstOrDefault();
                if (assSo != null)
                {
                    assSo.STATUS = (int)SalesOrderStatus.出库中;
                    //得到采购单未完成行项数
                    var uncompleteCount = _assSoRowRepository.GetBySOID(inputDto.SOID).Count(a => a.STATUS != (int)SalesOrderStatus.已完成);
                    if (uncompleteCount == nowComplete)
                    {
                        //如果全部完成了,修改销售单状态为"已完成"
                        assSo.STATUS = (int)SalesOrderStatus.已完成;
                        _unitOfWork.RegisterDirty(assSo);
                    }
                }
                //更改Assets表中的状态为不在库
                var           allList  = _AssetsRepository.GetAll().Select(a => a.SN).ToList();
                List <string> bothList = allList.Intersect(inputDto.sns).ToList();
                var           assets   = _AssetsRepository.GetAll().Where(a => bothList.Contains(a.SN));

                //遍历,修改状态为已不在库

                foreach (var asset in assets)
                {
                    //修改状态为已不在库
                    asset.ISINWAREHOUSE = 0;
                    _unitOfWork.RegisterDirty(asset);
                    //添加出货关联表
                    AssSalesOrderOutbound soOutbound = new AssSalesOrderOutbound()
                    {
                        SOID       = inputDto.SOID,
                        SN         = asset.SN,
                        TEMPLATEID = asset.TEMPLATEID,
//                        Time = DateTime.Now
                    };
                    _unitOfWork.RegisterNew(soOutbound);

                    var pr = new AssProcessRecord
                    {
                        ASSID          = asset.ASSID,
                        CREATEDATE     = DateTime.Now,
                        CREATEUSER     = inputDto.UserId,
                        HANDLEDATE     = DateTime.Now,
                        HANDLEMAN      = inputDto.UserId,
                        MODIFYDATE     = DateTime.Now,
                        MODIFYUSER     = inputDto.UserId,
                        PROCESSCONTENT = inputDto.UserId + "出库了" + asset.ASSID + ",数量为1",
                        PROCESSMODE    = (int)PROCESSMODE.出库,
                        QUANTITY       = 1
                    };
                    _unitOfWork.RegisterNew(pr);
                }
                bool result = _unitOfWork.Commit();
                RInfo.IsSuccess = result;
                RInfo.ErrorInfo = "";
                return(RInfo);
            }
            catch (Exception ex)
            {
                _unitOfWork.Rollback();
                sb.Append(ex.Message);
                RInfo.IsSuccess = false;
                RInfo.ErrorInfo = sb.ToString();
                return(RInfo);
            }
        }
Beispiel #10
0
//        /// <summary>
//        /// 添加序列号
//        /// </summary>
//        /// <param name="entity"></param>
//        /// <returns></returns>
//        public ReturnInfo AddAssetsSN(AssetsSNInputDto entity)
//        {
//
//            throw new System.NotImplementedException();
//        }

//        /// <summary>
//        /// 删除资产
//        /// </summary>
//        /// <param name="entity"></param>
//        /// <returns></returns>
//        public ReturnInfo DeleteAssets(AssetsInputDto entity)
//        {
//            throw new System.NotImplementedException();
//        }

//        /// <summary>
//        /// 删除序列号
//        /// </summary>
//        /// <param name="entity"></param>
//        /// <returns></returns>
//        public ReturnInfo DeleteAssetsSN(AssetsSNInputDto entity)
//        {
//            throw new System.NotImplementedException();
//        }

//        /// <summary>
//        /// 入库
//        /// </summary>
//        /// <param name="inStorage"></param>
//        /// <returns></returns>
//        public ReturnInfo InStorage(AssetsInStorageInputDto inStorage)
//        {
//            throw new NotImplementedException();
//        }
//
//        /// <summary>
//        /// 冲销
//        /// </summary>
//        /// <param name="writeOff"></param>
//        /// <returns></returns>
//        public ReturnInfo WriteOff(AssetsWriteOffInputDto writeOff)
//        {
//            throw new NotImplementedException();
//        }


        public ReturnInfo UpdateAssets(AssetsInputDto entity)
        {
            ReturnInfo    RInfo = new ReturnInfo();
            StringBuilder sb    = new StringBuilder();
            //            if (inStorageInput.Quantity<0)
            //            {
            //                sb.Append("请输入正确的数量。");
            //            }
            //产生资产编号
            string ValidateInfo = Helper.BasicValidate(entity).ToString();

            sb.Append(ValidateInfo);
            if (sb.Length == 0)
            {
                try
                {
                    Assets assets = _AssetsRepository.GetByID(entity.AssId).FirstOrDefault();

//                    Assets assets = Mapper.Map<AssetsInputDto, Assets>(entity);
//                    assets = Mapper.Map<AssetsInputDto, Assets>(entity);

//                    assets.CreateDate = DateTime.Now;
                    if (assets != null)
                    {
                        assets.BUYDATE    = entity.BuyDate;
                        assets.CREATEUSER = entity.CreateUser;
//                    assets.CURRENTUSER = entity.CurrentUser;
                        assets.DEPARTMENTID = entity.DepartmentId;
                        assets.EXPIRYDATE   = entity.ExpiryDate;
                        assets.IMAGE        = entity.Image;
                        assets.LOCATIONID   = entity.LocationId;
//                        assets.MANAGER = entity.Manager;
                        assets.MODIFYUSER    = entity.ModifyUser;
                        assets.NAME          = entity.Name;
                        assets.NOTE          = entity.Note;
                        assets.PLACE         = entity.Place;
                        assets.PRICE         = entity.Price;
                        assets.SN            = entity.SN;
                        assets.SPECIFICATION = entity.Specification;
                        assets.TYPEID        = entity.TypeId;
                        assets.UNIT          = entity.Unit;
                        assets.VENDOR        = entity.Vendor;
                        assets.MODIFYDATE    = DateTime.Now;
                        assets.CREATEDATE    = assets.CREATEDATE;
                        _unitOfWork.RegisterDirty(assets);
                    }

                    var pr = new AssProcessRecord
                    {
                        ASSID          = entity.AssId,
                        CREATEDATE     = DateTime.Now,
                        CREATEUSER     = entity.CreateUser,
                        HANDLEDATE     = DateTime.Now,
                        HANDLEMAN      = entity.CreateUser,
                        MODIFYDATE     = DateTime.Now,
                        MODIFYUSER     = entity.ModifyUser,
                        PROCESSCONTENT = entity.CreateUser + "修改了" + entity.AssId
                    };
                    //                    pr.HANDLEMAN = "18875878973";
                    //                    pr.PRId = "";
                    ;
                    pr.PROCESSMODE = (int)PROCESSMODE.修改内容;
                    _unitOfWork.RegisterNew(pr);

                    bool result = _unitOfWork.Commit();
                    RInfo.IsSuccess = result;
                    RInfo.ErrorInfo = sb.ToString();
                    return(RInfo);

                    //                    if (inStorageInput.Quantity>0)
                    //                    {
                    //                        RInfo = InStorage(inStorageInput);
                    //                        return RInfo;
                    //                    }
                    //                    else
                    //                    {
                    //                        bool result = _unitOfWork.Commit();
                    //                        RInfo.IsSuccess = result;
                    //                        RInfo.ErrorInfo = sb.ToString();
                    //                        return RInfo;
                    //                    }
                }
                catch (Exception ex)
                {
                    _unitOfWork.Rollback();
                    sb.Append(ex.Message);
                    RInfo.IsSuccess = false;
                    RInfo.ErrorInfo = sb.ToString();
                    return(RInfo);
                }
            }
            else
            {
                RInfo.IsSuccess = false;
                RInfo.ErrorInfo = sb.ToString();
                return(RInfo);
            }
        }
Beispiel #11
0
        /// <summary>
        /// 资产移库
        /// </summary>
        /// <param name="inputDto">移库相关信息</param>
        /// <returns></returns>
        public ReturnInfo TransferAss(AssTransferInputDto inputDto)
        {
            ReturnInfo    RInfo        = new ReturnInfo();
            StringBuilder sb           = new StringBuilder();
            string        ValidateInfo = Helper.BasicValidate(inputDto).ToString();

            sb.Append(ValidateInfo);
            if (sb.Length == 0)
            {
                try
                {
                    WHStorageLocation storageLocation = _whStorageLocationRepository.GetById(inputDto.WAREID, inputDto.STID, inputDto.SLID).AsNoTracking()
                                                        .FirstOrDefault();
                    if (storageLocation != null)
                    {
                        //取出SN在范围内的所有资产

                        var assets = _AssetsRepository.GetAll().Where(a => inputDto.SnList.Contains(a.SN) && a.ISINWAREHOUSE == 1);

                        //遍历,修改库位

                        foreach (var asset in assets)
                        {
                            //修改库位
                            asset.WAREID = inputDto.WAREID;
                            asset.STID   = inputDto.STID;
                            asset.SLID   = inputDto.SLID;
                            _unitOfWork.RegisterDirty(asset);


                            var pr = new AssProcessRecord
                            {
                                ASSID          = asset.ASSID,
                                CREATEDATE     = DateTime.Now,
                                CREATEUSER     = inputDto.UserId,
                                HANDLEDATE     = DateTime.Now,
                                HANDLEMAN      = inputDto.UserId,
                                MODIFYDATE     = DateTime.Now,
                                MODIFYUSER     = inputDto.UserId,
                                PROCESSCONTENT = inputDto.UserId + "修改库位为" + inputDto.WAREID + "/" + inputDto.STID + "/" + inputDto.SLID,
                                PROCESSMODE    = (int)PROCESSMODE.调拨,
                                QUANTITY       = 1
                            };
                            _unitOfWork.RegisterNew(pr);
                        }


                        bool result = _unitOfWork.Commit();
                        RInfo.IsSuccess = result;
                        RInfo.ErrorInfo = "";
                        return(RInfo);
                    }
                    else
                    {
                        throw new Exception("该库位不存在!");
                    }
                }
                catch (Exception ex)
                {
                    _unitOfWork.Rollback();
                    sb.Append(ex.Message);
                    RInfo.IsSuccess = false;
                    RInfo.ErrorInfo = sb.ToString();
                    return(RInfo);
                }
            }
            else
            {
                RInfo.IsSuccess = false;
                RInfo.ErrorInfo = sb.ToString();
                return(RInfo);
            }
        }
Beispiel #12
0
        /// <summary>
        /// 更新资产信息
        /// </summary>
        /// <param name="entity">资产信息</param>
        /// <returns></returns>
        public ReturnInfo UpdateAssets(AssetsInputDto entity)
        {
            ReturnInfo    RInfo = new ReturnInfo();
            StringBuilder sb    = new StringBuilder();
            //产生资产编号
            string ValidateInfo = Helper.BasicValidate(entity).ToString();

            sb.Append(ValidateInfo);
            if (sb.Length == 0)
            {
                try
                {
                    Assets assets = _AssetsRepository.GetByID(entity.ASSID).FirstOrDefault();
                    if (assets != null)
                    {
                        assets.BUYDATE       = entity.BUYDATE;
                        assets.CREATEUSER    = entity.CREATEUSER;
                        assets.EXPIRYDATE    = entity.EXPIRYDATE;
                        assets.IMAGE         = entity.IMAGE;
                        assets.SLID          = entity.SLID;
                        assets.MODIFYUSER    = entity.MODIFYUSER;
                        assets.NAME          = entity.NAME;
                        assets.NOTE          = entity.NOTE;
                        assets.PLACE         = entity.PLACE;
                        assets.PRICE         = entity.PRICE;
                        assets.SN            = entity.SN;
                        assets.SPECIFICATION = entity.SPECIFICATION;
                        assets.TYPEID        = entity.TYPEID;
                        assets.UNIT          = entity.UNIT;
                        assets.VENDOR        = entity.VENDOR;
                        assets.MODIFYDATE    = DateTime.Now;
                        assets.CREATEDATE    = assets.CREATEDATE;
                        _unitOfWork.RegisterDirty(assets);
                    }

                    var pr = new AssProcessRecord
                    {
                        ASSID          = entity.ASSID,
                        CREATEDATE     = DateTime.Now,
                        CREATEUSER     = entity.CREATEUSER,
                        HANDLEDATE     = DateTime.Now,
                        HANDLEMAN      = entity.CREATEUSER,
                        MODIFYDATE     = DateTime.Now,
                        MODIFYUSER     = entity.MODIFYUSER,
                        PROCESSCONTENT = entity.CREATEUSER + "修改了" + entity.ASSID
                    };
                    ;
                    pr.PROCESSMODE = (int)PROCESSMODE.修改内容;
                    _unitOfWork.RegisterNew(pr);

                    bool result = _unitOfWork.Commit();
                    RInfo.IsSuccess = result;
                    RInfo.ErrorInfo = sb.ToString();
                    return(RInfo);
                }
                catch (Exception ex)
                {
                    _unitOfWork.Rollback();
                    sb.Append(ex.Message);
                    RInfo.IsSuccess = false;
                    RInfo.ErrorInfo = sb.ToString();
                    return(RInfo);
                }
            }
            else
            {
                RInfo.IsSuccess = false;
                RInfo.ErrorInfo = sb.ToString();
                return(RInfo);
            }
        }
Beispiel #13
0
        /// <summary>
        /// 添加入库单
        /// </summary>
        /// <param name="inputDto">入库单信息</param>
        /// <returns></returns>
        public ReturnInfo AddWarehouseReceipt(WarehouseReceiptInputDto inputDto)
        {
            ReturnInfo    rInfo = new ReturnInfo();
            StringBuilder sb    = new StringBuilder();
            string        maxId = _warehouseReceiptRepository.GetMaxId();
            string        WRId  = Helper.GenerateIDEx("WR", maxId);

            inputDto.WRID = WRId;
            sb.Append(Helper.BasicValidate(inputDto).ToString());
            if (sb.Length == 0)
            {
                var warehouseReceipt = Mapper.Map <WarehouseReceiptInputDto, WarehouseReceipt>(inputDto);
                warehouseReceipt.CREATEDATE = DateTime.Now;
                warehouseReceipt.MODIFYDATE = DateTime.Now;
                try
                {
                    _unitOfWork.RegisterNew(warehouseReceipt);

                    foreach (var rowInput in inputDto.RowInputDtos)
                    {
                        WarehouseReceiptRow row = new WarehouseReceiptRow
                        {
                            CID        = rowInput.CID,
                            MONEY      = rowInput.MONEY,
                            CREATEUSER = inputDto.CREATEUSER,
                            CREATEDATE = DateTime.Now,
                            MODIFYUSER = inputDto.MODIFYUSER,
                            MODIFYDATE = DateTime.Now,
                            NOTE       = rowInput.NOTE,
                            WRID       = WRId,
                            QUANTITY   = rowInput.QUANTITY
                        };
                        _unitOfWork.RegisterNew(row);

                        //修改库存
                        ConQuant quant = _conQuantRepository.GetQuants(inputDto.LOCATIONID, rowInput.CID)
                                         .FirstOrDefault();
                        if (quant != null)
                        {
                            quant.QUANTITY   = quant.QUANTITY - rowInput.QUANTITY;
                            quant.MODIFYDATE = DateTime.Now;
                            quant.MODIFYUSER = inputDto.MODIFYUSER;
                            _unitOfWork.RegisterDirty(quant);
                        }
                        else
                        {
                            ConQuant Quant = new ConQuant
                            {
                                QUANTITY   = rowInput.QUANTITY,
                                MODIFYDATE = DateTime.Now,
                                MODIFYUSER = inputDto.MODIFYUSER,
                                CID        = rowInput.CID,
                                CREATEUSER = inputDto.CREATEUSER,
                                CREATEDATE = DateTime.Now,
                                LOCATIONID = inputDto.LOCATIONID
                            };
                            _unitOfWork.RegisterNew(Quant);
                        }
                        //添加处理记录
                        var pr = new AssProcessRecord
                        {
                            ASSID          = "",
                            CID            = rowInput.CID,
                            CREATEDATE     = DateTime.Now,
                            CREATEUSER     = inputDto.CREATEUSER,
                            HANDLEDATE     = DateTime.Now,
                            HANDLEMAN      = inputDto.HANDLEMAN,
                            MODIFYDATE     = DateTime.Now,
                            MODIFYUSER     = inputDto.MODIFYUSER,
                            PROCESSCONTENT = inputDto.CREATEUSER + "入库了" + row.CID + ",数量为" + rowInput.QUANTITY,
                            PROCESSMODE    = (int)PROCESSMODE.入库,
                            QUANTITY       = rowInput.QUANTITY
                        };
                        _unitOfWork.RegisterNew(pr);
                    }

                    bool result = _unitOfWork.Commit();
                    rInfo.IsSuccess = result;
                    rInfo.ErrorInfo = sb.ToString();
                    return(rInfo);
                }
                catch (Exception ex)
                {
                    _unitOfWork.Rollback();
                    sb.Append(ex.Message);
                    rInfo.IsSuccess = false;
                    rInfo.ErrorInfo = sb.ToString();
                    return(rInfo);
                }
            }
            else
            {
                rInfo.IsSuccess = false;
                rInfo.ErrorInfo = sb.ToString();
                return(rInfo);
            }
        }
Beispiel #14
0
        /// <summary>
        /// 创建ProcessRecorder表数据
        /// </summary>
        /// <param name="Data"></param>
        /// <param name="RowData"></param>
        /// <param name="Type"></param>
        public void CreatePR(TOInputDto Data, AssTransferOrderRow RowData, PROCESSMODE Type)
        {
            AssProcessRecord assProcessRecord = new AssProcessRecord
            {
                ASSID      = RowData.ASSID,     //资产条码
                CID        = RowData.CID,       //耗材编号
                CREATEDATE = DateTime.Now,      //创建时间
                CREATEUSER = Data.CREATEUSER,   //创建用户
                HANDLEDATE = DateTime.Now,      //处理时间
                MODIFYDATE = DateTime.Now,      //修改时间
                MODIFYUSER = Data.MODIFYUSER,   //修改用户
            };

            switch (Type)
            {
            case PROCESSMODE.调拨:
                assProcessRecord.QUANTITY    = RowData.INTRANSFERQTY;
                assProcessRecord.PROCESSMODE = (Int32)PROCESSMODE.调拨;
                assProcessRecord.HANDLEMAN   = Data.CREATEUSER;
                break;

            case PROCESSMODE.调拨确认:
                assProcessRecord.QUANTITY    = Convert.ToDecimal(RowData.TRANSFEREDQTY);
                assProcessRecord.PROCESSMODE = (Int32)PROCESSMODE.调拨确认;
                assProcessRecord.HANDLEMAN   = Data.MODIFYUSER;
                break;

            case PROCESSMODE.调拨取消:
                assProcessRecord.QUANTITY    = Convert.ToDecimal(RowData.TRANSFERCANCELQTY);
                assProcessRecord.PROCESSMODE = (Int32)PROCESSMODE.调拨取消;
                assProcessRecord.HANDLEMAN   = Data.MODIFYUSER;
                break;
            }
            if (String.IsNullOrEmpty(RowData.ASSID) == false)
            {
                switch (Type)         //根据操作模式,输入操作内容
                {
                case PROCESSMODE.调拨:
                    assProcessRecord.PROCESSCONTENT = Data.CREATEUSER + "调拨了物品编号为" + RowData.ASSID + "的资产";
                    break;

                case PROCESSMODE.调拨确认:
                    assProcessRecord.PROCESSCONTENT = Data.CREATEUSER + "确认调拨了物品编号为" + RowData.ASSID + "的资产";
                    break;

                case PROCESSMODE.调拨取消:
                    assProcessRecord.PROCESSCONTENT = Data.CREATEUSER + "取消调拨了物品编号为" + RowData.ASSID + "的资产";
                    break;
                }
            }
            else
            {
                assProcessRecord.CID = RowData.CID;
                switch (Type)         //根据操作模式,输入操作内容
                {
                case PROCESSMODE.调拨:
                    assProcessRecord.PROCESSCONTENT = Data.CREATEUSER + "调拨了耗材编号为" + RowData.CID + ",数量为" + RowData.INTRANSFERQTY;
                    break;

                case PROCESSMODE.调拨确认:
                    assProcessRecord.PROCESSCONTENT = Data.CREATEUSER + "确认调拨了耗材编号为" + RowData.CID + ",数量为" + RowData.TRANSFEREDQTY;
                    break;

                case PROCESSMODE.调拨取消:
                    assProcessRecord.PROCESSCONTENT = Data.CREATEUSER + "取消调拨了耗材编号为" + RowData.CID + ",数量为" + RowData.TRANSFERCANCELQTY;
                    break;
                }
            }
            _unitOfWork.RegisterNew(assProcessRecord);
        }
Beispiel #15
0
        /// <summary>
        /// 更新资产信息
        /// </summary>
        /// <param name="entity">资产信息</param>
        /// <returns></returns>
        public ReturnInfo UpdateAssets(AssetsInputDto entity)
        {
            ReturnInfo    RInfo = new ReturnInfo();
            StringBuilder sb    = new StringBuilder();
            //产生资产编号
            string ValidateInfo = Helper.BasicValidate(entity).ToString();

            sb.Append(ValidateInfo);
            if (sb.Length == 0)
            {
                try
                {
                    Assets assets    = _AssetsRepository.GetByID(entity.AssId).FirstOrDefault();
                    var    originAss = Mapper.Map <Assets, AssetsOutputDto>(assets);
                    if (assets != null)
                    {
                        assets.BUYDATE       = entity.BuyDate;
                        assets.CREATEUSER    = entity.CreateUser;
                        assets.DEPARTMENTID  = entity.DepartmentId;
                        assets.EXPIRYDATE    = entity.ExpiryDate;
                        assets.IMAGE         = entity.Image;
                        assets.LOCATIONID    = entity.LocationId;
                        assets.MODIFYUSER    = entity.ModifyUser;
                        assets.NAME          = entity.Name;
                        assets.NOTE          = entity.Note;
                        assets.PLACE         = entity.Place;
                        assets.PRICE         = entity.Price;
                        assets.SN            = entity.SN;
                        assets.SPECIFICATION = entity.Specification;
                        assets.TYPEID        = entity.TypeId;
                        assets.UNIT          = entity.Unit;
                        assets.VENDOR        = entity.Vendor;
                        assets.MODIFYDATE    = DateTime.Now;
                        assets.CREATEDATE    = assets.CREATEDATE;
                        _unitOfWork.RegisterDirty(assets);
                    }

                    var pr = new AssProcessRecord
                    {
                        ASSID          = entity.AssId,
                        CREATEDATE     = DateTime.Now,
                        CREATEUSER     = entity.CreateUser,
                        HANDLEDATE     = DateTime.Now,
                        HANDLEMAN      = entity.CreateUser,
                        MODIFYDATE     = DateTime.Now,
                        MODIFYUSER     = entity.ModifyUser,
                        PROCESSCONTENT = entity.CreateUser + "修改了" + entity.AssId
                    };
                    pr.PROCESSCONTENT = "修改资产" + entity.AssId + "。修改前数据:" + originAss.BuyDate
                                        + "," + originAss.DepartmentId + "," + originAss.ExpiryDate + "," + originAss.Image
                                        + "," + originAss.Name + "," + originAss.Note + "," + originAss.Place + "," + originAss.Price
                                        + "," + originAss.SN + "," + originAss.Specification + "," + originAss.TypeId
                                        + "," + originAss.Unit + "," + originAss.Vendor + "  修改后数据:" + assets.BUYDATE
                                        + "," + assets.DEPARTMENTID + "," + assets.EXPIRYDATE + "," + assets.IMAGE
                                        + "," + assets.NAME + "," + assets.NOTE + "," + assets.PLACE + "," + assets.PRICE
                                        + "," + assets.SN + "," + assets.SPECIFICATION + "," + assets.TYPEID
                                        + "," + assets.UNIT + "," + assets.VENDOR;
                    pr.PROCESSMODE = (int)PROCESSMODE.修改内容;
                    _unitOfWork.RegisterNew(pr);

                    bool result = _unitOfWork.Commit();
                    RInfo.IsSuccess = result;
                    RInfo.ErrorInfo = sb.ToString();
                    return(RInfo);
                }
                catch (Exception ex)
                {
                    _unitOfWork.Rollback();
                    sb.Append(ex.Message);
                    RInfo.IsSuccess = false;
                    RInfo.ErrorInfo = sb.ToString();
                    return(RInfo);
                }
            }
            else
            {
                RInfo.IsSuccess = false;
                RInfo.ErrorInfo = sb.ToString();
                return(RInfo);
            }
        }
        /// <summary>
        /// 销售退库
        /// </summary>
        /// <param name="inputDto">销售退库相关信息</param>
        /// <returns></returns>
        public ReturnInfo RetiringAss(AssRetiringInputDto inputDto)
        {
            //
            ReturnInfo    RInfo = new ReturnInfo();
            StringBuilder sb    = new StringBuilder();

            string ValidateInfo = Helper.BasicValidate(inputDto).ToString();

            sb.Append(ValidateInfo);
            if (sb.Length == 0)
            {
                try
                {
                    //先根据SOID,得到<templateId,List<sn>>的Dictionary

                    //取得各个templateId有多少SN

                    //更改Row中的数值

                    //更改Assets表中的状态为在库,库位等对应修改
                    //根据sns,得到<templateId,sn数>的Dictionary
                    string SOID  = inputDto.SOID;
                    var    allSn = from outbound in SMOWMSDbContext.AssSalesOrderOutbounds
                                   join assetse in SMOWMSDbContext.Assetss on outbound.SN equals assetse.SN
                                   where assetse.ISINWAREHOUSE == 0 && outbound.SOID == SOID
                                   select outbound.SN;
                    List <string> allList = allSn.ToList();
                    //更改Row中的数值
                    List <string> bothList      = allList.Intersect(inputDto.SnList).ToList();
                    var           assDictionary = _AssetsRepository.GetCountBySnListEx(bothList);
                    foreach (var templateId in assDictionary.Keys)
                    {
                        var row = _assSoRowRepository.GetBySOIDandTemplateID(inputDto.SOID, templateId).FirstOrDefault();
                        if (row != null)
                        {
                            row.QUANTRETREATED = row.QUANTRETREATED + assDictionary[templateId];
                            _unitOfWork.RegisterDirty(row);
                        }
                    }
                    //更改Assets表中的状态为在库

                    var assets = _AssetsRepository.GetAll().Where(a => bothList.Contains(a.SN));

                    //遍历,修改状态为在库

                    foreach (var asset in assets)
                    {
                        //修改状态为在库
                        asset.ISINWAREHOUSE = 1;
                        asset.WAREID        = inputDto.WAREID;
                        asset.STID          = inputDto.STID;
                        asset.SLID          = inputDto.SLID;
                        _unitOfWork.RegisterDirty(asset);
                        //添加出货关联表
                        AssSalesOrderRetiring soRetiring = new AssSalesOrderRetiring()
                        {
                            SOID       = SOID,
                            SN         = asset.SN,
                            TEMPLATEID = asset.TEMPLATEID,
//                            Time = DateTime.Now
                        };
                        _unitOfWork.RegisterNew(soRetiring);

                        var pr = new AssProcessRecord
                        {
                            ASSID          = asset.ASSID,
                            CREATEDATE     = DateTime.Now,
                            CREATEUSER     = inputDto.UserId,
                            HANDLEDATE     = DateTime.Now,
                            HANDLEMAN      = inputDto.UserId,
                            MODIFYDATE     = DateTime.Now,
                            MODIFYUSER     = inputDto.UserId,
                            PROCESSCONTENT = inputDto.UserId + "退库了" + asset.ASSID + ",数量为1",
                            PROCESSMODE    = (int)PROCESSMODE.退库,
                            QUANTITY       = 1
                        };
                        _unitOfWork.RegisterNew(pr);
                    }
                    bool result = _unitOfWork.Commit();
                    RInfo.IsSuccess = result;
                    RInfo.ErrorInfo = "";
                    return(RInfo);
                }
                catch (Exception ex)
                {
                    _unitOfWork.Rollback();
                    sb.Append(ex.Message);
                    RInfo.IsSuccess = false;
                    RInfo.ErrorInfo = sb.ToString();
                    return(RInfo);
                }
            }
            else
            {
                RInfo.IsSuccess = false;
                RInfo.ErrorInfo = sb.ToString();
                return(RInfo);
            }
        }
Beispiel #17
0
        /// <summary>
        /// 添加借用单
        /// </summary>
        /// <param name="borrowOrderInput">借用单信息</param>
        /// <returns></returns>
        public ReturnInfo AddAssBorrowOrder(AssBorrowOrderInputDto borrowOrderInput)
        {
            //验证
            ReturnInfo    rInfo = new ReturnInfo();
            StringBuilder sb    = new StringBuilder();
            string        maxId = _assBorrowOrderRepository.GetMaxId();
            string        boId  = Helper.GenerateIDEx("BO", maxId);

            borrowOrderInput.BOID = boId;
            sb.Append(Helper.BasicValidate(borrowOrderInput).ToString());
            if (sb.Length == 0)
            {
                var assbo = Mapper.Map <AssBorrowOrderInputDto, AssBorrowOrder>(borrowOrderInput);
                assbo.CREATEDATE = DateTime.Now;
                assbo.MODIFYDATE = DateTime.Now;
                try
                {
                    _unitOfWork.RegisterNew(assbo);

                    foreach (var assId in borrowOrderInput.AssIds)
                    {
                        //修改Asset的状态
                        Assets assets = _assetsRepository.GetByID(assId).FirstOrDefault();
                        if (assets != null)
                        {
                            assets.STATUS      = (int)STATUS.借用中;
                            assets.CURRENTUSER = borrowOrderInput.BORROWER;

                            //得到借用人的区域,并修改资产的区域为借用人的区域
                            //                            var User = from user in _SMOSECDbContext.coreUsers
                            //                                where user.USER_ID == assbo.BORROWER
                            //                                select new coreUser()
                            //                                {
                            //
                            //                                };
                            var User = _SMOSECDbContext.coreUsers.Where(a => a.USER_ID == assbo.BORROWER)
                                       .AsNoTracking().FirstOrDefault();
                            if (User != null)
                            {
                                assets.LOCATIONID = User.USER_LOCATIONID;
                            }
                            else
                            {
                                //                                sb.Append("该用户不存在。");
                                throw new Exception("该用户不存在。");
                            }
                            _unitOfWork.RegisterDirty(assets);
                        }
                        //添加行项
                        var corow = new AssBorrowOrderRow
                        {
                            ASSID      = assId,
                            BOID       = boId,
                            CREATEDATE = DateTime.Now,
                            CREATEUSER = borrowOrderInput.CREATEUSER,
                            MODIFYDATE = DateTime.Now,
                            MODIFYUSER = borrowOrderInput.MODIFYUSER
                        };
                        _unitOfWork.RegisterNew(corow);

                        //添加处理记录
                        var pr = new AssProcessRecord
                        {
                            ASSID          = assId,
                            CREATEDATE     = DateTime.Now,
                            CREATEUSER     = borrowOrderInput.CREATEUSER,
                            HANDLEDATE     = DateTime.Now,
                            HANDLEMAN      = borrowOrderInput.BRHANDLEMAN,
                            MODIFYDATE     = DateTime.Now,
                            MODIFYUSER     = borrowOrderInput.MODIFYUSER,
                            PROCESSCONTENT = borrowOrderInput.BORROWER + "借用了" + assId,
                            PROCESSMODE    = (int)PROCESSMODE.借用,
                            QUANTITY       = 1
                        };
                        _unitOfWork.RegisterNew(pr);
                    }
                    bool result = _unitOfWork.Commit();
                    rInfo.IsSuccess = result;
                    rInfo.ErrorInfo = sb.ToString();
                    return(rInfo);
                }
                catch (Exception ex)
                {
                    _unitOfWork.Rollback();
                    sb.Append(ex.Message);
                    rInfo.IsSuccess = false;
                    rInfo.ErrorInfo = sb.ToString();
                    return(rInfo);
                }
            }
            else
            {
                rInfo.IsSuccess = false;
                rInfo.ErrorInfo = sb.ToString();
                return(rInfo);
            }
        }