예제 #1
0
        /// <summary>
        /// 得到用户的采购单列表
        /// </summary>
        /// <param name="UserId">用户编号</param>
        /// <returns></returns>
        public DataTable GetOrders(string UserId)
        {
            var area = _assPurchaseOrderRepository.GetAll();

            if (!string.IsNullOrEmpty(UserId))
            {
                area = area.Where(a => a.PURCHASER == UserId);
            }
            var list = from assPurchaseOrder in area
                       join user in SMOWMSDbContext.coreUsers on assPurchaseOrder.PURCHASER equals user.USER_ID
                       orderby assPurchaseOrder.CREATEDATE descending
                       select new AssPOListOutputDto()
            {
                REALID        = assPurchaseOrder.REALID,
                POID          = assPurchaseOrder.POID,
                NAME          = assPurchaseOrder.NAME,
                PURCHASER     = assPurchaseOrder.PURCHASER,
                PURCHASERNAME = user.USER_NAME,
                STATUS        = assPurchaseOrder.STATUS,
                STATUSNAME    = "",
                CREATEDATE    = assPurchaseOrder.CREATEDATE,
                Time          = ""
            };
            var temTable = LINQToDataTable.ToDataTable(list);

            foreach (DataRow row in temTable.Rows)
            {
                AssPurchaseOrderRow assPurchaseOrderRow = _assPoRowRepository.GetByPOID(row["POID"].ToString()).FirstOrDefault();
                AssTemplate         assTemplate         = _assTemplateRepository.GetById(assPurchaseOrderRow.TEMPLATEID).FirstOrDefault();
                row["Image"] = assTemplate.IMAGE;

                int status = int.Parse(row["STATUS"].ToString());
                row["STATUSNAME"] = Enum.GetName(typeof(PurchaseOrderStatus), status);
                row["Time"]       = DateTime.Parse(row["CREATEDATE"].ToString()).ToShortDateString();
            }
            return(temTable);
        }
예제 #2
0
        /// <summary>
        /// 更新采购单信息
        /// </summary>
        /// <param name="inputDto">采购单信息</param>
        /// <returns></returns>
        public ReturnInfo UpdatePurchaseOrderOnly(AssPurchaseOrderInputDto inputDto)
        {
            ReturnInfo    RInfo        = new ReturnInfo();
            StringBuilder sb           = new StringBuilder();
            string        ValidateInfo = Helper.BasicValidate(inputDto).ToString();

            sb.Append(ValidateInfo);
            if (sb.Length == 0)
            {
                try
                {
                    AssPurchaseOrder purchaseOrder = _assPurchaseOrderRepository.GetById(inputDto.POID).FirstOrDefault();
                    if (purchaseOrder != null)
                    {
                        purchaseOrder.VID        = inputDto.VID;
                        purchaseOrder.PURCHASER  = inputDto.PURCHASER;
                        purchaseOrder.REALID     = inputDto.REALID;
                        purchaseOrder.MODIFYUSER = inputDto.MODIFYUSER;
                        purchaseOrder.NAME       = inputDto.NAME;
                        purchaseOrder.MODIFYDATE = DateTime.Now;
                        _unitOfWork.RegisterDirty(purchaseOrder);
                    }
                    //得到原有行项的所有TemplateId
                    List <string> TempIds = _assPoRowRepository.GetAll().Where(a => a.POID == inputDto.POID)
                                            .Select(a => a.TEMPLATEID).ToList();
                    //得到现在行项的所有TemplateId
                    List <string> NowTempIds = inputDto.RowInputDtos.Select(a => a.TEMPLATEID).ToList();
                    //得到更新的
                    List <string> Update = TempIds.Intersect(NowTempIds).ToList();
                    //得到新增的
                    List <string> Add = NowTempIds.Except(TempIds).ToList();
                    //得到删除的
                    List <string> Delete = TempIds.Except(NowTempIds).ToList();

                    foreach (var templateId in Add)
                    {
                        var info = inputDto.RowInputDtos.Find(a => a.TEMPLATEID == templateId);
                        AssPurchaseOrderRow row = new AssPurchaseOrderRow
                        {
                            POID           = inputDto.POID,
                            CREATEDATE     = DateTime.Now,
                            CREATEUSER     = inputDto.CREATEUSER,
                            MODIFYDATE     = DateTime.Now,
                            MODIFYUSER     = inputDto.CREATEUSER,
                            QUANTPURCHASED = info.QUANT,
//                            Time = DateTime.Now,
                            REALPRICE      = info.PRICE,
                            QUANTRETREATED = 0,
                            QUANTSTORED    = 0,
                            STATUS         = (int)PurchaseOrderStatus.采购中,
                            TEMPLATEID     = templateId
                        };
                        _unitOfWork.RegisterNew(row);
                    }

                    foreach (var templateId in Delete)
                    {
                        AssPurchaseOrderRow row = _assPoRowRepository
                                                  .GetByPOIDandTemplateID(purchaseOrder.POID, templateId).FirstOrDefault();
                        if (row != null)
                        {
                            _unitOfWork.RegisterDeleted(row);
                        }
                    }

                    foreach (var templateId in Update)
                    {
                        var info = inputDto.RowInputDtos.Find(a => a.TEMPLATEID == templateId);
                        AssPurchaseOrderRow row = _assPoRowRepository
                                                  .GetByPOIDandTemplateID(purchaseOrder.POID, templateId).FirstOrDefault();
                        if (row != null)
                        {
                            row.POID           = inputDto.POID;
                            row.CREATEDATE     = DateTime.Now;
                            row.CREATEUSER     = inputDto.CREATEUSER;
                            row.MODIFYDATE     = DateTime.Now;
                            row.MODIFYUSER     = inputDto.CREATEUSER;
                            row.QUANTPURCHASED = info.QUANT;
                            row.REALPRICE      = info.PRICE;
//                            row.Time = DateTime.Now;
                            row.QUANTRETREATED = 0;
                            row.QUANTSTORED    = 0;
                            row.STATUS         = (int)PurchaseOrderStatus.采购中;
                            row.TEMPLATEID     = templateId;
                            _unitOfWork.RegisterDirty(row);
                        }
                    }
                    bool result = _unitOfWork.Commit();
                    RInfo.IsSuccess = result;
                    RInfo.ErrorInfo = inputDto.POID;
                    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);
            }
        }
예제 #3
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);
            }
        }
예제 #4
0
        /// <summary>
        /// 添加采购单
        /// </summary>
        /// <param name="inputDto">采购单数据</param>
        /// <returns></returns>
        public ReturnInfo AddPurchaseOrder(AssPurchaseOrderInputDto inputDto)
        {
            ReturnInfo    RInfo = new ReturnInfo();
            StringBuilder sb    = new StringBuilder();

            if (string.IsNullOrEmpty(inputDto.POID))
            {
                string MaxId = _assPurchaseOrderRepository.GetMaxId();
                string PoId  = Helper.GenerateIDEx2("P", MaxId);
                //产生资产编号
                inputDto.POID = PoId;
            }
            string ValidateInfo = Helper.BasicValidate(inputDto).ToString();

            sb.Append(ValidateInfo);
            if (sb.Length == 0)
            {
                try
                {
                    AssPurchaseOrder purchaseOrder = Mapper.Map <AssPurchaseOrderInputDto, AssPurchaseOrder>(inputDto);
                    purchaseOrder.STATUS     = (int)PurchaseOrderStatus.采购中;
                    purchaseOrder.CREATEDATE = DateTime.Now;
                    purchaseOrder.MODIFYDATE = DateTime.Now;
                    _unitOfWork.RegisterNew(purchaseOrder);
                    foreach (var inputDtoRow in inputDto.RowInputDtos)
                    {
                        AssPurchaseOrderRow row = new AssPurchaseOrderRow
                        {
                            QUANTPURCHASED = inputDtoRow.QUANT,
                            REALPRICE      = inputDtoRow.PRICE,
                            TEMPLATEID     = inputDtoRow.TEMPLATEID,
                            STATUS         = (int)PurchaseOrderStatus.采购中,
                            CREATEUSER     = inputDtoRow.CREATEUSER,
                            MODIFYUSER     = inputDtoRow.MODIFYUSER,
                            CREATEDATE     = DateTime.Now,
                            MODIFYDATE     = DateTime.Now,
//                            Time = DateTime.Now,
                            POID = inputDto.POID
                        };
                        _unitOfWork.RegisterNew(row);
                    }
                    bool result = _unitOfWork.Commit();
                    RInfo.IsSuccess = result;
                    RInfo.ErrorInfo = inputDto.POID;
                    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);
            }
        }