Commit ee015e96 authored by liudong1993's avatar liudong1993

耗材入库

parent dedea2ef
......@@ -36,9 +36,9 @@ namespace REBORN.Common.Enum
[EnumField("耗材采购")]
SuppliesPurchase = 5,
/// <summary>
/// 耗材成本
/// 耗材费用(直接制费用单)
/// </summary>
[EnumField("耗材成本")]
[EnumField("耗材费用")]
SuppliesCost = 6,
/// <summary>
/// 耗材出库
......
......@@ -113,5 +113,10 @@ namespace Property.Model.Entity
/// 排序
/// </summary>
public int? Sort { get; set; }
/// <summary>
/// 费用类型 1 采购 2 费用 (主对应制财务单据时,费用类型不同)
/// </summary>
public int FeeType { get; set; }
}
}
\ No newline at end of file
......@@ -202,5 +202,10 @@ namespace Property.Model.Entity
/// 商品分类名称
/// </summary>
public string GoodsCategoryName { get; set; }
/// <summary>
/// 费用类型 1成本 2费用 (对应制单时使用的费用类型)
/// </summary>
public int FeeType { get; set; }
}
}
\ No newline at end of file
using System;
using REBORN.Common.AOP;
using REBORN.Common.Plugin;
namespace Property.Model.Entity
{
/// <summary>
/// 耗材采购实体
/// </summary>
[Serializable]
[DB(ConnectionName = "PropertyConnection")]
public class RB_Supplies_Procurement
{
/// <summary>
/// Id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 采购仓库
/// </summary>
public int WareHouseId
{
get;
set;
}
/// <summary>
/// 总成本
/// </summary>
public decimal TotalCostMoney { get; set; }
/// <summary>
/// 总数量
/// </summary>
public int TotalNumber { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Remark { get; set; }
/// <summary>
/// 状态 0 正常 1删除
/// </summary>
public int Status { get; set; }
/// <summary>
/// 公司
/// </summary>
public int RB_Branch_Id { get; set; }
/// <summary>
/// 集团
/// </summary>
public int RB_Group_Id { get; set; }
/// <summary>
/// CreateBy
/// </summary>
public int CreateBy { get; set; }
/// <summary>
/// CreateDate
/// </summary>
public DateTime CreateDate { get; set; }
/// <summary>
/// UpdateBy
/// </summary>
public int UpdateBy { get; set; }
/// <summary>
/// UpdateDate
/// </summary>
public DateTime UpdateDate { get; set; }
/// <summary>
/// 财务单据id
/// </summary>
public int FinanceId { get; set; }
/// <summary>
/// 供应商id
/// </summary>
public int SupplierId { get; set; }
/// <summary>
/// 供应商名称
/// </summary>
public string SupplierName { get; set; }
/// <summary>
/// 入库状态 1未入库 2部分入库 3已入库
/// </summary>
public int StockInStatus { get; set; }
/// <summary>
/// 校区id
/// </summary>
public int SchoolId { get; set; }
/// <summary>
/// 请购单id
/// </summary>
public int BuyingRequisitionId { get; set; }
}
}
\ No newline at end of file
using System;
using REBORN.Common.AOP;
using REBORN.Common.Plugin;
namespace Property.Model.Entity
{
/// <summary>
/// 耗材采购明细实体
/// </summary>
[Serializable]
[DB(ConnectionName = "PropertyConnection")]
public class RB_Supplies_ProcurementDetail
{
/// <summary>
/// Id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 采购单id
/// </summary>
public int ProcurementId { get; set; }
/// <summary>
/// 物料id
/// </summary>
public int MaterialId { get; set; }
/// <summary>
/// 采购数量
/// </summary>
public int Number { get; set; }
/// <summary>
/// 成本价格
/// </summary>
public decimal CostMoney { get; set; }
/// <summary>
/// 状态 0 正常 1删除
/// </summary>
public int Status { get; set; }
/// <summary>
/// 公司
/// </summary>
public int RB_Branch_Id { get; set; }
/// <summary>
/// 集团
/// </summary>
public int RB_Group_Id { get; set; }
/// <summary>
/// CreateBy
/// </summary>
public int CreateBy { get; set; }
/// <summary>
/// CreateDate
/// </summary>
public DateTime CreateDate { get; set; }
/// <summary>
/// 已入库的数量
/// </summary>
public int StockInNum { get; set; }
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using Property.Model.Entity;
using REBORN.Common.AOP;
namespace Property.Model.Extend
{
/// <summary>
/// 耗材采购明细扩展实体
/// </summary>
[Serializable]
[DB(ConnectionName = "PropertyConnection")]
public class RB_Supplies_ProcurementDetail_Extend : RB_Supplies_ProcurementDetail
{
/// <summary>
/// 采购ids
/// </summary>
public string ProcurementIds { get; set; }
/// <summary>
/// 分类名称
/// </summary>
public string CategoryName { get; set; }
/// <summary>
/// 分类id
/// </summary>
public int CategoryId { get; set; }
/// <summary>
/// 待入库数量
/// </summary>
public int WaitStockInNum { get; set; }
/// <summary>
/// 物料名称
/// </summary>
public string SuppliesName { get; set; }
/// <summary>
/// 物料编码
/// </summary>
public string SuppliesNum { get; set; }
/// <summary>
/// 品牌
/// </summary>
public string BrandName { get; set; }
/// <summary>
/// 单位
/// </summary>
public string Units { get; set; }
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using Property.Model.Entity;
using REBORN.Common.AOP;
namespace Property.Model.Extend
{
/// <summary>
/// 耗材采购扩展实体
/// </summary>
[Serializable]
[DB(ConnectionName = "PropertyConnection")]
public class RB_Supplies_Procurement_Extend : RB_Supplies_Procurement
{
/// <summary>
/// 采购单Id
/// </summary>
public int ProcurementId { get; set; }
/// <summary>
/// 账户类型
/// </summary>
public int IsPublic { get; set; }
/// <summary>
/// 开始时间
/// </summary>
public string StartTime { get; set; }
/// <summary>
/// 结束时间
/// </summary>
public string EndTime { get; set; }
/// <summary>
/// 发起人
/// </summary>
public string CreateByName { get; set; }
/// <summary>
/// 学校名称
/// </summary>
public string SchoolName { get; set; }
/// <summary>
/// 物料名称
/// </summary>
public string SuppliesName { get; set; }
/// <summary>
/// 仓库名称
/// </summary>
public string WareHouseName { get; set; }
/// <summary>
/// 入库日期
/// </summary>
public string StockInDate { get; set; }
/// <summary>
/// 明细列表
/// </summary>
public List<RB_Supplies_ProcurementDetail_Extend> DetailList { get; set; }
}
}
\ No newline at end of file
......@@ -147,6 +147,7 @@ namespace Property.Module.FixedAssets
{ nameof(RB_Property_Category_Extend.Tier),demodel.Tier},
{ nameof(RB_Property_Category_Extend.UpdateBy),demodel.UpdateBy},
{ nameof(RB_Property_Category_Extend.UpdateDate),demodel.UpdateDate},
{ nameof(RB_Property_Category_Extend.FeeType),demodel.FeeType},
};
List<WhereHelper> whereHelpers = new List<WhereHelper>() {
new WhereHelper(){
......@@ -3521,10 +3522,12 @@ namespace Property.Module.FixedAssets
public object GetPropertyIndexTask(UserInfo userInfo)
{
object Robj = new object();
//请购我审核
//请购我审核
int BRWaitCount = property_BuyingRequisitionRepository.GetBuyingRequisitionWaitMyAuditCount(new RB_Property_BuyingRequisition_Extend() { RB_Group_Id = userInfo.RB_Group_id, AuditEmId = userInfo.EmployeeId });
//请购我处理
//请购我处理
int BRWaitDeal = property_BuyingRequisitionRepository.GetBuyingRequisitionWaitMyAuditCount(new RB_Property_BuyingRequisition_Extend() { RB_Group_Id = userInfo.RB_Group_id, ManagersId = userInfo.EmployeeId, IsWaitDeal = 1 });
//请购驳回
int BRRejectCount = property_BuyingRequisitionRepository.GetBuyingRequisitionWaitMyAuditCount(new RB_Property_BuyingRequisition_Extend() { RB_Group_Id = userInfo.RB_Group_id, CreateBy = userInfo.EmployeeId, BuyStatus = BuyingRequisitionStatusEnum.Reject });
//待我签字
int SignCount = useReceiveRepository.GetPropertyWaitMySignCount(new RB_Property_UseReceive_Extend() { RB_Group_Id = userInfo.RB_Group_id, AuditEmId = userInfo.EmployeeId });
//待我审核
......@@ -3555,7 +3558,10 @@ namespace Property.Module.FixedAssets
RejectCount,
MyProperty,
MaturityCount,
SafeCount
SafeCount,
BRWaitCount,
BRWaitDeal,
BRRejectCount
};
}
......@@ -4445,6 +4451,9 @@ namespace Property.Module.FixedAssets
if (bmodel.ProcurementId > 0) {
return ApiResult.ParamIsNull("已经生成采购,无法再次生成");
}
if (bmodel.Type != 1) {
return ApiResult.ParamIsNull("该请购单不是资产类型");
}
}
var configModel = finance_ConfigRepository.GetList(new RB_Finance_Config_ViewModel() { Group_Id = userInfo.RB_Group_id, Type = FinanceConfigTypeEnum.AssetPurchase }).FirstOrDefault();
if (configModel == null) { return ApiResult.Failed("未配置费用/流程信息,请联系管理员"); }
......
......@@ -107,6 +107,31 @@ namespace Property.Module.FixedAssets
/// 有效期
/// </summary>
private readonly RB_Supplies_StockInValidityRepository supplies_StockInValidityRepository = new RB_Supplies_StockInValidityRepository();
/// <summary>
/// 耗材采购
/// </summary>
private readonly RB_Supplies_ProcurementRepository supplies_ProcurementRepository = new RB_Supplies_ProcurementRepository();
/// <summary>
/// 耗材采购明细
/// </summary>
private readonly RB_Supplies_ProcurementDetailRepository supplies_ProcurementDetailRepository = new RB_Supplies_ProcurementDetailRepository();
/// <summary>
/// 请购单id
/// </summary>
private readonly RB_Property_BuyingRequisitionRepository property_BuyingRequisitionRepository = new RB_Property_BuyingRequisitionRepository();
/// <summary>
/// 财务流程费用配置
/// </summary>
private readonly RB_Finance_ConfigRepository finance_ConfigRepository = new RB_Finance_ConfigRepository();
/// <summary>
/// 供应商
/// </summary>
private readonly RB_Property_SupplierRepository property_SupplierRepository = new RB_Property_SupplierRepository();
/// <summary>
/// 付款对象
/// </summary>
private readonly RB_ClientBankAccountRepository clientBankAccountRepository = new RB_ClientBankAccountRepository();
//流程模板
private readonly WorkFlowModule workFlowModule = new WorkFlowModule();
......@@ -219,6 +244,7 @@ namespace Property.Module.FixedAssets
dmodel.SafetyStock = demodel.SafetyStock;
dmodel.SupplierName = demodel.SupplierName;
dmodel.SuppliesModel = demodel.SuppliesModel;
dmodel.FeeType = demodel.FeeType;
bool flag = supplies_MaterialRepository.Update(dmodel);
return flag;
}
......@@ -3752,5 +3778,480 @@ namespace Property.Module.FixedAssets
}
#endregion
#region 耗材采购
/// <summary>
/// 获取耗材采购分页列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="demodel"></param>
/// <param name="count"></param>
/// <returns></returns>
public List<RB_Supplies_Procurement_Extend> GetSuppliesProcurementPageList(int pageIndex, int pageSize, RB_Supplies_Procurement_Extend demodel, out long count)
{
var list = supplies_ProcurementRepository.GetPageList(pageIndex, pageSize, demodel, out count);
if (list.Any())
{
string procurementIds = string.Join(",", list.Select(x => x.Id));
var dlist = supplies_ProcurementDetailRepository.GetList(new RB_Supplies_ProcurementDetail_Extend() { RB_Group_Id = demodel.RB_Group_Id, ProcurementIds = procurementIds });
if (dlist.Any())
{
string categoryIds = string.Join(",", dlist.Select(x => x.CategoryId));
var cateList = property_CategoryRepository.GetList(new RB_Property_Category_Extend() { RB_Group_Id = demodel.RB_Group_Id, CategoryIdStr = categoryIds });
foreach (var item in dlist)
{
item.CategoryName = cateList.Where(x => x.Id == item.CategoryId).FirstOrDefault()?.Name ?? "";
}
}
string userIds = string.Join(",", list.Select(x => x.CreateBy).Distinct());
var emplist = employeeRepository.GetEmployeeListRepository(new Employee_ViewModel() { Group_Id = demodel.RB_Group_Id, QIds = userIds });
string schoolIds = string.Join(",", list.Select(x => x.SchoolId).Distinct());
var slist = schoolRepository.GetSchoolListRepository(new RB_School_ViewModel() { Group_Id = demodel.RB_Group_Id, QSIds = schoolIds });
string wareHouseIds = string.Join(",", list.Select(x => x.WareHouseId).Distinct());
var wlist = supplies_WareHouseRepository.GetList(new RB_Supplies_WareHouse_Extend() { RB_Group_Id = demodel.RB_Group_Id, WareHouseIdStr = wareHouseIds });
foreach (var item in list)
{
item.DetailList = dlist.Where(x => x.ProcurementId == item.Id).ToList();
item.CreateByName = emplist.Where(x => x.Id == item.CreateBy).FirstOrDefault()?.EmployeeName ?? "";
item.SchoolName = slist.Where(x => x.SId == item.SchoolId).FirstOrDefault()?.SName ?? "";
item.WareHouseName = wlist.Where(x => x.Id == item.WareHouseId).FirstOrDefault()?.Name ?? "";
}
}
return list;
}
/// <summary>
/// 获取耗材采购详情
/// </summary>
/// <param name="procurementId"></param>
/// <returns></returns>
public RB_Supplies_Procurement_Extend GetSuppliesProcurementInfo(int procurementId)
{
var pmodel = supplies_ProcurementRepository.GetEntity<RB_Supplies_Procurement_Extend>(procurementId);
if (pmodel!=null)
{
var dlist = supplies_ProcurementDetailRepository.GetList(new RB_Supplies_ProcurementDetail_Extend() { RB_Group_Id = pmodel.RB_Group_Id, ProcurementId = procurementId });
if (dlist.Any())
{
string categoryIds = string.Join(",", dlist.Select(x => x.CategoryId));
var cateList = property_CategoryRepository.GetList(new RB_Property_Category_Extend() { RB_Group_Id = pmodel.RB_Group_Id, CategoryIdStr = categoryIds });
foreach (var item in dlist)
{
item.CategoryName = cateList.Where(x => x.Id == item.CategoryId).FirstOrDefault()?.Name ?? "";
}
}
pmodel.DetailList = dlist;
pmodel.CreateByName = employeeRepository.GetEmployeeInfo(pmodel.CreateBy)?.EmployeeName ?? "";
pmodel.SchoolName = schoolRepository.GetEntity(pmodel.SchoolId)?.SName ?? "";
pmodel.WareHouseName = supplies_WareHouseRepository.GetEntity(pmodel.WareHouseId)?.Name ?? "";
}
return pmodel;
}
/// <summary>
/// 新增耗材采购单
/// </summary>
/// <param name="demodel"></param>
/// <param name="userInfo"></param>
/// <returns></returns>
public ApiResult SetSuppliesProcurementInfo(RB_Supplies_Procurement_Extend demodel, UserInfo userInfo)
{
if (demodel.BuyingRequisitionId > 0)
{
var bmodel = property_BuyingRequisitionRepository.GetEntity(demodel.BuyingRequisitionId);
if (bmodel == null) { return ApiResult.ParamIsNull("请购单不存在"); }
if (bmodel.BuyStatus != BuyingRequisitionStatusEnum.Purchased) { return ApiResult.ParamIsNull("请购单未通过,无法生成采购"); }
if (bmodel.ManagersId != userInfo.EmployeeId) { return ApiResult.ParamIsNull("不是指定经办人,无法生成采购"); }
if (bmodel.ProcurementId > 0)
{
return ApiResult.ParamIsNull("已经生成采购,无法再次生成");
}
if (bmodel.Type != 2)
{
return ApiResult.ParamIsNull("该请购单不是耗材类型");
}
}
var configModel = finance_ConfigRepository.GetList(new RB_Finance_Config_ViewModel() { Group_Id = userInfo.RB_Group_id, Type = FinanceConfigTypeEnum.SuppliesPurchase }).FirstOrDefault();
if (configModel == null) { return ApiResult.Failed("未配置费用/流程信息,请联系管理员"); }
var configModel2 = finance_ConfigRepository.GetList(new RB_Finance_Config_ViewModel() { Group_Id = userInfo.RB_Group_id, Type = FinanceConfigTypeEnum.SuppliesCost }).FirstOrDefault();
if (configModel2 == null) { return ApiResult.Failed("未配置费用/流程信息,请联系管理员"); }
//查询供应商
var supplierModel = property_SupplierRepository.GetEntity(demodel.SupplierId);
if (supplierModel == null || supplierModel.ClientID <= 0)
{
return ApiResult.Failed("供应商不存在/供应商未绑定账户信息");
}
var clientModel = clientBankAccountRepository.GetEntity(supplierModel.ClientID);
if (clientModel == null)
{
return ApiResult.Failed("账户信息不存在");
}
//先生成采购信息
demodel.SupplierName = supplierModel.Name;
demodel.TotalNumber = demodel.DetailList.Sum(x => x.Number);
demodel.TotalCostMoney = demodel.DetailList.Sum(x => x.CostMoney);
demodel.StockInStatus = 1;
int ProcurementId = supplies_ProcurementRepository.Insert(demodel);
if (ProcurementId > 0)
{
//插入采购明细
foreach (var item in demodel.DetailList)
{
supplies_ProcurementDetailRepository.Insert(new RB_Supplies_ProcurementDetail()
{
Id = 0,
MaterialId = item.MaterialId,
CostMoney = item.CostMoney,
CreateBy = demodel.CreateBy,
CreateDate = demodel.CreateDate,
Number = item.Number,
ProcurementId = ProcurementId,
RB_Branch_Id = demodel.RB_Branch_Id,
RB_Group_Id = demodel.RB_Group_Id,
Status = 0,
StockInNum = 0
});
}
//再生成财务单据
#region 生成财务单据
#region 查询所有耗材信息
string suppliesIds = string.Join(",", demodel.DetailList.Select(x => x.MaterialId).Distinct());
var materialList = supplies_MaterialRepository.GetList(new RB_Supplies_Material_Extend() { RB_Group_Id = userInfo.RB_Group_id, SuppliesIdStr = suppliesIds });
string categoryIds = string.Join(",", materialList.Select(x => x.CategoryId).Distinct());
var cateList = property_CategoryRepository.GetList(new RB_Property_Category_Extend() { RB_Group_Id = demodel.RB_Group_Id, CategoryIdStr = categoryIds });
#endregion
var detailList = new List<object>();
foreach (var item in demodel.DetailList)
{
var mModel = materialList.Where(x => x.Id == item.MaterialId).FirstOrDefault();
int CostTypeId = configModel.CostTypeId;
if ((cateList.Where(x => x.Id == mModel.CategoryId).FirstOrDefault()?.FeeType ?? 1) == 2)
{
CostTypeId = configModel2.CostTypeId;
}
detailList.Add(new
{
CostTypeId,
item.Number,
OriginalMoney = item.CostMoney * item.Number,
UnitPrice = item.CostMoney,
Remark = mModel.Name + "(" + mModel.SuppliesNum + ") " + mModel.BrandName + " " + mModel.CategoryName
});
}
var financeObj = new
{
demodel.CreateBy,
demodel.IsPublic,
ClientType = 10,
ClientID = clientModel.ID,
configModel.CurrencyId,
WBMoney = demodel.TotalCostMoney,
RB_Branch_Id = demodel.SchoolId,
PayDate = DateTime.Now.ToString("yyyy-MM-dd"),
TemplateId = configModel.TempleteId,
OrderSource = 17,
OtherType = 32,
Remark = DateTime.Now.ToString("yyyy年MM月dd日") + "生成财务单据",
detailList,
RB_Depart_Id = userInfo.RB_Department_Id,
ReFinanceId = ProcurementId
};
string sign = EncryptionHelper.AesEncrypt(JsonHelper.Serialize(financeObj), Config.FinanceKey);
var resultInfo = new
{
msg = sign,
};
string apiResult = HttpHelper.HttpPost(Config.PaymentFinanceApi, JsonHelper.Serialize(resultInfo), "");
JObject parmsJob = JObject.Parse(apiResult);
string resultCode = parmsJob.GetStringValue("resultCode");
int frid = parmsJob.GetInt("data", 0);
#endregion
if (resultCode == "1" && frid > 0)
{
string Remark = "";
//更新请购单 采购id + 单据id
if (demodel.BuyingRequisitionId > 0)
{
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_Property_BuyingRequisition.ProcurementId),ProcurementId},
{ nameof(RB_Property_BuyingRequisition.FinanceId),frid},
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Property_BuyingRequisition.Id),
FiledValue=demodel.BuyingRequisitionId,
OperatorEnum=OperatorEnum.Equal
}
};
property_BuyingRequisitionRepository.Update(keyValues, wheres);
Remark = "通过请购单【" + demodel.BuyingRequisitionId + "】生成资产采购单;";
}
//更新采购信息 单据id
Dictionary<string, object> keyValues1 = new Dictionary<string, object>() {
{ nameof(RB_Supplies_Procurement.FinanceId),frid},
{ nameof(RB_Supplies_Procurement.Remark), Remark + " 自动生成财务单据" + frid},
};
List<WhereHelper> wheres1 = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Supplies_Procurement.Id),
FiledValue=ProcurementId,
OperatorEnum=OperatorEnum.Equal
}
};
supplies_ProcurementRepository.Update(keyValues1, wheres1);
}
else
{
string Remark = "";
//更新请购单 采购id + 单据id
if (demodel.BuyingRequisitionId > 0)
{
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_Property_BuyingRequisition.ProcurementId),ProcurementId},
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Property_BuyingRequisition.Id),
FiledValue=demodel.BuyingRequisitionId,
OperatorEnum=OperatorEnum.Equal
}
};
property_BuyingRequisitionRepository.Update(keyValues, wheres);
Remark = "通过请购单【" + demodel.BuyingRequisitionId + "】生成资产采购单;";
}
//更新采购信息 单据id
Dictionary<string, object> keyValues1 = new Dictionary<string, object>() {
{ nameof(RB_Supplies_Procurement.FinanceId),frid},
{ nameof(RB_Supplies_Procurement.Remark), Remark + " 自动生成财务单据失败,请手动生成"},
};
List<WhereHelper> wheres1 = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Supplies_Procurement.Id),
FiledValue=ProcurementId,
OperatorEnum=OperatorEnum.Equal
}
};
supplies_ProcurementRepository.Update(keyValues1, wheres1);
}
return ApiResult.Success();
}
return ApiResult.Failed();
}
/// <summary>
/// 耗材采购入库
/// </summary>
/// <param name="demodel"></param>
/// <param name="userInfo"></param>
/// <returns></returns>
public ApiResult SetSuppliesProcurementStockIn(RB_Supplies_Procurement_Extend demodel, UserInfo userInfo)
{
var opModel = supplies_ProcurementRepository.GetEntity(demodel.ProcurementId);
if (opModel == null) { return ApiResult.Failed("采购单不存在"); }
if (opModel.StockInStatus == 3) { return ApiResult.Failed("采购单已入库完毕!"); }
var dlist = supplies_ProcurementDetailRepository.GetList(new RB_Supplies_ProcurementDetail_Extend() { RB_Group_Id = userInfo.RB_Group_id, ProcurementId = demodel.ProcurementId });
decimal TotalMoney = 0;
foreach (var item in demodel.DetailList)
{
var dmodel = dlist.Where(x => x.Id == item.Id).FirstOrDefault();
if (dmodel == null) { return ApiResult.Failed("采购单明细id有误"); }
if (dmodel.Number < dmodel.StockInNum + item.WaitStockInNum)
{
return ApiResult.Failed("入库数据不正确,请核实后再试");
}
item.MaterialId = dmodel.MaterialId;
item.CostMoney = dmodel.CostMoney;
dmodel.StockInNum += item.WaitStockInNum;
TotalMoney += dmodel.CostMoney * item.WaitStockInNum;
}
//初始化入库单信息
var StockInModel = new RB_Supplies_StockIn()
{
Id = 0,
CreateBy = userInfo.EmployeeId,
CreateDate = DateTime.Now,
Money = TotalMoney,
ProcurementId = demodel.ProcurementId,
RB_Branch_Id = userInfo.RB_Branch_id,
RB_Group_Id = userInfo.RB_Group_id,
Remark = "采购单(" + demodel.ProcurementId + ")入库,自动生成入库单",
Status = 0,
StockInDate = Convert.ToDateTime(demodel.StockInDate),
StockInNum = "",
StockInState = StockInStatusEnum.StockIn,
SupplierName = opModel.SupplierName,
WarehouseId = opModel.WareHouseId,
UpdateBy = userInfo.EmployeeId,
UpdateDate = DateTime.Now,
TempleteId = 0
};
int Id = supplies_StockInRepository.Insert(StockInModel);
if (Id > 0)
{
//编码自动生成
string BMStr = Id.ToString();
if (BMStr.Length < 5)
{
switch (BMStr.Length)
{
case 1:
BMStr = "0000" + BMStr; break;
case 2:
BMStr = "000" + BMStr; break;
case 3:
BMStr = "00" + BMStr; break;
case 4:
BMStr = "0" + BMStr; break;
}
}
BMStr = "RK" + DateTime.Now.ToString("yyyyMMdd") + BMStr;
Dictionary<string, object> files = new Dictionary<string, object>() {
{ nameof(RB_Supplies_StockIn.StockInNum),BMStr}
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Supplies_StockIn.Id),
FiledValue=Id,
OperatorEnum=OperatorEnum.Equal
}
};
supplies_StockInRepository.Update(files, wheres);
//新增明细
foreach (var item in demodel.DetailList)
{
supplies_StockInDetailRepository.Insert(new RB_Supplies_StockInDetail()
{
CreateBy = userInfo.EmployeeId,
CreateDate = DateTime.Now,
Money = item.CostMoney * item.WaitStockInNum,
Number = item.WaitStockInNum,
RB_Branch_Id = userInfo.RB_Branch_id,
Id = 0,
RB_Group_Id = userInfo.RB_Group_id,
Remark = "采购单入库",
Status = 0,
StockInId = Id,
SuppliesId = item.MaterialId,
UnitPrice = item.CostMoney,
UpdateBy = userInfo.EmployeeId,
UpdateDate = DateTime.Now
});
//新增库存表数据
var ilist = supplies_InventoryRepository.GetList(new RB_Supplies_Inventory_Extend() { RB_Group_Id = userInfo.RB_Group_id, WarehouseId = opModel.WareHouseId, SuppliesId = item.MaterialId });
if (ilist.Any())
{
var iModel = ilist.FirstOrDefault();
iModel.Number += item.WaitStockInNum;//增加库存
iModel.Money += item.CostMoney * item.WaitStockInNum;
var iflag = supplies_InventoryRepository.Update(iModel);
if (iflag)
{
//增加库存明细
supplies_InventoryDetailRepository.Insert(new RB_Supplies_InventoryDetail()
{
CreateBy = userInfo.EmployeeId,
CreateDate = DateTime.Now,
InventoryId = iModel.Id,
Number = item.WaitStockInNum,
Money = item.CostMoney * item.WaitStockInNum,
RB_Branch_Id = userInfo.RB_Branch_id,
RB_Group_Id = userInfo.RB_Group_id,
Status = 0,
Type = 1,
Id = 0,
Description = "采购入库、新增库存"
});
}
}
else
{
//新增库存表
int iId = supplies_InventoryRepository.Insert(new RB_Supplies_Inventory()
{
CreateBy = userInfo.EmployeeId,
CreateDate = DateTime.Now,
Id = 0,
Number = item.WaitStockInNum,
Money = item.CostMoney * item.WaitStockInNum,
RB_Branch_Id = userInfo.RB_Branch_id,
RB_Group_Id = userInfo.RB_Group_id,
Status = 0,
SuppliesId = item.MaterialId,
UpdateBy = userInfo.EmployeeId,
UpdateDate = DateTime.Now,
WarehouseId = opModel.WareHouseId
});
if (iId > 0)
{
//增加库存明细
supplies_InventoryDetailRepository.Insert(new RB_Supplies_InventoryDetail()
{
CreateBy = userInfo.EmployeeId,
CreateDate = DateTime.Now,
InventoryId = iId,
Number = item.WaitStockInNum,
Money = item.CostMoney * item.WaitStockInNum,
RB_Branch_Id = userInfo.RB_Branch_id,
RB_Group_Id = userInfo.RB_Group_id,
Status = 0,
Type = 1,
Id = 0,
Description = "采购入库、新增库存"
});
}
}
#region 更新采购入库数量
item.StockInNum += item.WaitStockInNum;
Dictionary<string, object> keyValues1 = new Dictionary<string, object>() {
{ nameof(RB_Property_ProcurementDetail_Extend.StockInNum),item.StockInNum}
};
List<WhereHelper> wheres1 = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Property_ProcurementDetail_Extend.Id),
FiledValue=item.Id,
OperatorEnum=OperatorEnum.Equal
}
};
supplies_ProcurementDetailRepository.Update(keyValues1, wheres1);
#endregion
}
}
#region 更新采购单入库状态
Dictionary<string, object> keyValues2 = new Dictionary<string, object>();
if (dlist.Where(x => x.Number > x.StockInNum).Any())
{
//修改采购单为部分入库
keyValues2.Add(nameof(RB_Supplies_Procurement_Extend.StockInStatus), 2);
}
else
{
//修改采购单为已入库
keyValues2.Add(nameof(RB_Supplies_Procurement_Extend.StockInStatus), 3);
}
List<WhereHelper> wheres2 = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Supplies_Procurement_Extend.Id),
FiledValue=demodel.ProcurementId,
OperatorEnum=OperatorEnum.Equal
}
};
supplies_ProcurementRepository.Update(keyValues2, wheres2);
#endregion
return ApiResult.Success();
}
#endregion
}
}
......@@ -50,7 +50,7 @@ namespace Property.Repository
string sql = $@" select pc.* from RB_Property_Procurement pc
left join rb_property_procurementdetail pc2 on pc.Id=pc2.ProcurementId
{where} order by pc.Id desc";
{where} group by pc.Id order by pc.Id desc";
return GetPage<RB_Property_Procurement_Extend>(pageIndex, pageSize, out count, sql).ToList();
}
......@@ -89,7 +89,7 @@ left join rb_property_procurementdetail pc2 on pc.Id=pc2.ProcurementId
string sql = $@" select pc.* from RB_Property_Procurement pc
left join rb_property_procurementdetail pc2 on pc.Id=pc2.ProcurementId
{where} order by pc.Id desc";
{where} group by pc.Id order by pc.Id desc";
return Get<RB_Property_Procurement_Extend>(sql).ToList();
}
}
......
using Property.Model.Entity;
using Property.Model.Extend;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Dapper;
namespace Property.Repository
{
/// <summary>
/// 耗材采购明细仓储类
/// </summary>
public partial class RB_Supplies_ProcurementDetailRepository : RepositoryBase<RB_Supplies_ProcurementDetail>
{
/// <summary>
/// 获取岗位分页数据
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="dmodel"></param>
/// <param name="count"></param>
/// <returns></returns>
public List<RB_Supplies_ProcurementDetail_Extend> GetPageList(int pageIndex, int pageSize, RB_Supplies_ProcurementDetail_Extend dmodel, out long count)
{
DynamicParameters parms = new DynamicParameters();
string where = " where 1=1 ";
where += string.Format(" AND pc.{0}={1}", nameof(RB_Supplies_ProcurementDetail_Extend.Status), 0);
where += $@" and pc.RB_Group_Id={dmodel.RB_Group_Id}";
if (dmodel.ProcurementId > 0)
{
where += " and pc." + nameof(RB_Supplies_ProcurementDetail_Extend.ProcurementId) + "=" + dmodel.ProcurementId;
}
if (!string.IsNullOrEmpty(dmodel.ProcurementIds))
{
where += " and pc." + nameof(RB_Supplies_ProcurementDetail_Extend.ProcurementId) + " in(" + dmodel.ProcurementIds + ")";
}
string sql = $@" select pc.* from RB_Supplies_ProcurementDetail pc
{where} order by pc.Id desc";
return GetPage<RB_Supplies_ProcurementDetail_Extend>(pageIndex, pageSize, out count, sql).ToList();
}
/// <summary>
/// 获取列表
/// </summary>
/// <param name="dmodel"></param>
/// <returns></returns>
public List<RB_Supplies_ProcurementDetail_Extend> GetList(RB_Supplies_ProcurementDetail_Extend dmodel)
{
DynamicParameters parms = new DynamicParameters();
string where = " where 1=1 ";
where += string.Format(" AND pc.{0}={1}", nameof(RB_Supplies_ProcurementDetail_Extend.Status), 0);
where += $@" and pc.RB_Group_Id={dmodel.RB_Group_Id}";
if (dmodel.ProcurementId > 0)
{
where += " and pc." + nameof(RB_Supplies_ProcurementDetail_Extend.ProcurementId) + "=" + dmodel.ProcurementId;
}
if (!string.IsNullOrEmpty(dmodel.ProcurementIds))
{
where += " and pc." + nameof(RB_Supplies_ProcurementDetail_Extend.ProcurementId) + " in(" + dmodel.ProcurementIds + ")";
}
string sql = $@" select pc.*,m.Name as SuppliesName,m.SuppliesNum,m.BrandName,m.Units,m.CategoryId from RB_Supplies_ProcurementDetail pc
left join rb_supplies_material m on pc.MaterialId = m.Id
{where} order by pc.Id desc";
return Get<RB_Supplies_ProcurementDetail_Extend>(sql).ToList();
}
}
}
using Property.Model.Entity;
using Property.Model.Extend;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Dapper;
namespace Property.Repository
{
/// <summary>
/// 耗材采购仓储类
/// </summary>
public partial class RB_Supplies_ProcurementRepository : RepositoryBase<RB_Supplies_Procurement>
{
/// <summary>
/// 获取分页数据
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="dmodel"></param>
/// <param name="count"></param>
/// <returns></returns>
public List<RB_Supplies_Procurement_Extend> GetPageList(int pageIndex, int pageSize, RB_Supplies_Procurement_Extend dmodel, out long count)
{
DynamicParameters parms = new DynamicParameters();
string where = " where 1=1 ";
where += string.Format(" AND pc.{0}={1}", nameof(RB_Supplies_Procurement_Extend.Status), 0);
where += $@" and pc.RB_Group_Id={dmodel.RB_Group_Id}";
if (dmodel.SchoolId > 0)
{
where += " and pc." + nameof(RB_Supplies_Procurement_Extend.SchoolId) + "=" + dmodel.SchoolId;
}
if (dmodel.StockInStatus > 0)
{
where += " and pc." + nameof(RB_Supplies_Procurement_Extend.StockInStatus) + "=" + dmodel.StockInStatus;
}
if (!string.IsNullOrEmpty(dmodel.StartTime))
{
where += " and pc." + nameof(RB_Supplies_Procurement_Extend.CreateDate) + " >='" + dmodel.StartTime + "'";
}
if (!string.IsNullOrEmpty(dmodel.EndTime))
{
where += " and pc." + nameof(RB_Supplies_Procurement_Extend.CreateDate) + " <='" + dmodel.EndTime + " 23:59:59'";
}
if (!string.IsNullOrEmpty(dmodel.SuppliesName))
{
where += " and m.Name like @SuppliesName";
parms.Add("SuppliesName", "%" + dmodel.SuppliesName + "%");
}
string sql = $@" select pc.* from RB_Supplies_Procurement pc
left join rb_supplies_procurementdetail pc2 on pc.Id=pc2.ProcurementId
left join rb_supplies_material m on pc2.MaterialId = m.Id
{where} group by pc.Id order by pc.Id desc";
return GetPage<RB_Supplies_Procurement_Extend>(pageIndex, pageSize, out count, sql).ToList();
}
/// <summary>
/// 获取列表
/// </summary>
/// <param name="dmodel"></param>
/// <returns></returns>
public List<RB_Supplies_Procurement_Extend> GetList(RB_Supplies_Procurement_Extend dmodel)
{
DynamicParameters parms = new DynamicParameters();
string where = " where 1=1 ";
where += string.Format(" AND pc.{0}={1}", nameof(RB_Supplies_Procurement_Extend.Status), 0);
where += $@" and pc.RB_Group_Id={dmodel.RB_Group_Id}";
if (dmodel.SchoolId > 0)
{
where += " and pc." + nameof(RB_Supplies_Procurement_Extend.SchoolId) + "=" + dmodel.SchoolId;
}
if (dmodel.StockInStatus > 0)
{
where += " and pc." + nameof(RB_Supplies_Procurement_Extend.StockInStatus) + "=" + dmodel.StockInStatus;
}
if (!string.IsNullOrEmpty(dmodel.StartTime))
{
where += " and pc." + nameof(RB_Supplies_Procurement_Extend.CreateDate) + " >='" + dmodel.StartTime + "'";
}
if (!string.IsNullOrEmpty(dmodel.EndTime))
{
where += " and pc." + nameof(RB_Supplies_Procurement_Extend.CreateDate) + " <='" + dmodel.EndTime + " 23:59:59'";
}
if (!string.IsNullOrEmpty(dmodel.SuppliesName))
{
where += " and m.Name like @SuppliesName";
parms.Add("SuppliesName", "%" + dmodel.SuppliesName + "%");
}
string sql = $@" select pc.* from RB_Supplies_Procurement pc
left join rb_supplies_procurementdetail pc2 on pc.Id=pc2.ProcurementId
left join rb_supplies_material m on pc2.MaterialId = m.Id
{where} group by pc.Id order by pc.Id desc";
return Get<RB_Supplies_Procurement_Extend>(sql).ToList();
}
}
}
......@@ -46,6 +46,7 @@ namespace Property.WebApi.Controllers.User
x.ParentName,
x.Tier,
x.Sort,
x.FeeType,
UpdateBy = CacheManager.User.UserReidsCache.GetEmployee(x.UpdateBy)?.EmName ?? "",
UpdateDate = x.UpdateDate.Value.ToString("yyyy-MM-dd")
});
......@@ -69,7 +70,8 @@ namespace Property.WebApi.Controllers.User
x.Id,
x.Name,
ParentId = x.ParentId ?? 0,
x.Tier
x.Tier,
x.FeeType
}));
}
......@@ -134,7 +136,8 @@ namespace Property.WebApi.Controllers.User
model.ParentId,
model.Tier,
model.Sort,
model.Type
model.Type,
model.FeeType
});
}
......@@ -170,6 +173,7 @@ namespace Property.WebApi.Controllers.User
demodel.CreateDate = DateTime.Now;
demodel.UpdateBy = userInfo.EmployeeId;
demodel.UpdateDate = DateTime.Now;
demodel.FeeType = demodel.FeeType == 0 ? 1 : demodel.FeeType;
bool flag = propertyModule.SetCateporyInfo(demodel);
if (flag)
{
......
......@@ -56,7 +56,8 @@ namespace Property.WebApi.Controllers.User
x.GoodsSpecificationList,
x.GoodsCategoryList,
UpdateBy = CacheManager.User.UserReidsCache.GetEmployee(x.UpdateBy)?.EmName ?? "",
UpdateDate = x.UpdateDate.Value.ToString("yyyy-MM-dd")
UpdateDate = x.UpdateDate.Value.ToString("yyyy-MM-dd"),
x.FeeType
});
return ApiResult.Success("", pagelist);
}
......@@ -93,7 +94,8 @@ namespace Property.WebApi.Controllers.User
model.ReservedStock,
model.SafetyStock,
model.SuppliesModel,
model.SuppliesNum
model.SuppliesNum,
model.FeeType
});
}
......@@ -130,6 +132,7 @@ namespace Property.WebApi.Controllers.User
}
demodel.Status = 0;
demodel.FeeType = demodel.FeeType == 0 ? 1 : demodel.FeeType;
demodel.RB_Branch_Id = userInfo.RB_Branch_id;
demodel.RB_Group_Id = userInfo.RB_Group_id;
demodel.CreateBy = userInfo.EmployeeId;
......@@ -2848,5 +2851,204 @@ namespace Property.WebApi.Controllers.User
#endregion
#region 耗材采购
/// <summary>
/// 获取耗材采购分页列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetSuppliesProcurementPageList()
{
var requestParm = GetRequestParm();
UserInfo userInfo = CacheManager.User.UserReidsCache.GetUserLoginInfo(requestParm.uid);
ResultPageModel pagelist = JsonConvert.DeserializeObject<ResultPageModel>(requestParm.msg.ToString());
RB_Supplies_Procurement_Extend demodel = JsonConvert.DeserializeObject<RB_Supplies_Procurement_Extend>(requestParm.msg.ToString());
demodel.RB_Group_Id = userInfo.RB_Group_id;
var list = suppliesModule.GetSuppliesProcurementPageList(pagelist.pageIndex, pagelist.pageSize, demodel, out long count);
pagelist.count = Convert.ToInt32(count);
pagelist.pageData = list.Select(x => new
{
x.Id,
x.TotalCostMoney,
x.TotalNumber,
x.Remark,
x.CreateBy,
CreateByName = CacheManager.User.UserReidsCache.GetEmployee(x.CreateBy)?.EmName ?? "",
CreateDate = x.CreateDate.ToString("yyyy-MM-dd"),
x.FinanceId,
x.SupplierId,
x.SupplierName,
x.StockInStatus,
x.SchoolId,
x.SchoolName,
x.WareHouseId,
x.WareHouseName,
DetailList = x.DetailList.Select(z => new
{
z.Id,
z.SuppliesName,
z.BrandName,
z.CategoryId,
z.CategoryName,
z.Number,
z.CostMoney,
z.StockInNum,
z.SuppliesNum,
z.Units
})
});
return ApiResult.Success("", pagelist);
}
/// <summary>
/// 获取耗材采购详情
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetSuppliesProcurementInfo()
{
var requestParm = GetRequestParm();
UserInfo userInfo = CacheManager.User.UserReidsCache.GetUserLoginInfo(requestParm.uid);
JObject parms = JObject.Parse(requestParm.msg.ToString());
int ProcurementId = parms.GetInt("ProcurementId", 0);//采购单id
if (ProcurementId <= 0)
{
return ApiResult.ParamIsNull("请传递采购单id");
}
var model = suppliesModule.GetSuppliesProcurementInfo(ProcurementId);
if (model == null) { return ApiResult.Failed("采购单不存在"); }
return ApiResult.Success("", new
{
model.Id,
model.TotalCostMoney,
model.TotalNumber,
model.Remark,
model.CreateBy,
model.CreateByName,
CreateDate = model.CreateDate.ToString("yyyy-MM-dd"),
model.FinanceId,
model.SupplierId,
model.SupplierName,
model.StockInStatus,
model.SchoolId,
model.SchoolName,
model.WareHouseId,
model.WareHouseName,
DetailList = model.DetailList.Select(z => new
{
z.Id,
z.MaterialId,
z.SuppliesName,
z.SuppliesNum,
z.Units,
z.BrandName,
z.CategoryId,
z.CategoryName,
z.Number,
z.CostMoney,
z.StockInNum
})
});
}
/// <summary>
/// 生成耗材采购信息
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetSuppliesProcurementInfo()
{
var requestParm = GetRequestParm();
UserInfo userInfo = CacheManager.User.UserReidsCache.GetUserLoginInfo(requestParm.uid);
RB_Supplies_Procurement_Extend demodel = JsonConvert.DeserializeObject<RB_Supplies_Procurement_Extend>(requestParm.msg.ToString());
if (demodel.SupplierId <= 0)
{
return ApiResult.ParamIsNull("请传递供应商id");
}
if (demodel.SchoolId < 0)
{
return ApiResult.ParamIsNull("请选择校区id");
}
if (demodel.WareHouseId <= 0)
{
return ApiResult.ParamIsNull("请选择仓库");
}
if (demodel.DetailList == null || !demodel.DetailList.Any())
{
return ApiResult.ParamIsNull("请选择耗材信息");
}
foreach (var item in demodel.DetailList)
{
if (item.MaterialId <= 0)
{
return ApiResult.ParamIsNull("请传递耗材id");
}
if (item.Number <= 0)
{
return ApiResult.ParamIsNull("数量不能小于0");
}
}
demodel.Status = 0;
demodel.RB_Branch_Id = userInfo.RB_Branch_id;
demodel.RB_Group_Id = userInfo.RB_Group_id;
demodel.CreateBy = userInfo.EmployeeId;
demodel.CreateDate = DateTime.Now;
demodel.UpdateBy = userInfo.EmployeeId;
demodel.UpdateDate = DateTime.Now;
return suppliesModule.SetSuppliesProcurementInfo(demodel, userInfo);
}
/// <summary>
/// 耗材采购入库
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetSuppliesProcurementStockIn()
{
var requestParm = GetRequestParm();
UserInfo userInfo = CacheManager.User.UserReidsCache.GetUserLoginInfo(requestParm.uid);
RB_Supplies_Procurement_Extend demodel = JsonConvert.DeserializeObject<RB_Supplies_Procurement_Extend>(requestParm.msg.ToString());
if (demodel.ProcurementId <= 0)
{
return ApiResult.ParamIsNull("请传递采购单id");
}
if (string.IsNullOrEmpty(demodel.StockInDate))
{
return ApiResult.ParamIsNull("请选择入库日期");
}
if (demodel.DetailList == null || !demodel.DetailList.Any())
{
return ApiResult.ParamIsNull("请选择入库资产信息");
}
foreach (var item in demodel.DetailList)
{
if (item.Id <= 0)
{
return ApiResult.ParamIsNull("请传递采购明细id");
}
if (item.MaterialId <= 0) {
return ApiResult.ParamIsNull("");
}
if (item.WaitStockInNum <= 0)
{
return ApiResult.ParamIsNull("入库数量不能小于1");
}
}
//判断当前仓库是否在盘点中2020-07-28 Add By:W
var suppliesCheckList = suppliesModule.GetSuppliesCheckList(new RB_Supplies_Check_Extend { RB_Group_Id = userInfo.RB_Group_id, StartDate = System.DateTime.Now, EndDate = System.DateTime.Now, WarehouseId = demodel.WareHouseId, CheckState = REBORN.Common.Enum.SuppliesCheckStatusEnum.InTheInventory });
if (suppliesCheckList != null && suppliesCheckList.Any())
{
return ApiResult.ParamIsNull("仓库盘点中,不能入库");
}
return suppliesModule.SetSuppliesProcurementStockIn(demodel, userInfo);
}
#endregion
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment