From 895a5e58a4dc83e7c073cc15796afd01ab27e83c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com> Date: Fri, 26 Jan 2024 19:07:37 +0800 Subject: [PATCH] 'commit' --- .../73f90e5f-e534-4db5-977f-2e3a0ee3c0ef.xlsx | Bin 0 -> 3776 bytes .../QingLong/Collect/Model/CollectModel.java | 89 +++++++++++------- 2 files changed, 56 insertions(+), 33 deletions(-) create mode 100644 WebRoot/Excel/73f90e5f-e534-4db5-977f-2e3a0ee3c0ef.xlsx diff --git a/WebRoot/Excel/73f90e5f-e534-4db5-977f-2e3a0ee3c0ef.xlsx b/WebRoot/Excel/73f90e5f-e534-4db5-977f-2e3a0ee3c0ef.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..abb68ee71090939528d6bbe0c850b096a37233a5 GIT binary patch literal 3776 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 Qh_HyTWDZVXM+)Tq2ebmc*#H0l literal 0 HcmV?d00001 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 79ac1a21..d561665a 100644 --- a/src/main/java/com/dsideal/QingLong/Collect/Model/CollectModel.java +++ b/src/main/java/com/dsideal/QingLong/Collect/Model/CollectModel.java @@ -5,14 +5,13 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.FileUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.dsideal.QingLong.Base.Model.BaseModel; import com.dsideal.QingLong.Classes.Model.ClassModel; import com.dsideal.QingLong.Collect.Const.DataType; import com.dsideal.QingLong.Global.Model.GlobalModel; -import com.dsideal.QingLong.LoginPerson.Model.LoginPersonModel; import com.dsideal.QingLong.Util.ChineseCharacterUtil; import com.dsideal.QingLong.Util.CommonUtil; import com.dsideal.QingLong.Util.PoiUtil; -import com.dsideal.QingLong.Util.SessionKit; import com.jfinal.kit.Kv; import com.jfinal.kit.StrKit; import com.jfinal.plugin.activerecord.Db; @@ -2101,34 +2100,11 @@ public class CollectModel { * @param table_name * @return */ - public List getTableDataByJobId(int job_id, String table_name) { - List jobList = new ArrayList<>(); - dfsJob(job_id, jobList); - - String ids = job_id + ","; - for (Integer x : jobList) { - ids += x + ","; - } - if (ids.length() > 0) ids = ids.substring(0, ids.length() - 1); - String sql = "select * from " + table_name + " where job_id in(" + ids + ")"; + public List getTableDataByJobId(int job_id, String table_name, String bureauIds) { + String sql = "select * from " + table_name + " where job_id ='" + job_id + "' and bureau_id in (" + bureauIds + ")"; return Db.find(sql); } - /** - * 功能:递归获取所有任务树的任务IDS - * - * @param job_id - * @param jobList - */ - public void dfsJob(int job_id, List jobList) { - String sql = "select job_id from t_collect_job where parent_id=?"; - List list = Db.find(sql, job_id); - jobList.add(job_id); - for (Record record : list) { - jobList.add(record.getInt("job_id")); - dfsJob(record.getInt("job_id"), jobList); - } - } /** * 功能:获取指定列的列描述信息 @@ -2136,7 +2112,7 @@ public class CollectModel { * @param table_name * @return */ - public static List getTableStructInfo(String table_name) { + public List getTableStructInfo(String table_name) { String sql = "select col.column_name, col.ordinal_position as o, d.description as column_description from information_schema.columns col join pg_class c on c.relname = col.table_name left join pg_description d on d.objoid = c.oid and d.objsubid = col.ordinal_position where col.table_schema = 'public' and table_name=? order by col.ordinal_position"; return Db.find(sql, table_name); } @@ -2149,6 +2125,10 @@ public class CollectModel { * @throws IOException */ public void getSummaryExcelForImportExcel(int job_id, int publish_role_id, String filePath) throws IOException { //给定任务编号,获取它有哪些表 + Record jobRecord = getJob(job_id); + String bureau_id = jobRecord.getStr("bureau_id"); + //下辖单位有哪些 + String controlBureauIds = getControlBureauIds(publish_role_id, bureau_id); // 创建工作簿和工作表 SXSSFWorkbook workbook = new SXSSFWorkbook();//默认100行,超100行将写入临时文件 workbook.setCompressTempFiles(false); //是否压缩临时文件,否则写入速度更快,但更占磁盘,但程序最后是会将临时文件删掉的 @@ -2179,7 +2159,7 @@ public class CollectModel { } //获取数据 - List data = getTableDataByJobId(job_id, table_name); + List data = getTableDataByJobId(job_id, table_name, controlBureauIds); Sheet sheet = workbook.createSheet(sheet_name); // 创建单元格样式对象 CellStyle headerStyle = workbook.createCellStyle(); @@ -2267,6 +2247,48 @@ public class CollectModel { workbook.write(outputStream); } + /** + * 功能:根据发布人角色,所在单位,计算出它下辖哪些单位、学校 + * + * @param publish_role_id + * @param bureau_id + * @return + */ + public String getControlBureauIds(int publish_role_id, String bureau_id) { + // 1:市 2:县区 3:单位 + int publish_job_type_id = getPublishJobTypeId(publish_role_id); + BaseModel bm = new BaseModel(); + Record bureauRecord = bm.getOrgInfoById(bureau_id); + String city_id = bureauRecord.getStr("city_id"); + String area_id = bureauRecord.getStr("area_id"); + List idList = new ArrayList<>(); + String sql; + if (publish_job_type_id == 1) { + //市下所有单位 + sql = "select org_id from t_base_organization where city_id=? and org_id=bureau_id"; + List list = Db.find(sql, city_id); + for (Record record : list) { + idList.add(record.getStr("org_id")); + } + } else if (publish_job_type_id == 2) { + //县区下所有单位 + sql = "select org_id from t_base_organization where area_id=? and org_id=bureau_id"; + List list = Db.find(sql, area_id); + for (Record record : list) { + idList.add(record.getStr("org_id")); + } + } else { + idList.add(bureau_id); + } + //拼接出单位ids + String bureauIds = ""; + for (String s : idList) { + bureauIds += "'"+s + "',"; + } + if (bureauIds.length() > 0) bureauIds = bureauIds.substring(0, bureauIds.length() - 1); + return bureauIds; + } + /** * 功能:导出Form表单式录入的汇集数据EXCEL * @@ -2275,9 +2297,10 @@ public class CollectModel { * @throws IOException */ public void getSummaryExcelForFormFill(int job_id, int publish_role_id, String filePath) throws IOException { - //TODO - Record jobRecord = getJob(job_id); + String bureau_id = jobRecord.getStr("bureau_id"); + //下辖单位有哪些 + String controlBureauIds = getControlBureauIds(publish_role_id, bureau_id); String table_name = jobRecord.getStr("form_table_name");//表格名称 Map _map = new HashMap<>(); List listStruct = getTableStructInfo(table_name); @@ -2294,7 +2317,7 @@ public class CollectModel { _map.put(idx++, r); } //获取数据 - List data = getTableDataByJobId(job_id, table_name); + List data = getTableDataByJobId(job_id, table_name, controlBureauIds); //创建Excel SXSSFWorkbook workbook = new SXSSFWorkbook();//默认100行,超100行将写入临时文件 workbook.setCompressTempFiles(false); //是否压缩临时文件,否则写入速度更快,但更占磁盘,但程序最后是会将临时文件删掉的 @@ -2426,7 +2449,7 @@ public class CollectModel { * @param content * @return */ - public static JSONArray parseGridJson(String content) { + public JSONArray parseGridJson(String content) { JSONArray ja = JSONArray.parseArray(content); List res = new ArrayList<>();