diff --git a/securitycontrol-commons/securitycontrol-commons-entity/src/main/java/com/securitycontrol/entity/screen/vo/ConstrQuality.java b/securitycontrol-commons/securitycontrol-commons-entity/src/main/java/com/securitycontrol/entity/screen/vo/ConstrQuality.java new file mode 100644 index 0000000..1037b1f --- /dev/null +++ b/securitycontrol-commons/securitycontrol-commons-entity/src/main/java/com/securitycontrol/entity/screen/vo/ConstrQuality.java @@ -0,0 +1,29 @@ +package com.securitycontrol.entity.screen.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author:cwchen + * @date:2024-03-27-15:23 + * @version:1.0 + * @description:施工质量-VO + */ +@Data +public class ConstrQuality { + + @ApiModelProperty("标段编码") + private String bidCode; + @ApiModelProperty("标段工程名称") + private String bidName; + @ApiModelProperty("班组名称") + private String teamName; + @ApiModelProperty("班组长") + private String teamLeader; + @ApiModelProperty("施工质量") + private String constrQuality; + @ApiModelProperty("班组ID") + private String teamId; + @ApiModelProperty("分数") + private double score; +} diff --git a/securitycontrol-commons/securitycontrol-commons-entity/src/main/java/com/securitycontrol/entity/screen/vo/MapRiskVo.java b/securitycontrol-commons/securitycontrol-commons-entity/src/main/java/com/securitycontrol/entity/screen/vo/MapRiskVo.java new file mode 100644 index 0000000..6d614f1 --- /dev/null +++ b/securitycontrol-commons/securitycontrol-commons-entity/src/main/java/com/securitycontrol/entity/screen/vo/MapRiskVo.java @@ -0,0 +1,41 @@ +package com.securitycontrol.entity.screen.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author:cwchen + * @date:2024-03-27-15:04 + * @version:1.0 + * @description:地图风险点 + */ +@Data +public class MapRiskVo { + + @ApiModelProperty("站班会ID") + private String classId; + + @ApiModelProperty("经度") + private String lon; + + @ApiModelProperty("纬度") + private String lat; + + @ApiModelProperty("标段编码") + private String bidCode; + + @ApiModelProperty("标段工程名称") + private String bidName; + + @ApiModelProperty("班组名称") + private String teamName; + + @ApiModelProperty("风险等级") + private String riskLevel; + + @ApiModelProperty("工作内容") + private String workContent; + + @ApiModelProperty("班组长") + private String workManager; +} diff --git a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/controller/ScIndexController.java b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/controller/ScIndexController.java index 8b52cfd..9dd1b2c 100644 --- a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/controller/ScIndexController.java +++ b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/controller/ScIndexController.java @@ -4,7 +4,6 @@ import com.securitycontrol.common.core.web.domain.AjaxResult; import com.securitycontrol.entity.screen.dto.ScreenParamDto; import com.securitycontrol.screen.service.IScIndexService; import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -29,4 +28,16 @@ public class ScIndexController { public AjaxResult proStatusStatistics(ScreenParamDto dto){ return service.proStatusStatistics(dto); } + + @ApiOperation(value = "地图风险点") + @PostMapping("riskStatistics") + public AjaxResult riskStatistics(ScreenParamDto dto){ + return service.riskStatistics(dto); + } + + @ApiOperation(value = "施工质量") + @PostMapping("constrQuality") + public AjaxResult constrQuality(ScreenParamDto dto){ + return service.constrQuality(dto); + } } diff --git a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/mapper/IScIndexMapper.java b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/mapper/IScIndexMapper.java index 18db4ee..94e1d96 100644 --- a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/mapper/IScIndexMapper.java +++ b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/mapper/IScIndexMapper.java @@ -1,6 +1,8 @@ package com.securitycontrol.screen.mapper; import com.securitycontrol.entity.screen.dto.ScreenParamDto; +import com.securitycontrol.entity.screen.vo.ConstrQuality; +import com.securitycontrol.entity.screen.vo.MapRiskVo; import org.apache.ibatis.annotations.MapKey; import org.springframework.stereotype.Repository; @@ -17,6 +19,7 @@ import java.util.Map; public interface IScIndexMapper { /** * 工程统计 + * * @param dto * @return List> * @description @@ -25,4 +28,25 @@ public interface IScIndexMapper { */ @MapKey("id") List> proStatusStatistics(ScreenParamDto dto); + + /** + * 地图风险点 + * + * @param dto + * @return List + * @description + * @author cwchen + * @date 2024/3/27 15:06 + */ + List riskStatistics(ScreenParamDto dto); + + /** + * 施工质量 + * @param dto + * @return List + * @description + * @author cwchen + * @date 2024/3/27 15:26 + */ + List constrQuality(ScreenParamDto dto); } diff --git a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/IScIndexService.java b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/IScIndexService.java index ff50f15..7de3a63 100644 --- a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/IScIndexService.java +++ b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/IScIndexService.java @@ -12,6 +12,7 @@ import com.securitycontrol.entity.screen.dto.ScreenParamDto; public interface IScIndexService { /** * 工程统计 + * * @param dto * @return AjaxResult * @description @@ -19,4 +20,25 @@ public interface IScIndexService { * @date 2024/3/27 10:42 */ AjaxResult proStatusStatistics(ScreenParamDto dto); + + /** + * 地图风险点 + * + * @param dto + * @return AjaxResult + * @description + * @author cwchen + * @date 2024/3/27 15:03 + */ + AjaxResult riskStatistics(ScreenParamDto dto); + + /** + * 施工质量 + * @param dto + * @return AjaxResult + * @description + * @author cwchen + * @date 2024/3/27 15:18 + */ + AjaxResult constrQuality(ScreenParamDto dto); } diff --git a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/impl/ScIndexServiceImpl.java b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/impl/ScIndexServiceImpl.java index bc4f5dc..65d59f8 100644 --- a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/impl/ScIndexServiceImpl.java +++ b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/impl/ScIndexServiceImpl.java @@ -1,15 +1,21 @@ package com.securitycontrol.screen.service.impl; import com.securitycontrol.common.core.constant.Constant; +import com.securitycontrol.common.core.utils.StringUtils; import com.securitycontrol.common.core.web.domain.AjaxResult; import com.securitycontrol.entity.screen.dto.ScreenParamDto; +import com.securitycontrol.entity.screen.vo.ConstrQuality; +import com.securitycontrol.entity.screen.vo.MapRiskVo; import com.securitycontrol.screen.mapper.IScIndexMapper; import com.securitycontrol.screen.service.IScIndexService; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.*; +import java.util.stream.Collectors; /** * @author:cwchen @@ -33,13 +39,13 @@ public class ScIndexServiceImpl implements IScIndexService { list = mapper.proStatusStatistics(dto); for (Map map : list) { String name = String.valueOf(map.get("name")); - if(Objects.equals(name, Constant.ZJ)){ + if (Objects.equals(name, Constant.ZJ)) { zjNum = Integer.parseInt(String.valueOf(map.get("num"))); - }else if(Objects.equals(name, Constant.DJ)){ + } else if (Objects.equals(name, Constant.DJ)) { djNum = Integer.parseInt(String.valueOf(map.get("num"))); - }else if(Objects.equals(name, Constant.TC)){ + } else if (Objects.equals(name, Constant.TC)) { tcNum = Integer.parseInt(String.valueOf(map.get("num"))); - }else if(Objects.equals(name, Constant.TG)){ + } else if (Objects.equals(name, Constant.TG)) { tgNum = Integer.parseInt(String.valueOf(map.get("num"))); } } @@ -53,4 +59,63 @@ public class ScIndexServiceImpl implements IScIndexService { dataMap.put("allNum", zjNum + djNum + tcNum + tgNum); return AjaxResult.success(dataMap); } + + @Override + public AjaxResult riskStatistics(ScreenParamDto dto) { + List list = new ArrayList<>(500); + try { + list = mapper.riskStatistics(dto); + } catch (Exception e) { + log.error("地图风险点", e); + } + return AjaxResult.success(list); + } + + @Override + public AjaxResult constrQuality(ScreenParamDto dto) { + List dataList = new ArrayList<>(160); + List list = new ArrayList<>(2000); + try { + list = mapper.constrQuality(dto); + Map> map = list.stream().collect(Collectors.groupingBy(item -> { + return item.getTeamId(); + })); + map.forEach((k, v) -> { + ConstrQuality vo = new ConstrQuality(); + BigDecimal score = new BigDecimal("0"); + BigDecimal multipleValue = new BigDecimal("20"); + for (int i = 0; i < v.size(); i++) { + String constrQuality = v.get(i).getConstrQuality(); + boolean flag = isNumeric(constrQuality); + if(flag){ + BigDecimal value = new BigDecimal(constrQuality); + score = score.add(value); + } + } + // 分数 * 20 在除以分组数量 + BigDecimal divideValue = BigDecimal.valueOf(v.size()); + score = score.multiply(multipleValue); + score = score.divide(divideValue, 0, BigDecimal.ROUND_HALF_UP); + BeanUtils.copyProperties(v.get(0), vo); + vo.setScore(score.doubleValue()); + dataList.add(vo); + }); + } catch (Exception e) { + log.error("施工质量", e); + } + List sortDataList = dataList.stream().sorted(Comparator.comparing(ConstrQuality::getScore, Comparator.reverseOrder())).collect(Collectors.toList()); + return AjaxResult.success(sortDataList); + } + + public static boolean isNumeric(String str) { + if (str == null || str.isEmpty()) { + return false; + } + try { + Double.parseDouble(str); + return true; + } catch (NumberFormatException e) { + return false; + } + } } diff --git a/securitycontrol-model/securitycontrol-screen/src/main/resources/mapper/ScIndexMapper.xml b/securitycontrol-model/securitycontrol-screen/src/main/resources/mapper/ScIndexMapper.xml index a50de8c..6141eb2 100644 --- a/securitycontrol-model/securitycontrol-screen/src/main/resources/mapper/ScIndexMapper.xml +++ b/securitycontrol-model/securitycontrol-screen/src/main/resources/mapper/ScIndexMapper.xml @@ -17,4 +17,31 @@ ) a ON a.status = sd.dict_code WHERE sd.p_code = 1200 AND sd.del_flag = 0 + + + + \ No newline at end of file