java110 hace 5 años
padre
commit
559ea09c97

+ 2 - 0
service-fee/src/main/java/com/java110/fee/api/PayFeeDetailApi.java

@@ -31,6 +31,8 @@ public class PayFeeDetailApi {
     public ResponseEntity<String> saveImportFeeDetail(@RequestBody String reqJsonStr) {
     public ResponseEntity<String> saveImportFeeDetail(@RequestBody String reqJsonStr) {
         JSONObject reqJson = JSONObject.parseObject(reqJsonStr);
         JSONObject reqJson = JSONObject.parseObject(reqJsonStr);
         Assert.hasKeyAndValue(reqJson, "communityId", "请求报文中未包含小区信息");
         Assert.hasKeyAndValue(reqJson, "communityId", "请求报文中未包含小区信息");
+        Assert.hasKeyAndValue(reqJson, "objType", "请求报文中未包含费用对象");
+
 
 
 
 
 
 

+ 76 - 3
service-fee/src/main/java/com/java110/fee/bmo/payFeeDetail/impl/ImportPayFeeDetailBMOImpl.java

@@ -6,6 +6,7 @@ import com.java110.core.factory.GenerateCodeFactory;
 import com.java110.dto.fee.FeeConfigDto;
 import com.java110.dto.fee.FeeConfigDto;
 import com.java110.dto.fee.FeeDetailDto;
 import com.java110.dto.fee.FeeDetailDto;
 import com.java110.dto.fee.FeeDto;
 import com.java110.dto.fee.FeeDto;
+import com.java110.dto.feeReceipt.FeeReceiptDetailDto;
 import com.java110.entity.assetImport.ImportRoomFee;
 import com.java110.entity.assetImport.ImportRoomFee;
 import com.java110.fee.bmo.payFeeDetail.IImportPayFeeBMODetail;
 import com.java110.fee.bmo.payFeeDetail.IImportPayFeeBMODetail;
 import com.java110.intf.fee.IImportFeeDetailInnerServiceSMO;
 import com.java110.intf.fee.IImportFeeDetailInnerServiceSMO;
@@ -13,6 +14,7 @@ import com.java110.intf.community.IRoomInnerServiceSMO;
 import com.java110.intf.fee.IFeeConfigInnerServiceSMO;
 import com.java110.intf.fee.IFeeConfigInnerServiceSMO;
 import com.java110.intf.fee.IFeeDetailInnerServiceSMO;
 import com.java110.intf.fee.IFeeDetailInnerServiceSMO;
 import com.java110.intf.fee.IFeeInnerServiceSMO;
 import com.java110.intf.fee.IFeeInnerServiceSMO;
+import com.java110.intf.user.IOwnerCarInnerServiceSMO;
 import com.java110.po.fee.PayFeeDetailPo;
 import com.java110.po.fee.PayFeeDetailPo;
 import com.java110.po.fee.PayFeePo;
 import com.java110.po.fee.PayFeePo;
 import com.java110.utils.constant.StatusConstant;
 import com.java110.utils.constant.StatusConstant;
@@ -46,6 +48,9 @@ public class ImportPayFeeDetailBMOImpl implements IImportPayFeeBMODetail {
     @Autowired
     @Autowired
     private IFeeDetailInnerServiceSMO feeDetailInnerServiceSMOImpl;
     private IFeeDetailInnerServiceSMO feeDetailInnerServiceSMOImpl;
 
 
+    @Autowired
+    private IOwnerCarInnerServiceSMO ownerCarInnerServiceSMOImpl;
+
     /**
     /**
      * @param reqJson
      * @param reqJson
      * @return 订单服务能够接受的报文
      * @return 订单服务能够接受的报文
@@ -57,6 +62,7 @@ public class ImportPayFeeDetailBMOImpl implements IImportPayFeeBMODetail {
         String communityId = reqJson.getString("communityId");
         String communityId = reqJson.getString("communityId");
         String storeId = reqJson.getString("storeId");
         String storeId = reqJson.getString("storeId");
         String userId = reqJson.getString("userId");
         String userId = reqJson.getString("userId");
+        String objType = reqJson.getString("objType");
 
 
         JSONArray datas = reqJson.getJSONArray("importRoomFees");
         JSONArray datas = reqJson.getJSONArray("importRoomFees");
 
 
@@ -71,8 +77,11 @@ public class ImportPayFeeDetailBMOImpl implements IImportPayFeeBMODetail {
         if (importRoomFees.size() < 1) {
         if (importRoomFees.size() < 1) {
             return ResultVo.success();
             return ResultVo.success();
         }
         }
-
-        importFeeDetails(storeId, userId, importRoomFees);
+        if(FeeDto.PAYER_OBJ_TYPE_ROOM.equals(objType)) {
+            importFeeDetails(storeId, userId, importRoomFees);
+        }else{
+            importCarFeeDetails(storeId, userId, importRoomFees);
+        }
 
 
         return ResultVo.success();
         return ResultVo.success();
     }
     }
@@ -80,12 +89,76 @@ public class ImportPayFeeDetailBMOImpl implements IImportPayFeeBMODetail {
     private void importFeeDetails(String storeId, String userId, List<ImportRoomFee> importRoomFees) {
     private void importFeeDetails(String storeId, String userId, List<ImportRoomFee> importRoomFees) {
 
 
         importRoomFees = roomInnerServiceSMOImpl.freshRoomIds(importRoomFees);
         importRoomFees = roomInnerServiceSMOImpl.freshRoomIds(importRoomFees);
-
         for (ImportRoomFee importRoomFee : importRoomFees) {
         for (ImportRoomFee importRoomFee : importRoomFees) {
             importFeeDetail(importRoomFee, storeId, userId);
             importFeeDetail(importRoomFee, storeId, userId);
         }
         }
     }
     }
 
 
+
+    private void importCarFeeDetails(String storeId, String userId, List<ImportRoomFee> importCarFees) {
+
+        importCarFees = ownerCarInnerServiceSMOImpl.freshCarIds(importCarFees);
+        for (ImportRoomFee importCarFee : importCarFees) {
+            importCarFeeDetail(importCarFee, storeId, userId);
+        }
+    }
+
+    /**
+     * 导入 费用历史
+     *
+     * @param importRoomFee
+     */
+    private void importCarFeeDetail(ImportRoomFee importRoomFee, String storeId, String userId) {
+
+        FeeConfigDto feeConfigDto = new FeeConfigDto();
+        feeConfigDto.setFeeName(importRoomFee.getFeeName());
+        feeConfigDto.setCommunityId(importRoomFee.getCommunityId());
+        List<FeeConfigDto> feeConfigDtos = feeConfigInnerServiceSMOImpl.queryFeeConfigs(feeConfigDto);
+
+        Assert.listOnlyOne(feeConfigDtos, "费用不存在或存在多条");
+
+        FeeConfigDto tmpFeeConfigDto = feeConfigDtos.get(0);
+
+        FeeDto feeDto = new FeeDto();
+        feeDto.setConfigId(tmpFeeConfigDto.getConfigId());
+        feeDto.setCommunityId(importRoomFee.getCommunityId());
+        feeDto.setPayerObjId(importRoomFee.getCarId());
+        feeDto.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_CAR);
+        List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
+
+        List<PayFeePo> payFeePos = null;
+        if (feeDtos == null || feeDtos.size() < 1) {
+            PayFeePo payFeePo = new PayFeePo();
+            payFeePo.setCommunityId(importRoomFee.getCommunityId());
+            payFeePo.setConfigId(feeDto.getConfigId());
+            payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_CAR);
+            payFeePo.setStartTime(importRoomFee.getStartTime());
+            payFeePo.setEndTime(importRoomFee.getEndTime());
+            payFeePo.setAmount(importRoomFee.getAmount());
+            payFeePo.setFeeFlag(tmpFeeConfigDto.getFeeFlag());
+            payFeePo.setFeeTypeCd(tmpFeeConfigDto.getFeeTypeCd());
+            payFeePo.setIncomeObjId(storeId);
+            payFeePo.setState(FeeDto.STATE_DOING);
+            payFeePo.setFeeId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_feeId));
+            payFeePo.setPayerObjId(importRoomFee.getCarId());
+            payFeePo.setUserId(userId);
+            payFeePo.setCreateTime(importRoomFee.getCreateTime());
+            payFeePos = new ArrayList<>();
+            payFeePos.add(payFeePo);
+            feeInnerServiceSMOImpl.saveFee(payFeePos);
+            feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
+        }
+
+        for (FeeDto tmpFeeDto : feeDtos) {
+            try {
+                doImportFeeDetail(tmpFeeDto, importRoomFee);
+            } catch (ParseException e) {
+                e.printStackTrace();
+            }
+        }
+
+    }
+
     /**
     /**
      * 导入 费用历史
      * 导入 费用历史
      *
      *

+ 60 - 3
service-front/src/main/java/com/java110/front/smo/assetImport/impl/ImportFeeDetailSMOImpl.java

@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.java110.core.component.BaseComponentSMO;
 import com.java110.core.component.BaseComponentSMO;
 import com.java110.core.context.IPageData;
 import com.java110.core.context.IPageData;
 import com.java110.core.factory.GenerateCodeFactory;
 import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.fee.FeeDto;
 import com.java110.entity.assetImport.ImportRoomFee;
 import com.java110.entity.assetImport.ImportRoomFee;
 import com.java110.entity.component.ComponentValidateResult;
 import com.java110.entity.component.ComponentValidateResult;
 import com.java110.front.smo.assetImport.IImportFeeDetailSMO;
 import com.java110.front.smo.assetImport.IImportFeeDetailSMO;
@@ -54,14 +55,21 @@ public class ImportFeeDetailSMOImpl extends BaseComponentSMO implements IImportF
         try {
         try {
             ComponentValidateResult result = this.validateStoreStaffCommunityRelationship(pd, restTemplate);
             ComponentValidateResult result = this.validateStoreStaffCommunityRelationship(pd, restTemplate);
 
 
+            JSONObject paramIn = JSONObject.parseObject(pd.getReqData());
+            Assert.hasKeyAndValue(paramIn, "communityId", "请求中未包含小区");
+            Assert.hasKeyAndValue(paramIn, "objType", "请求中未包含费用对象");
             //InputStream is = uploadFile.getInputStream();
             //InputStream is = uploadFile.getInputStream();
 
 
             Workbook workbook = ImportExcelUtils.createWorkbook(uploadFile);  //工作簿
             Workbook workbook = ImportExcelUtils.createWorkbook(uploadFile);  //工作簿
 
 
             List<ImportRoomFee> rooms = new ArrayList<ImportRoomFee>();
             List<ImportRoomFee> rooms = new ArrayList<ImportRoomFee>();
-
-            //获取楼信息
-            getRooms(workbook, rooms);
+            if (FeeDto.PAYER_OBJ_TYPE_ROOM.equals(paramIn.getString("objType"))) {
+                //获取楼信息
+                getRooms(workbook, rooms);
+            }else {
+                //获取楼信息
+                getCars(workbook, rooms);
+            }
             // 保存数据
             // 保存数据
             return dealExcelData(pd, rooms, result);
             return dealExcelData(pd, rooms, result);
         } catch (Exception e) {
         } catch (Exception e) {
@@ -70,6 +78,55 @@ public class ImportFeeDetailSMOImpl extends BaseComponentSMO implements IImportF
         }
         }
     }
     }
 
 
+    private void getCars(Workbook workbook, List<ImportRoomFee> rooms) {
+        Sheet sheet = null;
+        sheet = ImportExcelUtils.getSheet(workbook, "车辆缴费历史");
+        List<Object[]> oList = ImportExcelUtils.listFromSheet(sheet);
+        ImportRoomFee importRoomFee = null;
+        for (int osIndex = 0; osIndex < oList.size(); osIndex++) {
+            Object[] os = oList.get(osIndex);
+            if (osIndex == 0) { // 第一行是 头部信息 直接跳过
+                continue;
+            }
+            if (StringUtil.isNullOrNone(os[0])) {
+                continue;
+            }
+
+            //费用名称没有填写,默认跳过
+            if (StringUtil.isNullOrNone(os[4])) {
+                continue;
+            }
+            Assert.hasValue(os[0], (osIndex + 1) + "行车牌号不能为空");
+            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[3].toString());
+            String endTime = excelDoubleToDate(os[4].toString());
+            String createTime = excelDoubleToDate(os[5].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 文本格式");
+            Assert.isDate(createTime, DateUtil.DATE_FORMATE_STRING_B, (osIndex + 1) + "行结束时间格式错误 请填写YYYY-MM-DD 文本格式");
+
+
+            importRoomFee = new ImportRoomFee();
+            importRoomFee.setCarNum(os[0].toString());
+            importRoomFee.setFeeName(os[1].toString());
+            importRoomFee.setCycle(os[2].toString());
+            importRoomFee.setStartTime(startTime);
+            importRoomFee.setEndTime(endTime);
+            importRoomFee.setCreateTime(createTime);
+            importRoomFee.setAmount(os[6].toString());
+            importRoomFee.setRemark(!StringUtil.isNullOrNone(os[7]) ? os[7].toString() : "");
+            rooms.add(importRoomFee);
+        }
+    }
+
     /**
     /**
      * 处理ExcelData数据
      * 处理ExcelData数据
      *
      *