Browse Source

工单列表和导出增加最后反馈日志

FengChaoYu 11 hours ago
parent
commit
5a950034b4

+ 13 - 0
mall-server-api/src/main/java/com/gree/mall/manager/bean/listvo/workorder/OperatorLogBean.java

@@ -0,0 +1,13 @@
+package com.gree.mall.manager.bean.listvo.workorder;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class OperatorLogBean {
+    @ApiModelProperty(value = "工单id")
+    private String orderBaseId;
+
+    @ApiModelProperty(value = "内容")
+    private String content;
+}

+ 3 - 5
mall-server-api/src/main/java/com/gree/mall/manager/bean/listvo/workorder/OrderBaseVO.java

@@ -2,14 +2,9 @@ package com.gree.mall.manager.bean.listvo.workorder;
 
 import com.gree.mall.manager.annotation.ZfireField;
 import com.gree.mall.manager.enums.workorder.OrderBaseStatusEnum;
-import com.gree.mall.manager.enums.workorder.SaleTypeEnum;
-import com.gree.mall.manager.plus.entity.PgOrderBase;
 import com.gree.mall.manager.plus.entity.PgOrderFlag;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import org.springframework.data.elasticsearch.annotations.DateFormat;
-import org.springframework.data.elasticsearch.annotations.Field;
-import org.springframework.data.elasticsearch.annotations.FieldType;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
@@ -251,4 +246,7 @@ public class OrderBaseVO  {
 
     @ApiModelProperty(value = "取消服务时间")
     private Date cancelTime;
+
+    @ApiModelProperty(value = "最后反馈日志")
+    private String lastFeedbackRecord;
 }

+ 3 - 0
mall-server-api/src/main/java/com/gree/mall/manager/commonmapper/CommonMapper.java

@@ -770,4 +770,7 @@ public interface CommonMapper {
 
     @InterceptorIgnore(tenantLine = "1", blockAttack = "1", illegalSql = "1")
     IPage<WorkerInvolveApplyVO> listApply(Page page,  @Param("ex")ZfireParamBean zfireParamBean);
+
+    @InterceptorIgnore(tenantLine = "1", blockAttack = "1", illegalSql = "1")
+    List<OperatorLogBean> selectLastOrderOperatorLog(@Param("year")String year, @Param("ids")List<String> orderBaseIds);
 }

+ 17 - 6
mall-server-api/src/main/java/com/gree/mall/manager/logic/workorder/OrderBaseEsLogic.java

@@ -1,15 +1,17 @@
 package com.gree.mall.manager.logic.workorder;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.google.common.collect.Lists;
 import com.gree.mall.manager.bean.admin.AdminUserCom;
 import com.gree.mall.manager.bean.es.*;
 import com.gree.mall.manager.bean.listvo.param.WorkOrderZfireParam;
+import com.gree.mall.manager.bean.listvo.workorder.OperatorLogBean;
 import com.gree.mall.manager.bean.listvo.workorder.OrderBaseVO;
+import com.gree.mall.manager.commonmapper.CommonMapper;
 import com.gree.mall.manager.enums.MaterialExamineStatusEnum;
 import com.gree.mall.manager.es.*;
 import com.gree.mall.manager.exception.RemoteServiceException;
@@ -23,13 +25,9 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
-import org.elasticsearch.action.search.SearchResponse;
-import org.elasticsearch.client.RequestOptions;
-import org.elasticsearch.common.unit.TimeValue;
 import org.elasticsearch.index.query.BoolQueryBuilder;
 import org.elasticsearch.index.query.QueryBuilder;
 import org.elasticsearch.index.query.QueryBuilders;
-import org.elasticsearch.search.Scroll;
 import org.elasticsearch.search.aggregations.AbstractAggregationBuilder;
 import org.elasticsearch.search.aggregations.AggregationBuilders;
 import org.elasticsearch.search.aggregations.Aggregations;
@@ -75,6 +73,7 @@ public class OrderBaseEsLogic {
     private final SettlementOrderEsRepository settlementOrderEsRepository;
     private final OrderWorkerEsRepository orderWorkerEsRepository;
     private final PgOrderWorkerService pgOrderWorkerService;
+    private final CommonMapper commonMapper;
 
     public IPage<OrderBaseVO> orderBaseEsList(WorkOrderZfireParam zfireParamBean, HttpServletRequest request) {
 
@@ -186,8 +185,17 @@ public class OrderBaseEsLogic {
             page.setRecords(BeanUtil.copyToList(orderBaseEs,OrderBaseVO.class));
         }
 
+        List<OperatorLogBean> operatorList = null;
+        if (page.getSize() > 0) {
+            final List<String> orderBaseIds = page.getRecords().stream().map(OrderBaseVO::getId).distinct().collect(Collectors.toList());
+            operatorList = commonMapper.selectLastOrderOperatorLog(year, orderBaseIds);
+        }
 
-
+        Map<String, String> operatorMap = null;
+        if (CollectionUtil.isNotEmpty(operatorList)) {
+            operatorMap = operatorList.stream()
+                    .collect(Collectors.toMap(OperatorLogBean::getOrderBaseId, OperatorLogBean::getContent));
+        }
 
         //服务单标识
         if (zfireParamBean.getPageSize() != -1 && page.getTotal() > 0 && page.getRecords().size() > 0) {
@@ -211,6 +219,9 @@ public class OrderBaseEsLogic {
                     orderBaseVO.setWorkerPrice(bigDecimal);
                 }
 
+                if (Objects.nonNull(operatorMap) && operatorMap.containsKey(orderBaseVO.getId())) {
+                    orderBaseVO.setLastFeedbackRecord(operatorMap.get(orderBaseVO.getId()));
+                }
             }
         }
         return page;

+ 13 - 1
mall-server-api/src/main/java/com/gree/mall/manager/logic/workorder/OrderBaseLogic.java

@@ -14,6 +14,7 @@ import com.gree.mall.manager.bean.admin.AdminUserCom;
 import com.gree.mall.manager.bean.common.RegionBean;
 import com.gree.mall.manager.bean.es.OrderBaseEs;
 import com.gree.mall.manager.bean.listvo.param.WorkOrderZfireParam;
+import com.gree.mall.manager.bean.listvo.workorder.OperatorLogBean;
 import com.gree.mall.manager.bean.listvo.workorder.OrderBase2VO;
 import com.gree.mall.manager.bean.listvo.workorder.OrderBaseAppraiseVO;
 import com.gree.mall.manager.bean.listvo.workorder.OrderBaseVO;
@@ -46,7 +47,6 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.elasticsearch.index.query.BoolQueryBuilder;
-import org.elasticsearch.index.query.QueryBuilder;
 import org.elasticsearch.index.query.QueryBuilders;
 import org.elasticsearch.search.aggregations.AbstractAggregationBuilder;
 import org.elasticsearch.search.aggregations.AggregationBuilders;
@@ -195,6 +195,14 @@ public class OrderBaseLogic {
                     .eq(WorkerOrder::getPayStatus, MaterialExamineStatusEnum.PAID.getKey())
                     .select(WorkerOrder::getWorkerOrderId, WorkerOrder::getTotalAmount).list();
 
+            List<OperatorLogBean> operatorList = commonMapper.selectLastOrderOperatorLog(year, orderBaseIds);
+
+            Map<String, String> operatorMap = null;
+            if (CollectionUtil.isNotEmpty(operatorList)) {
+                operatorMap = operatorList.stream()
+                        .collect(Collectors.toMap(OperatorLogBean::getOrderBaseId, OperatorLogBean::getContent));
+            }
+
             for (OrderBaseVO orderBaseVO : page.getRecords()) {
                 orderBaseVO.setOrderFlags(mapList.get(orderBaseVO.getId()));
 
@@ -205,6 +213,10 @@ public class OrderBaseLogic {
                     orderBaseVO.setWorkerPrice(bigDecimal);
                 }
 
+                if (Objects.nonNull(operatorMap) && operatorMap.containsKey(orderBaseVO.getId())) {
+                    orderBaseVO.setLastFeedbackRecord(operatorMap.get(orderBaseVO.getId()));
+                }
+
             }
         }
         return page;

+ 23 - 0
mall-server-api/src/main/resources/mapper/CommonMapper.xml

@@ -1762,6 +1762,29 @@
         </if>
         ${ex.orderBy}
     </select>
+    <select id="selectLastOrderOperatorLog"
+            resultType="com.gree.mall.manager.bean.listvo.workorder.OperatorLogBean">
+        SELECT
+            order_base_id,
+            content
+        FROM
+            (
+                SELECT
+                    order_base_id, content, ROW_NUMBER() OVER ( PARTITION BY order_base_id ORDER BY fk_time DESC ) AS rn
+                FROM
+                    pg_order_operator_log#{companyId}
+                <where>
+                    <if test="ids != null and ids.size > 0">
+                        AND a.websit_id IN
+                        <foreach item="item" index="index" collection="ids" open="(" separator="," close=")">
+                            #{item}
+                        </foreach>
+                    </if>
+                </where>
+            ) AS ranked
+        WHERE
+            rn = 1;
+    </select>
 
 
 </mapper>