/// <summary> /// 根据手术单号查询耗材详情 /// </summary> /// <param name="pageDataApo"></param> /// <param name="stockGoodsNum">商品有库存的数量</param> /// <param name="notStockGoodsNum">商品库存不足的数量</param> /// <returns></returns> public BasePageDataDto<SurgeryOrderdtlDto> GetSurgeryOrderdtlDto(SurgeryOrderApo pageDataApo, out int stockGoodsNum, out int notStockGoodsNum) { List<SurgeryOrderdtlDto> surgeryOrderdtlDtos = FetchOrderDal.GetSurgeryOrderdtlDto(pageDataApo, out int totalCount); //手术单耗材详情拼接当前柜子对应商品库存数量 surgeryOrderdtlDtos.ForEach(it => { it.stock_num = pageDataApo.GoodsDtos.Where(goodsDto => goodsDto.fetch_type == (int)RequisitionAttribute.有单领用 && goodsDto.goods_code == it.goods_code).Count(); }); //库存满足的商品的数量 stockGoodsNum = surgeryOrderdtlDtos.Where(surgeryOrderdtlDto => surgeryOrderdtlDto.not_fetch_num <= surgeryOrderdtlDto.stock_num ).Count(); //库存不满足满足的商品的数量 notStockGoodsNum = surgeryOrderdtlDtos.Count() - stockGoodsNum; return new BasePageDataDto<SurgeryOrderdtlDto>() { PageIndex = pageDataApo.PageIndex, PageSize = pageDataApo.PageSize, Data = surgeryOrderdtlDtos, TotalCount = totalCount }; }
/// <summary> /// 根据手术单号查询对应手术单号 /// </summary> /// <param name="pageDataApo">带分页的pageDataApo</param> /// <returns></returns> public BasePageDataDto<SurgeryOrderDto> GetSurgeryOrderDto(SurgeryOrderApo pageDataApo) { return new BasePageDataDto<SurgeryOrderDto>() { PageIndex = pageDataApo.PageIndex, PageSize = pageDataApo.PageSize, Data = FetchOrderDal.GetSurgeryOrderDto(pageDataApo, out int totalCount), TotalCount = totalCount }; }
/// <summary> /// 根据手术单号查询耗材详情(临时显示,不做入库逻辑) /// </summary> /// <param name="pageDataApo"></param> /// <param name="not_fetch_goods_num">仍然待领取商品的数量</param> /// <returns></returns> public BasePageDataDto<SurgeryOrderdtlDto> GetSurgeryOrderdtlOperateDto(SurgeryOrderApo pageDataApo, out int notFetchGoodsNum) { //获取手术单详情 List<SurgeryOrderdtlDto> surgeryOrderdtlDtos = FetchOrderDal.GetSurgeryOrderdtlDto(pageDataApo, out int totalCount); //获取一次操作变化的商品集 List<GoodsDto> operateGoodsDtos = pageDataApo.OperateGoodsDtos; //获取当前库存商品集 List<GoodsDto> goodsDtos = pageDataApo.GoodsDtos; //手术单耗材详情拼接当前柜子对应商品库存数量 surgeryOrderdtlDtos.ForEach(it => { //对应正常领取商品数量 int normalOperateCount = operateGoodsDtos.Where(goodsDto => goodsDto.goods_code == it.goods_code && goodsDto.exception_flag == (int)ExceptionFlag.正常).Count(); //对应商品的库存数 int goodsStockCount = goodsDtos.Where(goodsDto => goodsDto.fetch_type == (int)RequisitionAttribute.有单领用 && goodsDto.goods_code == it.goods_code).Count(); //已经领用数量 it.already_fetch_num = normalOperateCount; int real_not_fetch_num = it.not_fetch_num - it.already_fetch_num; //根据操作的商品数据临时调整代取数量(会有多取的,所以默认多取,也满足正常取) it.not_fetch_num = real_not_fetch_num >= 0 ? real_not_fetch_num : 0; //如果取多了,则显示这类商品异常(此异常应该为警告,所以默认不操作,就是正确的) if (real_not_fetch_num < 0) { it.exception_flag_description = ExceptionFlag.异常.ToString(); it.exception_description = ExceptionDescription.该商品已经超过待领数量.ToString(); } it.stock_num = goodsStockCount; }); notFetchGoodsNum = surgeryOrderdtlDtos.Where(it => it.not_fetch_num > 0).Count(); return new BasePageDataDto<SurgeryOrderdtlDto>() { PageIndex = pageDataApo.PageIndex, PageSize = pageDataApo.PageSize, //过滤无需代取的商品,此步骤留给前端做,保证处理后数据的完整性,以便可直接做入库修改逻辑 //Data = surgeryOrderdtlDtos.Where(it=>it.not_fetch_num > 0).ToList(), Data = surgeryOrderdtlDtos, TotalCount = totalCount }; }
/// <summary> /// 确认时,修改手术领用详情数据 /// </summary> /// <param name="replenishSubOrderid">上架单id</param> /// <param name="datasDto">当前操作数据dto</param> /// <returns></returns> public bool UpdateSurgeryOrderdtl(SurgeryOrderApo pageDataApo, List<SurgeryOrderdtlDto> datasDto) { bool ret = FetchOrderDal.UpdateSurgeryOrderdtl(datasDto); //生成有单领用单信息和库存变化单信息 if (ret) { ret = InsertFetchAndGoodsChangeInfo(pageDataApo.OperateGoodsDtos, RequisitionType.有单手术领用, pageDataApo.SurgeryOrderCode); } return ret; }
/// <summary> /// 根据手术单号查询耗材详情(全部显示) /// </summary> /// <param name="pageDataApo"></param> /// <param name="stockGoodsNum">商品有库存的数量</param> /// <param name="notStockGoodsNum">商品库存不足的数量</param> /// <returns></returns> public BasePageDataDto<SurgeryOrderdtlDto> GetSurgeryOrderdtlDto(SurgeryOrderApo pageDataApo) { List<SurgeryOrderdtlDto> surgeryOrderdtlDtos = FetchOrderDal.GetSurgeryOrderdtlAllDto(pageDataApo, out int totalCount); return new BasePageDataDto<SurgeryOrderdtlDto>() { PageIndex = pageDataApo.PageIndex, PageSize = pageDataApo.PageSize, Data = surgeryOrderdtlDtos, TotalCount = totalCount }; }
/// <summary> /// 根据手术单号查询耗材详情(全部) /// </summary> /// <param name="surgeryOrderCode"></param> /// <returns></returns> public List <SurgeryOrderdtlDto> GetSurgeryOrderdtlAllDto(SurgeryOrderApo pageDataApo, out int totalCount) { totalCount = 0; List <SurgeryOrderdtlDto> data; //查询语句(查询全部出手术单待领用的耗材) var queryable = Db.Queryable <SurgeryOrderdtl>() .Where(it => it.surgery_order_code == pageDataApo.SurgeryOrderCode) .Select <SurgeryOrderdtlDto>(); //如果小于0,默认查全部 if (pageDataApo.PageSize > 0) { data = queryable.ToPageList(pageDataApo.PageIndex, pageDataApo.PageSize, ref totalCount); } else { data = queryable.ToList(); totalCount = data.Count(); } return(data); }
/// <summary> /// 根据手术单号查询对应手术单号 /// </summary> /// <param name="pageDataApo">带分页的pageDataApo</param> /// <param name="totalCount">返回的总数</param> /// <returns></returns> public List <SurgeryOrderDto> GetSurgeryOrderDto(SurgeryOrderApo pageDataApo, out int totalCount) { totalCount = 0; List <SurgeryOrderDto> data; //查询语句 var queryable = Db.Queryable <SurgeryOrder>() .Where(it => it.code.StartsWith(pageDataApo.SurgeryOrderCode)) .Select <SurgeryOrderDto>(); //如果小于0,默认查全部 if (pageDataApo.PageSize > 0) { data = queryable.ToPageList(pageDataApo.PageIndex, pageDataApo.PageSize, ref totalCount); } else { data = queryable.ToList(); totalCount = data.Count(); } return(data); }