ycl-pojo/src/main/java/com/ycl/platform/base/CheckIndex.java
@@ -27,9 +27,14 @@ public String deptName; /** 考核标签(省厅/市局) */ @Excel(name = "考核标签", dictType = "platform_examine_tag") // @Excel(name = "考核标签", dictType = "platform_examine_tag") @TableField("examine_tag") public Short examineTag; @Excel(name = "考核标签") @TableField(exist = false) public String examineTagStr; @TableField(exist = false) public List<Integer> deptIds; public Long getId() { @@ -96,4 +101,12 @@ public void setDeptIds(List<Integer> deptIds) { this.deptIds = deptIds; } public String getExamineTagStr() { return examineTagStr; } public void setExamineTagStr(String examineTagStr) { this.examineTagStr = examineTagStr; } } ycl-pojo/src/main/java/com/ycl/platform/domain/dto/CheckScoreIndexDTO.java
@@ -10,4 +10,5 @@ private Long id; private String date; private List<String> quarter; private Integer examineTag; } ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CheckTemplate.java
@@ -1,6 +1,7 @@ package com.ycl.platform.domain.entity; import annotation.Excel; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.ycl.system.entity.BaseEntity; import lombok.Data; @@ -19,6 +20,7 @@ */ @Data @Accessors(chain = true) @TableName("t_check_template") public class CheckTemplate { private static final long serialVersionUID = 1L; ycl-server/src/main/java/com/ycl/api/DH/module/LoginModule.java
@@ -182,13 +182,13 @@ osdInfo.read(); NET_GBMODE_CUSTOMTITLE_INFO[] stuCustomTitle = osdInfo.stuCustomTitle; for (NET_GBMODE_CUSTOMTITLE_INFO title : stuCustomTitle) { String position = new String(title.szPositon, StandardCharsets.UTF_8); String position = new String(title.szPositon, StandardCharsets.UTF_8).trim(); if("LeftDown".equals(position)) { NET_TITLE_OSD_INFO[] stuOSD = title.stuOSD; for (NET_TITLE_OSD_INFO osd : stuOSD) { String osdStr = null; osdStr = new String(osd.szText, StandardCharsets.UTF_8).trim(); log.info("TEXT:"+osdStr); // log.info("TEXT:"+osdStr); if (!StringUtils.isEmpty(osdStr)) { osdResult.setOSD4(osdStr); } @@ -199,7 +199,7 @@ for (NET_TITLE_OSD_INFO osd : stuOSD) { String osdStr = null; osdStr = new String(osd.szText, StandardCharsets.UTF_8).trim(); log.info("TEXT:"+osdStr); // log.info("TEXT:"+osdStr); if (!StringUtils.isEmpty(osdStr)) { if(num ==0){ osdResult.setOSD1(osdStr); ycl-server/src/main/java/com/ycl/api/YS/YSApi.java
@@ -94,9 +94,11 @@ //省份 String name = new String(stOSDInfo.stNameOSD.szOSDText, StandardCharsets.UTF_8); osdResult.setOSD1(name); // log.info("name"+name); int num = 0; for (NetDEVSDKLib.NETDEV_OSD_TEXT_OVERLAY_S osd : stOSDInfo.astTextOverlay) { String text = new String(osd.szOSDText, StandardCharsets.UTF_8).trim(); // log.info("num:"+num+",texr:"+text); if (num == 0) { osdResult.setOSD2(text); } else if (num == 1) { ycl-server/src/main/java/com/ycl/calculate/CarSnapshopDataCalculation.java
@@ -166,6 +166,7 @@ noDateCount = 0; } Double deductScore = 0.1 * noDateCount; if (stats.totalDataSum != 0) { BigDecimal avgCount = key.startsWith(ApiConstants.Province) ? cityCountAvg : countyCountAvg; Map<String, Object> viewConnectParam = new HashMap<>(); ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDataCalculation.java
@@ -154,6 +154,7 @@ noDateCount = 0; } Double deductScore = 0.1 * noDateCount; log.info("总量:{}",stats.totalDataSum); if (stats.totalDataSum != 0) { BigDecimal avgCount = key.startsWith(ApiConstants.Province) ? cityCountAvg : countyCountAvg; Map<String, Object> viewConnectParam = new HashMap<>(); ycl-server/src/main/java/com/ycl/platform/mapper/CheckScoreMapper.java
@@ -90,4 +90,6 @@ * @return 数据 */ List<Map<String, Object>> calculate(Date startDate, Date endDate, String category); CheckScore getLast(CheckScore checkScore); } ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java
@@ -1,6 +1,7 @@ package com.ycl.platform.service.impl; import annotation.DataScope; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ycl.platform.domain.dto.CheckScoreDTO; @@ -22,6 +23,7 @@ import com.ycl.utils.DateUtils; import com.ycl.utils.SecurityUtils; import com.ycl.utils.StringUtils; import constant.CheckConstants; import enumeration.general.PublishType; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; @@ -77,8 +79,18 @@ CheckScoreDetailVO checkScoreDetailVO = new CheckScoreDetailVO(); //根据id读取score CheckScore checkScore = scoreMapper.selectCheckScoreById(checkScoreId); Integer templateId = 0; //方便切换改为:根据score考核类别和dto考核标签查模板规则和权重,注意同种类同标签只能有一个模板 QueryWrapper<CheckTemplate> wrapper = new QueryWrapper<>(); wrapper.eq("examine_tag",checkScoreIndexDTO.getExamineTag()); wrapper.eq("examine_category",checkScore.getExamineCategory()); Optional<CheckTemplate> first = templateMapper.selectList(wrapper).stream().findFirst(); if(first.isPresent()){ CheckTemplate checkTemplate = first.get(); templateId = checkTemplate.getId(); } //读取规则以及权重 List<CheckTemplateRule> templateRuleList = templateRuleMapper.selectListByTemplateId(checkScore.getTemplateId()); List<CheckTemplateRule> templateRuleList = templateRuleMapper.selectListByTemplateId(templateId); List<CheckRule> checkRules = new ArrayList<>(); //读取模板对应所有规则 @@ -99,7 +111,7 @@ .setDate(checkScoreIndexDTO.getDate()) .setQuarter(checkScoreIndexDTO.getQuarter()); scoreIndexDTO.setParams(checkScoreIndexDTO.getParams()); scoreIndexDTO.setExamineTag(checkScore.getExamineTag()); scoreIndexDTO.setExamineTag(checkScoreIndexDTO.getExamineTag()); //获当月份 if (StringUtils.isEmpty(scoreIndexDTO.getDate()) && CollectionUtils.isEmpty(checkScoreIndexDTO.getQuarter())) { //如果查询条件不含参数,查询积分对应创建时间 @@ -144,7 +156,7 @@ // 如果数据为空,则查询之前的数据 if (checkScores.isEmpty()) { CheckScore one = new LambdaQueryChainWrapper<>(baseMapper).select(CheckScore::getCreateTime).last("order by create_time desc limit 1").one(); CheckScore one = scoreMapper.getLast(checkScore); if (Objects.nonNull(one)) { calendar.setTime(one.getCreateTime()); getCheckScore(checkScore, calendar); @@ -244,14 +256,12 @@ @Override public void exportIndex(HttpServletResponse response, CheckScore checkScoreDTO) throws IOException { String date = checkScoreDTO.getDate(); Integer examineTag = null; //如果请求参数时间为空,查这条记录的时间 if (StringUtils.isEmpty(checkScoreDTO.getDate()) && CollectionUtils.isEmpty(checkScoreDTO.getQuarter())) { CheckScore checkScore = getById(checkScoreDTO.getId()); Date createTime = checkScore.getCreateTime(); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM"); date = formatter.format(createTime); examineTag = checkScore.getExamineTag(); } /** 导三张sheet */ @@ -259,28 +269,28 @@ CheckIndexCar checkIndexCar = new CheckIndexCar(); checkIndexCar.setDate(date); checkIndexCar.setQuarter(checkScoreDTO.getQuarter()); if (examineTag != null) { checkIndexCar.setExamineTag(Short.parseShort(examineTag + "")); } List<CheckIndexCar> checkIndexCars = indexCarService.selectCheckIndexCarList(checkIndexCar); for (CheckIndexCar indexCar : checkIndexCars) { indexCar.setExamineTagStr(CheckConstants.Examine_Tag_Province.equals(indexCar.getExamineTag()) ? "省厅考核" : "区县考核"); } ExcelExp e1 = new ExcelExp("车辆考核指标数据", checkIndexCars, CheckIndexCar.class); //人脸 CheckIndexFace checkIndexFace = new CheckIndexFace(); checkIndexFace.setDate(date); checkIndexFace.setQuarter(checkScoreDTO.getQuarter()); if (examineTag != null) { checkIndexFace.setExamineTag(Short.parseShort(examineTag + "")); } List<CheckIndexFace> checkIndexFaces = indexFaceService.selectCheckIndexFaceList(checkIndexFace); for (CheckIndexFace indexFace : checkIndexFaces) { indexFace.setExamineTagStr(CheckConstants.Examine_Tag_Province.equals(indexFace.getExamineTag()) ? "省厅考核" : "区县考核"); } ExcelExp e2 = new ExcelExp("人脸考核指标数据", checkIndexFaces, CheckIndexFace.class); //视频 CheckIndexVideo checkIndexVideo = new CheckIndexVideo(); checkIndexVideo.setDate(date); checkIndexVideo.setQuarter(checkScoreDTO.getQuarter()); if (examineTag != null) { checkIndexVideo.setExamineTag(Short.parseShort(examineTag + "")); } List<CheckIndexVideo> checkIndexVideos = indexVideoService.selectCheckIndexVideoList(checkIndexVideo); for (CheckIndexVideo indexVideo : checkIndexVideos) { indexVideo.setExamineTagStr(CheckConstants.Examine_Tag_Province.equals(indexVideo.getExamineTag()) ? "省厅考核" : "区县考核"); } ExcelExp e3 = new ExcelExp("视频考核指标数据", checkIndexVideos, CheckIndexVideo.class); List<ExcelExp> mysheet = new ArrayList<>(); @@ -297,7 +307,8 @@ SysUser user = SecurityUtils.getLoginUser().getUser(); if (!user.isAdmin()) { for (SysRole role : roles) { if (role.getPermissions().contains("check:score:publish")) { //TODO:本地库修改 if (role.getPermissions().contains("check:score:role:publish")) { Map<String, Object> params = checkScore.getParams(); params.put("publish", PublishType.PUBLISHED.getCode()); } ycl-server/src/main/java/com/ycl/task/MonitorTask.java
@@ -64,7 +64,8 @@ Query query = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday))); List<MonitorQualifyResult> oneMachineFileResults = mongoTemplate.find(query, MonitorQualifyResult.class); //mongo品牌数据 Query OSDQuery = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday))); //TODO:测试改为今天 Query OSDQuery = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); Map<String, OsdCheckResult> osdMap = mongoTemplate.find(query, OsdCheckResult.class).stream().collect(Collectors.toMap(OsdCheckResult::getDeviceNo, Function.identity())); //数据库monitor表数据 Map<String, TMonitorVO> monitorVOMap = monitorMapper.selectMonitorVOList().stream().collect(Collectors.toMap(TMonitorVO::getSerialNumber, Function.identity())); ycl-server/src/main/java/com/ycl/task/VideoTask.java
@@ -114,10 +114,11 @@ public void osdTask() { log.info("开始计算Osd标注、时间准确率"); //计算Osd标注、时间准确率 //TODO测试改为今天 Date yesterday = DateUtils.addDays(new Date(), -1); Query query = new Query(); query.addCriteria(Criteria .where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday))); .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); List<OsdCheckResult> results = mongoTemplate.find(query, OsdCheckResult.class); CalculationStrategy calculator = IndexCalculationFactory.getCalculator(CalculationStrategyConstants.Video_OsdTime); calculator.calculate(results); ycl-server/src/main/resources/application-prod.yml
@@ -124,7 +124,7 @@ host: 51.92.65.49 appKey: 29555942 appSecret: t9U7tCplCyYHzQPPL7cH 1111: Hik12345+ DH: userName: admin password: zg@2024dx ycl-server/src/main/resources/mapper/zgyw/CheckScoreMapper.xml
@@ -18,7 +18,8 @@ </resultMap> <sql id="selectCheckScoreVo"> select id, score, tcs.dept_id, template_id, examine_tag, examine_category, tcs.create_time,tcs.update_time,tcs.update_user, publish select id, score, tcs.dept_id, template_id, examine_tag, examine_category, tcs.create_time,tcs.update_time,tcs.update_user, publish from t_check_score tcs left join sys_dept d on tcs.dept_id = d.dept_id </sql> @@ -120,7 +121,8 @@ </select> <insert id="saveBatch"> insert into t_check_score (score,dept_id,template_id,examine_tag,examine_category,create_time) values <foreach collection="scoreList" separator="," item="score"> insert into t_check_score (score,dept_id,template_id,examine_tag,examine_category,create_time) values <foreach collection="scoreList" separator="," item="score"> (#{score.score},#{score.deptId},#{score.templateId},#{score.examineTag},#{score.examineCategory},#{score.createTime}) </foreach> </insert> @@ -131,16 +133,29 @@ tcs.dept_id, examine_category, ROUND(AVG(score) OVER(PARTITION BY tcs.dept_id, examine_category), 2) AS score, tcs.publish, tcs.create_time AS createTime FROM t_check_score tcs LEFT JOIN sys_dept d ON tcs.dept_id = d.dept_id WHERE <where> examine_tag = #{examineTag} AND DATE_FORMAT(tcs.create_time, '%Y-%m') BETWEEN DATE_FORMAT(#{startDate}, '%Y-%m') AND DATE_FORMAT(#{endDate}, '%Y-%m') GROUP BY tcs.dept_id, examine_category,examine_tag <if test="params.publish != null and params.publish != ''">and publish = #{params.publish}</if> ${params.dataScope} </where> GROUP BY tcs.dept_id, tcs.examine_category, tcs.examine_tag </select> <select id="getLast" resultType="com.ycl.platform.domain.entity.CheckScore"> select * from t_check_score tcs LEFT JOIN sys_dept d ON tcs.dept_id = d.dept_id <where> tcs.examine_tag = #{examineTag} <if test="params.publish != null and params.publish != ''">and tcs.publish = #{params.publish}</if> ${params.dataScope} </where> order by tcs.create_time desc limit 1 </select> <select id="home" resultType="java.util.Map"> <![CDATA[ SELECT @@ -168,7 +183,8 @@ WHERE examine_tag = 1 AND examine_category = #{category} AND DATE_FORMAT(tcs.create_time, '%Y-%m') BETWEEN DATE_FORMAT(#{startDate}, '%Y-%m') AND DATE_FORMAT(#{endDate}, '%Y-%m') AND DATE_FORMAT(tcs.create_time, '%Y-%m') BETWEEN DATE_FORMAT(#{startDate}, '%Y-%m') AND DATE_FORMAT(#{endDate}, '%Y-%m') GROUP BY tcs.dept_id ORDER BY score DESC, tcs.dept_id </select> ycl-server/src/main/resources/mapper/zgyw/CheckTemplateRuleMapper.xml
@@ -69,7 +69,7 @@ <select id="selectListByTemplateId" resultType="com.ycl.platform.domain.entity.CheckTemplateRule"> select tctr.*,tcr.rule_name as checkRuleName,tcr.rule_index from t_check_template_rule tctr left join t_check_rule tcr on tctr.check_rule_id = tcr.id where check_template_id = #{checkTemplateId} where tctr.check_template_id = #{checkTemplateId} </select> </mapper>