From 6acf9620606ca706c2b0b1b7cc4eaf7fa9fc7824 Mon Sep 17 00:00:00 2001 From: wxz Date: Fri, 11 Sep 2020 15:29:45 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=BB=88=E6=AD=A2?= =?UTF-8?q?=E8=AE=A1=E7=AE=97=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/indexcal/CalculateCommonFormDTO.java | 6 +++++ .../controller/IndexCalculateController.java | 26 ++++++++++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/indexcal/CalculateCommonFormDTO.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/indexcal/CalculateCommonFormDTO.java index 187f69c960..cfdc9f2ec9 100644 --- a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/indexcal/CalculateCommonFormDTO.java +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/indexcal/CalculateCommonFormDTO.java @@ -1,7 +1,9 @@ package com.epmet.dto.indexcal; +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; import lombok.Data; +import javax.validation.constraints.NotBlank; import java.io.Serializable; /** @@ -13,6 +15,9 @@ import java.io.Serializable; @Data public class CalculateCommonFormDTO implements Serializable { private static final long serialVersionUID = -5689788391963427717L; + + public interface CancelCalculateGroup extends CustomerClientShowGroup {} + /** * 月份id: yyyyMM */ @@ -21,6 +26,7 @@ public class CalculateCommonFormDTO implements Serializable { /** * 客户id */ + @NotBlank(message = "客户id不能为空", groups = { CancelCalculateGroup.class }) private String customerId; public CalculateCommonFormDTO() { diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/IndexCalculateController.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/IndexCalculateController.java index 0acdf28890..596a1f17ad 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/IndexCalculateController.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/IndexCalculateController.java @@ -7,6 +7,7 @@ import com.epmet.commons.tools.redis.RedisUtils; import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.HttpClientManager; import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.dto.indexcal.CalculateCommonFormDTO; import com.epmet.service.evaluationindex.indexcal.CpcIndexCalculateService; import com.epmet.service.evaluationindex.indexcal.IndexCalculateService; @@ -21,6 +22,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.Date; +import java.util.HashMap; +import java.util.Map; import java.util.concurrent.*; /** @@ -52,6 +55,8 @@ public class IndexCalculateController { // 计算同步锁 private Object statsCalLock = new Object(); + private Map futureMap = new HashMap<>(); + /** * 按照客户计算所有指标(按照月份) * @@ -72,7 +77,7 @@ public class IndexCalculateController { log.error(String.format("该客户正在执行计算,请勿重复提交计算请求。", customerId)); return new Result().ok(false); } - singleThreadPool.execute(() -> { + Future future = singleThreadPool.submit(() -> { formDTO.setCustomerId(customerId); long start = System.currentTimeMillis(); Boolean aBoolean = indexCalculateService.indexCalculate(formDTO); @@ -80,7 +85,9 @@ public class IndexCalculateController { log.error("客户Id:{},全部指标计算完成,总耗时:{}秒", customerId, (System.currentTimeMillis() - start) / 1000); } redisUtils.set(RedisKeys.getCustomerStatsCalFlag(customerId), false); + futureMap.remove(customerId); }); + futureMap.put(customerId, future); redisUtils.set(RedisKeys.getCustomerStatsCalFlag(customerId), true); } } else { @@ -92,6 +99,23 @@ public class IndexCalculateController { return new Result().ok(true); } + /** + * 终止计算 + * @param form + * @return + */ + @PostMapping("stopcalculate") + public Result stopcalculate(@RequestBody CalculateCommonFormDTO form) { + ValidatorUtils.validateEntity(form); + + String customerId = form.getCustomerId(); + Future future = this.futureMap.get(customerId); + if (future != null && !future.isCancelled()) { + future.cancel(true); + } + return new Result(); + } + @PostMapping("reAll") public Result calculateAll(@RequestBody CalculateCommonFormDTO formDTO) { long start = System.currentTimeMillis(); From 7a405702bf58c0af37fdd023c4f9a199b1b89259 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Fri, 11 Sep 2020 15:59:28 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=B3=A8=E9=87=8A=EF=BC=9A=E5=AE=A2?= =?UTF-8?q?=E6=88=B7=E4=B8=80=E7=BA=A7=E6=8C=87=E6=A0=87=E5=88=86=E5=80=BC?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E4=B8=8D=E5=AD=98=E5=9C=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../indexcal/impl/DeptScoreServiceImpl.java | 12 ++++++---- .../impl/GridCorreLationServiceImpl.java | 23 ++++++++++--------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/DeptScoreServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/DeptScoreServiceImpl.java index 5856241cbb..b918968ce5 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/DeptScoreServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/indexcal/impl/DeptScoreServiceImpl.java @@ -120,7 +120,7 @@ public class DeptScoreServiceImpl extends BaseServiceImpl indexList = getDetailListByParentCode.getDetailListByParentCode(formDTO.getCustomerId(), IndexCodeEnum.QU_ZHI_BU_MEN.getCode()); if (CollectionUtils.isEmpty(indexList)) { - log.warn("calculateDeptTotalScore customerId:{} have not any indexGroupDetail", formDTO.getCustomerId()); + log.error("calculateDeptTotalScore customerId:{} have not any indexGroupDetail", formDTO.getCustomerId()); throw new RenException("客户【区直部门】下级指标权重信息不存在"); } //查询总记录数 List deptScoreDTOList = deptScoreDao.selectList(formDTO); if(CollectionUtils.isEmpty(deptScoreDTOList)){ - log.error("calculateDeptTotalScore deptScoreDao.selectList return empty,customerId:{},monthId:{}", formDTO.getCustomerId(), formDTO.getMonthId()); - throw new RenException("客户一级指标分值记录不存在"); + log.warn("calculateDeptTotalScore deptScoreDao.selectList return empty,customerId:{},monthId:{}", formDTO.getCustomerId(), formDTO.getMonthId()); +// throw new RenException("客户一级指标分值记录不存在"); + log.warn(String.format("customerId=%s,monthId=%s,fact_index_dept_score have not any fact record", formDTO.getCustomerId(), formDTO.getMonthId())); + return; } Map indexMap = indexList.stream().collect(Collectors.toMap(IndexGroupDetailEntity::getIndexCode, Function.identity())); List deotScoreEntityList = new ArrayList<>(); @@ -339,7 +341,7 @@ public class DeptScoreServiceImpl extends BaseServiceImpl minAndMaxMap = queryPartyAblityGridMinAndMax(formDTO.getCustomerId(), formDTO.getMonthId()); if (CollectionUtils.isEmpty(minAndMaxMap)) { - log.error("calculateGridDangJian queryPartyAblityGridMinAndMax customerId:{} monthId:{} have not any fact record", formDTO.getCustomerId(),formDTO.getMonthId()); + log.warn("calculateGridDangJian queryPartyAblityGridMinAndMax customerId:{} monthId:{} have not any fact record", formDTO.getCustomerId(),formDTO.getMonthId()); return; } //指标集合 @@ -463,7 +463,7 @@ public class GridCorreLationServiceImpl implements GridCorreLationService { //获取指标对应的列名 String fieldName = indexCodeFieldReService.getFieldNameByIndexCode(index.getIndexCode()); if (StringUtils.isBlank(fieldName)) { - log.error("index_code:{} not find field_name",index.getIndexCode()); + log.warn("index_code:{} not find field_name",index.getIndexCode()); continue; } // log.info("index_code2:{} ,field_name:{}",index.getIndexCode(),fieldName); @@ -509,7 +509,7 @@ public class GridCorreLationServiceImpl implements GridCorreLationService { IndexCodeEnum.WANG_GE_XIANG_GUAN.getCode(), IndexCodeEnum.ZHI_LI_NENG_LI.getCode()); if (CollectionUtils.isEmpty(indexList)) { - log.warn("calculateGridZhiLi customerId:{} have not any indexGroupDetail", formDTO.getCustomerId()); + log.error("calculateGridZhiLi customerId:{} have not any indexGroupDetail", formDTO.getCustomerId()); throw new RenException("客户【网格相关:治理能力】指标权重信息不存在"); } //查询总记录数 @@ -524,7 +524,7 @@ public class GridCorreLationServiceImpl implements GridCorreLationService { //每一组指标的最大值,key:code_MIN/MAX Map minAndMaxMap = queryGovrnAblityGridMinAndMax(formDTO.getCustomerId(), formDTO.getMonthId()); if (CollectionUtils.isEmpty(minAndMaxMap)) { - log.error("calculateGridZhiLi queryGovrnAblityGridMinAndMax customerId:{} monthId:{} have not any fact record", formDTO.getCustomerId(),formDTO.getMonthId()); + log.warn("calculateGridZhiLi queryGovrnAblityGridMinAndMax customerId:{} monthId:{} have not any fact record", formDTO.getCustomerId(),formDTO.getMonthId()); return; } //指标集合 @@ -582,7 +582,7 @@ public class GridCorreLationServiceImpl implements GridCorreLationService { IndexCodeEnum.WANG_GE_XIANG_GUAN.getCode(), IndexCodeEnum.FU_WU_NENG_LI.getCode()); if (CollectionUtils.isEmpty(indexList)) { - log.warn("calculateGridFuWu customerId:{} have not any indexGroupDetail", formDTO.getCustomerId()); + log.error("calculateGridFuWu customerId:{} have not any indexGroupDetail", formDTO.getCustomerId()); throw new RenException("客户【网格相关:服务能力】指标权重信息不存在"); } //查询总记录数 @@ -597,7 +597,7 @@ public class GridCorreLationServiceImpl implements GridCorreLationService { //每一组指标的最大值,key:code_MIN/MAX Map minAndMaxMap = queryServiceAblityGridMinAndMax(formDTO.getCustomerId(), formDTO.getMonthId()); if (CollectionUtils.isEmpty(minAndMaxMap)) { - log.error("calculateGridFuWu queryServiceAblityGridMinAndMax customerId:{} monthId:{} have not any fact record", formDTO.getCustomerId(),formDTO.getMonthId()); + log.warn("calculateGridFuWu queryServiceAblityGridMinAndMax customerId:{} monthId:{} have not any fact record", formDTO.getCustomerId(),formDTO.getMonthId()); return; } //指标集合 @@ -623,7 +623,7 @@ public class GridCorreLationServiceImpl implements GridCorreLationService { SampleValue currentGridIndexValue = new SampleValue((String) recordMap.get(IndexCalConstant.GRID_ID), new BigDecimal(sampleValueStr)); value.getIndexValueVOs().add(currentGridIndexValue); } else { - log.error("index_code:" + key + " not find field_name"); + log.warn("index_code:" + key + " not find field_name"); } }); }); @@ -649,14 +649,15 @@ public class GridCorreLationServiceImpl implements GridCorreLationService { List indexList = indexGroupDetailService.getDetailListByParentCode(formDTO.getCustomerId(), IndexCodeEnum.WANG_GE_XIANG_GUAN.getCode()); if (CollectionUtils.isEmpty(indexList)) { - log.warn("calculateGridTotal customerId:{} have not any indexGroupDetail", formDTO.getCustomerId()); + log.error("calculateGridTotal customerId:{} have not any indexGroupDetail", formDTO.getCustomerId()); throw new RenException("客户【网格相关】指标权重信息不存在"); } //查询总记录数 List gridScoreDTOList = gridScoreDao.selectList(formDTO); if(CollectionUtils.isEmpty(gridScoreDTOList)){ - log.error("calculateGridTotal gridScoreDao.selectList return empty,customerId:{},monthId:{}", formDTO.getCustomerId(), formDTO.getMonthId()); - throw new RenException("客户一级指标分值记录不存在"); + log.warn("calculateGridTotal gridScoreDao.selectList return empty,customerId:{},monthId:{}", formDTO.getCustomerId(), formDTO.getMonthId()); +// throw new RenException("客户一级指标分值记录不存在"); + return; } Map indexMap = indexList.stream().collect(Collectors.toMap(IndexGroupDetailEntity::getIndexCode, Function.identity())); List gridScoreEntityList = new ArrayList<>();