sunpengfei
6 天以前 56af0f468f321d41db70343abf558d61cda58d31
FlexJobApi.FlexJobServer.Application/Tasks/Commands/TaskInfoCommandHandler.cs
@@ -158,7 +158,7 @@
        public async Task<Guid> Handle(SureTaskSettlementOrderCommand request, CancellationToken cancellationToken)
        {
            var entity = await TaskInfoRepository.GetQueryable(rep, false)
                .Include(it => it.TaskInfoUsers)
                .Include(it => it.TaskInfoUsers).ThenInclude(it => it.EnterpriseEmployee)
                .Where(it => it.Id == request.TaskInfoId)
                .FirstOrDefaultAsync();
            if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "任务");
@@ -167,6 +167,7 @@
            entity.SettlementOrderStatus = EnumTaskSettlementOrderStatus.Completed;
            entity.SettlementOrderUrl = request.SettlementOrderUrl;
            entity.SettlementOrderName = entity.SettlementOrderUrl.Substring(entity.SettlementOrderUrl.LastIndexOf("/") + 1);
            entity.SettlementOrderTime = DateTime.Now;
            entity.SettlementStatus = EnumTaskSettlementStatus.Wait;
            entity.SettlementUserCount = request.TaskInfoUsers.Count;
            entity.SettlementAmount = request.TaskInfoUsers.Sum(it => it.SettlementAmount ?? 0);
@@ -180,14 +181,25 @@
                if (user.CheckReceiveStatus != EnumTaskCheckReceiveStatus.Completed) throw Oops.Oh(EnumErrorCodeType.s510, $"{model.Name}未验收");
                if (model.SettlementAmount < 0) throw Oops.Oh(EnumErrorCodeType.s510, $"{model.Name}结算金额不可负数");
                if (model.ActualSettlementAmount < 0) throw Oops.Oh(EnumErrorCodeType.s510, $"{model.Name}实发金额不可负数");
                if (model.ActualSettlementAmount > 0 && model.ActualSettlementAmount < (decimal)0.3) throw Oops.Oh(EnumErrorCodeType.s510, $"{model.Name}实发金额不可小于1元");
                if (model.ActualSettlementAmount > 0 && model.ActualSettlementAmount < 1) throw Oops.Oh(EnumErrorCodeType.s510, $"{model.Name}实发金额不可小于1元");
                user.Bank = model.Bank;
                user.BankBranch = model.BankBranch;
                user.ReceiveName = user.EnterpriseEmployee.Name;
                user.ReceiveAccount = model.ReceiveAccount;
                user.SettlementAmount = model.SettlementAmount;
                user.ActualSettlementAmount = model.ActualSettlementAmount;
                user.SettlementStatus = EnumTaskSettlementStatus.Wait;
            }
            foreach (var user in entity.TaskInfoUsers)
            {
                var model = request.TaskInfoUsers.FirstOrDefault(it => it.Id == user.Id);
                if (model == null)
                {
                    user.SettlementStatus = null;
                }
            }
            await rep.UpdateAsync(entity);
            return entity.Id;
        }