Commit 1cf1bd86e006e9e18a852bd6e8f254428d5f6d75
1 parent
e94f4f10
feat: 添加项目资料表手工费字段和陪同相关字段
- 项目资料表(lq_xmzl)添加四个手工费字段: * F_MedicalBeautyLaborCost - 医美手工费 * F_TechBeautyLaborCost - 科美手工费 * F_LifeBeautyLaborCost - 生美手工费 * F_HealthCoachLaborCost - 健康师手工费 * F_IsAllowAccompanied - 是否允许陪同 - 耗卡健康师业绩表(lq_xh_jksyj)添加陪同字段: * F_AccompaniedProjectNumber - 陪同项目数 * F_IsAccompanied - 是否陪同 - 耗卡品项明细表(lq_xh_pxmx)添加字段: * F_IsNeedAccompanied - 是否需要陪同 - 更新相关实体类和DTO,支持新字段
Showing
9 changed files
with
181 additions
and
218 deletions
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXmzl/LqXmzlCrInput.cs
| @@ -81,6 +81,31 @@ namespace NCC.Extend.Entitys.Dto.LqXmzl | @@ -81,6 +81,31 @@ namespace NCC.Extend.Entitys.Dto.LqXmzl | ||
| 81 | public decimal? sgf { get; set; } | 81 | public decimal? sgf { get; set; } |
| 82 | 82 | ||
| 83 | /// <summary> | 83 | /// <summary> |
| 84 | + /// 医美手工费 | ||
| 85 | + /// </summary> | ||
| 86 | + public decimal? medicalBeautyLaborCost { get; set; } | ||
| 87 | + | ||
| 88 | + /// <summary> | ||
| 89 | + /// 科美手工费 | ||
| 90 | + /// </summary> | ||
| 91 | + public decimal? techBeautyLaborCost { get; set; } | ||
| 92 | + | ||
| 93 | + /// <summary> | ||
| 94 | + /// 生美手工费 | ||
| 95 | + /// </summary> | ||
| 96 | + public decimal? lifeBeautyLaborCost { get; set; } | ||
| 97 | + | ||
| 98 | + /// <summary> | ||
| 99 | + /// 健康师手工费 | ||
| 100 | + /// </summary> | ||
| 101 | + public decimal? healthCoachLaborCost { get; set; } | ||
| 102 | + | ||
| 103 | + /// <summary> | ||
| 104 | + /// 是否允许陪同 | ||
| 105 | + /// </summary> | ||
| 106 | + public int? isAllowAccompanied { get; set; } = 0; | ||
| 107 | + | ||
| 108 | + /// <summary> | ||
| 84 | /// 科美类型 | 109 | /// 科美类型 |
| 85 | /// </summary> | 110 | /// </summary> |
| 86 | public string beautyType { get; set; } | 111 | public string beautyType { get; set; } |
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXmzl/LqXmzlInfoOutput.cs
| @@ -81,6 +81,31 @@ namespace NCC.Extend.Entitys.Dto.LqXmzl | @@ -81,6 +81,31 @@ namespace NCC.Extend.Entitys.Dto.LqXmzl | ||
| 81 | public decimal? sgf { get; set; } | 81 | public decimal? sgf { get; set; } |
| 82 | 82 | ||
| 83 | /// <summary> | 83 | /// <summary> |
| 84 | + /// 医美手工费 | ||
| 85 | + /// </summary> | ||
| 86 | + public decimal? medicalBeautyLaborCost { get; set; } | ||
| 87 | + | ||
| 88 | + /// <summary> | ||
| 89 | + /// 科美手工费 | ||
| 90 | + /// </summary> | ||
| 91 | + public decimal? techBeautyLaborCost { get; set; } | ||
| 92 | + | ||
| 93 | + /// <summary> | ||
| 94 | + /// 生美手工费 | ||
| 95 | + /// </summary> | ||
| 96 | + public decimal? lifeBeautyLaborCost { get; set; } | ||
| 97 | + | ||
| 98 | + /// <summary> | ||
| 99 | + /// 健康师手工费 | ||
| 100 | + /// </summary> | ||
| 101 | + public decimal? healthCoachLaborCost { get; set; } | ||
| 102 | + | ||
| 103 | + /// <summary> | ||
| 104 | + /// 是否允许陪同 | ||
| 105 | + /// </summary> | ||
| 106 | + public int? isAllowAccompanied { get; set; } = 0; | ||
| 107 | + | ||
| 108 | + /// <summary> | ||
| 84 | /// 科美类型 | 109 | /// 科美类型 |
| 85 | /// </summary> | 110 | /// </summary> |
| 86 | public string beautyType { get; set; } | 111 | public string beautyType { get; set; } |
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXmzl/LqXmzlListOutput.cs
| @@ -80,6 +80,31 @@ namespace NCC.Extend.Entitys.Dto.LqXmzl | @@ -80,6 +80,31 @@ namespace NCC.Extend.Entitys.Dto.LqXmzl | ||
| 80 | public decimal? sgf { get; set; } | 80 | public decimal? sgf { get; set; } |
| 81 | 81 | ||
| 82 | /// <summary> | 82 | /// <summary> |
| 83 | + /// 医美手工费 | ||
| 84 | + /// </summary> | ||
| 85 | + public decimal? medicalBeautyLaborCost { get; set; } | ||
| 86 | + | ||
| 87 | + /// <summary> | ||
| 88 | + /// 科美手工费 | ||
| 89 | + /// </summary> | ||
| 90 | + public decimal? techBeautyLaborCost { get; set; } | ||
| 91 | + | ||
| 92 | + /// <summary> | ||
| 93 | + /// 生美手工费 | ||
| 94 | + /// </summary> | ||
| 95 | + public decimal? lifeBeautyLaborCost { get; set; } | ||
| 96 | + | ||
| 97 | + /// <summary> | ||
| 98 | + /// 健康师手工费 | ||
| 99 | + /// </summary> | ||
| 100 | + public decimal? healthCoachLaborCost { get; set; } | ||
| 101 | + | ||
| 102 | + /// <summary> | ||
| 103 | + /// 是否允许陪同 | ||
| 104 | + /// </summary> | ||
| 105 | + public int? isAllowAccompanied { get; set; } = 0; | ||
| 106 | + | ||
| 107 | + /// <summary> | ||
| 83 | /// 科美类型 | 108 | /// 科美类型 |
| 84 | /// </summary> | 109 | /// </summary> |
| 85 | public string beautyType { get; set; } | 110 | public string beautyType { get; set; } |
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_xmzl/LqXmzlEntity.cs
| @@ -98,6 +98,30 @@ namespace NCC.Extend.Entitys.lq_xmzl | @@ -98,6 +98,30 @@ namespace NCC.Extend.Entitys.lq_xmzl | ||
| 98 | public decimal? Sgf { get; set; } | 98 | public decimal? Sgf { get; set; } |
| 99 | 99 | ||
| 100 | /// <summary> | 100 | /// <summary> |
| 101 | + /// 医美手工费 | ||
| 102 | + /// </summary> | ||
| 103 | + [SugarColumn(ColumnName = "F_MedicalBeautyLaborCost")] | ||
| 104 | + public decimal? MedicalBeautyLaborCost { get; set; } | ||
| 105 | + | ||
| 106 | + /// <summary> | ||
| 107 | + /// 科美手工费 | ||
| 108 | + /// </summary> | ||
| 109 | + [SugarColumn(ColumnName = "F_TechBeautyLaborCost")] | ||
| 110 | + public decimal? TechBeautyLaborCost { get; set; } | ||
| 111 | + | ||
| 112 | + /// <summary> | ||
| 113 | + /// 生美手工费 | ||
| 114 | + /// </summary> | ||
| 115 | + [SugarColumn(ColumnName = "F_LifeBeautyLaborCost")] | ||
| 116 | + public decimal? LifeBeautyLaborCost { get; set; } | ||
| 117 | + | ||
| 118 | + /// <summary> | ||
| 119 | + /// 健康师手工费 | ||
| 120 | + /// </summary> | ||
| 121 | + [SugarColumn(ColumnName = "F_HealthCoachLaborCost")] | ||
| 122 | + public decimal? HealthCoachLaborCost { get; set; } | ||
| 123 | + | ||
| 124 | + /// <summary> | ||
| 101 | /// 科美类型 | 125 | /// 科美类型 |
| 102 | /// </summary> | 126 | /// </summary> |
| 103 | [SugarColumn(ColumnName = "F_BeautyType")] | 127 | [SugarColumn(ColumnName = "F_BeautyType")] |
netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs
| @@ -279,13 +279,11 @@ namespace NCC.Extend.LqKdKdjlb | @@ -279,13 +279,11 @@ namespace NCC.Extend.LqKdKdjlb | ||
| 279 | 279 | ||
| 280 | // 获取当前页的开单记录ID列表 | 280 | // 获取当前页的开单记录ID列表 |
| 281 | var billingIds = data.list.Select(x => x.id).ToList(); | 281 | var billingIds = data.list.Select(x => x.id).ToList(); |
| 282 | - | ||
| 283 | // 批量查询品项明细 | 282 | // 批量查询品项明细 |
| 284 | var itemDetails = new List<LqKdPxmxInfoOutput>(); | 283 | var itemDetails = new List<LqKdPxmxInfoOutput>(); |
| 285 | if (billingIds.Any()) | 284 | if (billingIds.Any()) |
| 286 | { | 285 | { |
| 287 | - itemDetails = await _db.Queryable<LqKdPxmxEntity>() | ||
| 288 | - .Where(x => billingIds.Contains(x.Glkdbh) && x.IsEffective == StatusEnum.有效.GetHashCode()) | 286 | + itemDetails = await _db.Queryable<LqKdPxmxEntity>().Where(x => billingIds.Contains(x.Glkdbh) && x.IsEffective == StatusEnum.有效.GetHashCode()) |
| 289 | .Select(x => new LqKdPxmxInfoOutput | 287 | .Select(x => new LqKdPxmxInfoOutput |
| 290 | { | 288 | { |
| 291 | id = x.Id, | 289 | id = x.Id, |
| @@ -575,199 +573,6 @@ namespace NCC.Extend.LqKdKdjlb | @@ -575,199 +573,6 @@ namespace NCC.Extend.LqKdKdjlb | ||
| 575 | } | 573 | } |
| 576 | #endregion | 574 | #endregion |
| 577 | 575 | ||
| 578 | - #region 新建开单记录表_备份 | ||
| 579 | - /// <summary> | ||
| 580 | - /// 新建开单记录表_备份 | ||
| 581 | - /// </summary> | ||
| 582 | - /// <param name="input">参数</param> | ||
| 583 | - /// <returns></returns> | ||
| 584 | - [HttpPost("Create_Bak")] | ||
| 585 | - public async Task Create_Bak([FromBody] LqKdKdjlbCrInput input) | ||
| 586 | - { | ||
| 587 | - var userInfo = await _userManager.GetUserInfo(); | ||
| 588 | - var entity = input.Adapt<LqKdKdjlbEntity>(); | ||
| 589 | - var HealthInstructorNames = ""; | ||
| 590 | - entity.Id = YitIdHelper.NextId().ToString(); | ||
| 591 | - entity.CreateTime = DateTime.Now; | ||
| 592 | - entity.UpdateTime = DateTime.Now; | ||
| 593 | - try | ||
| 594 | - { | ||
| 595 | - //开启事务 | ||
| 596 | - _db.BeginTran(); | ||
| 597 | - //新增开单记录表记录 | ||
| 598 | - entity.CreateUser = userInfo.userId; | ||
| 599 | - entity.DeductAmount = input.lqKdKdjlbDeductList.Sum(x => x.Amount ?? 0);//计算储扣总金额 | ||
| 600 | - var newEntity = await _db.Insertable(entity).IgnoreColumns(ignoreNullColumn: true).ExecuteReturnEntityAsync(); | ||
| 601 | - //循环品相信息 | ||
| 602 | - // 收集所有需要插入的实体,然后批量插入 | ||
| 603 | - var allPxmxEntities = new List<LqKdPxmxEntity>(); | ||
| 604 | - var allJksyjEntities = new List<LqKdJksyjEntity>(); | ||
| 605 | - var allKjbsyjEntities = new List<LqKdKjbsyjEntity>(); | ||
| 606 | - var allDeductEntities = new List<LqKdDeductinfoEntity>(); | ||
| 607 | - // 处理扣款信息列表 | ||
| 608 | - foreach (var item in input.lqKdKdjlbDeductList) | ||
| 609 | - { | ||
| 610 | - var lqKdDeductEntity = new LqKdDeductinfoEntity | ||
| 611 | - { | ||
| 612 | - Id = YitIdHelper.NextId().ToString(), | ||
| 613 | - BillingId = newEntity.Id, | ||
| 614 | - DeductId = item.DeductId, | ||
| 615 | - DeductType = item.DeductType, | ||
| 616 | - Amount = item.Amount, | ||
| 617 | - }; | ||
| 618 | - allDeductEntities.Add(lqKdDeductEntity); | ||
| 619 | - } | ||
| 620 | - // 处理品项明细列表 | ||
| 621 | - foreach (var item in input.lqKdPxmxList) | ||
| 622 | - { | ||
| 623 | - // 创建品项明细实体 | ||
| 624 | - var lqKdPxmxEntity = new LqKdPxmxEntity | ||
| 625 | - { | ||
| 626 | - Id = YitIdHelper.NextId().ToString(), | ||
| 627 | - Glkdbh = newEntity.Id, | ||
| 628 | - Yjsj = input.kdrq, | ||
| 629 | - CreateTIme = DateTime.Now, | ||
| 630 | - MemberId = entity.Kdhy, | ||
| 631 | - IsEnabled = 0, | ||
| 632 | - ProjectNumber = item.projectNumber, | ||
| 633 | - TotalPrice = (decimal)(item.pxjg * item.projectNumber), | ||
| 634 | - Px = item.px, | ||
| 635 | - Pxmc = item.pxmc, | ||
| 636 | - Pxjg = item.pxjg, | ||
| 637 | - SourceType = item.sourceType, | ||
| 638 | - ActualPrice = item.actualPrice, | ||
| 639 | - }; | ||
| 640 | - allPxmxEntities.Add(lqKdPxmxEntity); | ||
| 641 | - | ||
| 642 | - // 收集该品项关联的健康师业绩 | ||
| 643 | - if (item.lqKdJksyjList != null && item.lqKdJksyjList.Any()) | ||
| 644 | - { | ||
| 645 | - //把jksxm保存到HealthInstructorNames | ||
| 646 | - foreach (var ijks_tem in item.lqKdJksyjList) | ||
| 647 | - { | ||
| 648 | - HealthInstructorNames += ijks_tem.jksxm + ","; | ||
| 649 | - allJksyjEntities.Add(new LqKdJksyjEntity | ||
| 650 | - { | ||
| 651 | - Id = YitIdHelper.NextId().ToString(), | ||
| 652 | - Glkdbh = newEntity.Id, | ||
| 653 | - Jks = ijks_tem.jks, | ||
| 654 | - Jksxm = ijks_tem.jksxm, | ||
| 655 | - Jkszh = ijks_tem.jkszh, | ||
| 656 | - Jksyj = ijks_tem.jksyj, | ||
| 657 | - Yjsj = input.kdrq, | ||
| 658 | - Jsj_id = ijks_tem.jsj_id, | ||
| 659 | - Kdpxid = lqKdPxmxEntity.Id, | ||
| 660 | - }); | ||
| 661 | - } | ||
| 662 | - } | ||
| 663 | - | ||
| 664 | - // 收集该品项关联的科技部老师业绩 | ||
| 665 | - if (item.lqKdKjbsyjList != null && item.lqKdKjbsyjList.Any()) | ||
| 666 | - { | ||
| 667 | - foreach (var ikjbs_tem in item.lqKdKjbsyjList) | ||
| 668 | - { | ||
| 669 | - allKjbsyjEntities.Add( | ||
| 670 | - new LqKdKjbsyjEntity | ||
| 671 | - { | ||
| 672 | - Id = YitIdHelper.NextId().ToString(), | ||
| 673 | - Glkdbh = newEntity.Id, | ||
| 674 | - Kjbls = ikjbs_tem.kjbls, | ||
| 675 | - Kjblsxm = ikjbs_tem.kjblsxm, | ||
| 676 | - Kjblszh = ikjbs_tem.kjblszh, | ||
| 677 | - Kjblsyj = ikjbs_tem.kjblsyj, | ||
| 678 | - Yjsj = input.kdrq, | ||
| 679 | - Kdpxid = lqKdPxmxEntity.Id, | ||
| 680 | - } | ||
| 681 | - ); | ||
| 682 | - } | ||
| 683 | - } | ||
| 684 | - } | ||
| 685 | - | ||
| 686 | - | ||
| 687 | - //通过会员id查询会员信息 | ||
| 688 | - var memberInfo = await _db.Queryable<LqKhxxEntity>().Where(u => u.Id == entity.Kdhy).FirstAsync(); | ||
| 689 | - //通过开单记录表查询这个会员开单金额 | ||
| 690 | - var kdAmount = await _db.Queryable<LqKdKdjlbEntity>().Where(u => u.Kdhy == entity.Kdhy).SumAsync(u => u.Sfyj); | ||
| 691 | - //如果开单金额小于500,为散客,如果大于500,为会员 | ||
| 692 | - if (kdAmount < 500) | ||
| 693 | - { | ||
| 694 | - memberInfo.Khlx = MemberTypeEnum.散客.GetHashCode().ToString(); | ||
| 695 | - } | ||
| 696 | - else | ||
| 697 | - { | ||
| 698 | - memberInfo.Khlx = MemberTypeEnum.会员.GetHashCode().ToString(); | ||
| 699 | - } | ||
| 700 | - await _db.Updateable(memberInfo).ExecuteCommandAsync(); | ||
| 701 | - // 批量插入扣款信息 | ||
| 702 | - if (allDeductEntities.Any()) | ||
| 703 | - { | ||
| 704 | - await _db.Insertable(allDeductEntities).ExecuteCommandAsync(); | ||
| 705 | - } | ||
| 706 | - // 批量插入品项明细 | ||
| 707 | - if (allPxmxEntities.Any()) | ||
| 708 | - { | ||
| 709 | - await _db.Insertable(allPxmxEntities).ExecuteCommandAsync(); | ||
| 710 | - } | ||
| 711 | - // 批量插入健康师业绩 | ||
| 712 | - if (allJksyjEntities.Any()) | ||
| 713 | - { | ||
| 714 | - await _db.Insertable(allJksyjEntities).ExecuteCommandAsync(); | ||
| 715 | - } | ||
| 716 | - // 批量插入科技部老师业绩 | ||
| 717 | - if (allKjbsyjEntities.Any()) | ||
| 718 | - { | ||
| 719 | - await _db.Insertable(allKjbsyjEntities).ExecuteCommandAsync(); | ||
| 720 | - } | ||
| 721 | - | ||
| 722 | - //关闭事务 | ||
| 723 | - _db.CommitTran(); | ||
| 724 | - | ||
| 725 | - // 生成开单记录字符串并发送到企业微信 | ||
| 726 | - try | ||
| 727 | - { | ||
| 728 | - var entityInfo = await GetInfo(newEntity.Id); | ||
| 729 | - if (entityInfo != null) | ||
| 730 | - { | ||
| 731 | - var orderRecordString = _stringGenerator.GenerateOrderRecordString(entityInfo, HealthInstructorNames); | ||
| 732 | - Console.WriteLine("开单记录字符串生成成功:"); | ||
| 733 | - Console.WriteLine(orderRecordString); | ||
| 734 | - | ||
| 735 | - // 发送到企业微信群 | ||
| 736 | - try | ||
| 737 | - { | ||
| 738 | - var sendResult = await _weChatBotService.SendOrderRecordMessage(orderRecordString); | ||
| 739 | - if (sendResult) | ||
| 740 | - { | ||
| 741 | - Console.WriteLine("开单记录已成功发送到企业微信群"); | ||
| 742 | - } | ||
| 743 | - else | ||
| 744 | - { | ||
| 745 | - Console.WriteLine("开单记录发送到企业微信群失败"); | ||
| 746 | - } | ||
| 747 | - } | ||
| 748 | - catch (Exception wechatEx) | ||
| 749 | - { | ||
| 750 | - Console.WriteLine($"发送企业微信消息异常: {wechatEx.Message}"); | ||
| 751 | - } | ||
| 752 | - } | ||
| 753 | - } | ||
| 754 | - catch (Exception ex) | ||
| 755 | - { | ||
| 756 | - // 字符串生成失败不影响主流程,只记录日志 | ||
| 757 | - Console.WriteLine($"生成开单记录字符串失败: {ex.Message}"); | ||
| 758 | - } | ||
| 759 | - } | ||
| 760 | - catch (Exception ex) | ||
| 761 | - { | ||
| 762 | - //回滚事务 | ||
| 763 | - _db.RollbackTran(); | ||
| 764 | - Console.WriteLine($"开单创建失败: {ex.Message}"); | ||
| 765 | - Console.WriteLine($"异常堆栈: {ex.StackTrace}"); | ||
| 766 | - throw NCCException.Oh(ErrorCode.COM1000); | ||
| 767 | - } | ||
| 768 | - } | ||
| 769 | - #endregion | ||
| 770 | - | ||
| 771 | #region 获取开单记录表无分页列表 | 576 | #region 获取开单记录表无分页列表 |
| 772 | /// <summary> | 577 | /// <summary> |
| 773 | /// 获取开单记录表无分页列表 | 578 | /// 获取开单记录表无分页列表 |
netcore/src/Modularity/Extend/NCC.Extend/LqXhHyhkService.cs
| @@ -672,26 +672,24 @@ namespace NCC.Extend.LqXhHyhk | @@ -672,26 +672,24 @@ namespace NCC.Extend.LqXhHyhk | ||
| 672 | { | 672 | { |
| 673 | foreach (var ikjbs_tem in item.lqXhKjbsyjList) | 673 | foreach (var ikjbs_tem in item.lqXhKjbsyjList) |
| 674 | { | 674 | { |
| 675 | - allKjbsyjEntities.Add( | ||
| 676 | - new LqXhKjbsyjEntity | ||
| 677 | - { | ||
| 678 | - Id = YitIdHelper.NextId().ToString(), | ||
| 679 | - Glkdbh = input.id, | ||
| 680 | - Kjbls = ikjbs_tem.kjbls, | ||
| 681 | - Kjblsxm = ikjbs_tem.kjblsxm, | ||
| 682 | - Kjblszh = ikjbs_tem.kjblszh, | ||
| 683 | - Kjblsyj = ikjbs_tem.kjblsyj, | ||
| 684 | - Yjsj = DateTime.Now, | ||
| 685 | - Hkpxid = lqXhPxmxEntity.Id, | ||
| 686 | - OriginalHdpxNumber = ikjbs_tem.hdpxNumber, | ||
| 687 | - OvertimeHdpxNumber = (decimal)(entity.OvertimeCoefficient * (ikjbs_tem.hdpxNumber ?? 0)), | ||
| 688 | - HdpxNumber = (decimal)((ikjbs_tem.hdpxNumber ?? 0) + (entity.OvertimeCoefficient * (ikjbs_tem.hdpxNumber ?? 0))), | ||
| 689 | - OriginalLaborCost = ikjbs_tem.laborCost, | ||
| 690 | - OvertimeLaborCost = (decimal)(entity.OvertimeCoefficient * (ikjbs_tem.laborCost ?? 0)), | ||
| 691 | - LaborCost = (decimal)((ikjbs_tem.laborCost ?? 0) + (entity.OvertimeCoefficient * (ikjbs_tem.laborCost ?? 0))), | ||
| 692 | - IsEffective = StatusEnum.有效.GetHashCode(), | ||
| 693 | - } | ||
| 694 | - ); | 675 | + allKjbsyjEntities.Add(new LqXhKjbsyjEntity |
| 676 | + { | ||
| 677 | + Id = YitIdHelper.NextId().ToString(), | ||
| 678 | + Glkdbh = input.id, | ||
| 679 | + Kjbls = ikjbs_tem.kjbls, | ||
| 680 | + Kjblsxm = ikjbs_tem.kjblsxm, | ||
| 681 | + Kjblszh = ikjbs_tem.kjblszh, | ||
| 682 | + Kjblsyj = ikjbs_tem.kjblsyj, | ||
| 683 | + Yjsj = DateTime.Now, | ||
| 684 | + Hkpxid = lqXhPxmxEntity.Id, | ||
| 685 | + OriginalHdpxNumber = ikjbs_tem.hdpxNumber, | ||
| 686 | + OvertimeHdpxNumber = (decimal)(entity.OvertimeCoefficient * (ikjbs_tem.hdpxNumber ?? 0)), | ||
| 687 | + HdpxNumber = (decimal)((ikjbs_tem.hdpxNumber ?? 0) + (entity.OvertimeCoefficient * (ikjbs_tem.hdpxNumber ?? 0))), | ||
| 688 | + OriginalLaborCost = ikjbs_tem.laborCost, | ||
| 689 | + OvertimeLaborCost = (decimal)(entity.OvertimeCoefficient * (ikjbs_tem.laborCost ?? 0)), | ||
| 690 | + LaborCost = (decimal)((ikjbs_tem.laborCost ?? 0) + (entity.OvertimeCoefficient * (ikjbs_tem.laborCost ?? 0))), | ||
| 691 | + IsEffective = StatusEnum.有效.GetHashCode(), | ||
| 692 | + }); | ||
| 695 | } | 693 | } |
| 696 | } | 694 | } |
| 697 | } | 695 | } |
netcore/src/Modularity/Extend/NCC.Extend/LqXmzlService.cs
| @@ -28,6 +28,7 @@ using NCC.Common.Model.NPOI; | @@ -28,6 +28,7 @@ using NCC.Common.Model.NPOI; | ||
| 28 | using NCC.Common.Configuration; | 28 | using NCC.Common.Configuration; |
| 29 | using NCC.DataEncryption; | 29 | using NCC.DataEncryption; |
| 30 | using NCC.ClayObject; | 30 | using NCC.ClayObject; |
| 31 | +using NCC.Extend.Entitys.Enum; | ||
| 31 | 32 | ||
| 32 | namespace NCC.Extend.LqXmzl | 33 | namespace NCC.Extend.LqXmzl |
| 33 | { | 34 | { |
| @@ -115,6 +116,10 @@ namespace NCC.Extend.LqXmzl | @@ -115,6 +116,10 @@ namespace NCC.Extend.LqXmzl | ||
| 115 | beautyType = it.BeautyType, | 116 | beautyType = it.BeautyType, |
| 116 | sourceType = it.SourceType, | 117 | sourceType = it.SourceType, |
| 117 | isEffective = it.IsEffective, | 118 | isEffective = it.IsEffective, |
| 119 | + medicalBeautyLaborCost = it.MedicalBeautyLaborCost, | ||
| 120 | + techBeautyLaborCost = it.TechBeautyLaborCost, | ||
| 121 | + lifeBeautyLaborCost = it.LifeBeautyLaborCost, | ||
| 122 | + healthCoachLaborCost = it.HealthCoachLaborCost, | ||
| 118 | }).MergeTable().OrderBy(sidx + " " + input.sort).ToPagedListAsync(input.currentPage, input.pageSize); | 123 | }).MergeTable().OrderBy(sidx + " " + input.sort).ToPagedListAsync(input.currentPage, input.pageSize); |
| 119 | return PageResult<LqXmzlListOutput>.SqlSugarPageResult(data); | 124 | return PageResult<LqXmzlListOutput>.SqlSugarPageResult(data); |
| 120 | } | 125 | } |
| @@ -279,6 +284,23 @@ namespace NCC.Extend.LqXmzl | @@ -279,6 +284,23 @@ namespace NCC.Extend.LqXmzl | ||
| 279 | } | 284 | } |
| 280 | #endregion | 285 | #endregion |
| 281 | 286 | ||
| 287 | + #region 设置品项作废 | ||
| 288 | + /// <summary> | ||
| 289 | + /// 设置品项作废 | ||
| 290 | + /// </summary> | ||
| 291 | + /// <param name="id">主键</param> | ||
| 292 | + /// <returns></returns> | ||
| 293 | + [HttpPut("SetInvalid/{id}")] | ||
| 294 | + public async Task SetInvalid(string id) | ||
| 295 | + { | ||
| 296 | + var entity = await _db.Queryable<LqXmzlEntity>().FirstAsync(p => p.Id == id); | ||
| 297 | + if (entity == null) throw NCCException.Oh("品项不存在"); | ||
| 298 | + entity.IsEffective = StatusEnum.无效.GetHashCode(); | ||
| 299 | + var isOk = await _db.Updateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); | ||
| 300 | + if (!(isOk > 0)) throw NCCException.Oh(ErrorCode.COM1001); | ||
| 301 | + } | ||
| 302 | + #endregion | ||
| 303 | + | ||
| 282 | #region 删除品项资料 | 304 | #region 删除品项资料 |
| 283 | /// <summary> | 305 | /// <summary> |
| 284 | /// 删除品项资料 | 306 | /// 删除品项资料 |
| @@ -669,9 +691,7 @@ namespace NCC.Extend.LqXmzl | @@ -669,9 +691,7 @@ namespace NCC.Extend.LqXmzl | ||
| 669 | return result; | 691 | return result; |
| 670 | } | 692 | } |
| 671 | #endregion | 693 | #endregion |
| 672 | - | ||
| 673 | } | 694 | } |
| 674 | - | ||
| 675 | /// <summary> | 695 | /// <summary> |
| 676 | /// 品项统计数据(内部类) | 696 | /// 品项统计数据(内部类) |
| 677 | /// </summary> | 697 | /// </summary> |
sql/添加耗卡健康师业绩表陪同字段.sql
0 → 100644
| 1 | +-- 给lq_xh_jksyj表添加两个陪同相关字段 | ||
| 2 | +-- 陪同项目数、是否陪同 | ||
| 3 | + | ||
| 4 | +-- 添加陪同项目数字段 | ||
| 5 | +ALTER TABLE lq_xh_jksyj | ||
| 6 | +ADD COLUMN F_AccompaniedProjectNumber DECIMAL(18,2) DEFAULT 0.00 COMMENT '陪同项目数' AFTER F_OvertimeLaborCost; | ||
| 7 | + | ||
| 8 | +-- 添加是否陪同字段 | ||
| 9 | +ALTER TABLE lq_xh_jksyj | ||
| 10 | +ADD COLUMN F_IsAccompanied INT DEFAULT 0 COMMENT '是否陪同(0-否,1-是)' AFTER F_AccompaniedProjectNumber; | ||
| 11 | + |
sql/添加项目资料表手工费字段.sql
0 → 100644
| 1 | +-- 给lq_xmzl表添加四个手工费字段 | ||
| 2 | +-- 医美手工费、科美手工费、生美手工费、健康师手工费 | ||
| 3 | + | ||
| 4 | +-- 添加医美手工费字段 | ||
| 5 | +ALTER TABLE lq_xmzl | ||
| 6 | +ADD COLUMN F_MedicalBeautyLaborCost DECIMAL(18,2) DEFAULT 0.00 COMMENT '医美手工费' AFTER sgf; | ||
| 7 | + | ||
| 8 | +-- 添加科美手工费字段 | ||
| 9 | +ALTER TABLE lq_xmzl | ||
| 10 | +ADD COLUMN F_TechBeautyLaborCost DECIMAL(18,2) DEFAULT 0.00 COMMENT '科美手工费' AFTER F_MedicalBeautyLaborCost; | ||
| 11 | + | ||
| 12 | +-- 添加生美手工费字段 | ||
| 13 | +ALTER TABLE lq_xmzl | ||
| 14 | +ADD COLUMN F_LifeBeautyLaborCost DECIMAL(18,2) DEFAULT 0.00 COMMENT '生美手工费' AFTER F_TechBeautyLaborCost; | ||
| 15 | + | ||
| 16 | +-- 添加健康师手工费字段 | ||
| 17 | +ALTER TABLE lq_xmzl | ||
| 18 | +ADD COLUMN F_HealthCoachLaborCost DECIMAL(18,2) DEFAULT 0.00 COMMENT '健康师手工费' AFTER F_LifeBeautyLaborCost; | ||
| 19 | + | ||
| 20 | +-- 更新已有数据:如果原有sgf字段有值,将值复制到四个新字段(可根据业务需求调整) | ||
| 21 | +-- UPDATE lq_xmzl SET F_MedicalBeautyLaborCost = sgf, F_TechBeautyLaborCost = sgf, F_LifeBeautyLaborCost = sgf, F_HealthCoachLaborCost = sgf WHERE sgf IS NOT NULL AND sgf > 0; | ||
| 22 | + | ||
| 23 | +-- ============================================ | ||
| 24 | +-- 给lq_xmzl表添加是否允许陪同字段 | ||
| 25 | +-- ============================================ | ||
| 26 | + | ||
| 27 | +-- 添加是否允许陪同字段 | ||
| 28 | +ALTER TABLE lq_xmzl | ||
| 29 | +ADD COLUMN F_IsAllowAccompanied INT DEFAULT 0 COMMENT '是否允许陪同(0-否,1-是)' AFTER F_HealthCoachLaborCost; | ||
| 30 | + |