廖泽勇 1 개월 전
부모
커밋
f6a78f6d7d

+ 29 - 0
docs/new_sql.sql

@@ -46,3 +46,32 @@ ADD COLUMN warehousing_time DATE DEFAULT NULL COMMENT '出入库时间';
 -- 修改产品类型编码为BIGINT
 ALTER TABLE jsh_material_category MODIFY COLUMN serial_no BIGINT;
 
+CREATE TABLE `task_stocktaking` (
+    `id` bigint NOT NULL COMMENT '主键ID',
+    `task_name` varchar(255) DEFAULT NULL COMMENT '任务名称',
+    `creator` bigint DEFAULT NULL COMMENT '负责人',
+    `create_by` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '创建人',
+    `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+    `task_type` varchar(255) DEFAULT NULL COMMENT '任务类型',
+    `depot_id` bigint DEFAULT NULL COMMENT '仓库ID',
+    `number` varchar(255) DEFAULT NULL COMMENT '任务单号',
+    `material_count` int DEFAULT NULL COMMENT '商品数',
+    `task_status` int DEFAULT NULL COMMENT '任务状态',
+    `position_range` varchar(255) DEFAULT NULL COMMENT '库位范围',
+    `delete_flag` tinyint DEFAULT NULL COMMENT '删除标志(0:否,1是)',
+    PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COMMENT='盘点任务表';
+
+CREATE TABLE `task_stocktaking_item` (
+    `id` bigint NOT NULL COMMENT '主键ID',
+    `task_stocktaking_id` bigint DEFAULT NULL COMMENT '任务ID',
+    `material_item_id` bigint DEFAULT NULL COMMENT '商品ID',
+    `creator` bigint DEFAULT NULL COMMENT '操作人',
+    `new_position` varchar(255) DEFAULT NULL COMMENT '新仓位货架',
+    `new_inventory` decimal(24,6) DEFAULT NULL COMMENT '新库存数',
+    `difference_count` int DEFAULT NULL COMMENT '差异数量',
+    `difference_reasion` varchar(255) DEFAULT NULL COMMENT '差异原因',
+    `delete_flag` varchar(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT '0' COMMENT '删除标记,0未删除,1删除',
+    `oper_time` datetime DEFAULT NULL COMMENT '操作时间',
+    PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COMMENT='盘点任务关联商品表';

+ 5 - 0
src/main/java/com/jsh/erp/controller/pda/PdaController.java

@@ -90,6 +90,11 @@ public class PdaController extends BaseController {
     @GetMapping("/materialDepotDetail/{type}/{materialId}")
     public TableDataInfo materialDepotDetail(@PathVariable("type") String type, @PathVariable("materialId") Long materialId) {
         startPage();
+        if ("out".equals(type)) {
+            type = "入库";
+        } else {
+            type = "出库";
+        }
         List<PDADepotItemVO> list = depotItemService.materialDepotDetail(type , materialId);
         return getDataTable(list);
     }

+ 39 - 0
src/main/java/com/jsh/erp/controller/stocktaking/StocktakingController.java

@@ -0,0 +1,39 @@
+package com.jsh.erp.controller.stocktaking;
+
+import com.jsh.erp.base.AjaxResult;
+import com.jsh.erp.base.BaseController;
+import com.jsh.erp.base.TableDataInfo;
+import com.jsh.erp.datasource.dto.TaskStocktakingDTO;
+import com.jsh.erp.datasource.entities.TaskStocktaking;
+import com.jsh.erp.service.TaskStocktakingService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@RestController
+@RequestMapping(value = "/stocktaking")
+@Api(tags = {"盘点接口"})
+public class StocktakingController extends BaseController {
+
+    @Resource
+    private TaskStocktakingService taskStocktakingService;
+
+    @ApiOperation("盘点任务列表")
+    @PostMapping("/list")
+    public TableDataInfo list(){
+        startPage();
+        return getDataTable(taskStocktakingService.list());
+    }
+
+    @ApiOperation("新增盘点任务")
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody TaskStocktakingDTO taskStocktakingDTO) {
+        taskStocktakingService.add(taskStocktakingDTO);
+        return AjaxResult.success();
+    }
+
+
+
+}

+ 21 - 0
src/main/java/com/jsh/erp/datasource/dto/TaskStocktakingDTO.java

@@ -0,0 +1,21 @@
+package com.jsh.erp.datasource.dto;
+
+import com.jsh.erp.datasource.entities.TaskStocktaking;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 盘点任务
+ */
+@Data
+@Accessors(chain = true)
+public class TaskStocktakingDTO extends TaskStocktaking {
+
+    @ApiModelProperty("商品扩展ID集合")
+    private List<Long> materialExtendIdList;
+
+}

+ 52 - 0
src/main/java/com/jsh/erp/datasource/entities/TaskStocktaking.java

@@ -0,0 +1,52 @@
+package com.jsh.erp.datasource.entities;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+
+/**
+ * 盘点任务
+ */
+@Data
+@Accessors(chain = true)
+public class TaskStocktaking {
+
+    @ApiModelProperty("主键ID")
+    private Long id;
+
+    @ApiModelProperty("任务名称")
+    private String taskName;
+
+    @ApiModelProperty("负责人ID")
+    private Long creator;
+
+    @ApiModelProperty("创建人ID")
+    private Long createBy;
+
+    @ApiModelProperty("创建时间")
+    private Date createTime;
+
+    @ApiModelProperty("任务类型 1.全盘,2.抽盘")
+    private int taskType;
+
+    @ApiModelProperty("仓库ID")
+    private Long depotId;
+
+    @ApiModelProperty("任务单号")
+    private String number;
+
+    @ApiModelProperty("商品数")
+    private int materialCount;
+
+    @ApiModelProperty("任务状态 0.未开始,1.进行中,2.已完成,3.已取消")
+    private Integer taskStatus;
+
+    @ApiModelProperty("盘点范围")
+    private String positionRange;
+
+    @ApiModelProperty("删除标记,0.未删除,1.已删除")
+    private boolean deleteFlag;
+
+}

+ 47 - 0
src/main/java/com/jsh/erp/datasource/entities/TaskStocktakingItem.java

@@ -0,0 +1,47 @@
+package com.jsh.erp.datasource.entities;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 盘点任务明细
+ */
+@Data
+@Accessors(chain = true)
+public class TaskStocktakingItem {
+
+    @ApiModelProperty("主键ID")
+    private Long id;
+
+    @ApiModelProperty("任务ID")
+    private Long taskStocktakingId;
+
+    @ApiModelProperty("商品ID")
+    private Long materialItemId;
+
+    @ApiModelProperty("操作人ID")
+    private Long creator;
+
+    @ApiModelProperty("操作时间")
+    private Date operTime;
+
+    @ApiModelProperty("新仓位货架")
+    private String newPosition;
+
+    @ApiModelProperty("新库存数")
+    private BigDecimal newInventory;
+
+    @ApiModelProperty("差异数量")
+    private Integer differenceCount;
+
+    @ApiModelProperty("差异原因")
+    private String differenceReason;
+
+    @ApiModelProperty("删除标记,0.未删除,1.已删除")
+    private boolean deleteFlag;
+
+}

+ 6 - 0
src/main/java/com/jsh/erp/datasource/mappers/TaskStocktakingItemMapper.java

@@ -0,0 +1,6 @@
+package com.jsh.erp.datasource.mappers;
+
+import com.jsh.erp.datasource.entities.TaskStocktakingItem;
+
+public interface TaskStocktakingItemMapper extends BaseMapperX<TaskStocktakingItem> {
+}

+ 6 - 0
src/main/java/com/jsh/erp/datasource/mappers/TaskStocktakingMapper.java

@@ -0,0 +1,6 @@
+package com.jsh.erp.datasource.mappers;
+
+import com.jsh.erp.datasource.entities.TaskStocktaking;
+
+public interface TaskStocktakingMapper extends BaseMapperX<TaskStocktaking> {
+}

+ 7 - 0
src/main/java/com/jsh/erp/service/TaskStocktakingItemService.java

@@ -0,0 +1,7 @@
+package com.jsh.erp.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jsh.erp.datasource.entities.TaskStocktakingItem;
+
+public interface TaskStocktakingItemService extends IService<TaskStocktakingItem> {
+}

+ 10 - 0
src/main/java/com/jsh/erp/service/TaskStocktakingService.java

@@ -0,0 +1,10 @@
+package com.jsh.erp.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jsh.erp.datasource.dto.TaskStocktakingDTO;
+import com.jsh.erp.datasource.entities.TaskStocktaking;
+
+public interface TaskStocktakingService extends IService<TaskStocktaking> {
+
+    boolean add(TaskStocktakingDTO taskStocktakingDTO);
+}

+ 0 - 10
src/main/java/com/jsh/erp/service/UserService.java

@@ -379,16 +379,6 @@ public class UserService {
                 if(list.get(0).getStatus()!=0) {
                     return ExceptionCodeConstants.UserExceptionCode.BLACK_USER;
                 }
-                Long tenantId = list.get(0).getTenantId();
-                Tenant tenant = tenantService.getTenantByTenantId(tenantId);
-                if(tenant!=null) {
-                    if(tenant.getEnabled()!=null && !tenant.getEnabled()) {
-                        return ExceptionCodeConstants.UserExceptionCode.BLACK_TENANT;
-                    }
-                    if(tenant.getExpireTime()!=null && tenant.getExpireTime().getTime()<System.currentTimeMillis()){
-                        return ExceptionCodeConstants.UserExceptionCode.EXPIRE_TENANT;
-                    }
-                }
             }
         } catch (Exception e) {
             logger.error(">>>>>>>>访问验证用户姓名是否存在后台信息异常", e);

+ 11 - 0
src/main/java/com/jsh/erp/service/impl/TaskStocktakingItemServiceImpl.java

@@ -0,0 +1,11 @@
+package com.jsh.erp.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jsh.erp.datasource.entities.TaskStocktakingItem;
+import com.jsh.erp.datasource.mappers.TaskStocktakingItemMapper;
+import com.jsh.erp.service.TaskStocktakingItemService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class TaskStocktakingItemServiceImpl extends ServiceImpl<TaskStocktakingItemMapper, TaskStocktakingItem> implements TaskStocktakingItemService {
+}

+ 75 - 0
src/main/java/com/jsh/erp/service/impl/TaskStocktakingServiceImpl.java

@@ -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;
+    }
+}

+ 3 - 2
src/main/resources/mapper_xml/DepotItemMapper.xml

@@ -621,13 +621,14 @@
       me.commodity_unit AS commodity_unit
     FROM
       jsh_depot_item di
+      LEFT JOIN jsh_depot_head dh ON di.header_id = dh.id
       LEFT JOIN jsh_material m ON di.material_id = m.id
       LEFT JOIN jsh_material_extend me ON di.material_extend_id = me.id
       LEFT JOIN jsh_depot d ON di.depot_id = d.id
     WHERE
       di.delete_flag = '0'
-      AND m.status in ('2','3')
-      AND di.type = #{type}
+      AND dh.status in ('2','3')
+      AND dh.type = #{type}
       AND di.material_id = #{materialId}
   </select>
 

+ 5 - 0
src/main/resources/mapper_xml/TaskStocktakingItemMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jsh.erp.datasource.mappers.TaskStocktakingItemMapper">
+
+</mapper>

+ 5 - 0
src/main/resources/mapper_xml/TaskStocktakingMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jsh.erp.datasource.mappers.TaskStocktakingMapper">
+
+</mapper>