Commit 6eb421db authored by liudong1993's avatar liudong1993

耗材入库审核

parent ea41876d
......@@ -255,6 +255,30 @@ namespace REBORN.Common
return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}
/// <summary>
/// AES 解密
/// </summary>
/// <param name="str">明文(待解密)</param>
/// <param name="key">密文</param>
/// <returns></returns>
public static string AesDecrypt(string str, string key)
{
if (string.IsNullOrEmpty(str)) return null;
Byte[] toEncryptArray = Convert.FromBase64String(str);
RijndaelManaged rm = new RijndaelManaged
{
Key = Encoding.UTF8.GetBytes(key),
Mode = CipherMode.ECB,
Padding = PaddingMode.PKCS7
};
ICryptoTransform cTransform = rm.CreateDecryptor();
Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return Encoding.UTF8.GetString(resultArray);
}
/// <summary>
......
......@@ -56,6 +56,11 @@ namespace REBORN.Common.Enum
/// 变更领用人
/// </summary>
[EnumField("变更领用人")]
Change = 10
Change = 10,
/// <summary>
/// 入库
/// </summary>
[EnumField("入库")]
StockIn = 11
}
}
......@@ -76,5 +76,10 @@ namespace REBORN.Common.Enum
/// </summary>
[EnumField("资产审批")]
PropertyAudit = 7,
/// <summary>
/// 耗材审批
/// </summary>
[EnumField("耗材审批")]
SuppliesAudit = 8,
}
}
\ No newline at end of file
......@@ -21,7 +21,7 @@ namespace Property.Model.Entity
set;
}
/// <summary>
/// 1、资产流程
/// 1、资产流程 2、耗材流程
/// </summary>
public int? Type
{
......
......@@ -86,9 +86,9 @@ namespace Property.Model.Entity
set;
}
/// <summary>
/// 1请假 2出差 3 外出 4 补卡
/// 0资产流程 1耗材流程
/// </summary>
public WFTTemplateTypeEnum? TemplateType
public int? TemplateType
{
get;
set;
......
......@@ -135,5 +135,9 @@ namespace Property.Model.Entity
/// 采购单id
/// </summary>
public int? ProcurementId { get; set; }
/// <summary>
/// 流程模板id
/// </summary>
public int? TempleteId { get; set; }
}
}
\ No newline at end of file
......@@ -12,6 +12,34 @@ namespace Property.Model.Extend
[DB(ConnectionName = "PropertyConnection")]
public class RB_Supplies_StockIn_Extend : RB_Supplies_StockIn
{
/// <summary>
/// 审核图片
/// </summary>
public List<string> ImageList { get; set; }
/// <summary>
/// 审核类型 1通过 2拒绝
/// </summary>
public int? AuditType { get; set; }
/// <summary>
/// 是否可以审核
/// </summary>
public int? Is_CanAudit { get; set; }
/// <summary>
/// 是否自己审核
/// </summary>
public int? Is_AuditSelf { get; set; }
/// <summary>
/// 流程
/// </summary>
public List<Rb_Workflow_AuditRelevance_Extend> AuditSteps { get; set; }
/// <summary>
/// 模板名称
/// </summary>
public string TemplateName { get; set; }
/// <summary>
/// 审核描述
/// </summary>
public string AuditDescription { get; set; }
/// <summary>
/// 入库开始时间
/// </summary>
......@@ -60,5 +88,13 @@ namespace Property.Model.Extend
/// 财务单据id
/// </summary>
public int? FinanceId { get; set; }
/// <summary>
/// 入库审核人
/// </summary>
public int? AuditEmId { get; set; }
/// <summary>
/// 已审核人
/// </summary>
public int? AuditedEmId { get; set; }
}
}
\ No newline at end of file
......@@ -1164,7 +1164,7 @@ namespace Property.Module.FixedAssets
}
//首先删除流程相关 与 流程审批人
workFlowModule.ModifyAuditDeleteAllInfo(receiveId, null);
workFlowModule.ModifyAuditDeleteAllInfo(receiveId, 0, null);
}
return flag;
}
......@@ -1625,7 +1625,7 @@ namespace Property.Module.FixedAssets
return ApiResult.Failed("未匹配到相关的流程信息,请联系管理员!");
}
//首先删除流程相关 与 流程审批人
workFlowModule.ModifyAuditDeleteAllInfo(demodel.Id, trans);
workFlowModule.ModifyAuditDeleteAllInfo(demodel.Id, 0, trans);
//开始创建流程
List<EmAccoutIdModel> sendAccount = new List<EmAccoutIdModel>();
List<int> ApplyForList = new List<int>();
......@@ -2000,6 +2000,54 @@ namespace Property.Module.FixedAssets
}
/// <summary>
/// 耗材入库 生成流程
/// </summary>
/// <param name="StockInId"></param>
/// <returns></returns>
public ApiResult SetSuppliesStockInFlow(int StockInId) {
var demodel = supplies_StockInRepository.GetEntity(StockInId);
UserInfo userInfo = CacheManager.User.UserReidsCache.GetUserLoginInfo((demodel.CreateBy ?? 0).ToString());
//判断是否需要流程审批
var tmodel = GetTempleteModel(PropertyFlowEnum.StockIn, demodel.RB_Branch_Id ?? 0);
var rmodel = auditRelevanceRepository.GetList(new RB_Property_AuditRelevance() { RB_Group_Id = demodel.RB_Group_Id, Type = PropertyFlowEnum.StockIn }).FirstOrDefault();
if (rmodel != null && rmodel.Enabled == 1)
{
//开始创建流程
List<EmAccoutIdModel> sendAccount = new List<EmAccoutIdModel>();
List<int> ApplyForList = new List<int>() { demodel.CreateBy ?? 0 };
bool cflag = workFlowModule.InsertAuditRelevance(tmodel, 0, userInfo.EmployeeId, userInfo.EmployeeId, demodel.Id, ApplyForList, out sendAccount, 1, null, null, 1);
if (cflag == false)
{
return ApiResult.Failed("流程有误,请核实后再试");
}
//日志
RB_Workfolw_Change_Log logModel = new RB_Workfolw_Change_Log
{
LogId = 0,
RB_Branch_Id = userInfo.RB_Branch_id,
RB_Group_Id = userInfo.RB_Group_id,
UpdateBy = userInfo.EmployeeId,
UpdateDate = System.DateTime.Now,
ResourceId = demodel.Id,
Content = "创建流程",
Type = 2
};
workfolw_Change_LogRepository.Insert(logModel);
//推送消息
if (sendAccount.Any())
{
PushAuditMessage(sendAccount, demodel.Id, "您有待审核的耗材入库信息", "耗材审核通知", userInfo.EmployeeId, SysTemPushTypeEnum.PropertyAudit);
}
return ApiResult.Success("流程生成成功");
}
return ApiResult.Success("未启用流程");
}
/// <summary>
/// 推送资产审批消息
/// </summary>
......
......@@ -13,6 +13,7 @@ using System.IO;
using Property.Repository.Supplies;
using Property.Model.Extend.Supplies;
using Newtonsoft.Json.Linq;
using REBORN.Common.API;
namespace Property.Module.FixedAssets
{
......@@ -55,6 +56,7 @@ namespace Property.Module.FixedAssets
private readonly RB_Supplies_StockOutDetailRepository supplies_StockOutDetailRepository = new RB_Supplies_StockOutDetailRepository();
private readonly Rb_branchRepository branchRepository = new Rb_branchRepository();
private readonly Rb_departmentRepository departmentRepository = new Rb_departmentRepository();
private readonly Rb_employeeRepository employeeRepository = new Rb_employeeRepository();
//耗材申请
private readonly RB_Supplies_ApplyforRepository supplies_ApplyforRepository = new RB_Supplies_ApplyforRepository();
private readonly RB_Supplies_ApplyforWeekdayRepository supplies_ApplyforWeekdayRepository = new RB_Supplies_ApplyforWeekdayRepository();
......@@ -89,6 +91,18 @@ namespace Property.Module.FixedAssets
/// </summary>
private readonly RB_Supplies_ReportLossRecordDetailRepository suppliesReportLossRecordDetailRepository = new RB_Supplies_ReportLossRecordDetailRepository();
/// <summary>
/// 耗材入库审核
/// </summary>
private readonly Rb_Workflow_TemplateRepository workflow_TemplateRepository = new Rb_Workflow_TemplateRepository();
private readonly Rb_Workflow_AuditrecordRepository workflow_AuditrecordRepository = new Rb_Workflow_AuditrecordRepository();
private readonly Rb_Workflow_AuditRelevanceRepository workflow_AuditRelevanceRepository = new Rb_Workflow_AuditRelevanceRepository();
private readonly RB_Workfolw_Change_LogRepository workfolw_Change_LogRepository = new RB_Workfolw_Change_LogRepository();
//流程模板
private readonly WorkFlowModule workFlowModule = new WorkFlowModule();
#region 基础配置
......@@ -353,15 +367,22 @@ namespace Property.Module.FixedAssets
/// <param name="demodel"></param>
/// <param name="count"></param>
/// <returns></returns>
public List<RB_Supplies_StockIn_Extend> GetStockInPageList(int pageIndex, int pageSize, RB_Supplies_StockIn_Extend demodel, out long count)
public List<RB_Supplies_StockIn_Extend> GetStockInPageList(int pageIndex, int pageSize, RB_Supplies_StockIn_Extend demodel, out long count, bool IsFlow = true)
{
var list = supplies_StockInRepository.GetPageList(pageIndex, pageSize, demodel, out count);
List<RB_Supplies_StockInDetail_Extend> sdList = new List<RB_Supplies_StockInDetail_Extend>();
List<Rb_Workflow_AuditRelevance_Extend> warlist = new List<Rb_Workflow_AuditRelevance_Extend>();
if (list.Any())
{
//查询出所有的耗材详细
string IdStr = string.Join(",", list.Select(x => x.Id).Distinct());
sdList = supplies_StockInDetailRepository.GetList(new RB_Supplies_StockInDetail_Extend() { RB_Group_Id = demodel.RB_Group_Id, StockInIdStr = IdStr });
//获取流程相关信息
if (IsFlow)
{
warlist = workflow_AuditRelevanceRepository.GetAuditRelevanceList(0, IdStr, null, 1);
}
}
foreach (var item in list)
{
......@@ -379,6 +400,17 @@ namespace Property.Module.FixedAssets
qitem.GoodsCategoryList = JsonConvert.DeserializeObject<List<string>>(qitem.GoodsCategoryName);
}
}
//流程
if (IsFlow)
{
//下一步审核节点描述
var NextModel = warlist.Where(x => x.WorkFlowId == item.Id && x.Stauts == WFRrocessStatus.NotAudit).OrderBy(x => x.Sort)?.FirstOrDefault();
if (item.Status != 1)
{
item.AuditDescription = NextModel != null ? NextModel.AuditDescription : "";
}
}
}
return list;
......@@ -3029,5 +3061,420 @@ 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_StockIn_Extend> GetStockInWaitMyAuditPageList(int pageIndex, int pageSize, RB_Supplies_StockIn_Extend demodel, out long count, int Type = 1, UserInfo userInfo = null)
{
var list = supplies_StockInRepository.GetStockInWaitMyAuditPageList(pageIndex, pageSize, demodel, out count);
List<RB_Supplies_StockInDetail_Extend> sdList = new List<RB_Supplies_StockInDetail_Extend>();
if (list.Any())
{
//查询出所有的耗材详细
string IdStr = string.Join(",", list.Select(x => x.Id).Distinct());
sdList = supplies_StockInDetailRepository.GetList(new RB_Supplies_StockInDetail_Extend() { RB_Group_Id = demodel.RB_Group_Id, StockInIdStr = IdStr });
foreach (var item in list)
{
item.DetailList = sdList.Where(x => x.StockInId == item.Id).ToList();
foreach (var qitem in item.DetailList)
{
qitem.GoodsSpecificationList = new List<string>();
qitem.GoodsCategoryList = new List<string>();
if (!string.IsNullOrEmpty(qitem.SpecificationName))
{
qitem.GoodsSpecificationList = JsonConvert.DeserializeObject<List<string>>(qitem.SpecificationName);
}
if (!string.IsNullOrEmpty(qitem.GoodsCategoryName))
{
qitem.GoodsCategoryList = JsonConvert.DeserializeObject<List<string>>(qitem.GoodsCategoryName);
}
}
}
}
return list;
}
/// <summary>
/// 获取审核详情
/// </summary>
/// <param name="stockInId"></param>
/// <param name="userInfo"></param>
/// <returns></returns>
public RB_Supplies_StockIn_Extend GetStockInAuditDetail(int stockInId, UserInfo userInfo)
{
var dmodel = supplies_StockInRepository.GetEntity(stockInId).RefMapperTo<RB_Supplies_StockIn_Extend>();
if (dmodel != null)
{
dmodel.DetailList = supplies_StockInDetailRepository.GetList(new RB_Supplies_StockInDetail_Extend() { StockInId = stockInId, RB_Group_Id = userInfo.RB_Group_id });
foreach (var qitem in dmodel.DetailList) {
qitem.GoodsSpecificationList = new List<string>();
qitem.GoodsCategoryList = new List<string>();
if (!string.IsNullOrEmpty(qitem.SpecificationName))
{
qitem.GoodsSpecificationList = JsonConvert.DeserializeObject<List<string>>(qitem.SpecificationName);
}
}
//获取流程模板
var tempmodel = workflow_TemplateRepository.GetEntity(dmodel.TempleteId ?? 0);
dmodel.TemplateName = tempmodel.Name;
//获取流程相关信息
List<Rb_Workflow_AuditRelevance_Extend> warlist = workflow_AuditRelevanceRepository.GetAuditRelevanceList(dmodel.Id, "", null, 1);
List<Rb_Workflow_Auditrecord_Extend> walist = new List<Rb_Workflow_Auditrecord_Extend>();
walist = workflow_AuditrecordRepository.GetFinaceAuditRecordList(new Rb_Workflow_Auditrecord_Extend() { WorkFlowId = dmodel.Id });
//流程
dmodel.AuditSteps = new List<Rb_Workflow_AuditRelevance_Extend>();
#region 制单人信息
Rb_Workflow_AuditRelevance_Extend rb_Workflow_AuditRelevance_Extend = new Rb_Workflow_AuditRelevance_Extend()
{
AuditDescription = "发起人",
Sort = 0,
Stauts = WFRrocessStatus.AuditThrough,
SpecialNode = WFSpecialNodeEnum.Normal
};
rb_Workflow_AuditRelevance_Extend.AuditRecordList = new List<Rb_Workflow_Auditrecord_Extend>();
var emmodel = CacheManager.User.UserReidsCache.GetEmployee(dmodel.CreateBy);
Rb_Workflow_Auditrecord_Extend CreateauditInfo = new Rb_Workflow_Auditrecord_Extend()
{
AuditEmName = (emmodel?.EmName ?? "") + (emmodel?.IsLeave == 1 ? "(离职)" : ""),
UpdateTime = dmodel.CreateDate.Value,
Description = "已提交",
Id = 0,
AuditStatus = WFRrocessStatus.AuditThrough
};
rb_Workflow_AuditRelevance_Extend.AuditRecordList.Add(CreateauditInfo);
rb_Workflow_AuditRelevance_Extend.NextStep = 0;
rb_Workflow_AuditRelevance_Extend.AuditWay = WFTAuditWayEnum.Successively;
dmodel.AuditSteps.Add(rb_Workflow_AuditRelevance_Extend);
#endregion
#region 流程步骤信息
dmodel.Is_AuditSelf = 0;
dmodel.Is_CanAudit = 0;
var auditSteps = warlist?.OrderBy(x => x.Sort).ToList();
var NotAuditedList = auditSteps.Where(x => x.Stauts == WFRrocessStatus.NotAudit).OrderBy(x => x.Sort).ToList();
var NotAudited = NotAuditedList?.FirstOrDefault();
foreach (var audititem in auditSteps)
{
#region 审核流程
audititem.AuditRecordList = new List<Rb_Workflow_Auditrecord_Extend>();
var record = walist.Where(x => x.AuditId == audititem.Id).ToList();
if (NotAudited != null && audititem.Id == NotAudited.Id && audititem.Stauts == WFRrocessStatus.NotAudit)
{
audititem.NextStep = 1;
#region 制单人审核人不能一样
if (("," + audititem.ToAuditId + ",").Contains("," + dmodel.CreateBy.Value + ",") && dmodel.CreateBy == userInfo.EmployeeId)
{
dmodel.Is_AuditSelf = 1;
}
if (audititem.SpecialNode == WFSpecialNodeEnum.Pay)
{
dmodel.Is_AuditSelf = 0;
}
#endregion
//待我审批的
if (("," + audititem.ToAuditId + ",").Contains("," + userInfo.EmployeeId + ","))
{
if (dmodel.StockInState == StockInStatusEnum.StockInWarting)
{
dmodel.Is_CanAudit = 1;
}
}
if (("," + audititem.AuditedId + ",").Contains("," + userInfo.EmployeeId + ","))
{
if (dmodel.StockInState == StockInStatusEnum.StockInWarting)
{
dmodel.Is_CanAudit = 0;
}
}
}
foreach (var recorditem in record)
{
List<string> imgList = new List<string>();
if (recorditem.Image != "[]" && !string.IsNullOrWhiteSpace(recorditem.Image))
{
imgList = JsonConvert.DeserializeObject<List<string>>(recorditem.Image);
}
Rb_Workflow_Auditrecord_Extend auditInfo = new Rb_Workflow_Auditrecord_Extend()
{
AuditEmName = CacheManager.User.UserReidsCache.GetEmployee(recorditem.AuditEmId)?.EmName ?? "",
UpdateTime = recorditem.UpdateTime.Value,
Description = recorditem.Description != "" ? recorditem.Description : "",
Id = recorditem.Id,
CareOfRemarks = recorditem.CareOfRemarks ?? "",
AuditStatus = recorditem.AuditStatus,
imgList = imgList,
SignImage = recorditem.SignImage
};
audititem.AuditRecordList.Add(auditInfo);
}
#endregion
dmodel.AuditSteps.Add(audititem);
}
#endregion
#region 仓库
dmodel.WareHouseName = supplies_WareHouseRepository.GetEntity(dmodel.WarehouseId)?.Name ?? "";
#endregion
}
return dmodel;
}
/// <summary>
/// 转交
/// </summary>
/// <returns></returns>
public ApiResult Transfer(List<Rb_Workflow_Auditrecord_Extend> list, UserInfo userInfo)
{
bool flag = true;
foreach (var item in list)
{
int WorkFlowId = item.WorkFlowId.Value; int OldEmId = userInfo.EmployeeId; int NewEmId = item.AuditEmId.Value;
if ((item.TransferEmpId ?? 0) > 0)
{
OldEmId = item.TransferEmpId ?? 0;
}
var auditModel = workflow_AuditRelevanceRepository.GetAuditRelevanceList(WorkFlowId, "", null, 1).Where(x => x.Stauts == WFRrocessStatus.NotAudit).OrderBy(x => x.Sort).FirstOrDefault();
if (auditModel == null)
{
return ApiResult.Failed("财务单据:" + WorkFlowId + "审核流程已完毕");
}
int AuditId = auditModel.Id;
if (AuditId > 0)
{
//验证 是否有已审批通过的 再转交给审批通过者
var alist = workflow_AuditrecordRepository.GetFinaceAuditRecordList(new Rb_Workflow_Auditrecord_Extend() { AuditId = AuditId });
if (alist != null && alist.Any())
{
if (alist.Where(x => x.AuditStatus == WFRrocessStatus.AuditThrough && x.AuditEmId == NewEmId).Count() > 0)
{
return ApiResult.Failed("转交人已参与审批通过,无法转交");
}
}
}
var useModel = supplies_StockInRepository.GetEntity(WorkFlowId);
if (useModel == null)
{
return ApiResult.Failed("该申请单无效");
}
var trans = workflow_AuditrecordRepository.DbTransaction;
try
{
var OldEmodel = employeeRepository.GetEntity(OldEmId);
var NewEmodel = employeeRepository.GetEntity(NewEmId);
if (OldEmodel == null || NewEmodel == null)
{
return ApiResult.Failed("转交人或者当前审核人不存在,请联系管理员");
}
var amodel = workflow_AuditrecordRepository.GetFinaceAuditRecordList(new Rb_Workflow_Auditrecord_Extend() { AuditId = AuditId, AuditEmId = OldEmId })?.FirstOrDefault();
if (amodel == null) { return ApiResult.Failed("审核步骤不存在,请联系技术人员"); }
var coModelList = new List<SetCareOfModel>();
if (!string.IsNullOrWhiteSpace(amodel.CareOfRemarks))
{
coModelList = JsonConvert.DeserializeObject<List<SetCareOfModel>>(amodel.CareOfRemarks);
}
SetCareOfModel comodel = new SetCareOfModel()
{
BeFrom = OldEmodel.EmName,
Target = NewEmodel.EmName,
Remarks = item.Description
};
coModelList.Add(comodel);
flag = UpdateAuditEmId(AuditId, OldEmId, NewEmId, coModelList, trans);
//日志
RB_Workfolw_Change_Log logModel = new RB_Workfolw_Change_Log
{
LogId = 0,
RB_Branch_Id = userInfo.RB_Branch_id,
RB_Group_Id = userInfo.RB_Group_id,
UpdateBy = userInfo.EmployeeId,
UpdateDate = DateTime.Now,
ResourceId = WorkFlowId,
Type = 1,
Content = "由" + OldEmodel.EmName + "转交给" + NewEmodel.EmName
};
workfolw_Change_LogRepository.Insert(logModel, trans);
}
catch (Exception ex)
{
LogHelper.Write(ex, "Transfer");
workflow_AuditrecordRepository.DBSession.Rollback("Transfer:1,异常信息:" + ex.Message);
return ApiResult.Failed("转交失败");
}
}
if (flag)
{
workflow_AuditrecordRepository.DBSession.Commit();
return ApiResult.Success("转交成功");
}
else
{
workflow_AuditrecordRepository.DBSession.Rollback("Transfer:2");
return ApiResult.Failed("转交失败");
}
}
/// <summary>
/// 更新审核人
/// </summary>
/// <param name="AuditId"></param>
/// <param name="OldEmId"></param>
/// <param name="NewEmId"></param>
/// <param name="coModelList"></param>
/// <param name="trans"></param>
/// <returns></returns>
public bool UpdateAuditEmId(int AuditId, int OldEmId, int NewEmId, List<SetCareOfModel> coModelList, System.Data.IDbTransaction trans = null)
{
bool flag = true, recordflag = true;
//获取审核步骤
var auditModel = workflow_AuditRelevanceRepository.GetEntity(AuditId);
if (auditModel == null) { return false; }
auditModel.ToAuditId = GetNewToAuditId(auditModel.ToAuditId, NewEmId, OldEmId, out int IsExist);
if (string.IsNullOrEmpty(auditModel.ToAuditId)) { return false; }
//更新审核步骤表
IDictionary<string, object> fileds = new Dictionary<string, object>()
{
{ nameof(Rb_Workflow_AuditRelevance.ToAuditId),auditModel.ToAuditId }
};
IList<WhereHelper> whereHelpers = new List<WhereHelper>()
{
new WhereHelper (){ FiledName=nameof(Rb_Workflow_AuditRelevance.Id),FiledValue=auditModel.Id,OperatorEnum=OperatorEnum.Equal}
};
try
{
flag = workflow_AuditRelevanceRepository.Update(fileds, whereHelpers, trans);
#region 审核记录
if (flag)
{
var record = workflow_AuditrecordRepository.GetFinaceAuditRecordList(new Rb_Workflow_Auditrecord_Extend() { AuditId = auditModel.Id, AuditEmId = OldEmId, AuditStatus = WFRrocessStatus.NotAudit })?.FirstOrDefault();
if (record != null)
{
//新审核人不在审核记录中
if (IsExist == 0)
{
IDictionary<string, object> filed = new Dictionary<string, object>()
{
{ nameof(Rb_Workflow_Auditrecord.AuditEmId),NewEmId},
{ nameof(Rb_Workflow_Auditrecord.CareOfRemarks),JsonConvert.SerializeObject(coModelList)}
};
IList<WhereHelper> whereHelper = new List<WhereHelper>()
{
new WhereHelper (){ FiledName=nameof(Rb_Workflow_Auditrecord.Id),FiledValue=record.Id,OperatorEnum=OperatorEnum.Equal}
};
recordflag = workflow_AuditrecordRepository.Update(filed, whereHelper, trans);
}
//新审核人在审核记录中
else
{
recordflag = workflow_AuditrecordRepository.Delete(record.Id, trans) > 0;
}
}
else
{
return false;
}
}
#endregion
if (flag && recordflag)
{
return true;
}
else
{
return false;
}
}
catch (Exception ex)
{
LogHelper.Write(ex, "UpdateAuditEmId");
return false;
}
}
/// <summary>
/// 获取新的待审核人
/// </summary>
/// <param name="ToAuditId"></param>
/// <param name="NewEmId"></param>
/// <param name="OldEmId"></param>
/// <returns></returns>
public string GetNewToAuditId(string ToAuditId, int NewEmId, int OldEmId, out int IsExist)
{
string AuditId = "";
IsExist = 0;
List<string> list = new List<string>(ToAuditId.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries));
foreach (var item in list)
{
if (!string.IsNullOrEmpty(item))
{
if (Convert.ToInt32(item) != NewEmId)
{
if (Convert.ToInt32(item) == OldEmId)
{
AuditId += NewEmId + ",";
}
else
{
AuditId += item + ",";
}
}
//原审核人集合中存在新审核人,则直接去掉旧审核人
else
{
IsExist = 1;
}
}
}
if (!string.IsNullOrEmpty(AuditId))
{
AuditId = ("," + AuditId);
AuditId = AuditId[1..^1];
}
return AuditId;
}
/// <summary>
/// 审批驳回
/// </summary>
/// <param name="model"></param>
/// <param name="imageList"></param>
/// <param name="auditDescription"></param>
/// <param name="userInfo"></param>
/// <returns></returns>
public ApiResult AuditReject(RB_Supplies_StockIn_Extend model, List<string> imageList, string auditDescription, UserInfo userInfo)
{
return workFlowModule.AuditReject(model, imageList, auditDescription, userInfo);
}
/// <summary>
/// 审批通过
/// </summary>
/// <param name="model"></param>
/// <param name="imageList"></param>
/// <param name="auditDescription"></param>
/// <param name="SignImage"></param>
/// <param name="userInfo"></param>
/// <returns></returns>
public ApiResult AuditPass(RB_Supplies_StockIn_Extend model, List<string> imageList, string auditDescription, UserInfo userInfo)
{
return workFlowModule.AuditPass(model, imageList, auditDescription, userInfo);
}
#endregion
}
}
......@@ -53,6 +53,31 @@ namespace Property.Module.FixedAssets
/// 资产使用关联
/// </summary>
private readonly RB_Property_UseRelevanceRepository useRelevanceRepository = new RB_Property_UseRelevanceRepository();
/// <summary>
/// 入库
/// </summary>
private readonly RB_Supplies_StockInRepository supplies_StockInRepository = new RB_Supplies_StockInRepository();
/// <summary>
/// 入库明细
/// </summary>
private readonly RB_Supplies_StockInDetailRepository supplies_StockInDetailRepository = new RB_Supplies_StockInDetailRepository();
/// <summary>
/// 库存
/// </summary>
private readonly RB_Supplies_InventoryRepository supplies_InventoryRepository = new RB_Supplies_InventoryRepository();
/// <summary>
/// 库存明细
/// </summary>
private readonly RB_Supplies_InventoryDetailRepository supplies_InventoryDetailRepository = new RB_Supplies_InventoryDetailRepository();
/// <summary>
/// 采购
/// </summary>
private readonly RB_ProcurementRepository procurementRepository = new RB_ProcurementRepository();
/// <summary>
/// 采购明细
/// </summary>
private readonly RB_Procurement_DetailRepository procurement_DetailRepository = new RB_Procurement_DetailRepository();
......@@ -60,7 +85,7 @@ namespace Property.Module.FixedAssets
/// 初始化审批流程
/// </summary>
/// <returns></returns>
public bool InsertAuditRelevance(Rb_Workflow_Template_Extend tmodel, PropertySourceEnum? Source, int CreateBy, int AuditEmId, int useReceiveId,List<int> ApplyForList, out List<EmAccoutIdModel> sendAccount, int Sort=1,List<Rb_Workflow_AuditRelevance> auditRelevanceList = null, IDbTransaction trans=null)
public bool InsertAuditRelevance(Rb_Workflow_Template_Extend tmodel, PropertySourceEnum? Source, int CreateBy, int AuditEmId, int useReceiveId,List<int> ApplyForList, out List<EmAccoutIdModel> sendAccount, int Sort=1,List<Rb_Workflow_AuditRelevance> auditRelevanceList = null, IDbTransaction trans=null, int TemplateType =0)
{
sendAccount = new List<EmAccoutIdModel>();
var conditionModel = workflow_ConditionRepository.GetConditionByTemplateId(tmodel.Id).FirstOrDefault();
......@@ -155,7 +180,7 @@ namespace Property.Module.FixedAssets
Rb_Workflow_AuditRelevance auditRelevance = item.RefMapperTo<Rb_Workflow_AuditRelevance>();
auditRelevance.WorkFlowId = useReceiveId;
auditRelevance.AuditType = (FinanceAuditTypeEnum)item.AuditType.Value;
auditRelevance.TemplateType = 0;
auditRelevance.TemplateType = TemplateType;
auditRelevance.OriginalAuditId = item.Id;
auditRelevance.Stauts = WFRrocessStatus.NotAudit;
auditRelevance.AuditWay = (FinanceAuditTypeEnum)item.AuditType.Value == FinanceAuditTypeEnum.Director ? WFTAuditWayEnum.OrSign : (WFTAuditWayEnum)item.AuditWay;
......@@ -320,7 +345,7 @@ namespace Property.Module.FixedAssets
else
{
Sort = auditRelevance.Sort.Value + 1;
InsertAuditRelevanceNext(tmodel, auditRelevanceList.Where(x => x.Sort == Sort).FirstOrDefault().RefMapperTo<Rb_Workflow_AuditRelevance_Extend>(), CreateBy, AuditEmId, useReceiveId, ApplyForList, trans, out sendAccount, AuditEmIds, audituserRelevanceListAll);
InsertAuditRelevanceNext(tmodel, auditRelevanceList.Where(x => x.Sort == Sort).FirstOrDefault().RefMapperTo<Rb_Workflow_AuditRelevance_Extend>(), CreateBy, AuditEmId, useReceiveId, ApplyForList, trans, out sendAccount, TemplateType, AuditEmIds, audituserRelevanceListAll);
}
}
else if (AuditEmIds.Where(x => newList.Exists(y => y == x)).Count() > 0 && auditRelevance.SpecialNode != WFSpecialNodeEnum.Pay)
......@@ -376,7 +401,7 @@ namespace Property.Module.FixedAssets
else
{
Sort = auditRelevance.Sort.Value + 1;
InsertAuditRelevanceNext(tmodel, auditRelevanceList.Where(x => x.Sort == Sort).FirstOrDefault().RefMapperTo<Rb_Workflow_AuditRelevance_Extend>(), CreateBy, AuditEmId, useReceiveId, ApplyForList, trans, out sendAccount, AuditEmIds, audituserRelevanceListAll);
InsertAuditRelevanceNext(tmodel, auditRelevanceList.Where(x => x.Sort == Sort).FirstOrDefault().RefMapperTo<Rb_Workflow_AuditRelevance_Extend>(), CreateBy, AuditEmId, useReceiveId, ApplyForList, trans, out sendAccount, TemplateType, AuditEmIds, audituserRelevanceListAll);
}
}
else
......@@ -490,7 +515,7 @@ namespace Property.Module.FixedAssets
/// <summary>
/// 审批通过后创建下一步审批
/// </summary>
public bool InsertAuditRelevanceNext(Rb_Workflow_Template_Extend tmodel, Rb_Workflow_AuditRelevance_Extend modelNext, int CreateBy, int AuditEmId, int useReceiveId, List<int> ApplyForList, IDbTransaction financetrans, out List<EmAccoutIdModel> AuditAccountList, List<int> AuditEmIds = null, List<Rb_Workflow_AuditUserRelevance> audituserRelevanceList = null)
public bool InsertAuditRelevanceNext(Rb_Workflow_Template_Extend tmodel, Rb_Workflow_AuditRelevance_Extend modelNext, int CreateBy, int AuditEmId, int useReceiveId, List<int> ApplyForList, IDbTransaction financetrans, out List<EmAccoutIdModel> AuditAccountList,int TeamplateType, List<int> AuditEmIds = null, List<Rb_Workflow_AuditUserRelevance> audituserRelevanceList = null)
{
var newList = new List<int>();
#region 添加初始审核人
......@@ -663,7 +688,7 @@ namespace Property.Module.FixedAssets
AuditEmIds.Add(item);
}
AuditEmIds = AuditEmIds.Distinct().ToList();
var auditRelevanceList = GetAuditRelevanceList(wfId).OrderBy(x => x.Sort).ToList();
var auditRelevanceList = GetAuditRelevanceList(wfId, TeamplateType).OrderBy(x => x.Sort).ToList();
InsertBatcheAuditRecord2(newList, wfId, financetrans, auditRelevance);
if (auditRelevanceList != null && auditRelevanceList.Count > 0)
{
......@@ -674,7 +699,7 @@ namespace Property.Module.FixedAssets
}
else
{
InsertAuditRelevanceNext(tmodel, auditRelevanceList.Where(x => x.Sort == auditRelevance.Sort + 1)?.FirstOrDefault(), CreateBy, AuditEmId, useReceiveId, ApplyForList, financetrans, out AuditAccountList, AuditEmIds);
InsertAuditRelevanceNext(tmodel, auditRelevanceList.Where(x => x.Sort == auditRelevance.Sort + 1)?.FirstOrDefault(), CreateBy, AuditEmId, useReceiveId, ApplyForList, financetrans, out AuditAccountList, TeamplateType, AuditEmIds);
}
}
}
......@@ -699,7 +724,7 @@ namespace Property.Module.FixedAssets
AuditEmIds.Add(item);
}
AuditEmIds = AuditEmIds.Distinct().ToList();
var auditRelevanceList = GetAuditRelevanceList(wfId).OrderBy(x => x.Sort).ToList();
var auditRelevanceList = GetAuditRelevanceList(wfId, TeamplateType).OrderBy(x => x.Sort).ToList();
InsertBatcheAuditRecord3(newList, AuditEmId, 2, wfId, financetrans, auditRelevance, oldAuditEmIds);
if (auditRelevanceList.LastOrDefault().Id == auditRelevance.Id)
{
......@@ -708,7 +733,7 @@ namespace Property.Module.FixedAssets
}
else
{
InsertAuditRelevanceNext(tmodel, auditRelevanceList.Where(x => x.Sort == auditRelevance.Sort + 1).FirstOrDefault(), CreateBy, AuditEmId, useReceiveId, ApplyForList, financetrans, out AuditAccountList, AuditEmIds, audituserRelevanceList);
InsertAuditRelevanceNext(tmodel, auditRelevanceList.Where(x => x.Sort == auditRelevance.Sort + 1).FirstOrDefault(), CreateBy, AuditEmId, useReceiveId, ApplyForList, financetrans, out AuditAccountList, TeamplateType, AuditEmIds, audituserRelevanceList);
}
}
else
......@@ -737,9 +762,9 @@ namespace Property.Module.FixedAssets
/// </summary>
/// <param name="workFlowId"></param>
/// <param name="trans"></param>
public void ModifyAuditDeleteAllInfo(int workFlowId, IDbTransaction trans)
public void ModifyAuditDeleteAllInfo(int workFlowId,int TeamplateType, IDbTransaction trans)
{
List<Rb_Workflow_AuditRelevance_Extend> auditRelevanceList = GetAuditRelevanceList(workFlowId);
List<Rb_Workflow_AuditRelevance_Extend> auditRelevanceList = GetAuditRelevanceList(workFlowId, TeamplateType);
#region 删除所有审核节点
{
......@@ -825,9 +850,9 @@ namespace Property.Module.FixedAssets
/// </summary>
/// <param name="WorkFlowId"></param>
/// <returns></returns>
public List<Rb_Workflow_AuditRelevance_Extend> GetAuditRelevanceList(int WorkFlowId)
public List<Rb_Workflow_AuditRelevance_Extend> GetAuditRelevanceList(int WorkFlowId,int TeamplateType)
{
var list = workflow_AuditRelevanceRepository.GetAuditRelevanceList(WorkFlowId);
var list = workflow_AuditRelevanceRepository.GetAuditRelevanceList(WorkFlowId, "", null, TeamplateType);
foreach (var item in list)
{
if (!string.IsNullOrEmpty(item.ToAuditId))
......@@ -1196,7 +1221,7 @@ namespace Property.Module.FixedAssets
ImageStr = JsonConvert.SerializeObject(imgList);
}
//首先更改 审核关联
List<Rb_Workflow_AuditRelevance_Extend> arList = GetAuditRelevanceList(WorkFlowId);
List<Rb_Workflow_AuditRelevance_Extend> arList = GetAuditRelevanceList(WorkFlowId, 0);
//找出当前审核
int Notcount = arList.Where(x => x.Stauts == WFRrocessStatus.AuditNotThrough || x.Stauts == WFRrocessStatus.Rejected).Count();
if (Notcount > 0)
......@@ -1815,7 +1840,7 @@ namespace Property.Module.FixedAssets
}
}
}
var flag = InsertAuditRelevanceNext(tempModel, modelNext, usemodel.CreateBy ?? 0, userInfo.EmployeeId, usemodel.Id, ApplyForList, trans, out AuditAccountList);
var flag = InsertAuditRelevanceNext(tempModel, modelNext, usemodel.CreateBy ?? 0, userInfo.EmployeeId, usemodel.Id, ApplyForList, trans, out AuditAccountList, 0);
if (flag == false)
{
workflow_AuditRelevanceRepository.DBSession.Rollback();
......@@ -1972,7 +1997,7 @@ namespace Property.Module.FixedAssets
}
}
}
var flag = InsertAuditRelevanceNext(tempModel, modelNext, usemodel.CreateBy ?? 0, userInfo.EmployeeId, usemodel.Id, ApplyForList, trans, out AuditAccountList);
var flag = InsertAuditRelevanceNext(tempModel, modelNext, usemodel.CreateBy ?? 0, userInfo.EmployeeId, usemodel.Id, ApplyForList, trans, out AuditAccountList, 0);
if (flag == false)
{
workflow_AuditRelevanceRepository.DBSession.Rollback();
......@@ -2072,7 +2097,7 @@ namespace Property.Module.FixedAssets
}
}
}
var flag = InsertAuditRelevanceNext(tempModel, modelNext, usemodel.CreateBy ?? 0, userInfo.EmployeeId, usemodel.Id, ApplyForList, trans, out AuditAccountList);
var flag = InsertAuditRelevanceNext(tempModel, modelNext, usemodel.CreateBy ?? 0, userInfo.EmployeeId, usemodel.Id, ApplyForList, trans, out AuditAccountList, 0);
if (flag == false)
{
workflow_AuditRelevanceRepository.DBSession.Rollback("Audit审核失败22,单号:" + WorkFlowId);
......@@ -2192,7 +2217,7 @@ namespace Property.Module.FixedAssets
ImageStr = JsonConvert.SerializeObject(imgList);
}
//首先更改 审核关联 审核记录
var arList = GetAuditRelevanceList(WorkFlowId);
var arList = GetAuditRelevanceList(WorkFlowId, 0);
//找出当前审核
int Notcount = arList.Where(x => x.Stauts == WFRrocessStatus.Rejected).Count();
if (Notcount > 0)
......@@ -2419,5 +2444,1055 @@ namespace Property.Module.FixedAssets
IMService.PushMessage(account.RefMapperToList<Property.Common.Models.EmAccoutIdModel>(), empId, content, title, type, SystemPushLogTypeEnum.Web, webExtras);
}
#region 耗材入库
/// <summary>
/// 审批通过
/// </summary>
/// <param name="model"></param>
/// <param name="imageList"></param>
/// <param name="auditDescription"></param>
/// <param name="SignImage"></param>
/// <param name="userInfo"></param>
/// <returns></returns>
public ApiResult AuditPass(RB_Supplies_StockIn_Extend usemodel, List<string> imageList, string auditDescription, UserInfo userInfo)
{
int empId = userInfo.EmployeeId;
int WorkFlowId = usemodel.Id;
string Description = auditDescription;
int RecordId = 0;
var trans = workflow_AuditRelevanceRepository.DbTransaction;
try
{
var AuditAccountList = new List<EmAccoutIdModel>();
var CopyAccountList = new List<EmAccoutIdModel>();
// 审核记录
var aurList = workflow_AuditrecordRepository.GetAuditRecordList(WorkFlowId);
string ImageStr = "";
//图片处理
if (imageList.Any())
{
List<string> imgList = new List<string>();
ImageOperation(imageList, out imgList);
ImageStr = JsonConvert.SerializeObject(imgList);
}
//首先更改 审核关联
List<Rb_Workflow_AuditRelevance_Extend> arList = GetAuditRelevanceList(WorkFlowId, 1);
//找出当前审核
int Notcount = arList.Where(x => x.Stauts == WFRrocessStatus.AuditNotThrough || x.Stauts == WFRrocessStatus.Rejected).Count();
if (Notcount > 0)
{
workflow_AuditRelevanceRepository.DBSession.Commit();
return ApiResult.Failed("该申请单已被拒绝");
}
var ToAuditFlow = arList.Where(x => x.Stauts == WFRrocessStatus.NotAudit).OrderBy(x => x.Sort).ToList();
if (ToAuditFlow.Count <= 0)
{
workflow_AuditRelevanceRepository.DBSession.Commit();
return ApiResult.Failed("该申请单审核已经完结");
}
if (ToAuditFlow.Count == 1)//目前审核为最后一步
{
bool financeFlag = false;
var model = ToAuditFlow?.FirstOrDefault();
if (usemodel.CreateBy == userInfo.EmployeeId)
{
return ApiResult.Failed("单据操作人不能审核,请转交审核");
}
var RecordList = aurList.Where(x => x.AuditId == model.Id).ToList();
if (model.AuditWay == WFTAuditWayEnum.Countersign)
{//会签 所有人必须审核完该流程才算完成
var amodel = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId == empId).FirstOrDefault();
if (amodel == null)
{
workflow_AuditRelevanceRepository.DBSession.Rollback("AuditTemporary:74");
return new ApiResult { resultCode = (int)ResultCode.NoPeople, message = "尚未匹配到审核相关信息,请联系管理员", data = new { AuditId = model.Id } };
}
RecordId = amodel.Id;
#region 更新审核记录表状态
IDictionary<string, object> fileds = new Dictionary<string, object>
{
{ nameof(Rb_Workflow_Auditrecord.AuditStatus), WFRrocessStatus.AuditThrough },
{ nameof(Rb_Workflow_Auditrecord.Description),Description}
,{ nameof(Rb_Workflow_Auditrecord.Image),ImageStr}
,{ nameof(Rb_Workflow_Auditrecord.UpdateTime),DateTime.Now}
};
IList<WhereHelper> whereHelpers = new List<WhereHelper>
{
new WhereHelper()
{
FiledName = nameof(Rb_Workflow_Auditrecord.Id),
FiledValue = amodel.Id,
OperatorEnum = OperatorEnum.Equal
}
};
if (!workflow_AuditrecordRepository.Update(fileds, whereHelpers, trans))
{
workflow_AuditRelevanceRepository.DBSession.Rollback("Audit审核失败1,单号:" + WorkFlowId);
return ApiResult.Failed("审核失败");
}
#endregion
int AuditCount = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId != empId).Count();
if (AuditCount <= 0)//表示最后一个人就是子集审核 申请单 通过
{
//同时 修改 审核记录状态 审核流程
#region 更新审核关联表状态
model.Stauts = WFRrocessStatus.AuditThrough;
if (!string.IsNullOrWhiteSpace(model.AuditedId))
{
model.AuditedId += "," + empId;
}
else
{
model.AuditedId = empId.ToString();
}
fileds = new Dictionary<string, object>
{
{ nameof(Rb_Workflow_AuditRelevance.Stauts), model.Stauts },
{ nameof(Rb_Workflow_AuditRelevance.AuditedId), model.AuditedId },
};
whereHelpers = new List<WhereHelper>
{
new WhereHelper()
{
FiledName = nameof(Rb_Workflow_AuditRelevance.Id),
FiledValue = model.Id,
OperatorEnum = OperatorEnum.Equal
}
};
if (!workflow_AuditRelevanceRepository.Update(fileds, whereHelpers, trans))
{
workflow_AuditRelevanceRepository.DBSession.Rollback("Audit审核失败2,单号:" + WorkFlowId);
return ApiResult.Failed("审核失败");
}
#endregion
financeFlag = true;
}
else
{
#region 更新审核关联表状态
model.Stauts = WFRrocessStatus.AuditThrough;
if (!string.IsNullOrWhiteSpace(model.AuditedId))
{
model.AuditedId += "," + empId;
}
else
{
model.AuditedId = empId.ToString();
}
fileds = new Dictionary<string, object>
{
{ nameof(Rb_Workflow_AuditRelevance.AuditedId), model.AuditedId },
};
whereHelpers = new List<WhereHelper>
{
new WhereHelper()
{
FiledName = nameof(Rb_Workflow_AuditRelevance.Id),
FiledValue = model.Id,
OperatorEnum = OperatorEnum.Equal
}
};
if (!workflow_AuditRelevanceRepository.Update(fileds, whereHelpers, trans))
{
workflow_AuditRelevanceRepository.DBSession.Rollback("Audit审核失败3,单号:" + WorkFlowId);
return ApiResult.Failed("审核失败");
}
#endregion
}
}
else if (model.AuditWay == WFTAuditWayEnum.OrSign)
{
var amodel = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId == empId).FirstOrDefault();
if (amodel == null)
{
workflow_AuditRelevanceRepository.DBSession.Rollback("AuditTemporary:73");
return new ApiResult { resultCode = (int)ResultCode.NoPeople, message = "尚未匹配到审核相关信息,请联系管理员", data = new { AuditId = model.Id } };
}
RecordId = amodel.Id;
//同时 修改 审核记录状态 审核流程
#region 更新审核记录表状态
model.Stauts = WFRrocessStatus.AuditThrough;
if (!string.IsNullOrWhiteSpace(model.AuditedId))
{
model.AuditedId += "," + empId;
}
else
{
model.AuditedId = empId.ToString();
}
IDictionary<string, object> fileds = new Dictionary<string, object>
{
{ nameof(Rb_Workflow_Auditrecord.AuditStatus), WFRrocessStatus.AuditThrough },
{ nameof(Rb_Workflow_Auditrecord.Description),Description}
,{ nameof(Rb_Workflow_Auditrecord.Image),ImageStr}
,{ nameof(Rb_Workflow_Auditrecord.UpdateTime),DateTime.Now}
};
IList<WhereHelper> whereHelpers = new List<WhereHelper>
{
new WhereHelper()
{
FiledName = nameof(Rb_Workflow_Auditrecord.Id),
FiledValue = amodel.Id,
OperatorEnum = OperatorEnum.Equal
}
};
if (!workflow_AuditrecordRepository.Update(fileds, whereHelpers, trans))
{
workflow_AuditRelevanceRepository.DBSession.Rollback("Audit审核失败4,单号:" + WorkFlowId);
return ApiResult.Failed("审核失败");
}
#endregion
#region 更新审核关联表状态
fileds = new Dictionary<string, object>
{
{ nameof(Rb_Workflow_AuditRelevance.Stauts), model.Stauts },
{ nameof(Rb_Workflow_AuditRelevance.AuditedId), model.AuditedId },
};
whereHelpers = new List<WhereHelper>
{
new WhereHelper()
{
FiledName = nameof(Rb_Workflow_AuditRelevance.Id),
FiledValue = model.Id,
OperatorEnum = OperatorEnum.Equal
}
};
if (!workflow_AuditRelevanceRepository.Update(fileds, whereHelpers, trans))
{
workflow_AuditRelevanceRepository.DBSession.Rollback("Audit审核失败5,单号:" + WorkFlowId);
return ApiResult.Failed("审核失败");
}
#endregion
#region 更新其他的审核记录
var list = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId != empId).ToList();
int AuditCount = list.Count();
if (AuditCount > 0)//表示最后一个人就是子集审核 申请单 通过
{
foreach (var item in list)
{
fileds = new Dictionary<string, object>
{
{ nameof(Rb_Workflow_Auditrecord.AuditStatus), WFRrocessStatus.OtherHaveAudit },
{ nameof(Rb_Workflow_Auditrecord.Description),Description}
,{ nameof(Rb_Workflow_Auditrecord.Image),ImageStr}
,{ nameof(Rb_Workflow_Auditrecord.UpdateTime),DateTime.Now}
};
whereHelpers = new List<WhereHelper>
{
new WhereHelper()
{
FiledName = nameof(Rb_Workflow_Auditrecord.Id),
FiledValue = item.Id,
OperatorEnum = OperatorEnum.Equal
}
};
if (!workflow_AuditrecordRepository.Update(fileds, whereHelpers, trans))
{
workflow_AuditRelevanceRepository.DBSession.Rollback("Audit审核失败6,单号:" + WorkFlowId);
return ApiResult.Failed("审核失败");
}
}
}
#endregion
financeFlag = true;
}
else
{
var amodel = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId == empId).FirstOrDefault();
if (amodel == null)
{
workflow_AuditRelevanceRepository.DBSession.Rollback("Audit审核失败61,单号:" + WorkFlowId);
return new ApiResult { resultCode = (int)ResultCode.NoPeople, message = "尚未匹配到审核相关信息,请联系管理员", data = new { AuditId = model.Id } };
}
RecordId = amodel.Id;
var list = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId != empId).ToList();
int AuditCount = list.Count();
if (AuditCount > 0)
{
workflow_AuditRelevanceRepository.DBSession.Rollback("Audit审核失败61下面,单号:" + WorkFlowId);
return ApiResult.Failed("流程配置出错啦!非会签,或签 都只能有一个审核人");
}
//同时 修改 审核记录状态 审核流程
#region 更新审核记录表状态
model.Stauts = WFRrocessStatus.AuditThrough;
if (!string.IsNullOrWhiteSpace(model.AuditedId))
{
model.AuditedId += "," + empId;
}
else
{
model.AuditedId = empId.ToString();
}
IDictionary<string, object> fileds = new Dictionary<string, object>
{
{ nameof(Rb_Workflow_Auditrecord.AuditStatus), WFRrocessStatus.AuditThrough },
{ nameof(Rb_Workflow_Auditrecord.Description),Description}
,{ nameof(Rb_Workflow_Auditrecord.Image),ImageStr}
,{ nameof(Rb_Workflow_Auditrecord.UpdateTime),DateTime.Now}
};
IList<WhereHelper> whereHelpers = new List<WhereHelper>
{
new WhereHelper()
{
FiledName = nameof(Rb_Workflow_Auditrecord.Id),
FiledValue = amodel.Id,
OperatorEnum = OperatorEnum.Equal
}
};
if (!workflow_AuditrecordRepository.Update(fileds, whereHelpers, trans))
{
workflow_AuditRelevanceRepository.DBSession.Rollback("Audit审核失败7,单号:" + WorkFlowId);
return ApiResult.Failed("审核失败");
}
#endregion
#region 更新审核关联表状态
fileds = new Dictionary<string, object>
{
{ nameof(Rb_Workflow_AuditRelevance.Stauts), model.Stauts },
{ nameof(Rb_Workflow_AuditRelevance.AuditedId), model.AuditedId },
};
whereHelpers = new List<WhereHelper>
{
new WhereHelper()
{
FiledName = nameof(Rb_Workflow_AuditRelevance.Id),
FiledValue = model.Id,
OperatorEnum = OperatorEnum.Equal
}
};
if (!workflow_AuditRelevanceRepository.Update(fileds, whereHelpers, trans))
{
workflow_AuditRelevanceRepository.DBSession.Rollback("Audit审核失败8,单号:" + WorkFlowId);
return ApiResult.Failed("审核失败");
}
#endregion
financeFlag = true;
}
if (financeFlag)
{
//流程最终的Ok ----123456789ld
Dictionary<string, object> usefiles = new Dictionary<string, object>() {
{ nameof(RB_Supplies_StockIn_Extend.StockInState),StockInStatusEnum.StockIn}
};
List<WhereHelper> usewheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Supplies_StockIn_Extend.Id),
FiledValue=usemodel.Id,
OperatorEnum=OperatorEnum.Equal
}
};
bool stockinFlag = supplies_StockInRepository.Update(usefiles, usewheres, trans);
if (stockinFlag) {
//更新库存
var dlist = supplies_StockInDetailRepository.GetList(new RB_Supplies_StockInDetail_Extend() { StockInId = usemodel.Id, RB_Group_Id = usemodel.RB_Group_Id });
foreach (var item in dlist) {
//新增库存表数据
var ilist = supplies_InventoryRepository.GetList(new RB_Supplies_Inventory_Extend() { RB_Group_Id = usemodel.RB_Group_Id, WarehouseId = usemodel.WarehouseId, SuppliesId = item.SuppliesId });
if (ilist.Any())
{
var iModel = ilist.FirstOrDefault();
iModel.Number += item.Number;//增加库存
iModel.Money += item.Money;
var iflag = supplies_InventoryRepository.Update(iModel, trans);
if (iflag)
{
//增加库存明细
supplies_InventoryDetailRepository.Insert(new RB_Supplies_InventoryDetail()
{
CreateBy = usemodel.CreateBy,
CreateDate = DateTime.Now,
InventoryId = iModel.Id,
Number = item.Number,
Money = item.Money,
RB_Branch_Id = usemodel.RB_Branch_Id,
RB_Group_Id = usemodel.RB_Group_Id,
Status = 0,
Type = 1,
Id = 0,
Description = "新增库存"
}, trans);
}
}
else
{
//新增库存表
int iId = supplies_InventoryRepository.Insert(new RB_Supplies_Inventory()
{
CreateBy = usemodel.CreateBy,
CreateDate = DateTime.Now,
Id = 0,
Number = item.Number,
Money = item.Money,
RB_Branch_Id = usemodel.RB_Branch_Id,
RB_Group_Id = usemodel.RB_Group_Id,
Status = 0,
SuppliesId = item.SuppliesId,
UpdateBy = usemodel.CreateBy,
UpdateDate = DateTime.Now,
WarehouseId = usemodel.WarehouseId
}, trans);
if (iId > 0)
{
//增加库存明细
supplies_InventoryDetailRepository.Insert(new RB_Supplies_InventoryDetail()
{
CreateBy = usemodel.CreateBy,
CreateDate = DateTime.Now,
InventoryId = iId,
Number = item.Number,
Money = item.Money,
RB_Branch_Id = usemodel.RB_Branch_Id,
RB_Group_Id = usemodel.RB_Group_Id,
Status = 0,
Type = 1,
Id = 0,
Description = "新增库存"
}, trans);
}
}
}
}
}
//更新抄送人状态
var CopyToPeopleList = GetCopyToPeopleList(WorkFlowId);
foreach (var item in CopyToPeopleList)
{
item.Stauts = WFRrocessStatus.AuditThrough;
}
CopyAccountList = CopyToPeopleList.Select(x => new EmAccoutIdModel { EmAccount = x.EmAccount, EmployeeId = x.EmployeeId ?? 0 }).Distinct().ToList();
if (!workflow_CopyToPeopleRepository.UpdateBatch(CopyToPeopleList))
{
workflow_AuditRelevanceRepository.DBSession.Rollback("Audit审核失败11,单号:" + WorkFlowId);
return ApiResult.Failed("审核失败");
}
}
else//同时创建下一步审核 复制审核人到审核关联表 创建审核记录表
{
var model = ToAuditFlow?.FirstOrDefault();
if (usemodel.CreateBy == userInfo.EmployeeId)
{
return ApiResult.Failed("单据操作人不能审核,请转交审核");
}
var RecordList = aurList.Where(x => x.AuditId == model.Id).ToList();
if (model.AuditWay == WFTAuditWayEnum.Countersign)
{//会签 所有人必须审核完该流程才算完成
var amodel = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId == empId).FirstOrDefault();
if (RecordList.Count > 1)
{
if (amodel == null)
{
workflow_AuditrecordRepository.DBSession.Commit();
return new ApiResult() { resultCode = (int)ResultCode.NoPeople, message = "尚未匹配到审核相关信息,请联系管理员", data = new { AuditId = model.Id } };
}
}
else if (RecordList.Count == 1 && RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId == empId).Count() == 0)
{
workflow_AuditrecordRepository.DBSession.Commit();
return new ApiResult() { resultCode = (int)ResultCode.NoPeople, message = "尚未匹配到审核相关信息,请联系管理员", data = new { AuditId = model.Id } };
}
RecordId = amodel?.Id ?? 0;
//审核记录状态
#region 更新审核记录表状态
IDictionary<string, object> fileds = new Dictionary<string, object>
{
{ nameof(Rb_Workflow_Auditrecord.AuditStatus), WFRrocessStatus.AuditThrough },
{ nameof(Rb_Workflow_Auditrecord.Description),Description}
,{ nameof(Rb_Workflow_Auditrecord.Image),ImageStr}
,{ nameof(Rb_Workflow_Auditrecord.UpdateTime),DateTime.Now}
};
IList<WhereHelper> whereHelpers = new List<WhereHelper>
{
new WhereHelper()
{
FiledName = nameof(Rb_Workflow_Auditrecord.Id),
FiledValue = amodel.Id,
OperatorEnum = OperatorEnum.Equal
}
};
if (!workflow_AuditrecordRepository.Update(fileds, whereHelpers, trans))
{
workflow_AuditRelevanceRepository.DBSession.Rollback();
return ApiResult.Failed("审核失败");
}
#endregion
int AuditCount = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId != empId).Count();
if (AuditCount <= 0)//表示最后一个人就是子集审核 申请单 通过
{
//同时 修改 审核流程
model.Stauts = WFRrocessStatus.AuditThrough;
if (!string.IsNullOrWhiteSpace(model.AuditedId))
{
model.AuditedId += "," + empId;
}
else
{
model.AuditedId = empId.ToString();
}
#region 更新审核关联表状态
fileds = new Dictionary<string, object>
{
{ nameof(Rb_Workflow_AuditRelevance.Stauts), model.Stauts },
{ nameof(Rb_Workflow_AuditRelevance.AuditedId), model.AuditedId },
};
whereHelpers = new List<WhereHelper>
{
new WhereHelper()
{
FiledName = nameof(Rb_Workflow_AuditRelevance.Id),
FiledValue = model.Id,
OperatorEnum = OperatorEnum.Equal
}
};
if (!workflow_AuditRelevanceRepository.Update(fileds, whereHelpers, trans))
{
workflow_AuditRelevanceRepository.DBSession.Rollback();
return ApiResult.Failed("审核失败");
}
#endregion
//赋值下一步到审核记录中 并更新这一步的待审核人
var modelNext = ToAuditFlow[1];
var tempModel = workflow_TemplateRepository.GetEntity(usemodel.TempleteId ?? 0).RefMapperTo<Rb_Workflow_Template_Extend>();
List<int> ApplyForList = new List<int>() { usemodel.CreateBy ?? 0 };
var flag = InsertAuditRelevanceNext(tempModel, modelNext, usemodel.CreateBy ?? 0, userInfo.EmployeeId, usemodel.Id, ApplyForList, trans, out AuditAccountList, 1);
if (flag == false)
{
workflow_AuditRelevanceRepository.DBSession.Rollback();
return ApiResult.Failed();
}
}
else
{
//同时 修改 审核流程
if (!string.IsNullOrWhiteSpace(model.AuditedId))
{
model.AuditedId += "," + empId;
}
else
{
model.AuditedId = empId.ToString();
}
#region 更新审核关联表状态
fileds = new Dictionary<string, object>
{
{ nameof(Rb_Workflow_AuditRelevance.AuditedId), model.AuditedId },
};
whereHelpers = new List<WhereHelper>
{
new WhereHelper()
{
FiledName = nameof(Rb_Workflow_AuditRelevance.Id),
FiledValue = model.Id,
OperatorEnum = OperatorEnum.Equal
}
};
if (!workflow_AuditRelevanceRepository.Update(fileds, whereHelpers, trans))
{
workflow_AuditRelevanceRepository.DBSession.Rollback();
return ApiResult.Failed("审核失败");
}
#endregion
}
}
else if (model.AuditWay == WFTAuditWayEnum.OrSign)
{
var amodel = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId == empId).FirstOrDefault();
if (amodel == null)
{
workflow_AuditRelevanceRepository.DBSession.Rollback();
return new ApiResult { resultCode = (int)ResultCode.NoPeople, message = "尚未匹配到审核相关信息,请联系管理员", data = new { AuditId = model.Id } };
}
RecordId = amodel.Id;
//同时 修改 审核记录状态 审核流程
model.Stauts = WFRrocessStatus.AuditThrough;
if (!string.IsNullOrWhiteSpace(model.AuditedId))
{
model.AuditedId += "," + empId;
}
else
{
model.AuditedId = empId.ToString();
}
#region 更新审核记录表状态
IDictionary<string, object> fileds = new Dictionary<string, object>
{
{ nameof(Rb_Workflow_Auditrecord.AuditStatus), WFRrocessStatus.AuditThrough },
{ nameof(Rb_Workflow_Auditrecord.Description),Description}
,{ nameof(Rb_Workflow_Auditrecord.Image),ImageStr}
,{ nameof(Rb_Workflow_Auditrecord.UpdateTime),DateTime.Now}
};
IList<WhereHelper> whereHelpers = new List<WhereHelper>
{
new WhereHelper()
{
FiledName = nameof(Rb_Workflow_Auditrecord.Id),
FiledValue = amodel.Id,
OperatorEnum = OperatorEnum.Equal
}
};
if (!workflow_AuditrecordRepository.Update(fileds, whereHelpers, trans))
{
workflow_AuditRelevanceRepository.DBSession.Rollback();
return ApiResult.Failed("审核失败");
}
#endregion
#region 更新审核关联表状态
fileds = new Dictionary<string, object>
{
{ nameof(Rb_Workflow_AuditRelevance.Stauts), model.Stauts },
{ nameof(Rb_Workflow_AuditRelevance.AuditedId), model.AuditedId },
};
whereHelpers = new List<WhereHelper>
{
new WhereHelper()
{
FiledName = nameof(Rb_Workflow_AuditRelevance.Id),
FiledValue = model.Id,
OperatorEnum = OperatorEnum.Equal
}
};
if (!workflow_AuditRelevanceRepository.Update(fileds, whereHelpers, trans))
{
workflow_AuditRelevanceRepository.DBSession.Rollback();
return ApiResult.Failed("审核失败");
}
#endregion
var list = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId != empId).ToList();
int AuditCount = list.Count();
if (AuditCount > 0)//表示最后一个人就是子集审核 申请单 通过
{
foreach (var item in list)
{
fileds = new Dictionary<string, object>
{
{ nameof(Rb_Workflow_Auditrecord.AuditStatus), WFRrocessStatus.OtherHaveAudit },
{ nameof(Rb_Workflow_Auditrecord.Description),Description}
,{ nameof(Rb_Workflow_Auditrecord.Image),ImageStr}
,{ nameof(Rb_Workflow_Auditrecord.UpdateTime),DateTime.Now}
};
whereHelpers = new List<WhereHelper>
{
new WhereHelper()
{
FiledName = nameof(Rb_Workflow_Auditrecord.Id),
FiledValue = item.Id,
OperatorEnum = OperatorEnum.Equal
}
};
if (!workflow_AuditrecordRepository.Update(fileds, whereHelpers, trans))
{
workflow_AuditRelevanceRepository.DBSession.Rollback();
return ApiResult.Failed("审核失败");
}
}
}
//赋值下一步到审核记录中 并更新这一步的待审核人
var modelNext = ToAuditFlow[1];
var tempModel = workflow_TemplateRepository.GetEntity(usemodel.TempleteId ?? 0).RefMapperTo<Rb_Workflow_Template_Extend>();
List<int> ApplyForList = new List<int>() { usemodel.CreateBy ?? 0 };
var flag = InsertAuditRelevanceNext(tempModel, modelNext, usemodel.CreateBy ?? 0, userInfo.EmployeeId, usemodel.Id, ApplyForList, trans, out AuditAccountList, 1);
if (flag == false)
{
workflow_AuditRelevanceRepository.DBSession.Rollback();
return new ApiResult { resultCode = (int)ResultCode.NoPeople, message = "审核流程不完整无法审核,请联系相关负责人", data = new { AuditId = modelNext.Id } };
}
}
else
{
var amodel = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId == empId).FirstOrDefault();
if (amodel == null)
{
workflow_AuditRelevanceRepository.DBSession.Rollback();
return new ApiResult { resultCode = (int)ResultCode.NoPeople, message = "尚未匹配到审核相关信息,请联系管理员", data = new { AuditId = model.Id } };
}
RecordId = amodel.Id;
var list = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId != empId).ToList();
int AuditCount = list.Count();
if (AuditCount > 0)
{
workflow_AuditRelevanceRepository.DBSession.Rollback("AuditTemporary:81");
return ApiResult.Failed("流程配置出错啦!非会签、或签 都只能有一个审核人");
}
//同时 修改 审核记录状态 审核流程
model.Stauts = WFRrocessStatus.AuditThrough;
if (!string.IsNullOrWhiteSpace(model.AuditedId))
{
model.AuditedId += "," + empId;
}
else
{
model.AuditedId = empId.ToString();
}
#region 更新审核记录表状态
IDictionary<string, object> fileds = new Dictionary<string, object>
{
{ nameof(Rb_Workflow_Auditrecord.AuditStatus), WFRrocessStatus.AuditThrough },
{ nameof(Rb_Workflow_Auditrecord.Description),Description}
,{ nameof(Rb_Workflow_Auditrecord.Image),ImageStr}
,{ nameof(Rb_Workflow_Auditrecord.UpdateTime),DateTime.Now}
};
IList<WhereHelper> whereHelpers = new List<WhereHelper>
{
new WhereHelper()
{
FiledName = nameof(Rb_Workflow_Auditrecord.Id),
FiledValue = amodel.Id,
OperatorEnum = OperatorEnum.Equal
}
};
if (!workflow_AuditrecordRepository.Update(fileds, whereHelpers, trans))
{
workflow_AuditRelevanceRepository.DBSession.Rollback("Audit审核失败20,单号:" + WorkFlowId);
return ApiResult.Failed("审核失败");
}
#endregion
#region 更新审核关联表状态
fileds = new Dictionary<string, object>
{
{ nameof(Rb_Workflow_AuditRelevance.Stauts), model.Stauts },
{ nameof(Rb_Workflow_AuditRelevance.AuditedId), model.AuditedId },
};
whereHelpers = new List<WhereHelper>
{
new WhereHelper()
{
FiledName = nameof(Rb_Workflow_AuditRelevance.Id),
FiledValue = model.Id,
OperatorEnum = OperatorEnum.Equal
}
};
if (!workflow_AuditRelevanceRepository.Update(fileds, whereHelpers, trans))
{
workflow_AuditRelevanceRepository.DBSession.Rollback("Audit审核失败21,单号:" + WorkFlowId);
return ApiResult.Failed("审核失败");
}
#endregion
//赋值下一步到审核记录中 并更新这一步的待审核人
var modelNext = ToAuditFlow[1];
var tempModel = workflow_TemplateRepository.GetEntity(usemodel.TempleteId ?? 0).RefMapperTo<Rb_Workflow_Template_Extend>();
List<int> ApplyForList = new List<int>() { usemodel.CreateBy ?? 0 };
var flag = InsertAuditRelevanceNext(tempModel, modelNext, usemodel.CreateBy ?? 0, userInfo.EmployeeId, usemodel.Id, ApplyForList, trans, out AuditAccountList, 1);
if (flag == false)
{
workflow_AuditRelevanceRepository.DBSession.Rollback("Audit审核失败22,单号:" + WorkFlowId);
return new ApiResult { resultCode = (int)ResultCode.NoPeople, message = "未匹配到相关审核人", data = new { AuditId = modelNext.Id } };
}
}
if (model.SpecialNode != WFSpecialNodeEnum.Normal)
{
//更新资产签字日志
var list = useRelevanceRepository.GetList(new RB_Property_UseRelevance_Extend() { RB_Group_Id = usemodel.RB_Group_Id, ReceiveId = usemodel.Id });
string Content = "审核人签字";
if (model.SpecialNode == WFSpecialNodeEnum.In)
{
Content = "审核人签字";
}
else if (model.SpecialNode == WFSpecialNodeEnum.Pay)
{
Content = "使用人签字";
}
foreach (var item in list)
{
//有签字
property_LogRepository.Insert(new RB_Property_Log()
{
PropertyId = item.PropertyId,
Content = Content,
CreateBy = userInfo.EmployeeId,
CreateDate = DateTime.Now,
Id = 0,
RB_Branch_Id = userInfo.RB_Branch_id,
RB_Group_Id = userInfo.RB_Group_id,
Status = 0,
TypeName = "签字",
IsSignature = 1,
RecordId = RecordId
}, trans);
}
}
}
//发送推送信息
string EmAccout = "";
int EmId = 0;
var CreateModel = employeeRepository.GetEntity(usemodel.CreateBy.Value);
if (CreateModel != null)
{
EmAccout = CreateModel.EmAccount;
EmId = CreateModel.EmployeeId;
}
List<EmAccoutIdModel> EmNameList = new List<EmAccoutIdModel>() { new EmAccoutIdModel { EmAccount = EmAccout, EmployeeId = EmId } };
if (ToAuditFlow.Count == 1)
{//审批完成
PushAuditMessage(EmNameList, WorkFlowId, $@"您的资产申请已完成!", "资产审批完成", empId, SysTemPushTypeEnum.PropertyAudit);
//抄送人通知
PushAuditMessage(CopyAccountList, WorkFlowId, $@"有审核完成的资产抄送通知!", "资产抄送通知", empId, SysTemPushTypeEnum.PropertyAudit);
//所有审核人
//AuditAccountList = aurList.Where(x => x.AuditStatus == WFRrocessStatus.AuditThrough && x.AuditEmId != empId).Select(x => new EmAccoutIdModel() { EmAccount = x.AuditEmAccout, EmployeeId = x.AuditEmId ?? 0 }).Distinct().ToList();
}
else
{
//审批通过
PushAuditMessage(AuditAccountList, WorkFlowId, $@"你有待审核的资产消息!", "资产审核通知", empId, SysTemPushTypeEnum.PropertyAudit);
}
//日志
RB_Workfolw_Change_Log logModel = new RB_Workfolw_Change_Log
{
LogId = 0,
RB_Branch_Id = userInfo.RB_Branch_id,
RB_Group_Id = userInfo.RB_Group_id,
UpdateBy = empId,
UpdateDate = System.DateTime.Now,
ResourceId = WorkFlowId,
Content = "审批通过",
Type = 1
};
workfolw_Change_LogRepository.Insert(logModel, trans);
workflow_AuditRelevanceRepository.DBSession.Commit();
string rmsg = "审核成功";
return ApiResult.Success(rmsg);
}
catch (Exception ex)
{
LogHelper.Write(ex, "审核失败:Audit");
workflow_AuditRelevanceRepository.DBSession.Rollback("审核失败26,单号:" + WorkFlowId);
return ApiResult.Failed("Audit审核失败");
}
}
/// <summary>
/// 审批驳回
/// </summary>
/// <param name="usemodel"></param>
/// <param name="imageList"></param>
/// <param name="auditDescription"></param>
/// <param name="userInfo"></param>
/// <returns></returns>
internal ApiResult AuditReject(RB_Supplies_StockIn_Extend usemodel, List<string> imageList, string auditDescription, UserInfo userInfo)
{
bool flag = true;
int empId = userInfo.EmployeeId;
int WorkFlowId = usemodel.Id;
string Description = auditDescription;
var trans = workflow_AuditRelevanceRepository.DbTransaction;
try
{
var aurList = workflow_AuditrecordRepository.GetAuditRecordList(WorkFlowId);
string ImageStr = "";
//图片处理
if (imageList.Any())
{
List<string> imgList = new List<string>();
ImageOperation(imageList, out imgList);
ImageStr = JsonConvert.SerializeObject(imgList);
}
//首先更改 审核关联 审核记录
var arList = GetAuditRelevanceList(WorkFlowId, 1);
//找出当前审核
int Notcount = arList.Where(x => x.Stauts == WFRrocessStatus.Rejected).Count();
if (Notcount > 0)
{
workflow_AuditRelevanceRepository.DBSession.Commit();
return ApiResult.Failed("该申请单已被拒绝");
}
var ToAuditFlow = arList.Where(x => x.Stauts == WFRrocessStatus.NotAudit).OrderBy(x => x.Sort).ToList();
if (ToAuditFlow.Count <= 0)
{
workflow_AuditRelevanceRepository.DBSession.Commit();
return ApiResult.Failed("该申请单审核已经完结");
}
if (ToAuditFlow.Count > 0)
{
var model = ToAuditFlow[0];
var RecordList = aurList.Where(x => x.AuditId == model.Id).ToList();
var amodel = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId == empId).FirstOrDefault();
if (amodel == null)
{
workflow_AuditRelevanceRepository.DBSession.Commit();
return ApiResult.Failed("尚未匹配到审核相关信息,请联系管理员");
}
//同时 修改 审核记录状态 审核流程
model.Stauts = WFRrocessStatus.Rejected;
if (!string.IsNullOrWhiteSpace(model.AuditedId))
{
model.AuditedId += "," + empId;
}
else
{
model.AuditedId = empId.ToString();
}
#region 更新审核记录表状态
IDictionary<string, object> fileds = new Dictionary<string, object>
{
{ nameof(Rb_Workflow_Auditrecord.AuditStatus), WFRrocessStatus.Rejected },
{ nameof(Rb_Workflow_Auditrecord.Description),Description}
,{ nameof(Rb_Workflow_Auditrecord.Image),ImageStr}
,{ nameof(Rb_Workflow_Auditrecord.UpdateTime),DateTime.Now}
};
IList<WhereHelper> whereHelpers = new List<WhereHelper>
{
new WhereHelper()
{
FiledName = nameof(Rb_Workflow_Auditrecord.Id),
FiledValue = amodel.Id,
OperatorEnum = OperatorEnum.Equal
}
};
workflow_AuditrecordRepository.Update(fileds, whereHelpers, trans);
#endregion
#region 更新审核关联表状态
fileds = new Dictionary<string, object>
{
{ nameof(Rb_Workflow_AuditRelevance.Stauts), model.Stauts },
{ nameof(Rb_Workflow_AuditRelevance.AuditedId), model.AuditedId },
};
whereHelpers = new List<WhereHelper>
{
new WhereHelper()
{
FiledName = nameof(Rb_Workflow_AuditRelevance.Id),
FiledValue = model.Id,
OperatorEnum = OperatorEnum.Equal
}
};
workflow_AuditRelevanceRepository.Update(fileds, whereHelpers, trans);
#endregion
var list = RecordList.Where(x => x.AuditStatus == WFRrocessStatus.NotAudit && x.AuditEmId != empId).ToList();
int AuditCount = list.Count();
if (AuditCount > 0)//表示最后一个人就是子集审核 申请单 通过
{
foreach (var item in list)
{
fileds = new Dictionary<string, object>
{
{ nameof(Rb_Workflow_Auditrecord.AuditStatus), WFRrocessStatus.OtherHaveAudit },
{ nameof(Rb_Workflow_Auditrecord.Description),Description},
{ nameof(Rb_Workflow_Auditrecord.Image),ImageStr}
,{ nameof(Rb_Workflow_Auditrecord.UpdateTime),DateTime.Now}
};
whereHelpers = new List<WhereHelper>
{
new WhereHelper()
{
FiledName = nameof(Rb_Workflow_Auditrecord.Id),
FiledValue = item.Id,
OperatorEnum = OperatorEnum.Equal
}
};
workflow_AuditrecordRepository.Update(fileds, whereHelpers, trans);
}
}
}
if (flag)
{
//驳回直接删除该入库单 同时 修改采购单入库数量
Dictionary<string, object> uflies = new Dictionary<string, object>() {
{ nameof(RB_Supplies_StockIn.Status),1}
};
List<WhereHelper> uwheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Supplies_StockIn.Id),
FiledValue=usemodel.Id,
OperatorEnum=OperatorEnum.Equal
}
};
bool stockInFlag = supplies_StockInRepository.Update(uflies, uwheres, trans);
if (stockInFlag) {
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_Procurement_Extend.StockInStatus),2},
{ nameof(RB_Procurement_Extend.UpdateDate),DateTime.Now}
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Procurement_Extend.Id),
FiledValue=usemodel.ProcurementId,
OperatorEnum=OperatorEnum.Equal
}
};
bool procurementflag = procurementRepository.Update(keyValues, wheres, trans);
if (procurementflag) {
//回滚 采购单明细的入库数量
var dlist = supplies_StockInDetailRepository.GetList(new RB_Supplies_StockInDetail_Extend() { StockInId = usemodel.Id, RB_Group_Id = usemodel.RB_Group_Id });
var pdlist = procurement_DetailRepository.GetList(new RB_Procurement_Detail_Extend() { ProcurementId = usemodel.ProcurementId, RB_Group_Id = usemodel.RB_Group_Id });
//增加采购单已入库数量
foreach (var item in dlist)
{
var dModel = pdlist.Where(x => x.MaterialId == item.SuppliesId).FirstOrDefault();
Dictionary<string, object> keyValues1 = new Dictionary<string, object>() {
{ nameof(RB_Procurement_Detail_Extend.StockInNum),(dModel.StockInNum??0)-(item.Number??0)}
};
List<WhereHelper> wheres1 = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_Procurement_Detail_Extend.Id),
FiledValue=dModel.Id,
OperatorEnum=OperatorEnum.Equal
}
};
procurement_DetailRepository.Update(keyValues1, wheres1, trans);
}
}
}
//日志
RB_Workfolw_Change_Log logModel = new RB_Workfolw_Change_Log
{
LogId = 0,
RB_Branch_Id = userInfo.RB_Branch_id,
RB_Group_Id = userInfo.RB_Group_id,
UpdateBy = empId,
UpdateDate = System.DateTime.Now,
ResourceId = WorkFlowId,
Content = "审批驳回,内容:" + Description,
Type = 1
};
workfolw_Change_LogRepository.Insert(logModel, trans);
//发送推送信息
string EmAccout = "";
int EmId = 0;
var CreateModel = employeeRepository.GetEntity(usemodel.CreateBy.Value);
if (CreateModel != null)
{
EmAccout = CreateModel.EmAccount;
EmId = CreateModel.EmployeeId;
}
var EmNameList = new List<EmAccoutIdModel>() { new EmAccoutIdModel() { EmAccount = EmAccout, EmployeeId = EmId } };
PushAuditMessage(EmNameList, WorkFlowId, $@"您有资产申请已被驳回!", "审核不通过", empId, SysTemPushTypeEnum.PropertyAudit);
workflow_AuditRelevanceRepository.DBSession.Commit();
return ApiResult.Success("驳回成功");
}
else
{
workflow_AuditRelevanceRepository.DBSession.Rollback("Refund:1,单号:" + WorkFlowId);
return ApiResult.Failed("驳回失败");
}
}
catch (Exception ex)
{
LogHelper.Write(ex, "Refund");
workflow_AuditRelevanceRepository.DBSession.Rollback("Refund:2,单号:" + WorkFlowId + ",异常信息:" + ex.Message);
return ApiResult.Failed("驳回失败");
}
}
#endregion
}
}
......@@ -222,12 +222,14 @@ left join RB_Property_Category pc on pc.Id=pi.CategoryId
where += " and wa." + nameof(Rb_Workflow_Auditrecord.AuditStatus) + "=" + (int)WFRrocessStatus.NotAudit;
where += " and pu." + nameof(RB_Property_UseReceive_Extend.AuditStatus) + "=" + (int)OrderStateEnum.Auditing;//需要申请单在审核中
where += " and war." + nameof(Rb_Workflow_AuditRelevance_Extend.SpecialNode) + " !=" + (int)WFSpecialNodeEnum.Pay;//排除签名的
where += " and war." + nameof(Rb_Workflow_AuditRelevance_Extend.TemplateType) + " =0";
}
if (dmodel.AuditedEmId > 0)
{
where += " and wa." + nameof(Rb_Workflow_Auditrecord.AuditEmId) + "=" + dmodel.AuditedEmId;
where += " and wa." + nameof(Rb_Workflow_Auditrecord.AuditStatus) + " in(" + (int)WFRrocessStatus.AuditThrough + "," + (int)WFRrocessStatus.AuditNotThrough + "," + (int)WFRrocessStatus.Rejected + ")";
where += " and war." + nameof(Rb_Workflow_AuditRelevance_Extend.SpecialNode) + " !=" + (int)WFSpecialNodeEnum.Pay;//排除签名的
where += " and war." + nameof(Rb_Workflow_AuditRelevance_Extend.TemplateType) + " =0";
}
string sql = $@" select distinct pu.* from
RB_Property_UseReceive pu
......@@ -299,12 +301,14 @@ LEFT JOIN rb_workflow_auditrelevance war on wa.AuditId=war.Id
where += " and wa." + nameof(Rb_Workflow_Auditrecord.AuditEmId) + "=" + dmodel.AuditEmId;
where += " and wa." + nameof(Rb_Workflow_Auditrecord.AuditStatus) + "=" + (int)WFRrocessStatus.NotAudit;
where += " and pu." + nameof(RB_Property_UseReceive_Extend.AuditStatus) + "=" + (int)OrderStateEnum.Auditing;//需要申请单在审核中
where += " and war." + nameof(Rb_Workflow_AuditRelevance.TemplateType) + "=0";
}
if (dmodel.AuditedEmId > 0)
{
where += $@" and ar.SpecialNode=2 and ar.Stauts=2 ";
where += " and wa." + nameof(Rb_Workflow_Auditrecord.AuditEmId) + "=" + dmodel.AuditedEmId;
where += " and wa." + nameof(Rb_Workflow_Auditrecord.AuditStatus) + " in(" + (int)WFRrocessStatus.AuditThrough + "," + (int)WFRrocessStatus.AuditNotThrough + "," + (int)WFRrocessStatus.Rejected + ")";
where += " and war." + nameof(Rb_Workflow_AuditRelevance.TemplateType) + "=0";
}
string sql = $@" select distinct pu.* from
RB_Property_UseReceive pu
......@@ -314,6 +318,7 @@ left join rb_property_userelevance pur on pu.Id=pur.ReceiveId
left join RB_Property_Info pi on pur.PropertyId=pi.Id
left join RB_Property_Category pc on pc.Id=pi.CategoryId
left join rb_workflow_auditrecord wa on pu.Id=wa.WorkFlowId
LEFT JOIN rb_workflow_auditrelevance war on wa.AuditId=war.Id
{where} order by pu.Id desc";
return GetPage<RB_Property_UseReceive_Extend>(pageIndex, pageSize, out count, sql).ToList();
}
......@@ -375,11 +380,13 @@ left join rb_workflow_auditrecord wa on pu.Id=wa.WorkFlowId
where += " and wa." + nameof(Rb_Workflow_Auditrecord.AuditEmId) + "=" + dmodel.AuditEmId;
where += " and wa." + nameof(Rb_Workflow_Auditrecord.AuditStatus) + "=" + (int)WFRrocessStatus.NotAudit;
where += " and pu." + nameof(RB_Property_UseReceive_Extend.AuditStatus) + "=" + (int)OrderStateEnum.Auditing;//需要申请单在审核中
where += " and war." + nameof(Rb_Workflow_AuditRelevance.TemplateType) + "=0";
}
if (dmodel.AuditedEmId > 0)
{
where += " and wa." + nameof(Rb_Workflow_Auditrecord.AuditEmId) + "=" + dmodel.AuditedEmId;
where += " and wa." + nameof(Rb_Workflow_Auditrecord.AuditStatus) + " in(" + (int)WFRrocessStatus.AuditThrough + "," + (int)WFRrocessStatus.AuditNotThrough + "," + (int)WFRrocessStatus.Rejected + ")";
where += " and war." + nameof(Rb_Workflow_AuditRelevance.TemplateType) + "=0";
}
string sql = $@"
select count(distinct pu.Id) as Number from
......@@ -390,6 +397,7 @@ left join rb_property_userelevance pur on pu.Id=pur.ReceiveId
left join RB_Property_Info pi on pur.PropertyId=pi.Id
left join RB_Property_Category pc on pc.Id=pi.CategoryId
left join rb_workflow_auditrecord wa on pu.Id=wa.WorkFlowId
LEFT JOIN rb_workflow_auditrelevance war on wa.AuditId=war.Id
{where} order by pu.Id desc";
var model = Get<RB_Property_UseReceive_Extend>(sql).FirstOrDefault();
if (model != null)
......@@ -457,12 +465,14 @@ left join rb_workflow_auditrecord wa on pu.Id=wa.WorkFlowId
where += " and wa." + nameof(Rb_Workflow_Auditrecord.AuditStatus) + "=" + (int)WFRrocessStatus.NotAudit;
where += " and pu." + nameof(RB_Property_UseReceive_Extend.AuditStatus) + "=" + (int)OrderStateEnum.Auditing;//需要申请单在审核中
where += " and war." + nameof(Rb_Workflow_AuditRelevance_Extend.SpecialNode) + " !=" + (int)WFSpecialNodeEnum.Pay;//排除签名的
where += " and war." + nameof(Rb_Workflow_AuditRelevance.TemplateType) + "=0";
}
if (dmodel.AuditedEmId > 0)
{
where += " and wa." + nameof(Rb_Workflow_Auditrecord.AuditEmId) + "=" + dmodel.AuditedEmId;
where += " and wa." + nameof(Rb_Workflow_Auditrecord.AuditStatus) + " in(" + (int)WFRrocessStatus.AuditThrough + "," + (int)WFRrocessStatus.AuditNotThrough + "," + (int)WFRrocessStatus.Rejected + ")";
where += " and war." + nameof(Rb_Workflow_AuditRelevance_Extend.SpecialNode) + " !=" + (int)WFSpecialNodeEnum.Pay;//排除签名的
where += " and war." + nameof(Rb_Workflow_AuditRelevance.TemplateType) + "=0";
}
string sql = $@"
select count(distinct pu.Id) as Number from
......
......@@ -21,7 +21,7 @@ namespace Property.Repository
/// <param name="FrIdStr"></param>
/// <param name="status"></param>
/// <returns></returns>
public List<Rb_Workflow_AuditRelevance_Extend> GetAuditRelevanceList(int WorkFlowId,string FrIdStr="", WFRrocessStatus? status=null)
public List<Rb_Workflow_AuditRelevance_Extend> GetAuditRelevanceList(int WorkFlowId,string FrIdStr="", WFRrocessStatus? status=null, int TemplateType = 0)
{
string where = $@" where 1=1 ";
if (WorkFlowId > 0)
......@@ -34,6 +34,9 @@ namespace Property.Repository
if (status != null) {
where += $@" and ar.{nameof(Rb_Workflow_AuditRelevance.Stauts) }={(int)status}";
}
if (TemplateType >= 0) {
where += $@" and ar.{nameof(Rb_Workflow_AuditRelevance.TemplateType) }={TemplateType}";
}
string sql = $@"SELECT ar.* from rb_workflow_auditrelevance ar {where} ORDER BY ar.Sort asc";
return Get<Rb_Workflow_AuditRelevance_Extend>(sql).ToList();
}
......@@ -43,13 +46,16 @@ namespace Property.Repository
/// </summary>
/// <param name="FinanceIds"></param>
/// <returns></returns>
public List<Rb_Workflow_AuditRelevance_Extend> GetAuditRelevanceListForFIds(string FinanceIds)
public List<Rb_Workflow_AuditRelevance_Extend> GetAuditRelevanceListForFIds(string FinanceIds,int TemplateType =0)
{
string where = $@" where 1=1 and ar.{nameof(Rb_Workflow_AuditRelevance.Stauts)}=1";
if (!string.IsNullOrWhiteSpace(FinanceIds))
{
where += $@" and ar.{nameof(Rb_Workflow_AuditRelevance.WorkFlowId) } in({FinanceIds})";
}
if (TemplateType >= 0) {
where += $@" and ar.{nameof(Rb_Workflow_AuditRelevance.TemplateType) }={TemplateType}";
}
string sql = $@"SELECT ar.* from rb_workflow_auditrelevance ar {where} ORDER BY ar.Sort asc";
return Get<Rb_Workflow_AuditRelevance_Extend>(sql).ToList();
}
......
using Property.Model.Entity;
using Property.Model.Extend;
using REBORN.Common.Enum;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
......@@ -57,12 +59,12 @@ namespace Property.Repository
where += " and p.FinanceId =" + dmodel.FinanceId;
}
string sql = $@" select distinct ss.*,sw.Name as WareHouseName,p.FinanceId from RB_Supplies_StockIn ss
string sql = $@" select ss.*,sw.Name as WareHouseName,p.FinanceId from RB_Supplies_StockIn ss
left join rb_supplies_warehouse sw on ss.WarehouseId=sw.Id
left join rb_supplies_stockindetail ssd on ss.Id=ssd.StockInId
left join rb_supplies_material sm on ssd.SuppliesId=sm.Id
left join RB_Procurement p on ss.ProcurementId=p.Id
{where} order by ss.Id desc";
{where} group by ss.Id order by ss.Id desc";
return GetPage<RB_Supplies_StockIn_Extend>(pageIndex, pageSize, out count, sql).ToList();
}
......@@ -166,5 +168,80 @@ GROUP BY sid.SuppliesId,DATE_FORMAT(si.StockOutDate,'%Y-%m')";
return Get<RB_Supplies_StockIn_Extend>(sql).ToList();
}
}
/// <summary>
/// 获取带我审核的入库
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="dmodel"></param>
/// <param name="count"></param>
/// <returns></returns>
public List<RB_Supplies_StockIn_Extend> GetStockInWaitMyAuditPageList(int pageIndex, int pageSize, RB_Supplies_StockIn_Extend dmodel, out long count)
{
string where = " where 1=1 ";
where += string.Format(" AND ss.{0}={1}", nameof(RB_Supplies_StockIn_Extend.Status), 0);
where += $@" and ss.RB_Group_Id={dmodel.RB_Group_Id}";
if (!string.IsNullOrWhiteSpace(dmodel.StartTime))
{
where += $@" and ss.{nameof(RB_Supplies_StockIn_Extend.StockInDate)} >='{dmodel.StartTime}'";
}
if (!string.IsNullOrWhiteSpace(dmodel.EndTime))
{
where += $@" and ss.{nameof(RB_Supplies_StockIn_Extend.StockInDate)} <='{dmodel.EndTime + " 23:59:59"}'";
}
if (!string.IsNullOrWhiteSpace(dmodel.StockInNum))
{
where += " and ss." + nameof(RB_Supplies_StockIn_Extend.StockInNum) + " like '%" + dmodel.StockInNum + "%'";
}
if (!string.IsNullOrWhiteSpace(dmodel.SuppliesNum.Trim()))
{
where += " and sm." + nameof(RB_Supplies_StockIn_Extend.SuppliesNum) + " like '%" + dmodel.SuppliesNum.Trim() + "%'";
}
if (!string.IsNullOrWhiteSpace(dmodel.SuppliesName.Trim()))
{
where += " and sm." + nameof(RB_Supplies_Material.Name) + " like '%" + dmodel.SuppliesName.Trim() + "%'";
}
if (!string.IsNullOrWhiteSpace(dmodel.SupplierName.Trim()))
{
where += " and ss." + nameof(RB_Supplies_StockIn_Extend.SupplierName) + " like '%" + dmodel.SupplierName.Trim() + "%'";
}
if (dmodel.WarehouseId > 0)
{
where += " and ss." + nameof(RB_Supplies_StockIn_Extend.WarehouseId) + "=" + dmodel.WarehouseId;
}
if (dmodel.FinanceId > 0)
{
where += " and p.FinanceId =" + dmodel.FinanceId;
}
if (dmodel.AuditEmId > 0)
{
where += " and wa." + nameof(Rb_Workflow_Auditrecord.AuditEmId) + "=" + dmodel.AuditEmId;
where += " and wa." + nameof(Rb_Workflow_Auditrecord.AuditStatus) + "=" + (int)WFRrocessStatus.NotAudit;
where += " and ss." + nameof(RB_Supplies_StockIn_Extend.StockInState) + "=" + (int)StockInStatusEnum.StockInWarting;//需要入库单在待入库
where += " and war." + nameof(Rb_Workflow_AuditRelevance_Extend.SpecialNode) + " !=" + (int)WFSpecialNodeEnum.Pay;//排除签名的
where += " and war." + nameof(Rb_Workflow_AuditRelevance_Extend.TemplateType) + " =1";
}
if (dmodel.AuditedEmId > 0)
{
where += " and wa." + nameof(Rb_Workflow_Auditrecord.AuditEmId) + "=" + dmodel.AuditedEmId;
where += " and wa." + nameof(Rb_Workflow_Auditrecord.AuditStatus) + " in(" + (int)WFRrocessStatus.AuditThrough + "," + (int)WFRrocessStatus.AuditNotThrough + "," + (int)WFRrocessStatus.Rejected + ")";
where += " and war." + nameof(Rb_Workflow_AuditRelevance_Extend.SpecialNode) + " !=" + (int)WFSpecialNodeEnum.Pay;//排除签名的
where += " and war." + nameof(Rb_Workflow_AuditRelevance_Extend.TemplateType) + " =1";
}
string sql = $@" select ss.*,sw.Name as WareHouseName,p.FinanceId from RB_Supplies_StockIn ss
left join rb_supplies_warehouse sw on ss.WarehouseId=sw.Id
left join rb_supplies_stockindetail ssd on ss.Id=ssd.StockInId
left join rb_supplies_material sm on ssd.SuppliesId=sm.Id
left join RB_Procurement p on ss.ProcurementId=p.Id
left join rb_workflow_auditrecord wa on ss.Id=wa.WorkFlowId
LEFT JOIN rb_workflow_auditrelevance war on wa.AuditId=war.Id
{where} group by ss.Id order by ss.Id desc";
return GetPage<RB_Supplies_StockIn_Extend>(pageIndex, pageSize, out count, sql).ToList();
}
}
}

using Microsoft.AspNetCore.Mvc;
using REBORN.Common.API;
using REBORN.Common.Plugin;
using Property.Module.FixedAssets;
using System;
using System.IO;
using Property.WebApi.Filter;
using Microsoft.AspNetCore.Cors;
using Property.Model.Extend;
using System.Collections.Generic;
using System.Linq;
using REBORN.Common;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace Property.WebApi.Controllers.User
{
[Route("api/[controller]/[action]")]
[ApiExceptionFilter]
[ApiController]
[EnableCors("AllowCors")]
public class ECWorkFlowController : ControllerBase
{
PropertyModule propertyModule = new PropertyModule();
#region 电商操作耗材入库流程
/// <summary>
/// 设置耗材入库流程
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetECSuppliesStockInFlow(object request)
{
JObject parms1 = JObject.Parse(request.ToString());
string msg = EncryptionHelper.AesDecrypt(parms1.GetStringValue("msg"), Config.FinanceKey);
var parms = JObject.Parse(msg.ToString());
int StockInId = parms.GetInt("StockInId", 0);
if (StockInId <= 0) {
return ApiResult.ParamIsNull();
}
return propertyModule.SetSuppliesStockInFlow(StockInId);
}
#endregion
}
}
......@@ -314,6 +314,8 @@ namespace Property.WebApi.Controllers.User
x.Money,
x.SupplierName,
x.FinanceId,
x.AuditDescription,
x.ProcurementId,
DetailList = x.DetailList.Select(z => new
{
z.Id,
......@@ -369,7 +371,7 @@ namespace Property.WebApi.Controllers.User
try
{
demodel.RB_Group_Id = userInfo.RB_Group_id;
var list = suppliesModule.GetStockInPageList(1, 99999, demodel, out long count);
var list = suppliesModule.GetStockInPageList(1, 99999, demodel, out long count, false);
#region 组装数据
int Num = 1;
......@@ -2116,6 +2118,264 @@ namespace Property.WebApi.Controllers.User
#endregion
#region 耗材入库审核
/// <summary>
/// 获取耗材入库待我审批的分页列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetStockInWaitMyAuditPageList()
{
var requestParm = GetRequestParm();
UserInfo userInfo = CacheManager.User.UserReidsCache.GetUserLoginInfo(requestParm.uid);
ResultPageModel pagelist = JsonConvert.DeserializeObject<ResultPageModel>(requestParm.msg.ToString());
RB_Supplies_StockIn_Extend demodel = JsonConvert.DeserializeObject<RB_Supplies_StockIn_Extend>(requestParm.msg.ToString());
demodel.RB_Group_Id = userInfo.RB_Group_id;
demodel.AuditEmId = userInfo.EmployeeId;
List<RB_Supplies_StockIn_Extend> list = suppliesModule.GetStockInWaitMyAuditPageList(pagelist.pageIndex, pagelist.pageSize, demodel, out long count, 1, userInfo);
pagelist.count = Convert.ToInt32(count);
pagelist.pageData = list.Select(x => new
{
x.Id,
x.StockInState,
StockInStateStr = x.StockInState.GetEnumName(),
StockInDate = x.StockInDate.HasValue ? x.StockInDate.Value.ToString("yyyy-MM-dd") : "",
x.StockInNum,
x.WareHouseName,
x.WarehouseId,
x.Remark,
x.Money,
x.SupplierName,
x.FinanceId,
x.AuditDescription,
DetailList = x.DetailList.Select(z => new
{
z.Id,
z.CategoryName,
z.UnitPrice,
z.Money,
z.Number,
z.SuppliesName,
z.SuppliesNum,
z.BrandName,
z.SuppliesModel,
z.SuppliesId,
z.Units,
z.Remark,
z.GoodsSpecificationList,
z.GoodsCategoryList
}),
UpdateBy = CacheManager.User.UserReidsCache.GetEmployee(x.UpdateBy)?.EmName ?? "",
UpdateDate = x.UpdateDate.Value.ToString("yyyy-MM-dd")
});
return ApiResult.Success("", pagelist);
}
/// <summary>
/// 获取耗材入库我审批的分页列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetStockInMyAuditedPageList()
{
var requestParm = GetRequestParm();
UserInfo userInfo = CacheManager.User.UserReidsCache.GetUserLoginInfo(requestParm.uid);
ResultPageModel pagelist = JsonConvert.DeserializeObject<ResultPageModel>(requestParm.msg.ToString());
RB_Supplies_StockIn_Extend demodel = JsonConvert.DeserializeObject<RB_Supplies_StockIn_Extend>(requestParm.msg.ToString());
demodel.RB_Group_Id = userInfo.RB_Group_id;
demodel.AuditedEmId = userInfo.EmployeeId;
List<RB_Supplies_StockIn_Extend> list = suppliesModule.GetStockInWaitMyAuditPageList(pagelist.pageIndex, pagelist.pageSize, demodel, out long count, 1, userInfo);
pagelist.count = Convert.ToInt32(count);
pagelist.pageData = list.Select(x => new
{
x.Id,
x.StockInState,
StockInStateStr = x.StockInState.GetEnumName(),
StockInDate = x.StockInDate.HasValue ? x.StockInDate.Value.ToString("yyyy-MM-dd") : "",
x.StockInNum,
x.WareHouseName,
x.WarehouseId,
x.Remark,
x.Money,
x.SupplierName,
x.FinanceId,
x.AuditDescription,
DetailList = x.DetailList.Select(z => new
{
z.Id,
z.CategoryName,
z.UnitPrice,
z.Money,
z.Number,
z.SuppliesName,
z.SuppliesNum,
z.BrandName,
z.SuppliesModel,
z.SuppliesId,
z.Units,
z.Remark,
z.GoodsSpecificationList,
z.GoodsCategoryList
}),
UpdateBy = CacheManager.User.UserReidsCache.GetEmployee(x.UpdateBy)?.EmName ?? "",
UpdateDate = x.UpdateDate.Value.ToString("yyyy-MM-dd")
});
return ApiResult.Success("", pagelist);
}
/// <summary>
/// 获取耗材入库审批详情
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetStockInAuditDetail()
{
var requestParm = GetRequestParm();
UserInfo userInfo = CacheManager.User.UserReidsCache.GetUserLoginInfo(requestParm.uid);
JObject parms = JObject.Parse(requestParm.msg.ToString());
int StockInId = parms.GetInt("StockInId", 0);
if (StockInId <= 0)
{
return ApiResult.ParamIsNull("请传递入库Id");
}
RB_Supplies_StockIn_Extend model = suppliesModule.GetStockInAuditDetail(StockInId, userInfo);
return ApiResult.Success("", new
{
model.Id,
model.StockInState,
StockInStateStr = model.StockInState.GetEnumName(),
StockInDate = model.StockInDate.HasValue ? model.StockInDate.Value.ToString("yyyy-MM-dd") : "",
model.StockInNum,
model.WareHouseName,
model.WarehouseId,
model.Remark,
model.Money,
model.SupplierName,
model.FinanceId,
model.AuditDescription,
DetailList = model.DetailList.Select(z => new
{
z.Id,
z.CategoryName,
z.UnitPrice,
z.Money,
z.Number,
z.SuppliesName,
z.SuppliesNum,
z.BrandName,
z.SuppliesModel,
z.SuppliesId,
z.Units,
z.Remark,
z.GoodsSpecificationList
}),
Is_AuditSelf = model.Is_AuditSelf ?? 0,
Is_CanAudit = model.Is_CanAudit ?? 0,
AuditSteps = model.AuditSteps?.Select(y => new
{
y.Id,
y.Sort,
y.SpecialNode,
y.AuditWay,
AuditWayName = EnumHelper.GetEnumName(y.AuditWay),
y.NextStep,
AuditStatus = EnumHelper.GetEnumName(y.Stauts),
Status = y.Stauts,
y.AuditDescription,
AuditRecordList = y.AuditRecordList?.Select(z => new { ID = z.Id, AuditName = z.AuditEmName, AduitDate = z.UpdateTime.HasValue ? z.UpdateTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : "", z.CareOfRemarks, Remark = z.Description, AuditStatusStr = z.AuditStatus != null ? EnumHelper.GetEnumName(z.AuditStatus) : "", z.AuditStatus, ImageList = z.imgList?.Select(q => Config.GetFileUrl(q)), SignImage = z.SignImage ?? "" })
})
});
}
/// <summary>
/// 审批通过 或者 驳回
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult AuditOrRefund()
{
var requestParm = GetRequestParm();
UserInfo userInfo = CacheManager.User.UserReidsCache.GetUserLoginInfo(requestParm.uid);
RB_Supplies_StockIn_Extend demodel = JsonConvert.DeserializeObject<RB_Supplies_StockIn_Extend>(requestParm.msg.ToString());
if (demodel.Id <= 0)
{
return ApiResult.ParamIsNull("请传递入库id");
}
//验证状态
var model = suppliesModule.GetStockInInfo(demodel.Id).RefMapperTo<RB_Supplies_StockIn_Extend>();
if (model == null)
{
return ApiResult.Failed("入库不存在,请核实后再试");
}
if (model.StockInState != REBORN.Common.Enum.StockInStatusEnum.StockInWarting)
{
return ApiResult.Failed("该入库单不在审核中,无法审核");
}
if (demodel.AuditType == 1)
{
//通过
return suppliesModule.AuditPass(model, demodel.ImageList, demodel.AuditDescription, userInfo);
}
else
{
if (string.IsNullOrEmpty(demodel.AuditDescription))
{
return ApiResult.Failed("请输入驳回理由");
}
//驳回
return suppliesModule.AuditReject(model, demodel.ImageList, demodel.AuditDescription, userInfo);
}
}
/// <summary>
/// 审批转交
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult AuditCareOf()
{
var requestParm = GetRequestParm();
List<Rb_Workflow_Auditrecord_Extend> list = JsonConvert.DeserializeObject<List<Rb_Workflow_Auditrecord_Extend>>(requestParm.msg.ToString());
UserInfo userInfo = CacheManager.User.UserReidsCache.GetUserLoginInfo(requestParm.uid);
foreach (var item in list)
{
if (item.AuditEmId == 0)
{
return ApiResult.ParamIsNull("参数EmId值有误,请核实后再试!");
}
if (item.WorkFlowId == 0)
{
return ApiResult.ParamIsNull("参数WorkFlowId值有误,请核实后再试!");
}
if (string.IsNullOrEmpty(item.Description))
{
return ApiResult.ParamIsNull("请填写转交备注!");
}
if ((item.TransferEmpId ?? 0) > 0)
{
if (item.AuditEmId == item.TransferEmpId)
{
return ApiResult.Failed("不能转交给原审核人");
}
}
else
{
if (item.AuditEmId == userInfo.EmployeeId)
{
return ApiResult.Failed("不能转交给原审核人");
}
}
}
return suppliesModule.Transfer(list, userInfo);
}
#endregion
#region 盘点报损
......
......@@ -55,6 +55,7 @@ namespace Property.WebApi
"http://www.test.com:8082",
"http://localhost:8080",
"http://localhost:8081",
"http://localhost:8082",
"http://testzcyx.oytour.com:8080",
"http://testzcyx.oytour.com:8081",
"http://testzcyx.oytour.com",
......
......@@ -4,11 +4,11 @@
"DefaultConnectionPName": "MySql.Data.MySqlClient",
"PropertyConnection": "server=192.168.2.214;port=3306;user id=reborn;password=Reborn@2018;database=test_property;CharSet=utf8; Convert Zero Datetime=true; ",
"PropertyConnectionPName": "MySql.Data.MySqlClient",
"FinanceConnection": "server=192.168.2.214;port=3306;user id=reborn;password=Reborn@2018;database=test_reborn_finance;CharSet=utf8; Convert Zero Datetime=true; ",
"FinanceConnection": "server=192.168.2.214;port=3306;user id=reborn;password=Reborn@2018;database=reborn_finance;CharSet=utf8; Convert Zero Datetime=true; ",
"FinanceConnectionPName": "MySql.Data.MySqlClient",
"LogConnection": "server=192.168.2.214;port=3306;user id=reborn;password=Reborn@2018;database=reborn_log;CharSet=utf8; Convert Zero Datetime=true; ",
"LogConnectionPName": "MySql.Data.MySqlClient",
"MallConnection": "server=192.168.2.214;user id=reborn;password=Reborn@2018;database=test_reborn_mall;CharSet=utf8; Convert Zero Datetime=true; ",
"MallConnection": "server=192.168.2.214;user id=reborn;password=Reborn@2018;database=test_reborn_mall_3;CharSet=utf8; Convert Zero Datetime=true; ",
"MallConnectionPName": "MySql.Data.MySqlClient"
},
"Logging": {
......@@ -30,7 +30,7 @@
"ImSecret": "66000451fb72",
"FinanceKey": "FinanceMallInsertToERPViitto2020",
"OutCurrencyId": 1,
"PaymentFinanceApi": "http://testapi.oytour.com/api/Mall/InsertFinanceBatchForMallOut",
"PaymentFinanceApi": "http://192.168.2.16:8083/api/Mall/InsertFinanceBatchForMallOut",
"ExpendDirector": 1756, //财务支出创建人
"ExpendBranchId": 49, //财务支出创建人公司
"ExpendDepartment": 331,
......
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