|
@@ -0,0 +1,1416 @@
|
|
|
+package com.platform.service.produce.impl;
|
|
|
+
|
|
|
+import com.github.pagehelper.PageHelper;
|
|
|
+import com.platform.common.bean.AbstractPageResultBean;
|
|
|
+import com.platform.common.cache.ConfigCache;
|
|
|
+import com.platform.common.exception.BusinessException;
|
|
|
+import com.platform.common.util.*;
|
|
|
+import com.platform.dao.bean.MyPage;
|
|
|
+import com.platform.dao.dto.produce.ProduceRecordDTO;
|
|
|
+import com.platform.dao.dto.produce.ProduceReportDTO;
|
|
|
+import com.platform.dao.entity.produce.ProduceData;
|
|
|
+import com.platform.dao.entity.produce.ProduceRecord;
|
|
|
+import com.platform.dao.entity.produce.ProduceReport;
|
|
|
+import com.platform.dao.enums.ProduceRecordTypeEnum;
|
|
|
+import com.platform.dao.enums.YesNoEnum;
|
|
|
+import com.platform.dao.mapper.produce.ProduceReportMapper;
|
|
|
+import com.platform.dao.vo.query.produce.ProduceRecordVO;
|
|
|
+import com.platform.dao.vo.query.produce.ProduceReportTianVO;
|
|
|
+import com.platform.dao.vo.query.produce.ProduceReportVO;
|
|
|
+import com.platform.service.base.impl.BaseServiceImpl;
|
|
|
+import com.platform.service.produce.ProduceDataService;
|
|
|
+import com.platform.service.produce.ProduceRecordService;
|
|
|
+import com.platform.service.produce.ProduceReportService;
|
|
|
+import lombok.AllArgsConstructor;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.scheduling.annotation.Async;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
+import tk.mybatis.mapper.weekend.Weekend;
|
|
|
+import tk.mybatis.mapper.weekend.WeekendCriteria;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
+import java.time.LocalDate;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @Description 生产每日报表 service 实现类
|
|
|
+ * @Author xc
|
|
|
+ * @Date 2024-12-16 13:29:22
|
|
|
+ * @Version Copyright (c) 2020,合肥乾元坤合科技有限公司 All rights reserved.
|
|
|
+ */
|
|
|
+@AllArgsConstructor
|
|
|
+@Service("produceReportService")
|
|
|
+@Slf4j
|
|
|
+public class ProduceReportServiceImpl extends BaseServiceImpl<ProduceReportMapper, ProduceReport, ProduceReportDTO> implements ProduceReportService {
|
|
|
+
|
|
|
+ private ProduceDataService produceDataService;
|
|
|
+ private ProduceRecordService produceRecordService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public int batchDelete(List<String> ids) {
|
|
|
+ Weekend<ProduceReport> weekend = new Weekend<>(ProduceReport.class);
|
|
|
+ WeekendCriteria<ProduceReport, Object> weekendCriteria = weekend.weekendCriteria();
|
|
|
+ weekendCriteria.andIn(ProduceReport::getId, ids);
|
|
|
+ mapper.deleteByExample(weekend);
|
|
|
+
|
|
|
+ // 如果有月计划的不能删除
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public AbstractPageResultBean<ProduceReportVO> selectPageList(ProduceReportDTO record, int pageNum, int pageSize) {
|
|
|
+ PageHelper.startPage(pageNum, pageSize);
|
|
|
+ return new MyPage(mapper.selectList(record));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ProduceReportVO sumMonthYear(ProduceReportDTO record) {
|
|
|
+ return mapper.sumMonthYear(record);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public AbstractPageResultBean<ProduceReport> selectPageInfo(ProduceReportDTO record, int pageNum, int pageSize) {
|
|
|
+ PageHelper.startPage(pageNum, pageSize);
|
|
|
+ return new MyPage(mapper.selectList(record));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ProduceReport saveModelByDTO(ProduceReportDTO model) {
|
|
|
+
|
|
|
+ // 如果是月计划类的,只需要一个数据就行了
|
|
|
+ if (model.getNo().endsWith("_yjh")) {
|
|
|
+ LocalDate date = model.getDate();
|
|
|
+ model.setYear(date.getYear());
|
|
|
+ model.setMonth(date.getMonthValue());
|
|
|
+ ProduceData produceData = produceDataService.selectByNo(model.getNo());
|
|
|
+ Weekend<ProduceReport> weekend = new Weekend<>(ProduceReport.class);
|
|
|
+ WeekendCriteria<ProduceReport, Object> weekendCriteria = weekend.weekendCriteria();
|
|
|
+ weekendCriteria.andEqualTo(ProduceReport::getDataId, produceData.getId())
|
|
|
+ .andEqualTo(ProduceReport::getYear, date.getYear())
|
|
|
+ .andEqualTo(ProduceReport::getMonth, date.getMonthValue());
|
|
|
+ mapper.deleteByExample(weekend);
|
|
|
+
|
|
|
+ // 新增这一个月的数据
|
|
|
+ List<ProduceReport> reportList = new ArrayList<>();
|
|
|
+ ProduceData wcl = produceDataService.selectByNo(model.getNo() + "_wcl");
|
|
|
+ for (int i = 1; i <= date.lengthOfMonth(); i++) {
|
|
|
+ ProduceReport report = BeanConverterUtil.copyObjectProperties(model, ProduceReport.class);
|
|
|
+ report.setDay(i);
|
|
|
+ report.setDataId(produceData.getId());
|
|
|
+ LocalDate localDate = LocalDate.of(date.getYear(), date.getMonthValue(), i);
|
|
|
+ report.setDate(localDate);
|
|
|
+ reportList.add(report);
|
|
|
+
|
|
|
+ // 月累计产量
|
|
|
+ Weekend<ProduceReport> weekend2 = new Weekend<>(ProduceReport.class);
|
|
|
+ WeekendCriteria<ProduceReport, Object> weekendCriteria2 = weekend2.weekendCriteria();
|
|
|
+ weekendCriteria2.andEqualTo(ProduceReport::getDataId, produceData.getId())
|
|
|
+ .andEqualTo(ProduceReport::getYear, date.getYear())
|
|
|
+ .andEqualTo(ProduceReport::getMonth, date.getMonthValue()).andEqualTo(ProduceReport::getDay, i);
|
|
|
+ ProduceReport monthReport = mapper.selectOneByExample(weekendCriteria2);
|
|
|
+ if (monthReport == null) {
|
|
|
+ monthReport = BeanConverterUtil.copyObjectProperties(model, ProduceReport.class);
|
|
|
+ monthReport.setDay(i);
|
|
|
+ monthReport.setDataId(wcl.getId());
|
|
|
+ monthReport.setDate(localDate);
|
|
|
+ monthReport.setValue("0");
|
|
|
+ reportList.add(monthReport);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 重新计算这一个月的数据和完成率
|
|
|
+ if (!CollectionUtils.isEmpty(reportList)) {
|
|
|
+ mapper.insertListforComplex(reportList);
|
|
|
+ }
|
|
|
+
|
|
|
+ return reportList.stream().filter(dept -> dept.getDay().equals(date.getDayOfMonth()) && dept.getDataId().equals(produceData.getId()))
|
|
|
+ .collect(Collectors.toList()).get(0);
|
|
|
+ } else {
|
|
|
+ LocalDate date = model.getDate();
|
|
|
+ model.setYear(date.getYear());
|
|
|
+ model.setMonth(date.getMonthValue());
|
|
|
+ model.setDay(date.getDayOfMonth());
|
|
|
+ return super.saveModelByDTO(model);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void modModelByDTO(ProduceReportDTO model) {
|
|
|
+ // 如果是月计划类的,只需要一个数据就行了
|
|
|
+ if (model.getNo().endsWith("_yjh")) {
|
|
|
+ LocalDate date = model.getDate();
|
|
|
+ model.setYear(date.getYear());
|
|
|
+ model.setMonth(date.getMonthValue());
|
|
|
+ model.setDay(date.getDayOfMonth());
|
|
|
+ ProduceData produceData = produceDataService.getModelById(model.getDataId());
|
|
|
+ Weekend<ProduceReport> weekend = new Weekend<>(ProduceReport.class);
|
|
|
+ WeekendCriteria<ProduceReport, Object> weekendCriteria = weekend.weekendCriteria();
|
|
|
+ weekendCriteria.andEqualTo(ProduceReport::getDataId, produceData.getId())
|
|
|
+ .andEqualTo(ProduceReport::getYear, date.getYear())
|
|
|
+ .andEqualTo(ProduceReport::getMonth, date.getMonthValue());
|
|
|
+ mapper.deleteByExample(weekend);
|
|
|
+
|
|
|
+ // 新增这一个月的数据
|
|
|
+ List<ProduceReport> reportList = new ArrayList<>();
|
|
|
+ ProduceData wcl = produceDataService.selectByNo(model.getNo() + "_wcl");
|
|
|
+ for (int i = 1; i <= date.lengthOfMonth(); i++) {
|
|
|
+ ProduceReport report = BeanConverterUtil.copyObjectProperties(produceData, ProduceReport.class);
|
|
|
+ report.setYear(date.getYear());
|
|
|
+ report.setMonth(date.getMonthValue());
|
|
|
+ report.setDay(i);
|
|
|
+ report.setValue(model.getValue());
|
|
|
+ report.setDataId(produceData.getId());
|
|
|
+ LocalDate localDate = LocalDate.of(date.getYear(), date.getMonthValue(), i);
|
|
|
+ report.setDate(localDate);
|
|
|
+ reportList.add(report);
|
|
|
+
|
|
|
+ // 月累计产量
|
|
|
+ Weekend<ProduceReport> weekend2 = new Weekend<>(ProduceReport.class);
|
|
|
+ WeekendCriteria<ProduceReport, Object> weekendCriteria2 = weekend2.weekendCriteria();
|
|
|
+ weekendCriteria2.andEqualTo(ProduceReport::getDataId, produceData.getId())
|
|
|
+ .andEqualTo(ProduceReport::getYear, date.getYear())
|
|
|
+ .andEqualTo(ProduceReport::getMonth, date.getMonthValue()).andEqualTo(ProduceReport::getDay, i);
|
|
|
+ ProduceReport monthReport = mapper.selectOneByExample(weekend2);
|
|
|
+ if (monthReport == null) {
|
|
|
+ monthReport = BeanConverterUtil.copyObjectProperties(wcl, ProduceReport.class);
|
|
|
+ monthReport.setYear(date.getYear());
|
|
|
+ monthReport.setMonth(date.getMonthValue());
|
|
|
+ monthReport.setDay(i);
|
|
|
+ monthReport.setDataId(wcl.getId());
|
|
|
+ monthReport.setDate(localDate);
|
|
|
+ monthReport.setValue("0");
|
|
|
+ reportList.add(monthReport);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 重新计算这一个月的数据和完成率
|
|
|
+ if (!CollectionUtils.isEmpty(reportList)) {
|
|
|
+ mapper.insertListforComplex(reportList);
|
|
|
+ }
|
|
|
+ } else if (model.getNo().equals("dl_天然气_hy") || model.getNo().equals("dl_蒸汽_hy") || model.getNo().equals("dl_污水") || model.getNo().equals("dl_河水")) {
|
|
|
+ // 当日耗用,自动计算:本月耗用,本年耗用
|
|
|
+ // 本年耗用:更新
|
|
|
+ ProduceData yearData = produceDataService.selectByNo(model.getNo() + "_year");
|
|
|
+ ProduceReportDTO month = new ProduceReportDTO();
|
|
|
+ month.setDataId(model.getDataId());
|
|
|
+ month.setYear(model.getYear());
|
|
|
+ ProduceReportVO yearVO = this.sumMonthYear(month);
|
|
|
+
|
|
|
+ // 查找年
|
|
|
+ ProduceReport yearReport = new ProduceReport();
|
|
|
+ yearReport.setNo(model.getNo() + "_year");
|
|
|
+ yearReport.setDate(model.getDate());
|
|
|
+ yearReport.setYear(model.getYear());
|
|
|
+ yearReport = super.getModelListByModel(yearReport).get(0);
|
|
|
+ yearReport.setValue(yearVO.getTotalValue());
|
|
|
+ yearReport.setUpdateTime(LocalDateTime.now());
|
|
|
+ yearReport.setUpdateUserId(SecurityUtils.getUserInfo().getUserId());
|
|
|
+ mapper.updateByPrimaryKey(yearReport);
|
|
|
+
|
|
|
+ // 本月耗用:更新
|
|
|
+ ProduceData monthData = produceDataService.selectByNo(model.getNo() + "_month");
|
|
|
+ month.setMonth(model.getMonth());
|
|
|
+ ProduceReportVO monthVO = this.sumMonthYear(month);
|
|
|
+ // 查找年
|
|
|
+ ProduceReport monthReport = new ProduceReport();
|
|
|
+ monthReport.setNo(model.getNo() + "_month");
|
|
|
+ monthReport.setDate(model.getDate());
|
|
|
+ monthReport.setYear(model.getYear());
|
|
|
+ monthReport.setMonth(model.getMonth());
|
|
|
+ monthReport = super.getModelListByModel(monthReport).get(0);
|
|
|
+ monthReport.setValue(monthVO.getTotalValue());
|
|
|
+ monthReport.setUpdateTime(LocalDateTime.now());
|
|
|
+ monthReport.setUpdateUserId(SecurityUtils.getUserInfo().getUserId());
|
|
|
+ mapper.updateByPrimaryKey(monthReport);
|
|
|
+
|
|
|
+ LocalDate date = model.getDate();
|
|
|
+ model.setYear(date.getYear());
|
|
|
+ model.setMonth(date.getMonthValue());
|
|
|
+ model.setDay(date.getDayOfMonth());
|
|
|
+ super.modModelByDTO(model);
|
|
|
+ } else if (model.getNo().equals("dl_天然气") || model.getNo().equals("dl_蒸汽")) {
|
|
|
+ throw new BusinessException("无需填写");
|
|
|
+ } else {
|
|
|
+ LocalDate date = model.getDate();
|
|
|
+ model.setYear(date.getYear());
|
|
|
+ model.setMonth(date.getMonthValue());
|
|
|
+ model.setDay(date.getDayOfMonth());
|
|
|
+ super.modModelByDTO(model);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 异步的
|
|
|
+ * <p>
|
|
|
+ * 生成某一天的生产量
|
|
|
+ * 生产报表每日统计:每天凌晨1点统计
|
|
|
+ *
|
|
|
+ * @param date 日期
|
|
|
+ * <p>
|
|
|
+ * 1: 生产量:
|
|
|
+ * CS-977 0300027
|
|
|
+ * 902 0600032
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Async
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void generate(LocalDate date) {
|
|
|
+ LocalDate now = LocalDate.now();
|
|
|
+ if (now.equals(date)) {
|
|
|
+ throw new BusinessException("无法生成当日数据,只能生成前一天以前的数据");
|
|
|
+ }
|
|
|
+ // 如果当天已经有数据了,则不生成
|
|
|
+ Weekend<ProduceReport> weekend = new Weekend<>(ProduceReport.class);
|
|
|
+ WeekendCriteria<ProduceReport, Object> weekendCriteria = weekend.weekendCriteria();
|
|
|
+ weekendCriteria.andEqualTo(ProduceReport::getYear, date.getYear())
|
|
|
+ .andEqualTo(ProduceReport::getMonth, date.getMonthValue())
|
|
|
+ .andEqualTo(ProduceReport::getDay, date.getDayOfMonth())
|
|
|
+ .andNotLike(ProduceReport::getNo, "%_yjh%").andNotLike(ProduceReport::getNo, "%_yjh%");
|
|
|
+ List<ProduceReport> exsit = mapper.selectByExample(weekend);// 只有月计划可以提前生成,其他不行
|
|
|
+ if (!CollectionUtils.isEmpty(exsit)) {
|
|
|
+ throw new BusinessException("该日期的数据已经存在");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 生产量数据
|
|
|
+ List<ProduceReport> sclList = new ArrayList<>();
|
|
|
+ sclList.addAll(generateSCL("scl_", date, "0300027", ProduceRecordTypeEnum.CCP_RK.getValue()));// 生产量:977,产成品
|
|
|
+ generateSCL("scl_", date, "0600032", ProduceRecordTypeEnum.BCP_RK.getValue());// 生产量:902,半成品
|
|
|
+
|
|
|
+ // 销售出货量
|
|
|
+ generateSCL("xiaoshou_", date, "0300027", ProduceRecordTypeEnum.XS_CK.getValue());// 977:0300027
|
|
|
+ generateSCL("xiaoshou_", date, "0300083", ProduceRecordTypeEnum.XS_CK.getValue());// 锂渣:0300083
|
|
|
+ generateSCL("xiaoshou_", date, "0300073", ProduceRecordTypeEnum.XS_CK.getValue());// 氟化钠:0300073
|
|
|
+ generateSCL("xiaoshou_", date, "lhn", ProduceRecordTypeEnum.XS_CK.getValue());//氯化钠:手填,先生成0
|
|
|
+
|
|
|
+ // 库存数据
|
|
|
+ generateStock(date, "0300027");//977:0300027,
|
|
|
+ generateStock(date, "0300073");//氟化钠:0300073
|
|
|
+ generateStock(date, "0300083");//锂渣:0300083
|
|
|
+ generateStock(date, "lhn");//氯化钠:手填,先生成0
|
|
|
+
|
|
|
+ // 物料入库数据
|
|
|
+ generateRk(date, "0600032");//GS-902
|
|
|
+ generateRk(date, "0100087");//GS-903
|
|
|
+ generateRk(date, "0100074");// GS-904
|
|
|
+ generateRk(date, "0100083");// GS-905
|
|
|
+ generateRk(date, "0100003");//GS-907
|
|
|
+ generateRk(date, "0100026");//F-160C
|
|
|
+ generateRk(date, "0100010");// CM47B
|
|
|
+ generateRk(date, "0100065");//氟化氢
|
|
|
+ generateRk(date, "0100120");// 硫酰氯(合成)
|
|
|
+ generateRk(date, "0100160");//液碱32%
|
|
|
+ generateRk(date, "0100086");//盐酸
|
|
|
+ generateRk(date, "0100075");//氢氧化钠(工业级片碱)
|
|
|
+
|
|
|
+ // 物料使用数据:物料出库数据
|
|
|
+ generateCk(date, "0600032", sclList);//GS-902
|
|
|
+ generateCk(date, "0100087", sclList);//GS-903
|
|
|
+ generateCk(date, "0100074", sclList);// GS-904
|
|
|
+ generateCk(date, "0100083", sclList);// GS-905
|
|
|
+ generateCk(date, "0100003", sclList);//GS-907
|
|
|
+ generateCk(date, "0100026", sclList);//F-160C
|
|
|
+ generateCk(date, "0100010", sclList);// CM47B
|
|
|
+ generateCk(date, "0100065", sclList);//氟化氢
|
|
|
+ generateCk(date, "0100120", sclList);// 硫酰氯(合成)
|
|
|
+ generateCk(date, "0100160", sclList);//液碱32%
|
|
|
+ generateCk(date, "0100086", sclList);//盐酸
|
|
|
+ generateCk(date, "0100075", sclList);//氢氧化钠(工业级片碱),这个是手工录入,不计算
|
|
|
+
|
|
|
+ // 动力用量生成dl_,手填,都先生成0
|
|
|
+ generateDlAndHy(date, "dl_");
|
|
|
+
|
|
|
+ // 生成电量数据
|
|
|
+ generateDianReport(date, sclList);
|
|
|
+
|
|
|
+
|
|
|
+ // 手填的,如果为空,则新建为0,月计划不管了,上面已经生成了
|
|
|
+ // 在产品情况生成 zcp,需要从液位获取,系统物料持有量生和在产品生成方式一样
|
|
|
+ // generateSt(date, "zcp_");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 手填的数据,先生成0
|
|
|
+ * 1:跟进液位进行生成
|
|
|
+ *
|
|
|
+ * @param date
|
|
|
+ * @param prefix
|
|
|
+ */
|
|
|
+ private void generateSt(LocalDate date, String prefix) {
|
|
|
+ List<ProduceData> produceDataList = produceDataService.selectByPrefix(prefix);
|
|
|
+ for (ProduceData produceData : produceDataList) {
|
|
|
+ ProduceReport report = BeanConverterUtil.copyObjectProperties(produceData, ProduceReport.class);
|
|
|
+ report.setValue("0");
|
|
|
+ report.setDate(date);
|
|
|
+ report.setDataId(produceData.getId());
|
|
|
+ report.setYear(date.getYear());
|
|
|
+ report.setMonth(date.getMonthValue());
|
|
|
+ report.setDay(date.getDayOfMonth());
|
|
|
+ report.setCreatedTime(LocalDateTime.now());
|
|
|
+ this.saveModel(report);
|
|
|
+
|
|
|
+ // 当日数据
|
|
|
+ /*ProduceData produceData = produceDataService.selectByNo(prefix + recordDTO.getNo());
|
|
|
+ ProduceReport report = BeanConverterUtil.copyObjectProperties(produceData, ProduceReport.class);
|
|
|
+ report.setDate(recordDTO.getDate());
|
|
|
+ report.setDataId(produceData.getId());
|
|
|
+ report.setValue(recordDTO.getNum().toString());
|
|
|
+ report.setYear(date.getYear());
|
|
|
+ report.setMonth(date.getMonthValue());
|
|
|
+ report.setDay(date.getDayOfMonth());
|
|
|
+ report.setCreatedTime(LocalDateTime.now());
|
|
|
+ this.saveModel(report);*/
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 电:
|
|
|
+ * <p>
|
|
|
+ * 当日入库:0,dl_电
|
|
|
+ * 当日耗用:dl_电_hy,本月耗用:dl_电_hy_month,本年耗用:dl_电_hy_year
|
|
|
+ * 当日单耗:hy_电、月均单耗:hy_电_month、
|
|
|
+ * 库存0:hy_电_stock、可用天数0:hy_电_avg
|
|
|
+ *
|
|
|
+ * @param date
|
|
|
+ */
|
|
|
+ public void generateDianReport(LocalDate date, List<ProduceReport> sclList) {
|
|
|
+
|
|
|
+ // 电力记录数据
|
|
|
+ // 统计当天数据
|
|
|
+ ProduceRecord find = new ProduceRecord();
|
|
|
+ find.setProductNo("电");
|
|
|
+ find.setDate(date);
|
|
|
+ find.setType(ProduceRecordTypeEnum.DIAN.getValue());
|
|
|
+ ProduceRecord produceRecord = produceRecordService.getModelByModel(find);
|
|
|
+
|
|
|
+
|
|
|
+ String prefix = "dl_";
|
|
|
+ String no = "电";
|
|
|
+
|
|
|
+ // 当日数据
|
|
|
+ ProduceData produceData = produceDataService.selectByNo(prefix + no);
|
|
|
+ ProduceReport report = BeanConverterUtil.copyObjectProperties(produceData, ProduceReport.class);
|
|
|
+ report.setDate(date);
|
|
|
+ report.setDataId(produceData.getId());
|
|
|
+ report.setValue(produceRecord.getNum().toString());
|
|
|
+ report.setYear(date.getYear());
|
|
|
+ report.setMonth(date.getMonthValue());
|
|
|
+ report.setDay(date.getDayOfMonth());
|
|
|
+ report.setCreatedTime(LocalDateTime.now());
|
|
|
+ this.saveModel(report);
|
|
|
+
|
|
|
+ // 当日耗用
|
|
|
+ produceData = produceDataService.selectByNo(prefix + no + "_hy");
|
|
|
+ report = BeanConverterUtil.copyObjectProperties(produceData, ProduceReport.class);
|
|
|
+ report.setDate(date);
|
|
|
+ report.setDataId(produceData.getId());
|
|
|
+ report.setValue(produceRecord.getNum().toString());
|
|
|
+ report.setYear(date.getYear());
|
|
|
+ report.setMonth(date.getMonthValue());
|
|
|
+ report.setDay(date.getDayOfMonth());
|
|
|
+ report.setCreatedTime(LocalDateTime.now());
|
|
|
+ this.saveModel(report);
|
|
|
+
|
|
|
+ // 本年耗用
|
|
|
+ ProduceReportDTO month = new ProduceReportDTO();
|
|
|
+ month.setDataId(produceData.getId());
|
|
|
+ month.setYear(date.getYear());
|
|
|
+ ProduceReportVO yearVO = this.sumMonthYear(month);
|
|
|
+
|
|
|
+ produceData = produceDataService.selectByNo(prefix + no + "_hy_year");
|
|
|
+ report = BeanConverterUtil.copyObjectProperties(produceData, ProduceReport.class);
|
|
|
+ report.setDate(date);
|
|
|
+ report.setDataId(produceData.getId());
|
|
|
+ report.setValue(yearVO.getTotalValue());
|
|
|
+ report.setYear(date.getYear());
|
|
|
+ report.setMonth(date.getMonthValue());
|
|
|
+ report.setDay(date.getDayOfMonth());
|
|
|
+ report.setCreatedTime(LocalDateTime.now());
|
|
|
+ this.saveModel(report);
|
|
|
+
|
|
|
+ // 本月耗用
|
|
|
+ report.setMonth(date.getMonthValue());
|
|
|
+ ProduceReportVO monthVO = this.sumMonthYear(month);
|
|
|
+ produceData = produceDataService.selectByNo(prefix + no + "_hy_month");
|
|
|
+ report = BeanConverterUtil.copyObjectProperties(produceData, ProduceReport.class);
|
|
|
+ report.setDate(date);
|
|
|
+ report.setDataId(produceData.getId());
|
|
|
+ report.setValue(monthVO.getTotalValue());
|
|
|
+ report.setYear(date.getYear());
|
|
|
+ report.setMonth(date.getMonthValue());
|
|
|
+ report.setDay(date.getDayOfMonth());
|
|
|
+ report.setCreatedTime(LocalDateTime.now());
|
|
|
+ this.saveModel(report);
|
|
|
+
|
|
|
+ // 当日单耗=单日耗用/977当日产量
|
|
|
+ // 当日单耗=
|
|
|
+ ProduceReport dayScl = sclList.stream().filter(dept -> dept.getNo().endsWith("_0300027")).collect(Collectors.toList()).get(0);
|
|
|
+ String prefixHy = "hy_";
|
|
|
+ produceData = produceDataService.selectByNo(prefixHy + no);
|
|
|
+ report = BeanConverterUtil.copyObjectProperties(produceData, ProduceReport.class);
|
|
|
+ report.setDate(date);
|
|
|
+ report.setDataId(produceData.getId());
|
|
|
+
|
|
|
+ if (dayScl == null || dayScl.getValue().compareTo("1") == 0) {
|
|
|
+ dayScl.setValue("1");
|
|
|
+ } else {
|
|
|
+ if (new BigDecimal(dayScl.getValue()).compareTo(new BigDecimal("0")) == 0) {
|
|
|
+ report.setValue(produceRecord.getNum().toString());
|
|
|
+ } else {
|
|
|
+ BigDecimal hyDayValue = new BigDecimal(produceRecord.getNum().toString()).divide(new BigDecimal(dayScl.getValue()), BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(0.3 * 1000)).setScale(2);
|
|
|
+ report.setValue(hyDayValue.toString());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ report.setYear(date.getYear());
|
|
|
+ report.setMonth(date.getMonthValue());
|
|
|
+ report.setDay(date.getDayOfMonth());
|
|
|
+ report.setCreatedTime(LocalDateTime.now());
|
|
|
+ this.saveModel(report);
|
|
|
+
|
|
|
+ // 当月单耗
|
|
|
+ ProduceReport monthScl = sclList.stream().filter(dept -> dept.getNo().endsWith("_0300027_month")).collect(Collectors.toList()).get(0);
|
|
|
+ produceData = produceDataService.selectByNo(prefixHy + no + "_month");
|
|
|
+ report = BeanConverterUtil.copyObjectProperties(produceData, ProduceReport.class);
|
|
|
+ report.setDate(date);
|
|
|
+ report.setDataId(produceData.getId());
|
|
|
+
|
|
|
+ if (monthScl == null) {
|
|
|
+ monthScl.setValue("1");
|
|
|
+ } else {
|
|
|
+ if (new BigDecimal(monthScl.getValue()).compareTo(new BigDecimal("0")) == 0) {
|
|
|
+ report.setValue(monthVO.getTotalValue());
|
|
|
+ } else {
|
|
|
+ BigDecimal hyDayValue = new BigDecimal(monthVO.getTotalValue()).divide(new BigDecimal(monthScl.getValue()), BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(0.3 * 1000)).setScale(2);
|
|
|
+ report.setValue(hyDayValue.toString());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ report.setYear(date.getYear());
|
|
|
+ report.setMonth(date.getMonthValue());
|
|
|
+ report.setDay(date.getDayOfMonth());
|
|
|
+ report.setCreatedTime(LocalDateTime.now());
|
|
|
+ this.saveModel(report);
|
|
|
+
|
|
|
+
|
|
|
+ // 库存0:hy_电_stock、可用天数0:hy_电_avg
|
|
|
+ // 库存
|
|
|
+ produceData = produceDataService.selectByNo(prefixHy + no + "_stock");
|
|
|
+ report = BeanConverterUtil.copyObjectProperties(produceData, ProduceReport.class);
|
|
|
+ report.setDate(date);
|
|
|
+ report.setDataId(produceData.getId());
|
|
|
+ report.setValue("0");
|
|
|
+ report.setYear(date.getYear());
|
|
|
+ report.setMonth(date.getMonthValue());
|
|
|
+ report.setDay(date.getDayOfMonth());
|
|
|
+ report.setCreatedTime(LocalDateTime.now());
|
|
|
+ this.saveModel(report);
|
|
|
+
|
|
|
+ // 可用天数
|
|
|
+ produceData = produceDataService.selectByNo(prefixHy + no + "_avg");
|
|
|
+ report = BeanConverterUtil.copyObjectProperties(produceData, ProduceReport.class);
|
|
|
+ report.setDate(date);
|
|
|
+ report.setDataId(produceData.getId());
|
|
|
+ report.setValue("0");
|
|
|
+ report.setYear(date.getYear());
|
|
|
+ report.setMonth(date.getMonthValue());
|
|
|
+ report.setDay(date.getDayOfMonth());
|
|
|
+ report.setCreatedTime(LocalDateTime.now());
|
|
|
+ this.saveModel(report);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 液位:
|
|
|
+ * 液位号1,公式1,折算类型1,折算比例1;
|
|
|
+ * 液位号2,公式2,折算类型2,折算比例2;
|
|
|
+ * <p>
|
|
|
+ * 折算类型,1:直接乘以多少
|
|
|
+ * 2:大于多少值,有值,小于多少为0
|
|
|
+ *
|
|
|
+ * @param date
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public BigDecimal generateYeweiReport(LocalDate date, String no, String configName) {
|
|
|
+ log.info("正在处理液位:" + no);
|
|
|
+ // GS-907
|
|
|
+ String prefix = "zcp_";
|
|
|
+
|
|
|
+ // 找到对应填报数据
|
|
|
+ ProduceData produceData = produceDataService.selectByNo(prefix + no);
|
|
|
+ String value = ConfigCache.getLabelByValueAllowNull(configName);
|
|
|
+ List<String> list = Arrays.asList(value.split(";"));
|
|
|
+
|
|
|
+ BigDecimal total = new BigDecimal(0);
|
|
|
+ for (String line : list) {
|
|
|
+ List<String> col = Arrays.asList(line.split(","));
|
|
|
+
|
|
|
+ // 找到液位数据
|
|
|
+ ProduceRecord find = new ProduceRecord();
|
|
|
+ find.setProductNo(col.get(0));
|
|
|
+ find.setDate(date);
|
|
|
+ find.setType(ProduceRecordTypeEnum.YEWEI.getValue());
|
|
|
+ List<ProduceRecord> produceRecord = produceRecordService.getModelListByModel(find);
|
|
|
+ Map<String, Double> param = new HashMap<>();
|
|
|
+ if (!CollectionUtils.isEmpty(produceRecord)) {
|
|
|
+ param.put("value", produceRecord.get(0).getNum().doubleValue());
|
|
|
+ } else {
|
|
|
+ param.put("value", 1.0);
|
|
|
+ }
|
|
|
+
|
|
|
+ log.info("公式:" + col.get(1));
|
|
|
+ String result = FelUtil.getResultFromMap(col.get(1), param, 2);
|
|
|
+
|
|
|
+ // 类型1,直接乘以系数
|
|
|
+ BigDecimal bak = null;
|
|
|
+ if ("1".equals(col.get(2))) {
|
|
|
+ bak = (new BigDecimal(result).multiply(new BigDecimal(col.get(3)))).setScale(2, RoundingMode.HALF_UP);
|
|
|
+ } else if ("2".equals(col.get(2))) {// 大于多少有值,小于多少设置为0
|
|
|
+ if (new BigDecimal(result).compareTo(new BigDecimal(col.get(3))) > 0) {
|
|
|
+ bak = new BigDecimal(col.get(4));
|
|
|
+ } else {
|
|
|
+ bak = new BigDecimal(0);
|
|
|
+ }
|
|
|
+ } else if ("3".equals(col.get(2))) {// 小于多少,计算结果才算,否则魏0
|
|
|
+ if (new BigDecimal(result).compareTo(new BigDecimal(col.get(3))) <= 0) {
|
|
|
+ bak = new BigDecimal(result);
|
|
|
+ } else {
|
|
|
+ bak = new BigDecimal(0);
|
|
|
+ }
|
|
|
+ } else if ("4".equals(col.get(2))) {// 大于多少,计算结果才算,否则魏0
|
|
|
+ if (new BigDecimal(result).compareTo(new BigDecimal(col.get(3))) >= 0) {
|
|
|
+ bak = new BigDecimal(result);
|
|
|
+ } else {
|
|
|
+ bak = new BigDecimal(0);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ total = total.add(bak);
|
|
|
+ }
|
|
|
+
|
|
|
+ ProduceReport report = BeanConverterUtil.copyObjectProperties(produceData, ProduceReport.class);
|
|
|
+ report.setDate(date);
|
|
|
+ report.setDataId(produceData.getId());
|
|
|
+ report.setValue(total.toString());
|
|
|
+ report.setYear(date.getYear());
|
|
|
+ report.setMonth(date.getMonthValue());
|
|
|
+ report.setDay(date.getDayOfMonth());
|
|
|
+ report.setCreatedTime(LocalDateTime.now());
|
|
|
+ this.saveModel(report);
|
|
|
+ return total;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 液位:总计
|
|
|
+ * 2:大于多少值,有值,小于多少为0
|
|
|
+ *
|
|
|
+ * @param date
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void generateYeweiTotalReport(LocalDate date, Map<String, Double> param) {
|
|
|
+
|
|
|
+ // GS-907
|
|
|
+ String prefix = "zcp_";
|
|
|
+ String result = FelUtil.getResultFromMap("((a1+a2)*0.58+a3)/2", param, 2);
|
|
|
+ // 找到对应填报数据
|
|
|
+ ProduceData produceData = produceDataService.selectByNo(prefix + "total");
|
|
|
+ ProduceReport report = BeanConverterUtil.copyObjectProperties(produceData, ProduceReport.class);
|
|
|
+ report.setDate(date);
|
|
|
+ report.setDataId(produceData.getId());
|
|
|
+ report.setValue(result);
|
|
|
+ report.setYear(date.getYear());
|
|
|
+ report.setMonth(date.getMonthValue());
|
|
|
+ report.setDay(date.getDayOfMonth());
|
|
|
+ report.setCreatedTime(LocalDateTime.now());
|
|
|
+ this.saveModel(report);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 能源+能源单耗
|
|
|
+ * 24个
|
|
|
+ * dl_
|
|
|
+ * hy_
|
|
|
+ *
|
|
|
+ * @param date
|
|
|
+ * @param prefix
|
|
|
+ */
|
|
|
+ private void generateDlAndHy(LocalDate date, String prefix) {
|
|
|
+/* List<ProduceData> produceDataList = produceDataService.selectByPrefix(prefix);
|
|
|
+ for (ProduceData produceData : produceDataList) {
|
|
|
+ ProduceReport report = BeanConverterUtil.copyObjectProperties(produceData, ProduceReport.class);
|
|
|
+ report.setValue("0");
|
|
|
+ report.setDate(date);
|
|
|
+ report.setDataId(produceData.getId());
|
|
|
+ report.setYear(date.getYear());
|
|
|
+ report.setMonth(date.getMonthValue());
|
|
|
+ report.setDay(date.getDayOfMonth());
|
|
|
+ report.setCreatedTime(LocalDateTime.now());
|
|
|
+ this.saveModel(report);
|
|
|
+ }*/
|
|
|
+
|
|
|
+ // 天然气
|
|
|
+ List<ProduceData> list = produceDataService.selectByPrefix(prefix + "天然气");
|
|
|
+ for (ProduceData produceData : list) {
|
|
|
+ ProduceReport report = BeanConverterUtil.copyObjectProperties(produceData, ProduceReport.class);
|
|
|
+ report.setValue("0");
|
|
|
+ report.setDate(date);
|
|
|
+ report.setDataId(produceData.getId());
|
|
|
+ report.setYear(date.getYear());
|
|
|
+ report.setMonth(date.getMonthValue());
|
|
|
+ report.setDay(date.getDayOfMonth());
|
|
|
+ report.setCreatedTime(LocalDateTime.now());
|
|
|
+ this.saveModel(report);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 天然气
|
|
|
+ list = produceDataService.selectByPrefix("hy_" + "天然气");
|
|
|
+ for (ProduceData produceData : list) {
|
|
|
+ ProduceReport report = BeanConverterUtil.copyObjectProperties(produceData, ProduceReport.class);
|
|
|
+ report.setValue("0");
|
|
|
+ report.setDate(date);
|
|
|
+ report.setDataId(produceData.getId());
|
|
|
+ report.setYear(date.getYear());
|
|
|
+ report.setMonth(date.getMonthValue());
|
|
|
+ report.setDay(date.getDayOfMonth());
|
|
|
+ report.setCreatedTime(LocalDateTime.now());
|
|
|
+ this.saveModel(report);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 蒸汽
|
|
|
+ list = produceDataService.selectByPrefix(prefix + "蒸汽");
|
|
|
+ for (ProduceData produceData : list) {
|
|
|
+ ProduceReport report = BeanConverterUtil.copyObjectProperties(produceData, ProduceReport.class);
|
|
|
+ report.setValue("0");
|
|
|
+ report.setDate(date);
|
|
|
+ report.setDataId(produceData.getId());
|
|
|
+ report.setYear(date.getYear());
|
|
|
+ report.setMonth(date.getMonthValue());
|
|
|
+ report.setDay(date.getDayOfMonth());
|
|
|
+ report.setCreatedTime(LocalDateTime.now());
|
|
|
+ this.saveModel(report);
|
|
|
+ }
|
|
|
+ // 蒸汽
|
|
|
+ list = produceDataService.selectByPrefix("hy_" + "蒸汽");
|
|
|
+ for (ProduceData produceData : list) {
|
|
|
+ ProduceReport report = BeanConverterUtil.copyObjectProperties(produceData, ProduceReport.class);
|
|
|
+ report.setValue("0");
|
|
|
+ report.setDate(date);
|
|
|
+ report.setDataId(produceData.getId());
|
|
|
+ report.setYear(date.getYear());
|
|
|
+ report.setMonth(date.getMonthValue());
|
|
|
+ report.setDay(date.getDayOfMonth());
|
|
|
+ report.setCreatedTime(LocalDateTime.now());
|
|
|
+ this.saveModel(report);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 污水
|
|
|
+ list = produceDataService.selectByPrefix(prefix + "污水");
|
|
|
+ for (ProduceData produceData : list) {
|
|
|
+ ProduceReport report = BeanConverterUtil.copyObjectProperties(produceData, ProduceReport.class);
|
|
|
+ report.setValue("0");
|
|
|
+ report.setDate(date);
|
|
|
+ report.setDataId(produceData.getId());
|
|
|
+ report.setYear(date.getYear());
|
|
|
+ report.setMonth(date.getMonthValue());
|
|
|
+ report.setDay(date.getDayOfMonth());
|
|
|
+ report.setCreatedTime(LocalDateTime.now());
|
|
|
+ this.saveModel(report);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 河水
|
|
|
+ list = produceDataService.selectByPrefix(prefix + "河水");
|
|
|
+ for (ProduceData produceData : list) {
|
|
|
+ ProduceReport report = BeanConverterUtil.copyObjectProperties(produceData, ProduceReport.class);
|
|
|
+ report.setValue("0");
|
|
|
+ report.setDate(date);
|
|
|
+ report.setDataId(produceData.getId());
|
|
|
+ report.setYear(date.getYear());
|
|
|
+ report.setMonth(date.getMonthValue());
|
|
|
+ report.setDay(date.getDayOfMonth());
|
|
|
+ report.setCreatedTime(LocalDateTime.now());
|
|
|
+ this.saveModel(report);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 手填的数据,先生成0
|
|
|
+ * <p>
|
|
|
+ * 1:动力单耗的计算逻辑:动力使用量/当日产量*0.3
|
|
|
+ * 当日产量是977的产量
|
|
|
+ * <p>
|
|
|
+ * 当日单耗
|
|
|
+ * 月均单耗
|
|
|
+ *
|
|
|
+ * @param date
|
|
|
+ * @param no
|
|
|
+ */
|
|
|
+ private void generateHy(LocalDate date, String no) {
|
|
|
+ String prefix = "hy_";
|
|
|
+
|
|
|
+
|
|
|
+ List<ProduceData> produceDataList = produceDataService.selectByPrefix(prefix);
|
|
|
+ for (ProduceData produceData : produceDataList) {
|
|
|
+ ProduceReport report = BeanConverterUtil.copyObjectProperties(produceData, ProduceReport.class);
|
|
|
+ report.setValue("0");
|
|
|
+ report.setDate(date);
|
|
|
+ report.setDataId(produceData.getId());
|
|
|
+ report.setYear(date.getYear());
|
|
|
+ report.setMonth(date.getMonthValue());
|
|
|
+ report.setDay(date.getDayOfMonth());
|
|
|
+ report.setCreatedTime(LocalDateTime.now());
|
|
|
+ this.saveModel(report);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 生成某一天的生产量
|
|
|
+ * 生产报表每日统计:每天凌晨1点统计
|
|
|
+ *
|
|
|
+ * @param date 日期
|
|
|
+ * @param no 编号
|
|
|
+ * @param type 类型
|
|
|
+ * <p>
|
|
|
+ * 1: 生产量:
|
|
|
+ * CS-977 0300027
|
|
|
+ * 902 0600032
|
|
|
+ */
|
|
|
+ public List<ProduceReport> generateSCL(String prefix, LocalDate date, String no, Integer type) {
|
|
|
+ List<ProduceReport> resultList = new ArrayList<>();
|
|
|
+ // 统计当天数据
|
|
|
+ ProduceRecordDTO dto = new ProduceRecordDTO();
|
|
|
+ dto.setProductNo(no);
|
|
|
+ dto.setDate(date);
|
|
|
+ dto.setType(type);
|
|
|
+ List<ProduceRecordVO> produceRecordList = produceRecordService.selectList(dto);
|
|
|
+
|
|
|
+ // 统计总额
|
|
|
+ BigDecimal total = new BigDecimal(0);
|
|
|
+ for (ProduceRecordVO vo : produceRecordList) {
|
|
|
+ total = total.add(vo.getNum());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 当日数据
|
|
|
+ ProduceData produceData = produceDataService.selectByNo(prefix + no);
|
|
|
+ ProduceReport report = BeanConverterUtil.copyObjectProperties(produceData, ProduceReport.class);
|
|
|
+ report.setDate(date);
|
|
|
+ report.setDataId(produceData.getId());
|
|
|
+ report.setValue(total.toString());
|
|
|
+ report.setYear(date.getYear());
|
|
|
+ report.setMonth(date.getMonthValue());
|
|
|
+ report.setDay(date.getDayOfMonth());
|
|
|
+ report.setCreatedTime(LocalDateTime.now());
|
|
|
+ this.saveModel(report);
|
|
|
+ resultList.add(report);
|
|
|
+ // 年累计
|
|
|
+ ProduceReportDTO month = new ProduceReportDTO();
|
|
|
+ month.setDataId(produceData.getId());
|
|
|
+ month.setYear(date.getYear());
|
|
|
+ ProduceReportVO yearVO = this.sumMonthYear(month);
|
|
|
+ ProduceData yearData = produceDataService.selectByNo(prefix + no + "_year");
|
|
|
+ ProduceReport yearReport = BeanConverterUtil.copyObjectProperties(yearData, ProduceReport.class);
|
|
|
+ yearReport.setDate(date);
|
|
|
+ yearReport.setDataId(yearData.getId());
|
|
|
+ yearReport.setValue(yearVO.getTotalValue());
|
|
|
+ yearReport.setYear(date.getYear());
|
|
|
+ yearReport.setMonth(date.getMonthValue());
|
|
|
+ yearReport.setDay(date.getDayOfMonth());
|
|
|
+ yearReport.setCreatedTime(LocalDateTime.now());
|
|
|
+ this.saveModel(yearReport);
|
|
|
+
|
|
|
+ // 月累计
|
|
|
+ report.setMonth(date.getMonthValue());
|
|
|
+ ProduceReportVO monthVO = this.sumMonthYear(month);
|
|
|
+ ProduceData monthData = produceDataService.selectByNo(prefix + no + "_month");
|
|
|
+ ProduceReport monthReport = BeanConverterUtil.copyObjectProperties(monthData, ProduceReport.class);
|
|
|
+ monthReport.setDate(date);
|
|
|
+ monthReport.setDataId(monthData.getId());
|
|
|
+ monthReport.setValue(monthVO.getTotalValue());
|
|
|
+ monthReport.setYear(date.getYear());
|
|
|
+ monthReport.setMonth(date.getMonthValue());
|
|
|
+ monthReport.setDay(date.getDayOfMonth());
|
|
|
+ monthReport.setCreatedTime(LocalDateTime.now());
|
|
|
+ this.saveModel(monthReport);
|
|
|
+ resultList.add(monthReport);
|
|
|
+ // 月计划
|
|
|
+ ProduceData yjhData = produceDataService.selectByNo(prefix + no + "_yjh");
|
|
|
+ ProduceReport yjhReport = BeanConverterUtil.copyObjectProperties(yjhData, ProduceReport.class);
|
|
|
+ yjhReport.setDate(date);
|
|
|
+ yjhReport.setDataId(yjhData.getId());
|
|
|
+ yjhReport.setYear(date.getYear());
|
|
|
+ yjhReport.setMonth(date.getMonthValue());
|
|
|
+ yjhReport.setDay(date.getDayOfMonth());
|
|
|
+ // 计算完成率,如月计划没有,则新建一个0,等待人员填写
|
|
|
+ ProduceReport yjh = this.getModelByModel(yjhReport);
|
|
|
+ if (yjh == null) {
|
|
|
+ yjhReport.setValue("0");// 新增为
|
|
|
+ yjhReport.setDate(date);
|
|
|
+ yjhReport.setCreatedTime(LocalDateTime.now());
|
|
|
+ this.saveModel(yjhReport);
|
|
|
+ yjh = yjhReport;
|
|
|
+ }
|
|
|
+ // 新增当日月计划完成率
|
|
|
+ ProduceData wclData = produceDataService.selectByNo(prefix + no + "_yjh_wcl");
|
|
|
+ ProduceReport wclReport = BeanConverterUtil.copyObjectProperties(wclData, ProduceReport.class);
|
|
|
+ wclReport.setDate(date);
|
|
|
+ wclReport.setDataId(wclData.getId());
|
|
|
+ if (yjh.getValue().equals("0")) {
|
|
|
+ wclReport.setValue("0");
|
|
|
+ } else {
|
|
|
+ wclReport.setValue(BigDecimalUtil.div(Double.valueOf(monthReport.getValue()) * 100, Double.valueOf(yjh.getValue()), 2) + "");
|
|
|
+ }
|
|
|
+ wclReport.setYear(date.getYear());
|
|
|
+ wclReport.setMonth(date.getMonthValue());
|
|
|
+ wclReport.setDay(date.getDayOfMonth());
|
|
|
+ wclReport.setCreatedTime(LocalDateTime.now());
|
|
|
+ this.saveModel(wclReport);
|
|
|
+ return resultList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 生成某一天的库存量,三个库存量
|
|
|
+ * 977:0300027
|
|
|
+ * 锂渣:0300083
|
|
|
+ * 氟化钠:0300073
|
|
|
+ * <p>
|
|
|
+ * <p>
|
|
|
+ * 氯化钠:0300094:手填
|
|
|
+ */
|
|
|
+ public void generateStock(LocalDate date, String no) {
|
|
|
+ String prefix = "stock_";
|
|
|
+ // 统计当天数据,累加
|
|
|
+ ProduceRecordDTO dto = new ProduceRecordDTO();
|
|
|
+ dto.setProductNo(no);
|
|
|
+ dto.setDate(date);
|
|
|
+ dto.setType(ProduceRecordTypeEnum.XCL.getValue());
|
|
|
+ List<ProduceRecordVO> produceRecordList = produceRecordService.selectList(dto);
|
|
|
+
|
|
|
+ // 统计总额
|
|
|
+ BigDecimal total = new BigDecimal(0);
|
|
|
+ for (ProduceRecordVO vo : produceRecordList) {
|
|
|
+ total = total.add(vo.getNum());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 找到填报字段
|
|
|
+ ProduceData data = produceDataService.selectByNo(prefix + no);
|
|
|
+ ProduceReport monthReport = BeanConverterUtil.copyObjectProperties(data, ProduceReport.class);
|
|
|
+ monthReport.setDate(date);
|
|
|
+ monthReport.setDataId(data.getId());
|
|
|
+ monthReport.setValue(total.toString());
|
|
|
+ monthReport.setYear(date.getYear());
|
|
|
+ monthReport.setMonth(date.getMonthValue());
|
|
|
+ monthReport.setDay(date.getDayOfMonth());
|
|
|
+ monthReport.setCreatedTime(LocalDateTime.now());
|
|
|
+ this.saveModel(monthReport);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 主要原物料用量数:入库
|
|
|
+ * GS-902 600032
|
|
|
+ * CS-977 0300027
|
|
|
+ * GS-903 100087
|
|
|
+ * GS-904 100074
|
|
|
+ * GS-905 100083
|
|
|
+ * GS-907 100003
|
|
|
+ * F-160C 100026
|
|
|
+ * CM47B 100010
|
|
|
+ * 氟化氢 100065
|
|
|
+ * 硫酰氯(合成) 100120
|
|
|
+ * 液碱32% 100160
|
|
|
+ * 盐酸 100086
|
|
|
+ * 氢氧化钠(工业级片碱) 100075
|
|
|
+ */
|
|
|
+ public void generateRk(LocalDate date, String no) {
|
|
|
+ log.info("正在处理入库:" + no);
|
|
|
+ String prefix = "ck_";// 入库和出库一样,用ck统计
|
|
|
+ // 统计当天数据
|
|
|
+ ProduceRecordDTO dto = new ProduceRecordDTO();
|
|
|
+ dto.setProductNo(no);
|
|
|
+ dto.setDate(date);
|
|
|
+ dto.setType(ProduceRecordTypeEnum.CG_RK.getValue());
|
|
|
+ List<ProduceRecordVO> produceRecordList = produceRecordService.selectList(dto);
|
|
|
+
|
|
|
+ // 统计总额
|
|
|
+ BigDecimal total = new BigDecimal(0);
|
|
|
+ for (ProduceRecordVO vo : produceRecordList) {
|
|
|
+ total = total.add(vo.getNum());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 当日数据
|
|
|
+ ProduceData produceData = produceDataService.selectByNo(prefix + no);
|
|
|
+ ProduceReport report = BeanConverterUtil.copyObjectProperties(produceData, ProduceReport.class);
|
|
|
+ report.setDate(date);
|
|
|
+ report.setDataId(produceData.getId());
|
|
|
+ report.setValue(total.toString());
|
|
|
+ report.setYear(date.getYear());
|
|
|
+ report.setMonth(date.getMonthValue());
|
|
|
+ report.setDay(date.getDayOfMonth());
|
|
|
+ report.setCreatedTime(LocalDateTime.now());
|
|
|
+ this.saveModel(report);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 主要原物料用量数:出库
|
|
|
+ * GS-902 600032
|
|
|
+ * GS-903 100087
|
|
|
+ * GS-904 100074
|
|
|
+ * GS-905 100083
|
|
|
+ * GS-907 100003
|
|
|
+ * F-160C 100026
|
|
|
+ * CM47B 100010
|
|
|
+ * 氟化氢 100065
|
|
|
+ * 硫酰氯(合成) 100120
|
|
|
+ * 液碱32% 100160
|
|
|
+ * 盐酸 100086
|
|
|
+ * 氢氧化钠(工业级片碱) 100075
|
|
|
+ */
|
|
|
+ public void generateCk(LocalDate date, String no, List<ProduceReport> sclList) {
|
|
|
+ log.info("generateCk:" + no);
|
|
|
+ String prefix = "ck_";// 出库
|
|
|
+ // 统计当天数据
|
|
|
+ ProduceRecordDTO dto = new ProduceRecordDTO();
|
|
|
+ dto.setProductNo(no);
|
|
|
+ dto.setDate(date);
|
|
|
+ dto.setType(ProduceRecordTypeEnum.CL_CK.getValue());
|
|
|
+ List<ProduceRecordVO> produceRecordList = produceRecordService.selectList(dto);
|
|
|
+
|
|
|
+ // 统计总额
|
|
|
+ BigDecimal total = new BigDecimal(0);
|
|
|
+ for (ProduceRecordVO vo : produceRecordList) {
|
|
|
+ total = total.add(vo.getNum());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 当日数据
|
|
|
+ ProduceData produceData = produceDataService.selectByNo(prefix + no + "_hy");
|
|
|
+ ProduceReport report = BeanConverterUtil.copyObjectProperties(produceData, ProduceReport.class);
|
|
|
+ report.setDate(date);
|
|
|
+ report.setDataId(produceData.getId());
|
|
|
+ report.setValue(total.toString());
|
|
|
+ report.setYear(date.getYear());
|
|
|
+ report.setMonth(date.getMonthValue());
|
|
|
+ report.setDay(date.getDayOfMonth());
|
|
|
+ report.setCreatedTime(LocalDateTime.now());
|
|
|
+ this.saveModel(report);
|
|
|
+
|
|
|
+ // 年累计
|
|
|
+ ProduceReportDTO month = new ProduceReportDTO();
|
|
|
+ month.setDataId(produceData.getId());
|
|
|
+ month.setYear(date.getYear());
|
|
|
+ ProduceReportVO yearVO = this.sumMonthYear(month);
|
|
|
+ ProduceData yearData = produceDataService.selectByNo(prefix + no + "_hy" + "_year");
|
|
|
+ ProduceReport yearReport = BeanConverterUtil.copyObjectProperties(yearData, ProduceReport.class);
|
|
|
+ yearReport.setDate(date);
|
|
|
+ yearReport.setDataId(yearData.getId());
|
|
|
+ yearReport.setValue(yearVO.getTotalValue());
|
|
|
+ yearReport.setYear(date.getYear());
|
|
|
+ yearReport.setMonth(date.getMonthValue());
|
|
|
+ yearReport.setDay(date.getDayOfMonth());
|
|
|
+ yearReport.setCreatedTime(LocalDateTime.now());
|
|
|
+ this.saveModel(yearReport);
|
|
|
+
|
|
|
+ // 月累计
|
|
|
+ report.setMonth(date.getMonthValue());
|
|
|
+ ProduceReportVO monthVO = this.sumMonthYear(month);
|
|
|
+ ProduceData monthData = produceDataService.selectByNo(prefix + no + "_hy" + "_month");
|
|
|
+ ProduceReport monthReport = BeanConverterUtil.copyObjectProperties(monthData, ProduceReport.class);
|
|
|
+ monthReport.setDate(date);
|
|
|
+ monthReport.setDataId(monthData.getId());
|
|
|
+ monthReport.setValue(monthVO.getTotalValue());
|
|
|
+ monthReport.setYear(date.getYear());
|
|
|
+ monthReport.setMonth(date.getMonthValue());
|
|
|
+ monthReport.setDay(date.getDayOfMonth());
|
|
|
+ monthReport.setCreatedTime(LocalDateTime.now());
|
|
|
+ this.saveModel(monthReport);
|
|
|
+
|
|
|
+
|
|
|
+ // 计算每日单耗,找到每日scl量
|
|
|
+ ProduceReport dayScl = sclList.stream().filter(dept -> dept.getNo().endsWith("_0300027")).collect(Collectors.toList()).get(0);
|
|
|
+ String hyPrefix = "hy_";
|
|
|
+ ProduceData hy = produceDataService.selectByNo(hyPrefix + no);
|
|
|
+ ProduceReport dayHy = BeanConverterUtil.copyObjectProperties(hy, ProduceReport.class);
|
|
|
+ dayHy.setDate(date);
|
|
|
+ dayHy.setDataId(hy.getId());
|
|
|
+ if (new BigDecimal("0").compareTo(new BigDecimal(dayScl.getValue())) == 0) {
|
|
|
+ dayHy.setValue("0");
|
|
|
+ } else {
|
|
|
+ BigDecimal hyDayValue = total.divide(new BigDecimal(dayScl.getValue()), 2).multiply(new BigDecimal(0.3));
|
|
|
+ dayHy.setValue(hyDayValue.toString());
|
|
|
+ }
|
|
|
+ dayHy.setYear(date.getYear());
|
|
|
+ dayHy.setMonth(date.getMonthValue());
|
|
|
+ dayHy.setDay(date.getDayOfMonth());
|
|
|
+ dayHy.setCreatedTime(LocalDateTime.now());
|
|
|
+ this.saveModel(dayHy);
|
|
|
+
|
|
|
+ //月单耗, 找到月生产量,在找到
|
|
|
+ ProduceReport monthScl = sclList.stream().filter(dept -> dept.getNo().endsWith("_0300027_month")).collect(Collectors.toList()).get(0);
|
|
|
+ ProduceData hyMonth = produceDataService.selectByNo(hyPrefix + no + "_month");
|
|
|
+ ProduceReport monthHy = BeanConverterUtil.copyObjectProperties(hyMonth, ProduceReport.class);
|
|
|
+ monthHy.setDate(date);
|
|
|
+ monthHy.setDataId(hyMonth.getId());
|
|
|
+ if (new BigDecimal("0").compareTo(new BigDecimal(monthVO.getTotalValue())) == 0) {
|
|
|
+ monthHy.setValue("0");
|
|
|
+ } else {
|
|
|
+ BigDecimal hyMonthValue = (new BigDecimal(monthVO.getTotalValue()).divide(new BigDecimal(monthScl.getValue()), RoundingMode.HALF_UP).multiply(new BigDecimal(0.3))).setScale(2, RoundingMode.HALF_UP);
|
|
|
+ monthHy.setValue(hyMonthValue.toString());
|
|
|
+ }
|
|
|
+ monthHy.setYear(date.getYear());
|
|
|
+ monthHy.setMonth(date.getMonthValue());
|
|
|
+ monthHy.setDay(date.getDayOfMonth());
|
|
|
+ monthHy.setCreatedTime(LocalDateTime.now());
|
|
|
+ this.saveModel(monthHy);
|
|
|
+
|
|
|
+ // 库存量
|
|
|
+ ProduceData stock = produceDataService.selectByNo(hyPrefix + no + "_stock");
|
|
|
+ ProduceReport reportStock = BeanConverterUtil.copyObjectProperties(stock, ProduceReport.class);
|
|
|
+ reportStock.setValue("0");
|
|
|
+ reportStock.setDate(date);
|
|
|
+ reportStock.setDataId(stock.getId());
|
|
|
+ reportStock.setYear(date.getYear());
|
|
|
+ reportStock.setMonth(date.getMonthValue());
|
|
|
+ reportStock.setDay(date.getDayOfMonth());
|
|
|
+ reportStock.setCreatedTime(LocalDateTime.now());
|
|
|
+ this.saveModel(reportStock);
|
|
|
+ // 可用天数
|
|
|
+ ProduceData avg = produceDataService.selectByNo(hyPrefix + no + "_avg");
|
|
|
+ ProduceReport reportAvg = BeanConverterUtil.copyObjectProperties(avg, ProduceReport.class);
|
|
|
+ reportAvg.setValue("0");
|
|
|
+ reportAvg.setDate(date);
|
|
|
+ reportAvg.setDataId(avg.getId());
|
|
|
+ reportAvg.setYear(date.getYear());
|
|
|
+ reportAvg.setMonth(date.getMonthValue());
|
|
|
+ reportAvg.setDay(date.getDayOfMonth());
|
|
|
+ reportAvg.setCreatedTime(LocalDateTime.now());
|
|
|
+ this.saveModel(reportAvg);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 核算为吨
|
|
|
+ *
|
|
|
+ * @param dto
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<ProduceReportVO> selectList(ProduceReportDTO dto) {
|
|
|
+ // 统计某日数据,计算kg-吨的转化
|
|
|
+ List<ProduceReportVO> list = mapper.selectList(dto);
|
|
|
+ for (ProduceReportVO item : list) {// 计算吨
|
|
|
+ if (item.getNo().startsWith("scl_") || item.getNo().startsWith("stock_") || item.getNo().startsWith("xiaoshou") || item.getNo().startsWith("ck_")) {
|
|
|
+ if (!"0".equals(item.getValue())) {
|
|
|
+ item.setValue(BigDecimalUtil.valueOf(item.getValue()).divide(new BigDecimal("1000")).toString());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询某贴需要手工填报的数据
|
|
|
+ * 水111
|
|
|
+ * 电
|
|
|
+ * 污水
|
|
|
+ * 河水
|
|
|
+ * 汽
|
|
|
+ *
|
|
|
+ * @param dto
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<ProduceReportTianVO> selectListByDayTian(ProduceReportDTO dto) {
|
|
|
+ // 天然气,蒸汽,河水,污水
|
|
|
+ List<ProduceData> list = produceDataService.selectByDayTianPrefix();
|
|
|
+ List<String> ids = list.stream().map(ProduceData::getId).distinct().collect(Collectors.toList());
|
|
|
+ dto.setDataIds(ids);
|
|
|
+ List<ProduceReportVO> reportVOList = mapper.selectList(dto);
|
|
|
+ Map<LocalDate, List<ProduceReportVO>> groupMap = reportVOList.stream().collect(Collectors.groupingBy(ProduceReportVO::getDate));
|
|
|
+ // 转化前台可以识别的数据
|
|
|
+ List<ProduceReportTianVO> resultList = new ArrayList<>();
|
|
|
+
|
|
|
+ for (Map.Entry<LocalDate, List<ProduceReportVO>> entry : groupMap.entrySet()) {
|
|
|
+ ProduceReportTianVO vo = new ProduceReportTianVO();
|
|
|
+ LocalDate date = entry.getKey();
|
|
|
+ vo.setDate(date);
|
|
|
+ vo.setDay(date.getDayOfMonth());
|
|
|
+ vo.setMonth(date.getMonthValue());
|
|
|
+ vo.setYear(date.getYear());
|
|
|
+ for (ProduceReportVO produceReportVO : entry.getValue()) {
|
|
|
+ if (produceReportVO.getNo().equals("dl_天然气_hy")) {
|
|
|
+ vo.setGas(produceReportVO.getValue());
|
|
|
+ vo.setGasId(produceReportVO.getId());
|
|
|
+ vo.setGasNo(produceReportVO.getNo());
|
|
|
+ vo.setGasDataId(produceReportVO.getDataId());
|
|
|
+ } else if (produceReportVO.getNo().equals("dl_蒸汽_hy")) {
|
|
|
+ vo.setSteam(produceReportVO.getValue());
|
|
|
+ vo.setSteamId(produceReportVO.getId());
|
|
|
+ vo.setSteamNo(produceReportVO.getNo());
|
|
|
+ vo.setSteamDataId(produceReportVO.getDataId());
|
|
|
+ } else if (produceReportVO.getNo().equals("dl_河水")) {
|
|
|
+ vo.setRiverWater(produceReportVO.getValue());
|
|
|
+ vo.setRiverWaterId(produceReportVO.getId());
|
|
|
+ vo.setRiverWaterNo(produceReportVO.getNo());
|
|
|
+ vo.setRiverWaterDataId(produceReportVO.getDataId());
|
|
|
+ } else {
|
|
|
+ vo.setSewage(produceReportVO.getValue());
|
|
|
+ vo.setSewageId(produceReportVO.getId());
|
|
|
+ vo.setSewageNo(produceReportVO.getNo());
|
|
|
+ vo.setSewageDataId(produceReportVO.getDataId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ resultList.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 排序
|
|
|
+ if (!CollectionUtils.isEmpty(resultList)) {
|
|
|
+ resultList = resultList.stream().sorted(Comparator.comparing(ProduceReportTianVO::getDate)).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ return resultList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询某天的数据
|
|
|
+ * 水111
|
|
|
+ * 电
|
|
|
+ * 污水
|
|
|
+ * 河水
|
|
|
+ * 汽
|
|
|
+ *
|
|
|
+ * @param dto
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<ProduceReportTianVO> selectListByDay(ProduceReportDTO dto) {
|
|
|
+ // 天然气,蒸汽,河水,污水
|
|
|
+ List<ProduceData> list = produceDataService.selectByDayPrefix();
|
|
|
+ List<String> ids = list.stream().map(ProduceData::getId).distinct().collect(Collectors.toList());
|
|
|
+ dto.setDataIds(ids);
|
|
|
+ List<ProduceReportVO> reportVOList = mapper.selectList(dto);
|
|
|
+ Map<LocalDate, List<ProduceReportVO>> groupMap = reportVOList.stream().collect(Collectors.groupingBy(ProduceReportVO::getDate));
|
|
|
+ // 转化前台可以识别的数据
|
|
|
+ List<ProduceReportTianVO> resultList = new ArrayList<>();
|
|
|
+
|
|
|
+ for (Map.Entry<LocalDate, List<ProduceReportVO>> entry : groupMap.entrySet()) {
|
|
|
+ ProduceReportTianVO vo = new ProduceReportTianVO();
|
|
|
+ LocalDate date = entry.getKey();
|
|
|
+ vo.setDate(date);
|
|
|
+ vo.setDay(date.getDayOfMonth());
|
|
|
+ vo.setMonth(date.getMonthValue());
|
|
|
+ vo.setYear(date.getYear());
|
|
|
+ for (ProduceReportVO produceReportVO : entry.getValue()) {
|
|
|
+ if (produceReportVO.getNo().equals("ck_0600032")) {
|
|
|
+ vo.setGs902(produceReportVO.getValue());
|
|
|
+ vo.setGs902Id(produceReportVO.getId());
|
|
|
+ vo.setGs902No(produceReportVO.getNo());
|
|
|
+ vo.setGs902DataId(produceReportVO.getDataId());
|
|
|
+ } else if (produceReportVO.getNo().equals("ck_0100087")) {
|
|
|
+ vo.setGs903(produceReportVO.getValue());
|
|
|
+ vo.setGs903Id(produceReportVO.getId());
|
|
|
+ vo.setGs903No(produceReportVO.getNo());
|
|
|
+ vo.setGs903DataId(produceReportVO.getDataId());
|
|
|
+ } else if (produceReportVO.getNo().equals("ck_0100074")) {
|
|
|
+ vo.setGs904(produceReportVO.getValue());
|
|
|
+ vo.setGs904Id(produceReportVO.getId());
|
|
|
+ vo.setGs904No(produceReportVO.getNo());
|
|
|
+ vo.setGs904DataId(produceReportVO.getDataId());
|
|
|
+ } else if (produceReportVO.getNo().equals("ck_0100083")) {
|
|
|
+ vo.setGs905(produceReportVO.getValue());
|
|
|
+ vo.setGs905Id(produceReportVO.getId());
|
|
|
+ vo.setGs905No(produceReportVO.getNo());
|
|
|
+ vo.setGs905DataId(produceReportVO.getDataId());
|
|
|
+ } else if (produceReportVO.getNo().equals("ck_0100003")) {
|
|
|
+ vo.setGs907(produceReportVO.getValue());
|
|
|
+ vo.setGs907Id(produceReportVO.getId());
|
|
|
+ vo.setGs907No(produceReportVO.getNo());
|
|
|
+ vo.setGs907DataId(produceReportVO.getDataId());
|
|
|
+ } else if (produceReportVO.getNo().equals("ck_0100026")) {
|
|
|
+ vo.setF160C(produceReportVO.getValue());
|
|
|
+ vo.setF160CId(produceReportVO.getId());
|
|
|
+ vo.setF160CNo(produceReportVO.getNo());
|
|
|
+ vo.setF160CDataId(produceReportVO.getDataId());
|
|
|
+ } else if (produceReportVO.getNo().equals("ck_0100010")) {
|
|
|
+ vo.setCM47B(produceReportVO.getValue());
|
|
|
+ vo.setCM47BId(produceReportVO.getId());
|
|
|
+ vo.setCM47BNo(produceReportVO.getNo());
|
|
|
+ vo.setCM47BDataId(produceReportVO.getDataId());
|
|
|
+ } else if (produceReportVO.getNo().equals("ck_0100065")) {
|
|
|
+ vo.setFhq(produceReportVO.getValue());
|
|
|
+ vo.setFhqId(produceReportVO.getId());
|
|
|
+ vo.setFhqNo(produceReportVO.getNo());
|
|
|
+ vo.setFhqDataId(produceReportVO.getDataId());
|
|
|
+ } else if (produceReportVO.getNo().equals("ck_0100120")) {
|
|
|
+ vo.setLxl(produceReportVO.getValue());
|
|
|
+ vo.setLxlId(produceReportVO.getId());
|
|
|
+ vo.setLxlNo(produceReportVO.getNo());
|
|
|
+ vo.setLxlDataId(produceReportVO.getDataId());
|
|
|
+ } else if (produceReportVO.getNo().equals("ck_0100160")) {
|
|
|
+ vo.setYj(produceReportVO.getValue());
|
|
|
+ vo.setYjId(produceReportVO.getId());
|
|
|
+ vo.setYjNo(produceReportVO.getNo());
|
|
|
+ vo.setYjDataId(produceReportVO.getDataId());
|
|
|
+ } else if (produceReportVO.getNo().equals("ck_0100086")) {
|
|
|
+ vo.setYs(produceReportVO.getValue());
|
|
|
+ vo.setYsId(produceReportVO.getId());
|
|
|
+ vo.setYsNo(produceReportVO.getNo());
|
|
|
+ vo.setYsDataId(produceReportVO.getDataId());
|
|
|
+ } else if (produceReportVO.getNo().equals("ck_0100075")) {
|
|
|
+ vo.setQyhn(produceReportVO.getValue());
|
|
|
+ vo.setQyhnId(produceReportVO.getId());
|
|
|
+ vo.setQyhnNo(produceReportVO.getNo());
|
|
|
+ vo.setQyhnDataId(produceReportVO.getDataId());
|
|
|
+ } else if (produceReportVO.getNo().equals("dl_电")) {
|
|
|
+ vo.setDian(produceReportVO.getValue());
|
|
|
+ vo.setDianId(produceReportVO.getId());
|
|
|
+ vo.setDianNo(produceReportVO.getNo());
|
|
|
+ vo.setDianDataId(produceReportVO.getDataId());
|
|
|
+ } else if (produceReportVO.getNo().equals("dl_天然气_hy")) {
|
|
|
+ vo.setGas(produceReportVO.getValue());
|
|
|
+ vo.setGasId(produceReportVO.getId());
|
|
|
+ vo.setGasNo(produceReportVO.getNo());
|
|
|
+ vo.setGasDataId(produceReportVO.getDataId());
|
|
|
+ } else if (produceReportVO.getNo().equals("dl_蒸汽_hy")) {
|
|
|
+ vo.setSteam(produceReportVO.getValue());
|
|
|
+ vo.setSteamId(produceReportVO.getId());
|
|
|
+ vo.setSteamNo(produceReportVO.getNo());
|
|
|
+ vo.setSteamDataId(produceReportVO.getDataId());
|
|
|
+ } else if (produceReportVO.getNo().equals("dl_河水")) {
|
|
|
+ vo.setRiverWater(produceReportVO.getValue());
|
|
|
+ vo.setRiverWaterId(produceReportVO.getId());
|
|
|
+ vo.setRiverWaterNo(produceReportVO.getNo());
|
|
|
+ vo.setRiverWaterDataId(produceReportVO.getDataId());
|
|
|
+ } else {
|
|
|
+ vo.setSewage(produceReportVO.getValue());
|
|
|
+ vo.setSewageId(produceReportVO.getId());
|
|
|
+ vo.setSewageNo(produceReportVO.getNo());
|
|
|
+ vo.setSewageDataId(produceReportVO.getDataId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ resultList.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 排序
|
|
|
+ if (!CollectionUtils.isEmpty(resultList)) {
|
|
|
+ resultList = resultList.stream().sorted(Comparator.comparing(ProduceReportTianVO::getDate)).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ return resultList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 更新每天的手工填报数据,需要重新计算年月数据
|
|
|
+ *
|
|
|
+ * @param produceReportTianVO
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void updateByDay(ProduceReportTianVO produceReportTianVO) {
|
|
|
+
|
|
|
+ // 天然气
|
|
|
+ if (StringUtils.isNotBlank(produceReportTianVO.getGasNo())) {
|
|
|
+ ProduceReportDTO model = new ProduceReportDTO();
|
|
|
+ model.setId(produceReportTianVO.getGasId());
|
|
|
+ model.setDataId(produceReportTianVO.getGasDataId());
|
|
|
+ model.setDate(produceReportTianVO.getDate());
|
|
|
+ model.setMonth(produceReportTianVO.getMonth());
|
|
|
+ model.setDay(produceReportTianVO.getDay());
|
|
|
+ model.setYear(produceReportTianVO.getYear());
|
|
|
+ model.setNo(produceReportTianVO.getGasNo());
|
|
|
+ model.setValue(produceReportTianVO.getGas());
|
|
|
+ this.modModelByDTO(model);
|
|
|
+ }
|
|
|
+ // 蒸汽
|
|
|
+ if (StringUtils.isNotBlank(produceReportTianVO.getSteamNo())) {
|
|
|
+ ProduceReportDTO model = new ProduceReportDTO();
|
|
|
+ model = new ProduceReportDTO();
|
|
|
+ model.setId(produceReportTianVO.getSteamId());
|
|
|
+ model.setDataId(produceReportTianVO.getSteamDataId());
|
|
|
+ model.setDate(produceReportTianVO.getDate());
|
|
|
+ model.setMonth(produceReportTianVO.getMonth());
|
|
|
+ model.setDay(produceReportTianVO.getDay());
|
|
|
+ model.setYear(produceReportTianVO.getYear());
|
|
|
+ model.setNo(produceReportTianVO.getSteamNo());
|
|
|
+ model.setValue(produceReportTianVO.getSteam());
|
|
|
+ this.modModelByDTO(model);
|
|
|
+ }
|
|
|
+ // 河水
|
|
|
+ if (StringUtils.isNotBlank(produceReportTianVO.getRiverWaterNo())) {
|
|
|
+ ProduceReportDTO model = new ProduceReportDTO();
|
|
|
+ model = new ProduceReportDTO();
|
|
|
+ model.setId(produceReportTianVO.getRiverWaterId());
|
|
|
+ model.setDataId(produceReportTianVO.getRiverWaterDataId());
|
|
|
+ model.setDate(produceReportTianVO.getDate());
|
|
|
+ model.setMonth(produceReportTianVO.getMonth());
|
|
|
+ model.setDay(produceReportTianVO.getDay());
|
|
|
+ model.setYear(produceReportTianVO.getYear());
|
|
|
+ model.setNo(produceReportTianVO.getRiverWaterNo());
|
|
|
+ model.setValue(produceReportTianVO.getRiverWater());
|
|
|
+ this.modModelByDTO(model);
|
|
|
+ }
|
|
|
+ // 污水
|
|
|
+ if (StringUtils.isNotBlank(produceReportTianVO.getSewageNo())) {
|
|
|
+ ProduceReportDTO model = new ProduceReportDTO();
|
|
|
+ model = new ProduceReportDTO();
|
|
|
+ model.setId(produceReportTianVO.getSewageId());
|
|
|
+ model.setDataId(produceReportTianVO.getSewageDataId());
|
|
|
+ model.setDate(produceReportTianVO.getDate());
|
|
|
+ model.setMonth(produceReportTianVO.getMonth());
|
|
|
+ model.setDay(produceReportTianVO.getDay());
|
|
|
+ model.setYear(produceReportTianVO.getYear());
|
|
|
+ model.setNo(produceReportTianVO.getSewageNo());
|
|
|
+ model.setValue(produceReportTianVO.getSewage());
|
|
|
+ this.modModelByDTO(model);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 电:
|
|
|
+ * <p>
|
|
|
+ *
|
|
|
+ * @param date
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Async
|
|
|
+ public void generateDian(LocalDate date, String value) {
|
|
|
+
|
|
|
+ // 电力记录数据
|
|
|
+ ProduceRecord record = new ProduceRecord();
|
|
|
+ record.setNo("电");
|
|
|
+ record.setTypeName("电量");
|
|
|
+ record.setType(ProduceRecordTypeEnum.DIAN.getValue());
|
|
|
+ record.setDate(date);
|
|
|
+ record.setProductNo("电");
|
|
|
+ record.setProductName("电");
|
|
|
+ record.setNum(new BigDecimal(value.trim()));
|
|
|
+ record.setUnit("度");
|
|
|
+ record.setId(IdGeneratorUtils.getObjectId());
|
|
|
+ record.setCreatedTime(LocalDateTime.now());
|
|
|
+ record.setStatus(YesNoEnum.NO.getValue());
|
|
|
+ produceRecordService.saveModel(record);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 同步液位数据:每天晚上11点开始同步
|
|
|
+ * 1: 新增记录
|
|
|
+ *
|
|
|
+ * @param produceRecordDTO
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Async
|
|
|
+ public void addYeweiRecord(List<ProduceRecordDTO> produceRecordDTO) {
|
|
|
+ for (ProduceRecordDTO recordDTO : produceRecordDTO) {
|
|
|
+ // 液位记录数据,只记录,不计算,计算留给计算任务来做,防止计算规则变动,影响采集
|
|
|
+ ProduceRecord record = new ProduceRecord();
|
|
|
+ record.setNo(recordDTO.getNo());
|
|
|
+ record.setTypeName("液位");
|
|
|
+ record.setType(ProduceRecordTypeEnum.YEWEI.getValue());
|
|
|
+ record.setDate(recordDTO.getDate());
|
|
|
+ record.setProductNo(recordDTO.getNo());
|
|
|
+ record.setProductName(recordDTO.getNo());
|
|
|
+ record.setNum(recordDTO.getNum());
|
|
|
+ record.setUnit("吨");
|
|
|
+ record.setId(IdGeneratorUtils.getObjectId());
|
|
|
+ record.setCreatedTime(LocalDateTime.now());
|
|
|
+ record.setStatus(YesNoEnum.NO.getValue());
|
|
|
+ produceRecordService.saveModel(record);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|