Commit 1cf1bd86e006e9e18a852bd6e8f254428d5f6d75

Authored by “wangming”
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,支持新字段
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 +