Răsfoiți Sursa

Merge remote-tracking branch 'origin/master'

caozj 2 ani în urmă
părinte
comite
2b7ed1e882
26 a modificat fișierele cu 637 adăugiri și 110 ștergeri
  1. 1 2
      hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountDeptRunningWaterDetailServiceImpl.java
  2. 45 45
      hx-admin/src/main/resources/application-prod.yml
  3. 1 1
      hx-admin/src/main/resources/application-test.yml
  4. 1 1
      hx-customer/src/main/java/com/fjhx/customer/entity/customer/dto/CustomerDto.java
  5. 15 0
      hx-customer/src/main/java/com/fjhx/customer/entity/customer/vo/CustomerVo.java
  6. 16 0
      hx-customer/src/main/java/com/fjhx/customer/mapper/customer/CustomerMapper.java
  7. 14 0
      hx-customer/src/main/java/com/fjhx/customer/service/customer/CustomerService.java
  8. 21 0
      hx-customer/src/main/java/com/fjhx/customer/service/customer/impl/CustomerServiceImpl.java
  9. 21 0
      hx-customer/src/main/resources/mapper/customer/CustomerMapper.xml
  10. 28 0
      hx-sale/src/main/java/com/fjhx/sale/controller/sale/SaleQuotationController.java
  11. 12 0
      hx-sale/src/main/java/com/fjhx/sale/entity/sale/vo/SaleQuotationVo.java
  12. 9 0
      hx-sale/src/main/java/com/fjhx/sale/mapper/contract/ContractMapper.java
  13. 6 0
      hx-sale/src/main/java/com/fjhx/sale/mapper/sale/SaleQuotationMapper.java
  14. 9 0
      hx-sale/src/main/java/com/fjhx/sale/service/contract/ContractService.java
  15. 12 0
      hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractServiceImpl.java
  16. 17 0
      hx-sale/src/main/java/com/fjhx/sale/service/sale/SaleQuotationService.java
  17. 330 24
      hx-sale/src/main/java/com/fjhx/sale/service/sale/impl/SaleQuotationServiceImpl.java
  18. 11 0
      hx-sale/src/main/resources/mapper/contract/ContractMapper.xml
  19. 11 0
      hx-sale/src/main/resources/mapper/sale/SaleQuotationMapper.xml
  20. 2 2
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/abnormal/impl/AbnormalDetailsServiceImpl.java
  21. 4 2
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdBackQualityWaitServiceImpl.java
  22. 21 18
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdOrderServiceImpl.java
  23. 1 1
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/quality/impl/QualityInfoServiceImpl.java
  24. 18 9
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/stock/impl/StockTransferServiceImpl.java
  25. 7 2
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/utils/CodeEnum.java
  26. 4 3
      hx-wms/src/main/java/com/fjhx/wms/utils/CodeEnum.java

+ 1 - 2
hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountDeptRunningWaterDetailServiceImpl.java

@@ -105,6 +105,7 @@ public class AccountDeptRunningWaterDetailServiceImpl extends ServiceImpl<Accoun
                accountDeptRunningWater.setType("10");
                //查询部门-资金流水关联表的数据(获取到部门-资金流水关联表中的数据是否分拆,如果是分拆则删除资金流水分拆部门表的数据,否则修改资金流水分拆部门表的数据在添加资金流水分拆部门表的数据)
                AccountDeptRunningWater accountDeptRunningWater1 = accountDeptRunningWaterService.getById(accountRunningWaterVo.getAccountDeptRunningWaterId());
+
                if (accountDeptRunningWater1.getType().equals("20")){
                    accountDeptRunningWater.setId(accountRunningWaterVo.getAccountDeptRunningWaterId());
                   accountDeptRunningWaterService.updateById(accountDeptRunningWater);
@@ -126,8 +127,6 @@ public class AccountDeptRunningWaterDetailServiceImpl extends ServiceImpl<Accoun
            }
         }
 
-
-
     }
 
     @Override

+ 45 - 45
hx-admin/src/main/resources/application-prod.yml

@@ -6,65 +6,65 @@ spring:
             primary: base
             datasource:
                 victoriatourist:
-                    url: jdbc:mysql://127.0.0.1:28643/bytesailing_victoriatourist?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-                    username: fjhx2012mysql
-                    password: IzJshF_dk9NNFpNm_IK
+                    url: jdbc:mysql://192.168.0.238:23063/bytesailing_victoriatourist?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    username: hx_mysql_byteSailing_rds
+                    password: da~h2swYUI#aj134&y8K
                 common:
-                    url: jdbc:mysql://127.0.0.1:28643/bytesailing_common?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-                    username: fjhx2012mysql
-                    password: IzJshF_dk9NNFpNm_IK
+                    url: jdbc:mysql://192.168.0.238:23063/bytesailing_common?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    username: hx_mysql_byteSailing_rds
+                    password: da~h2swYUI#aj134&y8K
                 oa:
-                    url: jdbc:mysql://127.0.0.1:28643/bytesailing_oa?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-                    username: fjhx2012mysql
-                    password: IzJshF_dk9NNFpNm_IK
+                    url: jdbc:mysql://192.168.0.238:23063/bytesailing_oa?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    username: hx_mysql_byteSailing_rds
+                    password: da~h2swYUI#aj134&y8K
                 mes:
-                    url: jdbc:mysql://127.0.0.1:28643/bytesailing_mes?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-                    username: fjhx2012mysql
-                    password: IzJshF_dk9NNFpNm_IK
+                    url: jdbc:mysql://192.168.0.238:23063/bytesailing_mes?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    username: hx_mysql_byteSailing_rds
+                    password: da~h2swYUI#aj134&y8K
                 wms:
-                    url: jdbc:mysql://127.0.0.1:28643/bytesailing_wms?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-                    username: fjhx2012mysql
-                    password: IzJshF_dk9NNFpNm_IK
+                    url: jdbc:mysql://192.168.0.238:23063/bytesailing_wms?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    username: hx_mysql_byteSailing_rds
+                    password: da~h2swYUI#aj134&y8K
                 item:
-                    url: jdbc:mysql://127.0.0.1:28643/bytesailing_item?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-                    username: fjhx2012mysql
-                    password: IzJshF_dk9NNFpNm_IK
+                    url: jdbc:mysql://192.168.0.238:23063/bytesailing_item?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    username: hx_mysql_byteSailing_rds
+                    password: da~h2swYUI#aj134&y8K
                 supply:
-                    url: jdbc:mysql://127.0.0.1:28643/bytesailing_supply?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-                    username: fjhx2012mysql
-                    password: IzJshF_dk9NNFpNm_IK
+                    url: jdbc:mysql://192.168.0.238:23063/bytesailing_supply?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    username: hx_mysql_byteSailing_rds
+                    password: da~h2swYUI#aj134&y8K
                 base:
-                    url: jdbc:mysql://127.0.0.1:28643/bytesailing_base?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-                    username: fjhx2012mysql
-                    password: IzJshF_dk9NNFpNm_IK
+                    url: jdbc:mysql://192.168.0.238:23063/bytesailing_base?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    username: hx_mysql_byteSailing_rds
+                    password: da~h2swYUI#aj134&y8K
                 iot:
-                    url: jdbc:mysql://127.0.0.1:28643/bytesailing_iot?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-                    username: fjhx2012mysql
-                    password: IzJshF_dk9NNFpNm_IK
+                    url: jdbc:mysql://192.168.0.238:23063/bytesailing_iot?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    username: hx_mysql_byteSailing_rds
+                    password: da~h2swYUI#aj134&y8K
                 customer:
-                    url: jdbc:mysql://127.0.0.1:28643/bytesailing_customer?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-                    username: fjhx2012mysql
-                    password: IzJshF_dk9NNFpNm_IK
+                    url: jdbc:mysql://192.168.0.238:23063/bytesailing_customer?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    username: hx_mysql_byteSailing_rds
+                    password: da~h2swYUI#aj134&y8K
                 purchase:
-                    url: jdbc:mysql://127.0.0.1:28643/bytesailing_purchase?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-                    username: fjhx2012mysql
-                    password: IzJshF_dk9NNFpNm_IK
+                    url: jdbc:mysql://192.168.0.238:23063/bytesailing_purchase?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    username: hx_mysql_byteSailing_rds
+                    password: da~h2swYUI#aj134&y8K
                 account:
-                    url: jdbc:mysql://127.0.0.1:28643/bytesailing_account?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-                    username: fjhx2012mysql
-                    password: IzJshF_dk9NNFpNm_IK
+                    url: jdbc:mysql://192.168.0.238:23063/bytesailing_account?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    username: hx_mysql_byteSailing_rds
+                    password: da~h2swYUI#aj134&y8K
                 sale:
-                    url: jdbc:mysql://127.0.0.1:28643/bytesailing_sale?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-                    username: fjhx2012mysql
-                    password: IzJshF_dk9NNFpNm_IK
+                    url: jdbc:mysql://192.168.0.238:23063/bytesailing_sale?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    username: hx_mysql_byteSailing_rds
+                    password: da~h2swYUI#aj134&y8K
                 mail:
-                    url: jdbc:mysql://127.0.0.1:28643/bytesailing_mail?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-                    username: fjhx2012mysql
-                    password: IzJshF_dk9NNFpNm_IK
+                    url: jdbc:mysql://192.168.0.238:23063/bytesailing_mail?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    username: hx_mysql_byteSailing_rds
+                    password: da~h2swYUI#aj134&y8K
                 kd100:
-                    url: jdbc:mysql://127.0.0.1:28643/bytesailing_kd100?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
-                    username: fjhx2012mysql
-                    password: IzJshF_dk9NNFpNm_IK
+                    url: jdbc:mysql://192.168.0.238:23063/bytesailing_kd100?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    username: hx_mysql_byteSailing_rds
+                    password: da~h2swYUI#aj134&y8K
 
     # redis 配置
     redis:

+ 1 - 1
hx-admin/src/main/resources/application-test.yml

@@ -46,7 +46,7 @@ spring:
                     username: fjhx2012mysql
                     password: 3PN-Mzn#vnP&q6d
                 purchase:
-                    url: jdbc:mysql://36.134.91.96:17330/bytesailing_purchase?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
+                    url: jdbc:mysql://127.0.0.1:17330/bytesailing_purchase?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
                     username: fjhx2012mysql
                     password: 3PN-Mzn#vnP&q6d
                 account:

+ 1 - 1
hx-customer/src/main/java/com/fjhx/customer/entity/customer/dto/CustomerDto.java

@@ -27,7 +27,7 @@ public class CustomerDto extends Customer {
     private String beginTime;
 
     /**
-     * 开始时间
+     * 结束时间
      */
     private String endTime;
 }

+ 15 - 0
hx-customer/src/main/java/com/fjhx/customer/entity/customer/vo/CustomerVo.java

@@ -27,5 +27,20 @@ public class CustomerVo extends Customer implements ISetAreaName {
 
     private List<CustomerUser> customerUserList;
 
+    /**
+     * 数量
+     */
+    private Integer count;
+
+    /**
+     * 存量
+     */
+    private Integer incrementCount;
+
+    /**
+     * 时间
+     */
+    private String time;
+
 
 }

+ 16 - 0
hx-customer/src/main/java/com/fjhx/customer/mapper/customer/CustomerMapper.java

@@ -1,6 +1,8 @@
 package com.fjhx.customer.mapper.customer;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.fjhx.customer.entity.customer.dto.CustomerDto;
 import com.fjhx.customer.entity.customer.po.Customer;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -30,4 +32,18 @@ public interface CustomerMapper extends BaseMapper<Customer> {
      */
     Page<CustomerVo> getPage(@Param("page") Page<Object> page, @Param("ew")LambdaQueryWrapper<Customer> wrapper);
 
+
+    /**
+     * 来源存量(客户分析)
+     * @param query
+     * @return
+     */
+    List<CustomerVo> sourceStock(@Param("ew") QueryWrapper<Object> query);
+
+    /**
+     * 来源增量(客户分析)
+     * @param query
+     * @return
+     */
+    List<CustomerVo> sourceIncrement(@Param("ew") QueryWrapper<Object> query);
 }

+ 14 - 0
hx-customer/src/main/java/com/fjhx/customer/service/customer/CustomerService.java

@@ -1,5 +1,6 @@
 package com.fjhx.customer.service.customer;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.fjhx.customer.entity.customer.po.Customer;
 import com.ruoyi.common.core.service.BaseService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -52,4 +53,17 @@ public interface CustomerService extends BaseService<Customer> {
     Page<CustomerVo> privateSeaPage(CustomerSelectDto dto);
 
 
+    /**
+     * 来源存量(客户分析)
+     * @param query
+     * @return
+     */
+    List<CustomerVo> sourceStock(QueryWrapper<Object> query);
+
+    /**
+     * 来源增量(客户分析)
+     * @param query
+     * @return
+     */
+    List<CustomerVo> sourceIncrement(QueryWrapper<Object> query);
 }

+ 21 - 0
hx-customer/src/main/java/com/fjhx/customer/service/customer/impl/CustomerServiceImpl.java

@@ -5,6 +5,7 @@ import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.fjhx.area.utils.AreaUtil;
 import com.fjhx.common.constant.SourceConstant;
@@ -165,6 +166,26 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> i
         return page;
     }
 
+    /**
+     * 来源存量(客户分析)
+     * @param query
+     * @return
+     */
+    @Override
+    public List<CustomerVo> sourceStock(QueryWrapper<Object> query) {
+        return baseMapper.sourceStock(query);
+    }
+
+    /**
+     * 来源增量(客户分析)
+     * @param query
+     * @return
+     */
+    @Override
+    public List<CustomerVo> sourceIncrement(QueryWrapper<Object> query) {
+        return baseMapper.sourceIncrement(query);
+    }
+
 
     //添加客户用户表的信息
     private void  saveCustomerUse(CustomerDto customerDto){

+ 21 - 0
hx-customer/src/main/resources/mapper/customer/CustomerMapper.xml

@@ -45,4 +45,25 @@
             ${ew.customSqlSegment}
     </select>
 
+
+    <select id="sourceStock" resultType="com.fjhx.customer.entity.customer.vo.CustomerVo">
+        SELECT
+            COUNT(*) count,
+	        c.source,
+            DATE_FORMAT(c.create_time,'%Y-%m') time
+        FROM
+            customer c
+            ${ew.customSqlSegment}
+    </select>
+
+    <select id="sourceIncrement" resultType="com.fjhx.customer.entity.customer.vo.CustomerVo">
+        SELECT
+            COUNT(*) count,
+	        c.source,
+            DATE_FORMAT(c.create_time,'%Y-%m') time
+        FROM
+            customer c
+            ${ew.customSqlSegment}
+    </select>
+
 </mapper>

+ 28 - 0
hx-sale/src/main/java/com/fjhx/sale/controller/sale/SaleQuotationController.java

@@ -1,7 +1,11 @@
 package com.fjhx.sale.controller.sale;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.fjhx.customer.entity.customer.dto.CustomerDto;
 import com.fjhx.customer.entity.customer.dto.CustomerSelectDto;
+import com.fjhx.customer.entity.customer.po.Customer;
+import com.fjhx.wms.entity.warehouse.po.Warehouse;
 import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.sale.entity.sale.vo.SaleQuotationVo;
@@ -89,5 +93,29 @@ public class SaleQuotationController {
 
     }
 
+    /**
+     * 来源统计(客户分析)
+     */
+    @PostMapping("/sourceStatistics")
+    public  Map<String,Object> sourceStatistics(@RequestBody CustomerDto dto){
+        return saleQuotationService.sourceStatistics(dto);
+    }
+
+    /**
+     * 类型统计(客户分析)
+     */
+    @PostMapping("/typeStatistics")
+    public  Map<String,Object> typeStatistics(@RequestBody CustomerDto dto){
+        return saleQuotationService.typeStatistics(dto);
+    }
+
+    /**
+     * 趋势分析(客户分析)
+     */
+    @PostMapping("/trendAnalysis")
+    public  Map<String,Object> trendAnalysis(@RequestBody CustomerDto dto){
+        return saleQuotationService.trendAnalysis(dto);
+    }
+
 
 }

+ 12 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/sale/vo/SaleQuotationVo.java

@@ -80,6 +80,18 @@ public class SaleQuotationVo extends SaleQuotation {
      */
     private String contractCode;
 
+    /**
+     * 单数
+     */
+    private Integer count;
+
+    /**
+     * 单数
+     */
+    private Integer contractCount;
+
+
+
 
 
 }

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

@@ -1,10 +1,12 @@
 package com.fjhx.sale.mapper.contract;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.fjhx.customer.entity.customer.dto.CustomerDto;
 import com.fjhx.sale.entity.contract.po.Contract;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.sale.entity.contract.vo.ContractVo;
+import com.fjhx.sale.entity.sale.vo.SaleQuotationVo;
 import com.ruoyi.common.annotation.TenantIgnore;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.apache.ibatis.annotations.Param;
@@ -46,4 +48,11 @@ public interface ContractMapper extends BaseMapper<Contract> {
      */
     @TenantIgnore
     List<ContractVo> getAmount(CustomerDto dto);
+
+    /**
+     * 查询成交单统计(合同)
+     * @param query
+     * @return
+     */
+    List<SaleQuotationVo> contractStatistics(@Param("ew") QueryWrapper<Object> query);
 }

+ 6 - 0
hx-sale/src/main/java/com/fjhx/sale/mapper/sale/SaleQuotationMapper.java

@@ -12,6 +12,7 @@ import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 
 /**
@@ -45,4 +46,9 @@ public interface SaleQuotationMapper extends BaseMapper<SaleQuotation> {
     Page<SaleQuotationVo> saleDetail(@Param("page") Page<Object> page,@Param("dto") CustomerSelectDto dto);
 
     Page<SaleQuotationVo> latestFollowUp(@Param("page") Page<Object> page,@Param("ew") QueryWrapper<Object> orderByDesc);
+
+    /**
+     * 类型统计(客户分析)
+     */
+    List<SaleQuotationVo> saleStatistics(@Param("ew") QueryWrapper<Object> query);
 }

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

@@ -1,5 +1,6 @@
 package com.fjhx.sale.service.contract;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.customer.entity.customer.dto.CustomerDto;
 import com.fjhx.sale.entity.contract.dto.ContractDto;
@@ -7,6 +8,7 @@ import com.fjhx.sale.entity.contract.dto.ContractSelectDto;
 import com.fjhx.sale.entity.contract.po.Contract;
 import com.fjhx.sale.entity.contract.vo.ContractPdfInfoVo;
 import com.fjhx.sale.entity.contract.vo.ContractVo;
+import com.fjhx.sale.entity.sale.vo.SaleQuotationVo;
 import com.ruoyi.common.core.service.BaseService;
 
 import java.util.List;
@@ -75,4 +77,11 @@ public interface ContractService extends BaseService<Contract> {
      * @param dto
      */
     List<ContractVo> getAmount(CustomerDto dto);
+
+    /**
+     * 查询成交单统计(合同)
+     * @param query
+     * @return
+     */
+    List<SaleQuotationVo> contractStatistics(QueryWrapper<Object> query);
 }

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

@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -26,6 +27,7 @@ import com.fjhx.sale.entity.contract.po.ContractProduct;
 import com.fjhx.sale.entity.contract.vo.ContractDocumentaryVo;
 import com.fjhx.sale.entity.contract.vo.ContractPdfInfoVo;
 import com.fjhx.sale.entity.contract.vo.ContractVo;
+import com.fjhx.sale.entity.sale.vo.SaleQuotationVo;
 import com.fjhx.sale.mapper.contract.ContractMapper;
 import com.fjhx.sale.service.contract.ContractProductService;
 import com.fjhx.sale.service.contract.ContractService;
@@ -219,6 +221,16 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
     }
 
     /**
+     * 查询成交单统计(合同)
+     * @param query
+     * @return
+     */
+    @Override
+    public List<SaleQuotationVo> contractStatistics(QueryWrapper<Object> query) {
+        return baseMapper.contractStatistics(query);
+    }
+
+    /**
      * 赋值外销合同信息
      *
      * @param contractPdfInfoVo param

+ 17 - 0
hx-sale/src/main/java/com/fjhx/sale/service/sale/SaleQuotationService.java

@@ -1,7 +1,9 @@
 package com.fjhx.sale.service.sale;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.fjhx.customer.entity.customer.dto.CustomerDto;
 import com.fjhx.customer.entity.customer.dto.CustomerSelectDto;
+import com.fjhx.customer.entity.customer.po.Customer;
 import com.fjhx.sale.entity.sale.po.SaleQuotation;
 import com.ruoyi.common.core.service.BaseService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -86,4 +88,19 @@ public interface SaleQuotationService extends BaseService<SaleQuotation> {
      * 销售明细(客户画像)
      */
     Page<SaleQuotationVo> saleDetail(CustomerSelectDto dto);
+
+    /**
+     * 来源统计(客户分析)
+     */
+    Map<String,Object> sourceStatistics(CustomerDto dto);
+
+    /**
+     * 类型统计(客户分析)
+     */
+    Map<String, Object> typeStatistics(CustomerDto dto);
+
+    /**
+     * 趋势分析(客户分析)
+     */
+    Map<String, Object> trendAnalysis(CustomerDto dto);
 }

+ 330 - 24
hx-sale/src/main/java/com/fjhx/sale/service/sale/impl/SaleQuotationServiceImpl.java

@@ -1,9 +1,11 @@
 package com.fjhx.sale.service.sale.impl;
 
+import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.fjhx.account.controller.utils.DateUtils;
 import com.fjhx.account.entity.account.vo.AccountPaymentVo;
@@ -11,6 +13,9 @@ import com.fjhx.area.utils.AreaUtil;
 import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.customer.entity.customer.dto.CustomerDto;
 import com.fjhx.customer.entity.customer.dto.CustomerSelectDto;
+import com.fjhx.customer.entity.customer.po.Customer;
+import com.fjhx.customer.entity.customer.vo.CustomerVo;
+import com.fjhx.customer.service.customer.CustomerService;
 import com.fjhx.sale.entity.contract.po.Contract;
 import com.fjhx.sale.entity.contract.vo.ContractPdfInfoVo;
 import com.fjhx.sale.entity.contract.vo.ContractVo;
@@ -24,6 +29,9 @@ import com.fjhx.sale.service.quotation.QuotationProductService;
 import com.fjhx.sale.service.sale.SaleQuotationService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.sale.util.code.CodeEnum;
+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.obs.services.internal.ServiceException;
 import com.ruoyi.common.core.domain.BasePo;
 import com.ruoyi.system.utils.UserUtil;
@@ -60,6 +68,12 @@ public class SaleQuotationServiceImpl extends ServiceImpl<SaleQuotationMapper, S
     @Autowired
     private ContractService contractService;
 
+    @Autowired
+    private CustomerService customerService;
+
+    @Autowired
+    private DictTenantDataService dictTenantDataService;
+
 
     /**
      * 报价表分页
@@ -129,7 +143,7 @@ public class SaleQuotationServiceImpl extends ServiceImpl<SaleQuotationMapper, S
         }
         //查询商品-报价表的数据
         SaleQuotation saleQuotation = this.getById(saleQuotationDto.getId());
-        if (ObjectUtil.isNotEmpty(saleQuotation)){
+        if (ObjectUtil.isNotEmpty(saleQuotation)) {
             throw new ServiceException("报价表的数据不存在");
         }
 
@@ -159,15 +173,17 @@ public class SaleQuotationServiceImpl extends ServiceImpl<SaleQuotationMapper, S
 
     /**
      * 查询这个客户的报价次数
+     *
      * @param id (客户ID)
      */
     @Override
     public Integer getCount(Long id) {
-      return  baseMapper.getCount(id);
+        return baseMapper.getCount(id);
     }
 
     /**
      * 查询指定客户的每月报价总额
+     *
      * @param dto
      * @return
      */
@@ -192,19 +208,20 @@ public class SaleQuotationServiceImpl extends ServiceImpl<SaleQuotationMapper, S
      */
     @Override
     public Map<String, Object> salesStatistics(CustomerDto dto) {
-        Map<String,Object> map = new HashMap<>();
+        Map<String, Object> map = new HashMap<>();
         //切换数据源
         DynamicDataSourceContextHolder.push(SourceConstant.SALE);
         //查询这个客户的销售额(合同总金额)及成交合同数量
         ContractVo contractVo = contractService.getSalesTotal(dto.getId());
-        map.put("contractVo",contractVo);
+        map.put("contractVo", contractVo);
 
         //查询这个客户的报价次数
         Integer count = this.getCount(dto.getId());
         DynamicDataSourceContextHolder.poll();
-        map.put("count",count);
+        map.put("count", count);
         return map;
     }
+
     /**
      * 报价销售走势(客户画像)
      */
@@ -215,50 +232,50 @@ public class SaleQuotationServiceImpl extends ServiceImpl<SaleQuotationMapper, S
         List<String> monthBetweenDate = DateUtils.getMonthBetweenDate(DateUtil.offsetMonth(new Date(), -12), new Date());
 
         //存放报价的数据;
-        List<Map<String,Object>> saleQuotationList = new ArrayList<>();
+        List<Map<String, Object>> saleQuotationList = new ArrayList<>();
         //存放报价的数据;
-        List<Map<String,Object>> contractList = new ArrayList<>();
+        List<Map<String, Object>> contractList = new ArrayList<>();
 
-        dto.setBeginTime(DateUtil.format(DateUtil.offsetMonth(new Date(), -12),"yy-MM"));
-        dto.setEndTime(DateUtil.format(new Date(),"yy-MM"));
+        dto.setBeginTime(DateUtil.format(DateUtil.offsetMonth(new Date(), -12), "yy-MM"));
+        dto.setEndTime(DateUtil.format(new Date(), "yy-MM"));
         //查询指定客户的每月报价总额
         List<SaleQuotationVo> saleQuotationVoList = this.getAmount(dto);
 
         Map<String, List<SaleQuotationVo>> saleQuotationVoMap = saleQuotationVoList.stream()
-                .collect(Collectors.groupingBy(item->DateUtil.format(item.getCreateTime(),"yyyy-MM")));
+                .collect(Collectors.groupingBy(item -> DateUtil.format(item.getCreateTime(), "yyyy-MM")));
 
         //查询指定客户的每月合同总额
         List<ContractVo> contractVoList = contractService.getAmount(dto);
         Map<String, List<ContractVo>> contractVoMap = contractVoList.stream()
-                .collect(Collectors.groupingBy(item->DateUtil.format(item.getCreateTime(),"yyyy-MM")));
+                .collect(Collectors.groupingBy(item -> DateUtil.format(item.getCreateTime(), "yyyy-MM")));
 
         //赋值每个月的值
         for (String month : monthBetweenDate) {
             //存放每月的报价总额
-            Map<String,Object> saleQuotationMap = new HashMap<>();
+            Map<String, Object> saleQuotationMap = new HashMap<>();
             //每月的金额初始化的值为0
-            saleQuotationMap.put("month",month);
-            saleQuotationMap.put("saleAmount",new BigDecimal(0));
+            saleQuotationMap.put("month", month);
+            saleQuotationMap.put("saleAmount", new BigDecimal(0));
             List<SaleQuotationVo> saleQuotationVos = saleQuotationVoMap.get(month);
             //给每月的报价金额赋值
-            if (ObjectUtil.isNotEmpty(saleQuotationVos)){
-                saleQuotationMap.put("saleAmount",saleQuotationVos.get(0).getAmount());
+            if (ObjectUtil.isNotEmpty(saleQuotationVos)) {
+                saleQuotationMap.put("saleAmount", saleQuotationVos.get(0).getAmount());
             }
             saleQuotationList.add(saleQuotationMap);
 
             //存放每月的合同总额
-            Map<String,Object> contractMap = new HashMap<>();
+            Map<String, Object> contractMap = new HashMap<>();
             //每月的金额初始化的值为0
-            contractMap.put("month",month);
-            contractMap.put("contractAmount",new BigDecimal(0));
+            contractMap.put("month", month);
+            contractMap.put("contractAmount", new BigDecimal(0));
             List<ContractVo> contractVoList1 = contractVoMap.get(month);
-            if (ObjectUtil.isNotEmpty(contractVoList1)){
-                contractMap.put("contractAmount",contractVoList1.get(0).getAmount());
+            if (ObjectUtil.isNotEmpty(contractVoList1)) {
+                contractMap.put("contractAmount", contractVoList1.get(0).getAmount());
             }
             contractList.add(contractMap);
         }
-        map.put("contractList",contractList);
-        map.put("saleQuotationList",saleQuotationList);
+        map.put("contractList", contractList);
+        map.put("saleQuotationList", saleQuotationList);
         return map;
     }
 
@@ -266,7 +283,7 @@ public class SaleQuotationServiceImpl extends ServiceImpl<SaleQuotationMapper, S
      * 销售明细(客户画像)
      */
     @Override
-    public  Page<SaleQuotationVo> saleDetail(CustomerSelectDto dto) {
+    public Page<SaleQuotationVo> saleDetail(CustomerSelectDto dto) {
         Page<SaleQuotationVo> saleQuotationVoPage = baseMapper.saleDetail(dto.getPage(), dto);
         List<SaleQuotationVo> records = saleQuotationVoPage.getRecords();
         // 赋值用户名称
@@ -276,6 +293,286 @@ public class SaleQuotationServiceImpl extends ServiceImpl<SaleQuotationMapper, S
     }
 
     /**
+     * 来源统计(客户分析)
+     */
+    @Override
+    public Map<String, Object> sourceStatistics(CustomerDto dto) {
+        //切换数据源
+        DynamicDataSourceContextHolder.push(SourceConstant.CUSTOMER);
+        //存放来源统计的数据
+        Map<String, Object> map = new HashMap<>();
+
+        //存放来源存量与增量的数据列表
+        List<Map<String,Object>> stockList = new ArrayList<>();
+
+
+        //来源存量(在指定时间外的数量)
+        QueryWrapper<Object> query = Wrappers.query();
+        query.eq(ObjectUtil.isNotEmpty(dto.getCountryId()), "c.country_id", dto.getCountryId());
+        query.eq(ObjectUtil.isNotEmpty(dto.getProvinceId()), "c.province_id", dto.getProvinceId());
+        query.eq(ObjectUtil.isNotEmpty(dto.getCityId()), "c.city_id", dto.getCityId());
+        query.groupBy("c.source");
+        query.le("DATE_FORMAT(c.create_time,'%Y-%m')", dto.getBeginTime());
+        query.ge("DATE_FORMAT(c.create_time,'%Y-%m')", dto.getEndTime());
+        List<CustomerVo> sourceStockList = customerService.sourceStock(query);
+
+        //来源增量(在指定时间内的数量)
+        query.clear();
+        query.eq(ObjectUtil.isNotEmpty(dto.getCountryId()), "c.country_id", dto.getCountryId());
+        query.eq(ObjectUtil.isNotEmpty(dto.getProvinceId()), "c.province_id", dto.getProvinceId());
+        query.eq(ObjectUtil.isNotEmpty(dto.getCityId()), "c.city_id", dto.getCityId());
+        query.groupBy("c.source");
+        query.ge("DATE_FORMAT(c.create_time,'%Y-%m')", dto.getBeginTime());
+        query.le("DATE_FORMAT(c.create_time,'%Y-%m')", dto.getEndTime());
+        List<CustomerVo> sourceIncrementList = customerService.sourceIncrement(query);
+
+        DynamicDataSourceContextHolder.poll();
+
+        //切换数据源
+        DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+        //获取来源的字典数据
+        List<DictTenantDataVo> dictTenantDataVos = getDict("customer_source");
+        DynamicDataSourceContextHolder.poll();
+        //获取来源增量总计
+        Integer incrementAmount = sourceIncrementList.stream().map(customerVo -> customerVo.getCount())
+                .collect(Collectors.toList()).stream().reduce(Integer::sum).orElse(0);
+        map.put("incrementAmount", incrementAmount);
+        //获取来源存量总计
+        Integer stockAmount = sourceStockList.stream().map(customerVo -> customerVo.getCount())
+                .collect(Collectors.toList()).stream().reduce(Integer::sum).orElse(0);
+        map.put("stockAmount", stockAmount);
+
+        Map<String, List<CustomerVo>> sourceIncrementMap = sourceIncrementList.stream()
+                .collect(Collectors.groupingBy(CustomerVo::getSource));
+
+        Map<String, List<CustomerVo>> sourceStockMap = sourceStockList.stream().collect(Collectors.groupingBy(Customer::getSource));
+
+        if (dictTenantDataVos.size()==0){
+            throw new ServiceException("数据有误:该租户没有配客户来源字典");
+        }
+
+        //赋值 增量 存量数据
+        for (DictTenantDataVo dictTenantDataVo : dictTenantDataVos) {
+            //存放来源存量与增量的数据
+            Map<String,Object>  stockMap = new HashMap<>();
+            //赋值初使值
+            stockMap.put("source",dictTenantDataVo.getDictValue());
+            stockMap.put("stockAmount",0);
+            stockMap.put("incrementAmount",0);
+
+            //赋值增量数据
+            List<CustomerVo> customers = sourceIncrementMap.get(dictTenantDataVo.getDictKey());
+            if (ObjectUtil.isNotEmpty(customers)){
+                stockMap.put("incrementAmount",customers.get(0).getCount());
+            }
+            //赋值存量数据
+            List<CustomerVo> customerVos = sourceStockMap.get(dictTenantDataVo.getDictKey());
+            if (ObjectUtil.isNotEmpty(customerVos)){
+                stockMap.put("stockAmount",customerVos.get(0).getCount());
+            }
+            stockList.add(stockMap);
+        }
+        map.put("stockList", stockList);
+
+        return map;
+    }
+
+    /**
+     * 类型统计(客户分析)
+     */
+    @Override
+    public Map<String, Object> typeStatistics(CustomerDto dto) {
+        if (ObjectUtil.isEmpty(dto.getBeginTime()) && ObjectUtil.isNotEmpty(dto.getEndTime())) {
+            throw new ServiceException("参数缺失:开始时间,结束时间不能为null");
+        }
+        //存放类型统计数据
+        Map<String, Object> map = new HashMap<>();
+
+        //存放询盘数据 成交单的列表
+        List<Map<String,Object>> saleList = new ArrayList<>();
+
+        QueryWrapper<Object> query = Wrappers.query();
+        query.ge("DATE_FORMAT(sq.create_time,'%Y-%m')", dto.getBeginTime());
+        query.le("DATE_FORMAT(sq.create_time,'%Y-%m')", dto.getEndTime());
+        query.eq(ObjectUtil.isNotEmpty(dto.getCountryId()), "c.country_id", dto.getCountryId());
+        query.eq(ObjectUtil.isNotEmpty(dto.getProvinceId()), "c.province_id", dto.getProvinceId());
+        query.eq(ObjectUtil.isNotEmpty(dto.getCityId()), "c.city_id", dto.getCityId());
+        query.eq("sq.status", 30);
+        //类型询盘统计(报价)
+        List<SaleQuotationVo> saleStatisticsList = baseMapper.saleStatistics(query);
+        Map<String, List<SaleQuotationVo>> saleStatisticsMap = saleStatisticsList.stream().collect(Collectors.groupingBy(SaleQuotationVo::getStatus));
+
+        //查询成交单统计(合同)
+        List<SaleQuotationVo> contractStatisticsList = contractService.contractStatistics(query);
+        Map<String, List<SaleQuotationVo>> contractStatisticsMap = contractStatisticsList.stream()
+                .collect(Collectors.groupingBy(SaleQuotationVo::getStatus));
+
+        //获取询盘总计
+        Integer saleAmount = saleStatisticsList.stream().map(saleQuotationVo -> saleQuotationVo.getCount())
+                .reduce(Integer::sum).orElse(0);
+
+        //获取成交单总计
+        Integer contractAmount = contractStatisticsList.stream().map(saleQuotationVo -> saleQuotationVo.getCount())
+                .reduce(Integer::sum).orElse(0);
+
+        map.put("saleAmount", saleAmount);
+        map.put("contractAmount", contractAmount);
+
+        //获取类型的字典数据
+        DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+        List<DictTenantDataVo> dictTenantDataVoList = getDict("customer_status");
+
+        if (dictTenantDataVoList.size()==0){
+            throw new ServiceException("数据有误:该租户没有配客户类型字典");
+        }
+
+        //赋值询盘 成交单数据
+        for (DictTenantDataVo dictTenantDataVo : dictTenantDataVoList) {
+            //存放询盘数据 成交单的数据
+            Map<String, Object> saleMap = new HashMap<>();
+            //赋值初使值
+            saleMap.put("status",dictTenantDataVo.getDictValue());
+            saleMap.put("contractAmount",0);
+            saleMap.put("saleAmount",0);
+
+            //赋值询盘数据
+            List<SaleQuotationVo> saleQuotationVoList = saleStatisticsMap.get(dictTenantDataVo.getDictKey());
+            if (ObjectUtil.isNotEmpty(saleQuotationVoList)){
+                saleMap.put("saleAmount",saleQuotationVoList.get(0).getCount());
+            }
+
+            //赋值成交单数据
+            List<SaleQuotationVo> saleQuotationList = contractStatisticsMap.get(dictTenantDataVo.getDictKey());
+            if (ObjectUtil.isNotEmpty(saleQuotationList)){
+                saleMap.put("contractAmount",saleQuotationList.get(0).getCount());
+            }
+            saleList.add(saleMap);
+        }
+        map.put("saleList", saleList);
+        return map;
+    }
+
+    /**
+     * 趋势分析(客户分析)
+     */
+    @Override
+    public Map<String, Object> trendAnalysis(CustomerDto dto) {
+        Map<String, Object> map = new HashMap<>();
+        //切换数据源
+        DynamicDataSourceContextHolder.push(SourceConstant.CUSTOMER);
+
+        Date now = new Date();
+        //获取当前月数往前12月的月份数
+        List<String> monthBetweenDate = DateUtils.getMonthBetweenDate(DateUtil.offsetMonth(now, -12), now);
+        dto.setBeginTime(DateUtil.format(DateUtil.offsetMonth(now, -12), "yyyy-MM"));
+        dto.setEndTime(DateUtil.format(now, "yyyy-MM"));
+        //来源存量(在指定时间外的数量)
+        QueryWrapper<Object> query = Wrappers.query();
+        query.eq(ObjectUtil.isNotEmpty(dto.getCountryId()), "c.country_id", dto.getCountryId());
+        query.eq(ObjectUtil.isNotEmpty(dto.getProvinceId()), "c.province_id", dto.getProvinceId());
+        query.eq(ObjectUtil.isNotEmpty(dto.getCityId()), "c.city_id", dto.getCityId());
+        query.groupBy("DATE_FORMAT(c.create_time,'%Y-%m')");
+        query.le("DATE_FORMAT(c.create_time,'%Y-%m')", dto.getBeginTime());
+        query.ge("DATE_FORMAT(c.create_time,'%Y-%m')", dto.getEndTime());
+//        query.select("count(*) count, DATE_FORMAT(c.create_time,'%Y-%m') time");
+        List<CustomerVo> sourceStockList = customerService.sourceStock(query);
+        Map<String, List<CustomerVo>> sourceStockMap = sourceStockList.stream().collect(Collectors.groupingBy(CustomerVo::getTime));
+
+        //来源增量(在指定时间内的数量)
+        query.clear();
+        query.eq(ObjectUtil.isNotEmpty(dto.getCountryId()), "c.country_id", dto.getCountryId());
+        query.eq(ObjectUtil.isNotEmpty(dto.getProvinceId()), "c.province_id", dto.getProvinceId());
+        query.eq(ObjectUtil.isNotEmpty(dto.getCityId()), "c.city_id", dto.getCityId());
+        query.groupBy("DATE_FORMAT(c.create_time,'%Y-%m')");
+        query.ge("DATE_FORMAT(c.create_time,'%Y-%m')", dto.getBeginTime());
+        query.le("DATE_FORMAT(c.create_time,'%Y-%m')", dto.getEndTime());
+//        query.select("count(*) count, DATE_FORMAT(c.create_time,'%Y-%m') time");
+        List<CustomerVo> sourceIncrementList = customerService.sourceIncrement(query);
+        Map<String, List<CustomerVo>> sourceIncrementMap = sourceIncrementList.stream().collect(Collectors.groupingBy(CustomerVo::getTime));
+        DynamicDataSourceContextHolder.poll();
+
+        query.clear();
+        query.ge("DATE_FORMAT(sq.create_time,'%Y-%m')", dto.getBeginTime());
+        query.le("DATE_FORMAT(sq.create_time,'%Y-%m')", dto.getBeginTime());
+        query.eq(ObjectUtil.isNotEmpty(dto.getCountryId()), "c.country_id", dto.getCountryId());
+        query.eq(ObjectUtil.isNotEmpty(dto.getProvinceId()), "c.province_id", dto.getProvinceId());
+        query.eq(ObjectUtil.isNotEmpty(dto.getCityId()), "c.city_id", dto.getCityId());
+        query.eq("sq.status", 30);
+        query.groupBy("DATE_FORMAT(sq.create_time,'%Y-%m')");
+//        query.select("count(*), DATE_FORMAT(sq.create_time,'%Y-%m') time");
+        //类型询盘统计(报价)
+        List<SaleQuotationVo> saleStatisticsList = baseMapper.saleStatistics(query);
+        Map<String, List<SaleQuotationVo>> saleStatisticsMap = saleStatisticsList.stream()
+                .collect(Collectors.groupingBy(SaleQuotationVo::getTime));
+
+        //查询成交单统计(合同)
+        List<SaleQuotationVo> contractStatisticsList = contractService.contractStatistics(query);
+        Map<String, List<SaleQuotationVo>> contractStatisticsMap = contractStatisticsList.stream()
+                .collect(Collectors.groupingBy(SaleQuotationVo::getTime));
+
+        //存放来源存量
+        List<Map<String, Object>> sourceStockList1 = new ArrayList<>();
+        //存放来源增量
+        List<Map<String, Object>> sourceIncrementList1 = new ArrayList<>();
+        //存放类型询盘
+        List<Map<String, Object>> saleStatisticList1 = new ArrayList<>();
+        //类型成交单
+        List<Map<String, Object>> contractStatisticsList1 = new ArrayList<>();
+
+        //赋值
+        for (String month : monthBetweenDate) {
+            //存放来源存量
+            Map<String, Object> stockMap = new HashMap<>();
+            //设置默认值
+            stockMap.put("month", month);
+            stockMap.put("count", 0);
+            List<CustomerVo> sourceStocks = sourceStockMap.get(month);
+            if (ObjectUtil.isNotEmpty(sourceStocks)) {
+                stockMap.put("count", sourceStocks.get(0).getCount());
+            }
+            sourceStockList1.add(stockMap);
+
+            //存放来源增量
+            Map<String, Object> incrementMap = new HashMap<>();
+            //设置默认值
+            incrementMap.put("month", month);
+            incrementMap.put("count", 0);
+            List<CustomerVo> sourceIncrements = sourceIncrementMap.get(month);
+            if (ObjectUtil.isNotEmpty(sourceIncrements)) {
+                incrementMap.put("count", sourceIncrements.get(0).getCount());
+            }
+            sourceIncrementList1.add(incrementMap);
+
+            //类型询盘
+            Map<String, Object> saleMap = new HashMap<>();
+            //设置默认值
+            saleMap.put("month", month);
+            saleMap.put("count", 0);
+            List<SaleQuotationVo> saleList = saleStatisticsMap.get(month);
+            if (ObjectUtil.isNotEmpty(saleList)) {
+                saleMap.put("count", saleList.get(0).getCount());
+            }
+            saleStatisticList1.add(saleMap);
+
+            //类型成交单
+            Map<String, Object> contractMap = new HashMap<>();
+            //设置默认值
+            contractMap.put("month", month);
+            contractMap.put("count", 0);
+            List<SaleQuotationVo> contractList = contractStatisticsMap.get(month);
+            if (ObjectUtil.isNotEmpty(contractList)) {
+                contractMap.put("count", contractList.get(0).getCount());
+            }
+            contractStatisticsList1.add(contractMap);
+        }
+        map.put("sourceStockList", sourceStockList1);
+        map.put("sourceIncrementList", sourceIncrementList1);
+        map.put("saleStatisticList", saleStatisticList1);
+        map.put("contractStatisticsList", contractStatisticsList1);
+        return map;
+    }
+
+    /**
      * 赋值买卖公司地址
      */
     private void setArea(SaleQuotationVo saleQuotationVo) {
@@ -293,4 +590,13 @@ public class SaleQuotationServiceImpl extends ServiceImpl<SaleQuotationMapper, S
     }
 
 
+    //根据字典编码获取字典的数据
+    private List<DictTenantDataVo> getDict(String code){
+        DictTenantDataSelectDto dto = new DictTenantDataSelectDto();
+        dto.setDictCode(code);
+        List<DictTenantDataVo> dictTenantDataServiceList = dictTenantDataService.getList(dto);
+        return dictTenantDataServiceList;
+    }
+
+
 }

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

@@ -60,5 +60,16 @@
             time
     </select>
 
+    <select id="contractStatistics" resultType="com.fjhx.sale.entity.sale.vo.SaleQuotationVo">
+        SELECT
+            COUNT(*) count,
+            c.`status`,
+             DATE_FORMAT(sq.create_time,'%Y-%m') time
+        FROM
+            bytesailing_customer.customer c
+              left  JOIN  contract sq ON sq.buy_corporation_id = c.id
+            ${ew.customSqlSegment}
+    </select>
+
 
 </mapper>

+ 11 - 0
hx-sale/src/main/resources/mapper/sale/SaleQuotationMapper.xml

@@ -112,4 +112,15 @@
         ${ew.customSqlSegment})
     </select>
 
+    <select id="saleStatistics" resultType="com.fjhx.sale.entity.sale.vo.SaleQuotationVo">
+        SELECT
+            COUNT(*) count,
+            c.`status`,
+             DATE_FORMAT(sq.create_time,'%Y-%m') time
+        FROM
+            bytesailing_customer.customer c
+              left  JOIN  sale_quotation sq  ON sq.buy_corporation_id = c.id
+            ${ew.customSqlSegment}
+    </select>
+
 </mapper>

+ 2 - 2
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/abnormal/impl/AbnormalDetailsServiceImpl.java

@@ -42,7 +42,7 @@ public class AbnormalDetailsServiceImpl extends ServiceImpl<AbnormalDetailsMappe
     @Override
     public Page<AbnormalDetailsVo> getPage(AbnormalDetailsSelectDto dto) {
         IWrapper<AbnormalDetails> wrapper = getWrapper();
-        wrapper.eq("ad",AbnormalDetails::getAbnormalInfoId, dto.getAbnormalInfoId());
+        wrapper.eq("ad", AbnormalDetails::getAbnormalInfoId, dto.getAbnormalInfoId());
         wrapper.orderByDesc("ad", AbnormalDetails::getId);
         Page<AbnormalDetailsVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         //赋值跟进用户名
@@ -65,7 +65,7 @@ public class AbnormalDetailsServiceImpl extends ServiceImpl<AbnormalDetailsMappe
         AbnormalInfo abnormalInfo = new AbnormalInfo();
         abnormalInfo.setId(abnormalInfoId);
         abnormalInfo.setLinkCode(CodeEnum.ABNORMAL.getCode());
-        abnormalInfo.setStatus(status);
+        abnormalInfo.setStatus(status == 1 ? 2 : 1);//如果跟进记录为已处理修改异常状态为已处理要不然跟进中
         abnormalInfo.setHandleUser(abnormalDetailsDto.getHandleUser());
         abnormalInfo.setHandleTime(abnormalDetailsDto.getHandleTime());
         abnormalInfoService.updateById(abnormalInfo);

+ 4 - 2
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdBackQualityWaitServiceImpl.java

@@ -74,8 +74,10 @@ public class JdBackQualityWaitServiceImpl extends ServiceImpl<JdBackQualityWaitM
     @Override
     public List<JdBackQualityWaitExcelBo> importExcel(MultipartFile file){
         List<JdBackQualityWaitExcelBo> read = ExcelUtil.read(file, JdBackQualityWaitExcelBo.class);
-        List<JdBackQualityDetailsDto> jdBackQualityDetailsDtos = BeanUtil.copyToList(read, JdBackQualityDetailsDto.class);
-        jdBackQualityDetailsService.add(jdBackQualityDetailsDtos);
+
+        //数据操作交给前端
+//        List<JdBackQualityDetailsDto> jdBackQualityDetailsDtos = BeanUtil.copyToList(read, JdBackQualityDetailsDto.class);
+//        jdBackQualityDetailsService.add(jdBackQualityDetailsDtos);
         return read;
     }
 

+ 21 - 18
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdOrderServiceImpl.java

@@ -275,7 +275,7 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
         //创建京东订单调仓
         StockTransfer stockTransfer = new StockTransfer();
         stockTransfer.setType(2);//京东订单出库
-        stockTransfer.setCode(CodeEnum.STOCK_TRANSFER.getCode());
+        stockTransfer.setCode(CodeEnum.STOCK_TRANSFER_WDLY.getCode());
         stockTransfer.setBusinessId(jdOrder.getId());
         stockTransfer.setBusinessCode(jdOrder.getCode());
         stockTransfer.setInWarehouseId(jdOrderDto.getInWarehouseId());
@@ -301,6 +301,7 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
     public Page<JdOrderVo> receivePage(JdOrderSelectDto dto) {
         IWrapper<JdOrder> wrapper = getWrapper();
         wrapper.eq("st.in_status", dto.getInStatus());
+        wrapper.orderByDesc("jdo.create_time");
         Page<JdOrderVo> page = this.baseMapper.getReceivePage(dto.getPage(), wrapper);
         List<JdOrderVo> records = page.getRecords();
         // 赋值国省市
@@ -318,11 +319,15 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
     @Override
     public void receive(StockTransferDto stockTransferDto) {
         StockTransfer stockTransfer = stockTransferService.getById(stockTransferDto.getId());
+        //修改调仓状态
+        stockTransfer.setInStatus(2);//修改为已接收
+        stockTransfer.setInUserId(SecurityUtils.getUserId());//赋值接收人
+        stockTransfer.setInTime(new Date());//赋值接收时间
+
         //明细
         List<Stock> stockList = new ArrayList<>();
         List<StockTransferDetails> stockTransferDetailsList = stockTransferDto.getStockTransferDetailsList();
         if(ObjectUtil.isNotEmpty(stockTransferDetailsList)) {
-            stockTransferDetailsService.updateBatchById(stockTransferDetailsList);
             //获取数据库中的数据
             List<Long> ids = stockTransferDetailsList.stream().map(StockTransferDetails::getId).collect(Collectors.toList());
             List<StockTransferDetails> oldstockTransferDetailsList = stockTransferDetailsService.listByIds(ids);
@@ -337,39 +342,38 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
 
                 //调仓接收数量与发出数量不一致
                 StockTransferDetails oldstockTransferDetails = oldstockTransferDetailsMap.get(stockTransferDetails.getId());
-                if (stockTransferDetails.getInQuantity() != oldstockTransferDetails.getOutQuantity()) {
+                if (stockTransferDetails.getInQuantity().compareTo(oldstockTransferDetails.getOutQuantity())!=0) {
                     abnormalFlag =1;
+                }
+
+                //计算已入库数量
+                BigDecimal inCount = oldstockTransferDetails.getInQuantity().add(stockTransferDetails.getInQuantity());
+                if (inCount.compareTo(oldstockTransferDetails.getOutQuantity())!=0 ) {
                     stockTransfer.setInStatus(1);//设置为部分接收
                 }
+                stockTransferDetails.setInQuantity(inCount);
+
+
             }
             if(abnormalFlag ==1){
                 AbnormalInfo abnormalInfo = new AbnormalInfo();
+                abnormalInfo.setStatus(0);
                 abnormalInfo.setId(IdWorker.getId());
                 abnormalInfo.setType(30);
                 abnormalInfo.setLinkId(stockTransfer.getId());
                 abnormalInfo.setLinkCode(stockTransfer.getCode());
-                abnormalInfo.setTitle("调仓接收数量与发出数量不一致");
+                abnormalInfo.setTitle("京东订单接收数量与发出数量不一致");
                 abnormalInfoService.save(abnormalInfo);
             }
         }
-        //修改调仓状态
-        stockTransfer.setInStatus(2);//修改为已接收
-        stockTransfer.setInUserId(SecurityUtils.getUserId());//赋值接收人
-        stockTransfer.setInTime(new Date());//赋值接收时间
-        List<StockTransferDetails> stockTransferDetails = stockTransferDetailsService.list(q -> q.eq(StockTransferDetails::getStockTransferId, stockTransfer.getId()));
-        for (StockTransferDetails stockTransferDetail : stockTransferDetails) {
-            if(stockTransferDetail.getOutQuantity().compareTo(stockTransferDetail.getInQuantity())!=0){
-                stockTransfer.setInStatus(1);//部分接收
-                break;
-            }
-        }
 
         stockTransferService.updateById(stockTransfer);
+        stockTransferDetailsService.updateBatchById(stockTransferDetailsList);
         //创建入库记录
         StockJournal stockJournal = new StockJournal();
         stockJournal.setOpType(1);
         stockJournal.setType(JournalType.ADJUSTING_IN.getDetailType());
-        stockJournal.setCode(CodeEnum.STOCK_TRANSFER.getCode());
+        stockJournal.setCode(CodeEnum.STOCK_TRANSFER_J.getCode());
         stockJournal.setWarehouseId(stockTransfer.getOutWarehouseId());
         stockJournal.setToWarehouseId(stockTransfer.getInWarehouseId());
         stockJournal.setBusinessId(stockTransfer.getId());
@@ -380,7 +384,7 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
         StockJournal stockJournal1 = new StockJournal();
         stockJournal1.setOpType(2);
         stockJournal1.setType(JournalType.ADJUSTING_OUT.getDetailType());
-        stockJournal1.setCode(CodeEnum.STOCK_TRANSFER.getCode());
+        stockJournal1.setCode(CodeEnum.STOCK_TRANSFER_J.getCode());
         stockJournal1.setWarehouseId(stockTransfer.getOutWarehouseId());
         stockJournal1.setToWarehouseId(stockTransfer.getInWarehouseId());
         stockJournal1.setBusinessId(stockTransfer.getId());
@@ -394,7 +398,6 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
             //保存出入库记录明细
             stockJournalDetailsService.saveBatch(stockJournalDetailsList);
             stockJournalDetailsService.saveBatch(stockJournalDetailsList1);
-
         }
     }
 

+ 1 - 1
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/quality/impl/QualityInfoServiceImpl.java

@@ -153,7 +153,7 @@ public class QualityInfoServiceImpl extends ServiceImpl<QualityInfoMapper, Quali
             BigDecimal qualityQuantity = arrivalStockRecordsDetails.getQualityQuantity();
             qualityQuantity = ObjectUtil.isEmpty(qualityQuantity) ? BigDecimal.ZERO : qualityQuantity;
             arrivalStockRecordsDetails.setQualityQuantity(qualityQuantity.add(count));
-            if (quantity.compareTo(count) != 0) {
+            if (quantity.compareTo(arrivalStockRecordsDetails.getQualityQuantity()) > 0) {
                 qualityInfoDto.setStatus(1);//修改为部分质检
                 arrivalStockRecords.setQualityStatus(1);//修改为部分质检
             }

+ 18 - 9
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/stock/impl/StockTransferServiceImpl.java

@@ -29,6 +29,7 @@ import com.fjhx.wms.service.stock.StockJournalDetailsService;
 import com.fjhx.wms.service.stock.StockJournalService;
 import com.fjhx.wms.service.stock.StockService;
 import com.fjhx.wms.service.warehouse.WarehouseService;
+import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.ruoyi.system.utils.UserUtil;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -37,6 +38,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.function.Function;
@@ -116,7 +118,7 @@ public class StockTransferServiceImpl extends ServiceImpl<StockTransferMapper, S
         Assert.notEmpty(stockTransferDto.getInWarehouseId(),"入库仓库不能为空");
         Assert.notEmpty(stockTransferDto.getStockTransferDetailsList(),"调仓明细不能为空");
 
-        stockTransferDto.setCode(CodeEnum.STOCK_TRANSFER.getCode());
+        stockTransferDto.setCode(CodeEnum.STOCK_TRANSFER_WDLY.getCode());
         stockTransferDto.setType(1);
         stockTransferDto.setInStatus(0);
         this.save(stockTransferDto);
@@ -142,6 +144,9 @@ public class StockTransferServiceImpl extends ServiceImpl<StockTransferMapper, S
     public void receive(StockTransferDto stockTransferDto) {
         StockTransfer stockTransfer = getById(stockTransferDto.getId());
         stockTransfer.setInStatus(2);//修改为已接收
+        stockTransfer.setInUserId(SecurityUtils.getUserId());//赋值接收人
+        stockTransfer.setInTime(new Date());//赋值接收时间
+
         //明细
         List<Stock> stockList = new ArrayList<>();
         List<StockTransferDetails> stockTransferDetailsList = stockTransferDto.getStockTransferDetailsList();
@@ -160,17 +165,21 @@ public class StockTransferServiceImpl extends ServiceImpl<StockTransferMapper, S
 
                 //调仓接收数量与发出数量不一致
                 StockTransferDetails oldstockTransferDetails = oldstockTransferDetailsMap.get(stockTransferDetails.getId());
+                if (stockTransferDetails.getInQuantity().compareTo(oldstockTransferDetails.getOutQuantity())!=0) {
+                    abnormalFlag =1;
+                }
+
                 //计算已入库数量
                 BigDecimal inCount = oldstockTransferDetails.getInQuantity().add(stockTransferDetails.getInQuantity());
-                stockTransferDetails.setInQuantity(inCount);
-                if (inCount != oldstockTransferDetails.getOutQuantity()) {
-                    abnormalFlag =1;
+                if (inCount.compareTo(oldstockTransferDetails.getOutQuantity())!=0 ) {
                     stockTransfer.setInStatus(1);//设置为部分接收
                 }
+                stockTransferDetails.setInQuantity(inCount);
             }
             if(abnormalFlag ==1){
                 AbnormalInfo abnormalInfo = new AbnormalInfo();
                 abnormalInfo.setId(IdWorker.getId());
+                abnormalInfo.setStatus(0);
                 abnormalInfo.setType(30);
                 abnormalInfo.setLinkId(stockTransfer.getId());
                 abnormalInfo.setLinkCode(stockTransfer.getCode());
@@ -186,7 +195,7 @@ public class StockTransferServiceImpl extends ServiceImpl<StockTransferMapper, S
         StockJournal stockJournal = new StockJournal();
         stockJournal.setOpType(1);
         stockJournal.setType(JournalType.ADJUSTING_IN.getDetailType());
-        stockJournal.setCode(CodeEnum.STOCK_TRANSFER.getCode());
+        stockJournal.setCode(CodeEnum.STOCK_TRANSFER_J.getCode());
         stockJournal.setWarehouseId(stockTransfer.getOutWarehouseId());
         stockJournal.setToWarehouseId(stockTransfer.getInWarehouseId());
         stockJournal.setBusinessId(stockTransfer.getId());
@@ -197,7 +206,7 @@ public class StockTransferServiceImpl extends ServiceImpl<StockTransferMapper, S
         StockJournal stockJournal1 = new StockJournal();
         stockJournal1.setOpType(2);
         stockJournal1.setType(JournalType.ADJUSTING_OUT.getDetailType());
-        stockJournal1.setCode(CodeEnum.STOCK_TRANSFER.getCode());
+        stockJournal1.setCode(CodeEnum.STOCK_TRANSFER_J.getCode());
         stockJournal1.setWarehouseId(stockTransfer.getOutWarehouseId());
         stockJournal1.setToWarehouseId(stockTransfer.getInWarehouseId());
         stockJournal1.setBusinessId(stockTransfer.getId());
@@ -222,7 +231,7 @@ public class StockTransferServiceImpl extends ServiceImpl<StockTransferMapper, S
         Assert.notEmpty(stockTransferDto.getInWarehouseId(),"入库仓库不能为空");
         Assert.notEmpty(stockTransferDto.getStockTransferDetailsList(),"调仓明细不能为空");
 
-        stockTransferDto.setCode(CodeEnum.STOCK_TRANSFER.getCode());
+        stockTransferDto.setCode(CodeEnum.STOCK_TRANSFER_WDLY.getCode());
         stockTransferDto.setType(1);
         stockTransferDto.setInStatus(2);//已接收
         this.save(stockTransferDto);
@@ -243,7 +252,7 @@ public class StockTransferServiceImpl extends ServiceImpl<StockTransferMapper, S
 
         //创建出库记录
         StockJournal stockJournal = new StockJournal();
-        stockJournal.setCode(CodeEnum.STOCK_TRANSFER.getCode());
+        stockJournal.setCode(CodeEnum.STOCK_TRANSFER_J.getCode());
         stockJournal.setOpType(2);//出库
         stockJournal.setType(JournalType.ADJUSTING_OUT.getDetailType());//调仓入库
         stockJournal.setWarehouseId(stockTransferDto.getOutWarehouseId());
@@ -257,7 +266,7 @@ public class StockTransferServiceImpl extends ServiceImpl<StockTransferMapper, S
 
         //创建入库记录
         StockJournal stockJournal1 = new StockJournal();
-        stockJournal1.setCode(CodeEnum.STOCK_TRANSFER.getCode());
+        stockJournal1.setCode(CodeEnum.STOCK_TRANSFER_J.getCode());
         stockJournal1.setOpType(1);//入库
         stockJournal1.setType(JournalType.ADJUSTING_IN.getDetailType());//调仓出库
         stockJournal1.setWarehouseId(stockTransferDto.getInWarehouseId());

+ 7 - 2
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/utils/CodeEnum.java

@@ -8,6 +8,8 @@ import cn.hutool.extra.spring.SpringUtil;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.fjhx.victoriatourist.service.order.OrderInfoService;
 import com.fjhx.victoriatourist.service.stock.StockTransferService;
+import com.fjhx.wms.service.stock.StockJournalService;
+import com.fjhx.wms.service.stock.impl.StockJournalServiceImpl;
 import com.obs.services.internal.ServiceException;
 import lombok.Getter;
 
@@ -17,8 +19,11 @@ import java.util.Map;
 @Getter
 public enum CodeEnum {
 
-    // 调仓
-    STOCK_TRANSFER("SM", "yyMM-", "code", 3, StockTransferService.class),
+    // 调仓出入库记录
+    STOCK_TRANSFER_J("SM", "yyMM-", "code", 3, StockJournalService.class),
+    //调仓 维多利亚
+    STOCK_TRANSFER_WDLY("SM", "yyMM-", "code", 3, StockTransferService.class),
+
     // 销售订单
     ORDER_SALES("SO", null, "code", 5, OrderInfoService.class),
     //京东退货质检

+ 4 - 3
hx-wms/src/main/java/com/fjhx/wms/utils/CodeEnum.java

@@ -7,6 +7,7 @@ import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.extra.spring.SpringUtil;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.fjhx.wms.service.stock.impl.StockCheckServiceImpl;
+import com.fjhx.wms.service.stock.impl.StockJournalServiceImpl;
 import com.obs.services.internal.ServiceException;
 import lombok.Getter;
 
@@ -19,11 +20,11 @@ public enum CodeEnum {
     //盘点
     CHECK_CODE("SC", "-yyMM-", "code", 3, StockCheckServiceImpl.class),
     //调仓
-    STOCK_TRANSFER("SC", "-yyMM-", "code", 3, StockCheckServiceImpl.class),
+    STOCK_TRANSFER("SC", "-yyMM-", "code", 3, StockJournalServiceImpl.class),
     //出入库入库
-    SIN_CODE("SI", "-yyMM-", "code", 3, StockCheckServiceImpl.class),
+    SIN_CODE("SI", "-yyMM-", "code", 3, StockJournalServiceImpl.class),
     //出入库出库
-    SOUT_CODE("SO", "-yyMM-", "code", 3, StockCheckServiceImpl.class);
+    SOUT_CODE("SO", "-yyMM-", "code", 3, StockJournalServiceImpl.class);
 
     CodeEnum(String prefix, String dateFormat, String codeFieldName, Integer length, Class<? extends IService<?>> serviceCls) {
         this.prefix = prefix;