|
@@ -5,6 +5,7 @@ import com.ruoyi.common.utils.StringUtils;
|
|
import com.ruoyi.common.utils.file.ExcelUtils;
|
|
import com.ruoyi.common.utils.file.ExcelUtils;
|
|
import com.ruoyi.framework.web.controller.BaseController;
|
|
import com.ruoyi.framework.web.controller.BaseController;
|
|
import com.ruoyi.framework.web.domain.AjaxResult;
|
|
import com.ruoyi.framework.web.domain.AjaxResult;
|
|
|
|
+import com.ruoyi.project.production.controller.vo.C3ReactorAnalysisVO;
|
|
import com.ruoyi.project.production.controller.vo.C3ReactorTableVO;
|
|
import com.ruoyi.project.production.controller.vo.C3ReactorTableVO;
|
|
import com.ruoyi.project.production.controller.vo.MonthlyQualityReportQueryVO;
|
|
import com.ruoyi.project.production.controller.vo.MonthlyQualityReportQueryVO;
|
|
import com.ruoyi.project.production.domain.*;
|
|
import com.ruoyi.project.production.domain.*;
|
|
@@ -116,6 +117,125 @@ public class TMonthlyQualityReportController extends BaseController
|
|
@Autowired
|
|
@Autowired
|
|
private ITMonthlyQualityReportZ404Service tMonthlyQualityReportZ404Service;
|
|
private ITMonthlyQualityReportZ404Service tMonthlyQualityReportZ404Service;
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 碳三反应器性能指标趋势图
|
|
|
|
+ */
|
|
|
|
+ @PreAuthorize("@ss.hasPermi('production:quality:list')")
|
|
|
|
+ @GetMapping("/c3ReactorAnalysis")
|
|
|
|
+ public AjaxResult c3ReactorAnalysis(MonthlyQualityReportQueryVO vo)
|
|
|
|
+ {
|
|
|
|
+ Date startDate = vo.getStartDate();
|
|
|
|
+ Date endDate = vo.getEndDate();
|
|
|
|
+ int startYear = startDate.getYear() + 1900;
|
|
|
|
+ int endYear = endDate.getYear() + 1900;
|
|
|
|
+ int startMonth = startDate.getMonth() + 1;
|
|
|
|
+ int endMonth = endDate.getMonth() + 1;
|
|
|
|
+ Map<String, C3ReactorAnalysisVO> dataMap = new HashMap<>();
|
|
|
|
+ do {
|
|
|
|
+ //in
|
|
|
|
+ TMonthlyQualityReportS5010 tMonthlyQualityReportS5010 = new TMonthlyQualityReportS5010();
|
|
|
|
+ tMonthlyQualityReportS5010.setStartDate(startDate);
|
|
|
|
+ tMonthlyQualityReportS5010.setEndDate(endDate);
|
|
|
|
+ List<TMonthlyQualityReportS5010> tMonthlyQualityReportS5010s = tMonthlyQualityReportS5010Service.selectTMonthlyQualityReportS5010List(tMonthlyQualityReportS5010);
|
|
|
|
+ //out
|
|
|
|
+ TMonthlyQualityReportS5012 tMonthlyQualityReportS5012 = new TMonthlyQualityReportS5012();
|
|
|
|
+ tMonthlyQualityReportS5012.setStartDate(startDate);
|
|
|
|
+ tMonthlyQualityReportS5012.setEndDate(endDate);
|
|
|
|
+ List<TMonthlyQualityReportS5012> tMonthlyQualityReportS5012s = tMonthlyQualityReportS5012Service.selectTMonthlyQualityReportS5012List(tMonthlyQualityReportS5012);
|
|
|
|
+ //avg
|
|
|
|
+ BigDecimal propaneInAvg = new BigDecimal(BigInteger.ZERO);
|
|
|
|
+ BigDecimal propyleneInAvg = new BigDecimal(BigInteger.ZERO);
|
|
|
|
+ BigDecimal pdInAvg = new BigDecimal(BigInteger.ZERO);
|
|
|
|
+ BigDecimal maInAvg = new BigDecimal(BigInteger.ZERO);
|
|
|
|
+ BigDecimal propaneOutAvg = new BigDecimal(BigInteger.ZERO);
|
|
|
|
+ BigDecimal propyleneOutAvg = new BigDecimal(BigInteger.ZERO);
|
|
|
|
+ BigDecimal pdOutAvg = new BigDecimal(BigInteger.ZERO);
|
|
|
|
+ BigDecimal maOutAvg = new BigDecimal(BigInteger.ZERO);
|
|
|
|
+ BigDecimal conversion = new BigDecimal(BigInteger.ZERO);
|
|
|
|
+ BigDecimal propyleneSelectivity = new BigDecimal(BigInteger.ZERO);
|
|
|
|
+ //sum
|
|
|
|
+ BigDecimal propaneInSum = new BigDecimal(BigInteger.ZERO);
|
|
|
|
+ BigDecimal propyleneInSum = new BigDecimal(BigInteger.ZERO);
|
|
|
|
+ BigDecimal pdInSum = new BigDecimal(BigInteger.ZERO);
|
|
|
|
+ BigDecimal maInSum = new BigDecimal(BigInteger.ZERO);
|
|
|
|
+ BigDecimal propaneOutSum = new BigDecimal(BigInteger.ZERO);
|
|
|
|
+ BigDecimal propyleneOutSum = new BigDecimal(BigInteger.ZERO);
|
|
|
|
+ BigDecimal pdOutSum = new BigDecimal(BigInteger.ZERO);
|
|
|
|
+ BigDecimal maOutSum = new BigDecimal(BigInteger.ZERO);
|
|
|
|
+ //list
|
|
|
|
+ ArrayList<BigDecimal> propaneInList = new ArrayList<BigDecimal>();
|
|
|
|
+ ArrayList<BigDecimal> propyleneInList = new ArrayList<BigDecimal>();
|
|
|
|
+ ArrayList<BigDecimal> pdInList = new ArrayList<BigDecimal>();
|
|
|
|
+ ArrayList<BigDecimal> maInList = new ArrayList<BigDecimal>();
|
|
|
|
+ ArrayList<BigDecimal> propaneOutList = new ArrayList<BigDecimal>();
|
|
|
|
+ ArrayList<BigDecimal> propyleneOutList = new ArrayList<BigDecimal>();
|
|
|
|
+ ArrayList<BigDecimal> pdOutList = new ArrayList<BigDecimal>();
|
|
|
|
+ ArrayList<BigDecimal> maOutList = new ArrayList<BigDecimal>();
|
|
|
|
+ //放入list
|
|
|
|
+ for (TMonthlyQualityReportS5010 monthlyQualityReportS5010 : tMonthlyQualityReportS5010s) {
|
|
|
|
+ String propane = monthlyQualityReportS5010.getPropane();
|
|
|
|
+ String propylene = monthlyQualityReportS5010.getPropylene();
|
|
|
|
+ String pd = monthlyQualityReportS5010.getPropadiene();
|
|
|
|
+ String ma = monthlyQualityReportS5010.getMethylacetylene();
|
|
|
|
+ if (StringUtils.isNotEmpty(propane)) { propaneInList.add(new BigDecimal(propane)); }
|
|
|
|
+ if (StringUtils.isNotEmpty(propylene)) { propyleneInList.add(new BigDecimal(propylene)); }
|
|
|
|
+ if (StringUtils.isNotEmpty(pd)) { pdInList.add(new BigDecimal(pd)); }
|
|
|
|
+ if (StringUtils.isNotEmpty(ma)) { maInList.add(new BigDecimal(ma)); }
|
|
|
|
+ }
|
|
|
|
+ for (TMonthlyQualityReportS5012 monthlyQualityReportS5012 : tMonthlyQualityReportS5012s) {
|
|
|
|
+ String propane = monthlyQualityReportS5012.getPropane();
|
|
|
|
+ String propylene = monthlyQualityReportS5012.getPropylene();
|
|
|
|
+ String pd = monthlyQualityReportS5012.getPropadiene();
|
|
|
|
+ String ma = monthlyQualityReportS5012.getMethylacetylene();
|
|
|
|
+ if (StringUtils.isNotEmpty(propane)) { propaneOutList.add(new BigDecimal(propane)); }
|
|
|
|
+ if (StringUtils.isNotEmpty(propylene)) { propyleneOutList.add(new BigDecimal(propylene)); }
|
|
|
|
+ if (StringUtils.isNotEmpty(pd)) { pdOutList.add(new BigDecimal(pd)); }
|
|
|
|
+ if (StringUtils.isNotEmpty(ma)) { maOutList.add(new BigDecimal(ma)); }
|
|
|
|
+ }
|
|
|
|
+ //计算sum
|
|
|
|
+ for (BigDecimal value : propaneInList) { propaneInSum = propaneInSum.add(value); }
|
|
|
|
+ for (BigDecimal value : propyleneInList) { propyleneInSum = propyleneInSum.add(value); }
|
|
|
|
+ for (BigDecimal value : pdInList) { pdInSum = pdInSum.add(value); }
|
|
|
|
+ for (BigDecimal value : maInList) { maInSum = maInSum.add(value); }
|
|
|
|
+ for (BigDecimal value : propaneOutList) { propaneOutSum = propaneOutSum.add(value); }
|
|
|
|
+ for (BigDecimal value : propyleneOutList) { propyleneOutSum = propyleneOutSum.add(value); }
|
|
|
|
+ for (BigDecimal value : pdOutList) { pdOutSum = pdOutSum.add(value); }
|
|
|
|
+ for (BigDecimal value : maOutList) { maOutSum = maOutSum.add(value); }
|
|
|
|
+ //计算avg
|
|
|
|
+ if (propaneInList.size() != 0) { propaneInAvg = propaneInSum.divide(new BigDecimal(propaneInList.size()), 2, RoundingMode.HALF_UP); }
|
|
|
|
+ if (propyleneInList.size() != 0) { propyleneInAvg = propyleneInSum.divide(new BigDecimal(propyleneInList.size()), 2, RoundingMode.HALF_UP); }
|
|
|
|
+ if (pdInList.size() != 0) { pdInAvg = pdInSum.divide(new BigDecimal(pdInList.size()), 2, RoundingMode.HALF_UP); }
|
|
|
|
+ if (maInList.size() != 0) { maInAvg = maInSum.divide(new BigDecimal(maInList.size()), 2, RoundingMode.HALF_UP); }
|
|
|
|
+ if (propaneOutList.size() != 0) { propaneOutAvg = propaneOutSum.divide(new BigDecimal(propaneOutList.size()), 2, RoundingMode.HALF_UP); }
|
|
|
|
+ if (propyleneOutList.size() != 0) { propyleneOutAvg = propyleneOutSum.divide(new BigDecimal(propyleneOutList.size()), 2, RoundingMode.HALF_UP); }
|
|
|
|
+ if (pdOutList.size() != 0) { pdOutAvg = pdOutSum.divide(new BigDecimal(pdOutList.size()), 2, RoundingMode.HALF_UP); }
|
|
|
|
+ if (maOutList.size() != 0) { maOutAvg = maOutSum.divide(new BigDecimal(maOutList.size()), 2, RoundingMode.HALF_UP); }
|
|
|
|
+ if (pdInAvg.compareTo(BigDecimal.ZERO) != 0 && maInAvg.compareTo(BigDecimal.ZERO) != 0) {
|
|
|
|
+ conversion = BigDecimal.TEN.multiply(BigDecimal.TEN).multiply((pdInAvg.add(maInAvg).subtract(pdOutAvg).subtract(maOutAvg)).divide(pdInAvg.add(maInAvg), 2, RoundingMode.HALF_UP));
|
|
|
|
+ }
|
|
|
|
+ if (propaneInAvg.compareTo(BigDecimal.ZERO) != 0 && propyleneInAvg.compareTo(BigDecimal.ZERO) != 0
|
|
|
|
+ && pdInAvg.compareTo(BigDecimal.ZERO) != 0 && maInAvg.compareTo(BigDecimal.ZERO) != 0
|
|
|
|
+ && propaneOutAvg.compareTo(BigDecimal.ZERO) != 0 && propyleneOutAvg.compareTo(BigDecimal.ZERO) != 0
|
|
|
|
+ && pdOutAvg.compareTo(BigDecimal.ZERO) != 0 && maOutAvg.compareTo(BigDecimal.ZERO) != 0) {
|
|
|
|
+ propyleneSelectivity = BigDecimal.TEN.multiply(BigDecimal.TEN).multiply(((propyleneOutAvg.divide(propaneOutAvg.add(propyleneOutAvg).add(pdOutAvg).add(maOutAvg), 2, RoundingMode.HALF_UP))
|
|
|
|
+ .subtract(propyleneInAvg.divide(propaneInAvg.add(propyleneInAvg).add(pdInAvg).add(maInAvg), 2, RoundingMode.HALF_UP)))
|
|
|
|
+ .divide(((pdInAvg.add(maInAvg)).divide(propaneInAvg.add(propyleneInAvg).add(pdInAvg).add(maInAvg), 2, RoundingMode.HALF_UP))
|
|
|
|
+ .subtract((pdOutAvg.add(maOutAvg)).divide(propaneOutAvg.add(propyleneOutAvg).add(pdOutAvg).add(maOutAvg), 2, RoundingMode.HALF_UP)), 2, RoundingMode.HALF_UP));
|
|
|
|
+ }
|
|
|
|
+ C3ReactorAnalysisVO analysisVO = new C3ReactorAnalysisVO();
|
|
|
|
+ analysisVO.setConversion(conversion);
|
|
|
|
+ analysisVO.setPropyleneSelectivity(propyleneSelectivity);
|
|
|
|
+ dataMap.put(startYear + "-" + startMonth, analysisVO);
|
|
|
|
+ if (startMonth == 12) {
|
|
|
|
+ startMonth = 1;
|
|
|
|
+ startYear++;
|
|
|
|
+ } else {
|
|
|
|
+ startMonth++;
|
|
|
|
+ }
|
|
|
|
+ } while (startYear != endYear || startMonth != endMonth + 1);
|
|
|
|
+ return AjaxResult.success(dataMap);
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 碳三反应器性能指标表格
|
|
* 碳三反应器性能指标表格
|
|
*/
|
|
*/
|