Browse Source

质量月报 - 碳二反应器性能指标趋势图

wangggziwen 1 year ago
parent
commit
a61ff9f575

+ 400 - 4
master/src/main/java/com/ruoyi/project/production/controller/TMonthlyQualityReportController.java

@@ -5,10 +5,7 @@ import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.file.ExcelUtils;
 import com.ruoyi.framework.web.controller.BaseController;
 import com.ruoyi.framework.web.domain.AjaxResult;
-import com.ruoyi.project.production.controller.vo.C2ReactorTableVO;
-import com.ruoyi.project.production.controller.vo.C3ReactorAnalysisVO;
-import com.ruoyi.project.production.controller.vo.C3ReactorTableVO;
-import com.ruoyi.project.production.controller.vo.MonthlyQualityReportQueryVO;
+import com.ruoyi.project.production.controller.vo.*;
 import com.ruoyi.project.production.domain.*;
 import com.ruoyi.project.production.service.*;
 import com.ruoyi.project.system.service.ISysDeptService;
@@ -118,6 +115,405 @@ public class TMonthlyQualityReportController extends BaseController
     @Autowired
     private ITMonthlyQualityReportZ404Service tMonthlyQualityReportZ404Service;
 
+    /**
+     * 碳二反应器性能指标趋势图
+     */
+    @PreAuthorize("@ss.hasPermi('production:quality:list')")
+    @GetMapping("/c2ReactorAnalysis")
+    public AjaxResult c2ReactorAnalysis(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, C2ReactorAnalysisVO> dataMap = new HashMap<>();
+        do {
+//1st inlet
+            TMonthlyQualityReportS3009 tMonthlyQualityReportS3009 = new TMonthlyQualityReportS3009();
+            tMonthlyQualityReportS3009.setStartDate(startDate);
+            tMonthlyQualityReportS3009.setEndDate(endDate);
+            List<TMonthlyQualityReportS3009> tMonthlyQualityReportS3009s = tMonthlyQualityReportS3009Service.selectTMonthlyQualityReportS3009List(tMonthlyQualityReportS3009);
+            //3rd outlet
+            TMonthlyQualityReportS3010 tMonthlyQualityReportS3010 = new TMonthlyQualityReportS3010();
+            tMonthlyQualityReportS3010.setStartDate(startDate);
+            tMonthlyQualityReportS3010.setEndDate(endDate);
+            List<TMonthlyQualityReportS3010> tMonthlyQualityReportS3010s = tMonthlyQualityReportS3010Service.selectTMonthlyQualityReportS3010List(tMonthlyQualityReportS3010);
+            //2nd inlet
+            TMonthlyQualityReportS3011 tMonthlyQualityReportS3011 = new TMonthlyQualityReportS3011();
+            tMonthlyQualityReportS3011.setStartDate(startDate);
+            tMonthlyQualityReportS3011.setEndDate(endDate);
+            List<TMonthlyQualityReportS3011> tMonthlyQualityReportS3011s = tMonthlyQualityReportS3011Service.selectTMonthlyQualityReportS3011List(tMonthlyQualityReportS3011);
+            //3rd inlet
+            TMonthlyQualityReportS3012 tMonthlyQualityReportS3012 = new TMonthlyQualityReportS3012();
+            tMonthlyQualityReportS3012.setStartDate(startDate);
+            tMonthlyQualityReportS3012.setEndDate(endDate);
+            List<TMonthlyQualityReportS3012> tMonthlyQualityReportS3012s = tMonthlyQualityReportS3012Service.selectTMonthlyQualityReportS3012List(tMonthlyQualityReportS3012);
+            //avg
+            BigDecimal ethane1InAvg = new BigDecimal(BigInteger.ZERO);
+            BigDecimal ethylene1InAvg = new BigDecimal(BigInteger.ZERO);
+            BigDecimal acetylene1InAvg = new BigDecimal(BigInteger.ZERO);
+            BigDecimal propane1InAvg = new BigDecimal(BigInteger.ZERO);
+            BigDecimal propylene1InAvg = new BigDecimal(BigInteger.ZERO);
+            BigDecimal pd1InAvg = new BigDecimal(BigInteger.ZERO);
+            BigDecimal ma1InAvg = new BigDecimal(BigInteger.ZERO);
+            BigDecimal ethane3OutAvg = new BigDecimal(BigInteger.ZERO);
+            BigDecimal ethylene3OutAvg = new BigDecimal(BigInteger.ZERO);
+            BigDecimal acetylene3OutAvg = new BigDecimal(BigInteger.ZERO);
+            BigDecimal propane3OutAvg = new BigDecimal(BigInteger.ZERO);
+            BigDecimal propylene3OutAvg = new BigDecimal(BigInteger.ZERO);
+            BigDecimal pd3OutAvg = new BigDecimal(BigInteger.ZERO);
+            BigDecimal ma3OutAvg = new BigDecimal(BigInteger.ZERO);
+            BigDecimal ethane2InAvg = new BigDecimal(BigInteger.ZERO);
+            BigDecimal ethylene2InAvg = new BigDecimal(BigInteger.ZERO);
+            BigDecimal acetylene2InAvg = new BigDecimal(BigInteger.ZERO);
+            BigDecimal propane2InAvg = new BigDecimal(BigInteger.ZERO);
+            BigDecimal propylene2InAvg = new BigDecimal(BigInteger.ZERO);
+            BigDecimal pd2InAvg = new BigDecimal(BigInteger.ZERO);
+            BigDecimal ma2InAvg = new BigDecimal(BigInteger.ZERO);
+            BigDecimal ethane3InAvg = new BigDecimal(BigInteger.ZERO);
+            BigDecimal ethylene3InAvg = new BigDecimal(BigInteger.ZERO);
+            BigDecimal acetylene3InAvg = new BigDecimal(BigInteger.ZERO);
+            BigDecimal propane3InAvg = new BigDecimal(BigInteger.ZERO);
+            BigDecimal propylene3InAvg = new BigDecimal(BigInteger.ZERO);
+            BigDecimal pd3InAvg = new BigDecimal(BigInteger.ZERO);
+            BigDecimal ma3InAvg = new BigDecimal(BigInteger.ZERO);
+            //sum
+            BigDecimal ethane1InSum = new BigDecimal(BigInteger.ZERO);
+            BigDecimal ethylene1InSum = new BigDecimal(BigInteger.ZERO);
+            BigDecimal acetylene1InSum = new BigDecimal(BigInteger.ZERO);
+            BigDecimal propane1InSum = new BigDecimal(BigInteger.ZERO);
+            BigDecimal propylene1InSum = new BigDecimal(BigInteger.ZERO);
+            BigDecimal pd1InSum = new BigDecimal(BigInteger.ZERO);
+            BigDecimal ma1InSum = new BigDecimal(BigInteger.ZERO);
+            BigDecimal ethane3OutSum = new BigDecimal(BigInteger.ZERO);
+            BigDecimal ethylene3OutSum = new BigDecimal(BigInteger.ZERO);
+            BigDecimal acetylene3OutSum = new BigDecimal(BigInteger.ZERO);
+            BigDecimal propane3OutSum = new BigDecimal(BigInteger.ZERO);
+            BigDecimal propylene3OutSum = new BigDecimal(BigInteger.ZERO);
+            BigDecimal pd3OutSum = new BigDecimal(BigInteger.ZERO);
+            BigDecimal ma3OutSum = new BigDecimal(BigInteger.ZERO);
+            BigDecimal ethane2InSum = new BigDecimal(BigInteger.ZERO);
+            BigDecimal ethylene2InSum = new BigDecimal(BigInteger.ZERO);
+            BigDecimal acetylene2InSum = new BigDecimal(BigInteger.ZERO);
+            BigDecimal propane2InSum = new BigDecimal(BigInteger.ZERO);
+            BigDecimal propylene2InSum = new BigDecimal(BigInteger.ZERO);
+            BigDecimal pd2InSum = new BigDecimal(BigInteger.ZERO);
+            BigDecimal ma2InSum = new BigDecimal(BigInteger.ZERO);
+            BigDecimal ethane3InSum = new BigDecimal(BigInteger.ZERO);
+            BigDecimal ethylene3InSum = new BigDecimal(BigInteger.ZERO);
+            BigDecimal acetylene3InSum = new BigDecimal(BigInteger.ZERO);
+            BigDecimal propane3InSum = new BigDecimal(BigInteger.ZERO);
+            BigDecimal propylene3InSum = new BigDecimal(BigInteger.ZERO);
+            BigDecimal pd3InSum = new BigDecimal(BigInteger.ZERO);
+            BigDecimal ma3InSum = new BigDecimal(BigInteger.ZERO);
+            //list
+            ArrayList<BigDecimal> ethane1InList = new ArrayList<BigDecimal>();
+            ArrayList<BigDecimal> ethylene1InList = new ArrayList<BigDecimal>();
+            ArrayList<BigDecimal> acetylene1InList = new ArrayList<BigDecimal>();
+            ArrayList<BigDecimal> propane1InList = new ArrayList<BigDecimal>();
+            ArrayList<BigDecimal> propylene1InList = new ArrayList<BigDecimal>();
+            ArrayList<BigDecimal> pd1InList = new ArrayList<BigDecimal>();
+            ArrayList<BigDecimal> ma1InList = new ArrayList<BigDecimal>();
+            ArrayList<BigDecimal> ethane3OutList = new ArrayList<BigDecimal>();
+            ArrayList<BigDecimal> ethylene3OutList = new ArrayList<BigDecimal>();
+            ArrayList<BigDecimal> acetylene3OutList = new ArrayList<BigDecimal>();
+            ArrayList<BigDecimal> propane3OutList = new ArrayList<BigDecimal>();
+            ArrayList<BigDecimal> propylene3OutList = new ArrayList<BigDecimal>();
+            ArrayList<BigDecimal> pd3OutList = new ArrayList<BigDecimal>();
+            ArrayList<BigDecimal> ma3OutList = new ArrayList<BigDecimal>();
+            ArrayList<BigDecimal> ethane2InList = new ArrayList<BigDecimal>();
+            ArrayList<BigDecimal> ethylene2InList = new ArrayList<BigDecimal>();
+            ArrayList<BigDecimal> acetylene2InList = new ArrayList<BigDecimal>();
+            ArrayList<BigDecimal> propane2InList = new ArrayList<BigDecimal>();
+            ArrayList<BigDecimal> propylene2InList = new ArrayList<BigDecimal>();
+            ArrayList<BigDecimal> pd2InList = new ArrayList<BigDecimal>();
+            ArrayList<BigDecimal> ma2InList = new ArrayList<BigDecimal>();
+            ArrayList<BigDecimal> ethane3InList = new ArrayList<BigDecimal>();
+            ArrayList<BigDecimal> ethylene3InList = new ArrayList<BigDecimal>();
+            ArrayList<BigDecimal> acetylene3InList = new ArrayList<BigDecimal>();
+            ArrayList<BigDecimal> propane3InList = new ArrayList<BigDecimal>();
+            ArrayList<BigDecimal> propylene3InList = new ArrayList<BigDecimal>();
+            ArrayList<BigDecimal> pd3InList = new ArrayList<BigDecimal>();
+            ArrayList<BigDecimal> ma3InList = new ArrayList<BigDecimal>();
+            //放入list
+            for (TMonthlyQualityReportS3009 monthlyQualityReportS3009 : tMonthlyQualityReportS3009s) {
+                String ethane = monthlyQualityReportS3009.getEthane();
+                String ethylene = monthlyQualityReportS3009.getEthylene();
+                String acetylene = monthlyQualityReportS3009.getAcetylene();
+                String propane = monthlyQualityReportS3009.getPropane();
+                String propylene = monthlyQualityReportS3009.getPropylene();
+                String pd = monthlyQualityReportS3009.getPropadiene();
+                String ma = monthlyQualityReportS3009.getMethylacetylene();
+                if (StringUtils.isNotEmpty(ethane)) { ethane1InList.add(new BigDecimal(ethane)); }
+                if (StringUtils.isNotEmpty(ethylene)) { ethylene1InList.add(new BigDecimal(ethylene)); }
+                if (StringUtils.isNotEmpty(acetylene)) { acetylene1InList.add(new BigDecimal(acetylene)); }
+                if (StringUtils.isNotEmpty(propane)) { propane1InList.add(new BigDecimal(propane)); }
+                if (StringUtils.isNotEmpty(propylene)) { propylene1InList.add(new BigDecimal(propylene)); }
+                if (StringUtils.isNotEmpty(pd)) { pd1InList.add(new BigDecimal(pd)); }
+                if (StringUtils.isNotEmpty(ma)) { ma1InList.add(new BigDecimal(ma)); }
+            }
+            for (TMonthlyQualityReportS3010 monthlyQualityReportS3010 : tMonthlyQualityReportS3010s) {
+                String ethane = monthlyQualityReportS3010.getEthane();
+                String ethylene = monthlyQualityReportS3010.getEthylene();
+                String acetylene = monthlyQualityReportS3010.getAcetylene();
+                String propane = monthlyQualityReportS3010.getPropane();
+                String propylene = monthlyQualityReportS3010.getPropylene();
+                String pd = monthlyQualityReportS3010.getPropadiene();
+                String ma = monthlyQualityReportS3010.getMethylacetylene();
+                if (StringUtils.isNotEmpty(ethane)) { ethane3OutList.add(new BigDecimal(ethane)); }
+                if (StringUtils.isNotEmpty(ethylene)) { ethylene3OutList.add(new BigDecimal(ethylene)); }
+                if (StringUtils.isNotEmpty(acetylene)) { acetylene3OutList.add(new BigDecimal(acetylene)); }
+                if (StringUtils.isNotEmpty(propane)) { propane3OutList.add(new BigDecimal(propane)); }
+                if (StringUtils.isNotEmpty(propylene)) { propylene3OutList.add(new BigDecimal(propylene)); }
+                if (StringUtils.isNotEmpty(pd)) { pd3OutList.add(new BigDecimal(pd)); }
+                if (StringUtils.isNotEmpty(ma)) { ma3OutList.add(new BigDecimal(ma)); }
+            }
+            for (TMonthlyQualityReportS3011 monthlyQualityReportS3011 : tMonthlyQualityReportS3011s) {
+                String ethane = monthlyQualityReportS3011.getEthane();
+                String ethylene = monthlyQualityReportS3011.getEthylene();
+                String acetylene = monthlyQualityReportS3011.getAcetylene();
+                String propane = monthlyQualityReportS3011.getPropane();
+                String propylene = monthlyQualityReportS3011.getPropylene();
+                String pd = monthlyQualityReportS3011.getPropadiene();
+                String ma = monthlyQualityReportS3011.getMethylacetylene();
+                if (StringUtils.isNotEmpty(ethane)) { ethane2InList.add(new BigDecimal(ethane)); }
+                if (StringUtils.isNotEmpty(ethylene)) { ethylene2InList.add(new BigDecimal(ethylene)); }
+                if (StringUtils.isNotEmpty(acetylene)) { acetylene2InList.add(new BigDecimal(acetylene)); }
+                if (StringUtils.isNotEmpty(propane)) { propane2InList.add(new BigDecimal(propane)); }
+                if (StringUtils.isNotEmpty(propylene)) { propylene2InList.add(new BigDecimal(propylene)); }
+                if (StringUtils.isNotEmpty(pd)) { pd2InList.add(new BigDecimal(pd)); }
+                if (StringUtils.isNotEmpty(ma)) { ma2InList.add(new BigDecimal(ma)); }
+            }
+            for (TMonthlyQualityReportS3012 monthlyQualityReportS3012 : tMonthlyQualityReportS3012s) {
+                String ethane = monthlyQualityReportS3012.getEthane();
+                String ethylene = monthlyQualityReportS3012.getEthylene();
+                String acetylene = monthlyQualityReportS3012.getAcetylene();
+                String propane = monthlyQualityReportS3012.getPropane();
+                String propylene = monthlyQualityReportS3012.getPropylene();
+                String pd = monthlyQualityReportS3012.getPropadiene();
+                String ma = monthlyQualityReportS3012.getMethylacetylene();
+                if (StringUtils.isNotEmpty(ethane)) { ethane3InList.add(new BigDecimal(ethane)); }
+                if (StringUtils.isNotEmpty(ethylene)) { ethylene3InList.add(new BigDecimal(ethylene)); }
+                if (StringUtils.isNotEmpty(acetylene)) { acetylene3InList.add(new BigDecimal(acetylene)); }
+                if (StringUtils.isNotEmpty(propane)) { propane3InList.add(new BigDecimal(propane)); }
+                if (StringUtils.isNotEmpty(propylene)) { propylene3InList.add(new BigDecimal(propylene)); }
+                if (StringUtils.isNotEmpty(pd)) { pd3InList.add(new BigDecimal(pd)); }
+                if (StringUtils.isNotEmpty(ma)) { ma3InList.add(new BigDecimal(ma)); }
+            }
+            //计算sum
+            for (BigDecimal value : ethane1InList) { ethane1InSum = ethane1InSum.add(value); }
+            for (BigDecimal value : ethylene1InList) { ethylene1InSum = ethylene1InSum.add(value); }
+            for (BigDecimal value : acetylene1InList) { acetylene1InSum = acetylene1InSum.add(value); }
+            for (BigDecimal value : propane1InList) { propane1InSum = propane1InSum.add(value); }
+            for (BigDecimal value : propylene1InList) { propylene1InSum = propylene1InSum.add(value); }
+            for (BigDecimal value : pd1InList) { pd1InSum = pd1InSum.add(value); }
+            for (BigDecimal value : ma1InList) { ma1InSum = ma1InSum.add(value); }
+            for (BigDecimal value : ethane3OutList) { ethane3OutSum = ethane3OutSum.add(value); }
+            for (BigDecimal value : ethylene3OutList) { ethylene3OutSum = ethylene3OutSum.add(value); }
+            for (BigDecimal value : acetylene3OutList) { acetylene3OutSum = acetylene3OutSum.add(value); }
+            for (BigDecimal value : propane3OutList) { propane3OutSum = propane3OutSum.add(value); }
+            for (BigDecimal value : propylene3OutList) { propylene3OutSum = propylene3OutSum.add(value); }
+            for (BigDecimal value : pd3OutList) { pd3OutSum = pd3OutSum.add(value); }
+            for (BigDecimal value : ma3OutList) { ma3OutSum = ma3OutSum.add(value); }
+            for (BigDecimal value : ethane2InList) { ethane2InSum = ethane2InSum.add(value); }
+            for (BigDecimal value : ethylene2InList) { ethylene2InSum = ethylene2InSum.add(value); }
+            for (BigDecimal value : acetylene2InList) { acetylene2InSum = acetylene2InSum.add(value); }
+            for (BigDecimal value : propane2InList) { propane2InSum = propane2InSum.add(value); }
+            for (BigDecimal value : propylene2InList) { propylene2InSum = propylene2InSum.add(value); }
+            for (BigDecimal value : pd2InList) { pd2InSum = pd2InSum.add(value); }
+            for (BigDecimal value : ma2InList) { ma2InSum = ma2InSum.add(value); }
+            for (BigDecimal value : ethane3InList) { ethane3InSum = ethane3InSum.add(value); }
+            for (BigDecimal value : ethylene3InList) { ethylene3InSum = ethylene3InSum.add(value); }
+            for (BigDecimal value : acetylene3InList) { acetylene3InSum = acetylene3InSum.add(value); }
+            for (BigDecimal value : propane3InList) { propane3InSum = propane3InSum.add(value); }
+            for (BigDecimal value : propylene3InList) { propylene3InSum = propylene3InSum.add(value); }
+            for (BigDecimal value : pd3InList) { pd3InSum = pd3InSum.add(value); }
+            for (BigDecimal value : ma3InList) { ma3InSum = ma3InSum.add(value); }
+            //计算avg
+            if (ethane1InList.size() != 0) { ethane1InAvg = ethane1InSum.divide(new BigDecimal(ethane1InList.size()), 2, RoundingMode.HALF_UP); }
+            if (ethylene1InList.size() != 0) { ethylene1InAvg = ethylene1InSum.divide(new BigDecimal(ethylene1InList.size()), 2, RoundingMode.HALF_UP); }
+            if (acetylene1InList.size() != 0) { acetylene1InAvg = acetylene1InSum.divide(new BigDecimal(acetylene1InList.size()), 2, RoundingMode.HALF_UP); }
+            if (propane1InList.size() != 0) { propane1InAvg = propane1InSum.divide(new BigDecimal(propane1InList.size()), 2, RoundingMode.HALF_UP); }
+            if (propylene1InList.size() != 0) { propylene1InAvg = propylene1InSum.divide(new BigDecimal(propylene1InList.size()), 2, RoundingMode.HALF_UP); }
+            if (pd1InList.size() != 0) { pd1InAvg = pd1InSum.divide(new BigDecimal(pd1InList.size()), 2, RoundingMode.HALF_UP); }
+            if (ma1InList.size() != 0) { ma1InAvg = ma1InSum.divide(new BigDecimal(ma1InList.size()), 2, RoundingMode.HALF_UP); }
+            if (ethane3OutList.size() != 0) { ethane3OutAvg = ethane3OutSum.divide(new BigDecimal(ethane3OutList.size()), 2, RoundingMode.HALF_UP); }
+            if (ethylene3OutList.size() != 0) { ethylene3OutAvg = ethylene3OutSum.divide(new BigDecimal(ethylene3OutList.size()), 2, RoundingMode.HALF_UP); }
+            if (acetylene3OutList.size() != 0) {
+                acetylene3OutAvg = acetylene3OutSum.divide(new BigDecimal(acetylene3OutList.size()), 2, RoundingMode.HALF_UP)
+                        .divide(new BigDecimal("10000"), 5, RoundingMode.HALF_UP);
+            }
+            if (propane3OutList.size() != 0) { propane3OutAvg = propane3OutSum.divide(new BigDecimal(propane3OutList.size()), 2, RoundingMode.HALF_UP); }
+            if (propylene3OutList.size() != 0) { propylene3OutAvg = propylene3OutSum.divide(new BigDecimal(propylene3OutList.size()), 2, RoundingMode.HALF_UP); }
+            if (pd3OutList.size() != 0) { pd3OutAvg = pd3OutSum.divide(new BigDecimal(pd3OutList.size()), 2, RoundingMode.HALF_UP); }
+            if (ma3OutList.size() != 0) { ma3OutAvg = ma3OutSum.divide(new BigDecimal(ma3OutList.size()), 2, RoundingMode.HALF_UP); }
+            if (ethane2InList.size() != 0) { ethane2InAvg = ethane2InSum.divide(new BigDecimal(ethane2InList.size()), 2, RoundingMode.HALF_UP); }
+            if (ethylene2InList.size() != 0) { ethylene2InAvg = ethylene2InSum.divide(new BigDecimal(ethylene2InList.size()), 2, RoundingMode.HALF_UP); }
+            if (acetylene2InList.size() != 0) { acetylene2InAvg = acetylene2InSum.divide(new BigDecimal(acetylene2InList.size()), 2, RoundingMode.HALF_UP); }
+            if (propane2InList.size() != 0) { propane2InAvg = propane2InSum.divide(new BigDecimal(propane2InList.size()), 2, RoundingMode.HALF_UP); }
+            if (propylene2InList.size() != 0) { propylene2InAvg = propylene2InSum.divide(new BigDecimal(propylene2InList.size()), 2, RoundingMode.HALF_UP); }
+            if (pd2InList.size() != 0) { pd2InAvg = pd2InSum.divide(new BigDecimal(pd2InList.size()), 2, RoundingMode.HALF_UP); }
+            if (ma2InList.size() != 0) { ma2InAvg = ma2InSum.divide(new BigDecimal(ma2InList.size()), 2, RoundingMode.HALF_UP); }
+            if (ethane3InList.size() != 0) { ethane3InAvg = ethane3InSum.divide(new BigDecimal(ethane3InList.size()), 2, RoundingMode.HALF_UP); }
+            if (ethylene3InList.size() != 0) { ethylene3InAvg = ethylene3InSum.divide(new BigDecimal(ethylene3InList.size()), 2, RoundingMode.HALF_UP); }
+            if (acetylene3InList.size() != 0) {
+                acetylene3InAvg = acetylene3InSum.divide(new BigDecimal(acetylene3InList.size()), 2, RoundingMode.HALF_UP)
+                        .divide(new BigDecimal("10000"), 5, RoundingMode.HALF_UP);
+            }
+            if (propane3InList.size() != 0) { propane3InAvg = propane3InSum.divide(new BigDecimal(propane3InList.size()), 2, RoundingMode.HALF_UP); }
+            if (propylene3InList.size() != 0) { propylene3InAvg = propylene3InSum.divide(new BigDecimal(propylene3InList.size()), 2, RoundingMode.HALF_UP); }
+            if (pd3InList.size() != 0) { pd3InAvg = pd3InSum.divide(new BigDecimal(pd3InList.size()), 2, RoundingMode.HALF_UP); }
+            if (ma3InList.size() != 0) { ma3InAvg = ma3InSum.divide(new BigDecimal(ma3InList.size()), 2, RoundingMode.HALF_UP); }
+            //%
+            BigDecimal acetyleneConversion1stIn = new BigDecimal(BigInteger.ZERO);
+            BigDecimal conversionLoad1stIn = new BigDecimal(BigInteger.ZERO);
+            BigDecimal ethyleneSelectivity1stIn = new BigDecimal(BigInteger.ZERO);
+            BigDecimal mapdConversion1stIn = new BigDecimal(BigInteger.ZERO);
+            BigDecimal propyleneSelectivity1stIn = new BigDecimal(BigInteger.ZERO);
+            BigDecimal acetyleneConversion2ndIn = new BigDecimal(BigInteger.ZERO);
+            BigDecimal conversionLoad2ndIn = new BigDecimal(BigInteger.ZERO);
+            BigDecimal ethyleneSelectivity2ndIn = new BigDecimal(BigInteger.ZERO);
+            BigDecimal mapdConversion2ndIn = new BigDecimal(BigInteger.ZERO);
+            BigDecimal propyleneSelectivity2ndIn = new BigDecimal(BigInteger.ZERO);
+            BigDecimal acetyleneConversion3rdIn = new BigDecimal(BigInteger.ZERO);
+            BigDecimal conversionLoad3rdIn = new BigDecimal(BigInteger.ZERO);
+            BigDecimal ethyleneSelectivity3rdIn = new BigDecimal(BigInteger.ZERO);
+            BigDecimal mapdConversion3rdIn = new BigDecimal(BigInteger.ZERO);
+            BigDecimal propyleneSelectivity3rdIn = new BigDecimal(BigInteger.ZERO);
+            BigDecimal acetyleneConversion3rdOut = new BigDecimal(BigInteger.ZERO);
+            BigDecimal ethyleneSelectivity3rdOut = new BigDecimal(BigInteger.ZERO);
+            BigDecimal mapdConversion3rdOut = new BigDecimal(BigInteger.ZERO);
+            BigDecimal propyleneSelectivity3rdOut = new BigDecimal(BigInteger.ZERO);
+            //计算%
+            if (acetylene1InAvg.compareTo(BigDecimal.ZERO) != 0) {
+                acetyleneConversion1stIn = BigDecimal.TEN.multiply(BigDecimal.TEN)
+                        .multiply((acetylene1InAvg.subtract(acetylene2InAvg)).divide(acetylene1InAvg, 2, RoundingMode.HALF_UP));
+            }
+            conversionLoad1stIn = acetyleneConversion1stIn;
+            if (ethane1InAvg.compareTo(BigDecimal.ZERO) != 0 && ethylene1InAvg.compareTo(BigDecimal.ZERO) != 0 && acetylene1InAvg.compareTo(BigDecimal.ZERO) != 0
+                    && ethane2InAvg.compareTo(BigDecimal.ZERO) != 0 && ethylene2InAvg.compareTo(BigDecimal.ZERO) != 0 && acetylene2InAvg.compareTo(BigDecimal.ZERO) != 0) {
+                ethyleneSelectivity1stIn = BigDecimal.TEN.multiply(BigDecimal.TEN)
+                        .multiply(((ethylene2InAvg.divide(ethane2InAvg.add(ethylene2InAvg).add(acetylene2InAvg), 5, RoundingMode.HALF_UP))
+                                .subtract(ethylene1InAvg.divide(ethane1InAvg.add(ethylene1InAvg).add(acetylene1InAvg), 5, RoundingMode.HALF_UP)))
+                                .divide(((acetylene1InAvg.divide(ethane1InAvg.add(ethylene1InAvg).add(acetylene1InAvg), 5, RoundingMode.HALF_UP))
+                                        .subtract(acetylene2InAvg.divide(ethane2InAvg.add(ethylene2InAvg).add(acetylene2InAvg), 5, RoundingMode.HALF_UP))), 5, RoundingMode.HALF_UP));
+            }
+            if ((pd1InAvg.add(ma1InAvg)).compareTo(BigDecimal.ZERO) != 0) {
+                mapdConversion1stIn = BigDecimal.TEN.multiply(BigDecimal.TEN)
+                        .multiply((pd1InAvg.add(ma1InAvg).subtract(pd2InAvg).subtract(ma2InAvg)).divide(pd1InAvg.add(ma1InAvg), 2, RoundingMode.HALF_UP));
+            }
+            if (propane1InAvg.compareTo(BigDecimal.ZERO) != 0 && propylene1InAvg.compareTo(BigDecimal.ZERO) != 0
+                    && pd1InAvg.compareTo(BigDecimal.ZERO) != 0 && ma1InAvg.compareTo(BigDecimal.ZERO) != 0
+                    && propane2InAvg.compareTo(BigDecimal.ZERO) != 0 && propylene2InAvg.compareTo(BigDecimal.ZERO) != 0
+                    && pd2InAvg.compareTo(BigDecimal.ZERO) != 0 && ma2InAvg.compareTo(BigDecimal.ZERO) != 0) {
+                propyleneSelectivity1stIn = BigDecimal.TEN.multiply(BigDecimal.TEN)
+                        .multiply(((propylene2InAvg.divide((propane2InAvg.add(propylene2InAvg).add(pd2InAvg).add(ma2InAvg)), 5, RoundingMode.HALF_UP))
+                                .subtract(propylene1InAvg.divide((propane1InAvg.add(propylene1InAvg).add(pd1InAvg).add(ma1InAvg)), 5, RoundingMode.HALF_UP)))
+                                .divide((((pd1InAvg.add(ma1InAvg)).divide((propane1InAvg.add(propylene1InAvg).add(pd1InAvg).add(ma1InAvg)), 5, RoundingMode.HALF_UP))
+                                        .subtract((pd2InAvg.add(ma2InAvg).divide((propane2InAvg.add(propylene2InAvg).add(pd2InAvg).add(ma2InAvg)), 5, RoundingMode.HALF_UP)))), 5, RoundingMode.HALF_UP));
+            }
+            if (acetylene2InAvg.compareTo(BigDecimal.ZERO) != 0) {
+                acetyleneConversion2ndIn = BigDecimal.TEN.multiply(BigDecimal.TEN)
+                        .multiply((acetylene2InAvg.subtract(acetylene3InAvg)).divide(acetylene2InAvg, 2, RoundingMode.HALF_UP));
+            }
+            if (acetylene1InAvg.compareTo(BigDecimal.ZERO) != 0) {
+                conversionLoad2ndIn = BigDecimal.TEN.multiply(BigDecimal.TEN)
+                        .multiply((acetylene2InAvg.subtract(acetylene3InAvg)).divide(acetylene1InAvg, 2, RoundingMode.HALF_UP));
+            }
+            if (ethane2InAvg.compareTo(BigDecimal.ZERO) != 0 && ethylene2InAvg.compareTo(BigDecimal.ZERO) != 0 && acetylene2InAvg.compareTo(BigDecimal.ZERO) != 0
+                    && ethane3InAvg.compareTo(BigDecimal.ZERO) != 0 && ethylene3InAvg.compareTo(BigDecimal.ZERO) != 0 && acetylene3InAvg.compareTo(BigDecimal.ZERO) != 0) {
+                ethyleneSelectivity2ndIn = BigDecimal.TEN.multiply(BigDecimal.TEN)
+                        .multiply(((ethylene3InAvg.divide(ethane3InAvg.add(ethylene3InAvg).add(acetylene3InAvg), 5, RoundingMode.HALF_UP))
+                                .subtract(ethylene2InAvg.divide(ethane2InAvg.add(ethylene2InAvg).add(acetylene2InAvg), 5, RoundingMode.HALF_UP)))
+                                .divide(((acetylene2InAvg.divide(ethane2InAvg.add(ethylene2InAvg).add(acetylene2InAvg), 5, RoundingMode.HALF_UP))
+                                        .subtract(acetylene3InAvg.divide(ethane3InAvg.add(ethylene3InAvg).add(acetylene3InAvg), 5, RoundingMode.HALF_UP))), 5, RoundingMode.HALF_UP));
+            }
+            if ((pd2InAvg.add(ma2InAvg)).compareTo(BigDecimal.ZERO) != 0) {
+                mapdConversion2ndIn = BigDecimal.TEN.multiply(BigDecimal.TEN)
+                        .multiply((pd2InAvg.add(ma2InAvg).subtract(pd3InAvg).subtract(ma3InAvg)).divide(pd2InAvg.add(ma2InAvg), 2, RoundingMode.HALF_UP));
+            }
+            if (propane2InAvg.compareTo(BigDecimal.ZERO) != 0 && propylene2InAvg.compareTo(BigDecimal.ZERO) != 0
+                    && pd2InAvg.compareTo(BigDecimal.ZERO) != 0 && ma2InAvg.compareTo(BigDecimal.ZERO) != 0
+                    && propane3InAvg.compareTo(BigDecimal.ZERO) != 0 && propylene3InAvg.compareTo(BigDecimal.ZERO) != 0
+                    && pd3InAvg.compareTo(BigDecimal.ZERO) != 0 && ma3InAvg.compareTo(BigDecimal.ZERO) != 0) {
+                propyleneSelectivity2ndIn = BigDecimal.TEN.multiply(BigDecimal.TEN)
+                        .multiply(((propylene3InAvg.divide((propane3InAvg.add(propylene3InAvg).add(pd3InAvg).add(ma3InAvg)), 5, RoundingMode.HALF_UP))
+                                .subtract(propylene2InAvg.divide((propane2InAvg.add(propylene2InAvg).add(pd2InAvg).add(ma2InAvg)), 5, RoundingMode.HALF_UP)))
+                                .divide((((pd2InAvg.add(ma2InAvg)).divide((propane2InAvg.add(propylene2InAvg).add(pd2InAvg).add(ma2InAvg)), 5, RoundingMode.HALF_UP))
+                                        .subtract((pd3InAvg.add(ma3InAvg).divide((propane3InAvg.add(propylene3InAvg).add(pd3InAvg).add(ma3InAvg)), 5, RoundingMode.HALF_UP)))), 5, RoundingMode.HALF_UP));
+            }
+            if (acetylene3InAvg.compareTo(BigDecimal.ZERO) != 0) {
+                acetyleneConversion3rdIn = BigDecimal.TEN.multiply(BigDecimal.TEN)
+                        .multiply((acetylene3InAvg.subtract(acetylene3OutAvg)).divide(acetylene3InAvg, 2, RoundingMode.HALF_UP));
+            }
+            if (acetylene1InAvg.compareTo(BigDecimal.ZERO) != 0) {
+                conversionLoad3rdIn = BigDecimal.TEN.multiply(BigDecimal.TEN)
+                        .multiply((acetylene3InAvg.subtract(acetylene3OutAvg)).divide(acetylene1InAvg, 2, RoundingMode.HALF_UP));
+            }
+            if (ethane3InAvg.compareTo(BigDecimal.ZERO) != 0 && ethylene3InAvg.compareTo(BigDecimal.ZERO) != 0 && acetylene3InAvg.compareTo(BigDecimal.ZERO) != 0
+                    && ethane3OutAvg.compareTo(BigDecimal.ZERO) != 0 && ethylene3OutAvg.compareTo(BigDecimal.ZERO) != 0 && acetylene3OutAvg.compareTo(BigDecimal.ZERO) != 0) {
+                ethyleneSelectivity3rdIn = BigDecimal.TEN.multiply(BigDecimal.TEN)
+                        .multiply(((ethylene3OutAvg.divide(ethane3OutAvg.add(ethylene3OutAvg).add(acetylene3OutAvg), 5, RoundingMode.HALF_UP))
+                                .subtract(ethylene3InAvg.divide(ethane3InAvg.add(ethylene3InAvg).add(acetylene3InAvg), 5, RoundingMode.HALF_UP)))
+                                .divide(((acetylene3InAvg.divide(ethane3InAvg.add(ethylene3InAvg).add(acetylene3InAvg), 5, RoundingMode.HALF_UP))
+                                        .subtract(acetylene3OutAvg.divide(ethane3OutAvg.add(ethylene3OutAvg).add(acetylene3OutAvg), 5, RoundingMode.HALF_UP))), 5, RoundingMode.HALF_UP));
+            }
+            if ((pd3InAvg.add(ma3InAvg)).compareTo(BigDecimal.ZERO) != 0) {
+                mapdConversion3rdIn = BigDecimal.TEN.multiply(BigDecimal.TEN)
+                        .multiply((pd3InAvg.add(ma3InAvg).subtract(pd3OutAvg).subtract(ma3OutAvg)).divide(pd3InAvg.add(ma3InAvg), 2, RoundingMode.HALF_UP));
+            }
+            if (propane3InAvg.compareTo(BigDecimal.ZERO) != 0 && propylene3InAvg.compareTo(BigDecimal.ZERO) != 0
+                    && pd3InAvg.compareTo(BigDecimal.ZERO) != 0 && ma3InAvg.compareTo(BigDecimal.ZERO) != 0
+                    && propane3OutAvg.compareTo(BigDecimal.ZERO) != 0 && propylene3OutAvg.compareTo(BigDecimal.ZERO) != 0
+                    && pd3OutAvg.compareTo(BigDecimal.ZERO) != 0 && ma3OutAvg.compareTo(BigDecimal.ZERO) != 0) {
+                propyleneSelectivity3rdIn = BigDecimal.TEN.multiply(BigDecimal.TEN)
+                        .multiply(((propylene3OutAvg.divide((propane3OutAvg.add(propylene3OutAvg).add(pd3OutAvg).add(ma3OutAvg)), 5, RoundingMode.HALF_UP))
+                                .subtract(propylene3InAvg.divide((propane3InAvg.add(propylene3InAvg).add(pd3InAvg).add(ma3InAvg)), 5, RoundingMode.HALF_UP)))
+                                .divide((((pd3InAvg.add(ma3InAvg)).divide((propane3InAvg.add(propylene3InAvg).add(pd3InAvg).add(ma3InAvg)), 5, RoundingMode.HALF_UP))
+                                        .subtract((pd3OutAvg.add(ma3OutAvg).divide((propane3OutAvg.add(propylene3OutAvg).add(pd3OutAvg).add(ma3OutAvg)), 5, RoundingMode.HALF_UP)))), 5, RoundingMode.HALF_UP));
+            }
+            if (acetylene1InAvg.compareTo(BigDecimal.ZERO) != 0) {
+                acetyleneConversion3rdOut = BigDecimal.TEN.multiply(BigDecimal.TEN)
+                        .multiply((acetylene1InAvg.subtract(acetylene3OutAvg)).divide(acetylene1InAvg, 2, RoundingMode.HALF_UP));
+            }
+            if (ethane1InAvg.compareTo(BigDecimal.ZERO) != 0 && ethylene1InAvg.compareTo(BigDecimal.ZERO) != 0 && acetylene1InAvg.compareTo(BigDecimal.ZERO) != 0
+                    && ethane3OutAvg.compareTo(BigDecimal.ZERO) != 0 && ethylene3OutAvg.compareTo(BigDecimal.ZERO) != 0 && acetylene3OutAvg.compareTo(BigDecimal.ZERO) != 0) {
+                ethyleneSelectivity3rdOut = BigDecimal.TEN.multiply(BigDecimal.TEN)
+                        .multiply(((ethylene3OutAvg.divide(ethane3OutAvg.add(ethylene3OutAvg).add(acetylene3OutAvg), 5, RoundingMode.HALF_UP))
+                                .subtract(ethylene1InAvg.divide(ethane1InAvg.add(ethylene1InAvg).add(acetylene1InAvg), 5, RoundingMode.HALF_UP)))
+                                .divide(((acetylene1InAvg.divide(ethane1InAvg.add(ethylene1InAvg).add(acetylene1InAvg), 5, RoundingMode.HALF_UP))
+                                        .subtract(acetylene3OutAvg.divide(ethane3OutAvg.add(ethylene3OutAvg).add(acetylene3OutAvg), 5, RoundingMode.HALF_UP))), 5, RoundingMode.HALF_UP));
+            }
+            if ((pd1InAvg.add(ma1InAvg)).compareTo(BigDecimal.ZERO) != 0) {
+                mapdConversion3rdOut = BigDecimal.TEN.multiply(BigDecimal.TEN)
+                        .multiply((pd1InAvg.add(ma1InAvg).subtract(pd3OutAvg).subtract(ma3OutAvg)).divide(pd1InAvg.add(ma1InAvg), 2, RoundingMode.HALF_UP));
+            }
+            if (propane1InAvg.compareTo(BigDecimal.ZERO) != 0 && propylene1InAvg.compareTo(BigDecimal.ZERO) != 0
+                    && pd1InAvg.compareTo(BigDecimal.ZERO) != 0 && ma1InAvg.compareTo(BigDecimal.ZERO) != 0
+                    && propane3OutAvg.compareTo(BigDecimal.ZERO) != 0 && propylene3OutAvg.compareTo(BigDecimal.ZERO) != 0
+                    && pd3OutAvg.compareTo(BigDecimal.ZERO) != 0 && ma3OutAvg.compareTo(BigDecimal.ZERO) != 0) {
+                propyleneSelectivity3rdOut = BigDecimal.TEN.multiply(BigDecimal.TEN)
+                        .multiply(((propylene3OutAvg.divide((propane3OutAvg.add(propylene3OutAvg).add(pd3OutAvg).add(ma3OutAvg)), 5, RoundingMode.HALF_UP))
+                                .subtract(propylene1InAvg.divide((propane1InAvg.add(propylene1InAvg).add(pd1InAvg).add(ma1InAvg)), 5, RoundingMode.HALF_UP)))
+                                .divide((((pd1InAvg.add(ma1InAvg)).divide((propane1InAvg.add(propylene1InAvg).add(pd1InAvg).add(ma1InAvg)), 5, RoundingMode.HALF_UP))
+                                        .subtract((pd3OutAvg.add(ma3OutAvg).divide((propane3OutAvg.add(propylene3OutAvg).add(pd3OutAvg).add(ma3OutAvg)), 5, RoundingMode.HALF_UP)))), 5, RoundingMode.HALF_UP));
+            }
+            C2ReactorAnalysisVO analysisVO = new C2ReactorAnalysisVO();
+            analysisVO.setEthyleneSelectivity3rdOut(ethyleneSelectivity3rdOut);
+            analysisVO.setMapdConversion3rdOut(mapdConversion3rdOut);
+            dataMap.put(startYear + "-" + startMonth, analysisVO);
+            if (startMonth == 12) {
+                startMonth = 1;
+                startYear++;
+            } else {
+                startMonth++;
+            }
+        } while (startYear != endYear || startMonth != endMonth + 1);
+        return AjaxResult.success(dataMap);
+    }
+
     /**
      * 碳二反应器性能指标表格
      */

+ 32 - 0
master/src/main/java/com/ruoyi/project/production/controller/vo/C2ReactorAnalysisVO.java

@@ -0,0 +1,32 @@
+package com.ruoyi.project.production.controller.vo;
+
+import java.math.BigDecimal;
+
+/**
+ * 碳二反应器性能指标趋势图VO
+ *
+ * @author Wang Zi Wen
+ * @email wangggziwen@163.com
+ * @date 2023/11/27 10:24:29
+ */
+public class C2ReactorAnalysisVO {
+    private BigDecimal ethyleneSelectivity3rdOut;
+
+    private BigDecimal mapdConversion3rdOut;
+
+    public BigDecimal getEthyleneSelectivity3rdOut() {
+        return ethyleneSelectivity3rdOut;
+    }
+
+    public void setEthyleneSelectivity3rdOut(BigDecimal ethyleneSelectivity3rdOut) {
+        this.ethyleneSelectivity3rdOut = ethyleneSelectivity3rdOut;
+    }
+
+    public BigDecimal getMapdConversion3rdOut() {
+        return mapdConversion3rdOut;
+    }
+
+    public void setMapdConversion3rdOut(BigDecimal mapdConversion3rdOut) {
+        this.mapdConversion3rdOut = mapdConversion3rdOut;
+    }
+}

+ 9 - 0
ui/src/api/production/quality.js

@@ -1,5 +1,14 @@
 import request from '@/utils/request'
 
+// 碳二反应器性能指标趋势图
+export function c2ReactorAnalysis(query) {
+  return request({
+    url: '/production/quality/c2ReactorAnalysis',
+    method: 'get',
+    params: query
+  })
+}
+
 // 碳二反应器性能指标表格
 export function c2ReactorTable(query) {
   return request({

+ 68 - 1
ui/src/views/production/quality/index.vue

@@ -2373,7 +2373,7 @@ import { listS6101, getS6101, delS6101, addS6101, updateS6101, exportS6101 } fro
 import { listS6107, getS6107, delS6107, addS6107, updateS6107, exportS6107 } from "@/api/production/s6107";
 import { listS6301, getS6301, delS6301, addS6301, updateS6301, exportS6301 } from "@/api/production/s6301";
 import { listZ404, getZ404, delZ404, addZ404, updateZ404, exportZ404 } from "@/api/production/z404";
-import { exportQuality, c3ReactorTable, c3ReactorAnalysis, c2ReactorTable } from "@/api/production/quality";
+import { exportQuality, c3ReactorTable, c3ReactorAnalysis, c2ReactorAnalysis, c2ReactorTable } from "@/api/production/quality";
 import { treeselect } from "@/api/system/dept";
 import { getToken } from "@/utils/auth";
 import Treeselect from "@riophae/vue-treeselect";
@@ -4225,6 +4225,73 @@ export default {
           });
           break;
         case "10":
+          this.disposeChart();
+          c2ReactorAnalysis(this.analysisQueryParams).then(response => {
+            let data = response.data;
+            let ethyleneSelectivity3rdOutArray = [];
+            let mapdConversion3rdOutArray = [];
+            let sampleDateArray = [];
+            for(const key in data) {
+              sampleDateArray.push(key);
+              ethyleneSelectivity3rdOutArray.push(data[key].ethyleneSelectivity3rdOut);
+              mapdConversion3rdOutArray.push(data[key].mapdConversion3rdOut);
+            }
+            let option = {
+              title: {
+                text: dictLabel,
+                left: 'center',
+                textStyle: {
+                  fontSize: 16
+                }
+              },
+              tooltip: {
+                trigger: 'axis'
+              },
+              legend: {
+                x: 'center',
+                y: 'bottom',
+                data: ['conversion', 'Selectivity']
+              },
+              grid: {
+                top: '10%',
+                left: '3%',
+                right: '4%',
+                bottom: '10%',
+                containLabel: true
+              },
+              toolbox: {
+                feature: {
+                  saveAsImage: {}
+                }
+              },
+              xAxis: {
+                type: 'category',
+                boundaryGap: false,
+                data: sampleDateArray,
+                axisLabel: {
+                  interval: 0,
+                  rotate: 45
+                }
+              },
+              yAxis: {
+                type: 'value'
+              },
+              series: [
+                {
+                  name: 'Ethylene Selectivity',
+                  type: 'line',
+                  data: ethyleneSelectivity3rdOutArray
+                },
+                {
+                  name: 'MAPD Conversion',
+                  type: 'line',
+                  data: mapdConversion3rdOutArray
+                }
+              ]
+            };
+            this.chart = this.echarts.init(document.getElementById('chart'));
+            this.chart.setOption(option);
+          });
           c2ReactorTable({
             "startDate": this.analysisSampleDate[0],
             "endDate": this.analysisSampleDate[1]