Przeglądaj źródła

优化疫情上报功能

java110 3 lat temu
rodzic
commit
6a259fd0c1

+ 4 - 2
java110-service/src/main/java/com/java110/service/smo/impl/QueryServiceSMOImpl.java

@@ -367,8 +367,10 @@ public class QueryServiceSMOImpl extends LoggerEngine implements IQueryServiceSM
             }
             }
 
 
             JSONArray th = new JSONArray();
             JSONArray th = new JSONArray();
-            for (String key : data.getJSONObject(0).keySet()) {
-                th.add(key);
+            if(data.size()>0) {
+                for (String key : data.getJSONObject(0).keySet()) {
+                    th.add(key);
+                }
             }
             }
             JSONObject paramOut = new JSONObject();
             JSONObject paramOut = new JSONObject();
             paramOut.put("th", th);
             paramOut.put("th", th);

+ 138 - 0
service-report/src/main/java/com/java110/report/bmo/customReport/ReportInfoAwnerData.java

@@ -0,0 +1,138 @@
+package com.java110.report.bmo.customReport;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.java110.db.dao.IQueryServiceDAO;
+import com.java110.utils.util.DateUtil;
+import org.apache.commons.lang.StringUtils;
+
+import java.util.*;
+
+
+/**
+ * select t.inspection_name '巡检点',t.point_obj_name '位置',ips.staff_name '员工',
+ * (select count(1) from inspection_task it
+ * INNER JOIN inspection_task_detail itd on it.task_id = itd.task_id and itd.status_cd = '0'
+ * where it.inspection_plan_id = ip.inspection_plan_id
+ * and itd.inspection_id = t.inspection_id and it.plan_user_id = ips.staff_id
+ * and itd.act_user_id is not null
+ * ) '已巡检',
+ * (select count(1) from inspection_task it
+ * INNER JOIN inspection_task_detail itd on it.task_id = itd.task_id and itd.status_cd = '0'
+ * where it.inspection_plan_id = ip.inspection_plan_id
+ * and itd.inspection_id = t.inspection_id and it.plan_user_id = ips.staff_id
+ * and itd.act_user_id is null
+ * ) '未巡检',
+ * (select itd.description from inspection_task it
+ * INNER JOIN inspection_task_detail itd on it.task_id = itd.task_id and itd.status_cd = '0'
+ * where it.inspection_plan_id = ip.inspection_plan_id
+ * and itd.inspection_id = t.inspection_id and it.plan_user_id = ips.staff_id
+ * and itd.act_user_id is not null
+ * limit 1
+ * ) '状态'
+ * from inspection_point t
+ * left join inspection_route_point_rel irpr on t.inspection_id = irpr.inspection_id and irpr.status_cd = '0'
+ * left join inspection_plan ip on ip.inspection_route_id = irpr.inspection_route_id and ip.status_cd = '0'
+ * left join inspection_plan_staff ips on ip.inspection_plan_id = ips.inspection_plan_id and ips.status_cd = '0'
+ * <p>
+ * where ips.staff_name is not null
+ * and t.community_id = #communityId#
+ * and t.status_cd = '0'
+ * <if test="startTime != null and startTime != ''">
+ * and ip.create_time &gt; #startTime#
+ * </if>
+ * <if test="endTime != null and endTime != ''">
+ * and ip.create_time &lt; #endTime#
+ * </if>
+ * <p>
+ * group by t.inspection_name,t.point_obj_name,ips.staff_name
+ * order by t.inspection_name
+ */
+
+public class ReportInfoAwnerData implements ReportExecute {
+
+    public JSONObject hasInTd(JSONArray tds, Map dataObj) {
+
+        if (tds == null || tds.size() < 1) {
+            return null;
+        }
+
+        for (int tdIndex = 0; tdIndex < tds.size(); tdIndex++) {
+            if (tds.getJSONObject(tdIndex).getString("姓名").equals(dataObj.get("姓名"))
+                    && tds.getJSONObject(tdIndex).getString("上报项目").equals(dataObj.get("上报项目"))
+                    && tds.getJSONObject(tdIndex).getString("电话").equals(dataObj.get("电话"))
+            ) {
+                return tds.getJSONObject(tdIndex);
+            }
+        }
+
+
+        return null;
+
+    }
+
+    public String execute(JSONObject params, IQueryServiceDAO queryServiceDAOImpl) {
+        JSONObject paramOut = new JSONObject();
+
+        List sqlParams = new ArrayList();
+        String sql = "select rrs.`name` '上报项目',t.person_name '姓名',t.tel '电话',t.id_card '身份证号',rist.title,riav.value_content\n" +
+                "from report_info_answer t\n" +
+                "left join report_info_setting rrs on t.setting_id = rrs.setting_id and rrs.status_cd = '0'\n" +
+                "left join report_info_answer_value riav on t.user_an_id = riav.user_an_id and riav.status_cd = '0'\n" +
+                "LEFT JOIN report_info_setting_title rist on riav.title_id = rist.title_id and rist.status_cd = '0'\n" +
+                "where t.status_cd = '0'\n" +
+                "and t.create_time > ?\n" +
+                "and t.create_time < ?\n";
+        if (params.containsKey("startTime") && !StringUtils.isEmpty(params.getString("startTime"))) {
+            sqlParams.add(params.get("startTime"));
+            sqlParams.add(params.get("endTime"));
+        } else {
+            Calendar calendar = Calendar.getInstance();
+            calendar.add(Calendar.DAY_OF_YEAR, 1);
+            String tomorrow = DateUtil.getFormatTimeString(calendar.getTime(), DateUtil.DATE_FORMATE_STRING_B);
+            sqlParams.add(DateUtil.getFormatTimeString(new Date(), DateUtil.DATE_FORMATE_STRING_B));
+            sqlParams.add(tomorrow);
+        }
+        if (params.containsKey("communityId") && !StringUtils.isEmpty(params.getString("communityId"))) {
+            sql += "and t.`community_id` = ? \n";
+            sqlParams.add(params.get("communityId"));
+        }
+        if (params.containsKey("personName") && !StringUtils.isEmpty(params.getString("personName"))) {
+            sql += "and t.`person_name` like CONCAT('%',?,'%') \n";
+            sqlParams.add(params.get("personName"));
+        }
+
+        List datas = queryServiceDAOImpl.executeSql(sql, sqlParams.toArray());
+
+        System.out.println("datas=" + datas);
+
+        if (datas == null || datas.size() < 1) {
+            paramOut.put("toatl", 1);
+            paramOut.put("data", new JSONArray());
+            return paramOut.toJSONString();
+        }
+
+        JSONArray tds = new JSONArray();
+        JSONObject td = null;
+        for (int dataIndex = 0; dataIndex < datas.size(); dataIndex++) {
+            Map dataObj = (Map) datas.get(dataIndex);
+            td = hasInTd(tds, dataObj);
+            if (td == null) {
+                td = new JSONObject(true);
+                td.put("上报项目", dataObj.get("上报项目"));
+                td.put("姓名", dataObj.get("姓名"));
+                td.put("电话", dataObj.get("电话"));
+                td.put("身份证号", dataObj.get("身份证号"));
+                tds.add(td);
+            }
+            td.put(dataObj.get("title").toString(), dataObj.get("value_content"));
+        }
+
+        paramOut.put("total", params.get("row"));
+        paramOut.put("data", tds);
+
+        return paramOut.toJSONString();
+    }
+
+
+}