|
@@ -11,8 +11,11 @@ import com.gree.mall.manager.bean.workorder.PgAppraiseApplyBean;
|
|
|
import com.gree.mall.manager.bean.workorder.PgAppraiseApplyVO;
|
|
|
import com.gree.mall.manager.bean.workorder.PgAppraiseCategoryVO;
|
|
|
import com.gree.mall.manager.commonmapper.CommonMapper;
|
|
|
+import com.gree.mall.manager.enums.ExamineStatusEnum;
|
|
|
import com.gree.mall.manager.enums.workorder.AppraiseApplyStatusEnum;
|
|
|
import com.gree.mall.manager.enums.workorder.AppraiseConfigTypeEnum;
|
|
|
+import com.gree.mall.manager.enums.workorder.AppraiseOnusEnum;
|
|
|
+import com.gree.mall.manager.enums.workorder.AppraiseStatusEnum;
|
|
|
import com.gree.mall.manager.exception.RemoteServiceException;
|
|
|
import com.gree.mall.manager.logic.common.CommonLogic;
|
|
|
import com.gree.mall.manager.plus.entity.*;
|
|
@@ -43,6 +46,7 @@ public class AppraiseRelaLogic {
|
|
|
private final PgAppraiseApplyService pgAppraiseApplyService;
|
|
|
private final PgAppraiseApplyItemService pgAppraiseApplyItemService;
|
|
|
private final PgOrderBaseService pgOrderBaseService;
|
|
|
+ private final OrderBaseLogic orderBaseLogic;
|
|
|
|
|
|
public List<PgAppraiseConfig> configList() {
|
|
|
AdminUserCom adminUser = commonLogic.getAdminUser();
|
|
@@ -204,15 +208,18 @@ public class AppraiseRelaLogic {
|
|
|
}
|
|
|
final PgOrderBase orderBase = pgOrderBaseService.getById(bean.getOrderBaseId());
|
|
|
|
|
|
- final Integer applyCount = pgAppraiseApplyService.lambdaQuery()
|
|
|
- .eq(PgAppraiseApply::getIsSecond, true)
|
|
|
+ final PgAppraiseApply beforeApply = pgAppraiseApplyService.lambdaQuery()
|
|
|
+ .eq(PgAppraiseApply::getIsSecond, false)
|
|
|
.eq(PgAppraiseApply::getOrderBaseId, bean.getOrderBaseId())
|
|
|
- .count();
|
|
|
+ .orderByDesc(PgAppraiseApply::getApplyTime)
|
|
|
+ .one();
|
|
|
+
|
|
|
+ final int applyCount = Objects.isNull(beforeApply) ? 0 : 1;
|
|
|
|
|
|
// 查询有没有驳回不可申诉人
|
|
|
final Integer superEndCount = pgAppraiseApplyService.lambdaQuery()
|
|
|
.eq(PgAppraiseApply::getOrderBaseId, bean.getOrderBaseId())
|
|
|
- .isNotNull(PgAppraiseApply::getRejectTime)
|
|
|
+ .isNotNull(PgAppraiseApply::getCloseTime)
|
|
|
.count();
|
|
|
|
|
|
if (superEndCount > 0) {
|
|
@@ -236,6 +243,11 @@ public class AppraiseRelaLogic {
|
|
|
.eq(PgAppraiseConfig::getType, applyCount == 0 ? AppraiseConfigTypeEnum.FIRST_A.getKey() : AppraiseConfigTypeEnum.SECOND_A.getKey())
|
|
|
.one();
|
|
|
|
|
|
+ if (config.getType().equals(AppraiseConfigTypeEnum.SECOND_A.getKey())) {
|
|
|
+ // 获取首次申诉审核时间
|
|
|
+ overTime = beforeApply.getInfoConfirmTime();
|
|
|
+ }
|
|
|
+
|
|
|
final int val = Integer.parseInt(config.getVal());
|
|
|
endTime = DateUtil.offsetHour(overTime, val);
|
|
|
|
|
@@ -265,8 +277,15 @@ public class AppraiseRelaLogic {
|
|
|
throw new RemoteServiceException("已有中差评申诉“审核通过”记录, 提交失败");
|
|
|
}
|
|
|
|
|
|
+ bean.setStatus(AppraiseApplyStatusEnum.WAIT_CENTER.getKey());
|
|
|
+ bean.setApplyTime(DateUtil.date());
|
|
|
+ bean.setApplyBy(adminUser.getNickName());
|
|
|
+ bean.setCompanyWechatId(orderBase.getCompanyWechatId());
|
|
|
+ bean.setCompanyWechatName(orderBase.getCompanyWechatName());
|
|
|
if (isAdd) {
|
|
|
+ bean.setOverTime(Objects.isNull(orderBase.getOverTime()) ? orderBase.getOverTime() : orderBase.getWebsitOverTime());
|
|
|
bean.insert();
|
|
|
+ orderBaseLogic.dow(orderBase.getId());
|
|
|
} else {
|
|
|
bean.updateById();
|
|
|
}
|
|
@@ -284,9 +303,37 @@ public class AppraiseRelaLogic {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @Transactional
|
|
|
public void applyConfirm(PgAppraiseApplyBean bean) {
|
|
|
AdminUserCom adminUser = commonLogic.getAdminUser();
|
|
|
- final PgAppraiseApply apply = pgAppraiseApplyService.getById(bean.getId());
|
|
|
+ PgAppraiseApply apply = pgAppraiseApplyService.getById(bean.getId());
|
|
|
+ PgOrderBase orderBase = pgOrderBaseService.getById(apply.getOrderBaseId());
|
|
|
+
|
|
|
+ if (!apply.getStatus().equals(AppraiseApplyStatusEnum.WAIT_CENTER.getKey())) {
|
|
|
+ throw new RemoteServiceException("申诉状态已发生改变");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查询有没有驳回可重诉人
|
|
|
+ final Integer superCount = pgAppraiseApplyService.lambdaQuery()
|
|
|
+ .eq(PgAppraiseApply::getOrderBaseId, bean.getOrderBaseId())
|
|
|
+ .isNotNull(PgAppraiseApply::getRejectTime)
|
|
|
+ .count();
|
|
|
+
|
|
|
+ if (superCount == 0) {
|
|
|
+ // 首次审核时间不能超时, 二次审核时间不能超时,从网点提交首次申诉时间开始计算
|
|
|
+ Date applyTime = apply.getApplyTime();
|
|
|
+ final PgAppraiseConfig config = pgAppraiseConfigService.lambdaQuery()
|
|
|
+ .eq(PgAppraiseConfig::getCompanyWechatId, apply.getCompanyWechatId())
|
|
|
+ .eq(PgAppraiseConfig::getType, !apply.getIsSecond() ? AppraiseConfigTypeEnum.FIRST_A.getKey() : AppraiseConfigTypeEnum.SECOND_A.getKey())
|
|
|
+ .one();
|
|
|
+ final int val = Integer.parseInt(config.getVal());
|
|
|
+ Date endTime = DateUtil.offsetHour(applyTime, val);
|
|
|
+
|
|
|
+ String str = !apply.getIsSecond() ? "首次" : "二次";
|
|
|
+ if (DateUtil.date().after(endTime)) {
|
|
|
+ throw new RemoteServiceException("已超" + str + "审核时间, 审核失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
if (StringUtils.isBlank(bean.getParentCategoryId())) {
|
|
|
throw new RemoteServiceException("请选择问题大类");
|
|
@@ -294,19 +341,133 @@ public class AppraiseRelaLogic {
|
|
|
if (StringUtils.isBlank(bean.getCategoryId())) {
|
|
|
throw new RemoteServiceException("请选择问题小类");
|
|
|
}
|
|
|
+ if (StringUtils.isBlank(bean.getExamineResult())) {
|
|
|
+ throw new RemoteServiceException("审核备注");
|
|
|
+ }
|
|
|
+ if (Objects.isNull(bean.getIsWebsitCall())) {
|
|
|
+ throw new RemoteServiceException("请选择网点是否指引用户接听400回访电话");
|
|
|
+ }
|
|
|
+ if (Objects.isNull(bean.getWebsitResult())) {
|
|
|
+ throw new RemoteServiceException("请选择判定网点");
|
|
|
+ }
|
|
|
+ if (Objects.isNull(bean.getWorkerResult())) {
|
|
|
+ throw new RemoteServiceException("请选择判定服务人员");
|
|
|
+ }
|
|
|
+
|
|
|
+ apply.setInfoConfirmTime(apply.getIsSecond() ? null : DateUtil.date())
|
|
|
+ .setSettleConfirmTime(apply.getIsSecond() ? DateUtil.date() : null)
|
|
|
+ .setConfirmBy(adminUser.getNickName())
|
|
|
+ .setStatus(ExamineStatusEnum.OK.getKey());
|
|
|
+
|
|
|
+
|
|
|
+ if (apply.getWebsitResult().equals(AppraiseOnusEnum.NOT.getKey())) {
|
|
|
+ // 首次申诉:判定网点【无责】的,则申诉成功,审核结果为【好评】,不触发二次可申诉
|
|
|
+ // 二次申诉:判定网点【无责】的,则申诉成功,审核结果为【好评】
|
|
|
+ apply.setExamineResult(AppraiseStatusEnum.A.getKey());
|
|
|
+
|
|
|
+ } else if (apply.getWebsitResult().equals(AppraiseOnusEnum.HALF.getKey())) {
|
|
|
+ // 首次申诉:判定网点为【半责】的,审核结果为【剔除】,不触发起二次可申诉
|
|
|
+ // 二次申诉:判定网点【半责】的,审核结果为【剔除】
|
|
|
+ apply.setExamineResult(AppraiseStatusEnum.T.getKey());
|
|
|
+ } else if (apply.getWebsitResult().equals(AppraiseOnusEnum.ALL.getKey())) {
|
|
|
+ // 首次申诉:判定网点【全责】的,审核结果为【驳回】,触发二次可申诉
|
|
|
+ // 二次申诉:判定网点【全责】的,审核结果为【驳回】,维护原评价
|
|
|
+ apply.setExamineResult(orderBase.getAppraiseStatus());
|
|
|
+ }
|
|
|
+
|
|
|
+ pgOrderBaseService.lambdaUpdate()
|
|
|
+ .set(PgOrderBase::getAppraiseApplyResult, apply.getExamineResult())
|
|
|
+ .eq(PgOrderBase::getId, orderBase.getId())
|
|
|
+ .update();
|
|
|
}
|
|
|
|
|
|
public void applyReject(String id) {
|
|
|
pgAppraiseApplyService.lambdaUpdate()
|
|
|
+ .set(PgAppraiseApply::getApplyBy, null)
|
|
|
+ .set(PgAppraiseApply::getApplyTime, null)
|
|
|
.set(PgAppraiseApply::getStatus, AppraiseApplyStatusEnum.WAIT.getKey())
|
|
|
.eq(PgAppraiseApply::getId, id)
|
|
|
+ .eq(PgAppraiseApply::getStatus, AppraiseApplyStatusEnum.WAIT_CENTER.getKey())
|
|
|
.update();
|
|
|
}
|
|
|
|
|
|
+ @Transactional
|
|
|
public void batchUpdateReset(List<String> ids) {
|
|
|
+ if (CollectionUtil.isEmpty(ids)) {
|
|
|
+ throw new RemoteServiceException("请选择记录");
|
|
|
+ }
|
|
|
+ AdminUserCom adminUser = commonLogic.getAdminUser();
|
|
|
+
|
|
|
+ List<PgAppraiseApply> applyList = pgAppraiseApplyService.lambdaQuery()
|
|
|
+ .in(PgAppraiseApply::getId, ids)
|
|
|
+ .in(PgAppraiseApply::getStatus, AppraiseApplyStatusEnum.OK.getKey(), AppraiseApplyStatusEnum.WAIT_CENTER.getKey())
|
|
|
+ .isNull(PgAppraiseApply::getRejectTime)
|
|
|
+ .isNull(PgAppraiseApply::getCloseBy)
|
|
|
+ .list();
|
|
|
+
|
|
|
+ final List<String> normIds = applyList.stream().map(PgAppraiseApply::getId).collect(Collectors.toList());
|
|
|
+
|
|
|
+ pgAppraiseApplyService.lambdaUpdate()
|
|
|
+ .set(PgAppraiseApply::getRejectBy, adminUser.getNickName())
|
|
|
+ .set(PgAppraiseApply::getRejectTime, DateUtil.date())
|
|
|
+ .in(PgAppraiseApply::getId, normIds)
|
|
|
+ .update();
|
|
|
+
|
|
|
+ List<PgAppraiseApply> copyList = pgAppraiseApplyService.lambdaQuery()
|
|
|
+ .in(PgAppraiseApply::getId, ids)
|
|
|
+ .list();
|
|
|
+ List<PgAppraiseApply> newList = new ArrayList<>();
|
|
|
+ for (PgAppraiseApply apply : copyList) {
|
|
|
+ PgAppraiseApply copy = new PgAppraiseApply();
|
|
|
+ copy.setOrderBaseId(apply.getOrderBaseId())
|
|
|
+ .setOrderType(apply.getOrderType())
|
|
|
+ .setOrderSmallType(apply.getOrderSmallType())
|
|
|
+ .setOrderSmallTypeText(apply.getOrderSmallTypeText())
|
|
|
+ .setCompanyWechatId(apply.getCompanyWechatId())
|
|
|
+ .setCompanyWechatName(apply.getCompanyWechatName())
|
|
|
+ .setStatus(AppraiseApplyStatusEnum.WAIT.getKey())
|
|
|
+ .setWorkerId(apply.getWorkerId())
|
|
|
+ .setWorkerNumber(apply.getWorkerNumber())
|
|
|
+ .setWorkerName(apply.getWorkerName())
|
|
|
+ .setWorkerMobile(apply.getWorkerMobile())
|
|
|
+ .setWorkerIdcard(apply.getWorkerIdcard())
|
|
|
+ .setWebsitId(apply.getWebsitId())
|
|
|
+ .setWebsitName(apply.getWebsitName())
|
|
|
+ .setOverTime(apply.getOverTime())
|
|
|
+ .setAppraiseStatus(apply.getAppraiseStatus())
|
|
|
+ .setAppraiseContent(apply.getAppraiseContent())
|
|
|
+ .setAppraiseSource(apply.getAppraiseSource())
|
|
|
+ .setReason(apply.getReason())
|
|
|
+ .setUserName(apply.getUserName())
|
|
|
+ .setUserMobile(apply.getUserMobile())
|
|
|
+ .setAddress(apply.getAddress());
|
|
|
+
|
|
|
+
|
|
|
+ newList.add(copy);
|
|
|
+ }
|
|
|
+
|
|
|
+ pgAppraiseApplyService.saveBatch(newList);
|
|
|
+ pgOrderBaseService.lambdaUpdate()
|
|
|
+ .set(PgOrderBase::getAppraiseApplyResult, null)
|
|
|
+ .eq(PgOrderBase::getId, applyList.stream()
|
|
|
+ .map(PgAppraiseApply::getOrderBaseId)
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList()))
|
|
|
+ .update();
|
|
|
}
|
|
|
|
|
|
public void batchUpdateEnd(List<String> ids) {
|
|
|
+ if (CollectionUtil.isEmpty(ids)) {
|
|
|
+ throw new RemoteServiceException("请选择记录");
|
|
|
+ }
|
|
|
+ AdminUserCom adminUser = commonLogic.getAdminUser();
|
|
|
+ pgAppraiseApplyService.lambdaUpdate()
|
|
|
+ .set(PgAppraiseApply::getStatus, AppraiseApplyStatusEnum.OK.getKey())
|
|
|
+ .set(PgAppraiseApply::getCloseBy, adminUser.getNickName())
|
|
|
+ .set(PgAppraiseApply::getCloseTime, DateUtil.date())
|
|
|
+ .in(PgAppraiseApply::getId, ids)
|
|
|
+ .in(PgAppraiseApply::getStatus, AppraiseApplyStatusEnum.WAIT.getKey(), AppraiseApplyStatusEnum.WAIT_CENTER.getKey())
|
|
|
+ .update();
|
|
|
}
|
|
|
|
|
|
|