浏览代码

优化水电抄表功能

Your Name 2 年之前
父节点
当前提交
bdf14974db

+ 3 - 0
java110-interface/src/main/java/com/java110/intf/fee/IPayFeeMonthInnerServiceSMO.java

@@ -29,6 +29,9 @@ public interface IPayFeeMonthInnerServiceSMO {
     int payFeeDetailRefreshFeeMonth(@RequestBody PayFeeDetailRefreshFeeMonthDto payFeeDetailRefreshFeeMonthDto);
 
 
+    @RequestMapping(value = "/doGeneratorOrRefreshFeeMonth", method = RequestMethod.POST)
+    int doGeneratorOrRefreshFeeMonth(@RequestBody PayFeeDetailRefreshFeeMonthDto payFeeDetailRefreshFeeMonthDto);
+
     @RequestMapping(value = "/doGeneratorOrRefreshAllFeeMonth", method = RequestMethod.POST)
     int doGeneratorOrRefreshAllFeeMonth(@RequestBody PayFeeDetailRefreshFeeMonthDto payFeeDetailRefreshFeeMonthDto);
 

+ 7 - 0
service-fee/src/main/java/com/java110/fee/smo/impl/PayFeeMonthInnerServiceSMOImpl.java

@@ -31,6 +31,13 @@ public class PayFeeMonthInnerServiceSMOImpl extends BaseServiceSMO implements IP
         return 1;
     }
 
+    @Override
+    public int doGeneratorOrRefreshFeeMonth(@RequestBody PayFeeDetailRefreshFeeMonthDto payFeeDetailRefreshFeeMonthDto) {
+        payFeeMonthImpl.doGeneratorOrRefreshFeeMonth(payFeeDetailRefreshFeeMonthDto.getFeeId(),
+                payFeeDetailRefreshFeeMonthDto.getCommunityId());
+        return 1;
+    }
+
     @Override
     public int doGeneratorOrRefreshAllFeeMonth(@RequestBody PayFeeDetailRefreshFeeMonthDto payFeeDetailRefreshFeeMonthDto) {
         payFeeMonthImpl.doGeneratorOrRefreshAllFeeMonth(payFeeDetailRefreshFeeMonthDto.getCommunityId());

+ 9 - 9
service-job/src/main/java/com/java110/job/importData/adapt/ImportMeterWaterFeeQueueDataAdapt.java

@@ -10,12 +10,11 @@ import com.java110.dto.log.AssetImportLogDetailDto;
 import com.java110.dto.meter.ImportExportMeterWaterDto;
 import com.java110.dto.meter.MeterWaterDto;
 import com.java110.dto.owner.OwnerDto;
+import com.java110.dto.payFee.PayFeeDetailRefreshFeeMonthDto;
 import com.java110.dto.room.RoomDto;
 import com.java110.intf.community.IParkingSpaceInnerServiceSMO;
 import com.java110.intf.community.IRoomInnerServiceSMO;
-import com.java110.intf.fee.IFeeAttrInnerServiceSMO;
-import com.java110.intf.fee.IFeeInnerServiceSMO;
-import com.java110.intf.fee.IMeterWaterInnerServiceSMO;
+import com.java110.intf.fee.*;
 import com.java110.intf.store.IContractRoomInnerServiceSMO;
 import com.java110.intf.user.IOwnerInnerServiceSMO;
 import com.java110.job.importData.DefaultImportData;
@@ -56,6 +55,9 @@ public class ImportMeterWaterFeeQueueDataAdapt extends DefaultImportData impleme
     @Autowired
     private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl;
 
+    @Autowired
+    private IPayFeeMonthInnerServiceSMO payFeeMonthInnerServiceSMOImpl;
+
     //    @Autowired
 //    private IPayFeeMonth payFeeMonthImpl;
     @Override
@@ -118,13 +120,11 @@ public class ImportMeterWaterFeeQueueDataAdapt extends DefaultImportData impleme
         meterWaterInnerServiceSMOImpl.saveMeterWaters(meterWaterPos);
 
         // todo 这里异步的方式计算 月数据 和欠费数据
-        List<String> feeIds = new ArrayList<>();
-        for (PayFeePo feePo : fees) {
-            feeIds.add(feePo.getFeeId());
-        }
-        //   payFeeMonthImpl.doGeneratorFeeMonths(feeIds, fees.get(0).getCommunityId());
-
 
+        PayFeeDetailRefreshFeeMonthDto payFeeDetailRefreshFeeMonthDto = new PayFeeDetailRefreshFeeMonthDto();
+        payFeeDetailRefreshFeeMonthDto.setCommunityId(communityId);
+        payFeeDetailRefreshFeeMonthDto.setFeeId(fees.get(0).getFeeId());
+        payFeeMonthInnerServiceSMOImpl.doGeneratorOrRefreshFeeMonth(payFeeDetailRefreshFeeMonthDto);
     }
 
     private void dealImportExportMeterWater(ImportExportMeterWaterDto importExportMeterWaterDto, String communityId,

+ 97 - 0
springboot/src/main/java/com/java110/boot/importData/adapt/ImportMeterWaterFee2DataCleaningAdapt.java

@@ -0,0 +1,97 @@
+package com.java110.boot.importData.adapt;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.boot.importData.DefaultImportDataAdapt;
+import com.java110.boot.importData.IImportDataCleaningAdapt;
+import com.java110.dto.meter.ImportExportMeterWaterDto;
+import com.java110.dto.system.ComponentValidateResult;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.DateUtil;
+import com.java110.utils.util.ImportExcelUtils;
+import com.java110.utils.util.StringUtil;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 水电抄表
+ * 方式1
+ */
+@Service("importMeterWaterFee2DataCleaning")
+public class ImportMeterWaterFee2DataCleaningAdapt extends DefaultImportDataAdapt implements IImportDataCleaningAdapt {
+    @Override
+    public List analysisExcel(Workbook workbook, JSONObject paramIn, ComponentValidateResult result) throws Exception {
+        List<ImportExportMeterWaterDto> rooms = new ArrayList<ImportExportMeterWaterDto>();
+        //获取楼信息
+        getRooms(workbook, rooms);
+        generatorBatch(paramIn);
+        for (ImportExportMeterWaterDto importRoomFee : rooms) {
+            importRoomFee.setBatchId(paramIn.getString("batchId"));
+            importRoomFee.setUserId(paramIn.getString("userId"));
+            importRoomFee.setStoreId(paramIn.getString("storeId"));
+            importRoomFee.setFeeTypeCd(paramIn.getString("feeTypeCd"));
+            importRoomFee.setConfigId(paramIn.getString("configId"));
+            importRoomFee.setMeterType(paramIn.getString("meterType"));
+            importRoomFee.setCommunityId(paramIn.getString("communityId"));
+
+        }
+        return rooms;
+    }
+
+    /**
+     * 获取 房屋信息
+     *
+     * @param workbook
+     * @param rooms
+     */
+    private void getRooms(Workbook workbook, List<ImportExportMeterWaterDto> rooms) {
+        Sheet sheet = null;
+        sheet = ImportExcelUtils.getSheet(workbook, "房屋费用信息");
+        List<Object[]> oList = ImportExcelUtils.listFromSheet(sheet);
+        ImportExportMeterWaterDto importRoomFee = null;
+        for (int osIndex = 0; osIndex < oList.size(); osIndex++) {
+            Object[] os = oList.get(osIndex);
+            if (osIndex == 0 || osIndex == 1) { // 第一行是 头部信息 直接跳过
+                continue;
+            }
+            if (StringUtil.isNullOrNone(os[0])) {
+                continue;
+            }
+            Assert.hasValue(os[1], (osIndex + 1) + "单元编号不能为空");
+            Assert.hasValue(os[2], (osIndex + 1) + "房屋编号不能为空");
+            Assert.hasValue(os[4], (osIndex + 1) + "单价不能为空");
+            Assert.hasValue(os[5], (osIndex + 1) + "上期度数不能为空");
+            Assert.hasValue(os[6], (osIndex + 1) + "上期度数时间不能为空");
+            Assert.hasValue(os[7], (osIndex + 1) + "本期度数不能为空");
+            Assert.hasValue(os[8], (osIndex + 1) + "本期度数时间不能为空");
+
+//
+
+            String startTime = excelDoubleToDate(os[6].toString());
+            String endTime = excelDoubleToDate(os[8].toString());
+            Assert.isDate(startTime, DateUtil.DATE_FORMATE_STRING_B, (osIndex + 1) + "行开始时间格式错误 请填写YYYY-MM-DD 文本格式");
+            Assert.isDate(endTime, DateUtil.DATE_FORMATE_STRING_B, (osIndex + 1) + "行结束时间格式错误 请填写YYYY-MM-DD 文本格式");
+
+
+            importRoomFee = new ImportExportMeterWaterDto();
+            importRoomFee.setFloorNum(os[0].toString());
+            importRoomFee.setUnitNum(os[1].toString());
+            importRoomFee.setRoomNum(os[2].toString());
+            importRoomFee.setPrice(Double.parseDouble(os[4].toString()));
+            importRoomFee.setPreDegrees(os[5].toString());
+            importRoomFee.setPreReadingTime(startTime);
+            importRoomFee.setCurDegrees(os[7].toString());
+            importRoomFee.setCurReadingTime(endTime);
+            rooms.add(importRoomFee);
+            if (Double.parseDouble(importRoomFee.getCurDegrees()) < Double.parseDouble(importRoomFee.getPreDegrees())) {
+                throw new IllegalArgumentException((osIndex + 1) + "行本期读数小于上期读数");
+            }
+        }
+    }
+
+
+
+}

+ 50 - 1
springboot/src/main/java/com/java110/boot/importData/adapt/ImportMeterWaterFeeDataCleaningAdapt.java

@@ -31,7 +31,12 @@ public class ImportMeterWaterFeeDataCleaningAdapt  extends DefaultImportDataAdap
     public List analysisExcel(Workbook workbook, JSONObject paramIn, ComponentValidateResult result) throws Exception {
         List<ImportExportMeterWaterDto> rooms = new ArrayList<ImportExportMeterWaterDto>();
         //获取楼信息
-        getRooms(workbook, rooms);
+        if(paramIn.containsKey("importMeterDynamic") ){
+            getRooms2(workbook, rooms);
+        }else{
+            getRooms(workbook, rooms);
+        }
+
         generatorBatch(paramIn);
         for (ImportExportMeterWaterDto importRoomFee : rooms) {
             importRoomFee.setBatchId(paramIn.getString("batchId"));
@@ -97,5 +102,49 @@ public class ImportMeterWaterFeeDataCleaningAdapt  extends DefaultImportDataAdap
     }
 
 
+    private void getRooms2(Workbook workbook, List<ImportExportMeterWaterDto> rooms) {
+        Sheet sheet = null;
+        sheet = ImportExcelUtils.getSheet(workbook, "房屋费用信息");
+        List<Object[]> oList = ImportExcelUtils.listFromSheet(sheet);
+        ImportExportMeterWaterDto importRoomFee = null;
+        for (int osIndex = 0; osIndex < oList.size(); osIndex++) {
+            Object[] os = oList.get(osIndex);
+            if (osIndex == 0 || osIndex == 1) { // 第一行是 头部信息 直接跳过
+                continue;
+            }
+            if (StringUtil.isNullOrNone(os[0])) {
+                continue;
+            }
+            Assert.hasValue(os[1], (osIndex + 1) + "单元编号不能为空");
+            Assert.hasValue(os[2], (osIndex + 1) + "房屋编号不能为空");
+            Assert.hasValue(os[4], (osIndex + 1) + "单价不能为空");
+            Assert.hasValue(os[5], (osIndex + 1) + "上期度数不能为空");
+            Assert.hasValue(os[6], (osIndex + 1) + "上期度数时间不能为空");
+            Assert.hasValue(os[7], (osIndex + 1) + "本期度数不能为空");
+            Assert.hasValue(os[8], (osIndex + 1) + "本期度数时间不能为空");
+
+//
+
+            String startTime = excelDoubleToDate(os[6].toString());
+            String endTime = excelDoubleToDate(os[8].toString());
+            Assert.isDate(startTime, DateUtil.DATE_FORMATE_STRING_B, (osIndex + 1) + "行开始时间格式错误 请填写YYYY-MM-DD 文本格式");
+            Assert.isDate(endTime, DateUtil.DATE_FORMATE_STRING_B, (osIndex + 1) + "行结束时间格式错误 请填写YYYY-MM-DD 文本格式");
+
+
+            importRoomFee = new ImportExportMeterWaterDto();
+            importRoomFee.setFloorNum(os[0].toString());
+            importRoomFee.setUnitNum(os[1].toString());
+            importRoomFee.setRoomNum(os[2].toString());
+            importRoomFee.setPrice(Double.parseDouble(os[4].toString()));
+            importRoomFee.setPreDegrees(os[5].toString());
+            importRoomFee.setPreReadingTime(startTime);
+            importRoomFee.setCurDegrees(os[7].toString());
+            importRoomFee.setCurReadingTime(endTime);
+            rooms.add(importRoomFee);
+            if (Double.parseDouble(importRoomFee.getCurDegrees()) < Double.parseDouble(importRoomFee.getPreDegrees())) {
+                throw new IllegalArgumentException((osIndex + 1) + "行本期读数小于上期读数");
+            }
+        }
+    }
 
 }