| | |
| | | import com.java110.dto.chargeMachine.ChargeMachineDto; |
| | | import com.java110.dto.chargeMachineOrder.ChargeMachineOrderDto; |
| | | import com.java110.dto.chargeMachinePort.ChargeMachinePortDto; |
| | | import com.java110.dto.chargeRuleFee.ChargeRuleFeeDto; |
| | | import com.java110.dto.couponPropertyPoolConfig.CouponPropertyPoolConfigDto; |
| | | import com.java110.dto.couponPropertyUser.CouponPropertyUserDto; |
| | | import com.java110.dto.user.UserDto; |
| | |
| | | import com.java110.intf.acct.ICouponPropertyPoolConfigV1InnerServiceSMO; |
| | | import com.java110.intf.acct.ICouponPropertyUserDetailV1InnerServiceSMO; |
| | | import com.java110.intf.acct.ICouponPropertyUserV1InnerServiceSMO; |
| | | import com.java110.intf.common.IChargeMachineOrderAcctV1InnerServiceSMO; |
| | | import com.java110.intf.common.IChargeMachineOrderV1InnerServiceSMO; |
| | | import com.java110.intf.common.IChargeMachinePortV1InnerServiceSMO; |
| | | import com.java110.intf.common.IChargeMachineV1InnerServiceSMO; |
| | | import com.java110.intf.common.*; |
| | | import com.java110.intf.user.IUserV1InnerServiceSMO; |
| | | import com.java110.po.accountDetail.AccountDetailPo; |
| | | import com.java110.po.chargeMachineOrder.ChargeMachineOrderPo; |
| | | import com.java110.po.chargeMachineOrderAcct.ChargeMachineOrderAcctPo; |
| | | import com.java110.po.chargeMachineOrderCoupon.ChargeMachineOrderCouponPo; |
| | | import com.java110.po.chargeMachinePort.ChargeMachinePortPo; |
| | | import com.java110.po.couponPropertyUser.CouponPropertyUserPo; |
| | | import com.java110.utils.exception.CmdException; |
| | |
| | | @Autowired |
| | | private ICouponPropertyPoolConfigV1InnerServiceSMO couponPropertyPoolConfigV1InnerServiceSMOImpl; |
| | | |
| | | @Autowired |
| | | private IChargeRuleFeeV1InnerServiceSMO chargeRuleFeeV1InnerServiceSMOImpl; |
| | | |
| | | @Autowired |
| | | private IChargeMachineOrderCouponV1InnerServiceSMO chargeMachineOrderCouponV1InnerServiceSMOImpl; |
| | | |
| | | @Override |
| | | public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException { |
| | | Assert.hasKeyAndValue(reqJson, "communityId", "未包含小区信息"); |
| | |
| | | duration = 10; |
| | | } |
| | | |
| | | BigDecimal payMoneyDec = new BigDecimal(Double.parseDouble(chargeMachineDtos.get(0).getDurationPrice())); |
| | | ChargeRuleFeeDto chargeRuleFeeDto = new ChargeRuleFeeDto(); |
| | | chargeRuleFeeDto.setRuleId(chargeMachineDtos.get(0).getRuleId()); |
| | | chargeRuleFeeDto.setCommunityId(chargeMachineDtos.get(0).getCommunityId()); |
| | | List<ChargeRuleFeeDto> chargeRuleFeeDtos = chargeRuleFeeV1InnerServiceSMOImpl.queryChargeRuleFees(chargeRuleFeeDto); |
| | | |
| | | if (chargeRuleFeeDtos == null || chargeRuleFeeDtos.size() < 1) { |
| | | throw new CmdException("未设置充值收费"); |
| | | } |
| | | reqJson.put("durationPrice", chargeRuleFeeDtos.get(chargeRuleFeeDtos.size() - 1).getDurationPrice()); |
| | | |
| | | BigDecimal payMoneyDec = new BigDecimal(Double.parseDouble(chargeRuleFeeDtos.get(chargeRuleFeeDtos.size() - 1).getDurationPrice())); |
| | | |
| | | double payMoney = payMoneyDec.multiply(new BigDecimal(duration)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); |
| | | |
| | |
| | | durationHours = 10; |
| | | } |
| | | |
| | | |
| | | ChargeMachinePortDto chargeMachinePortDto = new ChargeMachinePortDto(); |
| | | chargeMachinePortDto.setMachineId(reqJson.getString("machineId")); |
| | | chargeMachinePortDto.setPortId(reqJson.getString("portId")); |
| | |
| | | chargeMachineOrderPo.setPersonId(userId); |
| | | chargeMachineOrderPo.setChargeHours(reqJson.getString("duration")); |
| | | chargeMachineOrderPo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A)); |
| | | chargeMachineOrderPo.setDurationPrice(reqJson.getString("durationPrice")); |
| | | Calendar calendar = Calendar.getInstance(); |
| | | if (duration == 999) { |
| | | calendar.add(Calendar.HOUR, 10); |
| | |
| | | resultVo.setData(orderId); |
| | | |
| | | double couponDurationHours = 0.0; |
| | | //扣款 |
| | | if (reqJson.containsKey("couponIds") && !StringUtil.isEmpty(reqJson.getString("couponIds"))) { |
| | | //todo 优惠券抵扣 |
| | | couponDurationHours = withholdCoupon(reqJson, chargeMachineDtos, orderId); |
| | | } |
| | | |
| | | if(durationHours - couponDurationHours >0) { |
| | | |
| | | //todo 优惠券抵扣 |
| | | withholdCoupon(reqJson, chargeMachineDtos, orderId); |
| | | |
| | | |
| | | if (durationHours - couponDurationHours > 0) { |
| | | // todo 3.0 账户扣款 |
| | | withholdAccount(reqJson, chargeMachineDtos, orderId,durationHours,couponDurationHours); |
| | | withholdAccount(reqJson, chargeMachineDtos, orderId, durationHours, couponDurationHours); |
| | | } |
| | | |
| | | context.setResponseEntity(ResultVo.createResponseEntity(resultVo)); |
| | |
| | | * @param chargeMachineDtos |
| | | * @param orderId |
| | | */ |
| | | private double withholdCoupon(JSONObject reqJson, List<ChargeMachineDto> chargeMachineDtos, String orderId) { |
| | | private void withholdCoupon(JSONObject reqJson, List<ChargeMachineDto> chargeMachineDtos, String orderId) { |
| | | if (!reqJson.containsKey("couponIds") || StringUtil.isEmpty(reqJson.getString("couponIds"))) { |
| | | return; |
| | | } |
| | | int flag; |
| | | double hours = 0; |
| | | String couponNames = ""; |
| | | // double hours = 0; |
| | | // String couponNames = ""; |
| | | ChargeMachineOrderCouponPo chargeMachineOrderCouponPo = null; |
| | | for (String couponId : reqJson.getString("couponIds").split(",")) { |
| | | String requestId = DistributedLock.getLockUUID(); |
| | | String key = this.getClass().getSimpleName() + reqJson.getString("couponId"); |
| | |
| | | throw new CmdException("核销失败"); |
| | | } |
| | | |
| | | couponNames += ("优惠券名称:" + couponPropertyUserDtos.get(0).getCouponName() + ",优惠券编号:" + couponId + ";"); |
| | | |
| | | CouponPropertyPoolConfigDto couponPropertyPoolConfigDto = new CouponPropertyPoolConfigDto(); |
| | | couponPropertyPoolConfigDto.setCouponId(couponPropertyUserDtos.get(0).getCppId()); |
| | | couponPropertyPoolConfigDto.setColumnKey("hours"); |
| | |
| | | Assert.listOnlyOne(couponPropertyPoolConfigDtos, "未包含优惠券配置信息"); |
| | | |
| | | double value = Double.parseDouble(couponPropertyPoolConfigDtos.get(0).getColumnValue()); |
| | | hours += value; |
| | | |
| | | chargeMachineOrderCouponPo = new ChargeMachineOrderCouponPo(); |
| | | chargeMachineOrderCouponPo.setCouponId(couponId); |
| | | chargeMachineOrderCouponPo.setCouponName(couponPropertyUserDtos.get(0).getCouponName()); |
| | | chargeMachineOrderCouponPo.setOrderId(orderId); |
| | | chargeMachineOrderCouponPo.setCommunityId(chargeMachineDtos.get(0).getCommunityId()); |
| | | chargeMachineOrderCouponPo.setState("W"); |
| | | chargeMachineOrderCouponPo.setCmocId(GenerateCodeFactory.getGeneratorId("11")); |
| | | chargeMachineOrderCouponPo.setHours(value + ""); |
| | | chargeMachineOrderCouponV1InnerServiceSMOImpl.saveChargeMachineOrderCoupon(chargeMachineOrderCouponPo); |
| | | |
| | | // couponNames += ("优惠券名称:" + couponPropertyUserDtos.get(0).getCouponName() + "(" + couponId + "),小时:"+value+";"); |
| | | // |
| | | // hours += value; |
| | | } finally { |
| | | DistributedLock.releaseDistributedLock(requestId, key); |
| | | } |
| | | } |
| | | |
| | | hours = Math.ceil(hours); |
| | | // hours = Math.ceil(hours); |
| | | |
| | | ChargeMachineOrderAcctPo chargeMachineOrderAcctPo = new ChargeMachineOrderAcctPo(); |
| | | chargeMachineOrderAcctPo.setAcctDetailId("-1"); |
| | | chargeMachineOrderAcctPo.setAmount(chargeMachineDtos.get(0).getDurationPrice()); |
| | | chargeMachineOrderAcctPo.setCmoaId(GenerateCodeFactory.getGeneratorId("11")); |
| | | chargeMachineOrderAcctPo.setOrderId(orderId); |
| | | chargeMachineOrderAcctPo.setAcctId(reqJson.getString("acctId")); |
| | | chargeMachineOrderAcctPo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A)); |
| | | chargeMachineOrderAcctPo.setEndTime(DateUtil.getAddHoursStringA(DateUtil.getCurrentDate(), new Double(hours).intValue())); |
| | | chargeMachineOrderAcctPo.setRemark("优惠券抵扣," + couponNames); |
| | | chargeMachineOrderAcctPo.setCommunityId(chargeMachineDtos.get(0).getCommunityId()); |
| | | chargeMachineOrderAcctPo.setEnergy("0"); |
| | | // ChargeMachineOrderAcctPo chargeMachineOrderAcctPo = new ChargeMachineOrderAcctPo(); |
| | | // chargeMachineOrderAcctPo.setAcctDetailId("-1"); |
| | | // chargeMachineOrderAcctPo.setAmount("0"); |
| | | // chargeMachineOrderAcctPo.setCmoaId(GenerateCodeFactory.getGeneratorId("11")); |
| | | // chargeMachineOrderAcctPo.setOrderId(orderId); |
| | | // chargeMachineOrderAcctPo.setAcctId(reqJson.getString("acctId")); |
| | | // chargeMachineOrderAcctPo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A)); |
| | | // chargeMachineOrderAcctPo.setEndTime(DateUtil.getAddHoursStringA(DateUtil.getCurrentDate(), new Double(hours).intValue())); |
| | | // chargeMachineOrderAcctPo.setRemark("优惠券抵扣," + couponNames); |
| | | // chargeMachineOrderAcctPo.setCommunityId(chargeMachineDtos.get(0).getCommunityId()); |
| | | // chargeMachineOrderAcctPo.setEnergy("0"); |
| | | // chargeMachineOrderAcctPo.setDurationPrice(reqJson.getString("durationPrice")); |
| | | // |
| | | // chargeMachineOrderAcctV1InnerServiceSMOImpl.saveChargeMachineOrderAcct(chargeMachineOrderAcctPo); |
| | | |
| | | chargeMachineOrderAcctV1InnerServiceSMOImpl.saveChargeMachineOrderAcct(chargeMachineOrderAcctPo); |
| | | |
| | | return hours; |
| | | // return hours; |
| | | } |
| | | |
| | | /** |
| | |
| | | * @param chargeMachineDtos |
| | | * @param orderId |
| | | */ |
| | | private void withholdAccount(JSONObject reqJson, List<ChargeMachineDto> chargeMachineDtos, String orderId ,double durationHours,double couponDurationHours) { |
| | | private void withholdAccount(JSONObject reqJson, List<ChargeMachineDto> chargeMachineDtos, String orderId, double durationHours, double couponDurationHours) { |
| | | AccountDto accountDto = new AccountDto(); |
| | | accountDto.setAcctId(reqJson.getString("acctId")); |
| | | List<AccountDto> accountDtos = accountInnerServiceSMOImpl.queryAccounts(accountDto); |
| | | |
| | | double amount = 0.0; |
| | | BigDecimal durationPrice = new BigDecimal(Double.parseDouble(chargeMachineDtos.get(0).getDurationPrice())); |
| | | if(couponDurationHours >0) { |
| | | durationPrice = durationPrice.multiply(new BigDecimal(durationHours - couponDurationHours)).setScale(2,BigDecimal.ROUND_HALF_UP); |
| | | BigDecimal durationPrice = new BigDecimal(Double.parseDouble(reqJson.getString("durationPrice"))); |
| | | if (couponDurationHours > 0) { |
| | | durationPrice = durationPrice.multiply(new BigDecimal(durationHours - couponDurationHours)).setScale(2, BigDecimal.ROUND_HALF_UP); |
| | | amount = durationPrice.doubleValue(); |
| | | }else{ |
| | | durationPrice = durationPrice.multiply(new BigDecimal(durationHours)).setScale(2,BigDecimal.ROUND_HALF_UP); |
| | | } else { |
| | | durationPrice = durationPrice.multiply(new BigDecimal(durationHours)).setScale(2, BigDecimal.ROUND_HALF_UP); |
| | | amount = durationPrice.doubleValue(); |
| | | } |
| | | |
| | |
| | | accountDetailPo.setAcctId(accountDtos.get(0).getAcctId()); |
| | | accountDetailPo.setObjId(accountDtos.get(0).getObjId()); |
| | | accountDetailPo.setObjType(accountDtos.get(0).getObjType()); |
| | | accountDetailPo.setAmount(amount+""); |
| | | accountDetailPo.setAmount(amount + ""); |
| | | accountDetailPo.setDetailId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_detailId)); |
| | | accountInnerServiceSMOImpl.withholdAccount(accountDetailPo); |
| | | ChargeMachineOrderAcctPo chargeMachineOrderAcctPo = new ChargeMachineOrderAcctPo(); |
| | | chargeMachineOrderAcctPo.setAcctDetailId(accountDetailPo.getDetailId()); |
| | | chargeMachineOrderAcctPo.setAmount(amount+""); |
| | | chargeMachineOrderAcctPo.setAmount(amount + ""); |
| | | |
| | | chargeMachineOrderAcctPo.setCmoaId(GenerateCodeFactory.getGeneratorId("11")); |
| | | chargeMachineOrderAcctPo.setOrderId(orderId); |
| | | chargeMachineOrderAcctPo.setAcctId(accountDtos.get(0).getAcctId()); |
| | | if(couponDurationHours >0) { |
| | | if (couponDurationHours > 0) { |
| | | chargeMachineOrderAcctPo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A)); |
| | | }else{ |
| | | } else { |
| | | chargeMachineOrderAcctPo.setStartTime(DateUtil.getAddHoursStringA(DateUtil.getCurrentDate(), new Double(Math.ceil(couponDurationHours)).intValue())); |
| | | } |
| | | chargeMachineOrderAcctPo.setEndTime(DateUtil.getAddHoursStringA(DateUtil.getCurrentDate(), new Double(Math.ceil(durationHours)).intValue())); |
| | | chargeMachineOrderAcctPo.setRemark("账户扣款"); |
| | | chargeMachineOrderAcctPo.setCommunityId(chargeMachineDtos.get(0).getCommunityId()); |
| | | chargeMachineOrderAcctPo.setEnergy("0"); |
| | | chargeMachineOrderAcctPo.setDurationPrice(reqJson.getString("durationPrice")); |
| | | |
| | | |
| | | chargeMachineOrderAcctV1InnerServiceSMOImpl.saveChargeMachineOrderAcct(chargeMachineOrderAcctPo); |
| | | } |