From 8003d2eccb633599ec8292730df64cc8aca50307 Mon Sep 17 00:00:00 2001
From: zhuo <2089219845@qq.com>
Date: 星期四, 20 二月 2025 10:35:46 +0800
Subject: [PATCH] 添加样品管理模块

---
 inspect-server/src/main/resources/mapper/WarehouseCellMapper.xml                          |   28 ++
 inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderPlanController.java     |   20 
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/WarehouseServiceImpl.java     |  189 +++++++++++++
 inspect-server/src/main/java/com/ruoyi/inspect/pojo/Warehouse.java                        |   44 +++
 inspect-server/src/main/java/com/ruoyi/inspect/service/WarehouseService.java              |   42 +++
 inspect-server/src/main/java/com/ruoyi/inspect/pojo/WarehouseShelf.java                   |   61 ++++
 inspect-server/src/main/java/com/ruoyi/inspect/dto/WarehouseCellAndSampleDto.java         |   14 +
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/WarehouseCellServiceImpl.java |   26 +
 inspect-server/src/main/java/com/ruoyi/inspect/dto/HistoryDto.java                        |   13 
 inspect-server/src/main/java/com/ruoyi/inspect/mapper/WarehouseShelfMapper.java           |   18 +
 inspect-server/src/main/java/com/ruoyi/inspect/mapper/WarehouseCellMapper.java            |   23 +
 inspect-server/src/main/java/com/ruoyi/inspect/dto/WarehouseDto.java                      |   14 +
 inspect-server/src/main/java/com/ruoyi/inspect/mapper/WarehouseHistoryMapper.java         |   25 +
 inspect-server/src/main/java/com/ruoyi/inspect/pojo/WarehouseHistory.java                 |   56 ++++
 inspect-server/src/main/resources/mapper/WarehouseHistoryMapper.xml                       |   16 +
 inspect-server/src/main/resources/mapper/WarehouseMapper.xml                              |   24 +
 inspect-server/src/main/java/com/ruoyi/inspect/mapper/WarehouseMapper.java                |   23 +
 inspect-server/src/main/java/com/ruoyi/inspect/service/WarehouseCellService.java          |   13 
 inspect-server/src/main/java/com/ruoyi/inspect/pojo/WarehouseCell.java                    |   61 ++++
 inspect-server/src/main/java/com/ruoyi/inspect/controller/WarehouseController.java        |  111 +++++++
 20 files changed, 811 insertions(+), 10 deletions(-)

diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderPlanController.java b/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderPlanController.java
index d61e1f9..df437ad 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderPlanController.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderPlanController.java
@@ -59,14 +59,14 @@
     }
 
 
-    @ApiOperation(value = "鎵ц妫�楠屾搷浣�")
-    @PostMapping("/doInsOrder")
+    @ApiOperation(value = "鏌ヨ妫�楠屾搷浣�")
+    @GetMapping("/doInsOrder")
     public Result<?> doInsOrder(Integer id, String laboratory) {
         return Result.success(insOrderPlanService.doInsOrder(id, laboratory));
     }
 
-    @PostMapping("/getInsProduct")
     @ApiOperation("鑾峰彇妫�楠岄」鐩拰妯℃澘鍐呭")
+    @GetMapping("/getInsProduct")
     public Result<?> getInsProduct(InsOrderPlanProductDto insOrderPlanProductDto) {
         return Result.success(insOrderPlanService.getInsProduct(insOrderPlanProductDto));
     }
@@ -79,7 +79,7 @@
     }
 
     @ApiOperation(value = "鍒ゆ柇浜ゆ帴鐨勮瘯楠屽")
-    @PostMapping("/upPlanUser2")
+    @GetMapping("/upPlanUser2")
     public Result<?> upPlanUser2(Integer orderId) {
         return Result.success(insOrderPlanService.upPlanUser2(orderId));
     }
@@ -138,7 +138,7 @@
 
 
     @ApiOperation(value = "鍒犻櫎闄勪欢")
-    @PostMapping("/delfile")
+    @DeleteMapping("/delfile")
     public Result<?> delfile(Integer id) {
         return Result.success(insOrderFileService.removeById(id));
     }
@@ -162,25 +162,25 @@
 
 
     @ApiOperation(value = "鐢电紗閰嶇疆,鏌ョ湅閰嶇疆鏍囪瘑")
-    @PostMapping("/getCableTag")
+    @GetMapping("/getCableTag")
     public Result<?> getCableTag(Integer id, String laboratory) {
         return Result.success(insOrderPlanService.getCableTag(id, laboratory));
     }
 
     @ApiOperation(value = "鍘熸潗鏂�,鏌ョ湅閰嶇疆鏍囪瘑")
-    @PostMapping("/getRawMaterialTag")
+    @GetMapping("/getRawMaterialTag")
     public Result<?> getRawMaterialTag(Integer id, String laboratory) {
         return Result.success(insOrderPlanService.getRawMaterialTag(id, laboratory));
     }
 
     @ApiOperation(value = "鏌ョ湅閲嶅鏍囪瘑")
-    @PostMapping("/getRepetitionTag")
+    @GetMapping("/getRepetitionTag")
     public Result<?> getRepetitionTag(Integer id, String laboratory, String cableTag) {
         return Result.success(insOrderPlanService.getRepetitionTag(id, laboratory, cableTag));
     }
 
     @ApiOperation("鑾峰彇涓嶅悎鏍兼暟鎹�")
-    @PostMapping("/getInsProductUnqualified")
+    @GetMapping("/getInsProductUnqualified")
     public Result<?> getInsProductUnqualified(InsOrderPlanProductDto insOrderPlanProductDto) {
         return Result.success(insOrderPlanService.getInsProductUnqualified(insOrderPlanProductDto));
     }
@@ -194,7 +194,7 @@
     }
 
     @ApiOperation("鑾峰彇涓嶅悎鏍煎娴嬫暟鎹�")
-    @PostMapping("/getInsProductUnqualifiedRetest")
+    @GetMapping("/getInsProductUnqualifiedRetest")
     public Result<?> getInsProductUnqualifiedRetest(Integer id, Integer type, String laboratory, String cableTag, String rawMaterialTag, String retestTag) {
         return Result.success(insOrderPlanService.getInsProductUnqualifiedRetest(id, type, laboratory, cableTag, rawMaterialTag, retestTag));
     }
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/controller/WarehouseController.java b/inspect-server/src/main/java/com/ruoyi/inspect/controller/WarehouseController.java
new file mode 100644
index 0000000..5010762
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/controller/WarehouseController.java
@@ -0,0 +1,111 @@
+package com.ruoyi.inspect.controller;
+
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.inspect.pojo.Warehouse;
+import com.ruoyi.inspect.pojo.WarehouseShelf;
+import com.ruoyi.inspect.service.WarehouseService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+@RequestMapping("/warehouse")
+@RestController
+@AllArgsConstructor
+@Api(tags = "鏍峰搧绠$悊")
+public class WarehouseController {
+
+    private WarehouseService warehouseService;
+
+    @ApiOperation("娣诲姞浠撳簱")
+    @PostMapping("/addWarehouse")
+    public Result addWarehouse(@RequestBody Warehouse warehouse) {
+        return Result.success(warehouseService.addWarehouse(warehouse));
+    }
+
+
+    @ApiOperation("鏌ヨ浠撳簱")
+    @GetMapping("/selectWarehouse")
+    public Result selectWarehouse() {
+        return Result.success(warehouseService.selectWarehouse());
+    }
+
+    @PostMapping("/addShelf")
+    @ApiOperation("娣诲姞璐ф灦")
+    @ApiImplicitParams({
+            @ApiImplicitParam(value = "name", name = "鍚嶇О", dataTypeClass = String.class),
+            @ApiImplicitParam(value = "row", name = "琛�", dataTypeClass = Integer.class),
+            @ApiImplicitParam(value = "col", name = "鍒�", dataTypeClass = Integer.class),
+            @ApiImplicitParam(value = "warehouseId", name = "浠撳簱id", dataTypeClass = Integer.class)
+    })
+    public Result addShelf(@RequestBody WarehouseShelf warehouseShelf) {
+        return Result.success(warehouseService.addShelf(warehouseShelf));
+    }
+
+
+    @ApiOperation("鍒犻櫎浠撳簱")
+    @DeleteMapping("/delWarehouse")
+    public Result delWarehouse(Integer id) {
+        return Result.success(warehouseService.delWarehouse(id));
+    }
+
+
+    @ApiOperation("淇敼浠撳簱")
+    @PostMapping("/upWarehouse")
+    public Result upWarehouse(@RequestBody Warehouse warehouse) {
+        return Result.success(warehouseService.upWarehouse(warehouse));
+    }
+
+
+    @ApiOperation("鍒犻櫎璐ф灦")
+    @DeleteMapping("/delShelf")
+    public Result delShelf(Integer id) {
+        return Result.success(warehouseService.delShelf(id));
+    }
+
+
+    @ApiOperation("淇敼璐ф灦")
+    @PostMapping("/upShelf")
+    public Result upShelf(@RequestBody WarehouseShelf warehouseShelf) {
+        return Result.success(warehouseService.upShelf(warehouseShelf));
+    }
+
+    @ApiOperation("鏌ヨ璐ф灦涓嬬殑瀛樻斁淇℃伅")
+    @GetMapping("/getWarehouse")
+    public Result getWarehouse(Integer shelfId) {
+        return Result.success(warehouseService.getWarehouse(shelfId));
+    }
+
+
+    @ApiOperation("鏍峰搧鍏ュ簱")
+    @PostMapping("/inWarehouse")
+    public Result inWarehouse(@RequestBody Map<String, String> param) {
+        String trees = param.get("trees");
+        String sampleCode = param.get("sampleCode");
+        return Result.success(warehouseService.inWarehouse(trees, sampleCode));
+    }
+
+
+    @PostMapping("/outWarehouse")
+    @ApiOperation("鏍峰搧鍑哄簱")
+    public Result outWarehouse(@RequestBody Map<String, String> param) {
+        String sampleCode = param.get("sampleCode");
+        return Result.success(warehouseService.outWarehouse(sampleCode));
+    }
+
+    @ApiOperation("鏌ヨ鏍峰搧璇︾粏璁板綍")
+    @GetMapping("/getSampleRecord")
+    public Result getSampleRecord(Integer id) {
+        return Result.success(warehouseService.getSampleRecord(id));
+    }
+
+    @ApiOperation("閫氳繃鏍峰搧缂栧彿杩涜妫�绱�")
+    @GetMapping("/searchSampleId")
+    public Result searchSampleId(String sampleCode) {
+        return Result.success(warehouseService.searchSampleId(sampleCode));
+    }
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/dto/HistoryDto.java b/inspect-server/src/main/java/com/ruoyi/inspect/dto/HistoryDto.java
new file mode 100644
index 0000000..8bb9834
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/dto/HistoryDto.java
@@ -0,0 +1,13 @@
+package com.ruoyi.inspect.dto;
+
+import com.ruoyi.inspect.pojo.WarehouseHistory;
+import lombok.Data;
+
+@Data
+public class HistoryDto extends WarehouseHistory {
+
+    private String createUserName;
+
+    private String warehouseCode;
+
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/dto/WarehouseCellAndSampleDto.java b/inspect-server/src/main/java/com/ruoyi/inspect/dto/WarehouseCellAndSampleDto.java
new file mode 100644
index 0000000..59f3939
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/dto/WarehouseCellAndSampleDto.java
@@ -0,0 +1,14 @@
+package com.ruoyi.inspect.dto;
+
+import com.ruoyi.inspect.pojo.InsSample;
+import com.ruoyi.inspect.pojo.WarehouseCell;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class WarehouseCellAndSampleDto extends WarehouseCell {
+
+    private List<InsSample> samples;
+
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/dto/WarehouseDto.java b/inspect-server/src/main/java/com/ruoyi/inspect/dto/WarehouseDto.java
new file mode 100644
index 0000000..180e741
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/dto/WarehouseDto.java
@@ -0,0 +1,14 @@
+package com.ruoyi.inspect.dto;
+
+import com.ruoyi.inspect.pojo.Warehouse;
+import com.ruoyi.inspect.pojo.WarehouseShelf;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class WarehouseDto extends Warehouse {
+
+    List<WarehouseShelf> warehouseShelfList;
+
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/WarehouseCellMapper.java b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/WarehouseCellMapper.java
new file mode 100644
index 0000000..e15fd4e
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/WarehouseCellMapper.java
@@ -0,0 +1,23 @@
+package com.ruoyi.inspect.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.inspect.dto.WarehouseCellAndSampleDto;
+import com.ruoyi.inspect.pojo.WarehouseCell;
+
+import java.util.List;
+
+/**
+* @author z1292
+* @description 閽堝琛ㄣ�恮arehouse_cell(璐ф灦鍗曞厓鏍�)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2024-04-06 12:12:12
+* @Entity com.yuanchu.mom.pojo.WarehouseCell
+*/
+public interface WarehouseCellMapper extends BaseMapper<WarehouseCell> {
+
+    List<WarehouseCellAndSampleDto> getWarehouse(Integer shelfId);
+
+}
+
+
+
+
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/WarehouseHistoryMapper.java b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/WarehouseHistoryMapper.java
new file mode 100644
index 0000000..6c647c7
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/WarehouseHistoryMapper.java
@@ -0,0 +1,25 @@
+package com.ruoyi.inspect.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.inspect.dto.HistoryDto;
+import com.ruoyi.inspect.pojo.WarehouseHistory;
+
+import java.util.List;
+
+/**
+* @author z1292
+* @description 閽堝琛ㄣ�恮arehouse_history(鍑哄叆搴撹褰�)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2024-04-06 12:12:12
+* @Entity com.yuanchu.mom.pojo.WarehouseHistory
+*/
+public interface WarehouseHistoryMapper extends BaseMapper<WarehouseHistory> {
+
+    String getUserNameById(Integer userId);
+
+    List<HistoryDto> getHistoryListBySampleId(Integer sampleId);
+
+}
+
+
+
+
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/WarehouseMapper.java b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/WarehouseMapper.java
new file mode 100644
index 0000000..b6d91f0
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/WarehouseMapper.java
@@ -0,0 +1,23 @@
+package com.ruoyi.inspect.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.inspect.dto.WarehouseDto;
+import com.ruoyi.inspect.pojo.Warehouse;
+
+import java.util.List;
+
+/**
+* @author z1292
+* @description 閽堝琛ㄣ�恮arehouse(浠撳簱)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2024-04-06 12:12:12
+* @Entity com.yuanchu.mom.pojo.Warehouse
+*/
+public interface WarehouseMapper extends BaseMapper<Warehouse> {
+
+    List<WarehouseDto> selectWarehouseList();
+
+}
+
+
+
+
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/WarehouseShelfMapper.java b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/WarehouseShelfMapper.java
new file mode 100644
index 0000000..964c2b1
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/WarehouseShelfMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.inspect.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.inspect.pojo.WarehouseShelf;
+
+/**
+* @author z1292
+* @description 閽堝琛ㄣ�恮arehouse_shelf(璐ф灦)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2024-04-06 12:12:12
+* @Entity com.yuanchu.mom.pojo.WarehouseShelf
+*/
+public interface WarehouseShelfMapper extends BaseMapper<WarehouseShelf> {
+
+}
+
+
+
+
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/pojo/Warehouse.java b/inspect-server/src/main/java/com/ruoyi/inspect/pojo/Warehouse.java
new file mode 100644
index 0000000..741b65c
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/pojo/Warehouse.java
@@ -0,0 +1,44 @@
+package com.ruoyi.inspect.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 浠撳簱
+ * @TableName warehouse
+ */
+@TableName(value ="warehouse")
+@Data
+public class Warehouse implements Serializable {
+    /**
+     *
+     */
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 浠撳簱鍚嶇О
+     */
+    private String name;
+
+    /**
+     *
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @TableField(fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updateTime;
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/pojo/WarehouseCell.java b/inspect-server/src/main/java/com/ruoyi/inspect/pojo/WarehouseCell.java
new file mode 100644
index 0000000..4f0a9b3
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/pojo/WarehouseCell.java
@@ -0,0 +1,61 @@
+package com.ruoyi.inspect.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 璐ф灦鍗曞厓鏍�
+ * @TableName warehouse_cell
+ */
+@TableName(value ="warehouse_cell")
+@Data
+public class WarehouseCell implements Serializable {
+    /**
+     *
+     */
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 琛�
+     */
+    @TableField("`row`")
+    private Integer row;
+
+    /**
+     * 鍒�
+     */
+    @TableField("`col`")
+    private Integer col;
+
+    /**
+     *
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @TableField(fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updateTime;
+
+    /**
+     * 鏄惁鏈夋晥 1锛氭湁鏁� 0锛氭棤鏁�
+     */
+    private Integer state;
+
+    /**
+     * 澶栨锛氳揣鏋秈d
+     */
+    private Integer shelfId;
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/pojo/WarehouseHistory.java b/inspect-server/src/main/java/com/ruoyi/inspect/pojo/WarehouseHistory.java
new file mode 100644
index 0000000..0164d63
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/pojo/WarehouseHistory.java
@@ -0,0 +1,56 @@
+package com.ruoyi.inspect.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 鍑哄叆搴撹褰�
+ * @TableName warehouse_history
+ */
+@TableName(value ="warehouse_history")
+@Data
+public class WarehouseHistory implements Serializable {
+    /**
+     *
+     */
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    private String warehouseCode;
+
+    /**
+     * 澶栭敭锛氭牱鍝乮d
+     */
+    private Integer insSampleId;
+
+    /**
+     * 鐘舵�侊細1锛氬叆搴� 2锛氬嚭搴�
+     */
+    private Integer state;
+
+    /**
+     *
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @TableField(fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updateTime;
+
+    /**
+     * 澶栭敭锛氬崟鍏冩牸id
+     */
+    private Integer cellId;
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/pojo/WarehouseShelf.java b/inspect-server/src/main/java/com/ruoyi/inspect/pojo/WarehouseShelf.java
new file mode 100644
index 0000000..670d95a
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/pojo/WarehouseShelf.java
@@ -0,0 +1,61 @@
+package com.ruoyi.inspect.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 璐ф灦
+ * @TableName warehouse_shelf
+ */
+@TableName(value ="warehouse_shelf")
+@Data
+public class WarehouseShelf implements Serializable {
+    /**
+     *
+     */
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 璐ф灦鍚嶇О
+     */
+    private String name;
+
+    /**
+     * 琛�
+     */
+    @TableField("`row`")
+    private Integer row;
+
+    /**
+     * 鍒�
+     */
+    @TableField("`col`")
+    private Integer col;
+
+    /**
+     *
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @TableField(fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updateTime;
+
+    /**
+     * 澶栭敭锛氫粨搴搃d
+     */
+    private Integer warehouseId;
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/WarehouseCellService.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/WarehouseCellService.java
new file mode 100644
index 0000000..75f77b9
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/WarehouseCellService.java
@@ -0,0 +1,13 @@
+package com.ruoyi.inspect.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.inspect.pojo.WarehouseCell;
+
+/**
+* @author z1292
+* @description 閽堝琛ㄣ�恮arehouse(浠撳簱)銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2024-04-06 12:13:57
+*/
+public interface WarehouseCellService extends IService<WarehouseCell> {
+
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/WarehouseService.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/WarehouseService.java
new file mode 100644
index 0000000..9b7db73
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/WarehouseService.java
@@ -0,0 +1,42 @@
+package com.ruoyi.inspect.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.inspect.dto.WarehouseCellAndSampleDto;
+import com.ruoyi.inspect.dto.WarehouseDto;
+import com.ruoyi.inspect.pojo.Warehouse;
+import com.ruoyi.inspect.pojo.WarehouseShelf;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+* @author z1292
+* @description 閽堝琛ㄣ�恮arehouse(浠撳簱)銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2024-04-06 12:13:57
+*/
+public interface WarehouseService extends IService<Warehouse> {
+
+    int addWarehouse(Warehouse warehouse);
+
+    List<WarehouseDto> selectWarehouse();
+
+    int addShelf(WarehouseShelf warehouseShelf);
+
+    int delWarehouse(Integer id);
+
+    int upWarehouse(Warehouse warehouse);
+
+    int delShelf(Integer id);
+
+    int upShelf(WarehouseShelf warehouseShelf);
+
+    List<WarehouseCellAndSampleDto> getWarehouse(Integer shelfId);
+
+    int inWarehouse(String trees, String sampleCode);
+
+    int outWarehouse(String sampleCode);
+
+    Map<String, Object> getSampleRecord(Integer id);
+
+    int searchSampleId(String sampleCode);
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/WarehouseCellServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/WarehouseCellServiceImpl.java
new file mode 100644
index 0000000..333aa18
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/WarehouseCellServiceImpl.java
@@ -0,0 +1,26 @@
+package com.ruoyi.inspect.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.inspect.mapper.WarehouseCellMapper;
+import com.ruoyi.inspect.pojo.WarehouseCell;
+import com.ruoyi.inspect.service.WarehouseCellService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+* @author Administrator
+* @description 閽堝琛ㄣ�恑ns_sample_user(鏍峰搧璐熻矗浜鸿褰�)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+* @createDate 2024-03-14 17:12:02
+*/
+@Service
+@AllArgsConstructor
+public class WarehouseCellServiceImpl extends ServiceImpl<WarehouseCellMapper, WarehouseCell>
+    implements WarehouseCellService {
+
+
+
+}
+
+
+
+
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/WarehouseServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/WarehouseServiceImpl.java
new file mode 100644
index 0000000..6e9c2e9
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/WarehouseServiceImpl.java
@@ -0,0 +1,189 @@
+package com.ruoyi.inspect.service.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.framework.exception.ErrorException;
+import com.ruoyi.inspect.dto.HistoryDto;
+import com.ruoyi.inspect.dto.WarehouseCellAndSampleDto;
+import com.ruoyi.inspect.dto.WarehouseDto;
+import com.ruoyi.inspect.mapper.*;
+import com.ruoyi.inspect.pojo.*;
+import com.ruoyi.inspect.service.WarehouseCellService;
+import com.ruoyi.inspect.service.WarehouseService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+* @author Administrator
+* @description 閽堝琛ㄣ�恑ns_sample_user(鏍峰搧璐熻矗浜鸿褰�)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+* @createDate 2024-03-14 17:12:02
+*/
+@Service
+@AllArgsConstructor
+public class WarehouseServiceImpl extends ServiceImpl<WarehouseMapper, Warehouse>
+    implements WarehouseService {
+
+    private WarehouseMapper warehouseMapper;
+
+    private WarehouseShelfMapper warehouseShelfMapper;
+
+    private WarehouseCellMapper warehouseCellMapper;
+
+    private WarehouseHistoryMapper warehouseHistoryMapper;
+
+    private WarehouseCellService warehouseCellService;
+
+    private InsSampleMapper insSampleMapper;
+
+    private InsProductMapper insProductMapper;
+
+    @Override
+    public int addWarehouse(Warehouse warehouse) {
+        Warehouse newWarehouse = new Warehouse();
+        warehouse.setName(warehouse.getName());
+        return warehouseMapper.insert(warehouse);
+    }
+
+    @Override
+    public List<WarehouseDto> selectWarehouse() {
+        return warehouseMapper.selectWarehouseList();
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int addShelf(WarehouseShelf warehouseShelf) {
+        warehouseShelfMapper.insert(warehouseShelf);
+        List<WarehouseCell> cells = new ArrayList<>();
+        for (int i = 1; i < warehouseShelf.getRow() + 1; i++) {
+            for (int a = 1; a < warehouseShelf.getCol() + 1; a++) {
+                WarehouseCell cell = new WarehouseCell();
+                cell.setRow(i);
+                cell.setCol(a);
+                cell.setState(1);
+                cell.setShelfId(warehouseShelf.getId());
+                cells.add(cell);
+            }
+        }
+        warehouseCellService.saveBatch(cells);
+        return 1;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int delWarehouse(Integer id) {
+        warehouseShelfMapper.delete(Wrappers.<WarehouseShelf>lambdaUpdate().eq(WarehouseShelf::getWarehouseId, id));
+        return warehouseMapper.deleteById(id);
+    }
+
+    @Override
+    public int upWarehouse(Warehouse warehouse) {
+        return warehouseMapper.updateById(warehouse);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int delShelf(Integer id) {
+        warehouseCellMapper.update(null ,Wrappers.<WarehouseCell>lambdaUpdate().eq(WarehouseCell::getShelfId, id).set(WarehouseCell::getState, 0));
+        return warehouseShelfMapper.deleteById(id);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int upShelf(WarehouseShelf warehouseShelf) {
+        warehouseCellMapper.update(null, Wrappers.<WarehouseCell>lambdaUpdate()
+                .eq(WarehouseCell::getShelfId, warehouseShelf.getWarehouseId())
+                .gt(WarehouseCell::getRow, warehouseShelf.getRow())
+                .gt(WarehouseCell::getCol, warehouseShelf.getCol())
+                .set(WarehouseCell::getState, 0));
+        warehouseShelfMapper.updateById(warehouseShelf);
+        return 0;
+    }
+
+    @Override
+    public List<WarehouseCellAndSampleDto> getWarehouse(Integer shelfId) {
+        return warehouseCellMapper.getWarehouse(shelfId);
+    }
+
+    @Override
+    public int inWarehouse(String trees, String sampleCode) {
+        String[] tree = trees.split("-");
+        if(tree.length < 4){
+            throw new ErrorException("搴撲綅閫夋嫨閿欒");
+        }
+        List<InsSample> samples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getSampleCode, sampleCode).select(InsSample::getId,InsSample::getCellId));
+        if(samples.size()!=1){
+            throw new ErrorException("鏍峰搧缂栧彿杈撳叆鏈夎");
+        }
+        if(samples.get(0).getCellId()!=null){
+            throw new ErrorException("鏍峰搧 " + sampleCode + " 鏈嚭搴�");
+        }
+        WarehouseCell cell = warehouseCellMapper.selectOne(Wrappers.<WarehouseCell>lambdaQuery().eq(WarehouseCell::getShelfId, tree[1]).eq(WarehouseCell::getRow, tree[2]).eq(WarehouseCell::getCol, tree[3]).eq(WarehouseCell::getState, 1).select(WarehouseCell::getId,WarehouseCell::getRow,WarehouseCell::getCol));
+        WarehouseShelf shelf = warehouseShelfMapper.selectById(tree[1]);
+        Warehouse warehouse = warehouseMapper.selectById(tree[0]);
+        WarehouseHistory history = new WarehouseHistory();
+        history.setCellId(cell.getId());
+        history.setState(1);
+        history.setInsSampleId(samples.get(0).getId());
+        history.setWarehouseCode(warehouse.getName()+"-"+shelf.getName()+"-"+cell.getRow()+"-"+cell.getCol());
+        samples.get(0).setCellId(cell.getId());
+        insSampleMapper.updateById(samples.get(0));
+        return warehouseHistoryMapper.insert(history);
+    }
+
+    @Override
+    public int outWarehouse(String sampleCode) {
+        List<InsSample> samples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getSampleCode, sampleCode).select(InsSample::getId,InsSample::getCellId));
+        if(samples.size()!=1){
+            throw new ErrorException("鏍峰搧缂栧彿杈撳叆鏈夎");
+        }
+        if(samples.get(0).getCellId()==null){
+            throw new ErrorException("鏍峰搧 " + sampleCode + " 鏈叆搴�");
+        }
+        WarehouseHistory history = new WarehouseHistory();
+        history.setState(2);
+        history.setInsSampleId(samples.get(0).getId());
+        history.setCellId(samples.get(0).getCellId());
+        history.setWarehouseCode(warehouseHistoryMapper.selectOne(Wrappers.<WarehouseHistory>lambdaQuery().eq(WarehouseHistory::getInsSampleId, samples.get(0).getId()).select(WarehouseHistory::getWarehouseCode).orderByDesc(WarehouseHistory::getId).last("limit 1")).getWarehouseCode());
+        insSampleMapper.update(null, Wrappers.<InsSample>lambdaUpdate().eq(InsSample::getId, samples.get(0).getId()).set(InsSample::getCellId, null));
+        return warehouseHistoryMapper.insert(history);
+    }
+
+    @Override
+    public Map<String, Object> getSampleRecord(Integer id) {
+        InsSample insSample = insSampleMapper.selectById(id);
+        List<HistoryDto> histories = warehouseHistoryMapper.getHistoryListBySampleId(id);
+        Map<String, Object> map = new HashMap<>();
+        Map<String, String> sampleHistory = new HashMap<>();
+        WarehouseHistory history = histories.get(histories.size() - 1);
+        if(history.getState() == 1){
+            sampleHistory.put("date", history.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+            sampleHistory.put("user", warehouseHistoryMapper.getUserNameById(history.getCreateUser()));
+            sampleHistory.put("code", history.getWarehouseCode());
+        }
+        map.put("sampleHistory", sampleHistory);
+        map.put("insSample", insSample);
+        map.put("histories", histories);
+        map.put("products", insProductMapper.getProductAndResult(id));
+        return map;
+    }
+
+    @Override
+    public int searchSampleId(String sampleCode) {
+        List<InsSample> samples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getSampleCode, sampleCode).select(InsSample::getId));
+        if(samples.size()!=1){
+            throw new ErrorException("鏍峰搧缂栧彿杈撳叆鏈夎");
+        }
+        return samples.get(0).getId();
+    }
+}
+
+
+
+
diff --git a/inspect-server/src/main/resources/mapper/WarehouseCellMapper.xml b/inspect-server/src/main/resources/mapper/WarehouseCellMapper.xml
new file mode 100644
index 0000000..2c673ee
--- /dev/null
+++ b/inspect-server/src/main/resources/mapper/WarehouseCellMapper.xml
@@ -0,0 +1,28 @@
+<?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.ruoyi.inspect.mapper.WarehouseCellMapper">
+
+    <select id="getWarehouse" resultMap="WarehouseCellAndHistoryDto">
+        select wc.id, wc.row, wc.col, i.id sampleId, i.sample, i.model, i.sample_code from warehouse_cell wc
+        left join ins_sample i on i.cell_id = wc.id
+        where wc.state = 1
+        and wc.shelf_id = #{shelfId}
+        order by wc.id
+    </select>
+
+    <resultMap id="WarehouseCellAndHistoryDto" type="com.ruoyi.inspect.dto.WarehouseCellAndSampleDto">
+        <id property="id" column="id" jdbcType="INTEGER"/>
+        <result property="row" column="row" jdbcType="INTEGER"/>
+        <result property="col" column="col" jdbcType="INTEGER"/>
+        <collection property="samples" resultMap="InsSample"/>
+    </resultMap>
+
+    <resultMap id="InsSample" type="com.ruoyi.inspect.pojo.InsSample">
+        <id property="id" column="sampleId"/>
+        <result property="sample" column="sample"/>
+        <result property="model" column="model"/>
+        <result property="sampleCode" column="sample_code"/>
+    </resultMap>
+</mapper>
diff --git a/inspect-server/src/main/resources/mapper/WarehouseHistoryMapper.xml b/inspect-server/src/main/resources/mapper/WarehouseHistoryMapper.xml
new file mode 100644
index 0000000..5a26e39
--- /dev/null
+++ b/inspect-server/src/main/resources/mapper/WarehouseHistoryMapper.xml
@@ -0,0 +1,16 @@
+<?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.ruoyi.inspect.mapper.WarehouseHistoryMapper">
+
+    <select id="getUserNameById" resultType="java.lang.String">
+        select name from user where id = #{userId}
+    </select>
+    <select id="getHistoryListBySampleId" resultType="com.ruoyi.inspect.dto.HistoryDto">
+        select wh.*,u.name createUserName from warehouse_history wh
+        left join user u on u.id = wh.create_user
+        where wh.ins_sample_id = #{sampleId}
+        order by wh.id desc
+    </select>
+</mapper>
diff --git a/inspect-server/src/main/resources/mapper/WarehouseMapper.xml b/inspect-server/src/main/resources/mapper/WarehouseMapper.xml
new file mode 100644
index 0000000..2bbc6e8
--- /dev/null
+++ b/inspect-server/src/main/resources/mapper/WarehouseMapper.xml
@@ -0,0 +1,24 @@
+<?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.ruoyi.inspect.mapper.WarehouseMapper">
+
+    <resultMap id="Warehouse" type="com.ruoyi.inspect.dto.WarehouseDto">
+        <id property="id" column="id" jdbcType="INTEGER"/>
+        <result property="name" column="name" jdbcType="VARCHAR"/>
+        <collection property="warehouseShelfList" resultMap="shelf"/>
+    </resultMap>
+
+    <resultMap id="shelf" type="com.ruoyi.inspect.pojo.WarehouseShelf">
+        <id property="id" column="sId" jdbcType="INTEGER"/>
+        <result property="name" column="sName" jdbcType="VARCHAR"/>
+        <result property="row" column="row" jdbcType="INTEGER"/>
+        <result property="col" column="col" jdbcType="INTEGER"/>
+    </resultMap>
+
+    <select id="selectWarehouseList" resultMap="Warehouse">
+        select w.id,w.name,ws.id sId,ws.name sName,ws.row,ws.col,ws.warehouse_id from warehouse w
+        left join warehouse_shelf ws on w.id = ws.warehouse_id
+    </select>
+</mapper>

--
Gitblit v1.9.3