使用json 填充数据
This commit is contained in:
@@ -3,7 +3,7 @@ package com.loveerror.bested.button
|
||||
enum class ActionEvent {
|
||||
|
||||
START_ACTION("com.loveerror.bested.START_ACTION", "去普通建档"),
|
||||
FILL_ACTION("com.loveerror.bested.FILL_ACTION", "普通建档填充表单"),
|
||||
FILL_ACTION("com.loveerror.bested.FILL_ACTION", "普通建档填充表单", menuWithText = listOf("json")),
|
||||
SET_DATA_SOURCE("com.loveerror.bested.SET_DATA_SOURCE", "设置数据源"),
|
||||
HIDE_FLOATING_BUTTON("com.loveerror.bested.HIDE_FLOATING_BUTTON", "隐藏悬浮按钮"),
|
||||
PRINT_CURRENT_PAGE("com.loveerror.bested.PRINT_CURRENT_PAGE", "打印当前界面"),
|
||||
|
||||
@@ -176,13 +176,32 @@ class DragFloatingButton(context: Context) : View(context) {
|
||||
hint = menuWithText
|
||||
tag = menuWithText
|
||||
|
||||
// 添加双击全选支持
|
||||
var lastClickTime = 0L
|
||||
val doubleClickThreshold = 300L // 双击时间阈值(毫秒)
|
||||
|
||||
setOnTouchListener { _, event ->
|
||||
if (event.action == MotionEvent.ACTION_DOWN) {
|
||||
val currentTime = System.currentTimeMillis()
|
||||
if (currentTime - lastClickTime < doubleClickThreshold) {
|
||||
// 双击事件 - 全选文本
|
||||
selectAll()
|
||||
performClick() // 添加这行来满足 lint 要求
|
||||
lastClickTime = 0L // 重置时间,避免三击等操作
|
||||
} else {
|
||||
lastClickTime = currentTime
|
||||
}
|
||||
}
|
||||
false // 返回false以允许其他触摸事件继续处理
|
||||
}
|
||||
|
||||
}
|
||||
linearLayout.addView(editText)
|
||||
editTexts.add(editText)
|
||||
}
|
||||
|
||||
val dialog = AlertDialog.Builder(context)
|
||||
.setTitle("请输入公司名称")
|
||||
.setTitle("请输入:"+actionEvent.menuName)
|
||||
.setView(linearLayout)
|
||||
.setPositiveButton("确定", null) // 先设置为null,稍后手动处理
|
||||
.setNegativeButton("取消", null)
|
||||
@@ -192,7 +211,7 @@ class DragFloatingButton(context: Context) : View(context) {
|
||||
dialog.setOnShowListener {
|
||||
val positiveButton = dialog.getButton(AlertDialog.BUTTON_POSITIVE)
|
||||
positiveButton.setOnClickListener {
|
||||
val textWithTags = mutableListOf<TextWithTag>()
|
||||
val textWithTags = arrayListOf<TextWithTag>()
|
||||
// 遍历editText eeditTexts
|
||||
for (editText in editTexts) {
|
||||
val inputText = editText.text.toString().trim()
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
package com.loveerror.bested.handler
|
||||
|
||||
import android.content.Intent
|
||||
import android.view.accessibility.AccessibilityNodeInfo
|
||||
import com.loveerror.bested.tool.AccessibilityTool
|
||||
import com.loveerror.bested.tool.AccessibilityTool.Companion.performBottomSheetSelection
|
||||
import com.loveerror.bested.tool.JsonTool
|
||||
import com.loveerror.bested.tool.NodeToolHint
|
||||
import com.loveerror.bested.tool.NodeToolText
|
||||
import com.loveerror.bested.tool.RootNodeCallback
|
||||
@@ -16,11 +18,11 @@ class NormalGroupCreateForm(private val rootNodeCallback: RootNodeCallback) {
|
||||
var fields = arrayListOf<FieldName>()
|
||||
|
||||
init {
|
||||
fields.add(FieldName("集团名称", "请输入集团名称", "集团abc", FieldType.TEXT))
|
||||
fields.add(FieldName("证件名称", "证件名称", "jituan", FieldType.TEXT))
|
||||
fields.add(FieldName("证件号码", "请输入证件号码", "44010119900101001X", FieldType.TEXT))
|
||||
fields.add(FieldName("法人代表", "请输入法人姓名", "张三", FieldType.TEXT))
|
||||
fields.add(FieldName("证件地址", "请输入证件地址", "北京市海淀区", FieldType.TEXT))
|
||||
fields.add(FieldName("集团名称", "请输入集团名称", "", FieldType.TEXT))
|
||||
fields.add(FieldName("证件名称", "证件名称", "", FieldType.TEXT))
|
||||
fields.add(FieldName("证件号码", "请输入证件号码", "", FieldType.TEXT))
|
||||
fields.add(FieldName("法人代表", "请输入法人姓名", "", FieldType.TEXT))
|
||||
fields.add(FieldName("证件地址", "请输入证件地址", "", FieldType.TEXT))
|
||||
fields.add(FieldName("联系电话", "请输入联系电话", "13266667777", FieldType.TEXT))
|
||||
fields.add(FieldName("员工数", "请输入人数", "1", FieldType.TEXT))
|
||||
|
||||
@@ -28,30 +30,95 @@ class NormalGroupCreateForm(private val rootNodeCallback: RootNodeCallback) {
|
||||
fields.add(FieldName("集团状态", "", "潜在集团", FieldType.SELECT))
|
||||
fields.add(FieldName("证件有效期", "", "2056-11-23", FieldType.TIME))
|
||||
fields.add(FieldName("集团等级", "", "D", FieldType.TEXT))
|
||||
fields.add(FieldName("建筑物名称", "请输入搜索地址", "金牛座", FieldType.SEARCH_SELECT))
|
||||
fields.add(FieldName("建筑物名称", "请输入搜索地址", "赛银国际商务", FieldType.SEARCH_SELECT))
|
||||
fields.add(FieldName("细分客群", "", "其他", FieldType.SELECT))
|
||||
fields.add(FieldName("网格名称", "", "余杭未来科技城网格", FieldType.SELECT))
|
||||
|
||||
}
|
||||
|
||||
// 在 JsonTool.kt 中添加方法
|
||||
fun convertFieldNames(originalMap: Map<String, String>): Map<String, String> {
|
||||
val fieldMapping = mapOf(
|
||||
"企业名称" to "集团名称",
|
||||
// "企业名称" to "证件名称",
|
||||
"统一社会信用代码" to "证件号码",
|
||||
"法定代表人" to "法人代表",
|
||||
"电话" to "联系电话",
|
||||
"注册地址" to "证件地址",
|
||||
"参保人数" to "员工数"
|
||||
)
|
||||
|
||||
val convertedMap = mutableMapOf<String, String>()
|
||||
originalMap.forEach { (key, value) ->
|
||||
val mappedKey = fieldMapping[key] ?: key
|
||||
convertedMap[mappedKey] = value
|
||||
}
|
||||
convertedMap["证件名称"]= convertedMap["集团名称"].toString()
|
||||
// 参保人数值如果为 eg: 8人 ->8
|
||||
if (convertedMap["员工数"]?.contains("人") == true) {
|
||||
convertedMap["员工数"] = convertedMap["员工数"]?.replace("人", "").toString()
|
||||
}
|
||||
return convertedMap
|
||||
}
|
||||
|
||||
/**
|
||||
* 自动填充普通集团建档表单
|
||||
* @param root AccessibilityNodeInfo根节点
|
||||
* @param groupName 集团名称
|
||||
*/
|
||||
fun autoFillForm(root: AccessibilityNodeInfo) {
|
||||
fun autoFillForm(root: AccessibilityNodeInfo, intent: Intent) {
|
||||
|
||||
val fieldMap = mapOf<String, String>(
|
||||
"集团名称" to "上海靖源科技有限公司",
|
||||
"证件名称" to "上海靖源科技有限公司",
|
||||
"证件号码" to "91310120MA7FFHYK15",
|
||||
"法人代表" to "刘剑",
|
||||
"证件地址" to "上海市奉贤区海坤路1号1幢",
|
||||
"联系电话" to "13524811769",
|
||||
// "证件有效期" to "9999-09-09",
|
||||
"证件有效期" to "",
|
||||
"员工数" to "2",
|
||||
"建筑物名称" to "金牛座",
|
||||
"细分客群" to "IT服务业"
|
||||
)
|
||||
val json = intent.getStringExtra("json")
|
||||
println("json: $json")
|
||||
if(json == null || json.isEmpty()){
|
||||
println()
|
||||
println("未找到json")
|
||||
return
|
||||
}
|
||||
// json to map
|
||||
|
||||
var fieldMap = JsonTool.parseJson(json)
|
||||
|
||||
fieldMap = convertFieldNames(fieldMap)
|
||||
/**
|
||||
* {
|
||||
* "企业名称": "杭州名一口腔门诊部有限公司",
|
||||
* "统一社会信用代码": "91330108MA27Y6BA0T",
|
||||
* "法定代表人": "伍聪聪",
|
||||
* "电话": "15355431707",
|
||||
* "经营状态": "开业",
|
||||
* "成立日期": "2016-07-12",
|
||||
* "行政区划": "浙江省杭州市滨江区",
|
||||
* "注册资本": "10万(元)",
|
||||
* "实缴资本": "10万(元)",
|
||||
* "企业类型": "有限责任公司(自然人投资或控股)",
|
||||
* "所属行业": "卫生",
|
||||
* "工商注册号": "330108000291442",
|
||||
* "组织机构代码": "MA27Y6BA-0",
|
||||
* "纳税人识别号": "91330108MA27Y6BA0T",
|
||||
* "纳税人资质": "-",
|
||||
* "营业期限": "2016-07-12 至 无固定期限",
|
||||
* "核准日期": "2025-07-15",
|
||||
* "参保人数": "8人",
|
||||
* "登记机关": "杭州高新技术产业开发区(滨江)市场监督管理局",
|
||||
* "曾用名": "-",
|
||||
* "注册地址": "浙江省杭州市滨江区浦沿街道伟业路483号",
|
||||
* "经营范围": "许可项目:医疗服务(依法须经批准的项目,经相关部门批准后方可开展经营活动,具体经营项目以审批结果为准)。一般项目:健康咨询服务(不含诊疗服务);企业管理;第二类医疗器械销售;卫生用品和一次性使用医疗用品销售(除依法须经批准的项目外,凭营业执照依法自主开展经营活动)。"
|
||||
* }
|
||||
*/
|
||||
|
||||
// val fieldMap = mapOf<String, String>(
|
||||
// "集团名称" to "上海靖源科技有限公司",
|
||||
// "证件名称" to "上海靖源科技有限公司",
|
||||
// "证件号码" to "91310120MA7FFHYK15",
|
||||
// "法人代表" to "刘剑",
|
||||
// "证件地址" to "上海市奉贤区海坤路1号1幢",
|
||||
// "联系电话" to "13524811769",
|
||||
//// "证件有效期" to "9999-09-09",
|
||||
// "证件有效期" to "",
|
||||
// "员工数" to "2",
|
||||
// "建筑物名称" to "金牛座",
|
||||
// "细分客群" to "IT服务业"
|
||||
// )
|
||||
|
||||
// 先展开分类信息区域
|
||||
// expandClassificationSection(root)
|
||||
@@ -118,11 +185,11 @@ class NormalGroupCreateForm(private val rootNodeCallback: RootNodeCallback) {
|
||||
AccessibilityTool.fillEditText(peopleCountNode, fieldMap["员工数"] ?: "1", "员工数")
|
||||
// fillEditTextByHintText(rootNew,fieldMap["员工数"] ?: "1", "员工数", "请输入人数")
|
||||
|
||||
clickToOpenBottomSheetAddress(
|
||||
root,
|
||||
"请点击此处打点",
|
||||
"浙江省杭州市余杭区高顺路8号五常西溪软件园金牛座A座"
|
||||
)
|
||||
// clickToOpenBottomSheetAddress(
|
||||
// root,
|
||||
// "请点击此处打点",
|
||||
// "浙江省杭州市余杭区高顺路8号五常西溪软件园金牛座A座"
|
||||
// )
|
||||
// 示例:点击"集团状态"触发底部选择,选择"在网集团"
|
||||
// fillCompanyNameField(root, groupName)
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ class ZjMccmCrm(private val rootNodeCallback: RootNodeCallback) {
|
||||
}
|
||||
|
||||
ActionEvent.FILL_ACTION.event -> {
|
||||
fillActionAsync()
|
||||
fillActionAsync(intent)
|
||||
}
|
||||
|
||||
ActionEvent.PRINT_CURRENT_PAGE.event -> {
|
||||
@@ -105,14 +105,14 @@ class ZjMccmCrm(private val rootNodeCallback: RootNodeCallback) {
|
||||
}
|
||||
}
|
||||
|
||||
private fun fillActionAsync() {
|
||||
private fun fillActionAsync(intent: Intent) {
|
||||
Thread {
|
||||
val root = rootInActiveWindow()
|
||||
if (root == null) {
|
||||
return@Thread
|
||||
}
|
||||
val normalGroupCreateForm = NormalGroupCreateForm(rootNodeCallback)
|
||||
normalGroupCreateForm.autoFillForm(root)
|
||||
normalGroupCreateForm.autoFillForm(root, intent)
|
||||
}.start()
|
||||
|
||||
}
|
||||
|
||||
19
app/src/main/java/com/loveerror/bested/tool/JsonTool.kt
Normal file
19
app/src/main/java/com/loveerror/bested/tool/JsonTool.kt
Normal file
@@ -0,0 +1,19 @@
|
||||
package com.loveerror.bested.tool
|
||||
|
||||
import org.json.JSONObject
|
||||
|
||||
class JsonTool {
|
||||
companion object{
|
||||
fun parseJson(json: String): Map<String, String> {
|
||||
val jsonObject = JSONObject(json)
|
||||
val jsonMap = mutableMapOf<String, String>()
|
||||
val jsonKeys = jsonObject.keys()
|
||||
while (jsonKeys.hasNext()) {
|
||||
val key = jsonKeys.next()
|
||||
val value = jsonObject.get(key).toString()
|
||||
jsonMap[key] = value
|
||||
}
|
||||
return jsonMap
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user