diff --git a/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarTJDCallBackController.java b/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarTJDCallBackController.java index 331ff3631..80cbf3e41 100644 --- a/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarTJDCallBackController.java +++ b/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarTJDCallBackController.java @@ -1,13 +1,16 @@ package com.iformall.controller.callback; import com.alibaba.fastjson.JSON; +import com.github.pagehelper.PageInfo; import com.iformall.controller.base.BaseController; import com.iformall.domain.po.*; import com.iformall.enums.EnumCarCmd; import com.iformall.enums.EnumCarVendor; import com.iformall.enums.EnumCouponSendSendType; import com.iformall.service.*; +import com.iformall.utils.DateUtils; import com.iformall.utils.car.TJDUtil; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -48,7 +51,9 @@ public class WxCarTJDCallBackController extends BaseController { @Autowired WxCUserService wxCUserService; - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + SimpleDateFormat dateFormat0 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyyMMddHHmmss"); + /** * 注册车牌 @@ -116,8 +121,11 @@ public class WxCarTJDCallBackController extends BaseController { Map map = new HashMap(); Date currentDate = new Date(); - String tjdParkId = paramMap.get(TJDUtil.TJD_PARK_ID); + String parkId = paramMap.get(TJDUtil.TJD_PARK_ID); + String parkName = paramMap.get(TJDUtil.TJD_PARK_NAME); String carNumber = paramMap.get(TJDUtil.TJD_CAR_NUMBER); + String tradeId = paramMap.get(TJDUtil.TJD_TRADE_ID); + String inDt = paramMap.get(TJDUtil.TJD_IN_DT); WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); wxCarCmdLog.setVendorType(EnumCarVendor.CAR_TJD.getCode()); @@ -129,12 +137,12 @@ public class WxCarTJDCallBackController extends BaseController { String tenantId = null; WxPark parkQ = new WxPark(); parkQ.setVendorType(EnumCarVendor.CAR_TJD.getCode()); - parkQ.setParkId(tjdParkId); + parkQ.setParkId(parkId); WxPark park = wxParkService.getByObj(parkQ); if (park == null) { - logger.error("tjdParkInCallback: 车场未找到" + tjdParkId); + logger.error("tjdParkInCallback: 车场未找到" + parkId); map.put(TJDUtil.TJD_IS_SUC, TJDUtil.TJD_ERR_1); - map.put(TJDUtil.TJD_ERR_MSG, "车场未找到" + tjdParkId); + map.put(TJDUtil.TJD_ERR_MSG, "车场未找到" + parkId); return map; } else { tenantId = park.getTenantId(); @@ -175,6 +183,32 @@ public class WxCarTJDCallBackController extends BaseController { } } + try { + // 保存WxCarPayRecord + WxCarPayRecord record = new WxCarPayRecord(); + record.setTenantId(tenantId); + record.setVendorType(wxCarCmdLog.getVendorType()); + record.setSynId(tradeId); + record.setParkId(parkId); + record.setParkName(parkName); + record.setPlateNumber(carNumber); + if(StringUtils.isNotBlank(inDt)) { + record.setEntranceTime(dateFormat1.parse(inDt)); + } + record.setPhone(phoneStrs); + WxCarPayRecord query = new WxCarPayRecord(); + query.setTenantId(tenantId); + query.setParkId(parkId); + query.setSynId(tradeId); + PageInfo 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()); + } + map.put(TJDUtil.TJD_IS_SUC, TJDUtil.TJD_SUC); return map; } @@ -201,10 +235,13 @@ public class WxCarTJDCallBackController extends BaseController { logger.info("["+getIpAddr()+"tjdParkOutCallback: " + paramMap.toString()); Map map = new HashMap(); - String tjdParkId = paramMap.get(TJDUtil.TJD_PARK_ID); + String parkId = paramMap.get(TJDUtil.TJD_PARK_ID); + String parkName = paramMap.get(TJDUtil.TJD_PARK_NAME); String carNumber = paramMap.get(TJDUtil.TJD_CAR_NUMBER); - String tradeId = paramMap.get(TJDUtil.TJD_TRADE_ID); + String inDt = paramMap.get(TJDUtil.TJD_IN_DT); + String outDt = paramMap.get(TJDUtil.TJD_OUT_DT); + String stopFee = paramMap.get(TJDUtil.TJD_PARK_AMT); Date currentDate = new Date(); WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); @@ -217,12 +254,12 @@ public class WxCarTJDCallBackController extends BaseController { String tenantId = null; WxPark parkQ = new WxPark(); parkQ.setVendorType(EnumCarVendor.CAR_TJD.getCode()); - parkQ.setParkId(tjdParkId); + parkQ.setParkId(parkId); WxPark park = wxParkService.getByObj(parkQ); if (park == null) { - logger.error("tjdParkOutCallback: 车场未找到" + tjdParkId); + logger.error("tjdParkOutCallback: 车场未找到" + parkId); map.put(TJDUtil.TJD_IS_SUC, TJDUtil.TJD_ERR_1); - map.put(TJDUtil.TJD_ERR_MSG, "车场未找到" + tjdParkId); + map.put(TJDUtil.TJD_ERR_MSG, "车场未找到" + parkId); return map; } else { tenantId = park.getTenantId(); @@ -238,6 +275,39 @@ public class WxCarTJDCallBackController extends BaseController { return map; } + try { + // 保存WxCarPayRecord + WxCarPayRecord record = new WxCarPayRecord(); + record.setTenantId(tenantId); + record.setVendorType(wxCarCmdLog.getVendorType()); + record.setParkId(parkId); + record.setParkName(parkName); + record.setPlateNumber(carNumber); + record.setSynId(tradeId); + if(StringUtils.isNotBlank(inDt)) { + record.setEntranceTime(dateFormat1.parse(inDt)); + } + if(StringUtils.isNotBlank(outDt)) { + record.setExitTime(dateFormat1.parse(outDt)); + Long stayedTime = (record.getExitTime().getTime() - record.getEntranceTime().getTime())/ 1000; + record.setStayedTime(stayedTime); + } + if (StringUtils.isNotBlank(stopFee)) { + record.setFee(stopFee); + } + WxCarPayRecord query = new WxCarPayRecord(); + query.setTenantId(tenantId); + query.setParkId(parkId); + query.setSynId(tradeId); + PageInfo 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()); + } + map.put(TJDUtil.TJD_IS_SUC, TJDUtil.TJD_SUC); return map; } @@ -264,9 +334,12 @@ public class WxCarTJDCallBackController extends BaseController { Date currentDate = new Date(); Map map = new HashMap(); - String tjdParkId = paramMap.get(TJDUtil.TJD_PARK_ID); + String parkId = paramMap.get(TJDUtil.TJD_PARK_ID); + String parkName = paramMap.get(TJDUtil.TJD_PARK_NAME); String carNumber = paramMap.get(TJDUtil.TJD_CAR_NUMBER); String tradeId = paramMap.get(TJDUtil.TJD_TRADE_ID); + String stopFee = paramMap.get(TJDUtil.TJD_PAY_AMT); + String stopFeeTime = paramMap.get(TJDUtil.TJD_PAY_DT); WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); wxCarCmdLog.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); @@ -278,12 +351,12 @@ public class WxCarTJDCallBackController extends BaseController { String tenantId = null; WxPark parkQ = new WxPark(); parkQ.setVendorType(EnumCarVendor.CAR_TJD.getCode()); - parkQ.setParkId(tjdParkId); + parkQ.setParkId(parkId); WxPark park = wxParkService.getByObj(parkQ); if (park == null) { - logger.error("tjdPaidCallback: 车场未找到" + tjdParkId); + logger.error("tjdPaidCallback: 车场未找到" + parkId); map.put(TJDUtil.TJD_IS_SUC, TJDUtil.TJD_ERR_1); - map.put(TJDUtil.TJD_ERR_MSG, "车场未找到" + tjdParkId); + map.put(TJDUtil.TJD_ERR_MSG, "车场未找到" + parkId); return map; } else { tenantId = park.getTenantId(); @@ -299,6 +372,52 @@ public class WxCarTJDCallBackController extends BaseController { return map; } + try { + // 保存WxCarPayRecord + WxCarPayRecord record = new WxCarPayRecord(); + record.setTenantId(tenantId); + record.setVendorType(wxCarCmdLog.getVendorType()); + record.setParkId(parkId); + record.setParkName(parkName); + record.setPlateNumber(carNumber); + record.setSynId(tradeId); + record.setFee(stopFee); + if (StringUtils.isNotBlank(stopFeeTime)) { + record.setFeeTime(dateFormat1.parse(stopFeeTime)); + } + + WxCarPayRecord query = new WxCarPayRecord(); + record.setTenantId(tenantId); + record.setParkId(parkId); + record.setPlateNumber(carNumber); + query.setSynId(tradeId); + PageInfo page = wxCarPayRecordService.findCarPayListByPage(query,1,2); + if(page != null && page.getList().size() > 0){ + + if(page.getList().size() >= 2){ + wxCarPayRecordService.saveOrUpdate(record); + } else { + WxCarPayRecord r = page.getList().get(0); + if(r.getFeeTime() == null) { + // 无缴费信息, 更新 + record.setId(r.getId()); + wxCarPayRecordService.saveOrUpdate(record); + } else { + // 缴费时间在15分钟以内,更新之前的数据, ETCP会把之前的缴费自动退款 + if(DateUtils.isInDate15Mins(record.getFeeTime(), r.getFeeTime())) { + record.setId(r.getId()); + } + wxCarPayRecordService.saveOrUpdate(record); + } + } + } else { + wxCarPayRecordService.saveOrUpdate(record); + } + } catch (Exception e) { + logger.error("WxCarPayRecord: 缴费更新错误 " +e.getMessage()+", "+ paramMap.toString()); + //return new Result(ErrorCode.DB_FAIL.getCode(), "入库错误" + paramMap.toString()); + } + map.put(TJDUtil.TJD_IS_SUC, TJDUtil.TJD_SUC); return map; } diff --git a/mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java b/mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java index 3f1c57cda..cca87fd1d 100644 --- a/mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java +++ b/mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java @@ -36,8 +36,15 @@ public class TJDUtil { public static final String TJD_ERR_1 = "1"; // 业务级失败(不进行重发) public static final String TJD_ERR_2 = "2"; // 系统级失败(有重发机制) public static final String TJD_PARK_ID = "parkId"; + public static final String TJD_PARK_NAME = "parkName"; public static final String TJD_CAR_NUMBER = "carNum"; public static final String TJD_TRADE_ID = "tradeId"; + public static final String TJD_IN_DT = "inDt"; + public static final String TJD_OUT_DT = "outDt"; + public static final String TJD_PARK_AMT = "parkAmount"; + public static final String TJD_PAY_AMT = "payAmount"; + public static final String TJD_PAY_DT = "payDt"; + private final static Logger logger = LoggerFactory.getLogger(TJDUtil.class);