From d1062d72f51a3beb7e4f4de5c72ed92ddee77689 Mon Sep 17 00:00:00 2001
From: zhangke
Date: Fri, 16 Jan 2026 15:04:13 +0800
Subject: [PATCH 1/2] =?UTF-8?q?1=E3=80=81=E7=94=A8=E6=88=B7=E5=92=8Capp?=
=?UTF-8?q?=E7=94=A8=E6=88=B7=E6=B7=BB=E5=8A=A0=E6=8A=A5=E4=BB=B7=E4=BA=BA?=
=?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=9A=84=E5=86=85=E5=AE=B9=EF=BC=9B=202?=
=?UTF-8?q?=E3=80=81=E6=B7=BB=E5=8A=A0=E7=BC=96=E7=A0=81=E7=94=9F=E6=88=90?=
=?UTF-8?q?=E8=A7=84=E5=88=99=203=E3=80=81=E5=8C=BA=E5=9F=9F=E6=B7=BB?=
=?UTF-8?q?=E5=8A=A0=E4=B8=80=E4=B8=AA=E6=8A=A5=E4=BB=B7=E4=BB=A3=E7=A0=81?=
=?UTF-8?q?=E7=9A=84=E5=AD=97=E6=AE=B5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../admin/controller/AppUserController.java | 5 +
.../admin/controller/BaseAreaController.java | 54 +++---
.../admin/pojo/dto/BaseAreaEditDTO.java | 7 +-
.../auth/controller/AdminController.java | 1 +
.../common/pojo/vo/AdminUserVO.java | 2 +
.../common/pojo/vo/TBaseAreaVO.java | 4 +
nflg-mobilebroken-repository/pom.xml | 4 +
.../entity/AdminBaseSerialNumber.java | 59 +++++++
.../repository/entity/AdminUser.java | 6 +
.../repository/entity/AppUser.java | 6 +
.../entity/QuotationModelForbid.java | 77 ++++++++
.../repository/entity/TBaseArea.java | 9 +-
.../mapper/AdminBaseSerialNumberMapper.java | 16 ++
.../mapper/QuotationModelForbidMapper.java | 16 ++
.../IAdminBaseSerialNumberService.java | 27 +++
.../repository/service/IAppUserService.java | 10 +-
.../service/IQuotationModelForbidService.java | 16 ++
.../AdminBaseSerialNumberServiceImpl.java | 72 ++++++++
.../service/impl/AdminUserServiceImpl.java | 7 +
.../impl/AppUserApplyforServiceImpl.java | 26 ++-
.../service/impl/AppUserServiceImpl.java | 166 ++++++++++++++++--
.../impl/QuotationModelForbidServiceImpl.java | 20 +++
.../mapper/AdminBaseSerialNumberMapper.xml | 5 +
.../mapper/QuotationModelForbidMapper.xml | 5 +
.../repository/CodeGeneratorTest.java | 2 +-
25 files changed, 565 insertions(+), 57 deletions(-)
create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/AdminBaseSerialNumber.java
create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/QuotationModelForbid.java
create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/AdminBaseSerialNumberMapper.java
create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/QuotationModelForbidMapper.java
create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAdminBaseSerialNumberService.java
create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IQuotationModelForbidService.java
create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminBaseSerialNumberServiceImpl.java
create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/QuotationModelForbidServiceImpl.java
create mode 100644 nflg-mobilebroken-repository/src/main/resources/mapper/AdminBaseSerialNumberMapper.xml
create mode 100644 nflg-mobilebroken-repository/src/main/resources/mapper/QuotationModelForbidMapper.xml
diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/AppUserController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/AppUserController.java
index 34b74b69..cb661de2 100644
--- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/AppUserController.java
+++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/AppUserController.java
@@ -232,6 +232,8 @@ public class AppUserController extends ControllerBase {
if (!Objects.equals(user.getState(), UserState.ToBeActivated.getState()) && Objects.nonNull(request.getEnable())) {
user.setState(request.getEnable() ? UserState.Activated.getState() : UserState.Disabled.getState());
}
+ String quotationCode = appUserService.getAppUserQuotationCode(request.getCompanyIds());
+ user.setQuotationCode(quotationCode);
appUserService.updateById(user);
}
@@ -288,6 +290,9 @@ public class AppUserController extends ControllerBase {
.in(AppUser::getId, children.stream().map(AppUser::getId).collect(Collectors.toList()))
.update();
}
+ //更新报价人代码g
+ String quotationCode = appUserService.getAppUserQuotationCode(request.getCompanyIds());
+ user.setQuotationCode(quotationCode);
appUserService.updateById(user);
}
diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/BaseAreaController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/BaseAreaController.java
index d52722d6..f4fb4365 100644
--- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/BaseAreaController.java
+++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/BaseAreaController.java
@@ -47,7 +47,7 @@ public class BaseAreaController extends ControllerBase {
* @return
*/
@PostMapping("getList")
- public ApiResult> getList(@RequestBody BaseAreaQuery query){
+ public ApiResult> getList(@RequestBody BaseAreaQuery query) {
//
return adminBaseAreaService.getList(query);
}
@@ -59,7 +59,7 @@ public class BaseAreaController extends ControllerBase {
*/
@GetMapping("getChild")
@ApiMark(moduleName = "区域管理", apiName = "获取子级")
- public ApiResult> getChild(@RequestParam("parentId") Integer parentId ){
+ public ApiResult> getChild(@RequestParam("parentId") Integer parentId) {
List result = baseAreaService.lambdaQuery().eq(TBaseArea::getParentAreaRowId, parentId).list();
return ApiResult.success(Convert.toList(TBaseAreaVO.class, result));
}
@@ -70,13 +70,13 @@ public class BaseAreaController extends ControllerBase {
* @return
*/
@PostMapping("add")
- @MethodInfoMark(value = "新增" ,menuName = "区域管理")
+ @MethodInfoMark(value = "新增", menuName = "区域管理")
@ApiMark(moduleName = "区域管理", apiName = "新增")
- public ApiResult add(@Valid @RequestBody BaseAreaEditDTO baseAreaEditDTO){
+ public ApiResult add(@Valid @RequestBody BaseAreaEditDTO baseAreaEditDTO) {
List checkCode = baseAreaService.lambdaQuery().eq(TBaseArea::getAreaName, baseAreaEditDTO.getAreaName()).list();
VUtils.trueThrowBusinessError(CollUtil.isNotEmpty(checkCode)).throwMessage("区域名称已存在");
- Integer count = baseAreaService.getCount()+1;
+ Integer count = baseAreaService.getCount() + 1;
TBaseArea ent = Convert.convert(TBaseArea.class, baseAreaEditDTO);
ent.setId(null);
ent.setDataCreateUserNo(AdminUserUtil.getUserNo());
@@ -86,6 +86,7 @@ public class BaseAreaController extends ControllerBase {
// ent.setDataModifyUserName(AdminUserUtil.getUserName());
// ent.setDataModifyTime(LocalDateTime.now());
ent.setAreaCode(UniqueSequenceGenerator.generateCode(Constant.AreaCodePrefix));
+ ent.setAreaQuoteCode(baseAreaEditDTO.getAreaQuoteCode());
baseAreaService.save(ent);
return ApiResult.success(true);
@@ -99,8 +100,8 @@ public class BaseAreaController extends ControllerBase {
@PostMapping("update")
@MethodInfoMark(value = "编辑", menuName = "区域管理")
@ApiMark(moduleName = "区域管理", apiName = "编辑")
- public ApiResult update(@Valid @RequestBody BaseAreaEditDTO baseAreaEditDTO){
- VUtils.trueThrow(baseAreaEditDTO.getId()<=0).throwMessage(STATE.ParamErr,"编辑时ID参数不能为空");
+ public ApiResult update(@Valid @RequestBody BaseAreaEditDTO baseAreaEditDTO) {
+ VUtils.trueThrow(baseAreaEditDTO.getId() <= 0).throwMessage(STATE.ParamErr, "编辑时ID参数不能为空");
TBaseArea oldEnt = baseAreaService.getById(baseAreaEditDTO.getId());
VUtils.trueThrowBusinessError(Objects.isNull(oldEnt)).throwMessage("区域不存在");
oldEnt.setParentAreaRowId(baseAreaEditDTO.getParentAreaRowId());
@@ -108,6 +109,7 @@ public class BaseAreaController extends ControllerBase {
oldEnt.setDataModifyUserNo(AdminUserUtil.getUserNo());
oldEnt.setDataModifyUserName(AdminUserUtil.getUserName());
oldEnt.setDataModifyTime(LocalDateTime.now());
+ oldEnt.setAreaQuoteCode(baseAreaEditDTO.getAreaQuoteCode());
baseAreaService.updateById(oldEnt);
return ApiResult.success(true);
@@ -119,24 +121,24 @@ public class BaseAreaController extends ControllerBase {
* @return
*/
@PostMapping("del")
- @MethodInfoMark(value = "删除" ,menuName = "区域管理")
+ @MethodInfoMark(value = "删除", menuName = "区域管理")
@ApiMark(moduleName = "区域管理", apiName = "删除")
- public ApiResult del(@RequestBody List ids){
- VUtils.trueThrow(CollUtil.isEmpty(ids)).throwMessage(STATE.ParamErr,"请选择要删除的行");
+ public ApiResult del(@RequestBody List ids) {
+ VUtils.trueThrow(CollUtil.isEmpty(ids)).throwMessage(STATE.ParamErr, "请选择要删除的行");
//检查下面是否有
List delNodes = baseAreaService.getBaseMapper().selectByIds(ids);
- List hasChildNodes=new ArrayList<>();
- List childIds=new ArrayList<>();
- for ( TBaseArea delNode: delNodes) {
+ List hasChildNodes = new ArrayList<>();
+ List childIds = new ArrayList<>();
+ for (TBaseArea delNode : delNodes) {
childIds.clear();
- adminBaseAreaService.getAllChildIds( Convert.convert(TBaseAreaVO.class,delNode) ,childIds);
- if(CollUtil.isNotEmpty(childIds)){
+ adminBaseAreaService.getAllChildIds(Convert.convert(TBaseAreaVO.class, delNode), childIds);
+ if (CollUtil.isNotEmpty(childIds)) {
hasChildNodes.add(delNode.getAreaName());
}
}
- if(CollUtil.isNotEmpty(hasChildNodes)){
- throw new NflgException(STATE.ParamErr,StrUtil.join(",", hasChildNodes)+" 存在子级区域,请先删除子级");
+ if (CollUtil.isNotEmpty(hasChildNodes)) {
+ throw new NflgException(STATE.ParamErr, StrUtil.join(",", hasChildNodes) + " 存在子级区域,请先删除子级");
}
baseAreaService.getBaseMapper().deleteByIds(ids);
@@ -152,10 +154,10 @@ public class BaseAreaController extends ControllerBase {
* @return
*/
@PostMapping("enable")
- @MethodInfoMark(value = "启用" ,menuName = "区域管理")
+ @MethodInfoMark(value = "启用", menuName = "区域管理")
@ApiMark(moduleName = "区域管理", apiName = "启用")
- public ApiResult enable(@RequestBody List ids){
- VUtils.trueThrow(CollUtil.isEmpty(ids)).throwMessage(STATE.ParamErr,"请选择要启用的行");
+ public ApiResult enable(@RequestBody List ids) {
+ VUtils.trueThrow(CollUtil.isEmpty(ids)).throwMessage(STATE.ParamErr, "请选择要启用的行");
baseAreaService.upState(1, ids, AdminUserUtil.getUserNo(), AdminUserUtil.getUserName());
return ApiResult.success(true);
@@ -168,15 +170,15 @@ public class BaseAreaController extends ControllerBase {
* @return
*/
@PostMapping("disable")
- @MethodInfoMark(value = "禁用" ,menuName = "区域管理")
+ @MethodInfoMark(value = "禁用", menuName = "区域管理")
@ApiMark(moduleName = "区域管理", apiName = "禁用")
- public ApiResult disable(@RequestBody List ids){
- VUtils.trueThrow(CollUtil.isEmpty(ids)).throwMessage(STATE.ParamErr,"请选择要禁用的行");
+ public ApiResult disable(@RequestBody List ids) {
+ VUtils.trueThrow(CollUtil.isEmpty(ids)).throwMessage(STATE.ParamErr, "请选择要禁用的行");
List tBaseAreas = baseAreaService.getBaseMapper().selectByIds(ids);
- List allIds=new ArrayList<>();
+ List allIds = new ArrayList<>();
allIds.addAll(ids);
- for (TBaseArea baseArea :tBaseAreas) {
- adminBaseAreaService.getAllChildIds(Convert.convert(TBaseAreaVO.class,baseArea) , allIds);
+ for (TBaseArea baseArea : tBaseAreas) {
+ adminBaseAreaService.getAllChildIds(Convert.convert(TBaseAreaVO.class, baseArea), allIds);
}
baseAreaService.upState(0, allIds, AdminUserUtil.getUserNo(), AdminUserUtil.getUserName());
diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/dto/BaseAreaEditDTO.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/dto/BaseAreaEditDTO.java
index d91d1b4c..9234db39 100644
--- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/dto/BaseAreaEditDTO.java
+++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/dto/BaseAreaEditDTO.java
@@ -10,11 +10,14 @@ import javax.validation.constraints.NotBlank;
@Data
public class BaseAreaEditDTO {
- private Integer id=0;
+ private Integer id = 0;
- private Integer parentAreaRowId=0;
+ private Integer parentAreaRowId = 0;
@NotBlank(message = "区域名称不能为空")
private String areaName;
+
+ @NotBlank(message = "区域报价编码不能为空")
+ private String areaQuoteCode;
}
diff --git a/nflg-mobilebroken-auth/src/main/java/com/nflg/mobilebroken/auth/controller/AdminController.java b/nflg-mobilebroken-auth/src/main/java/com/nflg/mobilebroken/auth/controller/AdminController.java
index f37d4387..15e1f137 100644
--- a/nflg-mobilebroken-auth/src/main/java/com/nflg/mobilebroken/auth/controller/AdminController.java
+++ b/nflg-mobilebroken-auth/src/main/java/com/nflg/mobilebroken/auth/controller/AdminController.java
@@ -64,6 +64,7 @@ public class AdminController extends ControllerBase {
.setExtra("name", user.getUserName())
.setExtra("code", user.getUserCode())
.setExtra("email", user.getEmail())
+ .setExtra("quotationCode", user.getQuotationCode())
.setExtra("roles", roleCodes.stream().map(RoleVO::getCode).collect(Collectors.toList()))
.setExtra("language", Constant.DEFAULT_LANGUAGE_CODE + "-中文")
);
diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminUserVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminUserVO.java
index 00811883..3c292054 100644
--- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminUserVO.java
+++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminUserVO.java
@@ -66,6 +66,8 @@ public class AdminUserVO {
//微信openid
private String openId;
+ //报价代码
+ private String quotationCode;
/**
* 产品线,多个用逗号分隔
*/
diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/TBaseAreaVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/TBaseAreaVO.java
index 2c768bb9..383a35d9 100644
--- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/TBaseAreaVO.java
+++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/TBaseAreaVO.java
@@ -84,6 +84,10 @@ public class TBaseAreaVO implements Serializable {
*/
private List children;
+ /**
+ * 报价区域代码
+ */
+ private String areaQuoteCode;
@Override
public boolean equals(Object o) {
diff --git a/nflg-mobilebroken-repository/pom.xml b/nflg-mobilebroken-repository/pom.xml
index a4410904..10160d6b 100644
--- a/nflg-mobilebroken-repository/pom.xml
+++ b/nflg-mobilebroken-repository/pom.xml
@@ -25,6 +25,10 @@
freemarker
test
+
+ org.springframework.retry
+ spring-retry
+
com.baomidou
mybatis-plus-boot-starter
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/AdminBaseSerialNumber.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/AdminBaseSerialNumber.java
new file mode 100644
index 00000000..954e6140
--- /dev/null
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/AdminBaseSerialNumber.java
@@ -0,0 +1,59 @@
+package com.nflg.mobilebroken.repository.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Accessors;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 代码生成器生成
+ * @since 2026
+ */
+@Getter
+@Setter
+@Accessors(chain = true)
+@TableName("admin_base_serial_number")
+public class AdminBaseSerialNumber implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ /**
+ * 0 管理端的报价人编号;1 代理商的报价人单号
+ */
+ private Integer businessType;
+
+ /**
+ * 当前时间 YYYYMMDD
+ */
+ private String currentDateStr;
+
+ /**
+ * 当前最大流水号
+ */
+ private Integer maxSerial;
+
+ /**
+ * 乐观锁版本号
+ */
+ private Integer version;
+
+ /**
+ * 前缀
+ */
+ private String businessPrefixNumber;
+
+ /**
+ * 流水号的长度
+ */
+ private Integer serialLength;
+}
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/AdminUser.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/AdminUser.java
index d594a7d2..0a0648a2 100644
--- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/AdminUser.java
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/AdminUser.java
@@ -132,4 +132,10 @@ public class AdminUser implements Serializable {
*/
@TableField("is_gongfu")
private boolean gongfu;
+
+ /**
+ * 报价人代码
+ */
+ private String quotationCode;
+
}
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/AppUser.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/AppUser.java
index ab6dd52a..97d6fb63 100644
--- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/AppUser.java
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/AppUser.java
@@ -151,6 +151,12 @@ public class AppUser implements Serializable {
*/
private String customerName;
+ /**
+ * 报价人代码
+ */
+ private String quotationCode;
+
+
/**
* 地域类型,字典id
*/
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/QuotationModelForbid.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/QuotationModelForbid.java
new file mode 100644
index 00000000..b89c1957
--- /dev/null
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/QuotationModelForbid.java
@@ -0,0 +1,77 @@
+package com.nflg.mobilebroken.repository.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Accessors;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 代码生成器生成
+ * @since 2026
+ */
+@Getter
+@Setter
+@Accessors(chain = true)
+@TableName("quotation_model_forbid")
+public class QuotationModelForbid implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ private Integer id;
+
+ /**
+ * 禁止机型的流水ID
+ */
+ private Integer modelId;
+
+ /**
+ * 用户ID
+ */
+ private Integer userId;
+
+ /**
+ * 用户类型 0 内部用户;1 外部用户
+ */
+ private Integer userType;
+
+ /**
+ * 是否仅售
+ */
+ private Boolean isForbid;
+
+ /**
+ * 创建人
+ */
+ private String createBy;
+
+ /**
+ * 创建时间
+ */
+ private LocalDateTime createTime;
+
+ /**
+ * 更新人
+ */
+ private String updateBy;
+
+ /**
+ * 更新时间
+ */
+ private LocalDateTime updateTime;
+
+ /**
+ * 新增人编号
+ */
+ private Integer createById;
+
+ /**
+ * 修改人编号
+ */
+ private Integer updateById;
+}
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/TBaseArea.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/TBaseArea.java
index b8fa322c..cb0dbd7d 100644
--- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/TBaseArea.java
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/TBaseArea.java
@@ -15,7 +15,7 @@ import lombok.experimental.Accessors;
*
*
* @author 代码生成器生成
- * @since 2025
+ * @since 2026
*/
@Getter
@Setter
@@ -47,7 +47,7 @@ public class TBaseArea implements Serializable {
private String areaName;
/**
- * 状态
+ * 状态 0-禁用 1-启用
*/
private Byte areaState;
@@ -85,4 +85,9 @@ public class TBaseArea implements Serializable {
* 是否删除0-否 1-是
*/
private Integer delIs;
+
+ /**
+ * 报价区域代码
+ */
+ private String areaQuoteCode;
}
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/AdminBaseSerialNumberMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/AdminBaseSerialNumberMapper.java
new file mode 100644
index 00000000..93f41782
--- /dev/null
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/AdminBaseSerialNumberMapper.java
@@ -0,0 +1,16 @@
+package com.nflg.mobilebroken.repository.mapper;
+
+import com.nflg.mobilebroken.repository.entity.AdminBaseSerialNumber;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 代码生成器生成
+ * @since 2026
+ */
+public interface AdminBaseSerialNumberMapper extends BaseMapper {
+
+}
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/QuotationModelForbidMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/QuotationModelForbidMapper.java
new file mode 100644
index 00000000..1cca65fe
--- /dev/null
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/QuotationModelForbidMapper.java
@@ -0,0 +1,16 @@
+package com.nflg.mobilebroken.repository.mapper;
+
+import com.nflg.mobilebroken.repository.entity.QuotationModelForbid;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 代码生成器生成
+ * @since 2026
+ */
+public interface QuotationModelForbidMapper extends BaseMapper {
+
+}
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAdminBaseSerialNumberService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAdminBaseSerialNumberService.java
new file mode 100644
index 00000000..d9fb8758
--- /dev/null
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAdminBaseSerialNumberService.java
@@ -0,0 +1,27 @@
+package com.nflg.mobilebroken.repository.service;
+
+import com.nflg.mobilebroken.repository.entity.AdminBaseSerialNumber;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 代码生成器生成
+ * @since 2026
+ */
+public interface IAdminBaseSerialNumberService extends IService {
+
+ /**
+ * 生成流水号
+ * @param businessType 业务类型
+ * @param prefixNumber 前缀
+ * @param specialNumber 特殊编号
+ * @param hasTimeStr 是否包含时间
+ * @param serialLength 流水号长度
+ * @return 流水号
+ */
+ String generateSerialNumber(Integer businessType, String prefixNumber, String specialNumber,
+ boolean hasTimeStr, Integer serialLength);
+}
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAppUserService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAppUserService.java
index 37a05d39..430348b9 100644
--- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAppUserService.java
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAppUserService.java
@@ -22,7 +22,15 @@ import java.util.List;
*/
public interface IAppUserService extends IService {
- AppUser getUser(String userName,String password);
+ /**
+ * 获取用户报价码
+ *
+ * @param companyId 公司id
+ * @return 报价码
+ */
+ String getAppUserQuotationCode(List companyId);
+
+ AppUser getUser(String userName, String password);
void disable(Integer id);
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IQuotationModelForbidService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IQuotationModelForbidService.java
new file mode 100644
index 00000000..9956d8ea
--- /dev/null
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IQuotationModelForbidService.java
@@ -0,0 +1,16 @@
+package com.nflg.mobilebroken.repository.service;
+
+import com.nflg.mobilebroken.repository.entity.QuotationModelForbid;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 代码生成器生成
+ * @since 2026
+ */
+public interface IQuotationModelForbidService extends IService {
+
+}
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminBaseSerialNumberServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminBaseSerialNumberServiceImpl.java
new file mode 100644
index 00000000..84a1c641
--- /dev/null
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminBaseSerialNumberServiceImpl.java
@@ -0,0 +1,72 @@
+package com.nflg.mobilebroken.repository.service.impl;
+
+import cn.hutool.core.util.StrUtil;
+import com.nflg.mobilebroken.repository.entity.AdminBaseSerialNumber;
+import com.nflg.mobilebroken.repository.mapper.AdminBaseSerialNumberMapper;
+import com.nflg.mobilebroken.repository.service.IAdminBaseSerialNumberService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.retry.annotation.Backoff;
+import org.springframework.retry.annotation.Retryable;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.Objects;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 代码生成器生成
+ * @since 2026
+ */
+@Service
+public class AdminBaseSerialNumberServiceImpl extends ServiceImpl implements IAdminBaseSerialNumberService {
+ private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd");
+ private static final int MAX_RETRY = 5; // 最大重试次数
+
+ @Retryable(
+ maxAttempts = 5, // 最大重试次数(包括第一次调用)
+ backoff = @Backoff(delay = 1000) // 重试间隔1秒
+ )
+
+ @Override
+ public String generateSerialNumber(Integer businessType, String prefixNumber, String specialNumber,
+ boolean hasTimeStr, Integer serialLength) {
+ String currentDate = "";
+ String serialNo = "";
+ AdminBaseSerialNumber serialNumber = this.lambdaQuery()
+ .eq(AdminBaseSerialNumber::getBusinessType, businessType)
+ .one();
+ if (hasTimeStr) {
+ currentDate = LocalDate.now().format(DATE_FORMATTER);
+ }
+
+ if (Objects.isNull(serialNumber)) {
+ // 插入数据库
+ AdminBaseSerialNumber newModel = new AdminBaseSerialNumber()
+ .setBusinessType(businessType)
+ .setCurrentDateStr(currentDate)
+ .setMaxSerial(1)
+ .setBusinessPrefixNumber(prefixNumber)
+ .setSerialLength(serialLength);
+ this.save(newModel);
+ serialNo = prefixNumber + specialNumber + currentDate + String.format("%0" + serialLength + "d", 1);
+ } else {
+// 判断是否有时间
+ Integer startSerial = 1;
+ if (hasTimeStr) {
+ if (serialNumber.getCurrentDateStr().equals(currentDate)) {
+ startSerial = serialNumber.getMaxSerial() + 1;
+ }
+ }
+ serialNumber.setSerialLength(serialLength);
+ serialNumber.setMaxSerial(startSerial);
+ serialNumber.setCurrentDateStr(currentDate);
+ this.updateById(serialNumber);
+ serialNo = prefixNumber + specialNumber + currentDate + String.format("%0" + serialLength + "d", startSerial);
+ }
+ return serialNo;
+ }
+}
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminUserServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminUserServiceImpl.java
index 484228df..dedea371 100644
--- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminUserServiceImpl.java
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminUserServiceImpl.java
@@ -67,6 +67,10 @@ public class AdminUserServiceImpl extends ServiceImpl rmaps.contains(r.getId()))
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AppUserApplyforServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AppUserApplyforServiceImpl.java
index f3d5ca6f..0a1eb371 100644
--- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AppUserApplyforServiceImpl.java
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AppUserApplyforServiceImpl.java
@@ -22,13 +22,11 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import org.ttzero.excel.util.StringUtil;
import javax.annotation.Resource;
import java.time.LocalDateTime;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -111,7 +109,7 @@ public class AppUserApplyforServiceImpl extends ServiceImpl areas=customerService.getAreas(Arrays.stream(appUser.getCompanyId().split(",")).map(Integer::parseInt).collect(Collectors.toList()));
+ Collection areas = customerService.getAreas(Arrays.stream(appUser.getCompanyId().split(",")).map(Integer::parseInt).collect(Collectors.toList()));
vo.setUser(new AppUserVO()
- .setAreaName(StrUtil.join(",",areas))
+ .setAreaName(StrUtil.join(",", areas))
.setSalesUserName(appUser.getSalesUserName())
.setState(1)
.setTitle(Objects.isNull(appUser.getTitleId()) ? "" : positionService.getById(appUser.getTitleId()).getPositionName())
@@ -202,6 +200,9 @@ public class AppUserApplyforServiceImpl extends ServiceImpl companyIds = new ArrayList<>();
+ companyIds.add(applyfor.getCompanyId());
+ String quoationCode = appUserService.getAppUserQuotationCode(companyIds);
AppUser user = new AppUser()
.setLoginName(applyfor.getUserEmail())
.setName(applyfor.getUserName())
@@ -221,12 +222,21 @@ public class AppUserApplyforServiceImpl extends ServiceImpl companyIds = Arrays.stream(appUser.getCompanyId().split(","))
+ .map(Integer::parseInt)
+ .collect(Collectors.toSet());
+ String quoationCode = appUserService.getAppUserQuotationCode(new ArrayList<>(companyIds));
+ appUser.setQuotationCode(quoationCode);
+ }
appUser.setState(UserState.Activated.getState())
.setUpdateBy(applyUser.getName())
.setUpdateTime(LocalDateTime.now());
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AppUserServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AppUserServiceImpl.java
index 8f7c7500..74166ae0 100644
--- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AppUserServiceImpl.java
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AppUserServiceImpl.java
@@ -1,6 +1,7 @@
package com.nflg.mobilebroken.repository.service.impl;
import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -30,6 +31,7 @@ import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.chrono.ChronoLocalDate;
import java.util.*;
+import java.util.function.Function;
import java.util.stream.Collectors;
/**
@@ -71,6 +73,101 @@ public class AppUserServiceImpl extends ServiceImpl impl
@Resource
private ITBaseAreaService baseAreaService;
+ @Resource
+ private IAdminBaseSerialNumberService adminBaseSerialNumberService;
+
+ @Override
+ public String getAppUserQuotationCode(List companyId) {
+ if (CollectionUtil.isEmpty(companyId))
+ return "";
+ // 根据公司ID查询公司的区域信息
+ List customers = customerService.lambdaQuery()
+ .in(TBaseCustomer::getId, companyId)
+ .eq(TBaseCustomer::getQuotationUse, true)
+ .list();
+ if (CollectionUtil.isEmpty(customers)) {
+ return "";
+ }
+
+ // 获取到公司的区域代码
+ List areaCodes = customers.stream()
+ .map(TBaseCustomer::getAreaCode)
+ .collect(Collectors.toList());
+ Set uniqueAreaCodes = areaCodes.stream()
+ .filter(StrUtil::isNotBlank)
+ .flatMap(code -> Arrays.stream(code.split(",")))
+ .filter(StrUtil::isNotBlank)
+ .collect(Collectors.toSet());
+ VUtils.trueThrowBusinessError(CollectionUtil.isEmpty(uniqueAreaCodes)).throwMessage("存在未维护区域信息的代理公司,请先维护区域信息");
+ String specialCode = "";
+ List areas = adminAreaService.lambdaQuery()
+ .in(TBaseArea::getAreaCode, uniqueAreaCodes)
+ .list();
+ VUtils.trueThrowBusinessError(CollectionUtil.isEmpty(areas)).throwMessage("代理公司的区域信息维护有误,请先维护区域信息");
+// for (TBaseArea area : areas) {
+// VUtils.trueThrowBusinessError(StrUtil.isBlank(area.getAreaQuoteCode())).throwMessage("区域报价代码没有维护,请先维护");
+// specialCode += "-" + area.getAreaQuoteCode();
+// }
+ // 如果是只有一个公司或区域,就返回区域报价代码
+ if (areas.size() == 1) {
+ VUtils.trueThrowBusinessError(StrUtil.isBlank(areas.get(0).getAreaQuoteCode())).throwMessage("区域报价代码没有维护,请先维护");
+ specialCode = areas.get(0).getAreaQuoteCode();
+ }
+ // 如果存在多个公司或区域,需要查询上级
+ Set parentIds = areas.stream()
+ .map(TBaseArea::getParentAreaRowId)
+ .filter(Objects::nonNull)
+ .collect(Collectors.toSet());
+ List parentAreas = adminAreaService.lambdaQuery()
+ .in(TBaseArea::getId, parentIds)
+ .list();
+ // 如果只有一个上级,就返回上级报价代码
+ if (parentAreas.size() == 1) {
+ VUtils.trueThrowBusinessError(StrUtil.isBlank(parentAreas.get(0).getAreaQuoteCode())).throwMessage("区域报价代码没有维护,请先维护");
+ specialCode = parentAreas.get(0).getAreaQuoteCode();
+ } else {
+ // 多个上级,区别处理,合并相同上级的,单独列出一个上级的
+ Map parentCountMap = areas.stream()
+ .map(TBaseArea::getParentAreaRowId)
+ .filter(Objects::nonNull)
+ .collect(Collectors.groupingBy(
+ Function.identity(),
+ Collectors.counting()
+ ));
+ Set parentIds2 = parentCountMap.entrySet().stream()
+ .filter(entry -> entry.getValue() > 2) // 出现次数大于2
+ .map(Map.Entry::getKey)
+ .collect(Collectors.toSet());
+
+ for (Integer parentId : parentIds2) {
+ TBaseArea parentArea = parentAreas.stream()
+ .filter(area -> area.getId().equals(parentId))
+ .findFirst()
+ .orElse(null);
+ VUtils.trueThrowBusinessError(ObjectUtil.isNull(parentArea) || StrUtil.isBlank(parentArea.getAreaQuoteCode())).throwMessage("区域报价代码没有维护,请先维护");
+ specialCode += "-" + parentArea.getAreaQuoteCode();
+ }
+
+ Set parentIds1 = parentCountMap.entrySet().stream()
+ .filter(entry -> entry.getValue() == 1) // 出现次数=1
+ .map(Map.Entry::getKey)
+ .collect(Collectors.toSet());
+
+ List parentAreas1 = areas.stream()
+ .filter(area -> parentIds1.contains(area.getParentAreaRowId()))
+ .collect(Collectors.toList());
+
+ for (TBaseArea baseArea : parentAreas1) {
+ VUtils.trueThrowBusinessError(StrUtil.isBlank(baseArea.getAreaQuoteCode())).throwMessage("区域报价代码没有维护,请先维护");
+ specialCode += "-" + baseArea.getAreaQuoteCode();
+ }
+ }
+
+ String code = adminBaseSerialNumberService.generateSerialNumber(1, "", specialCode, false, 6);
+ return code;
+ }
+
+
@Override
public AppUser getUser(String userName, String password) {
AppUser user = lambdaQuery()
@@ -157,6 +254,8 @@ public class AppUserServiceImpl extends ServiceImpl impl
}
String encodePassword = PASSWORDENCODER.encode(request.getPassword());
AppUser user = lambdaQuery().eq(AppUser::getLoginName, request.getLoginName()).one();
+ String quotationCode = getAppUserQuotationCode(request.getCompanyIds());
+
if (Objects.nonNull(user)) {
VUtils.trueThrowBusinessError(!user.getIsDel()).throwMessage("登录名已存在");
user.setIsDel(false)
@@ -175,9 +274,11 @@ public class AppUserServiceImpl extends ServiceImpl impl
.setDepartmentId(request.getDepartmentId())
.setRegionTypeId(request.getRegionTypeId())
.setState(UserState.ToBeActivated.getState())
+ .setQuotationCode(quotationCode)
.setExpireTime(LocalDate.of(LocalDateTime.now().getYear() + 1, 1, 1));
updateById(user);
} else {
+ // String quotationCode = adminBaseSerialNumberService.generateSerialNumber(1, "A", "", false, 6);
user = new AppUser()
.setLoginName(request.getLoginName())
.setName(request.getUserName())
@@ -194,6 +295,7 @@ public class AppUserServiceImpl extends ServiceImpl impl
.setRegionTypeId(request.getRegionTypeId())
.setCreateBy(AdminUserUtil.getUserName())
.setCreateTime(LocalDateTime.now())
+ .setQuotationCode(quotationCode)
.setState(UserState.ToBeActivated.getState())
.setExpireTime(LocalDate.of(LocalDateTime.now().getYear() + 1, 1, 1));
save(user);
@@ -402,16 +504,32 @@ public class AppUserServiceImpl extends ServiceImpl impl
public void migrate(MigrateAppUserRequest request) {
AppUser appUser = getPrimaryByCompanyId(request.getCompanyId().toString());
VUtils.trueThrowBusinessError(Objects.isNull(appUser)).throwMessage("该公司还未设置主账号");
- lambdaUpdate()
- .set(AppUser::getCompanyId, request.getCompanyId())
- .set(AppUser::getExpireTime, appUser.getExpireTime())
-// .set(AppUser::getUpdateBy, AdminUserUtil.getUserId())
- .set(AppUser::getAreaId, null)
- .set(AppUser::getUpdateTime, LocalDateTime.now())
- .eq(AppUser::getIsDel, false)
- .eq(AppUser::getIsPrimary, false)
- .in(AppUser::getId, request.getUserIds())
- .update();
+ List companyIds = new ArrayList<>();
+ companyIds.add(request.getCompanyId());
+
+ for (Integer userId : request.getUserIds()) {
+ String quotaionCode = getAppUserQuotationCode(companyIds);
+ lambdaUpdate()
+ .set(AppUser::getQuotationCode, quotaionCode)
+ .set(AppUser::getCompanyId, request.getCompanyId())
+ .set(AppUser::getExpireTime, appUser.getExpireTime())
+ .set(AppUser::getAreaId, null)
+ .set(AppUser::getUpdateTime, LocalDateTime.now())
+ .eq(AppUser::getIsDel, false)
+ .eq(AppUser::getIsPrimary, false)
+ .eq(AppUser::getId, userId)
+ .update();
+ }
+// lambdaUpdate()
+// .set(AppUser::getCompanyId, request.getCompanyId())
+// .set(AppUser::getExpireTime, appUser.getExpireTime())
+//// .set(AppUser::getUpdateBy, AdminUserUtil.getUserId())
+// .set(AppUser::getAreaId, null)
+// .set(AppUser::getUpdateTime, LocalDateTime.now())
+// .eq(AppUser::getIsDel, false)
+// .eq(AppUser::getIsPrimary, false)
+// .in(AppUser::getId, request.getUserIds())
+// .update();
}
@Override
@@ -576,13 +694,27 @@ public class AppUserServiceImpl extends ServiceImpl impl
@Override
public void enable(EnableAppUserRequest request) {
if (request.getEnable()) {
- lambdaUpdate()
- .set(AppUser::getState, UserState.Activated.getState())
- .set(AppUser::getUpdateBy, AdminUserUtil.getUserId())
- .set(AppUser::getUpdateTime, LocalDateTime.now())
- .eq(AppUser::getIsDel, false)
- .in(AppUser::getId, request.getIds())
- .update();
+ for (Integer id : request.getIds()) {
+ AppUser appUser = getById(id);
+ List companyIds = Arrays.stream(appUser.getCompanyId().split(",")).filter(StrUtil::isNotBlank).map(Integer::valueOf).collect(Collectors.toList());
+ String quoationCode = getAppUserQuotationCode(companyIds);
+ lambdaUpdate()
+ .set(AppUser::getQuotationCode, quoationCode)
+ .set(AppUser::getState, UserState.Activated.getState())
+ .set(AppUser::getUpdateBy, AdminUserUtil.getUserId())
+ .set(AppUser::getUpdateTime, LocalDateTime.now())
+ .eq(AppUser::getIsDel, false)
+ .eq(AppUser::getId, id)
+ .update();
+ }
+
+// lambdaUpdate()
+// .set(AppUser::getState, UserState.Activated.getState())
+// .set(AppUser::getUpdateBy, AdminUserUtil.getUserId())
+// .set(AppUser::getUpdateTime, LocalDateTime.now())
+// .eq(AppUser::getIsDel, false)
+// .in(AppUser::getId, request.getIds())
+// .update();
} else {
lambdaUpdate()
.set(AppUser::getState, UserState.Disabled.getState())
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/QuotationModelForbidServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/QuotationModelForbidServiceImpl.java
new file mode 100644
index 00000000..8a2c1d3f
--- /dev/null
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/QuotationModelForbidServiceImpl.java
@@ -0,0 +1,20 @@
+package com.nflg.mobilebroken.repository.service.impl;
+
+import com.nflg.mobilebroken.repository.entity.QuotationModelForbid;
+import com.nflg.mobilebroken.repository.mapper.QuotationModelForbidMapper;
+import com.nflg.mobilebroken.repository.service.IQuotationModelForbidService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 代码生成器生成
+ * @since 2026
+ */
+@Service
+public class QuotationModelForbidServiceImpl extends ServiceImpl implements IQuotationModelForbidService {
+
+}
diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/AdminBaseSerialNumberMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/AdminBaseSerialNumberMapper.xml
new file mode 100644
index 00000000..c4699c1b
--- /dev/null
+++ b/nflg-mobilebroken-repository/src/main/resources/mapper/AdminBaseSerialNumberMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/QuotationModelForbidMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/QuotationModelForbidMapper.xml
new file mode 100644
index 00000000..15f6abd5
--- /dev/null
+++ b/nflg-mobilebroken-repository/src/main/resources/mapper/QuotationModelForbidMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/nflg-mobilebroken-repository/src/test/java/com/nflg/mobilebroken/repository/CodeGeneratorTest.java b/nflg-mobilebroken-repository/src/test/java/com/nflg/mobilebroken/repository/CodeGeneratorTest.java
index 85bd2504..07b2b439 100644
--- a/nflg-mobilebroken-repository/src/test/java/com/nflg/mobilebroken/repository/CodeGeneratorTest.java
+++ b/nflg-mobilebroken-repository/src/test/java/com/nflg/mobilebroken/repository/CodeGeneratorTest.java
@@ -33,7 +33,7 @@ public class CodeGeneratorTest {
, Paths.get(System.getProperty("user.dir")) + "/src/main/resources/mapper"))
)
.strategyConfig(builder -> {
- builder.addInclude("admin_permission_role_column_map") //只生成指定表
+ builder.addInclude("t_base_area") //只生成指定表
.entityBuilder()
.enableLombok()
.enableChainModel()
From cf24a90f84d01b47700a77b1b32c81779af2aec6 Mon Sep 17 00:00:00 2001
From: zhangke
Date: Wed, 11 Feb 2026 14:33:39 +0800
Subject: [PATCH 2/2] =?UTF-8?q?1=E3=80=81=E7=94=A8=E6=88=B7=E5=92=8Capp?=
=?UTF-8?q?=E7=94=A8=E6=88=B7=E6=B7=BB=E5=8A=A0=E6=8A=A5=E4=BB=B7=E4=BA=BA?=
=?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=9A=84=E5=86=85=E5=AE=B9=EF=BC=9B=202?=
=?UTF-8?q?=E3=80=81=E6=B7=BB=E5=8A=A0=E7=BC=96=E7=A0=81=E7=94=9F=E6=88=90?=
=?UTF-8?q?=E8=A7=84=E5=88=99=203=E3=80=81=E5=8C=BA=E5=9F=9F=E6=B7=BB?=
=?UTF-8?q?=E5=8A=A0=E4=B8=80=E4=B8=AA=E6=8A=A5=E4=BB=B7=E4=BB=A3=E7=A0=81?=
=?UTF-8?q?=E7=9A=84=E5=AD=97=E6=AE=B5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../request/EditQuotationDiscountRequest.java | 55 +++++++++
.../common/pojo/vo/QuotationDiscountVO.java | 68 +++++++++++
.../quotation/annotation/ApiMark.java | 19 +++
.../quotation/controller/ControllerBase.java | 10 ++
.../QuotationModelDiscountController.java | 82 +++++++++++++
.../entity/QuotationModelDiscount.java | 109 ++++++++++++++++++
.../entity/QuotationModelDiscountItem.java | 63 ++++++++++
.../QuotationModelDiscountItemMapper.java | 16 +++
.../mapper/QuotationModelDiscountMapper.java | 16 +++
.../IQuotationModelDiscountItemService.java | 16 +++
.../IQuotationModelDiscountService.java | 16 +++
.../AdminBaseSerialNumberServiceImpl.java | 7 +-
...QuotationModelDiscountItemServiceImpl.java | 20 ++++
.../QuotationModelDiscountServiceImpl.java | 20 ++++
.../QuotationModelDiscountItemMapper.xml | 5 +
.../mapper/QuotationModelDiscountMapper.xml | 5 +
.../repository/CodeGeneratorTest.java | 2 +-
17 files changed, 524 insertions(+), 5 deletions(-)
create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/EditQuotationDiscountRequest.java
create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/QuotationDiscountVO.java
create mode 100644 nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/annotation/ApiMark.java
create mode 100644 nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/ControllerBase.java
create mode 100644 nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/QuotationModelDiscountController.java
create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/QuotationModelDiscount.java
create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/QuotationModelDiscountItem.java
create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/QuotationModelDiscountItemMapper.java
create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/QuotationModelDiscountMapper.java
create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IQuotationModelDiscountItemService.java
create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IQuotationModelDiscountService.java
create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/QuotationModelDiscountItemServiceImpl.java
create mode 100644 nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/QuotationModelDiscountServiceImpl.java
create mode 100644 nflg-mobilebroken-repository/src/main/resources/mapper/QuotationModelDiscountItemMapper.xml
create mode 100644 nflg-mobilebroken-repository/src/main/resources/mapper/QuotationModelDiscountMapper.xml
diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/EditQuotationDiscountRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/EditQuotationDiscountRequest.java
new file mode 100644
index 00000000..9d2921eb
--- /dev/null
+++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/EditQuotationDiscountRequest.java
@@ -0,0 +1,55 @@
+package com.nflg.mobilebroken.common.pojo.request;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Data
+@Accessors(chain = true)
+public class EditQuotationDiscountRequest {
+
+ /**
+ * 流水号
+ */
+ private Integer id;
+
+ /**
+ * 机型编号
+ */
+ private Integer modelId;
+
+ /**
+ * 国内折扣
+ */
+ private BigDecimal domesticDiscountRate;
+
+ /**
+ * 国内折扣开始时间
+ */
+ private LocalDateTime domesticBeginTime;
+
+ /**
+ * 国内折扣结束时间
+ */
+ private LocalDateTime domesticEndTime;
+
+ /**
+ * 国内折扣率
+ */
+ private BigDecimal overseasDiscountRate;
+
+ /**
+ * 国外折扣开始时间
+ */
+ private LocalDateTime overseasBeginTime;
+
+ /**
+ * 国外折扣结束时间
+ */
+ private LocalDateTime overseasEndTime;
+
+}
diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/QuotationDiscountVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/QuotationDiscountVO.java
new file mode 100644
index 00000000..2328162a
--- /dev/null
+++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/QuotationDiscountVO.java
@@ -0,0 +1,68 @@
+package com.nflg.mobilebroken.common.pojo.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Data
+@Accessors(chain = true)
+public class QuotationDiscountVO {
+
+ private Integer id;
+
+ /**
+ * 机型编号
+ */
+ @NotNull
+ private Integer modelId;
+
+ /**
+ * 国内折扣
+ */
+ @NotNull
+ private BigDecimal domesticDiscountRate;
+
+ /**
+ * 国内折扣开始时间
+ */
+ @NotNull
+ private LocalDateTime domesticBeginTime;
+
+ /**
+ * 国内折扣结束时间
+ */
+ @NotNull
+ private LocalDateTime domesticEndTime;
+
+ /**
+ * 折扣天数
+ */
+ @NotNull
+ private Integer domesticDiscountDay;
+
+ /**
+ * 国内折扣率
+ */
+ @NotNull
+ private BigDecimal overseasDiscountRate;
+
+ /**
+ * 国外折扣开始时间
+ */
+ @NotNull
+ private LocalDateTime overseasBeginTime;
+
+ /**
+ * 国外折扣结束时间
+ */
+ @NotNull
+ private LocalDateTime overseasEndTime;
+
+
+}
diff --git a/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/annotation/ApiMark.java b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/annotation/ApiMark.java
new file mode 100644
index 00000000..5a78ac07
--- /dev/null
+++ b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/annotation/ApiMark.java
@@ -0,0 +1,19 @@
+package com.nflg.mobilebroken.quotation.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+public @interface ApiMark {
+
+ String apiName() default "";
+
+ String moduleName() default "";
+
+ String code() default "";
+
+ boolean isPublic() default false;
+}
diff --git a/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/ControllerBase.java b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/ControllerBase.java
new file mode 100644
index 00000000..bbf4d203
--- /dev/null
+++ b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/ControllerBase.java
@@ -0,0 +1,10 @@
+package com.nflg.mobilebroken.quotation.controller;
+
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RestController;
+
+@Validated
+@RestController
+public class ControllerBase {
+
+}
\ No newline at end of file
diff --git a/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/QuotationModelDiscountController.java b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/QuotationModelDiscountController.java
new file mode 100644
index 00000000..59a94a09
--- /dev/null
+++ b/nflg-mobilebroken-quotation/src/main/java/com/nflg/mobilebroken/quotation/controller/QuotationModelDiscountController.java
@@ -0,0 +1,82 @@
+package com.nflg.mobilebroken.quotation.controller;
+
+import com.nflg.mobilebroken.common.pojo.ApiResult;
+import com.nflg.mobilebroken.common.pojo.request.EditQuotationDiscountRequest;
+import com.nflg.mobilebroken.common.pojo.vo.DepartmentSimpleVO;
+import com.nflg.mobilebroken.common.pojo.vo.QuotationDiscountVO;
+import com.nflg.mobilebroken.common.util.AdminUserUtil;
+import com.nflg.mobilebroken.quotation.annotation.ApiMark;
+import com.nflg.mobilebroken.repository.entity.QuotationModelDiscount;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.time.LocalDateTime;
+import java.time.temporal.ChronoUnit;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+@RestController
+@RequestMapping("/discount")
+@Slf4j
+public class QuotationModelDiscountController extends ControllerBase {
+ @PostMapping("save")
+ @ApiMark(moduleName = "折扣管理", apiName = "保存设备的折扣信息")
+ public ApiResult getSimpleDepartments(List requests) {
+ List addDatas = requests.stream()
+ .filter(request -> Objects.isNull(request.getId()))
+ .map(request -> {
+ return new QuotationModelDiscount()
+ .setModelId(request.getModelId())
+ .setDomesticDiscountRate(request.getDomesticDiscountRate())
+ .setDomesticBeginTime(request.getDomesticBeginTime())
+ .setDomesticEndTime(request.getDomesticEndTime())
+ .setDomesticDiscountDay(Math.toIntExact(ChronoUnit.DAYS.between(request.getDomesticBeginTime(), request.getDomesticEndTime())))
+ .setOverseasBeginTime(request.getOverseasBeginTime())
+ .setOverseasEndTime(request.getOverseasEndTime())
+ .setOverseasDiscountRate(request.getOverseasDiscountRate())
+ .setOverseasDiscountDay(Math.toIntExact(ChronoUnit.DAYS.between(request.getOverseasBeginTime(), request.getOverseasEndTime())))
+ .setCreateById(AdminUserUtil.getUserId())
+ .setCreateBy(AdminUserUtil.getUserName())
+ .setCreateTime(LocalDateTime.now());
+ }).collect(Collectors.toList());
+
+ List editDatas = requests.stream()
+ .filter(request -> Objects.nonNull(request.getId()))
+ .map(request -> {
+ return new QuotationModelDiscount()
+ .setId(request.getId())
+ .setModelId(request.getModelId())
+ .setDomesticDiscountRate(request.getDomesticDiscountRate())
+ .setDomesticBeginTime(request.getDomesticBeginTime())
+ .setDomesticEndTime(request.getDomesticEndTime())
+ .setDomesticDiscountDay(Math.toIntExact(ChronoUnit.DAYS.between(request.getDomesticBeginTime(), request.getDomesticEndTime())))
+ .setOverseasBeginTime(request.getOverseasBeginTime())
+ .setOverseasEndTime(request.getOverseasEndTime())
+ .setOverseasDiscountRate(request.getOverseasDiscountRate())
+ .setOverseasDiscountDay(Math.toIntExact(ChronoUnit.DAYS.between(request.getOverseasBeginTime(), request.getOverseasEndTime())))
+ .setUpdateById(AdminUserUtil.getUserId())
+ .setUpdateBy(AdminUserUtil.getUserName())
+ .setUpdateTime(LocalDateTime.now());
+ }).collect(Collectors.toList());
+
+// List datas = requests.stream()
+// .map(request -> {
+// QuotationModelDiscount discount = new QuotationModelDiscount();
+// discount.setModelId(request.getId());
+// discount.setDomesticDiscountRate(request.getDomesticDiscountRate());
+// discount.setDomesticBeginTime(request.getDomesticBeginTime());
+// discount.setDomesticEndTime(request.getDomesticEndTime());
+// discount.setDomesticDiscountDay(request.getDomesticDiscountDay());
+// })
+ return ApiResult.success(departmentService.getSimpleDepartments());
+ }
+ //分页
+ //保存
+ //导入
+ //导出
+ //设置折扣人信息
+ //查询折扣人信息
+}
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/QuotationModelDiscount.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/QuotationModelDiscount.java
new file mode 100644
index 00000000..67265dbc
--- /dev/null
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/QuotationModelDiscount.java
@@ -0,0 +1,109 @@
+package com.nflg.mobilebroken.repository.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Accessors;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 代码生成器生成
+ * @since 2026
+ */
+@Getter
+@Setter
+@Accessors(chain = true)
+@TableName("quotation_model_discount")
+public class QuotationModelDiscount implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 流水号
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ /**
+ * 机型编号
+ */
+ private Integer modelId;
+
+ /**
+ * 国内折扣
+ */
+ private BigDecimal domesticDiscountRate;
+
+ /**
+ * 国内折扣开始时间
+ */
+ private LocalDateTime domesticBeginTime;
+
+ /**
+ * 国内折扣结束时间
+ */
+ private LocalDateTime domesticEndTime;
+
+ /**
+ * 折扣天数
+ */
+ private Integer domesticDiscountDay;
+
+ /**
+ * 国内折扣率
+ */
+ private BigDecimal overseasDiscountRate;
+
+ /**
+ * 国外折扣开始时间
+ */
+ private LocalDateTime overseasBeginTime;
+
+ /**
+ * 国外折扣结束时间
+ */
+ private LocalDateTime overseasEndTime;
+
+ /**
+ * 国外折扣天数
+ */
+ private Integer overseasDiscountDay;
+
+ /**
+ * 创建人
+ */
+ private String createBy;
+
+ /**
+ * 创建时间
+ */
+ private LocalDateTime createTime;
+
+ /**
+ * 更新人
+ */
+ private String updateBy;
+
+ /**
+ * 更新时间
+ */
+ private LocalDateTime updateTime;
+
+ /**
+ * 新增人编号
+ */
+ private Integer createById;
+
+ /**
+ * 修改人编号
+ */
+ private Integer updateById;
+}
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/QuotationModelDiscountItem.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/QuotationModelDiscountItem.java
new file mode 100644
index 00000000..aecbd24f
--- /dev/null
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/QuotationModelDiscountItem.java
@@ -0,0 +1,63 @@
+package com.nflg.mobilebroken.repository.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Accessors;
+
+/**
+ *
+ *
+ *
+ *
+ * @author 代码生成器生成
+ * @since 2026
+ */
+@Getter
+@Setter
+@Accessors(chain = true)
+@TableName("quotation_model_discount_item")
+public class QuotationModelDiscountItem implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ /**
+ * 折扣ID
+ */
+ private Integer discountId;
+
+ /**
+ * 用户ID
+ */
+ private Integer userId;
+
+ /**
+ * 用户类型 0 内部用户;1 代理商用户
+ */
+ private Integer userType;
+
+ /**
+ * 创建人
+ */
+ private String createBy;
+
+ /**
+ * 创建时间
+ */
+ private LocalDateTime createTime;
+
+ /**
+ * 新增人编号
+ */
+ private Integer createById;
+}
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/QuotationModelDiscountItemMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/QuotationModelDiscountItemMapper.java
new file mode 100644
index 00000000..583a0d3f
--- /dev/null
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/QuotationModelDiscountItemMapper.java
@@ -0,0 +1,16 @@
+package com.nflg.mobilebroken.repository.mapper;
+
+import com.nflg.mobilebroken.repository.entity.QuotationModelDiscountItem;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 代码生成器生成
+ * @since 2026
+ */
+public interface QuotationModelDiscountItemMapper extends BaseMapper {
+
+}
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/QuotationModelDiscountMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/QuotationModelDiscountMapper.java
new file mode 100644
index 00000000..8d2ec666
--- /dev/null
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/QuotationModelDiscountMapper.java
@@ -0,0 +1,16 @@
+package com.nflg.mobilebroken.repository.mapper;
+
+import com.nflg.mobilebroken.repository.entity.QuotationModelDiscount;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author 代码生成器生成
+ * @since 2026
+ */
+public interface QuotationModelDiscountMapper extends BaseMapper {
+
+}
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IQuotationModelDiscountItemService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IQuotationModelDiscountItemService.java
new file mode 100644
index 00000000..89045269
--- /dev/null
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IQuotationModelDiscountItemService.java
@@ -0,0 +1,16 @@
+package com.nflg.mobilebroken.repository.service;
+
+import com.nflg.mobilebroken.repository.entity.QuotationModelDiscountItem;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 代码生成器生成
+ * @since 2026
+ */
+public interface IQuotationModelDiscountItemService extends IService {
+
+}
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IQuotationModelDiscountService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IQuotationModelDiscountService.java
new file mode 100644
index 00000000..3e348372
--- /dev/null
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IQuotationModelDiscountService.java
@@ -0,0 +1,16 @@
+package com.nflg.mobilebroken.repository.service;
+
+import com.nflg.mobilebroken.repository.entity.QuotationModelDiscount;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author 代码生成器生成
+ * @since 2026
+ */
+public interface IQuotationModelDiscountService extends IService {
+
+}
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminBaseSerialNumberServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminBaseSerialNumberServiceImpl.java
index 84a1c641..17da2696 100644
--- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminBaseSerialNumberServiceImpl.java
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminBaseSerialNumberServiceImpl.java
@@ -1,6 +1,5 @@
package com.nflg.mobilebroken.repository.service.impl;
-import cn.hutool.core.util.StrUtil;
import com.nflg.mobilebroken.repository.entity.AdminBaseSerialNumber;
import com.nflg.mobilebroken.repository.mapper.AdminBaseSerialNumberMapper;
import com.nflg.mobilebroken.repository.service.IAdminBaseSerialNumberService;
@@ -24,7 +23,7 @@ import java.util.Objects;
@Service
public class AdminBaseSerialNumberServiceImpl extends ServiceImpl implements IAdminBaseSerialNumberService {
private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd");
- private static final int MAX_RETRY = 5; // 最大重试次数
+ //private static final int MAX_RETRY = 5; // 最大重试次数
@Retryable(
maxAttempts = 5, // 最大重试次数(包括第一次调用)
@@ -35,7 +34,7 @@ public class AdminBaseSerialNumberServiceImpl extends ServiceImpl
+ * 服务实现类
+ *
+ *
+ * @author 代码生成器生成
+ * @since 2026
+ */
+@Service
+public class QuotationModelDiscountItemServiceImpl extends ServiceImpl implements IQuotationModelDiscountItemService {
+
+}
diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/QuotationModelDiscountServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/QuotationModelDiscountServiceImpl.java
new file mode 100644
index 00000000..695d9d53
--- /dev/null
+++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/QuotationModelDiscountServiceImpl.java
@@ -0,0 +1,20 @@
+package com.nflg.mobilebroken.repository.service.impl;
+
+import com.nflg.mobilebroken.repository.entity.QuotationModelDiscount;
+import com.nflg.mobilebroken.repository.mapper.QuotationModelDiscountMapper;
+import com.nflg.mobilebroken.repository.service.IQuotationModelDiscountService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author 代码生成器生成
+ * @since 2026
+ */
+@Service
+public class QuotationModelDiscountServiceImpl extends ServiceImpl implements IQuotationModelDiscountService {
+
+}
diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/QuotationModelDiscountItemMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/QuotationModelDiscountItemMapper.xml
new file mode 100644
index 00000000..e4752d5d
--- /dev/null
+++ b/nflg-mobilebroken-repository/src/main/resources/mapper/QuotationModelDiscountItemMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/QuotationModelDiscountMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/QuotationModelDiscountMapper.xml
new file mode 100644
index 00000000..6487cfec
--- /dev/null
+++ b/nflg-mobilebroken-repository/src/main/resources/mapper/QuotationModelDiscountMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/nflg-mobilebroken-repository/src/test/java/com/nflg/mobilebroken/repository/CodeGeneratorTest.java b/nflg-mobilebroken-repository/src/test/java/com/nflg/mobilebroken/repository/CodeGeneratorTest.java
index 07b2b439..4915203b 100644
--- a/nflg-mobilebroken-repository/src/test/java/com/nflg/mobilebroken/repository/CodeGeneratorTest.java
+++ b/nflg-mobilebroken-repository/src/test/java/com/nflg/mobilebroken/repository/CodeGeneratorTest.java
@@ -33,7 +33,7 @@ public class CodeGeneratorTest {
, Paths.get(System.getProperty("user.dir")) + "/src/main/resources/mapper"))
)
.strategyConfig(builder -> {
- builder.addInclude("t_base_area") //只生成指定表
+ builder.addInclude("quotation_model_discount_item") //只生成指定表
.entityBuilder()
.enableLombok()
.enableChainModel()