package com.ld.igds.databoard.controller;
|
|
import com.bstek.bdf2.core.business.IDept;
|
import com.bstek.bdf2.core.business.IUser;
|
import com.bstek.bdf2.core.context.ContextHolder;
|
import com.bstek.bdf2.core.exception.NoneLoginException;
|
import com.bstek.bdf2.core.model.DefaultDept;
|
import com.bstek.bdf2.core.model.DefaultUser;
|
import com.ld.igds.common.manager.CommonManager;
|
import com.ld.igds.constant.BizType;
|
import com.ld.igds.constant.Constant;
|
import com.ld.igds.constant.RespCodeEnum;
|
import com.ld.igds.data.BaseParam;
|
import com.ld.igds.data.PageResponse;
|
import com.ld.igds.databoard.data.DeptInfo;
|
import com.ld.igds.databoard.manager.DataboardManager;
|
import com.ld.igds.gas.dto.GasData;
|
import com.ld.igds.gas.manager.GasManager;
|
import com.ld.igds.grain.dto.GrainData;
|
import com.ld.igds.grain.dto.GrainParam;
|
import com.ld.igds.grain.manager.GrainManager;
|
import com.ld.igds.inout.InoutConstant;
|
import com.ld.igds.inout.dto.InoutData;
|
import com.ld.igds.inout.dto.InoutSumDto;
|
import com.ld.igds.inout.manager.InoutCommonManager;
|
import com.ld.igds.models.*;
|
import com.ld.igds.screen.data.ChartFood5303;
|
import com.ld.igds.screen.data.DepotGrainData;
|
import com.ld.igds.sys.service.SysUserService;
|
import com.ld.igds.util.ContextUtil;
|
import com.ld.igds.warn.data.WarnData;
|
import com.ld.igds.websocket.WebSocketPacket;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
import org.springframework.security.core.context.SecurityContextHolder;
|
import org.springframework.security.web.context.HttpRequestResponseHolder;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.web.servlet.ModelAndView;
|
|
import javax.annotation.Resource;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* @author vince.xu
|
* @ProjectName igds-dev
|
* @Description: 大屏页面
|
* @date 2019/11/27 002710:42
|
*/
|
@Controller
|
@RequestMapping("basic/databoard")
|
public class DataboardController {
|
|
@Autowired
|
private GrainManager grainManager;
|
@Autowired
|
private GasManager gasManager;
|
@Autowired
|
private CommonManager commonManager;
|
@Autowired
|
private InoutCommonManager inoutCommonManager;
|
@Autowired
|
private SysUserService sysUserService;
|
@Autowired
|
private DataboardManager databoardManager;
|
|
/**
|
* 综合大屏跳转不同页面
|
*
|
* @return
|
*/
|
@RequestMapping("/index-gateway")
|
public String indexGateway(@RequestParam(value = "u", required = false) String u,
|
@RequestParam(value = "tag", required = false) String tag) {
|
|
String companyId = ContextUtil.getDefaultCompanyId();
|
//上海嘉定定制大屏
|
if ("5303".equals(companyId)) {
|
return "redirect:index-5303?u=" + u + "&tag=" + tag;
|
}
|
|
//通用大屏
|
return "redirect:index?u=" + u;
|
}
|
|
/**
|
* 综合管理大屏
|
*
|
* @param u
|
* @return
|
*/
|
@RequestMapping("index")
|
public ModelAndView index(
|
@RequestParam(value = "u", required = false) String u) {
|
|
// 模拟自动登录
|
if (StringUtils.isNotEmpty(u) && null == ContextUtil.getLoginUser()) {
|
DefaultUser user = sysUserService.loadUser(u);
|
if (null == user) {
|
throw new NoneLoginException("NO Login User Info");
|
}
|
registerLoginInfo(user);
|
}
|
IUser user = ContextUtil.getLoginUser();
|
|
ModelAndView view = new ModelAndView();
|
|
String deptId = ContextUtil.subDeptId(user);
|
view.addObject("deptId", deptId);
|
|
List<Depot> listDepot = commonManager.listDepot(deptId);
|
view.addObject(Constant.MODEL_KEY_DEPOT_LIST, listDepot);
|
|
view.addObject(Constant.MODEL_KEY_LOGIN_USER, user);
|
|
// 粮情
|
GrainParam param = new GrainParam();
|
param.setCompanyId(user.getCompanyId());
|
param.setDeptId(deptId);
|
Map<String, GrainData> mapGrain = grainManager.getCacheGrainDateMap(param);
|
view.addObject(Constant.MODEL_KEY_GRAIN_MAP, mapGrain);
|
|
// 气体
|
Map<String, GasData> mapGas = gasManager.getCacheGasMap(user.getCompanyId(), deptId);
|
if (mapGas == null) {
|
mapGas = new HashMap<>();
|
}
|
view.addObject(Constant.MODEL_KEY_GAS_MAP, mapGas);
|
view.addObject("bizType", BizType.SCREEN.getCode());
|
view.addObject("bizTag", WebSocketPacket.BIZ_TAG_COMMON);
|
|
//获取库区基本信息
|
DeptInfo deptInfo = databoardManager.getDeptInfo(deptId);
|
view.addObject("deptInfo", deptInfo);
|
|
|
// 标语
|
DicSlogan dicSlogan = commonManager.getDicSlogan();
|
view.addObject("dicSlogan", dicSlogan);
|
|
// 大屏名称
|
DicSysConf sysConf = commonManager.getSysConf(user.getCompanyId());
|
String largeScreenName = sysConf.getScreeName();
|
if (largeScreenName.indexOf(Constant.TAG_SUB_NAME) != -1) {
|
DefaultDept defaultDept = commonManager.getSubDept(user, deptId);
|
largeScreenName = largeScreenName.replace(Constant.TAG_SUB_NAME,
|
defaultDept == null ? "" : defaultDept.getName());
|
}
|
view.addObject("largeScreenName", largeScreenName + "综合大屏");
|
|
WeatherInfo weatherInfo = commonManager.getWeather();
|
view.addObject("weatherInfo", weatherInfo);
|
view.setViewName("databoard/databoard");
|
return view;
|
}
|
|
/**
|
* 根据查询最新粮情数据
|
*
|
* @param param
|
* @return
|
*/
|
@RequestMapping("/query-grain-data-map")
|
@ResponseBody
|
public PageResponse<Map<String, GrainData>> queryGrainData(
|
@RequestBody GrainParam param) {
|
return grainManager.queryCheckDateMap(param);
|
}
|
|
/**
|
* 上海嘉定定制大屏
|
*
|
* @param u
|
* @return
|
*/
|
@RequestMapping("index-5303")
|
public ModelAndView index5303(@RequestParam(value = "u", required = false) String u,
|
@RequestParam(value = "tag", required = false) String tag) {
|
|
// 模拟自动登录
|
if (StringUtils.isNotEmpty(u) && null == ContextUtil.getLoginUser()) {
|
DefaultUser user = sysUserService.loadUser(u);
|
if (null == user) {
|
throw new NoneLoginException("NO Login User Info");
|
}
|
registerLoginInfo(user);
|
}
|
ModelAndView view = new ModelAndView();
|
|
IUser user = ContextUtil.getLoginUser();
|
view.addObject(Constant.MODEL_KEY_LOGIN_USER, user);
|
|
//库区编码
|
String deptId = ContextUtil.subDeptId(user);
|
view.addObject("deptId", deptId);
|
view.addObject("bizType", BizType.SCREEN.getCode());
|
view.addObject("bizTag", WebSocketPacket.BIZ_TAG_COMMON);
|
|
// 大屏名称
|
DicSysConf sysConf = commonManager.getSysConf(user.getCompanyId());
|
String largeScreenName = sysConf.getScreeName();
|
if (largeScreenName.indexOf(Constant.TAG_SUB_NAME) != -1) {
|
DefaultDept defaultDept = commonManager.getSubDept(user, deptId);
|
largeScreenName = largeScreenName.replace(Constant.TAG_SUB_NAME,
|
defaultDept == null ? "" : defaultDept.getName());
|
}
|
view.addObject("largeScreenName", largeScreenName + "综合大屏");
|
|
//天气
|
WeatherInfo weatherInfo = commonManager.getWeather();
|
view.addObject("weatherInfo", weatherInfo);
|
|
//仓库列表及粮情信息
|
List<DepotGrainData> depotGrainList = databoardManager.listDepotAndGrain(user.getCompanyId(), deptId);
|
view.addObject(Constant.MODEL_KEY_DEPOT_LIST, depotGrainList);
|
|
ChartFood5303 chartFood5303 = databoardManager.getFoodNumber(user.getCompanyId(), deptId);
|
view.addObject("chartFood", chartFood5303);
|
|
//是否隐藏仓储信息,1-不隐藏;2-隐藏
|
if (StringUtils.isEmpty(tag)) {
|
tag = "1";
|
}
|
view.addObject("tag", tag);
|
|
view.setViewName("databoard/databoard-5303");
|
return view;
|
}
|
|
/**
|
* 出入库大屏
|
*
|
* @param u
|
* @return
|
*/
|
@RequestMapping("inout")
|
public ModelAndView inout(
|
@RequestParam(value = "u", required = false) String u) {
|
// 模拟自动登录
|
if (StringUtils.isNotEmpty(u) && null == ContextUtil.getLoginUser()) {
|
DefaultUser user = new DefaultUser();
|
user.setCompanyId(ContextUtil.getDefaultCompanyId());
|
user.setUsername(u);
|
user.setCname("出入库大屏");
|
registerLoginInfo(user);
|
}
|
|
ModelAndView view = new ModelAndView();
|
List<Depot> listDepot = commonManager.listDepot(null);
|
view.addObject(Constant.MODEL_KEY_DEPOT_LIST, listDepot);
|
view.addObject(Constant.MODEL_KEY_LOGIN_USER,
|
ContextUtil.getLoginUser());
|
view.addObject("bizType", BizType.SCREEN.getCode());
|
view.addObject("bizTag", WebSocketPacket.BIZ_TAG_SCREEN_INOUT);
|
// 标语
|
DicSlogan dicSlogan = commonManager.getDicSlogan();
|
view.addObject("dicSlogan", dicSlogan);
|
|
|
IUser user = ContextUtil.getLoginUser();
|
String deptId = ContextUtil.subDeptId(user);
|
view.addObject("deptId", deptId);
|
|
// 大屏名称
|
DicSysConf sysConf = commonManager.getSysConf(user.getCompanyId());
|
String largeScreenName = sysConf.getScreeName();
|
if (largeScreenName.indexOf(Constant.TAG_SUB_NAME) != -1) {
|
DefaultDept defaultDept = commonManager.getSubDept(user, deptId);
|
largeScreenName = largeScreenName.replace(Constant.TAG_SUB_NAME,
|
defaultDept == null ? "" : defaultDept.getName());
|
}
|
view.addObject("largeScreenName", largeScreenName + "出入库大屏");
|
|
WeatherInfo weatherInfo = commonManager.getWeather();
|
view.addObject("weatherInfo", weatherInfo);
|
|
view.setViewName("databoard/databoard-inout");
|
return view;
|
}
|
|
/**
|
* 出入库大屏初始化通知后端
|
*
|
* @param param
|
* @return
|
*/
|
@RequestMapping("/init-inout-data")
|
@ResponseBody
|
public PageResponse<String> initInoutData(@RequestBody BaseParam param) {
|
|
if (null == param.getCompanyId()) {
|
IUser user = ContextUtil.getLoginUser();
|
|
param.setCompanyId(user.getCompanyId());
|
|
if (null == param.getDeptId()) {
|
param.setDeptId(ContextUtil.subDeptId(user));
|
}
|
}
|
|
inoutCommonManager.initInoutScreen(param.getCompanyId(),param.getDeptId());
|
|
return new PageResponse<>(RespCodeEnum.CODE_0000.getCode(), "成功!");
|
}
|
|
/**
|
* 化验室大屏
|
*
|
* @param u
|
* @param sort
|
* @return
|
*/
|
@RequestMapping("check")
|
public ModelAndView check(
|
@RequestParam(value = "u", required = false) String u,
|
@RequestParam(value = "sort", required = false) String sort) {
|
|
// 当前登录人信息
|
IUser user = ContextUtil.getLoginUser();
|
// 模拟自动登录
|
if (StringUtils.isNotEmpty(u) && null == ContextUtil.getLoginUser()) {
|
DefaultUser user2 = new DefaultUser();
|
user2.setCompanyId(ContextUtil.getDefaultCompanyId());
|
user2.setUsername(u);
|
user2.setCname("化验大屏");
|
registerLoginInfo(user2);
|
}
|
|
if (null == user) {
|
user = ContextUtil.getLoginUser();
|
}
|
|
String deptId = ContextUtil.subDeptId(user);
|
|
ModelAndView view = new ModelAndView();
|
List<Depot> listDepot = commonManager.listDepot(true, deptId);
|
view.addObject(Constant.MODEL_KEY_DEPOT_LIST, listDepot);
|
|
// 登录人
|
view.addObject(Constant.MODEL_KEY_LOGIN_USER, user);
|
|
view.addObject(Constant.MODEL_KEY_DEPT_ID, deptId);
|
|
view.addObject("bizType", BizType.SCREEN.getCode());
|
|
view.addObject("bizTag", WebSocketPacket.BIZ_TAG_SCREEN_CHECK);
|
// 标语
|
DicSlogan dicSlogan = commonManager.getDicSlogan();
|
view.addObject("dicSlogan", dicSlogan);
|
|
// 大屏名称
|
DefaultDept defaultDept = commonManager.getSubDept(user, deptId);
|
if (null == defaultDept) {
|
view.addObject("largeScreenName", "智慧粮库化验室引导");
|
} else {
|
view.addObject("largeScreenName", defaultDept.getName() + "化验室引导");
|
}
|
|
// 获取当前页面配置的摄像头信息
|
List<InoutConf> listInoutConf = inoutCommonManager.getListInoutConf(
|
user.getCompanyId(), deptId);
|
InoutConf conf = inoutCommonManager.getInoutConf(listInoutConf, sort,
|
InoutConstant.CONF_TYPE_60,
|
InoutConstant.PROGRESS_CHECK, 1);
|
view.addObject("camera", conf);
|
|
WeatherInfo weatherInfo = commonManager.getWeather();
|
view.addObject("weatherInfo", weatherInfo);
|
|
view.setViewName("databoard/databoard-check");
|
return view;
|
}
|
|
/**
|
* 化验大屏初始化通知后端
|
*
|
* @param param
|
* @return
|
*/
|
@RequestMapping("/init-check-data")
|
@ResponseBody
|
public PageResponse<String> initCheckData(@RequestBody BaseParam param) {
|
|
if (null == param.getCompanyId()) {
|
IUser user = ContextUtil.getLoginUser();
|
|
param.setCompanyId(user.getCompanyId());
|
|
if (null == param.getDeptId()) {
|
param.setDeptId(ContextUtil.subDeptId(user));
|
}
|
}
|
|
|
inoutCommonManager.initInoutScreen(param.getCompanyId(),param.getDeptId());
|
|
|
return new PageResponse<String>(RespCodeEnum.CODE_0000.getCode(), "成功!");
|
}
|
|
protected void registerLoginInfo(IUser user) {
|
HttpRequestResponseHolder holder = new HttpRequestResponseHolder(
|
ContextHolder.getRequest(), ContextHolder.getResponse());
|
holder.getRequest().getSession()
|
.setAttribute(ContextHolder.LOGIN_USER_SESSION_KEY, user);
|
UsernamePasswordAuthenticationToken auth = new UsernamePasswordAuthenticationToken(
|
user, user.getPassword(), user.getAuthorities());
|
SecurityContextHolder.getContext().setAuthentication(auth);
|
}
|
|
|
/**
|
* 集团或者公司大屏
|
*
|
* @param u 默认用户Id
|
* @param deptId 默认用户所在部门
|
* @return
|
*/
|
@RequestMapping("group")
|
public ModelAndView group(
|
@RequestParam(value = "u", required = false) String u,
|
@RequestParam(value = "d", required = false) String deptId) {
|
|
// 当前登录人信息
|
IUser user = ContextUtil.getLoginUser();
|
// 模拟自动登录
|
if (StringUtils.isNotEmpty(u) && null == user) {
|
DefaultUser user2 = new DefaultUser();
|
user2.setCompanyId(ContextUtil.getDefaultCompanyId());
|
user2.setUsername(u);
|
user2.setCname("出入库大屏");
|
registerLoginInfo(user2);
|
}
|
|
if (null == user) {
|
user = ContextUtil.getLoginUser();
|
}
|
|
ModelAndView view = new ModelAndView();
|
|
List<IDept> depts = user.getDepts();
|
IDept iDept = depts.get(0);
|
|
// 大屏名称
|
if (null == iDept) {
|
view.addObject("largeScreenName", "智慧粮库综合管理数字大屏");
|
} else {
|
view.addObject("largeScreenName", iDept.getName() + "数字大屏");
|
}
|
view.addObject(Constant.MODEL_KEY_LOGIN_USER, user);
|
view.addObject(Constant.MODEL_KEY_DEPT_ID, iDept.getId());
|
|
// 仓库列表
|
List<Depot> listDepot = commonManager.listDepotByDeptId(user.getCompanyId(), iDept.getId());
|
view.addObject(Constant.MODEL_KEY_DEPOT_LIST, listDepot);
|
|
// 库区列表
|
List<DefaultDept> deptList = commonManager.getDeptListByDeptId(iDept
|
.getId());
|
view.addObject("deptList", deptList);
|
|
// 警告列表
|
List<WarnData> warnList = commonManager.listWarnByDeptId(iDept.getId());
|
view.addObject("warnList", warnList);
|
|
view.addObject(Constant.MODEL_KEY_DEPT_ID, deptId);
|
view.addObject("bizType", BizType.SCREEN.getCode());
|
view.addObject("bizTag", WebSocketPacket.BIZ_TAG_SCREEN_GROUP);
|
|
// 统计出入库信息
|
Map<String, InoutSumDto> inoutMap = this.listInoutByDeptId(deptList);
|
view.addObject("inoutMap", inoutMap);
|
|
// 气象信息
|
WeatherInfo weatherInfo = commonManager.getWeather();
|
view.addObject("weatherInfo", weatherInfo);
|
|
view.setViewName("databoard/databoard-group");
|
return view;
|
}
|
|
/**
|
* 获取分库的出入库信息,集团大屏用
|
*
|
* @param deptList
|
* @return
|
*/
|
public Map<String, InoutSumDto> listInoutByDeptId(List<DefaultDept> deptList) {
|
|
Map<String, InoutSumDto> map = new HashMap<>();
|
List<InoutData> list1 = null;
|
List<InoutData> list2 = null;
|
InoutSumDto inoutDto;
|
for (DefaultDept dept : deptList) {
|
inoutDto = new InoutSumDto();
|
list1 = inoutCommonManager.getListInoutCache(dept.getId());
|
list2 = inoutCommonManager.getCompleteListInoutCache(dept.getId());
|
if (null != list1 && list1.size() > 0) {
|
for (InoutData inoutData : list1) {
|
if (InoutConstant.TYPE_IN.equals(inoutData.getType())) {
|
inoutDto.setInSumNum(inoutDto.getInSumNum() + 1);
|
}
|
if (InoutConstant.TYPE_OUT.equals(inoutData.getType())) {
|
inoutDto.setOutSumNum(inoutDto.getOutSumNum() + 1);
|
}
|
}
|
}
|
|
if (null != list2 && list2.size() > 0) {
|
for (InoutData inoutData : list2) {
|
if (InoutConstant.TYPE_IN.equals(inoutData.getType())) {
|
inoutDto.setInSumNum(inoutDto.getInSumNum() + 1);
|
inoutDto.setInComplateNum(inoutDto.getInComplateNum() + 1);
|
}
|
if (InoutConstant.TYPE_OUT.equals(inoutData.getType())) {
|
inoutDto.setOutSumNum(inoutDto.getOutSumNum() + 1);
|
inoutDto.setOutComplateNum(inoutDto.getOutComplateNum() + 1);
|
}
|
}
|
}
|
map.put(dept.getId(), inoutDto);
|
}
|
return map;
|
}
|
}
|