@@ -12,7 +12,7 @@ import com.iformall.enums.EnumCouponSendSendType;
import com.iformall.enums.EnumETCPCode;
import com.iformall.service.*;
import com.iformall.utils.DateUtils;
import com.iformall.utils.ETCPUtil;
import com.iformall.utils.car. ETCPUtil;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
@@ -32,7 +32,7 @@ import java.util.Map;
@RestController
@RequestMapping("/carCallback")
public class WxCarCallBackController extends BaseController {
public class WxCarETCP CallBackController extends BaseController {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
@@ -81,119 +81,6 @@ public class WxCarCallBackController extends BaseController {
return new Result(EnumETCPCode.SUCCESS.getCode(), EnumETCPCode.SUCCESS.getMessage());
}
// @Async
private boolean doEtcpParkIn(@RequestBody Map<String, String> paramMap) {
Date currentDate = new Date();
WxCarCmdLog wxCarCmdLog = new WxCarCmdLog();
wxCarCmdLog.setVendorType(EnumCarVendor.CAR_ETCP.getCode());
wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_PARK_IN.getCode());
wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap));
wxCarCmdLog.setCreateDate(currentDate);
wxCarCmdLog.setUpdateDate(currentDate);
String etcpParkId = paramMap.get(ETCPUtil.ETCP_PARK_ID);
String tenantId = null;
WxPark parkQ = new WxPark();
parkQ.setVendorType(EnumCarVendor.CAR_ETCP.getCode());
parkQ.setParkingId(etcpParkId);
WxPark park = wxParkService.getByObj(parkQ);
if (park == null) {
logger.error("etcpParkInCallback: ETCP车场未找到" + etcpParkId);
//return new Result(ErrorCode.CAR_PARK_NOT_FOUND.getCode(), "ETCP车场未找到"+ etcpParkId);
} else {
tenantId = park.getTenantId();
wxCarCmdLog.setTenantId(park.getTenantId());
}
String carNumber = paramMap.get(ETCPUtil.ETCP_CAR_NUMBER);
String synId = paramMap.get(ETCPUtil.ETCP_SYN_ID);
String parkId = paramMap.get(ETCPUtil.ETCP_PARK_ID);
String parkName = paramMap.get(ETCPUtil.ETCP_PARK_NAME);
String userType = paramMap.get(ETCPUtil.ETCP_USER_TYPE);
String entranceTime = paramMap.get(ETCPUtil.ETCP_ENTRANCE_TIME);
String fixParkingId = paramMap.get(ETCPUtil.ETCP_FIX_PARKING_ID);
String remainingDays = paramMap.get(ETCPUtil.ETCP_REMAINING_DAYS);
// 检查是否有重复数据
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("synId", synId);
map.put("cmdType", EnumCarCmd.CAR_ETCP_CALLBACK_PARK_IN.getCode());
if(tenantId != null) {
map.put("tenantId", tenantId);
}
WxCarCmdLog carCmdLog = wxCarCmdLogService.getBySynId(map);
if(carCmdLog != null) {
logger.error("ETCP synId已入库: " + paramMap.toString());
return true;
}
try {
wxCarCmdLogService.saveOrUpdate(wxCarCmdLog);
} catch (Exception e) {
logger.error("etcpParkInCallback: 入库错误 " + e.getMessage() + "\n" + paramMap.toString());
return true;
}
String phoneStrs = "";
// 停车发券
if (!StringUtils.isBlank(carNumber)) {
// 根据车牌查找用户
WxCUserCar userCarQ = new WxCUserCar();
userCarQ.setTenantId(tenantId);
userCarQ.setCarNumber(carNumber);
userCarQ.setVendorType(EnumCarVendor.CAR_ETCP.getCode());
// TODO 可能多用户关联同一张车牌
List<WxCUserCar> userCarList = wxCUserCarService.getList(userCarQ);
boolean bFirst = true;
for (WxCUserCar userCar : userCarList) {
wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.CAR_STOP, userCar);
WxCUser cUser = wxCUserService.getById(userCar.getCUserId());
if(cUser != null){
if(bFirst) {
phoneStrs = cUser.getPhone();
bFirst = false;
} else {
phoneStrs += "," + cUser.getPhone();
}
}
}
}
try {
// 保存WxCarPayRecord
WxCarPayRecord record = new WxCarPayRecord();
record.setVendorType(wxCarCmdLog.getVendorType());
record.setSynId(synId);
record.setParkId(parkId);
record.setParkName(parkName);
record.setUserType(userType);
record.setPlateNumber(carNumber);
if(StringUtils.isNotBlank(entranceTime)) {
record.setEntranceTime(dateFormat.parse(entranceTime));
}
record.setFixParkingId(fixParkingId);
record.setRemainingDays(remainingDays);
record.setPhone(phoneStrs);
record.setTenantId(tenantId);
WxCarPayRecord query = new WxCarPayRecord();
query.setSynId(synId);
PageInfo<WxCarPayRecord> page = wxCarPayRecordService.findCarPayListByPage(query,1,1);
if(page != null && CollectionUtils.isNotEmpty(page.getList())){
record.setId(page.getList().get(0).getId());
}
wxCarPayRecordService.saveOrUpdate(record);
} catch (Exception e) {
e.printStackTrace();
logger.error("WxCarPayRecord: 入库错误 ",e);
logger.error("WxCarPayRecord: 入库错误 "+e.getMessage()+"," + paramMap.toString());
return true;
}
return false;
}
/**
* ETCP 车辆出场通知
* {
@@ -221,86 +108,6 @@ public class WxCarCallBackController extends BaseController {
return new Result(EnumETCPCode.SUCCESS.getCode(), EnumETCPCode.SUCCESS.getMessage());
}
private boolean doEtcpParkOut(@RequestBody Map<String, String> paramMap) {
Date currentDate = new Date();
WxCarCmdLog wxCarCmdLog = new WxCarCmdLog();
wxCarCmdLog.setVendorType(EnumCarVendor.CAR_ETCP.getCode());
wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_PARK_OUT.getCode());
wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap));
wxCarCmdLog.setCreateDate(currentDate);
wxCarCmdLog.setUpdateDate(currentDate);
String etcpParkId = paramMap.get(ETCPUtil.ETCP_PARK_ID);
String tenantId = null;
WxPark parkQ = new WxPark();
parkQ.setVendorType(EnumCarVendor.CAR_ETCP.getCode());
parkQ.setParkingId(etcpParkId);
WxPark park = wxParkService.getByObj(parkQ);
if (park == null) {
logger.error("etcpParkOutCallback: ETCP车场未找到 " + etcpParkId);
// return new Result(ErrorCode.CAR_PARK_NOT_FOUND.getCode(), "ETCP车场未找到"+ etcpParkId);
} else {
tenantId = park.getTenantId();
wxCarCmdLog.setTenantId(tenantId);
}
try {
wxCarCmdLogService.saveOrUpdate(wxCarCmdLog);
} catch (Exception e) {
logger.error("etcpParkOutCallback: 入库错误 " + e.getMessage() + "\n" + paramMap.toString());
return true;
}
String synId = paramMap.get(ETCPUtil.ETCP_SYN_ID);
String exitTime = paramMap.get(ETCPUtil.ETCP_EXIT_TIME);
String stayedTime = paramMap.get(ETCPUtil.ETCP_STAYED_TIME);
String carNumber = paramMap.get(ETCPUtil.ETCP_CAR_NUMBER);
String parkId = paramMap.get(ETCPUtil.ETCP_PARK_ID);
String parkName = paramMap.get(ETCPUtil.ETCP_PARK_NAME);
String userType = paramMap.get(ETCPUtil.ETCP_USER_TYPE);
String entranceTime = paramMap.get(ETCPUtil.ETCP_ENTRANCE_TIME);
String fixParkingId = paramMap.get(ETCPUtil.ETCP_FIX_PARKING_ID);
String remainingDays = paramMap.get(ETCPUtil.ETCP_REMAINING_DAYS);
try {
// 保存WxCarPayRecord
WxCarPayRecord record = new WxCarPayRecord();
record.setSynId(synId);
if(StringUtils.isNotBlank(exitTime)) {
record.setExitTime(dateFormat.parse(exitTime));
}
if(StringUtils.isNotBlank(stayedTime)) {
record.setStayedTime(Long.parseLong(stayedTime));
}
record.setVendorType(wxCarCmdLog.getVendorType());
record.setSynId(synId);
record.setParkId(parkId);
record.setParkName(parkName);
record.setUserType(userType);
record.setPlateNumber(carNumber);
if(StringUtils.isNotBlank(entranceTime)) {
record.setEntranceTime(dateFormat.parse(entranceTime));
}
record.setFixParkingId(fixParkingId);
record.setRemainingDays(remainingDays);
//record.setPhone(phoneStrs);
record.setTenantId(tenantId);
WxCarPayRecord query = new WxCarPayRecord();
query.setSynId(synId);
PageInfo<WxCarPayRecord> page = wxCarPayRecordService.findCarPayListByPage(query,1,1);
if(page != null && CollectionUtils.isNotEmpty(page.getList())){
record.setId(page.getList().get(0).getId());
}
wxCarPayRecordService.saveOrUpdate(record);
} catch (Exception e) {
logger.error("WxCarPayRecord: 出场更新错误 " +e.getMessage()+", " +paramMap.toString());
return true;
}
return false;
}
/**
* ETCP 车辆解绑通知
* {
@@ -471,105 +278,196 @@ public class WxCarCallBackController extends BaseController {
return new Result(EnumETCPCode.SUCCESS.getCode(), EnumETCPCode.SUCCESS.getMessage());
}
// @Async
private boolean doEtcpParkIn(@RequestBody Map<String, String> paramMap) {
Date currentDate = new Date();
WxCarCmdLog wxCarCmdLog = new WxCarCmdLog();
/**
* TJD 车辆入场通知
* {
* "tradeId": "5836b8b52ada463ebc6199579f029565",
* "outCarId": "45454545454",
* "carNum": "京A45413",
* "carNumColor ": "blue",
* "inDt": "20170319202020",
* "parkName": "测试停车场",
* "parkId": "5836b8b52ada463ebc6199579f029561",
* "lon": "74.000272",
* "lat": "159.768703",
* "wLon": "123.523032",
* "wLat": "35.430735",
* "payUrl": "http://prep.tingjiandan.com/tcweixin/letter/prePay/payInPark.html?prePayType=16&channel=10001",
* "canFindCar": "0"
* }
*/
@RequestMapping(value = "/tjdParkInCallback")
public Map tjdParkInCallback(@RequestBody Map<String, String> paramMap) {
logger.info("["+getIpAddr()+"tjdParkInCallback: " + paramMap.toString());
Map map = new HashMap();
String tjdParkId = paramMap.get("parkId");
wxCarCmdLog.setVendorType(EnumCarVendor.CAR_ETCP.getCode());
wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_PARK_IN.getCode());
wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap));
wxCarCmdLog.setCreateDate(currentDate);
wxCarCmdLog.setUpdateDate(currentDate);
String etcpParkId = paramMap.get(ETCPUtil.ETCP_PARK_ID);
String tenantId = null;
WxPark parkQ = new WxPark();
parkQ.setVendorType(EnumCarVendor.CAR_TJD.getCode());
parkQ.setParkId(tjd ParkId);
parkQ.setVendorType(EnumCarVendor.CAR_ETCP.getCode());
parkQ.setParkingId(etcpParkId);
WxPark park = wxParkService.getByObj(parkQ);
if (park == null) {
logger.error("tjdParkInCallback: 停简单车场未找到" + tjdParkId);
map.put("isSuccess", "0");
map.put("errorMsg", "停简单车场未找到" + tjdParkId);
return map;
logger.error("etcpParkInCallback: ETCP车场未找到" + etcpParkId);
//return new Result(ErrorCode.CAR_PARK_NOT_FOUND.getCode(), "ETCP车场未找到"+ etcpParkId);
} else {
tenantId = park.getTenantId();
wxCarCmdLog.setTenantId(park.getTenantId());
}
String carNumber = paramMap.get(ETCPUtil.ETCP_CAR_NUMBER);
String synId = paramMap.get(ETCPUtil.ETCP_SYN_ID);
String parkId = paramMap.get(ETCPUtil.ETCP_PARK_ID);
String parkName = paramMap.get(ETCPUtil.ETCP_PARK_NAME);
String userType = paramMap.get(ETCPUtil.ETCP_USER_TYPE);
String entranceTime = paramMap.get(ETCPUtil.ETCP_ENTRANCE_TIME);
String fixParkingId = paramMap.get(ETCPUtil.ETCP_FIX_PARKING_ID);
String remainingDays = paramMap.get(ETCPUtil.ETCP_REMAINING_DAYS);
// 检查是否有重复数据
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("synId", synId);
map.put("cmdType", EnumCarCmd.CAR_ETCP_CALLBACK_PARK_IN.getCode());
if(tenantId != null) {
map.put("tenantId", tenantId);
}
WxCarCmdLog carCmdLog = wxCarCmdLogService.getBySynId(map);
if(carCmdLog != null) {
logger.error("ETCP synId已入库: " + paramMap.toString());
return true;
}
Date currentDate = new Date();
WxCarCmdLog wxCarCmdLog = new WxCarCmdLog();
wxCarCmdLog.setTenantId(park.getTenantId());
wxCarCmdLog.setVendorType(EnumCarVendor.CAR_TJD.getCode());
wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_PARK_IN.getCode());
wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap));
wxCarCmdLog.setCreateDate(currentDate);
wxCarCmdLog.setUpdateDate(currentDate);
try {
wxCarCmdLogService.saveOrUpdate(wxCarCmdLog);
} catch (Exception e) {
logger.error("tjdParkInCallback: 入库错误" + paramMap.toString());
map.put("isSuccess", "0");
map.put("errorMsg", "入库错误" + paramMap.toString());
return map;
logger.error("etcpParkInCallback: 入库错误 " + e.getMessage() + "\n" + paramMap.toString());
return true;
}
map.put("isSuccess", "0");
map.put("errorMsg", "");
return map;
}
String phoneStrs = "";
/**
* TJD 车辆出场通知
* {
* "tradeId": "5836b8b52ada463ebc6199579f029565",
* "outDt": "20170319232020",
* "lon": "74.000272",
* "lat": "159.768703",
* "wLon": "123.523032",
* "wLat": "35.430735",
* "parkAmount": "5.20"
* }
*/
@RequestMapping(value = "/tjdParkoutCallback")
public Map tjdParkOutCallback(@RequestBody Map<String, String> paramMap) {
logger.info("["+getIpAddr()+"tjdParkoutCallback: " + paramMap.toString());
Map map = new HashMap();
// 停车发券
if (!StringUtils.isBlank(carNumber)) {
// 根据车牌查找用户
WxCUserCar userCarQ = new WxCUserCar();
userCarQ.setTenantId(tenantId);
userCarQ.setCarNumber(carNumber);
userCarQ.setVendorType(EnumCarVendor.CAR_ETCP.getCode());
// TODO 可能多用户关联同一张车牌
List<WxCUserCar> userCarList = wxCUserCarService.getList(userCarQ);
boolean bFirst = true;
for (WxCUserCar userCar : userCarList) {
wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.CAR_STOP, userCar);
WxCUser cUser = wxCUserService.getById(userCar.getCUserId());
if(cUser != null){
if(bFirst) {
phoneStrs = cUser.getPhone();
bFirst = false;
} else {
phoneStrs += "," + cUser.getPhone();
}
}
}
}
try {
// 保存WxCarPayRecord
WxCarPayRecord record = new WxCarPayRecord();
record.setVendorType(wxCarCmdLog.getVendorType());
record.setSynId(synId);
record.setParkId(parkId);
record.setParkName(parkName);
record.setUserType(userType);
record.setPlateNumber(carNumber);
if(StringUtils.isNotBlank(entranceTime)) {
record.setEntranceTime(dateFormat.parse(entranceTime));
}
record.setFixParkingId(fixParkingId);
record.setRemainingDays(remainingDays);
record.setPhone(phoneStrs);
record.setTenantId(tenantId);
String tradeId = paramMap.get("tradeId");
WxCarPayRecord query = new WxCarPayRecord();
query.setSynId(synId);
PageInfo<WxCarPayRecord> page = wxCarPayRecordService.findCarPayListByPage(query,1,1);
if(page != null && CollectionUtils.isNotEmpty(page.getList())){
record.setId(page.getList().get(0).getId());
}
wxCarPayRecordService.saveOrUpdate(record);
} catch (Exception e) {
e.printStackTrace();
logger.error("WxCarPayRecord: 入库错误 ",e);
logger.error("WxCarPayRecord: 入库错误 "+e.getMessage()+"," + paramMap.toString());
return true;
}
return false;
}
private boolean doEtcpParkOut(@RequestBody Map<String, String> paramMap) {
Date currentDate = new Date();
WxCarCmdLog wxCarCmdLog = new WxCarCmdLog();
wxCarCmdLog.setVendorType(EnumCarVendor.CAR_ETCP.getCode());
wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_PARK_OUT.getCode());
wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap));
wxCarCmdLog.setCreateDate(currentDate);
wxCarCmdLog.setUpdateDate(currentDate);
String etcpParkId = paramMap.get(ETCPUtil.ETCP_PARK_ID);
String tenantId = null;
WxPark parkQ = new WxPark();
parkQ.setVendorType(EnumCarVendor.CAR_ETCP.getCode());
parkQ.setParkingId(etcpParkId);
WxPark park = wxParkService.getByObj(parkQ);
if (park == null) {
logger.error("etcpParkOutCallback: ETCP车场未找到 " + etcpParkId);
// return new Result(ErrorCode.CAR_PARK_NOT_FOUND.getCode(), "ETCP车场未找到"+ etcpParkId);
} else {
tenantId = park.getTenantId();
wxCarCmdLog.setTenantId(tenantId);
}
try {
wxCarCmdLogService.saveOrUpdate(wxCarCmdLog);
} catch (Exception e) {
logger.error("tjdParkoutCallback: 入库错误" + paramMap.toString());
map.put("isSuccess", "0");
map.put("errorMsg", "入库错误" + paramMap.toString());
return map;
logger.error("etcpParkOutCallback: 入库错误 " + e.getMessage() + "\n" + paramMap.toString());
return true;
}
map.put("isSuccess", "0");
map.put("errorMsg", "");
return map;
}
String synId = paramMap.get(ETCPUtil.ETCP_SYN_ID);
String exitTime = paramMap.get(ETCPUtil.ETCP_EXIT_TIME);
String stayedTime = paramMap.get(ETCPUtil.ETCP_STAYED_TIME);
String carNumber = paramMap.get(ETCPUtil.ETCP_CAR_NUMBER);
String parkId = paramMap.get(ETCPUtil.ETCP_PARK_ID);
String parkName = paramMap.get(ETCPUtil.ETCP_PARK_NAME);
String userType = paramMap.get(ETCPUtil.ETCP_USER_TYPE);
String entranceTime = paramMap.get(ETCPUtil.ETCP_ENTRANCE_TIME);
String fixParkingId = paramMap.get(ETCPUtil.ETCP_FIX_PARKING_ID);
String remainingDays = paramMap.get(ETCPUtil.ETCP_REMAINING_DAYS);
try {
// 保存WxCarPayRecord
WxCarPayRecord record = new WxCarPayRecord();
record.setSynId(synId);
if(StringUtils.isNotBlank(exitTime)) {
record.setExitTime(dateFormat.parse(exitTime));
}
if(StringUtils.isNotBlank(stayedTime)) {
record.setStayedTime(Long.parseLong(stayedTime));
}
record.setVendorType(wxCarCmdLog.getVendorType());
record.setSynId(synId);
record.setParkId(parkId);
record.setParkName(parkName);
record.setUserType(userType);
record.setPlateNumber(carNumber);
if(StringUtils.isNotBlank(entranceTime)) {
record.setEntranceTime(dateFormat.parse(entranceTime));
}
record.setFixParkingId(fixParkingId);
record.setRemainingDays(remainingDays);
//record.setPhone(phoneStrs);
record.setTenantId(tenantId);
WxCarPayRecord query = new WxCarPayRecord();
query.setSynId(synId);
PageInfo<WxCarPayRecord> page = wxCarPayRecordService.findCarPayListByPage(query,1,1);
if(page != null && CollectionUtils.isNotEmpty(page.getList())){
record.setId(page.getList().get(0).getId());
}
wxCarPayRecordService.saveOrUpdate(record);
} catch (Exception e) {
logger.error("WxCarPayRecord: 出场更新错误 " +e.getMessage()+", " +paramMap.toString());
return true;
}
return false;
}
}