浏览代码

供应商Excel导出

yzc 1 年之前
父节点
当前提交
17a1a9e191

+ 7 - 1
hx-supply/src/main/java/com/fjhx/supply/controller/supplier/SupplierInfoController.java

@@ -12,6 +12,7 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 import java.util.Map;
 
@@ -81,7 +82,12 @@ public class SupplierInfoController {
      * 供应商统计(列表)
      */
     @PostMapping("/supplierStatistics")
-    public Map<String,Object> supplierStatistics(@RequestBody BaseSelectDto dto) {
+    public Map<String, Object> supplierStatistics(@RequestBody BaseSelectDto dto) {
         return supplierInfoService.supplierStatistics(dto);
     }
+
+    @PostMapping("/excelExport")
+    public void excelExport(HttpServletResponse httpServletResponse, @RequestBody SupplierInfoSelectDto dto) {
+        supplierInfoService.excelExport(httpServletResponse, dto);
+    }
 }

+ 108 - 0
hx-supply/src/main/java/com/fjhx/supply/entity/supplier/SupplierExcelBo.java

@@ -0,0 +1,108 @@
+package com.fjhx.supply.entity.supplier;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.ruoyi.common.core.domain.BasePo;
+import lombok.Getter;
+import lombok.Setter;
+
+
+@Getter
+@Setter
+@ExcelIgnoreUnannotated
+public class SupplierExcelBo extends BasePo {
+    @ColumnWidth(20)
+    @ExcelProperty("业务公司名称")
+    private String companyName;
+    @ColumnWidth(15)
+    @ExcelProperty("开发人员")
+    private String devUserName;
+    @ColumnWidth(15)
+    @ExcelProperty("业务部门")
+    private String deptName;
+    @ColumnWidth(15)
+    @ExcelProperty("供应商类型")
+    private String type;
+    @ColumnWidth(15)
+    @ExcelProperty("供应商等级")
+    private String grade;
+    @ColumnWidth(15)
+    @ExcelProperty("供应商状态")
+    private String status;
+    @ColumnWidth(15)
+    @ExcelProperty("供应商名称")
+    private String name;
+    @ColumnWidth(15)
+    @ExcelProperty("国家")
+    private String countryName;
+    @ColumnWidth(15)
+    @ExcelProperty("省份")
+    private String provinceName;
+    @ColumnWidth(15)
+    @ExcelProperty("城市")
+    private String cityName;
+    @ColumnWidth(15)
+    @ExcelProperty("详细地址")
+    private String areaDetail;
+    @ColumnWidth(15)
+    @ExcelProperty("邮编")
+    private String postalCode;
+    @ColumnWidth(15)
+    @ExcelProperty("联系人")
+    private String contactPerson;
+    @ColumnWidth(15)
+    @ExcelProperty("联系人电话")
+    private String contactNumber;
+    @ColumnWidth(15)
+    @ExcelProperty("账期(/天)")
+    private Integer accountPeriod;
+    @ColumnWidth(15)
+    @ExcelProperty("账期说明")
+    private String accountPeriodRemark;
+    @ColumnWidth(15)
+    @ExcelProperty("传真")
+    private String fax;
+    @ColumnWidth(15)
+    @ExcelProperty("是否含税")
+    private String privIncludingTax;
+    @ColumnWidth(15)
+    @ExcelProperty("税点")
+    private String privTaxPoints;
+    @ColumnWidth(15)
+    @ExcelProperty("备注")
+    private String remark;
+    @ColumnWidth(15)
+    @ExcelProperty("单位名称")
+    private String openingName;
+    @ColumnWidth(20)
+    @ExcelProperty("纳税人识别号")
+    private String taxpayerCode;
+    @ColumnWidth(15)
+    @ExcelProperty("开户银行")
+    private String openingBank;
+    @ColumnWidth(15)
+    @ExcelProperty("银行账号")
+    private String accountOpening;
+    @ColumnWidth(15)
+    @ExcelProperty("地址")
+    private String invoiceAddress;
+    @ColumnWidth(15)
+    @ExcelProperty("联系方式")
+    private String invoiceContactInfo;
+    @ColumnWidth(15)
+    @ExcelProperty("发票类型")
+    private String invoiceType;
+    @ColumnWidth(15)
+    @ExcelProperty("开票名称")
+    private String invoiceName;
+    @ColumnWidth(15)
+    @ExcelProperty("对私账户名")
+    private String privOpeningName;
+    @ColumnWidth(15)
+    @ExcelProperty("对私开户行")
+    private String privOpeningBank;
+    @ColumnWidth(15)
+    @ExcelProperty("对私账号")
+    private String privAccountOpening;
+}

+ 2 - 2
hx-supply/src/main/java/com/fjhx/supply/entity/supplier/po/SupplierInfo.java

@@ -130,11 +130,11 @@ public class SupplierInfo extends BasePo {
     /**
      * 开发人员id
      */
-    private String devUserId;
+    private Long devUserId;
     /**
      * 所属部门(供应商开发人员的所属部门)
      */
-    private String deptId;
+    private Long deptId;
     /**
      * 纳税人识别号
      */

+ 3 - 0
hx-supply/src/main/java/com/fjhx/supply/entity/supplier/vo/SupplierInfoVo.java

@@ -44,4 +44,7 @@ public class SupplierInfoVo extends SupplierInfo implements SetCustomizeAreaName
 
     private String stockJournalDetailsIds;
 
+    private String devUserName;
+    private String deptName;
+
 }

+ 3 - 0
hx-supply/src/main/java/com/fjhx/supply/mapper/supplier/SupplierInfoMapper.java

@@ -26,5 +26,8 @@ public interface SupplierInfoMapper extends BaseMapper<SupplierInfo> {
      */
     Page<SupplierInfoVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<SupplierInfo> wrapper);
 
+    List<SupplierInfoVo> getList(@Param("ew") IWrapper<SupplierInfo> wrapper);
+
+
     List<SupplierInfoVo> getAccountPeriodAmount(@Param("ew") IWrapper<SupplierInfo> wrapper, @Param("accountPeriod") Date accountPeriod);
 }

+ 3 - 0
hx-supply/src/main/java/com/fjhx/supply/service/supplier/SupplierInfoService.java

@@ -8,6 +8,7 @@ import com.fjhx.supply.entity.supplier.vo.SupplierInfoVo;
 import com.ruoyi.common.core.domain.BaseSelectDto;
 import com.ruoyi.common.core.service.BaseService;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 import java.util.Map;
 
@@ -56,4 +57,6 @@ public interface SupplierInfoService extends BaseService<SupplierInfo> {
      * 供应商统计
      */
     Map<String, Object> supplierStatistics(BaseSelectDto dto);
+
+    void excelExport(HttpServletResponse httpServletResponse, SupplierInfoSelectDto dto);
 }

+ 47 - 7
hx-supply/src/main/java/com/fjhx/supply/service/supplier/impl/SupplierInfoServiceImpl.java

@@ -11,10 +11,12 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.area.utils.CustomizeAreaUtil;
 import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.common.utils.Assert;
+import com.fjhx.common.utils.excel.util.ExcelUtil;
 import com.fjhx.file.utils.ObsFileUtil;
 import com.fjhx.supply.entity.supplier.dto.SupplierInfoDto;
 import com.fjhx.supply.entity.supplier.dto.SupplierInfoSelectDto;
 import com.fjhx.supply.entity.supplier.po.SupplierContact;
+import com.fjhx.supply.entity.supplier.po.SupplierExcelBo;
 import com.fjhx.supply.entity.supplier.po.SupplierInfo;
 import com.fjhx.supply.entity.supplier.vo.SupplierInfoVo;
 import com.fjhx.supply.mapper.supplier.SupplierInfoMapper;
@@ -25,14 +27,17 @@ import com.fjhx.tenant.entity.dict.dto.DictTenantDataSelectDto;
 import com.fjhx.tenant.entity.dict.vo.DictTenantDataVo;
 import com.fjhx.tenant.service.dict.DictTenantDataService;
 import com.fjhx.tenant.utils.DeptUstil;
+import com.fjhx.tenant.utils.DictUtils;
 import com.ruoyi.common.core.domain.BaseSelectDto;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.ruoyi.common.utils.wrapper.SqlField;
+import com.ruoyi.system.utils.UserUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -58,9 +63,7 @@ public class SupplierInfoServiceImpl extends ServiceImpl<SupplierInfoMapper, Sup
         this.supplierContactService = supplierContactService;
     }
 
-    @Override
-    public Page<SupplierInfoVo> getPage(SupplierInfoSelectDto dto) {
-        IWrapper<SupplierInfo> wrapper = getWrapper();
+    private void setPageWapper(SupplierInfoSelectDto dto, IWrapper<SupplierInfo> wrapper) {
         wrapper.eq("si", SupplierInfo::getType, dto.getType());
         wrapper.like("si", SupplierInfo::getCode, dto.getCode());
         wrapper.like("si", SupplierInfo::getName, dto.getName());
@@ -78,12 +81,24 @@ public class SupplierInfoServiceImpl extends ServiceImpl<SupplierInfoMapper, Sup
 
 
         wrapper.orderByDesc("si", SupplierInfo::getId);
+    }
+
+    @Override
+    public Page<SupplierInfoVo> getPage(SupplierInfoSelectDto dto) {
+        IWrapper<SupplierInfo> wrapper = getWrapper();
+
+        setPageWapper(dto, wrapper);
 
         Page<SupplierInfoVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
 
-        List<SupplierInfoVo> records = page.getRecords();
+        setPageInfo(page.getRecords());
+
+        return page;
+    }
+
+    private void setPageInfo(List<SupplierInfoVo> records) {
         if (records.size() == 0) {
-            return page;
+            return;
         }
         CustomizeAreaUtil.setAreaName(records);
 
@@ -96,8 +111,8 @@ public class SupplierInfoServiceImpl extends ServiceImpl<SupplierInfoMapper, Sup
             //赋值生产公司名称
             record.setCompanyName(companyNameMap.get(record.getCompanyId()));
         }
-
-        return page;
+        UserUtil.assignmentNickName(records, SupplierInfoVo::getDevUserId, SupplierInfoVo::setDevUserName);
+        DeptUstil.assignmentNickName(records, SupplierInfo::getDeptId, SupplierInfoVo::setDeptName);
     }
 
     @Override
@@ -235,4 +250,29 @@ public class SupplierInfoServiceImpl extends ServiceImpl<SupplierInfoMapper, Sup
         dto.setDictCode(code);
         return dictTenantDataService.getList(dto);
     }
+
+    @Override
+    public void excelExport(HttpServletResponse httpServletResponse, SupplierInfoSelectDto dto) {
+        IWrapper<SupplierInfo> wrapper = getWrapper();
+        setPageWapper(dto, wrapper);
+        List<SupplierInfoVo> list = baseMapper.getList(wrapper);
+        setPageInfo(list);
+
+        Map<String, Map<String, String>> allDictKVMap = DictUtils.getAllDictKVMap();
+
+        List<SupplierExcelBo> contractExcelBos = new ArrayList<>();
+        for (SupplierInfoVo contractVo : list) {
+            SupplierExcelBo bo = BeanUtil.copyProperties(contractVo, SupplierExcelBo.class);
+
+            bo.setType(allDictKVMap.get("supplier_type").get(bo.getType()));
+            bo.setGrade(allDictKVMap.get("supplier_grade").get(bo.getGrade()));
+            bo.setStatus(allDictKVMap.get("supplier_status").get(bo.getStatus()));
+            bo.setInvoiceType(allDictKVMap.get("invoice_type").get(bo.getInvoiceType()));
+            bo.setPrivIncludingTax("1".equals(bo.getPrivIncludingTax()) ? "是" : "否");
+
+            contractExcelBos.add(bo);
+        }
+
+        ExcelUtil.export(httpServletResponse, contractExcelBos, SupplierExcelBo.class);
+    }
 }

+ 9 - 2
hx-supply/src/main/resources/mapper/supplier/SupplierInfoMapper.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fjhx.supply.mapper.supplier.SupplierInfoMapper">
-    <select id="getPage" resultType="com.fjhx.supply.entity.supplier.vo.SupplierInfoVo">
+    <sql id="list">
         SELECT IFNULL(t1.balancePrepaid, 0)    AS balancePrepaid,
                IFNULL(t1.balancePrepaidTax, 0) AS balancePrepaidTax,
                si.*
@@ -23,7 +23,14 @@
                             WHERE pt.`name` LIKE '%采购%'
                               AND cco.`status` IN (30, 60)
                             GROUP BY ccod.supplier_id) t1 ON t1.supplier_id = si.id
-            ${ew.customSqlSegment}
+    </sql>
+    <select id="getPage" resultType="com.fjhx.supply.entity.supplier.vo.SupplierInfoVo">
+        <include refid="list"/>
+        ${ew.customSqlSegment}
+    </select>
+    <select id="getList" resultType="com.fjhx.supply.entity.supplier.vo.SupplierInfoVo">
+        <include refid="list"/>
+        ${ew.customSqlSegment}
     </select>
     <select id="getAccountPeriodAmount" resultType="com.fjhx.supply.entity.supplier.vo.SupplierInfoVo">
         SELECT IFNULL(t1.accountPeriodAmount, 0)    AS accountPeriodAmount,