Merge branch 'develop' of https://e.coding.net/ctcdevteam/hberp/hberp into develop

This commit is contained in:
shijing 2022-04-24 09:24:18 +08:00
commit f9cfce58e5
4 changed files with 16 additions and 8 deletions

View File

@ -20,14 +20,15 @@ class EmployeeNotWorkRemarkSerializer(ModelSerializer):
fields = ['not_work_remark'] fields = ['not_work_remark']
class FaceLoginSerializer(serializers.Serializer): class FaceLoginSerializer(serializers.Serializer):
base64 = serializers.CharField() base64 = serializers.CharField()
tolerance = serializers.FloatField(required=False, default=0.42)
class FaceLoginPathSerializer(serializers.Serializer): class FaceLoginPathSerializer(serializers.Serializer):
path = serializers.CharField() path = serializers.CharField()
tolerance = serializers.FloatField(required=False, default=0.45) tolerance = serializers.FloatField(required=False, default=0.42)
class FaceClockCreateSerializer(serializers.Serializer): class FaceClockCreateSerializer(serializers.Serializer):
base64 = serializers.CharField() base64 = serializers.CharField()
tolerance = serializers.FloatField(required=False, default=0.45) tolerance = serializers.FloatField(required=False, default=0.42)
class ClockRecordListSerializer(serializers.ModelSerializer): class ClockRecordListSerializer(serializers.ModelSerializer):
create_by_ = UserSimpleSerializer(source='create_by', read_only=True) create_by_ = UserSimpleSerializer(source='create_by', read_only=True)

View File

@ -10,7 +10,7 @@ from django.core.cache import cache
class HRMService: class HRMService:
@classmethod @classmethod
def face_compare_from_path(cls, path, tolerance=0.45): def face_compare_from_path(cls, path, tolerance=0.42):
filepath = settings.BASE_DIR +path filepath = settings.BASE_DIR +path
try: try:
unknown_picture = face_recognition.load_image_file(filepath) unknown_picture = face_recognition.load_image_file(filepath)
@ -43,7 +43,7 @@ class HRMService:
return None, '匹配多张人脸:' + user_name_str return None, '匹配多张人脸:' + user_name_str
@classmethod @classmethod
def face_compare_from_base64(cls, base64_data, tolerance=0.45): def face_compare_from_base64(cls, base64_data, tolerance=0.42):
filename = str(uuid.uuid4()) filename = str(uuid.uuid4())
filepath = settings.BASE_DIR +'/temp/' + filename +'.png' filepath = settings.BASE_DIR +'/temp/' + filename +'.png'
with open(filepath, 'wb') as f: with open(filepath, 'wb') as f:

View File

@ -109,7 +109,7 @@ class ClockRecordViewSet(CreateModelMixin, ListModelMixin, GenericViewSet):
if 8<=now_local.hour<=17: if 8<=now_local.hour<=17:
base64_data = base64.urlsafe_b64decode(tran64( base64_data = base64.urlsafe_b64decode(tran64(
request.data.get('base64').replace(' ', '+'))) request.data.get('base64').replace(' ', '+')))
user, msg = HRMService.face_compare_from_base64(base64_data) user, msg = HRMService.face_compare_from_base64(base64_data, request.data.get('tolerance', 0.42))
if user: if user:
ins, created = ClockRecord.objects.get_or_create( ins, created = ClockRecord.objects.get_or_create(
create_by = user, create_time__hour__range = [8,18], create_by = user, create_time__hour__range = [8,18],
@ -159,8 +159,8 @@ class FaceLogin(CreateAPIView):
""" """
人脸识别登录 人脸识别登录
""" """
base64_data = base64.urlsafe_b64decode(tran64(request.data.get('base64').replace(' ', '+')), request.data.get('tolerance', 0.45)) base64_data = base64.urlsafe_b64decode(tran64(request.data.get('base64').replace(' ', '+')))
user, msg = HRMService.face_compare_from_base64(base64_data) user, msg = HRMService.face_compare_from_base64(base64_data, request.data.get('tolerance', 0.42))
if user: if user:
refresh = RefreshToken.for_user(user) refresh = RefreshToken.for_user(user)
# 可设为在岗 # 可设为在岗
@ -198,7 +198,7 @@ class FacePathLogin(CreateAPIView):
""" """
人脸识别登录-文件地址 人脸识别登录-文件地址
""" """
user, msg = HRMService.face_compare_from_path(request.data.get('path'), request.data.get('tolerance', 0.45)) user, msg = HRMService.face_compare_from_path(request.data.get('path'), request.data.get('tolerance', 0.42))
if user: if user:
refresh = RefreshToken.for_user(user) refresh = RefreshToken.for_user(user)
# 可设为在岗 # 可设为在岗

View File

@ -43,6 +43,7 @@ class SubProductionPlanListSerializer(DynamicFieldsSerializerMixin, serializers.
leader_1_ = UserSimpleSerializer(source='leader_1', read_only=True) leader_1_ = UserSimpleSerializer(source='leader_1', read_only=True)
leader_2_ = UserSimpleSerializer(source='leader_2', read_only=True) leader_2_ = UserSimpleSerializer(source='leader_2', read_only=True)
leader_3_ = UserSimpleSerializer(source='leader_3', read_only=True) leader_3_ = UserSimpleSerializer(source='leader_3', read_only=True)
first_test_ = serializers.SerializerMethodField()
class Meta: class Meta:
model=SubProductionPlan model=SubProductionPlan
fields = '__all__' fields = '__all__'
@ -50,6 +51,12 @@ class SubProductionPlanListSerializer(DynamicFieldsSerializerMixin, serializers.
def get_plan_product_(self, obj): def get_plan_product_(self, obj):
return MaterialSimpleSerializer(instance=obj.production_plan.product).data return MaterialSimpleSerializer(instance=obj.production_plan.product).data
def get_first_test_(self, obj):
tr = obj.first_test
if obj.first_test:
return {'id':tr.id, 'is_submited':tr.is_submited}
return None
class SubProductionPlanUpdateSerializer(serializers.ModelSerializer): class SubProductionPlanUpdateSerializer(serializers.ModelSerializer):