소스 검색

结算记录详情修改

hym 3 년 전
부모
커밋
c1f8bc0ec1

+ 3 - 3
zoniot-rmcp/zoniot-rmcp-core/src/main/java/com/zcxk/rmcp/core/dao/mongo/MeterReadRecordDao.java

@@ -183,7 +183,7 @@ public class MeterReadRecordDao extends BaseDao<MeterReadRecord, String> impleme
      * @updateTime 2021/7/28 10:25
      * @throws
      */
-    public List<MeterReadRecord> querySettlementWaterConsumption(Device device, Date clearingStartDate, Date clearingEndDate) {
+    public List<MeterReadRecordVo> querySettlementWaterConsumption(Device device, Date clearingStartDate, Date clearingEndDate) {
         Criteria criteria = new Criteria();
         criteria.and("deviceId").is(device.getId());
         Criteria criteria1 = Criteria.where("data.readDate").lte(Integer.valueOf(
@@ -196,8 +196,8 @@ public class MeterReadRecordDao extends BaseDao<MeterReadRecord, String> impleme
                 dayCritera,null);
 
         AggregationOptions aggregationOptions = AggregationOptions.builder().allowDiskUse(true).build();
-        AggregationResults<MeterReadRecord> aggregate = mongoTemplate.aggregate(Aggregation.newAggregation(countQuery).withOptions(aggregationOptions)
-                , MeterReadRecord.class, MeterReadRecord.class);
+        AggregationResults<MeterReadRecordVo> aggregate = mongoTemplate.aggregate(Aggregation.newAggregation(countQuery).withOptions(aggregationOptions)
+                , MeterReadRecord.class, MeterReadRecordVo.class);
         return aggregate.getMappedResults();
     }
 

+ 9 - 3
zoniot-rmcp/zoniot-rmcp-core/src/main/java/com/zcxk/rmcp/core/entity/MeasurementInstance.java

@@ -11,19 +11,19 @@ import io.swagger.annotations.ApiModelProperty;
  * (MeasurementInstance)实体类
  *
  * @author hym
- * @since 2021-07-28 16:28:53
+ * @since 2021-08-30 11:36:03
  */
 @Data
 @ApiModel
 public class MeasurementInstance implements Serializable {
-    private static final long serialVersionUID = -46257933996329427L;
+    private static final long serialVersionUID = 348949429881023711L;
     @ApiModelProperty(value = "")
     private Integer id;
     /**
      * 结算计划表id
      */
     @ApiModelProperty(value = "结算计划表id")
-    private Integer planid;
+    private Integer planId;
     /**
      * 总表数目
      */
@@ -64,4 +64,10 @@ public class MeasurementInstance implements Serializable {
      */
     @ApiModelProperty(value = "开始日期")
     private Date clearingStartDate;
+    @ApiModelProperty(value = "")
+    private Integer companyOrgId;
+    @ApiModelProperty(value = "")
+    private Integer deptOrgId;
+    @ApiModelProperty(value = "")
+    private Integer communityId;
 }

+ 7 - 6
zoniot-rmcp/zoniot-rmcp-core/src/main/java/com/zcxk/rmcp/core/mapper/MeasurementInstanceMapper.xml

@@ -47,9 +47,9 @@
         commuity.name communityName
         from rmcp_measurement_instance mi  join rmcp_measurement_settlement ms on
             mi.plan_id=ms.id
-        join rmcp_org company on ms.company_org_id=company.ID
-        left join rmcp_org depart on ms.dept_org_id=depart.ID
-        left join  rmcp_community commuity on ms.community_id=commuity.id
+        join rmcp_org company on mi.company_org_id=company.ID
+        left join rmcp_org depart on mi.dept_org_id=depart.ID
+        left join  rmcp_community commuity on mi.community_id=commuity.id
         <where>
             mi.status=1
             <if test="measurement.companyOrgId != null">
@@ -99,10 +99,11 @@
     <insert id="insert" keyProperty="id" useGeneratedKeys="true">
         insert into rmcp_measurement_instance(id, plan_id, total_water_meters, number_of_water_meters_reviewed,
                                               create_date, update_date, create_by, update_by, status, billing_period,
-                                              clearing_day, clearing_end_date, clearing_start_date)
-        values (#{id}, #{planid}, #{totalWaterMeters}, #{numberOfWaterMetersReviewed}, #{createDate}, #{updateDate},
+                                              clearing_day, clearing_end_date, clearing_start_date,company_org_id
+                                              ,community_id,dept_org_id)
+        values (#{id}, #{planId}, #{totalWaterMeters}, #{numberOfWaterMetersReviewed}, #{createDate}, #{updateDate},
                 #{createBy}, #{updateBy}, #{status}, #{billingPeriod}, #{clearingDay}, #{clearingEndDate},
-                #{clearingStartDate})
+                #{clearingStartDate},#{companyOrgId},#{communityId},#{deptOrgId})
     </insert>
 
     <!-- 批量新增 -->

+ 2 - 2
zoniot-rmcp/zoniot-rmcp-core/src/main/java/com/zcxk/rmcp/core/mapper/MeasurementSettlementMapper.xml

@@ -132,10 +132,10 @@
             <if test="companyOrgId != null">
                 company_org_id = #{companyOrgId},
             </if>
-            <if test="deptOrgId != null">
+            <if test="deptOrgId != -1">
                 dept_org_id = #{deptOrgId},
             </if>
-            <if test="communityId != null">
+            <if test="communityId != -1">
                 community_id = #{communityId},
             </if>
             <if test="billingCycle != null">

+ 6 - 3
zoniot-rmcp/zoniot-rmcp-web/src/main/java/com/zcxk/rmcp/web/service/impl/MeasurementSettlementServiceImpl.java

@@ -87,8 +87,7 @@ public class MeasurementSettlementServiceImpl implements MeasurementSettlementSe
         measurementSettlement.setStatus(1);
         String tenantId=currentUser.getTenantId();
         measurementSettlement.setTenantId(tenantId);
-        List<Device> devices = deviceMapper.findMeasurementDevice(measurementSettlementDto);
-        measurementSettlement.setTotalWaterMeters(devices.size());
+        setTotalWaters(measurementSettlementDto,measurementSettlement);
         measurementSettlementMapper.insert(measurementSettlement);
         String add = xxlJobUtil.add(setInfo(measurementSettlementDto));
         JSONObject jsonObject = JSON.parseObject(add);
@@ -105,7 +104,10 @@ public class MeasurementSettlementServiceImpl implements MeasurementSettlementSe
 
 
     }
-
+    private void setTotalWaters(MeasurementSettlementDto measurementSettlementDto,MeasurementSettlement measurementSettlement){
+        List<Device> devices = deviceMapper.findMeasurementDevice(measurementSettlementDto);
+        measurementSettlement.setTotalWaterMeters(devices.size());
+    }
     @Override
     public void updatePlan(MeasurementSettlementDto measurementSettlementDto) {
         MeasurementSettlement measurementSettlement=new MeasurementSettlement();
@@ -114,6 +116,7 @@ public class MeasurementSettlementServiceImpl implements MeasurementSettlementSe
         measurementSettlementDto.setTenantId(currentUser.getTenantId());
         measurementSettlement.setUpdateBy(currentUser.getUsername());
         measurementSettlement.setUpdateDate(new Date());
+        setTotalWaters(measurementSettlementDto,measurementSettlement);
         measurementSettlementMapper.update(measurementSettlement);
         XxlJobInfo xxlJobInfo = setInfo(measurementSettlementDto);
         Long taskId = measurementSettlementDto.getTaskId();

+ 36 - 15
zoniot-rmcp/zoniot-xxljob-client/src/main/java/com/zcxk/xxljob/jobs/MeasurementSettlementRecordHander.java

@@ -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 ;