瀏覽代碼

库存量改成液位的库存量

hfxc226 1 天之前
父節點
當前提交
28e5450e6f

+ 74 - 0
platform-service/src/main/java/com/platform/service/produce/impl/ProduceReportServiceImpl.java

@@ -695,6 +695,80 @@ public class ProduceReportServiceImpl extends BaseServiceImpl<ProduceReportMappe
         // 更新
         report.setValue(new BigDecimal(reportStockPre.getValue()).add(new BigDecimal(inStock.getValue())).subtract(new BigDecimal(reportStock.getValue())).toString());
         this.modModelByPrimaryKey(report);
+
+
+        // 重新计算当日单耗和月均单耗
+        // 每单当日单耗和977生产量,如果生产量为0,则当日单耗为0
+        Weekend<ProduceReport> weekendDanhao = new Weekend<>(ProduceReport.class);
+        WeekendCriteria<ProduceReport, Object> weekendCriteriaDanhao = weekendDanhao.weekendCriteria();
+        weekendCriteriaDanhao.andEqualTo(ProduceReport::getNo, "hy_" + no.replace("_hy", ""))
+                .andEqualTo(ProduceReport::getYear, date.getYear())
+                .andEqualTo(ProduceReport::getMonth, date.getMonthValue())
+                .andEqualTo(ProduceReport::getDay, date.getDayOfMonth())
+                .andEqualTo(ProduceReport::getDate, date);
+        ProduceReport danhao = mapper.selectOneByExample(weekendDanhao);
+
+        // 默认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")) {
+            sclNo = "scl_0600032";// 902
+            rate = new BigDecimal(1);
+        }
+        Weekend<ProduceReport> weekend977 = new Weekend<>(ProduceReport.class);
+        WeekendCriteria<ProduceReport, Object> weekendCriteria977 = weekend977.weekendCriteria();
+        weekendCriteria977.andEqualTo(ProduceReport::getNo, sclNo)
+                .andEqualTo(ProduceReport::getYear, date.getYear())
+                .andEqualTo(ProduceReport::getMonth, date.getMonthValue())
+                .andEqualTo(ProduceReport::getDay, date.getDayOfMonth())
+                .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) {
+            danhao.setValue("0");
+        } else {
+            danhao.setValue(new BigDecimal(report.getValue()).divide(new BigDecimal(cs077.getValue()), RoundingMode.HALF_UP).multiply(rate).setScale(2, RoundingMode.HALF_UP).toString());
+        }
+        this.modModelByPrimaryKey(danhao);
+
+        // 月均单耗=本月耗用/月累计产量,月均单耗和月产量977生产量,如果生产量为0,则单耗为0
+        Weekend<ProduceReport> weekendHyoMonth = new Weekend<>(ProduceReport.class);
+        WeekendCriteria<ProduceReport, Object> weekendCriteriaHyMonth = weekendHyoMonth.weekendCriteria();
+        weekendCriteriaHyMonth.andEqualTo(ProduceReport::getNo, "hy_" + no.replace("_hy", "_month"))
+                .andEqualTo(ProduceReport::getYear, date.getYear())
+                .andEqualTo(ProduceReport::getMonth, date.getMonthValue())
+                .andEqualTo(ProduceReport::getDay, date.getDayOfMonth())
+                .andEqualTo(ProduceReport::getDate, date);
+        ProduceReport danhaoMonth = mapper.selectOneByExample(weekendHyoMonth);
+
+        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"))
+                .andEqualTo(ProduceReport::getYear, date.getYear())
+                .andEqualTo(ProduceReport::getMonth, date.getMonthValue())
+                .andEqualTo(ProduceReport::getDay, date.getDayOfMonth())
+                .andEqualTo(ProduceReport::getDate, date);
+        ProduceReport month = mapper.selectOneByExample(weekendDanhaoMonth);
+
+        Weekend<ProduceReport> weekend977Month = new Weekend<>(ProduceReport.class);
+        WeekendCriteria<ProduceReport, Object> weekendCriteria977Month = weekend977Month.weekendCriteria();
+        weekendCriteria977Month.andEqualTo(ProduceReport::getNo, sclNo + "_month")
+                .andEqualTo(ProduceReport::getYear, date.getYear())
+                .andEqualTo(ProduceReport::getMonth, date.getMonthValue())
+                .andEqualTo(ProduceReport::getDay, date.getDayOfMonth())
+                .andEqualTo(ProduceReport::getDate, date);
+        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) {
+            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());
+        }
+        this.modModelByPrimaryKey(danhaoMonth);
+
+
     }
 
     /**