From 18eb8ad4c66fd8515706e2a910ad50ac8f06ba22 Mon Sep 17 00:00:00 2001
From: cuilei <ray_tsu1@163.com>
Date: 星期四, 05 六月 2025 16:58:07 +0800
Subject: [PATCH] 工具管理-增加刃磨出库

---
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/OutboundOrderController.java    |   23 ++++
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IOutboundOrderService.java         |    5 +
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/OutboundDetailVo.java            |    3 
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/enums/SharpenStatus.java                   |   35 +++++++
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolLedgerDetailMapper.xml      |    1 
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/OutboundDetailMapper.xml        |    2 
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/OutboundOrderServiceImpl.java |   97 +++++++++++++++++--
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/OutboundOrderMapper.xml         |   39 +++++++
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/SelectOutboundToolVo.java        |   45 +++++++++
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/OutboundOrderMapper.java            |    8 +
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolSharpening.java                 |    4 
 11 files changed, 252 insertions(+), 10 deletions(-)

diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/OutboundOrderController.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/OutboundOrderController.java
index cc98da0..9d82e25 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/OutboundOrderController.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/OutboundOrderController.java
@@ -17,6 +17,7 @@
 import org.jeecg.modules.tms.entity.dto.OutBoundRequestDto;
 import org.jeecg.modules.tms.entity.dto.OutboundOrderAndDetailDto;
 import org.jeecg.modules.tms.entity.vo.OutboundDetailVo;
+import org.jeecg.modules.tms.entity.vo.SelectOutboundToolVo;
 import org.jeecg.modules.tms.enums.OutBillStatus;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -96,6 +97,28 @@
 		return Result.OK(pageList);
 	}
 
+	@ApiOperation(value="鍑哄簱鐢宠-鏌ヨ鍊熺敤鍑哄簱宸ュ叿鍒楄〃", notes="鍑哄簱鐢宠-鏌ヨ鍊熺敤鍑哄簱宸ュ叿鍒楄〃")
+	@GetMapping(value = "/selectBorrowOutboundToolPageList")
+	public Result<IPage<SelectOutboundToolVo>> queryBorrowOutboundToolPageList(@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+																			   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+																			   HttpServletRequest req) {
+		Map<String, String[]> parameterMap = req.getParameterMap();
+		Page<SelectOutboundToolVo> page = new Page<>(pageNo, pageSize);
+		IPage<SelectOutboundToolVo> pageList = outboundOrderService.queryBorrowOutboundToolPageList(page, parameterMap);
+		return Result.OK(pageList);
+	}
+
+	@ApiOperation(value="鍑哄簱鐢宠-鏌ヨ鍒冪(鍑哄簱宸ュ叿鍒楄〃", notes="鍑哄簱鐢宠-鏌ヨ鍒冪(鍑哄簱宸ュ叿鍒楄〃")
+	@GetMapping(value = "/selectSharpenOutboundToolPageList")
+	public Result<IPage<SelectOutboundToolVo>> querySharpenOutboundToolPageList(@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+																				@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+																				HttpServletRequest req) {
+		Map<String, String[]> parameterMap = req.getParameterMap();
+		Page<SelectOutboundToolVo> page = new Page<>(pageNo, pageSize);
+		IPage<SelectOutboundToolVo> pageList = outboundOrderService.querySharpenOutboundToolPageList(page, parameterMap);
+		return Result.OK(pageList);
+	}
+
 	@ApiOperation(value="tms_outbound_order-閫氳繃id鏌ヨ", notes="tms_outbound_order-閫氳繃id鏌ヨ")
 	@GetMapping(value = "/queryById")
 	public Result<?> queryById(@RequestParam("id") String id) {
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolSharpening.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolSharpening.java
index 35ef615..95378ab 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolSharpening.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolSharpening.java
@@ -52,6 +52,10 @@
     @ApiModelProperty(value = "鍒冪(缁撴灉鍙婂缓璁�")
     private String sharpeningResult;
 
+    /** 鍒冪(鐘舵��;1:寰呭垉纾紱2:鍒冪(涓紱3:宸插畬鎴� */
+    @ApiModelProperty(value = "鍒冪(鐘舵��;1:寰呭垉纾紱2:鍒冪(涓紱3:宸插畬鎴�")
+    private String sharpeningStatus;
+
     /** 璐d换浜� */
     @ApiModelProperty(value = "璐d换浜�")
     @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "id")
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/OutboundDetailVo.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/OutboundDetailVo.java
index 0d17e6a..182373b 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/OutboundDetailVo.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/OutboundDetailVo.java
@@ -93,4 +93,7 @@
     /**鍙拌处鏄庣粏琛ㄤ富閿甶d*/
     @ApiModelProperty(value = "鍙拌处鏄庣粏琛ㄤ富閿甶d,宸ュ叿閫夋嫨鏃跺幓閲嶇敤")
     private String toolLedgerDetailId;
+    /**宸ュ叿鍒冪(琛ㄤ富閿甶d*/
+    @ApiModelProperty(value = "宸ュ叿鍒冪(琛ㄤ富閿甶d,閫夋嫨鍒冪(宸ュ叿鏃跺幓閲嶇敤")
+    private String toolSharpeningId;
 }
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/SelectOutboundToolVo.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/SelectOutboundToolVo.java
new file mode 100644
index 0000000..af76daa
--- /dev/null
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/SelectOutboundToolVo.java
@@ -0,0 +1,45 @@
+package org.jeecg.modules.tms.entity.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+import java.math.BigDecimal;
+
+/***
+ * 宸ュ叿鍑哄簱鐢宠-閫夋嫨鍑哄簱宸ュ叿鍒楄〃灞曠ず瀵硅薄灏佽
+ */
+@Data
+public class SelectOutboundToolVo {
+    /**涓婚敭id*/
+    @ApiModelProperty(value = "涓婚敭id")
+    private String id;
+    /**鍙拌处鏄庣粏id*/
+    @ApiModelProperty(value = "鍙拌处鏄庣粏id")
+    private String toolLedgerDetailId;
+    /**宸ュ叿缂栫爜(鍏宠仈瀛楁)*/
+    @ApiModelProperty(value = "宸ュ叿缂栫爜(鍏宠仈瀛楁,瀛榯ms_base_tools琛ㄤ富閿甶d)")
+    private String toolCode;
+    /**宸ュ叿缂栫爜*/
+    @ApiModelProperty(value = "宸ュ叿缂栫爜(tms_base_tools琛╰ool_code瀛楁)")
+    private String toolNum;
+    /**宸ュ叿缂栧彿*/
+    @ApiModelProperty(value = "宸ュ叿缂栧彿")
+    private String toolId;
+    /**宸ュ叿涓枃鍚嶇О*/
+    @ApiModelProperty(value = "宸ュ叿涓枃鍚嶇О")
+    private String toolName;
+    /**鏁伴噺*/
+    @ApiModelProperty(value = "鏁伴噺")
+    private BigDecimal quantity;
+    /**搴撳尯/搴撳彿*/
+    @ApiModelProperty(value = "搴撳尯/搴撳彿")
+    private String warehouseId;
+    /**浠撳簱鍚嶇О*/
+    @ApiModelProperty(value = "浠撳簱鍚嶇О")
+    private String warehouseName;
+    /**搴撲綅鍙�*/
+    @ApiModelProperty(value = "搴撲綅鍙�")
+    private String positionCode;
+}
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/enums/SharpenStatus.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/enums/SharpenStatus.java
new file mode 100644
index 0000000..c387997
--- /dev/null
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/enums/SharpenStatus.java
@@ -0,0 +1,35 @@
+package org.jeecg.modules.tms.enums;
+
+import lombok.Getter;
+
+/**
+ * 鍒冪(鐘舵�佹灇涓�
+ */
+@Getter
+public enum SharpenStatus {
+    PENDING("1", "寰呭垉纾�"),
+    IN_PROGRESS("2", "鍒冪(涓�"),
+    COMPLETED("3", "宸插畬鎴�");
+
+    private final String value;
+    private final String description;
+
+    SharpenStatus(String value, String description) {
+        this.value = value;
+        this.description = description;
+    }
+
+    /**
+     * 鏍规嵁鐘舵�佸�艰幏鍙栨灇涓惧疄渚�
+     * @param status 鐘舵�佸��
+     * @return 鏋氫妇瀹炰緥鎴杗ull
+     */
+    public static SharpenStatus fromStatus(String status) {
+        for (SharpenStatus value : values()) {
+            if (value.getValue().equals(status)) {
+                return value;
+            }
+        }
+        return null;
+    }
+}
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/OutboundOrderMapper.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/OutboundOrderMapper.java
index caa1fd5..97408b0 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/OutboundOrderMapper.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/OutboundOrderMapper.java
@@ -1,12 +1,14 @@
 package org.jeecg.modules.tms.mapper;
 
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.Param;
 import org.jeecg.modules.tms.entity.OutboundOrder;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.tms.entity.vo.SelectOutboundToolVo;
 
 /**
  * @Description: tms_outbound_order
@@ -18,4 +20,10 @@
 
     IPage<OutboundOrder> queryPageList(Page<OutboundOrder> page,
                                        @Param(Constants.WRAPPER) Wrapper<OutboundOrder> queryWrapper);
+
+    IPage<SelectOutboundToolVo> querySharpenOutboundToolPageList(Page<SelectOutboundToolVo> page,
+                                                                 @Param(Constants.WRAPPER) Wrapper<SelectOutboundToolVo> queryWrapper);
+
+    IPage<SelectOutboundToolVo> queryBorrowOutboundToolPageList(Page<SelectOutboundToolVo> page,
+                                                                @Param(Constants.WRAPPER) Wrapper<SelectOutboundToolVo> queryWrapper);
 }
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/OutboundDetailMapper.xml b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/OutboundDetailMapper.xml
index 3f57e85..5fbfba6 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/OutboundDetailMapper.xml
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/OutboundDetailMapper.xml
@@ -37,6 +37,7 @@
 			t3.supplier_id supplierId,
 			t11.id toolLedgerDetailId,
 			t11.quantity,
+			t13.id toolSharpeningId,
 			ISNULL(t12.warehouse_id, '') + '/' + ISNULL(t12.warehouse_name, '') warehouseName,
 			<choose>
 				<when test="ew.paramNameValuePairs.paramaTableName == '1'">
@@ -72,6 +73,7 @@
 		LEFT JOIN tms_base_tools t2 on t1.tool_code = t2.id
 		LEFT JOIN tms_tools_config_property t3 on t3.tool_code = t2.id
 		LEFT JOIN tms_tool_ledger_detail t11 on t1.tool_code = t11.tool_code and t1.tool_id = t11.tool_id
+		LEFT JOIN tms_tool_sharpening t13 on t1.tool_code = t13.tool_code and t1.tool_id = t13.tool_id
 		LEFT JOIN tms_warehouse t12 on t1.storage_location = t12.id
 		<choose>
 			<when test="ew.paramNameValuePairs.paramaTableName == '1'">
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/OutboundOrderMapper.xml b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/OutboundOrderMapper.xml
index b0ce510..27580e2 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/OutboundOrderMapper.xml
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/OutboundOrderMapper.xml
@@ -22,4 +22,43 @@
         FROM tms_outbound_order t
         ${ew.customSqlSegment}
     </select>
+    <select id="querySharpenOutboundToolPageList"
+            resultType="org.jeecg.modules.tms.entity.vo.SelectOutboundToolVo">
+        SELECT
+            t1.id,
+            t2.id toolLedgerDetailId,
+            t1.tool_code toolCode,
+            t3.tool_code toolNum,
+            t1.tool_id toolId,
+            t3.chinese_name toolName,
+            t3.tool_model toolModel,
+            t2.quantity,
+            t2.warehouse_id warehouseId,
+            ISNULL(t4.warehouse_id, '') + '/' + ISNULL(t4.warehouse_name, '') warehouseName,
+            t2.position_code positionCode
+        FROM tms_tool_sharpening t1
+        INNER JOIN tms_tool_ledger_detail t2 on t1.tool_id = t2.tool_id
+        LEFT JOIN tms_base_tools t3 on t1.tool_code = t3.id
+        LEFT JOIN tms_warehouse t4 on t2.warehouse_id = t4.id
+        ${ew.customSqlSegment}
+    </select>
+    <select id="queryBorrowOutboundToolPageList"
+            resultType="org.jeecg.modules.tms.entity.vo.SelectOutboundToolVo">
+        SELECT
+            t.id,
+            t.id toolLedgerDetailId,
+            t.tool_code toolCode,
+            p.tool_code toolNum,
+            t.tool_id toolId,
+            p.chinese_name toolName,
+            p.tool_model toolModel,
+            t.quantity,
+            t.warehouse_id warehouseId,
+            ISNULL(q.warehouse_id, '') + '/' + ISNULL(q.warehouse_name, '') warehouseName,
+            t.position_code positionCode
+        FROM tms_tool_ledger_detail t
+        LEFT JOIN tms_base_tools p on t.tool_code = p.id
+        LEFT JOIN tms_warehouse q on t.warehouse_id = q.id
+        ${ew.customSqlSegment}
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolLedgerDetailMapper.xml b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolLedgerDetailMapper.xml
index cd683ee..9d8a3db 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolLedgerDetailMapper.xml
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolLedgerDetailMapper.xml
@@ -5,6 +5,7 @@
     <select id="queryPageList" resultType="org.jeecg.modules.tms.entity.ToolLedgerDetail">
         SELECT
             t.id,
+            t.id toolLedgerDetailId,
             t.tool_code toolCode,
             p.tool_code toolNum,
             t.tool_id toolId,
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IOutboundOrderService.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IOutboundOrderService.java
index ba2b05b..fd6e430 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IOutboundOrderService.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IOutboundOrderService.java
@@ -9,6 +9,7 @@
 import org.jeecg.modules.tms.entity.dto.OutBoundOrderFlowDto;
 import org.jeecg.modules.tms.entity.dto.OutBoundRequestDto;
 import org.jeecg.modules.tms.entity.dto.OutboundOrderAndDetailDto;
+import org.jeecg.modules.tms.entity.vo.SelectOutboundToolVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import java.io.Serializable;
 import java.util.Collection;
@@ -51,4 +52,8 @@
     void outBoundByApply(List<OutBoundRequestDto> outBoundRequestList);
 
 	void outBoundByAdd(List<OutBoundAddDto> boundAddList);
+
+	IPage<SelectOutboundToolVo> querySharpenOutboundToolPageList(Page<SelectOutboundToolVo> page, Map<String, String[]> parameterMap);
+
+	IPage<SelectOutboundToolVo> queryBorrowOutboundToolPageList(Page<SelectOutboundToolVo> page, Map<String, String[]> parameterMap);
 }
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/OutboundOrderServiceImpl.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/OutboundOrderServiceImpl.java
index 221f064..936e09c 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/OutboundOrderServiceImpl.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/OutboundOrderServiceImpl.java
@@ -30,10 +30,8 @@
 import org.jeecg.modules.tms.entity.dto.OutBoundOrderFlowDto;
 import org.jeecg.modules.tms.entity.dto.OutBoundRequestDto;
 import org.jeecg.modules.tms.entity.dto.OutboundOrderAndDetailDto;
-import org.jeecg.modules.tms.enums.OutBillStatus;
-import org.jeecg.modules.tms.enums.OutBoundStatusEnum;
-import org.jeecg.modules.tms.enums.OutStorehouseType;
-import org.jeecg.modules.tms.enums.ToolCirculationStatus;
+import org.jeecg.modules.tms.entity.vo.SelectOutboundToolVo;
+import org.jeecg.modules.tms.enums.*;
 import org.jeecg.modules.tms.mapper.OutboundDetailMapper;
 import org.jeecg.modules.tms.convert.OutboundOrderConvert;
 import org.jeecg.modules.tms.mapper.OutboundOrderMapper;
@@ -67,6 +65,8 @@
 	private IOutStoreDetailService outStoreDetailService;
 	@Autowired
 	private IBaseToolsService baseToolsService;
+	@Autowired
+	private IToolsSharpeningService toolsSharpeningService;
 	@Autowired
 	private ISysBusinessCodeRuleService businessCodeRuleService;
 	@Autowired
@@ -206,13 +206,13 @@
 			String toolCode = detail.getToolCode();
 			List<ToolLedgerDetail> ledgerDetailList = toolLedgerDetailList.stream().filter(item -> Objects.equals(item.getToolCode(), toolCode)
 					&& Objects.equals(item.getToolId(), detail.getToolId())).collect(Collectors.toList());
+			BaseTools tools = baseToolsService.getById(toolCode);
 			if (CollectionUtil.isEmpty(ledgerDetailList)) {
-				BaseTools tools = baseToolsService.getById(toolCode);
 				throw new JeecgBootException("缂栫爜涓恒��" + tools.getToolCode() + "銆戠殑宸ュ叿锛屽簱瀛樹笉瓒筹紒");
 			} else {
 				ToolLedgerDetail toolLedgerDetail = ledgerDetailList.get(0);
 				if (toolLedgerDetail.getQuantity().compareTo(detail.getOutboundQuantity()) < 0) {
-					throw new JeecgBootException("缂栫爜涓恒��" + toolLedgerDetail.getToolCode() + "銆戠殑宸ュ叿锛屽簱瀛樹笉瓒筹紒");
+					throw new JeecgBootException("缂栫爜涓恒��" + tools.getToolCode() + "銆戠殑宸ュ叿锛屽簱瀛樹笉瓒筹紒");
 				} else {
 					//鎵e噺鍙拌处鏄庣粏涓殑搴撳瓨锛屾墽琛岄攣搴�
 					if (StrUtil.isBlank(detail.getToolId())) {
@@ -386,22 +386,32 @@
 		Map<String, ToolLedger> toolLedgerMap = toolLedgerService.list(new LambdaQueryWrapper<ToolLedger>().in(ToolLedger::getToolId, toolIdList)).stream()
 				.collect(Collectors.toMap(ToolLedger::getToolId, item -> item, (k1, k2) -> k1));
 
-		LambdaQueryWrapper<ToolLedgerDetail> queryWrapper = new LambdaQueryWrapper<>();
+		LambdaQueryWrapper<ToolLedgerDetail> ledgerDetailQueryWrapper = new LambdaQueryWrapper<>();
+		LambdaQueryWrapper<ToolSharpening> toolSharpenQueryWrapper = new LambdaQueryWrapper<>();
 		for (int i = 0; i < outboundDetailList.size(); i++) {
 			if (i > 0) {
-				queryWrapper.or();
+				ledgerDetailQueryWrapper.or();
+				toolSharpenQueryWrapper.or();
 			}
 			OutboundDetail detail = outboundDetailList.get(i);
-			queryWrapper.or(wrapper ->
+			ledgerDetailQueryWrapper.or(wrapper ->
 					wrapper.eq(ToolLedgerDetail::getToolCode, detail.getToolCode())
 							.eq(ToolLedgerDetail::getToolId, detail.getToolId()) //濡傛灉涓嶇鍒版妸锛岃瀛楁涓虹┖
 			);
+			toolSharpenQueryWrapper.or(wrapper ->
+					wrapper.eq(ToolSharpening::getToolCode, detail.getToolCode())
+							.eq(ToolSharpening::getToolId, detail.getToolId())
+							.eq(ToolSharpening::getSharpeningStatus, SharpenStatus.PENDING.getValue())
+			);
 		}
-		List<ToolLedgerDetail> toolLedgerDetailList = toolLedgerDetailService.list(queryWrapper);
+		List<ToolLedgerDetail> toolLedgerDetailList = toolLedgerDetailService.list(ledgerDetailQueryWrapper);
+		List<ToolSharpening> toolSharpeningList = toolsSharpeningService.list(toolSharpenQueryWrapper);
+
 		List<ToolLedger> toolLedgerUpdateList = CollectionUtil.newArrayList();
 		List<ToolLedgerDetail> toolLedgerDetailUpdateList = CollectionUtil.newArrayList();
 		List<OutStoreDetail> outStoreAddList = CollectionUtil.newArrayList();
 		List<OutboundDetail> outboundDetailUpdateList = CollectionUtil.newArrayList();
+		List<ToolSharpening> toolSharpeningUpdateList = CollectionUtil.newArrayList();
 
 		for (OutboundDetail detail : outboundDetailList) {
 			//鏇存柊搴撳瓨鍙拌处
@@ -448,6 +458,15 @@
 						toolLedgerDetailUpdateList.add(item);
 					});
 
+			if (outStorehouseType == OutStorehouseType.GRINDING_OUTBOUND) {
+				//鏇存柊鍒冪(鍗曠姸鎬�
+				toolSharpeningList.stream().filter(item -> item.getToolCode().equals(detail.getToolCode()) && item.getToolId().equals(detail.getToolId()))
+						.findFirst().ifPresent(item -> {
+							item.setSharpeningStatus(SharpenStatus.IN_PROGRESS.getValue());
+							toolSharpeningUpdateList.add(item);
+						});
+			}
+
 			//璁板綍鍑哄簱娴佹按
 			OutStoreDetail outStoreDetail = new OutStoreDetail()
 					.setToolCode(detail.getToolCode())
@@ -473,6 +492,7 @@
 		toolLedgerDetailService.updateBatchById(toolLedgerDetailUpdateList);
 		outStoreDetailService.saveBatch(outStoreAddList);
 		outboundDetailService.updateBatchById(outboundDetailUpdateList);
+		toolsSharpeningService.updateBatchById(toolSharpeningUpdateList);
 
 		//鏇存柊鐢宠鍗�
 		boolean allMatch = outboundDetailService.list(new LambdaQueryWrapper<OutboundDetail>()
@@ -534,7 +554,10 @@
 				.toMap(OutBoundAddDto::getToolLedgerDetailId, item -> item, (k1, k2) -> k1));
 		Map<String, ToolLedgerDetail> toolLedgerDetailMap = toolLedgerDetailService.listByIds(boundAddDtoMap.keySet()).stream()
 				.collect(Collectors.toMap(ToolLedgerDetail::getId, item -> item, (k1, k2) -> k1));
+		List<ToolSharpening> toolSharpeningList = toolsSharpeningService.list(new LambdaQueryWrapper<ToolSharpening>()
+				.in(ToolSharpening::getToolCode, toolBoundQuantityMap.keySet()).eq(ToolSharpening::getSharpeningStatus, SharpenStatus.PENDING.getValue()));
 		List<ToolLedgerDetail> toolLedgerDetailUpdateList = CollectionUtil.newArrayList();
+		List<ToolSharpening> toolSharpeningUpdateList = CollectionUtil.newArrayList();
 		for (String toolLedgerDetailId : boundAddDtoMap.keySet()) {
 			OutBoundAddDto outBoundAddDto = boundAddDtoMap.get(toolLedgerDetailId);
 			BigDecimal outboundQuantity = outBoundAddDto.getOutboundQuantity();
@@ -563,6 +586,12 @@
 							break;
 						case GRINDING_OUTBOUND:
 							toolLedgerDetail.setStatus(ToolCirculationStatus.GRINDING.getValue());
+							//鍚屾椂鏇存柊鍒冪(鍗曠姸鎬�
+							toolSharpeningList.stream().filter(item -> item.getToolCode().equals(outBoundAddDto.getToolCode())
+									&& item.getToolId().equals(outBoundAddDto.getToolId())).findFirst().ifPresent(item -> {
+								item.setSharpeningStatus(SharpenStatus.IN_PROGRESS.getValue());
+								toolSharpeningUpdateList.add(item);
+							});
 							break;
 						default:
 							throw new JeecgBootException("鏈煡鐨勫嚭搴撶被鍨嬶紒");
@@ -573,6 +602,7 @@
 		}
 		toolLedgerService.updateBatchById(toolLedgerUpdateList);
 		toolLedgerDetailService.updateBatchById(toolLedgerDetailUpdateList);
+		toolsSharpeningService.updateBatchById(toolSharpeningUpdateList);
 		//璁板綍鍑哄簱娴佹按
 		List<OutStoreDetail> outStoreAddList = CollectionUtil.newArrayList();
 		for (OutBoundAddDto outBoundAddDto : boundAddList) {
@@ -588,6 +618,53 @@
 		outStoreDetailService.saveBatch(outStoreAddList);
 	}
 
+	@Override
+	public IPage<SelectOutboundToolVo> querySharpenOutboundToolPageList(Page<SelectOutboundToolVo> page, Map<String, String[]> parameterMap) {
+		QueryWrapper<SelectOutboundToolVo> queryWrapper = Wrappers.query();
+		String[] toolCodes = parameterMap.get("toolCode");
+		if (toolCodes != null && toolCodes.length > 0) {
+			queryWrapper.like("t3.tool_code", toolCodes[0]);
+		}
+		String[] classifyIds = parameterMap.get("classifyId");
+		if (classifyIds != null && classifyIds.length > 0) {
+			queryWrapper.eq("t3.classify_id", classifyIds[0]);
+		}
+		String[] excludeIds = parameterMap.get("excludeIds");
+		if (excludeIds != null && excludeIds.length > 0) {
+			String[] idArray = excludeIds[0].split(",");
+			queryWrapper.notIn("t1.id", idArray);
+		}
+		queryWrapper.eq("t1.sharpening_status", SharpenStatus.PENDING.getValue());
+		return this.baseMapper.querySharpenOutboundToolPageList(page, queryWrapper);
+	}
+
+	@Override
+	public IPage<SelectOutboundToolVo> queryBorrowOutboundToolPageList(Page<SelectOutboundToolVo> page, Map<String, String[]> parameterMap) {
+		QueryWrapper<SelectOutboundToolVo> queryWrapper = Wrappers.query();
+		String[] toolCodes = parameterMap.get("toolCode");
+		if (toolCodes != null && toolCodes.length > 0) {
+			queryWrapper.like("p.tool_code", toolCodes[0]);
+		}
+		String[] statuses = parameterMap.get("status");
+		if (statuses != null && statuses.length > 0) {
+			queryWrapper.eq("t.status", statuses[0]);
+		}
+		String[] quantities = parameterMap.get("quantity");
+		if (quantities != null && quantities.length > 0) {
+			queryWrapper.gt("t.quantity", quantities[0]);
+		}
+		String[] classifyIds = parameterMap.get("classifyId");
+		if (classifyIds != null && classifyIds.length > 0) {
+			queryWrapper.eq("p.classify_id", classifyIds[0]);
+		}
+		String[] excludeIds = parameterMap.get("excludeIds");
+		if (excludeIds != null && excludeIds.length > 0) {
+			String[] idArray = excludeIds[0].split(",");
+			queryWrapper.notIn("t.id", idArray);
+		}
+		return this.baseMapper.queryBorrowOutboundToolPageList(page, queryWrapper);
+	}
+
 
 	private boolean fromOneApply(List<OutBoundRequestDto> outBoundRequestList) {
 		long count = outBoundRequestList.stream().map(OutBoundRequestDto::getOutBoundOrderId).distinct().count();

--
Gitblit v1.9.3