from apps.hrm.models import Employee from apps.third.tapis import dhapis from apps.third.clients import dhClient from apps.utils.tools import rannum from datetime import datetime class HrmService: def sync_dahua_employee(cls, ep: Employee, old_photo=''): dh_id = None dh_photo = None dh_face_card = None departmentId = 1 if ep.belong_dept: try: departmentId = ep.belong_dept.third_info['dh_id'] except Exception: pass if ep.third_info.get('dh_id', None): # 如果有大华信息 dh_id = ep.third_info['dh_id'] dh_photo = ep.third_info['dh_photo'] json_data = { "service": "ehs", "id": dh_id, "name": ep.name, "code": ep.number, "paperType": 111, "paperNumber": ep.id_number, "paperAddress": "default", "departmentId": departmentId, "phone": ep.phone, "email": ep.email, "sex": 1 if ep.gender == '男' else 2, "biosignatureTypeList": [3], "personBiosignatures": [{ "type": 3, "index": 1, "path": dh_photo }] } if ep.photo != old_photo: _, res = dhClient.request(**dhapis['person_img_upload'], file_path_rela=ep.photo) dh_photo = res["fileUrl"] json_data.update( { "biosignatureTypeList": [3], "personBiosignatures": [{ "type": 3, "index": 1, "path": dh_photo }] } ) dhClient.request(**dhapis['person_update'], json=json_data) # 开人脸卡 长时间 if ep.job_state in [Employee.JOB_ON] and ep.type == 'employee': if not ep.third_info.get('dh_face_card', None): _, res = dhClient.request(**dhapis['card_gen_id']) cardId = res['id'] cardNumber = ep.id[3:8] + rannum(5) now = datetime.now() startDate = now.strftime("%Y-%m-%d %H:%M:%S") endDate = (datetime(year=now.year+50, month=now.month, day=1)).strftime("%Y-%m-%d %H:%M:%S") json_data = { "id": cardId, "cardNumber": cardNumber, "category": 0, "cardType": 0, "personId": dh_id, "departmentId": departmentId, "startDate": startDate, "endDate": endDate } _, res = dhClient.request(**dhapis['card_add'], json=json_data) dh_face_card = cardNumber else: _, res = dhClient.request(**dhapis['person_gen_id']) personId = res['id'] departmentId = 1 if ep.belong_dept: try: departmentId = ep.belong_dept.third_info['dh_id'] except Exception: pass json_data = { "service": "ehs", "id": personId, "name": ep.name, "code": ep.number, "paperType": 111, "paperNumber": ep.id_number, "paperAddress": "default", "departmentId": departmentId, "phone": ep.phone, "email": ep.email, "sex": 1 if ep.gender == '男' else 2 } _, res = dhClient.request(**dhapis['person_img_upload'], file_path_rela=ep.photo) dh_photo = res["fileUrl"] json_data.update( { "biosignatureTypeList": [3], "personBiosignatures": [{ "type": 3, "index": 1, "path": dh_photo }] } ) _, res = dhClient.request(**dhapis['person_add'], json=json_data) # 开人脸卡 if ep.type == 'employee': _, res = dhClient.request(**dhapis['card_gen_id']) cardId = res['id'] cardNumber = ep.id[:8] + rannum(2) now = datetime.now() startDate = now.strftime("%Y-%m-%d %H:%M:%S") endDate = (datetime(year=now.year+50, month=now.month, day=1)).strftime("%Y-%m-%d %H:%M:%S") json_data = { "id": cardId, "cardNumber": cardNumber, "category": 0, "cardType": 0, "personId": personId, "departmentId": departmentId, "startDate": startDate, "endDate": endDate } _, res = dhClient.request(**dhapis['card_add'], json=json_data) dh_face_card = res['id'] return {'dh_id': personId, 'dh_photo': dh_photo, 'dh_face_card': dh_face_card}