diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXmzl/LqXmzlCrInput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXmzl/LqXmzlCrInput.cs
index 9c0a8d9..a839463 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXmzl/LqXmzlCrInput.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXmzl/LqXmzlCrInput.cs
@@ -81,6 +81,31 @@ namespace NCC.Extend.Entitys.Dto.LqXmzl
public decimal? sgf { get; set; }
///
+ /// 医美手工费
+ ///
+ public decimal? medicalBeautyLaborCost { get; set; }
+
+ ///
+ /// 科美手工费
+ ///
+ public decimal? techBeautyLaborCost { get; set; }
+
+ ///
+ /// 生美手工费
+ ///
+ public decimal? lifeBeautyLaborCost { get; set; }
+
+ ///
+ /// 健康师手工费
+ ///
+ public decimal? healthCoachLaborCost { get; set; }
+
+ ///
+ /// 是否允许陪同
+ ///
+ public int? isAllowAccompanied { get; set; } = 0;
+
+ ///
/// 科美类型
///
public string beautyType { get; set; }
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXmzl/LqXmzlInfoOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXmzl/LqXmzlInfoOutput.cs
index 32bc357..8f2ce4d 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXmzl/LqXmzlInfoOutput.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXmzl/LqXmzlInfoOutput.cs
@@ -81,6 +81,31 @@ namespace NCC.Extend.Entitys.Dto.LqXmzl
public decimal? sgf { get; set; }
///
+ /// 医美手工费
+ ///
+ public decimal? medicalBeautyLaborCost { get; set; }
+
+ ///
+ /// 科美手工费
+ ///
+ public decimal? techBeautyLaborCost { get; set; }
+
+ ///
+ /// 生美手工费
+ ///
+ public decimal? lifeBeautyLaborCost { get; set; }
+
+ ///
+ /// 健康师手工费
+ ///
+ public decimal? healthCoachLaborCost { get; set; }
+
+ ///
+ /// 是否允许陪同
+ ///
+ public int? isAllowAccompanied { get; set; } = 0;
+
+ ///
/// 科美类型
///
public string beautyType { get; set; }
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXmzl/LqXmzlListOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXmzl/LqXmzlListOutput.cs
index f463317..3cf55a3 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXmzl/LqXmzlListOutput.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXmzl/LqXmzlListOutput.cs
@@ -80,6 +80,31 @@ namespace NCC.Extend.Entitys.Dto.LqXmzl
public decimal? sgf { get; set; }
///
+ /// 医美手工费
+ ///
+ public decimal? medicalBeautyLaborCost { get; set; }
+
+ ///
+ /// 科美手工费
+ ///
+ public decimal? techBeautyLaborCost { get; set; }
+
+ ///
+ /// 生美手工费
+ ///
+ public decimal? lifeBeautyLaborCost { get; set; }
+
+ ///
+ /// 健康师手工费
+ ///
+ public decimal? healthCoachLaborCost { get; set; }
+
+ ///
+ /// 是否允许陪同
+ ///
+ public int? isAllowAccompanied { get; set; } = 0;
+
+ ///
/// 科美类型
///
public string beautyType { get; set; }
diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_xmzl/LqXmzlEntity.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_xmzl/LqXmzlEntity.cs
index b19156e..cfde2de 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_xmzl/LqXmzlEntity.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_xmzl/LqXmzlEntity.cs
@@ -98,6 +98,30 @@ namespace NCC.Extend.Entitys.lq_xmzl
public decimal? Sgf { get; set; }
///
+ /// 医美手工费
+ ///
+ [SugarColumn(ColumnName = "F_MedicalBeautyLaborCost")]
+ public decimal? MedicalBeautyLaborCost { get; set; }
+
+ ///
+ /// 科美手工费
+ ///
+ [SugarColumn(ColumnName = "F_TechBeautyLaborCost")]
+ public decimal? TechBeautyLaborCost { get; set; }
+
+ ///
+ /// 生美手工费
+ ///
+ [SugarColumn(ColumnName = "F_LifeBeautyLaborCost")]
+ public decimal? LifeBeautyLaborCost { get; set; }
+
+ ///
+ /// 健康师手工费
+ ///
+ [SugarColumn(ColumnName = "F_HealthCoachLaborCost")]
+ public decimal? HealthCoachLaborCost { get; set; }
+
+ ///
/// 科美类型
///
[SugarColumn(ColumnName = "F_BeautyType")]
diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs
index 9b25335..f963270 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs
@@ -279,13 +279,11 @@ namespace NCC.Extend.LqKdKdjlb
// 获取当前页的开单记录ID列表
var billingIds = data.list.Select(x => x.id).ToList();
-
// 批量查询品项明细
var itemDetails = new List();
if (billingIds.Any())
{
- itemDetails = await _db.Queryable()
- .Where(x => billingIds.Contains(x.Glkdbh) && x.IsEffective == StatusEnum.有效.GetHashCode())
+ itemDetails = await _db.Queryable().Where(x => billingIds.Contains(x.Glkdbh) && x.IsEffective == StatusEnum.有效.GetHashCode())
.Select(x => new LqKdPxmxInfoOutput
{
id = x.Id,
@@ -575,199 +573,6 @@ namespace NCC.Extend.LqKdKdjlb
}
#endregion
- #region 新建开单记录表_备份
- ///
- /// 新建开单记录表_备份
- ///
- /// 参数
- ///
- [HttpPost("Create_Bak")]
- public async Task Create_Bak([FromBody] LqKdKdjlbCrInput input)
- {
- var userInfo = await _userManager.GetUserInfo();
- var entity = input.Adapt();
- var HealthInstructorNames = "";
- entity.Id = YitIdHelper.NextId().ToString();
- entity.CreateTime = DateTime.Now;
- entity.UpdateTime = DateTime.Now;
- try
- {
- //开启事务
- _db.BeginTran();
- //新增开单记录表记录
- entity.CreateUser = userInfo.userId;
- entity.DeductAmount = input.lqKdKdjlbDeductList.Sum(x => x.Amount ?? 0);//计算储扣总金额
- var newEntity = await _db.Insertable(entity).IgnoreColumns(ignoreNullColumn: true).ExecuteReturnEntityAsync();
- //循环品相信息
- // 收集所有需要插入的实体,然后批量插入
- var allPxmxEntities = new List();
- var allJksyjEntities = new List();
- var allKjbsyjEntities = new List();
- var allDeductEntities = new List();
- // 处理扣款信息列表
- foreach (var item in input.lqKdKdjlbDeductList)
- {
- var lqKdDeductEntity = new LqKdDeductinfoEntity
- {
- Id = YitIdHelper.NextId().ToString(),
- BillingId = newEntity.Id,
- DeductId = item.DeductId,
- DeductType = item.DeductType,
- Amount = item.Amount,
- };
- allDeductEntities.Add(lqKdDeductEntity);
- }
- // 处理品项明细列表
- foreach (var item in input.lqKdPxmxList)
- {
- // 创建品项明细实体
- var lqKdPxmxEntity = new LqKdPxmxEntity
- {
- Id = YitIdHelper.NextId().ToString(),
- Glkdbh = newEntity.Id,
- Yjsj = input.kdrq,
- CreateTIme = DateTime.Now,
- MemberId = entity.Kdhy,
- IsEnabled = 0,
- ProjectNumber = item.projectNumber,
- TotalPrice = (decimal)(item.pxjg * item.projectNumber),
- Px = item.px,
- Pxmc = item.pxmc,
- Pxjg = item.pxjg,
- SourceType = item.sourceType,
- ActualPrice = item.actualPrice,
- };
- allPxmxEntities.Add(lqKdPxmxEntity);
-
- // 收集该品项关联的健康师业绩
- if (item.lqKdJksyjList != null && item.lqKdJksyjList.Any())
- {
- //把jksxm保存到HealthInstructorNames
- foreach (var ijks_tem in item.lqKdJksyjList)
- {
- HealthInstructorNames += ijks_tem.jksxm + ",";
- allJksyjEntities.Add(new LqKdJksyjEntity
- {
- Id = YitIdHelper.NextId().ToString(),
- Glkdbh = newEntity.Id,
- Jks = ijks_tem.jks,
- Jksxm = ijks_tem.jksxm,
- Jkszh = ijks_tem.jkszh,
- Jksyj = ijks_tem.jksyj,
- Yjsj = input.kdrq,
- Jsj_id = ijks_tem.jsj_id,
- Kdpxid = lqKdPxmxEntity.Id,
- });
- }
- }
-
- // 收集该品项关联的科技部老师业绩
- if (item.lqKdKjbsyjList != null && item.lqKdKjbsyjList.Any())
- {
- foreach (var ikjbs_tem in item.lqKdKjbsyjList)
- {
- allKjbsyjEntities.Add(
- new LqKdKjbsyjEntity
- {
- Id = YitIdHelper.NextId().ToString(),
- Glkdbh = newEntity.Id,
- Kjbls = ikjbs_tem.kjbls,
- Kjblsxm = ikjbs_tem.kjblsxm,
- Kjblszh = ikjbs_tem.kjblszh,
- Kjblsyj = ikjbs_tem.kjblsyj,
- Yjsj = input.kdrq,
- Kdpxid = lqKdPxmxEntity.Id,
- }
- );
- }
- }
- }
-
-
- //通过会员id查询会员信息
- var memberInfo = await _db.Queryable().Where(u => u.Id == entity.Kdhy).FirstAsync();
- //通过开单记录表查询这个会员开单金额
- var kdAmount = await _db.Queryable().Where(u => u.Kdhy == entity.Kdhy).SumAsync(u => u.Sfyj);
- //如果开单金额小于500,为散客,如果大于500,为会员
- if (kdAmount < 500)
- {
- memberInfo.Khlx = MemberTypeEnum.散客.GetHashCode().ToString();
- }
- else
- {
- memberInfo.Khlx = MemberTypeEnum.会员.GetHashCode().ToString();
- }
- await _db.Updateable(memberInfo).ExecuteCommandAsync();
- // 批量插入扣款信息
- if (allDeductEntities.Any())
- {
- await _db.Insertable(allDeductEntities).ExecuteCommandAsync();
- }
- // 批量插入品项明细
- if (allPxmxEntities.Any())
- {
- await _db.Insertable(allPxmxEntities).ExecuteCommandAsync();
- }
- // 批量插入健康师业绩
- if (allJksyjEntities.Any())
- {
- await _db.Insertable(allJksyjEntities).ExecuteCommandAsync();
- }
- // 批量插入科技部老师业绩
- if (allKjbsyjEntities.Any())
- {
- await _db.Insertable(allKjbsyjEntities).ExecuteCommandAsync();
- }
-
- //关闭事务
- _db.CommitTran();
-
- // 生成开单记录字符串并发送到企业微信
- try
- {
- var entityInfo = await GetInfo(newEntity.Id);
- if (entityInfo != null)
- {
- var orderRecordString = _stringGenerator.GenerateOrderRecordString(entityInfo, HealthInstructorNames);
- Console.WriteLine("开单记录字符串生成成功:");
- Console.WriteLine(orderRecordString);
-
- // 发送到企业微信群
- try
- {
- var sendResult = await _weChatBotService.SendOrderRecordMessage(orderRecordString);
- if (sendResult)
- {
- Console.WriteLine("开单记录已成功发送到企业微信群");
- }
- else
- {
- Console.WriteLine("开单记录发送到企业微信群失败");
- }
- }
- catch (Exception wechatEx)
- {
- Console.WriteLine($"发送企业微信消息异常: {wechatEx.Message}");
- }
- }
- }
- catch (Exception ex)
- {
- // 字符串生成失败不影响主流程,只记录日志
- Console.WriteLine($"生成开单记录字符串失败: {ex.Message}");
- }
- }
- catch (Exception ex)
- {
- //回滚事务
- _db.RollbackTran();
- Console.WriteLine($"开单创建失败: {ex.Message}");
- Console.WriteLine($"异常堆栈: {ex.StackTrace}");
- throw NCCException.Oh(ErrorCode.COM1000);
- }
- }
- #endregion
-
#region 获取开单记录表无分页列表
///
/// 获取开单记录表无分页列表
diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqXhHyhkService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqXhHyhkService.cs
index ea0e88d..81e04b8 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend/LqXhHyhkService.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend/LqXhHyhkService.cs
@@ -672,26 +672,24 @@ namespace NCC.Extend.LqXhHyhk
{
foreach (var ikjbs_tem in item.lqXhKjbsyjList)
{
- allKjbsyjEntities.Add(
- new LqXhKjbsyjEntity
- {
- Id = YitIdHelper.NextId().ToString(),
- Glkdbh = input.id,
- Kjbls = ikjbs_tem.kjbls,
- Kjblsxm = ikjbs_tem.kjblsxm,
- Kjblszh = ikjbs_tem.kjblszh,
- Kjblsyj = ikjbs_tem.kjblsyj,
- Yjsj = DateTime.Now,
- Hkpxid = lqXhPxmxEntity.Id,
- OriginalHdpxNumber = ikjbs_tem.hdpxNumber,
- OvertimeHdpxNumber = (decimal)(entity.OvertimeCoefficient * (ikjbs_tem.hdpxNumber ?? 0)),
- HdpxNumber = (decimal)((ikjbs_tem.hdpxNumber ?? 0) + (entity.OvertimeCoefficient * (ikjbs_tem.hdpxNumber ?? 0))),
- OriginalLaborCost = ikjbs_tem.laborCost,
- OvertimeLaborCost = (decimal)(entity.OvertimeCoefficient * (ikjbs_tem.laborCost ?? 0)),
- LaborCost = (decimal)((ikjbs_tem.laborCost ?? 0) + (entity.OvertimeCoefficient * (ikjbs_tem.laborCost ?? 0))),
- IsEffective = StatusEnum.有效.GetHashCode(),
- }
- );
+ allKjbsyjEntities.Add(new LqXhKjbsyjEntity
+ {
+ Id = YitIdHelper.NextId().ToString(),
+ Glkdbh = input.id,
+ Kjbls = ikjbs_tem.kjbls,
+ Kjblsxm = ikjbs_tem.kjblsxm,
+ Kjblszh = ikjbs_tem.kjblszh,
+ Kjblsyj = ikjbs_tem.kjblsyj,
+ Yjsj = DateTime.Now,
+ Hkpxid = lqXhPxmxEntity.Id,
+ OriginalHdpxNumber = ikjbs_tem.hdpxNumber,
+ OvertimeHdpxNumber = (decimal)(entity.OvertimeCoefficient * (ikjbs_tem.hdpxNumber ?? 0)),
+ HdpxNumber = (decimal)((ikjbs_tem.hdpxNumber ?? 0) + (entity.OvertimeCoefficient * (ikjbs_tem.hdpxNumber ?? 0))),
+ OriginalLaborCost = ikjbs_tem.laborCost,
+ OvertimeLaborCost = (decimal)(entity.OvertimeCoefficient * (ikjbs_tem.laborCost ?? 0)),
+ LaborCost = (decimal)((ikjbs_tem.laborCost ?? 0) + (entity.OvertimeCoefficient * (ikjbs_tem.laborCost ?? 0))),
+ IsEffective = StatusEnum.有效.GetHashCode(),
+ });
}
}
}
diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqXmzlService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqXmzlService.cs
index 685d428..1839bbf 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend/LqXmzlService.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend/LqXmzlService.cs
@@ -28,6 +28,7 @@ using NCC.Common.Model.NPOI;
using NCC.Common.Configuration;
using NCC.DataEncryption;
using NCC.ClayObject;
+using NCC.Extend.Entitys.Enum;
namespace NCC.Extend.LqXmzl
{
@@ -115,6 +116,10 @@ namespace NCC.Extend.LqXmzl
beautyType = it.BeautyType,
sourceType = it.SourceType,
isEffective = it.IsEffective,
+ medicalBeautyLaborCost = it.MedicalBeautyLaborCost,
+ techBeautyLaborCost = it.TechBeautyLaborCost,
+ lifeBeautyLaborCost = it.LifeBeautyLaborCost,
+ healthCoachLaborCost = it.HealthCoachLaborCost,
}).MergeTable().OrderBy(sidx + " " + input.sort).ToPagedListAsync(input.currentPage, input.pageSize);
return PageResult.SqlSugarPageResult(data);
}
@@ -279,6 +284,23 @@ namespace NCC.Extend.LqXmzl
}
#endregion
+ #region 设置品项作废
+ ///
+ /// 设置品项作废
+ ///
+ /// 主键
+ ///
+ [HttpPut("SetInvalid/{id}")]
+ public async Task SetInvalid(string id)
+ {
+ var entity = await _db.Queryable().FirstAsync(p => p.Id == id);
+ if (entity == null) throw NCCException.Oh("品项不存在");
+ entity.IsEffective = StatusEnum.无效.GetHashCode();
+ var isOk = await _db.Updateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
+ if (!(isOk > 0)) throw NCCException.Oh(ErrorCode.COM1001);
+ }
+ #endregion
+
#region 删除品项资料
///
/// 删除品项资料
@@ -669,9 +691,7 @@ namespace NCC.Extend.LqXmzl
return result;
}
#endregion
-
}
-
///
/// 品项统计数据(内部类)
///
diff --git a/sql/添加耗卡健康师业绩表陪同字段.sql b/sql/添加耗卡健康师业绩表陪同字段.sql
new file mode 100644
index 0000000..8a3d790
--- /dev/null
+++ b/sql/添加耗卡健康师业绩表陪同字段.sql
@@ -0,0 +1,11 @@
+-- 给lq_xh_jksyj表添加两个陪同相关字段
+-- 陪同项目数、是否陪同
+
+-- 添加陪同项目数字段
+ALTER TABLE lq_xh_jksyj
+ADD COLUMN F_AccompaniedProjectNumber DECIMAL(18,2) DEFAULT 0.00 COMMENT '陪同项目数' AFTER F_OvertimeLaborCost;
+
+-- 添加是否陪同字段
+ALTER TABLE lq_xh_jksyj
+ADD COLUMN F_IsAccompanied INT DEFAULT 0 COMMENT '是否陪同(0-否,1-是)' AFTER F_AccompaniedProjectNumber;
+
diff --git a/sql/添加项目资料表手工费字段.sql b/sql/添加项目资料表手工费字段.sql
new file mode 100644
index 0000000..21dab0e
--- /dev/null
+++ b/sql/添加项目资料表手工费字段.sql
@@ -0,0 +1,30 @@
+-- 给lq_xmzl表添加四个手工费字段
+-- 医美手工费、科美手工费、生美手工费、健康师手工费
+
+-- 添加医美手工费字段
+ALTER TABLE lq_xmzl
+ADD COLUMN F_MedicalBeautyLaborCost DECIMAL(18,2) DEFAULT 0.00 COMMENT '医美手工费' AFTER sgf;
+
+-- 添加科美手工费字段
+ALTER TABLE lq_xmzl
+ADD COLUMN F_TechBeautyLaborCost DECIMAL(18,2) DEFAULT 0.00 COMMENT '科美手工费' AFTER F_MedicalBeautyLaborCost;
+
+-- 添加生美手工费字段
+ALTER TABLE lq_xmzl
+ADD COLUMN F_LifeBeautyLaborCost DECIMAL(18,2) DEFAULT 0.00 COMMENT '生美手工费' AFTER F_TechBeautyLaborCost;
+
+-- 添加健康师手工费字段
+ALTER TABLE lq_xmzl
+ADD COLUMN F_HealthCoachLaborCost DECIMAL(18,2) DEFAULT 0.00 COMMENT '健康师手工费' AFTER F_LifeBeautyLaborCost;
+
+-- 更新已有数据:如果原有sgf字段有值,将值复制到四个新字段(可根据业务需求调整)
+-- UPDATE lq_xmzl SET F_MedicalBeautyLaborCost = sgf, F_TechBeautyLaborCost = sgf, F_LifeBeautyLaborCost = sgf, F_HealthCoachLaborCost = sgf WHERE sgf IS NOT NULL AND sgf > 0;
+
+-- ============================================
+-- 给lq_xmzl表添加是否允许陪同字段
+-- ============================================
+
+-- 添加是否允许陪同字段
+ALTER TABLE lq_xmzl
+ADD COLUMN F_IsAllowAccompanied INT DEFAULT 0 COMMENT '是否允许陪同(0-否,1-是)' AFTER F_HealthCoachLaborCost;
+