Prechádzať zdrojové kódy

优化动态费用水电抄表2 bug

Signed-off-by: java110 <928255095@qq.com>
java110 1 mesiac pred
rodič
commit
546be674a0

+ 55 - 10
service-api/src/main/java/com/java110/api/importData/adapt/ImportMeterWaterFeeDataCleaningAdapt.java

@@ -3,17 +3,19 @@ package com.java110.api.importData.adapt;
 import com.alibaba.fastjson.JSONObject;
 import com.java110.api.importData.DefaultImportDataAdapt;
 import com.java110.api.importData.IImportDataCleaningAdapt;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.importData.ImportRoomFee;
 import com.java110.dto.meter.ImportExportMeterWaterDto;
+import com.java110.dto.payFee.PayFeeBatchDto;
 import com.java110.dto.system.ComponentValidateResult;
-import com.java110.intf.fee.IPayFeeBatchV1InnerServiceSMO;
-import com.java110.intf.user.IUserInnerServiceSMO;
+import com.java110.dto.user.UserDto;
+import com.java110.po.payFee.PayFeeBatchPo;
 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.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
@@ -25,17 +27,16 @@ import java.util.List;
  */
 @Service("importMeterWaterFeeDataCleaning")
 public class ImportMeterWaterFeeDataCleaningAdapt extends DefaultImportDataAdapt implements IImportDataCleaningAdapt {
-
-    @Autowired
-    private IPayFeeBatchV1InnerServiceSMO payFeeBatchV1InnerServiceSMOImpl;
-
-    @Autowired
-    private IUserInnerServiceSMO userInnerServiceSMOImpl;
     @Override
     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"));
@@ -101,5 +102,49 @@ public class ImportMeterWaterFeeDataCleaningAdapt extends DefaultImportDataAdapt
     }
 
 
+    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) + "行本期读数小于上期读数");
+            }
+        }
+    }
 
 }