Browse Source

Merge branch 'master' into develop

‘linchangsheng’ 2 tháng trước cách đây
mục cha
commit
0584cb8009

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

@@ -141,6 +141,10 @@ public class OrderBaseVO  {
     @ApiModelProperty("备注")
     private String remark;
 
+    @ZfireField(sortNum = 30)
+    @ApiModelProperty(value = "最后反馈日志")
+    private String lastOperator;
+
 
 
     @ZfireField(hide = true)
@@ -247,7 +251,4 @@ public class OrderBaseVO  {
     @ApiModelProperty(value = "取消服务时间")
     private Date cancelTime;
 
-    @ZfireField(ignoreSelect = true, isQuery = false)
-    @ApiModelProperty(value = "最后反馈日志")
-    private String lastFeedbackRecord;
 }

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

@@ -771,6 +771,4 @@ 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);
 }

+ 1 - 0
mall-server-api/src/main/java/com/gree/mall/manager/controller/workerorder/ESOrderBaseController.java

@@ -102,6 +102,7 @@ public class ESOrderBaseController {
 
 
     @ApiNotAuth
+    @ApiOperation(value = "创建索引接口")
     @PostMapping("test")
     public ResponseHelper test() throws IllegalAccessException {
         orderBaseEsLogic.test();

+ 9 - 2
mall-server-api/src/main/java/com/gree/mall/manager/logic/material/manage/WebsitPurchaseAdjustmentLogic.java

@@ -307,6 +307,7 @@ public class WebsitPurchaseAdjustmentLogic {
         List<WebsitPurchaseItem> changePurchaseList = new ArrayList<>();
         List<WebsitPurchaseAdjustmentItem> changeAdjustList = new ArrayList<>();
 
+        BigDecimal totalPurchaseAmount = BigDecimal.ZERO;
         // 遍历修改采购明细
         for (WebsitPurchaseItem purchaseItem : purchaseItems) {
             WebsitPurchaseAdjustmentItem item = goodsMap.get("" + purchaseItem.getGoodsId());
@@ -318,19 +319,25 @@ public class WebsitPurchaseAdjustmentLogic {
                 purchaseItem.setCost(item.getAdjustCost());
                 purchaseItem.setRecQty(item.getAdjustQty());
                 purchaseItem.setRecGiftQty(item.getAdjustGiftQty());
-                purchaseItem.setCostValue(item.getRecQty()
-                        .multiply(item.getCost())
+                purchaseItem.setCostValue(item.getAdjustQty()
+                        .multiply(item.getAdjustCost())
                         .setScale(2, BigDecimal.ROUND_DOWN));
                 purchaseItem.setInStockQty(item.getAdjustInStockQty());
                 purchaseItem.setInStockCost(item.getAdjustInStockCost());
                 changePurchaseList.add(purchaseItem);
                 changeAdjustList.add(item);
             }
+            totalPurchaseAmount = totalPurchaseAmount.add(purchaseItem.getCostValue());
         }
 
         // 更改采购明细信息
         websitPurchaseItemService.updateBatchById(changePurchaseList);
 
+        websitPurchaseService.lambdaUpdate()
+                .set(WebsitPurchase::getTotalAmount, totalPurchaseAmount)
+                .eq(WebsitPurchase::getPurchaseId, purchaseAdjustment.getRef())
+                .update();
+
         if (changeAdjustList.size() > 0) {
             // 处理库存
             webitPurchaseStockLogic.adjustmentStock(purchaseAdjustment, changeAdjustList, "采购调整");

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

@@ -1,8 +1,6 @@
 package com.gree.mall.manager.logic.workorder;
 
 import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.collection.CollectionUtil;
-import cn.hutool.core.collection.ListUtil;
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -10,7 +8,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 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;
@@ -141,20 +138,6 @@ public class OrderBaseEsLogic {
         page.setSize(zfireParamBean.getPageSize());
         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());
-            if (CollectionUtil.isNotEmpty(orderBaseIds)) {
-                operatorList = commonMapper.selectLastOrderOperatorLog(year, orderBaseIds);
-            }
-        }
-
-        Map<String, List<OperatorLogBean>> operatorMap = null;
-        if (CollectionUtil.isNotEmpty(operatorList)) {
-            operatorMap = operatorList.stream()
-                    .collect(Collectors.groupingBy(OperatorLogBean::getOrderBaseId));
-        }
-
         //服务单标识
         if (zfireParamBean.getPageSize() != -1 && page.getTotal() > 0 && page.getRecords().size() > 0) {
             List<String> orderBaseIds = page.getRecords()
@@ -176,10 +159,6 @@ public class OrderBaseEsLogic {
                     BigDecimal bigDecimal = workerOrders.stream().map(WorkerOrder::getTotalAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
                     orderBaseVO.setWorkerPrice(bigDecimal);
                 }
-
-                if (Objects.nonNull(operatorMap) && operatorMap.containsKey(orderBaseVO.getId())) {
-                    orderBaseVO.setLastFeedbackRecord(operatorMap.get(orderBaseVO.getId()).get(0).getContent());
-                }
             }
         }
         return page;
@@ -997,32 +976,33 @@ public class OrderBaseEsLogic {
                 .eq(WorkerOrder::getPayStatus, MaterialExamineStatusEnum.PAID.getKey())
                 .select(WorkerOrder::getWorkerOrderId, WorkerOrder::getTotalAmount).list();
 
-        List<OperatorLogBean> operatorList = new ArrayList<>();
-        if (CollectionUtil.isNotEmpty(orderBaseIds)) {
-            final List<List<String>> pageList = ListUtil.split(orderBaseIds, 10000);
-            for (List<String> orderIdPageList : pageList) {
-                operatorList.addAll(commonMapper.selectLastOrderOperatorLog(year, orderIdPageList));
-            }
-        }
+        // 预处理:将workerOrderList按workerOrderId分组(O(m)时间复杂度)
+        Map<String, List<WorkerOrder>> workerOrderMap = workerOrderList.stream()
+                .collect(Collectors.groupingBy(WorkerOrder::getWorkerOrderId));
 
-        Map<String, List<OperatorLogBean>> operatorMap = null;
-        if (CollectionUtil.isNotEmpty(operatorList)) {
-            operatorMap = operatorList.stream()
-                    .collect(Collectors.groupingBy(OperatorLogBean::getOrderBaseId));
-        }
+        // 提前判断workerOrderList是否为空(避免循环内重复判断)
+        boolean isWorkerOrderListEmpty = CollectionUtils.isEmpty(workerOrderList);
 
         for (OrderBaseVO orderBaseVO : orderBaseVOS1) {
 
-            List<WorkerOrder> workerOrders = workerOrderList.stream()
-                    .filter(item -> item.getWorkerOrderId().equals(orderBaseVO.getId())).collect(Collectors.toList());
-            if (!CollectionUtils.isEmpty(workerOrderList)) {
-                BigDecimal bigDecimal = workerOrders.stream().map(WorkerOrder::getTotalAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
+//            List<WorkerOrder> workerOrders = workerOrderList.stream()
+//                    .filter(item -> item.getWorkerOrderId().equals(orderBaseVO.getId())).collect(Collectors.toList());
+//            if (!CollectionUtils.isEmpty(workerOrderList)) {
+//                BigDecimal bigDecimal = workerOrders.stream().map(WorkerOrder::getTotalAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
+//                orderBaseVO.setWorkerPrice(bigDecimal);
+//            }
+//
+            // 从Map中直接获取匹配的WorkerOrder列表(O(1)时间复杂度)
+            List<WorkerOrder> workerOrders = workerOrderMap.getOrDefault(orderBaseVO.getId(), Collections.emptyList());
+
+            // 计算总金额(若workerOrderList非空时才执行)
+            if (!isWorkerOrderListEmpty && !workerOrders.isEmpty()) {
+                BigDecimal bigDecimal = workerOrders.stream()
+                        .map(WorkerOrder::getTotalAmount)
+                        .reduce(BigDecimal::add)
+                        .orElse(BigDecimal.ZERO);
                 orderBaseVO.setWorkerPrice(bigDecimal);
             }
-
-            if (Objects.nonNull(operatorMap) && operatorMap.containsKey(orderBaseVO.getId())) {
-                orderBaseVO.setLastFeedbackRecord(operatorMap.get(orderBaseVO.getId()).get(0).getContent());
-            }
         }
 
         return orderBaseVOS1;

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

@@ -14,7 +14,6 @@ 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;
@@ -195,28 +194,35 @@ public class OrderBaseLogic {
                     .eq(WorkerOrder::getPayStatus, MaterialExamineStatusEnum.PAID.getKey())
                     .select(WorkerOrder::getWorkerOrderId, WorkerOrder::getTotalAmount).list();
 
-            List<OperatorLogBean> operatorList = commonMapper.selectLastOrderOperatorLog(year, orderBaseIds);
+            // 预处理:将workerOrderList按workerOrderId分组(O(m)时间复杂度)
+            Map<String, List<WorkerOrder>> workerOrderMap = workerOrderList.stream()
+                    .collect(Collectors.groupingBy(WorkerOrder::getWorkerOrderId));
+
+            // 提前判断workerOrderList是否为空(避免循环内重复判断)
+            boolean isWorkerOrderListEmpty = CollectionUtils.isEmpty(workerOrderList);
 
-            Map<String, List<OperatorLogBean>> operatorMap = null;
-            if (CollectionUtil.isNotEmpty(operatorList)) {
-                operatorMap = operatorList.stream()
-                        .collect(Collectors.groupingBy(OperatorLogBean::getOrderBaseId));
-            }
 
             for (OrderBaseVO orderBaseVO : page.getRecords()) {
-                orderBaseVO.setOrderFlags(mapList.get(orderBaseVO.getId()));
+//                orderBaseVO.setOrderFlags(mapList.get(orderBaseVO.getId()));
+//
+//                List<WorkerOrder> workerOrders = workerOrderList.stream()
+//                        .filter(item -> item.getWorkerOrderId().equals(orderBaseVO.getId())).collect(Collectors.toList());
+//                if (!CollectionUtils.isEmpty(workerOrderList)) {
+//                    BigDecimal bigDecimal = workerOrders.stream().map(WorkerOrder::getTotalAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
+//                    orderBaseVO.setWorkerPrice(bigDecimal);
+//                }
 
-                List<WorkerOrder> workerOrders = workerOrderList.stream()
-                        .filter(item -> item.getWorkerOrderId().equals(orderBaseVO.getId())).collect(Collectors.toList());
-                if (!CollectionUtils.isEmpty(workerOrderList)) {
-                    BigDecimal bigDecimal = workerOrders.stream().map(WorkerOrder::getTotalAmount).reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
-                    orderBaseVO.setWorkerPrice(bigDecimal);
-                }
+                // 从Map中直接获取匹配的WorkerOrder列表(O(1)时间复杂度)
+                List<WorkerOrder> workerOrders = workerOrderMap.getOrDefault(orderBaseVO.getId(), Collections.emptyList());
 
-                if (Objects.nonNull(operatorMap) && operatorMap.containsKey(orderBaseVO.getId())) {
-                    orderBaseVO.setLastFeedbackRecord(operatorMap.get(orderBaseVO.getId()).get(0).getContent());
+                // 计算总金额(若workerOrderList非空时才执行)
+                if (!isWorkerOrderListEmpty && !workerOrders.isEmpty()) {
+                    BigDecimal bigDecimal = workerOrders.stream()
+                            .map(WorkerOrder::getTotalAmount)
+                            .reduce(BigDecimal::add)
+                            .orElse(BigDecimal.ZERO);
+                    orderBaseVO.setWorkerPrice(bigDecimal);
                 }
-
             }
         }
         return page;

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

@@ -1762,52 +1762,6 @@
         </if>
         ${ex.orderBy}
     </select>
-    <select id="selectLastOrderOperatorLog"
-            resultType="com.gree.mall.manager.bean.listvo.workorder.OperatorLogBean">
-<!-- mysql8.0语法 -->
-<!--        SELECT-->
-<!--            order_base_id,-->
-<!--            content-->
-<!--        FROM-->
-<!--            (-->
-<!--                SELECT-->
-<!--                    order_base_id, content, ROW_NUMBER() OVER ( PARTITION BY order_base_id ORDER BY create_time DESC ) AS rn-->
-<!--                FROM-->
-<!--                    pg_order_operator_log${year}-->
-<!--                <where>-->
-<!--                    <if test="ids != null and ids.size > 0">-->
-<!--                        AND order_base_id IN-->
-<!--                        <foreach item="item" index="index" collection="ids" open="(" separator="," close=")">-->
-<!--                            #{item}-->
-<!--                        </foreach>-->
-<!--                    </if>-->
-<!--                </where>-->
-<!--            ) AS ranked-->
-<!--        WHERE-->
-<!--            rn = 1;-->
-        SELECT
-            t1.order_base_id,
-            t1.content
-        FROM
-            pg_order_operator_log${year} t1
-        INNER JOIN (
-            SELECT order_base_id, MAX(create_time) AS latest_create_time
-            FROM pg_order_operator_log${year}
-            <where>
-                <if test="ids != null and ids.size > 0">
-                    order_base_id IN
-                    <foreach item="item" index="index" collection="ids" open="(" separator="," close=")">
-                        #{item}
-                    </foreach>
-                    AND company_wechat_id = 1
-                </if>
-            </where>
-            GROUP BY
-            order_base_id
-        ) t2
-        ON t1.order_base_id = t2.order_base_id
-        AND t1.create_time = t2.latest_create_time
-    </select>
 
 
 </mapper>