Explorar el Código

库存量改成液位的库存量

hfxc226 hace 2 semanas
padre
commit
a325c3fe50

+ 75 - 24
platform-service/src/main/java/com/platform/service/produce/impl/ProduceReportServiceImpl.java

@@ -569,7 +569,6 @@ public class ProduceReportServiceImpl extends BaseServiceImpl<ProduceReportMappe
 
         // 计算耗用,耗用等于库存-液位
         generateYeweiReport(date, "ck_", "0100087_hy", SysConfigEnum.PRODUCE_YEWEI_903_HY.name());// 903
-        generateYeweiReport(date, "ck_", "0100074_hy", SysConfigEnum.PRODUCE_YEWEI_904_HY.name());// 904
         generateYeweiReport(date, "ck_", "0100083_hy", SysConfigEnum.PRODUCE_YEWEI_905_HY.name());// 905
         generateYeweiReport(date, "ck_", "0100003_hy", SysConfigEnum.PRODUCE_YEWEI_907_HY.name());// 907
         generateYeweiReport(date, "ck_", "0100026_hy", SysConfigEnum.PRODUCE_YEWEI_F160C_HY.name());// F160C
@@ -579,27 +578,79 @@ public class ProduceReportServiceImpl extends BaseServiceImpl<ProduceReportMappe
         generateYeweiReport(date, "ck_", "0100160_hy", SysConfigEnum.PRODUCE_YEWEI_YJ_HY.name());// 液碱
         generateYeweiReport(date, "ck_", "0100086_hy", SysConfigEnum.PRODUCE_YEWEI_YS_HY.name());// 盐酸
 
+        // 单独计算904:月均单耗 = 本月耗用/CS-977月累计产量*0.3
+        generate904Report(date, "ck_", "0100074_hy");// 904
+
         // 重新更新:当日耗用=当日库存+当日入库-前一天库存
-        generateHyAgain(date, "ck_", "0100087_hy", SysConfigEnum.PRODUCE_YEWEI_903_HY.name());// 903
-        generateHyAgain(date, "ck_", "0100074_hy", SysConfigEnum.PRODUCE_YEWEI_904_HY.name());// 904
-        generateHyAgain(date, "ck_", "0100083_hy", SysConfigEnum.PRODUCE_YEWEI_905_HY.name());// 905
-        generateHyAgain(date, "ck_", "0100003_hy", SysConfigEnum.PRODUCE_YEWEI_907_HY.name());// 907
-        generateHyAgain(date, "ck_", "0100026_hy", SysConfigEnum.PRODUCE_YEWEI_F160C_HY.name());// F160C
-        generateHyAgain(date, "ck_", "0100010_hy", SysConfigEnum.PRODUCE_YEWEI_CM47B_HY.name());// CM47B
-        generateHyAgain(date, "ck_", "0100065_hy", SysConfigEnum.PRODUCE_YEWEI_QFS_HY.name());// 氢氟酸
-        generateHyAgain(date, "ck_", "0100120_hy", SysConfigEnum.PRODUCE_YEWEI_LXL_HY.name());// 硫酰氯
-        generateHyAgain(date, "ck_", "0100160_hy", SysConfigEnum.PRODUCE_YEWEI_YJ_HY.name());// 液碱
-        generateHyAgain(date, "ck_", "0100086_hy", SysConfigEnum.PRODUCE_YEWEI_YS_HY.name());// 盐酸
+        generateHyAgain(date, "ck_", "0100087_hy");// 903
+        generateHyAgain(date, "ck_", "0100074_hy");// 904
+        generateHyAgain(date, "ck_", "0100083_hy");// 905
+        generateHyAgain(date, "ck_", "0100003_hy");// 907
+        generateHyAgain(date, "ck_", "0100026_hy");// F160C
+        generateHyAgain(date, "ck_", "0100010_hy");// CM47B
+        generateHyAgain(date, "ck_", "0100065_hy");// 氢氟酸
+        generateHyAgain(date, "ck_", "0100120_hy");// 硫酰氯
+        generateHyAgain(date, "ck_", "0100160_hy");// 液碱
+        generateHyAgain(date, "ck_", "0100086_hy");// 盐酸
+    }
+
+    /**
+     * 计算904,单独计算904:月均单耗 = 本月耗用/CS-977月累计产量*0.3
+     *
+     * @param date
+     * @param prefix
+     * @param no
+     */
+    private void generate904Report(LocalDate date, String prefix, String no) {
+        // 找到977 月累积产量
+        Weekend<ProduceReport> weekend = new Weekend<>(ProduceReport.class);
+        WeekendCriteria<ProduceReport, Object> weekendCriteria = weekend.weekendCriteria();
+        weekendCriteria.andEqualTo(ProduceReport::getNo, "scl_0300027_month")
+                .andEqualTo(ProduceReport::getYear, date.getYear())
+                .andEqualTo(ProduceReport::getMonth, date.getMonthValue())
+                .andEqualTo(ProduceReport::getDay, date.getDayOfMonth())
+                .andEqualTo(ProduceReport::getDate, date);
+        ProduceReport report1 = mapper.selectOneByExample(weekend);
+        if (StringUtils.isBlank(report1.getValue())) {
+            report1.setValue("1");
+        }
+
+        // 找到904:本月耗用
+        Weekend<ProduceReport> weekend2 = new Weekend<>(ProduceReport.class);
+        WeekendCriteria<ProduceReport, Object> weekendCriteria2 = weekend2.weekendCriteria();
+        weekendCriteria2.andEqualTo(ProduceReport::getNo, "ck_0100074_hy_month")
+                .andEqualTo(ProduceReport::getYear, date.getYear())
+                .andEqualTo(ProduceReport::getMonth, date.getMonthValue())
+                .andEqualTo(ProduceReport::getDay, date.getDayOfMonth())
+                .andEqualTo(ProduceReport::getDate, date);
+        ProduceReport report2 = mapper.selectOneByExample(weekend2);
+
+        // 找到904:月均单耗
+        Weekend<ProduceReport> weekend3 = new Weekend<>(ProduceReport.class);
+        WeekendCriteria<ProduceReport, Object> weekendCriteria3 = weekend3.weekendCriteria();
+        weekendCriteria3.andEqualTo(ProduceReport::getNo, "hy_0100074_month")
+                .andEqualTo(ProduceReport::getYear, date.getYear())
+                .andEqualTo(ProduceReport::getMonth, date.getMonthValue())
+                .andEqualTo(ProduceReport::getDay, date.getDayOfMonth())
+                .andEqualTo(ProduceReport::getDate, date);
+        ProduceReport report3 = mapper.selectOneByExample(weekend3);
+        if (StringUtils.isBlank(report1.getValue())) {
+            report3.setValue(new BigDecimal(report2.getValue()).divide(new BigDecimal(report1.getValue()), 2, RoundingMode.HALF_UP).multiply(new BigDecimal(0.3)).toString());
+        } else {
+            report3.setValue("0");
+        }
+        this.modModelByPrimaryKey(report3);
     }
 
+
     /**
      * 重新计算耗用:当日耗用=当日库存+当日入库-前一天库存
+     *
      * @param date
      * @param prefix
      * @param no
-     * @param name
      */
-    private void generateHyAgain(LocalDate date, String prefix, String no, String name) {
+    private void generateHyAgain(LocalDate date, String prefix, String no) {
         ProduceData produceData = produceDataService.selectByNo(prefix + no);
 
         // 找到当日耗用
@@ -612,7 +663,7 @@ public class ProduceReportServiceImpl extends BaseServiceImpl<ProduceReportMappe
 
         // 找到当日库存
         Weekend<ProduceReport> weekend2 = new Weekend<>(ProduceReport.class);
-        WeekendCriteria<ProduceReport, Object> weekendCriteria2= weekend2.weekendCriteria();
+        WeekendCriteria<ProduceReport, Object> weekendCriteria2 = weekend2.weekendCriteria();
         weekendCriteria2.andEqualTo(ProduceReport::getNo, "hy_" + no.replace("_hy", "_stock"))
                 .andEqualTo(ProduceReport::getYear, date.getYear())
                 .andEqualTo(ProduceReport::getMonth, date.getMonthValue())
@@ -623,7 +674,7 @@ public class ProduceReportServiceImpl extends BaseServiceImpl<ProduceReportMappe
         // 找到前一天库存
         LocalDate preDate = date.plusDays(-1);
         Weekend<ProduceReport> weekend3 = new Weekend<>(ProduceReport.class);
-        WeekendCriteria<ProduceReport, Object> weekendCriteria3= weekend3.weekendCriteria();
+        WeekendCriteria<ProduceReport, Object> weekendCriteria3 = weekend3.weekendCriteria();
         weekendCriteria3.andEqualTo(ProduceReport::getNo, "hy_" + no.replace("_hy", "_stock"))
                 .andEqualTo(ProduceReport::getYear, preDate.getYear())
                 .andEqualTo(ProduceReport::getMonth, preDate.getMonthValue())
@@ -633,7 +684,7 @@ public class ProduceReportServiceImpl extends BaseServiceImpl<ProduceReportMappe
 
         // 找到当日入库
         Weekend<ProduceReport> weekend4 = new Weekend<>(ProduceReport.class);
-        WeekendCriteria<ProduceReport, Object> weekendCriteria4= weekend4.weekendCriteria();
+        WeekendCriteria<ProduceReport, Object> weekendCriteria4 = weekend4.weekendCriteria();
         weekendCriteria4.andEqualTo(ProduceReport::getNo, "ck_" + no.replace("_hy", ""))
                 .andEqualTo(ProduceReport::getYear, date.getYear())
                 .andEqualTo(ProduceReport::getMonth, date.getMonthValue())
@@ -761,7 +812,7 @@ public class ProduceReportServiceImpl extends BaseServiceImpl<ProduceReportMappe
             // 默认977
             String sclNo = "scl_0300027";
             BigDecimal rate = new BigDecimal(0.3);
-            if(no.equals("0100010_hy") || no.equals("0100065_hy")|| no.equals("0100120_hy")|| no.equals("0100160_hy")|| no.equals("0100086_hy")) {
+            if (no.equals("0100010_hy") || no.equals("0100065_hy") || no.equals("0100120_hy") || no.equals("0100160_hy") || no.equals("0100086_hy")) {
                 sclNo = "scl_0600032";// 902
                 rate = new BigDecimal(1);
             }
@@ -774,10 +825,10 @@ public class ProduceReportServiceImpl extends BaseServiceImpl<ProduceReportMappe
                     .andEqualTo(ProduceReport::getDate, date);
             ProduceReport cs077 = mapper.selectOneByExample(weekend977);
 
-            if(StringUtils.isBlank(cs077.getValue()) || new BigDecimal(cs077.getValue()).compareTo(new BigDecimal(0))==0  || new BigDecimal(cs077.getValue()).compareTo(new BigDecimal(0))==0){
+            if (StringUtils.isBlank(cs077.getValue()) || new BigDecimal(cs077.getValue()).compareTo(new BigDecimal(0)) == 0 || new BigDecimal(cs077.getValue()).compareTo(new BigDecimal(0)) == 0) {
                 danhao.setValue("0");
-            }else{
-                danhao.setValue(yeweiStock.divide(new BigDecimal(cs077.getValue()), RoundingMode.HALF_UP).multiply(rate).setScale(2,RoundingMode.HALF_UP).toString());
+            } else {
+                danhao.setValue(yeweiStock.divide(new BigDecimal(cs077.getValue()), RoundingMode.HALF_UP).multiply(rate).setScale(2, RoundingMode.HALF_UP).toString());
             }
             this.modModelByPrimaryKey(danhao);
 
@@ -791,7 +842,7 @@ public class ProduceReportServiceImpl extends BaseServiceImpl<ProduceReportMappe
                     .andEqualTo(ProduceReport::getDate, date);
             ProduceReport danhaoMonth = mapper.selectOneByExample(weekendHyoMonth);
 
-            log.info("no: " +no);
+            log.info("no: " + no);
             Weekend<ProduceReport> weekendDanhaoMonth = new Weekend<>(ProduceReport.class);
             WeekendCriteria<ProduceReport, Object> weekendCriteriaDanhaoMonth = weekendDanhaoMonth.weekendCriteria();
             weekendCriteriaDanhaoMonth.andEqualTo(ProduceReport::getNo, "ck_" + no.replace("_hy", "_hy_month"))
@@ -811,10 +862,10 @@ public class ProduceReportServiceImpl extends BaseServiceImpl<ProduceReportMappe
             ProduceReport cs077Month = mapper.selectOneByExample(weekend977Month);
             log.info("month: " + month.getValue());
             log.info("cs077Month: " + cs077Month.getValue());
-            if(StringUtils.isBlank(cs077Month.getValue()) || new BigDecimal(cs077Month.getValue()).compareTo(new BigDecimal(0))==0){
+            if (StringUtils.isBlank(cs077Month.getValue()) || new BigDecimal(cs077Month.getValue()).compareTo(new BigDecimal(0)) == 0) {
                 danhaoMonth.setValue("0");
-            }else{
-                danhaoMonth.setValue(new BigDecimal(month.getValue()).divide(new BigDecimal(cs077Month.getValue()), RoundingMode.HALF_UP).multiply(rate).setScale(2,RoundingMode.HALF_UP).toString());
+            } else {
+                danhaoMonth.setValue(new BigDecimal(month.getValue()).divide(new BigDecimal(cs077Month.getValue()), RoundingMode.HALF_UP).multiply(rate).setScale(2, RoundingMode.HALF_UP).toString());
             }
             this.modModelByPrimaryKey(danhaoMonth);
         } else {