diff --git a/finance/views.py b/finance/views.py index b51a5fb..b46a77c 100644 --- a/finance/views.py +++ b/finance/views.py @@ -69,6 +69,7 @@ class UserRegister(APIView): # 从人事管理同步其他数据(如果入职登记未提供) # 如果提供了card或position,则使用提供的值;否则使用人事管理中的值 + # 团队信息始终从人事管理中获取,不在财务登记中修改 update_fields = [] # 更新必填字段 @@ -94,9 +95,23 @@ class UserRegister(APIView): # 保存用户信息 user.save(update_fields=update_fields) + # 从人事管理中获取团队信息(团队信息不在财务登记中修改) + team_name = user.team # 用户的团队名称(从人事管理中获取) + team = None + team_type_display = None + if team_name: + try: + from User.models import Team + team = Team.objects.get(name=team_name, is_deleted=False) + team_type_display = team.get_team_type_display() + except Team.DoesNotExist: + # 如果团队不存在,默认按团队类型处理(需要审批) + pass + # 构建审批内容(使用实际的值,包括从人事管理同步的) actual_card = card if card else (user.card if user.card else '未填写') actual_position = position if position else (user.position if user.position else '未填写') + actual_team = team_name if team_name else '未分配团队' today = datetime.datetime.now() formatted_date = today.strftime("%Y-%m-%d") @@ -105,17 +120,6 @@ class UserRegister(APIView): # 规则: # - 个人团队(personal):不触发审批 # - 团队(team):需要审批,直接选择某个人来审批 - from User.models import Team - - # 获取用户的团队信息 - team_name = user.team # 用户的团队名称(CharField) - team = None - if team_name: - try: - team = Team.objects.get(name=team_name, is_deleted=False) - except Team.DoesNotExist: - # 如果团队不存在,默认按团队类型处理(需要审批) - pass # 判断是否需要审批 if team and team.team_type == 'personal': @@ -152,9 +156,20 @@ class UserRegister(APIView): }, status=status.HTTP_404_NOT_FOUND) # 创建审批记录(直接使用审批人用户名) + # 审批内容包含从人事管理同步的团队信息 + content_parts = [ + f"{username}在{Dateofjoining}办理入职", + f"身份证:{actual_card}", + f"岗位:{actual_position}", + f"团队:{actual_team}" + ] + if team_type_display: + content_parts.append(f"团队类型:{team_type_display}") + content_parts.append(f"薪资:{salary}") + Approval.objects.create( title=username + "入职财务登记", - content=f"{username}在{Dateofjoining}办理入职,身份证:{actual_card},岗位:{actual_position},薪资:{salary}", + content=",".join(content_parts), times=formatted_date, personincharge=personincharge, # 直接使用审批人用户名 state='审核中', @@ -162,12 +177,14 @@ class UserRegister(APIView): user_id=str(user.id) ) - # 记录操作日志 + # 记录操作日志(包含从人事管理获取的团队信息) new_data = { 'user_id': user.id, 'username': user.username, 'card': user.card, 'position': user.position, + 'team': team_name, # 从人事管理中获取的团队名称 + 'team_type': team_type_display if team else None, # 团队类型显示名称 'salary': user.salary, 'Dateofjoining': Dateofjoining, 'state': user.state @@ -181,7 +198,7 @@ class UserRegister(APIView): target_id=user.id, target_name=user.username, new_data=new_data, - remark=f'新增入职财务登记:{user.username},入职时间 {Dateofjoining},薪资 {salary}' + remark=f'新增入职财务登记:{user.username},入职时间 {Dateofjoining},薪资 {salary},团队 {team_name if team_name else "未分配"}' ) return Response({ @@ -191,8 +208,10 @@ class UserRegister(APIView): 'username': user.username, 'Dateofjoining': Dateofjoining, 'salary': salary, - 'card': user.card, # 返回实际使用的身份证(可能来自人事管理) - 'position': user.position, # 返回实际使用的岗位(可能来自人事管理) + 'card': user.card, # 返回实际使用的身份证(从人事管理同步) + 'position': user.position, # 返回实际使用的岗位(从人事管理同步) + 'team': team_name, # 返回团队名称(从人事管理中获取) + 'team_type': team_type_display if team else None, # 返回团队类型(从人事管理中获取) } }, status=status.HTTP_200_OK)