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.*;
|
|
public class InspectionStaffData implements ReportExecute {
|
|
public JSONObject hasInTd(JSONArray tds, Map<String, Object> 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("员工"))) {
|
return tds.getJSONObject(tdIndex);
|
}
|
}
|
|
|
return null;
|
|
}
|
|
@Override
|
public JSONObject execute(JSONObject params, IQueryServiceDAO queryServiceDAOImpl) {
|
|
JSONObject paramOut = new JSONObject();
|
JSONArray th = new JSONArray();
|
th.add("员工");
|
|
List sqlParams = new ArrayList();
|
String sql = "select \n" +
|
"t.staff_name '员工',\n" +
|
"ipo.inspection_name '巡检点',\n" +
|
"(select count(1) from inspection_task it \n" +
|
"INNER JOIN inspection_task_detail itd on it.task_id = itd.task_id and itd.status_cd = '0'\n" +
|
"where it.inspection_plan_id = ip.inspection_plan_id\n" +
|
"and itd.inspection_id = ipo.inspection_id and it.plan_user_id = t.staff_id\n" +
|
"and itd.act_user_id is not null\n" +
|
"and it.create_time > ?\n" +
|
"and it.create_time < ?\n" +
|
") '已巡检',\n" +
|
"(select count(1) from inspection_task it \n" +
|
"INNER JOIN inspection_task_detail itd on it.task_id = itd.task_id and itd.status_cd = '0'\n" +
|
"where it.inspection_plan_id = ip.inspection_plan_id\n" +
|
"and itd.inspection_id = ipo.inspection_id and it.plan_user_id = t.staff_id\n" +
|
"and itd.act_user_id is null\n" +
|
"and it.create_time > ?\n" +
|
"and it.create_time < ?\n" +
|
") '未巡检',\n" +
|
"(select itd.description from inspection_task it \n" +
|
"INNER JOIN inspection_task_detail itd on it.task_id = itd.task_id and itd.status_cd = '0'\n" +
|
"where it.inspection_plan_id = ip.inspection_plan_id\n" +
|
"and itd.inspection_id = ipo.inspection_id and it.plan_user_id = t.staff_id\n" +
|
"and itd.act_user_id is not null\n" +
|
"and it.create_time > ?\n" +
|
"and it.create_time < ?\n" +
|
"limit 1\n" +
|
") '状态'\n" +
|
"from inspection_plan_staff t\n" +
|
"left join inspection_plan ip on t.inspection_plan_id = ip.inspection_plan_id and ip.status_cd = '0'\n" +
|
"left join inspection_route_point_rel irpr on ip.inspection_route_id = irpr.inspection_route_id and irpr.status_cd= '0'\n" +
|
"left join inspection_point ipo on irpr.inspection_id = ipo.inspection_id and ipo.status_cd = '0'\n" +
|
"where 1=1 and t.status_cd = '0'\n";
|
if (params.containsKey("startTime") && !StringUtils.isEmpty(params.getString("startTime"))) {
|
sqlParams.add(params.get("startTime"));
|
sqlParams.add(params.get("endTime"));
|
sqlParams.add(params.get("startTime"));
|
sqlParams.add(params.get("endTime"));
|
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);
|
sqlParams.add(DateUtil.getFormatTimeString(new Date(), DateUtil.DATE_FORMATE_STRING_B));
|
sqlParams.add(tomorrow);
|
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` = ? ";
|
sqlParams.add(params.get("communityId"));
|
}
|
|
sql += "GROUP BY t.staff_name ,ipo.inspection_name";
|
|
|
List<Map<String, Object>> datas = queryServiceDAOImpl.executeSql(sql, sqlParams.toArray());
|
|
if (datas == null || datas.size() < 1) {
|
paramOut.put("td", new JSONArray());
|
|
return paramOut;
|
}
|
|
JSONArray tds = new JSONArray();
|
JSONObject td = null;
|
for (Map<String, Object> dataObj : datas) {
|
td = hasInTd(tds, dataObj);
|
|
if (td == null) {
|
td = new JSONObject();
|
td.put("员工", dataObj.get("员工"));
|
tds.add(td);
|
}
|
|
td.put(dataObj.get("巡检点").toString(), dataObj.get("已巡检") + "/" + dataObj.get("未巡检"));
|
td.put("状态", dataObj.get("状态"));
|
}
|
|
for (String key : tds.getJSONObject(0).keySet()) {
|
if ("员工".equals(key)) {
|
continue;
|
}
|
th.add(key);
|
}
|
|
|
paramOut.put("th", th);
|
paramOut.put("td", tds);
|
return paramOut;
|
}
|
|
|
}
|