提交 f4fd4767 authored 作者: 邓砥奕's avatar 邓砥奕

添加大屏接口

上级 c732cbca
package com.tykj.dev.device.file.Controller;
import com.itextpdf.text.*;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Image;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.pdf.PdfWriter;
import com.tykj.dev.config.swagger.AutoDocument;
import com.tykj.dev.device.file.entity.FileRet;
......@@ -10,14 +13,14 @@ import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.jpa.repository.query.JpaEntityGraph;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.MultipartRequest;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
......@@ -126,7 +129,13 @@ public class FileController {
document.newPage();
float height = img.getHeight();
float width = img.getWidth();
int percent = getPercent(height, width);
int percent;
if (width>=height) {
percent = getPercent(height, width);
}
else {
percent = getPercent2(height,width);
}
img.setAlignment(Image.MIDDLE);
img.scalePercent(percent);
document.add(img);
......@@ -254,7 +263,7 @@ public class FileController {
/**
* 等比压缩,获取压缩百分比
* 等比压缩,获取压缩百分比(A4横向)
*
* @param height 图片的高度
* @param weight 图片的宽度
......@@ -270,4 +279,20 @@ public class FileController {
return Math.round(percent);
}
/**
* 等比压缩,获取压缩百分比(A4纵向)
*
* @param height 图片的高度
* @param weight 图片的宽度
* @return 压缩百分比
*/
private static int getPercent2(float height, float weight) {
float percent = 0.0F;
if (height > weight) {
percent = PageSize.A4.getHeight() / height * 100;
} else {
percent = PageSize.A4.getWidth() / weight * 100;
}
return Math.round(percent);
}
}
......@@ -212,10 +212,10 @@ public class RfidServiceImpl implements RfidService {
}
StringBuilder stringBuffer = new StringBuilder();
if (deviceType.length() <= 10) {
stringBuffer.append(deviceType);
for (int i = 0; i < 10 - deviceType.length(); i++) {
stringBuffer.append(" ");
stringBuffer.append("0");
}
stringBuffer.append(deviceType);
} else {
stringBuffer.append(deviceType.substring(deviceType.length() - 10));
}
......@@ -223,19 +223,19 @@ public class RfidServiceImpl implements RfidService {
stringBuffer.append(partType);
if (deviceNumber.length() < 4) {
stringBuffer.append(deviceNumber);
for (int i = 0; i < 4 - deviceNumber.length(); i++) {
stringBuffer.append(" ");
stringBuffer.append("0");
}
stringBuffer.append(deviceNumber);
} else {
stringBuffer.append(deviceNumber.substring(deviceNumber.length() - 4));
}
if (produceNumber.length() < 4) {
stringBuffer.append(produceNumber);
for (int i = 0; i < 4 - produceNumber.length(); i++) {
stringBuffer.append(" ");
stringBuffer.append("0");
}
stringBuffer.append(produceNumber);
} else {
stringBuffer.append(produceNumber.substring(produceNumber.length() - 4));
}
......
package com.tykj.dev.statistical.cache;
import com.tykj.dev.statistical.vo.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author dengdiyi
* 大屏缓存
*/
@AllArgsConstructor
@NoArgsConstructor
@Data
public class BigScreenCache {
/**
* 省及各市装备统计信息
*/
private List<DevNum> devNums;
/**
* 全省入库业务每月数量统计
*/
private List<BusinessNum> businessNums;
/**
* 大屏中心信息统计
*/
private CenterNum centerNum;
/**
* 装备维修情况数量统计
*/
private RepairNum repairNum;
/**
* 装备维修情况装备统计
*/
private List<RepairDevice> repairDevices;
/**
* 最近一次自查统计
*/
private List<SelfCheckNum> selfCheckNums;
/**
* 专管员统计
*/
private List<UserDateScreen> userDateScreens;
}
package com.tykj.dev.statistical.cache;
import com.tykj.dev.statistical.service.BigScreenService;
import com.tykj.dev.statistical.service.StatisticalService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
......@@ -17,8 +18,16 @@ public class CacheConfig {
@Autowired
private StatisticalService statisticalService;
@Autowired
private BigScreenService bigScreenService;
@Bean
public StatisticalCache initStatisticalCache() throws ParseException {
return new StatisticalCache(statisticalService.getDeviceNum(),statisticalService.getLifeStatus(1),statisticalService.getLifeStatus(2),statisticalService.getSelfCheck(),statisticalService.getYearSelfCheck(),statisticalService.getRfidWarning(),statisticalService.getRfidWarningDetail(1),statisticalService.getRfidWarningDetail(2),statisticalService.getCheckNum(),statisticalService.getConfirmCheck(1),statisticalService.getConfirmCheck(2),statisticalService.getUserGeneralSituation());
}
@Bean
public BigScreenCache initBigScreenCache(){
return new BigScreenCache(bigScreenService.getAllDeviceNum(),bigScreenService.getBusinessNum(2),bigScreenService.getCenterNum(),bigScreenService.getRepairNum(),bigScreenService.getRepairDevices(),bigScreenService.getSelfCheckNum(),bigScreenService.selectUserDataScreen());
}
}
......@@ -10,9 +10,7 @@ import com.tykj.dev.device.user.subject.dao.UserDao;
import com.tykj.dev.device.user.subject.entity.Area;
import com.tykj.dev.device.user.subject.entity.Units;
import com.tykj.dev.device.user.subject.entity.User;
import com.tykj.dev.rfid.entity.domin.InputOutputDevice;
import com.tykj.dev.rfid.repository.InputOutputDeviceDao;
import com.tykj.dev.rfid.timeTask.AccessSchedulerTask;
import com.tykj.dev.statistical.service.BigScreenService;
import com.tykj.dev.statistical.service.StatisticalService;
import lombok.Data;
import lombok.SneakyThrows;
......@@ -22,7 +20,6 @@ import org.springframework.scheduling.support.CronTrigger;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.concurrent.ScheduledFuture;
import java.util.function.Function;
import java.util.stream.Collectors;
......@@ -60,7 +57,11 @@ public class CacheRefreshTask {
final UnitsCache unitsCache;
public CacheRefreshTask(StatisticalService statisticalService,AreaDao areaDao,UserDao userDao,UnitsDao unitsDao,StatisticalCache statisticalCache,AreaCache areaCache,UserCache userCache,UnitsCache unitsCache){
final BigScreenCache bigScreenCache;
final BigScreenService bigScreenService;
public CacheRefreshTask(StatisticalService statisticalService,AreaDao areaDao,UserDao userDao,UnitsDao unitsDao,StatisticalCache statisticalCache,AreaCache areaCache,UserCache userCache,UnitsCache unitsCache,BigScreenCache bigScreenCache,BigScreenService bigScreenService){
this.statisticalService = statisticalService;
this.areaDao = areaDao;
this.userDao = userDao;
......@@ -69,6 +70,8 @@ public class CacheRefreshTask {
this.userCache = userCache;
this.unitsCache = unitsCache;
this.statisticalCache = statisticalCache;
this.bigScreenCache = bigScreenCache;
this.bigScreenService = bigScreenService;
scheduledFuture = TaskBeanConfig.getThreadPoolTaskScheduler().schedule(new RefreshTask(), triggerContext -> new CronTrigger(cron).nextExecutionTime(triggerContext));
log.info("[统计分析模块]:定时更新缓存任务开启");
}
......@@ -106,6 +109,16 @@ public class CacheRefreshTask {
statisticalCache.setYearSelfInspections(statisticalService.getYearSelfCheck());
log.info("[统计分析模块]:更新统计分析缓存");
}
if (bigScreenService!=null&&bigScreenCache!=null){
bigScreenCache.setBusinessNums(bigScreenService.getBusinessNum(2));
bigScreenCache.setCenterNum(bigScreenService.getCenterNum());
bigScreenCache.setDevNums(bigScreenService.getAllDeviceNum());
bigScreenCache.setRepairDevices(bigScreenService.getRepairDevices());
bigScreenCache.setRepairNum(bigScreenService.getRepairNum());
bigScreenCache.setSelfCheckNums(bigScreenService.getSelfCheckNum());
bigScreenCache.setUserDateScreens(bigScreenService.selectUserDataScreen());
log.info("[统计分析模块]:更新大屏缓存");
}
}
}
}
package com.tykj.dev.statistical.controller;
import com.tykj.dev.config.swagger.AutoDocument;
import com.tykj.dev.statistical.cache.BigScreenCache;
import com.tykj.dev.statistical.service.BigScreenService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author dengdiyi
*/
@RestController
@Api(tags = "大屏模块", description = "统计相关接口")
@AutoDocument
@RequestMapping("/bigScreen")
public class BigScreenController {
@Autowired
private BigScreenService bigScreenService;
@Autowired
private BigScreenCache bigScreenCache;
/**
* 查询省及各市的装备数量
* @return 省及各市装备对象集合
*/
@ApiOperation(value = "查询省及各市的装备数量")
@GetMapping("/devNum")
public ResponseEntity selectDevNum(){
return ResponseEntity.ok(bigScreenCache.getDevNums());
}
@ApiOperation(value = "查询全省某业务每月数量统计")
@GetMapping("/businessNum/{businessType}")
public ResponseEntity selectbusinessNum(@PathVariable int businessType){
if (businessType==2) {
return ResponseEntity.ok(bigScreenCache.getBusinessNums());
}
else {
return ResponseEntity.ok(bigScreenService.getBusinessNum(businessType));
}
}
@ApiOperation(value = "查询大屏中心统计")
@GetMapping("/center")
public ResponseEntity selectCenterNum(){
return ResponseEntity.ok(bigScreenCache.getCenterNum());
}
@ApiOperation(value = "查询装备维修情况数量统计")
@GetMapping("/repairNum")
public ResponseEntity selectRepairNum(){
return ResponseEntity.ok(bigScreenCache.getRepairNum());
}
@ApiOperation(value = "查询装备维修情况装备统计")
@GetMapping("/repairDevice")
public ResponseEntity selectRepairDevice(){
return ResponseEntity.ok(bigScreenCache.getRepairDevices());
}
@ApiOperation(value = "查询最近一次自查统计")
@GetMapping("/selfCheck")
public ResponseEntity selectSelfCheck(){
return ResponseEntity.ok(bigScreenCache.getSelfCheckNums());
}
@ApiOperation(value = "查询专管员统计")
@GetMapping("/user")
public ResponseEntity selectUser(){
return ResponseEntity.ok(bigScreenCache.getUserDateScreens());
}
}
package com.tykj.dev.statistical.service;
import com.tykj.dev.statistical.vo.*;
import java.util.List;
/**
* @author dengdiyi
*/
public interface BigScreenService {
/**
* 获取省及各市装备统计信息
*/
List<DevNum> getAllDeviceNum();
/**
* 获取全省某业务每月数量统计
*/
List<BusinessNum> getBusinessNum(Integer businessType);
/**
* 获取大屏中心信息统计
*/
CenterNum getCenterNum();
/**
* 获取装备维修情况数量统计
*/
RepairNum getRepairNum();
/**
* 获取装备维修情况装备统计
*/
List<RepairDevice> getRepairDevices();
/**
* 获取最近一次自查统计
*/
List<SelfCheckNum> getSelfCheckNum();
/**
* 专管员统计
*/
List<UserDateScreen> selectUserDataScreen();
}
......@@ -2,12 +2,8 @@ package com.tykj.dev.statistical.service.impl;
import com.tykj.dev.device.confirmcheck.entity.cache.AreaCache;
import com.tykj.dev.device.confirmcheck.entity.domain.DeviceCheckDetail;
import com.tykj.dev.device.confirmcheck.entity.domain.DeviceCheckStat;
import com.tykj.dev.device.confirmcheck.entity.vo.CheckDeviceStatVo;
import com.tykj.dev.device.confirmcheck.repository.DeviceCheckDetailDao;
import com.tykj.dev.device.confirmcheck.repository.DeviceCheckStatDao;
import com.tykj.dev.device.finalcheck.entity.domain.FinalReport;
import com.tykj.dev.device.finalcheck.repisotry.FinalReportDao;
import com.tykj.dev.device.library.repository.DeviceLibraryDao;
import com.tykj.dev.device.library.subject.domin.DeviceLibrary;
import com.tykj.dev.device.selfcheck.base.SelfCheckSchedulerTask;
......@@ -16,9 +12,8 @@ import com.tykj.dev.device.selfcheck.subject.domin.SelfCheckBill;
import com.tykj.dev.device.task.service.TaskService;
import com.tykj.dev.device.task.subject.vo.TaskSelectVo;
import com.tykj.dev.device.task.subject.vo.TaskUserVo;
import com.tykj.dev.device.user.cache.UnitsCache;
import com.tykj.dev.device.user.cache.UserCache;
import com.tykj.dev.device.user.base.ret.UserSituationVo;
import com.tykj.dev.device.user.cache.UnitsCache;
import com.tykj.dev.device.user.subject.dao.AreaDao;
import com.tykj.dev.device.user.subject.dao.UnitsDao;
import com.tykj.dev.device.user.subject.dao.UserDao;
......@@ -26,8 +21,6 @@ import com.tykj.dev.device.user.subject.entity.Area;
import com.tykj.dev.device.user.subject.entity.Units;
import com.tykj.dev.device.user.subject.entity.User;
import com.tykj.dev.misc.exception.ApiException;
import com.tykj.dev.misc.utils.JacksonUtil;
import com.tykj.dev.misc.utils.ResultUtil;
import com.tykj.dev.rfid.entity.domin.LibraryWarningLog;
import com.tykj.dev.rfid.repository.LibraryWarningLogDao;
import com.tykj.dev.statistical.service.StatisticalService;
......@@ -412,7 +405,7 @@ public class StatisticalServiceImpl implements StatisticalService {
int count= (int) userDao.count();
int hasTraining= 0;
List<UserSituationVo> list=new ArrayList<>();
List<Integer> ids= userDao.findAll().stream().filter(user -> user.getTrainStatus() == 1 || user.getTrainStatus() == 2).map(User::getUserId).collect(Collectors.toList());
List<Integer> ids= userDao.findAll().stream().filter(user -> user.getTrainStatus()!=null&&(user.getTrainStatus() == 1 || user.getTrainStatus() == 2)).map(User::getUserId).collect(Collectors.toList());
hasTraining=count-ids.size();
userDao.findAllByUserIdIn(ids).forEach(
user -> {
......
package com.tykj.dev.statistical.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author zjm
* @version 1.0.0
......@@ -7,6 +11,9 @@ package com.tykj.dev.statistical.vo;
* @Description 告警详情统计
* @createTime 2020年10月16日 10:38:00
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Alarm {
/**
* 市 名称
......
package com.tykj.dev.statistical.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author zjm
......@@ -10,6 +12,8 @@ import lombok.Data;
* @createTime 2020年10月16日 13:50:00
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AlarmSituation {
/**
* 总数
......
......@@ -2,6 +2,7 @@ package com.tykj.dev.statistical.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author zjm
......@@ -12,6 +13,7 @@ import lombok.Data;
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class BusinessSituation {
/**
* 配发
......
package com.tykj.dev.statistical.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author dengdiyi
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CenterNum {
/**
* 省装备数量统计
*/
private Integer deviceCount = 0;
/**
* 本年度业务处理总数
*/
private Integer businessCount = 0;
/**
* 设备故障率
*/
private double faultPercent = 0;
/**
* 本年度新增设备数
*/
private Integer deviceAddCount = 0;
}
package com.tykj.dev.statistical.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author dengdiyi
* 区域最近一次自查和核查数量统计
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Check {
/**
* 市 名称
......
package com.tykj.dev.statistical.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author zjm
......@@ -10,6 +12,8 @@ import lombok.Data;
* @createTime 2020年10月16日 09:55:00
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DevLifeSector {
/**
* 市名称
......
package com.tykj.dev.statistical.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author zjm
......@@ -10,6 +12,8 @@ import lombok.Data;
* @createTime 2020年10月15日 10:35:00
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DevNum {
/**
* 区域名称
......
package com.tykj.dev.statistical.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author zjm
* @version 1.0.0
......@@ -7,6 +11,9 @@ package com.tykj.dev.statistical.vo;
* @Description 省扇形生命状态统计
* @createTime 2020年10月16日 09:55:00
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DevProvinceSector {
/**
* 市名称
......
package com.tykj.dev.statistical.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
......@@ -9,6 +11,8 @@ import java.util.List;
* 年度中每季度自查统计
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class PerQuarter {
/**
......
package com.tykj.dev.statistical.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author dengdiyi
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SelfCheckNum {
/**
* 市 名称
*/
private String areaName;
/**
* 自查数量
*/
private Integer selfCheckCount = 0;
/**
* 检查无误数量
*/
private Integer unmistakableCount = 0;
/**
* 未检查数量
*/
private Integer unCheckCount = 0;
/**
* 未登记数量
*/
private Integer unRegisterCount = 0;
/**
* 缺失数量
*/
private Integer loseCount = 0;
}
package com.tykj.dev.statistical.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author zjm
......@@ -10,6 +12,8 @@ import lombok.Data;
* @createTime 2020年10月16日 10:30:00
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SelfInspection {
/**
* 市 名称
......
package com.tykj.dev.device.user.base.ret;
package com.tykj.dev.statistical.vo;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
......@@ -19,9 +19,9 @@ import lombok.NoArgsConstructor;
public class UserDateScreen {
private String unitName;
private Integer hadBeenTraining;
private Integer hadBeenTraining = 0;
private Integer noTraining;
private Integer noTraining = 0;
private Integer expired;
private Integer expired = 0;
}
package com.tykj.dev.statistical.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author zjm
......@@ -10,6 +12,8 @@ import lombok.Data;
* @createTime 2020年10月16日 10:30:00
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Verification {
/**
* 市 名称
......
package com.tykj.dev.statistical.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author dengdiyi
* 年度自查统计详情vo
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class YearSelfInspection {
/**
......
......@@ -63,4 +63,6 @@ public interface TaskDao extends JpaRepository<Task, Integer>, JpaSpecificationE
Task findByBusinessTypeAndOwnUnitAndBillStatus(Integer type, Integer ownUnit, Integer billStatus);
Task findByParentTaskIdAndAndTitle(Integer parentId, String title);
List<Task> findAllByBusinessType(Integer businessType);
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论