From 0da8efbeaa123e6a912665527ab7d2cbb1b8a05f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E9=9D=9E=E5=87=A1?= Date: Tue, 3 Mar 2026 10:48:21 +0000 Subject: [PATCH] Merge #48 into master from cc_2021104_twelve_points MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 十二分优化 * cc_2021104_twelve_points: (53 commits squashed) - fix:启用禁用规则合并 - Merge branch 'refs/heads/master' into cc_2021104_twelve_points - fix:惩处规则列表新增描述字段 - fix:新增用户管辖门店列表接口 - fix:门店列表接口新增门店积分字段 - fix:查询问题修复;新增草稿状态 - fix:申请单审批补充审批人字段 - fix:修改门店积分限制0-12 - fix:积分流水接口修复;申请单查询接口添加日期筛选 - fix:惩处单查询提供惩处待处理、惩处已处理状态筛选 - fix:惩处单复议申请查询异常修复 - fix:小程序惩处单详情接口字段补充 - fix:查询字段补充 - fix - fix:转义 - fix - fix:新增撤销复议申请单接口 - fix:补充字段 - fix:补充字段 - fix:新增门店分数接口 - fix:申请单新增筛选条件 - fix:门店积分接口返回参数修改 - fix:小程序规则分页查询接口改为Post - fix:问题修复 - fix:十二分导入 - fix:导入状态部分失败改为失败 - fix:字段补充 - fix:异步下Excel导入图片临时文件被清理的问题 - fix:扣分申请导入图片路径修改并使用CDN - fix:导入图片上传oss文件类型修改为图片 - fix:批量审批 - fix:批量审批新增备注字段 - fix:字段补充 - Merge branch 'master' into cc_2021104_twelve_points # Conflicts: # coolstore-partner-common/src/main/java/com/cool/store/constants/RedisConstant.java # coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java # coolstore-partner-dao/src/main/java/com/cool/store/dao/StoreDao.java # coolstore-partner-dao/src/main/java/com/cool/store/mapper/StoreMapper.java # coolstore-partner-dao/src/main/resources/mapper/StoreMapper.xml # coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCStoreController.java - fix:字典项新增排序、编辑删除权限、关联字典项 - Merge branch 'master' into cc_2021104_twelve_points - fix:十二分值-扣分列表申请复议截止日期格式 - fix:去除appealEndDate格式校验 - Merge remote-tracking branch 'origin/cc_20260128_dict_update' into cc_20260205_twelve_points_v2 - Merge branch 'cc_20260128_dict_update' into cc_2021104_twelve_points - fix:字典回显包含已删除字典项 - Merge branch 'master' into cc_2021104_twelve_points - Merge remote-tracking branch 'origin/cc_20260205_twelve_points_v2' into cc_2021104_twelve_points - fix:去除惩处单审批阶段;复议申请单证明图片非必填 - fix:复议拒绝后惩处单直接生效 - fix:扣分申请单证明图片改为非必填 - fix - fix:字段转义 - fix:惩处待处理包含带生效数据 - fix:字段转义 - fix:警告单金额和积分初始化为0 - fix - fix:小程序接口字段转义 Signed-off-by: 王非凡 Merged-by: 正新 CR-link: https://codeup.aliyun.com/692ea314dec569489f6f167c/hangzhou/java/custom_zxjp/change/48 --- .../com/cool/store/enums/ErrorCodeEnum.java | 2 + .../cool/store/enums/tp/TpFormStatusEnum.java | 2 + .../cool/store/dao/dict/SysDictColumnDAO.java | 59 +++++++++++++++++-- .../mapper/dict/SysDictColumnMapper.java | 16 +++++ .../mapper/dict/SysDictColumnMapper.xml | 36 ++++++++++- .../resources/mapper/tp/TpApplyFormMapper.xml | 4 +- .../store/entity/dict/SysDictColumnDO.java | 6 ++ .../cool/store/entity/tp/TpApplyFormDO.java | 1 + .../cool/store/request/tp/TpApplyRequest.java | 4 +- .../store/vo/dict/DictColumnSimpleVO.java | 14 +++++ .../com/cool/store/vo/dict/DictColumnVO.java | 6 ++ .../store/vo/tp/TpPenaltyApplyDetailVO.java | 5 ++ .../store/vo/tp/TpPenaltyApplyListVO.java | 5 ++ .../store/vo/tp/TpPenaltyRuleDetailVO.java | 4 ++ .../cool/store/vo/tp/TpPenaltyRuleListVO.java | 4 ++ .../store/vo/tp/mini/MiniTpApplyListVO.java | 5 ++ .../vo/tp/mini/MiniTpPenaltyApplyVO.java | 6 +- .../store/vo/tp/mini/MiniTpRuleListVO.java | 4 ++ .../dict/impl/DictColumnServiceImpl.java | 15 +++-- .../store/service/dict/impl/DictService.java | 2 +- .../service/tp/impl/TpApplyServiceImpl.java | 44 +++++++------- 21 files changed, 205 insertions(+), 39 deletions(-) diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java index 5a220557a..3394d5043 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java @@ -382,6 +382,8 @@ public enum ErrorCodeEnum { TP_PENALTY_APPLY_NO_NEED_PAY(1810011, "该处罚单无需缴费", null), TP_EXIST_PENDING_IMPORT_TASK(1810012, "存在导入中的任务,请稍后再试", null), TP_NOT_EXIST_FORM_TYPE(1810013, "不存在该表单类型", null), + TP_FORM_ENABLE_APPEAL(1810014, "该申请单无法复议", null), + TP_EXISTS_APPEAL_FORM(1810015, "该申请单存在复议申请,无法重复发起", null), VISIT_RECORD_NOT_EXIST(1820001, "拜访记录不存在", null), VISIT_RECORD_NOT_COMPLETE_EDIT(1820002, "未编辑拜访信息,无法签退", null), diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/tp/TpFormStatusEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/tp/TpFormStatusEnum.java index 3b10fc6ad..55b325d01 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/tp/TpFormStatusEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/tp/TpFormStatusEnum.java @@ -19,6 +19,8 @@ public enum TpFormStatusEnum { PENDING("pending", "审批中"), PASS("pass", "审批通过"), REJECT("reject", "审批拒绝"), + // 惩处单改为无需审批,中间状态为待生效 + INEFFECTIVE("ineffective", "待生效"), EFFECTIVE("effective", "已生效"), CANCEL("cancel", "已作废"), diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/dict/SysDictColumnDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/dict/SysDictColumnDAO.java index e08265c78..82198f2e5 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/dict/SysDictColumnDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/dict/SysDictColumnDAO.java @@ -14,6 +14,8 @@ import org.apache.commons.collections4.MapUtils; import org.springframework.stereotype.Repository; import java.util.*; +import java.util.stream.Collector; +import java.util.stream.Collectors; /** *

@@ -44,6 +46,13 @@ public class SysDictColumnDAO { return sysDictColumnMapper.selectById(id); } + public List getByIds(List ids) { + if (CollectionUtils.isEmpty(ids)) { + return Collections.emptyList(); + } + return sysDictColumnMapper.selectByIds(ids); + } + /** * 根据字典表id查询字典项数量 * @@ -141,6 +150,19 @@ public class SysDictColumnDAO { return CollStreamUtil.toMap(list, SysDictColumnDO::getColumnCode, SysDictColumnDO::getColumnName); } + /** + * 根据字典列编码查询字典项名称映射包含已删除字典项 + * @param columnCodes 字典列编码列表 + * @return <字典列编码, 字典项名称> + */ + public Map getNameMapIncludeDeleted(List columnCodes) { + if (CollectionUtils.isEmpty(columnCodes)) { + return Collections.emptyMap(); + } + List list = sysDictColumnMapper.selectColumnByCodesIncludeDeleted(columnCodes); + return CollStreamUtil.toMap(list, SysDictColumnDO::getColumnCode, SysDictColumnDO::getColumnName); + } + /** * 根据字典表编码查询启用状态的字典项 * @param tableCodes 字典表编码列表 @@ -154,10 +176,37 @@ public class SysDictColumnDAO { List tableIds = CollStreamUtil.toList(tableList, SysDictTableDO::getId); List columnList = sysDictColumnMapper.selectOpenColumnListByTableIds(tableIds); Map tableCodeMap = CollStreamUtil.toMap(tableList, SysDictTableDO::getId, SysDictTableDO::getTableCode); - return CollStreamUtil.toList(columnList, v -> { - DictColumnSimpleVO vo = BeanUtil.toBean(v, DictColumnSimpleVO.class); - vo.setTableCode(tableCodeMap.get(v.getDictTableId())); - return vo; - }); + return CollStreamUtil.toList(columnList, v -> DictColumnSimpleVO.of(v, tableCodeMap.get(v.getDictTableId()))); + } + + /** + * 获取字典项关联字典项列表映射 + * @param columnIds 字典项id列表 + * @return 关联字典项分组 + */ + public Map> getRelationColumnMap(List columnIds) { + if (CollectionUtils.isEmpty(columnIds)) { + return Collections.emptyMap(); + } + List> list = sysDictColumnMapper.getRelationColumnIds(columnIds); + Set relationIds = CollStreamUtil.toSet(list, v -> MapUtils.getLong(v, "relation_id")); + List columnList = getByIds(new ArrayList<>(relationIds)); + Map columnMap = CollStreamUtil.toMap(columnList, SysDictColumnDO::getId, v -> v); + return CollStreamUtil.groupBy(list, + v -> MapUtils.getLong(v, "column_id"), + Collector.of( + ArrayList::new, + (acc, row) -> { + SysDictColumnDO col = columnMap.get(MapUtils.getLong(row, "relation_id")); + if (col != null) { + acc.add(DictColumnSimpleVO.of(col, null)); + } + }, + (left, right) -> { + left.addAll(right); + return left; + } + )); + } } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/dict/SysDictColumnMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/dict/SysDictColumnMapper.java index 71b9ed08e..a37710e6b 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/dict/SysDictColumnMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/dict/SysDictColumnMapper.java @@ -56,6 +56,8 @@ public interface SysDictColumnMapper { */ SysDictColumnDO selectById(@Param("id") Long id); + List selectByIds(@Param("ids") List ids); + /** * 根据字典表id查询字典项数量 * @param tableIds 字典表id列表 @@ -102,10 +104,24 @@ public interface SysDictColumnMapper { */ List selectOpenColumnByCodes(@Param("columnCodes") List columnCodes); + /** + * 根据字典项编码查询包含已删除的字典项 + * @param columnCodes 字典项编码列表 + * @return 字典项列表 + */ + List selectColumnByCodesIncludeDeleted(@Param("columnCodes") List columnCodes); + /** * 根据字典表id查询 * @param tableIds 字典表id列表 * @return 字典项列表 */ List selectOpenColumnListByTableIds(@Param("tableIds") List tableIds); + + /** + * 获取字典项关联的字典项id + * @param columnIds 字典项id列表 + * @return <字典项id, 字典项id> + */ + List> getRelationColumnIds(@Param("columnIds") List columnIds); } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/dict/SysDictColumnMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/dict/SysDictColumnMapper.xml index 156cf57ab..8d101456d 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/dict/SysDictColumnMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/dict/SysDictColumnMapper.xml @@ -14,10 +14,12 @@ + + id, dict_group_id, dict_table_id, column_name, column_code, open_status, remark, - deleted, create_user_id, update_user_id, create_time, update_time + deleted, create_user_id, update_user_id, create_time, update_time, auth_flag, sort_num insert into sys_dict_column_${enterpriseId} @@ -178,7 +180,7 @@ AND remark LIKE CONCAT('%', #{dto.remark}, '%') - ORDER BY create_time ASC + ORDER BY sort_num ASC @@ -188,6 +190,18 @@ WHERE id = #{id} AND deleted = 0 LIMIT 1 + + + + + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/tp/TpApplyFormMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/tp/TpApplyFormMapper.xml index 35c87aa35..29dae9c1e 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/tp/TpApplyFormMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/tp/TpApplyFormMapper.xml @@ -18,7 +18,7 @@ - + @@ -107,7 +107,7 @@ AND a.create_time <= #{endTime} - AND a.status = 'pass' AND (a.pay_status = 0 OR a.pay_status = 1) + AND (a.status = 'pass' OR a.status = 'ineffective') AND (a.pay_status = 0 OR a.pay_status = 1) AND (a.status = 'effective' AND (a.pay_status = 0 OR a.pay_status = 2) OR a.status = 'cancel') diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/dict/SysDictColumnDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/dict/SysDictColumnDO.java index 08b53d610..5c04e8bb3 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/dict/SysDictColumnDO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/dict/SysDictColumnDO.java @@ -39,6 +39,12 @@ public class SysDictColumnDO implements Serializable { @ApiModelProperty("备注") private String remark; + + @ApiModelProperty("权限标志, 使用二进制,&1不允许编辑 &2不允许删除") + private Integer authFlag; + + @ApiModelProperty("排序编号") + private Integer sortNum; @ApiModelProperty("删除标识") private Boolean deleted; diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/tp/TpApplyFormDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/tp/TpApplyFormDO.java index 81e1f83b7..86f033384 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/tp/TpApplyFormDO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/tp/TpApplyFormDO.java @@ -1,5 +1,6 @@ package com.cool.store.entity.tp; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/tp/TpApplyRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/tp/TpApplyRequest.java index e741f0913..0cfdddd5a 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/tp/TpApplyRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/tp/TpApplyRequest.java @@ -2,6 +2,7 @@ package com.cool.store.request.tp; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; @@ -46,7 +47,6 @@ public class TpApplyRequest { private String applyUserName; @ApiModelProperty("证明图片列表,逗号隔开") - @NotBlank(message = "证明图片列表不能为空") private String proofUrls; @ApiModelProperty("分值") @@ -55,6 +55,6 @@ public class TpApplyRequest { @ApiModelProperty("金额") private BigDecimal amount; - @ApiModelProperty("申请复议截止日期,yyyy-MM-dd") + @ApiModelProperty("申请复议截止日期,yyyy-MM-dd HH:mm:ss") private Date appealEndDate; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/dict/DictColumnSimpleVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/dict/DictColumnSimpleVO.java index 6d26fe816..296a3ebc3 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/dict/DictColumnSimpleVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/dict/DictColumnSimpleVO.java @@ -1,8 +1,11 @@ package com.cool.store.vo.dict; +import com.cool.store.entity.dict.SysDictColumnDO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + /** *

* 字典项简单信息VO @@ -21,4 +24,15 @@ public class DictColumnSimpleVO { @ApiModelProperty("字典表编码") private String tableCode; + + @ApiModelProperty("关联项") + private List relationColumns; + + public static DictColumnSimpleVO of(SysDictColumnDO columnDO, String tableCode) { + DictColumnSimpleVO vo = new DictColumnSimpleVO(); + vo.setColumnName(columnDO.getColumnName()); + vo.setColumnCode(columnDO.getColumnCode()); + vo.setTableCode(tableCode); + return vo; + } } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/dict/DictColumnVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/dict/DictColumnVO.java index b4ef6a9ff..3e6fefdf9 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/dict/DictColumnVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/dict/DictColumnVO.java @@ -53,4 +53,10 @@ public class DictColumnVO { @ApiModelProperty("更新时间") private Date updateTime; + + @ApiModelProperty("权限标志, 使用二进制,&1不允许编辑 &2不允许删除") + private Integer authFlag; + + @ApiModelProperty("排序编号") + private Integer sortNum; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/TpPenaltyApplyDetailVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/TpPenaltyApplyDetailVO.java index a5c154a51..174e62968 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/TpPenaltyApplyDetailVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/TpPenaltyApplyDetailVO.java @@ -3,6 +3,7 @@ package com.cool.store.vo.tp; import com.cool.store.annotation.DictField; import com.cool.store.enums.tp.TpFormStatusEnum; import com.cool.store.enums.tp.TpFormTypeEnum; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -53,6 +54,10 @@ public class TpPenaltyApplyDetailVO { @ApiModelProperty("项目名称") private String projectName; + @ApiModelProperty("项目名称") + @DictField + private String projectNameName; + @ApiModelProperty("分值") private BigDecimal score; diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/TpPenaltyApplyListVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/TpPenaltyApplyListVO.java index 8846d7830..c2e28e552 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/TpPenaltyApplyListVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/TpPenaltyApplyListVO.java @@ -1,5 +1,6 @@ package com.cool.store.vo.tp; +import com.cool.store.annotation.DictField; import com.cool.store.enums.tp.TpFormTypeEnum; import com.cool.store.enums.tp.TpPayStatusEnum; import io.swagger.annotations.ApiModelProperty; @@ -37,6 +38,10 @@ public class TpPenaltyApplyListVO extends TpApplyListBaseVO { @ApiModelProperty("缴费状态名称") private String payStatusName; + @ApiModelProperty("项目名称") + @DictField + private String projectNameName; + public String getTypeName() { return TpFormTypeEnum.getMsgByType(this.type); } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/TpPenaltyRuleDetailVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/TpPenaltyRuleDetailVO.java index b6ba3b59c..ab2520d1e 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/TpPenaltyRuleDetailVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/TpPenaltyRuleDetailVO.java @@ -39,6 +39,10 @@ public class TpPenaltyRuleDetailVO { @ApiModelProperty("惩处项目名称") private String projectName; + @ApiModelProperty("项目名称") + @DictField + private String projectNameName; + @ApiModelProperty("警告上限次数") private Integer warningLimit; diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/TpPenaltyRuleListVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/TpPenaltyRuleListVO.java index 8fa594762..056ae311f 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/TpPenaltyRuleListVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/TpPenaltyRuleListVO.java @@ -39,6 +39,10 @@ public class TpPenaltyRuleListVO { @ApiModelProperty("惩处项目名称") private String projectName; + @ApiModelProperty("项目名称") + @DictField + private String projectNameName; + @ApiModelProperty("警告上限次数") private Integer warningLimit; diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/mini/MiniTpApplyListVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/mini/MiniTpApplyListVO.java index 92aac1871..0d59ce818 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/mini/MiniTpApplyListVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/mini/MiniTpApplyListVO.java @@ -1,5 +1,6 @@ package com.cool.store.vo.tp.mini; +import com.cool.store.annotation.DictField; import com.cool.store.enums.tp.TpFormStatusEnum; import com.cool.store.enums.tp.TpFormTypeEnum; import io.swagger.annotations.ApiModelProperty; @@ -30,6 +31,10 @@ public class MiniTpApplyListVO { @ApiModelProperty("项目名称") private String projectName; + @ApiModelProperty("项目名称") + @DictField + private String projectNameName; + @ApiModelProperty("创建时间") private Date createTime; diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/mini/MiniTpPenaltyApplyVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/mini/MiniTpPenaltyApplyVO.java index a8d165f26..6b5e1ec38 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/mini/MiniTpPenaltyApplyVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/mini/MiniTpPenaltyApplyVO.java @@ -3,11 +3,11 @@ package com.cool.store.vo.tp.mini; import com.cool.store.annotation.DictField; import com.cool.store.enums.tp.TpFormStatusEnum; import com.cool.store.enums.tp.TpPayStatusEnum; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; -import java.time.LocalDate; import java.util.Date; /** @@ -29,6 +29,10 @@ public class MiniTpPenaltyApplyVO { @ApiModelProperty("项目名称") private String projectName; + @ApiModelProperty("项目名称") + @DictField + private String projectNameName; + @ApiModelProperty("项目大类") private String projectCategory; diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/mini/MiniTpRuleListVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/mini/MiniTpRuleListVO.java index c2ac09666..f871c8384 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/mini/MiniTpRuleListVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/tp/mini/MiniTpRuleListVO.java @@ -36,6 +36,10 @@ public class MiniTpRuleListVO { @ApiModelProperty("项目名称") private String projectName; + @ApiModelProperty("项目名称") + @DictField + private String projectNameName; + @ApiModelProperty("警告上限次数") private Integer warningLimit; diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/dict/impl/DictColumnServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/dict/impl/DictColumnServiceImpl.java index 963e0ba64..9bf0d1ede 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/dict/impl/DictColumnServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/dict/impl/DictColumnServiceImpl.java @@ -64,12 +64,17 @@ public class DictColumnServiceImpl implements DictColumnService { @Override public DictColumnSimpleVO getColumnByColumnCode(String columnCode) { SysDictColumnDO column = columnDAO.getOpenColumnByCode(columnCode); - SysDictTableDO table = tableDAO.getById(column.getDictTableId()); - DictColumnSimpleVO vo = BeanUtil.toBean(column, DictColumnSimpleVO.class); - if (Objects.nonNull(table)) { - vo.setTableCode(table.getTableCode()); + if (Objects.nonNull(column)) { + SysDictTableDO table = tableDAO.getById(column.getDictTableId()); + DictColumnSimpleVO vo = BeanUtil.toBean(column, DictColumnSimpleVO.class); + if (Objects.nonNull(table)) { + vo.setTableCode(table.getTableCode()); + } + Map> relationColumnMap = columnDAO.getRelationColumnMap(Collections.singletonList(column.getId())); + vo.setRelationColumns(relationColumnMap.get(column.getId())); + return vo; } - return vo; + return null; } @Override diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/dict/impl/DictService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/dict/impl/DictService.java index 2a42aa360..387915531 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/dict/impl/DictService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/dict/impl/DictService.java @@ -71,7 +71,7 @@ public class DictService { } } if (!columnCodes.isEmpty()) { - Map nameMap = columnDAO.getNameMapByCodes(new ArrayList<>(columnCodes)); + Map nameMap = columnDAO.getNameMapIncludeDeleted(new ArrayList<>(columnCodes)); for (T obj : objs) { for (Pair dictField : dictFields) { try { diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/tp/impl/TpApplyServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/tp/impl/TpApplyServiceImpl.java index de5bcf9e8..a8fd5e3ab 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/tp/impl/TpApplyServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/tp/impl/TpApplyServiceImpl.java @@ -53,7 +53,8 @@ import javax.annotation.Resource; import java.io.ByteArrayInputStream; import java.math.BigDecimal; import java.math.RoundingMode; -import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; @@ -156,7 +157,7 @@ public class TpApplyServiceImpl implements TpApplyService { throw new ServiceException(ErrorCodeEnum.TP_EXISTS_PENDING_APPLY); } fillRuleFields(formDO); - formDO.setStatus(isDraft ? TpFormStatusEnum.DRAFT.getStatus() : TpFormStatusEnum.PENDING.getStatus()); + formDO.setStatus(isDraft ? TpFormStatusEnum.DRAFT.getStatus() : TpFormStatusEnum.INEFFECTIVE.getStatus()); formDO.setApplyNo(Objects.isNull(request.getId()) ? TpHelper.generateApplyNo(formDO.getType()) : null); tpApplyFormDAO.insertOrUpdate(formDO); // 第一次提交后添加审批记录 @@ -233,14 +234,8 @@ public class TpApplyServiceImpl implements TpApplyService { } if (!isDraft) { TpApplyFormDO appealFormDO = tpApplyFormDAO.getAppealByPenaltyId(request.getPenaltyId()); - // 存在待审批或已审批的复议申请单 - if (Objects.nonNull(appealFormDO)) { - if (TpFormStatusEnum.PENDING.getStatus().equals(appealFormDO.getStatus())) { - throw new ServiceException(ErrorCodeEnum.TP_EXISTS_PENDING_APPLY); - } - if (TpFormStatusEnum.PASS.getStatus().equals(appealFormDO.getStatus())) { - throw new ServiceException(ErrorCodeEnum.TP_PENALTY_APPLY_APPEAL_COMPLETED); - } + if (Objects.nonNull(appealFormDO) && CommonConstants.INDEX_ZERO.equals(appealFormDO.getIsDraft())) { + throw new ServiceException(ErrorCodeEnum.TP_EXISTS_APPEAL_FORM); } // 已生效的无法复议 if (TpFormStatusEnum.EFFECTIVE.getStatus().equals(penaltyFormDO.getStatus())) { @@ -295,13 +290,14 @@ public class TpApplyServiceImpl implements TpApplyService { } @Override + @Transactional 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); + if (!TpFormStatusEnum.PENDING.getStatus().equals(formDO.getStatus()) && !TpFormStatusEnum.INEFFECTIVE.getStatus().equals(formDO.getStatus())) { + throw new ServiceException(ErrorCodeEnum.TP_FORM_ENABLE_APPEAL); } auditCommon(request, formDO); return true; @@ -328,6 +324,7 @@ public class TpApplyServiceImpl implements TpApplyService { PageInfo page = new PageInfo<>(list); PageInfo newPage = BeanUtil.toPage(page, MiniTpApplyListVO.class); List applyList = newPage.getList(); + dictService.fillDictField(applyList); if (Boolean.TRUE.equals(request.getIsPenalty()) && CollectionUtils.isNotEmpty(applyList)) { List applyIds = CollStreamUtil.toList(applyList, MiniTpApplyListVO::getId); Set existAppealSet = tpApplyFormDAO.filterExistAppeal(applyIds); @@ -375,8 +372,7 @@ public class TpApplyServiceImpl implements TpApplyService { if (Objects.isNull(formDO)) { throw new ServiceException(ErrorCodeEnum.TP_NOT_EXIST_APPLY_FORM); } - if (!TpFormStatusEnum.PASS.getStatus().equals(formDO.getStatus())) { - log.info("非审批通过状态无法认缴"); + if (!TpFormStatusEnum.PASS.getStatus().equals(formDO.getStatus()) && !TpFormStatusEnum.INEFFECTIVE.getStatus().equals(formDO.getStatus())) { throw new ServiceException(ErrorCodeEnum.TP_PENALTY_APPLY_UNABLE_ACCEPT); } tpApplyFormDAO.updateStatus(applyId, TpFormStatusEnum.EFFECTIVE); @@ -416,7 +412,8 @@ public class TpApplyServiceImpl implements TpApplyService { /** * 审批通用方法 */ - private void auditCommon(TpApplyAuditRequest request, TpApplyFormDO formDO) { + @Transactional + public void auditCommon(TpApplyAuditRequest request, TpApplyFormDO formDO) { Date now = new Date(); // 修改申请单审批数据 formDO.setStatus(CommonConstants.INDEX_ONE.equals(request.getAuditStatus()) ? TpFormStatusEnum.PASS.getStatus() : TpFormStatusEnum.REJECT.getStatus()); @@ -427,7 +424,7 @@ public class TpApplyServiceImpl implements TpApplyService { // 处理审批记录 tpAuditRecordDAO.auditPendingRecordByApplyId(request.getApplyId(), formDO.getType(), user.getUserId(), user.getName(), request.getAuditStatus(), request.getRemark(), now); if (TpFormTypeEnum.APPEAL.getType().equals(formDO.getType())) { - appealPassResolve(formDO); + appealResolve(formDO); } else if (TpFormTypeEnum.REWARD.getType().equals(formDO.getType())) { // 加分审批通过后门店积分变动 scoreChange(formDO); @@ -435,12 +432,16 @@ public class TpApplyServiceImpl implements TpApplyService { } /** - * 复议申请通过时处罚单作废 + * 复议申请审批完成处理 */ - private void appealPassResolve(TpApplyFormDO formDO) { + @Transactional + public void appealResolve(TpApplyFormDO formDO) { if (TpFormStatusEnum.PASS.getStatus().equals(formDO.getStatus())) { // 申诉通过后,处罚单失效 tpApplyFormDAO.updateStatus(formDO.getPenaltyId(), TpFormStatusEnum.CANCEL); + } else { + // 惩处单直接生效 + acceptPenalty(formDO.getPenaltyId()); } } @@ -626,7 +627,8 @@ public class TpApplyServiceImpl implements TpApplyService { // 扣分 if (CommonConstants.INDEX_ZERO.equals(ruleDO.getType())) { if (Objects.isNull(formDO.getAppealEndDate())) { - formDO.setAppealEndDate(CoolDateUtils.localDate2Date(LocalDate.now().plusDays(ruleDO.getAppealDeadline()))); + LocalDateTime appealEndDate = LocalDateTime.now().plusDays(ruleDO.getAppealDeadline()); + formDO.setAppealEndDate(Date.from(appealEndDate.atZone(ZoneId.systemDefault()).toInstant())); } if (Objects.isNull(formDO.getType())) { // 超过警告次数的为处罚单,否则警告单 @@ -634,8 +636,8 @@ public class TpApplyServiceImpl implements TpApplyService { Integer type = ruleDO.getWarningLimit().compareTo(penaltyCount) <= 0 ? TpFormTypeEnum.PENALTY.getType() : TpFormTypeEnum.WARNING.getType(); formDO.setType(type); if (TpFormTypeEnum.WARNING.getType().equals(type)) { - formDO.setAmount(null); - formDO.setScore(null); + formDO.setAmount(BigDecimal.ZERO); + formDO.setScore(BigDecimal.ZERO); } } }