package com.ld.igds.databoard.manager;
|
|
import com.bstek.bdf2.core.model.DefaultDept;
|
import com.ld.igds.constant.DepotType;
|
import com.ld.igds.constant.FoodVariety;
|
import com.ld.igds.data.ChartPie;
|
import com.ld.igds.databoard.data.DeptInfo;
|
import com.ld.igds.grain.service.CoreGrainService;
|
import com.ld.igds.models.Depot;
|
import com.ld.igds.models.DicArea;
|
import com.ld.igds.screen.data.ChartFood5303;
|
import com.ld.igds.screen.data.DepotGrainData;
|
import com.ld.igds.sys.service.SysDeptService;
|
import com.ld.igds.util.ContextUtil;
|
import com.ld.igds.view.service.HDepotService;
|
import com.ld.igds.view.service.HDicAreaService;
|
import org.apache.commons.lang.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
|
import java.text.DecimalFormat;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* 大屏逻辑控制层
|
* @author chen
|
*/
|
@Component
|
public class DataboardManager {
|
|
@Autowired
|
private CoreGrainService grainService;
|
@Autowired
|
private SysDeptService sysDeptService;
|
@Autowired
|
private HDepotService depotService;
|
@Autowired
|
private HDicAreaService areaService;
|
/**
|
* 获取仓库列表,及仓库最新的一条粮情信息
|
*
|
* @return
|
*/
|
public List<DepotGrainData> listDepotAndGrain(String companyId, String deptId) {
|
if (StringUtils.isEmpty(companyId)) {
|
companyId = ContextUtil.getDefaultCompanyId();
|
}
|
|
return grainService.getDepotAndGrain(companyId, deptId);
|
}
|
|
|
public ChartFood5303 getFoodNumber(String companyId, String deptId) {
|
|
ChartFood5303 dto = new ChartFood5303();
|
List<DepotGrainData> depotList = grainService.getDepotAndGrain(companyId, deptId);
|
|
if(depotList == null || depotList.isEmpty()){
|
return dto;
|
}
|
Map<String, Double> varietyPieChar = new HashMap<>();
|
Map<String, Double> yearPieChart = new HashMap<>();
|
Map<String, Double> locationPieChart = new HashMap<>();
|
|
Double realStorage = 0.0;
|
Integer depotNum = 0;
|
for (DepotGrainData depot : depotList) {
|
if(DepotType.TYPE_99.getCode().equals(depot.getDepotType())){
|
continue;
|
}
|
//仓库个数
|
depotNum += 1;
|
if (null == depot.getStorageReal()) {
|
continue;
|
}
|
dto.setDepotType(depot.getDepotTypeName());
|
//总储量
|
realStorage += depot.getStorageReal();
|
|
//品种
|
if (StringUtils.isEmpty(depot.getFoodVariety())) {
|
varietyPieChar.putIfAbsent("其他", 0.0);
|
varietyPieChar.put("其他", varietyPieChar.get("其他") + depot.getStorageReal());
|
}else {
|
varietyPieChar.putIfAbsent(depot.getFoodVariety(), 0.0);
|
varietyPieChar.put(depot.getFoodVariety(), varietyPieChar.get(depot.getFoodVariety()) + depot.getStorageReal());
|
}
|
|
//年份
|
if (StringUtils.isEmpty(depot.getFoodYear())) {
|
if (StringUtils.isEmpty(depot.getFoodVariety())) {
|
yearPieChart.putIfAbsent("其他年份", 0.0);
|
yearPieChart.put("其他年份", yearPieChart.get("其他年份") + depot.getStorageReal());
|
}else {
|
yearPieChart.putIfAbsent("其他年份," + depot.getFoodVariety(), 0.0);
|
yearPieChart.put("其他年份," + depot.getFoodVariety(), yearPieChart.get("其他年份," + depot.getFoodVariety()) + depot.getStorageReal());
|
}
|
}else {
|
if (StringUtils.isEmpty(depot.getFoodVariety())) {
|
yearPieChart.putIfAbsent(depot.getFoodYear() + ",其他粮", 0.0);
|
yearPieChart.put(depot.getFoodYear() + ",其他粮", yearPieChart.get(depot.getFoodYear() + ",其他粮") + depot.getStorageReal());
|
}else {
|
yearPieChart.putIfAbsent(depot.getFoodYear() + "," +depot.getFoodVariety(), 0.0);
|
yearPieChart.put(depot.getFoodYear() + "," +depot.getFoodVariety(), yearPieChart.get(depot.getFoodYear() + "," +depot.getFoodVariety()) + depot.getStorageReal());
|
}
|
}
|
|
//产地
|
if (StringUtils.isEmpty(depot.getFoodLocation())) {
|
locationPieChart.putIfAbsent("其他", 0.0);
|
locationPieChart.put("其他", locationPieChart.get("其他") + depot.getStorageReal());
|
}else {
|
locationPieChart.putIfAbsent(depot.getFoodLocation(), 0.0);
|
locationPieChart.put(depot.getFoodLocation(), locationPieChart.get(depot.getFoodLocation()) + depot.getStorageReal());
|
}
|
}
|
dto.setDepotNum(depotNum);
|
dto.setRealStorage(realStorage);
|
|
ChartPie chartPie;
|
//品种数量转化
|
for (String key : varietyPieChar.keySet()) {
|
chartPie = new ChartPie();
|
chartPie.setName(FoodVariety.getMsg(key));
|
chartPie.setValue(new DecimalFormat("0").format(varietyPieChar.get(key)));
|
dto.getListFoodVariety().add(chartPie);
|
}
|
//年份
|
for (String key : yearPieChart.keySet()) {
|
chartPie = new ChartPie();
|
String[] split = key.split(",");
|
if(split.length > 1){
|
chartPie.setName(split[0] + "年" + FoodVariety.getMsg(split[1]));
|
chartPie.setValue(new DecimalFormat("0").format(yearPieChart.get(key)));
|
}else {
|
chartPie.setName(key);
|
chartPie.setValue(new DecimalFormat("0").format(yearPieChart.get(key)));
|
}
|
dto.getListFoodYear().add(chartPie);
|
}
|
//产地
|
for (String key : locationPieChart.keySet()) {
|
chartPie = new ChartPie();
|
chartPie.setName(key);
|
chartPie.setValue(new DecimalFormat("0").format(locationPieChart.get(key)));
|
dto.getListFoodLocation().add(chartPie);
|
}
|
|
return dto;
|
}
|
|
/**
|
* 获取库区基础信息
|
* @param deptId
|
* @return
|
*/
|
public DeptInfo getDeptInfo(String deptId) {
|
|
DeptInfo dto = new DeptInfo();
|
DefaultDept dept = sysDeptService.getDeptById(deptId);
|
if (null == dept) {
|
return dto;
|
}
|
|
//库区名称
|
dto.setDeptName(dept.getName());
|
|
//所在省市县
|
String addr = "";
|
DicArea dicArea = areaService.listDicAreaByCode(dept.getProvince());
|
if(null != dicArea){
|
addr += "-" + dicArea.getName();
|
}
|
dicArea = areaService.listDicAreaByCode(dept.getCity());
|
if(null != dicArea){
|
addr += "-" + dicArea.getName();
|
}
|
dicArea = areaService.listDicAreaByCode(dept.getCountry());
|
if(null != dicArea){
|
addr += "-" + dicArea.getName();
|
dto.setAddr(addr.substring(1));
|
}else{
|
dto.setAddr("未配置");
|
}
|
|
//设计储量
|
Double storage = 0.0;
|
if (null != dept.getStorage()) {
|
storage += dept.getStorage();
|
}
|
if (null != dept.getOilStorage()) {
|
storage += dept.getOilStorage();
|
}
|
dto.setStorage(Double.toString(storage));
|
|
//获取仓库列表
|
List<Depot> depotList = depotService.getData(null);
|
if (depotList == null || depotList.isEmpty()) {
|
return dto;
|
}
|
|
//统计数量及储量
|
Double foodStorage = 0.0, oilStorage = 0.0;
|
int depotNum = 0, oilNum = 0;
|
for (Depot depot : depotList) {
|
if (DepotType.TYPE_99.getCode().equals(depot.getDepotType())) {
|
continue;
|
}
|
if (DepotType.TYPE_03.getCode().equals(depot.getDepotType())) {
|
oilNum += 1;
|
if (null == depot.getStorageReal()) {
|
continue;
|
}
|
oilStorage += depot.getStorageReal()/1000;
|
} else {
|
depotNum += 1;
|
if (null == depot.getStorageReal()) {
|
continue;
|
}
|
foodStorage += depot.getStorageReal()/1000;
|
}
|
}
|
dto.setDepotNum(depotNum);
|
dto.setOilNum(oilNum);
|
dto.setFoodStorage(new DecimalFormat("0.0").format(foodStorage));
|
dto.setOilStorage(new DecimalFormat("0.0").format(oilStorage));
|
|
return dto;
|
}
|
}
|