diff --git a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/ErrorCodeConstants.java b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/ErrorCodeConstants.java index 3cf890ec..079d72b7 100644 --- a/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/ErrorCodeConstants.java +++ b/win-module-system/win-module-system-api/src/main/java/com/win/module/system/enums/ErrorCodeConstants.java @@ -163,4 +163,8 @@ public interface ErrorCodeConstants { // ========== 站内信发送 1-002-028-000 ========== ErrorCode NOTIFY_SEND_TEMPLATE_PARAM_MISS = new ErrorCode(1_002_028_000, "模板参数({})缺失"); + // ========== 流水号编码规则 1-002-029-000 ========== + ErrorCode SERIAL_NUMBER_NOT_EXISTS = new ErrorCode(1_002_029_000, "流水号规则不存在"); + ErrorCode SERIAL_NUMBER_EXISTS = new ErrorCode(1_002_029_001, "流水号规则已存在"); + } diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/serialnumber/SerialNumberController.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/serialnumber/SerialNumberController.java new file mode 100644 index 00000000..a0d14ccc --- /dev/null +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/serialnumber/SerialNumberController.java @@ -0,0 +1,99 @@ +package com.win.module.system.controller.admin.serialnumber; + +import com.win.framework.common.pojo.CommonResult; +import com.win.framework.common.pojo.PageResult; +import com.win.framework.excel.core.util.ExcelUtils; +import com.win.framework.operatelog.core.annotations.OperateLog; +import com.win.module.system.controller.admin.serialnumber.vo.*; +import com.win.module.system.convert.serialnumber.SerialNumberConvert; +import com.win.module.system.dal.dataobject.serialnumber.SerialNumberDO; +import com.win.module.system.service.serialnumber.SerialNumberService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.io.IOException; +import java.util.Collection; +import java.util.List; + +import static com.win.framework.common.pojo.CommonResult.success; +import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; + +@Tag(name = "管理后台 - 流水号规则") +@RestController +@RequestMapping("/system/serial-number") +@Validated +public class SerialNumberController { + + @Resource + private SerialNumberService serialNumberService; + + @PostMapping("/create") + @Operation(summary = "创建流水号规则") + @PreAuthorize("@ss.hasPermission('system:serial-number:create')") + public CommonResult createSerialNumber(@Valid @RequestBody SerialNumberCreateReqVO createReqVO) { + return success(serialNumberService.createSerialNumber(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新流水号规则") + @PreAuthorize("@ss.hasPermission('system:serial-number:update')") + public CommonResult updateSerialNumber(@Valid @RequestBody SerialNumberUpdateReqVO updateReqVO) { + serialNumberService.updateSerialNumber(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除流水号规则") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('system:serial-number:delete')") + public CommonResult deleteSerialNumber(@RequestParam("id") Long id) { + serialNumberService.deleteSerialNumber(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得流水号规则") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('system:serial-number:query')") + public CommonResult getSerialNumber(@RequestParam("id") Long id) { + SerialNumberDO serialNumber = serialNumberService.getSerialNumber(id); + return success(SerialNumberConvert.INSTANCE.convert(serialNumber)); + } + + @GetMapping("/list") + @Operation(summary = "获得流水号规则列表") + @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048") + @PreAuthorize("@ss.hasPermission('system:serial-number:query')") + public CommonResult> getSerialNumberList(@RequestParam("ids") Collection ids) { + List list = serialNumberService.getSerialNumberList(ids); + return success(SerialNumberConvert.INSTANCE.convertList(list)); + } + + @GetMapping("/page") + @Operation(summary = "获得流水号规则分页") + @PreAuthorize("@ss.hasPermission('system:serial-number:query')") + public CommonResult> getSerialNumberPage(@Valid SerialNumberPageReqVO pageVO) { + PageResult pageResult = serialNumberService.getSerialNumberPage(pageVO); + return success(SerialNumberConvert.INSTANCE.convertPage(pageResult)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出流水号规则 Excel") + @PreAuthorize("@ss.hasPermission('system:serial-number:export')") + @OperateLog(type = EXPORT) + public void exportSerialNumberExcel(@Valid SerialNumberExportReqVO exportReqVO, + HttpServletResponse response) throws IOException { + List list = serialNumberService.getSerialNumberList(exportReqVO); + // 导出 Excel + List datas = SerialNumberConvert.INSTANCE.convertList02(list); + ExcelUtils.write(response, "流水号规则.xls", "数据", SerialNumberExcelVO.class, datas); + } + +} diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/serialnumber/vo/SerialNumberBaseVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/serialnumber/vo/SerialNumberBaseVO.java new file mode 100644 index 00000000..c6ad97fd --- /dev/null +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/serialnumber/vo/SerialNumberBaseVO.java @@ -0,0 +1,44 @@ +package com.win.module.system.controller.admin.serialnumber.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import javax.validation.constraints.*; + +/** + * 流水号规则 Base VO,提供给添加、修改、详细的子 VO 使用 + * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 + */ +@Data +public class SerialNumberBaseVO { + + @Schema(description = "规则编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "规则编码不能为空") + private String ruleCode; + + @Schema(description = "规则名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @NotNull(message = "规则名称不能为空") + private String ruleName; + + @Schema(description = "编码前缀", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "编码前缀不能为空") + private String prefix; + + @Schema(description = "单据格式", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "单据格式不能为空") + private String pattern; + + @Schema(description = "单据流水长度", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "单据流水长度不能为空") + private Byte length; + + @Schema(description = "单据分隔符", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "单据分隔符不能为空") + private String separator; + + @Schema(description = "备注", example = "你说的对") + private String remark; + +} diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/serialnumber/vo/SerialNumberCreateReqVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/serialnumber/vo/SerialNumberCreateReqVO.java new file mode 100644 index 00000000..9dedfbdd --- /dev/null +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/serialnumber/vo/SerialNumberCreateReqVO.java @@ -0,0 +1,14 @@ +package com.win.module.system.controller.admin.serialnumber.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 流水号规则创建 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class SerialNumberCreateReqVO extends SerialNumberBaseVO { + +} diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/serialnumber/vo/SerialNumberExcelVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/serialnumber/vo/SerialNumberExcelVO.java new file mode 100644 index 00000000..24007bb6 --- /dev/null +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/serialnumber/vo/SerialNumberExcelVO.java @@ -0,0 +1,43 @@ +package com.win.module.system.controller.admin.serialnumber.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; + +import com.alibaba.excel.annotation.ExcelProperty; + +/** + * 流水号规则 Excel VO + * + * @author 超级管理员 + */ +@Data +public class SerialNumberExcelVO { + + @ExcelProperty("主键") + private Long id; + + @ExcelProperty("规则编码") + private String ruleCode; + + @ExcelProperty("规则名称") + private String ruleName; + + @ExcelProperty("编码前缀") + private String prefix; + + @ExcelProperty("单据格式") + private String pattern; + + @ExcelProperty("单据流水长度") + private Byte length; + + @ExcelProperty("单据分隔符") + private String separator; + + @ExcelProperty("备注") + private String remark; + +} diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/serialnumber/vo/SerialNumberExportReqVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/serialnumber/vo/SerialNumberExportReqVO.java new file mode 100644 index 00000000..4cbc5006 --- /dev/null +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/serialnumber/vo/SerialNumberExportReqVO.java @@ -0,0 +1,18 @@ +package com.win.module.system.controller.admin.serialnumber.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.win.framework.common.pojo.PageParam; + +@Schema(description = "管理后台 - 流水号规则 Excel 导出 Request VO,参数和 SerialNumberPageReqVO 是一致的") +@Data +public class SerialNumberExportReqVO { + + @Schema(description = "规则编码") + private String ruleCode; + + @Schema(description = "规则名称", example = "王五") + private String ruleName; + +} diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/serialnumber/vo/SerialNumberPageReqVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/serialnumber/vo/SerialNumberPageReqVO.java new file mode 100644 index 00000000..956eb887 --- /dev/null +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/serialnumber/vo/SerialNumberPageReqVO.java @@ -0,0 +1,20 @@ +package com.win.module.system.controller.admin.serialnumber.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.win.framework.common.pojo.PageParam; + +@Schema(description = "管理后台 - 流水号规则分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class SerialNumberPageReqVO extends PageParam { + + @Schema(description = "规则编码") + private String ruleCode; + + @Schema(description = "规则名称", example = "王五") + private String ruleName; + +} diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/serialnumber/vo/SerialNumberRespVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/serialnumber/vo/SerialNumberRespVO.java new file mode 100644 index 00000000..1c5add24 --- /dev/null +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/serialnumber/vo/SerialNumberRespVO.java @@ -0,0 +1,16 @@ +package com.win.module.system.controller.admin.serialnumber.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 流水号规则 Response VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class SerialNumberRespVO extends SerialNumberBaseVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "19961") + private Long id; + +} diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/serialnumber/vo/SerialNumberUpdateReqVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/serialnumber/vo/SerialNumberUpdateReqVO.java new file mode 100644 index 00000000..76cc5e9c --- /dev/null +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/admin/serialnumber/vo/SerialNumberUpdateReqVO.java @@ -0,0 +1,18 @@ +package com.win.module.system.controller.admin.serialnumber.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 流水号规则更新 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class SerialNumberUpdateReqVO extends SerialNumberBaseVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "19961") + @NotNull(message = "主键不能为空") + private Long id; + +} diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/convert/serialnumber/SerialNumberConvert.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/convert/serialnumber/SerialNumberConvert.java new file mode 100644 index 00000000..25c7c20c --- /dev/null +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/convert/serialnumber/SerialNumberConvert.java @@ -0,0 +1,34 @@ +package com.win.module.system.convert.serialnumber; + +import java.util.*; + +import com.win.framework.common.pojo.PageResult; + +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; +import com.win.module.system.controller.admin.serialnumber.vo.*; +import com.win.module.system.dal.dataobject.serialnumber.SerialNumberDO; + +/** + * 流水号规则 Convert + * + * @author 超级管理员 + */ +@Mapper +public interface SerialNumberConvert { + + SerialNumberConvert INSTANCE = Mappers.getMapper(SerialNumberConvert.class); + + SerialNumberDO convert(SerialNumberCreateReqVO bean); + + SerialNumberDO convert(SerialNumberUpdateReqVO bean); + + SerialNumberRespVO convert(SerialNumberDO bean); + + List convertList(List list); + + PageResult convertPage(PageResult page); + + List convertList02(List list); + +} diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/convert/《芋道 Spring Boot 对象转换 MapStruct 入门》.md b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/convert/《芋道 Spring Boot 对象转换 MapStruct 入门》.md deleted file mode 100644 index 2f05ebd1..00000000 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/convert/《芋道 Spring Boot 对象转换 MapStruct 入门》.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/serialnumber/SerialNumberDO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/serialnumber/SerialNumberDO.java new file mode 100644 index 00000000..1a272ae3 --- /dev/null +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/dataobject/serialnumber/SerialNumberDO.java @@ -0,0 +1,59 @@ +package com.win.module.system.dal.dataobject.serialnumber; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.win.framework.mybatis.core.dataobject.BaseDO; + +/** + * 流水号规则 DO + * + * @author 超级管理员 + */ +@TableName("system_serial_number") +@KeySequence("system_serial_number_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SerialNumberDO extends BaseDO { + + /** + * 主键 + */ + @TableId + private Long id; + /** + * 规则编码 + */ + private String ruleCode; + /** + * 规则名称 + */ + private String ruleName; + /** + * 编码前缀 + */ + private String prefix; + /** + * 单据格式 + */ + private String pattern; + /** + * 单据流水长度 + */ + private Byte length; + /** + * 单据分隔符 + */ + private String separator; + /** + * 备注 + */ + private String remark; + +} diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/mysql/serialnumber/SerialNumberMapper.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/mysql/serialnumber/SerialNumberMapper.java new file mode 100644 index 00000000..4b280820 --- /dev/null +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/dal/mysql/serialnumber/SerialNumberMapper.java @@ -0,0 +1,35 @@ +package com.win.module.system.dal.mysql.serialnumber; + +import com.win.framework.common.pojo.PageResult; +import com.win.framework.mybatis.core.mapper.BaseMapperX; +import com.win.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.win.module.system.controller.admin.serialnumber.vo.SerialNumberExportReqVO; +import com.win.module.system.controller.admin.serialnumber.vo.SerialNumberPageReqVO; +import com.win.module.system.dal.dataobject.serialnumber.SerialNumberDO; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * 流水号规则 Mapper + * + * @author 超级管理员 + */ +@Mapper +public interface SerialNumberMapper extends BaseMapperX { + + default PageResult selectPage(SerialNumberPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(SerialNumberDO::getRuleCode, reqVO.getRuleCode()) + .likeIfPresent(SerialNumberDO::getRuleName, reqVO.getRuleName()) + .orderByDesc(SerialNumberDO::getId)); + } + + default List selectList(SerialNumberExportReqVO reqVO) { + return selectList(new LambdaQueryWrapperX() + .eqIfPresent(SerialNumberDO::getRuleCode, reqVO.getRuleCode()) + .likeIfPresent(SerialNumberDO::getRuleName, reqVO.getRuleName()) + .orderByDesc(SerialNumberDO::getId)); + } + +} diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/serialnumber/SerialNumberService.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/serialnumber/SerialNumberService.java new file mode 100644 index 00000000..351694c7 --- /dev/null +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/serialnumber/SerialNumberService.java @@ -0,0 +1,75 @@ +package com.win.module.system.service.serialnumber; + +import com.win.framework.common.pojo.PageResult; +import com.win.module.system.controller.admin.serialnumber.vo.SerialNumberCreateReqVO; +import com.win.module.system.controller.admin.serialnumber.vo.SerialNumberExportReqVO; +import com.win.module.system.controller.admin.serialnumber.vo.SerialNumberPageReqVO; +import com.win.module.system.controller.admin.serialnumber.vo.SerialNumberUpdateReqVO; +import com.win.module.system.dal.dataobject.serialnumber.SerialNumberDO; + +import javax.validation.Valid; +import java.util.Collection; +import java.util.List; + +/** + * 流水号规则 Service 接口 + * + * @author 超级管理员 + */ +public interface SerialNumberService { + + /** + * 创建流水号规则 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createSerialNumber(@Valid SerialNumberCreateReqVO createReqVO); + + /** + * 更新流水号规则 + * + * @param updateReqVO 更新信息 + */ + void updateSerialNumber(@Valid SerialNumberUpdateReqVO updateReqVO); + + /** + * 删除流水号规则 + * + * @param id 编号 + */ + void deleteSerialNumber(Long id); + + /** + * 获得流水号规则 + * + * @param id 编号 + * @return 流水号规则 + */ + SerialNumberDO getSerialNumber(Long id); + + /** + * 获得流水号规则列表 + * + * @param ids 编号 + * @return 流水号规则列表 + */ + List getSerialNumberList(Collection ids); + + /** + * 获得流水号规则分页 + * + * @param pageReqVO 分页查询 + * @return 流水号规则分页 + */ + PageResult getSerialNumberPage(SerialNumberPageReqVO pageReqVO); + + /** + * 获得流水号规则列表, 用于 Excel 导出 + * + * @param exportReqVO 查询条件 + * @return 流水号规则列表 + */ + List getSerialNumberList(SerialNumberExportReqVO exportReqVO); + +} diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/serialnumber/SerialNumberServiceImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/serialnumber/SerialNumberServiceImpl.java new file mode 100644 index 00000000..1c505f5d --- /dev/null +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/serialnumber/SerialNumberServiceImpl.java @@ -0,0 +1,98 @@ +package com.win.module.system.service.serialnumber; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.win.framework.common.pojo.PageResult; +import com.win.module.system.controller.admin.serialnumber.vo.SerialNumberCreateReqVO; +import com.win.module.system.controller.admin.serialnumber.vo.SerialNumberExportReqVO; +import com.win.module.system.controller.admin.serialnumber.vo.SerialNumberPageReqVO; +import com.win.module.system.controller.admin.serialnumber.vo.SerialNumberUpdateReqVO; +import com.win.module.system.convert.serialnumber.SerialNumberConvert; +import com.win.module.system.dal.dataobject.serialnumber.SerialNumberDO; +import com.win.module.system.dal.mysql.serialnumber.SerialNumberMapper; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.util.Collection; +import java.util.List; + +import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.win.module.system.enums.ErrorCodeConstants.SERIAL_NUMBER_EXISTS; +import static com.win.module.system.enums.ErrorCodeConstants.SERIAL_NUMBER_NOT_EXISTS; + +/** + * 流水号规则 Service 实现类 + * + * @author 超级管理员 + */ +@Service +@Validated +public class SerialNumberServiceImpl implements SerialNumberService { + + @Resource + private SerialNumberMapper serialNumberMapper; + + @Override + public Long createSerialNumber(SerialNumberCreateReqVO createReqVO) { + // 校验存在 + validateSerialNumberNotExists(createReqVO.getRuleCode()); + // 插入 + SerialNumberDO serialNumber = SerialNumberConvert.INSTANCE.convert(createReqVO); + serialNumberMapper.insert(serialNumber); + // 返回 + return serialNumber.getId(); + } + + @Override + public void updateSerialNumber(SerialNumberUpdateReqVO updateReqVO) { + // 校验存在 + validateSerialNumberExists(updateReqVO.getId()); + // 更新 + SerialNumberDO updateObj = SerialNumberConvert.INSTANCE.convert(updateReqVO); + serialNumberMapper.updateById(updateObj); + } + + @Override + public void deleteSerialNumber(Long id) { + // 校验存在 + validateSerialNumberExists(id); + // 删除 + serialNumberMapper.deleteById(id); + } + + private void validateSerialNumberExists(Long id) { + if (serialNumberMapper.selectById(id) == null) { + throw exception(SERIAL_NUMBER_NOT_EXISTS); + } + } + + private void validateSerialNumberNotExists(String ruleCode) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("deleted", Boolean.FALSE); + queryWrapper.eq("rule_code", ruleCode); + if (serialNumberMapper.selectCount() != 0) { + throw exception(SERIAL_NUMBER_EXISTS); + } + } + + @Override + public SerialNumberDO getSerialNumber(Long id) { + return serialNumberMapper.selectById(id); + } + + @Override + public List getSerialNumberList(Collection ids) { + return serialNumberMapper.selectBatchIds(ids); + } + + @Override + public PageResult getSerialNumberPage(SerialNumberPageReqVO pageReqVO) { + return serialNumberMapper.selectPage(pageReqVO); + } + + @Override + public List getSerialNumberList(SerialNumberExportReqVO exportReqVO) { + return serialNumberMapper.selectList(exportReqVO); + } + +}