123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- import 'package:vital_local_database/core/index.dart';
- import 'package:vitalapp/database/entities/defines.dart';
- import 'package:vitalapp/database/entities/patient.dart';
- import 'interfaces/patient.dart';
- enum _FunctionCategory {
- exam,
- followUp,
- diagnosis,
- }
- class PatientRepository
- extends BaseDbRepository<PatientEntity, PatientColumnsDefine>
- implements IPatientRepository {
- PatientRepository(super.database);
- @override
- PatientEntity createEntityInstance() => PatientEntity();
- @override
- Future<PatientEntity?> singleByCode(
- String code,
- String userCode,
- ) async {
- final entity = await queryable
- .where((x) => [
- x.isValid.equals(true),
- x.code.equals(code),
- x.userCode.equals(userCode), //添加用户Code
- ])
- .first();
- return entity;
- }
- @override
- Future<bool> isNotUploadedPatient(
- String code,
- String userCode,
- ) async {
- final entity = await singleByCode(code, userCode);
- return entity != null &&
- (entity.overallSyncState != OfflineDataSyncState.success ||
- entity.syncState != OfflineDataSyncState.success);
- }
- @override
- Future<bool> increaseFollowUpCount(String code, String userCode) =>
- _updateCountByCategory(code, userCode, _FunctionCategory.followUp, 1);
- @override
- Future<bool> increaseExamCount(String code, String userCode) =>
- _updateCountByCategory(code, userCode, _FunctionCategory.exam, 1);
- @override
- Future<bool> increaseDiagnoissCount(String code, String userCode) =>
- _updateCountByCategory(code, userCode, _FunctionCategory.diagnosis, 1);
- @override
- Future<bool> decreaseFollowUpCount(String code, String userCode) =>
- _updateCountByCategory(code, userCode, _FunctionCategory.followUp, -1);
- @override
- Future<bool> decreaseExamCount(String code, String userCode) =>
- _updateCountByCategory(code, userCode, _FunctionCategory.exam, -1);
- @override
- Future<bool> decreaseDiagnoissCount(String code, String userCode) =>
- _updateCountByCategory(code, userCode, _FunctionCategory.diagnosis, -1);
- /// 根据分类更新离线数量
- ///
- /// [num] 1 则加1,-1 则减1
- Future<bool> _updateCountByCategory(
- String code,
- String userCode,
- _FunctionCategory category,
- int num,
- ) async {
- final entity = await singleByCode(code, userCode);
- if (entity == null) {
- return false;
- }
- switch (category) {
- case _FunctionCategory.exam:
- // TODO OFFLINE MELON : 待体检业务重新整理完成后实现
- return true;
- case _FunctionCategory.followUp:
- entity.followUpCount += num;
- break;
- case _FunctionCategory.diagnosis:
- entity.diagnosisCount += num;
- break;
- }
- if (num > 0) {
- entity.overallSyncState = OfflineDataSyncState.wait;
- }
- final result = await update(entity);
- return result > 0;
- }
- }
|