java110
2022-06-15 6a259fd0c1559aab8813b805d67c72111e20476e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
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();
    }
 
 
}