diff --git a/WebRoot/Excel/2A0DCBEA-DEDE-4E42-AD8E-B003A660B689.docx b/WebRoot/Excel/2A0DCBEA-DEDE-4E42-AD8E-B003A660B689.docx new file mode 100644 index 00000000..39c67aa3 Binary files /dev/null and b/WebRoot/Excel/2A0DCBEA-DEDE-4E42-AD8E-B003A660B689.docx differ diff --git a/WebRoot/Excel/2F574E0A-EDFA-4E52-B479-268C287C20B2.jpg b/WebRoot/Excel/2F574E0A-EDFA-4E52-B479-268C287C20B2.jpg new file mode 100644 index 00000000..f48b1538 Binary files /dev/null and b/WebRoot/Excel/2F574E0A-EDFA-4E52-B479-268C287C20B2.jpg differ diff --git a/src/main/java/com/dsideal/QingLong/Collect/Model/CollectModel.java b/src/main/java/com/dsideal/QingLong/Collect/Model/CollectModel.java index 61dfc791..e050ec93 100644 --- a/src/main/java/com/dsideal/QingLong/Collect/Model/CollectModel.java +++ b/src/main/java/com/dsideal/QingLong/Collect/Model/CollectModel.java @@ -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 _map = new HashMap<>(); + Set _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> checkBoxSelectMap = new HashMap<>(); for (Map.Entry 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 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 writeList = new ArrayList<>(); + for (Map.Entry> entry : checkBoxSelectMap.entrySet()) { + String key = entry.getKey(); + List 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); + } + } } \ No newline at end of file