//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.core.smo.IComputeFeeSMO; //import com.java110.dto.contract.ContractDto; //import com.java110.dto.contract.ContractPartyaDto; //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.OwnerCarDto; //import com.java110.dto.room.RoomDto; //import com.java110.fee.api.FeeDiscountApi; //import com.java110.intf.community.IRoomInnerServiceSMO; //import com.java110.intf.fee.*; //import com.java110.intf.store.IContractInnerServiceSMO; //import com.java110.intf.store.IContractPartyaInnerServiceSMO; //import com.java110.intf.user.IOwnerCarInnerServiceSMO; //import com.java110.intf.user.IOwnerRoomRelV1InnerServiceSMO; //import com.java110.job.importData.DefaultImportData; //import com.java110.job.importData.IImportDataAdapt; //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.ResponseConstant; //import com.java110.utils.constant.StatusConstant; //import com.java110.utils.exception.ListenerExecuteException; //import com.java110.utils.util.*; //import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.http.ResponseEntity; //import org.springframework.stereotype.Service; // //import java.math.BigDecimal; //import java.text.ParseException; //import java.util.ArrayList; //import java.util.Calendar; //import java.util.List; //import java.util.Map; // ///** // * 车辆缴费信息导入 适配器 // * 前端请求 时 必须传入 // * param.append('importAdapt', "importRoomOwner"); // */ //@Service("importCarHistoryFeeV2DetailQueueData") //public class ImportCarHistoryFeeDetailV2QueueDataAdapt extends DefaultImportData implements IImportDataAdapt { // // @Override // public void importData(List assetImportLogDetailDtos) { // importDatas(assetImportLogDetailDtos); // } // // private void importDatas(List infos) { // // List importRoomFees = new ArrayList<>(); // for (AssetImportLogDetailDto assetImportLogDetailDto : infos) { // JSONObject data = JSONObject.parseObject(assetImportLogDetailDto.getContent()); // ImportRoomFee importRoomFee = BeanConvertUtil.covertBean(data, ImportRoomFee.class); // importRoomFee.setDetailId(assetImportLogDetailDto.getDetailId()); // importRoomFees.add(importRoomFee); // } // // if (importRoomFees.size() < 1) { // return; // } // // importCarFeeDetails(importRoomFees.get(0).getStoreId(), importRoomFees.get(0).getUserId(), importRoomFees, importRoomFees.get(0).getBatchId()); // } // // public void importCarFeeDetails(String storeId, String userId, List importCarFees, String batchId) { // // importCarFees = ownerCarInnerServiceSMOImpl.freshCarIds(importCarFees); // for (ImportRoomFee importCarFee : importCarFees) { // try { // if (StringUtil.isEmpty(importCarFee.getCarNum())) { // continue; // } // importCarFeeDetail(importCarFee, storeId, userId, batchId); // updateImportLogDetailState(importCarFee.getDetailId()); // } catch (Exception e) { // e.printStackTrace(); // updateImportLogDetailState(importCarFee.getDetailId(), e); // } // } // } // // // public void importCarFeeDetails2(String storeId, String userId, List importCarFees, String batchId) { // // importCarFees = ownerCarInnerServiceSMOImpl.freshCarIds(importCarFees); // for (ImportRoomFee importCarFee : importCarFees) { // try { // if (StringUtil.isEmpty(importCarFee.getCarNum())) { // if(importCarFee.getObjType() != null && (importCarFee.getObjType().equals("7777"))){ // importCarFeeDetail(importCarFee, storeId, userId, batchId); // updateImportLogDetailState(importCarFee.getDetailId()); // } // } // else{ // OwnerCarDto ownerCarDto = new OwnerCarDto(); // ownerCarDto.setCommunityId(importCarFee.getCommunityId()); // ownerCarDto.setCarNum(importCarFee.getCarNum()); // List ownerCarDtos = ownerCarInnerServiceSMOImpl.queryOwnerCars(ownerCarDto); // if (ownerCarDtos != null && ownerCarDtos.size() > 0) { // importCarFee.setCarId(ownerCarDtos.get(0).getCarId()); // }else{ // throw new IllegalStateException("车牌号不存在或存在多辆重复车牌号车"); // } // importCarFeeDetail(importCarFee, storeId, userId, batchId); // updateImportLogDetailState(importCarFee.getDetailId()); // } // } catch (Exception e) { // updateImportLogDetailState(importCarFee.getDetailId(), e); // throw new IllegalArgumentException(e.getMessage()); // } // } // } // // /** // * 导入 费用历史 // * // * @param importRoomFee // */ // private void importCarFeeDetail(ImportRoomFee importRoomFee, String storeId, String userId, String batchId) { // // RoomDto roomDto = new RoomDto(); //// roomDto.setDoorRoomNum(importRoomFee.getDoorRoomNum()); // roomDto.setCommunityId(importRoomFee.getCommunityId()); // if(importRoomFee.getDoorRoomNum()!=null){ // String[] split = importRoomFee.getDoorRoomNum().split("-"); // if(split.length==2){ // roomDto.setDoorRoomNum(importRoomFee.getDoorRoomNum()); // }else if(split.length > 2){ // roomDto.setFloorNum(split[0]); // roomDto.setUnitNum(split[1]); // roomDto.setRoomNum(split[2]); // } // } // List roomDtos = iRoomInnerServiceSMOImpl.queryRooms(roomDto); // try { // if (importRoomFee.getPayObjId() != null && importRoomFee.getPayObjId().equals("7777")){ // ContractPartyaDto contractPartyaDto = new ContractPartyaDto(); // contractPartyaDto.setCommunityId(importRoomFee.getCommunityId()); // contractPartyaDto.setPartyA(importRoomFee.getDoorRoomNum()); // List contractPartyaDtos = contractPartyaInnerServiceSMOImpl.queryContractPartyas(contractPartyaDto); // if (contractPartyaDtos != null && contractPartyaDtos.size() > 0) { // ContractDto contractDto = new ContractDto(); // contractDto.setContractCode(importRoomFee.getContractId()); // List contractDtos = contractInnerServiceSMOImpl.queryContracts(contractDto); // if (contractDtos.size() == 0) { // importRoomFee.setContractId(contractDtos.get(0).getContractId()); // } // importRoomFee.setRoomId(contractPartyaDtos.get(0).getPartyaId()); // }else{ // throw new RuntimeException(); // } // }else{ // importRoomFee.setRoomId(roomDtos.get(0).getRoomId()); // } // }catch (Exception e){ // if (importRoomFee.getPayObjId() != null &&importRoomFee.getPayObjId().equals("7777")){ // updateImportLogDetailState(importRoomFee.getDetailId(),new IllegalArgumentException("合同主体:"+importRoomFee.getDoorRoomNum()+"未查询到")); // throw new IllegalArgumentException("合同主体:"+importRoomFee.getDoorRoomNum()+"未查询到"); // }else { // updateImportLogDetailState(importRoomFee.getDetailId(), new IllegalArgumentException("门室号:" + importRoomFee.getDoorRoomNum() + "未查询到")); // throw new IllegalArgumentException("门室号:" + importRoomFee.getDoorRoomNum() + "未查询到"); // } // } // PayFeeDetailPo payFeeDetailPo = new PayFeeDetailPo(); // payFeeDetailPo.setPayOrderId(importRoomFee.getRoomId()); // payFeeDetailPo.setCycles(importRoomFee.getCycle()); // payFeeDetailPo.setCreateTime(importRoomFee.getCreateTime()); // payFeeDetailPo.setCommunityId(importRoomFee.getCommunityId()); // payFeeDetailPo.setStartTime(importRoomFee.getStartTime()); // payFeeDetailPo.setReceivedAmount(importRoomFee.getAmount()); // payFeeDetailPo.setContractId(importRoomFee.getContractId()); // int count = feeDetailInnerServiceSMOImpl.queryFeeDetailsCountByVo(payFeeDetailPo); // // if (count > 0) { // throw new IllegalArgumentException("重复的缴费记录"); // } // // // FeeConfigDto feeConfigDto = new FeeConfigDto(); // feeConfigDto.setFeeNameEq(importRoomFee.getFeeName().trim()); // feeConfigDto.setCommunityId(importRoomFee.getCommunityId()); // List feeConfigDtos = feeConfigInnerServiceSMOImpl.queryFeeConfigs(feeConfigDto); // // if (feeConfigDtos == null || feeConfigDtos.size() < 1) { // return; // } // // FeeConfigDto tmpFeeConfigDto = feeConfigDtos.get(0); // // FeeDto feeDto = new FeeDto(); // feeDto.setConfigId(tmpFeeConfigDto.getConfigId()); // feeDto.setCommunityId(importRoomFee.getCommunityId()); // feeDto.setPayerObjId(importRoomFee.getCarId()); // feeDto.setPayerObjType(importRoomFee.getObjType() == null ? "6666" : importRoomFee.getObjType()); // List feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto); // List payFeePos = null; // if (ListUtil.isNull(feeDtos)) { // 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 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); // } // // } // // public FeeAttrPo addFeeAttr(PayFeePo payFeePo, String specCd, String value) { // FeeAttrPo feeAttrPo = new FeeAttrPo(); // feeAttrPo.setCommunityId(payFeePo.getCommunityId()); // feeAttrPo.setSpecCd(specCd); // feeAttrPo.setValue(value); // feeAttrPo.setFeeId(payFeePo.getFeeId()); // feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId)); // return feeAttrPo; // } // private void doImportFeeDetail(FeeDto tmpFeeDto, ImportRoomFee importRoomFee) { // // // PayFeeDetailPo payFeeDetailPo = new PayFeeDetailPo(); // payFeeDetailPo.setCommunityId(importRoomFee.getCommunityId()); // payFeeDetailPo.setReceivedAmount(importRoomFee.getAmount()); // payFeeDetailPo.setCycles(importRoomFee.getCycle()); // 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())) { // Calendar calendar = Calendar.getInstance(); // calendar.setTime(DateUtil.getDateFromStringB(endTime)); // calendar.add(Calendar.DAY_OF_MONTH, 1); // endTime = DateUtil.getFormatTimeStringB(calendar.getTime()); // importRoomFee.setEndTime(endTime); // } // payFeeDetailPo.setEndTime(importRoomFee.getEndTime()); // payFeeDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_detailId)); // payFeeDetailPo.setRemark(importRoomFee.getRemark()); // payFeeDetailPo.setCreateTime(importRoomFee.getCreateTime()); // 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 resultVo = null; // try { // resultVo = feeDiscountApi.computeFeeDiscount(tmpFeeDto.getFeeId(), tmpFeeDto.getCommunityId(), 105, importRoomFee.getPayObjId(), // tmpFeeDto.getPayerObjType(), importRoomFee.getEndTime(), importRoomFee.getStartTime(), importRoomFee.getEndTime(), 1, 20); // } catch (ParseException e) { // throw new RuntimeException(e); // } // // // //// 2. 从 ResultVo 中获取 data 并强转为目标类型 // if (resultVo != null) { // // 假设 data 字段存储的是 List // 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); // payFeeDetailDiscount.setDiscountId(discountId); // payFeeDetailDiscount.setDiscountPrice(discountPrice); // } // } // payFeeDetailPo.setReceivableAmount(computeFeeByCycle(tmpFeeDto,importRoomFee)+""); // int saved = feeDetailInnerServiceSMOImpl.saveFeeDetail(payFeeDetailPo); // // FeeDetailDto feeDetailDto = new FeeDetailDto(); // feeDetailDto.setDetailId(payFeeDetailPo.getDetailId()); // // List 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()); // payFeePo.setStatusCd(StatusConstant.STATUS_CD_VALID); // payFeePo.setFeeId(tmpFeeDto.getFeeId()); // payFeePo.setEndTime(importRoomFee.getEndTime()); // if (FeeDto.FEE_FLAG_ONCE.equals(tmpFeeDto.getFeeFlag())) { // payFeePo.setState(FeeDto.STATE_FINISH); // } // feeInnerServiceSMOImpl.updateFee(payFeePo); // } // private double computeFeeByCycle(FeeDto fee,ImportRoomFee importRoomFee) { // FeeDto feeDto = new FeeDto(); // feeDto.setFeeId(fee.getFeeId()); // feeDto.setCommunityId(fee.getCommunityId()); // List feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto); // if (feeDtos == null || feeDtos.size() != 1) { // throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_ERROR, "查询费用信息失败,未查到数据或查到多条数据"); // } // feeDto = feeDtos.get(0); // // double month = (DateUtil.dayCompare( // DateUtil.getDateFromStringA(importRoomFee.getStartTime()), // DateUtil.getDateFromStringA(importRoomFee.getEndTime().split(" ")[0] + " 23:59:59") // )); // Map feePriceAll = computeFeeSMOImpl.getFeePrice(feeDto); // //todo 计算应收 // BigDecimal receivableAmount = new BigDecimal(feePriceAll.get("feePrice").toString()); // BigDecimal cycles = new BigDecimal(month); // double tmpReceivableAmount = cycles.multiply(receivableAmount).setScale(4, BigDecimal.ROUND_HALF_EVEN).doubleValue(); // return MoneyUtil.computePriceScale(tmpReceivableAmount, feeDto.getScale(), Integer.parseInt(feeDto.getDecimalPlace())); // } // //}