package com.dingzhuo.energy.project.energyBalance.service.impl; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; import com.dingzhuo.energy.project.energyBalance.domain.EnergyPic; import com.dingzhuo.energy.project.energyBalance.mapper.EnergyPicMapper; import com.dingzhuo.energy.project.energyBalance.service.IEnergyPicService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** * 工序单耗统计功能Service业务层处理 * * @author zhaow * @date 2020-12-26 */ @Service public class EnergyPicServiceImpl implements IEnergyPicService { @Autowired private EnergyPicMapper energyPicMapper; /** * 查询工序单耗统计功能报表的指标数据列表 * * @param energyPic 工序单耗统计功能报表的指标数据 * @return 工序单耗统计功能集合 */ public List selectEnergyPicList(EnergyPic energyPic){ //查询数据 List queryEnergyPiclRes = energyPicMapper.selectEnergyPicList(energyPic); //返回信息 List resList = new ArrayList<>(); //按 模型的address做个分组 其实 按 指标所在模型名字分组也可以 Map> addRessMap = queryEnergyPiclRes.stream().collect(Collectors.groupingBy(EnergyPic::getAddress, Collectors.toList())); //遍历分组,因为一个模型下就固定四个指标 产出、消耗、外供、损耗 ,将他们横起来做成一个 bean addRessMap.forEach((k,v)->{ EnergyPic tPic = new EnergyPic(); for(EnergyPic codePic:v) { String code = codePic.getCode(); tPic.setModename(codePic.getModename()); if(code.lastIndexOf("_CC")==code.length()-3)//根据指标的编码判定 是那种 值(产出、消耗等等),底层没有属性支持,先用这个 { tPic.setA1(codePic.getA1()); } if(code.lastIndexOf("_XH")==code.length()-3) { tPic.setA2(codePic.getA1()); } if(code.lastIndexOf("_WG")==code.length()-3) { tPic.setA3(codePic.getA1()); } if(code.lastIndexOf("_SH")==code.length()-3) { tPic.setA4(codePic.getA1()); } } resList.add(tPic); }); return resList; } private String calculationCpdh(String nyxhl,String cpcl) { try{ if(nyxhl.equals("--")||cpcl.equals("--")) { return "--"; }else{ double fz = Double.parseDouble(nyxhl); double fm = Double.parseDouble(cpcl); return String.format("%.2f", fz/fm); } }catch (Exception e) { e.printStackTrace(); return "--"; } } }