package com.ld.igds.phone35.service.impl; import com.alibaba.fastjson.JSONObject; import com.bstek.bdf2.core.model.DefaultDept; import com.ld.igds.constant.*; import com.ld.igds.data.ChartPie; import com.ld.igds.models.Depot; import com.ld.igds.phone35.dto.Dto5101; import com.ld.igds.phone35.dto.Phone35AuthUser; import com.ld.igds.phone35.dto.PhoneResponse; import com.ld.igds.phone35.param.Phone35CommonParam; import com.ld.igds.phone35.param.Phone35Request; import com.ld.igds.phone35.util.PhoneRespUtil; import com.ld.igds.phone35.constant.Phone35Constant; import com.ld.igds.phone35.service.Phone35Service; import com.ld.igds.sys.service.SysDeptService; import com.ld.igds.util.NumberUtil; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateFormatUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.text.DecimalFormat; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 库区信息统计 * @author chen */ @Service public class Phone35ServiceImpl5101 implements Phone35Service { @Autowired private HPhoneServiceImpl hPhoneService; @Autowired private SysDeptService deptService; @Override public String getInterfaceId() { return Phone35Constant.API_PHONE_5101; } @SuppressWarnings("unchecked") @Override public PhoneResponse execute(Phone35Request req, Phone35AuthUser phone35AuthUser) throws Exception { //转化为对象 Phone35CommonParam param = JSONObject.parseObject(req.getData().toString(), Phone35CommonParam.class); if(null == param || StringUtils.isEmpty(param.getDeptId())){ return PhoneRespUtil.error(RespCodeEnum.CODE_1111,"参数有误,请核查!"); } String deptId = param.getDeptId(); Dto5101 dto = new Dto5101(); dto.setTime(DateFormatUtils.format(new Date(),"yyyy-MM-dd HH:mm:ss")); //获取库区信息 DefaultDept dept = deptService.getDeptById(deptId); dto.setDeptName(dept.getName()); dto.setDeptAddress(dept.getAddress() == null?"##":dept.getAddress()); dto.setDepotNum(dept.getDepotNum() == null?0:dept.getDepotNum()); dto.setOilNum(dept.getOilNum() == null?0:dept.getOilNum()); dto.setDesignStorage((dept.getStorage() == null?0.0:dept.getStorage()) + (dept.getOilStorage() == null?0.0:dept.getOilStorage())); //获取仓库实时信息 List depotList = hPhoneService.listDepot(phone35AuthUser.getCompanyId(), deptId); if(null == depotList || depotList.isEmpty()){ return PhoneRespUtil.success(dto,req); } Map varietyPieChar = new HashMap<>(); Map typePieChart = new HashMap<>(); Map levelPieChart = new HashMap<>(); Double realStorage = 0.0; for (Depot depot : depotList) { if(DepotType.TYPE_99.getCode().equals(depot.getDepotType())){ continue; } if (null == depot.getStorageReal()) { continue; } realStorage += depot.getStorageReal()/1000; if (StringUtils.isEmpty(depot.getFoodVariety())) { varietyPieChar.putIfAbsent("其他", 0.0); varietyPieChar.put("其他", varietyPieChar.get("其他") + depot.getStorageReal() / 1000); }else { //品种 varietyPieChar.putIfAbsent(depot.getFoodVariety(), 0.0); varietyPieChar.put(depot.getFoodVariety(), varietyPieChar.get(depot.getFoodVariety()) + depot.getStorageReal() / 1000); } if (StringUtils.isEmpty(depot.getFoodType())) { //性质 typePieChart.putIfAbsent("其他", 0.0); typePieChart.put("其他", typePieChart.get("其他") + depot.getStorageReal() / 1000); }else { //性质 typePieChart.putIfAbsent(depot.getFoodType(), 0.0); typePieChart.put(depot.getFoodType(), typePieChart.get(depot.getFoodType()) + depot.getStorageReal() / 1000); } //等级 if (StringUtils.isEmpty(depot.getFoodLevel())) { levelPieChart.putIfAbsent("其他", 0.0); levelPieChart.put("其他", levelPieChart.get("其他") + depot.getStorageReal() / 1000); }else { levelPieChart.putIfAbsent(depot.getFoodLevel(), 0.0); levelPieChart.put(depot.getFoodLevel(), levelPieChart.get(depot.getFoodLevel()) + depot.getStorageReal() / 1000); } } dto.setRealStorage(NumberUtil.keepPrecision(realStorage, 1)); ChartPie chartPie; //品种数量转化 for (String key : varietyPieChar.keySet()) { chartPie = new ChartPie(); chartPie.setName(FoodVariety.getMsg(key)); chartPie.setValue(new DecimalFormat("0.0").format(varietyPieChar.get(key))); dto.getListFoodVariety().add(chartPie); } //性质数量转化 for (String key : typePieChart.keySet()) { chartPie = new ChartPie(); chartPie.setName(FoodType.getMsg(key)); chartPie.setValue(new DecimalFormat("0.0").format(typePieChart.get(key))); dto.getListFoodType().add(chartPie); } //等级数量转化 for (String key : levelPieChart.keySet()) { chartPie = new ChartPie(); chartPie.setName(FoodLevel.getMsg(key)); chartPie.setValue(new DecimalFormat("0.0").format(levelPieChart.get(key))); dto.getListFoodLevel().add(chartPie); } return PhoneRespUtil.success(dto,req); } }