|
@@ -0,0 +1,557 @@
|
|
|
|
+package com.ruoyi.zdsz.service.impl;
|
|
|
|
+
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
+import com.github.therapi.runtimejavadoc.repack.com.eclipsesource.json.Json;
|
|
|
|
+import com.github.therapi.runtimejavadoc.repack.com.eclipsesource.json.JsonObject;
|
|
|
|
+import com.github.therapi.runtimejavadoc.repack.com.eclipsesource.json.JsonValue;
|
|
|
|
+import com.ruoyi.common.core.domain.entity.SysDictData;
|
|
|
|
+import com.ruoyi.common.utils.redis.RedisUtils;
|
|
|
|
+import com.ruoyi.zdsz.domain.ZEngineeringIndustry;
|
|
|
|
+import com.ruoyi.zdsz.domain.bo.ZdszBigscreenBo;
|
|
|
|
+import com.ruoyi.zdsz.mapper.*;
|
|
|
|
+import com.ruoyi.zdsz.service.IZdszBigscreenService;
|
|
|
|
+import lombok.RequiredArgsConstructor;
|
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
|
+
|
|
|
|
+import javax.annotation.Resource;
|
|
|
|
+import java.math.BigDecimal;
|
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
|
+import java.util.*;
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * 大屏首页Service业务层处理
|
|
|
|
+ *
|
|
|
|
+ * @author ruoyi
|
|
|
|
+ * @date 2024-08-05
|
|
|
|
+ */
|
|
|
|
+@RequiredArgsConstructor
|
|
|
|
+@Service
|
|
|
|
+public class ZdszBigscreenServiceImpl implements IZdszBigscreenService {
|
|
|
|
+ @Resource
|
|
|
|
+ private ZEnginSpecificationsMapper specificationsMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ private ZEnginMaterialQualityMapper materialQualityMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ private ZdszBigscreenMapper bigscreenMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ private ZEngineeringGYMapper zEngineeringGYMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ private ZEngineeringIndustryMapper zEngineeringIndustryMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ private ZEngineeringInfrastructureMapper zEngineeringInfrastructureMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ private ZEngineeringCivilMapper zEngineeringCivilMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ private ZTouchOperationEngineeringMapper zTouchOperationEngineeringMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ private ZEngineeringPipeJackingMapper zEngineeringPipeJackingMapper;
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 施工进度统计
|
|
|
|
+ */
|
|
|
|
+ public void setConstructionProgress(){
|
|
|
|
+ ZdszBigscreenBo zdszBigscreenBo = new ZdszBigscreenBo();
|
|
|
|
+ String time = getPreviousDay();
|
|
|
|
+ time = "2024-05-21";
|
|
|
|
+ zdszBigscreenBo.setTime(time);
|
|
|
|
+ String[] times = time.split("-");
|
|
|
|
+ zdszBigscreenBo.setMaterial("z_engineering_material_" + times[0] + "_" + times[1]); // z_engineering_material_2024_08
|
|
|
|
+ List<Double> numbers = bigscreenMapper.pipeNum(zdszBigscreenBo);
|
|
|
|
+ Map map = new HashMap();
|
|
|
|
+ map.put("time", time); // 创建时间
|
|
|
|
+ map.put("iron", numbers.get(0)); // 钢管总数
|
|
|
|
+ map.put("pe", numbers.get(1)); // PE总数
|
|
|
|
+ map.put("stainless_steel_bellow", numbers.get(2)); // 不锈钢波纹管
|
|
|
|
+ map.put("spiral_welded_pipe", numbers.get(3)); // 螺旋焊管
|
|
|
|
+ map.put("seamless_steel_tube", numbers.get(4)); // 无缝钢管
|
|
|
|
+ map.put("galvanized_steel_pipe", numbers.get(5)); // 镀锌钢管
|
|
|
|
+ map.put("polyethylene_pipe", numbers.get(6)); // 燃气用埋地聚乙烯管
|
|
|
|
+ bigscreenMapper.setConstructionProgress(map);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public Map getConstructionProgress(ZdszBigscreenBo zdszBigscreenBo){
|
|
|
|
+ setConstructionProgress();
|
|
|
|
+ clearTime(zdszBigscreenBo);
|
|
|
|
+ List<Map> list = bigscreenMapper.getConstructionProgress(zdszBigscreenBo);
|
|
|
|
+ int size = list.size();
|
|
|
|
+ switch (size){
|
|
|
|
+ case 0:{
|
|
|
|
+ Map map = new LinkedHashMap();
|
|
|
|
+ map.put("iron", 0); // 钢管总数
|
|
|
|
+ map.put("pe", 0); // PE总数
|
|
|
|
+ map.put("stainless_steel_bellow", 0); // 不锈钢波纹管
|
|
|
|
+ map.put("spiral_welded_pipe", 0); // 螺旋焊管
|
|
|
|
+ map.put("seamless_steel_tube", 0); // 无缝钢管
|
|
|
|
+ map.put("galvanized_steel_pipe", 0); // 镀锌钢管
|
|
|
|
+ map.put("polyethylene_pipe", 0); // 燃气用埋地聚乙烯管
|
|
|
|
+ return map;
|
|
|
|
+ }
|
|
|
|
+ case 1:{
|
|
|
|
+ return list.get(0);
|
|
|
|
+ }
|
|
|
|
+ default:{
|
|
|
|
+ Map map = new LinkedHashMap();
|
|
|
|
+ map.put("iron", list.stream().map(x -> new BigDecimal(String.valueOf(x.get("iron")))).reduce(BigDecimal.ZERO, BigDecimal::add)); // 钢管总数
|
|
|
|
+ map.put("pe", list.stream().map(x -> new BigDecimal(String.valueOf(x.get("pe")))).reduce(BigDecimal.ZERO, BigDecimal::add)); // PE总数
|
|
|
|
+ map.put("stainless_steel_bellow", list.stream().map(x -> new BigDecimal(String.valueOf(x.get("stainless_steel_bellow")))).reduce(BigDecimal.ZERO, BigDecimal::add)); // 不锈钢波纹管
|
|
|
|
+ map.put("spiral_welded_pipe", list.stream().map(x -> new BigDecimal(String.valueOf(x.get("spiral_welded_pipe")))).reduce(BigDecimal.ZERO, BigDecimal::add)); // 螺旋焊管
|
|
|
|
+ map.put("seamless_steel_tube", list.stream().map(x -> new BigDecimal(String.valueOf(x.get("seamless_steel_tube")))).reduce(BigDecimal.ZERO, BigDecimal::add)); // 无缝钢管
|
|
|
|
+ map.put("galvanized_steel_pipe", list.stream().map(x -> new BigDecimal(String.valueOf(x.get("galvanized_steel_pipe")))).reduce(BigDecimal.ZERO, BigDecimal::add)); // 镀锌钢管
|
|
|
|
+ map.put("polyethylene_pipe", list.stream().map(x -> new BigDecimal(String.valueOf(x.get("polyethylene_pipe")))).reduce(BigDecimal.ZERO, BigDecimal::add)); // 燃气用埋地聚乙烯管
|
|
|
|
+ return map;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 工程状态统计
|
|
|
|
+ */
|
|
|
|
+ public void setProjectStatus(){
|
|
|
|
+ ZdszBigscreenBo zdszBigscreenBo = new ZdszBigscreenBo();
|
|
|
|
+ String time = getPreviousDay();
|
|
|
|
+ zdszBigscreenBo.setTime(time);
|
|
|
|
+
|
|
|
|
+// LambdaQueryWrapper<ZEngineeringIndustry> zEngineeringIndustryBoLambdaQueryWrapper = new LambdaQueryWrapper<ZEngineeringIndustry>();
|
|
|
|
+// List<ZEngineeringIndustry> zEngineeringIndustryVos = baseMapper.selectList(zEngineeringIndustryBoLambdaQueryWrapper);
|
|
|
|
+// LambdaQueryWrapper lqw = new
|
|
|
|
+// zEngineeringGYMapper.selectList()
|
|
|
|
+ Map map = new HashMap();
|
|
|
|
+ map.put("time", time); // 创建时间
|
|
|
|
+ map.put("todo", bigscreenMapper.todoNum(zdszBigscreenBo)); // 开工
|
|
|
|
+ map.put("doing", bigscreenMapper.doingNum(zdszBigscreenBo)); // 在建
|
|
|
|
+ map.put("done", bigscreenMapper.doneNum(zdszBigscreenBo)); // 完工
|
|
|
|
+ bigscreenMapper.setProjectStatus(map);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public Map getProjectStatus(ZdszBigscreenBo zdszBigscreenBo){
|
|
|
|
+ clearTime(zdszBigscreenBo);
|
|
|
|
+ setProjectStatus();
|
|
|
|
+ List<Map> list = bigscreenMapper.getProjectStatus(zdszBigscreenBo);
|
|
|
|
+ int size = list.size();
|
|
|
|
+ switch (size){
|
|
|
|
+ case 0:{
|
|
|
|
+ Map map = new LinkedHashMap();
|
|
|
|
+ map.put("todo", 0); // 开工
|
|
|
|
+ map.put("doing", 0); // 在建
|
|
|
|
+ map.put("done", 0); // 完工
|
|
|
|
+ return map;
|
|
|
|
+ }
|
|
|
|
+ case 1:{
|
|
|
|
+ return list.get(0);
|
|
|
|
+ }
|
|
|
|
+ default:{
|
|
|
|
+ Map map = new LinkedHashMap();
|
|
|
|
+ map.put("todo", list.stream().map(x -> new BigDecimal(String.valueOf(x.get("todo")))).reduce(BigDecimal.ZERO, BigDecimal::add)); // 开工
|
|
|
|
+ map.put("doing", list.stream().map(x -> new BigDecimal(String.valueOf(x.get("doing")))).reduce(BigDecimal.ZERO, BigDecimal::add)); // 在建
|
|
|
|
+ map.put("done", list.get(list.size()-1).get("done")); // 完工
|
|
|
|
+ return map;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 今日施工数
|
|
|
|
+ */
|
|
|
|
+ public void setCountEngineering(){
|
|
|
|
+ ZdszBigscreenBo zdszBigscreenBo = new ZdszBigscreenBo();
|
|
|
|
+ String time = getPreviousDay();
|
|
|
|
+ String[] times = time.split("-");
|
|
|
|
+ zdszBigscreenBo.setTime(time);
|
|
|
|
+ zdszBigscreenBo.setInfo("z_engineering_info_" + times[0] + "_" + times[1]); // z_engineering_info_2024_03
|
|
|
|
+ zdszBigscreenBo.setNode("z_engineering_node_" + times[0] + "_" + times[1]); // z_engineering_node_2024_03
|
|
|
|
+ Map map = new HashMap();
|
|
|
|
+ map.put("time", time); // 创建时间
|
|
|
|
+ map.put("civi", bigscreenMapper.civiNumEng(zdszBigscreenBo)); // 民用工程
|
|
|
|
+ map.put("gy", bigscreenMapper.gyNumEng(zdszBigscreenBo)); // 工业工程
|
|
|
|
+ map.put("industry", bigscreenMapper.industryNumEng(zdszBigscreenBo)); // 市政工程
|
|
|
|
+ map.put("touch", bigscreenMapper.touchNumEng(zdszBigscreenBo)); // 碰口工程
|
|
|
|
+ map.put("infrastructure", bigscreenMapper.infrastructureNumEng(zdszBigscreenBo)); // 基建工程
|
|
|
|
+ map.put("pipe", bigscreenMapper.pipeNumEng(zdszBigscreenBo)); // 顶管工程
|
|
|
|
+ bigscreenMapper.setCountEngineering(map);
|
|
|
|
+ }
|
|
|
|
+ @Override
|
|
|
|
+ public Map getCountEngineering(ZdszBigscreenBo zdszBigscreenBo){
|
|
|
|
+ clearTime(zdszBigscreenBo);
|
|
|
|
+ setCountEngineering();
|
|
|
|
+ List<Map> list = bigscreenMapper.getCountEngineering(zdszBigscreenBo);
|
|
|
|
+ int size = list.size();
|
|
|
|
+ switch (size){
|
|
|
|
+ case 0:{
|
|
|
|
+ Map map = new LinkedHashMap();
|
|
|
|
+ map.put("civi", 0); // 民用工程
|
|
|
|
+ map.put("gy", 0); // 工业工程
|
|
|
|
+ map.put("industry", 0); // 市政工程
|
|
|
|
+ map.put("touch", 0); // 碰口工程
|
|
|
|
+ map.put("infrastructure", 0); // 基建工程
|
|
|
|
+ map.put("pipe", 0); // 顶管工程
|
|
|
|
+ return map;
|
|
|
|
+ }
|
|
|
|
+ case 1:{
|
|
|
|
+ return list.get(0);
|
|
|
|
+ }
|
|
|
|
+ default:{
|
|
|
|
+ Map map = new LinkedHashMap();
|
|
|
|
+ map.put("civi", list.stream().map(x -> new BigDecimal(String.valueOf(x.get("civi")))).reduce(BigDecimal.ZERO, BigDecimal::add)); // 民用工程
|
|
|
|
+ map.put("gy", list.stream().map(x -> new BigDecimal(String.valueOf(x.get("gy")))).reduce(BigDecimal.ZERO, BigDecimal::add)); // 工业工程
|
|
|
|
+ map.put("industry", list.stream().map(x -> new BigDecimal(String.valueOf(x.get("industry")))).reduce(BigDecimal.ZERO, BigDecimal::add)); // 市政工程
|
|
|
|
+ map.put("touch", list.stream().map(x -> new BigDecimal(String.valueOf(x.get("touch")))).reduce(BigDecimal.ZERO, BigDecimal::add)); // 碰口工程
|
|
|
|
+ map.put("infrastructure", list.stream().map(x -> new BigDecimal(String.valueOf(x.get("infrastructure")))).reduce(BigDecimal.ZERO, BigDecimal::add)); // 基建工程
|
|
|
|
+ map.put("pipe", list.stream().map(x -> new BigDecimal(String.valueOf(x.get("pipe")))).reduce(BigDecimal.ZERO, BigDecimal::add)); // 顶管工程
|
|
|
|
+ return map;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 今日使用人数
|
|
|
|
+ */
|
|
|
|
+ public void setCountPerson(){
|
|
|
|
+ ZdszBigscreenBo zdszBigscreenBo = new ZdszBigscreenBo();
|
|
|
|
+ String time = getPreviousDay();
|
|
|
|
+ zdszBigscreenBo.setTime(time);
|
|
|
|
+ Map map = new HashMap();
|
|
|
|
+ map.put("time", time); // 创建时间
|
|
|
|
+ map.put("civi", bigscreenMapper.civiNumPer(zdszBigscreenBo)); // 民用工程
|
|
|
|
+ map.put("gy", bigscreenMapper.gyNumPer(zdszBigscreenBo)); // 工业工程
|
|
|
|
+ map.put("industry", bigscreenMapper.industryNumPer(zdszBigscreenBo)); // 市政工程
|
|
|
|
+ map.put("touch", bigscreenMapper.touchNumPer(zdszBigscreenBo)); // 碰口工程
|
|
|
|
+ map.put("infrastructure", bigscreenMapper.infrastructureNumPer(zdszBigscreenBo)); // 基建工程
|
|
|
|
+ map.put("pipe", bigscreenMapper.pipeNumPer(zdszBigscreenBo)); // 顶管工程
|
|
|
|
+ bigscreenMapper.setCountPerson(map);
|
|
|
|
+ }
|
|
|
|
+ @Override
|
|
|
|
+ public Map getCountPerson(ZdszBigscreenBo zdszBigscreenBo){
|
|
|
|
+ clearTime(zdszBigscreenBo);
|
|
|
|
+ setCountPerson();
|
|
|
|
+ List<Map> list = bigscreenMapper.getCountPerson(zdszBigscreenBo);
|
|
|
|
+ int size = list.size();
|
|
|
|
+ switch (size){
|
|
|
|
+ case 0:{
|
|
|
|
+ Map map = new LinkedHashMap();
|
|
|
|
+ map.put("civi", 0); // 民用工程
|
|
|
|
+ map.put("gy", 0); // 工业工程
|
|
|
|
+ map.put("industry", 0); // 市政工程
|
|
|
|
+ map.put("touch", 0); // 碰口工程
|
|
|
|
+ map.put("infrastructure", 0); // 基建工程
|
|
|
|
+ map.put("pipe", 0); // 顶管工程
|
|
|
|
+ return map;
|
|
|
|
+ }
|
|
|
|
+ case 1:{
|
|
|
|
+ return list.get(0);
|
|
|
|
+ }
|
|
|
|
+ default:{
|
|
|
|
+ Map map = new LinkedHashMap();
|
|
|
|
+ map.put("civi", list.stream().map(x -> new BigDecimal(String.valueOf(x.get("civi")))).reduce(BigDecimal.ZERO, BigDecimal::add)); // 民用工程
|
|
|
|
+ map.put("gy", list.stream().map(x -> new BigDecimal(String.valueOf(x.get("gy")))).reduce(BigDecimal.ZERO, BigDecimal::add)); // 工业工程
|
|
|
|
+ map.put("industry", list.stream().map(x -> new BigDecimal(String.valueOf(x.get("industry")))).reduce(BigDecimal.ZERO, BigDecimal::add)); // 市政工程
|
|
|
|
+ map.put("touch", list.stream().map(x -> new BigDecimal(String.valueOf(x.get("touch")))).reduce(BigDecimal.ZERO, BigDecimal::add)); // 碰口工程
|
|
|
|
+ map.put("infrastructure", list.stream().map(x -> new BigDecimal(String.valueOf(x.get("infrastructure")))).reduce(BigDecimal.ZERO, BigDecimal::add)); // 基建工程
|
|
|
|
+ map.put("pipe", list.stream().map(x -> new BigDecimal(String.valueOf(x.get("pipe")))).reduce(BigDecimal.ZERO, BigDecimal::add)); // 顶管工程
|
|
|
|
+ return map;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 地图施工数据分布
|
|
|
|
+ */
|
|
|
|
+ public void setConstructionMap(){
|
|
|
|
+ ZdszBigscreenBo zdszBigscreenBo = new ZdszBigscreenBo();
|
|
|
|
+ String time = getPreviousDay();
|
|
|
|
+// time = "2024-03-10";
|
|
|
|
+ zdszBigscreenBo.setTime(time);
|
|
|
|
+ String[] times = time.split("-");
|
|
|
|
+ zdszBigscreenBo.setInfo("z_engineering_info_" + times[0] + "_" + times[1]); // z_engineering_info_2024_03
|
|
|
|
+ zdszBigscreenBo.setNode("z_engineering_node_" + times[0] + "_" + times[1]); // z_engineering_node_2024_03
|
|
|
|
+ Map map = new HashMap();
|
|
|
|
+ map.put("time", time); // 创建时间
|
|
|
|
+ List<Map> civiMaps = bigscreenMapper.civiNumNew(zdszBigscreenBo); // 民用工程
|
|
|
|
+ List<Map> gyMaps = bigscreenMapper.gyNumNew(zdszBigscreenBo); // 工业工程
|
|
|
|
+ List<Map> industryMaps = bigscreenMapper.industryNumNew(zdszBigscreenBo); // 市政工程
|
|
|
|
+ List<Map> touchMaps = bigscreenMapper.touchNumNew(zdszBigscreenBo); // 碰口工程
|
|
|
|
+ List<Map> infrastructureMaps = bigscreenMapper.infrastructureNumNew(zdszBigscreenBo); // 基建工程
|
|
|
|
+ List<Map> pipeMaps = bigscreenMapper.pipeNumNew(zdszBigscreenBo); // 顶管工程
|
|
|
|
+ civiMaps = mapMergeMap(civiMaps, gyMaps);
|
|
|
|
+ civiMaps = mapMergeMap(civiMaps, industryMaps);
|
|
|
|
+ civiMaps = mapMergeMap(civiMaps, touchMaps);
|
|
|
|
+ civiMaps = mapMergeMap(civiMaps, infrastructureMaps);
|
|
|
|
+ civiMaps = mapMergeMap(civiMaps, pipeMaps);
|
|
|
|
+ map.put("json", mapToJson(civiMaps)); // JSON数据
|
|
|
|
+ bigscreenMapper.setConstructionNew(map);
|
|
|
|
+ }
|
|
|
|
+ @Override
|
|
|
|
+ public Map getConstructionMap(ZdszBigscreenBo zdszBigscreenBo){
|
|
|
|
+ clearTime(zdszBigscreenBo);
|
|
|
|
+ setProjectStatus();
|
|
|
|
+ List<Map> list = bigscreenMapper.getConstructionMap(zdszBigscreenBo);
|
|
|
|
+ int size = list.size();
|
|
|
|
+ switch (size){
|
|
|
|
+ case 0:{
|
|
|
|
+ Map map = new LinkedHashMap();
|
|
|
|
+ map.put("civi", 0); // 民用工程
|
|
|
|
+ map.put("gy", 0); // 工业工程
|
|
|
|
+ map.put("industry", 0); // 市政工程
|
|
|
|
+ map.put("touch", 0); // 碰口工程
|
|
|
|
+ map.put("infrastructure", 0); // 基建工程
|
|
|
|
+ map.put("pipe", 0); // 顶管工程
|
|
|
|
+ return map;
|
|
|
|
+ }
|
|
|
|
+ case 1:{
|
|
|
|
+ return list.get(0);
|
|
|
|
+ }
|
|
|
|
+ default:{
|
|
|
|
+ Map map = new LinkedHashMap();
|
|
|
|
+ map.put("civi", list.stream().map(x -> new BigDecimal(String.valueOf(x.get("civi")))).reduce(BigDecimal.ZERO, BigDecimal::add)); // 民用工程
|
|
|
|
+ map.put("gy", list.stream().map(x -> new BigDecimal(String.valueOf(x.get("gy")))).reduce(BigDecimal.ZERO, BigDecimal::add)); // 工业工程
|
|
|
|
+ map.put("industry", list.stream().map(x -> new BigDecimal(String.valueOf(x.get("industry")))).reduce(BigDecimal.ZERO, BigDecimal::add)); // 市政工程
|
|
|
|
+ map.put("touch", list.stream().map(x -> new BigDecimal(String.valueOf(x.get("touch")))).reduce(BigDecimal.ZERO, BigDecimal::add)); // 碰口工程
|
|
|
|
+ map.put("infrastructure", list.stream().map(x -> new BigDecimal(String.valueOf(x.get("infrastructure")))).reduce(BigDecimal.ZERO, BigDecimal::add)); // 基建工程
|
|
|
|
+ map.put("pipe", list.stream().map(x -> new BigDecimal(String.valueOf(x.get("pipe")))).reduce(BigDecimal.ZERO, BigDecimal::add)); // 顶管工程
|
|
|
|
+ return map;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 各个区今日施工数
|
|
|
|
+ */
|
|
|
|
+ public void setConstructionNew(){
|
|
|
|
+ ZdszBigscreenBo zdszBigscreenBo = new ZdszBigscreenBo();
|
|
|
|
+ String time = getPreviousDay();
|
|
|
|
+ time = "2024-03-10";
|
|
|
|
+ zdszBigscreenBo.setTime(time);
|
|
|
|
+ String[] times = time.split("-");
|
|
|
|
+ zdszBigscreenBo.setInfo("z_engineering_info_" + times[0] + "_" + times[1]); // z_engineering_info_2024_03
|
|
|
|
+ zdszBigscreenBo.setNode("z_engineering_node_" + times[0] + "_" + times[1]); // z_engineering_node_2024_03
|
|
|
|
+ Map map = new HashMap();
|
|
|
|
+ map.put("time", time); // 创建时间
|
|
|
|
+ List<Map> civiMaps = bigscreenMapper.civiNumNew(zdszBigscreenBo); // 民用工程
|
|
|
|
+ List<Map> gyMaps = bigscreenMapper.gyNumNew(zdszBigscreenBo); // 工业工程
|
|
|
|
+ List<Map> industryMaps = bigscreenMapper.industryNumNew(zdszBigscreenBo); // 市政工程
|
|
|
|
+ List<Map> touchMaps = bigscreenMapper.touchNumNew(zdszBigscreenBo); // 碰口工程
|
|
|
|
+ List<Map> infrastructureMaps = bigscreenMapper.infrastructureNumNew(zdszBigscreenBo); // 基建工程
|
|
|
|
+ List<Map> pipeMaps = bigscreenMapper.pipeNumNew(zdszBigscreenBo); // 顶管工程
|
|
|
|
+ civiMaps = mapMergeMap(civiMaps, gyMaps);
|
|
|
|
+ civiMaps = mapMergeMap(civiMaps, industryMaps);
|
|
|
|
+ civiMaps = mapMergeMap(civiMaps, touchMaps);
|
|
|
|
+ civiMaps = mapMergeMap(civiMaps, infrastructureMaps);
|
|
|
|
+ civiMaps = mapMergeMap(civiMaps, pipeMaps);
|
|
|
|
+ map.put("json", mapToJson(civiMaps)); // JSON数据
|
|
|
|
+ bigscreenMapper.setConstructionNew(map);
|
|
|
|
+ }
|
|
|
|
+ @Override
|
|
|
|
+ public Map getConstructionNew(ZdszBigscreenBo zdszBigscreenBo){
|
|
|
|
+ clearTime(zdszBigscreenBo);
|
|
|
|
+ setConstructionNew();
|
|
|
|
+ Map<String, List<SysDictData>> sysDictMap = RedisUtils.getCacheMap("sys_dict");
|
|
|
|
+ List<SysDictData> dictDataList = sysDictMap.get("district");
|
|
|
|
+ List<Map> list = bigscreenMapper.getConstructionNew(zdszBigscreenBo);
|
|
|
|
+ int size = list.size();
|
|
|
|
+ switch (size){
|
|
|
|
+ case 0:{
|
|
|
|
+ List names = new ArrayList();
|
|
|
|
+ List values = new ArrayList();
|
|
|
|
+ for (SysDictData dictData: dictDataList) {
|
|
|
|
+ names.add(dictData.getDictLabel());
|
|
|
|
+ values.add(0);
|
|
|
|
+ }
|
|
|
|
+ Map map = new LinkedHashMap();
|
|
|
|
+ map.put("name", names); // 名称
|
|
|
|
+ map.put("value", values); // 数量
|
|
|
|
+ return map;
|
|
|
|
+ }
|
|
|
|
+ case 1:{
|
|
|
|
+ List names = new ArrayList();
|
|
|
|
+ List values = new ArrayList();
|
|
|
|
+ Map map = list.get(0);
|
|
|
|
+ String jsonStr = map.get("json").toString();
|
|
|
|
+ JsonValue jsonValue = Json.parse(jsonStr);
|
|
|
|
+ JsonObject jsonObject = jsonValue.asObject();
|
|
|
|
+ for (SysDictData dictData: dictDataList) {
|
|
|
|
+ names.add(dictData.getDictLabel());
|
|
|
|
+ Object value = jsonObject.get(dictData.getDictValue());
|
|
|
|
+ values.add(value == null ? 0 : value);
|
|
|
|
+ }
|
|
|
|
+ Map linkedHashMap = new LinkedHashMap();
|
|
|
|
+ linkedHashMap.put("name", names); // 名称
|
|
|
|
+ linkedHashMap.put("value", values); // 数量
|
|
|
|
+ return linkedHashMap;
|
|
|
|
+ }
|
|
|
|
+ default:{
|
|
|
|
+ List names = new ArrayList();
|
|
|
|
+ List values = new ArrayList();
|
|
|
|
+ for (SysDictData dictData: dictDataList) {
|
|
|
|
+ names.add(dictData.getDictLabel());
|
|
|
|
+ Long longValue = 0L;
|
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
|
+ Map map = list.get(i);
|
|
|
|
+ String jsonStr = map.get("json").toString();
|
|
|
|
+ JsonValue jsonValue = Json.parse(jsonStr);
|
|
|
|
+ JsonObject jsonObject = jsonValue.asObject();
|
|
|
|
+ Object valueObj = jsonObject.get(dictData.getDictValue());
|
|
|
|
+ Long value = valueObj == null ? 0L : Long.valueOf(valueObj.toString());
|
|
|
|
+ longValue += value;
|
|
|
|
+ }
|
|
|
|
+ values.add(longValue);
|
|
|
|
+ }
|
|
|
|
+ Map linkedHashMap = new LinkedHashMap();
|
|
|
|
+ linkedHashMap.put("name", names); // 名称
|
|
|
|
+ linkedHashMap.put("value", values); // 数量
|
|
|
|
+ return linkedHashMap;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 各个区今日旧改施工数
|
|
|
|
+ */
|
|
|
|
+ public void setConstructionOld(){
|
|
|
|
+ ZdszBigscreenBo zdszBigscreenBo = new ZdszBigscreenBo();
|
|
|
|
+ String time = getPreviousDay();
|
|
|
|
+ String[] times = time.split("-");
|
|
|
|
+ zdszBigscreenBo.setTime(time);
|
|
|
|
+// zdszBigscreenBo.setTime("2024-08-05");
|
|
|
|
+ zdszBigscreenBo.setInfo("z_engineering_info_" + times[0] + "_" + times[1]); // z_engineering_info_2024_03
|
|
|
|
+ zdszBigscreenBo.setNode("z_engineering_node_" + times[0] + "_" + times[1]); // z_engineering_node_2024_03
|
|
|
|
+ Map map = new HashMap();
|
|
|
|
+ map.put("time", time); // 创建时间
|
|
|
|
+// Json json = Json.
|
|
|
|
+ List<Map> maps = bigscreenMapper.civiNumOld(zdszBigscreenBo);
|
|
|
|
+// map.put("json", aaa); // 民用工程
|
|
|
|
+// map.put("gy", bigscreenMapper.gyNumEng(zdszBigscreenBo)); // 工业工程
|
|
|
|
+// map.put("industry", bigscreenMapper.industryNumEng(zdszBigscreenBo)); // 市政工程
|
|
|
|
+// map.put("touch", bigscreenMapper.touchNumEng(zdszBigscreenBo)); // 碰口工程
|
|
|
|
+// map.put("infrastructure", bigscreenMapper.infrastructureNumEng(zdszBigscreenBo)); // 基建工程
|
|
|
|
+// map.put("pipe", bigscreenMapper.pipeNumEng(zdszBigscreenBo)); // 顶管工程
|
|
|
|
+ map.put("json", mapToJson(maps)); // JSON数据
|
|
|
|
+ bigscreenMapper.setConstructionOld(map);
|
|
|
|
+ }
|
|
|
|
+ @Override
|
|
|
|
+ public Map getConstructionOld(ZdszBigscreenBo zdszBigscreenBo){
|
|
|
|
+ clearTime(zdszBigscreenBo);
|
|
|
|
+ setConstructionOld();
|
|
|
|
+ Map<String, List<SysDictData>> sysDictMap = RedisUtils.getCacheMap("sys_dict");
|
|
|
|
+ List<SysDictData> dictDataList = sysDictMap.get("district");
|
|
|
|
+ List<Map> list = bigscreenMapper.getConstructionOld(zdszBigscreenBo);
|
|
|
|
+ int size = list.size();
|
|
|
|
+ switch (size){
|
|
|
|
+ case 0:{
|
|
|
|
+ List names = new ArrayList();
|
|
|
|
+ List values = new ArrayList();
|
|
|
|
+ for (SysDictData dictData: dictDataList) {
|
|
|
|
+ names.add(dictData.getDictLabel());
|
|
|
|
+ values.add(0);
|
|
|
|
+ }
|
|
|
|
+ Map map = new LinkedHashMap();
|
|
|
|
+ map.put("name", names); // 名称
|
|
|
|
+ map.put("value", values); // 数量
|
|
|
|
+ return map;
|
|
|
|
+ }
|
|
|
|
+ case 1:{
|
|
|
|
+ List names = new ArrayList();
|
|
|
|
+ List values = new ArrayList();
|
|
|
|
+ Map map = list.get(0);
|
|
|
|
+ String jsonStr = map.get("json").toString();
|
|
|
|
+ JsonValue jsonValue = Json.parse(jsonStr);
|
|
|
|
+ JsonObject jsonObject = jsonValue.asObject();
|
|
|
|
+ for (SysDictData dictData: dictDataList) {
|
|
|
|
+ names.add(dictData.getDictLabel());
|
|
|
|
+ Object value = jsonObject.get(dictData.getDictValue());
|
|
|
|
+ values.add(value == null ? 0 : value);
|
|
|
|
+ }
|
|
|
|
+ Map linkedHashMap = new LinkedHashMap();
|
|
|
|
+ linkedHashMap.put("name", names); // 名称
|
|
|
|
+ linkedHashMap.put("value", values); // 数量
|
|
|
|
+ return linkedHashMap;
|
|
|
|
+ }
|
|
|
|
+ default:{
|
|
|
|
+ List names = new ArrayList();
|
|
|
|
+ List values = new ArrayList();
|
|
|
|
+ for (SysDictData dictData: dictDataList) {
|
|
|
|
+ names.add(dictData.getDictLabel());
|
|
|
|
+ Long longValue = 0L;
|
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
|
+ Map map = list.get(i);
|
|
|
|
+ String jsonStr = map.get("json").toString();
|
|
|
|
+ JsonValue jsonValue = Json.parse(jsonStr);
|
|
|
|
+ JsonObject jsonObject = jsonValue.asObject();
|
|
|
|
+ Object valueObj = jsonObject.get(dictData.getDictValue());
|
|
|
|
+ Long value = valueObj == null ? 0L : Long.valueOf(valueObj.toString());
|
|
|
|
+ longValue += value;
|
|
|
|
+ }
|
|
|
|
+ values.add(longValue);
|
|
|
|
+ }
|
|
|
|
+ Map linkedHashMap = new LinkedHashMap();
|
|
|
|
+ linkedHashMap.put("name", names); // 名称
|
|
|
|
+ linkedHashMap.put("value", values); // 数量
|
|
|
|
+ return linkedHashMap;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ String getPreviousDay(){
|
|
|
|
+ // 获取当前日期
|
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
|
+ calendar.setTime(new Date());
|
|
|
|
+ // 将日期减一天
|
|
|
|
+ calendar.add(Calendar.DAY_OF_MONTH, -1);
|
|
|
|
+ // 获取前一天的日期
|
|
|
|
+ Date previousDay = calendar.getTime();
|
|
|
|
+ return new SimpleDateFormat("yyyy-MM-dd").format(previousDay);
|
|
|
|
+ }
|
|
|
|
+ void clearTime(ZdszBigscreenBo zdszBigscreenBo){
|
|
|
|
+ String beginTime = zdszBigscreenBo.getBeginTime();
|
|
|
|
+ String endTime = zdszBigscreenBo.getEndTime();
|
|
|
|
+ if((beginTime != null && !beginTime.equals("")) || (endTime != null && !endTime.equals(""))){
|
|
|
|
+ zdszBigscreenBo.setTime(null);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ String mapToJson(List<Map> maps){
|
|
|
|
+ String start = "{";
|
|
|
|
+ for (int i = 0; i < maps.size(); i++) {
|
|
|
|
+ Map data = maps.get(i);
|
|
|
|
+ String key = data.get("key").toString();
|
|
|
|
+ Long value = Long.valueOf(data.get("value").toString());
|
|
|
|
+ start = start + "\"" + key + "\":"+value+",";
|
|
|
|
+ }
|
|
|
|
+ if(maps.size() > 0){
|
|
|
|
+ start = start.substring(0, start.length() - 1);
|
|
|
|
+ }
|
|
|
|
+ String end= "}";
|
|
|
|
+ String json= start + end;
|
|
|
|
+ return json;
|
|
|
|
+ }
|
|
|
|
+ List<Map> mapMergeMap(List<Map> destinations, List<Map> maps){
|
|
|
|
+ for (int i = 0; i < maps.size(); i++) {
|
|
|
|
+ boolean isExist = false;
|
|
|
|
+ for (int j = 0; j < destinations.size(); j++) {
|
|
|
|
+ Map destination = destinations.get(i);
|
|
|
|
+ Map map = maps.get(i);
|
|
|
|
+ if(map.get("key").equals(destination.get("key"))){
|
|
|
|
+ isExist = true;
|
|
|
|
+ Long value = Long.valueOf(destination.get("value").toString()) + Long.valueOf(map.get("value").toString());
|
|
|
|
+ destination.put("value", value);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if(!isExist){
|
|
|
|
+ destinations.add(maps.get(i));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return destinations;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void bigscreenAutoQueryYesterdayData(){
|
|
|
|
+ setConstructionProgress(); // 施工进度统计
|
|
|
|
+ setProjectStatus(); // 工程状态统计
|
|
|
|
+ setCountEngineering(); // 今日施工数
|
|
|
|
+ setCountPerson(); // 今日使用人数
|
|
|
|
+ setConstructionMap(); // 地图施工数据分布
|
|
|
|
+ setConstructionOld(); // 各个区今日旧改施工数
|
|
|
|
+ setConstructionNew(); // 各个区今日施工数
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+}
|