package com.rzyc.controller; import com.common.utils.*; import com.common.utils.model.MultiResult; import com.common.utils.model.Pager; import com.common.utils.model.SingleResult; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import com.rzyc.bean.StorageData; import com.rzyc.bean.bigdata.*; import com.rzyc.bean.bigdata.check.EntSpread; import com.rzyc.bean.bigdata.check.OrgCheck; import com.rzyc.bean.bigdata.check.OrgDangerInfo; import com.rzyc.bean.bigdata.check.OrgEntRiskNum; import com.rzyc.bean.bigdata.check.*; import com.rzyc.bean.bigdata.dto.ControlCheckDto; import com.rzyc.bean.bigdata.dto.StorageDto; import com.rzyc.bean.bigdata.user.PerformInfo; import com.rzyc.bean.bigdata.user.UnitList; import com.rzyc.enums.AreaOrgType; import com.rzyc.enums.DelState; import com.rzyc.enums.MemberType; import com.rzyc.enums.RiskLevel; import com.rzyc.model.Storage; import com.rzyc.model.ent.SysEnterprise; import com.rzyc.model.user.SysUser; import io.swagger.annotations.*; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.*; @Api(tags = "大屏") @Controller @CrossOrigin("*") @RequestMapping("/bigdata") public class BigdataController extends com.rzyc.controller.BaseController { @ApiOperation(value = "仓库列表", notes = "仓库列表") @GetMapping("/storageList") @ResponseBody public MultiResult storageList(StorageDto storageDto)throws Exception{ MultiResult result = new MultiResult<>(); String nameHouse = TypeConversion.getCondition(storageDto.getName()); List storages = storageMapper.findByLon(nameHouse,storageDto.getRiskLevel(),storageDto.getStreetCode()); if(null != storages && storages.size() > 0){ result.setData(storages); } return result; } @ApiOperation(value = "仓库统计数据", notes = "仓库统计数据") @GetMapping("/storageData") @ResponseBody public SingleResult storageData(StorageDto storageDto)throws Exception{ SingleResult result = new SingleResult<>(); String nameHouse = TypeConversion.getCondition(storageDto.getName()); Integer total = storageMapper.countByRiskLevel("",nameHouse,storageDto.getStreetCode()); Integer redlevel = storageMapper.countByRiskLevel(RiskLevel.RED.getLevel()+"",nameHouse,storageDto.getStreetCode()); Integer orangelevel = storageMapper.countByRiskLevel(RiskLevel.ORANGE.getLevel()+"",nameHouse,storageDto.getStreetCode()); Integer yellowlevel = storageMapper.countByRiskLevel(RiskLevel.YELLOW.getLevel()+"",nameHouse,storageDto.getStreetCode()); Integer bluelevel = storageMapper.countByRiskLevel(RiskLevel.BLUE.getLevel()+"",nameHouse,storageDto.getStreetCode()); StorageData storageData = new StorageData(); storageData.setTotal(total); storageData.setRedlevel(redlevel); storageData.setOrangelevel(orangelevel); storageData.setYellowlevel(yellowlevel); storageData.setBluelevel(bluelevel); result.setData(storageData); return result; } @ApiOperation(value = "周检查情况", notes = "周检查情况") @GetMapping("/weekCheckInfo") @ApiImplicitParam(name = "orgCode",value = "街道id 不传为街道检查信息 传为街道下社区检查信息") @ResponseBody public MultiResult weekCheckInfo(String orgCode)throws Exception{ MultiResult result = new MultiResult<>(); String parentId = constantsConfigure.getSuperiorOrgCode(); if(StringUtils.isNotBlank(orgCode)){ parentId = orgCode; } List checkInfos = bookEntCheckMapper.weekCheckInfo(parentId); result.setData(checkInfos); return result; } @ApiOperation(value = "责任网格区、镇街领导列表", notes = "责任网格区、镇街领导列表") @GetMapping("/leaderUser") @ResponseBody public MultiResult leaderUser()throws Exception{ MultiResult result = new MultiResult<>(); List memberTypes = new ArrayList<>(); memberTypes.add(MemberType.DISTRICT_LEADER.getType()); List dutyNets = new LinkedList<>(); List topNets = sysUserMapper.leaderUser(memberTypes); List streetNets = sysUserMapper.streetCharger(constantsConfigure.getSuperiorOrgCode()); dutyNets.addAll(topNets); dutyNets.addAll(streetNets); if(null != dutyNets && dutyNets.size() > 0){ for (DutyNet dutyNet : dutyNets){ //领导列表 dutyNet.setType(1); } } result.setData(dutyNets); return result; } @ApiOperation(value = "责任网格街道列表", notes = "责任网格街道列表") @GetMapping("/streetList/{targetId}") @ResponseBody public MultiResult streetList(@PathVariable String targetId)throws Exception{ MultiResult result = new MultiResult<>(); String streetCode = targetId; SysUser sysUser = sysUserMapper.selectByPrimaryKey(targetId); if(null != sysUser){ streetCode = sysUser.getOrgcode(); } List dutyNets = new ArrayList<>(); if(null != sysUser){ dutyNets = bookEntCheckMapper.streetCheckList(streetCode,MemberType.TOWN_JUST.getType()); }else{ dutyNets = bookEntCheckMapper.streetCheck(streetCode,MemberType.TOWN_JUST.getType()); } for (DutyNet dutyNet : dutyNets){ //计算覆盖率 Double rate = 0.0; if(dutyNet.getTotalEnt() > 0){ rate = Arith.div(dutyNet.getCheckEnt(),dutyNet.getTotalEnt(),2); } rate = rate * 100; rate = TypeConversion.decimalFormat(rate,2); dutyNet.setCheckRate(rate); //街道列表 dutyNet.setType(2); } result.setData(dutyNets); return result; } @ApiOperation(value = "责任网格社区列表", notes = "责任网格社区列表") @GetMapping("/communityList/{targetId}") @ResponseBody public MultiResult communityList(@PathVariable String targetId)throws Exception{ MultiResult result = new MultiResult<>(); List dutyNets = bookEntCheckMapper.streetCheckList(targetId,MemberType.COMMUNITY_LEADER.getType()); for (DutyNet dutyNet : dutyNets){ //计算覆盖率 Double rate = 0.0; if(dutyNet.getTotalEnt() > 0){ rate = Arith.div(dutyNet.getCheckEnt(),dutyNet.getTotalEnt(),2); } rate = rate * 100; rate = TypeConversion.decimalFormat(rate,2); dutyNet.setCheckRate(rate); //社区列表 dutyNet.setType(3); } result.setData(dutyNets); return result; } @ApiOperation(value = "应急信息", notes = "应急信息") @GetMapping("/emergencyInfo") @ResponseBody public SingleResult emergencyInfo()throws Exception{ SingleResult result = new SingleResult<>(); EmergencyInfo emergencyInfo = new EmergencyInfo(); //应急队伍数 Long teamNum = othTeamMapper.counOthTeam("%%",""); emergencyInfo.setTeamNum(teamNum.intValue()); //应急专家 Long expertNum = othExpertMapper.countExpertPage("%%",""); emergencyInfo.setExpertNum(expertNum.intValue()); //应急预案 Long planNum = othPlanMapper.counTOthPlan("%%","","",""); emergencyInfo.setPlanNum(planNum.intValue()); //避难场所 Integer placeNum = othRefugeMapper.countAll(); emergencyInfo.setPlaceNum(placeNum); //应急仓库 Integer warehouseNum = otheWareHouseMapper.countByDelState(DelState.NOT_DEL.getState()); emergencyInfo.setWarehouseNum(warehouseNum); result.setData(emergencyInfo); return result; } @ApiOperation(value = "监督检查信息", notes = "监督检查信息") @GetMapping("/controlCheck/{type}") @ApiImplicitParam(name = "type",value = "类型 1、行业部门 2、产业功能区 3、镇街") @ResponseBody public SingleResult controlCheck(@PathVariable Integer type)throws Exception{ SingleResult result = new SingleResult<>(); ControlCheck controlCheck = new ControlCheck(); if(1 == type){ //行业部门 controlCheck = unitCheck(); }else if(2 == type){ //园区 controlCheck = areaCheck(AreaOrgType.PARK.getType()); }else if(3 == type){ //镇街 controlCheck = areaCheck(AreaOrgType.AREA.getType()); } result.setData(controlCheck); return result; } /** * 行业部门监督检查情况 * @return * @throws Exception */ public ControlCheck unitCheck()throws Exception{ ControlCheck controlCheck = new ControlCheck(); //企业总数 Integer entNum = sysEnterpriseMapper.countAll(""); //检查企业总数 Integer checkEntNum = sysEnterpriseMapper.unitCheckNum(constantsConfigure.getUnitId(),null); //红色企业 Integer redNum = sysEnterpriseMapper.unitCheckNum(constantsConfigure.getUnitId(),RiskLevel.RED.getLevel()); //橙色企业 Integer orangeNum = sysEnterpriseMapper.unitCheckNum(constantsConfigure.getUnitId(),RiskLevel.RED.getLevel()); //黄色企业 Integer yellowNum = sysEnterpriseMapper.unitCheckNum(constantsConfigure.getUnitId(),RiskLevel.RED.getLevel()); //蓝色企业 Integer blueNum = checkEntNum - redNum - orangeNum - yellowNum; controlCheck.setEntNum(entNum); controlCheck.setCheckEntNum(checkEntNum); controlCheck.setBlueNum(blueNum); controlCheck.setRedNum(redNum); controlCheck.setOrangeNum(orangeNum); controlCheck.setYellowNum(yellowNum); //检查覆盖率 Double rate = Arith.div(checkEntNum,entNum,2); rate = rate * 100; rate = TypeConversion.decimalFormat(rate,2); controlCheck.setCheckRate(rate); //隐患数量 Integer dangerNum = bookEntHTMapper.unitDangerNum(constantsConfigure.getUnitId()); controlCheck.setDangerNum(dangerNum); return controlCheck; } /** * 属地监督检查情况 * @return * @throws Exception */ public ControlCheck areaCheck(Integer orgType)throws Exception{ ControlCheck controlCheck = new ControlCheck(); //企业总数 Integer entNum = sysEnterpriseMapper.countAll(""); //检查企业总数 Integer checkEntNum = sysEnterpriseMapper.areaCheckNum(orgType,null); //红色企业 Integer redNum = sysEnterpriseMapper.areaCheckNum(orgType,RiskLevel.RED.getLevel()); //橙色企业 Integer orangeNum = sysEnterpriseMapper.areaCheckNum(orgType,RiskLevel.ORANGE.getLevel()); //黄色企业 Integer yellowNum = sysEnterpriseMapper.areaCheckNum(orgType,RiskLevel.YELLOW.getLevel()); //蓝色企业 Integer blueNum = checkEntNum - redNum - orangeNum - yellowNum; controlCheck.setEntNum(entNum); controlCheck.setCheckEntNum(checkEntNum); controlCheck.setBlueNum(blueNum); controlCheck.setRedNum(redNum); controlCheck.setOrangeNum(orangeNum); controlCheck.setYellowNum(yellowNum); //检查覆盖率 Double rate = Arith.div(checkEntNum,entNum,2); rate = rate * 100; rate = TypeConversion.decimalFormat(rate,2); controlCheck.setCheckRate(rate); //隐患数量 Integer dangerNum = bookEntHTMapper.areaDangerNum(orgType); controlCheck.setDangerNum(dangerNum); return controlCheck; } @ApiOperation(value = "地图街道信息", notes = "地图街道信息") @GetMapping("/streetInfo") @ResponseBody public MultiResult streetInfo()throws Exception{ MultiResult result = new MultiResult<>(); List streetInfos = sysEnterpriseMapper.streetInfo(constantsConfigure.getSuperiorOrgCode()); result.setData(streetInfos); return result; } @ApiOperation(value = "清单履职信息", notes = "地图街道信息") @GetMapping("/performList/{type}") @ApiImplicitParam(name = "type",value = "类型 1、行业部门 2、产业功能区 3、镇街") @ResponseBody public MultiResult performList(@PathVariable Integer type)throws Exception{ MultiResult result = new MultiResult<>(); String year = Calendar.getInstance().get(Calendar.YEAR)+""; List unitLists = new ArrayList<>(); if(1 == type){ //行业部门 unitLists = listPerformMapper.unitPerformInfo(constantsConfigure.getUnitId(),year); }else if(2 == type){ //园区 unitLists = listPerformMapper.areaPerformInfo(constantsConfigure.getAreaUnitId(),year,AreaOrgType.PARK.getType()); }else if(3 == type){ //镇街 unitLists = listPerformMapper.areaPerformInfo(constantsConfigure.getAreaUnitId(),year,AreaOrgType.AREA.getType()); } //处理清单履职信息 handleUnitLists(unitLists); result.setData(unitLists); return result; } /** * 处理清单履职信息 * @param unitLists * @throws Exception */ protected void handleUnitLists(List unitLists)throws Exception{ for (UnitList unitList : unitLists){ //总数 Integer totalNum = 0; //完成数 Integer completeNum = 0; List performInfos = unitList.getPerformInfos(); if (null != performInfos && performInfos.size() > 0) { for (PerformInfo performInfo : performInfos){ //频率 Integer frequency = performInfo.getFrequency(); if(null == frequency ){ if(StringUtils.isNotBlank(performInfo.getListFactorId())){ frequency = 1; }else{ frequency = 0; } } //指标 Integer checkStandard = performInfo.getCheckStandard(); if(null == checkStandard){ if(StringUtils.isNotBlank(performInfo.getListFactorId())){ checkStandard = 1; }else{ checkStandard = 0; } } //单个清单目标数 Integer facotrTotal = frequency * checkStandard; //完成数超过目标数 完成数等于目标数 Integer detailNum = performInfo.getDetailNum(); if(detailNum > facotrTotal){ detailNum = facotrTotal; } totalNum += facotrTotal; completeNum += detailNum; } } unitList.setPerformInfos(new ArrayList<>()); unitList.setCompleteNum(completeNum); unitList.setTotalNum(totalNum); } } @ApiOperation(value = "三方检查", notes = "三方检查") @GetMapping("/orgCheck") @ApiImplicitParam(name = "orgCode",value = "地区id 点击街道之后传街道id") @ResponseBody public SingleResult orgCheck(String orgCode)throws Exception{ SingleResult result = new SingleResult<>(); OrgCheck orgCheck = new OrgCheck(); //企业总数 Integer entNum = sysEnterpriseMapper.countAll(orgCode); orgCheck.setEntNum(entNum); //已检查企业 Integer checkEntNum = sysEnterpriseMapper.checkedNum(orgCode); orgCheck.setCheckEntNum(checkEntNum); //未检查企业 Integer notCheckEntNum = sysEnterpriseMapper.notCheckNum(orgCode); orgCheck.setNotCheckEntNum(notCheckEntNum); //机构服务企业风险分布 EntSpread orgNum = new EntSpread(); OrgEntRiskNum orgEntNum = sysEnterpriseMapper.orgEntNum(orgCode); if(null != orgEntNum.getEntTotal()){ orgEntNum.setEntTotal(0); } if(null != orgEntNum.getYellowNum()){ orgEntNum.setYellowNum(0); } if(null != orgEntNum.getOrangeNum()){ orgEntNum.setOrangeNum(0); } if(null != orgEntNum.getRedNum()){ orgEntNum.setRedNum(0); } Integer blueNum = orgEntNum.getEntTotal() - orgEntNum.getYellowNum() - orgEntNum.getOrangeNum() - orgEntNum.getRedNum(); orgEntNum.setBlueNum(blueNum); orgNum.setEntTotal(orgEntNum.getEntTotal()); orgNum.setEntRiskNum(orgEntNum); orgCheck.setOrgNum(orgNum); //无机构服务企业风险分布 EntSpread notOrgNum = new EntSpread(); OrgEntRiskNum notOrgEntNum = sysEnterpriseMapper.notOrgEntNum(orgCode); blueNum = notOrgEntNum.getEntTotal() - notOrgEntNum.getYellowNum() - notOrgEntNum.getOrangeNum() - notOrgEntNum.getRedNum(); notOrgEntNum.setBlueNum(blueNum); notOrgNum.setEntTotal(notOrgEntNum.getEntTotal()); notOrgNum.setEntRiskNum(notOrgEntNum); orgCheck.setNotOrgNum(notOrgNum); result.setData(orgCheck); return result; } @ApiOperation(value = "三方检查隐患", notes = "三方检查隐患") @GetMapping("/orgDangerInfo") @ApiImplicitParam(name = "orgCode",value = "地区id 点击街道之后传街道id") @ResponseBody public SingleResult orgDangerInfo(String orgCode)throws Exception{ SingleResult result = new SingleResult<>(); OrgDangerInfo orgDangerInfo = orgDangerMapper.orgDangerInfo(orgCode); result.setData(orgDangerInfo); return result; } @ApiOperation(value = "风险研判", notes = "风险研判") @GetMapping("/riskJudge") @ApiImplicitParam(name = "orgCode",value = "地区id 点击街道之后传街道id") @ResponseBody public SingleResult riskJudge(String orgCode)throws Exception{ SingleResult result = new SingleResult<>(); RiskJudge riskJudge = new RiskJudge(); //风险较大镇 List topRiskStreet = sysOrgMapper.topRiskStreet(); riskJudge.setTopRiskStreet(topRiskStreet); //风险较大行业 List industryRisks = sysEnterpriseMapper.industryRisk(orgCode); riskJudge.setIndustryRisks(industryRisks); result.setData(riskJudge); return result; } @ApiOperation(value = "监督检查-企业管控分析", notes = "监督检查-企业管控分析") @GetMapping("/controlCheckEnt") @ResponseBody public SingleResult> controlCheckEnt(@Valid ControlCheckDto controlCheckDto)throws Exception{ SingleResult> result = new SingleResult<>(); Pager pager = new Pager<>(); PageHelper.startPage(controlCheckDto.getPage(), controlCheckDto.getPageSize()); Page page = (Page)sysEnterpriseMapper.entPage(controlCheckDto.getOrgCode()); getDatePage(pager,page); result.setData(pager); return result; } @ApiOperation(value = "监督检查-事故趋势分析", notes = "监督检查-企业管控分析") @GetMapping("/controlCheckAccident") @ApiImplicitParam(name = "orgCode",value = "地区id") @ResponseBody public MultiResult controlCheckAccident(String orgCode)throws Exception{ MultiResult result = new MultiResult<>(); String year = Calendar.getInstance().get(Calendar.YEAR)+""; year = "2020"; year = TypeConversion.getCondition(year); List accidentNums = accidentMapper.accidentNum(year,orgCode); result.setData(accidentNums); return result; } /** * 街道监督检查情况 * @return * @throws Exception */ public ControlCheck srteetCheck(String streetCode)throws Exception{ ControlCheck controlCheck = new ControlCheck(); //企业总数 Integer entNum = sysEnterpriseMapper.countAll(streetCode); //检查企业总数 Integer checkEntNum = sysEnterpriseMapper.streetCheckNum(streetCode,null); //红色企业 Integer redNum = sysEnterpriseMapper.streetCheckNum(streetCode,RiskLevel.RED.getLevel()); //橙色企业 Integer orangeNum = sysEnterpriseMapper.streetCheckNum(streetCode,RiskLevel.ORANGE.getLevel()); //黄色企业 Integer yellowNum = sysEnterpriseMapper.streetCheckNum(streetCode,RiskLevel.YELLOW.getLevel()); //蓝色企业 Integer blueNum = checkEntNum - redNum - orangeNum - yellowNum; controlCheck.setEntNum(entNum); controlCheck.setCheckEntNum(checkEntNum); controlCheck.setBlueNum(blueNum); controlCheck.setRedNum(redNum); controlCheck.setOrangeNum(orangeNum); controlCheck.setYellowNum(yellowNum); //检查覆盖率 Double rate = 0.0; if(entNum > 0){ rate = Arith.div(checkEntNum,entNum,2); } rate = rate * 100; rate = TypeConversion.decimalFormat(rate,2); controlCheck.setCheckRate(rate); //隐患数量 Integer dangerNum = bookEntHTMapper.streetDangerNum(streetCode); controlCheck.setDangerNum(dangerNum); return controlCheck; } @ApiOperation(value = "街道监督检查信息", notes = "街道监督检查信息") @GetMapping("/controlCheckStreet/{orgCode}") @ApiImplicitParam(name = "orgCode",value = "街道id",required = true) @ResponseBody public SingleResult controlCheckStreet(@PathVariable String orgCode)throws Exception{ SingleResult result = new SingleResult<>(); ControlCheck controlCheck = srteetCheck(orgCode); result.setData(controlCheck); return result; } @ApiOperation(value = "清单履职-街道履职", notes = "清单履职-街道履职") @GetMapping("/performListStreet/{orgCode}") @ResponseBody public MultiResult performListStreet(@PathVariable String orgCode)throws Exception{ MultiResult result = new MultiResult<>(); String year = Calendar.getInstance().get(Calendar.YEAR)+""; List unitLists = listPerformMapper.streetPerformInfo(orgCode,year); //处理清单履职信息 handleUnitLists(unitLists); result.setData(unitLists); return result; } @ApiOperation(value = "街道企业列表", notes = "街道企业列表") @GetMapping("/srteetEntList/{orgCode}") @ApiImplicitParam(name = "orgCode",value = "地区id 默认传甘孜的地区id",required = true) @ResponseBody public MultiResult srteetEntList(@PathVariable String orgCode)throws Exception{ MultiResult result = new MultiResult<>(); List streetEnts = sysEnterpriseMapper.streetEntList(orgCode); result.setData(streetEnts); return result; } }