diff --git a/securitycontrol-commons/securitycontrol-commons-entity/src/main/java/com/securitycontrol/entity/background/vo/DeviceBdDetailVo.java b/securitycontrol-commons/securitycontrol-commons-entity/src/main/java/com/securitycontrol/entity/background/vo/DeviceBdDetailVo.java index e1c0d1a..d35aed6 100644 --- a/securitycontrol-commons/securitycontrol-commons-entity/src/main/java/com/securitycontrol/entity/background/vo/DeviceBdDetailVo.java +++ b/securitycontrol-commons/securitycontrol-commons-entity/src/main/java/com/securitycontrol/entity/background/vo/DeviceBdDetailVo.java @@ -31,12 +31,12 @@ public class DeviceBdDetailVo { @ApiModelProperty("最大阈值") @Length(max = 50, message = "最大阈值字符长度不能超过50", groups = {Query.class}) - @Pattern(regexp = "(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))",message = "最大阈值为大于0的数字",groups = {SignProVo.Query.class}) + @Pattern(regexp = "(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))",message = "最大阈值为大于0的数字",groups = {Query.class}) private String maxValueData; @ApiModelProperty("最小阈值") @Length(max = 50, message = "最小阈值长字符度不能超过50", groups = {Query.class}) - @Pattern(regexp = "(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))",message = "最小阈值为大于0的数字",groups = {SignProVo.Query.class}) + @Pattern(regexp = "(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))",message = "最小阈值为大于0的数字",groups = {Query.class}) private String minValueData; @ApiModelProperty("采集值类型") diff --git a/securitycontrol-commons/securitycontrol-commons-entity/src/main/java/com/securitycontrol/entity/system/base/vo/ProVo.java b/securitycontrol-commons/securitycontrol-commons-entity/src/main/java/com/securitycontrol/entity/system/base/vo/ProVo.java index a27f650..354d60a 100644 --- a/securitycontrol-commons/securitycontrol-commons-entity/src/main/java/com/securitycontrol/entity/system/base/vo/ProVo.java +++ b/securitycontrol-commons/securitycontrol-commons-entity/src/main/java/com/securitycontrol/entity/system/base/vo/ProVo.java @@ -1,11 +1,13 @@ package com.securitycontrol.entity.system.base.vo; import com.fasterxml.jackson.annotation.JsonInclude; +import com.securitycontrol.entity.background.vo.DeviceBdDetailVo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.hibernate.validator.constraints.Length; import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Pattern; import java.util.List; @@ -49,6 +51,7 @@ public class ProVo { @ApiModelProperty(value = "工程成本") @NotBlank(message = "工程成本不能为空", groups = {Query.class}) + @Pattern(regexp = "(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))",message = "工程成本为大于0的数字",groups = {Query.class}) @Length(max = 50, message = "工程成本字符长度不能超过50", groups = {Query.class}) private String proCost; diff --git a/securitycontrol-model/securitycontrol-background/src/main/java/com/securitycontrol/background/service/impl/AppServiceImpl.java b/securitycontrol-model/securitycontrol-background/src/main/java/com/securitycontrol/background/service/impl/AppServiceImpl.java index 6d739b9..14f4f52 100644 --- a/securitycontrol-model/securitycontrol-background/src/main/java/com/securitycontrol/background/service/impl/AppServiceImpl.java +++ b/securitycontrol-model/securitycontrol-background/src/main/java/com/securitycontrol/background/service/impl/AppServiceImpl.java @@ -213,10 +213,12 @@ public class AppServiceImpl implements IAppService { @Override public AjaxResult proManagement(ParamDto dto) { Map dataMap = new HashMap<>(16); + Map proCost = new HashMap<>(16); ProVo vo = new ProVo(); JSONObject item = new JSONObject(); List> proGxPlanList = new ArrayList<>(); List proCostList = new ArrayList<>(); + double proCostData = 0.0,residueCostData = 0.0,expenditureCostData = 0.0; try { // 工程详情 vo = mapper.getProBrief(dto); @@ -236,13 +238,49 @@ public class AppServiceImpl implements IAppService { } // 标段工程成本 proCostList = mapper.getProCost(dto); + if(CollectionUtils.isNotEmpty(proCostList)){ + BigDecimal value = new BigDecimal("0"); + for (ProjectCostVo costVo : proCostList) { + String amount = costVo.getAmount(); + if(isNumeric(amount)){ + BigDecimal bigDecimal = new BigDecimal(amount); + value = value.add(bigDecimal); + } + } + expenditureCostData = value.doubleValue(); + } } catch (Exception e) { log.error("工程管理", e); } + // 计划成本 已支出 剩余 + if (vo != null && StringUtils.isNotEmpty(vo.getProCost()) && isNumeric(vo.getProCost())) { + proCostData = Double.parseDouble(vo.getProCost()); + } + if(proCostData >= expenditureCostData){ + BigDecimal value = BigDecimal.valueOf(proCostData); + BigDecimal value2 = BigDecimal.valueOf(expenditureCostData); + residueCostData = value.subtract(value2).doubleValue(); + } + proCost.put("proCostList", proCostList); + proCost.put("residueCost", residueCostData); + proCost.put("expenditureCost", expenditureCostData); + proCost.put("planCost", proCostData); dataMap.put("vo", vo); dataMap.put("item", item); dataMap.put("proGxPlan", proGxPlanList); - dataMap.put("proCost", proCostList); + dataMap.put("proCost", proCost); return AjaxResult.success(dataMap); } + + public static boolean isNumeric(String str) { + if (str == null || str.isEmpty()) { + return false; + } + try { + Double.parseDouble(str); + return true; + } catch (NumberFormatException e) { + return false; + } + } }