123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- 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,
- gxyFollowUp,
- tnbFollowUp,
- diagnosis,
- tcmConsitution,
- }
- class PatientRepository
- extends BaseDbRepository<PatientEntity, PatientColumnsDefine>
- implements IPatientRepository {
- PatientRepository(super.database);
- @override
- PatientEntity createEntityInstance() => PatientEntity();
- @override
- Future<PatientEntity?> singleByCode(String code) async {
- final entity = await queryable
- .where(
- (x) => [
- x.isValid.equals(true),
- x.code.equals(code),
- ],
- )
- .first();
- return entity;
- }
- @override
- Future<PatientEntity?> singleByCodeWithUserCode(
- 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<PatientEntity?> singleByCodeWithOrgCode(
- String code,
- String orgCode,
- ) async {
- final entity = await queryable
- .where((x) => [
- x.isValid.equals(true),
- x.code.equals(code),
- x.orgCode.equals(orgCode),
- ])
- .first();
- return entity;
- }
- @override
- Future<bool> isNotUploadedPatient(String code, String userCode) async {
- final entity = await singleByCodeWithUserCode(code, userCode);
- return entity != null &&
- (entity.overallSyncState != OfflineDataSyncState.success ||
- entity.syncState != OfflineDataSyncState.success);
- }
- @override
- Future<bool> increaseGxyFollowUpCount(String code, String userCode) =>
- _updateCountByCategory(code, userCode, _FunctionCategory.gxyFollowUp, 1);
- @override
- Future<bool> increaseTnbFollowUpCount(String code, String userCode) =>
- _updateCountByCategory(code, userCode, _FunctionCategory.tnbFollowUp, 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> increaseTCMConsitutionCount(String code, String userCode) =>
- _updateCountByCategory(
- code, userCode, _FunctionCategory.tcmConsitution, 1);
- @override
- Future<bool> decreaseGxyFollowUpCount(String code, String userCode) =>
- _updateCountByCategory(code, userCode, _FunctionCategory.gxyFollowUp, -1);
- @override
- Future<bool> decreaseTnbFollowUpCount(String code, String userCode) =>
- _updateCountByCategory(code, userCode, _FunctionCategory.tnbFollowUp, -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);
- @override
- Future<bool> decreaseTCMConsitutionCount(String code, String userCode) =>
- _updateCountByCategory(
- code, userCode, _FunctionCategory.tcmConsitution, -1);
- /// 根据分类更新离线数量
- ///
- /// [num] 1 则加1,-1 则减1
- Future<bool> _updateCountByCategory(
- String code,
- String userCode,
- _FunctionCategory category,
- int num,
- ) async {
- final entity = await singleByCodeWithUserCode(code, userCode);
- if (entity == null) {
- return false;
- }
- switch (category) {
- case _FunctionCategory.exam:
- entity.examCount += num;
- break;
- case _FunctionCategory.tcmConsitution:
- entity.tcmConsitutionCount += num;
- break;
- case _FunctionCategory.gxyFollowUp:
- entity.gxyFollowUpCount += num;
- break;
- case _FunctionCategory.tnbFollowUp:
- entity.tnbFollowUpCount += num;
- break;
- case _FunctionCategory.diagnosis:
- entity.diagnosisCount += num;
- break;
- }
- if (num > 0) {
- entity.overallSyncState = OfflineDataSyncState.wait;
- }
- final result = await update(entity);
- return result > 0;
- }
- }
|