| | |
| | | @Autowired |
| | | private FeeReceiptInnerServiceSMOImpl feeReceiptInnerServiceSMOImpl; |
| | | |
| | | @Autowired |
| | | private IFeeDiscountInnerServiceSMO feeDiscountInnerServiceSMOImpl; |
| | | |
| | | @Override |
| | | public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException { |
| | | Assert.jsonObjectHaveKey(reqJson, "communityId", "请求报文中未包含communityId节点"); |
| | |
| | | for (int paramIndex = 0; paramIndex < params.size(); paramIndex++) { |
| | | JSONObject param = params.getJSONObject(paramIndex); |
| | | String maximumNumber = param.getString("maximumNumber"); |
| | | Assert.hasKeyAndValue(param, "discountId", "未包含优惠ID"); |
| | | Assert.hasKeyAndValue(param, "discountPrice", "未包含优惠金额"); |
| | | } |
| | | |
| | | //todo 是否按缴费时间段缴费 |
| | |
| | | //todo 缓存收据编号 |
| | | CommonCache.setValue(payFeeDetailPo.getDetailId() + CommonCache.RECEIPT_CODE, receiptCode, CommonCache.DEFAULT_EXPIRETIME_TWO_MIN); |
| | | |
| | | //todo 判断是否有赠送规则 |
| | | hasDiscount(paramObj, payFeePo, payFeeDetailPo); |
| | | //todo 判断是否有折扣规则 |
| | | hasDiscount(paramObj, payFeePo, payFeeDetailPo,feeInfo); |
| | | |
| | | // todo 处理用户账户 |
| | | dealUserAccount(paramObj, payFeeDetailPo); |
| | | |
| | | |
| | | String oId = Java110TransactionalFactory.getOId(); |
| | | if (StringUtil.isEmpty(oId)) { |
| | |
| | | |
| | | payFeeDetailPo.setPayOrderId(oId); |
| | | // todo 如果 扫码枪支付 输入支付订单ID |
| | | if(!StringUtil.isEmpty(payOrderId)){ |
| | | if (!StringUtil.isEmpty(payOrderId)) { |
| | | payFeeDetailPo.setPayOrderId(payOrderId); |
| | | } |
| | | payFeeDetailPo.setCashierId(userDtos.get(0).getUserId()); |
| | |
| | | } finally { |
| | | DistributedLock.releaseDistributedLock(key, requestId); |
| | | } |
| | | //账户处理 |
| | | //todo 账户处理 |
| | | dealAccount(paramObj); |
| | | //折扣管理 |
| | | if (paramObj.containsKey("selectDiscount")) { |
| | | JSONObject discountBusiness = null; |
| | | JSONArray selectDiscounts = paramObj.getJSONArray("selectDiscount"); |
| | | for (int discountIndex = 0; discountIndex < selectDiscounts.size(); discountIndex++) { |
| | | JSONObject param = selectDiscounts.getJSONObject(discountIndex); |
| | | addPayFeeDetailDiscount(paramObj, param); |
| | | } |
| | | } |
| | | |
| | | //为停车费单独处理 |
| | | |
| | | //todo 为停车费单独处理 |
| | | updateCarEndTime(paramObj); |
| | | |
| | | //处理报修单 |
| | | //todo 处理报修单 |
| | | doDealRepairOrder(paramObj); |
| | | |
| | | |
| | |
| | | private void dealUserAccount(JSONObject paramObj, PayFeeDetailPo payFeeDetailPo) { |
| | | //判断选择的账号 |
| | | JSONArray jsonArray = paramObj.getJSONArray("selectUserAccount"); |
| | | if (jsonArray == null || jsonArray.size() < 1) { |
| | | if (ListUtil.isNull(jsonArray)) { |
| | | return; |
| | | } |
| | | |
| | |
| | | BigDecimal receivedAmountDec = new BigDecimal(payFeeDetailPo.getReceivedAmount()); |
| | | receivedAmountDec = receivedAmountDec.subtract(cashSum); |
| | | payFeeDetailPo.setReceivedAmount(receivedAmountDec.doubleValue() + ""); |
| | | payFeeDetailPo.setAcctAmount(cashSum.doubleValue() + ""); |
| | | } |
| | | } |
| | | } |
| | |
| | | * @param payFeeDetailPo |
| | | * @throws ParseException |
| | | */ |
| | | private void hasDiscount(JSONObject paramObj, PayFeePo payFeePo, PayFeeDetailPo payFeeDetailPo) throws ParseException { |
| | | private void hasDiscount(JSONObject paramObj, PayFeePo payFeePo, PayFeeDetailPo payFeeDetailPo,FeeDto feeDto) throws ParseException { |
| | | if (!paramObj.containsKey("selectDiscount")) { |
| | | return; |
| | | } |
| | | JSONArray selectDiscount = paramObj.getJSONArray("selectDiscount"); |
| | | JSONArray selectDiscounts = paramObj.getJSONArray("selectDiscount"); |
| | | |
| | | if (selectDiscount == null || selectDiscount.size() < 1) { |
| | | if (ListUtil.isNull(selectDiscounts)) { |
| | | return; |
| | | } |
| | | for (int index = 0; index < selectDiscount.size(); index++) { |
| | | JSONObject paramJson = selectDiscount.getJSONObject(index); |
| | | Map feePriceMap = computeFeeSMOImpl.getFeePrice(feeDto); |
| | | for (int index = 0; index < selectDiscounts.size(); index++) { |
| | | JSONObject paramJson = selectDiscounts.getJSONObject(index); |
| | | if (!"102020008".equals(paramJson.getString("ruleId"))) { //赠送规则 |
| | | continue; |
| | | } |
| | | JSONArray feeDiscountSpecs = paramJson.getJSONArray("feeDiscountSpecs"); |
| | | if (feeDiscountSpecs == null || feeDiscountSpecs.size() < 1) { |
| | | if (ListUtil.isNull(feeDiscountSpecs)) { |
| | | continue; |
| | | } |
| | | for (int specIndex = 0; specIndex < feeDiscountSpecs.size(); specIndex++) { |
| | |
| | | cal.add(Calendar.MONTH, Integer.parseInt(specValue)); |
| | | payFeeDetailPo.setEndTime(df.format(cal.getTime())); |
| | | payFeePo.setEndTime(df.format(cal.getTime())); |
| | | |
| | | BigDecimal value = new BigDecimal(payFeeDetailPo.getGiftAmount()); |
| | | value = value.add(new BigDecimal(specValue).multiply(new BigDecimal((double)feePriceMap.get("feePrice")))); |
| | | payFeeDetailPo.setGiftAmount(value.doubleValue() + ""); |
| | | } |
| | | } |
| | | |
| | | for (int discountIndex = 0; discountIndex < selectDiscounts.size(); discountIndex++) { |
| | | JSONObject param = selectDiscounts.getJSONObject(discountIndex); |
| | | addPayFeeDetailDiscount(paramObj, param, payFeeDetailPo); |
| | | } |
| | | |
| | | } |
| | | |
| | | /** |
| | |
| | | * @param paramInJson 接口调用放传入入参 |
| | | * @return 订单服务能够接受的报文 |
| | | */ |
| | | public void addPayFeeDetailDiscount(JSONObject paramInJson, JSONObject discountJson) { |
| | | public void addPayFeeDetailDiscount(JSONObject paramInJson, JSONObject discountJson, PayFeeDetailPo payFeeDetailPo) { |
| | | JSONObject businessFee = new JSONObject(); |
| | | businessFee.put("detailDiscountId", GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_detailDiscountId)); |
| | | businessFee.put("discountPrice", discountJson.getString("discountPrice")); |
| | |
| | | if (fage < 1) { |
| | | throw new CmdException("更新费用信息失败"); |
| | | } |
| | | |
| | | FeeDiscountDto feeDiscountDto = new FeeDiscountDto(); |
| | | feeDiscountDto.setDiscountId(discountJson.getString("discountId")); |
| | | List<FeeDiscountDto> feeDiscountDtos = feeDiscountInnerServiceSMOImpl.queryFeeDiscounts(feeDiscountDto); |
| | | |
| | | if (ListUtil.isNull(feeDiscountDtos)) { |
| | | return; |
| | | } |
| | | |
| | | //todo 打折或者空置房打折 |
| | | if (FeeDiscountRuleDto.DISCOUNT_SMALL_TYPE_DISCOUNT.equals(feeDiscountDtos.get(0).getDiscountSmallType()) |
| | | || FeeDiscountRuleDto.DISCOUNT_SMALL_TYPE_APPLY_DISCOUNT.equals(feeDiscountDtos.get(0).getDiscountSmallType()) |
| | | ) { |
| | | BigDecimal value = new BigDecimal(payFeeDetailPo.getDiscountAmount()); |
| | | value = value.add(new BigDecimal(discountJson.getString("discountPrice"))); |
| | | payFeeDetailPo.setDiscountAmount(value.doubleValue() + ""); |
| | | } else if (FeeDiscountRuleDto.DISCOUNT_SMALL_TYPE_DEDUCTION.equals(feeDiscountDtos.get(0).getDiscountSmallType()) |
| | | || FeeDiscountRuleDto.DISCOUNT_SMALL_TYPE_APPLY_DEDUCTION.equals(feeDiscountDtos.get(0).getDiscountSmallType())) { |
| | | BigDecimal value = new BigDecimal(payFeeDetailPo.getDeductionAmount()); |
| | | value = value.add(new BigDecimal(discountJson.getString("discountPrice"))); |
| | | payFeeDetailPo.setDeductionAmount(value.doubleValue() + ""); |
| | | } else if (FeeDiscountRuleDto.DISCOUNT_SMALL_TYPE_LATE.equals(feeDiscountDtos.get(0).getDiscountSmallType())) { |
| | | BigDecimal value = new BigDecimal(payFeeDetailPo.getLateAmount()); |
| | | value = value.add(new BigDecimal(discountJson.getString("discountPrice"))); |
| | | payFeeDetailPo.setLateAmount(value.doubleValue() + ""); |
| | | } |
| | | } |
| | | |
| | | /** |