|
@@ -4,6 +4,7 @@ import com.xxl.job.core.biz.model.ReturnT;
|
|
|
import com.xxl.job.core.handler.annotation.XxlJob;
|
|
|
import com.zcxk.core.utils.DateUtil;
|
|
|
import com.zcxk.rmcp.api.dto.measurementsettlement.MeasurementSettlementDto;
|
|
|
+import com.zcxk.rmcp.api.vo.MeterReadRecordAggregationVo;
|
|
|
import com.zcxk.rmcp.api.vo.MeterReadRecordVo;
|
|
|
import com.zcxk.rmcp.core.dao.DeviceMapper;
|
|
|
import com.zcxk.rmcp.core.dao.MeasurementInstanceMapper;
|
|
@@ -22,6 +23,8 @@ import org.apache.commons.lang3.time.DateFormatUtils;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
+import java.text.ParseException;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
|
/**
|
|
|
*
|
|
@@ -45,7 +48,7 @@ public class MeasurementSettlementRecordHander {
|
|
|
private String dateFormat="yyyyMMdd";
|
|
|
@XxlJob("measurementHandler")
|
|
|
public ReturnT<String> execute(String info) {
|
|
|
- log.info("开始执行分发任务");
|
|
|
+ log.info("开始执行结算任务");
|
|
|
try {
|
|
|
MeasurementSettlementDto measurementSettlement=JSON.parseObject(info,MeasurementSettlementDto.class);
|
|
|
List<Device> devices = deviceMapper.findMeasurementDevice(measurementSettlement);
|
|
@@ -80,7 +83,7 @@ public class MeasurementSettlementRecordHander {
|
|
|
}
|
|
|
private MeasurementInstance addMeasurementInstance(MeasurementSettlementDto measurementSettlement,int total){
|
|
|
MeasurementInstance measurementInstance=new MeasurementInstance();
|
|
|
- measurementInstance.setPlanid(measurementSettlement.getId());
|
|
|
+ measurementInstance.setPlanId(measurementSettlement.getId());
|
|
|
measurementInstance.setTotalWaterMeters(total);
|
|
|
measurementInstance.setCreateBy("admin");
|
|
|
measurementInstance.setCreateDate(new Date());
|
|
@@ -92,6 +95,9 @@ public class MeasurementSettlementRecordHander {
|
|
|
measurementInstance.setClearingStartDate(clearingStartDate);
|
|
|
measurementInstance.setClearingEndDate(clearingEndDate);
|
|
|
measurementInstance.setNumberOfWaterMetersReviewed(0);
|
|
|
+ measurementInstance.setCompanyOrgId(measurementSettlement.getCompanyOrgId());
|
|
|
+ measurementInstance.setDeptOrgId(measurementSettlement.getDeptOrgId());
|
|
|
+ measurementInstance.setCommunityId(measurementSettlement.getCommunityId());
|
|
|
measurementInstance.setStatus(1);
|
|
|
measurementInstanceMapper.insert(measurementInstance);
|
|
|
return measurementInstance;
|
|
@@ -128,7 +134,8 @@ public class MeasurementSettlementRecordHander {
|
|
|
Integer clearingPeriod = measurementSettlement.getBillingCycle();
|
|
|
Date clearingEndDate = getClearingEndDate(clearingDate);
|
|
|
Date clearingStartDate = getClearingStartDate(clearingEndDate,clearingPeriod);
|
|
|
- List<MeterReadRecord> recordList = meterReadRecordDao.querySettlementWaterConsumption(device,clearingStartDate,clearingEndDate);
|
|
|
+ List<MeterReadRecordVo> recordList =meterReadRecordDao.querySettlementWaterConsumption(device, clearingStartDate, clearingEndDate);//
|
|
|
+
|
|
|
// 3,获取结算周期内开始数据
|
|
|
MeterReadRecordDTO clearingStartMeterRecord = getClearingStartMeterRecord(device,clearingStartDate,lastClearingRecordItem,recordList);
|
|
|
item.setLastReading(clearingStartMeterRecord.getReadData()+"");
|
|
@@ -184,7 +191,7 @@ public class MeasurementSettlementRecordHander {
|
|
|
* @param
|
|
|
* @return
|
|
|
*/
|
|
|
- protected MeterReadRecordDTO getClearingStartMeterRecord(Device device,Date clearingStartDate ,MeasurementRecord lastItem,List<MeterReadRecord> records) {
|
|
|
+ protected MeterReadRecordDTO getClearingStartMeterRecord(Device device,Date clearingStartDate ,MeasurementRecord lastItem,List<MeterReadRecordVo> records) {
|
|
|
MeterReadRecordDTO r = new MeterReadRecordDTO();
|
|
|
// 设备为未启动则直接设置为 0
|
|
|
if(device.getDeviceStatus()==theDeviceDoesNotStart) {
|
|
@@ -209,20 +216,36 @@ public class MeasurementSettlementRecordHander {
|
|
|
r.setReadData(0d);
|
|
|
}
|
|
|
else {
|
|
|
- MeterReadRecord mr = records.get(records.size() - 1);
|
|
|
- r.setReadDateTime(new Date(mr.getData().get(0).getReadTime()));
|
|
|
- r.setReadData(mr.getData().get(0).getReadData());
|
|
|
+ MeterReadRecordVo mr = records.get(records.size() - 1);
|
|
|
+ setMeterReadingData(mr,r);
|
|
|
}
|
|
|
}
|
|
|
else {
|
|
|
MeterReadRecordVo mr = mrs.get(0);
|
|
|
- r.setReadDateTime(new Date(mr.getData().getReadTime()));
|
|
|
- r.setReadData(mr.getData().getReadData());
|
|
|
+ setMeterReadingData(mr,r);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
return r;
|
|
|
}
|
|
|
+ private void setMeterReadingData(MeterReadRecordVo mr,MeterReadRecordDTO r){
|
|
|
+ r.setReadDateTime(conversionMeterReadingTime(mr.getData().getReadTime()));
|
|
|
+ Double readData = mr.getData().getReadData();
|
|
|
+ r.setReadData(0d);
|
|
|
+ if(readData!=null){
|
|
|
+ r.setReadData(readData);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ private Date conversionMeterReadingTime(String time){
|
|
|
+
|
|
|
+ Date date=null;
|
|
|
+ if(time!=null){
|
|
|
+ Long timestamp=Long.parseLong(time);
|
|
|
+ date=new Date(time);
|
|
|
+ }
|
|
|
+ return date;
|
|
|
+ }
|
|
|
/**
|
|
|
* 获取结算结束日期的抄表数据
|
|
|
* @param device 设备
|
|
@@ -231,7 +254,7 @@ public class MeasurementSettlementRecordHander {
|
|
|
* @param
|
|
|
* @return
|
|
|
*/
|
|
|
- protected MeterReadRecordDTO getClearingEndMeterRecord(Device device,Date clearingEndDate ,MeasurementRecord lastItem,List<MeterReadRecord> records) {
|
|
|
+ protected MeterReadRecordDTO getClearingEndMeterRecord(Device device,Date clearingEndDate ,MeasurementRecord lastItem,List<MeterReadRecordVo> records) {
|
|
|
MeterReadRecordDTO r = new MeterReadRecordDTO();
|
|
|
// 设备为未启动则直接设置为 0
|
|
|
if(device.getDeviceStatus() == theDeviceDoesNotStart) {
|
|
@@ -255,16 +278,14 @@ public class MeasurementSettlementRecordHander {
|
|
|
}
|
|
|
else {
|
|
|
MeterReadRecordVo mr = mrs.get(0);
|
|
|
- r.setReadDateTime(new Date(mr.getData().getReadTime()));
|
|
|
- r.setReadData(mr.getData().getReadData());
|
|
|
+ setMeterReadingData(mr,r);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
// 取结算周期内距离结算结束日期最近的数据
|
|
|
else {
|
|
|
- MeterReadRecord mr = records.get(0);
|
|
|
- r.setReadDateTime(new Date(mr.getData().get(0).getReadTime()));
|
|
|
- r.setReadData(mr.getData().get(0).getReadData());
|
|
|
+ MeterReadRecordVo mr = records.get(0);
|
|
|
+ setMeterReadingData(mr,r);
|
|
|
}
|
|
|
}
|
|
|
return r ;
|