ParkLotService.java
9.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
package com.rnt.service;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.alibaba.druid.util.StringUtils;
import com.alibaba.fastjson.JSONObject;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Page;
import com.jfinal.plugin.activerecord.Record;
import com.rnt.commo.enums.DSEnum;
import com.rnt.commo.enums.DataStateEnum;
import com.rnt.commo.enums.ErrorType;
import com.rnt.commo.enums.GoodsTypeEnum;
import com.rnt.model.park.ParkingLot;
import com.rnt.model.zf.CardCoupons;
import com.rnt.model.zf.ParkCardCoupons;
import com.rnt.utils.CardTypeUtil;
import com.rnt.vo.BizResult;
import com.rnt.vo.CustCardVO;
import com.rnt.vo.ParkLotCardVO;
import com.rnt.vo.ParkLotInfoVO;
import com.rnt.vo.ParkLotListVO;
import com.xiaoleilu.hutool.date.DateUtil;
import com.xiaoleilu.hutool.util.CollectionUtil;
import org.beetl.sql.core.kit.StringKit;
/**
* Copyright: Copyright (c) 2017 zteits
*
* @ClassName: com.rnt.service
* @Description:
* @version: v1.0.0
* @author: atao
* @date: 2017/6/7 上午11:13
* Modification History:
* Date Author Version Description
* ---------------------------------------------------------*
* 2017/6/7 atao v1.0.0 创建
*/
public class ParkLotService {
/**
* 获取停车场信息
*
* @param pageNum
* @param pageSize
* @param goodBigTypes
* @return
*/
public Page<ParkLotListVO> listParkLot(int pageNum, int pageSize, List<Long> goodBigTypes) {
Page<ParkLotListVO> pageVo = new Page<ParkLotListVO>();
Page<Record> page;
if (CollectionUtil.isNotEmpty(goodBigTypes)) {
String str = goodBigTypes.toString().substring(1, goodBigTypes.toString().length() - 1);
//涉及到跨库查询
page = Db.use(DSEnum.ZF_DATASOURCE.name()).paginate(pageNum, pageSize, true,
"select t.park_id , group_concat(t.goods_type) AS goodsTypes",
" FROM (SELECT * FROM td_b_park_card_coupons WHERE data_state = ? AND goods_state = ? AND "
+ "goods_big_type in (?) ) t GROUP BY"
+ " t.park_id",
DataStateEnum.DATA_STATE_VALID.getValue(), DataStateEnum.DATA_STATE_VALID.getValue(), str);
} else {
//涉及到跨库查询
page = Db.use(DSEnum.ZF_DATASOURCE.name()).paginate(pageNum, pageSize, true,
"select t.park_id, group_concat(t.goods_type) AS goodsTypes ",
" FROM (SELECT * FROM td_b_park_card_coupons WHERE data_state = ? AND goods_state = ?) t GROUP BY t"
+ ".park_id",
DataStateEnum.DATA_STATE_VALID.getValue(), DataStateEnum.DATA_STATE_VALID.getValue());
}
if (null == page || CollectionUtil.isEmpty(page.getList())) {
return pageVo;
}
Map<String, String> parkMap = new HashMap<String, String>();
for (Record record : page.getList()) {
parkMap.put(record.getStr("park_id"), record.getStr("goodsTypes"));
}
String pkNoJsonStr = JSONObject.toJSONString(parkMap.keySet());
String pkNosStr = pkNoJsonStr.toString().substring(1, pkNoJsonStr.length() - 1);
String sql = "select * from parking_lot t where t.pl_no in ( " + pkNosStr + " )";
List<ParkingLot> parkingLots = ParkingLot.dao.find(sql);
if (CollectionUtil.isEmpty(parkingLots)) {
return pageVo;
}
List<ParkLotListVO> vos = new ArrayList<ParkLotListVO>();
ParkLotListVO vo = null;
for (ParkingLot parkingLot : parkingLots) {
String pkNo = parkingLot.getPlNo();
vo = new ParkLotListVO();
vo.setAddress(parkingLot.getPlAddress());
vo.setName(parkingLot.getPlName());
vo.setParkNo(pkNo);
String goodsTypes = "," + parkMap.get(pkNo) + ",";
//是否包含月卡商品
if (goodsTypes.contains("," + GoodsTypeEnum.CARD_BIG_CAR_MONTH.val() + ",") || goodBigTypes.contains(
"," + GoodsTypeEnum.CARD_SMALL_CAR_MONTH.val() + ",")) {
vo.getGoodsTypes().add("MONTH");
}
//是否包含年卡卡商品
if (goodsTypes.contains("," + GoodsTypeEnum.CARD_BIG_CAR_YEAR.val() + ",") || goodBigTypes.contains(
"," + GoodsTypeEnum.CARD_SMALL_CAR_YEAR.val() + ",")) {
vo.getGoodsTypes().add("YEAR");
}
vos.add(vo);
}
pageVo = new Page<ParkLotListVO>(vos, page.getPageNumber(), page.getPageSize(), page.getTotalPage(),
page.getTotalRow());
return pageVo;
}
/**
* 通过停车场编码查询停车场信息.<br/>
*
* @param pklNo
* @return
*/
public BizResult<ParkLotCardVO> queryParkLotForpklNo(String pklNo) {
BizResult<ParkLotCardVO> result = new BizResult<ParkLotCardVO>();
if (StringKit.isEmpty(pklNo)) {
result.setErrorMessage(ErrorType.PARAMM_NULL, "入参不能为空");
} else {
StringBuffer sql = new StringBuffer("select pl_no,pl_name,pl_address ");
sql.append(" from parking_lot");
sql.append(" where data_status=1 and pl_no =?");
ParkingLot tabParkinglot = new ParkingLot().findFirst(sql.toString(), pklNo);
if (tabParkinglot != null) {
ParkLotCardVO parkLotCardVO = new ParkLotCardVO();
parkLotCardVO.setParkNo(tabParkinglot.getPlNo());
parkLotCardVO.setParkName(tabParkinglot.getPlName());
parkLotCardVO.setAddress(tabParkinglot.getPlAddress());
result.setData(parkLotCardVO);
}
}
return result;
}
/**
* 查询客户购买卡的数量
*
* @param custId
* @return
*/
public Long queryCustCardNum(String custId) {
StringBuffer sql = new StringBuffer("select count(*) from td_a_card_coupons t where t.card_big_type = 2 and t.data_state = 1 and t.cust_id = ? ");
Long count = Db.use(DSEnum.ZF_DATASOURCE.name()).queryLong(sql.toString(), custId);
return count;
}
/**
* 根据custid 查询客户已购买的年卡
*
* @param custId
* @return
*/
public Map<String, List<CustCardVO>> queryCustParkCard(String custId) {
Map<String, List<CustCardVO>> result = new HashMap<>();
List<CardCoupons> cardCoupons = CardCoupons.dao.find(
"select * from td_a_card_coupons t where t.card_big_type = 2 and t.data_state = 1 and t.cust_id = ? ORDER BY t.exp_date desc",
custId);
//未失效的卡
List<CustCardVO> available = new ArrayList<>();
//已失效的卡
List<CustCardVO> not_available = new ArrayList<>();
CustCardVO vo;
Date now = new Date();
//已失效的卡
for (CardCoupons ca : cardCoupons) {
vo = new CustCardVO();
Long parkCardId = (long)ca.getParkCardId();
ParkCardCoupons pkCardCoupons = ParkCardCoupons.dao.findById(parkCardId);
//获取停车场
String pkNo = pkCardCoupons.getParkId();
if (!StringUtils.isEmpty(pkNo)) {
ParkLotInfoVO parkLotInfoVO = getParkLotInfoByPkNo(pkNo);
if (null != parkLotInfoVO) {
//停车场地址
vo.setParkAddress(parkLotInfoVO.getAddress());
//停车场名称
vo.setParkName(parkLotInfoVO.getName());
}
}
//获取停车卡名称
vo.setCardName(CardTypeUtil.getCardNameByCardType(ca.getCardType() + ""));
vo.setCardType(ca.getCardType()+"");
vo.setCardNum(ca.getCarNumber());
vo.setEffDate(ca.getEffDate());
vo.setEffDateStr(DateUtil.format(ca.getEffDate(), "yyyy-MM-dd"));
vo.setExpDate(ca.getExpDate());
vo.setExpDateStr(DateUtil.format(ca.getExpDate(), "yyyy-MM-dd"));
vo.setParkCardId(ca.getParkCardId());
vo.setCustCardID(ca.getId());
//比较是否已失效
if (now.before(vo.getExpDate())) {
//当前时间在 失效日期之前,未失效
available.add(vo);
} else {
//已失效
not_available.add(vo);
}
}
result.put("available", available);
result.put("unavailable", not_available);
return result;
}
/**
* 根据停车场编码获取停车场信息
*
* @param pkNO 停车场编码
* @return
*/
public ParkLotInfoVO getParkLotInfoByPkNo(String pkNO) {
StringBuffer sql = new StringBuffer("select * FROM parking_lot t where t.pl_no = ?");
ParkingLot pk = ParkingLot.dao.findFirst(sql.toString(), pkNO);
if (null == pk) {
return null;
}
ParkLotInfoVO vo = new ParkLotInfoVO();
vo.setAddress(pk.getPlAddress());
vo.setName(pk.getPlName());
vo.setParkNo(pkNO);
return vo;
}
}