Forráskód Böngészése

Merge remote-tracking branch 'origin/master'

qt5107 2 éve
szülő
commit
a7e1e7f453

+ 31 - 4
hx-common/common-client-util/src/main/java/com/fjhx/utils/FileClientUtil.java

@@ -1,15 +1,13 @@
 package com.fjhx.utils;
 
+import cn.hutool.core.convert.Convert;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.extra.spring.SpringUtil;
 import com.fjhx.entity.FileInfo;
 import com.fjhx.feign.IFileClient;
 import org.springblade.core.tool.api.R;
 
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 public class FileClientUtil {
@@ -112,9 +110,38 @@ 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));
     }
 
+    /**
+     * 赋值附件
+     */
+    public static void setFileInfoListMap(List<Map<String, Object>> list, String businessIdName, String fileInfoListName) {
+        List<Long> businessIdList = list.stream().map(item -> Convert.toLong(item.get(businessIdName)))
+                .filter(Objects::nonNull).collect(Collectors.toList());
+
+        if (businessIdList.size() == 0) {
+            return;
+        }
+
+        Map<Long, List<FileInfo>> fileInfoListMap = getFileInfoListMap(businessIdList);
+
+        for (Map<String, Object> stringMap : list) {
+            stringMap.put(fileInfoListName, fileInfoListMap.get(Convert.toLong(stringMap.get(businessIdName))));
+        }
+    }
+
+    /**
+     * 赋值附件
+     */
+    public static void setFileInfoListMap(List<Map<String, Object>> list) {
+        setFileInfoListMap(list, "id", "fileInfoList");
+    }
+
+
 }

+ 34 - 0
hx-common/common-tool/src/main/java/com/fjhx/base/BaseService.java

@@ -2,14 +2,18 @@ package com.fjhx.base;
 
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 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.*;
+import java.util.function.Consumer;
 import java.util.stream.Collectors;
 
 
@@ -89,6 +93,36 @@ public interface BaseService<T> extends IService<T> {
         return lambdaQuery().eq(column, val).count();
     }
 
+
+    default long count(Consumer<IWrapper<T>> consumer) {
+        return count(IWrapper.<T>getWrapper().func(consumer));
+    }
+
+    default T getOne(Consumer<IWrapper<T>> consumer) {
+        return getOne(IWrapper.<T>getWrapper().func(consumer).last("limit 1"));
+    }
+
+    default List<T> list(Consumer<IWrapper<T>> consumer) {
+        return list(IWrapper.<T>getWrapper().func(consumer));
+    }
+
+    default List<Map<String, Object>> listMaps(Consumer<IWrapper<T>> consumer) {
+        return listMaps(IWrapper.<T>getWrapper().func(consumer));
+    }
+
+    default <V> List<V> listObj(SFunction<T, V> mapper, Consumer<LambdaQueryWrapper<T>> consumer) {
+        return list(Wrappers.<T>lambdaQuery().select(mapper).func(consumer))
+                .stream().map(mapper).filter(Objects::nonNull).distinct().collect(Collectors.toList());
+    }
+
+    default boolean update(Consumer<LambdaUpdateWrapper<T>> consumer) {
+        return update(Wrappers.<T>lambdaUpdate().func(consumer));
+    }
+
+    default boolean remove(Consumer<LambdaQueryWrapper<T>> consumer) {
+        return remove(Wrappers.<T>lambdaQuery().func(consumer));
+    }
+
     /**
      * 按指定规则删除
      */

+ 6 - 0
hx-service-api/pom.xml

@@ -72,6 +72,12 @@
                 <version>${bladex.version}</version>
             </dependency>
 
+            <dependency>
+                <groupId>com.fjhx</groupId>
+                <artifactId>common-client-util</artifactId>
+                <version>${hx.version}</version>
+            </dependency>
+
         </dependencies>
     </dependencyManagement>
 

+ 1 - 1
hx-service-api/storage-api/src/main/java/com/fjhx/entity/material/Material.java

@@ -20,7 +20,7 @@ import java.util.Date;
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-@TableName("material_copy1")
+@TableName("material")
 public class Material extends BasicEntity {
 
     /**

+ 1 - 1
hx-service-api/storage-api/src/main/java/com/fjhx/entity/material/MaterialCategory.java

@@ -19,7 +19,7 @@ import java.util.Date;
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
-@TableName("material_category_copy1")
+@TableName("material_category")
 public class MaterialCategory extends BasicEntity {
 
     /**

+ 7 - 0
hx-service-api/victoriatourist-api/pom.xml

@@ -16,4 +16,11 @@
         <maven.compiler.target>8</maven.compiler.target>
     </properties>
 
+    <dependencies>
+        <dependency>
+            <groupId>com.fjhx</groupId>
+            <artifactId>service-file-api</artifactId>
+        </dependency>
+    </dependencies>
+
 </project>

+ 22 - 5
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/entity/supplier/Supplier.java

@@ -1,12 +1,9 @@
 package com.fjhx.entity.supplier;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.Version;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.fjhx.base.BaseEntity;
-import com.baomidou.mybatisplus.annotation.TableField;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -23,7 +20,7 @@ import lombok.EqualsAndHashCode;
 public class Supplier extends BaseEntity {
 
     /**
-     * 供应商类型
+     * 供应商类型(1贸易商 2工厂)
      */
     private Integer type;
 
@@ -83,6 +80,26 @@ public class Supplier extends BaseEntity {
     private Integer returnPeriod;
 
     /**
+     * 户名
+     */
+    private String accountName;
+
+    /**
+     * 银行账户
+     */
+    private String bankAccount;
+
+    /**
+     * 开户银行
+     */
+    private String bankOfDeposit;
+
+    /**
+     * 联行号
+     */
+    private String interBankNo;
+
+    /**
      * 备注
      */
     private String remark;

+ 5 - 0
hx-service-api/victoriatourist-api/src/main/java/com/fjhx/params/supplier/SupplierVo.java

@@ -1,9 +1,12 @@
 package com.fjhx.params.supplier;
 
+import com.fjhx.entity.FileInfo;
 import com.fjhx.entity.supplier.Supplier;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.util.List;
+
 /**
  * 供应商
  *
@@ -14,4 +17,6 @@ import lombok.EqualsAndHashCode;
 @EqualsAndHashCode(callSuper = true)
 public class SupplierVo extends Supplier {
 
+    private List<FileInfo> fileInfoList;
+
 }

+ 12 - 5
hx-service/victoriatourist/src/main/java/com/fjhx/controller/supplier/SupplierController.java

@@ -1,15 +1,16 @@
 package com.fjhx.controller.supplier;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import org.springblade.core.tool.api.R;
 import com.fjhx.params.supplier.SupplierVo;
 import com.fjhx.service.supplier.SupplierService;
+import org.springblade.core.tool.api.R;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -28,28 +29,34 @@ public class SupplierController {
     private SupplierService supplierService;
 
     @PostMapping("/page")
-    public R page(@RequestBody Map<String, Object> condition){
+    public R page(@RequestBody Map<String, Object> condition) {
         Page<Map<String, Object>> result = supplierService.getPage(condition);
         return R.success(result);
     }
 
     @PostMapping("/add")
-    public R add(@RequestBody SupplierVo supplierVo){
+    public R add(@RequestBody SupplierVo supplierVo) {
         supplierService.add(supplierVo);
         return R.success();
     }
 
     @PostMapping("/edit")
-    public R edit(@RequestBody SupplierVo supplierVo){
+    public R edit(@RequestBody SupplierVo supplierVo) {
         supplierService.edit(supplierVo);
         return R.success();
     }
 
     @PostMapping("/delete")
-    public R delete(@RequestBody SupplierVo supplierVo){
+    public R delete(@RequestBody SupplierVo supplierVo) {
         supplierService.delete(supplierVo);
         return R.success();
     }
 
+    @PostMapping("/list")
+    public R list(@RequestBody SupplierVo supplierVo) {
+        List<Map<String, Object>> result = supplierService.getList(supplierVo);
+        return R.success(result);
+    }
+
 }
 

+ 1 - 1
hx-service/victoriatourist/src/main/java/com/fjhx/mapper/supplier/SupplierMapper.java

@@ -1,7 +1,7 @@
 package com.fjhx.mapper.supplier;
 
-import com.fjhx.entity.supplier.Supplier;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fjhx.entity.supplier.Supplier;
 
 /**
  * <p>

+ 3 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/service/supplier/SupplierService.java

@@ -5,6 +5,7 @@ import com.fjhx.entity.supplier.Supplier;
 import com.fjhx.params.supplier.SupplierVo;
 import com.fjhx.base.BaseService;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -25,4 +26,6 @@ public interface SupplierService extends BaseService<Supplier> {
 
     void delete(SupplierVo supplierVo);
 
+    List<Map<String, Object>> getList(SupplierVo supplierVo);
+
 }

+ 84 - 0
hx-service/victoriatourist/src/main/java/com/fjhx/service/supplier/impl/SupplierServiceImpl.java

@@ -1,6 +1,8 @@
 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;
 import com.fjhx.entity.supplier.Supplier;
@@ -8,10 +10,15 @@ 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.utils.Assert;
+import com.fjhx.utils.FileClientUtil;
+import com.fjhx.utils.RegionClientUtil;
 import com.fjhx.utils.wrapperUtil.IWrapper;
 import com.fjhx.utils.wrapperUtil.KeywordData;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 
@@ -26,6 +33,11 @@ import java.util.Objects;
 @Service
 public class SupplierServiceImpl extends ServiceImpl<SupplierMapper, Supplier> implements SupplierService {
 
+    /**
+     * 默认供应商编码前缀
+     */
+    private final String codePrefix = "GY";
+
     @Override
     public Page<Map<String, Object>> getPage(Map<String, Object> condition) {
 
@@ -65,22 +77,94 @@ public class SupplierServiceImpl extends ServiceImpl<SupplierMapper, Supplier> i
 
         Page<Map<String, Object>> page = pageMaps(condition, wrapper);
 
+        List<Map<String, Object>> records = page.getRecords();
+        if (records.size() == 0) {
+            return page;
+        }
+
+        // 赋值附件
+        FileClientUtil.setFileInfoListMap(records);
+        // 赋值国省市
+        RegionClientUtil.setRegionName(records);
+
         return page;
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void add(SupplierVo supplierVo) {
+        String code = supplierVo.getCode();
+
+        if (ObjectUtil.isEmpty(code)) {
+            supplierVo.setCode(createCode());
+        } else {
+            Long count = count(Supplier::getCode, code);
+            Assert.eqZero(count, "供应商编码已存在");
+        }
+
         save(supplierVo);
+        // 绑定附件
+        FileClientUtil.bindingFile(supplierVo.getId(), supplierVo.getFileInfoList());
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void edit(SupplierVo supplierVo) {
         updateById(supplierVo);
+        // 修改附件绑定信息
+        FileClientUtil.againBindingFile(supplierVo.getId(), supplierVo.getFileInfoList());
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void delete(SupplierVo supplierVo) {
         removeById(supplierVo.getId());
+        // 删除附件
+        FileClientUtil.relieveBindingFile(supplierVo.getId());
+    }
+
+    @Override
+    public List<Map<String, Object>> getList(SupplierVo supplierVo) {
+        IWrapper<Supplier> wrapper = IWrapper.getWrapper(supplierVo);
+
+        wrapper.like(Supplier::getName);
+        wrapper.like(Supplier::getCode);
+        wrapper.eq(Supplier::getType);
+        wrapper.select(Supplier::getId, Supplier::getType, Supplier::getCode, Supplier::getName);
+
+        return listMaps(wrapper);
+    }
+
+
+    /**
+     * 生成供应商编码
+     */
+    private String createCode() {
+
+        Supplier supplier = getOne(Wrappers.<Supplier>lambdaQuery()
+                .likeRight(Supplier::getCode, codePrefix)
+                .orderByDesc(Supplier::getCode)
+                .last("limit 1"));
+
+        if (supplier == null) {
+            return codePrefix + "0001";
+        }
+
+        String code = supplier.getCode();
+
+        Integer codeNum = Convert.toInt(code.substring(codePrefix.length()));
+        Assert.notEmpty(codeNum, "自定义供应商编码与系统自动生成供应商编码规则冲突,暂时自动生成供应商编码,请联系管理员处理");
+
+        codeNum++;
+
+        if (codeNum < 10) {
+            return codePrefix + "000" + codeNum;
+        } else if (codeNum < 100) {
+            return codePrefix + "00" + codeNum;
+        } else if (codeNum < 1000) {
+            return codePrefix + "0" + codeNum;
+        }
+        return codePrefix + codeNum;
     }
 
 }