4b8adf65 sonin

运营月报

1 个父辈 9f62f4cb
package com.skua.modules.report.controller;
import com.skua.aop.annotation.CustomExceptionAnno;
import com.skua.core.api.vo.Result;
import com.skua.core.aspect.annotation.AutoLog;
import com.skua.core.context.BaseContextHandler;
import com.skua.core.util.ConvertUtils;
import com.skua.modules.biz.IBusinessService;
import com.skua.modules.custom.service.IFCustomReportDatasetService;
import com.skua.modules.report.service.IOperationReportService;
import com.skua.modules.report.vo.JnhbReportData;
import com.skua.modules.report.vo.ProductDataVO;
import com.skua.modules.system.service.ISysDepartService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
......@@ -18,7 +22,10 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j
@Api(tags = "数据接口")
......@@ -28,6 +35,12 @@ public class OperationReportController {
@Autowired
private IOperationReportService operationReportService;
@Autowired
private ISysDepartService departService;
@Autowired
private IBusinessService businessService;
/**
* 功能描述: 运营日报进出水初始化
*/
......@@ -47,4 +60,31 @@ public class OperationReportController {
return result;
}
@GetMapping(value = "/operationMonthReport")
@CustomExceptionAnno(description = "报表:运营月报")
public Result<Object> operationMonthReportCtrl(@RequestParam Map<String,Object> paramsMap) {
// 请求参数
String departId = ConvertUtils.getString(paramsMap.get("departId"));
String startTime = ConvertUtils.getString(paramsMap.get("startTime"));
String endTime = ConvertUtils.getString(paramsMap.get("endTime"));
String[] departIdArray = departId.split(",");
// 翻译
Map<String, String> sysDepartDictMap = businessService.dictMap("sys_depart", null);
// 封装结果集
List<Map<String, Object>> resMapList = new ArrayList<>();
for (String tmpDepartId : departIdArray) {
String childDepartId = departService.getChildDepartId(tmpDepartId);
// 获取机构子集
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("startTime", startTime);
paramMap.put("endTime", endTime);
paramMap.put("departId", childDepartId);
Map<String, Object> resMap = operationReportService.dataAnalysisOfMonth(paramMap);
resMap.put("departId", tmpDepartId);
resMap.put("departName", sysDepartDictMap.get(tmpDepartId));
resMapList.add(resMap);
}
return Result.ok(resMapList);
}
}
......
......@@ -17,5 +17,5 @@ public interface IOperationReportService {
*/
ProductDataVO handeReportMonthData(String departIds,Integer year, Integer season,String startDate,String endDate);
Map<String, String> dataAnalysisOfMonth(Map<String, Object> paramMap);
Map<String, Object> dataAnalysisOfMonth(Map<String, Object> paramMap);
}
......
......@@ -13,6 +13,7 @@ import com.skua.modules.biz.IBusinessService;
import com.skua.modules.report.mapper.OperationReportMapper;
import com.skua.modules.report.service.IOperationReportService;
import com.skua.modules.report.vo.*;
import com.skua.tool.dfs.CaseWhen;
import com.skua.tool.util.DateUtils;
import com.skua.tool.util.DigitalUtils;
import com.skua.tool.util.JSUtils;
......@@ -220,25 +221,217 @@ public class OperationReportServiceImpl implements IOperationReportService {
}
@Override
public Map<String, String> dataAnalysisOfMonth(Map<String, Object> paramMap) {
public Map<String, Object> dataAnalysisOfMonth(Map<String, Object> paramMap) {
// 请求参数
String startTime = ConvertUtils.getString(paramMap.get("startTime"));
String endTime = ConvertUtils.getString(paramMap.get("endTime"));
List<String> timeList = DateUtils.intervalByDay(startTime, endTime, BusinessConstant.dateFormat.split("-")[0]);
List<String> timeList = DateUtils.intervalByDay(startTime, endTime, BusinessConstant.dateFormat.substring(0, 10));
// 同比时间
String[] timeArray = DateUtils.tbTime(startTime, endTime);
List<String> timeListTb = DateUtils.intervalByDay(timeArray[0], timeArray[1], BusinessConstant.dateFormat.substring(0, 10));
String departId = ConvertUtils.getString(paramMap.get("departId"));
List<String> departIdList = Arrays.asList(departId.split(","));
List<String> codeList = new ArrayList<String>(){{
// 污水(万吨) 水质水量日数据报表-出水量
add("");
// 翻译
Map<String, String> sysDepartDictMap = businessService.dictMap("sys_depart", departIdList);
Map<String, String[]> dictMap0 = new LinkedHashMap<String, String[]>(){{
// 污水水量
put("1816743130490388481", new String[]{"wssl", "10"});
// 收费水量
put("1818936220739293185", new String[]{"sfsl", "7"});
// 生产供水量
put("1818218432697643010", new String[]{"scgsl", "10"});
// 污泥处置量
put("1910571063704104961", new String[]{"wnczl", "7"});
// 实际水费
put("1912415992428384257", new String[]{"sjsf", "7"});
// 实际水量
put("1818936221372633089", new String[]{"sjsl", "7"});
// 实际药费
put("1818936218910576642", new String[]{"sjyf", "7"});
// 实际电耗
put("1818936219699105793", new String[]{"sjdh", "7"});
// 实际药耗
put("1818936218491146241", new String[]{"sjyh", "7"});
}};
CaseWhen caseWhen0 = new CaseWhen();
for (Map.Entry<String, String[]> entry: dictMap0.entrySet()) {
String reitId = entry.getKey();
String alias = entry.getValue()[0];
int timeLength = Integer.parseInt(entry.getValue()[1]);
caseWhen0.selectCaseWhen("reit_id = '" + reitId + "' and data_time >= '" + startTime.substring(0, timeLength) + "' and data_time <= '" + endTime.substring(0, timeLength) + "'", "item_value", "0", alias);
caseWhen0.selectCaseWhen("reit_id = '" + reitId + "' and data_time >= '" + timeArray[0].substring(0, timeLength) + "' and data_time <= '" + timeArray[1].substring(0, timeLength) + "'", "item_value", "0", "tb_" + alias);
}
QueryWrapper<?> queryWrapper0 = new QueryWrapper<>();
queryWrapper0.in("", codeList)
.ge("", startTime)
.le("", endTime)
.groupBy("f_report_itemv.depart_id");
List<Map<String, Object>> queryMapList0 = baseService.queryForList("", queryWrapper0);
queryWrapper0.in("reit_id", dictMap0.keySet())
.in("depart_id", departIdList);
Map<String, Object> queryMap0 = baseService.queryForMap("select " + caseWhen0.print() + " from f_report_itemv", queryWrapper0);
// 年度目标
Map<String, String> dictMap1 = new LinkedHashMap<String, String>(){{
// 目标水量
put("target_water", "mbsl");
// 目标水费
put("target_cost", "mbsf");
// 目标电费
put("target_power_cost", "mbdf");
// 目标药费
put("target_drug * target_water", "mbyf");
// 目标电耗
put("target_power", "mbdh");
// 目标药耗
put("target_drug", "mbyh");
}};
QueryWrapper<?> queryWrapper1 = new QueryWrapper<>();
queryWrapper1.in("depart_id", departIdList);
CaseWhen caseWhen1 = new CaseWhen();
for (Map.Entry<String, String> entry: dictMap1.entrySet()) {
caseWhen1.selectCaseWhen("target_year = '" + endTime.substring(0, 4) + "'", entry.getKey(), "0", entry.getValue());
caseWhen1.selectCaseWhen("target_year = '" + timeArray[1].substring(0, 4) + "'", entry.getKey(), "0", "tb_" + entry.getValue());
}
Map<String, Object> queryMap1 = baseService.queryForMap("select " + caseWhen1.print() + " from report_target_config", queryWrapper1);
// 实际电费信息
Map<String, String> dictMap2 = new LinkedHashMap<String, String>(){{
// 实际电费
put("cost", "sjdf");
}};
QueryWrapper<?> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.in("depart_id", departIdList);
CaseWhen caseWhen2 = new CaseWhen();
for (Map.Entry<String, String> entry: dictMap2.entrySet()) {
caseWhen2.selectCaseWhen("month >= '" + startTime.substring(0, 7) + "' and month <= '" + endTime.substring(0, 7) + "'", entry.getKey(), "0", entry.getValue());
caseWhen2.selectCaseWhen("month >= '" + timeArray[0].substring(0, 7) + "' and month <= '" + timeArray[1].substring(0, 7) + "'", entry.getKey(), "0", "tb_" + entry.getValue());
}
Map<String, Object> queryMap2 = baseService.queryForMap("select " + caseWhen2.print() + " from report_electric_cost", queryWrapper2);
// 详情信息
QueryWrapper<?> queryWrapper3 = new QueryWrapper<>();
queryWrapper3.in("aaa.depart_id", departIdList);
String reitIdStr = dictMap0.keySet().stream().map(key -> "'" + key + "'").collect(Collectors.joining(","));
String departIdStr = departIdList.stream().map(key -> "'" + key + "'").collect(Collectors.joining(","));
String sql0 = "(select depart_id, " + caseWhen0.print() + " from f_report_itemv where reit_id in (" + reitIdStr + ") and depart_id in (" + departIdStr + ") group by depart_id) as aaa";
String sq1 = "(select depart_id, " + caseWhen1.print() + " from report_target_config where depart_id in (" + departIdStr + ") group by depart_id) as bbb";
String sql2 = "(select depart_id, " + caseWhen2.print() + " from report_electric_cost where depart_id in (" + departIdStr + ") group by depart_id) as ccc";
List<Map<String, Object>> queryMapList3 = baseService.queryForList("select aaa.*, bbb.*, ccc.* from " + sql0 + " left join " + sq1 + " on aaa.depart_id = bbb.depart_id left join " + sql2 + " on bbb.depart_id = ccc.depart_id", queryWrapper3);
// 详情-水费
List<Map<String, Object>> sfwwcList = new ArrayList<>();
List<Map<String, Object>> sfywcList = new ArrayList<>();
List<Map<String, Object>> sjslxjList = new ArrayList<>();
List<Map<String, Object>> dfcbList = new ArrayList<>();
List<Map<String, Object>> yfcbList = new ArrayList<>();
List<Map<String, Object>> dhcbList = new ArrayList<>();
List<Map<String, Object>> yhcbList = new ArrayList<>();
for (Map<String, Object> item: queryMapList3) {
String tmpDepartId = ConvertUtils.getString(item.get("depart_id"));
String tmpDepartName = sysDepartDictMap.get(tmpDepartId);
// 水费收入 未完成
if (ConvertUtils.getDouble(item.get("sjsf"), 0D) / ConvertUtils.getDouble(item.get("mbsf"), 0D) < 0.25) {
sfwwcList.add(new LinkedHashMap<String, Object>(){{
put("departId", tmpDepartId);
put("departName", tmpDepartName);
put("sjsf", item.get("sjsf"));
put("mbsf", item.get("mbsf"));
put("reason", "");
}});
}
// 水费已完成
if (ConvertUtils.getDouble(item.get("sjsf"), 0D) >= ConvertUtils.getDouble(item.get("mbsf"), 0D)) {
sfywcList.add(new LinkedHashMap<String, Object>(){{
put("departId", tmpDepartId);
put("departName", tmpDepartName);
put("sjsf", item.get("sjsf"));
put("mbsf", item.get("mbsf"));
}});
}
// 实际水量同比下降
if (ConvertUtils.getDouble(item.get("sjsl"), 0D) < ConvertUtils.getDouble(item.get("tb_sjsl"), 0D)) {
sjslxjList.add(new LinkedHashMap<String, Object>(){{
put("departId", tmpDepartId);
put("departName", tmpDepartName);
put("sjsl", item.get("sjsl"));
put("tb_sjsl", item.get("tb_sjsl"));
put("reason", "");
}});
}
// 电费超标
if (ConvertUtils.getDouble(item.get("sjdf"), 0D) > ConvertUtils.getDouble(item.get("mbdf"), 0D)) {
dfcbList.add(new LinkedHashMap<String, Object>(){{
put("departId", tmpDepartId);
put("departName", tmpDepartName);
put("sjdf", item.get("sjdf"));
put("mbdf", item.get("mbdf"));
put("reason", "");
}});
}
// 药费超标
if (ConvertUtils.getDouble(item.get("sjyf"), 0D) > ConvertUtils.getDouble(item.get("mbyf"), 0D)) {
yfcbList.add(new LinkedHashMap<String, Object>(){{
put("departId", tmpDepartId);
put("departName", tmpDepartName);
put("sjyf", item.get("sjyf"));
put("mbyf", item.get("mbyf"));
put("reason", "");
}});
}
// 电耗超标
if (ConvertUtils.getDouble(item.get("sjdh"), 0D) > ConvertUtils.getDouble(item.get("mbdh"), 0D)) {
dhcbList.add(new LinkedHashMap<String, Object>(){{
put("departId", tmpDepartId);
put("departName", tmpDepartName);
put("sjdh", item.get("sjdh"));
put("mbdh", item.get("mbdh"));
put("reason", "");
}});
}
// 药耗超标
if (ConvertUtils.getDouble(item.get("sjyh"), 0D) > ConvertUtils.getDouble(item.get("mbyh"), 0D)) {
yhcbList.add(new LinkedHashMap<String, Object>(){{
put("departId", tmpDepartId);
put("departName", tmpDepartName);
put("sjyh", item.get("sjyh"));
put("mbyh", item.get("mbyh"));
put("reason", "");
}});
}
}
// 重点工作推进情况
List<Map<String, Object>> priorityWorkItemList = new ArrayList<>(), hiddenDangerInspectionList = new ArrayList<>();
QueryWrapper<?> queryWrapper10 = new QueryWrapper<>();
queryWrapper10
.in("issue_type", Arrays.asList("1", "2"))
.eq("status", "2")
.ge("end_time", startTime.substring(0, 10))
.le("end_time", endTime.substring(0, 10))
.in("depart_id", departIdList);
List<Map<String, Object>> queryMapList10 = baseService.queryForList("select * from f_major_issues_process", queryWrapper10);
queryMapList10.forEach(item -> {
String issueType = ConvertUtils.getString(item.get("issue_type"));
Map<String, Object> entityMap = item.keySet().stream().collect(Collectors.toMap(StrUtil::toCamelCase, key -> (item.get(key) == null ? "" : item.get(key))));
entityMap.put("departName", sysDepartDictMap.get(item.get("depart_id")));
if ("1".equals(issueType)) {
priorityWorkItemList.add(entityMap);
} else if ("2".equals(issueType)) {
hiddenDangerInspectionList.add(entityMap);
}
});
// 封装结果集
Map<String, String> resMap = new LinkedHashMap<>();
Map<String, Object> resMap = new LinkedHashMap<>();
for (String key: queryMap0.keySet()) {
resMap.put(key, queryMap0.get(key));
if (key.startsWith("tb_")) {
resMap.put(key + "_avg", ConvertUtils.getDouble(queryMap0.get(key), 0) / timeListTb.size());
} else {
resMap.put(key + "_avg", ConvertUtils.getDouble(queryMap0.get(key), 0) / timeList.size());
}
}
resMap.putAll(queryMap1);
resMap.putAll(queryMap2);
resMap.put("sfwwcList", sfwwcList);
resMap.put("sfywcList", sfywcList);
resMap.put("sjslxjList", sjslxjList);
resMap.put("dfcbList", dfcbList);
resMap.put("yfcbList", yfcbList);
resMap.put("dhcbList", dhcbList);
resMap.put("yhcbList", yhcbList);
resMap.put("priorityWorkItemList", priorityWorkItemList);
resMap.put("hiddenDangerInspectionList", hiddenDangerInspectionList);
return resMap;
}
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!