java110
2022-06-15 4ee86eb0f4984bf3ede3196ad8c5fe95e8c5a504
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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
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 com.java110.utils.util.StringUtil;
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 '身份证号',DATE_FORMAT(t.create_time,'%Y-%m-%d %H:%i:%s') '上报时间',rist.title,riav.value_content,\n" +
                "\t\t\t\t\t\t\t\t\n" +
                "\t\t\t\t\t\t\t\t\t(select '业主' from building_owner bo where bo.link = t.tel and bo.status_cd = '0' and bo.community_id = t.community_id limit 1) '业主'\n" +
                "\t\t\t\t\t\t\t\t,\n" +
                "\t\t\t\t\t\t\t\t\t(select '员工' from u_user u \n" +
                "\t\t\t\t\t\t\t\tinner join s_store_user su on u.user_id = su.user_id and su.status_cd = '0'\n" +
                "\t\t\t\t\t\t\t\t\twhere u.tel = t.tel limit 1) '员工'\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 < ?";
        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("身份证号"));
                td.put("上报时间", dataObj.get("上报时间"));
                if(!StringUtil.isNullOrNone(dataObj.get("业主"))){
                    td.put("身份", "业主");
                }else if(!StringUtil.isNullOrNone(dataObj.get("员工"))){
                    td.put("身份", "员工");
                }else{
                    td.put("身份", "访客");
                }
                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();
    }
 
 
}