Ver Fonte

feat(customer): 优化伙伴商管理功能

- 修改销售信息验证逻辑,将信用等级字段替换为信用管理ID
- 为合作伙伴联系人实体添加地址字段支持
- 在PartnerContacts相关类中增加address属性定义
- 优化伙伴商查询排序,默认按创建时间倒序排列
- 实现伙伴商编号自动生成功能,格式为P+年份+序号
- 添加generatePartnerNo方法处理编号生成逻辑
hurx há 3 dias atrás
pai
commit
b9b50523a6

+ 4 - 1
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/PartnerContacts.java

@@ -68,5 +68,8 @@ public class PartnerContacts extends TenantEntity {
      */
     private String remark;
 
-
+    /**
+     * 地址
+     */
+    private String address;
 }

+ 0 - 1
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/PartnerInfo.java

@@ -88,5 +88,4 @@ public class PartnerInfo extends TenantEntity {
     @TableLogic
     private String delFlag;
 
-
 }

+ 4 - 1
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/bo/PartnerContactsBo.java

@@ -62,5 +62,8 @@ public class PartnerContactsBo extends BaseEntity {
 //    @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
     private String remark;
 
-
+    /**
+     * 地址
+     */
+    private String address;
 }

+ 4 - 2
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/domain/vo/PartnerContactsVo.java

@@ -13,7 +13,6 @@ import java.io.Serializable;
 import java.util.Date;
 
 
-
 /**
  * 伙伴商联系人视图对象 partner_contacts
  *
@@ -79,5 +78,8 @@ public class PartnerContactsVo implements Serializable {
     @ExcelProperty(value = "备注")
     private String remark;
 
-
+    /**
+     * 地址
+     */
+    private String address;
 }

+ 1 - 1
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/service/impl/CustomerInfoServiceImpl.java

@@ -1096,7 +1096,7 @@ public class CustomerInfoServiceImpl extends ServiceImpl<CustomerInfoMapper, Cus
                 if (null == salesInfoVo.getSettlementMethod()) {
                     throw new ServiceException("ERP销售人员结算方式不能为空");
                 }
-                if (null == salesInfoVo.getCreditLevel()) {
+                if (null == salesInfoVo.getCreditManagementId()) {
                     throw new ServiceException("ERP销售人员信用等级不能为空");
                 }
             }

+ 36 - 1
ruoyi-modules/ruoyi-customer/src/main/java/org/dromara/customer/service/impl/PartnerInfoServiceImpl.java

@@ -79,7 +79,7 @@ public class PartnerInfoServiceImpl extends ServiceImpl<PartnerInfoMapper, Partn
     private LambdaQueryWrapper<PartnerInfo> buildQueryWrapper(PartnerInfoBo bo) {
         Map<String, Object> params = bo.getParams();
         LambdaQueryWrapper<PartnerInfo> lqw = Wrappers.lambdaQuery();
-        lqw.orderByAsc(PartnerInfo::getId);
+        lqw.orderByDesc(PartnerInfo::getCreateTime);
         lqw.eq(StringUtils.isNotBlank(bo.getPartnerNo()), PartnerInfo::getPartnerNo, bo.getPartnerNo());
         lqw.like(StringUtils.isNotBlank(bo.getPartnerName()), PartnerInfo::getPartnerName, bo.getPartnerName());
         lqw.eq(StringUtils.isNotBlank(bo.getCompany()), PartnerInfo::getCompany, bo.getCompany());
@@ -104,6 +104,8 @@ public class PartnerInfoServiceImpl extends ServiceImpl<PartnerInfoMapper, Partn
     public Boolean insertByBo(PartnerInfoBo bo) {
         PartnerInfo add = MapstructUtils.convert(bo, PartnerInfo.class);
         validEntityBeforeSave(add);
+        // 自动生成伙伴商编号
+        add.setPartnerNo(generatePartnerNo());
         boolean flag = baseMapper.insert(add) > 0;
         if (flag) {
             bo.setId(add.getId());
@@ -200,4 +202,37 @@ public class PartnerInfoServiceImpl extends ServiceImpl<PartnerInfoMapper, Partn
 
         return baseMapper.selectVoList(wrapper);
     }
+
+    /**
+     * 生成伙伴商编号(格式:P + 年份(4位) + 序号(3位),例如:P2026001)
+     */
+    private String generatePartnerNo() {
+        // 获取当前年份
+        String year = String.valueOf(java.time.LocalDate.now().getYear());
+        
+        // 查询当年最大的编号
+        LambdaQueryWrapper<PartnerInfo> lqw = Wrappers.lambdaQuery();
+        lqw.select(PartnerInfo::getPartnerNo);
+        lqw.likeRight(PartnerInfo::getPartnerNo, "P" + year);
+        lqw.orderByDesc(PartnerInfo::getPartnerNo);
+        lqw.last("LIMIT 1");
+        PartnerInfo maxRecord = baseMapper.selectOne(lqw);
+
+        int nextNum = 1;
+        if (maxRecord != null && StringUtils.isNotBlank(maxRecord.getPartnerNo())) {
+            try {
+                // 提取序号部分(最后3位)
+                String no = maxRecord.getPartnerNo();
+                if (no.length() >= 8) { // P + 4位年份 + 至少3位序号
+                    String seqStr = no.substring(no.length() - 3);
+                    nextNum = Integer.parseInt(seqStr) + 1;
+                }
+            } catch (NumberFormatException e) {
+                log.warn("解析伙伴商编号失败: {}", maxRecord.getPartnerNo());
+            }
+        }
+        
+        // 格式化为 P + 年份 + 3位序号,如 P2026001
+        return String.format("P%s%03d", year, nextNum);
+    }
 }