/// <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); } }
/// <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("不存在该资产"); } }
/// <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); }
/// <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; } }
/// <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; } }
/// <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); } }
/// <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); } }
// /// <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); } }
/// <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); } }
/// <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); } }
/// <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); } }
/// <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); }
/// <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); } }
/// <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); } }