main
黄海 2 years ago
parent 8ac2ca8212
commit 41720ff9a5

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

@ -24,6 +24,8 @@ import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CollectModel {
/**
@ -1107,7 +1109,9 @@ public class CollectModel {
*
*/
public void saveFormJob(int job_id, String bureau_id, String person_id, String json) {
String table_name = getJob(job_id).getStr("form_table_name");
Record rJob = getJob(job_id);
String table_name = rJob.getStr("form_table_name");
String form_json = rJob.getStr("form_json");
//先删除后插入,保持健康
String sql = "delete from " + table_name + " where job_id=? and bureau_id=?";
Db.update(sql, job_id, bureau_id);
@ -1119,18 +1123,48 @@ public class CollectModel {
record.set("person_id", person_id);
//读取原来的结构,根据原来结构的类型进行判断,获取现在需要用什么样的读取方式
Record rJob = getJob(job_id);
String form_json = rJob.getStr("form_json");
JSONArray ja = JSONArray.parseArray(form_json);
Map<String, Integer> _map = new HashMap<>();
Set<String> _checkBoxSet = new HashSet<>();
for (int i = 0; i < ja.size(); i++) {
JSONObject j2 = ja.getJSONObject(i);
int data_type_id = DataType.getFormDataType(j2);
_map.put(j2.getString("id"), data_type_id);//哪个字段是什么类型
//对于checkbox需要做特殊处理,"tag":"checkbox","tagIcon":"checkbox"
if (j2.getString("tag").equals("checkbox")) {
_checkBoxSet.add(j2.getString("id"));
}
}
Map<String, List<Integer>> checkBoxSelectMap = new HashMap<>();
for (Map.Entry<String, Object> entry : j1.entrySet()) {
String key = entry.getKey();
//优先处理checkbox问题
boolean flag = false;
for (String s : _checkBoxSet) {
if (key.startsWith(s + "[")) {
//如果存在值肯定是on,只需要记录中括号里面的整数值
Pattern pattern = Pattern.compile("\\[(\\d+)]");
Matcher matcher = pattern.matcher(key);
if (matcher.find()) {
int x = Integer.parseInt(matcher.group(1));//数值
List<Integer> listSelectNumber = new ArrayList<>();
if (checkBoxSelectMap.containsKey(s)) listSelectNumber = checkBoxSelectMap.get(s);
listSelectNumber.add(x);
checkBoxSelectMap.put(s, listSelectNumber);
}
flag = true;
}
}
if (flag) {
Pattern pattern = Pattern.compile("^(.*?)\\[\\d+]");
Matcher matcher = pattern.matcher(key);
if (matcher.find()) {
String result = matcher.group(1);
record.set(result, 1);//表示复选框已填写内容真正的内容在t_collect_checkbox表中
}
continue;
}
int data_type_id = _map.get(key);
switch (data_type_id) {
case 0:
@ -1154,11 +1188,30 @@ public class CollectModel {
default:
break;
}
}
Db.save(table_name, "id", record);
//设置此单位已填报
//保存多选结果
//先删除
sql = "delete from t_collect_checkbox where job_id=? and bureau_id=?";
Db.update(sql, job_id, bureau_id);
//后插入
List<Record> writeList = new ArrayList<>();
for (Map.Entry<String, List<Integer>> entry : checkBoxSelectMap.entrySet()) {
String key = entry.getKey();
List<Integer> value = entry.getValue();
for (Integer i : value) {
Record r = new Record();
r.set("job_id", job_id);
r.set("bureau_id", bureau_id);
r.set("person_id", person_id);
r.set("input_id", key);
r.set("value", i);
writeList.add(r);
}
}
if (writeList.size() > 0) Db.batchSave("t_collect_checkbox", writeList, 100);
}
/**
@ -1297,4 +1350,15 @@ public class CollectModel {
String sql = "select * from t_collect_uploadfile where file_id=?";
return Db.findFirst(sql, file_id);
}
public static void main(String[] args) {
String str = "xxjzgm[2]";
Pattern pattern = Pattern.compile("\\[(\\d+)]");
Matcher matcher = pattern.matcher(str);
if (matcher.find()) {
String numberStr = matcher.group(1);
int number = Integer.parseInt(numberStr);
System.out.println(number);
}
}
}
Loading…
Cancel
Save