使用json 填充数据
This commit is contained in:
@@ -3,7 +3,7 @@ package com.loveerror.bested.button
|
|||||||
enum class ActionEvent {
|
enum class ActionEvent {
|
||||||
|
|
||||||
START_ACTION("com.loveerror.bested.START_ACTION", "去普通建档"),
|
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", "设置数据源"),
|
SET_DATA_SOURCE("com.loveerror.bested.SET_DATA_SOURCE", "设置数据源"),
|
||||||
HIDE_FLOATING_BUTTON("com.loveerror.bested.HIDE_FLOATING_BUTTON", "隐藏悬浮按钮"),
|
HIDE_FLOATING_BUTTON("com.loveerror.bested.HIDE_FLOATING_BUTTON", "隐藏悬浮按钮"),
|
||||||
PRINT_CURRENT_PAGE("com.loveerror.bested.PRINT_CURRENT_PAGE", "打印当前界面"),
|
PRINT_CURRENT_PAGE("com.loveerror.bested.PRINT_CURRENT_PAGE", "打印当前界面"),
|
||||||
|
|||||||
@@ -176,13 +176,32 @@ class DragFloatingButton(context: Context) : View(context) {
|
|||||||
hint = menuWithText
|
hint = menuWithText
|
||||||
tag = 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)
|
linearLayout.addView(editText)
|
||||||
editTexts.add(editText)
|
editTexts.add(editText)
|
||||||
}
|
}
|
||||||
|
|
||||||
val dialog = AlertDialog.Builder(context)
|
val dialog = AlertDialog.Builder(context)
|
||||||
.setTitle("请输入公司名称")
|
.setTitle("请输入:"+actionEvent.menuName)
|
||||||
.setView(linearLayout)
|
.setView(linearLayout)
|
||||||
.setPositiveButton("确定", null) // 先设置为null,稍后手动处理
|
.setPositiveButton("确定", null) // 先设置为null,稍后手动处理
|
||||||
.setNegativeButton("取消", null)
|
.setNegativeButton("取消", null)
|
||||||
@@ -192,7 +211,7 @@ class DragFloatingButton(context: Context) : View(context) {
|
|||||||
dialog.setOnShowListener {
|
dialog.setOnShowListener {
|
||||||
val positiveButton = dialog.getButton(AlertDialog.BUTTON_POSITIVE)
|
val positiveButton = dialog.getButton(AlertDialog.BUTTON_POSITIVE)
|
||||||
positiveButton.setOnClickListener {
|
positiveButton.setOnClickListener {
|
||||||
val textWithTags = mutableListOf<TextWithTag>()
|
val textWithTags = arrayListOf<TextWithTag>()
|
||||||
// 遍历editText eeditTexts
|
// 遍历editText eeditTexts
|
||||||
for (editText in editTexts) {
|
for (editText in editTexts) {
|
||||||
val inputText = editText.text.toString().trim()
|
val inputText = editText.text.toString().trim()
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
package com.loveerror.bested.handler
|
package com.loveerror.bested.handler
|
||||||
|
|
||||||
|
import android.content.Intent
|
||||||
import android.view.accessibility.AccessibilityNodeInfo
|
import android.view.accessibility.AccessibilityNodeInfo
|
||||||
import com.loveerror.bested.tool.AccessibilityTool
|
import com.loveerror.bested.tool.AccessibilityTool
|
||||||
import com.loveerror.bested.tool.AccessibilityTool.Companion.performBottomSheetSelection
|
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.NodeToolHint
|
||||||
import com.loveerror.bested.tool.NodeToolText
|
import com.loveerror.bested.tool.NodeToolText
|
||||||
import com.loveerror.bested.tool.RootNodeCallback
|
import com.loveerror.bested.tool.RootNodeCallback
|
||||||
@@ -16,11 +18,11 @@ class NormalGroupCreateForm(private val rootNodeCallback: RootNodeCallback) {
|
|||||||
var fields = arrayListOf<FieldName>()
|
var fields = arrayListOf<FieldName>()
|
||||||
|
|
||||||
init {
|
init {
|
||||||
fields.add(FieldName("集团名称", "请输入集团名称", "集团abc", FieldType.TEXT))
|
fields.add(FieldName("集团名称", "请输入集团名称", "", FieldType.TEXT))
|
||||||
fields.add(FieldName("证件名称", "证件名称", "jituan", FieldType.TEXT))
|
fields.add(FieldName("证件名称", "证件名称", "", 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("联系电话", "请输入联系电话", "13266667777", FieldType.TEXT))
|
fields.add(FieldName("联系电话", "请输入联系电话", "13266667777", FieldType.TEXT))
|
||||||
fields.add(FieldName("员工数", "请输入人数", "1", 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("集团状态", "", "潜在集团", FieldType.SELECT))
|
||||||
fields.add(FieldName("证件有效期", "", "2056-11-23", FieldType.TIME))
|
fields.add(FieldName("证件有效期", "", "2056-11-23", FieldType.TIME))
|
||||||
fields.add(FieldName("集团等级", "", "D", FieldType.TEXT))
|
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))
|
||||||
|
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 root AccessibilityNodeInfo根节点
|
||||||
* @param groupName 集团名称
|
|
||||||
*/
|
*/
|
||||||
fun autoFillForm(root: AccessibilityNodeInfo) {
|
fun autoFillForm(root: AccessibilityNodeInfo, intent: Intent) {
|
||||||
|
|
||||||
val fieldMap = mapOf<String, String>(
|
val json = intent.getStringExtra("json")
|
||||||
"集团名称" to "上海靖源科技有限公司",
|
println("json: $json")
|
||||||
"证件名称" to "上海靖源科技有限公司",
|
if(json == null || json.isEmpty()){
|
||||||
"证件号码" to "91310120MA7FFHYK15",
|
println()
|
||||||
"法人代表" to "刘剑",
|
println("未找到json")
|
||||||
"证件地址" to "上海市奉贤区海坤路1号1幢",
|
return
|
||||||
"联系电话" to "13524811769",
|
}
|
||||||
// "证件有效期" to "9999-09-09",
|
// json to map
|
||||||
"证件有效期" to "",
|
|
||||||
"员工数" to "2",
|
var fieldMap = JsonTool.parseJson(json)
|
||||||
"建筑物名称" to "金牛座",
|
|
||||||
"细分客群" to "IT服务业"
|
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)
|
// expandClassificationSection(root)
|
||||||
@@ -118,11 +185,11 @@ class NormalGroupCreateForm(private val rootNodeCallback: RootNodeCallback) {
|
|||||||
AccessibilityTool.fillEditText(peopleCountNode, fieldMap["员工数"] ?: "1", "员工数")
|
AccessibilityTool.fillEditText(peopleCountNode, fieldMap["员工数"] ?: "1", "员工数")
|
||||||
// fillEditTextByHintText(rootNew,fieldMap["员工数"] ?: "1", "员工数", "请输入人数")
|
// fillEditTextByHintText(rootNew,fieldMap["员工数"] ?: "1", "员工数", "请输入人数")
|
||||||
|
|
||||||
clickToOpenBottomSheetAddress(
|
// clickToOpenBottomSheetAddress(
|
||||||
root,
|
// root,
|
||||||
"请点击此处打点",
|
// "请点击此处打点",
|
||||||
"浙江省杭州市余杭区高顺路8号五常西溪软件园金牛座A座"
|
// "浙江省杭州市余杭区高顺路8号五常西溪软件园金牛座A座"
|
||||||
)
|
// )
|
||||||
// 示例:点击"集团状态"触发底部选择,选择"在网集团"
|
// 示例:点击"集团状态"触发底部选择,选择"在网集团"
|
||||||
// fillCompanyNameField(root, groupName)
|
// fillCompanyNameField(root, groupName)
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ class ZjMccmCrm(private val rootNodeCallback: RootNodeCallback) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ActionEvent.FILL_ACTION.event -> {
|
ActionEvent.FILL_ACTION.event -> {
|
||||||
fillActionAsync()
|
fillActionAsync(intent)
|
||||||
}
|
}
|
||||||
|
|
||||||
ActionEvent.PRINT_CURRENT_PAGE.event -> {
|
ActionEvent.PRINT_CURRENT_PAGE.event -> {
|
||||||
@@ -105,14 +105,14 @@ class ZjMccmCrm(private val rootNodeCallback: RootNodeCallback) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun fillActionAsync() {
|
private fun fillActionAsync(intent: Intent) {
|
||||||
Thread {
|
Thread {
|
||||||
val root = rootInActiveWindow()
|
val root = rootInActiveWindow()
|
||||||
if (root == null) {
|
if (root == null) {
|
||||||
return@Thread
|
return@Thread
|
||||||
}
|
}
|
||||||
val normalGroupCreateForm = NormalGroupCreateForm(rootNodeCallback)
|
val normalGroupCreateForm = NormalGroupCreateForm(rootNodeCallback)
|
||||||
normalGroupCreateForm.autoFillForm(root)
|
normalGroupCreateForm.autoFillForm(root, intent)
|
||||||
}.start()
|
}.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