Commit 8114546306200d4d71f05d868566c5d6d729e0b0
1 parent
0183f5ad
更改车牌号支付流程
Showing
7 changed files
with
338 additions
and
152 deletions
src/main/java/com/rnt/controller/WeixinPayController.java
| ... | ... | @@ -47,6 +47,7 @@ import com.rnt.service.OrderService; |
| 47 | 47 | import com.rnt.service.ParkCardCouponsService; |
| 48 | 48 | import com.rnt.service.ParkLotService; |
| 49 | 49 | import com.rnt.service.PersonCardCouponsService; |
| 50 | +import com.rnt.utils.AmountUtils; | |
| 50 | 51 | import com.rnt.utils.CardTypeUtil; |
| 51 | 52 | import com.rnt.utils.SequenceUtil; |
| 52 | 53 | import com.rnt.utils.TLWXUser; |
| ... | ... | @@ -1116,35 +1117,75 @@ public class WeixinPayController extends Controller { |
| 1116 | 1117 | * 检查输入的车牌号是否存订单(带核算/待支付/已完成).<br/> |
| 1117 | 1118 | */ |
| 1118 | 1119 | public void parkOrderForNotPayExist() { |
| 1119 | - BizResult<Order> result = new BizResult<>(); | |
| 1120 | + BizResult<OrderVO> result = new BizResult<OrderVO>(); | |
| 1121 | + OrderVO orderVO = new OrderVO(); | |
| 1122 | + Map<String,String> reultMap = new HashMap<String,String>(); | |
| 1123 | + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm"); | |
| 1120 | 1124 | String carNum = this.getPara("carNum"); |
| 1121 | - logger.info("---begin 校验输入车牌是否存在待核算订单..入参=" + carNum); | |
| 1122 | - Map<String,String> reultMap = new HashMap<String,String>(); | |
| 1123 | - try { | |
| 1124 | - if (StringKit.isNotBlank(carNum)) { | |
| 1125 | - OrderService orderService = Duang.duang(OrderService.class); | |
| 1126 | - /**查询单信息.*/ | |
| 1127 | - Order order = orderService.findOrderByCarNum(carNum); | |
| 1128 | - if (order != null && StringKit.isNotBlank(order.getOrderId())) { | |
| 1129 | - result.setData(order); | |
| 1130 | - /**查询费用接口.*/ | |
| 1131 | - reultMap = orderService.chosseBillQuery(carNum, order); | |
| 1132 | - } else { | |
| 1133 | - result.setErrorMessage(ErrorType.NO_PARKING_MSG, "无停车记录"); | |
| 1134 | - } | |
| 1135 | - } else { | |
| 1136 | - logger.info("入参为空!"); | |
| 1137 | - result.setErrorMessage(ErrorType.SYSTEM_ERROR, "业务错误"); | |
| 1138 | - } | |
| 1139 | - | |
| 1140 | - if(reultMap == null || reultMap.size() ==0){ | |
| 1141 | - result.setErrorMessage(ErrorType.NO_PARKING_MSG, "无停车记录"); | |
| 1142 | - } | |
| 1143 | - } catch (Exception e) { | |
| 1144 | - e.printStackTrace(); | |
| 1145 | - } | |
| 1125 | + logger.info("---begin 校验输入车牌是否存要支付订单,入参=" + carNum); | |
| 1126 | + try{ | |
| 1127 | + if(StringKit.isNotBlank(carNum)){ | |
| 1128 | + OrderService orderService = Duang.duang(OrderService.class); | |
| 1129 | + /**查询单信息.*/ | |
| 1130 | + Order order = orderService.findOrderByCarNum(carNum); | |
| 1131 | + logger.info("通过车牌查询订单结果="+JSONObject.toJSONString(order)); | |
| 1132 | + if (order != null && StringKit.isNotBlank(order.getOrderId())) { | |
| 1133 | + orderVO.setOrderId(order.getOrderId()); | |
| 1134 | + orderVO.setParkName(order.getParkName()); | |
| 1135 | + orderVO.setCarNumber(order.getCarNumber()); | |
| 1136 | + /**查询费用接口.*/ | |
| 1137 | + reultMap = orderService.chosseBillQuery(carNum, order); | |
| 1138 | + }else{ | |
| 1139 | + result.setErrorMessage(ErrorType.NO_PARKING_MSG, "无停车记录"); | |
| 1140 | + } | |
| 1141 | + }else{ | |
| 1142 | + logger.info("入参为空!"); | |
| 1143 | + result.setErrorMessage(ErrorType.SYSTEM_ERROR, "业务错误"); | |
| 1144 | + } | |
| 1145 | + | |
| 1146 | + if(reultMap == null || reultMap.size() ==0){ | |
| 1147 | + result.setErrorMessage(ErrorType.NO_PARKING_MSG, "无停车记录"); | |
| 1148 | + }else{ | |
| 1149 | + orderVO.setParkInTime(StringKit.isNotBlank(reultMap.get("park_in_time")) ? format.format(format.parse(reultMap.get("park_in_time"))): null); | |
| 1150 | + orderVO.setParkOutTime(StringKit.isNotBlank(reultMap.get("park_out_time")) ? format.format(format.parse(reultMap.get("park_out_time"))): null); | |
| 1151 | + if(StringKit.isNotBlank(reultMap.get("order_total_fee"))){//分转元 | |
| 1152 | + orderVO.setOrderTotalFee(new BigDecimal(AmountUtils.changeF2Y(reultMap.get("order_total_fee")))); | |
| 1153 | + }else{ | |
| 1154 | + orderVO.setOrderTotalFee(new BigDecimal("0")); | |
| 1155 | + } | |
| 1156 | + | |
| 1157 | + if(StringKit.isNotBlank(reultMap.get("order_not_pay_fee"))){//分转元 | |
| 1158 | + orderVO.setOrderNotPayFee(new BigDecimal(AmountUtils.changeF2Y(reultMap.get("order_not_pay_fee")))); | |
| 1159 | + }else{ | |
| 1160 | + orderVO.setOrderNotPayFee(new BigDecimal("0")); | |
| 1161 | + } | |
| 1162 | + | |
| 1163 | + if(StringKit.isNotBlank(reultMap.get("order_payed_fee"))){//分转元 | |
| 1164 | + orderVO.setOrderPayedFee(new BigDecimal(AmountUtils.changeF2Y(reultMap.get("order_payed_fee")))); | |
| 1165 | + }else{ | |
| 1166 | + orderVO.setOrderPayedFee(new BigDecimal("0")); | |
| 1167 | + } | |
| 1168 | + if(StringKit.isNotBlank(reultMap.get("parking_duration"))){ | |
| 1169 | + orderVO.setParkingDuration(com.rnt.utils.DateUtil.secondToTime(Long.valueOf(reultMap.get("parking_duration")))); | |
| 1170 | + }else{ | |
| 1171 | + orderVO.setParkingDuration(com.rnt.utils.DateUtil.secondToTime(Long.valueOf("0"))); | |
| 1172 | + } | |
| 1173 | + | |
| 1174 | + result.setErrorMessage(ErrorType.BIZ_SUCCESS, "通过车牌号查询费用成功"); | |
| 1175 | + result.setData(orderVO); | |
| 1176 | + } | |
| 1177 | + }catch (Exception e) { | |
| 1178 | + result.setErrorMessage(ErrorType.SYSTEM_ERROR, "业务错误"); | |
| 1179 | + e.printStackTrace(); | |
| 1180 | + } | |
| 1146 | 1181 | logger.info("---end 校验输入车牌是..结果=" + JSONObject.toJSONString(result)); |
| 1147 | - this.renderJson(result); | |
| 1182 | + if(result != null && ErrorType.BIZ_SUCCESS.getCode().equals(result.getCode()) && result.getData() != null){ | |
| 1183 | + this.getRequest().setAttribute("orderVO", result.getData()); | |
| 1184 | + this.render("check.html"); | |
| 1185 | + }else{ | |
| 1186 | + this.setAttr("carNum", carNum); | |
| 1187 | + this.render("checkerror.html"); | |
| 1188 | + } | |
| 1148 | 1189 | |
| 1149 | 1190 | } |
| 1150 | 1191 | |
| ... | ... | @@ -1158,45 +1199,25 @@ public class WeixinPayController extends Controller { |
| 1158 | 1199 | * 5.插入订单流水表. |
| 1159 | 1200 | */ |
| 1160 | 1201 | public void queryParkOrderForNotPay() { |
| 1161 | - logger.info("开始查询待支付的停车订单WeixinPayController.queryParkOrderForNotPay()方法."); | |
| 1202 | + | |
| 1162 | 1203 | BizResult<OrderVO> result = new BizResult<OrderVO>(); |
| 1163 | - String carNum = this.getPara("carNum"); | |
| 1204 | + String orderId = this.getPara("orderId"); | |
| 1205 | + logger.info("---begin查询待支付的停车订单WeixinPayController.queryParkOrderForNotPay()方法.入参{orderId="+orderId+"}"); | |
| 1164 | 1206 | OrderService orderService = Duang.duang(OrderService.class); |
| 1165 | 1207 | OrderVO orderVO = new OrderVO(); |
| 1166 | 1208 | try { |
| 1167 | - orderVO = orderService.queryParkOrderForNotPay(carNum); | |
| 1168 | - if (orderVO != null && StringKit.isNotBlank(orderVO.getOrderId())) { | |
| 1169 | - //创建支付单 | |
| 1170 | - PayOrder payOrder = new PayOrder(); | |
| 1171 | - String payOrderId = SequenceUtil.getNextOrderId(SequenceTypeEnum.ORDER_PAY_WXGZH.value()); | |
| 1172 | - payOrder.setPayOrderId(payOrderId); | |
| 1173 | - payOrder.setPaySrcType(Integer.valueOf(PayOrderEnum.PAY_RESOURCE_TYPE_PARK.getValue())); | |
| 1174 | - payOrder.setRltOrderId(orderVO.getOrderId()); | |
| 1175 | - payOrder.setPayOrderTitle(PayOrderEnum.PAY_ORDER_TYPE_PAY.getValue()); | |
| 1176 | - payOrder.setPayType(Integer.valueOf(PayOrderEnum.PAY_TYPE_WXGZH.getValue())); | |
| 1177 | - payOrder.setPayOrderState(Integer.valueOf(PayOrderEnum.PAY_ORDER_STATE_WAIT_PAY.getValue())); | |
| 1178 | - payOrder.setPayorderStateTime(new Date()); | |
| 1179 | - payOrder.setDataState(DataStatusEnum.DATA_STATUS_VALID.value()); | |
| 1180 | - payOrder.setCreateDate(new Date()); | |
| 1181 | - payOrder.setModfiyDate(new Date()); | |
| 1182 | - logger.info("支付单save请求数据为: payOrder=" + JSONObject.toJSONString(payOrder)); | |
| 1183 | - Boolean flag = payOrder.save(); | |
| 1184 | - logger.info("支付单save 响应为:flag=" + flag); | |
| 1185 | - orderVO.setPayOrderId(payOrderId); | |
| 1186 | - if (!flag) { | |
| 1187 | - result.setCode(ErrorType.BIZ_ERROR.getCode()); | |
| 1188 | - result.setMsg("支付单保存失败!"); | |
| 1189 | - renderJson(result); | |
| 1190 | - return; | |
| 1191 | - } | |
| 1192 | - /**根据停车场编码查询通知艾润停车场编码.*/ | |
| 1193 | - result.setData(orderVO); | |
| 1194 | - } else { | |
| 1195 | - result.setErrorMessage(ErrorType.SYSTEM_ERROR, "业务错误"); | |
| 1209 | + orderVO = orderService.queryParkOrderForNotPay(orderId); | |
| 1210 | + if(orderVO != null && StringKit.isNotBlank(orderVO.getOrderId())){ | |
| 1211 | + result.setData(orderVO); | |
| 1212 | + }else{ | |
| 1213 | + result.setCode(ErrorType.BIZ_ERROR.getCode()); | |
| 1214 | + result.setMsg("订单单保存失败!"); | |
| 1196 | 1215 | } |
| 1197 | 1216 | } catch (Exception e) { |
| 1217 | + result.setErrorMessage(ErrorType.SYSTEM_ERROR, "业务错误"); | |
| 1198 | 1218 | e.printStackTrace(); |
| 1199 | 1219 | } |
| 1220 | + logger.info("---end查询待支付的停车订单WeixinPayController.queryParkOrderForNotPay()方法.结果="+JSONObject.toJSONString(result)); | |
| 1200 | 1221 | this.renderJson(result); |
| 1201 | 1222 | } |
| 1202 | 1223 | ... | ... |
src/main/java/com/rnt/service/OrderService.java
| ... | ... | @@ -158,17 +158,17 @@ public class OrderService { |
| 158 | 158 | * @param carNum |
| 159 | 159 | * @throws ParseException |
| 160 | 160 | */ |
| 161 | - public OrderVO queryParkOrderForNotPay(String carNum) throws ParseException { | |
| 162 | - logger.info("---begin订单信息更新,carNum=" + carNum); | |
| 161 | + public OrderVO queryParkOrderForNotPay(String orderId) throws ParseException { | |
| 162 | + logger.info("---begin订单信息更新,orderId=" + orderId); | |
| 163 | 163 | OrderVO orderVO = new OrderVO(); |
| 164 | 164 | SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm"); |
| 165 | 165 | Map<String,String> resultmap = new HashMap<String,String>(); |
| 166 | 166 | //1.查询支付订单 |
| 167 | - Order order = this.findOrderByCarNum(carNum); | |
| 167 | + Order order = this.findOrderByOrderId(orderId); | |
| 168 | 168 | logger.info("通过车牌号查询到的支付订单信息结果="+JSONObject.toJSON(order)); |
| 169 | 169 | //2.调用查询费用接口 |
| 170 | 170 | if (order != null && StringKit.isNotBlank(order.getOrderId())) { |
| 171 | - resultmap = this.chosseBillQuery(carNum,order); | |
| 171 | + resultmap = this.chosseBillQuery(order.getCarNumber(),order); | |
| 172 | 172 | } |
| 173 | 173 | boolean orderUpdateFlg = false; |
| 174 | 174 | int updateOrderDetailFlg = 0; |
| ... | ... | @@ -210,17 +210,6 @@ public class OrderService { |
| 210 | 210 | if (updateOrderDetailFlg > 0) { |
| 211 | 211 | //封装返回数据 |
| 212 | 212 | orderVO.setOrderId(order.getOrderId()); |
| 213 | - orderVO.setParkId(order.getParkId()); | |
| 214 | - orderVO.setParkName(resultmap.get("park_name")); | |
| 215 | - orderVO.setParkAddress(resultmap.get("park_address")); | |
| 216 | - orderVO.setCarNumber(order.getCarNumber()); | |
| 217 | - orderVO.setOrderPayedFee(new BigDecimal(resultmap.get("order_payed_fee"))); | |
| 218 | - orderVO.setOrderNotPayFee(new BigDecimal(resultmap.get("order_not_pay_fee"))); | |
| 219 | - orderVO.setOrderTotalFee(new BigDecimal(resultmap.get("order_total_fee"))); | |
| 220 | - orderVO.setOrderTitle("待付费用"); | |
| 221 | - orderVO.setParkInTime(format.parse(resultmap.get("park_in_time"))); | |
| 222 | - orderVO.setParkOutTime(format.parse(resultmap.get("park_out_time"))); | |
| 223 | - orderVO.setParkingDuration(DateUtil.secondToTime(Long.valueOf(resultmap.get("parking_duration")))); | |
| 224 | 213 | } |
| 225 | 214 | /**插入订单流水.*/ |
| 226 | 215 | ParkOrderFlow parkOrderFlow = new ParkOrderFlow(); |
| ... | ... | @@ -243,11 +232,11 @@ public class OrderService { |
| 243 | 232 | * @return |
| 244 | 233 | */ |
| 245 | 234 | public Map<String, String> chosseBillQuery(String carNum,Order order){ |
| 246 | - | |
| 247 | 235 | OrderService orderService = Duang.duang(OrderService.class); |
| 248 | 236 | IRainQueryService iRainQueryService = Duang.duang(IRainQueryService.class); |
| 249 | 237 | Map<String, String> reultMap = new HashMap<String, String>(); |
| 250 | 238 | if (order != null && StringKit.isNotBlank(order.getOrderId())) { |
| 239 | + logger.info("查询费用来源="+(order.getSourceType() ==2 ? "调用青岛路侧费用查询接口" :"调用艾润查询费用接口")); | |
| 251 | 240 | if("1".equals(String.valueOf(order.getSourceType()))){//道闸:调用艾润查询费用接口 |
| 252 | 241 | /**调用艾润查询费用接口.*/ |
| 253 | 242 | reultMap = iRainQueryService.billQuery(carNum, order.getParkId()); |
| ... | ... | @@ -276,10 +265,11 @@ public class OrderService { |
| 276 | 265 | //1.查询待支付订单 |
| 277 | 266 | StringBuffer sql = new StringBuffer( |
| 278 | 267 | "select a.id, a.order_id,a.car_number,a.order_title,a.order_payed_fee,a.order_not_pay_fee,a" |
| 279 | - + ".order_total_fee,a.park_id"); | |
| 268 | + + ".order_total_fee,a.park_id,source_type,park_name"); | |
| 280 | 269 | sql.append(" from td_b_order a"); |
| 281 | 270 | sql.append(" where a.order_state in(1,2,3)"); |
| 282 | 271 | sql.append(" and a.car_number=?"); |
| 272 | + sql.append(" and a.data_state=1"); | |
| 283 | 273 | sql.append(" order by a.create_date DESC"); |
| 284 | 274 | |
| 285 | 275 | Order order = new Order().findFirst(sql.toString(), carNum); |
| ... | ... | @@ -288,6 +278,24 @@ public class OrderService { |
| 288 | 278 | |
| 289 | 279 | return order; |
| 290 | 280 | } |
| 281 | + | |
| 282 | + /** | |
| 283 | + * 通过车牌查询待核算支付单信息.<br/> | |
| 284 | + * | |
| 285 | + * @param | |
| 286 | + */ | |
| 287 | + public Order findOrderByOrderId(String orderId) { | |
| 288 | + //1.查询待支付订单 | |
| 289 | + StringBuffer sql = new StringBuffer( | |
| 290 | + "select a.id, a.order_id,a.car_number,a.order_title,a.order_payed_fee,a.order_not_pay_fee,a" | |
| 291 | + + ".order_total_fee,a.park_id,source_type,park_name"); | |
| 292 | + sql.append(" from td_b_order a"); | |
| 293 | + sql.append(" where a.order_state in(1,2,3)"); | |
| 294 | + sql.append(" and a.order_id=?"); | |
| 295 | + sql.append(" and a.data_state=1"); | |
| 296 | + Order order = new Order().findFirst(sql.toString(), orderId); | |
| 297 | + return order; | |
| 298 | + } | |
| 291 | 299 | |
| 292 | 300 | |
| 293 | 301 | } | ... | ... |
src/main/java/com/rnt/utils/AmountUtils.java
0 → 100644
| 1 | +package com.rnt.utils; | |
| 2 | + | |
| 3 | + | |
| 4 | +import java.math.BigDecimal; | |
| 5 | + | |
| 6 | +import com.zteits.clouds.api.apibase.constants.ErrorType; | |
| 7 | +import com.zteits.clouds.api.apibase.exception.BizException; | |
| 8 | + | |
| 9 | +/** | |
| 10 | + * | |
| 11 | + * Copyright: Copyright (c) 2017 ZTE-ITS | |
| 12 | + * | |
| 13 | + * @ClassName: AmountUtils.java | |
| 14 | + * @Description: | |
| 15 | + * @version: v1.0.0 | |
| 16 | + * @author: wangbiao | |
| 17 | + * @date: 2017年6月27日 下午5:24:43 | |
| 18 | + * Modification History: | |
| 19 | + * Date Author Version Description | |
| 20 | + *---------------------------------------------------------* | |
| 21 | + * 2017年6月27日 wangbiao v1.0.0 创建 | |
| 22 | + */ | |
| 23 | + | |
| 24 | +public class AmountUtils { | |
| 25 | + /**金额为分的格式 */ | |
| 26 | + public static final String CURRENCY_FEN_REGEX = "\\-?[0-9]+"; | |
| 27 | + | |
| 28 | + private AmountUtils() { | |
| 29 | + } | |
| 30 | + | |
| 31 | + /** | |
| 32 | + * 将分为单位的转换为元并返回金额格式的字符串 (除100) | |
| 33 | + * | |
| 34 | + * @param amount | |
| 35 | + * @return | |
| 36 | + * @throws Exception | |
| 37 | + */ | |
| 38 | + public static String changeF2Y(Long amount){ | |
| 39 | + if(!amount.toString().matches(CURRENCY_FEN_REGEX)) { | |
| 40 | + throw new BizException(ErrorType.BIZ_ERROR, "金额格式有误!"); | |
| 41 | + } | |
| 42 | + | |
| 43 | + int flag = 0; | |
| 44 | + String amString = amount.toString(); | |
| 45 | + if(amString.charAt(0)=='-'){ | |
| 46 | + flag = 1; | |
| 47 | + amString = amString.substring(1); | |
| 48 | + } | |
| 49 | + StringBuilder result = new StringBuilder(); | |
| 50 | + if(amString.length()==1){ | |
| 51 | + result.append("0.0").append(amString); | |
| 52 | + }else if(amString.length() == 2){ | |
| 53 | + result.append("0.").append(amString); | |
| 54 | + }else{ | |
| 55 | + String intString = amString.substring(0,amString.length()-2); | |
| 56 | + for(int i=1; i<=intString.length();i++){ | |
| 57 | + if( (i-1)%3 == 0 && i !=1){ | |
| 58 | + result.append(","); | |
| 59 | + } | |
| 60 | + result.append(intString.substring(intString.length()-i,intString.length()-i+1)); | |
| 61 | + } | |
| 62 | + result.reverse().append(".").append(amString.substring(amString.length()-2)); | |
| 63 | + } | |
| 64 | + if(flag == 1){ | |
| 65 | + return "-"+result.toString(); | |
| 66 | + }else{ | |
| 67 | + return result.toString(); | |
| 68 | + } | |
| 69 | + } | |
| 70 | + | |
| 71 | + /** | |
| 72 | + * 将分为单位的转换为元 (除100) | |
| 73 | + * | |
| 74 | + * @param amount | |
| 75 | + * @return | |
| 76 | + * @throws Exception | |
| 77 | + */ | |
| 78 | + public static String changeF2Y(String amount){ | |
| 79 | + if(!amount.matches(CURRENCY_FEN_REGEX)) { | |
| 80 | + throw new BizException(ErrorType.BIZ_ERROR, "金额格式有误!"); | |
| 81 | + } | |
| 82 | + return BigDecimal.valueOf(Long.valueOf(amount)).divide(new BigDecimal(100)).toString(); | |
| 83 | + } | |
| 84 | + | |
| 85 | + | |
| 86 | + /** | |
| 87 | + * 将元为单位的转换为分 (乘100) | |
| 88 | + * | |
| 89 | + * @param amount | |
| 90 | + * @return | |
| 91 | + */ | |
| 92 | + public static String changeY2F(Long amount){ | |
| 93 | + return BigDecimal.valueOf(amount).multiply(new BigDecimal(100)).toString(); | |
| 94 | + } | |
| 95 | + | |
| 96 | + /** | |
| 97 | + * 将元为单位的转换为分 替换小数点,支持以逗号区分的金额 | |
| 98 | + * | |
| 99 | + * @param amount | |
| 100 | + * @return | |
| 101 | + */ | |
| 102 | + public static String changeY2F(String amount){ | |
| 103 | + String currency = amount.replaceAll("\\$|\\¥|\\,", ""); //处理包含, ¥ 或者$的金额 | |
| 104 | + int index = currency.indexOf('.'); | |
| 105 | + int length = currency.length(); | |
| 106 | + Long amLong = 0l; | |
| 107 | + if(index == -1){ | |
| 108 | + amLong = Long.valueOf(currency+"00"); | |
| 109 | + }else if(length - index >= 3){ | |
| 110 | + amLong = Long.valueOf((currency.substring(0, index+3)).replace(".", "")); | |
| 111 | + }else if(length - index == 2){ | |
| 112 | + amLong = Long.valueOf((currency.substring(0, index+2)).replace(".", "")+0); | |
| 113 | + }else{ | |
| 114 | + amLong = Long.valueOf((currency.substring(0, index+1)).replace(".", "")+"00"); | |
| 115 | + } | |
| 116 | + return amLong.toString(); | |
| 117 | + } | |
| 118 | + | |
| 119 | + | |
| 120 | + /** | |
| 121 | + * 数字金额大写转换,思想先写个完整的然后将如零拾替换成零 | |
| 122 | + * 要用到正则表达式 | |
| 123 | + */ | |
| 124 | + public static String moneyUpperCase(double n){ | |
| 125 | + String fraction[] = {"角", "分"}; | |
| 126 | + String digit[] = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" }; | |
| 127 | + String unit[][] = {{"元", "万", "亿"}, | |
| 128 | + {"", "拾", "佰", "仟"}}; | |
| 129 | + | |
| 130 | + String head = n < 0? "负": ""; | |
| 131 | + n = Math.abs(n); | |
| 132 | + | |
| 133 | + String s = ""; | |
| 134 | + for (int i = 0; i < fraction.length; i++) { | |
| 135 | + double f1= new BigDecimal(n).setScale(2,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(10 * Math.pow(10, i))).doubleValue(); | |
| 136 | + s += (digit[(int) (Math.floor(f1) % 10)] + fraction[i]).replaceAll("(零.)+", ""); | |
| 137 | + | |
| 138 | + } | |
| 139 | + if(s.length()<1){ | |
| 140 | + s = "整"; | |
| 141 | + } | |
| 142 | + int integerPart = (int)Math.floor(n); | |
| 143 | + | |
| 144 | + for (int i = 0; i < unit[0].length && integerPart > 0; i++) { | |
| 145 | + String p =""; | |
| 146 | + for (int j = 0; j < unit[1].length && n > 0; j++) { | |
| 147 | + p = digit[integerPart%10]+unit[1][j] + p; | |
| 148 | + integerPart = integerPart/10; | |
| 149 | + } | |
| 150 | + s = p.replaceAll("(零.)*零$", "").replaceAll("^$", "零") + unit[0][i] + s; | |
| 151 | + } | |
| 152 | + return head + s.replaceAll("(零.)*零元", "元").replaceFirst("(零.)+", "").replaceAll("(零.)+", "零").replaceAll("^整$", "零元整"); | |
| 153 | + } | |
| 154 | + /** | |
| 155 | + * @param args | |
| 156 | + */ | |
| 157 | + public static void main(String[] args) { | |
| 158 | + String str ="200"; | |
| 159 | + BigDecimal big = new BigDecimal(str); | |
| 160 | + System.out.println(AmountUtils.changeF2Y(str)); | |
| 161 | + | |
| 162 | + } | |
| 163 | + | |
| 164 | +} | ... | ... |
src/main/java/com/rnt/utils/DateUtil.java
| ... | ... | @@ -828,7 +828,8 @@ public class DateUtil { |
| 828 | 828 | private static String unitFormat(long time) { |
| 829 | 829 | String retStr = null; |
| 830 | 830 | if (time >= 0 && time < 10) |
| 831 | - retStr = "0" + Long.toString(time); | |
| 831 | + //retStr = "0" + Long.toString(time); wangfs 2017-07-07 更改 | |
| 832 | + retStr = Long.toString(time); | |
| 832 | 833 | else |
| 833 | 834 | retStr = "" + time; |
| 834 | 835 | return retStr; | ... | ... |
src/main/java/com/rnt/vo/OrderVO.java
| ... | ... | @@ -33,10 +33,10 @@ public class OrderVO { |
| 33 | 33 | private String orderTitle; |
| 34 | 34 | |
| 35 | 35 | /** 车辆进场时间. */ |
| 36 | - private Date parkInTime; | |
| 36 | + private String parkInTime; | |
| 37 | 37 | |
| 38 | 38 | /** 车辆出场时间. */ |
| 39 | - private Date parkOutTime; | |
| 39 | + private String parkOutTime; | |
| 40 | 40 | |
| 41 | 41 | /** 停车时长 单位:小时格式:02小时52分. */ |
| 42 | 42 | private String parkingDuration; |
| ... | ... | @@ -116,19 +116,21 @@ public class OrderVO { |
| 116 | 116 | this.orderTitle = orderTitle == null ? null : orderTitle.trim(); |
| 117 | 117 | } |
| 118 | 118 | |
| 119 | - public Date getParkInTime() { | |
| 119 | + | |
| 120 | + | |
| 121 | + public String getParkInTime() { | |
| 120 | 122 | return parkInTime; |
| 121 | 123 | } |
| 122 | 124 | |
| 123 | - public void setParkInTime(Date parkInTime) { | |
| 125 | + public void setParkInTime(String parkInTime) { | |
| 124 | 126 | this.parkInTime = parkInTime; |
| 125 | 127 | } |
| 126 | 128 | |
| 127 | - public Date getParkOutTime() { | |
| 129 | + public String getParkOutTime() { | |
| 128 | 130 | return parkOutTime; |
| 129 | 131 | } |
| 130 | 132 | |
| 131 | - public void setParkOutTime(Date parkOutTime) { | |
| 133 | + public void setParkOutTime(String parkOutTime) { | |
| 132 | 134 | this.parkOutTime = parkOutTime; |
| 133 | 135 | } |
| 134 | 136 | ... | ... |
src/main/webapp/WEB-INF/pages/check.html
| ... | ... | @@ -63,33 +63,33 @@ |
| 63 | 63 | |
| 64 | 64 | |
| 65 | 65 | <header class="demos-header"> |
| 66 | - <p class="all_told discount_money"><span id="orderNotPayFee">90.00</span>元</p> | |
| 66 | + <p class="all_told discount_money"><span id="orderNotPayFee">${orderVO.orderNotPayFee!''}</span>元</p> | |
| 67 | 67 | <p class="platen_number discount_money" style="font-weight:bold;" id="orderTitle">待付费用</p> |
| 68 | 68 | </header> |
| 69 | 69 | |
| 70 | 70 | <div class="weui-cells weui-cells_form"> |
| 71 | 71 | <input type="hidden" id="carNumPre" value="${carNum!''}"/> |
| 72 | - <input type="hidden" id="parkOrderId"/> | |
| 72 | + <input type="hidden" id="parkOrderId" value="${orderVO.orderId!''}"/> | |
| 73 | 73 | <div class="weui-cell"> |
| 74 | 74 | <div class="weui-cell__hd"><label for="" class="weui-label">当前车牌</label></div> |
| 75 | - <div class="weui-cell__bd" id="carNumber"> | |
| 75 | + <div class="weui-cell__bd" id="carNumber">${orderVO.carNumber!''} | |
| 76 | 76 | |
| 77 | 77 | </div> |
| 78 | 78 | </div> |
| 79 | 79 | |
| 80 | 80 | <div class="weui-cell"> |
| 81 | 81 | <div class="weui-cell__hd"><label for="" class="weui-label">停车位置</label></div> |
| 82 | - <div class="weui-cell__bd" id="parkName"> | |
| 82 | + <div class="weui-cell__bd" id="parkName">${orderVO.parkName!''} | |
| 83 | 83 | </div> |
| 84 | 84 | </div> |
| 85 | 85 | <div class="weui-cell"> |
| 86 | 86 | <div class="weui-cell__hd"><label for="" class="weui-label">进场时间</label></div> |
| 87 | - <div class="weui-cell__bd" id="parkInTime"> | |
| 87 | + <div class="weui-cell__bd" id="parkInTime">${orderVO.parkInTime!''} | |
| 88 | 88 | </div> |
| 89 | 89 | </div> |
| 90 | 90 | <div class="weui-cell"> |
| 91 | 91 | <div class="weui-cell__hd"><label for="" class="weui-label">停车时长</label></div> |
| 92 | - <div class="weui-cell__bd" id="parkingDuration"> | |
| 92 | + <div class="weui-cell__bd" id="parkingDuration">${orderVO.parkingDuration!''} | |
| 93 | 93 | </div> |
| 94 | 94 | </div> |
| 95 | 95 | |
| ... | ... | @@ -99,14 +99,14 @@ |
| 99 | 99 | <div class="weui-cell"> |
| 100 | 100 | <div class="weui-cell__hd"><label for="" class="weui-label">总计费用</label></div> |
| 101 | 101 | <div class="weui-cell__bd"> |
| 102 | - ¥<span id="orderTotalFee"></span> | |
| 102 | + ¥<span id="orderTotalFee">${orderVO.orderTotalFee!''}</span> | |
| 103 | 103 | </div> |
| 104 | 104 | </div> |
| 105 | 105 | |
| 106 | 106 | <div class="weui-cell"> |
| 107 | 107 | <div class="weui-cell__hd"><label for="" class="weui-label">已付费用</label></div> |
| 108 | 108 | <div class="weui-cell__bd"> |
| 109 | - ¥<span id="orderPayedFee"></span> | |
| 109 | + ¥<span id="orderPayedFee">${orderVO.orderPayedFee!''}</span> | |
| 110 | 110 | </div> |
| 111 | 111 | </div> |
| 112 | 112 | <!-- <div class="weui-cell"> |
| ... | ... | @@ -128,53 +128,27 @@ |
| 128 | 128 | <script src="${staticHost}/js/jsutil.js"></script> |
| 129 | 129 | <script src="${staticHost}/js/url.js"></script> |
| 130 | 130 | <script type="text/javascript"> |
| 131 | - var func = { | |
| 132 | - /**查询待支付订单*/ | |
| 133 | - initData: function () { | |
| 134 | - $('#orderNotPayFee').empty(); | |
| 135 | - $('#orderTitle').empty(); | |
| 136 | - $('#carNumber').empty(); | |
| 137 | - $('#parkName').empty(); | |
| 138 | - $('#parkInTime').empty(); | |
| 139 | - $('#parkingDuration').empty(); | |
| 140 | - $('#orderTotalFee').empty(); | |
| 141 | - $('#orderPayedFee').empty(); | |
| 142 | - var carNumPre = $('#carNumPre').val(); | |
| 143 | - jsutil.defaultReq( | |
| 144 | - mUrl.queryParkOrderForNotPay, | |
| 145 | - {"carNum": carNumPre}, | |
| 146 | - function (data) { | |
| 147 | - if (data != null && "1005" == data.code) { | |
| 148 | - window.location.href = mUrl.queryOrderCheckErrorView + "&carNum=" + carNumPre; | |
| 149 | - } else if (data != null && "8888" != data.code) { | |
| 150 | - $.alert("查询待支付订单失败,请重试!"); | |
| 151 | - } else { | |
| 152 | - var orderVO = data.data; | |
| 153 | - $('#parkOrderId').val(orderVO.orderId); | |
| 154 | - $('#payOrderId').val(orderVO.payOrderId) | |
| 155 | - $('#orderNotPayFee').text(orderVO.orderNotPayFee); | |
| 156 | - $('#orderTitle').text(orderVO.orderTitle); | |
| 157 | - $('#carNumber').text(orderVO.carNumber); | |
| 158 | - $('#parkName').text(orderVO.parkName); | |
| 159 | - $('#parkInTime').text(orderVO.parkInTime); | |
| 160 | - $('#parkingDuration').text(orderVO.parkingDuration); | |
| 161 | - $('#orderTotalFee').text(orderVO.orderTotalFee); | |
| 162 | - $('#orderPayedFee').text(orderVO.orderPayedFee); | |
| 163 | - | |
| 164 | - } | |
| 165 | - | |
| 166 | - | |
| 167 | - }); | |
| 168 | - }, | |
| 169 | - }; | |
| 170 | - $(function () { | |
| 171 | - func.initData(); | |
| 172 | - }); | |
| 131 | + $(function(){ | |
| 132 | + var orderNotPayFee = $('#orderNotPayFee').text(); | |
| 133 | + if("0" ==orderNotPayFee || null == orderNotPayFee || "" == orderNotPayFee){ | |
| 134 | + $('#showTooltips').attr('class', 'weui-btn weui-btn_primary weui-btn_disabled'); | |
| 135 | + } | |
| 136 | + }); | |
| 173 | 137 | var flg = true; |
| 174 | 138 | $("#showTooltips").click(function () { |
| 139 | + var orderNotPayFee = $('#orderNotPayFee').text(); | |
| 140 | + if("0" ==orderNotPayFee || null == orderNotPayFee || "" == orderNotPayFee){ | |
| 141 | + $('#showTooltips').attr('class', 'weui-btn weui-btn_primary weui-btn_disabled'); | |
| 142 | + flg = false; | |
| 143 | + return false; | |
| 144 | + }else{ | |
| 145 | + $('#showTooltips').attr('class', 'weui-btn weui-btn_primary'); | |
| 146 | + flg = true; | |
| 147 | + } | |
| 175 | 148 | if (flg) { |
| 176 | 149 | flg = false; |
| 177 | 150 | $('#showTooltips').attr('class', 'weui-btn weui-btn_primary weui-btn_disabled'); |
| 151 | + //判断待付费用为0不能发起支付 | |
| 178 | 152 | var parkOrderId = $('#parkOrderId').val(); |
| 179 | 153 | if (parkOrderId.length < 1) { |
| 180 | 154 | $.toptip("订单Id为空", 2000, "error"); |
| ... | ... | @@ -185,23 +159,39 @@ |
| 185 | 159 | var req = { |
| 186 | 160 | orderId: parkOrderId |
| 187 | 161 | } |
| 188 | - | |
| 189 | - $.ajax({ | |
| 190 | - url: mUrl.getJSPayParam, | |
| 191 | - type: 'post', | |
| 192 | - dataType: 'json', | |
| 193 | - data: req, | |
| 194 | - success: function (res) { | |
| 195 | - if (res.code == '8888') { | |
| 196 | - var payParam = res.data; | |
| 197 | - //调用微信支付 | |
| 198 | - callpay(payParam); | |
| 199 | - } else { | |
| 200 | - $.toptip(res.msg, 2000, "error"); | |
| 201 | - console.log('详细错误信息为:' + res.data); | |
| 202 | - } | |
| 203 | - } | |
| 204 | - }); | |
| 162 | + | |
| 163 | + jsutil.defaultReq( | |
| 164 | + mUrl.queryParkOrderForNotPay, | |
| 165 | + {"orderId":parkOrderId}, | |
| 166 | + function(data){ | |
| 167 | + if(data != null && "8888" !=data.code){ | |
| 168 | + $.alert("亲!支付失败,请重试!"); | |
| 169 | + return false; | |
| 170 | + }else{ | |
| 171 | + $.ajax({ | |
| 172 | + url: mUrl.getJSPayParam, | |
| 173 | + type: 'post', | |
| 174 | + dataType: 'json', | |
| 175 | + data: req, | |
| 176 | + success: function (res) { | |
| 177 | + if (res.code == '8888') { | |
| 178 | + var payParam = res.data; | |
| 179 | + //调用微信支付 | |
| 180 | + callpay(payParam); | |
| 181 | + } else { | |
| 182 | + $.toptip(res.msg, 2000, "error"); | |
| 183 | + console.log('详细错误信息为:' + res.data); | |
| 184 | + } | |
| 185 | + } | |
| 186 | + }); | |
| 187 | + }//else | |
| 188 | + | |
| 189 | + } | |
| 190 | + | |
| 191 | + ); | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 205 | 195 | }//if |
| 206 | 196 | }); |
| 207 | 197 | ... | ... |
src/main/webapp/WEB-INF/pages/select.html
| ... | ... | @@ -169,8 +169,8 @@ $('#view_now').on('click',function () { |
| 169 | 169 | }; |
| 170 | 170 | //根据车牌号查询带支付的订单是否存在 |
| 171 | 171 | // |
| 172 | - | |
| 173 | - jsutil.defaultReq( | |
| 172 | + window.location.href= mUrl.parkOrderForNotPayExist +"&carNum="+val; | |
| 173 | + /**jsutil.defaultReq( | |
| 174 | 174 | mUrl.parkOrderForNotPayExist , |
| 175 | 175 | {"carNum":val}, |
| 176 | 176 | function(data){ |
| ... | ... | @@ -188,7 +188,7 @@ $('#view_now').on('click',function () { |
| 188 | 188 | |
| 189 | 189 | } |
| 190 | 190 | |
| 191 | - }); | |
| 191 | + });*/ | |
| 192 | 192 | |
| 193 | 193 | |
| 194 | 194 | ... | ... |