feat: 国际进港电报解析接口对接及仓库/提取记录页面
- 电报解析:航班级联查询(自动填充目的站、始发站下拉) - 电报解析:修复接口返回格式(PageInfo 非 BaseResultBean) - 电报解析:报文类型必选校验 - 新增进港仓库、提取记录页面及菜单入口 - 修复 Spinner 空列表时 hint 不显示的问题 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -41,7 +41,7 @@ import me.jessyan.autosize.internal.CustomAdapt
|
||||
* ========== 开发调试开关 ==========
|
||||
* TODO: 正式发布前务必设置为 false
|
||||
*/
|
||||
private const val DEV_AUTO_LOGIN = false // 自动登录开关
|
||||
private const val DEV_AUTO_LOGIN = true // 自动登录开关
|
||||
|
||||
@Route(path = ARouterConstants.ACTIVITY_URL_LOGIN)
|
||||
class LoginActivity : BaseActivity(),
|
||||
|
||||
@@ -49,6 +49,26 @@ fun bindAdapter(
|
||||
if (hint.isNullOrEmpty()) {
|
||||
val adapter = ArrayAdapter(spinner.context, layoutId, list)
|
||||
spinner.adapter = adapter
|
||||
} else if (list.isEmpty()) {
|
||||
// 列表为空时:控件上显示 hint 占位文字(灰色),下拉列表隐藏
|
||||
// 不能用 SpinnerHintAdapter,其 getCount()=0 会导致 Spinner 不渲染
|
||||
val adapter = object : ArrayAdapter<String>(spinner.context, layoutId, listOf(hint)) {
|
||||
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
|
||||
val view = super.getView(position, convertView, parent)
|
||||
(view as TextView).setTextColor(context.resources.getColor(R.color.text_gray_l))
|
||||
return view
|
||||
}
|
||||
|
||||
override fun getDropDownView(position: Int, convertView: View?, parent: ViewGroup): View {
|
||||
// 下拉列表中隐藏 hint 项
|
||||
val view = super.getDropDownView(position, convertView, parent)
|
||||
view.visibility = View.GONE
|
||||
view.layoutParams = ViewGroup.LayoutParams(0, 0)
|
||||
return view
|
||||
}
|
||||
}
|
||||
spinner.adapter = adapter
|
||||
spinner.setSelection(0)
|
||||
} else {
|
||||
val containHintList = list + hint
|
||||
val adapter = SpinnerHintAdapter(spinner.context, layoutId, containHintList)
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.lukouguoji.module_base.bean
|
||||
|
||||
import androidx.databinding.ObservableBoolean
|
||||
import java.io.Serializable
|
||||
|
||||
/**
|
||||
* 国际进港提取记录-列表数据Bean
|
||||
* 对应API: IntImpPickUpRecord/pageQuery
|
||||
*/
|
||||
class IntImpPickUpRecordBean : Serializable {
|
||||
var id: Long = 0 // 主键ID
|
||||
var wbNo: String = "" // 运单号
|
||||
var pc: Int = 0 // 件数
|
||||
var weight: Double = 0.0 // 重量
|
||||
var checkWeight: Double = 0.0 // 计重重量
|
||||
var agentCode: String = "" // 代理人
|
||||
var spCode: String = "" // 特码
|
||||
var serviceFee: Double = 0.0 // 服务费
|
||||
var storageFee: Double = 0.0 // 仓储费
|
||||
var totalAmount: Double = 0.0 // 总金额
|
||||
var pickUpTime: String = "" // 提取时间
|
||||
var pickUpNo: String = "" // 提货编号
|
||||
var infoFee: Double = 0.0 // 信息费
|
||||
var drawFee: Double = 0.0 // 抽单费
|
||||
var coldFee: Double = 0.0 // 冷藏费
|
||||
var forkliftFee: Double = 0.0 // 铲车费
|
||||
var tallyFee: Double = 0.0 // 理货费
|
||||
var operator: String = "" // 办理人
|
||||
var outTime: String = "" // 出库时间
|
||||
|
||||
// ========== UI扩展字段 ==========
|
||||
val checked: ObservableBoolean = ObservableBoolean(false)
|
||||
|
||||
var isSelected: Boolean
|
||||
get() = checked.get()
|
||||
set(value) = checked.set(value)
|
||||
}
|
||||
@@ -270,6 +270,7 @@ interface Constant {
|
||||
const val IntArrAirManifest = "AppIntArrAirManifest" //原始舱单
|
||||
const val IntImpManifest = "AppIntImpManifest" //进港舱单
|
||||
const val IntImpTally = "AppIntImpTally" //理货报告
|
||||
const val IntImpPickUpRecord = "AppIntImpPickUpRecord" //提取记录
|
||||
const val GjjManifestListActivity = "AppIntExpManifest" //舱单
|
||||
const val GjjTallyListActivity = "AppIntExpTally" //理货
|
||||
const val GjjGoodsListActivity = "AppIntExpGjjGoods" //货物交接
|
||||
|
||||
@@ -49,6 +49,7 @@ import com.lukouguoji.module_base.bean.GjjGoodsDetailsBean
|
||||
import com.lukouguoji.module_base.bean.GjjGoodsTypeBean
|
||||
import com.lukouguoji.module_base.bean.GjjHandoverRecordBean
|
||||
import com.lukouguoji.module_base.bean.GjjImportTally
|
||||
import com.lukouguoji.module_base.bean.IntImpPickUpRecordBean
|
||||
import com.lukouguoji.module_base.bean.GjjManifest
|
||||
import com.lukouguoji.module_base.bean.GjjManifestBean
|
||||
import com.lukouguoji.module_base.bean.GjjPackTypeBean
|
||||
@@ -227,6 +228,12 @@ interface Api {
|
||||
@POST("typeCode/intExp/agentCode")
|
||||
suspend fun getIntExpAgentList(): DictListBean
|
||||
|
||||
/**
|
||||
* 获取代理人-国际进港-下拉框
|
||||
*/
|
||||
@POST("typeCode/intImp/agentCode")
|
||||
suspend fun getIntImpAgentList(): DictListBean
|
||||
|
||||
/**
|
||||
* 获取业务类型---CI:国内进港,CO:国内出港,II:国际进港,IO:国际出港 下拉框
|
||||
*/
|
||||
@@ -891,6 +898,76 @@ interface Api {
|
||||
@GET("typeCode/locationByFlag")
|
||||
suspend fun getLocationList(@Query("flag") flag: Int): BaseResultBean<List<DictLocationBean>>
|
||||
|
||||
/**
|
||||
* 国际进港仓库-分页查询
|
||||
* 接口路径: /IntImpStorageUse/pageQuery
|
||||
*/
|
||||
@POST("IntImpStorageUse/pageQuery")
|
||||
suspend fun getIntImpStorageUseList(@Body data: RequestBody): PageInfo<GjcMaWb>
|
||||
|
||||
/**
|
||||
* 国际进港仓库-分页合计
|
||||
* 接口路径: /IntImpStorageUse/pageQueryTotal
|
||||
*/
|
||||
@POST("IntImpStorageUse/pageQueryTotal")
|
||||
suspend fun getIntImpStorageUseTotal(@Body data: RequestBody): BaseResultBean<ManifestTotalDto>
|
||||
|
||||
/**
|
||||
* 国际进港库位操作-清仓
|
||||
* 接口路径: /IntImpStorageUse/updateClear
|
||||
*/
|
||||
@POST("IntImpStorageUse/updateClear")
|
||||
suspend fun clearIntImpStorage(@Body data: RequestBody): BaseResultBean<Boolean>
|
||||
|
||||
/**
|
||||
* 国际进港库位操作-修改库位
|
||||
* 接口路径: /IntImpStorageUse/modifyStorage
|
||||
*/
|
||||
@POST("IntImpStorageUse/modifyStorage")
|
||||
suspend fun modifyIntImpStorage(@Body data: RequestBody): BaseResultBean<Boolean>
|
||||
|
||||
/**
|
||||
* 国际进港库位操作-出库
|
||||
* 接口路径: /IntImpStorageUse/outStorage
|
||||
*/
|
||||
@POST("IntImpStorageUse/outStorage")
|
||||
suspend fun outIntImpStorage(@Body data: RequestBody): BaseResultBean<Boolean>
|
||||
|
||||
/**
|
||||
* 国际进港库位操作-入库
|
||||
* 接口路径: /IntImpStorageUse/inStorage
|
||||
*/
|
||||
@POST("IntImpStorageUse/inStorage")
|
||||
suspend fun inIntImpStorage(@Body data: RequestBody): BaseResultBean<Boolean>
|
||||
|
||||
/**
|
||||
* 国际进港提取记录-分页查询
|
||||
* 接口路径: /IntImpPickUpRecord/pageQuery
|
||||
*/
|
||||
@POST("IntImpPickUpRecord/pageQuery")
|
||||
suspend fun getIntImpPickUpRecordList(@Body data: RequestBody): PageInfo<IntImpPickUpRecordBean>
|
||||
|
||||
/**
|
||||
* 国际进港提取记录-分页合计
|
||||
* 接口路径: /IntImpPickUpRecord/pageQueryTotal
|
||||
*/
|
||||
@POST("IntImpPickUpRecord/pageQueryTotal")
|
||||
suspend fun getIntImpPickUpRecordTotal(@Body data: RequestBody): BaseResultBean<ManifestTotalDto>
|
||||
|
||||
/**
|
||||
* 国际进港提取记录-清除提货
|
||||
* 接口路径: /IntImpPickUpRecord/clearPickUp
|
||||
*/
|
||||
@POST("IntImpPickUpRecord/clearPickUp")
|
||||
suspend fun clearIntImpPickUp(@Body data: RequestBody): BaseResultBean<Boolean>
|
||||
|
||||
/**
|
||||
* 国际进港提取记录-详情
|
||||
* 接口路径: /IntImpPickUpRecord/getDetails
|
||||
*/
|
||||
@POST("IntImpPickUpRecord/getDetails")
|
||||
suspend fun getIntImpPickUpRecordDetails(@Body data: RequestBody): BaseResultBean<IntImpPickUpRecordBean>
|
||||
|
||||
/**
|
||||
* 国际出港待计重-分页搜索
|
||||
* 接口路径: /IntExpCheckIn/pageQuery
|
||||
@@ -1634,7 +1711,7 @@ interface Api {
|
||||
* 分页查询国际进港电报
|
||||
*/
|
||||
@POST("IntImpMsg/pageQuery")
|
||||
suspend fun getIntImpMsgList(@Body data: RequestBody): BaseResultBean<PageInfo<MsgReceivePool>>
|
||||
suspend fun getIntImpMsgList(@Body data: RequestBody): PageInfo<MsgReceivePool>
|
||||
|
||||
/**
|
||||
* 批量生成电报
|
||||
|
||||
@@ -160,6 +160,7 @@ object ARouterConstants {
|
||||
const val ACTIVITY_URL_GJJ_WARE_HOUSE_INFO = "/gjj/GjjWareHouseInfoActivity" //国际进港模块 仓库详情
|
||||
|
||||
const val ACTIVITY_URL_GJJ_CHU_KU_LIST = "/gjj/GjjChuKuListActivity" //国际进港 出库
|
||||
const val ACTIVITY_URL_INT_IMP_PICK_UP_RECORD = "/gjj/IntImpPickUpRecordActivity" //国际进港 提取记录
|
||||
|
||||
const val ACTIVITY_URL_GJJ_QUERY_LIST = "/gjj/GjjQueryListActivity" //国际进港 查询 列表
|
||||
const val ACTIVITY_URL_GJJ_QUERY_INFO = "/gjj/GnjQueryInfoActivity" //国际进港 查询 详情
|
||||
|
||||
Reference in New Issue
Block a user