Ver Fonte

维多利亚

home há 2 anos atrás
pai
commit
e1f029753e

+ 2 - 1
hx-common/common-client-util/src/main/java/com/fjhx/utils/FileClientUtil.java

@@ -115,7 +115,8 @@ public class FileClientUtil {
      */
     public static Map<Long, List<FileInfo>> getFileInfoListMap(List<Long> businessId) {
         R<List<FileInfo>> result = fileClient.getFileInfo(businessId);
-        return result.getData().stream().collect(Collectors.groupingBy(FileInfo::getBusinessId));
+        List<FileInfo> fileInfoList = Assert.result(result);
+        return fileInfoList.stream().collect(Collectors.groupingBy(FileInfo::getBusinessId));
     }
 
     /**

+ 4 - 1
hx-common/common-tool/src/main/java/com/fjhx/base/BaseService.java

@@ -9,7 +9,6 @@ import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.fjhx.utils.PageUtil;
-import com.fjhx.utils.wrapperUtil.IWrapper;
 import org.springblade.core.secure.utils.AuthUtil;
 
 import java.util.*;
@@ -98,6 +97,10 @@ public interface BaseService<T> extends IService<T> {
         return count(Wrappers.<T>lambdaQuery().func(consumer));
     }
 
+    default Map<String, Object> getMap(Consumer<LambdaQueryWrapper<T>> consumer) {
+        return getMap(Wrappers.<T>lambdaQuery().func(consumer).last("limit 1"));
+    }
+
     default T getOne(Consumer<LambdaQueryWrapper<T>> consumer) {
         return getOne(Wrappers.<T>lambdaQuery().func(consumer).last("limit 1"));
     }

+ 7 - 11
hx-service/victoriatourist/src/main/java/com/fjhx/service/supplier/impl/SupplierServiceImpl.java

@@ -1,7 +1,6 @@
 package com.fjhx.service.supplier.impl;
 
 import cn.hutool.core.convert.Convert;
-import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -10,6 +9,7 @@ import com.fjhx.enums.supplier.AccountPeriodTypeEnum;
 import com.fjhx.mapper.supplier.SupplierMapper;
 import com.fjhx.params.supplier.SupplierVo;
 import com.fjhx.service.supplier.SupplierService;
+import com.fjhx.uitl.code.CodeEnum;
 import com.fjhx.utils.Assert;
 import com.fjhx.utils.FileClientUtil;
 import com.fjhx.utils.RegionClientUtil;
@@ -93,15 +93,9 @@ public class SupplierServiceImpl extends ServiceImpl<SupplierMapper, Supplier> i
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void add(SupplierVo supplierVo) {
-        String code = supplierVo.getCode();
 
         synchronized (this) {
-            if (ObjectUtil.isEmpty(code)) {
-                supplierVo.setCode(createCode());
-            } else {
-                Long count = count(Supplier::getCode, code);
-                Assert.eqZero(count, "供应商编码已存在");
-            }
+            supplierVo.setCode(CodeEnum.SUPPLIER.getCode());
             save(supplierVo);
         }
 
@@ -149,7 +143,7 @@ public class SupplierServiceImpl extends ServiceImpl<SupplierMapper, Supplier> i
                 .last("limit 1"));
 
         if (supplier == null) {
-            return codePrefix + "0001";
+            return codePrefix + "00001";
         }
 
         String code = supplier.getCode();
@@ -160,10 +154,12 @@ public class SupplierServiceImpl extends ServiceImpl<SupplierMapper, Supplier> i
         codeNum++;
 
         if (codeNum < 10) {
-            return codePrefix + "000" + codeNum;
+            return codePrefix + "0000" + codeNum;
         } else if (codeNum < 100) {
-            return codePrefix + "00" + codeNum;
+            return codePrefix + "000" + codeNum;
         } else if (codeNum < 1000) {
+            return codePrefix + "00" + codeNum;
+        } else if (codeNum < 10000) {
             return codePrefix + "0" + codeNum;
         }
         return codePrefix + codeNum;

+ 80 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/uitl/code/CodeEnum.java

@@ -0,0 +1,80 @@
+package com.fjhx.uitl.code;
+
+import cn.hutool.core.convert.Convert;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.extra.spring.SpringUtil;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fjhx.service.supplier.SupplierService;
+import lombok.Getter;
+
+import java.util.Date;
+import java.util.Map;
+
+@Getter
+public enum CodeEnum {
+
+    // 供应商code
+    SUPPLIER("GY", "-yyMM-", "code", SupplierService.class);
+
+    CodeEnum(String prefix, String dateFormat, String codeFieldName, Class<? extends IService<?>> entityCls) {
+        this.prefix = prefix;
+        this.dateFormat = dateFormat;
+        this.codeFieldName = codeFieldName;
+        this.service = SpringUtil.getBean(entityCls);
+    }
+
+    // 编码前缀
+    private final String prefix;
+    // 编码加日期规则
+    private final String dateFormat;
+    // 编码字段名
+    private final String codeFieldName;
+    // service
+    private final IService<?> service;
+
+    /**
+     * 获取键值对
+     */
+    public String getCode() {
+        String itemPrefix;
+
+        if (ObjectUtil.isNotEmpty(dateFormat)) {
+            Date date = new Date();
+            String format = DateUtil.format(date, dateFormat);
+            itemPrefix = prefix + format;
+        } else {
+            itemPrefix = prefix;
+        }
+
+        Object obj = service.query()
+                .likeRight(codeFieldName, itemPrefix)
+                .orderByDesc(codeFieldName)
+                .last("limit 1")
+                .one();
+
+        if (obj == null) {
+            return itemPrefix + "00001";
+        }
+
+        Map<String, Object> map = Convert.toMap(String.class, Object.class, obj);
+
+        String code = Convert.toStr(map.get(codeFieldName));
+
+        Integer codeNum = Convert.toInt(code.substring(itemPrefix.length()));
+
+        codeNum++;
+
+        if (codeNum < 10) {
+            return itemPrefix + "0000" + codeNum;
+        } else if (codeNum < 100) {
+            return itemPrefix + "000" + codeNum;
+        } else if (codeNum < 1000) {
+            return itemPrefix + "00" + codeNum;
+        } else if (codeNum < 10000) {
+            return itemPrefix + "0" + codeNum;
+        }
+        return itemPrefix + codeNum;
+    }
+
+}