|
@@ -1,26 +1,24 @@
|
|
|
package com.usky.fire.service.impl;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
-import com.usky.fire.domain.BaseCompany;
|
|
|
-import com.usky.fire.domain.DemReportData;
|
|
|
-import com.usky.fire.domain.DemReportInfo;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.usky.fire.domain.*;
|
|
|
import com.usky.fire.mapper.DemReportDataMapper;
|
|
|
-import com.usky.fire.service.BaseCompanyService;
|
|
|
-import com.usky.fire.service.DemReportDataService;
|
|
|
+import com.usky.fire.service.*;
|
|
|
import com.usky.common.mybatis.core.AbstractCrudService;
|
|
|
-import com.usky.fire.service.DemReportInfoService;
|
|
|
import com.usky.fire.service.config.pdf.MyHeaderFooter;
|
|
|
import com.usky.fire.service.config.pdf.Watermark;
|
|
|
+import com.usky.fire.service.vo.DemReportDataVo;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.io.File;
|
|
|
import java.io.FileOutputStream;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
import java.time.LocalDateTime;
|
|
|
-import java.util.Calendar;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.*;
|
|
|
+
|
|
|
import com.itextpdf.text.*;
|
|
|
import com.itextpdf.text.pdf.*;
|
|
|
import com.itextpdf.text.pdf.draw.DottedLineSeparator;
|
|
@@ -28,6 +26,7 @@ import com.itextpdf.text.pdf.draw.LineSeparator;
|
|
|
|
|
|
import java.io.File;
|
|
|
import java.io.FileOutputStream;
|
|
|
+import java.util.List;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
@@ -45,6 +44,12 @@ public class DemReportDataServiceImpl extends AbstractCrudService<DemReportDataM
|
|
|
@Autowired
|
|
|
private DemReportInfoService demReportInfoService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private BaseDeviceService baseDeviceService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private BaseDeviceStatusService baseDeviceStatusService;
|
|
|
+
|
|
|
@Override
|
|
|
public void regularReportData() {
|
|
|
try {
|
|
@@ -56,7 +61,8 @@ public class DemReportDataServiceImpl extends AbstractCrudService<DemReportDataM
|
|
|
Document document = new Document(PageSize.A4);// 建立一个Document对象
|
|
|
|
|
|
// 2.建立一个书写器(Writer)与document对象关联
|
|
|
- File file = new File("/var/www/usky-file/202303/"+now.get(Calendar.YEAR)+now.get(Calendar.MONTH)+baseCompanies.get(i).getCompanyId()+".pdf");
|
|
|
+ File file =
|
|
|
+ new File("/var/www/usky-file/"+now.get(Calendar.YEAR)+"0"+now.get(Calendar.MONTH+1)+"/"+now.get(Calendar.YEAR)+now.get(Calendar.MONTH)+baseCompanies.get(i).getCompanyId()+".pdf");
|
|
|
// File file = new File("D:\\"+now.get(Calendar.YEAR)+now.get(Calendar.MONTH)+baseCompanies.get(i).getCompanyId()+".pdf");
|
|
|
file.createNewFile();
|
|
|
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(file));
|
|
@@ -64,13 +70,128 @@ public class DemReportDataServiceImpl extends AbstractCrudService<DemReportDataM
|
|
|
writer.setPageEvent(new MyHeaderFooter());// 页眉/页脚
|
|
|
// 3.打开文档
|
|
|
document.open();
|
|
|
- document.addTitle("Title@PDF-Java");// 标题
|
|
|
- document.addAuthor("Author@umiz");// 作者
|
|
|
- document.addSubject("Subject@iText pdf sample");// 主题
|
|
|
- document.addKeywords("Keywords@iTextpdf");// 关键字
|
|
|
- document.addCreator("Creator@umiz`s");// 创建者
|
|
|
+ document.addTitle("fire report");// 标题
|
|
|
+ document.addAuthor("mhzd");// 作者
|
|
|
+// document.addSubject("Subject@iText pdf sample");// 主题
|
|
|
+// document.addKeywords("Keywords@iTextpdf");// 关键字
|
|
|
+// document.addCreator("Creator@umiz`s");// 创建者
|
|
|
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ // 上月起始
|
|
|
+ Calendar lastMonthFirstDateCal = Calendar.getInstance();
|
|
|
+ lastMonthFirstDateCal.add(Calendar.MONTH, -1);
|
|
|
+ lastMonthFirstDateCal.set(Calendar.DAY_OF_MONTH, 1);
|
|
|
+ String lastMonthFirstTime = format.format(lastMonthFirstDateCal.getTime());
|
|
|
+ // 上月末尾
|
|
|
+ Calendar lastMonthEndDateCal = Calendar.getInstance();
|
|
|
+ lastMonthEndDateCal.add(Calendar.MONTH, -1);
|
|
|
+ lastMonthEndDateCal.set(
|
|
|
+ Calendar.DAY_OF_MONTH, lastMonthEndDateCal.getActualMaximum(Calendar.DAY_OF_MONTH));
|
|
|
+ String lastMonthEndTime = format.format(lastMonthEndDateCal.getTime());
|
|
|
+ int fireDeviceNum = baseDeviceService.deviceCount(baseCompanies.get(i).getCompanyId(),1);
|
|
|
+ int smokeDeviceNum = baseDeviceService.deviceCount(baseCompanies.get(i).getCompanyId(),3);
|
|
|
+ int fireDeviceOfflineNum =
|
|
|
+ baseDeviceStatusService.deviceStatusByTypeCount(baseCompanies.get(i).getCompanyId(),0,1);
|
|
|
+ int smokeDeviceOfflineNum =
|
|
|
+ baseDeviceStatusService.deviceStatusByTypeCount(baseCompanies.get(i).getCompanyId(),0,3);
|
|
|
+ int fireDeviceHitchNum =
|
|
|
+ baseDeviceStatusService.deviceStatusByTypeCount(baseCompanies.get(i).getCompanyId(),2,1);
|
|
|
+ int smokeDeviceHitchNum =
|
|
|
+ baseDeviceStatusService.deviceStatusByTypeCount(baseCompanies.get(i).getCompanyId(),2,3);
|
|
|
+ int fireAlarmOfflineNum = fireDeviceOfflineNum+smokeDeviceOfflineNum;
|
|
|
+ int fireAlarmHitchNum = fireDeviceHitchNum+smokeDeviceHitchNum;
|
|
|
+ int fireAlarmNum = fireDeviceNum+smokeDeviceNum;
|
|
|
+ double fireOnlineRate = 0;
|
|
|
+ double fireFaultRate = 0;
|
|
|
+ if (fireAlarmNum>0){
|
|
|
+ fireOnlineRate = 1-Math.round(fireAlarmOfflineNum/fireAlarmNum*100)*0.01;
|
|
|
+ fireFaultRate = Math.round(fireAlarmHitchNum/fireAlarmNum*100)*0.01;
|
|
|
+ }
|
|
|
+ LambdaQueryWrapper<BaseDevice> queryWrapper2 = Wrappers.lambdaQuery();
|
|
|
+ queryWrapper2.select(BaseDevice::getId, BaseDevice::getDeviceCode)
|
|
|
+ .eq(BaseDevice::getCompanyId, baseCompanies.get(i).getCompanyId())
|
|
|
+ .in(BaseDevice::getDeviceType, 2,5,6)
|
|
|
+ .notLike(BaseDevice::getDeviceName, "风机");
|
|
|
+ List<BaseDevice> list2 = baseDeviceService.list(queryWrapper2);
|
|
|
+ double waterOnlineRate = 0;
|
|
|
+ double waterFaultRate = 0;
|
|
|
+ if (CollectionUtils.isNotEmpty(list2)) {
|
|
|
+ List<String> deviceCodeList = new ArrayList<>();
|
|
|
+ for (int j = 0; j < list2.size(); j++) {
|
|
|
+ deviceCodeList.add(list2.get(j).getDeviceCode());
|
|
|
+ }
|
|
|
+ List<BaseDeviceStatus> list3 = new ArrayList<>();
|
|
|
+ List<BaseDeviceStatus> list3l = new ArrayList<>();
|
|
|
+ if (CollectionUtils.isNotEmpty(deviceCodeList)) {
|
|
|
+ LambdaQueryWrapper<BaseDeviceStatus> queryWrapper3 = Wrappers.lambdaQuery();
|
|
|
+ queryWrapper3.select(BaseDeviceStatus::getId, BaseDeviceStatus::getDeviceCode)
|
|
|
+ .in(BaseDeviceStatus::getDeviceCode, deviceCodeList)
|
|
|
+ .ne(BaseDeviceStatus::getDeviceStatus,0);
|
|
|
+ list3 = baseDeviceStatusService.list(queryWrapper3);
|
|
|
+ waterOnlineRate = Math.round(list3.size()/list2.size()*100)*0.01;
|
|
|
+ LambdaQueryWrapper<BaseDeviceStatus> queryWrapper3l = Wrappers.lambdaQuery();
|
|
|
+ queryWrapper3l.select(BaseDeviceStatus::getId, BaseDeviceStatus::getDeviceCode)
|
|
|
+ .in(BaseDeviceStatus::getDeviceCode, deviceCodeList)
|
|
|
+ .eq(BaseDeviceStatus::getDeviceStatus,2);
|
|
|
+ list3l = baseDeviceStatusService.list(queryWrapper3l);
|
|
|
+ waterFaultRate = Math.round(list3l.size()/list2.size()*100)*0.01;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ LambdaQueryWrapper<BaseDevice> queryWrapper4 = Wrappers.lambdaQuery();
|
|
|
+ queryWrapper4.select(BaseDevice::getId, BaseDevice::getDeviceCode)
|
|
|
+ .eq(BaseDevice::getCompanyId, baseCompanies.get(i).getCompanyId())
|
|
|
+ .eq(BaseDevice::getDeviceType, 6)
|
|
|
+ .like(BaseDevice::getDeviceName, "风机");
|
|
|
+ List<BaseDevice> list4 = baseDeviceService.list(queryWrapper4);
|
|
|
+ double smokeOnlineRate = 0;
|
|
|
+ double smokeFaultRate = 0;
|
|
|
+ if (CollectionUtils.isNotEmpty(list4)) {
|
|
|
+ List<String> deviceCodeList = new ArrayList<>();
|
|
|
+ for (int j = 0; j < list4.size(); j++) {
|
|
|
+ deviceCodeList.add(list4.get(j).getDeviceCode());
|
|
|
+ }
|
|
|
+ List<BaseDeviceStatus> list5 = new ArrayList<>();
|
|
|
+ List<BaseDeviceStatus> list5l = new ArrayList<>();
|
|
|
+ if (CollectionUtils.isNotEmpty(deviceCodeList)) {
|
|
|
+ LambdaQueryWrapper<BaseDeviceStatus> queryWrapper5 = Wrappers.lambdaQuery();
|
|
|
+ queryWrapper5.select(BaseDeviceStatus::getId, BaseDeviceStatus::getDeviceCode)
|
|
|
+ .in(BaseDeviceStatus::getDeviceCode, deviceCodeList)
|
|
|
+ .ne(BaseDeviceStatus::getDeviceStatus,0);
|
|
|
+ list5 = baseDeviceStatusService.list(queryWrapper5);
|
|
|
+ smokeOnlineRate = Math.round(list5.size()/list4.size())*0.01;
|
|
|
+ LambdaQueryWrapper<BaseDeviceStatus> queryWrapper5l = Wrappers.lambdaQuery();
|
|
|
+ queryWrapper5l.select(BaseDeviceStatus::getId, BaseDeviceStatus::getDeviceCode)
|
|
|
+ .in(BaseDeviceStatus::getDeviceCode, deviceCodeList)
|
|
|
+ .ne(BaseDeviceStatus::getDeviceStatus,2);
|
|
|
+ list5l = baseDeviceStatusService.list(queryWrapper5l);
|
|
|
+ smokeFaultRate = Math.round(list5l.size()/list4.size())*0.01;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ int efireDeviceNum = baseDeviceService.deviceCount(baseCompanies.get(i).getCompanyId(),7);
|
|
|
+ int efireDeviceOfflineNum =
|
|
|
+ baseDeviceStatusService.deviceStatusByTypeCount(baseCompanies.get(i).getCompanyId(),0,7);
|
|
|
+ int efireDeviceHitchNum =
|
|
|
+ baseDeviceStatusService.deviceStatusByTypeCount(baseCompanies.get(i).getCompanyId(),2,7);
|
|
|
+ double efOnlineRate = 0;
|
|
|
+ double efFaultRate = 0;
|
|
|
+ if (efireDeviceNum>0){
|
|
|
+ efOnlineRate = 1-Math.round(efireDeviceOfflineNum/efireDeviceNum*100)*0.01;
|
|
|
+ efFaultRate = Math.round(efireDeviceHitchNum/efireDeviceNum*100)*0.01;
|
|
|
+ }
|
|
|
+ DemReportDataVo demReportDataVo = new DemReportDataVo();
|
|
|
+ demReportDataVo.setLastMonthFirstTime(lastMonthFirstTime);
|
|
|
+ demReportDataVo.setLastMonthEndTime(lastMonthEndTime);
|
|
|
+ demReportDataVo.setFireOnlineRate(fireOnlineRate);
|
|
|
+ demReportDataVo.setFireFaultRate(fireFaultRate);
|
|
|
+ demReportDataVo.setWaterOnlineRate(waterOnlineRate);
|
|
|
+ demReportDataVo.setWaterFaultRate(waterFaultRate);
|
|
|
+ demReportDataVo.setSmokeOnlineRate(smokeOnlineRate);
|
|
|
+ demReportDataVo.setSmokeFaultRate(smokeFaultRate);
|
|
|
+ demReportDataVo.setEfOnlineRate(efOnlineRate);
|
|
|
+ demReportDataVo.setEfFaultRate(efFaultRate);
|
|
|
|
|
|
// 4.向文档中添加内容
|
|
|
+ BaseCompany baseCompany = baseCompanies.get(i);
|
|
|
+
|
|
|
this.generatePDF(document,baseCompanies.get(i).getCompanyName());
|
|
|
|
|
|
// 5.关闭文档
|