Procházet zdrojové kódy

销售订单导出

yzc před 1 rokem
rodič
revize
b351c54893

+ 6 - 0
hx-sale/src/main/java/com/fjhx/sale/controller/contract/ContractController.java

@@ -17,6 +17,7 @@ import com.ruoyi.common.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 import java.util.Map;
 
@@ -367,4 +368,9 @@ public class ContractController {
         contractService.contractAttach(dto);
     }
 
+    @PostMapping("/excelExport")
+    public void excelExport(HttpServletResponse httpServletResponse, @RequestBody ContractSelectDto dto) {
+        contractService.excelExport(httpServletResponse, dto);
+    }
+
 }

+ 88 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/contract/ContractExcelBo.java

@@ -0,0 +1,88 @@
+package com.fjhx.sale.entity.contract;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Getter
+@Setter
+@ExcelIgnoreUnannotated
+public class ContractExcelBo {
+    @ColumnWidth(15)
+    @ExcelProperty("合同号")
+    private String code;
+    @ColumnWidth(15)
+    @ExcelProperty("业务公司")
+    private String ofCompanyName;
+    @ColumnWidth(15)
+    @ExcelProperty("业务部门")
+    private String deptName;
+    @ColumnWidth(15)
+    @ExcelProperty("合同类型")
+    private String contractType;
+    @ColumnWidth(20)
+    @ExcelProperty("订单处理方式")
+    private String processingMethod;
+    @ColumnWidth(15)
+    @ExcelProperty("订单归属")
+    private String belongType;
+    @ColumnWidth(15)
+    @ExcelProperty("订单状态")
+    private String status;
+    @ColumnWidth(15)
+    @ExcelProperty("业务员")
+    private String salesmanName;
+    @ColumnWidth(18)
+    @ExcelProperty("下单时间")
+    private Date createTime;
+    @ColumnWidth(18)
+    @ExcelProperty("合同交期")
+    private Date deliveryTime;
+    @ColumnWidth(18)
+    @ExcelProperty("生产交期")
+    private Date prodDeliveryPeriod;
+    @ColumnWidth(18)
+    @ExcelProperty("下发生产时间")
+    private Date orderDistributeTime;
+    @ColumnWidth(25)
+    @ExcelProperty("生产指示")
+    private String prodTag;
+    @ColumnWidth(20)
+    @ExcelProperty("客户名称")
+    private String buyCorporationName;
+    @ColumnWidth(15)
+    @ExcelProperty("已发货数量")
+    private BigDecimal deliverQuantity;
+    @ColumnWidth(15)
+    @ExcelProperty("未出货数量")
+    private BigDecimal notDeliverQuantity;
+    @ColumnWidth(15)
+    @ExcelProperty("是否已结清")
+    private String isSettled;
+    @ColumnWidth(15)
+    @ExcelProperty("定金比例")
+    private String advanceRatio;
+    @ColumnWidth(25)
+    @ExcelProperty("出货前付款比例")
+    private String beforeShipmentRatio;
+    @ColumnWidth(25)
+    @ExcelProperty("出货后付款比例")
+    private String afterShipmentRatio;
+    @ColumnWidth(15)
+    @ExcelProperty("合同金额")
+    private String amount;
+    @ColumnWidth(20)
+    @ExcelProperty("累计收款金额")
+    private BigDecimal sumClaimMoney;
+    @ColumnWidth(15)
+    @ExcelProperty("已结算金额")
+    private BigDecimal settledAmount;
+    @ColumnWidth(15)
+    @ExcelProperty("未结算金额")
+    private BigDecimal unsettledAmount;
+}

+ 2 - 0
hx-sale/src/main/java/com/fjhx/sale/mapper/contract/ContractMapper.java

@@ -37,6 +37,8 @@ public interface ContractMapper extends BaseMapper<Contract> {
      */
     Page<ContractVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<Contract> wrapper);
 
+    List<ContractVo> getList(@Param("ew") IWrapper<Contract> wrapper);
+
     /**
      * 外销合同表分页
      */

+ 3 - 0
hx-sale/src/main/java/com/fjhx/sale/service/contract/ContractService.java

@@ -15,6 +15,7 @@ import com.fjhx.sale.entity.sale.vo.SaleQuotationVo;
 import com.ruoyi.common.core.service.BaseService;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 import java.util.Map;
 
@@ -264,4 +265,6 @@ public interface ContractService extends BaseService<Contract> {
      * 合同附件
      */
     void contractAttach(ContractDto dto);
+
+    void excelExport(HttpServletResponse httpServletResponse, ContractSelectDto dto);
 }

+ 58 - 12
hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractServiceImpl.java

@@ -37,6 +37,7 @@ import com.fjhx.common.service.contract.ContractTemplateService;
 import com.fjhx.common.service.corporation.CorporationService;
 import com.fjhx.common.service.documentary.GetDocumentaryBusinessTemplate;
 import com.fjhx.common.utils.Assert;
+import com.fjhx.common.utils.excel.util.ExcelUtil;
 import com.fjhx.customer.entity.customer.dto.CustomerDto;
 import com.fjhx.customer.entity.customer.po.Customer;
 import com.fjhx.customer.service.customer.CustomerService;
@@ -59,6 +60,7 @@ import com.fjhx.purchase.entity.subscribe.po.SubscribeDetail;
 import com.fjhx.purchase.mapper.subscribe.SubscribeDetailMapper;
 import com.fjhx.purchase.service.pay.PayDetailService;
 import com.fjhx.purchase.service.subscribe.SubscribeDetailService;
+import com.fjhx.sale.entity.contract.ContractExcelBo;
 import com.fjhx.sale.entity.contract.bo.ContractCurrencyRate;
 import com.fjhx.sale.entity.contract.bo.ContractDocumentaryBo;
 import com.fjhx.sale.entity.contract.dto.*;
@@ -114,6 +116,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.RequestBody;
 
+import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.*;
@@ -315,7 +318,9 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
     public Page<ContractVo> getPage(ContractSelectDto dto) {
         IWrapper<Contract> wrapper = getWrapper();
         setContractParam(dto, wrapper);
-        return pageCommon(dto, wrapper);
+        Page<ContractVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        setPageInfo(page.getRecords());
+        return page;
     }
 
     /**
@@ -443,17 +448,15 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
     @Override
     public Page<ContractVo> getPage1(ContractSelectDto dto) {
         IWrapper<Contract> wrapper = getWrapper();
-        return pageCommon(dto, wrapper);
+        Page<ContractVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        setPageInfo(page.getRecords());
+        return page;
     }
 
-    /**
-     * 分页公共代码抽取
-     */
-    private Page<ContractVo> pageCommon(ContractSelectDto dto, IWrapper<Contract> wrapper) {
-        Page<ContractVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
-        List<ContractVo> list = page.getRecords();
+
+    private void setPageInfo(List<ContractVo> list) {
         if (CollectionUtils.isEmpty(list)) {
-            return page;
+            return;
         }
 
         //赋值创建人名称
@@ -591,7 +594,6 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
                 contractVo.setContractOutboundInfoList(coiMap.getOrDefault(contractVo.getId(), new ArrayList<>()));
             }
         }
-        return page;
     }
 
     /**
@@ -2202,7 +2204,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
                 }, threadPoolExecutor);
 
         // 赋值合同基本信息
-        setInfo(contractPdfInfoVo, contract);
+        setPageInfo(contractPdfInfoVo, contract);
 
         CompletableFuture.allOf(
                 setBuyCorporationFuture,
@@ -2322,7 +2324,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
     /**
      * 赋值合同基本信息
      */
-    private void setInfo(ContractPdfInfoVo contractPdfInfoVo, Contract contract) {
+    private void setPageInfo(ContractPdfInfoVo contractPdfInfoVo, Contract contract) {
         contractPdfInfoVo.setContractCode(contract.getCode());
 //        contractPdfInfoVo.setCreateTimeEn(sdf.format(contract.getCreateTime()));
         contractPdfInfoVo.setCreateTime(contract.getCreateTime());
@@ -3309,4 +3311,48 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
         ObsFileUtil.editFile(dto.getContractFileList(), dto.getId(), 10);
     }
 
+    @Override
+    public void excelExport(HttpServletResponse httpServletResponse, ContractSelectDto dto) {
+        IWrapper<Contract> wrapper = getWrapper();
+        setContractParam(dto, wrapper);
+        List<ContractVo> list = baseMapper.getList(wrapper);
+        setPageInfo(list);
+
+        Map<Integer, String> flowStatusMap = FlowStatusEnum1.getMap();
+
+        Map<String, Map<String, String>> allDictKVMap = DictUtils.getAllDictKVMap();
+
+        List<ContractExcelBo> contractExcelBos = new ArrayList<>();
+        for (ContractVo contractVo : list) {
+            ContractExcelBo bo = BeanUtil.copyProperties(contractVo, ContractExcelBo.class);
+            //审批状态
+            bo.setStatus("75".equals(bo.getStatus()) ? "已发货" : flowStatusMap.get(contractVo.getStatus()));
+
+            bo.setContractType("1".equals(bo.getContractType()) ? "外销订单" : "2".equals(bo.getContractType()) ? "内销订单" : "3".equals(bo.getContractType()) ? "打样订单" : "外贸订单(退税)");
+            bo.setProcessingMethod("10".equals(bo.getProcessingMethod()) ? "业务自采" : "生产处理");
+            bo.setBelongType("1".equals(bo.getBelongType()) ? "归属工厂" : "归属业务");
+
+            String prodTag = bo.getProdTag();
+            if (ObjectUtil.isNotEmpty(prodTag)) {
+                StringJoiner sj = new StringJoiner(",");
+                String[] split = prodTag.split(",");
+                for (String s : split) {
+                    sj.add(allDictKVMap.get("contract_prod_tag").get(s));
+                }
+                bo.setProdTag(sj.toString());
+            }
+
+            bo.setIsSettled("1".equals(bo.getIsSettled()) ? "已结清" : "未结清");
+            bo.setAdvanceRatio(bo.getAdvanceRatio() + "%");
+            bo.setBeforeShipmentRatio(bo.getBeforeShipmentRatio() + "%");
+            bo.setAfterShipmentRatio(bo.getAfterShipmentRatio() + "%");
+            bo.setAmount(String.format("%s %s", contractVo.getCurrency(), contractVo.getAmount()));
+
+
+            contractExcelBos.add(bo);
+        }
+
+        ExcelUtil.export(httpServletResponse, contractExcelBos, ContractExcelBo.class);
+    }
+
 }

+ 11 - 2
hx-sale/src/main/resources/mapper/contract/ContractMapper.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.sale.mapper.contract.ContractMapper">
-    <select id="getPage" resultType="com.fjhx.sale.entity.contract.vo.ContractVo">
+    <sql id="list">
         SELECT *
         FROM (SELECT t1.*,
                      IFNULL(t1.amount, 0) * IFNULL(t1.rate, 0) AS amountCNY,
@@ -63,9 +63,18 @@
                                               WHERE coi.`status` in (30, 60)
                                               GROUP BY cp.contract_id) t1) t4 ON t4.contract_id = t1.id) t1
               GROUP BY t1.id) t1
-            ${ew.customSqlSegment}
+    </sql>
+
+    <select id="getPage" resultType="com.fjhx.sale.entity.contract.vo.ContractVo">
+        <include refid="list"/>
+        ${ew.customSqlSegment}
+    </select>
+    <select id="getList" resultType="com.fjhx.sale.entity.contract.vo.ContractVo">
+        <include refid="list"/>
+        ${ew.customSqlSegment}
     </select>
 
+
     <select id="getHeadStatistic" resultType="java.util.Map">
         SELECT IFNULL(SUM(t1.amountCNY), 0)                              AS sumAmount,
                IFNULL(SUM(sumClaimMoney), 0)                             AS sumClaimMoney,