/// <summary> /// @xis 添加审批记录 /// </summary> /// <param name="model"></param> /// <returns></returns> public async Task <bool> AddApplyLog(t_apply_log model) { string sql = g_sqlMaker.Insert <t_apply_log>(i => new { i.order_sn, i.position_id, i.remark, i.user_id, i.apply_status }).ToSQL(); return(await g_dbHelper.ExecAsync(sql, model) > 0); }
public async Task <List <ApplyProcess> > GetApplyLogByOrderSnAsync(EnumOrderType _ot, string order_sn, int _depart, int _start_position) { string sql = g_sqlMaker.Select <t_apply_log>().Where("order_sn", "=", "@order_sn").ToSQL(); List <t_apply_log> apply_log_list = await g_dbHelper.QueryListAsync <t_apply_log>(sql, new { order_sn }); IPositionServer positionServer = new PositionServerImpl(g_dbHelper, g_logServer); IUserServer userServer = new UserServerImpl(g_dbHelper, g_logServer); List <ApplyProcess> apply_list = new List <ApplyProcess>(); IEnumerable <int> apply_proc_list = GetApplyList(_ot, _depart, _start_position); foreach (var item in apply_proc_list) { t_apply_log apply_log_model = apply_log_list.FirstOrDefault(f => f.position_id == item); t_position position_model = await positionServer.GetPosition(s => new { s.position_name }, item); if (apply_log_model != null) { t_user user_model = await userServer.GetUserById(s => new { s.real_name }, apply_log_model.user_id); apply_list.Add(new ApplyProcess { audit_status = apply_log_model.apply_status, audit_status_desc = ((EnumAuditStatus)apply_log_model.apply_status).GetDesc(), audit_time = apply_log_model.add_time.Value.ToString("yyyy-MM-dd hh:mm") ?? "", remark = apply_log_model.remark, position_name = position_model.position_name, auditer = user_model.real_name, }); } else { apply_list.Add(new ApplyProcess { position_name = position_model.position_name }); } } return(apply_list); }
/// <summary> /// @xis 入库审批 /// </summary> /// <param name="reqmodel"></param> /// <returns></returns> public async Task <Result> StockInAuditAsync(reqmodel <AuditModel> reqmodel) { const string modelname = "StockServerImpl.StockInAuditAsync"; Result result = new Result { code = ErrorCodeConst.ERROR_1037, status = ErrorCodeConst.ERROR_403 }; t_stock_in stock_in = await GetStockInByOrderSn(s => new { s.apply_process, s.apply_status, s.department_id }, reqmodel.Data.order_sn); if (stock_in == null) { result.code = ErrorCodeConst.ERROR_1038; g_logServer.Log(modelname, "入库审批失败", $"用户:{reqmodel.User.user_name},订单不存在", EnumLogType.Info); return(result); } stock_in.order_sn = reqmodel.Data.order_sn; if (stock_in.apply_status == (int)EnumApplyStatus.Agree) { result.code = ErrorCodeConst.ERROR_1039; g_logServer.Log(modelname, "入库审批失败", $"用户:{reqmodel.User.user_name},订单号:{stock_in.order_sn},订单被审核完成", EnumLogType.Info); return(result); } if (stock_in.apply_status == (int)EnumApplyStatus.Reject) { result.code = ErrorCodeConst.ERROR_1041; g_logServer.Log(modelname, "入库审批失败", $"用户:{reqmodel.User.user_name},订单号:{stock_in.order_sn},订单被驳回", EnumLogType.Info); return(result); } IAuditServer auditServer = new AuditServerImpl(g_dbHelper, g_logServer); int? next_applyer = auditServer.GetNextApplyer(EnumOrderType.IN, stock_in.department_id, stock_in.apply_process); if (next_applyer == null) { result.code = ErrorCodeConst.ERROR_1030; g_logServer.Log(modelname, "入库审批失败", $"用户:{reqmodel.User.user_name},订单号:{stock_in.order_sn},流程错误", EnumLogType.Info); return(result); } if (next_applyer != reqmodel.User.position_id) { result.code = ErrorCodeConst.ERROR_1035; g_logServer.Log(modelname, "入库审批失败", $"用户:{reqmodel.User.user_name},订单号:{stock_in.order_sn},无法进行审批", EnumLogType.Info); return(result); } t_apply_log apply_log = new t_apply_log { apply_status = reqmodel.Data.act, order_sn = reqmodel.Data.order_sn, user_id = reqmodel.User.user_id, position_id = reqmodel.User.position_id }; stock_in.apply_process = reqmodel.User.position_id; try { g_dbHelper.Transaction(); //审批记录更新 bool insert_apply_log_flag = await AddApplyLog(apply_log); if (!insert_apply_log_flag) { g_dbHelper.Rollback(); result.code = ErrorCodeConst.ERROR_1030; g_logServer.Log(modelname, "入库审批失败", $"用户:{reqmodel.User.user_name},订单号:{stock_in.order_sn},添加审批记录失败", models.enums.EnumLogType.Info); return(result); } //审批状态更新 bool update_stock_in_flag; if (reqmodel.Data.act == 1) { stock_in.apply_status = (int)EnumApplyStatus.Agree; } else { //驳回 stock_in.apply_status = (int)EnumApplyStatus.Reject; } //最后一步或者拒绝则更新审批状态 EnumApplyStepFlag step_flag = auditServer.GetApplyStepFlag(EnumOrderType.IN, stock_in.department_id, reqmodel.User.position_id); if (step_flag == EnumApplyStepFlag.End || stock_in.apply_status == (int)EnumApplyStatus.Reject) { update_stock_in_flag = await UpdateStockInByOrderSn(u => new { u.apply_status, u.apply_process }, stock_in); } else { update_stock_in_flag = await UpdateStockInByOrderSn(u => new { u.apply_process }, stock_in); } if (!update_stock_in_flag) { g_dbHelper.Rollback(); result.code = ErrorCodeConst.ERROR_1030; g_logServer.Log(modelname, "入库审批失败", $"用户:{reqmodel.User.user_name},订单号:{stock_in.order_sn},更新审批状态失败", models.enums.EnumLogType.Info); return(result); } //同意并且是最后一步审批,更新库存数量 if (step_flag == EnumApplyStepFlag.End && stock_in.apply_status == (int)EnumApplyStatus.Agree) { bool update_quality_flag = await StockInApplySuccess(stock_in.order_sn); if (!update_quality_flag) { g_dbHelper.Rollback(); result.code = ErrorCodeConst.ERROR_1030; g_logServer.Log(modelname, "入库审批失败", $"用户:{reqmodel.User.user_name},订单号:{stock_in.order_sn},更新库存数量失败", models.enums.EnumLogType.Info); return(result); } } g_dbHelper.Commit(); } catch (Exception ex) { g_dbHelper.Rollback(); result.code = ErrorCodeConst.ERROR_1030; g_logServer.Log(modelname, "入库审批异常", $"用户:{reqmodel.User.user_name},订单号:{stock_in.order_sn},异常信息:{ex.Message}", models.enums.EnumLogType.Error); return(result); } result.code = ErrorCodeConst.ERROR_1029; result.status = ErrorCodeConst.ERROR_200; g_logServer.Log(modelname, "入库审批成功", $"用户:{reqmodel.User.user_name},订单号:{stock_in.order_sn}", models.enums.EnumLogType.Info); return(result); }