fix:十二分制-申请单
This commit is contained in:
@@ -325,6 +325,7 @@ public enum ErrorCodeEnum {
|
||||
TP_NOT_EXIST_APPLY_FORM(1810004, "不存在申请单", null),
|
||||
TP_APPLY_AUDIT_COMPLETED(1810005, "该申请单已审批", null),
|
||||
TP_EXISTS_PENDING_APPLY(1810006, "存在待审批的申请单", null),
|
||||
TP_PENALTY_APPLY_APPEAL_COMPLETED(1810007, "该处罚单已完成复议", null),
|
||||
;
|
||||
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ public enum TpFormTypeEnum {
|
||||
REWARD(0, "加分申请单"),
|
||||
WARNING(1, "警告书"),
|
||||
PENALTY(2, "处罚书"),
|
||||
APPEAL(3, "复议申请单"),
|
||||
;
|
||||
|
||||
private final Integer type;
|
||||
@@ -41,4 +42,11 @@ public enum TpFormTypeEnum {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 是惩处单
|
||||
*/
|
||||
public static boolean isPenalty(Integer type) {
|
||||
return PENALTY.getType().equals(type) || WARNING.getType().equals(type);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,6 +43,13 @@ public class TpHelper {
|
||||
return (TpFormTypeEnum.REWARD.equals(type) ? "JF" : TpFormTypeEnum.PENALTY.equals(type) ? "CF" : "JG") + generateCode();
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成复议申请单号
|
||||
*/
|
||||
public static String generateAppealNo() {
|
||||
return "FY" + generateCode();
|
||||
}
|
||||
|
||||
private static String generateCode() {
|
||||
return LocalDateTime.now().format(dtf) + ((int) (Math.random() * 900) + 100);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.cool.store.dao.tp;
|
||||
|
||||
import com.alibaba.excel.util.CollectionUtils;
|
||||
import com.cool.store.entity.tp.TpApplyFormDO;
|
||||
import com.cool.store.enums.tp.TpFormStatusEnum;
|
||||
import com.cool.store.enums.tp.TpFormTypeEnum;
|
||||
@@ -11,6 +12,7 @@ import tk.mybatis.mapper.entity.Example;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
@@ -73,6 +75,13 @@ public class TpApplyFormDAO {
|
||||
return tpApplyFormMapper.selectByPrimaryKey(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据id查询有效申请单
|
||||
*/
|
||||
public TpApplyFormDO getEffectiveById(Long id) {
|
||||
return tpApplyFormMapper.selectOne(TpApplyFormDO.builder().id(id).deleted(0).build());
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询有效记录列表
|
||||
* @param request 申请单查询Request
|
||||
@@ -118,4 +127,35 @@ public class TpApplyFormDAO {
|
||||
}
|
||||
return tpApplyFormMapper.selectCountByExample(example) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据处罚单id查询申请单
|
||||
* @param penaltyId 处罚单id
|
||||
* @return 申请单
|
||||
*/
|
||||
public TpApplyFormDO getByPenaltyId(Long penaltyId) {
|
||||
return tpApplyFormMapper.selectOne(TpApplyFormDO.builder().penaltyId(penaltyId).deleted(0).build());
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据id列表查询
|
||||
*/
|
||||
public List<TpApplyFormDO> getByIds(List<Long> ids) {
|
||||
if (CollectionUtils.isEmpty(ids)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
Example example = new Example(TpApplyFormDO.class);
|
||||
example.createCriteria().andIn("id", ids);
|
||||
return tpApplyFormMapper.selectByExample(example);
|
||||
}
|
||||
|
||||
/**
|
||||
* 申请单作废
|
||||
* @param applyId 申请单id
|
||||
*/
|
||||
public void cancelApply(Long applyId) {
|
||||
Example example = new Example(TpApplyFormDO.class);
|
||||
example.createCriteria().andEqualTo("id", applyId).andEqualTo("deleted", 0);
|
||||
tpApplyFormMapper.updateByExampleSelective(TpApplyFormDO.builder().status(TpFormStatusEnum.CANCEL.getStatus()).build(), example);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
package com.cool.store.mapper.tp;
|
||||
|
||||
import com.cool.store.entity.tp.TpAppealFormDO;
|
||||
import tk.mybatis.mapper.common.Mapper;
|
||||
|
||||
public interface TpAppealFormMapper extends Mapper<TpAppealFormDO> {
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.cool.store.mapper.tp.TpAppealFormMapper">
|
||||
<resultMap id="BaseResultMap" type="com.cool.store.entity.tp.TpAppealFormDO">
|
||||
<!--
|
||||
WARNING - @mbg.generated
|
||||
-->
|
||||
<id column="id" jdbcType="BIGINT" property="id" />
|
||||
<result column="apply_no" jdbcType="VARCHAR" property="applyNo" />
|
||||
<result column="punish_id" jdbcType="BIGINT" property="punishId" />
|
||||
<result column="store_id" jdbcType="VARCHAR" property="storeId" />
|
||||
<result column="applicant_name" jdbcType="VARCHAR" property="applicantName" />
|
||||
<result column="phone" jdbcType="VARCHAR" property="phone" />
|
||||
<result column="appeal_reason" jdbcType="VARCHAR" property="appealReason" />
|
||||
<result column="detail_reason" jdbcType="VARCHAR" property="detailReason" />
|
||||
<result column="status" jdbcType="BIT" property="status" />
|
||||
<result column="source" jdbcType="BIT" property="source" />
|
||||
<result column="approve_user_id" jdbcType="VARCHAR" property="approveUserId" />
|
||||
<result column="approve_time" jdbcType="TIMESTAMP" property="approveTime" />
|
||||
<result column="is_draft" jdbcType="TINYINT" property="isDraft" />
|
||||
<result column="create_user_id" jdbcType="VARCHAR" property="createUserId" />
|
||||
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
|
||||
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
|
||||
<result column="deleted" jdbcType="BIT" property="deleted" />
|
||||
<result column="proof_urls" jdbcType="LONGVARCHAR" property="proofUrls" />
|
||||
</resultMap>
|
||||
</mapper>
|
||||
@@ -31,12 +31,18 @@
|
||||
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
|
||||
<result column="deleted" jdbcType="BIT" property="deleted" />
|
||||
<result column="proof_urls" jdbcType="LONGVARCHAR" property="proofUrls" />
|
||||
<result column="penalty_id" jdbcType="BIGINT" property="penaltyId" />
|
||||
<result column="applicant_name" jdbcType="VARCHAR" property="applicantName" />
|
||||
<result column="phone" jdbcType="VARCHAR" property="phone" />
|
||||
<result column="appeal_reason" jdbcType="VARCHAR" property="appealReason" />
|
||||
<result column="appeal_detail_reason" jdbcType="VARCHAR" property="appealDetailReason" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="Base_Column_List">
|
||||
id, type, apply_no, store_id, rule_id, rule_no, problem_classification, project_category, project_name,
|
||||
is_full, score, remark, amount, appeal_end_date, status, pay_status, is_draft, source, apply_user_id,
|
||||
apply_user_name, approve_user_id, approve_time, create_time, update_time, deleted, proof_urls
|
||||
apply_user_name, approve_user_id, approve_time, create_time, update_time, deleted, proof_urls,
|
||||
penalty_id, applicant_name, phone, appeal_reason, appeal_detail_reason
|
||||
</sql>
|
||||
|
||||
<select id="getEffectiveList" parameterType="com.cool.store.request.tp.TpApplyQueryRequest" resultMap="BaseResultMap">
|
||||
@@ -74,6 +80,9 @@
|
||||
AND (b.store_name LIKE CONCAT('%', #{storeNameOrNum}, '%')
|
||||
OR b.store_num LIKE CONCAT('%', #{storeNameOrNum}, '%')
|
||||
</if>
|
||||
<if test="appealReason != null and appealReason != ''">
|
||||
AND b.appeal_reason LIKE CONCAT('%', #{appealReason}, '%')
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
|
||||
@@ -1,123 +0,0 @@
|
||||
package com.cool.store.entity.tp;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
import javax.persistence.*;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 十二分制-复议申请单
|
||||
* </p>
|
||||
*
|
||||
* @author wangff
|
||||
* @since 2025/11/4
|
||||
*/
|
||||
@Table(name = "zxjp_tp_appeal_form")
|
||||
@Data
|
||||
public class TpAppealFormDO {
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 申请单号
|
||||
*/
|
||||
@Column(name = "apply_no")
|
||||
private String applyNo;
|
||||
|
||||
/**
|
||||
* 处罚单id
|
||||
*/
|
||||
@Column(name = "punish_id")
|
||||
private Long punishId;
|
||||
|
||||
/**
|
||||
* 门店id
|
||||
*/
|
||||
@Column(name = "store_id")
|
||||
private String storeId;
|
||||
|
||||
/**
|
||||
* 申请人姓名
|
||||
*/
|
||||
@Column(name = "applicant_name")
|
||||
private String applicantName;
|
||||
|
||||
/**
|
||||
* 联系电话
|
||||
*/
|
||||
private String phone;
|
||||
|
||||
/**
|
||||
* 复议理由
|
||||
*/
|
||||
@Column(name = "appeal_reason")
|
||||
private String appealReason;
|
||||
|
||||
/**
|
||||
* 详细理由
|
||||
*/
|
||||
@Column(name = "detail_reason")
|
||||
private String detailReason;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 来源,0非小程序 1小程序
|
||||
*/
|
||||
private Integer source;
|
||||
|
||||
/**
|
||||
* 审批人id
|
||||
*/
|
||||
@Column(name = "approve_user_id")
|
||||
private String approveUserId;
|
||||
|
||||
/**
|
||||
* 审批时间
|
||||
*/
|
||||
@Column(name = "approve_time")
|
||||
private Date approveTime;
|
||||
|
||||
/**
|
||||
* 是否为草稿 0否 1是
|
||||
*/
|
||||
@Column(name = "is_draft")
|
||||
private Integer isDraft;
|
||||
|
||||
/**
|
||||
* 创建人id
|
||||
*/
|
||||
@Column(name = "create_user_id")
|
||||
private String createUserId;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@Column(name = "create_time")
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@Column(name = "update_time")
|
||||
private Date updateTime;
|
||||
|
||||
/**
|
||||
* 是否删除 0否1是
|
||||
*/
|
||||
private Integer deleted;
|
||||
|
||||
/**
|
||||
* 证明图片列表
|
||||
*/
|
||||
@Column(name = "proof_urls")
|
||||
private String proofUrls;
|
||||
}
|
||||
@@ -129,13 +129,13 @@ public class TpApplyFormDO {
|
||||
private Integer source;
|
||||
|
||||
/**
|
||||
* 申请人id
|
||||
* 申请人(创建人)id
|
||||
*/
|
||||
@Column(name = "apply_user_id")
|
||||
private String applyUserId;
|
||||
|
||||
/**
|
||||
* 申请人名称
|
||||
* 申请人(创建人)名称
|
||||
*/
|
||||
@Column(name = "apply_user_name")
|
||||
private String applyUserName;
|
||||
@@ -174,4 +174,34 @@ public class TpApplyFormDO {
|
||||
*/
|
||||
@Column(name = "proof_urls")
|
||||
private String proofUrls;
|
||||
|
||||
/**
|
||||
* 处罚单id
|
||||
*/
|
||||
@Column(name = "penalty_id")
|
||||
private Long penaltyId;
|
||||
|
||||
/**
|
||||
* 申请人姓名(复议申请单)
|
||||
*/
|
||||
@Column(name = "applicant_name")
|
||||
private String applicantName;
|
||||
|
||||
/**
|
||||
* 联系电话
|
||||
*/
|
||||
@Column(name = "phone")
|
||||
private String phone;
|
||||
|
||||
/**
|
||||
* 复议理由
|
||||
*/
|
||||
@Column(name = "appeal_reason")
|
||||
private String appealReason;
|
||||
|
||||
/**
|
||||
* 复议详细理由
|
||||
*/
|
||||
@Column(name = "appeal_detail_reason")
|
||||
private String appealDetailReason;
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
package com.cool.store.request.tp;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 复议申请Request
|
||||
* </p>
|
||||
*
|
||||
* @author wangff
|
||||
* @since 2025/11/10
|
||||
*/
|
||||
@Data
|
||||
public class TpAppealApplyRequest {
|
||||
@ApiModelProperty("id")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("门店id")
|
||||
@NotBlank(message = "门店id不能为空")
|
||||
private String storeId;
|
||||
|
||||
@ApiModelProperty("是否为草稿 0否 1是")
|
||||
@NotNull(message = "是否为草稿不能为空")
|
||||
private Integer isDraft;
|
||||
|
||||
@ApiModelProperty(value = "来源,0非小程序 1小程序", hidden = true)
|
||||
private Integer source;
|
||||
|
||||
@ApiModelProperty(value = "申请人(创建人)id", hidden = true)
|
||||
private String applyUserId;
|
||||
|
||||
@ApiModelProperty(value = "申请人(创建人)名称", hidden = true)
|
||||
private String applyUserName;
|
||||
|
||||
@ApiModelProperty("证明图片列表")
|
||||
@NotEmpty(message = "证明图片列表不能为空")
|
||||
private String proofUrls;
|
||||
|
||||
@ApiModelProperty("处罚单id")
|
||||
@NotNull(message = "处罚单id不能为空")
|
||||
private Long penaltyId;
|
||||
|
||||
@ApiModelProperty("申请人姓名")
|
||||
@NotBlank(message = "申请人姓名不能为空")
|
||||
private String applicantName;
|
||||
|
||||
@ApiModelProperty("联系电话")
|
||||
@NotBlank(message = "联系电话不能为空")
|
||||
private String phone;
|
||||
|
||||
@ApiModelProperty("复议理由")
|
||||
@NotBlank(message = "复议理由不能为空")
|
||||
private String appealReason;
|
||||
|
||||
@ApiModelProperty("复议详细理由")
|
||||
@NotBlank(message = "复议详细理由不能为空")
|
||||
private String appealDetailReason;
|
||||
}
|
||||
@@ -19,9 +19,6 @@ public class TpApplyAuditRequest {
|
||||
@NotNull(message = "申请单id不能为空")
|
||||
private Long applyId;
|
||||
|
||||
@ApiModelProperty(value = "单据类型,0加分单 1警告书 2处罚书", hidden = true)
|
||||
private Integer applyType;
|
||||
|
||||
@ApiModelProperty("审批状态 1通过 2拒绝")
|
||||
@NotNull(message = "审批状态不能为空")
|
||||
private Integer auditStatus;
|
||||
|
||||
@@ -42,4 +42,7 @@ public class TpApplyQueryRequest extends PageBasicInfo {
|
||||
|
||||
@ApiModelProperty(value = "是惩处单", hidden = true)
|
||||
private Boolean isPenalty;
|
||||
|
||||
@ApiModelProperty("复议理由")
|
||||
private String appealReason;
|
||||
}
|
||||
|
||||
@@ -5,6 +5,8 @@ import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -37,13 +39,22 @@ public class TpApplyRequest {
|
||||
@ApiModelProperty(value = "来源,0非小程序 1小程序", hidden = true)
|
||||
private Integer source;
|
||||
|
||||
@ApiModelProperty(value = "申请人id", hidden = true)
|
||||
@ApiModelProperty(value = "申请人(创建人)id", hidden = true)
|
||||
private String applyUserId;
|
||||
|
||||
@ApiModelProperty(value = "申请人名称", hidden = true)
|
||||
@ApiModelProperty(value = "申请人(创建人)名称", hidden = true)
|
||||
private String applyUserName;
|
||||
|
||||
@ApiModelProperty("证明图片列表,逗号隔开")
|
||||
@NotBlank(message = "证明图片列表不能为空")
|
||||
private String proofUrls;
|
||||
|
||||
@ApiModelProperty("分值")
|
||||
private BigDecimal score;
|
||||
|
||||
@ApiModelProperty("金额")
|
||||
private BigDecimal amount;
|
||||
|
||||
@ApiModelProperty("申请复议截止日期,yyyy-MM-dd")
|
||||
private LocalDate appealEndDate;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
package com.cool.store.vo.tp;
|
||||
|
||||
import com.cool.store.annotation.DictField;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 复议申请单详情VO
|
||||
* </p>
|
||||
*
|
||||
* @author wangff
|
||||
* @since 2025/11/10
|
||||
*/
|
||||
@Data
|
||||
public class TpAppealFormDetailVO {
|
||||
@ApiModelProperty("id")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("门店id")
|
||||
private String storeId;
|
||||
|
||||
@ApiModelProperty("门店编码")
|
||||
private String storeNum;
|
||||
|
||||
@ApiModelProperty("门店名称")
|
||||
private String storeName;
|
||||
|
||||
@ApiModelProperty("是否为草稿 0否 1是")
|
||||
private Integer isDraft;
|
||||
|
||||
@ApiModelProperty("处罚单id")
|
||||
private Long penaltyId;
|
||||
|
||||
@ApiModelProperty("处罚单号")
|
||||
private Long penaltyNo;
|
||||
|
||||
@ApiModelProperty("证明图片列表")
|
||||
private String proofUrls;
|
||||
|
||||
@ApiModelProperty("申请人姓名")
|
||||
private String applicantName;
|
||||
|
||||
@ApiModelProperty("联系电话")
|
||||
private String phone;
|
||||
|
||||
@ApiModelProperty("复议理由")
|
||||
private String appealReason;
|
||||
|
||||
@ApiModelProperty("复议理由名称")
|
||||
@DictField
|
||||
private String appealReasonName;
|
||||
|
||||
@ApiModelProperty("复议详细理由")
|
||||
private String appealDetailReason;
|
||||
|
||||
@ApiModelProperty("处罚单")
|
||||
private TpPenaltyApplyDetailVO penaltyDetail;
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package com.cool.store.vo.tp;
|
||||
|
||||
import com.cool.store.annotation.DictField;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 复审列表VO
|
||||
* </p>
|
||||
*
|
||||
* @author wangff
|
||||
* @since 2025/11/10
|
||||
*/
|
||||
@Data
|
||||
public class TpAppealListVO extends TpApplyListBaseVO {
|
||||
@ApiModelProperty("处罚单id")
|
||||
private Long penaltyId;
|
||||
|
||||
@ApiModelProperty("处罚单号")
|
||||
private String penaltyNo;
|
||||
|
||||
@ApiModelProperty("申请人姓名")
|
||||
private String applicantName;
|
||||
|
||||
@ApiModelProperty("联系电话")
|
||||
private String phone;
|
||||
|
||||
@ApiModelProperty("复议理由")
|
||||
private String appealReason;
|
||||
|
||||
@ApiModelProperty("复议理由名称")
|
||||
@DictField
|
||||
private String appealReasonName;
|
||||
|
||||
@ApiModelProperty("复议详细理由")
|
||||
private String appealDetailReason;
|
||||
}
|
||||
@@ -67,7 +67,7 @@ public class TpApplyListBaseVO {
|
||||
@ApiModelProperty("备注")
|
||||
private String remark;
|
||||
|
||||
@ApiModelProperty("申请人名称")
|
||||
@ApiModelProperty("申请人(创建人)名称")
|
||||
private String applyUserName;
|
||||
|
||||
@ApiModelProperty("申请时间")
|
||||
|
||||
@@ -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());
|
||||
// 是否缴费
|
||||
|
||||
@@ -3,13 +3,13 @@ package com.cool.store.controller.webb;
|
||||
import com.cool.store.context.CurrentUserHolder;
|
||||
import com.cool.store.context.LoginUserInfo;
|
||||
import com.cool.store.enums.tp.TpFormTypeEnum;
|
||||
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.response.ResponseResult;
|
||||
import com.cool.store.service.tp.TpApplyService;
|
||||
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;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
@@ -28,7 +28,7 @@ import javax.validation.constraints.NotNull;
|
||||
* @author wangff
|
||||
* @since 2025/11/6
|
||||
*/
|
||||
@Api(tags = "十二分制-奖惩规则")
|
||||
@Api(tags = "十二分制-申请单")
|
||||
@RestController
|
||||
@RequestMapping("/pc/tp/apply")
|
||||
@RequiredArgsConstructor
|
||||
@@ -62,7 +62,67 @@ public class TpApplyController {
|
||||
@ApiOperation("加分申请审批")
|
||||
@PostMapping("/rewardAudit")
|
||||
public ResponseResult<Boolean> rewardAudit(@RequestBody @Validated TpApplyAuditRequest request) {
|
||||
request.setApplyType(TpFormTypeEnum.REWARD.getType());
|
||||
return ResponseResult.success(tpApplyService.rewardAudit(request));
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation("惩处申请提交or保存")
|
||||
@PostMapping("/penaltyApplySubmit")
|
||||
public ResponseResult<Boolean> penaltyApplySubmit(@RequestBody @Validated TpApplyRequest request) {
|
||||
LoginUserInfo user = CurrentUserHolder.getUser();
|
||||
request.setSource(0);
|
||||
request.setApplyUserId(user.getUserId());
|
||||
request.setApplyUserName(user.getName());
|
||||
return ResponseResult.success(tpApplyService.penaltyApplySubmit(request));
|
||||
}
|
||||
|
||||
@ApiOperation("惩处申请单详情")
|
||||
@GetMapping("/penaltyDetail")
|
||||
@ApiImplicitParam(name = "applyId", value = "惩处申请单id", required = true, dataType = "Long", paramType = "query")
|
||||
public ResponseResult<TpPenaltyApplyDetailVO> penaltyDetail(@NotNull(message = "惩处申请单id不能为空") Long applyId) {
|
||||
return ResponseResult.success(tpApplyService.penaltyDetail(applyId));
|
||||
}
|
||||
|
||||
@ApiOperation("惩处申请单分页查询")
|
||||
@GetMapping("/penaltyPage")
|
||||
public ResponseResult<PageInfo<TpPenaltyApplyListVO> > penaltyPage(TpApplyQueryRequest request) {
|
||||
request.setIsPenalty(true);
|
||||
return ResponseResult.success(tpApplyService.penaltyPage(request));
|
||||
}
|
||||
|
||||
@ApiOperation("惩处申请审批")
|
||||
@PostMapping("/penaltyAudit")
|
||||
public ResponseResult<Boolean> penaltyAudit(@RequestBody @Validated TpApplyAuditRequest request) {
|
||||
return ResponseResult.success(tpApplyService.penaltyAudit(request));
|
||||
}
|
||||
|
||||
@ApiOperation("复议申请提交or保存")
|
||||
@PostMapping("/appealApplySubmit")
|
||||
public ResponseResult<Boolean> appealApplySubmit(@RequestBody @Validated TpAppealApplyRequest request) {
|
||||
LoginUserInfo user = CurrentUserHolder.getUser();
|
||||
request.setSource(0);
|
||||
request.setApplyUserId(user.getUserId());
|
||||
request.setApplyUserName(user.getName());
|
||||
return ResponseResult.success(tpApplyService.appealApplySubmit(request));
|
||||
}
|
||||
|
||||
@ApiOperation("复议申请单详情")
|
||||
@GetMapping("/appealDetail")
|
||||
@ApiImplicitParam(name = "applyId", value = "复议申请单id", required = true, dataType = "Long", paramType = "query")
|
||||
public ResponseResult<TpAppealFormDetailVO> appealDetail(@NotNull(message = "复议申请单id不能为空") Long applyId) {
|
||||
return ResponseResult.success(tpApplyService.appealDetail(applyId));
|
||||
}
|
||||
|
||||
@ApiOperation("复议申请单分页查询")
|
||||
@GetMapping("/appealPage")
|
||||
public ResponseResult<PageInfo<TpAppealListVO> > appealPage(TpApplyQueryRequest request) {
|
||||
request.setType(TpFormTypeEnum.APPEAL.getType());
|
||||
return ResponseResult.success(tpApplyService.appealPage(request));
|
||||
}
|
||||
|
||||
@ApiOperation("复议申请审批")
|
||||
@PostMapping("/appealAudit")
|
||||
public ResponseResult<Boolean> appealAudit(@RequestBody @Validated TpApplyAuditRequest request) {
|
||||
return ResponseResult.success(tpApplyService.appealAudit(request));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user