瀏覽代碼

销售跟单列表统计头数量

caozj 1 年之前
父節點
當前提交
f5c10b2b48

+ 12 - 0
hx-sale/src/main/java/com/fjhx/sale/controller/contract/EhsdDocumentaryController.java

@@ -1,5 +1,6 @@
 package com.fjhx.sale.controller.contract;
 
+import com.fjhx.sale.entity.contract.dto.ContractSelectDto;
 import com.fjhx.sale.entity.contract.po.ContractDocumentary;
 import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -10,6 +11,8 @@ import com.ruoyi.common.core.domain.BaseSelectDto;
 import com.fjhx.sale.service.contract.ContractDocumentaryService;
 import org.springframework.beans.factory.annotation.Autowired;
 
+import java.util.Map;
+
 
 /**
  * <p>
@@ -66,4 +69,13 @@ public class EhsdDocumentaryController {
         contractDocumentaryService.delete(dto.getId());
     }
 
+    /**
+     * 销售跟单---统计数量
+     */
+    @PostMapping("/getSumCount")
+    public Map<String,Integer> getSumCount(@RequestBody ContractSelectDto dto) {
+       return contractDocumentaryService.getSumCount(dto);
+    }
+
+
 }

+ 59 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/contract/enums/DocumentaryTypeEnum.java

@@ -0,0 +1,59 @@
+package com.fjhx.sale.entity.contract.enums;
+
+import org.apache.commons.collections4.MapUtils;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * 销售跟单状态枚举
+ */
+public enum DocumentaryTypeEnum {
+    TYPE_1("1", "签样"),
+    TYPE_2("2", "LOGO"),
+    TYPE_3("3", "包材稿件"),
+    TYPE_4("4", "箱唛"),
+    TYPE_5("5", "标签"),
+    TYPE_6("6", "验货"),
+    TYPE_7("7", "出货通知"),
+    TYPE_8("8", "大货样"),
+    TYPE_9("9", "订舱"),
+    TYPE_10("10", "发货日期"),
+    TYPE_11("11", "ETD"),
+    TYPE_12("12", "ETA"),
+    ;
+    private String key;
+
+    private String value;
+
+    private static Map<String, String> map = new LinkedHashMap<>();
+
+    DocumentaryTypeEnum(String key, String value) {
+        this.key = key;
+        this.value = value;
+    }
+
+    /**
+     * 获取枚举map
+     *
+     * @return
+     */
+    public static Map<String, String> getMap() {
+        if (MapUtils.isNotEmpty(map)) {
+            return map;
+        }
+        for (DocumentaryTypeEnum ms : values()) {
+            map.put(ms.key, ms.value);
+        }
+        return map;
+    }
+
+    public String getKey() {
+        return key;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+}

+ 6 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/contract/po/ContractDocumentary.java

@@ -64,4 +64,10 @@ public class ContractDocumentary extends BasePo {
      */
     @TableField(exist = false)
     private String UserName;
+
+    /**
+     * 条数
+     */
+    @TableField(exist = false)
+    private Integer count;
 }

+ 12 - 0
hx-sale/src/main/java/com/fjhx/sale/mapper/contract/ContractDocumentaryMapper.java

@@ -1,12 +1,16 @@
 package com.fjhx.sale.mapper.contract;
 
+import com.fjhx.sale.entity.contract.po.Contract;
 import com.fjhx.sale.entity.contract.po.ContractDocumentary;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.sale.entity.contract.vo.ContractDocumentaryVo;
+import com.fjhx.sale.entity.contract.vo.ContractVo;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -23,4 +27,12 @@ public interface ContractDocumentaryMapper extends BaseMapper<ContractDocumentar
      */
     Page<ContractDocumentary> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<ContractDocumentary> wrapper);
 
+
+    /**
+     * 外销跟单统计条数
+     * @param wrapper
+     * @return
+     */
+    List<ContractDocumentary> getSumCount(@Param("ew") IWrapper<Contract> wrapper, @Param("documentaryType") Integer documentaryType );
+
 }

+ 11 - 0
hx-sale/src/main/java/com/fjhx/sale/service/contract/ContractDocumentaryService.java

@@ -1,11 +1,18 @@
 package com.fjhx.sale.service.contract;
 
+import com.fjhx.sale.entity.contract.dto.ContractSelectDto;
+import com.fjhx.sale.entity.contract.po.Contract;
 import com.fjhx.sale.entity.contract.po.ContractDocumentary;
 import com.ruoyi.common.core.service.BaseService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.sale.entity.contract.vo.ContractDocumentaryVo;
 import com.fjhx.sale.entity.contract.dto.ContractDocumentarySelectDto;
 import com.fjhx.sale.entity.contract.dto.ContractDocumentaryDto;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
 
 
 /**
@@ -43,4 +50,8 @@ public interface ContractDocumentaryService extends BaseService<ContractDocument
      */
     void delete(Long id);
 
+    /**
+     * @return
+     */
+    Map<String,Integer> getSumCount(ContractSelectDto dto);
 }

+ 60 - 0
hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractDocumentaryServiceImpl.java

@@ -2,15 +2,22 @@ package com.fjhx.sale.service.contract.impl;
 
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.fjhx.account.entity.account.po.AccountPayment;
 import com.fjhx.account.entity.account.vo.AccountPaymentVo;
+import com.fjhx.common.enums.FlowStatusEnum1;
+import com.fjhx.customer.service.customer.CustomerService;
 import com.fjhx.file.utils.ObsFileUtil;
+import com.fjhx.sale.entity.contract.dto.ContractSelectDto;
+import com.fjhx.sale.entity.contract.enums.DocumentaryTypeEnum;
 import com.fjhx.sale.entity.contract.po.Contract;
 import com.fjhx.sale.entity.contract.po.ContractDocumentary;
+import com.fjhx.sale.entity.contract.vo.ContractVo;
 import com.fjhx.sale.mapper.contract.ContractDocumentaryMapper;
 import com.fjhx.sale.service.contract.ContractDocumentaryService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.system.utils.UserUtil;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.sale.entity.contract.vo.ContractDocumentaryVo;
@@ -19,7 +26,10 @@ import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.fjhx.sale.entity.contract.dto.ContractDocumentaryDto;
 import cn.hutool.core.bean.BeanUtil;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 
 /**
@@ -33,6 +43,9 @@ import java.util.List;
 @Service
 public class ContractDocumentaryServiceImpl extends ServiceImpl<ContractDocumentaryMapper, ContractDocumentary> implements ContractDocumentaryService {
 
+    @Autowired
+    private CustomerService customerService;
+
     /**
      * 分页
      * @param dto
@@ -79,4 +92,51 @@ public class ContractDocumentaryServiceImpl extends ServiceImpl<ContractDocument
         this.removeById(id);
     }
 
+    /**
+     * 统计数量
+     * @return
+     */
+    @Override
+    public Map<String,Integer> getSumCount(ContractSelectDto dto) {
+        List<Long> authIdList = customerService.getAuthIdList();
+        if (authIdList.size() == 0) {
+            return new HashMap<>();
+        }
+        IWrapper<Contract> wrapper = IWrapper.getWrapper();
+        wrapper.in("t1", Contract::getBuyCorporationId, authIdList);
+        wrapper.orderByDesc("t1", Contract::getCreateTime);
+        wrapper.eq("t1", Contract::getIsChange, "0");//列表只展示未变更得数据
+        wrapper.ne("t1",Contract::getIsShow,1);
+        wrapper.eq("t1", Contract::getStatus, FlowStatusEnum1.PASS.getKey());
+        wrapper.eq("t1.orderStatus", dto.getOrderStatus());
+        if(dto.getDocumentarySearch()==1&&ObjectUtil.isNotEmpty(dto.getDocumentaryType())){//无记录
+            wrapper.eq("t1.documentaryCount",0);
+        }
+        if(dto.getDocumentarySearch()==2&&ObjectUtil.isNotEmpty(dto.getDocumentaryType())){//无记录
+            wrapper.gt("t1.documentaryCount",0);
+        }
+        wrapper.groupBy("t3.documentary_type");
+        List<ContractDocumentary> list = baseMapper.getSumCount(wrapper,dto.getDocumentaryType());
+        Map<String,Integer> countMap = setCount(list);
+        return countMap;
+    }
+
+
+    private Map<String,Integer> setCount(List<ContractDocumentary> list){
+        Map<String,Integer> map = list.stream().collect(Collectors.toMap(ContractDocumentary::getDocumentaryType,ContractDocumentary::getCount));
+        map.put(DocumentaryTypeEnum.TYPE_1.getKey(),map.getOrDefault(DocumentaryTypeEnum.TYPE_1.getKey(),0));
+        map.put(DocumentaryTypeEnum.TYPE_2.getKey(),map.getOrDefault(DocumentaryTypeEnum.TYPE_2.getKey(),0));
+        map.put(DocumentaryTypeEnum.TYPE_3.getKey(),map.getOrDefault(DocumentaryTypeEnum.TYPE_3.getKey(),0));
+        map.put(DocumentaryTypeEnum.TYPE_4.getKey(),map.getOrDefault(DocumentaryTypeEnum.TYPE_4.getKey(),0));
+        map.put(DocumentaryTypeEnum.TYPE_5.getKey(),map.getOrDefault(DocumentaryTypeEnum.TYPE_5.getKey(),0));
+        map.put(DocumentaryTypeEnum.TYPE_6.getKey(),map.getOrDefault(DocumentaryTypeEnum.TYPE_6.getKey(),0));
+        map.put(DocumentaryTypeEnum.TYPE_7.getKey(),map.getOrDefault(DocumentaryTypeEnum.TYPE_7.getKey(),0));
+        map.put(DocumentaryTypeEnum.TYPE_8.getKey(),map.getOrDefault(DocumentaryTypeEnum.TYPE_8.getKey(),0));
+        map.put(DocumentaryTypeEnum.TYPE_9.getKey(),map.getOrDefault(DocumentaryTypeEnum.TYPE_9.getKey(),0));
+        map.put(DocumentaryTypeEnum.TYPE_10.getKey(),map.getOrDefault(DocumentaryTypeEnum.TYPE_10.getKey(),0));
+        map.put(DocumentaryTypeEnum.TYPE_11.getKey(),map.getOrDefault(DocumentaryTypeEnum.TYPE_11.getKey(),0));
+        map.put(DocumentaryTypeEnum.TYPE_12.getKey(),map.getOrDefault(DocumentaryTypeEnum.TYPE_12.getKey(),0));
+        return map;
+    }
+
 }

+ 8 - 5
hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractServiceImpl.java

@@ -27,6 +27,7 @@ import com.fjhx.common.entity.contract.po.ContractTemplate;
 import com.fjhx.common.entity.corporation.po.Corporation;
 import com.fjhx.common.entity.currency.po.CurrencyRate;
 import com.fjhx.common.entity.documentary.bo.DocumentaryData;
+import com.fjhx.common.entity.documentary.po.Documentary;
 import com.fjhx.common.enums.FlowStatusEnum1;
 import com.fjhx.common.service.contract.ContractTemplateService;
 import com.fjhx.common.service.corporation.CorporationService;
@@ -60,6 +61,7 @@ import com.fjhx.sale.entity.contract.dto.ContractDto;
 import com.fjhx.sale.entity.contract.dto.ContractSelectDto;
 import com.fjhx.sale.entity.contract.dto.DecisionAidDto;
 import com.fjhx.sale.entity.contract.dto.PayDecisionAidDto;
+import com.fjhx.sale.entity.contract.enums.DocumentaryTypeEnum;
 import com.fjhx.sale.entity.contract.po.*;
 import com.fjhx.sale.entity.contract.vo.*;
 import com.fjhx.sale.entity.purchase.po.EhsdPurchase;
@@ -1878,10 +1880,10 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
         wrapper.ne("t1",Contract::getIsShow,1);
         wrapper.eq("t1", Contract::getStatus, FlowStatusEnum1.PASS.getKey());
         wrapper.eq("t1.orderStatus", dto.getOrderStatus());
-        if(ObjectUtil.isNotEmpty(dto.getDocumentarySearch()==1)&&ObjectUtil.isNotEmpty(dto.getDocumentaryType())){//无记录
+        if(dto.getDocumentarySearch()==1&&ObjectUtil.isNotEmpty(dto.getDocumentaryType())){//无记录
             wrapper.eq("t1.documentaryCount",0);
         }
-        if(ObjectUtil.isNotEmpty(dto.getDocumentarySearch()==2)&&ObjectUtil.isNotEmpty(dto.getDocumentaryType())){//无记录
+        if(dto.getDocumentarySearch()==2&&ObjectUtil.isNotEmpty(dto.getDocumentaryType())){//无记录
             wrapper.gt("t1.documentaryCount",0);
         }
         Page<ContractVo> page = baseMapper.getExportCopyList(dto.getPage(), wrapper,dto.getDocumentaryType());
@@ -1935,8 +1937,10 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
                 // 赋值采购单信息
                 if (MapUtils.isNotEmpty(ehsdPurchaseMap)) {
                     List<EhsdPurchase> purchases = ehsdPurchaseMap.get(p.getId());
-                    for(EhsdPurchase e : purchases){
-                        e.setPurchaseDocumentary(contractDocumentaryMap.getOrDefault(e.getId(),null));
+                    if(ObjectUtil.isNotEmpty(purchases)){
+                        for(EhsdPurchase e : purchases){
+                            e.setPurchaseDocumentary(contractDocumentaryMap.getOrDefault(e.getId(),null));
+                        }
                     }
                     p.setPurchaseList(purchases);
                 }
@@ -1952,7 +1956,6 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
         //查询合同产品
         return page;
     }
-
     /**
      * 外销跟单添加备注
      * @param contractVo

+ 29 - 0
hx-sale/src/main/resources/mapper/contract/ContractDocumentaryMapper.xml

@@ -8,4 +8,33 @@
             ${ew.customSqlSegment}
     </select>
 
+    <select id="getSumCount" resultType="com.fjhx.sale.entity.contract.po.ContractDocumentary">
+        SELECT
+            t3.documentary_type,
+            count( 1 ) AS `count`
+        FROM
+        (
+            SELECT
+                t1.*,
+            <if test="documentaryType neq null ">
+            (
+            SELECT
+                count( 1 )
+            FROM
+                ehsd_purchase p
+            LEFT JOIN ehsd_documentary pd ON p.id = pd.business_id
+            WHERE
+                p.data_resource_id = t1.id
+                AND pd.documentary_type = 10
+            ) AS documentaryCount
+            </if>
+            FROM
+                contract t1
+            WHERE
+                `status` = 30
+        ) t1
+        RIGHT JOIN ehsd_purchase t2 ON t1.id = t2.data_resource_id
+        RIGHT JOIN ehsd_documentary t3 ON t2.id = t3.business_id
+            ${ew.customSqlSegment}
+    </select>
 </mapper>

+ 1 - 1
hx-sale/src/main/resources/mapper/contract/ContractMapper.xml

@@ -421,7 +421,7 @@
                     t1.*,
                     IFNULL( t1.amount * t1.rate, 0 ) AS amountCNY,
                     <if test="documentaryType neq null ">
-                        (SELECT count(1) FROM ehsd_purchase p LEFT JOIN ehsd_purchase_documentary pd ON p.id = pd.business_id WHERE p.data_resource_id = t1.id AND pd.documentary_type = #{documentaryType}) AS documentaryCount,
+                        (SELECT count(1) FROM ehsd_purchase p LEFT JOIN ehsd_documentary pd ON p.id = pd.business_id WHERE p.data_resource_id = t1.id AND pd.documentary_type = #{documentaryType}) AS documentaryCount,
                     </if>
                     IFNULL(t1.advance_ratio,0)*IFNULL(t1.amount,0)/100 AS earnest,
                     ( SELECT create_time FROM claim_contract WHERE contract_id = t1.id ORDER BY create_time ASC LIMIT 1) AS claimTime,