|
@ -54,9 +54,12 @@ import org.springframework.web.multipart.commons.CommonsMultipartFile; |
|
|
|
|
|
|
|
|
import java.io.IOException; |
|
|
import java.io.IOException; |
|
|
import java.io.OutputStream; |
|
|
import java.io.OutputStream; |
|
|
|
|
|
import java.math.BigDecimal; |
|
|
|
|
|
import java.math.RoundingMode; |
|
|
import java.nio.file.Files; |
|
|
import java.nio.file.Files; |
|
|
import java.nio.file.Path; |
|
|
import java.nio.file.Path; |
|
|
import java.util.*; |
|
|
import java.util.*; |
|
|
|
|
|
import java.util.concurrent.atomic.AtomicBoolean; |
|
|
import java.util.stream.Collectors; |
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
@ -624,13 +627,47 @@ public class IcVaccineServiceImpl extends BaseServiceImpl<IcVaccineDao, IcVaccin |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
List<VaccinePieResultDTO> list = baseDao.getVaccinePieData(formDTO); |
|
|
List<VaccinePieResultDTO> list = baseDao.getVaccinePieData(formDTO); |
|
|
list.forEach(item -> { |
|
|
int total = 0; |
|
|
if (NumConstant.ZERO_STR.equals(item.getCode())) { |
|
|
if (CollectionUtils.isNotEmpty(list)) { |
|
|
item.setLabel("未接种人数"); |
|
|
total = list.stream().mapToInt(item -> Integer.parseInt(item.getValue())).sum(); |
|
|
} else { |
|
|
AtomicBoolean flag = new AtomicBoolean(false); |
|
|
item.setLabel("接种" + item.getCode() + "针人数"); |
|
|
int finalTotal = total; |
|
|
|
|
|
list.forEach(item -> { |
|
|
|
|
|
if (NumConstant.ZERO_STR.equals(item.getCode())) { |
|
|
|
|
|
item.setLabel("未接种人数"); |
|
|
|
|
|
item.setRemark("未接种"+ item.getValue() +"人"); |
|
|
|
|
|
flag.set(true); |
|
|
|
|
|
} else { |
|
|
|
|
|
item.setLabel("接种" + item.getCode() + "针人数"); |
|
|
|
|
|
item.setRemark("接种" + item.getCode() + "针" + item.getValue() + "人"); |
|
|
|
|
|
} |
|
|
|
|
|
BigDecimal radio = new BigDecimal("0.00"); |
|
|
|
|
|
if (NumConstant.ZERO != finalTotal) { |
|
|
|
|
|
BigDecimal sum = new BigDecimal(finalTotal); |
|
|
|
|
|
BigDecimal count = new BigDecimal(item.getValue()); |
|
|
|
|
|
BigDecimal hundred = new BigDecimal(NumConstant.ONE_HUNDRED); |
|
|
|
|
|
radio = count.multiply(hundred).divide(sum, NumConstant.TWO, RoundingMode.HALF_UP); |
|
|
|
|
|
} |
|
|
|
|
|
item.setRatio(radio.stripTrailingZeros().toPlainString().concat("%")); |
|
|
|
|
|
}); |
|
|
|
|
|
if (!flag.get()) { |
|
|
|
|
|
VaccinePieResultDTO dto = new VaccinePieResultDTO(); |
|
|
|
|
|
dto.setLabel("未接种人数"); |
|
|
|
|
|
dto.setCode(NumConstant.ZERO_STR); |
|
|
|
|
|
dto.setValue(NumConstant.ZERO_STR); |
|
|
|
|
|
dto.setRatio("0%"); |
|
|
|
|
|
dto.setRemark("未接种0人"); |
|
|
|
|
|
list.add(dto); |
|
|
} |
|
|
} |
|
|
}); |
|
|
} else { |
|
|
|
|
|
VaccinePieResultDTO dto = new VaccinePieResultDTO(); |
|
|
|
|
|
dto.setLabel("未接种人数"); |
|
|
|
|
|
dto.setCode(NumConstant.ZERO_STR); |
|
|
|
|
|
dto.setValue(NumConstant.ZERO_STR); |
|
|
|
|
|
dto.setRatio("0%"); |
|
|
|
|
|
dto.setRemark("未接种0人"); |
|
|
|
|
|
list.add(dto); |
|
|
|
|
|
} |
|
|
return list; |
|
|
return list; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|