Prechádzať zdrojové kódy

审核类型返回价格字段

qinchaoyue 2 mesiacov pred
rodič
commit
2a4976d22f

+ 47 - 26
src/Hotline.Application/Snapshot/BiSnapshotApplication.cs

@@ -2,6 +2,7 @@
 using Hotline.FlowEngine.Workflows;
 using Hotline.Orders;
 using Hotline.Share.Dtos.Snapshot;
+using Hotline.Share.Enums.Snapshot;
 using Hotline.Snapshot;
 using Hotline.Snapshot.Interfaces;
 using NPOI.SS.Formula.Functions;
@@ -12,6 +13,8 @@ using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using XF.Domain.Dependency;
+using XF.Domain.Exceptions;
+using static NPOI.SS.Format.CellNumberFormatter;
 
 namespace Hotline.Application.Snapshot;
 public class BiSnapshotApplication : IBiSnapshotApplication, IScopeDependency
@@ -27,8 +30,12 @@ public class BiSnapshotApplication : IBiSnapshotApplication, IScopeDependency
     {
         var query = _orderSnapshotRepository.Queryable()
             .LeftJoin<Order>((snapshot, order) => order.Id == snapshot.Id)
+            .LeftJoin<RedPackAudit>((snapshot, order, redPackAudit) => snapshot.Id == redPackAudit.OrderId)
+            .LeftJoin<SpecialRedPackAudit>((snapshot, order, redPackAudit, special) => snapshot.Id == special.OrderId)
+            .LeftJoin<RedPackGuiderAudit>((snapshot, order, redPackAudit, special, guiderAudit) => snapshot.Id == guiderAudit.OrderId)
+            .LeftJoin<RedPackRecord>((snapshot, order, redPackAudit, special, guiderAudit, record) => redPackAudit.Id == record.RedPackAuditId)
             .Where((snapshot) => snapshot.CreationTime >= dto.StartTime && snapshot.CreationTime <= dto.EndTime)
-            .Select((snapshot, order) => new SnapshotStatisticsOutDto
+            .Select((snapshot, order, redPackAudit, special, guiderAudit, record) => new SnapshotStatisticsOutDto
             {
                 WZSLFWNJS = 0, // 未在受理范围内件数,
                 SSPZ12345JS = SqlFunc.AggregateSum(SqlFunc.IIF(order.SourceChannelCode != "SSP", 1, 0)), // 随手拍转12345件数,
@@ -38,25 +45,25 @@ public class BiSnapshotApplication : IBiSnapshotApplication, IScopeDependency
                 SLFWNPGWGYWHFJS = SqlFunc.AggregateSum(SqlFunc.IIF(snapshot.IsGuidSystemCallBack == false, 1, 0)), // 受理范围内派给网格员未回复件数
                 SLFWNA12345ZPGGBMJS = 0, //受理范围内按12345直派给各部门件数,
                 SLFWNA12345ZPGGQXJS = 0, //受理范围内按12345直派给各区县件数
-                ZXYB = 0, // 中心已办
-                BMYB = 0, // 部门已办
+                ZXYB = SqlFunc.AggregateSum(SqlFunc.IIF(order.FileOrgIsCenter == true, 1, 0)), // 中心已办
+                BMYB = SqlFunc.AggregateSum(SqlFunc.IIF(order.FileOrgIsCenter == false, 1, 0)), // 部门已办
                 SLFWMYD = 0, //受理范围满意度
-                MYL = 0, // 满意量
-                BMYL = 0, // 不满意量
-                SPBTYHBGS = 0, // 审批不同意红包个数
-                SPTYHBGS = 0, // 审批同意红包个数
+                MYL = SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonListObjectAny(order.OrgProcessingResults, "key", "1") || SqlFunc.JsonListObjectAny(order.OrgProcessingResults, "key", "2"), 0, 1)), // 满意量
+                BMYL = SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonListObjectAny(order.OrgProcessingResults, "key", "1") || SqlFunc.JsonListObjectAny(order.OrgProcessingResults, "key", "2"), 1, 0)), // 不满意量
+                SPBTYHBGS = SqlFunc.AggregateSum(SqlFunc.IIF(redPackAudit.Status == ERedPackAuditStatus.Refuse, 1, 0)), // 审批不同意红包个数
+                SPTYHBGS = SqlFunc.AggregateSum(SqlFunc.IIF(redPackAudit.Status == ERedPackAuditStatus.Agree, 1, 0)), // 审批同意红包个数
                 TSHBSP = 0, //特殊红包审批统计
-                SPTYGS = 0, //审批同意个数
-                YFJE = 0, // 已发金额
+                SPTYGS = SqlFunc.AggregateSum(SqlFunc.IIF(special.Status == ERedPackAuditStatus.Agree, 1, 0)), //审批同意个数
+                YFJE = SqlFunc.AggregateSum(SqlFunc.IIF(special.IsSend == true, special.AcutalAmount, 0)), // 已发金额
                 JSHFFWGJLGS = 0, //局审核发放网格员奖励个数
-                SPTYWGYHBGS = 0, //审批同意(网格员)红包个数
-                SPBTYWGYHBGS = 0,  //审批不同意(网格员)红包个数
-                SMJLZE = 0, // 市民奖励总额
-                SMYFFJLZE = 0,  // 市民已发放奖励总额
-                SMDFFJLZE = 0,  // 市民待发奖励总额
-                YFG = 0, //已发(个)
+                SPTYWGYHBGS = SqlFunc.AggregateSum(SqlFunc.IIF(guiderAudit.LevelTwoStatus == ERedPackAuditStatus.Agree, 1, 0)), //审批同意(网格员)红包个数
+                SPBTYWGYHBGS = SqlFunc.AggregateSum(SqlFunc.IIF(guiderAudit.LevelOneStatus == ERedPackAuditStatus.Refuse || guiderAudit.LevelTwoStatus == ERedPackAuditStatus.Refuse, 1, 0)),  //审批不同意(网格员)红包个数
+                SMJLZE = SqlFunc.AggregateSum(redPackAudit.AcutalAmount), // 市民奖励总额
+                SMYFFJLZE = SqlFunc.AggregateSum(SqlFunc.IIF(redPackAudit.IsSend == true, redPackAudit.AcutalAmount, 0)),  // 市民已发放奖励总额
+                SMDFFJLZE = SqlFunc.AggregateSum(SqlFunc.IIF(redPackAudit.IsSend == false, redPackAudit.ApprovedAmount, 0)),  // 市民待发奖励总额
+                YFG = SqlFunc.AggregateSum(SqlFunc.IIF(redPackAudit.IsSend == true, 1, 0)), //已发(个)
                 WFLXG = 0, // 无法联系(个)
-                WJHBG = 0,  // 婉拒红包(个)
+                WJHBG = SqlFunc.AggregateSum(SqlFunc.IIF(record.FailCase == ERedPackPickupFailCase.Excuse, 1, 0)),  // 婉拒红包(个)
                 WGYYFJLJE = 0, //网格员应发奖励金额
                 WGYYFFJLZE = 0, // 网格员已发放奖励总额
                 WGYDFFJLZE = 0, // 网格员待发放奖励总额
@@ -86,19 +93,33 @@ public class BiSnapshotApplication : IBiSnapshotApplication, IScopeDependency
     public ISugarQueryable<SnapshotStatisticsDetailOutDto> GetSnapshotStatisticsDetail(SnapshotStatisticsDetailInDto dto, CancellationToken requestAborted)
     {
         dto.FieldName = dto.FieldName.ToUpper();
-        var query = _orderSnapshotRepository.Queryable()
+        var query = _orderSnapshotRepository.Queryable(includeDeleted: true)
             .LeftJoin<Order>((snapshot, order) => order.Id == snapshot.Id)
+            .LeftJoin<RedPackAudit>((snapshot, order, redPackAudit) => snapshot.Id == redPackAudit.OrderId)
+            .LeftJoin<SpecialRedPackAudit>((snapshot, order, redPackAudit, special) => snapshot.Id == special.OrderId)
+            .LeftJoin<RedPackGuiderAudit>((snapshot, order, redPackAudit, special, guiderAudit) => snapshot.Id == guiderAudit.OrderId)
             .Where((snapshot, order) => order.CreationTime >= dto.StartTime && order.CreationTime <= dto.EndTime);
-        if (dto.FieldName == "SSPZ12345JS")
-            query = query.Where((snapshot, order) => order.SourceChannelCode != "SSP");
-        if (dto.FieldName == "SLFWNPGWGYSXSNHFJS")
-            query = query.Where((snapshot, order) => snapshot.IsGuidSystemCallBack == true && snapshot.GuidSystemCallBackTime.Value.AddHours(-4) <= snapshot.SendGuidSystemTime);
-        if (dto.FieldName == "SLFWNPGWGYCGSXSHFJS")
-            query = query.Where((snapshot, order) => snapshot.IsGuidSystemCallBack == true && snapshot.GuidSystemCallBackTime.Value.AddHours(-4) <= snapshot.SendGuidSystemTime);
-        if (dto.FieldName == "SLFWNPGWGYWHFJS")
-            query = query.Where((snapshot, order) => snapshot.IsGuidSystemCallBack == false);
+        query = dto.FieldName switch
+        {
+            "WZSLFWNJS" => query.Where((snapshot, order) => order.SourceChannelCode != "SSP"),
+            "SSPZ12345JS" => query.Where((snapshot, order) => order.SourceChannelCode != "SSP"),
+            "SLFWNPGWGYSXSNHFJS" => query.Where((snapshot, order) => snapshot.IsGuidSystemCallBack == true && snapshot.GuidSystemCallBackTime!.Value.AddHours(-4) <= snapshot.SendGuidSystemTime),
+            "SLFWNPGWGYCGSXSHFJS" => query.Where((snapshot, order) => snapshot.IsGuidSystemCallBack == true && snapshot.GuidSystemCallBackTime!.Value.AddHours(-4) <= snapshot.SendGuidSystemTime),
+            "SLFWNPGWGYWHFJS" => query.Where((snapshot, order) => snapshot.IsGuidSystemCallBack == false),
+            "ZXYB" => query.Where((snapshop, order) => order.FileOrgIsCenter == true),
+            "BMYB" => query.Where((snapshop, order) => order.FileOrgIsCenter == false),
+            "MYL" => query.Where((snapshot, order) => SqlFunc.JsonListObjectAny(order.OrgProcessingResults, "key", "-1") || SqlFunc.JsonListObjectAny(order.OrgProcessingResults, "key", "3") || SqlFunc.JsonListObjectAny(order.OrgProcessingResults, "key", "4") || SqlFunc.JsonListObjectAny(order.OrgProcessingResults, "key", "5")),
+            "BMYL" => query.Where((snapshot, order) => SqlFunc.JsonListObjectAny(order.OrgProcessingResults, "key", "1") || SqlFunc.JsonListObjectAny(order.OrgProcessingResults, "key", "2")),
+            "SPBTYHBGS" => query.Where((snapshot, order, redPackAudit) => redPackAudit.Status == ERedPackAuditStatus.Refuse),
+            "SPTYHBGS" => query.Where((snapshot, order, redPackAudit) => redPackAudit.Status == ERedPackAuditStatus.Agree),
+            "SPTYGS" => query.Where((snapshot, order, redPackAudit, special) => special.Status == ERedPackAuditStatus.Agree),
+            "YFJE" => query.Where((snapshot, order, redPackAudit, special) => special.IsSend == true),
+            "SPTYWGYHBGS" => query.Where((snapshot, order, redPackAudit, special, guiderAudit) => guiderAudit.LevelTwoStatus == ERedPackAuditStatus.Agree),
+            "SPBTYWGYHBGS" => query.Where((snapshot, order, redPackAudit, special, guiderAudit) => guiderAudit.LevelOneStatus == ERedPackAuditStatus.Refuse || guiderAudit.LevelTwoStatus == ERedPackAuditStatus.Refuse),
+            _ => throw new UserFriendlyException("入参错误:" + dto.FieldName + " 未实现")
+        };
 
-        return query.Select((snapshot, order) => new SnapshotStatisticsDetailOutDto
+        return query.Select((snapshot, order, redPackAudit, special, guiderAudit) => new SnapshotStatisticsDetailOutDto
         {
             CreationTime = order.CreationTime
         }, true);

+ 13 - 4
src/Hotline.Application/Snapshot/RedPackApplication.cs

@@ -285,7 +285,7 @@ public class RedPackApplication : IRedPackApplication, IScopeDependency
                             AuditTime = redPackAudit.AuditTime,
                             ApprovedAmount = redPackAudit.ApprovedAmount,
                             AcutalAmount = redPackAudit.AcutalAmount,
-                            IsIssued = redPackAudit.IsIssued,
+                            IsIssued = redPackAudit.IsSend,
                             //RecordRemark = record.Remark,
                             County = order.County,
                             // IsRectify = s.IsRepetition
@@ -338,7 +338,7 @@ public class RedPackApplication : IRedPackApplication, IScopeDependency
             .WhereIF(dto.IsTruth.HasValue, (redPackAudit, order, snapshot, record, industry) => snapshot.IsTruth == dto.IsTruth)
             .WhereIF(dto.IsTruthDepartment.HasValue, (redPackAudit, order, snapshot, record, industry) => snapshot.IsTruthDepartment == dto.IsTruthDepartment)
             .WhereIF(dto.BeginAuditTime.HasValue && dto.EndAuditTime.HasValue, (redPackAudit, order, snapshot, record, industry) => redPackAudit.AuditTime <= dto.EndAuditTime && redPackAudit.AuditTime >= dto.BeginAuditTime)
-            .WhereIF(dto.IsIssued.HasValue, (redPackAudit, order, snapshot, record, industry) => redPackAudit.IsIssued == dto.IsIssued)
+            .WhereIF(dto.IsIssued.HasValue, (redPackAudit, order, snapshot, record, industry) => redPackAudit.IsSend == dto.IsIssued)
             .WhereIF(dto.IndustryId.NotNullOrEmpty(), (redPackAudit, order, snapshot, record, industry) => snapshot.IndustryId == dto.IndustryId)
             .WhereIF(dto.ConfigAmount.HasValue, (redPackAudit, order, snapshot, record, industry) => industry.CitizenReadPackAmount == dto.ConfigAmount)
             .WhereIF(dto.AcutalAmount.HasValue, (redPackAudit, order, snapshot, record, industry) => redPackAudit.AcutalAmount == dto.AcutalAmount)
@@ -364,7 +364,7 @@ public class RedPackApplication : IRedPackApplication, IScopeDependency
                 AuditTime = redPackAudit.AuditTime,
                 ApprovedAmount = redPackAudit.ApprovedAmount,
                 AcutalAmount = redPackAudit.AcutalAmount,
-                IsIssued = redPackAudit.IsIssued,
+                IsIssued = redPackAudit.IsSend,
                 RecordRemark = record.Remark,
                 County = order.County,
                 // IsRectify = s.IsRepetition
@@ -498,7 +498,12 @@ public class RedPackApplication : IRedPackApplication, IScopeDependency
                 .Then(async (record) =>
                 {
                     if (dto.FailCase != null)
+                    {
                         record.FailCase = dto.FailCase.Value;
+                        record.DistributionState = EReadPackSendStatus.Fail;
+                        if (record.FailCase == ERedPackPickupFailCase.Excuse)
+                            record.PickupStatus = ERedPackPickupStatus.Excuse;
+                    }
                     await _redPackRecordRepository.UpdateAsync(record);
                 });
         }
@@ -521,6 +526,8 @@ public class RedPackApplication : IRedPackApplication, IScopeDependency
         var audit = await _redPackAuditRepository.GetAsync(dto.RedPackAuditId) ?? throw UserFriendlyException.SameMessage("审核记录不存在");
 
         dto.Adapt(audit);
+        audit.IsSend = true;
+        audit.AcutalAmount = dto.ReplenishAmount;
         await _redPackAuditRepository.UpdateAsync(audit);
         await _redPackRecordRepository.UpdateAsync(record);
 
@@ -558,6 +565,8 @@ public class RedPackApplication : IRedPackApplication, IScopeDependency
         var audit = await _specialRedPackAuditRepository.GetAsync(dto.RedPackAuditId) ?? throw UserFriendlyException.SameMessage("审核记录不存在");
 
         dto.Adapt(audit);
+        audit.IsSend = true;
+        audit.AcutalAmount = dto.ReplenishAmount;
         await _specialRedPackAuditRepository.UpdateAsync(audit);
         await _redPackRecordRepository.UpdateAsync(record);
 
@@ -724,7 +733,7 @@ public class RedPackApplication : IRedPackApplication, IScopeDependency
         var outDto = new SnapshotOrderAuditSpecialDetailOutDto();
         var order = await _orderRepository.GetAsync(id) ?? throw new UserFriendlyException("工单不存在");
         outDto.Order = order.Adapt<SnapshotOrderAuditOrderDetailOutDto>();
-        outDto.AuditType = _systemDic.SnapshotRedPackSpecialType;
+        outDto.AuditType = _systemDic.SnapshotRedPackSpecialType.Adapt<List<SystemDicDataAmountOutDto>>();
         outDto.AuditComBox = EnumExts.GetDescriptions<ERedPackAuditStatus>().Where(m => m.Key != 0).ToList();
         var audit = await _redPackAuditRepository.GetAsync(m => m.OrderId == id);
         outDto.AuditDetail = audit.Adapt<SnapshotOrderAuditSpecialAuditDetailOutDto>();

+ 21 - 3
src/Hotline.Share/Dtos/Snapshot/OrderDto.cs

@@ -708,7 +708,7 @@ public class GetRedPackAuditSMSTemplateInDto
 }
 
 public class SnapshotOrderAuditSpecialDetailOutDto
-{ 
+{
     /// <summary>
     /// 工单信息
     /// </summary>
@@ -727,7 +727,25 @@ public class SnapshotOrderAuditSpecialDetailOutDto
     /// <summary>
     /// 审核类型
     /// </summary>
-    public IEnumerable<SystemDicDataOutDto> AuditType { get; set; }
+    public IEnumerable<SystemDicDataAmountOutDto> AuditType { get; set; }
+}
+
+public class SystemDicDataAmountOutDto : SystemDicDataOutDto
+{
+    /// <summary>
+    /// 价格
+    /// </summary>
+    public int Amount => int.Parse(_dicDataName.Split('|')[1]);
+
+    private string _dicDataName;
+    new public string DicDataName
+    {
+        get
+        {
+            return _dicDataName.Split('|')[0];
+        }
+        set { _dicDataName = value; }
+    }
 }
 
 public class SnapshotOrderAuditSpecialAuditDetailOutDto
@@ -900,7 +918,7 @@ public class SnapshotOrderAuditOrderDetailOutDto
 }
 
 public class UpdateRedPackGuiderAuditInDto
-{ 
+{
     /// <summary>
     /// 审核Id
     /// </summary>

+ 4 - 4
src/Hotline.Share/Dtos/Snapshot/StatisticsDto.cs

@@ -133,7 +133,7 @@ public class SnapshotStatisticsOutDto
     /// <summary>
     /// 已发金额
     /// </summary>
-    public double YFJE { get; set; }
+    public double? YFJE { get; set; }
 
     /// <summary>
     /// 局审核发放网格员奖励个数
@@ -153,17 +153,17 @@ public class SnapshotStatisticsOutDto
     /// <summary>
     /// 市民奖励总额
     /// </summary>
-    public double SMJLZE { get; set; }
+    public double? SMJLZE { get; set; }
 
     /// <summary>
     /// 市民已发放奖励总额
     /// </summary>
-    public double SMYFFJLZE { get; set; }
+    public double? SMYFFJLZE { get; set; }
 
     /// <summary>
     /// 市民待发奖励总额
     /// </summary>
-    public double SMDFFJLZE { get; set; }
+    public double? SMDFFJLZE { get; set; }
 
     /// <summary>
     /// 已发(个)

+ 2 - 2
src/Hotline/Snapshot/RedPackAudit.cs

@@ -108,8 +108,8 @@ public class RedPackAudit : CreationSoftDeleteEntity
     /// <summary>
     /// 是否已发放
     /// </summary>
-    [SugarColumn(ColumnDescription = "是否已发放")]
-    public bool? IsIssued { get; set; }
+    //[SugarColumn(ColumnDescription = "是否已发放")]
+    //public bool? IsIssued { get; set; }
 
     /// <summary>
     /// 短信Id