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 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 depotList = grainService.getDepotAndGrain(companyId, deptId); if(depotList == null || depotList.isEmpty()){ return dto; } Map varietyPieChar = new HashMap<>(); Map yearPieChart = new HashMap<>(); Map 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 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; } }