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<Object> execute(Phone35Request<JSONObject> 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<Depot> depotList = hPhoneService.listDepot(phone35AuthUser.getCompanyId(), deptId);
|
if(null == depotList || depotList.isEmpty()){
|
return PhoneRespUtil.success(dto,req);
|
}
|
|
Map<String, Double> varietyPieChar = new HashMap<>();
|
Map<String, Double> typePieChart = new HashMap<>();
|
Map<String, Double> 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);
|
}
|
}
|