From c17e36e49be715a3305c79625187631184278c19 Mon Sep 17 00:00:00 2001
From: cuijian <cuijian@xalxzn.com>
Date: 星期四, 05 六月 2025 09:52:16 +0800
Subject: [PATCH] 申请单入库

---
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaCommonToolVo.java               |    3 
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolLedgerDetailMapper.xml         |  152 +++++++++++
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/InStoreDetailMapper.xml            |    8 
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/InboundDetailVo.java                |    6 
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolLedgerDetail.java                  |    4 
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolLedgerDetailController.java    |   38 ++
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/InStoreDetailServiceImpl.java    |   10 
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/BaseToolsController.java           |   51 +++
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolLedgerDetailService.java         |    4 
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolLedgerDetailServiceImpl.java |   52 ++++
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/InboundDetail.java                     |    7 
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolLedgerDetailMapper.java            |    6 
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/BaseToolsMapper.xml                |    1 
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/InboundOrderController.java        |   26 +
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IInboundOrderService.java             |    2 
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/InboundDetailMapper.xml            |    2 
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/InboundOrderServiceImpl.java     |  352 ++++++++++++++++++++++++++
 17 files changed, 715 insertions(+), 9 deletions(-)

diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/BaseToolsController.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/BaseToolsController.java
index 6690650..38db085 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/BaseToolsController.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/BaseToolsController.java
@@ -82,6 +82,57 @@
 		return Result.OK(pageList);
 	}
 
+
+	 /**
+	  * 鏍规嵁鍒嗙被閫夋嫨宸ュ叿
+	  *
+	  * @param baseTools
+	  * @param pageNo
+	  * @param pageSize
+	  * @param req
+	  * @return
+	  */
+	 @ApiOperation(value="鏍规嵁鍒嗙被閫夋嫨宸ュ叿", notes="鏍规嵁鍒嗙被閫夋嫨宸ュ叿")
+	 @GetMapping(value = "/queryToolByClassifyId")
+	 public Result<?> queryToolByClassifyId(BaseTools baseTools,
+													 @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+													 @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+													 HttpServletRequest req) {
+		 Map<String, String[]> parameterMap = req.getParameterMap();
+		 String[] classifyIds = parameterMap.get("classifyId");
+		 if (classifyIds != null && classifyIds.length > 0) {
+			 if("1".equals(classifyIds[0])){
+				 Page<ParaCommonToolVo> page = new Page<ParaCommonToolVo>(pageNo, pageSize);
+				 IPage<ParaCommonToolVo> pageList = baseToolsService.paraCommonToolList(page, parameterMap);
+				 return Result.OK(pageList);
+			 }else if("2".equals(classifyIds[0])){
+				 Page<ParaHolesToolsVo> page = new Page<ParaHolesToolsVo>(pageNo, pageSize);
+				 IPage<ParaHolesToolsVo> pageList = baseToolsService.paraHolesToolsList(page, parameterMap);
+				 return Result.OK(pageList);
+			 }else if("3".equals(classifyIds[0])){
+				 Page<ParaThreadingToolVo> page = new Page<ParaThreadingToolVo>(pageNo, pageSize);
+				 IPage<ParaThreadingToolVo> pageList = baseToolsService.paraThreadingToolList(page, parameterMap);
+				 return Result.OK(pageList);
+			 }else if("4".equals(classifyIds[0])){
+				 Page<ParaMillToolVo> page = new Page<ParaMillToolVo>(pageNo, pageSize);
+				 IPage<ParaMillToolVo> pageList = baseToolsService.paraMillToolList(page, parameterMap);
+				 return Result.OK(pageList);
+			 }else if("5".equals(classifyIds[0])){
+				 Page<ParaTurningToolsVo> page = new Page<ParaTurningToolsVo>(pageNo, pageSize);
+				 IPage<ParaTurningToolsVo> pageList = baseToolsService.paraTurningToolsList(page, parameterMap);
+				 return Result.OK(pageList);
+			 }else if("6".equals(classifyIds[0])){
+				 Page<ParaBladeVo> page = new Page<ParaBladeVo>(pageNo, pageSize);
+				 IPage<ParaBladeVo> pageList = baseToolsService.paraBladeList(page, parameterMap);
+				 return Result.OK(pageList);
+			 }else {
+				 return Result.error("璇烽�夋嫨宸ュ叿鍒嗙被");
+			 }
+		 }else {
+			 return Result.error("璇烽�夋嫨宸ュ叿鍒嗙被");
+		 }
+	 }
+
 	 /**
 	  * 鍒嗛〉鍒楄〃鏌ヨ
 	  *
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/InboundOrderController.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/InboundOrderController.java
index 9b4a4bb..71e4a00 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/InboundOrderController.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/InboundOrderController.java
@@ -1,5 +1,6 @@
 package org.jeecg.modules.tms.controller;
 
+import java.math.BigDecimal;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
@@ -12,8 +13,10 @@
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.modules.system.service.ISysBusinessCodeRuleService;
 import org.jeecg.modules.tms.entity.InboundDetail;
@@ -101,6 +104,8 @@
 		InboundOrder inboundOrder = jSONObject.toJavaObject(InboundOrder.class);
 		inboundOrder.setOrderStatus("1");
 		inboundOrder.setInStatus("1");
+		LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+		inboundOrder.setHandler(user.getUsername());
 		inboundOrder.setInboundNum(businessCodeRuleService.generateBusinessCodeSeq("InBoundOrder"));
 		inboundOrderService.save(inboundOrder);
 		// 淇濆瓨鍏ュ簱鐢宠鍗曟槑缁嗘暟鎹�
@@ -108,7 +113,11 @@
 		List<InboundDetail> list = jsonArray.toJavaList(InboundDetail.class);
 		for (int i = 0; i < list.size(); i++) {
 			InboundDetail temp = list.get(i);
+			temp.setId(null);
 			temp.setInStorehouseId(inboundOrder.getId());
+			temp.setInActualCount(BigDecimal.ZERO);
+			temp.setInStatus("1");
+			temp.setToolId(temp.getOnlyCode());
 			temp.setToolCode(temp.getToolCodeId());
 		}
 		inboundDetailService.saveBatch(list);
@@ -135,7 +144,11 @@
 		List<InboundDetail> list = jsonArray.toJavaList(InboundDetail.class);
 		for (int i = 0; i < list.size(); i++) {
 			InboundDetail temp = list.get(i);
+			temp.setId(null);
 			temp.setInStorehouseId(inboundOrder.getId());
+			temp.setInStatus("1");
+			temp.setInActualCount(BigDecimal.ZERO);
+			temp.setToolId(temp.getOnlyCode());
 			temp.setToolCode(temp.getToolCodeId());
 		}
 		inboundDetailService.saveOrUpdateBatch(list);
@@ -236,11 +249,20 @@
 	 }
 
 
-	 @AutoLog(value = "鏂板鍏ュ簱")
-	 @ApiOperation(value = "鏂板鍏ュ簱鎿嶄綔", notes = "鏂板鍏ュ簱鎿嶄綔")
+	 @AutoLog(value = "宸ュ叿鍏ュ簱-鏂板鍏ュ簱")
+	 @ApiOperation(value = "宸ュ叿鍏ュ簱-鏂板鍏ュ簱", notes = "宸ュ叿鍏ュ簱-鏂板鍏ュ簱")
 	 @PostMapping("/addInStorage")
 	 public Result<?> addInStorage(@RequestBody JSONObject jSONObject) {
 		inboundOrderService.addInStorage(jSONObject);
 		return Result.OK("鎿嶄綔鎴愬姛");
 	 }
+
+	 @AutoLog(value = "宸ュ叿鍏ュ簱-鐢宠鍗曞叆搴�")
+	 @ApiOperation(value = "宸ュ叿鍏ュ簱-鐢宠鍗曞叆搴�", notes = "宸ュ叿鍏ュ簱-鐢宠鍗曞叆搴�")
+	 @PostMapping("/addApplyInStorage")
+	 public Result<?> addApplyInStorage(@RequestBody JSONObject jSONObject) {
+		 inboundOrderService.addApplyInStorage(jSONObject);
+		 return Result.OK("鎿嶄綔鎴愬姛");
+	 }
+
 }
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolLedgerDetailController.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolLedgerDetailController.java
index 8e3f04f..d7b84a1 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolLedgerDetailController.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolLedgerDetailController.java
@@ -175,4 +175,42 @@
         return super.importExcel(request, response, ToolLedgerDetail.class);
     }
 
+	 /**
+	  * 宸ュ叿鍏ュ簱-閫夋嫨鍊熷嚭宸ュ叿
+	  *
+	  * @param toolLedgerDetail
+	  * @param pageNo
+	  * @param pageSize
+	  * @param query
+	  * @return
+	  */
+	 @ApiOperation(value="宸ュ叿鍏ュ簱-閫夋嫨鍊熷嚭宸ュ叿", notes="宸ュ叿鍏ュ簱-閫夋嫨鍊熷嚭宸ュ叿")
+	 @GetMapping(value = "/queryLendTool")
+	 public Result<?> queryLendTool(ToolLedgerDetail toolLedgerDetail,
+														  @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+														  @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+										@RequestParam Map<String, String> query) {
+		 IPage<Map<String, Object>> pageList = toolLedgerDetailService.queryLendTool(pageNo, pageSize, query);
+		 return Result.OK(pageList);
+	 }
+
+	 /**
+	  * 宸ュ叿鍏ュ簱-閫夋嫨鍒冪(宸ュ叿
+	  *
+	  * @param toolLedgerDetail
+	  * @param pageNo
+	  * @param pageSize
+	  * @param query
+	  * @return
+	  */
+	 @ApiOperation(value="宸ュ叿鍏ュ簱-閫夋嫨鍒冪(宸ュ叿", notes="宸ュ叿鍏ュ簱-閫夋嫨鍒冪(宸ュ叿")
+	 @GetMapping(value = "/querySharpenTool")
+	 public Result<?> querySharpenTool(ToolLedgerDetail toolLedgerDetail,
+										@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+										@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+										@RequestParam Map<String, String> query) {
+		 IPage<Map<String, Object>> pageList = toolLedgerDetailService.querySharpenTool(pageNo, pageSize, query);
+		 return Result.OK(pageList);
+	 }
+
 }
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/InboundDetail.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/InboundDetail.java
index 9569464..9bd9f7e 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/InboundDetail.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/InboundDetail.java
@@ -58,6 +58,10 @@
     @Excel(name = "瀹為檯鍏ュ簱鏁伴噺", width = 15)
     @ApiModelProperty(value = "瀹為檯鍏ュ簱鏁伴噺")
     private BigDecimal inActualCount;
+    /**鍏ュ簱鐘舵��*/
+    @Excel(name = "鍏ュ簱鐘舵��", width = 15)
+    @ApiModelProperty(value = "鍏ュ簱鐘舵��")
+    private String inStatus;
 	/**澶囨敞*/
 	@Excel(name = "澶囨敞", width = 15)
     @ApiModelProperty(value = "澶囨敞")
@@ -94,4 +98,7 @@
 
     @TableField(exist = false)
     private String toolCodeId;
+
+    @TableField(exist = false)
+    private String onlyCode;
 }
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolLedgerDetail.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolLedgerDetail.java
index 836371a..1406c3c 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolLedgerDetail.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolLedgerDetail.java
@@ -90,4 +90,8 @@
     @DateTimeFormat(pattern="yyyy-MM-dd")
     @ApiModelProperty(value = "鏇存柊鏃堕棿")
     private Date updateTime;
+
+    @TableField(exist = false)
+    @ApiModelProperty(value = "鍨嬪彿/鍥惧彿")
+    private String toolModel;
 }
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/InboundDetailVo.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/InboundDetailVo.java
index 50c1208..39d983f 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/InboundDetailVo.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/InboundDetailVo.java
@@ -40,4 +40,10 @@
     @ApiModelProperty(value = "鍏ュ簱鏁伴噺")
     private BigDecimal inStorageQuantity;
 
+    @ApiModelProperty(value = "鍞竴缂栫爜")
+    private String onlyCode;
+
+    @ApiModelProperty(value = "宸ュ叿鍒嗙被id")
+    private String classifyId;
+
 }
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaCommonToolVo.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaCommonToolVo.java
index 0365f95..1cfa455 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaCommonToolVo.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaCommonToolVo.java
@@ -32,6 +32,9 @@
     @ApiModelProperty(value = "宸ュ叿缂栧彿")
     private String toolId;
 
+    @ApiModelProperty(value = "宸ュ叿id")
+    private String toolCodeId;
+
     @ApiModelProperty(value = "搴忓彿锛堟垨浼佷笟鍐呯爜锛�")
     private String signCode;
 
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolLedgerDetailMapper.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolLedgerDetailMapper.java
index bed2922..190910a 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolLedgerDetailMapper.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolLedgerDetailMapper.java
@@ -1,7 +1,9 @@
 package org.jeecg.modules.tms.mapper;
 
 import java.util.List;
+import java.util.Map;
 
+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;
@@ -20,4 +22,8 @@
 
     IPage<ToolLedgerDetail> queryPageList(Page<ToolLedgerDetail> page,
                                           @Param(Constants.WRAPPER) QueryWrapper<Object> queryWrapper);
+
+    IPage<Map<String, Object>> queryLendTool(IPage<Map> pageData, @Param(Constants.WRAPPER) Wrapper<Map> wrapper);
+
+    IPage<Map<String, Object>> querySharpenTool(IPage<Map> pageData, @Param(Constants.WRAPPER) Wrapper<Map> wrapper);
 }
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/BaseToolsMapper.xml b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/BaseToolsMapper.xml
index 549472b..b629b67 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/BaseToolsMapper.xml
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/BaseToolsMapper.xml
@@ -71,6 +71,7 @@
     <select id="paraCommonToolList" resultType="org.jeecg.modules.tms.entity.vo.ParaCommonToolVo">
         select
             t.id,
+            t.id toolCodeId,
             t.classify_id classifyId,
             t.tool_code toolCode,
             t.sign_code signCode,
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/InStoreDetailMapper.xml b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/InStoreDetailMapper.xml
index 79cf799..5dd036e 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/InStoreDetailMapper.xml
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/InStoreDetailMapper.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.jeecg.modules.tms.mapper.InStoreDetailMapper">
 
-    <select id="queryPageList" resultType="map" parameterType="String">
+    <select id="findPageList" resultType="map" parameterType="String">
         SELECT
             t.id,
             t.tool_id onlyCode,
@@ -26,8 +26,9 @@
             t4.item_text operateType,
             t5.realname handler,
             t6.realname reviewer,
-            t7.item_value inStatus,
-            t8.item_value orderStatus
+            t7.item_text inStatus,
+            t8.item_text orderStatus,
+            t9.item_text inStorehouseTypeName
         FROM tms_in_store_detail t
                  LEFT JOIN tms_base_tools t1 on t.tool_code = t1.id
                  LEFT JOIN tms_tools_classify t2 on t2.id = t1.classify_id
@@ -37,6 +38,7 @@
                  LEFT JOIN sys_user t6 on t6.username = t3.reviewer
                  LEFT JOIN (select * from v_sys_dict where dict_code='in_status') t7 on t7.item_value = t3.in_status
                  LEFT JOIN (select * from v_sys_dict where dict_code='in_bill_status') t8 on t8.item_value = t3.order_status
+                 left join (select * from v_sys_dict where dict_code='in_storehouse_type') t9 on t9.item_value = t.in_storehouse_type
             ${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/InboundDetailMapper.xml b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/InboundDetailMapper.xml
index dbf39d6..5b638ab 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/InboundDetailMapper.xml
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/InboundDetailMapper.xml
@@ -12,9 +12,11 @@
             t1.in_storage_quantity inStorageQuantity,
             t1.in_actual_count inActualCount,
             t3.tool_code toolCode,
+            t1.tool_id onlyCode,
             t3.chinese_name chineseName,
             t3.tool_model toolModel,
             t5.item_text applicationType,
+            t6.id classifyId,
             t6.classify_id classifyNum,
             t8.item_text inStorehouseType
         from tms_inbound_detail t1
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 c025550..cd683ee 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
@@ -19,4 +19,156 @@
         LEFT JOIN tms_warehouse q on t.warehouse_id = q.id
         ${ew.customSqlSegment}
     </select>
+
+    <!--<select id="queryToolByStatus"  resultType="map" parameterType="String">
+        SELECT
+            t.id,
+            t.tool_code toolCodeId,
+            p.tool_code toolCode,
+            t.tool_id onlyCode,
+            p.chinese_name chineseName,
+            p.accuracy_class accuracyClass,
+            p.tool_model toolModel,
+            t.quantity,
+            t.warehouse_id warehouseId,
+            ISNULL(q.warehouse_id, '') + '/' + ISNULL(q.warehouse_name, '') warehouseName,
+            t.position_code positionCode,
+            t2.item_text applicationTypeName
+        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
+                 left join tms_tools_config_property t1 on t1.tool_code = p.id
+                 left join (select * from v_sys_dict where dict_code = 'application_type') t2 on t2.item_value = t1.application_type
+            ${ew.customSqlSegment}
+    </select>-->
+
+    <select id="queryLendTool"  resultType="map" parameterType="String">
+        SELECT
+            temp.id,
+            temp.toolCodeId,
+            temp.toolCode,
+            temp.onlyCode,
+            temp.chineseName,
+            temp.accuracyClass,
+            temp.toolModel,
+            temp.quantity,
+            temp.warehouseId,
+            temp.warehouseName,
+            temp.positionCode,
+            temp.applicationTypeName
+        FROM
+            (
+                SELECT
+                    t.id,
+                    t.tool_code toolCodeId,
+                    p.tool_code toolCode,
+                    t.tool_id onlyCode,
+                    p.chinese_name chineseName,
+                    p.accuracy_class accuracyClass,
+                    p.tool_model toolModel,
+                    1 quantity,
+                    t.warehouse_id warehouseId,
+                    ISNULL( q.warehouse_id, '' ) + '/' + ISNULL( q.warehouse_name, '' ) warehouseName,
+                    t.position_code positionCode,
+                    t2.item_text applicationTypeName
+                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
+                        LEFT JOIN tms_tools_config_property t1 ON t1.tool_code = p.id
+                        LEFT JOIN ( SELECT * FROM v_sys_dict WHERE dict_code = 'application_type' ) t2 ON t2.item_value = t1.application_type
+                        ${ew.customSqlSegment}
+                    UNION ALL
+                    (
+                    SELECT
+                        t.id,
+                        t.tool_code toolCodeId,
+                        p.tool_code toolCode,
+                        t.tool_id onlyCode,
+                        p.chinese_name chineseName,
+                        p.accuracy_class accuracyClass,
+                        p.tool_model toolModel,
+                        t3.lend_count quantity,
+                        t.warehouse_id warehouseId,
+                        ISNULL( q.warehouse_id, '' ) + '/' + ISNULL( q.warehouse_name, '' ) warehouseName,
+                        t.position_code positionCode,
+                        t2.item_text applicationTypeName
+                    FROM
+                        tms_tool_ledger_detail t
+                            LEFT JOIN tms_tool_ledger t3 ON t3.tool_id = t.tool_code
+                            LEFT JOIN tms_base_tools p ON t.tool_code = p.id
+                            LEFT JOIN tms_warehouse q ON t.warehouse_id = q.id
+                            LEFT JOIN tms_tools_config_property t1 ON t1.tool_code = p.id
+                            LEFT JOIN ( SELECT * FROM v_sys_dict WHERE dict_code = 'application_type' ) t2 ON t2.item_value = t1.application_type
+                            WHERE
+                        p.accuracy_class != 1
+			AND t3.lend_count != 0
+                )
+            ) temp
+    </select>
+
+    <select id="querySharpenTool"  resultType="map" parameterType="String">
+        SELECT
+            temp.id,
+            temp.toolCodeId,
+            temp.toolCode,
+            temp.onlyCode,
+            temp.chineseName,
+            temp.accuracyClass,
+            temp.toolModel,
+            temp.quantity,
+            temp.warehouseId,
+            temp.warehouseName,
+            temp.positionCode,
+            temp.applicationTypeName
+        FROM
+            (
+                SELECT
+                    t.id,
+                    t.tool_code toolCodeId,
+                    p.tool_code toolCode,
+                    t.tool_id onlyCode,
+                    p.chinese_name chineseName,
+                    p.accuracy_class accuracyClass,
+                    p.tool_model toolModel,
+                    1 quantity,
+                    t.warehouse_id warehouseId,
+                    ISNULL( q.warehouse_id, '' ) + '/' + ISNULL( q.warehouse_name, '' ) warehouseName,
+                    t.position_code positionCode,
+                    t2.item_text applicationTypeName
+                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
+                        LEFT JOIN tms_tools_config_property t1 ON t1.tool_code = p.id
+                        LEFT JOIN ( SELECT * FROM v_sys_dict WHERE dict_code = 'application_type' ) t2 ON t2.item_value = t1.application_type
+                    ${ew.customSqlSegment}
+                UNION ALL
+                (
+                SELECT
+                    t.id,
+                    t.tool_code toolCodeId,
+                    p.tool_code toolCode,
+                    t.tool_id onlyCode,
+                    p.chinese_name chineseName,
+                    p.accuracy_class accuracyClass,
+                    p.tool_model toolModel,
+                    t3.sharpening_count quantity,
+                    t.warehouse_id warehouseId,
+                    ISNULL( q.warehouse_id, '' ) + '/' + ISNULL( q.warehouse_name, '' ) warehouseName,
+                    t.position_code positionCode,
+                    t2.item_text applicationTypeName
+                FROM
+                    tms_tool_ledger_detail t
+                    LEFT JOIN tms_tool_ledger t3 ON t3.tool_id = t.tool_code
+                    LEFT JOIN tms_base_tools p ON t.tool_code = p.id
+                    LEFT JOIN tms_warehouse q ON t.warehouse_id = q.id
+                    LEFT JOIN tms_tools_config_property t1 ON t1.tool_code = p.id
+                    LEFT JOIN ( SELECT * FROM v_sys_dict WHERE dict_code = 'application_type' ) t2 ON t2.item_value = t1.application_type
+                WHERE
+                    p.accuracy_class != 1
+                  AND t3.sharpening_count != 0
+                    )
+            ) temp
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IInboundOrderService.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IInboundOrderService.java
index f4f8474..e892396 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IInboundOrderService.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IInboundOrderService.java
@@ -19,4 +19,6 @@
     void approvalProcess(InboundOrderFlowDto inboundOrderFlowDto);
 
     void addInStorage(JSONObject jSONObject);
+
+    void addApplyInStorage(JSONObject jSONObject);
 }
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolLedgerDetailService.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolLedgerDetailService.java
index c54329d..fb4c435 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolLedgerDetailService.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolLedgerDetailService.java
@@ -16,4 +16,8 @@
 public interface IToolLedgerDetailService extends IService<ToolLedgerDetail> {
 
     IPage<ToolLedgerDetail> queryPageList(Page<ToolLedgerDetail> page, Map<String, String[]> parameterMap);
+
+    IPage<Map<String, Object>> queryLendTool(Integer pageNo, Integer pageSize, Map<String, String> query);
+
+    IPage<Map<String, Object>> querySharpenTool(Integer pageNo, Integer pageSize, Map<String, String> query);
 }
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/InStoreDetailServiceImpl.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/InStoreDetailServiceImpl.java
index 49fe595..0671d0a 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/InStoreDetailServiceImpl.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/InStoreDetailServiceImpl.java
@@ -40,9 +40,17 @@
             if (StringUtils.isNotBlank(classifyId)) {
                 queryWrapper.eq("t2.id", classifyId);
             }
+            String toolCode = query.get("toolCode");
+            if (StringUtils.isNotBlank(toolCode)) {
+                queryWrapper.like("t1.tool_code", toolCode);
+            }
+            String toolModel = query.get("toolModel");
+            if (StringUtils.isNotBlank(toolModel)) {
+                queryWrapper.like("t1.tool_mode", toolModel);
+            }
             // 鎺掑簭鍐欐硶
             List<OrderItem> orderItems = new ArrayList<>();
-            orderItems.add(OrderItem.desc("t1.create_time"));
+            orderItems.add(OrderItem.desc("t.create_time"));
             ((Page<Map>) pageData).setOrders(orderItems);
         }
         return super.getBaseMapper().findPageList(pageData,queryWrapper);
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/InboundOrderServiceImpl.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/InboundOrderServiceImpl.java
index 061ee1c..0671b37 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/InboundOrderServiceImpl.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/InboundOrderServiceImpl.java
@@ -5,6 +5,7 @@
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import org.apache.shiro.SecurityUtils;
 import org.apache.shiro.subject.Subject;
 import org.flowable.engine.TaskService;
@@ -64,9 +65,43 @@
 
     @Autowired
     private IToolLedgerDetailService toolLedgerDetailService;
+
+    @Autowired
+    private IInboundDetailService inboundDetailService;
     @Override
     public boolean submit(String id) {
         InboundOrder inboundOrder = this.getById(id);
+        //鍊熺敤鍜屽垉纾ㄥ叆搴撴椂鏍¢獙搴撳瓨
+        List<InboundDetail> inboundDetailList = inboundDetailService.lambdaQuery().eq(InboundDetail::getInStorehouseId,id).list();
+        if("2".equals(inboundOrder.getInStorehouseType())){
+            for(InboundDetail inboundDetail : inboundDetailList){
+                if(StringUtils.isNotBlank(inboundDetail.getToolId())){
+                    ToolLedgerDetail toolLedgerDetail = toolLedgerDetailService.lambdaQuery().eq(ToolLedgerDetail::getToolId,inboundDetail.getToolId()).one();
+                    if(toolLedgerDetail.getQuantity().compareTo(inboundDetail.getInStorageQuantity()) == 0){
+                        throw new JeecgBootException("缂栫爜涓恒��" + toolLedgerDetail.getToolId() + "銆戠殑宸ュ叿鏈�熷嚭锛屼笉闇�瑕佸綊杩樺叆搴擄紒");
+                    }
+                }else {
+                    ToolLedger toolLedger = toolLedgerService.lambdaQuery().eq(ToolLedger::getToolId,inboundDetail.getToolCode()).one();
+                    if(toolLedger.getLendCount().compareTo(inboundDetail.getInStorageQuantity()) < 0){
+                        throw new JeecgBootException("缂栫爜涓恒��" + toolLedger.getToolId() + "銆戠殑宸ュ叿鏈�熷嚭锛屼笉闇�瑕佸綊杩樺叆搴擄紒");
+                    }
+                }
+            }
+        }else if("5".equals(inboundOrder.getInStorehouseType())){
+            for(InboundDetail inboundDetail : inboundDetailList){
+                if(StringUtils.isNotBlank(inboundDetail.getToolId())){
+                    ToolLedgerDetail toolLedgerDetail = toolLedgerDetailService.lambdaQuery().eq(ToolLedgerDetail::getToolId,inboundDetail.getToolId()).one();
+                    if(toolLedgerDetail.getQuantity().compareTo(inboundDetail.getInStorageQuantity()) == 0){
+                        throw new JeecgBootException("缂栫爜涓恒��" + toolLedgerDetail.getToolId() + "銆戠殑宸ュ叿鏈垉纾紝涓嶉渶瑕佸垉纾ㄥ叆搴擄紒");
+                    }
+                }else {
+                    ToolLedger toolLedger = toolLedgerService.lambdaQuery().eq(ToolLedger::getToolId,inboundDetail.getToolCode()).one();
+                    if(toolLedger.getSharpeningCount().compareTo(inboundDetail.getInStorageQuantity()) < 0){
+                        throw new JeecgBootException("缂栫爜涓恒��" + toolLedger.getToolId() + "銆戠殑宸ュ叿鏈垉纾紝涓嶉渶瑕佸垉纾ㄥ叆搴擄紒");
+                    }
+                }
+            }
+        }
         //鍙戣捣瀹℃壒娴佺▼
         this.triggerProcess(inboundOrder);
         //鏇存柊鍏ュ簱鍗曞鎵圭姸鎬佷负宸叉彁浜�
@@ -91,7 +126,7 @@
         variables.put("comment", "鏂板鍏ュ簱鐢宠鍗曢粯璁ゅ惎鍔ㄦ祦绋�");
         variables.put("proofreading", true);
         List<String> usernames = new ArrayList<>();
-        usernames.add(inboundOrder.getHandler());
+        usernames.add(inboundOrder.getReviewer());
         variables.put("NextAssignee", usernames);
         Result result = flowDefinitionService.startProcessInstanceByKey("tool_in_storage", variables);
         return result.isSuccess();
@@ -165,9 +200,10 @@
 
         //鏍规嵁浠诲姟瀹屾垚缁撴灉鏇存柊鐢宠鍗曠姸鎬�
         if (result.isSuccess()) {
-            inboundOrder.setOrderStatus(inboundOrderFlowDto.getStatus());
             if ("3".equals(inboundOrderFlowDto.getStatus())) {
-                inboundOrder.setInStatus("1");
+                inboundOrder.setOrderStatus("3");
+            }else if("4".equals(inboundOrderFlowDto.getStatus())){
+                inboundOrder.setOrderStatus("1");
             }
             inboundOrder.setReviewer(user.getUsername());
             inboundOrder.setApprovalDate(new Date());
@@ -179,6 +215,7 @@
     @Override
     public void addInStorage(JSONObject jSONObject) {
         String inStorehouseType = jSONObject.getString("inStorehouseType");
+        String classifyId = jSONObject.getString("classifyId");
         Date inboundTime = jSONObject.getDate("inboundTime");
         //鑾峰彇鍏ュ簱鏄庣粏
         JSONArray jsonArray = jSONObject.getJSONArray("detailData");
@@ -201,6 +238,7 @@
                     newToolLedger.setLossCount(BigDecimal.ZERO);
                     newToolLedger.setRepairCount(BigDecimal.ZERO);
                     newToolLedger.setSharpeningCount(BigDecimal.ZERO);
+                    newToolLedger.setClassifyId(classifyId);
                     toolLedgerService.save(newToolLedger);
                 }else {
                     toolLedger.setAvailableCount(toolLedger.getAvailableCount().add(inboundDetailVo.getInStorageQuantity()));
@@ -264,13 +302,321 @@
                     }
                 }
             }
+            //褰掕繕鍏ュ簱
         }else if("2".equals(inStorehouseType)){
+            //寰幆鏂板鏄庣粏
+            for(InboundDetailVo inboundDetailVo : inStoreDetailList) {
+                //鏌ヨ鏄惁绠″埌鎶婏紝绠″埌鎶婄殑鏌ヨ褰撳墠缂栫爜
+                BaseTools baseTools = baseToolsService.getById(inboundDetailVo.getToolCodeId());
+                //澧炲姞鍙敤搴撳瓨锛屽噺灏戝�熷嚭搴撳瓨
+                ToolLedger toolLedger = toolLedgerService.lambdaQuery().eq(ToolLedger::getToolId, inboundDetailVo.getToolCodeId()).one();
+                toolLedger.setAvailableCount(toolLedger.getAvailableCount().add(inboundDetailVo.getInStorageQuantity()));
+                toolLedger.setLendCount(toolLedger.getLendCount().subtract(inboundDetailVo.getInStorageQuantity()));
+                toolLedgerService.updateById(toolLedger);
+                //鏌ヨ鏄惁绠″埌鎶婏紝绠″埌鎶婄殑鐢╰oolId锛屼笉绠″埌鎶婄殑鐢╰oolCodeId
+                //绠″埌鎶�
+                if("1".equals(baseTools.getAccuracyClass())){
+                    //澧炲姞搴撳瓨鏄庣粏鍙敤搴撳瓨锛屼慨鏀圭姸鎬�
+                    ToolLedgerDetail toolLedgerDetail = toolLedgerDetailService.lambdaQuery()
+                            .eq(ToolLedgerDetail::getToolCode,inboundDetailVo.getToolCodeId())
+                            .eq(ToolLedgerDetail::getToolId,inboundDetailVo.getOnlyCode()).one();
+                    toolLedgerDetail.setQuantity(BigDecimal.ONE);
+                    toolLedgerDetail.setStatus("1");
+                    toolLedgerDetailService.updateById(toolLedgerDetail);
+                    //淇濆瓨鍏ュ簱娴佹按
+                    InStoreDetail inStoreDetail = new InStoreDetail();
+                    inStoreDetail.setInboundTime(inboundTime);
+                    inStoreDetail.setOperateType("2");
+                    inStoreDetail.setInNumber(BigDecimal.ONE);
+                    inStoreDetail.setInStorehouseType("2");
+                    inStoreDetail.setToolCode(inboundDetailVo.getToolCodeId());
+                    inStoreDetail.setToolId(inboundDetailVo.getOnlyCode());
+                    inStoreDetailService.save(inStoreDetail);
+                    //涓嶇鍒版妸
+                }else {
+                    //澧炲姞搴撳瓨鏄庣粏鍙敤搴撳瓨锛屼慨鏀圭姸鎬�
+                    ToolLedgerDetail toolLedgerDetail = toolLedgerDetailService.lambdaQuery().eq(ToolLedgerDetail::getToolCode,inboundDetailVo.getToolCodeId()).one();
+                    toolLedgerDetail.setQuantity(toolLedgerDetail.getQuantity().add(inboundDetailVo.getInStorageQuantity()));
+                    toolLedgerDetail.setStatus("1");
+                    toolLedgerDetailService.updateById(toolLedgerDetail);
+                    //淇濆瓨鍏ュ簱娴佹按
+                    InStoreDetail inStoreDetail = new InStoreDetail();
+                    inStoreDetail.setInboundTime(inboundTime);
+                    inStoreDetail.setOperateType("2");
+                    inStoreDetail.setInNumber(inboundDetailVo.getInStorageQuantity());
+                    inStoreDetail.setInStorehouseType("2");
+                    inStoreDetail.setToolCode(inboundDetailVo.getToolCodeId());
+                    inStoreDetailService.save(inStoreDetail);
+                }
 
+            }
         }else if("5".equals(inStorehouseType)){
+            //寰幆鏂板鏄庣粏
+            for(InboundDetailVo inboundDetailVo : inStoreDetailList) {
+                //鏌ヨ鏄惁绠″埌鎶婏紝绠″埌鎶婄殑鏌ヨ褰撳墠缂栫爜
+                BaseTools baseTools = baseToolsService.getById(inboundDetailVo.getToolCodeId());
+                //澧炲姞鎬诲簱瀛樺強鍙敤搴撳瓨锛屽噺灏戝垉纾ㄥ簱瀛�
+                ToolLedger toolLedger = toolLedgerService.lambdaQuery().eq(ToolLedger::getToolId, inboundDetailVo.getToolCodeId()).one();
+                toolLedger.setAvailableCount(toolLedger.getAvailableCount().add(inboundDetailVo.getInStorageQuantity()));
+                toolLedger.setSharpeningCount(toolLedger.getSharpeningCount().subtract(inboundDetailVo.getInStorageQuantity()));
+                toolLedgerService.updateById(toolLedger);
+                //鏌ヨ鏄惁绠″埌鎶婏紝绠″埌鎶婄殑鐢╰oolId锛屼笉绠″埌鎶婄殑鐢╰oolCodeId
+                //绠″埌鎶�
+                if("1".equals(baseTools.getAccuracyClass())){
+                    //澧炲姞搴撳瓨鏄庣粏鍙敤搴撳瓨锛屼慨鏀圭姸鎬�
+                    ToolLedgerDetail toolLedgerDetail = toolLedgerDetailService.lambdaQuery()
+                            .eq(ToolLedgerDetail::getToolCode,inboundDetailVo.getToolCodeId())
+                            .eq(ToolLedgerDetail::getToolId,inboundDetailVo.getOnlyCode()).one();
+                    toolLedgerDetail.setQuantity(BigDecimal.ONE);
+                    toolLedgerDetail.setStatus("1");
+                    toolLedgerDetailService.updateById(toolLedgerDetail);
+                    //淇濆瓨鍏ュ簱娴佹按
+                    InStoreDetail inStoreDetail = new InStoreDetail();
+                    inStoreDetail.setInboundTime(inboundTime);
+                    inStoreDetail.setOperateType("2");
+                    inStoreDetail.setInNumber(BigDecimal.ONE);
+                    inStoreDetail.setInStorehouseType("5");
+                    inStoreDetail.setToolCode(inboundDetailVo.getToolCodeId());
+                    inStoreDetail.setToolId(inboundDetailVo.getOnlyCode());
+                    inStoreDetailService.save(inStoreDetail);
+                    //涓嶇鍒版妸
+                }else {
+                    //澧炲姞搴撳瓨鏄庣粏鍙敤搴撳瓨锛屼慨鏀圭姸鎬�
+                    ToolLedgerDetail toolLedgerDetail = toolLedgerDetailService.lambdaQuery().eq(ToolLedgerDetail::getToolCode,inboundDetailVo.getToolCodeId()).one();
+                    toolLedgerDetail.setQuantity(toolLedgerDetail.getQuantity().add(inboundDetailVo.getInStorageQuantity()));
+                    toolLedgerDetail.setStatus("1");
+                    toolLedgerDetailService.updateById(toolLedgerDetail);
+                    //淇濆瓨鍏ュ簱娴佹按
+                    InStoreDetail inStoreDetail = new InStoreDetail();
+                    inStoreDetail.setInboundTime(inboundTime);
+                    inStoreDetail.setOperateType("2");
+                    inStoreDetail.setInNumber(inboundDetailVo.getInStorageQuantity());
+                    inStoreDetail.setInStorehouseType("5");
+                    inStoreDetail.setToolCode(inboundDetailVo.getToolCodeId());
+                    inStoreDetailService.save(inStoreDetail);
+                }
 
+            }
         }
     }
 
+    @Override
+    public void addApplyInStorage(JSONObject jSONObject) {
+        String inStorehouseType = jSONObject.getString("inStorehouseType");
+        //鍏ュ簱鐢宠鍗昳d
+        String orderId = jSONObject.getString("orderId");
+        //鑾峰彇鍏ュ簱鏄庣粏
+        JSONArray jsonArray = jSONObject.getJSONArray("detailData");
+        List<InboundDetailVo> inStoreDetailList =jsonArray.toJavaList(InboundDetailVo.class);
+        //鏂拌揣鍏ュ簱
+        if("1".equals(inStorehouseType)){
+            //寰幆鏂板鏄庣粏
+            for(InboundDetailVo inboundDetailVo : inStoreDetailList){
+                //鏌ヨ鏄惁绠″埌鎶婏紝绠″埌鎶婄殑鏌ヨ褰撳墠缂栫爜
+                BaseTools baseTools = baseToolsService.getById(inboundDetailVo.getToolCodeId());
+                //鎿嶄綔搴撳瓨,鏌ヨ鎬诲簱瀛樻槸鍚﹀瓨鍦ㄨ绫诲垁鍏�
+                ToolLedger toolLedger = toolLedgerService.lambdaQuery().eq(ToolLedger::getToolId,inboundDetailVo.getToolCodeId()).one();
+                if(toolLedger == null){
+                    ToolLedger newToolLedger = new ToolLedger();
+                    newToolLedger.setToolId(inboundDetailVo.getToolCodeId());
+                    newToolLedger.setAvailableCount(inboundDetailVo.getInStorageQuantity());
+                    newToolLedger.setTotalCount(inboundDetailVo.getInStorageQuantity());
+                    newToolLedger.setLendCount(BigDecimal.ZERO);
+                    newToolLedger.setDetectionCount(BigDecimal.ZERO);
+                    newToolLedger.setLossCount(BigDecimal.ZERO);
+                    newToolLedger.setRepairCount(BigDecimal.ZERO);
+                    newToolLedger.setSharpeningCount(BigDecimal.ZERO);
+                    newToolLedger.setClassifyId(inboundDetailVo.getClassifyId());
+                    toolLedgerService.save(newToolLedger);
+                }else {
+                    toolLedger.setAvailableCount(toolLedger.getAvailableCount().add(inboundDetailVo.getInStorageQuantity()));
+                    toolLedger.setTotalCount(toolLedger.getTotalCount().add(inboundDetailVo.getInStorageQuantity()));
+                    toolLedgerService.updateById(toolLedger);
+                }
+                //绠″埌鎶�
+                if("1".equals(baseTools.getAccuracyClass())){
+                    //寰幆鍏ュ簱鏁伴噺锛屼负瀹炵墿璧嬬爜
+                    for(int i=0;i<inboundDetailVo.getInStorageQuantity().intValue();i++){
+                        BaseTools newBaseTools = baseToolsService.getById(inboundDetailVo.getToolCodeId());
+                        //鏌ヨ褰撳墠缂栫爜
+                        String currentCode = newBaseTools.getCurrentCode();
+                        //灏嗗瓧绗︿覆杞崲涓烘暣鏁�
+                        int num = Integer.parseInt(currentCode);
+                        //鍔�1鎿嶄綔
+                        num++;
+                        //杞崲鍥炲瓧绗︿覆骞朵繚鐣欏墠瀵奸浂
+                        String result = String.format("%0" + currentCode.length() + "d", num);
+                        //淇濆瓨鍏ュ簱娴佹按
+                        InStoreDetail inStoreDetail = new InStoreDetail();
+                        inStoreDetail.setInStorehouseId(orderId);
+                        inStoreDetail.setInboundTime(new Date());
+                        inStoreDetail.setOperateType("1");
+                        inStoreDetail.setInNumber(BigDecimal.ONE);
+                        inStoreDetail.setInStorehouseType("1");
+                        inStoreDetail.setToolCode(inboundDetailVo.getToolCodeId());
+                        inStoreDetail.setToolId(inboundDetailVo.getToolCode()+"-"+result);
+                        inStoreDetailService.save(inStoreDetail);
+                        //澧炲姞搴撳瓨鏄庣粏
+                        ToolLedgerDetail toolLedgerDetail = new ToolLedgerDetail();
+                        toolLedgerDetail.setToolCode(inboundDetailVo.getToolCodeId());
+                        toolLedgerDetail.setToolId(inboundDetailVo.getToolCode()+"-"+result);
+                        toolLedgerDetail.setQuantity(BigDecimal.ONE);
+                        toolLedgerDetail.setStatus("1");
+                        toolLedgerDetailService.save(toolLedgerDetail);
+                        //鏇存柊褰撳墠缂栫爜
+                        newBaseTools.setCurrentCode(result);
+                        baseToolsService.updateById(newBaseTools);
+                    }
+                    //涓嶇鍒版妸
+                }else {
+                    //淇濆瓨鍏ュ簱娴佹按
+                    InStoreDetail inStoreDetail = new InStoreDetail();
+                    inStoreDetail.setInboundTime(new Date());
+                    inStoreDetail.setOperateType("1");
+                    inStoreDetail.setInNumber(inboundDetailVo.getInStorageQuantity());
+                    inStoreDetail.setInStorehouseType("1");
+                    inStoreDetail.setInStorehouseId(orderId);
+                    inStoreDetail.setToolCode(inboundDetailVo.getToolCodeId());
+                    inStoreDetailService.save(inStoreDetail);
+                    //鏌ヨ搴撳瓨鏄庣粏涓槸鍚﹀瓨鍦ㄨ宸ュ叿
+                    ToolLedgerDetail toolLedgerDetail = toolLedgerDetailService.lambdaQuery().eq(ToolLedgerDetail::getToolCode,inboundDetailVo.getToolCodeId()).one();
+                    if(toolLedgerDetail == null){
+                        ToolLedgerDetail newToolLedgerDetail = new ToolLedgerDetail();
+                        newToolLedgerDetail.setToolCode(inboundDetailVo.getToolCodeId());
+                        newToolLedgerDetail.setQuantity(inboundDetailVo.getInStorageQuantity());
+                        newToolLedgerDetail.setStatus("1");
+                        toolLedgerDetailService.save(newToolLedgerDetail);
+                    }else {
+                        toolLedgerDetail.setQuantity(toolLedgerDetail.getQuantity().add(inboundDetailVo.getInStorageQuantity()));
+                        toolLedgerDetailService.updateById(toolLedgerDetail);
+                    }
+                }
+                //鏇存敼鏄庣粏鍏ュ簱鐘舵�佸強瀹為檯鍏ュ簱鏁伴噺
+                InboundDetail inboundDetail = inboundDetailService.getById(inboundDetailVo.getId());
+                inboundDetail.setInStatus("3");
+                inboundDetail.setInActualCount(inboundDetailVo.getInStorageQuantity());
+                inboundDetailService.updateById(inboundDetail);
+            }
+            //褰掕繕鍏ュ簱
+        }else if("2".equals(inStorehouseType)){
+            //寰幆鏂板鏄庣粏
+            for(InboundDetailVo inboundDetailVo : inStoreDetailList) {
+                //鏌ヨ鏄惁绠″埌鎶婏紝绠″埌鎶婄殑鏌ヨ褰撳墠缂栫爜
+                BaseTools baseTools = baseToolsService.getById(inboundDetailVo.getToolCodeId());
+                //澧炲姞鍙敤搴撳瓨锛屽噺灏戝�熷嚭搴撳瓨
+                ToolLedger toolLedger = toolLedgerService.lambdaQuery().eq(ToolLedger::getToolId, inboundDetailVo.getToolCodeId()).one();
+                toolLedger.setAvailableCount(toolLedger.getAvailableCount().add(inboundDetailVo.getInStorageQuantity()));
+                toolLedger.setLendCount(toolLedger.getLendCount().subtract(inboundDetailVo.getInStorageQuantity()));
+                toolLedgerService.updateById(toolLedger);
+                //鏌ヨ鏄惁绠″埌鎶婏紝绠″埌鎶婄殑鐢╰oolId锛屼笉绠″埌鎶婄殑鐢╰oolCodeId
+                //绠″埌鎶�
+                if("1".equals(baseTools.getAccuracyClass())){
+                    //澧炲姞搴撳瓨鏄庣粏鍙敤搴撳瓨锛屼慨鏀圭姸鎬�
+                    ToolLedgerDetail toolLedgerDetail = toolLedgerDetailService.lambdaQuery()
+                            .eq(ToolLedgerDetail::getToolCode,inboundDetailVo.getToolCodeId())
+                            .eq(ToolLedgerDetail::getToolId,inboundDetailVo.getOnlyCode()).one();
+                    toolLedgerDetail.setQuantity(BigDecimal.ONE);
+                    toolLedgerDetail.setStatus("1");
+                    toolLedgerDetailService.updateById(toolLedgerDetail);
+                    //淇濆瓨鍏ュ簱娴佹按
+                    InStoreDetail inStoreDetail = new InStoreDetail();
+                    inStoreDetail.setInboundTime(new Date());
+                    inStoreDetail.setOperateType("1");
+                    inStoreDetail.setInNumber(BigDecimal.ONE);
+                    inStoreDetail.setInStorehouseType("2");
+                    inStoreDetail.setInStorehouseId(orderId);
+                    inStoreDetail.setToolCode(inboundDetailVo.getToolCodeId());
+                    inStoreDetail.setToolId(inboundDetailVo.getOnlyCode());
+                    inStoreDetailService.save(inStoreDetail);
+                    //涓嶇鍒版妸
+                }else {
+                    //澧炲姞搴撳瓨鏄庣粏鍙敤搴撳瓨锛屼慨鏀圭姸鎬�
+                    ToolLedgerDetail toolLedgerDetail = toolLedgerDetailService.lambdaQuery().eq(ToolLedgerDetail::getToolCode,inboundDetailVo.getToolCodeId()).one();
+                    toolLedgerDetail.setQuantity(toolLedgerDetail.getQuantity().add(inboundDetailVo.getInStorageQuantity()));
+                    toolLedgerDetail.setStatus("1");
+                    toolLedgerDetailService.updateById(toolLedgerDetail);
+                    //淇濆瓨鍏ュ簱娴佹按
+                    InStoreDetail inStoreDetail = new InStoreDetail();
+                    inStoreDetail.setInboundTime(new Date());
+                    inStoreDetail.setOperateType("1");
+                    inStoreDetail.setInNumber(inboundDetailVo.getInStorageQuantity());
+                    inStoreDetail.setInStorehouseType("2");
+                    inStoreDetail.setInStorehouseId(orderId);
+                    inStoreDetail.setToolCode(inboundDetailVo.getToolCodeId());
+                    inStoreDetailService.save(inStoreDetail);
+                }
+                //鏇存敼鏄庣粏鍏ュ簱鐘舵�佸強瀹為檯鍏ュ簱鏁伴噺
+                InboundDetail inboundDetail = inboundDetailService.getById(inboundDetailVo.getId());
+                inboundDetail.setInStatus("3");
+                inboundDetail.setInActualCount(inboundDetailVo.getInStorageQuantity());
+                inboundDetailService.updateById(inboundDetail);
+            }
+        }else if("5".equals(inStorehouseType)){
+            //寰幆鏂板鏄庣粏
+            for(InboundDetailVo inboundDetailVo : inStoreDetailList) {
+                //鏌ヨ鏄惁绠″埌鎶婏紝绠″埌鎶婄殑鏌ヨ褰撳墠缂栫爜
+                BaseTools baseTools = baseToolsService.getById(inboundDetailVo.getToolCodeId());
+                //澧炲姞鎬诲簱瀛樺強鍙敤搴撳瓨锛屽噺灏戝垉纾ㄥ簱瀛�
+                ToolLedger toolLedger = toolLedgerService.lambdaQuery().eq(ToolLedger::getToolId, inboundDetailVo.getToolCodeId()).one();
+                toolLedger.setAvailableCount(toolLedger.getAvailableCount().add(inboundDetailVo.getInStorageQuantity()));
+                toolLedger.setSharpeningCount(toolLedger.getSharpeningCount().subtract(inboundDetailVo.getInStorageQuantity()));
+                toolLedgerService.updateById(toolLedger);
+                //鏌ヨ鏄惁绠″埌鎶婏紝绠″埌鎶婄殑鐢╰oolId锛屼笉绠″埌鎶婄殑鐢╰oolCodeId
+                //绠″埌鎶�
+                if("1".equals(baseTools.getAccuracyClass())){
+                    //澧炲姞搴撳瓨鏄庣粏鍙敤搴撳瓨锛屼慨鏀圭姸鎬�
+                    ToolLedgerDetail toolLedgerDetail = toolLedgerDetailService.lambdaQuery()
+                            .eq(ToolLedgerDetail::getToolCode,inboundDetailVo.getToolCodeId())
+                            .eq(ToolLedgerDetail::getToolId,inboundDetailVo.getOnlyCode()).one();
+                    toolLedgerDetail.setQuantity(BigDecimal.ONE);
+                    toolLedgerDetail.setStatus("1");
+                    toolLedgerDetailService.updateById(toolLedgerDetail);
+                    //淇濆瓨鍏ュ簱娴佹按
+                    InStoreDetail inStoreDetail = new InStoreDetail();
+                    inStoreDetail.setInboundTime(new Date());
+                    inStoreDetail.setOperateType("1");
+                    inStoreDetail.setInNumber(BigDecimal.ONE);
+                    inStoreDetail.setInStorehouseType("5");
+                    inStoreDetail.setInStorehouseId(orderId);
+                    inStoreDetail.setToolCode(inboundDetailVo.getToolCodeId());
+                    inStoreDetail.setToolId(inboundDetailVo.getOnlyCode());
+                    inStoreDetailService.save(inStoreDetail);
+                    //涓嶇鍒版妸
+                }else {
+                    //澧炲姞搴撳瓨鏄庣粏鍙敤搴撳瓨锛屼慨鏀圭姸鎬�
+                    ToolLedgerDetail toolLedgerDetail = toolLedgerDetailService.lambdaQuery().eq(ToolLedgerDetail::getToolCode,inboundDetailVo.getToolCodeId()).one();
+                    toolLedgerDetail.setQuantity(toolLedgerDetail.getQuantity().add(inboundDetailVo.getInStorageQuantity()));
+                    toolLedgerDetail.setStatus("1");
+                    toolLedgerDetailService.updateById(toolLedgerDetail);
+                    //淇濆瓨鍏ュ簱娴佹按
+                    InStoreDetail inStoreDetail = new InStoreDetail();
+                    inStoreDetail.setInboundTime(new Date());
+                    inStoreDetail.setOperateType("1");
+                    inStoreDetail.setInNumber(inboundDetailVo.getInStorageQuantity());
+                    inStoreDetail.setInStorehouseType("5");
+                    inStoreDetail.setInStorehouseId(orderId);
+                    inStoreDetail.setToolCode(inboundDetailVo.getToolCodeId());
+                    inStoreDetailService.save(inStoreDetail);
+                }
+                //鏇存敼鏄庣粏鍏ュ簱鐘舵�佸強瀹為檯鍏ュ簱鏁伴噺
+                InboundDetail inboundDetail = inboundDetailService.getById(inboundDetailVo.getId());
+                inboundDetail.setInStatus("3");
+                inboundDetail.setInActualCount(inboundDetailVo.getInStorageQuantity());
+                inboundDetailService.updateById(inboundDetail);
+            }
+        }
+        //鏇存敼鐢宠鍗曞叆搴撶姸鎬�
+        InboundOrder inboundOrder = this.getById(orderId);
+        List<InboundDetail> inboundDetailList = inboundDetailService.lambdaQuery().eq(InboundDetail::getInStorehouseId,orderId).list();
+        boolean flag = inboundDetailList.stream().allMatch(inboundDetail -> "3".equals(inboundDetail.getInStatus()));
+        if(flag){
+            inboundOrder.setInStatus("3");
+        }else {
+            inboundOrder.setInStatus("2");
+        }
+        this.updateById(inboundOrder);
+    }
+
     private LoginUser getCurrentUser() {
         // 鑾峰彇褰撳墠璁よ瘉鐨勭櫥褰曠敤鎴蜂俊鎭�
         Subject currentUser = SecurityUtils.getSubject();
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolLedgerDetailServiceImpl.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolLedgerDetailServiceImpl.java
index ef5a081..17e916c 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolLedgerDetailServiceImpl.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolLedgerDetailServiceImpl.java
@@ -4,6 +4,8 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.commons.lang.StringUtils;
+import org.jeecg.common.exception.ExceptionCast;
 import org.jeecg.modules.tms.entity.ToolLedgerDetail;
 import org.jeecg.modules.tms.mapper.ToolLedgerDetailMapper;
 import org.jeecg.modules.tms.service.IToolLedgerDetailService;
@@ -46,4 +48,54 @@
         }
         return this.baseMapper.queryPageList(page, queryWrapper);
     }
+
+    @Override
+    public IPage<Map<String, Object>> queryLendTool(Integer pageNo, Integer pageSize, Map<String, String> query) {
+
+        if (pageNo == null || pageNo < 1 || pageSize == null || pageSize < 1) {
+            ExceptionCast.cast("鍙傛暟閿欒");
+        }
+        IPage<Map> pageData = new Page<Map>(pageNo, pageSize);
+        QueryWrapper<Map> queryWrapper = Wrappers.query();
+        if (null != query) {
+            String toolCode = query.get("toolCode");
+            if (StringUtils.isNotBlank(toolCode)) {
+                queryWrapper.like("p.tool_code", toolCode);
+            }
+            String status = query.get("status");
+            if (StringUtils.isNotBlank(status)) {
+                queryWrapper.eq("t.status", status);
+            }
+            String classifyId = query.get("classifyId");
+            if (StringUtils.isNotBlank(classifyId)) {
+                queryWrapper.like("p.classify_id", classifyId);
+            }
+        }
+        return this.baseMapper.queryLendTool(pageData,queryWrapper);
+    }
+
+    @Override
+    public IPage<Map<String, Object>> querySharpenTool(Integer pageNo, Integer pageSize, Map<String, String> query) {
+
+        if (pageNo == null || pageNo < 1 || pageSize == null || pageSize < 1) {
+            ExceptionCast.cast("鍙傛暟閿欒");
+        }
+        IPage<Map> pageData = new Page<Map>(pageNo, pageSize);
+        QueryWrapper<Map> queryWrapper = Wrappers.query();
+        if (null != query) {
+            String toolCode = query.get("toolCode");
+            if (StringUtils.isNotBlank(toolCode)) {
+                queryWrapper.like("p.tool_code", toolCode);
+            }
+            String status = query.get("status");
+            if (StringUtils.isNotBlank(status)) {
+                queryWrapper.eq("t.status", status);
+            }
+            String classifyId = query.get("classifyId");
+            if (StringUtils.isNotBlank(classifyId)) {
+                queryWrapper.like("p.classify_id", classifyId);
+            }
+        }
+        return this.baseMapper.querySharpenTool(pageData,queryWrapper);
+    }
 }

--
Gitblit v1.9.3