| | |
| | | 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.fee.FeeAttrDto; |
| | | import com.java110.dto.fee.FeeConfigDto; |
| | | import com.java110.dto.fee.FeeDetailDto; |
| | | import com.java110.dto.fee.FeeDto; |
| | | import com.java110.dto.importData.ImportRoomFee; |
| | | import com.java110.dto.log.AssetImportLogDetailDto; |
| | | import com.java110.dto.owner.OwnerRoomRelDto; |
| | | import com.java110.fee.api.FeeDiscountApi; |
| | | import com.java110.intf.community.IRoomInnerServiceSMO; |
| | | import com.java110.intf.fee.*; |
| | | import com.java110.intf.user.IOwnerCarInnerServiceSMO; |
| | |
| | | import com.java110.po.fee.FeeAttrPo; |
| | | import com.java110.po.fee.PayFeeDetailPo; |
| | | import com.java110.po.fee.PayFeePo; |
| | | import com.java110.po.payFee.PayFeeDetailDiscountPo; |
| | | import com.java110.utils.constant.StatusConstant; |
| | | import com.java110.utils.util.BeanConvertUtil; |
| | | import com.java110.utils.util.DateUtil; |
| | | import com.java110.utils.util.ListUtil; |
| | | import com.java110.utils.util.StringUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.http.ResponseEntity; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.text.ParseException; |
| | | import java.util.ArrayList; |
| | | import java.util.Calendar; |
| | | import java.util.List; |
| | |
| | | @Service("importCarHistoryFeeDetailQueueData") |
| | | public class ImportCarHistoryFeeDetailQueueDataAdapt extends DefaultImportData implements IImportDataAdapt { |
| | | |
| | | @Autowired |
| | | private IPayFeeDetailDiscountNewV1InnerServiceSMO payFeeDetailDiscountNewV1InnerServiceSMOImpl; |
| | | |
| | | @Autowired |
| | | private IImportFeeDetailInnerServiceSMO importFeeDetailInnerServiceSMOImpl; |
| | |
| | | @Autowired |
| | | private IFeeInnerServiceSMO feeInnerServiceSMOImpl; |
| | | |
| | | @Autowired |
| | | private FeeDiscountApi feeDiscountApi; |
| | | @Autowired |
| | | private IFeeDetailInnerServiceSMO feeDetailInnerServiceSMOImpl; |
| | | |
| | |
| | | importCarFeeDetails(importRoomFees.get(0).getStoreId(), importRoomFees.get(0).getUserId(), importRoomFees, importRoomFees.get(0).getBatchId()); |
| | | } |
| | | |
| | | private void importCarFeeDetails(String storeId, String userId, List<ImportRoomFee> importCarFees, String batchId) { |
| | | public void importCarFeeDetails(String storeId, String userId, List<ImportRoomFee> importCarFees, String batchId) { |
| | | |
| | | importCarFees = ownerCarInnerServiceSMOImpl.freshCarIds(importCarFees); |
| | | for (ImportRoomFee importCarFee : importCarFees) { |
| | |
| | | */ |
| | | private void importCarFeeDetail(ImportRoomFee importRoomFee, String storeId, String userId, String batchId) { |
| | | |
| | | PayFeeDetailPo payFeeDetailPo = new PayFeeDetailPo(); |
| | | payFeeDetailPo.setPayOrderId(importRoomFee.getRoomId()); |
| | | payFeeDetailPo.setCycles(importRoomFee.getCycle()); |
| | | payFeeDetailPo.setCreateTime(importRoomFee.getCreateTime()); |
| | | payFeeDetailPo.setCommunityId(importRoomFee.getCommunityId()); |
| | | payFeeDetailPo.setPayOrderId(importRoomFee.getRoomId()); |
| | | int count = feeDetailInnerServiceSMOImpl.queryFeeDetailsCountByVo(payFeeDetailPo); |
| | | |
| | | if (count > 0) { |
| | | throw new IllegalStateException("重复的缴费记录"); |
| | | } |
| | | |
| | | |
| | | FeeConfigDto feeConfigDto = new FeeConfigDto(); |
| | | feeConfigDto.setFeeNameEq(importRoomFee.getFeeName().trim()); |
| | | feeConfigDto.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 (ListUtil.isNull(feeDtos)) { |
| | | 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.setBatchId(batchId); |
| | | if (FeeDto.FEE_FLAG_ONCE.equals(tmpFeeConfigDto.getFeeFlag())) { |
| | | payFeePo.setState(FeeDto.STATE_FINISH); |
| | | } else { |
| | | 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); |
| | | List<FeeAttrPo> feeAttrsPos = new ArrayList<>(); |
| | | //查询业主信息 |
| | | if (!FeeDto.FEE_FLAG_CYCLE.equals(tmpFeeConfigDto.getFeeFlag())) { |
| | | feeAttrsPos.add(addFeeAttr(payFeePo, FeeAttrDto.SPEC_CD_ONCE_FEE_DEADLINE_TIME, |
| | | importRoomFee.getEndTime())); |
| | | } |
| | | feeAttrsPos.add(addFeeAttr(payFeePo, FeeAttrDto.SPEC_CD_OWNER_ID, importRoomFee.getOwnerId())); |
| | | feeAttrsPos.add(addFeeAttr(payFeePo, FeeAttrDto.SPEC_CD_OWNER_LINK, importRoomFee.getOwnerLink())); |
| | | feeAttrsPos.add(addFeeAttr(payFeePo, FeeAttrDto.SPEC_CD_OWNER_NAME, importRoomFee.getOwnerName())); |
| | | feeAttrInnerServiceSMOImpl.saveFeeAttrs(feeAttrsPos); |
| | | feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto); |
| | | throw new IllegalArgumentException("不存在对应的缴费记录"); |
| | | // 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.setBatchId(batchId); |
| | | // if (FeeDto.FEE_FLAG_ONCE.equals(tmpFeeConfigDto.getFeeFlag())) { |
| | | // payFeePo.setState(FeeDto.STATE_FINISH); |
| | | // } else { |
| | | // 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); |
| | | // List<FeeAttrPo> feeAttrsPos = new ArrayList<>(); |
| | | // //查询业主信息 |
| | | // if (!FeeDto.FEE_FLAG_CYCLE.equals(tmpFeeConfigDto.getFeeFlag())) { |
| | | // feeAttrsPos.add(addFeeAttr(payFeePo, FeeAttrDto.SPEC_CD_ONCE_FEE_DEADLINE_TIME, |
| | | // importRoomFee.getEndTime())); |
| | | // } |
| | | // feeAttrsPos.add(addFeeAttr(payFeePo, FeeAttrDto.SPEC_CD_OWNER_ID, importRoomFee.getOwnerId())); |
| | | // feeAttrsPos.add(addFeeAttr(payFeePo, FeeAttrDto.SPEC_CD_OWNER_LINK, importRoomFee.getOwnerLink())); |
| | | // feeAttrsPos.add(addFeeAttr(payFeePo, FeeAttrDto.SPEC_CD_OWNER_NAME, importRoomFee.getOwnerName())); |
| | | // feeAttrInnerServiceSMOImpl.saveFeeAttrs(feeAttrsPos); |
| | | // feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto); |
| | | } |
| | | |
| | | for (FeeDto tmpFeeDto : feeDtos) { |
| | | // if(tmpFeeDto.getEndTime() < importRoomFee.){ |
| | | // |
| | | // } |
| | | doImportFeeDetail(tmpFeeDto, importRoomFee); |
| | | } |
| | | |
| | |
| | | payFeeDetailPo.setPrimeRate("1.0"); |
| | | payFeeDetailPo.setFeeId(tmpFeeDto.getFeeId()); |
| | | payFeeDetailPo.setStartTime(importRoomFee.getStartTime()); |
| | | importRoomFee.setPayObjId(payFeeDetailPo.getPayOrderId() != null ? importRoomFee.getPayObjId() : importRoomFee.getRoomId()); |
| | | String endTime = importRoomFee.getEndTime(); |
| | | //todo 周期性费用时时间自动加一天,因为物业统计的Excel 一般少一天 |
| | | if (!FeeDto.FEE_FLAG_ONCE.equals(tmpFeeDto.getFeeFlag())) { |
| | |
| | | payFeeDetailPo.setState("1400"); |
| | | payFeeDetailPo.setCashierName(importRoomFee.getStaffName()); |
| | | payFeeDetailPo.setPayableAmount(importRoomFee.getAmount()); |
| | | payFeeDetailPo.setPayOrderId(payFeeDetailPo.getPayOrderId() !=null ? payFeeDetailPo.getPayOrderId() : importRoomFee.getRoomId()); |
| | | payFeeDetailPo.setbId(importRoomFee.getBatchId()); |
| | | |
| | | PayFeeDetailDiscountPo payFeeDetailDiscount = new PayFeeDetailDiscountPo(); |
| | | ResponseEntity<String> resultVo = null; |
| | | try { |
| | | resultVo = feeDiscountApi.computeFeeDiscount(tmpFeeDto.getFeeId(), tmpFeeDto.getCommunityId(), 105, importRoomFee.getPayObjId(), |
| | | tmpFeeDto.getPayerObjType(), importRoomFee.getEndTime(), importRoomFee.getEndTime(), importRoomFee.getStartTime(), 1, 20); |
| | | } catch (ParseException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | |
| | | |
| | | |
| | | // 2. 从 ResultVo 中获取 data 并强转为目标类型 |
| | | if (resultVo != null) { |
| | | // 假设 data 字段存储的是 List<ComputeDiscountDto> |
| | | JSONArray data = (JSONArray) JSONObject.parseObject(resultVo.getBody()).get("data"); |
| | | |
| | | if(data.size() > 0) { |
| | | JSONObject o = (JSONObject) data.get(0); |
| | | String discountPrice = o.get("discountPrice").toString(); |
| | | String discountId = o.get("discountId").toString(); |
| | | payFeeDetailPo.setDiscountAmount(discountPrice); |
| | | payFeeDetailPo.setReceivableAmount((Double.parseDouble(payFeeDetailPo.getReceivedAmount()) + Double.parseDouble(payFeeDetailPo.getDiscountAmount()))+""); |
| | | payFeeDetailDiscount.setDiscountId(discountId); |
| | | payFeeDetailDiscount.setDiscountPrice(discountPrice); |
| | | } |
| | | } |
| | | |
| | | int saved = feeDetailInnerServiceSMOImpl.saveFeeDetail(payFeeDetailPo); |
| | | |
| | | FeeDetailDto feeDetailDto = new FeeDetailDto(); |
| | | feeDetailDto.setDetailId(payFeeDetailPo.getDetailId()); |
| | | |
| | | List<FeeDetailDto> feeDtos = feeDetailInnerServiceSMOImpl.queryFeeDetails(feeDetailDto); |
| | | |
| | | if (payFeeDetailDiscount.getDiscountId() != null) { |
| | | payFeeDetailDiscount.setDetailId(payFeeDetailPo.getDetailId()); |
| | | payFeeDetailDiscount.setStatusCd("0"); |
| | | payFeeDetailDiscount.setCommunityId(feeDtos.get(0).getCommunityId()); |
| | | payFeeDetailDiscount.setFeeId(feeDtos.get(0).getFeeId()); |
| | | payFeeDetailDiscount.setDetailDiscountId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_discountId)); |
| | | } |
| | | |
| | | payFeeDetailDiscountNewV1InnerServiceSMOImpl.savePayFeeDetailDiscountNew(payFeeDetailDiscount); |
| | | |
| | | if (saved < 1) { |
| | | return; |
| | |
| | | if (tmpFeeDto.getEndTime().getTime() >= DateUtil.getDateFromStringB(importRoomFee.getEndTime()).getTime()) { |
| | | return; |
| | | } |
| | | |
| | | //如果结束时间小于 缴费结束时间则延期 |
| | | PayFeePo payFeePo = new PayFeePo(); |
| | | payFeePo.setCommunityId(importRoomFee.getCommunityId()); |
| | |
| | | if (FeeDto.FEE_FLAG_ONCE.equals(tmpFeeDto.getFeeFlag())) { |
| | | payFeePo.setState(FeeDto.STATE_FINISH); |
| | | } |
| | | |
| | | feeInnerServiceSMOImpl.updateFee(payFeePo); |
| | | } |
| | | |
| | | |
| | | } |