e80df919
atao
init
|
1
2
3
4
5
6
7
8
9
10
11
|
package com.rnt.service;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
|
80db26ae
王富生
提交
|
12
|
import org.beetl.sql.core.kit.StringKit;
|
e80df919
atao
init
|
13
|
|
80db26ae
王富生
提交
|
14
|
import com.alibaba.fastjson.JSONObject;
|
e80df919
atao
init
|
15
16
17
18
19
20
21
|
import com.jfinal.aop.Before;
import com.jfinal.aop.Duang;
import com.jfinal.log.Log;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.tx.Tx;
import com.rnt.commo.enums.DSEnum;
import com.rnt.commo.enums.DataStatusEnum;
|
80db26ae
王富生
提交
|
22
|
import com.rnt.commo.enums.ErrorType;
|
e80df919
atao
init
|
23
24
25
26
27
28
|
import com.rnt.commo.enums.OrderTypeEnum;
import com.rnt.commo.enums.PayOrderEnum;
import com.rnt.commo.enums.SequenceTypeEnum;
import com.rnt.model.zf.CardCoupons;
import com.rnt.model.zf.Order;
import com.rnt.model.zf.OrderDetailCard;
|
80db26ae
王富生
提交
|
29
|
import com.rnt.model.zf.OrderDetailPark;
|
e80df919
atao
init
|
30
31
32
33
34
|
import com.rnt.model.zf.ParkOrderFlow;
import com.rnt.model.zf.PayOrder;
import com.rnt.utils.DateUtil;
import com.rnt.utils.SequenceUtil;
import com.rnt.vo.OrderVO;
|
e80df919
atao
init
|
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
public class OrderService {
IRainQueryService iRainQueryService = Duang.duang(IRainQueryService.class);
private static final Log logger = Log.getLog(OrderService.class);
/**
* 支付成功后调用的函数
*
* @param payOrderId 支付单ID
* @return 是否成功
*/
@Before(Tx.class)
public Boolean payOrderSuccess(String payOrderId,String transId) {
logger.info("========支付成功后,修改单据状态==== start ====");
logger.info("========支付成功后,修改单据状态 入参为:payOrderId="+payOrderId+"; transId="+transId);
//修改支付单状态
PayOrder payOrder = PayOrder.dao.findFirst("select * from td_b_pay_order t where t.pay_order_id = ?", payOrderId);
payOrder.setPayOrderState(Integer.valueOf(PayOrderEnum.PAY_ORDER_STATE_PAY_SUCCESS.getValue()));
//微信端的订单交易流水
payOrder.setRltPayOrderId(transId);
boolean flag = payOrder.update();
logger.info("修改支付单,flag状态为: flag=" + flag);
String orderId = payOrder.getRltOrderId();
//修改订单状态
Order order = Order.dao.findFirst("select * from td_b_order t where t.order_id = ?", orderId);
order.setOrderState(OrderTypeEnum.ORDER_TYPE_3.value());
flag = flag & order.update();
logger.info("修改订单,flag状态为: flag=" + flag);
//查询订单明细表
OrderDetailCard orderDetailCard = OrderDetailCard.dao.findFirst(
"select * from td_b_order_detail_card t where t.order_id = ?", orderId);
Integer orderDetailType = orderDetailCard.getOrderDetailType();
Long cardCoponsId = orderDetailCard.getPersonCardId();
CardCoupons cardCoupons = CardCoupons.dao.findById(cardCoponsId);
Integer orderType = order.getOrderType();
if(OrderTypeEnum.PARK_ORDER_TYPE_1.value().equals(orderType)){
/**停车订单*/
/** 上面已将订单状态修改为已支付,无需后续操作了*/
logger.info("停车订单修改,将订单状态修改为已支付");
}else if(OrderTypeEnum.PARK_ORDER_TYPE_2.value().equals(orderType) || OrderTypeEnum.PARK_ORDER_TYPE_3.value().equals(orderType)){
/**年卡、月卡订单*/
if (OrderTypeEnum.ORDER_DETAIL_TYPE_BUY_CARD.value().equals(orderDetailType)) {
/**购卡单*/
cardCoupons.setDataState(DataStatusEnum.DATA_STATUS_VALID.value());
flag = flag & cardCoupons.update();
logger.info("购卡单修改数据状态,flag状态为: flag=" + flag);
} else if (OrderTypeEnum.ORDER_DETAIL_TYPE_RENEW_CARD.value().equals(orderDetailType)) {
/**续费单*/
//1、 从订单明细表中获取失效日期
Date expDate = orderDetailCard.getExpDate();
//2、更改个人卡卷表失效日期
cardCoupons.setExpDate(expDate);
flag = flag & cardCoupons.update();
logger.info("支付单修改数据状态,flag状态为: flag=" + flag);
} else {
logger.info("无法识别的订单类型 orderDetailType=" + orderDetailType);
}
}else{
logger.info("无法识别的订单类型 orderType=" + orderType);
}
logger.info("========支付成功后,修改单据状态==== end ====");
return flag;
}
/**
* 查询支付成功的历史车牌,最多3个.<br/>
*
* @param custId 个人客户id
* @return
*/
public List<String> queryHistoryCarNum(String custId) {
List<String> list = new ArrayList<String>();
StringBuffer sql = new StringBuffer("select a.car_number");
sql.append(" from td_b_order a ");
sql.append(" where a.order_state in(3,4) ");
sql.append(" and cust_person_id= ? ");
sql.append(" group by a.car_number,a.create_date");
sql.append(" order by a.create_date desc ");
sql.append(" limit 0,3 ");
List<Order> orderList = new Order().find(sql.toString(), custId);
if (orderList != null && orderList.size() > 0) {
for (Order order : orderList) {
list.add(order.getCarNumber());
}
}
return list;
}
|
80db26ae
王富生
提交
|
134
135
136
137
138
139
140
141
142
143
144
145
146
147
|
/**
* 通过订单好
* @param orderId
* @return
*/
public OrderDetailPark queryDetailParkByOrderId(String orderId){
StringBuffer sql = new StringBuffer("select order_id,record_id");
sql.append(" from td_b_order_detail_park a ");
sql.append(" where a.data_state =1");
sql.append(" and a.order_id ? ");
OrderDetailPark orderDetailPark = new OrderDetailPark().findFirst(sql.toString(), orderId);
return orderDetailPark;
}
|
e80df919
atao
init
|
148
149
150
151
152
153
154
155
156
157
158
159
160
161
|
/**
* 查询待支付的停车订单.<br/>
* 步骤:
* 1.查询待支付的订单
* 1.调用艾润接口查询费用.<br/>
* 3.更新订单费用.<br/>
* 4.更新订单明细费用.<br/>
* 5.插入订单流水表.
*
* @param carNum
* @throws ParseException
*/
public OrderVO queryParkOrderForNotPay(String carNum) throws ParseException {
|
80db26ae
王富生
提交
|
162
|
logger.info("---begin订单信息更新,carNum=" + carNum);
|
e80df919
atao
init
|
163
164
|
OrderVO orderVO = new OrderVO();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
|
80db26ae
王富生
提交
|
165
166
|
Map<String,String> resultmap = new HashMap<String,String>();
//1.查询支付订单
|
e80df919
atao
init
|
167
|
Order order = this.findOrderByCarNum(carNum);
|
80db26ae
王富生
提交
|
168
169
170
171
172
|
logger.info("通过车牌号查询到的支付订单信息结果="+JSONObject.toJSON(order));
//2.调用查询费用接口
if (order != null && StringKit.isNotBlank(order.getOrderId())) {
resultmap = this.chosseBillQuery(carNum,order);
}
|
e80df919
atao
init
|
173
174
175
|
boolean orderUpdateFlg = false;
int updateOrderDetailFlg = 0;
//3.更新订单
|
80db26ae
王富生
提交
|
176
177
|
if (resultmap != null && resultmap.size() >0){
Order updateOrder = new Order();
|
e80df919
atao
init
|
178
179
180
181
|
updateOrder.setId(order.getId());
updateOrder.setOrderId(order.getOrderId());
updateOrder.setOrderType(Integer.valueOf(PayOrderEnum.PAY_RESOURCE_TYPE_PARK.getValue()));
updateOrder.setOrderState(Integer.valueOf(OrderTypeEnum.ORDER_TYPE_2.value()));
|
80db26ae
王富生
提交
|
182
183
184
|
updateOrder.setOrderPayedFee(new BigDecimal(resultmap.get("order_payed_fee")));
updateOrder.setOrderNotPayFee(new BigDecimal(resultmap.get("order_not_pay_fee")));
updateOrder.setOrderTotalFee(new BigDecimal(resultmap.get("order_total_fee")));
|
e80df919
atao
init
|
185
186
187
|
updateOrder.setModfiyDate(new Date());
/**更新订单表.*/
orderUpdateFlg = updateOrder.update();
|
80db26ae
王富生
提交
|
188
|
logger.info("更新订单结果="+(orderUpdateFlg ==true ? "成功!" :"失败!"));
|
e80df919
atao
init
|
189
190
191
192
193
194
195
196
197
198
199
200
201
202
|
if (orderUpdateFlg) {
StringBuffer sqls = new StringBuffer("update td_b_order_detail_park a ");
sqls.append("set a.order_id =?,");
sqls.append("a.record_id=?,");
sqls.append("a.park_in_time=?,");
sqls.append("a.park_out_time =?,");
sqls.append("a.parking_duration=?,");
sqls.append("a.modfiy_date= ?,");
sqls.append("a.remark= '查询费用后更新'");
sqls.append(" where a.order_id =?");
/**更新订单明细表.*/
updateOrderDetailFlg = Db.use(DSEnum.ZF_DATASOURCE.name()).update(sqls.toString(),
order.getOrderId(),
|
80db26ae
王富生
提交
|
203
204
205
206
|
resultmap.get("record_id"),
format.parse(resultmap.get("park_in_time")),
format.parse(resultmap.get("park_out_time")),
Long.valueOf(resultmap.get("parking_duration")),
|
e80df919
atao
init
|
207
208
|
new Date(),
order.getOrderId());
|
80db26ae
王富生
提交
|
209
210
211
|
logger.info("更新停车订单明细结果="+(updateOrderDetailFlg > 0 ? "成功" : "失败"));
if (updateOrderDetailFlg > 0) {
//封装返回数据
|
e80df919
atao
init
|
212
213
|
orderVO.setOrderId(order.getOrderId());
orderVO.setParkId(order.getParkId());
|
80db26ae
王富生
提交
|
214
215
|
orderVO.setParkName(resultmap.get("park_name"));
orderVO.setParkAddress(resultmap.get("park_address"));
|
e80df919
atao
init
|
216
|
orderVO.setCarNumber(order.getCarNumber());
|
80db26ae
王富生
提交
|
217
218
219
|
orderVO.setOrderPayedFee(new BigDecimal(resultmap.get("order_payed_fee")));
orderVO.setOrderNotPayFee(new BigDecimal(resultmap.get("order_not_pay_fee")));
orderVO.setOrderTotalFee(new BigDecimal(resultmap.get("order_total_fee")));
|
e80df919
atao
init
|
220
|
orderVO.setOrderTitle("待付费用");
|
80db26ae
王富生
提交
|
221
222
223
224
225
|
orderVO.setParkInTime(format.parse(resultmap.get("park_in_time")));
orderVO.setParkOutTime(format.parse(resultmap.get("park_out_time")));
orderVO.setParkingDuration(DateUtil.secondToTime(Long.valueOf(resultmap.get("parking_duration"))));
}
/**插入订单流水.*/
|
e80df919
atao
init
|
226
227
228
229
230
231
232
|
ParkOrderFlow parkOrderFlow = new ParkOrderFlow();
parkOrderFlow.setParkOrderFolwId(SequenceUtil.getNextOrderId(SequenceTypeEnum.ORDER_PARK_FLOW.value()));
parkOrderFlow.setParkOrderId(order.getOrderId());
parkOrderFlow.setProcTime(new Date());
parkOrderFlow.setProcResult(1);
parkOrderFlow.save();
|
80db26ae
王富生
提交
|
233
|
}
|
e80df919
atao
init
|
234
|
}
|
80db26ae
王富生
提交
|
235
236
|
logger.info("---end订单信息更新,结果=" +JSONObject.toJSON(orderVO));
|
e80df919
atao
init
|
237
238
|
return orderVO;
}
|
80db26ae
王富生
提交
|
239
|
|
e80df919
atao
init
|
240
|
/**
|
80db26ae
王富生
提交
|
241
242
|
* 查询费用艾润或者青岛路侧费用查询接口.<br/>
* @param carNum
|
e80df919
atao
init
|
243
244
|
* @return
*/
|
6040c55c
王富生
提交
|
245
|
public Map<String, String> chosseBillQuery(String carNum,Order order){
|
80db26ae
王富生
提交
|
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
|
OrderService orderService = Duang.duang(OrderService.class);
IRainQueryService iRainQueryService = Duang.duang(IRainQueryService.class);
Map<String, String> reultMap = new HashMap<String, String>();
if (order != null && StringKit.isNotBlank(order.getOrderId())) {
if("1".equals(String.valueOf(order.getSourceType()))){//道闸:调用艾润查询费用接口
/**调用艾润查询费用接口.*/
reultMap = iRainQueryService.billQuery(carNum, order.getParkId());
}else if("2".equals(String.valueOf(order.getSourceType()))
&& StringKit.isNotBlank(order.getOrderId())){//调用青岛路侧查询费用接口
/**查询停车记录id.*/
OrderDetailPark OrderDetailPark = orderService.queryDetailParkByOrderId(order.getOrderId());
if(OrderDetailPark != null && StringKit.isNotBlank(OrderDetailPark.getRecordId())){
/**调用青岛路侧费用查询接口.*/
reultMap =iRainQueryService.queryBillRoadside(OrderDetailPark.getRecordId());
}
}
}
return reultMap;
|
e80df919
atao
init
|
266
267
|
}
|
80db26ae
王富生
提交
|
268
269
|
|
e80df919
atao
init
|
270
271
272
273
274
275
276
277
278
279
280
281
282
|
/**
* 通过车牌查询待核算支付单信息.<br/>
*
* @param
*/
public Order findOrderByCarNum(String carNum) {
//1.查询待支付订单
StringBuffer sql = new StringBuffer(
"select a.id, a.order_id,a.car_number,a.order_title,a.order_payed_fee,a.order_not_pay_fee,a"
+ ".order_total_fee,a.park_id");
sql.append(" from td_b_order a");
sql.append(" where a.order_state in(1,2,3)");
sql.append(" and a.car_number=?");
|
e950ab14
王富生
提交
|
283
|
sql.append(" order by a.create_date DESC");
|
e80df919
atao
init
|
284
285
|
Order order = new Order().findFirst(sql.toString(), carNum);
|
e950ab14
王富生
提交
|
286
287
|
|
e80df919
atao
init
|
288
289
290
291
292
293
|
return order;
}
}
|