123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- 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<Map<String,Object>> getProductionDataForMonth(
- @ApiParam(value = "公司id,总公司传空值") @RequestParam(required = false) Integer companyOrgId){
- Map<String,Object> map = new HashMap<String,Object>();
- List<DeviceWaterSupply> supplyWaterList = appPageReportService.deviceWaterReportForMonth(companyOrgId,"水源",4,1);
- List<DeviceWaterSupply> makingWaterList = appPageReportService.deviceWaterReportForMonth(companyOrgId,"水厂",3,1);
- List<DeviceWaterSupply> sellerWaterList = appPageReportService.deviceSellerWaterReportForMonth(companyOrgId,1);
- map.put("取水量", supplyWaterList);
- map.put("制水量", makingWaterList);
- map.put("售水量", sellerWaterList);
- CalculationWaterData(supplyWaterList,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<Map<String,Object>> getProductionDataForSameYear(
- @ApiParam(value = "公司id,总公司传空值") @RequestParam(required = false) Integer companyOrgId){
- LocalDate localDate = LocalDate.now();
- Map<String,Object> map = new HashMap<String,Object>();
- List<DeviceWaterSupply> supplyWaterList = appPageReportService.deviceWaterReportForMonth(companyOrgId,"水源",4,localDate.getMonthValue());
- List<DeviceWaterSupply> makingWaterList = appPageReportService.deviceWaterReportForMonth(companyOrgId,"水厂",3,localDate.getMonthValue());
- List<DeviceWaterSupply> sellerWaterList = appPageReportService.deviceSellerWaterReportForMonth(companyOrgId,localDate.getMonthValue());
- map.put("取水量", supplyWaterList);
- map.put("制水量", makingWaterList);
- map.put("售水量", sellerWaterList);
- CalculationWaterData(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<Map<String,Object>> getProductionDataFor12Month(
- @ApiParam(value = "公司id,总公司传空值") @RequestParam(required = false) Integer companyOrgId){
- Map<String,Object> map = new HashMap<String,Object>();
- List<DeviceWaterSupply> supplyWaterList = appPageReportService.deviceWaterReportForMonth(companyOrgId,"水源",4,12);
- List<DeviceWaterSupply> makingWaterList = appPageReportService.deviceWaterReportForMonth(companyOrgId,"水厂",3,12);
- List<DeviceWaterSupply> sellerWaterList = appPageReportService.deviceSellerWaterReportForMonth(companyOrgId,12);
- map.put("取水量", supplyWaterList);
- map.put("制水量", makingWaterList);
- map.put("售水量", sellerWaterList);
- CalculationWaterData(supplyWaterList,makingWaterList,sellerWaterList,map);
- return new AjaxMessage<>(ResultStatus.OK,map);
- }
- /**
- * @Author wangbo
- * @Description 计算产销差
- * @param makingWaterList 制水量数据
- * @param sellerWaterList 售水量数据
- * @param map
- * @return
- */
- private void CalculationWaterData(List<DeviceWaterSupply> supplyWaterList, List<DeviceWaterSupply> makingWaterList,List<DeviceWaterSupply> sellerWaterList,Map<String,Object> map){
- BigDecimal supplyWaterAmount = new BigDecimal(0);
- BigDecimal makingWaterAmount = new BigDecimal(0);
- BigDecimal sellerWaterAmount = new BigDecimal(0);
- for(DeviceWaterSupply water : supplyWaterList){
- supplyWaterAmount = supplyWaterAmount.add(water.getAmount());
- }
- for(DeviceWaterSupply water : makingWaterList){
- makingWaterAmount = makingWaterAmount.add(water.getAmount());
- }
- for(DeviceWaterSupply water : sellerWaterList){
- sellerWaterAmount = sellerWaterAmount.add(water.getAmount());
- }
- BigDecimal nrw = makingWaterAmount ==BigDecimal.ZERO ? BigDecimal.ZERO : makingWaterAmount.subtract(sellerWaterAmount).multiply(new BigDecimal(100)).divide(makingWaterAmount,2);
- map.put("取水总量",supplyWaterAmount);
- map.put("制水总量",makingWaterAmount);
- map.put("售水总量",sellerWaterAmount);
- map.put("产销差",nrw);
- }
- }
|