Your Name лет назад: 2
Родитель
Сommit
2dd190c627

+ 48 - 0
java110-bean/src/main/java/com/java110/dto/meter/ImportExportMeterWaterDto.java

@@ -28,6 +28,14 @@ public class ImportExportMeterWaterDto extends PageDto implements Serializable {
     private String roomNum;
     private double price;
 
+    private String storeId;
+
+    private String configId;
+
+    private String userId;
+    private String feeTypeCd;
+    private String batchId;
+
 
     public String getRemark() {
         return remark;
@@ -124,4 +132,44 @@ public class ImportExportMeterWaterDto extends PageDto implements Serializable {
     public void setPrice(double price) {
         this.price = price;
     }
+
+    public String getStoreId() {
+        return storeId;
+    }
+
+    public void setStoreId(String storeId) {
+        this.storeId = storeId;
+    }
+
+    public String getConfigId() {
+        return configId;
+    }
+
+    public void setConfigId(String configId) {
+        this.configId = configId;
+    }
+
+    public String getUserId() {
+        return userId;
+    }
+
+    public void setUserId(String userId) {
+        this.userId = userId;
+    }
+
+    public String getFeeTypeCd() {
+        return feeTypeCd;
+    }
+
+    public void setFeeTypeCd(String feeTypeCd) {
+        this.feeTypeCd = feeTypeCd;
+    }
+
+    public String getBatchId() {
+        return batchId;
+    }
+
+    public void setBatchId(String batchId) {
+        this.batchId = batchId;
+    }
 }

+ 42 - 0
service-api/src/main/java/com/java110/api/importData/DefaultImportDataAdapt.java

@@ -1,11 +1,26 @@
 package com.java110.api.importData;
 
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.payFee.PayFeeBatchDto;
+import com.java110.dto.user.UserDto;
+import com.java110.intf.fee.IPayFeeBatchV1InnerServiceSMO;
+import com.java110.intf.user.IUserInnerServiceSMO;
+import com.java110.po.payFee.PayFeeBatchPo;
+import com.java110.utils.util.Assert;
+import org.springframework.beans.factory.annotation.Autowired;
+
 import java.text.SimpleDateFormat;
 import java.util.Date;
+import java.util.List;
 
 public class DefaultImportDataAdapt {
 
+    @Autowired
+    private IPayFeeBatchV1InnerServiceSMO payFeeBatchV1InnerServiceSMOImpl;
 
+    @Autowired
+    private IUserInnerServiceSMO userInnerServiceSMOImpl;
     protected boolean hasSpecialCharacters(String str) {
         if (str.contains("-") || str.contains("#") || str.contains("?") || str.contains("&")) {
             return true;
@@ -48,4 +63,31 @@ public class DefaultImportDataAdapt {
         return tDate;
     }
 
+    /**
+     * 生成批次号
+     *
+     * @param reqJson
+     */
+    protected void generatorBatch(JSONObject reqJson) {
+        PayFeeBatchPo payFeeBatchPo = new PayFeeBatchPo();
+        payFeeBatchPo.setBatchId(GenerateCodeFactory.getGeneratorId("12"));
+        payFeeBatchPo.setCommunityId(reqJson.getString("communityId"));
+        payFeeBatchPo.setCreateUserId(reqJson.getString("userId"));
+        UserDto userDto = new UserDto();
+        userDto.setUserId(reqJson.getString("userId"));
+        List<UserDto> userDtos = userInnerServiceSMOImpl.getUsers(userDto);
+
+        Assert.listOnlyOne(userDtos, "用户不存在");
+        payFeeBatchPo.setCreateUserName(userDtos.get(0).getUserName());
+        payFeeBatchPo.setState(PayFeeBatchDto.STATE_NORMAL);
+        payFeeBatchPo.setMsg("正常");
+        int flag = payFeeBatchV1InnerServiceSMOImpl.savePayFeeBatch(payFeeBatchPo);
+
+        if (flag < 1) {
+            throw new IllegalArgumentException("生成批次失败");
+        }
+
+        reqJson.put("batchId", payFeeBatchPo.getBatchId());
+    }
+
 }

+ 0 - 20
service-api/src/main/java/com/java110/api/importData/adapt/ImportCarHistoryFeeDetailDataCleaningAdapt.java

@@ -143,26 +143,6 @@ public class ImportCarHistoryFeeDetailDataCleaningAdapt extends DefaultImportDat
      *
      * @param reqJson
      */
-    private void generatorBatch(JSONObject reqJson) {
-        PayFeeBatchPo payFeeBatchPo = new PayFeeBatchPo();
-        payFeeBatchPo.setBatchId(GenerateCodeFactory.getGeneratorId("12"));
-        payFeeBatchPo.setCommunityId(reqJson.getString("communityId"));
-        payFeeBatchPo.setCreateUserId(reqJson.getString("userId"));
-        UserDto userDto = new UserDto();
-        userDto.setUserId(reqJson.getString("userId"));
-        List<UserDto> userDtos = userInnerServiceSMOImpl.getUsers(userDto);
-
-        Assert.listOnlyOne(userDtos, "用户不存在");
-        payFeeBatchPo.setCreateUserName(userDtos.get(0).getUserName());
-        payFeeBatchPo.setState(PayFeeBatchDto.STATE_NORMAL);
-        payFeeBatchPo.setMsg("正常");
-        int flag = payFeeBatchV1InnerServiceSMOImpl.savePayFeeBatch(payFeeBatchPo);
-
-        if (flag < 1) {
-            throw new IllegalArgumentException("生成批次失败");
-        }
 
-        reqJson.put("batchId", payFeeBatchPo.getBatchId());
-    }
 
 }

+ 105 - 0
service-api/src/main/java/com/java110/api/importData/adapt/ImportMeterWaterFeeDataCleaningAdapt.java

@@ -0,0 +1,105 @@
+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.dto.meter.ImportExportMeterWaterDto;
+import com.java110.dto.system.ComponentValidateResult;
+import com.java110.intf.fee.IPayFeeBatchV1InnerServiceSMO;
+import com.java110.intf.user.IUserInnerServiceSMO;
+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;
+import java.util.List;
+
+/**
+ * 水电抄表
+ * 方式1
+ */
+@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);
+        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[3], (osIndex + 1) + "上期度数不能为空");
+            Assert.hasValue(os[4], (osIndex + 1) + "上期度数时间不能为空");
+            Assert.hasValue(os[5], (osIndex + 1) + "本期度数不能为空");
+            Assert.hasValue(os[6], (osIndex + 1) + "本期度数时间不能为空");
+
+//
+
+            String startTime = excelDoubleToDate(os[4].toString());
+            String endTime = excelDoubleToDate(os[6].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.setPreDegrees(os[3].toString());
+            importRoomFee.setPreReadingTime(startTime);
+            importRoomFee.setCurDegrees(os[5].toString());
+            importRoomFee.setCurReadingTime(endTime);
+            importRoomFee.setPrice(-1);
+            rooms.add(importRoomFee);
+            if (Double.parseDouble(importRoomFee.getCurDegrees()) < Double.parseDouble(importRoomFee.getPreDegrees())) {
+                throw new IllegalArgumentException((osIndex + 1) + "行本期读数小于上期读数");
+            }
+        }
+    }
+
+
+
+}

+ 0 - 27
service-api/src/main/java/com/java110/api/importData/adapt/ImportRoomHistoryFeeDetailDataCleaningAdapt.java

@@ -147,31 +147,4 @@ public class ImportRoomHistoryFeeDetailDataCleaningAdapt extends DefaultImportDa
         }
     }
 
-    /**
-     * 生成批次号
-     *
-     * @param reqJson
-     */
-    private void generatorBatch(JSONObject reqJson) {
-        PayFeeBatchPo payFeeBatchPo = new PayFeeBatchPo();
-        payFeeBatchPo.setBatchId(GenerateCodeFactory.getGeneratorId("12"));
-        payFeeBatchPo.setCommunityId(reqJson.getString("communityId"));
-        payFeeBatchPo.setCreateUserId(reqJson.getString("userId"));
-        UserDto userDto = new UserDto();
-        userDto.setUserId(reqJson.getString("userId"));
-        List<UserDto> userDtos = userInnerServiceSMOImpl.getUsers(userDto);
-
-        Assert.listOnlyOne(userDtos, "用户不存在");
-        payFeeBatchPo.setCreateUserName(userDtos.get(0).getUserName());
-        payFeeBatchPo.setState(PayFeeBatchDto.STATE_NORMAL);
-        payFeeBatchPo.setMsg("正常");
-        int flag = payFeeBatchV1InnerServiceSMOImpl.savePayFeeBatch(payFeeBatchPo);
-
-        if (flag < 1) {
-            throw new IllegalArgumentException("生成批次失败");
-        }
-
-        reqJson.put("batchId", payFeeBatchPo.getBatchId());
-    }
-
 }

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

@@ -0,0 +1,259 @@
+package com.java110.job.importData.adapt;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.contract.ContractRoomDto;
+import com.java110.dto.fee.FeeAttrDto;
+import com.java110.dto.fee.FeeDto;
+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.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.store.IContractRoomInnerServiceSMO;
+import com.java110.intf.user.IOwnerInnerServiceSMO;
+import com.java110.job.importData.DefaultImportData;
+import com.java110.job.importData.IImportDataAdapt;
+import com.java110.po.fee.FeeAttrPo;
+import com.java110.po.fee.PayFeePo;
+import com.java110.po.meter.MeterWaterPo;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.vo.ResultVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Service("importMeterWaterFeeQueueData")
+public class ImportMeterWaterFeeQueueDataAdapt extends DefaultImportData implements IImportDataAdapt {
+
+    @Autowired
+    private IMeterWaterInnerServiceSMO meterWaterInnerServiceSMOImpl;
+
+    @Autowired
+    private IRoomInnerServiceSMO roomInnerServiceSMOImpl;
+
+    @Autowired
+    private IParkingSpaceInnerServiceSMO parkingSpaceInnerServiceSMOImpl;
+
+    @Autowired
+    private IFeeInnerServiceSMO feeInnerServiceSMOImpl;
+
+    @Autowired
+    private IContractRoomInnerServiceSMO contractRoomInnerServiceSMOImpl;
+
+    @Autowired
+    private IFeeAttrInnerServiceSMO feeAttrInnerServiceSMOImpl;
+
+    @Autowired
+    private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl;
+
+    //    @Autowired
+//    private IPayFeeMonth payFeeMonthImpl;
+    @Override
+    public void importData(List<AssetImportLogDetailDto> assetImportLogDetailDtos) {
+
+        for (AssetImportLogDetailDto assetImportLogDetailDto : assetImportLogDetailDtos) {
+
+            try {
+                doImportData(assetImportLogDetailDto);
+                updateImportLogDetailState(assetImportLogDetailDto.getDetailId());
+            } catch (Exception e) {
+                e.printStackTrace();
+                updateImportLogDetailState(assetImportLogDetailDto.getDetailId(), e);
+            }
+        }
+    }
+
+    private void doImportData(AssetImportLogDetailDto assetImportLogDetailDto) {
+        JSONObject data = JSONObject.parseObject(assetImportLogDetailDto.getContent());
+        ImportExportMeterWaterDto importExportMeterWaterDto = BeanConvertUtil.covertBean(data, ImportExportMeterWaterDto.class);
+
+        String communityId = importExportMeterWaterDto.getCommunityId();
+        String storeId = importExportMeterWaterDto.getStoreId();
+        String configId = importExportMeterWaterDto.getConfigId();
+        String userId = importExportMeterWaterDto.getUserId();
+        String feeTypeCd = importExportMeterWaterDto.getFeeTypeCd();
+        String batchId = importExportMeterWaterDto.getBatchId();
+        String meterType = importExportMeterWaterDto.getMeterType();
+        JSONObject meteWaterJson = null;
+
+        List<PayFeePo> fees = new ArrayList<>();
+        List<MeterWaterPo> meterWaterPos = new ArrayList<>();
+        List<FeeAttrPo> feeAttrPos = new ArrayList<>();
+
+        dealImportExportMeterWater(importExportMeterWaterDto,
+                communityId,
+                storeId,
+                configId,
+                userId,
+                feeTypeCd,
+                fees,
+                meterWaterPos,
+                feeAttrPos,
+                batchId,
+                meterType
+        );
+
+
+        if (fees.size() < 1 || meterWaterPos.size() < 1) {
+            throw new IllegalArgumentException("批量抄表失败");
+        }
+
+        feeInnerServiceSMOImpl.saveFee(fees);
+
+        if (feeAttrPos.size() > 0) {
+            feeAttrInnerServiceSMOImpl.saveFeeAttrs(feeAttrPos);
+        }
+
+
+        meterWaterInnerServiceSMOImpl.saveMeterWaters(meterWaterPos);
+
+        // todo 这里异步的方式计算 月数据 和欠费数据
+        List<String> feeIds = new ArrayList<>();
+        for (PayFeePo feePo : fees) {
+            feeIds.add(feePo.getFeeId());
+        }
+        //   payFeeMonthImpl.doGeneratorFeeMonths(feeIds, fees.get(0).getCommunityId());
+
+
+    }
+
+    private void dealImportExportMeterWater(ImportExportMeterWaterDto importExportMeterWaterDto, String communityId,
+                                            String storeId, String configId, String userId, String feeTypeCd,
+                                            List<PayFeePo> fees, List<MeterWaterPo> meterWaterPos, List<FeeAttrPo> feeAttrPos,
+                                            String batchId, String meterType) {
+
+        RoomDto roomDto = new RoomDto();
+        roomDto.setCommunityId(communityId);
+        roomDto.setFloorNum(importExportMeterWaterDto.getFloorNum());
+        roomDto.setUnitNum(importExportMeterWaterDto.getUnitNum());
+        roomDto.setRoomNum(importExportMeterWaterDto.getRoomNum());
+        List<RoomDto> roomDtos = roomInnerServiceSMOImpl.queryRooms(roomDto);
+
+        Assert.listOnlyOne(roomDtos, "房屋未找到或找到多条" + importExportMeterWaterDto.getFloorNum() + "-" + importExportMeterWaterDto.getUnitNum() + "-" + importExportMeterWaterDto.getRoomNum());
+
+        String roomName = importExportMeterWaterDto.getFloorNum() + "-" + importExportMeterWaterDto.getUnitNum() + "-" + importExportMeterWaterDto.getRoomNum();
+
+        importExportMeterWaterDto.setMeterType(meterType);
+        //查询房屋是否有合同
+        ContractRoomDto contractRoomDto = new ContractRoomDto();
+
+        contractRoomDto.setRoomId(roomDtos.get(0).getRoomId());
+
+        List<ContractRoomDto> contractRoomDtos = contractRoomInnerServiceSMOImpl.queryContractRooms(contractRoomDto);
+
+
+        PayFeePo payFeePo = new PayFeePo();
+        payFeePo.setFeeId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_feeId, true));
+        payFeePo.setIncomeObjId(storeId);
+        payFeePo.setAmount("-1");
+        payFeePo.setStartTime(importExportMeterWaterDto.getPreReadingTime());
+        payFeePo.setEndTime(importExportMeterWaterDto.getPreReadingTime());
+        payFeePo.setPayerObjId(roomDtos.get(0).getRoomId());
+        payFeePo.setBatchId(batchId);
+        //payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_ROOM);
+        payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_ROOM);
+
+        if (contractRoomDtos != null && contractRoomDtos.size() > 0) {
+            payFeePo.setPayerObjId(contractRoomDtos.get(0).getContractId());
+            //payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_ROOM);
+            payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_CONTRACT);
+            FeeAttrPo feeAttrPo = new FeeAttrPo();
+            feeAttrPo.setCommunityId(communityId);
+            feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId, true));
+            feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_IMPORT_FEE_NAME);
+            String feeName = roomName;
+            if ("1010".equals(importExportMeterWaterDto.getMeterType())) {
+                feeName += "水费";
+            } else if ("2020".equals(importExportMeterWaterDto.getMeterType())) {
+                feeName += "电费";
+            } else {
+                feeName += "燃气费";
+            }
+            feeAttrPo.setValue(feeName);
+            feeAttrPo.setFeeId(payFeePo.getFeeId());
+            feeAttrPos.add(feeAttrPo);
+        }
+
+
+        //todo 保存房屋名称
+        FeeAttrPo feeAttrPo = new FeeAttrPo();
+        feeAttrPo.setCommunityId(communityId);
+        feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_PAY_OBJECT_NAME);
+        feeAttrPo.setValue(roomName);
+        feeAttrPo.setFeeId(payFeePo.getFeeId());
+        feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId, true));
+        feeAttrPos.add(feeAttrPo);
+
+        OwnerDto ownerDto = new OwnerDto();
+        ownerDto.setCommunityId(communityId);
+        ownerDto.setRoomId(roomDtos.get(0).getRoomId());
+        List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwnersByRoom(ownerDto);
+
+        if (ownerDtos != null && ownerDtos.size() > 0) {
+            feeAttrPo = new FeeAttrPo();
+            feeAttrPo.setCommunityId(communityId);
+            feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_ID);
+            feeAttrPo.setValue(ownerDtos.get(0).getOwnerId());
+            feeAttrPo.setFeeId(payFeePo.getFeeId());
+            feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId, true));
+            feeAttrPos.add(feeAttrPo);
+
+            feeAttrPo = new FeeAttrPo();
+            feeAttrPo.setCommunityId(communityId);
+            feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_LINK);
+            feeAttrPo.setValue(ownerDtos.get(0).getLink());
+            feeAttrPo.setFeeId(payFeePo.getFeeId());
+            feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId, true));
+            feeAttrPos.add(feeAttrPo);
+
+            feeAttrPo = new FeeAttrPo();
+            feeAttrPo.setCommunityId(communityId);
+            feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_NAME);
+            feeAttrPo.setValue(ownerDtos.get(0).getName());
+            feeAttrPo.setFeeId(payFeePo.getFeeId());
+            feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId, true));
+            feeAttrPos.add(feeAttrPo);
+
+        }
+        payFeePo.setFeeFlag(FeeDto.FEE_FLAG_ONCE);
+        payFeePo.setState(FeeDto.STATE_DOING);
+        //todo 如果 当前读数小于等于上期读数
+        //todo 这里注释,本来想着 方便物业再不用去缴费 读数为0 的,结果物业还习惯不了 总以为读数为0 的没有抄表成功,不会去结束费用中查看
+//        if (Double.parseDouble(importExportMeterWaterDto.getCurDegrees()) <= Double.parseDouble(importExportMeterWaterDto.getPreDegrees())) {
+//            payFeePo.setState(FeeDto.STATE_FINISH);
+//        }
+
+        payFeePo.setUserId(userId);
+        payFeePo.setFeeTypeCd(feeTypeCd);
+        payFeePo.setConfigId(configId);
+        payFeePo.setCommunityId(communityId);
+        fees.add(payFeePo);
+
+
+        MeterWaterPo meterWaterPo = new MeterWaterPo();
+        meterWaterPo.setCommunityId(communityId);
+        meterWaterPo.setCurDegrees(importExportMeterWaterDto.getCurDegrees());
+        meterWaterPo.setCurReadingTime(importExportMeterWaterDto.getCurReadingTime());
+        meterWaterPo.setFeeId(payFeePo.getFeeId());
+        meterWaterPo.setMeterType(importExportMeterWaterDto.getMeterType());
+        meterWaterPo.setObjId(roomDtos.get(0).getRoomId());
+        meterWaterPo.setObjName(importExportMeterWaterDto.getFloorNum() + "-" + importExportMeterWaterDto.getUnitNum() + "-" + importExportMeterWaterDto.getRoomNum());
+        meterWaterPo.setObjType(MeterWaterDto.OBJ_TYPE_ROOM);
+        meterWaterPo.setPreDegrees(importExportMeterWaterDto.getPreDegrees());
+        meterWaterPo.setPreReadingTime(importExportMeterWaterDto.getPreReadingTime());
+        meterWaterPo.setWaterId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_waterId, true));
+        meterWaterPo.setRemark(importExportMeterWaterDto.getRemark());
+        meterWaterPo.setPrice(importExportMeterWaterDto.getPrice());
+        meterWaterPos.add(meterWaterPo);
+    }
+}

+ 44 - 0
springboot/src/main/java/com/java110/boot/importData/DefaultImportDataAdapt.java

@@ -1,10 +1,27 @@
 package com.java110.boot.importData;
 
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.payFee.PayFeeBatchDto;
+import com.java110.dto.user.UserDto;
+import com.java110.intf.fee.IPayFeeBatchV1InnerServiceSMO;
+import com.java110.intf.user.IUserInnerServiceSMO;
+import com.java110.po.payFee.PayFeeBatchPo;
+import com.java110.utils.util.Assert;
+import org.springframework.beans.factory.annotation.Autowired;
+
 import java.text.SimpleDateFormat;
 import java.util.Date;
+import java.util.List;
 
 public class DefaultImportDataAdapt {
 
+    @Autowired
+    private IPayFeeBatchV1InnerServiceSMO payFeeBatchV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IUserInnerServiceSMO userInnerServiceSMOImpl;
+
 
     protected boolean hasSpecialCharacters(String str) {
         if (str.contains("-") || str.contains("#") || str.contains("?") || str.contains("&")) {
@@ -48,4 +65,31 @@ public class DefaultImportDataAdapt {
         return tDate;
     }
 
+    /**
+     * 生成批次号
+     *
+     * @param reqJson
+     */
+    protected void generatorBatch(JSONObject reqJson) {
+        PayFeeBatchPo payFeeBatchPo = new PayFeeBatchPo();
+        payFeeBatchPo.setBatchId(GenerateCodeFactory.getGeneratorId("12"));
+        payFeeBatchPo.setCommunityId(reqJson.getString("communityId"));
+        payFeeBatchPo.setCreateUserId(reqJson.getString("userId"));
+        UserDto userDto = new UserDto();
+        userDto.setUserId(reqJson.getString("userId"));
+        List<UserDto> userDtos = userInnerServiceSMOImpl.getUsers(userDto);
+
+        Assert.listOnlyOne(userDtos, "用户不存在");
+        payFeeBatchPo.setCreateUserName(userDtos.get(0).getUserName());
+        payFeeBatchPo.setState(PayFeeBatchDto.STATE_NORMAL);
+        payFeeBatchPo.setMsg("正常");
+        int flag = payFeeBatchV1InnerServiceSMOImpl.savePayFeeBatch(payFeeBatchPo);
+
+        if (flag < 1) {
+            throw new IllegalArgumentException("生成批次失败");
+        }
+
+        reqJson.put("batchId", payFeeBatchPo.getBatchId());
+    }
+
 }

+ 0 - 27
springboot/src/main/java/com/java110/boot/importData/adapt/ImportCarHistoryFeeDetailDataCleaningAdapt.java

@@ -140,31 +140,4 @@ public class ImportCarHistoryFeeDetailDataCleaningAdapt extends DefaultImportDat
         }
     }
 
-    /**
-     * 生成批次号
-     *
-     * @param reqJson
-     */
-    private void generatorBatch(JSONObject reqJson) {
-        PayFeeBatchPo payFeeBatchPo = new PayFeeBatchPo();
-        payFeeBatchPo.setBatchId(GenerateCodeFactory.getGeneratorId("12"));
-        payFeeBatchPo.setCommunityId(reqJson.getString("communityId"));
-        payFeeBatchPo.setCreateUserId(reqJson.getString("userId"));
-        UserDto userDto = new UserDto();
-        userDto.setUserId(reqJson.getString("userId"));
-        List<UserDto> userDtos = userInnerServiceSMOImpl.getUsers(userDto);
-
-        Assert.listOnlyOne(userDtos, "用户不存在");
-        payFeeBatchPo.setCreateUserName(userDtos.get(0).getUserName());
-        payFeeBatchPo.setState(PayFeeBatchDto.STATE_NORMAL);
-        payFeeBatchPo.setMsg("正常");
-        int flag = payFeeBatchV1InnerServiceSMOImpl.savePayFeeBatch(payFeeBatchPo);
-
-        if (flag < 1) {
-            throw new IllegalArgumentException("生成批次失败");
-        }
-
-        reqJson.put("batchId", payFeeBatchPo.getBatchId());
-    }
-
 }

+ 101 - 0
springboot/src/main/java/com/java110/boot/importData/adapt/ImportMeterWaterFeeDataCleaningAdapt.java

@@ -0,0 +1,101 @@
+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.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.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.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 水电抄表
+ * 方式1
+ */
+@Service("importMeterWaterFeeDataCleaning")
+public class ImportMeterWaterFeeDataCleaningAdapt  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[3], (osIndex + 1) + "上期度数不能为空");
+            Assert.hasValue(os[4], (osIndex + 1) + "上期度数时间不能为空");
+            Assert.hasValue(os[5], (osIndex + 1) + "本期度数不能为空");
+            Assert.hasValue(os[6], (osIndex + 1) + "本期度数时间不能为空");
+
+//
+
+            String startTime = excelDoubleToDate(os[4].toString());
+            String endTime = excelDoubleToDate(os[6].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.setPreDegrees(os[3].toString());
+            importRoomFee.setPreReadingTime(startTime);
+            importRoomFee.setCurDegrees(os[5].toString());
+            importRoomFee.setCurReadingTime(endTime);
+            importRoomFee.setPrice(-1);
+            rooms.add(importRoomFee);
+            if (Double.parseDouble(importRoomFee.getCurDegrees()) < Double.parseDouble(importRoomFee.getPreDegrees())) {
+                throw new IllegalArgumentException((osIndex + 1) + "行本期读数小于上期读数");
+            }
+        }
+    }
+
+
+
+}

+ 0 - 26
springboot/src/main/java/com/java110/boot/importData/adapt/ImportRoomHistoryFeeDetailDataCleaningAdapt.java

@@ -147,31 +147,5 @@ public class ImportRoomHistoryFeeDetailDataCleaningAdapt extends DefaultImportDa
         }
     }
 
-    /**
-     * 生成批次号
-     *
-     * @param reqJson
-     */
-    private void generatorBatch(JSONObject reqJson) {
-        PayFeeBatchPo payFeeBatchPo = new PayFeeBatchPo();
-        payFeeBatchPo.setBatchId(GenerateCodeFactory.getGeneratorId("12"));
-        payFeeBatchPo.setCommunityId(reqJson.getString("communityId"));
-        payFeeBatchPo.setCreateUserId(reqJson.getString("userId"));
-        UserDto userDto = new UserDto();
-        userDto.setUserId(reqJson.getString("userId"));
-        List<UserDto> userDtos = userInnerServiceSMOImpl.getUsers(userDto);
-
-        Assert.listOnlyOne(userDtos, "用户不存在");
-        payFeeBatchPo.setCreateUserName(userDtos.get(0).getUserName());
-        payFeeBatchPo.setState(PayFeeBatchDto.STATE_NORMAL);
-        payFeeBatchPo.setMsg("正常");
-        int flag = payFeeBatchV1InnerServiceSMOImpl.savePayFeeBatch(payFeeBatchPo);
-
-        if (flag < 1) {
-            throw new IllegalArgumentException("生成批次失败");
-        }
-
-        reqJson.put("batchId", payFeeBatchPo.getBatchId());
-    }
 
 }