|
|
|
@ -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);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|