|
@@ -0,0 +1,75 @@
|
|
|
+package com.jsh.erp.service.impl;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.jsh.erp.datasource.dto.TaskStocktakingDTO;
|
|
|
+import com.jsh.erp.datasource.entities.MaterialExtend;
|
|
|
+import com.jsh.erp.datasource.entities.TaskStocktaking;
|
|
|
+import com.jsh.erp.datasource.mappers.MaterialExtendMapper;
|
|
|
+import com.jsh.erp.datasource.mappers.TaskStocktakingMapper;
|
|
|
+import com.jsh.erp.service.TaskStocktakingService;
|
|
|
+import lombok.RequiredArgsConstructor;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Collections;
|
|
|
+import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+@Service
|
|
|
+@RequiredArgsConstructor
|
|
|
+@Slf4j
|
|
|
+public class TaskStocktakingServiceImpl extends ServiceImpl<TaskStocktakingMapper, TaskStocktaking> implements TaskStocktakingService {
|
|
|
+
|
|
|
+
|
|
|
+ private final MaterialExtendMapper materialExtendMapper;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean add(TaskStocktakingDTO taskStocktakingDTO) {
|
|
|
+ //商品库位范围处理
|
|
|
+ List<String> collect;
|
|
|
+ if (taskStocktakingDTO.getTaskType() == 1) {
|
|
|
+ collect = materialExtendMapper.selectList(new LambdaQueryWrapper<MaterialExtend>().ne(MaterialExtend::getInventory, BigDecimal.ZERO)).stream().map(MaterialExtend::getPosition).collect(Collectors.toList());
|
|
|
+ } else {
|
|
|
+ collect = materialExtendMapper.selectList(new LambdaQueryWrapper<MaterialExtend>().in(MaterialExtend::getId, taskStocktakingDTO.getMaterialExtendIdList())).stream().map(MaterialExtend::getPosition).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ String positionRange = extractRangePair(collect);
|
|
|
+ this.save(taskStocktakingDTO);
|
|
|
+
|
|
|
+
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 计算库位范围
|
|
|
+ * @param data 库位集合
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static String extractRangePair(List<String> data) {
|
|
|
+ // 用于存储提取的前两部分
|
|
|
+ List<String> rangeParts = new ArrayList<>();
|
|
|
+
|
|
|
+ for (String item : data) {
|
|
|
+ // 提取前两部分(假设格式固定,以 "-" 分割,取前两部分)
|
|
|
+ String[] parts = item.split("-");
|
|
|
+ if (parts.length >= 2) {
|
|
|
+ String rangePart = parts[0] + "-" + parts[1];
|
|
|
+ rangeParts.add(rangePart); // 添加到列表
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 如果范围为空,直接返回空字符串
|
|
|
+ if (rangeParts.isEmpty()) {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+
|
|
|
+ // 找到最小和最大范围
|
|
|
+ String minRange = Collections.min(rangeParts); // 字典序最小
|
|
|
+ String maxRange = Collections.max(rangeParts); // 字典序最大
|
|
|
+
|
|
|
+ // 返回范围对
|
|
|
+ return minRange + "——" + maxRange;
|
|
|
+ }
|
|
|
+}
|