Просмотр исходного кода

[电表管理][修改][定时任务]

release_toaliyun_real
gongbiao 6 лет назад
Родитель
Сommit
e2d91dcb84
1 измененных файлов: 58 добавлений и 13 удалений
  1. +58
    -13
      mallinkSchedule/src/main/java/com/iformall/schedule/PowerBillAutoBuildSchedule.java

+ 58
- 13
mallinkSchedule/src/main/java/com/iformall/schedule/PowerBillAutoBuildSchedule.java Просмотреть файл

@@ -1,15 +1,16 @@
package com.iformall.schedule;

import com.alibaba.fastjson.JSONObject;
import com.iformall.domain.dto.KwMeterDataDto;
import com.iformall.domain.po.*;
import com.iformall.enums.EnumBillDailyType;
import com.iformall.enums.EnumBillPayWay;
import com.iformall.enums.EnumDelStatus;
import com.iformall.enums.EnumPowerBillBuildWay;
import com.iformall.domain.vo.KwMeterDataVo;
import com.iformall.enums.*;
import com.iformall.mapper.KwMerchantMeterMapper;
import com.iformall.mapper.WxMerchantPowerBillConfigMapper;
import com.iformall.mapper.WxMerchantShopMapper;
import com.iformall.mapper.WxPowerBillAutoConfigMapper;
import com.iformall.service.WxBillDailyService;
import com.iformall.service.kw.KwMeterDataService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -47,6 +48,12 @@ public class PowerBillAutoBuildSchedule {
@Autowired
private WxMerchantShopMapper wxMerchantShopMapper;

@Autowired
KwMeterDataService kwMeterDataService;

@Autowired
KwMerchantMeterMapper kwMerchantMeterMapper;

/**
* 每天5点执行
*/
@@ -75,25 +82,37 @@ public class PowerBillAutoBuildSchedule {

private void buildPowerBill(WxMerchantPowerBillConfig wxMerchantPowerBillConfig, WxPowerBillAutoConfig wxPowerBillAutoConfig) {

String unitPrice = wxPowerBillAutoConfig.getUnitPrice();
Date startdate = getLastMonthDate().get("startdate");
Date enddate = getLastMonthDate().get("enddate");
Map<String, Date> monthDate = getLastMonthDate();
Date startdate = monthDate.get("startdate");
Date enddate = monthDate.get("enddate");
Date lastdate = monthDate.get("lastdate");
MallUserInfo mallUserInfo = getMallUserInfo();
WxBillDaily wxBillDaily = getBillDaily(wxMerchantPowerBillConfig);
JSONObject priceDetal = new JSONObject();
Date receiveDate = getReceiveDate(Integer.parseInt(wxPowerBillAutoConfig.getReceiveDay()));
long receivePay = 0L;
Long merchantId = wxMerchantPowerBillConfig.getMerchantId();
if (wxMerchantPowerBillConfig.getBuildWay().equals(EnumPowerBillBuildWay.METER.getCode())) {
//根据日期拉取电量 单价 * 电量 = 电费

int usedPower = getUsedPower(startdate, lastdate, merchantId);
if (usedPower == 0) {
logger.info("没有电量使用,不生成账单>>>>商户ID:" + merchantId);
return;
}
String price = wxMerchantPowerBillConfig.getPrice();
priceDetal.put("unitPrice", price);
priceDetal.put("power", usedPower);
receivePay = new BigDecimal(price).multiply(new BigDecimal(100))
.multiply(new BigDecimal(usedPower)).longValue();
} else {
String unitPrice = wxPowerBillAutoConfig.getUnitPrice();
String price = wxMerchantPowerBillConfig.getPrice();
priceDetal.put("unitPrice", unitPrice);
priceDetal.put("power", 0);
long receivePay = new BigDecimal(price).multiply(new BigDecimal(100)).longValue();
wxBillDaily.setReceivePay(receivePay);
wxBillDaily.setNeedPay(receivePay);
receivePay = new BigDecimal(price).multiply(new BigDecimal(100)).longValue();
}

wxBillDaily.setReceivePay(receivePay);
wxBillDaily.setNeedPay(receivePay);
wxBillDaily.setReceiveDate(receiveDate);
wxBillDaily.setStarttime(startdate);
wxBillDaily.setEndtime(enddate);
@@ -102,6 +121,28 @@ public class PowerBillAutoBuildSchedule {

}

private int getUsedPower(Date startdate, Date lastdate, Long merchantId) {
KwMerchantMeter kwMerchantMeter = new KwMerchantMeter();
kwMerchantMeter.setMerchantId(merchantId);
kwMerchantMeter.setStatus(EnumMerchantMeterStatus.VALID.getCode());
List<KwMerchantMeter> merchantMeterList = kwMerchantMeterMapper.select(kwMerchantMeter);
int usedPower = 0;
if (!merchantMeterList.isEmpty()) {
int size = merchantMeterList.size();
for (int i = 0; i < size; i++) {
KwMerchantMeter merchantMeter = merchantMeterList.get(i);
KwMeterDataDto kwMeterDataDto = new KwMeterDataDto();
kwMeterDataDto.setTenantId(merchantMeter.getTenantId());
kwMeterDataDto.setMeterId(merchantMeter.getMeterId());
kwMeterDataDto.setStartTime(startdate);
kwMeterDataDto.setEndTime(lastdate);
KwMeterDataVo power = kwMeterDataService.getPower(kwMeterDataDto);
usedPower += power.getUsedPower();
}
}
return usedPower;
}

private WxBillDaily getBillDaily(WxMerchantPowerBillConfig wxMerchantPowerBillConfig) {
WxBillDaily wxBillDaily = new WxBillDaily();
Long merchantId = wxMerchantPowerBillConfig.getMerchantId();
@@ -125,13 +166,17 @@ public class PowerBillAutoBuildSchedule {
now = now.with(TemporalAdjusters.lastDayOfMonth());
Instant end = now.atStartOfDay().atZone(zoneId).toInstant();
Date last = Date.from(end);
now = now.with(TemporalAdjusters.firstDayOfNextMonth());
Instant lastday = now.atStartOfDay().atZone(zoneId).toInstant();
Date next = Date.from(lastday);
Map<String, Date> dateMap = new HashMap<>(2);
dateMap.put("startdate", first);
dateMap.put("enddate", last);
dateMap.put("lastdate", next);
return dateMap;
}

private Date getReceiveDate(Integer day) {
private Date getReceiveDate(int day) {
ZoneId zoneId = ZoneOffset.systemDefault();
LocalDate of = LocalDate.of(LocalDate.now().getYear(), LocalDate.now().getMonth(), day);
Instant instant = of.atStartOfDay().atZone(zoneId).toInstant();


Загрузка…
Отмена
Сохранить