package com.huaxu.controller; import com.huaxu.dto.generalView.DeviceWaterSupply; import com.huaxu.model.AjaxMessage; import com.huaxu.model.ResultStatus; import com.huaxu.service.AppPageReportService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.math.BigDecimal; import java.time.LocalDate; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @description * @auto wangbo * @data 2021/3/18 10:50 */ @RestController @RequestMapping("/appPageReport") @Api(tags = "App总览报表") public class AppPageReportController { @Autowired private AppPageReportService appPageReportService; /** * @Author wangbo * @Description App生产总览数据-本月数据 * @param companyOrgId 公司ID * @return */ @RequestMapping(value = "getProductionDataForSameMonth",method = RequestMethod.GET) @ApiOperation(value = "App总览——生产数据(本月)") public AjaxMessage> getProductionDataForMonth( @ApiParam(value = "公司id,总公司传空值") @RequestParam(required = false) Integer companyOrgId){ LocalDate localDate = LocalDate.now(); List intakeWaterList = appPageReportService.deviceWaterReportForMonth(companyOrgId,"水源",4,1); List makingWaterList = appPageReportService.deviceWaterReportForMonth(companyOrgId,"水厂",3,1); List sellerWaterList = appPageReportService.deviceSellerWaterReportForMonth(companyOrgId,1); List intakeDayList = appPageReportService.deviceWaterReportForDay(companyOrgId,"水源",4, localDate.getDayOfMonth()); List makingDayList = appPageReportService.deviceWaterReportForDay(companyOrgId,"水厂",3, localDate.getDayOfMonth()); Map map = new HashMap(); map.put("intake", intakeDayList); map.put("making", makingDayList); map.put("seller", sellerWaterList); appPageReportService.CalculationNrw(intakeWaterList,makingWaterList,sellerWaterList,map); return new AjaxMessage<>(ResultStatus.OK,map); } /** * @Author wangbo * @Description App生产总览数据-本年数据 * @param companyOrgId 公司ID * @return */ @RequestMapping(value = "getProductionDataForSameYear",method = RequestMethod.GET) @ApiOperation(value = "App总览——生产数据(本年)") public AjaxMessage> getProductionDataForSameYear( @ApiParam(value = "公司id,总公司传空值") @RequestParam(required = false) Integer companyOrgId){ LocalDate localDate = LocalDate.now(); List supplyWaterList = appPageReportService.deviceWaterReportForMonth(companyOrgId,"水源",4,localDate.getMonthValue()); List makingWaterList = appPageReportService.deviceWaterReportForMonth(companyOrgId,"水厂",3,localDate.getMonthValue()); List sellerWaterList = appPageReportService.deviceSellerWaterReportForMonth(companyOrgId,localDate.getMonthValue()); Map map = new HashMap(); map.put("intake", supplyWaterList); map.put("making", makingWaterList); map.put("seller", sellerWaterList); appPageReportService.CalculationNrw(supplyWaterList,makingWaterList,sellerWaterList,map); return new AjaxMessage<>(ResultStatus.OK,map); } /** * @Author wangbo * @Description App生产总览数据-近一年数据 * @param companyOrgId 公司ID * @return */ @RequestMapping(value = "getProductionDataFor12Month",method = RequestMethod.GET) @ApiOperation(value = "App总览——生产数据(近一年)") public AjaxMessage> getProductionDataFor12Month( @ApiParam(value = "公司id,总公司传空值") @RequestParam(required = false) Integer companyOrgId){ List supplyWaterList = appPageReportService.deviceWaterReportForMonth(companyOrgId,"水源",4,12); List makingWaterList = appPageReportService.deviceWaterReportForMonth(companyOrgId,"水厂",3,12); List sellerWaterList = appPageReportService.deviceSellerWaterReportForMonth(companyOrgId,12); Map map = new HashMap(); map.put("intake", supplyWaterList); map.put("making", makingWaterList); map.put("seller", sellerWaterList); appPageReportService.CalculationNrw(supplyWaterList,makingWaterList,sellerWaterList,map); return new AjaxMessage<>(ResultStatus.OK,map); } @RequestMapping(value = "getProductionComparisonForSameMonth",method = RequestMethod.GET) @ApiOperation(value = "App总览——生产数据-取水环比(本月)") public AjaxMessage getProductionComparisonForSameMonth(@ApiParam(value = "公司id,总公司传空值") @RequestParam(required = false) Integer companyOrgId){ LocalDate now = LocalDate.now(); List intakeComparisonList = appPageReportService.deviceWaterReportForMonth(companyOrgId,"水源",4,2); List makingComparisonList = appPageReportService.deviceWaterReportForMonth(companyOrgId,"水厂",3,2); List sellerComparisonList = appPageReportService.deviceSellerWaterReportForMonth(companyOrgId,2); Map map = new HashMap(); map.put("intakeComparison",appPageReportService.CalculationComparison2(intakeComparisonList,1)); map.put("makingComparison",appPageReportService.CalculationComparison2(makingComparisonList,1)); map.put("sellerComparison", appPageReportService.CalculationComparison2(sellerComparisonList,1)); return new AjaxMessage<>(ResultStatus.OK,map); } @RequestMapping(value = "getProductionComparisonForSameYear",method = RequestMethod.GET) @ApiOperation(value = "App总览——生产数据-取水环比、供水环比、售水环比(本年)") public AjaxMessage getProductionComparisonForSameYear(@ApiParam(value = "公司id,总公司传空值") @RequestParam(required = false) Integer companyOrgId){ LocalDate now = LocalDate.now(); List intakeComparisonList = appPageReportService.deviceWaterReportForMonth(companyOrgId,"水源",4,now.getMonthValue()+12); List makingComparisonList = appPageReportService.deviceWaterReportForMonth(companyOrgId,"水厂",3,now.getMonthValue()+12); List sellerComparisonList = appPageReportService.deviceSellerWaterReportForMonth(companyOrgId,now.getMonthValue()+12); Map map = new HashMap(); map.put("intakeComparison",appPageReportService.CalculationComparison2(intakeComparisonList,2)); map.put("makingComparison",appPageReportService.CalculationComparison2(makingComparisonList,2)); map.put("sellerComparison", appPageReportService.CalculationComparison2(sellerComparisonList,2)); return new AjaxMessage<>(ResultStatus.OK,map); } @RequestMapping(value = "getProductionComparisonForLast12Month",method = RequestMethod.GET) @ApiOperation(value = "App总览——生产数据-取水环比、供水环比、售水环比(近一年)") public AjaxMessage getProductionComparisonForLast12Month(@ApiParam(value = "公司id,总公司传空值") @RequestParam(required = false) Integer companyOrgId){ LocalDate now = LocalDate.now(); List intakeComparisonList = appPageReportService.deviceWaterReportForMonth(companyOrgId,"水源",4,24); List makingComparisonList = appPageReportService.deviceWaterReportForMonth(companyOrgId,"水厂",3,24); List sellerComparisonList = appPageReportService.deviceSellerWaterReportForMonth(companyOrgId,24); Map map = new HashMap(); map.put("intakeComparison",appPageReportService.CalculationComparison2(intakeComparisonList,3)); map.put("makingComparison",appPageReportService.CalculationComparison2(makingComparisonList,3)); map.put("sellerComparison", appPageReportService.CalculationComparison2(sellerComparisonList,3)); return new AjaxMessage<>(ResultStatus.OK,map); } /** * @Author wangbo * @Description App 营业总览数据-本月应收实收回收率普通用户用量大用户用量数据 * @param companyOrgId 公司ID * @return */ @RequestMapping(value = "getBusinessDataForSameMonth",method = RequestMethod.GET) @ApiOperation(value = "App总览——营业总览应收实收回收率普通用户用量大用户用量数据(本月)") public AjaxMessage> getSameMonthBusinessData( @ApiParam(value = "公司id,总公司传空值") @RequestParam(required = false) Integer companyOrgId){ List sellerWaterList = appPageReportService.deviceSellerAmountReportForMonth(companyOrgId,1); BigDecimal sum = sellerWaterList.get(0).getGeneralUserAmount().add(sellerWaterList.get(0).getBigUserAmount()); BigDecimal generalRate =sum.compareTo(BigDecimal.ZERO)==0?BigDecimal.ZERO:sellerWaterList.get(0).getGeneralUserAmount(). multiply(new BigDecimal(100)).setScale(3,BigDecimal.ROUND_HALF_UP).divide(sum,2, BigDecimal.ROUND_DOWN); BigDecimal bigUserRate =sum.compareTo(BigDecimal.ZERO)==0?BigDecimal.ZERO:sellerWaterList.get(0).getBigUserAmount(). multiply(new BigDecimal(100)).setScale(3,BigDecimal.ROUND_HALF_UP).divide(sum,2, BigDecimal.ROUND_DOWN); Map map = new HashMap(); map.put("totalReceivable", sellerWaterList.get(0).getReceivableAmount()); map.put("totalReceived", sellerWaterList.get(0).getReceivedAmount()); map.put("amountDetails",sellerWaterList); map.put("generalUser",sellerWaterList.get(0).getGeneralUserAmount()); map.put("bigUser",sellerWaterList.get(0).getBigUserAmount()); map.put("generalUserRate",generalRate); map.put("bigUserRate",bigUserRate); map.put("recoveryRate", sellerWaterList.get(0).getReceivableAmount().compareTo(BigDecimal.ZERO)==0? 0 : sellerWaterList.get(0).getReceivedAmount(). multiply(new BigDecimal(100)).setScale(3,BigDecimal.ROUND_HALF_UP). divide(sellerWaterList.get(0).getReceivableAmount(),2, BigDecimal.ROUND_DOWN)); return new AjaxMessage<>(ResultStatus.OK,map); } /** * @Author wangbo * @Description App 营业数据-本月应收实收售水回收率数据 * @param companyOrgId 公司ID * @return */ @RequestMapping(value = "getRevenueDataForSameMonth",method = RequestMethod.GET) @ApiOperation(value = "App——营业数据-应收实收售水回收率数据(本月)") public AjaxMessage> getRevenueDataForSameMonth( @ApiParam(value = "公司id,总公司传空值") @RequestParam(required = false) Integer companyOrgId){ List sellerWaterList = appPageReportService.deviceSellerAmountReportForMonth(companyOrgId,1); List sellerAmountList = appPageReportService.deviceSellerWaterReportForMonth(companyOrgId,1); Map map = new HashMap(); map.put("receivableAmount", sellerWaterList.get(0).getReceivableAmount()); map.put("receivedAmount", sellerWaterList.get(0).getReceivedAmount()); map.put("sellerAmount",sellerAmountList.get(0).getAmount()); map.put("recoveryRate", sellerWaterList.get(0).getReceivableAmount().compareTo(BigDecimal.ZERO)==0? 0 : sellerWaterList.get(0).getReceivedAmount(). multiply(new BigDecimal(100)).setScale(3,BigDecimal.ROUND_HALF_UP). divide(sellerWaterList.get(0).getReceivableAmount(),2, BigDecimal.ROUND_DOWN)); return new AjaxMessage<>(ResultStatus.OK,map); } /** * @Author wangbo * @Description App 营业总览数据-本月应收实收回收率数据 * @param companyOrgId 公司ID * @return */ @RequestMapping(value = "getBusinessDataForSameYear",method = RequestMethod.GET) @ApiOperation(value = "App总览——营业总览应收实收回收率普通用户用量大用户用量数据(本年)") public AjaxMessage> getBusinessDataForSameYear( @ApiParam(value = "公司id,总公司传空值") @RequestParam(required = false) Integer companyOrgId){ LocalDate now = LocalDate.now(); List sellerWaterList = appPageReportService.deviceSellerAmountReportForMonth(companyOrgId,now.getMonthValue()); BigDecimal totalReceivableAmount = new BigDecimal(0); BigDecimal totalReceivedAmount = new BigDecimal(0); BigDecimal totalGeneralUser = new BigDecimal(0); BigDecimal totalBigUser = new BigDecimal(0); for(DeviceWaterSupply amount: sellerWaterList){ totalReceivableAmount =totalReceivableAmount.add(amount.getReceivableAmount()); totalReceivedAmount=totalReceivedAmount.add(amount.getReceivedAmount()); totalGeneralUser=totalGeneralUser.add(amount.getGeneralUserAmount()); totalBigUser=totalBigUser.add(amount.getBigUserAmount()); amount.setRecoveryRate(totalReceivableAmount.compareTo(BigDecimal.ZERO)==0? BigDecimal.ZERO : totalReceivedAmount. multiply(new BigDecimal(100)).setScale(3,BigDecimal.ROUND_HALF_UP).divide(totalReceivableAmount,2, BigDecimal.ROUND_DOWN)); } BigDecimal sum =totalBigUser.add(totalGeneralUser); BigDecimal generalRate =sum.compareTo(BigDecimal.ZERO)==0?BigDecimal.ZERO:totalGeneralUser. multiply(new BigDecimal(100)).setScale(3,BigDecimal.ROUND_HALF_UP).divide(sum,2, BigDecimal.ROUND_DOWN); BigDecimal bigUserRate =sum.compareTo(BigDecimal.ZERO)==0?BigDecimal.ZERO:totalBigUser. multiply(new BigDecimal(100)).setScale(3,BigDecimal.ROUND_HALF_UP).divide(sum,2, BigDecimal.ROUND_DOWN); Map map = new HashMap(); map.put("totalReceivable", totalReceivableAmount); map.put("totalReceived",totalReceivedAmount); map.put("amountDetails",sellerWaterList); map.put("generalUser",totalGeneralUser); map.put("bigUser",totalBigUser); map.put("generalUserRate",generalRate); map.put("bigUserRate",bigUserRate); map.put("recoveryRate", totalReceivableAmount.compareTo(BigDecimal.ZERO)==0? 0 : totalReceivedAmount. multiply(new BigDecimal(100)).setScale(3,BigDecimal.ROUND_HALF_UP).divide(totalReceivableAmount,2, BigDecimal.ROUND_DOWN)); return new AjaxMessage<>(ResultStatus.OK,map); } /** * @Author wangbo * @Description App 营业总览数据-近一年应收实收回收率数据 * @param companyOrgId 公司ID * @return */ @RequestMapping(value = "getBusinessDataForLast12Month",method = RequestMethod.GET) @ApiOperation(value = "App总览——营业总览应收实收回收率普通用户用量大用户用量数据(近一年)") public AjaxMessage> getBusinessDataForLast12Month( @ApiParam(value = "公司id,总公司传空值") @RequestParam(required = false) Integer companyOrgId){ List sellerWaterList = appPageReportService.deviceSellerAmountReportForMonth(companyOrgId,12); BigDecimal totalReceivableAmount = new BigDecimal(0); BigDecimal totalReceivedAmount = new BigDecimal(0); BigDecimal totalGeneralUser = new BigDecimal(0); BigDecimal totalBigUser = new BigDecimal(0); for(DeviceWaterSupply amount: sellerWaterList){ totalReceivableAmount =totalReceivableAmount.add(amount.getReceivableAmount()); totalReceivedAmount=totalReceivedAmount.add(amount.getReceivedAmount()); totalGeneralUser=totalGeneralUser.add(amount.getGeneralUserAmount()); totalBigUser=totalBigUser.add(amount.getBigUserAmount()); amount.setRecoveryRate(totalReceivableAmount.compareTo(BigDecimal.ZERO)==0? BigDecimal.ZERO : totalReceivedAmount. multiply(new BigDecimal(100)).setScale(3,BigDecimal.ROUND_HALF_UP).divide(totalReceivableAmount,2, BigDecimal.ROUND_DOWN)); } BigDecimal sum =totalBigUser.add(totalGeneralUser); BigDecimal generalRate =sum.compareTo(BigDecimal.ZERO)==0?BigDecimal.ZERO:totalGeneralUser. multiply(new BigDecimal(100)).setScale(3,BigDecimal.ROUND_HALF_UP).divide(sum,2, BigDecimal.ROUND_DOWN); BigDecimal bigUserRate =sum.compareTo(BigDecimal.ZERO)==0?BigDecimal.ZERO:totalBigUser. multiply(new BigDecimal(100)).setScale(3,BigDecimal.ROUND_HALF_UP).divide(sum,2, BigDecimal.ROUND_DOWN); Map map = new HashMap(); map.put("totalReceivable", totalReceivableAmount); map.put("totalReceived",totalReceivedAmount); map.put("amountDetails",sellerWaterList); map.put("generalUser",totalGeneralUser); map.put("bigUser",totalBigUser); map.put("generalUserRate",generalRate); map.put("bigUserRate",bigUserRate); map.put("recoveryRate", totalReceivableAmount.compareTo(BigDecimal.ZERO)==0? 0 : totalReceivedAmount. multiply(new BigDecimal(100)).setScale(3,BigDecimal.ROUND_HALF_UP).divide(totalReceivableAmount,2, BigDecimal.ROUND_DOWN)); return new AjaxMessage<>(ResultStatus.OK,map); } @RequestMapping(value = "getSellerComparisonForSameMonth",method = RequestMethod.GET) @ApiOperation(value = "App总览——营收数据-应收实收环比(本月)") public AjaxMessage getSellerComparisonForSameMonth(@ApiParam(value = "公司id,总公司传空值") @RequestParam(required = false) Integer companyOrgId){ List sellerWaterList = appPageReportService.deviceSellerAmountReportForMonth(companyOrgId,2); BigDecimal receivableComparison = sellerWaterList.get(0).getReceivableAmount().compareTo(BigDecimal.ZERO)==0 ?BigDecimal.ZERO:sellerWaterList.get(1).getReceivableAmount().subtract(sellerWaterList.get(0).getReceivableAmount()). multiply(new BigDecimal(100)).setScale(3,BigDecimal.ROUND_HALF_UP).divide(sellerWaterList.get(0).getReceivableAmount(),2, BigDecimal.ROUND_DOWN); BigDecimal receivedComparison = sellerWaterList.get(0).getReceivedAmount().compareTo(BigDecimal.ZERO)==0 ?BigDecimal.ZERO:sellerWaterList.get(1).getReceivedAmount().subtract(sellerWaterList.get(0).getReceivedAmount()). multiply(new BigDecimal(100)).setScale(3,BigDecimal.ROUND_HALF_UP).divide(sellerWaterList.get(0).getReceivedAmount(),2, BigDecimal.ROUND_DOWN); Map map = new HashMap(); map.put("receivableComparison",receivableComparison); map.put("receivedComparison",receivedComparison); return new AjaxMessage<>(ResultStatus.OK,map); } @RequestMapping(value = "getSellerComparisonForSameYear",method = RequestMethod.GET) @ApiOperation(value = "App总览——营收数据-应收实收环比(本年)") public AjaxMessage getSellerComparisonForSameYear(@ApiParam(value = "公司id,总公司传空值") @RequestParam(required = false) Integer companyOrgId){ LocalDate now = LocalDate.now(); List sellerWaterList = appPageReportService.deviceSellerAmountReportForMonth(companyOrgId,12+now.getMonthValue()); BigDecimal receivedSameYearComparison = new BigDecimal(0); BigDecimal receivedLastYearComparison = new BigDecimal(0); BigDecimal receivableSameYearComparison = new BigDecimal(0); BigDecimal receivableLastYearComparison = new BigDecimal(0); for(int i=0 ;i=12){ receivedSameYearComparison = receivedSameYearComparison.add(sellerWaterList.get(i).getReceivedAmount()); receivableSameYearComparison =receivableSameYearComparison.add(sellerWaterList.get(i).getReceivableAmount()); } else{ receivedLastYearComparison = receivedLastYearComparison.add(sellerWaterList.get(i).getReceivedAmount()); receivableLastYearComparison =receivableLastYearComparison.add(sellerWaterList.get(i).getReceivableAmount()); } } BigDecimal receivedComparison = receivedLastYearComparison.compareTo(BigDecimal.ZERO)==0 ?BigDecimal.ZERO:receivedSameYearComparison.subtract(receivedLastYearComparison). multiply(new BigDecimal(100)).setScale(3,BigDecimal.ROUND_HALF_UP).divide(receivedLastYearComparison,2, BigDecimal.ROUND_DOWN); BigDecimal receivableComparison = receivableLastYearComparison.compareTo(BigDecimal.ZERO)==0 ?BigDecimal.ZERO:receivableSameYearComparison.subtract(receivableLastYearComparison). multiply(new BigDecimal(100)).setScale(3,BigDecimal.ROUND_HALF_UP).divide(receivableLastYearComparison,2, BigDecimal.ROUND_DOWN); Map map = new HashMap(); map.put("receivableComparison",receivableComparison); map.put("receivedComparison",receivedComparison); return new AjaxMessage<>(ResultStatus.OK,map); } @RequestMapping(value = "getSellerComparisonForLast12Month",method = RequestMethod.GET) @ApiOperation(value = "App总览——营收数据-应收实收环比(本年)") public AjaxMessage getSellerComparisonForLast12Month(@ApiParam(value = "公司id,总公司传空值") @RequestParam(required = false) Integer companyOrgId){ BigDecimal receivedSameYearComparison = new BigDecimal(0); BigDecimal receivedLastYearComparison = new BigDecimal(0); BigDecimal receivableSameYearComparison = new BigDecimal(0); BigDecimal receivableLastYearComparison = new BigDecimal(0); List sellerWaterList = appPageReportService.deviceSellerAmountReportForMonth(companyOrgId,24); for(int i=0;i=12){ receivedSameYearComparison = receivedSameYearComparison.add(sellerWaterList.get(i).getReceivedAmount()); receivableSameYearComparison =receivableSameYearComparison.add(sellerWaterList.get(i).getReceivableAmount()); } else{ receivedLastYearComparison = receivedLastYearComparison.add(sellerWaterList.get(i).getReceivedAmount()); receivableLastYearComparison =receivableLastYearComparison.add(sellerWaterList.get(i).getReceivableAmount()); } } BigDecimal receivedComparison = receivedLastYearComparison.compareTo(BigDecimal.ZERO)==0 ?BigDecimal.ZERO:receivedSameYearComparison.subtract(receivedLastYearComparison). multiply(new BigDecimal(100)).setScale(3,BigDecimal.ROUND_HALF_UP).divide(receivedLastYearComparison,2, BigDecimal.ROUND_DOWN); BigDecimal receivableComparison = receivableLastYearComparison.compareTo(BigDecimal.ZERO)==0 ?BigDecimal.ZERO:receivableSameYearComparison.subtract(receivableLastYearComparison). multiply(new BigDecimal(100)).setScale(3,BigDecimal.ROUND_HALF_UP).divide(receivableLastYearComparison,2, BigDecimal.ROUND_DOWN); Map map = new HashMap(); map.put("receivableComparison",receivableComparison); map.put("receivedComparison",receivedComparison); return new AjaxMessage<>(ResultStatus.OK,map); } @RequestMapping(value = "getSceneAmountForSameMonth",method = RequestMethod.GET) @ApiOperation(value = "App总览——资产情况本月") public AjaxMessage getSceneAmountForSameMonth(@ApiParam(value = "公司id,总公司传空值") @RequestParam(required = false) Long companyOrgId){ List> amount = appPageReportService.findSceneAmount(companyOrgId,1); Map map = new HashMap(); map.put("amount","-"); map.put("sceneTypeName","大用户表"); amount.add(map); return new AjaxMessage<>(ResultStatus.OK,amount); } @RequestMapping(value = "getSceneAmountForSameYear",method = RequestMethod.GET) @ApiOperation(value = "App总览——资产情况本年") public AjaxMessage getSceneAmountForSameYear(@ApiParam(value = "公司id,总公司传空值") @RequestParam(required = false) Long companyOrgId){ LocalDate now = LocalDate.now(); List> amount = appPageReportService.findSceneAmount(companyOrgId,now.getMonthValue()); Map map = new HashMap(); map.put("amount","0"); map.put("sceneTypeName","大用户表"); amount.add(map); return new AjaxMessage<>(ResultStatus.OK,amount); } @RequestMapping(value = "getSceneAmountForLast12Month",method = RequestMethod.GET) @ApiOperation(value = "App总览——资产情况近一年") public AjaxMessage getSceneAmountForLast12Month(@ApiParam(value = "公司id,总公司传空值") @RequestParam(required = false) Long companyOrgId){ List> amount = appPageReportService.findSceneAmount(companyOrgId,12); Map map = new HashMap(); map.put("amount","0"); map.put("sceneTypeName","大用户表"); amount.add(map); return new AjaxMessage<>(ResultStatus.OK,amount); } }