Browse Source

聚水谭主题分析

yzc 1 year ago
parent
commit
bb4c5ba268

+ 17 - 5
hx-jushuitan/src/main/java/com/fjhx/jushuitan/controller/jst/JstOrderInfoController.java

@@ -1,13 +1,17 @@
 package com.fjhx.jushuitan.controller.jst;
 
-import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.jushuitan.entity.jst.vo.JstOrderInfoVo;
-import com.fjhx.jushuitan.entity.jst.dto.JstOrderInfoSelectDto;
+import com.fjhx.jushuitan.entity.jst.ThematicAnalysisBo;
 import com.fjhx.jushuitan.entity.jst.dto.JstOrderInfoDto;
-import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.fjhx.jushuitan.entity.jst.dto.JstOrderInfoSelectDto;
+import com.fjhx.jushuitan.entity.jst.vo.JstOrderInfoVo;
 import com.fjhx.jushuitan.service.jst.JstOrderInfoService;
+import com.ruoyi.common.core.domain.BaseSelectDto;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
 
@@ -16,7 +20,7 @@ import java.util.List;
  * 聚水潭订单表 前端控制器
  * </p>
  *
- * @author 
+ * @author
  * @since 2024-01-20
  */
 @RestController
@@ -74,4 +78,12 @@ public class JstOrderInfoController {
         jstOrderInfoService.delete(dto.getId());
     }
 
+
+    /**
+     * 主题分析
+     */
+    @PostMapping("/thematicAnalysis")
+    public Page<ThematicAnalysisBo> thematicAnalysis(@RequestBody JstOrderInfoSelectDto dto) {
+        return jstOrderInfoService.thematicAnalysis(dto);
+    }
 }

+ 163 - 0
hx-jushuitan/src/main/java/com/fjhx/jushuitan/entity/jst/ThematicAnalysisBo.java

@@ -0,0 +1,163 @@
+package com.fjhx.jushuitan.entity.jst;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Getter
+@Setter
+public class ThematicAnalysisBo {
+    /**
+     * ERP内部订单号,聚水潭生成的订单号,唯一
+     */
+    private Long oid;
+    /**
+     * 多标签
+     */
+    private String labels;
+    /**
+     * 订单类型,普通订单;补发订单;分销Plus;供销Plus;换货订单
+     */
+    private String type;
+    /**
+     * 线上订单号,线上同步过来的订单号,最长不超过20;唯一
+     */
+    private String soId;
+
+    /**
+     * 聚水潭订单状态 待付款:WaitPay;发货中:Delivering;被合并:Merged;异常:Question;被拆分:Split;等供销商|外仓发货:WaitOuterSent;已付款待审核:WaitConfirm;已客审待财审:WaitFConfirm;已发货:Sent;取消:Cancelled
+     */
+    private String status;
+
+
+    private String drpFrom;
+
+    /**
+     * 店铺名称
+     */
+    private String shopName;
+
+    /**
+     * 买家昵称
+     */
+    private String shopBuyerId;
+
+
+    /**
+     * 买家留言
+     */
+    private String buyerMessage;
+
+
+    /**
+     * 订单备注;卖家备注
+     */
+    private String remark;
+    /**
+     * 订单日期
+     */
+    private Date orderDate;
+    /**
+     * 发货日期
+     */
+    private Date sendDate;
+
+    /**
+     * 确认收货时间(仅限头条放心购、拼多多、苏宁易购、快手电商、有赞微商城,如果线上状态为取消,该时间为完结时间)
+     */
+    private Date endTime;
+
+    /**
+     * 订单业务员
+     */
+    private String creatorName;
+    /**
+     * 收件信息-收件人
+     */
+    private String receiverName;
+
+
+    /**
+     * 收件信息-省
+     */
+    private String receiverState;
+
+    /**
+     * 收件信息-市
+     */
+    private String receiverCity;
+
+    /**
+     * 收件信息-街道
+     */
+    private String receiverTown;
+
+    /**
+     * 快递公司
+     */
+    private String logisticsCompany;
+
+
+    /**
+     * 快递单号
+     */
+    private String lid;
+
+    /**
+     * 店铺站点信息
+     */
+    private String shopSite;
+
+    /**
+     * 订单来源,ERP:手工下单; COPY:复制; MERGE:合并; SPLIT:拆分;拆分还原; MOBILE:手机; IMPORT:导入; drp-s:供销推送; drp-d:分销推送; KWAISHOP:快手;微商城; PINDUODUO;拼多多; TOUTIAOFXG;头条放心购
+     */
+    private String orderFrom;
+
+    /**
+     * 店铺编号
+     */
+    private Integer shopId;
+
+//================================================
+    /**
+     * 原始商品编码
+     */
+    private String skuId;
+    /**
+     * 款式编码
+     */
+    private String iid;
+    /**
+     * 原始线上单号
+     */
+    private String rawSoId;
+    /**
+     * 商品名称
+     */
+    private String name;
+    /**
+     * 店铺商品编码,对应店铺商品资料页面平台店铺商品编码
+     */
+    private String shopSkuId;
+    /**
+     * 基本售价(原价)
+     */
+    private BigDecimal basePrice;
+    /**
+     * 单价
+     */
+    private BigDecimal price;
+    /**
+     * 数量
+     */
+    private Integer qty;
+
+    /**
+     * 总额
+     */
+    private BigDecimal amount;
+
+
+}

+ 4 - 1
hx-jushuitan/src/main/java/com/fjhx/jushuitan/mapper/jst/JstOrderInfoMapper.java

@@ -1,8 +1,9 @@
 package com.fjhx.jushuitan.mapper.jst;
 
-import com.fjhx.jushuitan.entity.jst.po.JstOrderInfo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.jushuitan.entity.jst.ThematicAnalysisBo;
+import com.fjhx.jushuitan.entity.jst.po.JstOrderInfo;
 import com.fjhx.jushuitan.entity.jst.vo.JstOrderInfoVo;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.apache.ibatis.annotations.Param;
@@ -29,4 +30,6 @@ public interface JstOrderInfoMapper extends BaseMapper<JstOrderInfo> {
      */
     Page<JstOrderInfoVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<JstOrderInfo> wrapper);
 
+    Page<ThematicAnalysisBo> thematicAnalysisPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<Object> wrapper);
+
 }

+ 10 - 4
hx-jushuitan/src/main/java/com/fjhx/jushuitan/service/jst/JstOrderInfoService.java

@@ -1,11 +1,12 @@
 package com.fjhx.jushuitan.service.jst;
 
-import com.fjhx.jushuitan.entity.jst.po.JstOrderInfo;
-import com.ruoyi.common.core.service.BaseService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.jushuitan.entity.jst.vo.JstOrderInfoVo;
-import com.fjhx.jushuitan.entity.jst.dto.JstOrderInfoSelectDto;
+import com.fjhx.jushuitan.entity.jst.ThematicAnalysisBo;
 import com.fjhx.jushuitan.entity.jst.dto.JstOrderInfoDto;
+import com.fjhx.jushuitan.entity.jst.dto.JstOrderInfoSelectDto;
+import com.fjhx.jushuitan.entity.jst.po.JstOrderInfo;
+import com.fjhx.jushuitan.entity.jst.vo.JstOrderInfoVo;
+import com.ruoyi.common.core.service.BaseService;
 
 import java.util.List;
 
@@ -50,4 +51,9 @@ public interface JstOrderInfoService extends BaseService<JstOrderInfo> {
     void delete(Long id);
 
     Long getLastTs();
+
+    /**
+     * 主题分析
+     */
+    Page<ThematicAnalysisBo> thematicAnalysis(JstOrderInfoSelectDto dto);
 }

+ 34 - 9
hx-jushuitan/src/main/java/com/fjhx/jushuitan/service/jst/impl/JstOrderInfoServiceImpl.java

@@ -7,6 +7,7 @@ import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.jushuitan.entity.jst.ThematicAnalysisBo;
 import com.fjhx.jushuitan.entity.jst.dto.JstOrderInfoDto;
 import com.fjhx.jushuitan.entity.jst.dto.JstOrderInfoSelectDto;
 import com.fjhx.jushuitan.entity.jst.po.JstOrderDetail;
@@ -19,6 +20,7 @@ import com.fjhx.jushuitan.service.jst.JstOrderDetailService;
 import com.fjhx.jushuitan.service.jst.JstOrderInfoService;
 import com.fjhx.jushuitan.service.jst.JstOrderPayInfoService;
 import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.ruoyi.common.utils.wrapper.SqlField;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -29,7 +31,7 @@ import java.util.List;
  * 聚水潭订单表 服务实现类
  * </p>
  *
- * @author 
+ * @author
  * @since 2024-01-20
  */
 @Service
@@ -50,10 +52,10 @@ public class JstOrderInfoServiceImpl extends ServiceImpl<JstOrderInfoMapper, Jst
     @Override
     public Page<JstOrderInfoVo> getPage(JstOrderInfoSelectDto dto) {
         IWrapper<JstOrderInfo> wrapper = getWrapper();
-        if(ObjectUtil.isNotNull(dto.getStartTime())){
+        if (ObjectUtil.isNotNull(dto.getStartTime())) {
             wrapper.ge("joi", JstOrderInfo::getCreated, DateUtil.beginOfDay(dto.getStartTime()));
         }
-        if(ObjectUtil.isNotNull(dto.getEndTime())){
+        if (ObjectUtil.isNotNull(dto.getEndTime())) {
             wrapper.le("joi", JstOrderInfo::getCreated, DateUtil.endOfDay(dto.getEndTime()));
         }
         wrapper.like("joi", JstOrderInfo::getOid, dto.getOid());
@@ -61,11 +63,11 @@ public class JstOrderInfoServiceImpl extends ServiceImpl<JstOrderInfoMapper, Jst
         wrapper.orderByDesc("joi", JstOrderInfo::getId);
         Page<JstOrderInfoVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         List<JstOrderInfoVo> records = page.getRecords();
-        if (CollectionUtil.isNotEmpty(records)){
+        if (CollectionUtil.isNotEmpty(records)) {
             records.forEach(item ->
-                jstOrderPayInfoService.lambdaQuery().eq(JstOrderPayInfo::getOrderId, item.getId()).list().stream().findFirst().ifPresent(jstOrderPayInfo ->
-                        item.setPayDate(jstOrderPayInfo.getPayDate())
-                )
+                    jstOrderPayInfoService.lambdaQuery().eq(JstOrderPayInfo::getOrderId, item.getId()).list().stream().findFirst().ifPresent(jstOrderPayInfo ->
+                            item.setPayDate(jstOrderPayInfo.getPayDate())
+                    )
             );
         }
         page.setRecords(records);
@@ -75,13 +77,13 @@ public class JstOrderInfoServiceImpl extends ServiceImpl<JstOrderInfoMapper, Jst
     @Override
     public JstOrderInfoVo detail(Long id) {
         JstOrderInfo JstOrderInfo = this.getById(id);
-        if(ObjectUtil.isNull(JstOrderInfo)){
+        if (ObjectUtil.isNull(JstOrderInfo)) {
             throw new RuntimeException("订单不存在");
         }
         JstOrderInfoVo result = BeanUtil.toBean(JstOrderInfo, JstOrderInfoVo.class);
 
         List<JstOrderDetail> detailList = jstOrderDetailService.lambdaQuery().eq(JstOrderDetail::getOrderId, id).list();
-        if (CollectionUtil.isNotEmpty(detailList)){
+        if (CollectionUtil.isNotEmpty(detailList)) {
             result.setItems(BeanUtil.copyToList(detailList, JstOrderDetailVo.class));
         }
         return result;
@@ -111,4 +113,27 @@ public class JstOrderInfoServiceImpl extends ServiceImpl<JstOrderInfoMapper, Jst
         JstOrderInfo last = lambdaQuery().orderByDesc(JstOrderInfo::getTs).last("limit 1").list().stream().findFirst().orElse(new JstOrderInfo());
         return last.getTs();
     }
+
+
+    @Override
+    public Page<ThematicAnalysisBo> thematicAnalysis(JstOrderInfoSelectDto dto) {
+        IWrapper<Object> wrapper = IWrapper.getWrapper();
+        //检索条件:订单状态、订单时间、关键字(内部订单号、店铺、订单类型)
+
+        //订单状态
+        wrapper.eq("joi.status", dto.getStatus());
+
+        //订单时间-时间范围过滤
+        wrapper.ge("joi.order_date", dto.getBeginTime());
+        wrapper.le("joi.order_date", dto.getEndTime());
+
+        //关键字(内部订单号、店铺、订单类型)
+        wrapper.keyword(dto.getKeyword(),
+                new SqlField("joi.oid"),
+                new SqlField("joi.shop_name"),
+                new SqlField("joi.type")
+        );
+
+        return baseMapper.thematicAnalysisPage(dto.getPage(), wrapper);
+    }
 }

+ 116 - 82
hx-jushuitan/src/main/resources/mapper/jst/JstOrderInfoMapper.xml

@@ -2,88 +2,87 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fjhx.jushuitan.mapper.jst.JstOrderInfoMapper">
     <select id="getList" resultType="com.fjhx.jushuitan.entity.jst.vo.JstOrderInfoVo">
-        select
-            joi.id,
-            joi.plan_delivery_date,
-            joi.referrer_id,
-            joi.open_id,
-            joi.fweight,
-            joi.drp_co_id_from,
-            joi.buyer_id,
-            joi.type,
-            joi.discount_rate,
-            joi.send_date,
-            joi.buyer_tax_no,
-            joi.modified,
-            joi.receiver_country,
-            joi.tag,
-            joi.buyer_paid_amount,
-            joi.drp_from,
-            joi.shipment,
-            joi.shop_status,
-            joi.buyer_message,
-            joi.outer_so_id,
-            joi.created,
-            joi.drp_to,
-            joi.is_split,
-            joi.weight,
-            joi.shop_name,
-            joi.labels,
-            joi.shop_id,
-            joi.node,
-            joi.ffreight,
-            joi.shop_buyer_id,
-            joi.wms_co_id,
-            joi.drp_co_id_to,
-            joi.paid_amount,
-            joi.referrer_name,
-            joi.link_o_id,
-            joi.status,
-            joi.ext_datas,
-            joi.lc_id,
-            joi.skus,
-            joi.question_desc,
-            joi.as_id,
-            joi.receiver_city,
-            joi.invoice_title,
-            joi.outer_as_id,
-            joi.freight,
-            joi.remark,
-            joi.is_cod,
-            joi.receiver_state,
-            joi.glasses,
-            joi.receiver_zip,
-            joi.so_id,
-            joi.oid,
-            joi.receiver_name,
-            joi.currency,
-            joi.invoice_type,
-            joi.seller_income_amount,
-            joi.free_amount,
-            joi.outer_pay_id,
-            joi.amount,
-            joi.question_type,
-            joi.receiver_district,
-            joi.receiver_town,
-            joi.pay_amount,
-            joi.co_id,
-            joi.end_time,
-            joi.shop_site,
-            joi.receiver_mobile,
-            joi.sign_time,
-            joi.seller_flag,
-            joi.order_date,
-            joi.merge_so_id,
-            joi.raw_so_id,
-            joi.order_from,
-            joi.is_merge,
-            joi.receiver_address,
-            joi.logistics_company,
-            joi.creator_name,
-            joi.lid,
-            joi.receiver_phone,
-            joi.ts,
-            joi.dept_id
+        select joi.id,
+               joi.plan_delivery_date,
+               joi.referrer_id,
+               joi.open_id,
+               joi.fweight,
+               joi.drp_co_id_from,
+               joi.buyer_id,
+               joi.type,
+               joi.discount_rate,
+               joi.send_date,
+               joi.buyer_tax_no,
+               joi.modified,
+               joi.receiver_country,
+               joi.tag,
+               joi.buyer_paid_amount,
+               joi.drp_from,
+               joi.shipment,
+               joi.shop_status,
+               joi.buyer_message,
+               joi.outer_so_id,
+               joi.created,
+               joi.drp_to,
+               joi.is_split,
+               joi.weight,
+               joi.shop_name,
+               joi.labels,
+               joi.shop_id,
+               joi.node,
+               joi.ffreight,
+               joi.shop_buyer_id,
+               joi.wms_co_id,
+               joi.drp_co_id_to,
+               joi.paid_amount,
+               joi.referrer_name,
+               joi.link_o_id,
+               joi.status,
+               joi.ext_datas,
+               joi.lc_id,
+               joi.skus,
+               joi.question_desc,
+               joi.as_id,
+               joi.receiver_city,
+               joi.invoice_title,
+               joi.outer_as_id,
+               joi.freight,
+               joi.remark,
+               joi.is_cod,
+               joi.receiver_state,
+               joi.glasses,
+               joi.receiver_zip,
+               joi.so_id,
+               joi.oid,
+               joi.receiver_name,
+               joi.currency,
+               joi.invoice_type,
+               joi.seller_income_amount,
+               joi.free_amount,
+               joi.outer_pay_id,
+               joi.amount,
+               joi.question_type,
+               joi.receiver_district,
+               joi.receiver_town,
+               joi.pay_amount,
+               joi.co_id,
+               joi.end_time,
+               joi.shop_site,
+               joi.receiver_mobile,
+               joi.sign_time,
+               joi.seller_flag,
+               joi.order_date,
+               joi.merge_so_id,
+               joi.raw_so_id,
+               joi.order_from,
+               joi.is_merge,
+               joi.receiver_address,
+               joi.logistics_company,
+               joi.creator_name,
+               joi.lid,
+               joi.receiver_phone,
+               joi.ts,
+               joi.dept_id
         from jst_order_info joi
             ${ew.customSqlSegment}
     </select>
@@ -174,5 +173,40 @@
         from jst_order_info joi
             ${ew.customSqlSegment}
     </select>
+    <select id="thematicAnalysisPage" resultType="com.fjhx.jushuitan.entity.jst.ThematicAnalysisBo">
+        SELECT joi.oid,
+               joi.labels,
+               joi.type,
+               joi.so_id,
+               joi.`status`,
+               joi.drp_from,
+               joi.shop_name,
+               joi.shop_buyer_id,
+               joi.buyer_message,
+               joi.remark,
+               joi.order_date,
+               joi.send_date,
+               joi.end_time,
+               joi.creator_name,
+               joi.receiver_name,
+               joi.receiver_state,
+               joi.receiver_city,
+               joi.receiver_town,
+               joi.logistics_company,
+               joi.lid,
+               joi.shop_id,
+               jod.sku_id,
+               jod.iid,
+               jod.raw_so_id,
+               jod.`name`,
+               jod.shop_sku_id,
+               jod.base_price,
+               jod.price,
+               jod.qty,
+               jod.amount
+        FROM jst_order_info joi
+                 JOIN jst_order_detail jod ON jod.order_id = joi.id
+            ${ew.customSqlSegment}
+    </select>
 
 </mapper>