From 4cb9946eff3626389ae93feef4250dd3d45fb694 Mon Sep 17 00:00:00 2001 From: cloudroam <cloudroam> Date: 星期一, 03 三月 2025 16:00:50 +0800 Subject: [PATCH] fix: 取件相关逻辑 --- app/src/main/java/com/example/firstapp/activity/PickupActivity.kt | 7 +- .idea/deploymentTargetSelector.xml | 4 app/src/main/java/com/example/firstapp/adapter/ExpressAdapter.kt | 9 ++ app/src/main/java/com/example/firstapp/database/repository/CodeRepository.kt | 2 app/src/main/java/com/example/firstapp/model/ExpressGroup.kt | 4 app/src/main/java/com/example/firstapp/receiver/SmsReceiver.kt | 6 +- app/src/main/java/com/example/firstapp/database/dao/CodeDao.kt | 7 ++ app/src/main/res/layout/activity_pickup.xml | 15 ++-- app/src/main/java/com/example/firstapp/database/entity/Code.kt | 4 + .idea/misc.xml | 3 app/src/main/java/com/example/firstapp/ui/home/HomeViewModel.kt | 4 gradle.properties | 2 .idea/vcs.xml | 2 app/src/main/res/layout/item_package.xml | 46 +++++++++++++- app/src/main/java/com/example/firstapp/adapter/MyAdapter.kt | 4 .idea/gradle.xml | 3 app/src/main/java/com/example/firstapp/MainActivity.kt | 2 app/src/main/res/layout/item_express_package_home.xml | 41 ++++++++++++- 18 files changed, 124 insertions(+), 41 deletions(-) diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml index 31c1a01..3b8cd93 100644 --- a/.idea/deploymentTargetSelector.xml +++ b/.idea/deploymentTargetSelector.xml @@ -4,10 +4,10 @@ <selectionStates> <SelectionState runConfigName="app"> <option name="selectionMode" value="DROPDOWN" /> - <DropdownSelection timestamp="2025-02-25T05:56:30.000685300Z"> + <DropdownSelection timestamp="2025-02-25T09:44:45.437232500Z"> <Target type="DEFAULT_BOOT"> <handle> - <DeviceId pluginId="PhysicalDevice" identifier="serial=HMQNW19A24001406" /> + <DeviceId pluginId="PhysicalDevice" identifier="serial=88Y5T19C14010323" /> </handle> </Target> </DropdownSelection> diff --git a/.idea/gradle.xml b/.idea/gradle.xml index c29b364..ad84da2 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -4,8 +4,9 @@ <component name="GradleSettings"> <option name="linkedExternalProjectsSettings"> <GradleProjectSettings> + <option name="testRunner" value="CHOOSE_PER_TEST" /> <option name="externalProjectPath" value="$PROJECT_DIR$" /> - <option name="gradleJvm" /> + <option name="gradleJvm" value="17" /> <option name="modules"> <set> <option value="$PROJECT_DIR$" /> diff --git a/.idea/misc.xml b/.idea/misc.xml index 0ad17cb..d7916a5 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,7 +1,6 @@ -<?xml version="1.0" encoding="UTF-8"?> <project version="4"> <component name="ExternalStorageConfigurationManager" enabled="true" /> - <component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK"> + <component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK"> <output url="file://$PROJECT_DIR$/build/classes" /> </component> <component name="ProjectType"> diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 35eb1dd..94a25f7 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <project version="4"> <component name="VcsDirectoryMappings"> - <mapping directory="" vcs="Git" /> + <mapping directory="$PROJECT_DIR$" vcs="Git" /> </component> </project> \ No newline at end of file diff --git a/app/src/main/java/com/example/firstapp/MainActivity.kt b/app/src/main/java/com/example/firstapp/MainActivity.kt index bbb32a4..bd37767 100644 --- a/app/src/main/java/com/example/firstapp/MainActivity.kt +++ b/app/src/main/java/com/example/firstapp/MainActivity.kt @@ -232,7 +232,7 @@ android.util.Log.d("SmsReceiver", "Received SMS code: ${code}") val msg = Msg(0, "1111", "111111", messageBody.toString(), 1, "111", 1, 1) val msgId = Core.msg.insert(msg) - val code = Code(0, rule.type, 1, rule.content, 1, 1, msgId, code, dateString, "中通") + val code = Code(0, rule.type, 1, rule.content, 1, 1, msgId, code, dateString, "中通",0) Core.code.insert(code) android.util.Log.d("SMS_DEBUG", "历史短信已保存到数据库") }else{ diff --git a/app/src/main/java/com/example/firstapp/activity/PickupActivity.kt b/app/src/main/java/com/example/firstapp/activity/PickupActivity.kt index 9713e2c..2ba9cd2 100644 --- a/app/src/main/java/com/example/firstapp/activity/PickupActivity.kt +++ b/app/src/main/java/com/example/firstapp/activity/PickupActivity.kt @@ -61,7 +61,7 @@ lifecycleScope.launch { try { // 处理单个包裹取件 -// Core.code.pickup(pack.trackingNumber) + Core.code.pickup(pack.id) // 重新加载数据 loadData() // 通知MainActivity刷新 @@ -79,7 +79,7 @@ val packages = expressAdapter.currentList // 批量处理取件 packages.forEach { pack -> -// Core.code.pickup(pack.trackingNumber) + Core.code.pickup(pack.id) } // 清空列表 expressAdapter.submitList(emptyList()) @@ -103,9 +103,10 @@ val codes = Core.code.getByKeyword(stationName) val packages = codes.map { code -> ExpressPackage( + id = code.id, company = code.name ?: company, trackingNumber = code.code, - date = code.overtime + createTime = code.createtime ) } diff --git a/app/src/main/java/com/example/firstapp/adapter/ExpressAdapter.kt b/app/src/main/java/com/example/firstapp/adapter/ExpressAdapter.kt index dafbba4..6bffe16 100644 --- a/app/src/main/java/com/example/firstapp/adapter/ExpressAdapter.kt +++ b/app/src/main/java/com/example/firstapp/adapter/ExpressAdapter.kt @@ -91,7 +91,9 @@ } fun bind(pack: ExpressPackage) { - binding.tvPackageInfo.text = "${pack.company} - ${pack.trackingNumber}" + binding.tvCompany.text = pack.company + binding.tvCreateTime.text = pack.createTime + binding.tvTrackingNumber.text = pack.trackingNumber } } } @@ -136,7 +138,10 @@ } fun bind(pack: ExpressPackage) { - binding.tvPackageInfo.text = "${pack.company} - ${pack.trackingNumber}" + binding.tvPackageId.text = pack.id.toString() + binding.tvCompany.text = pack.company + binding.tvCreateTime.text = pack.createTime + binding.tvTrackingNumber.text = pack.trackingNumber binding.ivPackageStatus.setImageResource( // if (pack.isPickedUp) R.drawable.circle_checked // else R.drawable.circle diff --git a/app/src/main/java/com/example/firstapp/adapter/MyAdapter.kt b/app/src/main/java/com/example/firstapp/adapter/MyAdapter.kt index 8c107fe..6bc68f0 100644 --- a/app/src/main/java/com/example/firstapp/adapter/MyAdapter.kt +++ b/app/src/main/java/com/example/firstapp/adapter/MyAdapter.kt @@ -28,8 +28,8 @@ val item = getItem(position) // 使用 getItem 来获取当前位置的 item holder.tvTitle.text = item.type // 假设 Code 类有一个 `type` 属性 holder.tvDescription.text = item.code // 假设 Code 类有一个 `code` 属性 - var overtime = "请注意:当前取件免费截止时间是"+item.overtime+",超时会收取额外费用" - holder.overTimeMsg.text = overtime + var createtime = "请注意:当前取件免费截止时间是"+item.createtime+",超时会收取额外费用" + holder.overTimeMsg.text = createtime println("打印......") } diff --git a/app/src/main/java/com/example/firstapp/database/dao/CodeDao.kt b/app/src/main/java/com/example/firstapp/database/dao/CodeDao.kt index a3c0bca..b27f1dd 100644 --- a/app/src/main/java/com/example/firstapp/database/dao/CodeDao.kt +++ b/app/src/main/java/com/example/firstapp/database/dao/CodeDao.kt @@ -45,10 +45,15 @@ @Query(""" SELECT * FROM Code WHERE type LIKE '%' || :keyword || '%' + AND pickup = '0' ORDER BY time DESC """) fun getByKeyword(keyword: String): List<Code> - @Query("SELECT * FROM Code WHERE type = :content and code= :code and overtime = :dateString LIMIT 1") + @Query("SELECT * FROM Code WHERE type = :content and code= :code and createtime = :dateString LIMIT 1") fun queryByTypeAndCodeAndDate(content: String, code: String, dateString: String): Code + + + @Query("update Code set pickup = '1' where id=:id") + fun pickup(id: Long) } diff --git a/app/src/main/java/com/example/firstapp/database/entity/Code.kt b/app/src/main/java/com/example/firstapp/database/entity/Code.kt index ac1f130..30dff0a 100644 --- a/app/src/main/java/com/example/firstapp/database/entity/Code.kt +++ b/app/src/main/java/com/example/firstapp/database/entity/Code.kt @@ -14,8 +14,10 @@ val ruleId: Long, val msgId: Long, val code: String, - var overtime: String, + var createtime: String, var name: String, + var pickup: Int, var time: Date = Date(), +// var overtime: String, ) diff --git a/app/src/main/java/com/example/firstapp/database/repository/CodeRepository.kt b/app/src/main/java/com/example/firstapp/database/repository/CodeRepository.kt index e30fe19..bd77948 100644 --- a/app/src/main/java/com/example/firstapp/database/repository/CodeRepository.kt +++ b/app/src/main/java/com/example/firstapp/database/repository/CodeRepository.kt @@ -26,4 +26,6 @@ return codeDao.queryByTypeAndCodeAndDate(content,code,dateString) } + @WorkerThread + fun pickup(id: Long) = codeDao.pickup(id) } \ No newline at end of file diff --git a/app/src/main/java/com/example/firstapp/model/ExpressGroup.kt b/app/src/main/java/com/example/firstapp/model/ExpressGroup.kt index 994245a..82a23c5 100644 --- a/app/src/main/java/com/example/firstapp/model/ExpressGroup.kt +++ b/app/src/main/java/com/example/firstapp/model/ExpressGroup.kt @@ -6,8 +6,8 @@ ) data class ExpressPackage( -// var id: Long, + var id: Long, val company: String, val trackingNumber: String, - val date: String + val createTime: String ) \ No newline at end of file diff --git a/app/src/main/java/com/example/firstapp/receiver/SmsReceiver.kt b/app/src/main/java/com/example/firstapp/receiver/SmsReceiver.kt index 3ee32a5..f45812a 100644 --- a/app/src/main/java/com/example/firstapp/receiver/SmsReceiver.kt +++ b/app/src/main/java/com/example/firstapp/receiver/SmsReceiver.kt @@ -82,10 +82,10 @@ val date = Date.from(currentTime.atZone(ZoneId.systemDefault()).toInstant()) // 如果需要格式化显示 val sdf = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()) - val overtime = sdf.format(date) - val existingCode = Core.code.queryByTypeAndCodeAndDate(rule.content, code, overtime) + val createtime = sdf.format(date) + val existingCode = Core.code.queryByTypeAndCodeAndDate(rule.content, code, createtime) if (existingCode == null) { - val code = Code(0, rule.type, 1, rule.content, 1, 1, msgId, code, overtime, "中通") + val code = Code(0, rule.type, 1, rule.content, 1, 1, msgId, code, createtime, "中通",0) Core.code.insert(code) Log.d("SMS_DEBUG", "新短信已保存到数据库") diff --git a/app/src/main/java/com/example/firstapp/ui/home/HomeViewModel.kt b/app/src/main/java/com/example/firstapp/ui/home/HomeViewModel.kt index 86c20bb..9c065a5 100644 --- a/app/src/main/java/com/example/firstapp/ui/home/HomeViewModel.kt +++ b/app/src/main/java/com/example/firstapp/ui/home/HomeViewModel.kt @@ -50,10 +50,10 @@ val groups = stations.map { station -> val packages = Core.code.getByKeyword(station.nickname).map { code -> ExpressPackage( -// id = code.id, //ID + id = code.id, //ID company = code.name, //快递公司 trackingNumber = code.code, // 取件码 - date = code.overtime //时间 + createTime = code.createtime //快递时间 ) } ExpressGroup( diff --git a/app/src/main/res/layout/activity_pickup.xml b/app/src/main/res/layout/activity_pickup.xml index 9685121..28abdda 100644 --- a/app/src/main/res/layout/activity_pickup.xml +++ b/app/src/main/res/layout/activity_pickup.xml @@ -16,27 +16,28 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" - android:gravity="center_vertical"> + android:layout_marginBottom="12dp"> <ImageView android:id="@+id/iv_back" - android:layout_width="24dp" - android:layout_height="24dp" + android:layout_width="20dp" + android:layout_height="20dp" + android:layout_gravity="center_vertical" android:src="@drawable/location"/> <TextView android:id="@+id/tv_station_name" - android:layout_width="wrap_content" + android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginStart="16dp" + android:layout_weight="1" + android:layout_marginStart="8dp" android:textSize="18sp" android:textColor="#333333"/> <TextView android:id="@+id/tv_package_count" android:layout_width="wrap_content" - android:layout_height="24dp" - android:layout_marginStart="8dp" + android:layout_height="wrap_content" android:textColor="#666666" android:textSize="14sp" /> </LinearLayout> diff --git a/app/src/main/res/layout/item_express_package_home.xml b/app/src/main/res/layout/item_express_package_home.xml index f91a6a1..a172550 100644 --- a/app/src/main/res/layout/item_express_package_home.xml +++ b/app/src/main/res/layout/item_express_package_home.xml @@ -6,11 +6,42 @@ android:padding="12dp" android:gravity="center_vertical"> - <TextView - android:id="@+id/tv_package_info" - android:layout_width="match_parent" + <ImageView + android:id="@+id/iv_company_logo" + android:layout_width="20dp" + android:layout_height="20dp" + android:layout_marginEnd="6dp"/> + + <LinearLayout + android:layout_width="0dp" android:layout_height="wrap_content" - android:textSize="16sp" - android:textColor="#333333"/> + android:layout_weight="1" + android:orientation="vertical"> + + <TextView + android:id="@+id/tv_company" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textSize="12sp" + android:textColor="#333333" + android:textStyle="bold"/> + + <TextView + android:id="@+id/tv_create_time" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textSize="12sp" + android:textColor="#666666" + android:layout_marginTop="4dp"/> + </LinearLayout> + + <TextView + android:id="@+id/tv_tracking_number" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textSize="25sp" + android:textColor="#333333" + android:layout_marginStart="12dp" + android:textStyle="bold"/> </LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_package.xml b/app/src/main/res/layout/item_package.xml index 6748f7b..6c4e6cb 100644 --- a/app/src/main/res/layout/item_package.xml +++ b/app/src/main/res/layout/item_package.xml @@ -13,11 +13,47 @@ android:src="@drawable/circle"/> <TextView - android:id="@+id/tv_package_info" - android:layout_width="match_parent" + android:id="@+id/tv_package_id" + android:layout_width="0dp" + android:layout_height="0dp" + android:visibility="gone"/> + + <ImageView + android:id="@+id/iv_company_logo" + android:layout_width="20dp" + android:layout_height="20dp" + android:layout_marginEnd="6dp"/> + + <LinearLayout + android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginStart="16dp" - android:textSize="16sp" - android:textColor="#333333"/> + android:layout_weight="1" + android:orientation="vertical"> + + <TextView + android:id="@+id/tv_company" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textSize="12sp" + android:textColor="#333333" + android:textStyle="bold"/> + + <TextView + android:id="@+id/tv_create_time" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textSize="12sp" + android:textColor="#666666" + android:layout_marginTop="4dp"/> + </LinearLayout> + + <TextView + android:id="@+id/tv_tracking_number" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textSize="25sp" + android:textColor="#333333" + android:layout_marginStart="12dp" + android:textStyle="bold"/> </LinearLayout> \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index ec48926..15a3aae 100644 --- a/gradle.properties +++ b/gradle.properties @@ -35,5 +35,5 @@ android.precompileDependenciesResources=false android.enableJetifier=true #android.enableD8=true -org.gradle.java.home=D\:\\devInstall\\java\\jdk-17.0.12 +org.gradle.java.home=D\:\\tanjiyaun\\jdk\\jdk1.8\\jdk-17.0.12 -- Gitblit v1.9.3