@@ -61,4 +61,11 @@ public class MessageSharedController { | |||
return ApiResponse.of(pagination); | |||
} | |||
@ApiOperation(value = "首页统计") | |||
@PostMapping(value = "/homeStatistics") | |||
public ApiResponse<HomeStatisticsResponseDto> homeStatistics(@RequestBody @Valid HomeStatisticsRequestDto request){ | |||
HomeStatisticsResponseDto responseDto = messageWaitSendManager.homeStatistics(request); | |||
return ApiResponse.of(responseDto); | |||
} | |||
} |
@@ -0,0 +1,29 @@ | |||
package cn.com.taiji.msgw.dto; | |||
import cn.com.taiji.common.entity.BaseEntity; | |||
import cn.com.taiji.core.entity.dict.msgw.MessageType; | |||
import lombok.Getter; | |||
import lombok.Setter; | |||
import java.time.LocalDateTime; | |||
@Getter | |||
@Setter | |||
public class HomeStatisticsRequestDto extends BaseEntity { | |||
/** | |||
* 消息类型 | |||
*/ | |||
private MessageType messageType; | |||
/*** | |||
* 统计开始日期 | |||
*/ | |||
private LocalDateTime startDate; | |||
/*** | |||
* 统计结束日期 | |||
*/ | |||
private LocalDateTime endDate; | |||
} |
@@ -0,0 +1,19 @@ | |||
package cn.com.taiji.msgw.dto; | |||
import java.util.List; | |||
import cn.com.taiji.common.model.BaseModel; | |||
import cn.com.taiji.core.entity.msgw.MsgwSmsKeyConfig; | |||
import cn.com.taiji.msgw.model.HomeStatisticsModel; | |||
import lombok.Getter; | |||
import lombok.Setter; | |||
import lombok.experimental.Accessors; | |||
@Getter | |||
@Setter | |||
@Accessors(chain = true) | |||
public class HomeStatisticsResponseDto extends BaseModel { | |||
List<HomeStatisticsModel> list; | |||
} |
@@ -31,4 +31,7 @@ public interface MessageWaitSendManager { | |||
/**用户分页*/ | |||
Pagination userPage(UserListRequestDto request); | |||
/**首页统计*/ | |||
HomeStatisticsResponseDto homeStatistics(HomeStatisticsRequestDto request); | |||
} |
@@ -4,6 +4,7 @@ import java.time.LocalDateTime; | |||
import java.util.ArrayList; | |||
import java.util.List; | |||
import cn.com.taiji.msgw.model.HomeStatisticsModel; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.stereotype.Service; | |||
@@ -198,9 +199,6 @@ public class MessageWaitSendManagerImpl extends AbstractCommManager implements M | |||
return sendDetailsRepo.page(request); | |||
} | |||
@Override | |||
public Pagination userPage(UserListRequestDto request){ | |||
Pagination pagination = new Pagination(); | |||
@@ -236,5 +234,35 @@ public class MessageWaitSendManagerImpl extends AbstractCommManager implements M | |||
return pagination; | |||
} | |||
@Override | |||
public HomeStatisticsResponseDto homeStatistics(HomeStatisticsRequestDto request) { | |||
HomeStatisticsResponseDto response = new HomeStatisticsResponseDto(); | |||
// 获取开始时间与结束时间 | |||
LocalDateTime startDateTime = request.getStartDate(); | |||
LocalDateTime endDateTime = request.getEndDate(); | |||
// 循环从开始日期到结束日期的前一天 | |||
List<HomeStatisticsModel> list = new ArrayList<>(); | |||
LocalDateTime currentDate = startDateTime; | |||
while (currentDate.isBefore(endDateTime)) { | |||
LocalDateTime nextDate = currentDate.plusDays(1); | |||
Long totalNum = sendDetailsRepo.countStatistics(request.getMessageType(), null, currentDate, nextDate); | |||
//成功消息总数 | |||
Long successTotalNum = sendDetailsRepo.countStatistics(request.getMessageType(), MessageResult.SEND, currentDate, nextDate); | |||
//失败消息总数 | |||
Long failTotalNum = sendDetailsRepo.countStatistics(request.getMessageType(), MessageResult.FAIL, currentDate, nextDate); | |||
//待发送消息总数 | |||
Long waitTotalNum = sendDetailsRepo.countStatistics(request.getMessageType(), MessageResult.WAIT, currentDate, nextDate); | |||
//过期消息总数 | |||
Long expiredTotalNum = sendDetailsRepo.countStatistics(request.getMessageType(), MessageResult.EXPIRED, currentDate, nextDate); | |||
//取消消息总数 | |||
Long cancelTotalNum = sendDetailsRepo.countStatistics(request.getMessageType(), MessageResult.CANCEL, currentDate, nextDate); | |||
HomeStatisticsModel model = new HomeStatisticsModel(currentDate.toLocalDate().toString(), totalNum, successTotalNum, failTotalNum, waitTotalNum, expiredTotalNum, cancelTotalNum); | |||
list.add(model); | |||
currentDate = nextDate; | |||
} | |||
response.setList(list); | |||
return response; | |||
} | |||
} |
@@ -0,0 +1,29 @@ | |||
package cn.com.taiji.msgw.model; | |||
import cn.com.taiji.common.model.BaseModel; | |||
import lombok.Getter; | |||
import lombok.Setter; | |||
@Getter | |||
@Setter | |||
public class HomeStatisticsModel extends BaseModel { | |||
private String date; | |||
private Long totalNum; | |||
private Long successTotalNum; | |||
private Long failTotalNum; | |||
private Long waitTotalNum; | |||
private Long expiredTotalNum; | |||
private Long cancelTotalNum; | |||
public HomeStatisticsModel(String date, Long totalNum, Long successTotalNum, Long failTotalNum, Long waitTotalNum, Long expiredTotalNum, Long cancelTotalNum) { | |||
this.date = date; | |||
this.totalNum = totalNum; | |||
this.successTotalNum = successTotalNum; | |||
this.failTotalNum = failTotalNum; | |||
this.waitTotalNum = waitTotalNum; | |||
this.expiredTotalNum = expiredTotalNum; | |||
this.cancelTotalNum = cancelTotalNum; | |||
} | |||
} |
@@ -15,6 +15,7 @@ import cn.com.taiji.core.model.comm.protocol.ias.ass.ReleasePlateApplyResponse; | |||
import cn.com.taiji.core.model.comm.protocol.ias.vaild.VehiclePlateCheckResponse; | |||
import cn.com.taiji.core.model.comm.protocol.valid.ErrorMsgBuilder; | |||
import cn.com.taiji.core.repo.jpa.ass.AssVehicleRelieveRepo; | |||
import cn.com.taiji.core.repo.jpa.basic.QtkCustomerInfoRepo; | |||
import cn.com.taiji.core.repo.jpa.user.AccountInfoRepo; | |||
import cn.com.taiji.ias.dict.DataType; | |||
import cn.com.taiji.ias.manager.ass.AbstractAssManager; | |||
@@ -38,6 +39,8 @@ public class ReleasePlateApplyManager extends AbstractAssManager<ReleasePlateApp | |||
@Autowired | |||
private AccountInfoRepo accountInfoRepo; | |||
@Autowired | |||
private QtkCustomerInfoRepo qtkCustomerInfoRepo; | |||
public ReleasePlateApplyManager() { | |||
super(DataType.RELEASE_PLATE_APPLY); | |||
@@ -97,7 +100,7 @@ public class ReleasePlateApplyManager extends AbstractAssManager<ReleasePlateApp | |||
throw newBusinessException("该车牌号未被占用,无需申请"); | |||
} | |||
//外省发行方占用 | |||
if (!res.getInfo().contains("贵州")) { | |||
if (res.getResult() != 4 && !res.getInfo().contains("贵州")) { | |||
throw newBusinessException(res.getInfo()); | |||
} | |||
dataStream.put(CARD_INFO, qtkCardInfo); | |||
@@ -114,12 +117,12 @@ public class ReleasePlateApplyManager extends AbstractAssManager<ReleasePlateApp | |||
//双系统查询ETC用户信息 | |||
QtkCustomerInfo customerInfo = queryCustomerInfo(qtkVehicleInfo.getCustomerId()); | |||
//占用用户和申请用户一致 | |||
if(req.getCustomerIdNum().equals(customerInfo.getCustomerIdNum())){ | |||
//校验卡 | |||
validCard(dataStream); | |||
//校验签 | |||
validObu(dataStream); | |||
} | |||
// if(req.getCustomerIdNum().equals(customerInfo.getCustomerIdNum())){ | |||
// //校验卡 | |||
// validCard(dataStream); | |||
// //校验签 | |||
// validObu(dataStream); | |||
// } | |||
} | |||
private void validCard(Map<String, Object> dataStream) throws ServiceHandleException { | |||
@@ -133,7 +136,7 @@ public class ReleasePlateApplyManager extends AbstractAssManager<ReleasePlateApp | |||
//卡状态正常和挂失状态引导走正常注销流程 | |||
//2、没有数据即卡状态正常 | |||
//3、有数据看是否是挂失 | |||
if (qtkBlackCards == null || qtkBlackCards.isEmpty()){ | |||
if (isEmpty(qtkBlackCards)){ | |||
throw newBusinessException("请先走注销流程"); | |||
} else { | |||
//下黑的所有类型 | |||
@@ -176,6 +179,10 @@ public class ReleasePlateApplyManager extends AbstractAssManager<ReleasePlateApp | |||
@Override | |||
protected void persistInternal(ReleasePlateApplyRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException { | |||
QtkCardInfo qtkCardInfo = (QtkCardInfo) dataStream.get(CARD_INFO); | |||
QtkObuInfo qtkObuInfo = (QtkObuInfo) dataStream.get(OBU_INFO); | |||
//取customerId 前面已经校验,走到这里卡和签不可能全都为null | |||
String customerId = qtkCardInfo == null ? qtkObuInfo.getCustomerId() : qtkCardInfo.getCustomerId(); | |||
LocalDateTime now = LocalDateTime.now(); | |||
//保存售后表 | |||
AssOrderinfo assOrderinfo = new AssOrderinfo(); | |||
@@ -190,12 +197,13 @@ public class ReleasePlateApplyManager extends AbstractAssManager<ReleasePlateApp | |||
// FIXME: 业务员申请的单子,用户怎么查看 | |||
if (SourceType.SERVICE_HALL == req.getSourceType() || SourceType.WEB == req.getSourceType()){ | |||
assOrderinfo.setStaffOpenId(req.getOpenId()); | |||
String openId = accountInfoRepo.findByIdNum(req.getCustomerIdNum()); | |||
if (hasText(openId)) { | |||
assOrderinfo.setOpenId(openId); | |||
} | |||
} | |||
if (SourceType.ALI == req.getSourceType() || SourceType.WECHAT == req.getSourceType()){ | |||
assOrderinfo.setOpenId(req.getOpenId()); | |||
String openId = accountInfoRepo.findByIdNum(req.getCustomerIdNum()); | |||
assOrderinfo.setOpenId(openId); | |||
// // 自营工具 和 管理端 | |||
// assOrderinfo.setAgencyId("52001106004");// 黔通智联(自营) | |||
// assOrderinfo.setChannelId("5201010600401150002"); // 黔通智联售后服务 | |||
@@ -205,6 +213,9 @@ public class ReleasePlateApplyManager extends AbstractAssManager<ReleasePlateApp | |||
assOrderinfo.setCustomerIdType(IdType.SFZ); | |||
assOrderinfo.setCustomerIdNum(req.getCustomerIdNum()); | |||
assOrderinfo.setAuditStatus(AuditStatus.AUDIT); | |||
QtkCustomerInfo customerInfo = qtkCustomerInfoRepo.findByCustomerId(customerId); | |||
assOrderinfo.setUserType(customerInfo.getUserType());//占用车辆人的用户类型 | |||
assOrderinfo.setCustomerId(customerId);//占用车辆人的customerId | |||
//保存解除车牌占用明细表 | |||
AssVehicleRelieve assVehicleRelieve = new AssVehicleRelieve(); | |||
assVehicleRelieve.setStep(AssVehicleRealseStep.SUBMIT_AUDIT); | |||
@@ -228,8 +239,6 @@ public class ReleasePlateApplyManager extends AbstractAssManager<ReleasePlateApp | |||
assVehicleRelieve.setOwnerPosImgUrl(req.getOwnerPosImgUrl()); | |||
assVehicleRelieve.setOwnerNegImgUrl(req.getOwnerNegImgUrl()); | |||
} | |||
QtkCardInfo qtkCardInfo = (QtkCardInfo) dataStream.get(CARD_INFO); | |||
QtkObuInfo qtkObuInfo = (QtkObuInfo) dataStream.get(OBU_INFO); | |||
if (qtkCardInfo != null) { | |||
assVehicleRelieve.setRelieveCardId(qtkCardInfo.getCardId()); | |||
assOrderinfo.setCardId(qtkCardInfo.getCardId()); | |||
@@ -238,8 +247,6 @@ public class ReleasePlateApplyManager extends AbstractAssManager<ReleasePlateApp | |||
assVehicleRelieve.setRelieveObuId(qtkObuInfo.getObuId()); | |||
assOrderinfo.setObuId(qtkObuInfo.getObuId()); | |||
} | |||
assVehicleRelieve.setInsertTime(now); | |||
assVehicleRelieve.setUpdateTime(now); | |||
assOrderinfoRepo.persist(assOrderinfo); | |||
assVehicleRelieveRepo.persist(assVehicleRelieve); | |||
} |
@@ -2,6 +2,7 @@ package cn.com.taiji.ias.manager.order; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.core.entity.basic.QtkBrandInfo; | |||
import cn.com.taiji.core.entity.dict.basic.CardType; | |||
import cn.com.taiji.core.entity.dict.basic.SourceType; | |||
import cn.com.taiji.core.entity.dict.issue.IssueOrderStatus; | |||
import cn.com.taiji.core.entity.dict.issue.IssueOrderStep; | |||
@@ -81,17 +82,11 @@ public class OrderAuditManager extends AbstractOrderManager<OrderAuditRequest> { | |||
//审核通过 | |||
if (SourceType.CHANNEL.equals(order.getOrderSource())) { | |||
//20250408修改,线上不需要支付,审核通过直接待签约 | |||
if (order.getPromotionModes().equals(1)) {// 线上 | |||
order.setOrderStep(IssueOrderStep.ORDER_PAID);//待签约 | |||
} else if (order.getPromotionModes().equals(2)) {//线下 | |||
if (order.getNeedPay()) {// 需要支付,指线下 | |||
order.setOrderStep(IssueOrderStep.VEHICLE_UPLOAD);//线下待支付 | |||
} else {//线上、线下 | |||
IssueProduct product = issueProductRepo.findByReleaseId(order.getProductId()); | |||
if (product.getNeedPay()) { | |||
order.setOrderStep(IssueOrderStep.VEHICLE_UPLOAD); | |||
} else { | |||
order.setOrderStep(IssueOrderStep.ORDER_PAID); | |||
} | |||
}else { | |||
//记账卡待签约,非记账卡待激活 | |||
order.setOrderStep(CardType.CHARGE_CARD.equals(order.getCardType())?IssueOrderStep.ORDER_PAID:IssueOrderStep.WAITING_ACTIVE); | |||
} | |||
} else { | |||
if (!ShippingStatus.NONE.equals(order.getShippingStatus())) {//需要邮寄 |
@@ -26,6 +26,7 @@ import java.util.stream.Collectors; | |||
/** | |||
* <pre> | |||
* 订单支付查询 | |||
* //渠道订单不需要支付,就不会到此步进行查询,即小程序不管怎样都会到这 | |||
* </pre> | |||
*/ | |||
@Service | |||
@@ -84,7 +85,11 @@ public class OrderPayQueryManager extends AbstractOrderManager<OrderPayQueryRequ | |||
@Override | |||
protected void onSuccessInternal(OrderPayQueryRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException { | |||
IssueOrderinfo order = (IssueOrderinfo)dataStream.get(ORDER); | |||
asyCallBackQd(order, ""); | |||
List<IssueOrderPay> orderPays = (List<IssueOrderPay>)dataStream.get(ORDERPAY); | |||
boolean b = orderPays.stream().anyMatch(pay -> !pay.getPayStatus().equals(OrderPayStatus.SUCCESS)); | |||
if (order.getNeedPay() && b) {//需要支付且支付成功,回调渠道 | |||
asyCallBackQd(order, ""); | |||
} | |||
} | |||
@Override |
@@ -342,18 +342,14 @@ public class VehicleUploadManager extends AbstractOrderManager<VehicleUploadRequ | |||
// 是否被人工审核 1:人工 2:系统 0:未审核。人工审核时再变成1 | |||
order.setArtificialStatus(2); | |||
if (SourceType.CHANNEL.equals(order.getOrderSource())) { | |||
if (order.getVanType() !=1){ //非客车 都需要审核 | |||
if (order.getVanType() !=1 || hasText(failReason)){ //非客车或审核不通过 都需要审核 | |||
order.setOrderStep(IssueOrderStep.WAITING_AUDIT); | |||
}else { | |||
if (!hasText(failReason)) { | |||
if (order.getPromotionModes().equals(1)) {// 线上 | |||
order.setOrderStep(IssueOrderStep.ORDER_PAID);//待签约 | |||
} else if (order.getPromotionModes().equals(2)) {//线下 | |||
order.setOrderStep(IssueOrderStep.VEHICLE_UPLOAD);//线下待支付 | |||
} | |||
// order.setOrderStep(IssueOrderStep.VEHICLE_UPLOAD);//待支付 | |||
} else { | |||
order.setOrderStep(IssueOrderStep.WAITING_AUDIT); | |||
if (order.getNeedPay()) {// 需要支付,指线下 | |||
order.setOrderStep(IssueOrderStep.VEHICLE_UPLOAD);//线下待支付 | |||
}else { | |||
//记账卡待签约,非记账卡待激活 | |||
order.setOrderStep(CardType.CHARGE_CARD.equals(order.getCardType())?IssueOrderStep.ORDER_PAID:IssueOrderStep.WAITING_ACTIVE); | |||
} | |||
} | |||
} else { |