From a996673914a4918de73e81919e08e2025f79605d Mon Sep 17 00:00:00 2001 From: haozq <1611483981@qq.com> Date: Sat, 30 Mar 2024 18:33:27 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E9=A1=B5=20=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/utils/aes/DateTimeHelper.java | 39 ++++- .../entity/screen/vo/ProCostVo.java | 40 +++++ .../entity/system/SystemGlobal.java | 2 + .../screen/controller/XcIndexController.java | 32 ++++ .../screen/mapper/XcIndexMapper.java | 32 ++++ .../screen/service/XcIndexService.java | 21 +++ .../service/impl/XcIndexServiceImpl.java | 144 +++++++++++++++++- .../main/resources/mapper/XcIndexMapper.xml | 33 +++- 8 files changed, 336 insertions(+), 7 deletions(-) create mode 100644 securitycontrol-commons/securitycontrol-commons-entity/src/main/java/com/securitycontrol/entity/screen/vo/ProCostVo.java diff --git a/securitycontrol-commons/securitycontrol-commons-core/src/main/java/com/securitycontrol/common/core/utils/aes/DateTimeHelper.java b/securitycontrol-commons/securitycontrol-commons-core/src/main/java/com/securitycontrol/common/core/utils/aes/DateTimeHelper.java index 5d0408a..5486464 100644 --- a/securitycontrol-commons/securitycontrol-commons-core/src/main/java/com/securitycontrol/common/core/utils/aes/DateTimeHelper.java +++ b/securitycontrol-commons/securitycontrol-commons-core/src/main/java/com/securitycontrol/common/core/utils/aes/DateTimeHelper.java @@ -1,5 +1,6 @@ package com.securitycontrol.common.core.utils.aes; +import com.sun.org.apache.bcel.internal.generic.RETURN; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -27,7 +28,27 @@ public class DateTimeHelper { return df.format(d); } + public static boolean compareMonth(String time,String now){ + try{ + int year=Integer.parseInt(time.split("-")[0].trim()) ; + int month=Integer.parseInt(time.split("-")[1].trim()) ; + int year1=Integer.parseInt(now.split("-")[0].trim()) ; + int month1=Integer.parseInt(now.split("-")[1].trim()) ; + if(year>year1){ + return false; + } + if(year==year1){ + if(month>=month1){ + return false; + } + } + return true; + }catch (Exception e){ + log.error(e.toString(),e); + } + return false; + } /** * 增加 LocalDateTime ==> Date */ @@ -340,6 +361,21 @@ public class DateTimeHelper { return null; } + + public static String getAddMonth(String time,int num){ + try { + Integer year=Integer.parseInt(time.split("-")[0].trim()) ; + Integer month=Integer.parseInt(time.split("-")[1].trim()) ; + YearMonth yearMonth = YearMonth.of(year, month); + YearMonth addedMonth = yearMonth.plusMonths(1); // 结果是2023年4月 + return addedMonth.toString(); + } catch (Exception e) { + log.error(e.toString(), e); + } + return null; + + } + /** * 获取七周日期 * @@ -358,9 +394,6 @@ public class DateTimeHelper { } - public static void main(String[] args) { - } - /** * 得到前一个月 diff --git a/securitycontrol-commons/securitycontrol-commons-entity/src/main/java/com/securitycontrol/entity/screen/vo/ProCostVo.java b/securitycontrol-commons/securitycontrol-commons-entity/src/main/java/com/securitycontrol/entity/screen/vo/ProCostVo.java new file mode 100644 index 0000000..8fc2ef5 --- /dev/null +++ b/securitycontrol-commons/securitycontrol-commons-entity/src/main/java/com/securitycontrol/entity/screen/vo/ProCostVo.java @@ -0,0 +1,40 @@ +package com.securitycontrol.entity.screen.vo; + +import lombok.Data; +import org.apache.poi.hpsf.Decimal; + +/** + * 工程成本表 + * @author 黑子 + */ +@Data +public class ProCostVo { + + + private String id; + /** + * 标段工程编码 + */ + private String bidCode; + /** + * 工程造价 + */ + private Decimal cost; + /** + * 成本备注 + */ + private String remark; + /** + * 创建日期 + */ + private String curryDay; + /** + * 创建时间 + */ + private String createTime; + + + + + +} diff --git a/securitycontrol-commons/securitycontrol-commons-entity/src/main/java/com/securitycontrol/entity/system/SystemGlobal.java b/securitycontrol-commons/securitycontrol-commons-entity/src/main/java/com/securitycontrol/entity/system/SystemGlobal.java index 3875f6c..4abfc7f 100644 --- a/securitycontrol-commons/securitycontrol-commons-entity/src/main/java/com/securitycontrol/entity/system/SystemGlobal.java +++ b/securitycontrol-commons/securitycontrol-commons-entity/src/main/java/com/securitycontrol/entity/system/SystemGlobal.java @@ -90,4 +90,6 @@ public class SystemGlobal { */ public final static int HJ_TYPE=351; + public final static int WEEK_DAY=7; + } diff --git a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/controller/XcIndexController.java b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/controller/XcIndexController.java index b6cdb1f..97932bd 100644 --- a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/controller/XcIndexController.java +++ b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/controller/XcIndexController.java @@ -38,4 +38,36 @@ public class XcIndexController extends BaseController { return service.getProJcData(dto); } + /** + * 工程环境检测 实施数据 + * @param dto + * @return + */ + @ApiOperation(value = "查询项目风险数据") + @GetMapping("getProRisk") + public AjaxResult getProRisk(ScreenParamDto dto){ + return service.getProRisk(dto); + } + + /** + * 工程环境检测 实施数据 + * @param dto + * @return + */ + @ApiOperation(value = "查询项目进度") + @GetMapping("getProcess") + public AjaxResult getProcess(ScreenParamDto dto){ + return service.getProcess(dto); + } + + /** + * 工程环境检测 实施数据 + * @param dto + * @return + */ + @ApiOperation(value = "查询工程项目成本") + @GetMapping("getProMoney") + public AjaxResult getProMoney(ScreenParamDto dto){ + return service.getProMoney(dto); + } } diff --git a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/mapper/XcIndexMapper.java b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/mapper/XcIndexMapper.java index 023d872..0b45be0 100644 --- a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/mapper/XcIndexMapper.java +++ b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/mapper/XcIndexMapper.java @@ -3,10 +3,12 @@ package com.securitycontrol.screen.mapper; import com.securitycontrol.entity.screen.dto.ScreenParamDto; import com.securitycontrol.entity.screen.vo.DeviceValueVo; import com.securitycontrol.entity.system.base.vo.ProVo; +import org.apache.ibatis.annotations.MapKey; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; import java.util.List; +import java.util.Map; /** * 施工现场大屏 首页数据接口层 @@ -28,4 +30,34 @@ public interface XcIndexMapper { * @return */ List getProJcData(ScreenParamDto dto); + + /** + * 查询 周风险数量 + * @param dto + * @return + */ + int getWeekRiskNum(ScreenParamDto dto); + + /** + * 查询系统告警数量 + * @param dto + * @return + */ + int getWarnNum(ScreenParamDto dto); + + /** + *查询工程进度 + * @param dto + * @return + */ + @MapKey("bidCode") + List> getProBasicInfo(ScreenParamDto dto); + + /** + * 获取工程成本 + * @param times + * @param bidCode + * @return + */ + String getProCost(@Param("time") String times,@Param("bidCode") String bidCode); } diff --git a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/XcIndexService.java b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/XcIndexService.java index 77e3811..fb9739a 100644 --- a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/XcIndexService.java +++ b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/XcIndexService.java @@ -21,4 +21,25 @@ public interface XcIndexService { * @return */ AjaxResult getProJcData(ScreenParamDto dto); + + /** + * 查询项目风险数据 + * @param dto + * @return + */ + AjaxResult getProRisk(ScreenParamDto dto); + + /** + * 查询工程项目进度 + * @param dto + * @return + */ + AjaxResult getProcess(ScreenParamDto dto); + + /** + * 查询工程项目成本 + * @param dto + * @return + */ + AjaxResult getProMoney(ScreenParamDto dto); } diff --git a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/impl/XcIndexServiceImpl.java b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/impl/XcIndexServiceImpl.java index 9423fb8..2afe54b 100644 --- a/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/impl/XcIndexServiceImpl.java +++ b/securitycontrol-model/securitycontrol-screen/src/main/java/com/securitycontrol/screen/service/impl/XcIndexServiceImpl.java @@ -6,6 +6,8 @@ import com.google.common.collect.Maps; import com.securitycontrol.common.core.constant.HttpStatus; import com.securitycontrol.common.core.constant.SecurityConstants; import com.securitycontrol.common.core.domain.Result; +import com.securitycontrol.common.core.utils.aes.DateTimeHelper; +import com.securitycontrol.common.core.utils.aes.StringHelper; import com.securitycontrol.common.core.web.domain.AjaxResult; import com.securitycontrol.entity.screen.dto.ScreenParamDto; import com.securitycontrol.entity.screen.vo.DeviceValueVo; @@ -19,13 +21,14 @@ import com.securitycontrol.system.api.domain.SysFile; import com.securitycontrol.system.api.domain.TbSourceFile; import lombok.Data; import lombok.extern.slf4j.Slf4j; +import org.omg.CORBA.TIMEOUT; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; /** * 现场施工 大屏首页接口层 @@ -95,4 +98,139 @@ public class XcIndexServiceImpl implements XcIndexService { } return AjaxResult.success(new ArrayList()); } + + /** + * 查询项目施工风险数据 + * @param dto + * @return + */ + @Override + public AjaxResult getProRisk(ScreenParamDto dto) { + Map map= Maps.newHashMap(); + try{ + List dayList=new ArrayList<>(); + List weekRisk=new ArrayList<>(); + List warnList=new ArrayList<>(); + String day=DateTimeHelper.getNowDay(); + //获取近一周的数据 + for (int i = 1; i dataMap = new HashMap<>(16); + List> list = new ArrayList<>(); + try { + list = mapper.getProBasicInfo(dto); + Map>> map = list.stream().collect(Collectors.groupingBy(item -> { + return String.valueOf(item.get("bidCode")); + })); + map.forEach((k, v) -> { + // 根据每个工程的工序计划及进度填报计算效率 + BigDecimal value = new BigDecimal("0"); + BigDecimal value2 = new BigDecimal("0"); + BigDecimal multipleValue = new BigDecimal("100"); + for (int i = 0; i < v.size(); i++) { + if (Objects.nonNull(v.get(i).get("planId")) && Objects.nonNull(v.get(i).get("planProgress")) && Objects.nonNull(v.get(i).get("gxWeight"))) { + BigDecimal bigDecimal = new BigDecimal(String.valueOf(v.get(i).get("gxWeight"))); + BigDecimal bigDecimal2 = new BigDecimal(String.valueOf(v.get(i).get("planProgress"))); + value = value.add(bigDecimal.multiply(bigDecimal2).divide(multipleValue, 3, BigDecimal.ROUND_HALF_UP)); + } + } + // 计划开始时间、计划结束时间、实际进度、计划工期 + String planStartTime = String.valueOf(v.get(0).get("planStartTime")); + String planEndTime = String.valueOf(v.get(0).get("planEndTime")); + String nowDate = DateTimeHelper.getNowDate(); + Long dayDifference = DateTimeHelper.getDayDifference(planStartTime, planEndTime); + dataMap.put("planStartTime", planStartTime); + dataMap.put("planEndTime", planEndTime); + dataMap.put("value", value.doubleValue()); + dataMap.put("durationDay", dayDifference); + + Long planStartTimeTamp = DateTimeHelper.convertDateStringToTimestamp(planStartTime, "yyyy-MM-dd"); + Long planEndTimeTamp = DateTimeHelper.convertDateStringToTimestamp(planEndTime, "yyyy-MM-dd"); + Long nowDateTamp = DateTimeHelper.convertDateStringToTimestamp(nowDate, "yyyy-MM-dd"); + // 计划进度 + if (nowDateTamp < planStartTimeTamp) { + dataMap.put("value2", new Double(0)); + } else if (nowDateTamp > planEndTimeTamp) { + dataMap.put("value2", new Double(100)); + } else { + // 工程已施工天数 + Long residueDay = DateTimeHelper.getDayDifference(planStartTime, nowDate); + // 剩余工期 + Long residueDay2 = DateTimeHelper.getDayDifference(nowDate, planEndTime); + BigDecimal dayDifferenceBd = BigDecimal.valueOf(dayDifference); + BigDecimal residueDayBd = BigDecimal.valueOf(residueDay); + value2 = value2.add(residueDayBd.divide(dayDifferenceBd, 3, BigDecimal.ROUND_HALF_UP).multiply(multipleValue)); + dataMap.put("value2", value2.doubleValue()); + dataMap.put("residueDay", residueDay2); + } + }); + } catch (Exception e) { + log.error("项目进度"); + } + return AjaxResult.success(dataMap); + }catch (Exception e){ + log.error(e.toString(),e); + } + return null; + } + + @Override + public AjaxResult getProMoney(ScreenParamDto dto) { + Map dataMap = Maps.newHashMap(); + try{ + List monList=new ArrayList(); + List costList=new ArrayList(); + ProVo proVo=mapper.getProDetails(dto.getBidCode()); + String startTime=proVo.getPlanStartTime(); + String time=DateTimeHelper.getNowMonth(); + String nowTime=startTime.substring(0,7); + if(DateTimeHelper.compareMonth(startTime,time)){ + monList.add(nowTime); + while(!time.equals(nowTime)){ + nowTime=DateTimeHelper.getAddMonth(nowTime,1); + monList.add(nowTime); + } + }else{ + monList.add(nowTime); + } + + for (String times:monList) { + String cost=mapper.getProCost(times,dto.getBidCode()); + if(StringHelper.isNotEmpty(cost)){ + costList.add(cost); + }else{ + costList.add("0"); + } + } + dataMap.put("time",monList); + dataMap.put("cost",costList); + return AjaxResult.success(dataMap); + }catch (Exception e){ + log.error(e.toString(),e); + } + return AjaxResult.success(dataMap); + } } diff --git a/securitycontrol-model/securitycontrol-screen/src/main/resources/mapper/XcIndexMapper.xml b/securitycontrol-model/securitycontrol-screen/src/main/resources/mapper/XcIndexMapper.xml index 1c15938..81cf3ab 100644 --- a/securitycontrol-model/securitycontrol-screen/src/main/resources/mapper/XcIndexMapper.xml +++ b/securitycontrol-model/securitycontrol-screen/src/main/resources/mapper/XcIndexMapper.xml @@ -3,7 +3,7 @@ @@ -19,6 +19,37 @@ where tdd.mode_name is not null and sd.dict_code=#{typeCode} and bd.bid_code=#{bidCode} + + + + + + \ No newline at end of file