| | |
| | | import com.java110.core.event.cmd.Cmd; |
| | | import com.java110.core.event.cmd.CmdEvent; |
| | | import com.java110.core.factory.GenerateCodeFactory; |
| | | import com.java110.dto.CommunityMemberDto; |
| | | import com.java110.dto.carInoutPayment.CarInoutPaymentDto; |
| | | 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.machine.CarInoutDto; |
| | | import com.java110.dto.machine.MachineDto; |
| | | import com.java110.dto.owner.OwnerCarDto; |
| | | import com.java110.dto.owner.OwnerDto; |
| | | import com.java110.dto.tempCarFeeConfig.TempCarFeeConfigDto; |
| | | import com.java110.intf.common.ICarInoutPaymentV1InnerServiceSMO; |
| | | import com.java110.intf.common.ICarInoutV1InnerServiceSMO; |
| | | import com.java110.intf.common.IMachineInnerServiceSMO; |
| | |
| | | import com.java110.intf.fee.IFeeDetailInnerServiceSMO; |
| | | import com.java110.intf.fee.IFeeInnerServiceSMO; |
| | | import com.java110.intf.fee.ITempCarFeeConfigInnerServiceSMO; |
| | | import com.java110.intf.user.IBuildingOwnerV1InnerServiceSMO; |
| | | import com.java110.intf.user.IOwnerCarInnerServiceSMO; |
| | | import com.java110.intf.user.IOwnerCarV1InnerServiceSMO; |
| | | import com.java110.po.car.CarInoutPo; |
| | | import com.java110.po.carInoutPayment.CarInoutPaymentPo; |
| | | import com.java110.po.fee.FeeAttrPo; |
| | | import com.java110.po.fee.PayFeeDetailPo; |
| | | import com.java110.po.fee.PayFeePo; |
| | | import com.java110.utils.exception.CmdException; |
| | |
| | | import com.java110.utils.util.DateUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | @Java110Cmd(serviceCode = "machineTranslate.machineUploadCarPaymentCmd") |
| | | public class MachineUploadCarPaymentCmd extends Cmd { |
| | | |
| | | public static final String TEMP_CAR_OWNER = "临时车车主"; |
| | | |
| | | @Autowired |
| | | private IMachineInnerServiceSMO machineInnerServiceSMOImpl; |
| | |
| | | |
| | | @Autowired |
| | | private IFeeDetailInnerServiceSMO feeDetailInnerServiceSMOImpl; |
| | | |
| | | @Autowired |
| | | private IBuildingOwnerV1InnerServiceSMO buildingOwnerV1InnerServiceSMOImpl; |
| | | |
| | | /** |
| | | * data.put("carNum", carInoutDto.getCarNum()); |
| | |
| | | throw new CmdException("更新出场时间失败"); |
| | | } |
| | | |
| | | //缴费 |
| | | //如果有费用 则缴费 |
| | | boolean hasFee = hasFeeAndPayFee(carInoutPo, carInoutPaymentPo); |
| | | |
| | | double realCharge = Double.parseDouble(carInoutPaymentPo.getRealCharge()); |
| | | |
| | | //有费用 或者 缴费为0 时结束 |
| | | if (hasFee || realCharge == 0) { |
| | | return; |
| | | } |
| | | |
| | | OwnerCarDto ownerCarDto = new OwnerCarDto(); |
| | | ownerCarDto.setCarNum(reqJson.getString("carNum")); |
| | | ownerCarDto.setCommunityId(reqJson.getString("communityId")); |
| | | ownerCarDto.setCarType(OwnerCarDto.CAR_TYPE_TEMP); |
| | | List<OwnerCarDto> ownerCarDtos = ownerCarV1InnerServiceSMOImpl.queryOwnerCars(ownerCarDto); |
| | | |
| | | if (ownerCarDtos == null || ownerCarDtos.size() < 1) { |
| | | return; |
| | | } |
| | | |
| | | // 判断是否存在 临时车 虚拟业主 |
| | | OwnerDto ownerDto = new OwnerDto(); |
| | | ownerDto.setCommunityId(reqJson.getString("communityId")); |
| | | ownerDto.setOwnerTypeCd(OwnerDto.OWNER_TYPE_CD_OWNER); |
| | | ownerDto.setOwnerFlag(OwnerDto.OWNER_FLAG_FALSE); |
| | | ownerDto.setName(TEMP_CAR_OWNER); |
| | | List<OwnerDto> ownerDtos = buildingOwnerV1InnerServiceSMOImpl.queryBuildingOwners(ownerDto); |
| | | if (ownerDtos == null || ownerDtos.size() < 1) { |
| | | return; |
| | | } |
| | | JSONObject paramIn = new JSONObject(); |
| | | paramIn.put("inTime", carInoutDtos.get(0).getInTime()); |
| | | paramIn.put("carNum", reqJson.getString("carNum")); |
| | | paramIn.put("carId", ownerCarDtos.get(0).getCarId()); |
| | | paramIn.put("communityId", carInoutDtos.get(0).getCommunityId()); |
| | | paramIn.put("inoutId", carInoutDtos.get(0).getInoutId()); |
| | | paramIn.put("ownerId", ownerDtos.get(0).getMemberId()); |
| | | saveTempCarFee(paramIn, machineDto,carInoutDtos.get(0)); |
| | | |
| | | //再去缴费 |
| | | hasFeeAndPayFee(carInoutPo, carInoutPaymentPo); |
| | | } |
| | | |
| | |
| | | |
| | | PayFeeDetailPo payFeeDetailPo = new PayFeeDetailPo(); |
| | | payFeeDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_detailId)); |
| | | payFeeDetailPo.setPrimeRate("1.00"); |
| | | if(CarInoutPaymentDto.PAY_TYPE_CRASH.equals(carInoutPaymentPo.getPayType())) { |
| | | payFeeDetailPo.setPrimeRate(FeeDetailDto.PRIME_REATE_CRASH); |
| | | }else if(CarInoutPaymentDto.PAY_TYPE_WECHAT.equals(carInoutPaymentPo.getPayType())){ |
| | | payFeeDetailPo.setPrimeRate(FeeDetailDto.PRIME_REATE_WECHAT_QRCODE); |
| | | }else{ |
| | | payFeeDetailPo.setPrimeRate(FeeDetailDto.PRIME_REATE_ALI_QRCODE); |
| | | } |
| | | FeeDto feeDto = feeDtos.get(0); |
| | | payFeeDetailPo.setStartTime(DateUtil.getFormatTimeString(feeDto.getStartTime(), DateUtil.DATE_FORMATE_STRING_A)); |
| | | payFeeDetailPo.setEndTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A)); |
| | | payFeeDetailPo.setCommunityId(carInoutPaymentPo.getCommunityId()); |
| | | payFeeDetailPo.setCommunityId(carInoutPo.getCommunityId()); |
| | | payFeeDetailPo.setCycles("1"); |
| | | payFeeDetailPo.setReceivableAmount(carInoutPaymentPo.getPayCharge()); |
| | | payFeeDetailPo.setReceivedAmount(carInoutPaymentPo.getRealCharge()); |
| | |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | private void saveTempCarFee(JSONObject reqJson, MachineDto machineDto,CarInoutDto carInoutDto) { |
| | | |
| | | |
| | | |
| | | //创建费用 |
| | | TempCarFeeConfigDto tempCarFeeConfigDto = new TempCarFeeConfigDto(); |
| | | tempCarFeeConfigDto.setCommunityId(reqJson.getString("communityId")); |
| | | tempCarFeeConfigDto.setPaId(carInoutDto.getPaId()); |
| | | List<TempCarFeeConfigDto> tempCarFeeConfigDtos = tempCarFeeConfigInnerServiceSMOImpl.queryTempCarFeeConfigs(tempCarFeeConfigDto); |
| | | |
| | | if (tempCarFeeConfigDtos == null || tempCarFeeConfigDtos.size() < 1) { // 停车场未配置收费规则 则不创建费用 |
| | | return; |
| | | } |
| | | |
| | | CommunityMemberDto communityMemberDto = new CommunityMemberDto(); |
| | | communityMemberDto.setCommunityId(reqJson.getString("communityId")); |
| | | communityMemberDto.setMemberTypeCd(CommunityMemberDto.MEMBER_TYPE_PROPERTY); |
| | | communityMemberDto.setAuditStatusCd(CommunityMemberDto.AUDIT_STATUS_NORMAL); |
| | | List<CommunityMemberDto> communityMemberDtos = communityInnerServiceSMOImpl.getCommunityMembers(communityMemberDto); |
| | | |
| | | Assert.listOnlyOne(communityMemberDtos, "小区成员不存在"); |
| | | List<PayFeePo> payFeePos = new ArrayList<>(); |
| | | List<FeeAttrPo> feeAttrPos = new ArrayList<>(); |
| | | PayFeePo payFeePo = new PayFeePo(); |
| | | payFeePo.setFeeId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_feeId)); |
| | | payFeePo.setEndTime(reqJson.getString("inTime")); |
| | | payFeePo.setState(FeeDto.STATE_DOING); |
| | | payFeePo.setCommunityId(reqJson.getString("communityId")); |
| | | payFeePo.setConfigId(tempCarFeeConfigDto.getFeeConfigId()); |
| | | payFeePo.setPayerObjId(reqJson.getString("carId")); |
| | | payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_CAR); |
| | | payFeePo.setUserId("-1"); |
| | | payFeePo.setIncomeObjId(communityMemberDtos.get(0).getMemberId()); |
| | | payFeePo.setFeeTypeCd(FeeConfigDto.FEE_TYPE_CD_PARKING); |
| | | payFeePo.setFeeFlag(FeeDto.FEE_FLAG_ONCE); |
| | | payFeePo.setAmount("-1"); |
| | | payFeePo.setBatchId("-1"); |
| | | //payFeePo.setStartTime(importRoomFee.getStartTime()); |
| | | payFeePo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A)); |
| | | payFeePos.add(payFeePo); |
| | | FeeAttrPo feeAttrPo = new FeeAttrPo(); |
| | | feeAttrPo.setCommunityId(reqJson.getString("communityId")); |
| | | feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId)); |
| | | feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_ONCE_FEE_DEADLINE_TIME); |
| | | feeAttrPo.setValue(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A)); |
| | | feeAttrPo.setFeeId(payFeePo.getFeeId()); |
| | | feeAttrPos.add(feeAttrPo); |
| | | feeAttrPo = new FeeAttrPo(); |
| | | feeAttrPo.setCommunityId(reqJson.getString("communityId")); |
| | | feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId)); |
| | | feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_ID); |
| | | feeAttrPo.setValue(reqJson.getString("ownerId")); |
| | | feeAttrPo.setFeeId(payFeePo.getFeeId()); |
| | | feeAttrPos.add(feeAttrPo); |
| | | feeAttrPo = new FeeAttrPo(); |
| | | feeAttrPo.setCommunityId(reqJson.getString("communityId")); |
| | | feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId)); |
| | | feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_NAME); |
| | | feeAttrPo.setValue(TEMP_CAR_OWNER); |
| | | feeAttrPo.setFeeId(payFeePo.getFeeId()); |
| | | feeAttrPos.add(feeAttrPo); |
| | | feeAttrPo = new FeeAttrPo(); |
| | | feeAttrPo.setCommunityId(reqJson.getString("communityId")); |
| | | feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId)); |
| | | feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_LINK); |
| | | feeAttrPo.setValue("11111111111"); |
| | | feeAttrPo.setFeeId(payFeePo.getFeeId()); |
| | | feeAttrPos.add(feeAttrPo); |
| | | feeAttrPo = new FeeAttrPo(); |
| | | feeAttrPo.setCommunityId(reqJson.getString("communityId")); |
| | | feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId)); |
| | | feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_CAR_INOUT_ID); |
| | | feeAttrPo.setValue(reqJson.getString("inoutId")); |
| | | feeAttrPo.setFeeId(payFeePo.getFeeId()); |
| | | feeAttrPos.add(feeAttrPo); |
| | | int flag = feeInnerServiceSMOImpl.saveFee(payFeePos); |
| | | if (flag < 1) { |
| | | throw new CmdException("保存临时车费用失败"); |
| | | } |
| | | flag = feeAttrInnerServiceSMOImpl.saveFeeAttrs(feeAttrPos); |
| | | if (flag < 1) { |
| | | throw new CmdException("保存临时车费用属性失败"); |
| | | } |
| | | } |
| | | } |