Files
biz_xfj_cloud/lib/common/services/database/dao/broadcast_dao.dart
T

100 lines
2.7 KiB
Dart

import 'package:common_utils/common_utils.dart';
import 'package:floor/floor.dart';
import 'package:get/get.dart';
import 'package:pj_supermarket_cloud/common/index.dart';
// broadcast
@dao
abstract class BroadcastDao {
Future<int> toggleEnable(bool enable, ProductHourType hourType) async {
final app = Get.find<AppControl>();
final database = app.dataBase.database;
final sql = '''
UPDATE broadcast SET enable = ${enable ? 1 : 0}
WHERE
(${hourType.code} = '-1' OR hourType = ${hourType.code})
AND strftime('%Y-%m-%d', createTime) = strftime('%Y-%m-%d', 'now', 'localtime')
''';
return await database.rawUpdate(sql, []);
}
Future<int> delByServiceCodes(
List<String> codes,
) async {
if (ObjectUtil.isEmptyList(codes)) return 0;
final appC = Get.find<AppControl>();
final database = appC.dataBase.database;
final placeholders = List.generate(codes.length, (index) => '?').join(', ');
final sql = '''
DELETE FROM broadcast
WHERE
serviceCode IN ($placeholders)
AND strftime('%Y-%m-%d', createTime) = strftime('%Y-%m-%d', 'now', 'localtime')
''';
return await database.rawDelete(sql, [...codes]);
}
Future<int> delAll() async {
final appC = Get.find<AppControl>();
final database = appC.dataBase.database;
final sql = '''
DELETE FROM broadcast
WHERE
strftime('%Y-%m-%d', createTime) = strftime('%Y-%m-%d', 'now', 'localtime')
''';
return await database.rawDelete(sql, []);
}
@insert
Future<void> save(BroadcastEntity entity);
@insert
Future<void> batchSave(List<BroadcastEntity> entitys);
@Query("""
DELETE FROM broadcast
WHERE
isDone = 0
AND (:serviceOrderCode = '-1' OR serviceOrderCode = :serviceOrderCode)
""")
Future<void> del(String serviceOrderCode);
@update
Future<void> edit(BroadcastEntity entity);
@Query("""
SELECT * FROM broadcast
WHERE
isDone = 0
AND enable = 1
AND broadcastCount < broadcastMaxCount
AND (:hourType = '-1' OR hourType = :hourType)
AND strftime('%Y-%m-%d', createTime) = strftime('%Y-%m-%d', 'now', 'localtime')
""")
Future<List<BroadcastEntity>> getAll(String hourType);
@Query("""
SELECT * FROM broadcast
WHERE
strftime('%Y-%m-%d', createTime) = strftime('%Y-%m-%d', 'now', 'localtime')
AND (:hourType = '-1' OR hourType = :hourType)
LIMIT :pageSize OFFSET :offset
""")
Future<List<BroadcastEntity>> findAllPage(
String hourType,
int pageSize,
int offset,
);
@Query("""
SELECT COUNT(0) FROM broadcast
WHERE
strftime('%Y-%m-%d', createTime) = strftime('%Y-%m-%d', 'now', 'localtime')
AND (:hourType = '-1' OR hourType = :hourType)
""")
Future<int?> count(
String hourType,
);
}