5dca25a6 张雷

替换积木报表

1 个父辈 81c652f7
......@@ -248,9 +248,9 @@
</select>
<select id="getTagDataList" resultType="com.skua.modules.system.datestandard.entity.SysMonitorMetricInfo">
SELECT
id,
depart_id,
metric_uid_tag
m.id,
m.depart_id,
m.metric_uid_tag
FROM
sys_monitor_metric_info m
WHERE
......@@ -258,5 +258,10 @@
'CSNH3N','CSCOD','CSLJLL','CSLL','CSPH','CSSS','CSTN','CSTP',
'JSNH3N','JSCOD','JSLJLL','JSLL','JSPH','JSSS','JSTN','JSTP'
)
GROUP BY
m.metric_uid_tag,
m.depart_id
ORDER BY
m.depart_id
</select>
</mapper>
......
......@@ -27,6 +27,49 @@ public class DateUtils {
return sdf.format(str2Date(date,format));
}
public static ThreadLocal<SimpleDateFormat> date_sdf = new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("yyyy-MM-dd");
}
};
public static ThreadLocal<SimpleDateFormat> yyyyMMdd = new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("yyyyMMdd");
}
};
public static ThreadLocal<SimpleDateFormat> date_sdf_wz = new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("yyyy年MM月dd日");
}
};
public static ThreadLocal<SimpleDateFormat> time_sdf = new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("yyyy-MM-dd HH:mm");
}
};
public static ThreadLocal<SimpleDateFormat> yyyymmddhhmmss = new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("yyyyMMddHHmmss");
}
};
public static ThreadLocal<SimpleDateFormat> short_time_sdf = new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("HH:mm");
}
};
public static ThreadLocal<SimpleDateFormat> datetimeFormat = new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
}
};
public static void main(String[] args) {
System.out.println( formatDate("2024-01","yyyy-MM"));
}
......
......@@ -60,7 +60,7 @@ public class QuartzJobController {
/**
* 分页列表查询
*
*
* @param quartzJob
* @param pageNo
* @param pageSize
......@@ -81,7 +81,7 @@ public class QuartzJobController {
/**
* 添加定时任务
*
*
* @param quartzJob
* @return
*/
......@@ -107,7 +107,7 @@ public class QuartzJobController {
/**
* 更新定时任务
*
*
* @param quartzJob
* @return
*/
......@@ -134,7 +134,7 @@ public class QuartzJobController {
/**
* 通过id删除
*
*
* @param id
* @return
*/
......@@ -156,7 +156,7 @@ public class QuartzJobController {
/**
* 批量删除
*
*
* @param ids
* @return
*/
......@@ -177,7 +177,7 @@ public class QuartzJobController {
/**
* 暂停定时任务
*
*
* @param job
* @return
*/
......@@ -201,7 +201,7 @@ public class QuartzJobController {
/**
* 启动定时任务
*
*
* @param job
* @return
*/
......@@ -219,7 +219,7 @@ public class QuartzJobController {
/**
* 通过id查询
*
*
* @param id
* @return
*/
......@@ -238,7 +238,7 @@ public class QuartzJobController {
/**
* 导出excel
*
*
* @param request
* @param response
*/
......@@ -259,7 +259,7 @@ public class QuartzJobController {
/**
* 通过excel导入数据
*
*
* @param request
* @param response
* @return
......@@ -293,4 +293,24 @@ public class QuartzJobController {
}
return Result.error("文件导入失败!");
}
/**
* 立即执行
* @param id
* @return
*/
@GetMapping("/execute")
public Result<?> execute(@RequestParam(name = "id", required = true) String id) {
QuartzJob quartzJob = quartzJobService.getById(id);
if (quartzJob == null) {
return Result.error("未找到对应实体");
}
try {
quartzJobService.execute(quartzJob);
} catch (Exception e) {
log.info("定时任务 立即执行失败>>"+e.getMessage());
return Result.error("执行失败!");
}
return Result.ok("执行成功!");
}
}
......
......@@ -21,4 +21,6 @@ public interface IQuartzJobService extends IService<QuartzJob> {
boolean deleteAndStopJob(QuartzJob quartzJob);
boolean resumeJob(QuartzJob quartzJob);
void execute(QuartzJob quartzJob) throws Exception;
}
......
package com.skua.modules.quartz.service.impl;
import java.util.Date;
import java.util.List;
import com.skua.core.constant.CommonConstant;
......@@ -7,16 +8,8 @@ import com.skua.core.exception.JeecgBootException;
import com.skua.modules.quartz.entity.QuartzJob;
import com.skua.modules.quartz.mapper.QuartzJobMapper;
import com.skua.modules.quartz.service.IQuartzJobService;
import org.quartz.CronScheduleBuilder;
import org.quartz.CronTrigger;
import org.quartz.Job;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.JobKey;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.TriggerBuilder;
import org.quartz.TriggerKey;
import com.skua.tool.util.DateUtils;
import org.quartz.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -34,6 +27,10 @@ public class QuartzJobServiceImpl extends ServiceImpl<QuartzJobMapper, QuartzJob
private QuartzJobMapper quartzJobMapper;
@Autowired
private Scheduler scheduler;
/**
* 立即执行的任务分组
*/
private static final String JOB_TEST_GROUP = "test_group";
@Override
public List<QuartzJob> findByJobClassName(String jobClassName) {
......@@ -65,9 +62,30 @@ public class QuartzJobServiceImpl extends ServiceImpl<QuartzJobMapper, QuartzJob
return this.updateById(quartzJob);
}
@Override
public void execute(QuartzJob quartzJob) throws Exception {
String jobName = quartzJob.getJobClassName().trim();
Date startDate = new Date();
String ymd = DateUtils.date2Str(startDate, DateUtils.yyyymmddhhmmss.get());
String identity = jobName + ymd;
//3秒后执行 只执行一次
startDate.setTime(startDate.getTime()+3000L);
// 定义一个Trigger
SimpleTrigger trigger = (SimpleTrigger)TriggerBuilder.newTrigger()
.withIdentity(identity, JOB_TEST_GROUP)
.startAt(startDate)
.build();
// 构建job信息
JobDetail jobDetail = JobBuilder.newJob(getClass(jobName).getClass()).withIdentity(identity).usingJobData("parameter", quartzJob.getParameter()).build();
// 将trigger和 jobDetail 加入这个调度
scheduler.scheduleJob(jobDetail, trigger);
// 启动scheduler
scheduler.start();
}
/**
* 编辑&启停定时任务
* @throws SchedulerException
* @throws SchedulerException
*/
@Override
public boolean editAndScheduleJob(QuartzJob quartzJob) throws SchedulerException {
......@@ -92,7 +110,7 @@ public class QuartzJobServiceImpl extends ServiceImpl<QuartzJobMapper, QuartzJob
/**
* 添加定时任务
*
*
* @param jobClassName
* @param cronExpression
* @param parameter
......@@ -123,7 +141,7 @@ public class QuartzJobServiceImpl extends ServiceImpl<QuartzJobMapper, QuartzJob
/**
* 删除定时任务
*
*
* @param jobClassName
*/
private void schedulerDelete(String jobClassName) {
......
package com.skua.modules.custom.handle.impl;
import com.skua.common.constant.ReportConstant;
import com.skua.common.report.ReportViewUtil;
import com.skua.common.report.entity.ValueEntity;
import com.skua.core.util.ConvertUtils;
import com.skua.modules.common.service.ICommonSqlService;
import com.skua.modules.custom.handle.ICustomHandle;
import com.skua.modules.custom.service.IFCustomReportDatasetService;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.*;
/**
* <pre>
* 环境统计季、年报自定义逻辑
* </pre>
* @author zhanglei
* @version V0.1, 2024年11月17日 上午9:40:17
*/
@Component("hjtjReportHandle")
public class HjtjReportHandle implements ICustomHandle{
@Autowired
private IFCustomReportDatasetService fCustomReportDatasetService;
@Override
public Map<String, List<Map<String, ValueEntity>>> buildDataMap(String reportId, String startTime, String endTime,
String departId,String indexCode) {
Map<String,List<Map<String,ValueEntity>>> dataMap = new HashMap<String,List<Map<String,ValueEntity>>>();
//获取数据集
//获取填报数据及报表数据项信息,组装报表所需数据机构
List<Map<String,ValueEntity>> list = new ArrayList<Map<String,ValueEntity>>();
//根据数据集id获取数据项及填报数据
Map<String,String> dataFieldDict = new HashMap<String,String>();
//表内容
dataFieldDict.put("CSL", "排水量");
dataFieldDict.put("YXTS", "运行天数");
dataFieldDict.put("YXSJ", "运行时间");
dataFieldDict.put("JSCOD", "化学需氧量进口浓度");
dataFieldDict.put("CSCOD", "化学需氧量出口浓度");
dataFieldDict.put("JSBOD", "生化需氧量进口浓度");
dataFieldDict.put("CSBOD", "生化需氧量出口浓度");
dataFieldDict.put("JSTN", "总氮进口浓度");
dataFieldDict.put("CSTN", "总氮出口浓度");
dataFieldDict.put("JSNH3N", "氨氮进口浓度");
dataFieldDict.put("CSNH3N", "氨氮出口浓度");
dataFieldDict.put("JSTP", "总磷进口浓度");
dataFieldDict.put("CSTP", "总磷出口浓度");
dataFieldDict.put("HDL", "用电量");
dataFieldDict.put("WSCLNL", "污水处理能力");
dataFieldDict.put("WSSJCLNL", "污水实际处理能力");
dataFieldDict.put("WNCSL", "污泥产生量");
dataFieldDict.put("WNHSL", "污泥含水率");
dataFieldDict.put("WNCLL", "污泥处理量");
dataFieldDict.put("WNZCL", "污泥贮存量");
String dataViewName9bff = ReportViewUtil.buildView(ReportConstant.view9bff,"", departId, startTime, endTime);
String dataViewName3a24 = ReportViewUtil.buildView(ReportConstant.view3a24,"", departId, startTime, endTime);
String dataViewName2119 = ReportViewUtil.buildView(ReportConstant.view2119,"", departId, startTime, endTime);
//结果集
List<Map<String, Object>> szMapList = fCustomReportDatasetService.queryHjtjReport(dataViewName9bff, dataViewName3a24, dataViewName2119,
startTime, endTime, departId);
list = changeDataList(szMapList,list,startTime,dataFieldDict);
dataMap.put("综合数据源", list);
return dataMap;
}
/**
* 构造LIST
* @param szMapList
* @param list
* @param startTime
* @param dataFieldDict
* @return
*/
private List<Map<String, ValueEntity>> changeDataList(List<Map<String, Object>> szMapList, List<Map<String, ValueEntity>> list,
String startTime, Map<String, String> dataFieldDict) {
for(Map<String,Object> valueMap : szMapList) {
Map<String,ValueEntity> handleMap = new HashMap<String,ValueEntity>();
//添加时间参数
ValueEntity startTimeValueEntity = new ValueEntity();
startTimeValueEntity.setValue(startTime);
handleMap.put("参数时间", startTimeValueEntity);
Set<String> keySet = valueMap.keySet();
for(String key : keySet) {
if(!StringUtils.isEmpty(dataFieldDict.get(key))) {
ValueEntity valueEntity = new ValueEntity();
valueEntity.setValue(ConvertUtils.getString(valueMap.get(key)));
handleMap.put(dataFieldDict.get(key),valueEntity);
}
}
list.add(handleMap);
}
return list;
}
@Override
public String buildWaterQualityAlarmValue(String reportId, String departId, String json) {
return json;
}
}
package com.skua.modules.custom.handle.impl;
import com.skua.common.constant.ReportConstant;
import com.skua.common.report.ReportViewUtil;
import com.skua.common.report.entity.ValueEntity;
import com.skua.core.util.ConvertUtils;
import com.skua.modules.common.service.ICommonSqlService;
import com.skua.modules.custom.handle.ICustomHandle;
import com.skua.modules.custom.service.IFCustomReportDatasetService;
import com.skua.modules.custom.vo.FCustomReportDatasetVO;
import com.skua.modules.dataAnalysis.service.IFactoryCenterService;
import com.skua.tool.util.DateUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.*;
/**
* <pre>
* 排污许可年报自定义逻辑
* </pre>
* @author zhanglei
* @version V0.1, 2024年11月17日 上午9:40:17
*/
@Component("pwxknbReportHandle")
public class PwxknbReportHandle implements ICustomHandle{
@Autowired
private IFCustomReportDatasetService fCustomReportDatasetService;
@Autowired
private ICommonSqlService commonSqlService;
@Override
public Map<String, List<Map<String, ValueEntity>>> buildDataMap(String reportId, String startTime, String endTime,
String departId,String indexCode) {
List<String> timeList = DateUtils.getMonthsBetween(startTime, endTime);
String departIds = commonSqlService.getChildDepartId(departId);
Map<String,List<Map<String,ValueEntity>>> dataMap = new HashMap<String,List<Map<String,ValueEntity>>>();
//获取数据集
//获取填报数据及报表数据项信息,组装报表所需数据机构
List<Map<String,ValueEntity>> list = new ArrayList<Map<String,ValueEntity>>();
//根据数据集id获取数据项及填报数据
Map<String,String> dataFieldDict = new HashMap<String,String>();
//添加厂站、时间字段
dataFieldDict.put("depart_name", "厂站名称");
dataFieldDict.put("time", "时间");
dataFieldDict.put("paramTime", "参数时间");
//表内容
dataFieldDict.put("flow", "流量SUM");
dataFieldDict.put("cod_avg", "化学需氧量AVG");
dataFieldDict.put("cod_sum", "化学需氧量SUM");
dataFieldDict.put("nh3n_avg", "氨氮AVG");
dataFieldDict.put("nh3n_sum", "氨氮SUM");
dataFieldDict.put("tn_avg", "总氮AVG");
dataFieldDict.put("tn_sum", "总氮SUM");
dataFieldDict.put("tp_avg", "总磷AVG");
dataFieldDict.put("tp_sum", "总磷SUM");
dataFieldDict.put("ss_avg", "SSAVG");
dataFieldDict.put("ss_sum", "SSSUM");
String dataViewName = ReportViewUtil.buildView(ReportConstant.view2119,"", departIds, startTime, endTime);
//结果集
List<Map<String, Object>> szMapList = fCustomReportDatasetService.queryPwxknbReport(dataViewName, startTime, endTime, departIds);
list = changeDataList(szMapList,list,startTime,dataFieldDict);
List<Map<String,ValueEntity>> dataList = new ArrayList<>();
for (String time: timeList) {
Map<String,ValueEntity> newDataMap = new HashMap<>();
ValueEntity valueEntity = new ValueEntity();
valueEntity.setValue(time);
newDataMap.put("时间", valueEntity);
for (Map<String,ValueEntity> dMap: list) {
if(time.equals(dMap.get("时间").getValue())){
newDataMap.putAll(dMap);
}
}
dataList.add(newDataMap);
}
dataMap.put("综合数据源", dataList);
return dataMap;
}
/**
* 构造LIST
* @param szMapList
* @param list
* @param startTime
* @param dataFieldDict
* @return
*/
private List<Map<String, ValueEntity>> changeDataList(List<Map<String, Object>> szMapList, List<Map<String, ValueEntity>> list,
String startTime, Map<String, String> dataFieldDict) {
for(Map<String,Object> valueMap : szMapList) {
Map<String,ValueEntity> handleMap = new HashMap<String,ValueEntity>();
//添加时间参数
ValueEntity startTimeValueEntity = new ValueEntity();
startTimeValueEntity.setValue(startTime);
handleMap.put("参数时间", startTimeValueEntity);
Set<String> keySet = valueMap.keySet();
for(String key : keySet) {
if(!StringUtils.isEmpty(dataFieldDict.get(key))) {
ValueEntity valueEntity = new ValueEntity();
valueEntity.setValue(ConvertUtils.getString(valueMap.get(key)));
handleMap.put(dataFieldDict.get(key),valueEntity);
}
}
list.add(handleMap);
}
return list;
}
@Override
public String buildWaterQualityAlarmValue(String reportId, String departId, String json) {
return json;
}
}
package com.skua.modules.custom.handle.impl;
import com.skua.common.constant.ReportConstant;
import com.skua.common.report.ReportViewUtil;
import com.skua.common.report.entity.ValueEntity;
import com.skua.core.util.ConvertUtils;
import com.skua.modules.common.service.ICommonSqlService;
import com.skua.modules.custom.handle.ICustomHandle;
import com.skua.modules.custom.service.IFCustomReportDatasetService;
import com.skua.tool.util.DateUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.*;
/**
* <pre>
* 排污许可月报自定义逻辑
* </pre>
* @author zhanglei
* @version V0.1, 2024年11月17日 上午9:40:17
*/
@Component("pwxkybReportHandle")
public class PwxkybReportHandle implements ICustomHandle{
@Autowired
private IFCustomReportDatasetService fCustomReportDatasetService;
@Autowired
private ICommonSqlService commonSqlService;
@Override
public Map<String, List<Map<String, ValueEntity>>> buildDataMap(String reportId, String startTime, String endTime,
String departId,String indexCode) {
List<String> timeList = DateUtils.getDatesBetween(startTime, endTime);
String departIds = commonSqlService.getChildDepartId(departId);
Map<String,List<Map<String,ValueEntity>>> dataMap = new HashMap<String,List<Map<String,ValueEntity>>>();
//获取数据集
//获取填报数据及报表数据项信息,组装报表所需数据机构
List<Map<String,ValueEntity>> list = new ArrayList<Map<String,ValueEntity>>();
//根据数据集id获取数据项及填报数据
Map<String,String> dataFieldDict = new HashMap<String,String>();
//添加厂站、时间字段
dataFieldDict.put("depart_name", "厂站名称");
dataFieldDict.put("time", "时间");
dataFieldDict.put("paramTime", "参数时间");
//表内容
dataFieldDict.put("flow", "流量SUM");
dataFieldDict.put("cod_avg", "化学需氧量AVG");
dataFieldDict.put("cod_sum", "化学需氧量SUM");
dataFieldDict.put("nh3n_avg", "氨氮AVG");
dataFieldDict.put("nh3n_sum", "氨氮SUM");
dataFieldDict.put("tn_avg", "总氮AVG");
dataFieldDict.put("tn_sum", "总氮SUM");
dataFieldDict.put("tp_avg", "总磷AVG");
dataFieldDict.put("tp_sum", "总磷SUM");
dataFieldDict.put("ss_avg", "SSAVG");
dataFieldDict.put("ss_sum", "SSSUM");
String dataViewName = ReportViewUtil.buildView(ReportConstant.view2119,"", departIds, startTime, endTime);
//结果集
List<Map<String, Object>> szMapList = fCustomReportDatasetService.queryPwxkybReport(dataViewName, startTime, endTime, departIds);
list = changeDataList(szMapList,list,startTime,dataFieldDict);
List<Map<String,ValueEntity>> dataList = new ArrayList<>();
for (String time: timeList) {
Map<String,ValueEntity> newDataMap = new HashMap<>();
ValueEntity valueEntity = new ValueEntity();
valueEntity.setValue(time);
newDataMap.put("时间", valueEntity);
for (Map<String,ValueEntity> dMap: list) {
if(time.equals(dMap.get("时间").getValue())){
newDataMap.putAll(dMap);
}
}
dataList.add(newDataMap);
}
dataMap.put("综合数据源", dataList);
return dataMap;
}
/**
* 构造LIST
* @param szMapList
* @param list
* @param startTime
* @param dataFieldDict
* @return
*/
private List<Map<String, ValueEntity>> changeDataList(List<Map<String, Object>> szMapList, List<Map<String, ValueEntity>> list,
String startTime, Map<String, String> dataFieldDict) {
for(Map<String,Object> valueMap : szMapList) {
Map<String,ValueEntity> handleMap = new HashMap<String,ValueEntity>();
//添加时间参数
ValueEntity startTimeValueEntity = new ValueEntity();
startTimeValueEntity.setValue(startTime);
handleMap.put("参数时间", startTimeValueEntity);
Set<String> keySet = valueMap.keySet();
for(String key : keySet) {
if(!StringUtils.isEmpty(dataFieldDict.get(key))) {
ValueEntity valueEntity = new ValueEntity();
valueEntity.setValue(ConvertUtils.getString(valueMap.get(key)));
handleMap.put(dataFieldDict.get(key),valueEntity);
}
}
list.add(handleMap);
}
return list;
}
@Override
public String buildWaterQualityAlarmValue(String reportId, String departId, String json) {
return json;
}
}
......@@ -151,4 +151,17 @@ public interface FCustomReportDatasetMapper extends BaseMapper<FCustomReportData
List<Map<String, Object>> queryScybReport(@Param(value="dataViewName4411") String dataViewName4411,
@Param(value="month") String month, @Param(value="departId") String departId);
List<Map<String, Object>> queryPwxknbReport(@Param(value="dataViewName") String dataViewName,
@Param(value="startTime") String startTime, @Param(value="endTime") String endTime,
@Param(value="departId") String departId);
List<Map<String, Object>> queryPwxkybReport(@Param(value="dataViewName") String dataViewName,
@Param(value="startTime") String startTime, @Param(value="endTime") String endTime,
@Param(value="departId") String departId);
List<Map<String, Object>> queryHjtjReport(@Param(value="dataViewName9bff") String dataViewName9bff, @Param(value="dataViewName3a24") String dataViewName3a24,
@Param(value="dataViewName2119") String dataViewName2119,
@Param(value="startTime") String startTime, @Param(value="endTime") String endTime,
@Param(value="departId") String departId);
}
......
......@@ -849,4 +849,154 @@
ORDER BY
v4.time DESC,d.depart_order ASC
</select>
<select id="queryPwxknbReport" resultType="java.util.HashMap">
SELECT
v4.time,
v4.CSZL AS tp_avg,
ROUND( v4.CSL * v4.CSZL / 1000000, 4 ) AS tp_sum,
v4.CSTN AS tn_avg,
ROUND( v4.CSL * v4.CSTN / 1000000, 4 ) AS tn_sum,
v4.CSAD AS nh3n_avg,
ROUND( v4.CSL * v4.CSAD / 1000000, 4 ) AS nh3n_sum,
v4.CSSS AS ss_avg,
ROUND( v4.CSL * v4.CSSS / 1000000, 4 ) AS ss_sum,
v4.CSCOD AS cod_avg,
ROUND( v4.CSL * v4.CSCOD / 1000000, 4 ) AS cod_sum,
ROUND(v4.CSL/10000,4) AS flow
FROM
(
SELECT
ROUND( AVG( v.CSZL ), 4 ) AS CSZL,
ROUND( AVG( v.CSTN ), 4 ) AS CSTN,
ROUND( AVG( v.CSAD ), 4 ) AS CSAD,
ROUND( AVG( v.CSSS ), 4 ) AS CSSS,
ROUND( AVG( v.CSCOD ), 2 ) AS CSCOD,
ROUND( SUM( v.CSL ) ) AS CSL,
LEFT ( v.time, 7 ) AS time
FROM
${dataViewName} v
WHERE
v.time LIKE '2024%'
AND v.depart_id IN
<foreach item="item" index="index" collection="departId.split(',')" open="(" separator="," close=")">
'${item}'
</foreach>
GROUP BY
LEFT ( v.time, 7 )
) v4
</select>
<select id="queryPwxkybReport" resultType="java.util.HashMap">
SELECT
v4.time,
v4.CSZL AS tp_avg,
ROUND( v4.CSL * v4.CSZL / 1000000, 4 ) AS tp_sum,
v4.CSTN AS tn_avg,
ROUND( v4.CSL * v4.CSTN / 1000000, 4 ) AS tn_sum,
v4.CSAD AS nh3n_avg,
ROUND( v4.CSL * v4.CSAD / 1000000, 4 ) AS nh3n_sum,
v4.CSSS AS ss_avg,
ROUND( v4.CSL * v4.CSSS / 1000000, 4 ) AS ss_sum,
v4.CSCOD AS cod_avg,
ROUND( v4.CSL * v4.CSCOD / 1000000, 4 ) AS cod_sum,
ROUND(v4.CSL/10000,4) AS flow
FROM
(
SELECT
ROUND( AVG( v.CSZL ), 4 ) AS CSZL,
ROUND( AVG( v.CSTN ), 4 ) AS CSTN,
ROUND( AVG( v.CSAD ), 4 ) AS CSAD,
ROUND( AVG( v.CSSS ), 4 ) AS CSSS,
ROUND( AVG( v.CSCOD ), 2 ) AS CSCOD,
ROUND( SUM( v.CSL ) ) AS CSL,
v.time
FROM
${dataViewName} v
WHERE
v.time LIKE '2024-12%'
AND v.depart_id IN
<foreach item="item" index="index" collection="departId.split(',')" open="(" separator="," close=")">
'${item}'
</foreach>
GROUP BY
v.time
) v4
</select>
<select id="queryHjtjReport" resultType="java.util.HashMap">
SELECT
f.pro_scale*v2.DAY_COUNT AS WSCLNL,
v2.CSL AS WSSJCLNL,
v2.DAY_COUNT AS YXTS,
v2.DAY_COUNT*24 AS YXSJ,
ROUND(v2.CSL/10000,2) CSL,
ROUND(v2.CSL/(v2.DAY_COUNT*24),2) CSL,
v9.JSCOD,
v9.CSCOD,
v9.JSNH3N,
v9.CSNH3N,
v9.CSTN,
v9.JSTN,
v9.JSTP,
v9.CSTP,
v9.CSBOD,
v9.JSBOD,
v3.DLHJ AS HDL,
v3.WNL AS WNCSL,
v3.WNHSL,
'' AS WNCLL,
'' AS WNZCL
FROM
sys_factory_info f
LEFT JOIN (
SELECT
SUM( v3.DLHJ ) AS DLHJ,
SUM( v3.WNL ) AS WNL,
AVG( v3.WNHSL ) AS WNHSL,
SUM( v3.WFCSL ) AS WFCSL,
SUM( v3.WFCZL ) AS WFCZL,
v3.depart_id
FROM
${dataViewName3a24} v3
WHERE
v3.depart_id = #{departId}
AND v3.time &gt;= #{startTime}
AND v3.time &lt;= #{endTime}
) v3 ON v3.depart_id = f.depart_id
LEFT JOIN (
SELECT
COUNT( v2.CSL ) AS DAY_COUNT,
SUM( v2.CSL ) AS CSL,
v2.depart_id
FROM
${dataViewName2119} v2
WHERE
v2.depart_id = #{departId}
AND v2.time &gt;= #{startTime}
AND v2.time &lt;= #{endTime}
) v2 ON v2.depart_id = f.depart_id
LEFT JOIN (
SELECT
ROUND( AVG( v.JSCODHY ), 2 ) AS JSCOD,
ROUND( AVG( v.CSCODHY ), 2 ) AS CSCOD,
ROUND( AVG( v.JSADHY ), 2 ) AS JSNH3N,
ROUND( AVG( v.CSADHY ), 2 ) AS CSNH3N,
ROUND( AVG( v.CSTNHY ), 2 ) AS CSTN,
ROUND( AVG( v.JSZDHY ), 2 ) AS JSTN,
ROUND( AVG( v.JSZLHY ), 2 ) AS JSTP,
ROUND( AVG( v.CSZLHY ), 2 ) AS CSTP,
ROUND( AVG( v.CSBODHY ), 2 ) AS CSBOD,
ROUND( AVG( v.JSBODHY ), 2 ) AS JSBOD,
v.depart_id
FROM
${dataViewName9bff} v
WHERE
v.depart_id = #{departId}
AND v.time &gt;= #{startTime}
AND v.time &lt;= #{endTime}
) v9 ON v9.depart_id = f.depart_id
WHERE
f.depart_id = #{departId}
</select>
</mapper>
......
......@@ -144,4 +144,11 @@ public interface IFCustomReportDatasetService extends IService<FCustomReportData
List<Map<String, Object>> queryHyReport(String dataViewName9bff, String startTime, String endTime, String departIds);
List<Map<String, Object>> queryScybReport(String dataViewName4411, String month, String departIds);
List<Map<String, Object>> queryPwxknbReport(String dataViewName, String startTime, String endTime, String departIds);
List<Map<String, Object>> queryPwxkybReport(String dataViewName, String startTime, String endTime, String departIds);
List<Map<String, Object>> queryHjtjReport(String dataViewName9bff,String dataViewName3a24,String dataViewName2119,
String startTime, String endTime, String departId);
}
......
......@@ -478,6 +478,26 @@ public class FCustomReportDatasetServiceImpl extends ServiceImpl<FCustomReportDa
return list;
}
@Override
public List<Map<String, Object>> queryPwxknbReport(String dataViewName, String startTime, String endTime, String departIds) {
List<Map<String, Object>> list = mapper.queryPwxknbReport(dataViewName, startTime, endTime, departIds);
return list;
}
@Override
public List<Map<String, Object>> queryPwxkybReport(String dataViewName, String startTime, String endTime, String departIds) {
List<Map<String, Object>> list = mapper.queryPwxkybReport(dataViewName, startTime, endTime, departIds);
return list;
}
@Override
public List<Map<String, Object>> queryHjtjReport(String dataViewName9bff, String dataViewName3a24, String dataViewName2119,
String startTime, String endTime, String departId) {
List<Map<String, Object>> list = mapper.queryHjtjReport(dataViewName9bff, dataViewName3a24, dataViewName2119,
startTime, endTime, departId);
return list;
}
/**转换为Map<部门编号,JnhbReportData> */
private Map<String,JnhbReportData> convertJnhbReportDataMap(List<JnhbReportData> dataList){// Map<部门编号,JnhbReportData>
Map<String,JnhbReportData> dataMap = new HashMap<>();
......
......@@ -131,6 +131,15 @@ public class FCustomReportInfoServiceImpl extends ServiceImpl<FCustomReportInfoM
public Workbook reportExport(String reportId,String startTime,String endTime,String departId,String sheetName,String indexCode) {
//获取自定义报表对象
FCustomReportInfo reportInfo = this.getById(reportId);
if("3".equals(reportInfo.getReportTimeQueryType())){//年
startTime = startTime + "-01";
endTime = endTime + "-31";
}else if("2".equals(reportInfo.getReportTimeQueryType())){//月
if("1".equals(reportInfo.getReportType())){
startTime = startTime + "-01";
endTime = endTime + "-31";
}
}
String customService = reportInfo.getCustomService();
Map<String,List<Map<String,ValueEntity>>> dataMap = new HashMap<String,List<Map<String,ValueEntity>>>();
//判断自定义处理逻辑是否填写,如果没填写自动使用默认逻辑
......
......@@ -35,6 +35,7 @@ public class DayDataSyncJob implements Job {
private ISysFactoryDeviceService sysFactoryDeviceService;
@Autowired
private IReportDataService reportDataService;
private DecimalFormat df = new DecimalFormat("######0.0000");
/**
* 若参数变量名修改 QuartzJobController中也需对应修改
......@@ -52,7 +53,7 @@ public class DayDataSyncJob implements Job {
yesterday = this.parameter;
}
log.info("开始同步【"+yesterday+"】数据入报表");
DecimalFormat df = new DecimalFormat("######0.0000");
List<SysFactoryDevice> deviceList = sysFactoryDeviceService.getList();
if(deviceList.size() > 0){
Map<String, String> tagMap = new HashMap<>();
......@@ -78,137 +79,27 @@ public class DayDataSyncJob implements Job {
}
Map<String, String> data = new HashMap<>();
if(dataMap.size() != 0){
if(tagMap.get("CSLL-"+departId)!=null){
if(dataMap.get(tagMap.get("CSLL-"+departId)) != null){
data.put("CSL", df.format(24*Double.parseDouble(dataMap.get(tagMap.get("CSLL-"+departId)).toString())));
}else{
data.put("CSL", "");
}
}else{
data.put("CSL", "");
}
if(tagMap.get("JSLL-"+departId)!=null){
if(dataMap.get(tagMap.get("JSLL-"+departId)) != null){
data.put("JSL", df.format(24*Double.parseDouble(dataMap.get(tagMap.get("JSLL-"+departId)).toString())));
}else{
data.put("JSL", "");
}
}else{
data.put("JSL", "");
}
if(tagMap.get("CSNH3N-"+departId)!=null){
if(dataMap.get(tagMap.get("CSNH3N-"+departId)) != null){
data.put("CSAD", dataMap.get(tagMap.get("CSNH3N-"+departId)).toString());
}else{
data.put("CSAD", "");
}
}else{
data.put("CSAD", "");
}
if(tagMap.get("CSCOD-"+departId)!=null){
if(dataMap.get(tagMap.get("CSCOD-"+departId)) != null){
data.put("CSCOD", dataMap.get(tagMap.get("CSCOD-"+departId)).toString());
}else{
data.put("CSCOD", "");
}
}else{
data.put("CSCOD", "");
}
if(tagMap.get("CSPH-"+departId)!=null){
if(dataMap.get(tagMap.get("CSPH-"+departId)) != null){
data.put("CSPH", dataMap.get(tagMap.get("CSPH-"+departId)).toString());
}else{
data.put("CSPH", "");
}
}else{
data.put("CSPH", "");
}
if(tagMap.get("CSSS-"+departId)!=null){
if(dataMap.get(tagMap.get("CSSS-"+departId)) != null){
data.put("CSSS", "");
}else{
data.put("CSSS", dataMap.get(tagMap.get("CSSS-"+departId)).toString());
}
}else{
data.put("CSSS", "");
}
if(tagMap.get("CSTN-"+departId)!=null){
if(dataMap.get(tagMap.get("CSTN-"+departId)) != null){
data.put("CSTN", dataMap.get(tagMap.get("CSTN-"+departId)).toString());
}else{
data.put("CSTN", "");
}
}else{
data.put("CSTN", "");
}
if(tagMap.get("CSTP-"+departId)!=null){
if(dataMap.get(tagMap.get("CSTP-"+departId)) != null){
data.put("CSZL", dataMap.get(tagMap.get("CSTP-"+departId)).toString());
}else{
data.put("CSZL", "");
}
}else{
data.put("CSZL", "");
}
if(tagMap.get("JSNH3N-"+departId)!=null){
if(dataMap.get(tagMap.get("JSNH3N-"+departId)) != null){
data.put("JSAD", dataMap.get(tagMap.get("JSNH3N-"+departId)).toString());
}else{
data.put("JSAD", "");
}
}else{
data.put("JSAD", "");
}
if(tagMap.get("JSCOD-"+departId)!=null){
if(dataMap.get(tagMap.get("JSCOD-"+departId)) != null){
data.put("JSCOD", dataMap.get(tagMap.get("JSCOD-"+departId)).toString());
}else{
data.put("JSCOD", "");
}
}else{
data.put("JSCOD", "");
}
if(tagMap.get("JSPH-"+departId)!=null){
if(dataMap.get(tagMap.get("JSPH-"+departId)) != null){
data.put("JSPH", dataMap.get(tagMap.get("JSPH-"+departId)).toString());
}else{
data.put("JSPH", "");
}
}else{
data.put("JSPH", "");
}
if(tagMap.get("JSSS-"+departId)!=null){
if(dataMap.get(tagMap.get("JSSS-"+departId)) != null){
data.put("JSSS", dataMap.get(tagMap.get("JSSS-"+departId)).toString());
}else{
data.put("JSSS", "");
}
}else{
data.put("JSSS", "");
}
if(tagMap.get("JSTN-"+departId)!=null){
if(dataMap.get(tagMap.get("JSTN-"+departId)) != null){
data.put("JSZD", dataMap.get(tagMap.get("JSTN-"+departId)).toString());
}else{
data.put("JSZD", "");
}
}else{
data.put("JSZD", "");
}
if(tagMap.get("JSTP-"+departId)!=null){
if(dataMap.get(tagMap.get("JSTP-"+departId)) != null){
data.put("JSZL", dataMap.get(tagMap.get("JSTP-"+departId)).toString());
}else{
data.put("JSZL", "");
}
}else{
data.put("JSZL", "");
}
//出水数据
data = setReportDataValue(data,departId,"CSLL","CSL",tagMap,dataMap);
data = setReportDataValue(data,departId,"CSNH3N","CSAD",tagMap,dataMap);
data = setReportDataValue(data,departId,"CSCOD","CSCOD",tagMap,dataMap);
data = setReportDataValue(data,departId,"CSPH","CSPH",tagMap,dataMap);
data = setReportDataValue(data,departId,"CSSS","CSSS",tagMap,dataMap);
data = setReportDataValue(data,departId,"CSTP","CSZL",tagMap,dataMap);
data = setReportDataValue(data,departId,"CSTN","CSTN",tagMap,dataMap);
//进水数据
data = setReportDataValue(data,departId,"JSLL","JSL",tagMap,dataMap);
data = setReportDataValue(data,departId,"JSNH3N","JSAD",tagMap,dataMap);
data = setReportDataValue(data,departId,"JSCOD","JSCOD",tagMap,dataMap);
data = setReportDataValue(data,departId,"JSPH","JSPH",tagMap,dataMap);
data = setReportDataValue(data,departId,"JSSS","JSSS",tagMap,dataMap);
data = setReportDataValue(data,departId,"JSTP","JSZL",tagMap,dataMap);
data = setReportDataValue(data,departId,"JSTN","JSZD",tagMap,dataMap);
data.put("departId", departId);
data.put("reportId", ReportConstant.view2119);
data.put("time",yesterday);
reportDataService.insertOrUpdateReportData(departId, yesterday, data, ReportConstant.view2119);
//reportDataService.insertOrUpdateReportData(departId, yesterday, data, ReportConstant.view2119);
log.info("========="+departId+"数据同步完成"+data);
}
}
}
......@@ -218,4 +109,28 @@ public class DayDataSyncJob implements Job {
}
}
/**
* 填充报表数据
* @param data
* @param departId
* @param tagCode
* @param itemCode
* @param tagMap
* @param dataMap
* @return
*/
private Map<String, String> setReportDataValue(Map<String, String> data, String departId, String tagCode, String itemCode,
Map<String, String> tagMap, Map<String, Object> dataMap) {
if(tagMap.get(tagCode+"-"+departId)!=null){
if(dataMap.get(tagMap.get(tagCode+"-"+departId)) != null){
data.put(itemCode, df.format(24*Double.parseDouble(dataMap.get(tagMap.get(tagCode+"-"+departId)).toString())));
}else{
data.put(itemCode, "");
}
}else{
data.put(itemCode, "");
}
return data;
}
}
......
package com.skua.modules.report.service;
import org.springframework.scheduling.annotation.Async;
import java.util.Map;
/**
......@@ -9,5 +10,6 @@ public interface IReportDataService {
void insertOrUpdateReportData(String departId, String time, Map<String, String> data, String reportId);
@Async
void syncUpdateScybData(String departId,String time);
}
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!