fix:十二分制-申请单
This commit is contained in:
@@ -1,12 +1,10 @@
|
||||
package com.cool.store.service.tp;
|
||||
|
||||
import com.cool.store.request.tp.TpAppealApplyRequest;
|
||||
import com.cool.store.request.tp.TpApplyAuditRequest;
|
||||
import com.cool.store.request.tp.TpApplyQueryRequest;
|
||||
import com.cool.store.request.tp.TpApplyRequest;
|
||||
import com.cool.store.vo.tp.TpPenaltyApplyDetailVO;
|
||||
import com.cool.store.vo.tp.TpPenaltyApplyListVO;
|
||||
import com.cool.store.vo.tp.TpRewardApplyDetailVO;
|
||||
import com.cool.store.vo.tp.TpRewardApplyListVO;
|
||||
import com.cool.store.vo.tp.*;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
|
||||
/**
|
||||
@@ -74,4 +72,32 @@ public interface TpApplyService {
|
||||
* @return 是否成功
|
||||
*/
|
||||
Boolean penaltyAudit(TpApplyAuditRequest request);
|
||||
|
||||
/**
|
||||
* 复议申请提交
|
||||
* @param request 复议申请Request
|
||||
* @return 是否成功
|
||||
*/
|
||||
Boolean appealApplySubmit(TpAppealApplyRequest request);
|
||||
|
||||
/**
|
||||
* 复议申请单详情
|
||||
* @param applyId 复议申请单id
|
||||
* @return 复议申请单详情VO
|
||||
*/
|
||||
TpAppealFormDetailVO appealDetail(Long applyId);
|
||||
|
||||
/**
|
||||
* 复议申请单分页查询
|
||||
* @param request 申请单查询Request
|
||||
* @return 复审列表VO列表
|
||||
*/
|
||||
PageInfo<TpAppealListVO> appealPage(TpApplyQueryRequest request);
|
||||
|
||||
/**
|
||||
* 复议申请审批
|
||||
* @param request 申请单审批Request
|
||||
* @return 是否成功
|
||||
*/
|
||||
Boolean appealAudit(TpApplyAuditRequest request);
|
||||
}
|
||||
|
||||
@@ -6,10 +6,7 @@ import com.cool.store.context.CurrentUserHolder;
|
||||
import com.cool.store.context.LoginUserInfo;
|
||||
import com.cool.store.dao.EnterpriseUserDAO;
|
||||
import com.cool.store.dao.StoreDao;
|
||||
import com.cool.store.dao.tp.TpApplyFormDAO;
|
||||
import com.cool.store.dao.tp.TpAuditRecordDAO;
|
||||
import com.cool.store.dao.tp.TpRuleDAO;
|
||||
import com.cool.store.dao.tp.TpScoreJournalDAO;
|
||||
import com.cool.store.dao.tp.*;
|
||||
import com.cool.store.entity.StoreDO;
|
||||
import com.cool.store.entity.tp.TpApplyFormDO;
|
||||
import com.cool.store.entity.tp.TpRuleDO;
|
||||
@@ -19,6 +16,7 @@ import com.cool.store.enums.tp.TpFormStatusEnum;
|
||||
import com.cool.store.enums.tp.TpFormTypeEnum;
|
||||
import com.cool.store.enums.tp.TpPayStatusEnum;
|
||||
import com.cool.store.exception.ServiceException;
|
||||
import com.cool.store.request.tp.TpAppealApplyRequest;
|
||||
import com.cool.store.request.tp.TpApplyAuditRequest;
|
||||
import com.cool.store.request.tp.TpApplyQueryRequest;
|
||||
import com.cool.store.request.tp.TpApplyRequest;
|
||||
@@ -82,7 +80,6 @@ public class TpApplyServiceImpl implements TpApplyService {
|
||||
if (isInsert) {
|
||||
formDO.setApplyNo(TpHelper.generateApplyNo(TpFormTypeEnum.REWARD.getType()));
|
||||
formDO.setType(TpFormTypeEnum.REWARD.getType());
|
||||
formDO.setStatus(TpFormStatusEnum.PENDING.getStatus());
|
||||
formDO.setPayStatus(TpPayStatusEnum.NO_NEED_PAY.getStatus());
|
||||
}
|
||||
fillRuleFields(formDO);
|
||||
@@ -96,7 +93,7 @@ public class TpApplyServiceImpl implements TpApplyService {
|
||||
|
||||
@Override
|
||||
public TpRewardApplyDetailVO rewardDetail(Long applyId) {
|
||||
TpApplyFormDO formDO = tpApplyFormDAO.getById(applyId);
|
||||
TpApplyFormDO formDO = tpApplyFormDAO.getEffectiveById(applyId);
|
||||
if (Objects.nonNull(formDO)) {
|
||||
TpRewardApplyDetailVO vo = BeanUtil.toBean(formDO, TpRewardApplyDetailVO.class);
|
||||
dictService.fillDictField(vo);
|
||||
@@ -130,11 +127,8 @@ public class TpApplyServiceImpl implements TpApplyService {
|
||||
throw new ServiceException(ErrorCodeEnum.TP_EXISTS_PENDING_APPLY);
|
||||
}
|
||||
boolean isInsert = Objects.isNull(request.getId());
|
||||
formDO.setApplyNo(isInsert ? TpHelper.generateApplyNo(formDO.getType()) : null);
|
||||
fillRuleFields(formDO);
|
||||
if (isInsert) {
|
||||
formDO.setApplyNo(TpHelper.generateApplyNo(formDO.getType()));
|
||||
formDO.setStatus(TpFormStatusEnum.PENDING.getStatus());
|
||||
}
|
||||
tpApplyFormDAO.insertOrUpdate(formDO);
|
||||
// 第一次提交后添加审批记录
|
||||
if (isInsert && !isDraft) {
|
||||
@@ -145,7 +139,7 @@ public class TpApplyServiceImpl implements TpApplyService {
|
||||
|
||||
@Override
|
||||
public TpPenaltyApplyDetailVO penaltyDetail(Long applyId) {
|
||||
TpApplyFormDO formDO = tpApplyFormDAO.getById(applyId);
|
||||
TpApplyFormDO formDO = tpApplyFormDAO.getEffectiveById(applyId);
|
||||
if (Objects.nonNull(formDO)) {
|
||||
TpPenaltyApplyDetailVO vo = BeanUtil.toBean(formDO, TpPenaltyApplyDetailVO.class);
|
||||
dictService.fillDictField(vo);
|
||||
@@ -161,7 +155,6 @@ public class TpApplyServiceImpl implements TpApplyService {
|
||||
|
||||
@Override
|
||||
public PageInfo<TpPenaltyApplyListVO> penaltyPage(TpApplyQueryRequest request) {
|
||||
request.setIsPenalty(true);
|
||||
PageHelper.startPage(request.getPageNum(), request.getPageSize());
|
||||
List<TpApplyFormDO> list = tpApplyFormDAO.getEffectiveList(request);
|
||||
PageInfo<TpApplyFormDO> page = new PageInfo<>(list);
|
||||
@@ -173,8 +166,8 @@ public class TpApplyServiceImpl implements TpApplyService {
|
||||
@Override
|
||||
@Transactional
|
||||
public Boolean rewardAudit(TpApplyAuditRequest request) {
|
||||
TpApplyFormDO formDO = tpApplyFormDAO.getById(request.getApplyId());
|
||||
if (Objects.isNull(formDO)) {
|
||||
TpApplyFormDO formDO = tpApplyFormDAO.getEffectiveById(request.getApplyId());
|
||||
if (Objects.isNull(formDO) || !TpFormTypeEnum.REWARD.getType().equals(formDO.getType())) {
|
||||
throw new ServiceException(ErrorCodeEnum.TP_NOT_EXIST_APPLY_FORM);
|
||||
}
|
||||
if (!TpFormStatusEnum.PENDING.getStatus().equals(formDO.getStatus())) {
|
||||
@@ -183,6 +176,100 @@ public class TpApplyServiceImpl implements TpApplyService {
|
||||
if (tpApplyFormDAO.existPassRewardForm(formDO.getStoreId(), formDO.getRuleId())) {
|
||||
throw new ServiceException(ErrorCodeEnum.TP_MONTH_EXIST_APPLY);
|
||||
}
|
||||
auditCommon(request, formDO);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public Boolean penaltyAudit(TpApplyAuditRequest request) {
|
||||
TpApplyFormDO formDO = tpApplyFormDAO.getEffectiveById(request.getApplyId());
|
||||
if (Objects.isNull(formDO) || !TpFormTypeEnum.isPenalty(formDO.getType())) {
|
||||
throw new ServiceException(ErrorCodeEnum.TP_NOT_EXIST_APPLY_FORM);
|
||||
}
|
||||
if (!TpFormStatusEnum.PENDING.getStatus().equals(formDO.getStatus())) {
|
||||
throw new ServiceException(ErrorCodeEnum.TP_APPLY_AUDIT_COMPLETED);
|
||||
}
|
||||
auditCommon(request, formDO);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean appealApplySubmit(TpAppealApplyRequest request) {
|
||||
TpApplyFormDO formDO = BeanUtil.toBean(request, TpApplyFormDO.class);
|
||||
boolean isDraft = CommonConstants.INDEX_ONE.equals(request.getIsDraft());
|
||||
TpApplyFormDO punishFormDO = tpApplyFormDAO.getByPenaltyId(request.getPenaltyId());
|
||||
if (Objects.nonNull(punishFormDO) && !isDraft) {
|
||||
if (TpFormStatusEnum.PENDING.getStatus().equals(punishFormDO.getStatus())) {
|
||||
throw new ServiceException(ErrorCodeEnum.TP_EXISTS_PENDING_APPLY);
|
||||
}
|
||||
if (TpFormStatusEnum.PASS.getStatus().equals(punishFormDO.getStatus())) {
|
||||
throw new ServiceException(ErrorCodeEnum.TP_PENALTY_APPLY_APPEAL_COMPLETED);
|
||||
}
|
||||
}
|
||||
boolean isInsert = Objects.isNull(request.getId());
|
||||
formDO.setApplyNo(isInsert ? TpHelper.generateAppealNo() : null);
|
||||
formDO.setRuleId(punishFormDO.getRuleId());
|
||||
formDO.setType(TpFormTypeEnum.APPEAL.getType());
|
||||
fillRuleFields(formDO);
|
||||
tpApplyFormDAO.insertOrUpdate(formDO);
|
||||
// 第一次提交后添加审批记录
|
||||
if (isInsert && !isDraft) {
|
||||
tpAuditRecordDAO.addRecord(formDO.getId(), TpFormTypeEnum.APPEAL.getType(), request.getApplyUserId(), request.getApplyUserName());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TpAppealFormDetailVO appealDetail(Long applyId) {
|
||||
TpApplyFormDO formDO = tpApplyFormDAO.getEffectiveById(applyId);
|
||||
if (Objects.nonNull(formDO)) {
|
||||
TpAppealFormDetailVO vo = BeanUtil.toBean(formDO, TpAppealFormDetailVO.class);
|
||||
dictService.fillDictField(vo);
|
||||
StoreDO storeDO = storeDao.getByStoreId(vo.getStoreId());
|
||||
if (Objects.nonNull(storeDO)) {
|
||||
vo.setStoreNum(storeDO.getStoreNum());
|
||||
vo.setStoreName(storeDO.getStoreName());
|
||||
}
|
||||
vo.setPenaltyDetail(penaltyDetail(vo.getPenaltyId()));
|
||||
return vo;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageInfo<TpAppealListVO> appealPage(TpApplyQueryRequest request) {
|
||||
PageHelper.startPage(request.getPageNum(), request.getPageSize());
|
||||
List<TpApplyFormDO> list = tpApplyFormDAO.getEffectiveList(request);
|
||||
PageInfo<TpApplyFormDO> page = new PageInfo<>(list);
|
||||
PageInfo<TpAppealListVO> newPage = BeanUtil.toPage(page, TpAppealListVO.class);
|
||||
List<Long> penaltyIds = CollStreamUtil.toList(newPage.getList(), TpAppealListVO::getPenaltyId);
|
||||
List<TpApplyFormDO> penaltyList = tpApplyFormDAO.getByIds(penaltyIds);
|
||||
Map<Long, String> penaltyNoMap = CollStreamUtil.toMap(penaltyList, TpApplyFormDO::getId, TpApplyFormDO::getApplyNo);
|
||||
newPage.getList().forEach(vo -> {
|
||||
vo.setPenaltyNo(penaltyNoMap.get(vo.getPenaltyId()));
|
||||
});
|
||||
fillListFields(newPage.getList());
|
||||
return newPage;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean appealAudit(TpApplyAuditRequest request) {
|
||||
TpApplyFormDO formDO = tpApplyFormDAO.getEffectiveById(request.getApplyId());
|
||||
if (Objects.isNull(formDO) || !TpFormTypeEnum.APPEAL.getType().equals(formDO.getType())) {
|
||||
throw new ServiceException(ErrorCodeEnum.TP_NOT_EXIST_APPLY_FORM);
|
||||
}
|
||||
if (!TpFormStatusEnum.PENDING.getStatus().equals(formDO.getStatus())) {
|
||||
throw new ServiceException(ErrorCodeEnum.TP_APPLY_AUDIT_COMPLETED);
|
||||
}
|
||||
auditCommon(request, formDO);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 审批通用方法
|
||||
*/
|
||||
private void auditCommon(TpApplyAuditRequest request, TpApplyFormDO formDO) {
|
||||
Date now = new Date();
|
||||
// 修改申请单审批数据
|
||||
formDO.setStatus(CommonConstants.INDEX_ONE.equals(request.getAuditStatus()) ? TpFormStatusEnum.PASS.getStatus() : TpFormStatusEnum.REJECT.getStatus());
|
||||
@@ -190,15 +277,23 @@ public class TpApplyServiceImpl implements TpApplyService {
|
||||
tpApplyFormDAO.updateSelective(formDO);
|
||||
LoginUserInfo user = CurrentUserHolder.getUser();
|
||||
// 处理审批记录
|
||||
tpAuditRecordDAO.auditPendingRecordByApplyId(request.getApplyId(), request.getApplyType(), user.getUserId(), user.getName(), request.getAuditStatus(), request.getRemark(), now);
|
||||
// 审批通过后门店积分变动
|
||||
scoreChange(formDO);
|
||||
return null;
|
||||
tpAuditRecordDAO.auditPendingRecordByApplyId(request.getApplyId(), formDO.getType(), user.getUserId(), user.getName(), request.getAuditStatus(), request.getRemark(), now);
|
||||
if (TpFormTypeEnum.APPEAL.getType().equals(formDO.getType())) {
|
||||
appealPassResolve(formDO);
|
||||
} else {
|
||||
// 审批通过后门店积分变动
|
||||
scoreChange(formDO);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean penaltyAudit(TpApplyAuditRequest request) {
|
||||
return null;
|
||||
/**
|
||||
* 复议申请通过时处罚单作废
|
||||
*/
|
||||
private void appealPassResolve(TpApplyFormDO formDO) {
|
||||
if (TpFormStatusEnum.PASS.getStatus().equals(formDO.getStatus())) {
|
||||
// 申诉通过后,处罚单失效
|
||||
tpApplyFormDAO.cancelApply(formDO.getPenaltyId());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -248,11 +343,18 @@ public class TpApplyServiceImpl implements TpApplyService {
|
||||
formDO.setProjectCategory(ruleDO.getProjectCategory());
|
||||
formDO.setProjectName(ruleDO.getProjectName());
|
||||
formDO.setIsFull(ruleDO.getIsFull());
|
||||
formDO.setScore(ruleDO.getScore());
|
||||
formDO.setAmount(ruleDO.getAmount());
|
||||
formDO.setAppealEndDate(LocalDate.now().plusDays(ruleDO.getAppealDeadline()));
|
||||
if (Objects.isNull(formDO.getScore())) {
|
||||
formDO.setScore(ruleDO.getScore());
|
||||
}
|
||||
if (Objects.isNull(formDO.getAmount())) {
|
||||
formDO.setAmount(ruleDO.getAmount());
|
||||
}
|
||||
// 扣分
|
||||
if (CommonConstants.INDEX_ZERO.equals(ruleDO.getType())) {
|
||||
// 如果是扣分规则,判断警告次数
|
||||
if (Objects.isNull(formDO.getAppealEndDate())) {
|
||||
formDO.setAppealEndDate(LocalDate.now().plusDays(ruleDO.getAppealDeadline()));
|
||||
}
|
||||
// 超过警告次数的为处罚单,否则警告单
|
||||
int penaltyCount = tpApplyFormDAO.getPenaltyCount(formDO.getStoreId(), formDO.getRuleId());
|
||||
formDO.setType(ruleDO.getWarningLimit().compareTo(penaltyCount) <= 0 ? TpFormTypeEnum.PENALTY.getType() : TpFormTypeEnum.WARNING.getType());
|
||||
// 是否缴费
|
||||
|
||||
Reference in New Issue
Block a user