Browse Source

销售分析 利润预算表问题修正

yzc 1 year ago
parent
commit
9cf8a10847

+ 5 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/contract/vo/ContractVo.java

@@ -250,5 +250,10 @@ public class ContractVo extends Contract {
      */
     private BigDecimal profitAmount;
 
+    /**
+     * 客户数统计
+     */
+    private Integer customerCount;
+
 }
 

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

@@ -143,4 +143,8 @@ public interface ContractMapper extends BaseMapper<Contract> {
 
     List<ContractProductVo> getProductPriceInfo(@Param("ew") IWrapper<Object> wrapper);
 
+    /**
+     * 销售分析
+     */
+    ContractVo salesAnalysis(@Param("ew") QueryWrapper queryWrapper);
 }

+ 30 - 54
hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractServiceImpl.java

@@ -454,7 +454,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
         wrapper.orderByDesc("t1", Contract::getCreateTime);
         wrapper.eq("t1", Contract::getIsChange, "0");//列表只展示未变更得数据
         wrapper.ne("t1", Contract::getIsShow, 1);
-        wrapper.between("t1", Contract::getStatus, FlowStatusEnum1.PASS.getKey(), FlowStatusEnum1.CANCELLATION.getKey() - 1);
+        wrapper.in("t1.status", 10, 30, 60);
         if (StringUtils.isNotEmpty(dto.getCustomerId())) {
             wrapper.eq("t1", Contract::getBuyCorporationId, dto.getCustomerId());
         }
@@ -462,12 +462,12 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
             wrapper.eq("t1", Contract::getCreateUser, dto.getUserId());
         }
         if (StringUtils.isNotEmpty(dto.getKeyword())) {
-            wrapper.keyword(dto.getKeyword(), new SqlField("t1.code"));
+            wrapper.keyword(dto.getKeyword(), new SqlField("t1.code"), new SqlField("t1.customerName"));
         }
 
         //客户名称
         if (StringUtils.isNotEmpty(dto.getCustomerName())) {
-            wrapper.like("t1.name", dto.getCustomerName());
+            wrapper.like("t1.customerName", dto.getCustomerName());
         }
         //业务员
         if (StringUtils.isNotEmpty(dto.getUserName())) {
@@ -989,7 +989,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
         wrapper.orderByDesc("t1", Contract::getCreateTime);
         wrapper.eq("t1", Contract::getIsChange, "0");//列表只展示未变更得数据
         wrapper.ne("t1", Contract::getIsShow, 1);
-        wrapper.between("t1", Contract::getStatus, FlowStatusEnum1.PASS.getKey(), FlowStatusEnum1.CANCELLATION.getKey() - 1);
+        wrapper.in("t1.status", 10, 30, 60);
         if (StringUtils.isNotEmpty(dto.getCustomerId())) {
             wrapper.eq("t1", Contract::getBuyCorporationId, dto.getCustomerId());
         }
@@ -1378,40 +1378,17 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
      */
     @Override
     public Map<String, Object> salesStatistics(ContractDto dto) {
-        //添加查询条件
-        QueryWrapper<Contract> query = Wrappers.<Contract>query();
-        selectTime(query, dto);
-        query.select("sum(amount) amount");
-
-        //查询销售额
-        Contract contract = baseMapper.selectOne(query);
-        query.clear();
-        //查询订单数
-        selectTime(query, dto);
-
-        Long count = baseMapper.selectCount(query);
-
-        //查询下单的客户人数
-        query.clear();
-        selectTime(query, dto);
-        query.select("count(DISTINCT(buy_corporation_id)) count");
-        Contract contract1 = baseMapper.selectOne(query);
-
+        QueryWrapper<Contract> query = Wrappers.query();
+        query.ge("c.create_time", dto.getBeginTime());
+        query.le("c.create_time", dto.getEndTime());
+        query.in("c.status", 10, 30, 60);
+        ContractVo contractVo = baseMapper.salesAnalysis(query);
         //存放销售统计数据
         Map<String, Object> map = new HashMap<>();
         //初始化数据
-        map.put("amount", new BigDecimal(0));
-        map.put("contractCount", count);
-        map.put("customerCount", new BigDecimal(0));
-
-        //赋值
-        if (ObjectUtil.isNotEmpty(contract)) {
-            map.put("amount", contract.getAmount());
-        }
-
-        if (ObjectUtil.isNotEmpty(contract1)) {
-            map.put("customerCount", contract1.getCount());
-        }
+        map.put("amount", contractVo.getAmountCNY());
+        map.put("contractCount", contractVo.getContractCount());
+        map.put("customerCount", contractVo.getCustomerCount());
         return map;
     }
 
@@ -1421,10 +1398,11 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
     @Override
     public List<ContractDto> countrySalesStatistics(ContractDto dto) {
         QueryWrapper<Object> query = Wrappers.query();
-        query.ge("DATE_FORMAT(cc.create_time,'%Y-%m')", dto.getBeginTime());
-        query.le("DATE_FORMAT(cc.create_time,'%Y-%m')", dto.getEndTime());
+        query.ge("cc.create_time", dto.getBeginTime());
+        query.le("cc.create_time", dto.getEndTime());
+        query.in("cc.status", 10, 30, 60);
         query.groupBy("cc.buy_country_id");
-        query.orderByDesc("amount");
+        query.orderByDesc("amount * rate");
         //查询销售国家统计信息
         List<ContractDto> contractDtoList = baseMapper.countrySalesStatistics(query);
         return contractDtoList;
@@ -1436,10 +1414,11 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
     @Override
     public List<ContractDto> customSalesStatistics(ContractDto dto) {
         QueryWrapper<Object> query = Wrappers.query();
-        query.ge("DATE_FORMAT(cc.create_time,'%Y-%m')", dto.getBeginTime());
-        query.le("DATE_FORMAT(cc.create_time,'%Y-%m')", dto.getEndTime());
+        query.ge("cc.create_time", dto.getBeginTime());
+        query.le("cc.create_time", dto.getEndTime());
+        query.in("cc.status", 10, 30, 60);
         query.groupBy("cc.buy_corporation_id");
-        query.orderByDesc("amount");
+        query.orderByDesc("amount * rate");
         //查询销售国家统计信息
         List<ContractDto> contractDtoList = baseMapper.customSalesStatistics(query);
         return contractDtoList;
@@ -1451,10 +1430,11 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
     @Override
     public List<ContractDto> salesmanSalesStatistics(ContractDto dto) {
         QueryWrapper<Object> query = Wrappers.query();
-        query.ge("DATE_FORMAT(cc.create_time,'%Y-%m')", dto.getBeginTime());
-        query.le("DATE_FORMAT(cc.create_time,'%Y-%m')", dto.getEndTime());
+        query.ge("cc.create_time", dto.getBeginTime());
+        query.le("cc.create_time", dto.getEndTime());
+        query.in("cc.status", 10, 30, 60);
         query.groupBy("cc.create_user");
-        query.orderByDesc("amount");
+        query.orderByDesc("amount * rate");
         //查询销售国家统计信息
         List<ContractDto> contractDtoList = baseMapper.salesmanSalesStatistics(query);
         return contractDtoList;
@@ -1466,8 +1446,9 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
     @Override
     public List<ContractDto> productSalesStatistics(ContractDto dto) {
         QueryWrapper<Object> query = Wrappers.query();
-        query.ge("DATE_FORMAT(cp.create_time,'%Y-%m')", dto.getBeginTime());
-        query.le("DATE_FORMAT(cp.create_time,'%Y-%m')", dto.getEndTime());
+        query.ge("c.create_time", dto.getBeginTime());
+        query.le("c.create_time", dto.getEndTime());
+        query.in("c.status", 10, 30, 60);
         query.groupBy("cp.product_id");
         query.orderByDesc("amount");
         //查询销售国家统计信息
@@ -1481,8 +1462,9 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
     @Override
     public List<ContractDto> salesVolumeStatistics(ContractDto dto) {
         QueryWrapper<Object> query = Wrappers.query();
-        query.ge("DATE_FORMAT(cp.create_time,'%Y-%m')", dto.getBeginTime());
-        query.le("DATE_FORMAT(cp.create_time,'%Y-%m')", dto.getEndTime());
+        query.ge("c.create_time", dto.getBeginTime());
+        query.le("c.create_time", dto.getEndTime());
+        query.in("c.status", 10, 30, 60);
         query.groupBy("cp.product_id");
         query.orderByDesc("quantity");
         //查询销售商品统计信息
@@ -2057,12 +2039,6 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
         contractPdfInfoVo.setBeneficiaryAddress(contract.getBeneficiaryAddress());
     }
 
-    // 添加时间的查询条件
-    private void selectTime(QueryWrapper<Contract> query, ContractDto dto) {
-        query.ge("DATE_FORMAT(create_time,'%Y-%m')", dto.getBeginTime());
-        query.le("DATE_FORMAT(create_time,'%Y-%m')", dto.getEndTime());
-    }
-
     private void setAreaId(ContractDto contractDto) {
 
         SetCustomizeAreaId setCustomizeAreaId1 = new SetCustomizeAreaId() {

+ 2 - 3
hx-sale/src/main/java/com/fjhx/sale/service/sample/impl/SampleServiceImpl.java

@@ -15,7 +15,6 @@ import com.fjhx.area.utils.CustomizeAreaUtil;
 import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.common.entity.contract.po.ContractTemplate;
 import com.fjhx.common.entity.corporation.po.Corporation;
-import com.fjhx.common.enums.FlowStatusEnum1;
 import com.fjhx.common.service.contract.ContractTemplateService;
 import com.fjhx.common.service.corporation.CorporationService;
 import com.fjhx.common.utils.Assert;
@@ -150,8 +149,8 @@ public class SampleServiceImpl extends ServiceImpl<SampleMapper, Sample> impleme
             wrapper.eq("t1", Sample::getStatus, dto.getStatus());
         }else{
             wrapper.eq("t1", Sample::getIsChange, "0");//列表只展示未变更得数据
-            wrapper.ne("t1",Sample::getIsShow,1);
-            wrapper.between("t1", Sample::getStatus, FlowStatusEnum1.DRAFT.getKey(), FlowStatusEnum1.CANCELLATION.getKey() - 1);
+            wrapper.ne("t1", Sample::getIsShow, 1);
+            wrapper.in("t1.status", 10, 30, 60);
         }
         if (StringUtils.isNotEmpty(dto.getUserId())) {
             wrapper.eq("t1", Sample::getCreateUser, dto.getUserId());

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

@@ -146,13 +146,27 @@
     <select id="getProfitBudgetHeadStatistic" resultType="com.fjhx.sale.entity.contract.vo.ContractBudgetVo">
         SELECT t1.*,
                if(t1.amount &lt; t1.sumPurchaseContractMoney, 1, 0) AS isLoss
-        FROM (SELECT t1.id                                                         AS contractId,
+        FROM (SELECT t1.id                            AS contractId,
                      t1.amount,
                      t1.currency,
                      t1.currency_rate_json,
-                     t1.rate                                                       AS rate,
+                     t1.rate                          AS rate,
                      t1.buy_corporation_id,
-                     t2.*,
+                     t1.create_time,
+                     t2.trailer_fee_currency,
+                     t2.trailer_fee,
+                     t2.customs_fee_currency,
+                     t2.customs_fee,
+                     t2.agency_fee_currency,
+                     t2.agency_fee,
+                     t2.port_mixed_fee_currency,
+                     t2.port_mixed_fee,
+                     t2.inspection_red_pack_currency,
+                     t2.inspection_red_pack,
+                     t2.commission_currency,
+                     t2.commission,
+                     t2.other_currency,
+                     t2.other,
                      t1.is_settled,
                      t1.is_change,
                      t1.status,
@@ -161,7 +175,9 @@
                      t1.code,
                      (SELECT IFNULL(SUM(amount), 0)
                       FROM ehsd_purchase
-                      WHERE data_resource_id = t1.id AND `status` IN (10, 30, 60)) AS sumPurchaseContractMoney
+                      WHERE data_resource_id = t1.id
+                        AND `status` IN (10, 30, 60)) AS sumPurchaseContractMoney,
+                     cu.NAME                             customerName
               FROM contract t1
                        LEFT JOIN contract_budget t2 ON t1.id = t2.contract_id
                        LEFT JOIN bytesailing_customer.customer cu on t1.buy_corporation_id = cu.id and cu.del_flag = 0
@@ -353,12 +369,11 @@
     </select>
 
     <select id="productSalesStatistics" resultType="com.fjhx.sale.entity.contract.dto.ContractDto">
-        SELECT
-            SUM(cp.amount) amount,
-            pi.name productName
-        FROM
-            contract_product cp
-                LEFT JOIN bytesailing_item.product_info pi ON cp.product_id = pi.id
+        SELECT SUM(cp.amount) amount,
+               pi.name        productName
+        FROM contract_product cp
+                 JOIN contract c ON cp.contract_id = c.id
+                 LEFT JOIN bytesailing_item.product_info pi ON cp.product_id = pi.id
             ${ew.customSqlSegment}
     </select>
     <select id="salesVolumeStatistics" resultType="com.fjhx.sale.entity.contract.dto.ContractDto">
@@ -366,6 +381,7 @@
         SELECT SUM(cp.quantity) quantity,
                pi.name          productName
         FROM contract_product cp
+                 JOIN contract c ON cp.contract_id = c.id
                  LEFT JOIN bytesailing_item.product_info pi ON cp.product_id = pi.id
             ${ew.customSqlSegment}
     </select>
@@ -589,4 +605,11 @@
                  LEFT JOIN contract c ON cp.contract_id = c.id
             ${ew.customSqlSegment}
     </select>
+    <select id="salesAnalysis" resultType="com.fjhx.sale.entity.contract.vo.ContractVo">
+        SELECT sum(c.amount * c.rate)             AS amountCNY,
+               count(1)                           AS contractCount,
+               count(DISTINCT buy_corporation_id) AS customerCount
+        FROM contract c
+            ${ew.customSqlSegment}
+    </select>
 </mapper>