From 7ca66b60c524598ca87e03eb79f2bedce12639e2 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期五, 23 八月 2024 17:42:33 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ycl-pojo/src/main/java/com/ycl/platform/base/AbsEntity.java | 6 ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrder.java | 4 ycl-server/src/main/java/com/ycl/task/ContractTask.java | 335 +++++++++++++++++++++++++++-------------- ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml | 8 + ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java | 12 ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRuleVO.java | 2 ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java | 3 ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml | 2 ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java | 2 ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java | 3 ycl-common/src/main/java/enumeration/ErrorType.java | 1 ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java | 57 +----- 12 files changed, 261 insertions(+), 174 deletions(-) diff --git a/ycl-common/src/main/java/enumeration/ErrorType.java b/ycl-common/src/main/java/enumeration/ErrorType.java index 3b9e043..a1500f6 100644 --- a/ycl-common/src/main/java/enumeration/ErrorType.java +++ b/ycl-common/src/main/java/enumeration/ErrorType.java @@ -15,6 +15,7 @@ DEVICE_OFFLINE("DEVICEOFFLINE", "璁惧绂荤嚎"), VIDEO_LOSS("VIDEOMISS", "褰曞儚缂哄け"), VIDEO_NONE("NOVIDEO", "鏃犲綍鍍�"), + PIC_URLABNORMAL("PICURLABNORMAL","鍥剧墖璁块棶寮傚父"), POINT_INFO_ERROR("POINTINFOERRO", "鐐逛綅淇℃伅閿欒"), POINT_INFO_MISS("POINTINFOMISS", "鐐逛綅淇℃伅涓嶅叏"), SIGNAL_LOSS("SIGNALMISS", "淇″彿缂哄け"), diff --git a/ycl-pojo/src/main/java/com/ycl/platform/base/AbsEntity.java b/ycl-pojo/src/main/java/com/ycl/platform/base/AbsEntity.java index a5c872a..11e52d4 100644 --- a/ycl-pojo/src/main/java/com/ycl/platform/base/AbsEntity.java +++ b/ycl-pojo/src/main/java/com/ycl/platform/base/AbsEntity.java @@ -23,19 +23,19 @@ /** * 鍒涘缓鏃堕棿 */ - @TableField(value = "create_time") + @TableField(value = "create_time",fill = FieldFill.INSERT) private Date createTime; /** * 淇敼鏃堕棿 */ - @TableField(value = "update_time") + @TableField(value = "update_time",fill = FieldFill.INSERT_UPDATE) private Date updateTime; /** * 閫昏緫鍒犻櫎 */ - @TableField(value = "deleted") + @TableField(value = "deleted", fill = FieldFill.INSERT) private Integer deleted; } diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrder.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrder.java index 11b5d0e..870eaf4 100644 --- a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrder.java +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrder.java @@ -68,8 +68,8 @@ private String ywCondition; @ApiModelProperty("杩愮淮妫�娴嬫儏鍐�/涓�寮犲浘") - @TableField("yw_check_condition") - private String ywCheckCondition; + @TableField("yw_check_result") + private String ywCheckResult; @ApiModelProperty("澶勭悊鏈熼檺") @TableField("processing_period") diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRuleVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRuleVO.java index 40c03b5..0e5d2aa 100644 --- a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRuleVO.java +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRuleVO.java @@ -61,4 +61,6 @@ private Integer unitId; //杩濊璺暟銆佷釜鏁� private Integer num; + //宸ュ崟涓嬪彂鍒板鏍搁�氳繃鐨勬椂闂� + private long handleTime; } diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java index 88b0e63..adde7d2 100644 --- a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java @@ -55,8 +55,8 @@ /** 鏁呴殰绫诲瀷 */ private List<String> errorTypeList; + /** 鏁呴殰绫诲瀷 */ private String errorType; - /** 杩愮淮浜哄憳 */ private Integer ywPeopleId; private String ywPeopleName; @@ -81,6 +81,7 @@ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date distributeTime; + private Date auditTime; /** 涓嬪彂浜� */ private String realName; diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java index bb16fb9..53c5113 100644 --- a/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java +++ b/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java @@ -13,6 +13,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.time.LocalDateTime; import java.util.List; import java.util.Map; @@ -71,5 +72,7 @@ */ List<DeviceInfoVO> hasErrorWorkOrderList(); + List<WorkOrderVO> selectPassOrder(@Param("startTime") LocalDateTime now, @Param("endTime")LocalDateTime thirtyDaysAgo, @Param("status") String status, @Param("auditStatus") String auditStatus); + int addMany(@Param("workOrderList") List<WorkOrder> workOrderList); } diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java index 0e45a4b..1f80460 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java +++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java @@ -1,14 +1,11 @@ package com.ycl.platform.service.impl; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ycl.platform.domain.dto.ReportImportDTO; import com.ycl.platform.domain.entity.Report; import com.ycl.platform.domain.entity.YwPeople; -import com.ycl.platform.domain.entity.YwPoint; -import com.ycl.platform.domain.entity.YwUnit; import com.ycl.platform.domain.form.ReportAuditingForm; import com.ycl.platform.domain.form.ReportForm; import com.ycl.platform.domain.query.ReportQuery; @@ -22,18 +19,17 @@ import com.ycl.system.page.PageUtil; import com.ycl.utils.DateUtils; import com.ycl.utils.SecurityUtils; +import com.ycl.utils.html.EscapeUtil; import com.ycl.utils.poi.ExcelUtil; import com.ycl.utils.uuid.IdUtils; import enumeration.general.ErrorTypeEnum; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; -import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; -import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.Date; @@ -222,49 +218,16 @@ return Result.ok().data(vos); } + @Override public List<ReportVO> export(ReportQuery query) { - - if (StringUtils.isNotBlank(query.getPointId())) { - LambdaQueryWrapper<YwPoint> queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.like(YwPoint::getPointName, query.getPointId()); - query.setPointIdList(ywpointMapper.selectList(queryWrapper).stream().map(YwPoint::getId).collect(Collectors.toList())); - if(CollectionUtils.isEmpty(query.getPointIdList())) { - return new ArrayList<>(); - } - } - if (StringUtils.isNotBlank(query.getPeopleId())) { - LambdaQueryWrapper<YwPeople> queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.like(YwPeople::getYwPersonName, query.getPeopleId()); - query.setPeopleIdList(peopleMapper.selectList(queryWrapper).stream().map(YwPeople::getId).collect(Collectors.toList())); - if(CollectionUtils.isEmpty(query.getPeopleIdList())) { - return new ArrayList<>(); - } - } - - IPage<Report> page = new LambdaQueryChainWrapper<>(baseMapper) - .eq(StringUtils.isNotBlank(query.getReportType()), Report::getReportType, query.getReportType()) -// .le(Objects.nonNull(query.getBeginCreateTime()), Report::getBeginCreateTime, query.getBeginCreateTime()) -// .ge(Objects.nonNull(query.getEndCreateTime()), Report::getEndCreateTime, query.getEndCreateTime()) -// .in(!CollectionUtils.isEmpty(query.getPointIdList()), Report::getPointId, query.getPointIdList()) - .in(!CollectionUtils.isEmpty(query.getPeopleIdList()), Report::getPeopleId, query.getPeopleIdList()) - .orderByDesc(Report::getCreateTime) - .page(PageUtil.getPage(query, Report.class)); - - List<ReportVO> vos = page.getRecords().stream() - .map( - entity -> { - ReportVO vo = ReportVO.getVoByEntity(entity, null); - YwUnit unit = unitMapper.selectById(vo.getUnitId()); - vo.setUnitName(unit.getUnitName()); - YwPeople ywPeople = peopleMapper.selectById(vo.getPeopleId()); - vo.setPeopleName(ywPeople.getYwPersonName()); - // YwPoint ywPoint = ywpointMapper.selectById(vo.getPointId()); - // vo.setPointName(ywPoint.getPointName()); - return vo; - } - ) - .collect(Collectors.toList()); - return vos; + IPage<ReportVO> page = PageUtil.getPage(query, ReportVO.class); + page.setSize(-1); + baseMapper.page(page, query); + page.getRecords().forEach(item -> { + item.setErrorType(ErrorTypeEnum.getEnumValue(item.getErrorType())); + item.setReportContent(EscapeUtil.clean(item.getReportContent())); + }); + return page.getRecords(); } diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java index 61c7f20..7f6b6f0 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java +++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java @@ -84,16 +84,16 @@ setTemplateRule(list,null,"璁惧骞冲潎鍦ㄧ嚎鐜�","90%鈮よ澶囧钩鍧囧湪绾跨巼锛�95%",94D,90D,RuleDeductCategoryEnum.DEDUCT_POINTS,10.00); setTemplateRule(list,null,"璁惧骞冲潎鍦ㄧ嚎鐜�","锛�90%",89D,null,RuleDeductCategoryEnum.DEDUCT_POINTS,20.00); - setTemplateRule(list,2,"鍓嶇鎰熺煡婧愭不鐞嗗伐浣�","鏃堕挓鍚屾",null,null,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,0.1); - setTemplateRule(list,null,"鍓嶇鎰熺煡婧愭不鐞嗗伐浣�","OSD鏍囪瘑",null,null,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,0.1); - setTemplateRule(list,null,"鍓嶇鎰熺煡婧愭不鐞嗗伐浣�","涓�鏈轰竴妗�",null,null,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,0.1); + setTemplateRule(list,2,"鍓嶇鎰熺煡婧愭不鐞嗗伐浣�","鏃堕挓鍚屾",24D,null,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,0.1); + setTemplateRule(list,null,"鍓嶇鎰熺煡婧愭不鐞嗗伐浣�","OSD鏍囪瘑",24D,null,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,0.1); + setTemplateRule(list,null,"鍓嶇鎰熺煡婧愭不鐞嗗伐浣�","涓�鏈轰竴妗�",24D,null,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,0.1); setTemplateRule(list,3,"瀛樺偍鏁呴殰","鍥犲瓨鍌ㄨ澶囥�佷簯瀛樺偍杞欢绛夊紩璧峰钩鍙颁笉鑳芥甯告煡鐪嬪巻鍙插浘鍍�,椤诲湪24灏忔椂鎺掗櫎鏁呴殰,鍗曟鏁呴殰鍦�24灏忔椂浠ュ唴",24D,null,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,0.5); - setTemplateRule(list,null,"瀛樺偍鏁呴殰","鍥犲瓨鍌ㄨ澶囥�佷簯瀛樺偍杞欢绛夊紩璧峰钩鍙颁笉鑳芥甯告煡鐪嬪巻鍙插浘鍍�,椤诲湪24灏忔椂鎺掗櫎鏁呴殰,鍗曟鏁呴殰鍦�48灏忔椂浠ュ唴",null,24D,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,1.0); + setTemplateRule(list,null,"瀛樺偍鏁呴殰","鍥犲瓨鍌ㄨ澶囥�佷簯瀛樺偍杞欢绛夊紩璧峰钩鍙颁笉鑳芥甯告煡鐪嬪巻鍙插浘鍍�,椤诲湪24灏忔椂鎺掗櫎鏁呴殰,鍗曟鏁呴殰鍦�48灏忔椂浠ュ唴",48D,25D,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,1.0); setTemplateRule(list,null,"瀛樺偍鏁呴殰","鍥犺棰戞垨鑰呭浘鐗囦涪澶卞鑷撮噸瑕佹浜嬩欢涓嶈兘鍥炴斁鎴栨煡鐪�",null,null,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,2.0); - setTemplateRule(list,4,"瀵逛簬鍓嶇鐐逛綅寮傚父鎯呭喌鐨勫鐞�","闀滃ご鏁呴殰鎴栨薄鏌撴垨鏍戞灊閬尅鎴栨灙鏈鸿瑙掑亸绉绘甯歌搴︽垨琛ュ厜鐏簲浜湭浜�,24灏忔椂鍚庢湭淇鐨�",null,24D,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,0.5); - setTemplateRule(list,null,"瀵逛簬鍓嶇鐐逛綅寮傚父鎯呭喌鐨勫鐞�","闀滃ご鏁呴殰鎴栨薄鏌撴垨鏍戞灊閬尅鎴栨灙鏈鸿瑙掑亸绉绘甯歌搴︽垨琛ュ厜鐏簲浜湭浜�,48灏忔椂鍚庢湭淇鐨�",null,48D,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,1.0); + setTemplateRule(list,4,"瀵逛簬鍓嶇鐐逛綅寮傚父鎯呭喌鐨勫鐞�","闀滃ご鏁呴殰鎴栨薄鏌撴垨鏍戞灊閬尅鎴栨灙鏈鸿瑙掑亸绉绘甯歌搴︽垨琛ュ厜鐏簲浜湭浜�,24灏忔椂鍚庢湭淇鐨�",48D,25D,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,0.5); + setTemplateRule(list,null,"瀵逛簬鍓嶇鐐逛綅寮傚父鎯呭喌鐨勫鐞�","闀滃ご鏁呴殰鎴栨薄鏌撴垨鏍戞灊閬尅鎴栨灙鏈鸿瑙掑亸绉绘甯歌搴︽垨琛ュ厜鐏簲浜湭浜�,48灏忔椂鍚庢湭淇鐨�",null,49D,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,1.0); setTemplateRule(list,5,"纭繚褰曞儚瀹屾暣涓嶅畾鏈熷鎵�鏈夌偣浣嶅綍鍍忓畬鏁存�ф娊鏌�","姣忚矾瑙嗛绱涓㈠け10鍒嗛挓锛堝惈锛変互鍐�",10D,null,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,0.2); setTemplateRule(list,null,"纭繚褰曞儚瀹屾暣涓嶅畾鏈熷鎵�鏈夌偣浣嶅綍鍍忓畬鏁存�ф娊鏌�","涓㈠け10-60 鍒嗛挓锛堝惈锛�",60D,9D,RuleDeductCategoryEnum.MULTIPLY_POINTS_BY_QUANTITY,0.5); diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java index 8331f28..fc7760c 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java +++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java @@ -679,6 +679,6 @@ public void updateImgById(Integer workOrderId, String imgPath) { new LambdaUpdateChainWrapper<>(baseMapper) .eq(WorkOrder::getId, workOrderId) - .set(WorkOrder::getYwCheckCondition, imgPath); + .set(WorkOrder::getYwCheckResult, imgPath); } } diff --git a/ycl-server/src/main/java/com/ycl/task/ContractTask.java b/ycl-server/src/main/java/com/ycl/task/ContractTask.java index ac7cb70..aa9b899 100644 --- a/ycl-server/src/main/java/com/ycl/task/ContractTask.java +++ b/ycl-server/src/main/java/com/ycl/task/ContractTask.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.mongodb.client.result.DeleteResult; import com.ycl.platform.domain.entity.*; import com.ycl.platform.domain.result.HK.PicAccessResult; @@ -11,14 +12,18 @@ import com.ycl.platform.domain.vo.CalculateRuleVO; import com.ycl.platform.domain.vo.ContractVO; import com.ycl.platform.domain.vo.ReportVO; +import com.ycl.platform.domain.vo.WorkOrderVO; import com.ycl.platform.mapper.*; import com.ycl.platform.service.IContractScoreService; import com.ycl.utils.DateUtils; import constant.ApiConstants; import constant.RedisConstant; import enumeration.ContractRule; +import enumeration.ErrorType; import enumeration.general.AuditingStatus; +import enumeration.general.ErrorTypeEnum; import enumeration.general.RuleDeductCategoryEnum; +import enumeration.general.WorkOrderStatusEnum; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; @@ -31,6 +36,8 @@ import javax.management.monitor.Monitor; import java.math.BigDecimal; import java.math.RoundingMode; +import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @@ -44,10 +51,6 @@ @Autowired private MongoTemplate mongoTemplate; @Autowired - private RedisTemplate redisTemplate; - @Autowired - private TMonitorMapper monitorMapper; - @Autowired private TContractMapper contractMapper; @Autowired private YwPointMapper ywPointMapper; @@ -57,6 +60,8 @@ private ContractRuleRecordMapper recordMapper; @Autowired private IContractScoreService contractScoreService; + @Autowired + private WorkOrderMapper workOrderMapper; private static final Integer Online = 1; private static final Integer Offline = -1; @@ -172,21 +177,7 @@ if (checkRange(min, max, siteOnline.multiply(new BigDecimal(100)))) { //闇�瑕佹墸闄ょ殑鍒嗘暟 Double deductScore = ruleVO.getCalcFraction(); - ContractScore contractScore = new ContractScore(); - contractScore.setContractId(Long.parseLong(contractId + "")); - contractScore.setAuditingStatus(AuditingStatus.PASS); - contractScore.setAuditingTime(new Date()); - contractScore.setAuditingUser(Remark); - contractScore.setUnitId(Long.parseLong(unitId + "")); - contractScore.setRuleId(Long.parseLong(ruleVO.getId() + "")); - contractScore.setRuleIds("0," + ruleVO.getId()); - contractScore.setNum(siteOnline + ""); - contractScore.setDeductCategory(ruleVO.getDeductCategory().getDesc()); - contractScore.setScore(new BigDecimal(deductScore)); - contractScore.setRuleName(ruleVO.getRuleName() + "/" + ruleVO.getRuleCondition()); - contractScore.setCreateTime(new Date()); - contractScore.setUpdateTime(new Date()); - contractScore.setRemark(Remark); + ContractScore contractScore = getContractScore(ruleVO, deductScore, siteOnline + "", Remark); contractScoreList.add(contractScore); } } @@ -197,19 +188,6 @@ log.info("缁撴潫璁$畻鍚堝悓鐐逛綅鍦ㄧ嚎鐜囧垎鏁�"); } - private boolean checkRange(Double min, Double max, BigDecimal siteOnline) { - if (siteOnline == null) { - return false; - } - if (max != null && siteOnline.compareTo(new BigDecimal(max)) > 0) { - return false; - } - if (min != null && siteOnline.compareTo(new BigDecimal(min)) < 0) { - return false; - } - return true; - } - /** * 妫�娴嬪伐鍗曡〃 杩涜鍚堝悓绉垎鎵i櫎 * 鏌ュ嚭宸ュ崟闇�瑕佹墸鍒嗙殑鎵�鏈夎鍒� @@ -218,6 +196,10 @@ * 鎻掑叆鍚堝悓绉垎琛紝淇敼宸ュ崟鐘舵�佷负宸叉墸鍒� */ public void workOrderDeduct() { + log.info("寮�濮嬫壂鎻忓伐鍗曟墸鍒�"); + //鍑嗗鎵归噺鎵撳垎鐨勯泦鍚� + List<ContractScore> contractScoreList = new ArrayList<>(); + List<String> workOrderList = new ArrayList<>(); //鏌ヨ鐢熸晥鍚堝悓瀵瑰簲鎵�鏈夌殑瑙勫垯 List<CalculateRuleVO> calculateRules = contractMapper.getCalculateRule(new Date()); Map<String, Map<Integer, List<CalculateRuleVO>>> ruleMap = calculateRules.stream() @@ -233,8 +215,112 @@ Map<Integer, List<CalculateRuleVO>> storeRuleMap = ruleMap.get(ContractRule.CONTRACT_RULE_Store.getName()); //鐐逛綅寮傚父鎯呭喌澶勭悊 鑾峰彇key涓哄悎鍚宨d锛寁alue涓鸿鍒欑殑map Map<Integer, List<CalculateRuleVO>> siteRuleMap = ruleMap.get(ContractRule.CONTRACT_RULE_Site.getName()); + //鏌ヨ鎶ュ鍒楄〃 + List<String> reportNumbers = reportMapper.selectNumberList(AuditStatus_Pass, DateUtils.getDate()); + //鏌ヨ30澶╁唴鎵�鏈夋湭鎵e垎銆佸鏍搁�氳繃鐨勫伐鍗� + // 鑾峰彇褰撳墠鏃ユ湡 + LocalDateTime endTime = LocalDateTime.now(); + // 璁$畻30澶╁墠鐨勬棩鏈� + LocalDateTime startTime = endTime.minusDays(30); + List<WorkOrderVO> workOrders = workOrderMapper.selectPassOrder(startTime, endTime, WorkOrderStatusEnum.AUDITING_SUCCESS.getValue(), "瀹℃牳閫氳繃"); + for (WorkOrderVO workOrder : workOrders) { + //妫�娴嬫槸鍚︽姤澶囪繃 + if (!CollectionUtils.isEmpty(reportNumbers)) { + if(reportNumbers.contains(workOrder.getSerialNumber())) continue; + } + String errorType = workOrder.getErrorType(); + //瀛樺偍鏁呴殰 褰曞儚鎴栧浘鐗囪闂紓甯� + if (ErrorType.VIDEO_NONE.getValue().equals(errorType) || ErrorType.PIC_URLABNORMAL.getValue().equals(errorType)) { + if (!CollectionUtils.isEmpty(storeRuleMap)) { + storeRuleMap.forEach((contractId, rules) -> { + Integer unitId = rules.get(0).getUnitId(); + //鎵惧埌瀵瑰簲鐨勮鍒� + if (workOrder.getUnitId().equals(unitId)) { + //宸ュ崟涓嬪彂鏃堕棿 + Date createTime = workOrder.getDistributeTime(); + Date auditTime = workOrder.getAuditTime(); + double diffTime = (double) (auditTime.getTime() - createTime.getTime()) / (1000 * 60 * 60); + //閫夋嫨鏃堕棿鑼冨洿鍐呯殑瑙勫垯 + for (CalculateRuleVO rule : rules) { + if (checkRange(rule.getMin(), rule.getMax(), new BigDecimal(diffTime))) { + double deductScore = rule.getCalcFraction() * Math.ceil(diffTime); + ContractScore contractScore = getContractScore(rule, deductScore, Math.round(diffTime * 100) / 100 + "", Remark + "宸ュ崟缂栧彿涓�:" + workOrder.getWorkOrderNo() + "澶勭悊瓒呮椂锛屾墸闄�" + deductScore + "鍒�"); + contractScoreList.add(contractScore); + workOrderList.add(workOrder.getWorkOrderNo()); + } + } + } + }); + } + } + //鍓嶇鎰熺煡婧愭不鐞嗗伐浣滐紙鏃堕挓鍚屾瑙勫垯銆丱SD瑙勫垯銆佷竴鏈轰竴妗h鍒欙級 + if (ErrorType.MONITOR_UNQUALIFY.getValue().equals(errorType) || ErrorType.OSD_ERROR.getValue().equals(errorType) || ErrorType.CLOCK_SKEW.getValue().equals(errorType)) { + if (!CollectionUtils.isEmpty(monitorRuleMap)) { + monitorRuleMap.forEach((contractId, rules) -> { + Integer unitId = rules.get(0).getUnitId(); + //鎵惧埌瀵瑰簲鐨勮鍒� + if (workOrder.getUnitId().equals(unitId)) { + //宸ュ崟涓嬪彂鏃堕棿 + Date createTime = workOrder.getDistributeTime(); + Date auditTime = workOrder.getAuditTime(); + double diffTime = (double) (auditTime.getTime() - createTime.getTime()) / (1000 * 60 * 60); + //閫夋嫨鏃堕棿鑼冨洿鍐呯殑瑙勫垯 + for (CalculateRuleVO rule : rules) { + if (checkRange(rule.getMin(), rule.getMax(), new BigDecimal(diffTime))) { + double deductScore = rule.getCalcFraction(); + ContractScore contractScore = getContractScore(rule, deductScore, Math.round(diffTime * 100) / 100 + "", Remark + "宸ュ崟缂栧彿涓�:" + workOrder.getWorkOrderNo() + "澶勭悊瓒呮椂锛屾墸闄�" + deductScore + "鍒�"); + contractScoreList.add(contractScore); + workOrderList.add(workOrder.getWorkOrderNo()); + } + } + } + }); + } + } + //鐐逛綅寮傚父鎯呭喌澶勭悊锛堥暅澶村紓甯搞�佹憚鍍忓ご閬尅绛夛級 + if (ErrorType.SCREEN_COLOR_DEVIATION.getValue().equals(errorType) || ErrorType.SNOW_STORM.getValue().equals(errorType) || ErrorType.STRIPE_INTERFERENCE.getValue().equals(errorType) || ErrorType.SCREEN_OCCLUSION.getValue().equals(errorType) || ErrorType.ABNORMAL_CLARITY.getValue().equals(errorType) || ErrorType.ABNORMAL_BRIGHTNESS.getValue().equals(errorType)) { + if (!CollectionUtils.isEmpty(monitorRuleMap)) { + siteRuleMap.forEach((contractId, rules) -> { + Integer unitId = rules.get(0).getUnitId(); + //璁惧鏄惁鏄鍏徃杩愮淮 + if (workOrder.getUnitId().equals(unitId)) { + //宸ュ崟涓嬪彂鏃堕棿 + Date createTime = workOrder.getDistributeTime(); + Date auditTime = workOrder.getAuditTime(); + double diffTime = (double) (auditTime.getTime() - createTime.getTime()) / (1000 * 60 * 60); + //閫夋嫨鏃堕棿鑼冨洿鍐呯殑瑙勫垯 + for (CalculateRuleVO rule : rules) { + if (checkRange(rule.getMin(), rule.getMax(), new BigDecimal(diffTime))) { + double deductScore = 0d; + if (ContractRule.CONTRACT_RULE_Store_48H.getName().equals(rule.getRuleCondition())) { + //璁$畻瓒呮椂澶╂暟 + int day = (int) ((diffTime - 48) / 24 + 1); + deductScore = rule.getCalcFraction() * (day); + } else { + deductScore = rule.getCalcFraction(); + } + ContractScore contractScore = getContractScore(rule, deductScore, Math.round(diffTime * 100) / 100 + "", Remark + "宸ュ崟缂栧彿涓�:" + workOrder.getWorkOrderNo() + "澶勭悊瓒呮椂锛屾墸闄�" + deductScore + "鍒�"); + contractScoreList.add(contractScore); + workOrderList.add(workOrder.getWorkOrderNo()); + } + } + } + }); + } + } + } + contractScoreService.saveBatch(contractScoreList); + if (!CollectionUtils.isEmpty(workOrderList)) { + //淇敼宸ュ崟鎵e垎鐘舵�佷负宸叉墸鍒� + UpdateWrapper<WorkOrder> updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("work_order_no", workOrderList); + updateWrapper.set("deduct", 1); + workOrderMapper.update(null, updateWrapper); + } + log.info("缁撴潫鎵ц宸ュ崟鎵e垎"); } + /** * 涓嶅畾鏈熸鏌ユ暟鎹� 鎵i櫎绉垎 @@ -249,7 +335,8 @@ log.info("寮�濮嬫娊鏌ュ浘鐗囧畬鏁寸姸鎬�"); //鍑嗗鎵归噺鎵撳垎鐨勯泦鍚� List<ContractScore> contractScoreList = new ArrayList<>(); - + //鏌ヨ鎶ュ鍒楄〃 + List<String> reportNumbers = reportMapper.selectNumberList(AuditStatus_Pass, DateUtils.getDate()); Date date = DateUtils.getDay(2024, 7, 13); //鏌ュ浘鐗囧畬鏁存�ц鍒� 鑾峰彇key涓哄悎鍚宨d锛寁alue涓鸿鍒欑殑map Map<Integer, List<CalculateRuleVO>> contractMap = contractMapper.getCalculateRule(new Date()).stream() @@ -269,45 +356,37 @@ Collectors.mapping( YwPoint::getSerialNumber, Collectors.toList()))); - contractMap.forEach((contractId, ruleList) -> { - boolean deduct = false; - String serialNumber = null; - //姝よ鍒欏搴旂殑unitId鍧囩浉绛� - CalculateRuleVO ruleVO = ruleList.get(0); - Integer unitId = ruleVO.getUnitId(); - List<String> monitorList = unitMonitorMap.get(Long.parseLong(unitId + "")); - for (PicAccessResult picAccessResult : picAccessResults) { - //鍒ゆ柇鏄惁鏄鍏徃杩愮淮 - if (monitorList.contains(picAccessResult.getExternalIndexCode())) { - //瀛樺湪澶у浘涓嶅彲鐢ㄦ暟鎹噺锛岄渶瑕佹墸鍑� - if (picAccessResult.getBigDisableCount() > 0) { - deduct = true; - serialNumber = picAccessResult.getExternalIndexCode(); - break; + if (!CollectionUtils.isEmpty(contractMap)) { + contractMap.forEach((contractId, ruleList) -> { + boolean deduct = false; + String serialNumber = null; + //姝よ鍒欏搴旂殑unitId鍧囩浉绛� + CalculateRuleVO ruleVO = ruleList.get(0); + Integer unitId = ruleVO.getUnitId(); + List<String> monitorList = unitMonitorMap.get(Long.parseLong(unitId + "")); + for (PicAccessResult picAccessResult : picAccessResults) { + //鍒ゆ柇鏄惁鎶ュ杩� + if (!CollectionUtils.isEmpty(reportNumbers)) { + if(reportNumbers.contains(picAccessResult.getExternalIndexCode())) continue; + } + //鍒ゆ柇鏄惁鏄鍏徃杩愮淮 + if (monitorList.contains(picAccessResult.getExternalIndexCode())) { + //瀛樺湪澶у浘涓嶅彲鐢ㄦ暟鎹噺锛岄渶瑕佹墸鍑� + if (picAccessResult.getBigDisableCount() > 0) { + deduct = true; + serialNumber = picAccessResult.getExternalIndexCode(); + break; + } } } - } - if (deduct) { - //闇�瑕佹墸闄ょ殑鍒嗘暟锛屾瑙勫垯鍙湁涓�鏉′笉闇�瑕佸垽鏂寖鍥� - Double deductScore = ruleVO.getCalcFraction(); - ContractScore contractScore = new ContractScore(); - contractScore.setContractId(Long.parseLong(contractId + "")); - contractScore.setAuditingStatus(AuditingStatus.PASS); - contractScore.setAuditingTime(new Date()); - contractScore.setAuditingUser(Remark); - contractScore.setUnitId(Long.parseLong(ruleVO.getUnitId() + "")); - contractScore.setRuleId(Long.parseLong(ruleVO.getId() + "")); - contractScore.setRuleIds("0," + ruleVO.getId()); - contractScore.setNum(1 + ""); - contractScore.setDeductCategory(ruleVO.getDeductCategory().getDesc()); - contractScore.setScore(new BigDecimal(deductScore)); - contractScore.setRuleName(ruleVO.getRuleName() + "/" + ruleVO.getRuleCondition()); - contractScore.setCreateTime(new Date()); - contractScore.setUpdateTime(new Date()); - contractScore.setRemark(Remark + "鍥芥爣鐮佷负:" + serialNumber + "鏃堕棿锛�" + new Date() + "瀛樺湪澶у浘涓嶅彲鐢ㄦ暟鎹�"); - contractScoreList.add(contractScore); - } - }); + if (deduct) { + //闇�瑕佹墸闄ょ殑鍒嗘暟锛屾瑙勫垯鍙湁涓�鏉′笉闇�瑕佸垽鏂寖鍥� + Double deductScore = ruleVO.getCalcFraction(); + ContractScore contractScore = getContractScore(ruleVO, deductScore, "1", Remark + "鍥芥爣鐮佷负:" + serialNumber + "鏃堕棿锛�" + new Date() + "瀛樺湪澶у浘涓嶅彲鐢ㄦ暟鎹�"); + contractScoreList.add(contractScore); + } + }); + } contractScoreService.saveBatch(contractScoreList); log.info("缁撴潫鎶芥煡鍥剧墖瀹屾暣鐘舵��"); } @@ -327,7 +406,8 @@ log.info("寮�濮嬫娊鏌ュ綍鍍忓畬鏁寸姸鎬�"); //鍑嗗鎵归噺鎵撳垎鐨勯泦鍚� List<ContractScore> contractScoreList = new ArrayList<>(); - + //鏌ヨ鎶ュ鍒楄〃 + List<String> reportNumbers = reportMapper.selectNumberList(AuditStatus_Pass, DateUtils.getDate()); Date date = DateUtils.getDay(2024, 7, 13); //鏌ュ浘鐗囧畬鏁存�ц鍒� 鑾峰彇key涓哄悎鍚宨d锛寁alue涓鸿鍒欑殑map Map<Integer, List<CalculateRuleVO>> contractMap = contractMapper.getCalculateRule(new Date()).stream() @@ -347,54 +427,83 @@ Collectors.mapping( YwPoint::getSerialNumber, Collectors.toList()))); - contractMap.forEach((contractId, ruleList) -> { - //姝よ鍒欏搴旂殑unitId鍧囩浉绛� - CalculateRuleVO ruleVO = ruleList.get(0); - Integer unitId = ruleVO.getUnitId(); - List<String> monitorList = unitMonitorMap.get(Long.parseLong(unitId + "")); - for (RecordMetaDSumResult result : recordMetaDSumResults) { - //鍒ゆ柇鏄惁鏄鍏徃杩愮淮 - if (monitorList.contains(result.getDeviceId())) { - //褰曞儚鐘舵�佷笉瀹屾暣 - if (!Objects.equals(result.getRecordStatus(), ApiConstants.UY_RecordStatus_Integrity)) { - for (CalculateRuleVO calculateRuleVO : ruleList) { - Double max = calculateRuleVO.getMax(); - Double min = calculateRuleVO.getMin(); - //鍒ゆ柇鑼冨洿鍦ㄥ摢涓尯闂� - if (checkRange(min, max, BigDecimal.valueOf(result.getMissDuration()))) { - if(calculateRuleVO.getNum() == null){ - calculateRuleVO.setNum(1); - }else { - calculateRuleVO.setNum(calculateRuleVO.getNum()+1); + if (!CollectionUtils.isEmpty(contractMap)) { + contractMap.forEach((contractId, ruleList) -> { + //姝よ鍒欏搴旂殑unitId鍧囩浉绛� + CalculateRuleVO ruleVO = ruleList.get(0); + Integer unitId = ruleVO.getUnitId(); + List<String> monitorList = unitMonitorMap.get(Long.parseLong(unitId + "")); + for (RecordMetaDSumResult result : recordMetaDSumResults) { + //鍒ゆ柇鏄惁鎶ュ杩� + if (!CollectionUtils.isEmpty(reportNumbers)) { + if(reportNumbers.contains(result.getDeviceId())) continue; + } + //鍒ゆ柇鏄惁鏄鍏徃杩愮淮 + if (monitorList.contains(result.getDeviceId())) { + //褰曞儚鐘舵�佷笉瀹屾暣 + if (!Objects.equals(result.getRecordStatus(), ApiConstants.UY_RecordStatus_Integrity)) { + for (CalculateRuleVO calculateRuleVO : ruleList) { + Double max = calculateRuleVO.getMax(); + Double min = calculateRuleVO.getMin(); + //鍒ゆ柇鑼冨洿鍦ㄥ摢涓尯闂� + if (checkRange(min, max, BigDecimal.valueOf(result.getMissDuration()))) { + if (calculateRuleVO.getNum() == null) { + calculateRuleVO.setNum(1); + } else { + calculateRuleVO.setNum(calculateRuleVO.getNum() + 1); + } } } } } } - } - for (CalculateRuleVO calculateRuleVO : ruleList) { - //闇�瑕佹墸闄ょ殑鍒嗘暟锛屾瑙勫垯鍙湁涓�鏉′笉闇�瑕佸垽鏂寖鍥� - double deductScore = calculateRuleVO.getCalcFraction()*calculateRuleVO.getNum(); - ContractScore contractScore = new ContractScore(); - contractScore.setContractId(Long.parseLong(contractId + "")); - contractScore.setAuditingStatus(AuditingStatus.PASS); - contractScore.setAuditingTime(new Date()); - contractScore.setAuditingUser(Remark); - contractScore.setUnitId(Long.parseLong(calculateRuleVO.getUnitId() + "")); - contractScore.setRuleId(Long.parseLong(calculateRuleVO.getId() + "")); - contractScore.setRuleIds("0," + calculateRuleVO.getId()); - contractScore.setNum(calculateRuleVO.getNum() + ""); - contractScore.setDeductCategory(calculateRuleVO.getDeductCategory().getDesc()); - contractScore.setScore(new BigDecimal(deductScore)); - contractScore.setRuleName(calculateRuleVO.getRuleName() + "/" + calculateRuleVO.getRuleCondition()); - contractScore.setCreateTime(new Date()); - contractScore.setUpdateTime(new Date()); - contractScore.setRemark(Remark+calculateRuleVO.getNum()+"璺澶囪繚鍙嶈鍒�"); - contractScoreList.add(contractScore); - } - }); + for (CalculateRuleVO calculateRuleVO : ruleList) { + if (calculateRuleVO.getNum() > 0) { + //闇�瑕佹墸闄ょ殑鍒嗘暟锛屾瑙勫垯鍙湁涓�鏉′笉闇�瑕佸垽鏂寖鍥� + double deductScore = calculateRuleVO.getCalcFraction() * calculateRuleVO.getNum(); + ContractScore contractScore = getContractScore(calculateRuleVO, deductScore, calculateRuleVO.getNum() + "", Remark + calculateRuleVO.getNum() + "璺澶囪繚鍙嶈鍒�"); + contractScoreList.add(contractScore); + } + } + }); + } contractScoreService.saveBatch(contractScoreList); - log.info("缁撴潫鎶芥煡鍥剧墖瀹屾暣鐘舵��"); + log.info("缁撴潫鎶芥煡褰曞儚瀹屾暣鐘舵��"); } } + + private boolean checkRange(Double min, Double max, BigDecimal index) { + if (index == null) { + return false; + } + if (max == null && min == null) { + return false; + } + if (max != null && index.setScale(0, RoundingMode.DOWN).compareTo(new BigDecimal(max)) > 0) { + return false; + } + if (min != null && index.setScale(0, RoundingMode.UP).compareTo(new BigDecimal(min)) < 0) { + return false; + } + return true; + } + + private ContractScore getContractScore(CalculateRuleVO rule, double deductScore, String num, String remark) { + ContractScore contractScore = new ContractScore(); + contractScore.setContractId(Long.parseLong(rule.getContractId() + "")); + contractScore.setAuditingStatus(AuditingStatus.PASS); + contractScore.setAuditingTime(new Date()); + contractScore.setAuditingUser(Remark); + contractScore.setUnitId(Long.parseLong(rule.getUnitId() + "")); + contractScore.setRuleId(Long.parseLong(rule.getId() + "")); + contractScore.setRuleIds("0," + rule.getId()); + contractScore.setNum(num); + contractScore.setDeductCategory(rule.getDeductCategory().getDesc()); + contractScore.setScore(new BigDecimal(deductScore)); + contractScore.setRuleName(rule.getRuleName() + "/" + rule.getRuleCondition()); + contractScore.setCreateTime(new Date()); + contractScore.setUpdateTime(new Date()); + contractScore.setRemark(remark); + return contractScore; + } } diff --git a/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml index c97ca6c..3b06197 100644 --- a/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml +++ b/ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml @@ -39,7 +39,7 @@ AND r.status = #{query.status} </if> <if test="query.keyword != null and query.keyword != ''"> - AND (pt.point_name like concat('%', #{query.pointId}, '%') OR p.yw_person_name like concat('%', #{query.peopleId}, '%')) + AND (pt.point_name like concat('%', #{query.keyword}, '%') OR p.yw_person_name like concat('%', #{query.keyword}, '%')) </if> ORDER BY r.update_time DESC </select> diff --git a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml index c51e86a..5f18c6c 100644 --- a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml +++ b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml @@ -205,4 +205,12 @@ </foreach> </insert> + <select id="selectPassOrder" resultType="com.ycl.platform.domain.vo.WorkOrderVO"> + SELECT wo.id,wo.work_order_no,wo.unit_id,woet.error_name as errorType,woet.distribute_time,woar.create_time as auditTime + FROM t_work_order wo + LEFT JOIN t_work_order_error_type woet ON woet.work_order_no = wo.work_order_no + LEFT JOIN t_work_order_auditing_record woar ON woar.work_order_id = wo.id + WHERE wo.deleted = 0 AND wo.status = #{status} AND woar.result = #{auditStatus} + AND wo.deduct = 0 AND woar.create_time between #{startTime} and #{endTime} + </select> </mapper> -- Gitblit v1.8.0