فهرست منبع

师傅辅材库存删除功能

FengChaoYu 10 ماه پیش
والد
کامیت
feaa523ddc

+ 12 - 6
mall-server-api/src/main/java/com/gree/mall/manager/controller/material/stock/WorkerStockController.java

@@ -15,14 +15,12 @@ import com.gree.mall.manager.zfire.bean.ZfireParamBean;
 import com.gree.mall.manager.zfire.util.FieldUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.integration.redis.util.RedisLockRegistry;
 import org.springframework.validation.annotation.Validated;
-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 org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
@@ -62,8 +60,6 @@ public class WorkerStockController {
         return ResponseHelper.success(page, new TypeReference<WorkerStockPVO>() {});
     }
 
-
-
     @PostMapping("list/export")
     @ApiOperation("辅材师傅库存-导出")
     public void mListExport(
@@ -77,6 +73,15 @@ public class WorkerStockController {
         FieldUtils.exportData(page.getRecords(), zfireParamBean.getExportFields(), request, response);
     }
 
+    @PostMapping("/del")
+    @ApiOperation(value = "辅材师傅库存-删除")
+    public ResponseHelper delStock(
+            @ApiParam(value = "id", required = true) @RequestParam List<String> ids
+    ) throws Exception {
+        workerStockLogic.delStock(ids);
+        return ResponseHelper.success();
+    }
+
     @PostMapping("listP/export")
     @ApiOperation("配件师傅库存-导出")
     public void pListExport(
@@ -91,6 +96,7 @@ public class WorkerStockController {
     }
 
 
+
     @PostMapping("importM")
     @ApiOperation("辅材师傅库存-导入(模板名称:辅材师傅库存.xlsx)")
     public ResponseHelper importData(MultipartFile file) throws Exception {

+ 64 - 4
mall-server-api/src/main/java/com/gree/mall/manager/logic/material/stock/WorkerStockLogic.java

@@ -1,5 +1,6 @@
 package com.gree.mall.manager.logic.material.stock;
 
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -18,10 +19,7 @@ import com.gree.mall.manager.enums.material.WebsitGoodsTypeEnum;
 import com.gree.mall.manager.enums.material.WorkerStockFlagEnum;
 import com.gree.mall.manager.exception.RemoteServiceException;
 import com.gree.mall.manager.logic.common.CommonLogic;
-import com.gree.mall.manager.plus.entity.User;
-import com.gree.mall.manager.plus.entity.WebsitGoods;
-import com.gree.mall.manager.plus.entity.WorkerGoods;
-import com.gree.mall.manager.plus.entity.WorkerStock;
+import com.gree.mall.manager.plus.entity.*;
 import com.gree.mall.manager.plus.service.*;
 import com.gree.mall.manager.utils.CommonUtils;
 import com.gree.mall.manager.zfire.bean.ZfireParamBean;
@@ -29,12 +27,15 @@ import com.gree.mall.manager.zfire.util.FieldUtils;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 @Slf4j
 @RequiredArgsConstructor
@@ -50,6 +51,8 @@ public class WorkerStockLogic {
     private final UserService userService;
     private final WebsitGoodsStockLogic websitGoodsStockLogic;
     private final WebsitGoodsService websitGoodsService;
+    private final WorkerStockBakService workerStockBakService;
+    private final WorkerStockAccBakService workerStockAccBakService;
 
     /**
      * 师傅辅材库存列表
@@ -277,4 +280,61 @@ public class WorkerStockLogic {
         websitGoodsStockLogic.handleWorkerStock(workerStockDTOS);
     }
 
+    @Transactional
+    public void delStock(List<String> ids) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+
+        if (adminUser.getType() == 2) {
+            throw new RemoteServiceException("平台账号禁止操作");
+        }
+        final List<WorkerStock> stockList = workerStockService.lambdaQuery()
+                .eq(WorkerStock::getCompanyWechatId, adminUser.getCompanyWechatId())
+                .eq(WorkerStock::getId, ids)
+                .eq(WorkerStock::getGoodsType, WebsitGoodsTypeEnum.M.getKey())
+                .list();
+
+        if (CollectionUtil.isNotEmpty(stockList)) {
+            final DateTime curDate = DateUtil.date();
+            List<WorkerStockBak> workerStockBakList = new ArrayList<>();
+            List<WorkerStockAccBak> workerStockAccBakList = new ArrayList<>();
+
+            List<WorkerStockAcc> workerStockRemoveAccs = new ArrayList<>();
+            // 按师傅分组
+            final Map<String, List<WorkerStock>> workerGroupMap = stockList.stream()
+                    .collect(Collectors.groupingBy(WorkerStock::getWorkerId));
+
+            for (Map.Entry<String, List<WorkerStock>> workerStock : workerGroupMap.entrySet()) {
+                // 需要删除的商品编号
+                final List<String> goodsIds = workerStock.getValue().stream()
+                        .map(WorkerStock::getGoodsId).collect(Collectors.toList());
+                final List<WorkerStockAcc> workerStockAccs = workerStockAccService.lambdaQuery()
+                        .eq(WorkerStockAcc::getCompanyWechatId, adminUser.getCompanyWechatId())
+                        .eq(WorkerStockAcc::getGoodsId, goodsIds)
+                        .list();
+
+                for (WorkerStock stock : workerStock.getValue()) {
+                    WorkerStockBak workerStockBak = new WorkerStockBak();
+                    BeanUtils.copyProperties(stock, workerStockBak);
+                    workerStockBak.setOperBy(adminUser.getJoinNickName())
+                            .setOperTime(curDate);
+                    workerStockBakList.add(workerStockBak);
+                }
+
+                for (WorkerStockAcc stockAcc : workerStockAccs) {
+                    WorkerStockAccBak workerStockaccBak = new WorkerStockAccBak();
+                    BeanUtils.copyProperties(stockAcc, workerStockaccBak);
+                    workerStockAccBakList.add(workerStockaccBak);
+                }
+
+                if (CollectionUtil.isNotEmpty(workerStockAccs)) {
+                    workerStockRemoveAccs.addAll(workerStockAccs);
+                }
+            }
+
+            workerStockService.removeByIds(stockList.stream().map(WorkerStock::getId).collect(Collectors.toList()));
+            workerStockAccService.removeByIds(workerStockRemoveAccs.stream().map(WorkerStockAcc::getId).collect(Collectors.toList()));
+            workerStockBakService.saveBatch(workerStockBakList);
+            workerStockAccBakService.saveBatch(workerStockAccBakList);
+        }
+    }
 }