| | |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.java110.core.factory.GenerateCodeFactory; |
| | | import com.java110.core.smo.IComputeFeeSMO; |
| | | import com.java110.core.smo.impl.ComputeFeeSMOImpl; |
| | | import com.java110.dto.PropertyWhiteListFlowDto; |
| | | import com.java110.dto.community.CommunityDto; |
| | | import com.java110.dto.contract.ContractDto; |
| | |
| | | import com.java110.fee.api.FeeDiscountApi; |
| | | import com.java110.fee.cmd.fee.PayFeeCmd; |
| | | import com.java110.fee.cmd.fee.PayFeePreCmd; |
| | | import com.java110.fee.feeMonth.IPayFeeMonth; |
| | | import com.java110.intf.IImportPropertyWhiteListfFlowServiceSMO; |
| | | import com.java110.intf.common.ICarInoutInnerServiceSMO; |
| | | import com.java110.intf.community.ICommunityInnerServiceSMO; |
| | |
| | | @Autowired |
| | | private ICommunityInnerServiceSMO communityInnerServiceSMO; |
| | | |
| | | @Autowired |
| | | private ComputeFeeSMOImpl calculateFeeSMOImpl; |
| | | |
| | | @Override |
| | | public void importData(List<AssetImportLogDetailDto> assetImportLogDetailDtos) { |
| | | String communityId = assetImportLogDetailDtos.get(0).getCommunityId(); |
| | | CommunityDto communityDto = new CommunityDto(); |
| | | communityDto.setCommunityId(communityId); |
| | | List<CommunityDto> communityDtos = communityInnerServiceSMO.queryCommunitys(communityDto); |
| | | Set<String> invoiceObjects = new HashSet<>(); |
| | | for (AssetImportLogDetailDto obj : assetImportLogDetailDtos) { |
| | | String context = obj.getContent(); |
| | | if (context != null && context.contains("frequency")) { |
| | | invoiceObjects.add(JSONObject.parseObject(context).getString("frequency")); |
| | | } |
| | | } |
| | | for (AssetImportLogDetailDto assetImportLogDetailDto : assetImportLogDetailDtos) { |
| | | if (!assetImportLogDetailDto.getMessage().equals("待导入")){ |
| | | continue; |
| | | } |
| | | JSONObject jsonObject = JSONObject.parseObject(assetImportLogDetailDto.getContent()); |
| | | if (jsonObject.containsKey("frequency")){ |
| | | if (jsonObject.getString("frequency").contains("退费-") && !jsonObject.getString("frequency").contains("被退费-")){ |
| | | String invoce = jsonObject.getString("frequency").split("-")[1]; |
| | | for (AssetImportLogDetailDto ass : assetImportLogDetailDtos){ |
| | | if (JSONObject.parseObject(ass.getContent()).getString("invoiceReceiptNo").equals(invoce)){ |
| | | try { |
| | | assetImportLogDetailDto.setTakeTime(communityDtos.get(0).getTakeTime()); |
| | | assetImportLogDetailDto.setOutTime(communityDtos.get(0).getOutTime()); |
| | | assetImportLogDetailDto.setState("1300"); |
| | | importDatas(assetImportLogDetailDto); |
| | | updateImportLogDetailState(assetImportLogDetailDto.getDetailId()); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | updateImportLogDetailState(assetImportLogDetailDto.getDetailId(), e); |
| | | } |
| | | try { |
| | | ass.setTakeTime(communityDtos.get(0).getTakeTime()); |
| | | ass.setOutTime(communityDtos.get(0).getOutTime()); |
| | | ass.setState("1100"); |
| | | importDatas(ass); |
| | | updateImportLogDetailState(ass.getDetailId()); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | updateImportLogDetailState(ass.getDetailId(), e); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | continue; |
| | | } |
| | | } |
| | | try { |
| | | assetImportLogDetailDto.setTakeTime(communityDtos.get(0).getTakeTime()); |
| | | assetImportLogDetailDto.setOutTime(communityDtos.get(0).getOutTime()); |
| | | String invoce = "退费-"+JSONObject.parseObject(assetImportLogDetailDto.getContent()).getString("invoiceReceiptNo"); |
| | | if (invoiceObjects.contains(invoce)){ |
| | | continue; |
| | | } |
| | | importDatas(assetImportLogDetailDto); |
| | | updateImportLogDetailState(assetImportLogDetailDto.getDetailId()); |
| | | } catch (Exception e) { |
| | |
| | | |
| | | List<ImportRoomFee> importRoomFees = new ArrayList<>(); |
| | | List<ImportRoomFee> importCarFees = new ArrayList<>(); |
| | | List<ImportRoomFee> importContractFees = new ArrayList<>(); |
| | | List<CarInoutPo> carInoutPos = new ArrayList<>(); |
| | | String communityId = assetImportLogDetailDto.getCommunityId(); |
| | | JSONObject data = JSONObject.parseObject(assetImportLogDetailDto.getContent()); |
| | | ImportRoomFee importRoomFee = BeanConvertUtil.covertBean(data, ImportRoomFee.class); |
| | | if (DateUtil.getDateFromStringB(data.getString("chargeStart").split(" ")[0]).getTime() <= DateUtil.getDateFromStringB(assetImportLogDetailDto.getTakeTime().split(" ")[0]).getTime()){ |
| | | throw new IllegalStateException("该费用为起始时间小于小区接管时间不进行导入"); |
| | | if (assetImportLogDetailDto.getState().equals("1100") || assetImportLogDetailDto.getState().equals("1300")) { |
| | | importRoomFee.setState(assetImportLogDetailDto.getState()); |
| | | } |
| | | if (importRoomFee.getFrequency()==null) { |
| | | importRoomFee.setFrequency("正常费用"); |
| | | } |
| | | // if (DateUtil.getDateFromStringB(data.getString("chargeStart").split(" ")[0]).getTime() <= DateUtil.getDateFromStringB(assetImportLogDetailDto.getTakeTime().split(" ")[0]).getTime()){ |
| | | // throw new IllegalStateException("该费用为起始时间小于小区接管时间不进行导入"); |
| | | // } |
| | | if (importRoomFee.getEndTime() != null){ |
| | | String[] split = importRoomFee.getEndTime().split(" "); |
| | | importRoomFee.setEndTime(split[0] + " 23:59:59"); |
| | |
| | | importRoomFee.setContractId(data.getString("licensePlate")); |
| | | importRoomFee.setInvoiceNo(data.containsKey("invoiceReceiptNo") && data.getString("invoiceReceiptNo") != null ? "Y" : "N"); |
| | | importRoomFee.setObjType("7777"); |
| | | LocalDateTime startDate = LocalDateTime.parse(importRoomFee.getStartTime(), formatter); |
| | | LocalDateTime endDate = LocalDateTime.parse(importRoomFee.getEndTime(), formatter); |
| | | importRoomFee.setCycle(String.valueOf(ChronoUnit.MONTHS.between(startDate, endDate))); |
| | | importRoomFee.setCycle((DateUtil.dayCompare( |
| | | DateUtil.getDateFromStringA(importRoomFee.getStartTime()), |
| | | DateUtil.getDateFromStringA(importRoomFee.getEndTime()) |
| | | )) + ""); |
| | | if (new BigDecimal(importRoomFee.getAmount()).doubleValue() < 0){ |
| | | importRoomFee.setCycle("-"+importRoomFee.getCycle()); |
| | | } |
| | |
| | | importRoomFee.setOpenInv(data.containsKey("invoiceReceiptNo") && data.getString("invoiceReceiptNo") != null ? "Y" : "N"); |
| | | // if(importRoomFee.getPayerObjName()) |
| | | importRoomFee.setObjType("6666"); |
| | | LocalDateTime startDate = LocalDateTime.parse(importRoomFee.getStartTime(), formatter); |
| | | LocalDateTime endDate = LocalDateTime.parse(importRoomFee.getEndTime(), formatter); |
| | | importRoomFee.setCycle(String.valueOf(ChronoUnit.MONTHS.between(startDate, endDate))); |
| | | importRoomFee.setCycle((DateUtil.dayCompare( |
| | | DateUtil.getDateFromStringA(importRoomFee.getStartTime()), |
| | | DateUtil.getDateFromStringA(importRoomFee.getEndTime()) |
| | | )) + ""); |
| | | if (new BigDecimal(importRoomFee.getAmount()).doubleValue() < 0){ |
| | | importRoomFee.setCycle("-"+importRoomFee.getCycle()); |
| | | } |
| | |
| | | importRoomFee.setAmount(data.getString("chargeAmount")); |
| | | importRoomFee.setStaffName(data.getString("charger")); |
| | | importRoomFee.setOpenInv(data.containsKey("invoiceReceiptNo") && data.getString("invoiceReceiptNo") != null ? "Y" : "N"); |
| | | importRoomFee.setCycle((DateUtil.dayCompare( |
| | | DateUtil.getDateFromStringA(importRoomFee.getStartTime()), |
| | | DateUtil.getDateFromStringA(importRoomFee.getEndTime()) |
| | | )) + ""); |
| | | if (new BigDecimal(importRoomFee.getAmount()).doubleValue() < 0){ |
| | | importRoomFee.setCycle("-"+importRoomFee.getCycle()); |
| | | } |
| | | // if(importRoomFee.getPayerObjName()) |
| | | importRoomFees.add(importRoomFee); |
| | | } |
| | |
| | | } |
| | | |
| | | try{ |
| | | if(assetImportLogDetailDto.getOutTime() == null) { |
| | | assetImportLogDetailDto.setOutTime("2050-01-01 23:59:59"); |
| | | } |
| | | if(!(ListUtil.isNull(importRoomFees))){ |
| | | if (DateUtil.getDateFromStringB(data.getString("chargeStart").split(" ")[0]).getTime() < DateUtil.getDateFromStringB(assetImportLogDetailDto.getTakeTime().split(" ")[0]).getTime() && !assetImportLogDetailDto.getState().equals("1100") && !assetImportLogDetailDto.getState().equals("1300")){ |
| | | ImportRoomFee original = importRoomFees.get(0); |
| | | ImportRoomFee importRoomFee1 = (ImportRoomFee) original.clone(); // 克隆新对象 |
| | | ImportRoomFee importRoomFee2 = (ImportRoomFee) original.clone(); // 克隆另一个新对象 |
| | | double cycle = (DateUtil.dayCompare( |
| | | DateUtil.getDateFromStringA(importRoomFee1.getStartTime()), |
| | | DateUtil.getDateFromStringA(importRoomFee1.getEndTime()) |
| | | )) ; |
| | | double amount = Double.parseDouble(importRoomFee1.getAmount()); |
| | | importRoomFees = new ArrayList<>(); |
| | | importRoomFee1.setEndTime(DateUtil.getAddDayStringB(DateUtil.getDateFromStringB(assetImportLogDetailDto.getTakeTime().split(" ")[0]),-1) + " 23:59:59"); |
| | | importRoomFee1.setCycle((DateUtil.dayCompare( |
| | | DateUtil.getDateFromStringA(importRoomFee1.getStartTime()), |
| | | DateUtil.getDateFromStringA(importRoomFee1.getEndTime()) |
| | | )) + ""); |
| | | importRoomFee1.setAmount((amount/cycle) * Double.parseDouble(importRoomFee1.getCycle()) + ""); |
| | | importRoomFee2.setStartTime(assetImportLogDetailDto.getTakeTime().split(" ")[0] + " 00:00:00"); |
| | | importRoomFee2.setCycle((DateUtil.dayCompare( |
| | | DateUtil.getDateFromStringA(importRoomFee2.getStartTime()), |
| | | DateUtil.getDateFromStringA(importRoomFee2.getEndTime()) |
| | | )) + ""); |
| | | importRoomFee2.setAmount(Double.parseDouble(importRoomFee2.getAmount()) - Double.parseDouble(importRoomFee1.getAmount()) + ""); |
| | | importRoomFee1.setState("1600"); |
| | | importRoomFee2.setState("1400"); |
| | | |
| | | importRoomFees.add(importRoomFee1); |
| | | importRoomFees.add(importRoomFee2); |
| | | } |
| | | if (DateUtil.getDateFromStringB(data.getString("chargeEnd").split(" ")[0]).getTime() > DateUtil.getDateFromStringB(assetImportLogDetailDto.getOutTime().split(" ")[0]).getTime() |
| | | && !assetImportLogDetailDto.getState().equals("1100") && !assetImportLogDetailDto.getState().equals("1300")){ |
| | | ImportRoomFee importRoomFeeLast = importRoomFees.get(importRoomFees.size()-1); |
| | | double cycle = Double.parseDouble(importRoomFeeLast.getCycle()); |
| | | double amount = Double.parseDouble(importRoomFeeLast.getAmount()); |
| | | |
| | | ImportRoomFee importRoomFeeEnd = (ImportRoomFee) importRoomFeeLast.clone(); |
| | | |
| | | importRoomFeeLast.setEndTime(assetImportLogDetailDto.getOutTime() + " 23:59:59"); |
| | | double cycle1 = (DateUtil.dayCompare( |
| | | DateUtil.getDateFromStringA(importRoomFeeLast.getStartTime()), |
| | | DateUtil.getDateFromStringA(importRoomFeeLast.getEndTime()) |
| | | )); |
| | | double amount1 = amount/cycle * cycle1; |
| | | |
| | | importRoomFeeEnd.setStartTime(DateUtil.getAddDayStringB(DateUtil.getDateFromStringB(assetImportLogDetailDto.getOutTime()),1) + " 00:00:00"); |
| | | importRoomFeeEnd.setCycle(DateUtil.dayCompare( |
| | | DateUtil.getDateFromStringA(importRoomFeeEnd.getStartTime()), |
| | | DateUtil.getDateFromStringA(importRoomFeeEnd.getEndTime()) |
| | | ) + ""); |
| | | importRoomFeeEnd.setAmount(amount - amount1 + ""); |
| | | importRoomFeeEnd.setState("1900"); |
| | | importRoomFees.add(importRoomFeeEnd); |
| | | } |
| | | importFeeDetails(importRoomFees.get(0).getStoreId(), importRoomFees.get(0).getUserId(), importRoomFees, importRoomFees.get(0).getBatchId()); |
| | | } |
| | | if(!(ListUtil.isNull(importCarFees))){ |
| | | importRoomFees = importCarFees; |
| | | if (DateUtil.getDateFromStringB(data.getString("chargeStart").split(" ")[0]).getTime() < DateUtil.getDateFromStringB(assetImportLogDetailDto.getTakeTime().split(" ")[0]).getTime() && !assetImportLogDetailDto.getState().equals("1100") && !assetImportLogDetailDto.getState().equals("1300")){ |
| | | ImportRoomFee original = importRoomFees.get(0); |
| | | ImportRoomFee importRoomFee1 = (ImportRoomFee) original.clone(); // 克隆新对象 |
| | | ImportRoomFee importRoomFee2 = (ImportRoomFee) original.clone(); // 克隆另一个新对象 |
| | | double cycle = (DateUtil.dayCompare( |
| | | DateUtil.getDateFromStringA(importRoomFee1.getStartTime()), |
| | | DateUtil.getDateFromStringA(importRoomFee1.getEndTime()) |
| | | )) ; |
| | | double amount = Double.parseDouble(importRoomFee1.getAmount()); |
| | | importRoomFees = new ArrayList<>(); |
| | | importRoomFee1.setEndTime(DateUtil.getAddDayStringB(DateUtil.getDateFromStringB(assetImportLogDetailDto.getTakeTime().split(" ")[0]),-1) + " 23:59:59"); |
| | | importRoomFee1.setCycle((DateUtil.dayCompare( |
| | | DateUtil.getDateFromStringA(importRoomFee1.getStartTime()), |
| | | DateUtil.getDateFromStringA(importRoomFee1.getEndTime()) |
| | | )) + ""); |
| | | importRoomFee1.setAmount((amount/cycle) * Double.parseDouble(importRoomFee1.getCycle()) + ""); |
| | | importRoomFee2.setStartTime(assetImportLogDetailDto.getTakeTime().split(" ")[0] + " 00:00:00"); |
| | | importRoomFee2.setCycle((DateUtil.dayCompare( |
| | | DateUtil.getDateFromStringA(importRoomFee2.getStartTime()), |
| | | DateUtil.getDateFromStringA(importRoomFee2.getEndTime()) |
| | | )) + ""); |
| | | importRoomFee2.setAmount(Double.parseDouble(importRoomFee2.getAmount()) - Double.parseDouble(importRoomFee1.getAmount()) + ""); |
| | | importRoomFee1.setState("1600"); |
| | | importRoomFee2.setState("1400"); |
| | | |
| | | importCarFeeDetails2(importCarFees.get(0).getStoreId(), importCarFees.get(0).getUserId(), importCarFees, importCarFees.get(0).getBatchId()); |
| | | importRoomFees.add(importRoomFee1); |
| | | importRoomFees.add(importRoomFee2); |
| | | } |
| | | if (DateUtil.getDateFromStringB(data.getString("chargeEnd").split(" ")[0]).getTime() > DateUtil.getDateFromStringB(assetImportLogDetailDto.getOutTime().split(" ")[0]).getTime() |
| | | && !assetImportLogDetailDto.getState().equals("1100") && !assetImportLogDetailDto.getState().equals("1300")){ |
| | | ImportRoomFee importRoomFeeLast = importRoomFees.get(importRoomFees.size()-1); |
| | | double cycle = Double.parseDouble(importRoomFeeLast.getCycle()); |
| | | double amount = Double.parseDouble(importRoomFeeLast.getAmount()); |
| | | |
| | | ImportRoomFee importRoomFeeEnd = (ImportRoomFee) importRoomFeeLast.clone(); |
| | | |
| | | importRoomFeeLast.setEndTime(assetImportLogDetailDto.getOutTime() + " 23:59:59"); |
| | | double cycle1 = (DateUtil.dayCompare( |
| | | DateUtil.getDateFromStringA(importRoomFeeLast.getStartTime()), |
| | | DateUtil.getDateFromStringA(importRoomFeeLast.getEndTime()) |
| | | )); |
| | | double amount1 = amount/cycle * cycle1; |
| | | |
| | | importRoomFeeEnd.setStartTime(DateUtil.getAddDayStringB(DateUtil.getDateFromStringB(assetImportLogDetailDto.getOutTime()),1) + " 00:00:00"); |
| | | importRoomFeeEnd.setCycle(DateUtil.dayCompare( |
| | | DateUtil.getDateFromStringA(importRoomFeeEnd.getStartTime()), |
| | | DateUtil.getDateFromStringA(importRoomFeeEnd.getEndTime()) |
| | | ) + ""); |
| | | importRoomFeeEnd.setAmount(amount - amount1 + ""); |
| | | importRoomFeeEnd.setState("1900"); |
| | | importRoomFees.add(importRoomFeeEnd); |
| | | } |
| | | importCarFeeDetails2(importCarFees.get(0).getStoreId(), importCarFees.get(0).getUserId(), importRoomFees, importCarFees.get(0).getBatchId()); |
| | | } |
| | | }catch (IllegalStateException e){ |
| | | throw new IllegalArgumentException(e.getMessage()); |
| | |
| | | * |
| | | * @param importRoomFee |
| | | */ |
| | | |
| | | |
| | | @Autowired |
| | | private IPayFeeMonth payFeeMonthImpl; |
| | | |
| | | private void importFeeDetail(ImportRoomFee importRoomFee, String storeId, String userId, String batchId) { |
| | | |
| | | if (importRoomFee.getState() == null){ |
| | | importRoomFee.setState("1400"); |
| | | } |
| | | |
| | | FeeDto feeDto2 = new FeeDto(); |
| | | feeDto2.setUseFeeName(importRoomFee.getFeeName()); |
| | |
| | | } |
| | | } |
| | | feeDto2.setCommunityId(importRoomFee.getCommunityId()); |
| | | if (new BigDecimal(importRoomFee.getAmount()).doubleValue() >= 0){ |
| | | if (importRoomFee.getState().equals("1100") || importRoomFee.getState().equals("1300") || importRoomFee.getState().equals("1600") || importRoomFee.getState().equals("1900")) { |
| | | |
| | | } |
| | | else { |
| | | feeDto2.setStatusCd("0"); |
| | | feeDto2.setUseStart(DateUtil.getDateFromStringA(importRoomFee.getStartTime())); |
| | | feeDto2.setUseEnd(DateUtil.getDateFromStringA(importRoomFee.getEndTime())); |
| | | } |
| | | List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto2); |
| | | if (new BigDecimal(importRoomFee.getAmount()).doubleValue() >= 0) { |
| | | if (!(importRoomFee.getFrequency().equals("退费"))) { |
| | | feeDtos.removeIf(feeDto -> "2009001".equals(feeDto.getState())); |
| | | } |
| | | if(feeDtos.size() == 0){ |
| | | if(feeDtos.size() == 0 && (importRoomFee.getState() == null || !importRoomFee.getState().equals("1600")|| importRoomFee.getState().equals("1900"))){ |
| | | updateImportLogDetailState(importRoomFee.getDetailId(),new IllegalArgumentException("费用项"+importRoomFee.getFeeName()+"不存在")); |
| | | |
| | | throw new IllegalArgumentException("费用记录"+importRoomFee.getFeeName()+"不存在"); |
| | | }else if(feeDtos.size() > 1){ |
| | | throw new IllegalArgumentException("存在多条记录"); |
| | | } |
| | | // if (ListUtil.isNull(feeDtos)) { |
| | | // throw new IllegalArgumentException("查询不到该记录的费用项:"+importRoomFee.getFeeName()); |
| | | // List<FeeAttrPo> feeAttrsPos = new ArrayList<>(); |
| | | // PayFeePo payFeePo = new PayFeePo(); |
| | | // payFeePo.setCommunityId(importRoomFee.getCommunityId()); |
| | | // payFeePo.setConfigId(feeDto.getConfigId()); |
| | | // payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_ROOM); |
| | | // payFeePo.setStartTime(importRoomFee.getStartTime()); |
| | | // payFeePo.setEndTime(DateUtil.getNextSecTime(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.getRoomId()); |
| | | // payFeePo.setUserId(userId); |
| | | // payFeePo.setCreateTime(importRoomFee.getCreateTime()); |
| | | // payFeePos = new ArrayList<>(); |
| | | // payFeePos.add(payFeePo); |
| | | // feeInnerServiceSMOImpl.saveFee(payFeePos); |
| | | // |
| | | // //查询业主信息 |
| | | // OwnerRoomRelDto ownerRoomRelDto = new OwnerRoomRelDto(); |
| | | // ownerRoomRelDto.setRoomId(importRoomFee.getRoomId()); |
| | | // List<OwnerRoomRelDto> ownerRoomRelDtos = ownerRoomRelV1InnerServiceSMOImpl.queryOwnerRoomRels(ownerRoomRelDto); |
| | | // if (ownerRoomRelDtos != null && ownerRoomRelDtos.size() > 0) { |
| | | // 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, ownerRoomRelDtos.get(0).getOwnerId())); |
| | | // feeAttrsPos.add(addFeeAttr(payFeePo, FeeAttrDto.SPEC_CD_OWNER_LINK, ownerRoomRelDtos.get(0).getLink())); |
| | | // feeAttrsPos.add(addFeeAttr(payFeePo, FeeAttrDto.SPEC_CD_OWNER_NAME, ownerRoomRelDtos.get(0).getOwnerName())); |
| | | // feeAttrInnerServiceSMOImpl.saveFeeAttrs(feeAttrsPos); |
| | | // } |
| | | // |
| | | // |
| | | // feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto); |
| | | // } |
| | | if(feeDtos.size() > 1){ |
| | | throw new IllegalArgumentException(importRoomFee.getDoorRoomNum() +importRoomFee.getFeeName() + "+" + importRoomFee.getStartTime() + "-" + importRoomFee.getEndTime() + "未匹配到收费项"); |
| | | } |
| | | |
| | | for (FeeDto tmpFeeDto : feeDtos) { |
| | | if(DateUtil.getDateFromStringB(importRoomFee.getEndTime()).getTime() > tmpFeeDto.getMaxEndTime().getTime()){ |
| | | throw new IllegalArgumentException("该费用记录结束时间大于费用记录最大缴费时间"); |
| | |
| | | payFeeDetailPo.setCashierName(importRoomFee.getStaffName()); |
| | | payFeeDetailPo.setPayOrderId(importRoomFee.getPayObjId()); |
| | | payFeeDetailPo.setB("T"); |
| | | double cycle = (DateUtil.dayCompare( |
| | | DateUtil.getDateFromStringA(payFeeDetailPo.getStartTime()), |
| | | DateUtil.getDateFromStringA(importRoomFee.getEndTime()) |
| | | )); |
| | | double cycle = 0; |
| | | if (FeeDto.FEE_FLAG_ONCE.equals(tmpFeeDto.getFeeFlag())){ |
| | | cycle = 1; |
| | | } |
| | | else{ |
| | | cycle = (DateUtil.dayCompare( |
| | | DateUtil.getDateFromStringA(payFeeDetailPo.getStartTime()), |
| | | DateUtil.getDateFromStringA(importRoomFee.getEndTime()) |
| | | )); |
| | | } |
| | | |
| | | if (new BigDecimal(payFeeDetailPo.getReceivedAmount()).doubleValue() < 0){ |
| | | cycle = cycle - cycle - cycle; |
| | | payFeeDetailPo.setState("1300"); |
| | | if (importRoomFee.getState() != null){ |
| | | payFeeDetailPo.setState(importRoomFee.getState()); |
| | | } |
| | | if (importRoomFee.getState().equals("1300")){ |
| | | cycle = 0 - cycle; |
| | | } |
| | | int count = feeDetailInnerServiceSMOImpl.queryFeeDetailsCountByVo(payFeeDetailPo); |
| | | |
| | |
| | | payFeeDetailPo.setCycles(cycle+""); |
| | | payFeeDetailPo.setEndTime(importRoomFee.getEndTime()); |
| | | if (count > 0) { |
| | | |
| | | throw new IllegalStateException("重复的缴费记录"); |
| | | } |
| | | |
| | | if (new BigDecimal(payFeeDetailPo.getPayableAmount()).doubleValue() < 0) { |
| | | // if (importRoomFee.getFrequency().equals("退费")) { |
| | | // payFeeDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_detailId)); |
| | | // double v = computeFeeByCycle(tmpFeeDto, importRoomFee); |
| | | // if (v > 0) { |
| | | // v = v - 2 * v; |
| | | // } |
| | | // payFeeDetailPo.setReceivableAmount(v+""); |
| | | // payFeeDetailPo.setDiscountAmount("0"); |
| | | // payFeeDetailPo.setState("1300"); |
| | | // int saved = feeDetailInnerServiceSMOImpl.saveFeeDetail(payFeeDetailPo); |
| | | // |
| | | // PayFeePo payFeePo = new PayFeePo(); |
| | | // payFeePo.setFeeId(payFeeDetailPo.getFeeId()); |
| | | // payFeePo.setEndTime(importRoomFee.getStartTime()); |
| | | // feeInnerServiceSMOImpl.updateFee(payFeePo); |
| | | // return; |
| | | // } else |
| | | if (importRoomFee.getState() != null && (importRoomFee.getState().equals("1600") || importRoomFee.getState().equals("1900"))){ |
| | | payFeeDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_detailId)); |
| | | double v = computeFeeByCycle(tmpFeeDto, importRoomFee); |
| | | if (v > 0) { |
| | | v = v - 2 * v; |
| | | } |
| | | payFeeDetailPo.setReceivableAmount(v+""); |
| | | payFeeDetailPo.setReceivableAmount(computeFeeByCycle(tmpFeeDto,importRoomFee)+""); |
| | | payFeeDetailPo.setDiscountAmount("0"); |
| | | payFeeDetailPo.setState("1300"); |
| | | int saved = feeDetailInnerServiceSMOImpl.saveFeeDetail(payFeeDetailPo); |
| | | |
| | | payFeeMonthImpl.doGeneratorFeeMonths(Collections.singletonList(payFeeDetailPo.getFeeId()), payFeeDetailPo.getCommunityId()); |
| | | |
| | | payFeeMonthImpl.doGeneratorOweFees(Collections.singletonList(payFeeDetailPo.getFeeId()), payFeeDetailPo.getCommunityId()); |
| | | return; |
| | | } |
| | | |
| | | PayFeeDetailDiscountPo payFeeDetailDiscount = new PayFeeDetailDiscountPo(); |
| | | try { |
| | | Map feePriceAll = computeFeeSMOImpl.getFeePrice(tmpFeeDto); |
| | | // Map feePriceAll = computeFeeSMOImpl.getFeePrice(tmpFeeDto); |
| | | FeeDto feeDto = new FeeDto(); |
| | | feeDto.setFeeId(tmpFeeDto.getFeeId()); |
| | | feeDto.setCommunityId(tmpFeeDto.getCommunityId()); |
| | | List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto); |
| | | // List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto); |
| | | payFeeDetailPo.setReceivableAmount(computeFeeByCycle(tmpFeeDto,importRoomFee)+""); |
| | | ResponseEntity<String> resultVo = feeDiscountApi.computeFeeDiscount(tmpFeeDto.getFeeId(), tmpFeeDto.getCommunityId(), 105, importRoomFee.getPayObjId(), |
| | | tmpFeeDto.getPayerObjType(), importRoomFee.getEndTime(), importRoomFee.getEndTime(), importRoomFee.getStartTime(), 1, 20); |
| | |
| | | |
| | | |
| | | payFeeDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_detailId)); |
| | | |
| | | if (importRoomFee.getState() != null && importRoomFee.getState().equals("1300")){ |
| | | payFeeDetailPo.setReceivableAmount("-"+payFeeDetailPo.getReceivableAmount()); |
| | | } |
| | | int saved = feeDetailInnerServiceSMOImpl.saveFeeDetail(payFeeDetailPo); |
| | | |
| | | |
| | |
| | | } |
| | | |
| | | if (saved < 1) { |
| | | payFeeMonthImpl.doGeneratorFeeMonths(Collections.singletonList(payFeeDetailPo.getFeeId()), payFeeDetailPo.getCommunityId()); |
| | | |
| | | payFeeMonthImpl.doGeneratorOweFees(Collections.singletonList(payFeeDetailPo.getFeeId()), payFeeDetailPo.getCommunityId()); |
| | | return; |
| | | } |
| | | |
| | |
| | | |
| | | // int i = feeInnerServiceSMOImpl.updateFee(feeInfo); |
| | | |
| | | if (tmpFeeDto.getEndTime().getTime() >= DateUtil.getDateFromStringA(importRoomFee.getEndTime()).getTime() + 2000) { |
| | | if (tmpFeeDto.getEndTime().getTime() >= DateUtil.getDateFromStringA(importRoomFee.getEndTime()).getTime() + 2000 || (importRoomFee.getState().equals("1100") || importRoomFee.getState().equals("1300"))) { |
| | | payFeeMonthImpl.doGeneratorFeeMonths(Collections.singletonList(payFeeDetailPo.getFeeId()), payFeeDetailPo.getCommunityId()); |
| | | |
| | | payFeeMonthImpl.doGeneratorOweFees(Collections.singletonList(payFeeDetailPo.getFeeId()), payFeeDetailPo.getCommunityId()); |
| | | return; |
| | | } |
| | | |
| | |
| | | feeInnerServiceSMOImpl.updateFee(payFeePo); |
| | | feeInfo = feeInnerServiceSMOImpl.queryFees(fee).get(0); |
| | | if (importRoomFee.getEndTime().split(" ")[0].equals(DateUtil.getFormatTimeStringB(feeInfo.getMaxEndTime()))) { |
| | | // Date deadlineTime = feeInfo.getDeadlineTime(); |
| | | // feeInfo.setDeadlineTime(DateUtil.getDateFromStringA(importRoomFee.getEndTime())); |
| | | // calculateFeeSMOImpl.computeOweFee(feeInfo); |
| | | // feeInfo.setDeadlineTime(deadlineTime); |
| | | // double computeFee = Double.parseDouble(feeInfo.getAmountOwed()); |
| | | double computeFee = computeFee(feeInfo,importRoomFee); |
| | | if(computeFee <= 1 && computeFee >= -1){ |
| | | PayFeePo payFee = new PayFeePo(); |
| | |
| | | int i = feeInnerServiceSMOImpl.updateFee(payFee); |
| | | } |
| | | } |
| | | |
| | | payFeeMonthImpl.doGeneratorFeeMonths(Collections.singletonList(payFeeDetailPo.getFeeId()), payFeeDetailPo.getCommunityId()); |
| | | |
| | | payFeeMonthImpl.doGeneratorOweFees(Collections.singletonList(payFeeDetailPo.getFeeId()), payFeeDetailPo.getCommunityId()); |
| | | } |
| | | |
| | | private double computeFee(FeeDto fee,ImportRoomFee importRoomFee) { |
| | |
| | | fee.getStartTime(), |
| | | DateUtil.getDateFromStringA(DateUtil.getFormatTimeStringB(fee.getMaxEndTime()).split(" ")[0]+" 23:59:59") |
| | | )); |
| | | if(feeDto.getFeeFlag().equals(FeeDto.FEE_FLAG_ONCE)){ |
| | | month = 1; |
| | | } |
| | | Map feePriceAll = computeFeeSMOImpl.getFeePrice(feeDto); |
| | | //todo 计算应收 |
| | | BigDecimal receivableAmount = new BigDecimal(feePriceAll.get("feePrice").toString()); |
| | |
| | | DateUtil.getDateFromStringA(importRoomFee.getStartTime()), |
| | | DateUtil.getDateFromStringA(importRoomFee.getEndTime().split(" ")[0] + " 23:59:59") |
| | | )); |
| | | Map feePriceAll = computeFeeSMOImpl.getFeePrice(feeDto); |
| | | if(feeDto.getFeeFlag().equals(FeeDto.FEE_FLAG_ONCE)){ |
| | | return Double.parseDouble(feePriceAll.get("feePrice").toString()); |
| | | month = 1; |
| | | } |
| | | Map feePriceAll = computeFeeSMOImpl.getFeePrice(feeDto); |
| | | // if(feeDto.getFeeFlag().equals(FeeDto.FEE_FLAG_ONCE)){ |
| | | // return Double.parseDouble(feePriceAll.get("feePrice").toString()); |
| | | // } |
| | | //todo 计算应收 |
| | | BigDecimal receivableAmount = new BigDecimal(feePriceAll.get("feePrice").toString()); |
| | | BigDecimal cycles = new BigDecimal(month); |