소스 검색

Merge remote-tracking branch 'origin/zdsz3.0' into zdsz3.0

JX.Li 11 달 전
부모
커밋
dd097dbd84

+ 49 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/zdsz/ZEngineeringWasteMaterialController.java

@@ -1,14 +1,21 @@
 package com.ruoyi.web.controller.zdsz;
 
+import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.zdsz.domain.bo.ZEnginMaterialQualityBo;
+import com.ruoyi.zdsz.domain.vo.WasteMaterialVo;
 import com.ruoyi.zdsz.domain.vo.ZEngineeringWasteMaterialVo;
 import com.ruoyi.zdsz.service.IZEngineeringWasteMaterialService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletResponse;
 import javax.validation.constraints.NotNull;
+import java.util.List;
 
 /**
  * 四大工程 耗材统计
@@ -48,4 +55,46 @@ public class ZEngineeringWasteMaterialController extends BaseController {
         }
     }
 
+    /**
+     * 四大工程 统计展示 PC用料统计
+     */
+    @GetMapping("/engineeringIndustryList")
+    public R<List> engineeringIndustryList(ZEnginMaterialQualityBo bo) { // 工业工程
+        return R.ok(izEngineeringWasteMaterialService.engineeringIndustryList(bo));
+    }
+    @GetMapping("/engineeringMunicipalList")
+    public R<List> engineeringMunicipalList(ZEnginMaterialQualityBo bo) { // 市政工程
+        return R.ok(izEngineeringWasteMaterialService.engineeringMunicipalList(bo));
+    }
+    @GetMapping("/engineeringPipeJackingList")
+    public R<List> engineeringPipeJackingList(ZEnginMaterialQualityBo bo) { // 顶管工程
+        return R.ok(izEngineeringWasteMaterialService.engineeringPipeJackingList(bo));
+    }
+    @GetMapping("/engineeringInfrastructureList")
+    public R<List> engineeringInfrastructureList(ZEnginMaterialQualityBo bo) { // 基建工程
+        return R.ok(izEngineeringWasteMaterialService.engineeringInfrastructureList(bo));
+    }
+    /**
+     * 导出 PC用料统计
+     */
+    @Log(title = "工业工程用料统计", businessType = BusinessType.EXPORT)
+    @PostMapping("/engineeringIndustryExport")
+    public void engineeringIndustryList(ZEnginMaterialQualityBo bo, HttpServletResponse response) { // 工业工程
+        ExcelUtil.exportExcel(izEngineeringWasteMaterialService.engineeringIndustryList(bo), "用料统计", WasteMaterialVo.class, response);
+    }
+    @Log(title = "市政工程用料统计", businessType = BusinessType.EXPORT)
+    @PostMapping("/engineeringMunicipalExport")
+    public void engineeringMunicipalList(ZEnginMaterialQualityBo bo, HttpServletResponse response) { // 市政工程
+        ExcelUtil.exportExcel(izEngineeringWasteMaterialService.engineeringIndustryList(bo), "市政工程用料统计", WasteMaterialVo.class, response);
+    }
+    @Log(title = "顶管工程用料统计", businessType = BusinessType.EXPORT)
+    @PostMapping("/engineeringPipeJackingExport")
+    public void engineeringPipeJackingList(ZEnginMaterialQualityBo bo, HttpServletResponse response) { // 顶管工程
+        ExcelUtil.exportExcel(izEngineeringWasteMaterialService.engineeringIndustryList(bo), "顶管工程用料统计", WasteMaterialVo.class, response);
+    }
+    @Log(title = "基建工程用料统计", businessType = BusinessType.EXPORT)
+    @PostMapping("/engineeringInfrastructureExport")
+    public void engineeringInfrastructureList(ZEnginMaterialQualityBo bo, HttpServletResponse response) { // 基建工程
+        ExcelUtil.exportExcel(izEngineeringWasteMaterialService.engineeringIndustryList(bo), "基建工程用料统计", WasteMaterialVo.class, response);
+    }
 }

+ 26 - 0
ruoyi-zdsz/src/main/java/com/ruoyi/zdsz/domain/vo/WasteMaterialVo.java

@@ -0,0 +1,26 @@
+package com.ruoyi.zdsz.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+@Data
+@ExcelIgnoreUnannotated
+public class WasteMaterialVo {
+    @ExcelProperty(value = "工程名称")
+    private String enginName;
+    @ExcelProperty(value = "工程分类")
+    private String enginClassification;
+    @ExcelProperty(value = "PE实际用料")
+    private String actualityPE;
+    @ExcelProperty(value = "PE预计用料")
+    private String anticipationPE;
+    @ExcelProperty(value = "PE用料占比")
+    private String percentagePE;
+    @ExcelProperty(value = "钢材实际用料")
+    private String actualityIron;
+    @ExcelProperty(value = "钢材预计用料")
+    private String anticipationIron;
+    @ExcelProperty(value = "钢材用料占比")
+    private String percentageIron;
+}

+ 10 - 0
ruoyi-zdsz/src/main/java/com/ruoyi/zdsz/service/IZEngineeringWasteMaterialService.java

@@ -1,7 +1,12 @@
 package com.ruoyi.zdsz.service;
 
+import com.ruoyi.zdsz.domain.bo.ZEnginMaterialQualityBo;
+import com.ruoyi.zdsz.domain.vo.WasteMaterialVo;
 import com.ruoyi.zdsz.domain.vo.ZEngineeringWasteMaterialVo;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * 四大工程 耗材统计
  *
@@ -14,4 +19,9 @@ public interface IZEngineeringWasteMaterialService {
     ZEngineeringWasteMaterialVo queryEngineeringMunicipal(String id);
     ZEngineeringWasteMaterialVo queryEngineeringPipeJacking(String id);
     ZEngineeringWasteMaterialVo queryTouchOperationEngineering(String id);
+
+    List<WasteMaterialVo> engineeringIndustryList(ZEnginMaterialQualityBo bo);
+    List<Map> engineeringMunicipalList(ZEnginMaterialQualityBo bo);
+    List<Map> engineeringPipeJackingList(ZEnginMaterialQualityBo bo);
+    List<Map> engineeringInfrastructureList(ZEnginMaterialQualityBo bo);
 }

+ 91 - 0
ruoyi-zdsz/src/main/java/com/ruoyi/zdsz/service/impl/ZEngineeringWasteMaterialServiceImpl.java

@@ -6,7 +6,9 @@ import com.ruoyi.common.core.domain.entity.SysDictData;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.redis.RedisUtils;
 import com.ruoyi.common.utils.spring.SpringUtils;
+import com.ruoyi.zdsz.domain.ZEngineeringGY;
 import com.ruoyi.zdsz.domain.ZEngineeringMaterial;
+import com.ruoyi.zdsz.domain.bo.ZEnginMaterialQualityBo;
 import com.ruoyi.zdsz.domain.bo.ZEngineeringInfoBo;
 import com.ruoyi.zdsz.domain.bo.ZEngineeringNodeBo;
 import com.ruoyi.zdsz.domain.vo.*;
@@ -522,4 +524,93 @@ public class ZEngineeringWasteMaterialServiceImpl implements IZEngineeringWasteM
 //        zEngineeringWasteMaterialVo.setMaterialPercentagePE();
         return zEngineeringWasteMaterialVo;
     }
+
+    /**
+     * PC用料统计列表 Echarts图表
+     */
+    public List<WasteMaterialVo> engineeringIndustryList(ZEnginMaterialQualityBo bo){
+        LambdaQueryWrapper<ZEngineeringGY> lqw = Wrappers.lambdaQuery();
+//        LambdaQueryWrapper<TestDemo> lqw = Wrappers.lambdaQuery();
+//        lqw.like(StringUtils.isNotBlank(bo.getTestKey()), TestDemo::getTestKey, bo.getTestKey());
+        lqw.eq(StringUtils.isNotBlank(bo.getEnginType()), ZEngineeringGY::getEnginType, bo.getEnginType());
+        lqw.eq(StringUtils.isNotBlank(bo.getEnginSort()), ZEngineeringGY::getEnginClassification, bo.getEnginSort());
+        List<ZEngineeringGYVo> list = gyMapper.selectVoList(lqw);
+//        List<Map> mapList = new ArrayList<>();
+        List<WasteMaterialVo> resultList = new ArrayList<>();
+        for (ZEngineeringGYVo zEngineeringGYVo:list) {
+//            Map map = new HashMap();
+            WasteMaterialVo wasteMaterialVo = new WasteMaterialVo();
+            ZEngineeringNodeBo zEngineeringNodeBo = new ZEngineeringNodeBo();
+//            zEngineeringNodeBo.setCivliId(id);
+            zEngineeringNodeBo.setCivliId(zEngineeringGYVo.getId());
+            zEngineeringNodeBo.setCreateTime(zEngineeringGYVo.getCreateTime());
+            List<ZEngineeringNodeBo> zEngineeringNodeBos = izEngineeringNodeService.queryListDetails(zEngineeringNodeBo);
+            ZEngineeringWasteMaterialVo zEngineeringWasteMaterialVo = new ZEngineeringWasteMaterialVo();
+            AtomicReference<BigDecimal> pesj = new AtomicReference<>(new BigDecimal(0));
+            AtomicReference<BigDecimal> gsj = new AtomicReference<>(new BigDecimal(0));
+            for (int i = 0; i < zEngineeringNodeBos.size(); i++) {
+                ZEngineeringNodeBo nodeBo = zEngineeringNodeBos.get(i);
+                for (ZEngineeringInfoBo info: nodeBo.getzEngineeringInfoBoList()) {
+                    System.out.println(info.getzEngineeringMaterialBo());
+                    LambdaQueryWrapper<ZEngineeringMaterial> lqw4 = Wrappers.lambdaQuery();
+                    lqw4.eq(StringUtils.isNotBlank(info.getId()), ZEngineeringMaterial::getDetailsId, info.getId());
+                    List<ZEngineeringMaterial> material= zEngineeringMaterialMapper.selectList(lqw4);
+                    material.stream().forEach(item4->{
+                        String materialQuality = item4.getMaterialQuality();
+                        if(materialQuality == null){
+    //                        continue;
+                        }else {
+                            String type = zEnginMaterialQualityMapper.selectVoById(materialQuality).getMaterialType();
+                            if("0".equals(type)){
+                                pesj.updateAndGet(v ->v.add(new BigDecimal(Double.toString(item4.getNumber()))) );
+                            }else if("1".equals(type)){
+                                gsj.updateAndGet(v ->v.add(new BigDecimal(Double.toString(item4.getNumber()))) );
+                            }
+                        }
+                    });
+                }
+            }
+            wasteMaterialVo.setEnginName(zEngineeringGYVo.getEnginName()); // 工程名称
+            wasteMaterialVo.setEnginClassification(zEngineeringGYVo.getEnginClassification()); // 工程分类
+//            map.put("enginName", zEngineeringGYVo.getEnginName()); // 工程名称
+//            map.put("enginClassification", zEngineeringGYVo.getEnginClassification()); // 工程分类
+            Map pe = new HashMap(); // PE材料
+            pe.put("actuality", getRoundDouble(pesj.get(), 2)); // 实际
+            pe.put("anticipation", zEngineeringGYVo.getPePreset()); // 预计  divide zEngineeringGYVo.getGcPreset()
+            pe.put("percentage", zEngineeringGYVo.getPePreset() == 0 ? "100.0%" : getRoundDouble((pesj.get().multiply(new BigDecimal(100))).divide(BigDecimal.valueOf(zEngineeringGYVo.getPePreset()), BigDecimal.ROUND_CEILING),2) + "%"); // 占比
+//            map.put("actualityPE",pe.get("actuality"));
+//            map.put("anticipationPE",pe.get("anticipation"));
+//            map.put("percentagePE",pe.get("percentage"));
+            wasteMaterialVo.setActualityPE(pe.get("actuality").toString());
+            wasteMaterialVo.setAnticipationPE(pe.get("anticipation").toString());
+            wasteMaterialVo.setPercentagePE(pe.get("percentage").toString());
+            Map iron = new HashMap(); // 钢材
+            iron.put("actuality", getRoundDouble(gsj.get(), 2)); // 实际
+            iron.put("anticipation", zEngineeringGYVo.getGcPreset()); // 预计
+            iron.put("percentage", zEngineeringGYVo.getGcPreset() == 0 ? "100.0%" : getRoundDouble((gsj.get().multiply(new BigDecimal(100))).divide(BigDecimal.valueOf(zEngineeringGYVo.getGcPreset()), BigDecimal.ROUND_CEILING),2) + "%"); // 占比
+//            map.put("actualityIron",iron.get("actuality"));
+//            map.put("anticipationIron",iron.get("anticipation"));
+//            map.put("percentageIron",iron.get("percentage"));
+            wasteMaterialVo.setActualityIron(iron.get("actuality").toString());
+            wasteMaterialVo.setAnticipationIron(iron.get("anticipation").toString());
+            wasteMaterialVo.setPercentageIron(iron.get("percentage").toString());
+            zEngineeringWasteMaterialVo.setMaterialPercentagePE(pe);
+            zEngineeringWasteMaterialVo.setMaterialPercentageIron(iron);
+//            mapList.add(map);
+            resultList.add(wasteMaterialVo);
+        }
+//        ZEngineeringGYVo zEngineeringGYVo = gyMapper.selectVoById(id);
+//        return mapList;
+        return resultList;
+    }
+    public List<Map> engineeringMunicipalList(ZEnginMaterialQualityBo bo){
+        return null;
+    }
+    public List<Map> engineeringPipeJackingList(ZEnginMaterialQualityBo bo){
+        return null;
+    }
+    public List<Map> engineeringInfrastructureList(ZEnginMaterialQualityBo bo){
+        return null;
+    }
+
 }