cloudroam
2025-03-03 4cb9946eff3626389ae93feef4250dd3d45fb694
fix: 取件相关逻辑
已修改18个文件
165 ■■■■ 文件已修改
.idea/deploymentTargetSelector.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/gradle.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/misc.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/vcs.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/example/firstapp/MainActivity.kt 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/example/firstapp/activity/PickupActivity.kt 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/example/firstapp/adapter/ExpressAdapter.kt 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/example/firstapp/adapter/MyAdapter.kt 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/example/firstapp/database/dao/CodeDao.kt 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/example/firstapp/database/entity/Code.kt 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/example/firstapp/database/repository/CodeRepository.kt 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/example/firstapp/model/ExpressGroup.kt 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/example/firstapp/receiver/SmsReceiver.kt 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/example/firstapp/ui/home/HomeViewModel.kt 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_pickup.xml 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_express_package_home.xml 41 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_package.xml 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
gradle.properties 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
.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>
.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$" />
.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">
.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>
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{
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
                )
            }
            
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
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("打印......")
    }
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)
}
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,
)
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)
}
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
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", "新短信已保存到数据库")
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(
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>
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> 
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> 
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