Sfoglia il codice sorgente

导入供应商信息

buzhanyi 1 anno fa
parent
commit
2acf8082f7

+ 14 - 3
purchase-admin/src/main/java/com/ozs/web/controller/base/BaseSupplierController.java

@@ -3,7 +3,6 @@ package com.ozs.web.controller.base;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ozs.base.domain.BaseExpert;
 import com.ozs.base.domain.vo.BaseSupplierVo;
 import com.ozs.common.annotation.Log;
 import com.ozs.common.constant.ModularConstans;
@@ -15,16 +14,17 @@ import com.ozs.common.enums.BusinessType;
 import com.ozs.common.utils.StringUtils;
 import com.ozs.base.domain.BaseSupplier;
 import com.ozs.base.service.BaseSupplierService;
+import com.ozs.common.utils.poi.ExcelUtil;
 import com.ozs.framework.web.service.TokenService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.util.ObjectUtils;
 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 org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.Date;
@@ -61,7 +61,18 @@ public class BaseSupplierController extends BaseController {
         if (StringUtils.isNull(baseSupplier.getSupplierState())) {
             baseSupplier.setSupplierState("1");
         }
-        return toAjax(baseSupplierService.insertBaseSupplier(baseSupplier));
+        return baseSupplierService.insertBaseSupplier(baseSupplier);
+    }
+
+    @ApiOperation(value = "导入供应商数据")
+    @PostMapping("/importData")
+    @Log(title = ModularConstans.expert, businessType = BusinessType.INSERT)
+    public AjaxResult importData(MultipartFile file) throws Exception {
+        ExcelUtil<BaseSupplierVo> util = new ExcelUtil<>(BaseSupplierVo.class);
+        List<BaseSupplierVo> suppliers = util.importExcel(file.getInputStream(), 1);
+        LoginUser loginUser = getLoginUser();
+        String message = baseSupplierService.importBaseSuppliers(suppliers, loginUser);
+        return success(message);
     }
 
     @ApiOperation(value = "删除供应商户", notes = "必传ID")

+ 11 - 0
purchase-system/src/main/java/com/ozs/base/domain/vo/BaseSupplierVo.java

@@ -1,6 +1,7 @@
 package com.ozs.base.domain.vo;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ozs.common.annotation.Excel;
 import com.ozs.common.vo.PageVo;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -10,36 +11,46 @@ import java.util.Date;
 @Data
 public class BaseSupplierVo extends PageVo {
 
+    @Excel(name = "供应商名称")
     @ApiModelProperty("供应商名称")
     private String supplierName;
 
+    @Excel(name = "供应商负责人")
     @ApiModelProperty("供应商负责人")
     private String supplierResponsiblePerson;
 
+    @Excel(name = "供应商地址")
     @ApiModelProperty("供应商地址")
     private String supplierAddress;
 
     @ApiModelProperty("状态 黑白名单")
     private String supplierState;
 
+    @Excel(name = "预先采购")
     @ApiModelProperty("预先采购")
     private String supplierAdvancePurchase;
 
+    @Excel(name = "邮政编码")
     @ApiModelProperty(value = "邮政编码")
     private String postalCode;
 
+    @Excel(name = "项目联系人")
     @ApiModelProperty(value = "项目联系人")
     private String projectPerson;
 
+    @Excel(name = "联系电话")
     @ApiModelProperty(value = "联系电话")
     private String telephone;
 
+    @Excel(name = "银行账户名称")
     @ApiModelProperty(value = "银行账户名称")
     private String bankAccountName;
 
+    @Excel(name = "开户银行")
     @ApiModelProperty(value = "开户银行")
     private String bankOfDeposit;
 
+    @Excel(name = "银行账号")
     @ApiModelProperty(value = "银行账号")
     private String bankAccountNumber;
 

+ 17 - 1
purchase-system/src/main/java/com/ozs/base/service/BaseSupplierService.java

@@ -3,6 +3,9 @@ package com.ozs.base.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ozs.base.domain.BaseExpert;
 import com.ozs.base.domain.BaseSupplier;
+import com.ozs.base.domain.vo.BaseSupplierVo;
+import com.ozs.common.core.domain.AjaxResult;
+import com.ozs.common.core.domain.model.LoginUser;
 
 import java.util.List;
 
@@ -15,25 +18,38 @@ public interface BaseSupplierService extends IService<BaseSupplier> {
 
     /**
      * 新增供应商
+     *
      * @param baseSupplier 供应商信息
      */
-    int insertBaseSupplier(BaseSupplier baseSupplier);
+    AjaxResult insertBaseSupplier(BaseSupplier baseSupplier);
 
     /**
      * 删除供应商
+     *
      * @param id 供应商ID
      */
     int deleteBaseSupplier(int id);
 
     /**
      * 修改供应商
+     *
      * @param baseSupplier 供应商信息
      */
     int updateBaseSupplier(BaseSupplier baseSupplier);
 
     /**
      * 查询供应商
+     *
      * @param baseSupplier 供应商信息
      */
     List<BaseSupplier> selectBaseSupplier(BaseSupplier baseSupplier);
+
+    /**
+     * 导入供应商信息
+     *
+     * @param suppliers
+     * @param loginUser
+     * @return
+     */
+    String importBaseSuppliers(List<BaseSupplierVo> suppliers, LoginUser loginUser);
 }

+ 10 - 1
purchase-system/src/main/java/com/ozs/base/service/impl/BaseExpertServiceImpl.java

@@ -216,12 +216,21 @@ public class BaseExpertServiceImpl extends ServiceImpl<BaseExpertMapper, BaseExp
                     ++failureNum;
                     failureMsg.append(failureNum + "、专家类型“" + expert.getExpertType() + "”不存在");
                 }
+                //查询身份证号是否已使用
+                LambdaQueryWrapper<BaseExpert> baseExpertWrapper = new LambdaQueryWrapper<>();
+                baseExpertWrapper.eq(BaseExpert::getIdNumber, expert.getIdNumber());
+                List<BaseExpert> idNumberList = baseExpertMapper.selectList(baseExpertWrapper);
+                //身份证号已存在的不可添加
+                if (!ObjectUtils.isEmpty(idNumberList)) {
+                    ++failureNum;
+                    failureMsg.append(failureNum + "、身份证号“" + expert.getExpertType() + "”已被使用");
+                }
                 //专业类型
                 LambdaQueryWrapper<BaseProfessional> wrapper = new LambdaQueryWrapper<>();
                 wrapper.eq(BaseProfessional::getProfessionalName, expert.getMajorType());
                 List<BaseProfessional> list = baseProfessionalService.list(wrapper);
                 //专家信息中存的是专业的code
-                if (!StringUtils.isEmpty(list)) {
+                if (!ObjectUtils.isEmpty(list)) {
                     expert.setMajorType(list.get(0).getProfessionalCode());
                 } else {
                     ++failureNum;

+ 66 - 4
purchase-system/src/main/java/com/ozs/base/service/impl/BaseSupplierServiceImpl.java

@@ -1,14 +1,22 @@
 package com.ozs.base.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ozs.base.domain.BaseExpert;
 import com.ozs.base.domain.BaseSupplier;
-import com.ozs.base.mapper.BaseExpertMapper;
+import com.ozs.base.domain.vo.BaseSupplierVo;
 import com.ozs.base.mapper.BaseSupplierMapper;
 import com.ozs.base.service.BaseSupplierService;
+import com.ozs.common.core.domain.AjaxResult;
+import com.ozs.common.core.domain.model.LoginUser;
+import com.ozs.common.exception.ServiceException;
+import com.ozs.common.utils.bean.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ObjectUtils;
 
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -23,8 +31,16 @@ public class BaseSupplierServiceImpl extends ServiceImpl<BaseSupplierMapper, Bas
     private BaseSupplierMapper baseSupplierMapper;
 
     @Override
-    public int insertBaseSupplier(BaseSupplier baseSupplier) {
-        return baseSupplierMapper.insertBaseSupplier(baseSupplier);
+    public AjaxResult insertBaseSupplier(BaseSupplier baseSupplier) {
+        //查询供应商名称是否已使用
+        LambdaQueryWrapper<BaseSupplier> baseSupplierWrapper = new LambdaQueryWrapper<>();
+        baseSupplierWrapper.eq(BaseSupplier::getSupplierName, baseSupplier.getSupplierName());
+        List<BaseSupplier> supplierNameList = baseSupplierMapper.selectList(baseSupplierWrapper);
+        //供应商名称已存在的不可添加
+        if (!ObjectUtils.isEmpty(supplierNameList)) {
+            return AjaxResult.error("供应商名称“" + baseSupplier.getSupplierName() + "”已被使用");
+        }
+        return AjaxResult.success(baseSupplierMapper.insertBaseSupplier(baseSupplier));
     }
 
     @Override
@@ -41,4 +57,50 @@ public class BaseSupplierServiceImpl extends ServiceImpl<BaseSupplierMapper, Bas
     public List<BaseSupplier> selectBaseSupplier(BaseSupplier baseSupplier) {
         return baseSupplierMapper.selectBaseSupplier(baseSupplier);
     }
+
+    @Transactional
+    @Override
+    public String importBaseSuppliers(List<BaseSupplierVo> supplierVos, LoginUser loginUser) {
+        //操作成功和失败的标签
+        int successNum = 0;
+        int failureNum = 0;
+        StringBuilder successMsg = new StringBuilder();
+        StringBuilder failureMsg = new StringBuilder();
+        //转实体类
+        List<BaseSupplier> suppliers = new ArrayList<>();
+        for (BaseSupplierVo supplierVo : supplierVos) {
+            BaseSupplier supplier = new BaseSupplier();
+            BeanUtils.copyProperties(supplierVo, supplier);
+            //默认白名单
+            supplier.setSupplierState("1");
+            suppliers.add(supplier);
+        }
+        for (BaseSupplier supplier : suppliers) {
+            //查询供应商名称是否已使用
+            LambdaQueryWrapper<BaseSupplier> baseSupplierWrapper = new LambdaQueryWrapper<>();
+            baseSupplierWrapper.eq(BaseSupplier::getSupplierName, supplier.getSupplierName());
+            List<BaseSupplier> supplierNameList = baseSupplierMapper.selectList(baseSupplierWrapper);
+            //供应商名称已存在的不可添加
+            if (!ObjectUtils.isEmpty(supplierNameList)) {
+                ++failureNum;
+                failureMsg.append(failureNum + "、供应商名称“" + supplier.getSupplierName() + "”已被使用");
+            }
+            //是否预先采购
+            supplier.setSupplierAdvancePurchase(supplier.getSupplierAdvancePurchase().equals("是") ? "1" : "0");
+            supplier.setCreated(String.valueOf(loginUser.getUserId()));
+            supplier.setCreateTime(new Date());
+            supplier.setUpdated(String.valueOf(loginUser.getUserId()));
+            supplier.setUpdateTime(new Date());
+            baseSupplierMapper.insert(supplier);
+            successNum++;
+            successMsg.append(successNum + "、供应商【" + supplier.getSupplierName() + "】导入成功!");
+        }
+        if (failureNum > 0) {
+            failureMsg.insert(0, "导入失败!共 " + failureNum + " 条数据格式不正确:");
+            throw new ServiceException(failureMsg.toString());
+        } else {
+            successMsg.insert(0, "导入成功!共 " + successNum + " 条。");
+        }
+        return successMsg.toString();
+    }
 }