From 0cb87e5f72febf26b3a17b4eb61e8d1b8c079279 Mon Sep 17 00:00:00 2001
From: Houjie <714924425@qq.com>
Date: 星期一, 26 五月 2025 10:03:44 +0800
Subject: [PATCH] 刀具刃磨-刃磨刀具选择列表接口/ 工具报损-审批、提交   工具盘点-审批 ,提交

---
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsStocktakingBoundController.java    |   15 +
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/LossBoundFlowDto.java                   |   12 +
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolSharpeningController.java           |   57 +++-
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsSharpeningMapper.xml               |   23 +
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaHolesToolsVo.java                    |   14 
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsSharpeningService.java               |    8 
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsStocktakingBoundService.java         |    9 
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsLossBoundServiceImpl.java        |  105 ++++++++
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsSharpeningServiceImpl.java       |   33 ++
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsLossBoundController.java           |   21 +
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IBaseToolsService.java                     |    1 
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/BaseToolsController.java                |   17 +
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/StocktakingBoundFlowDto.java            |   12 +
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/SharpeeningVo.java                       |   37 +++
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsSharpeningMapper.java                  |   12 
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/BaseToolsServiceImpl.java             |    5 
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ToolSharpeningVo.java                    |  132 +++++++++++
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsLossBoundService.java                |    4 
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsStocktakingBound.java                  |   10 
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsStocktakingBoundServiceImpl.java |  100 ++++++++
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/BaseToolsMapper.java                        |    2 
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/BaseToolsMapper.xml                     |   37 +++
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolSharpening.java                         |   14 +
 23 files changed, 638 insertions(+), 42 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 66165f8..6690650 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
@@ -507,4 +507,21 @@
 		 IPage<StocktakingPoundVo> resultPage = baseToolsService.pageWithLedgerAndConfig(page, queryWrapper);
 		 return Result.OK(resultPage);
 	 }
+
+
+
+	 @GetMapping("/listWithSharpedAndConfig")
+	 public Result<IPage<SharpeeningVo>> listWithSharpedAndConfig(
+			 SharpeeningVo sharpeeningVo,
+			 @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+			 @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+			 HttpServletRequest req) {
+
+		 // 浣跨敤 QueryGenerator 鏋勫缓 QueryWrapper
+		 QueryWrapper<SharpeeningVo> queryWrapper = QueryGenerator.initQueryWrapper(sharpeeningVo, req.getParameterMap());
+
+		 Page<SharpeeningVo> page = new Page<>(pageNo, pageSize);
+		 IPage<SharpeeningVo> resultPage = baseToolsService.pageWithSharpedAndConfig(page, queryWrapper);
+		 return Result.OK(resultPage);
+	 }
 }
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolSharpeningController.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolSharpeningController.java
index fde6ac2..67bed48 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolSharpeningController.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolSharpeningController.java
@@ -1,8 +1,15 @@
 package org.jeecg.modules.tms.controller;
 
 import java.util.List;
+import java.util.Map;
+
 import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.modules.tms.entity.ToolLedger;
 import org.jeecg.modules.tms.entity.ToolSharpening;
+import org.jeecg.modules.tms.entity.ToolsLossBoundDetail;
+import org.jeecg.modules.tms.entity.vo.ToolSharpeningVo;
 import org.jeecg.modules.tms.service.IToolsSharpeningService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -12,6 +19,8 @@
 
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+
+import javax.servlet.http.HttpServletRequest;
 
 /**
  * @Description: 鍒�鍏峰垉纾ㄨ褰� 鎺у埗鍣�
@@ -29,15 +38,29 @@
     /**
      * 鍒嗛〉鏌ヨ
      */
-    @GetMapping("/list")
-    @ApiOperation(value = "鍒嗛〉鏌ヨ", notes = "鍒嗛〉鏌ヨ")
-    public Result<IPage<ToolSharpening>> queryPageList(ToolSharpening toolSharpening,
-                                                       @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
-                                                       @RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
-        Page<ToolSharpening> page = new Page<>(pageNo, pageSize);
-        QueryWrapper<ToolSharpening> queryWrapper = new QueryWrapper<>(toolSharpening);
-        IPage<ToolSharpening> iPage = toolSharpeningService.page(page, queryWrapper);
-        return Result.OK(iPage);
+//    @GetMapping("/list")
+//    @ApiOperation(value = "鍒嗛〉鏌ヨ", notes = "鍒嗛〉鏌ヨ")
+//    public Result<IPage<ToolSharpening>> queryPageList(ToolSharpening toolSharpening,
+//                                                       @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+//                                                       @RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
+//        Page<ToolSharpening> page = new Page<>(pageNo, pageSize);
+//        QueryWrapper<ToolSharpening> queryWrapper = new QueryWrapper<>(toolSharpening);
+//        IPage<ToolSharpening> iPage = toolSharpeningService.page(page, queryWrapper);
+//        return Result.OK(iPage);
+//    }
+
+
+    @ApiOperation(value="鎶ユ崯鐢宠鍗曟槑缁�-閫氳繃涓昏〃ID鏌ヨ", notes="鎶ユ崯鐢宠鍗曟槑缁�-閫氳繃涓昏〃ID鏌ヨ")
+    @GetMapping(value = "/listToolSharpening")
+    public Result<IPage<ToolSharpeningVo>> listToolSharpening(ToolSharpeningVo toolSharpeningVo,
+                                                              @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                              @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                              HttpServletRequest req) {
+        Map<String, String[]> parameterMap = req.getParameterMap();
+        QueryWrapper<ToolSharpeningVo> queryWrapper = QueryGenerator.initQueryWrapper(toolSharpeningVo, parameterMap);
+        Page<ToolSharpeningVo> page = new Page<ToolSharpeningVo>(pageNo, pageSize);
+        IPage<ToolSharpeningVo> pageList = toolSharpeningService.queryPageList(page, parameterMap);
+        return Result.OK(pageList);
     }
 
     /**
@@ -60,16 +83,14 @@
         return Result.OK(entity);
     }
 
-    /**
-     * 鏂板
-     */
-    @PostMapping
-    @ApiOperation(value = "鏂板", notes = "鏂板")
-    public Result<ToolSharpening> add(@RequestBody ToolSharpening toolSharpening) {
-        toolSharpeningService.save(toolSharpening);
-        return Result.OK(toolSharpening);
-    }
 
+    @AutoLog(value = "tms_tool_sharpening-娣诲姞")
+    @ApiOperation(value="tms_tool_sharpening-娣诲姞", notes="tms_tool_sharpening-娣诲姞")
+    @PostMapping(value = "/add")
+    public Result<String> add(@RequestBody ToolSharpening toolSharpening) {
+        toolSharpeningService.save(toolSharpening);
+        return Result.OK("娣诲姞鎴愬姛锛�");
+    }
     /**
      * 淇敼
      */
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsLossBoundController.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsLossBoundController.java
index 68f23ea..d610f05 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsLossBoundController.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsLossBoundController.java
@@ -17,6 +17,8 @@
 import org.jeecg.modules.tms.entity.OutboundOrder;
 import org.jeecg.modules.tms.entity.ToolsLossBound;
 import org.jeecg.modules.tms.entity.ToolsLossBoundDetail;
+import org.jeecg.modules.tms.entity.dto.LossBoundFlowDto;
+import org.jeecg.modules.tms.entity.dto.OutBoundOrderFlowDto;
 import org.jeecg.modules.tms.entity.vo.OutboundDetailVo;
 import org.jeecg.modules.tms.enums.OutBillStatus;
 import org.jeecg.modules.tms.service.IToolsLossBoundDetailService;
@@ -157,13 +159,22 @@
 		return Result.OK("鎻愪氦鎴愬姛");
 	}
 
+
+
+	@AutoLog(value = "瀹℃壒娴佺▼")
+	@ApiOperation(value = "鎶ユ崯鍗�-瀹℃壒娴佺▼", notes = "鎶ユ崯鍗�-瀹℃壒娴佺▼")
+	@PostMapping("/approval")
+	public Result<?> approval(@RequestBody LossBoundFlowDto lossBoundFlowDto) {
+		toolsLossBoundService.approvalProcess(lossBoundFlowDto);
+		return Result.OK("鎿嶄綔鎴愬姛");
+	}
 	/**
 	 * 鎵归噺鍒犻櫎
 	 * @param ids
 	 * @return
 	 */
-	@AutoLog(value = "鍑哄簱鐢宠鍗曟槑缁�-鎵归噺鍒犻櫎")
-	@ApiOperation(value="鍑哄簱鐢宠鍗曟槑缁�-鎵归噺鍒犻櫎", notes="鍑哄簱鐢宠鍗曟槑缁�-鎵归噺鍒犻櫎")
+	@AutoLog(value = "鎶ユ崯鍗曟槑缁�-鎵归噺鍒犻櫎")
+	@ApiOperation(value="鎶ユ崯鍗曟槑缁�-鎵归噺鍒犻櫎", notes="鎶ユ崯鍗曟槑缁�-鎵归噺鍒犻櫎")
 	@DeleteMapping(value = "/deleteBatchLossboundDetail")
 	public Result<String> deleteBatchLossboundDetail(@RequestParam(name="ids",required=true) String ids) {
 		this.toolsLossBoundDetailService.removeByIds(Arrays.asList(ids.split(",")));
@@ -295,13 +306,13 @@
   }
 
 
-	/*--------------------------------瀛愯〃澶勭悊-鍑哄簱鐢宠鍗曟槑缁�-begin----------------------------------------------*/
+
 	/**
 	 * 閫氳繃涓昏〃ID鏌ヨ
 	 * @return
 	 */
-	//@AutoLog(value = "鍑哄簱鐢宠鍗曟槑缁�-閫氳繃涓昏〃ID鏌ヨ")
-	@ApiOperation(value="鍑烘姤鎹熺敵璇峰崟鏄庣粏-閫氳繃涓昏〃ID鏌ヨ", notes="鍑烘姤鎹熺敵璇峰崟鏄庣粏-閫氳繃涓昏〃ID鏌ヨ")
+
+	@ApiOperation(value="鎶ユ崯鐢宠鍗曟槑缁�-閫氳繃涓昏〃ID鏌ヨ", notes="鎶ユ崯鐢宠鍗曟槑缁�-閫氳繃涓昏〃ID鏌ヨ")
 	@GetMapping(value = "/listlossboundDetailByMainId")
 	public Result<IPage<ToolsLossBoundDetail>> listlossboundDetailByMainId(ToolsLossBoundDetail toolsLossBoundDetail,
 																	   @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsStocktakingBoundController.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsStocktakingBoundController.java
index a8da7df..ffef65a 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsStocktakingBoundController.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsStocktakingBoundController.java
@@ -18,6 +18,8 @@
 import org.jeecg.modules.tms.entity.BaseTools;
 import org.jeecg.modules.tms.entity.ToolsStocktakingBound;
 import org.jeecg.modules.tms.entity.ToolsStocktakingBoundDetail;
+import org.jeecg.modules.tms.entity.dto.LossBoundFlowDto;
+import org.jeecg.modules.tms.entity.dto.StocktakingBoundFlowDto;
 import org.jeecg.modules.tms.entity.vo.ToolsStocktakingVo;
 import org.jeecg.modules.tms.enums.OutBillStatus;
 import org.jeecg.modules.tms.mapper.ToolsStocktakingBoundMapper;
@@ -146,7 +148,18 @@
         return Result.OK("鎻愪氦鎴愬姛");
     }
 
-
+    /**
+     * 瀹℃壒娴佺▼
+     * @param stocktakingBoundFlowDto
+     * @return
+     */
+    @AutoLog(value = "瀹℃壒娴佺▼")
+    @ApiOperation(value = "鎶ユ崯鍗�-瀹℃壒娴佺▼", notes = "鎶ユ崯鍗�-瀹℃壒娴佺▼")
+    @PostMapping("/approval")
+    public Result<?> approval(@RequestBody StocktakingBoundFlowDto stocktakingBoundFlowDto) {
+        toolsStocktakingBoundService.approvalProcess(stocktakingBoundFlowDto);
+        return Result.OK("鎿嶄綔鎴愬姛");
+    }
     /**
      * 缂栬緫
      *
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 f34ede7..35ef615 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
@@ -6,11 +6,14 @@
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
+import org.jeecg.common.aspect.annotation.Dict;
+import org.springframework.format.annotation.DateTimeFormat;
 
 /**
  * @Description: tms_tool_sharpening
@@ -40,6 +43,8 @@
     private String toolId;
 
     /** 鍒冪(鏃堕棿 */
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "鍒冪(鏃堕棿")
     private Date sharpeningTime;
 
@@ -49,6 +54,7 @@
 
     /** 璐d换浜� */
     @ApiModelProperty(value = "璐d换浜�")
+    @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "id")
     private String responsiblePerson;
 
     /** 澶囨敞 */
@@ -64,6 +70,8 @@
     private String createBy;
 
     /** 鍒涘缓鏃堕棿 */
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "鍒涘缓鏃堕棿")
     private Date createTime;
 
@@ -72,6 +80,8 @@
     private String updateBy;
 
     /** 鏇存柊鏃堕棿 */
-    @ApiModelProperty(value = "鏇存柊鏃堕棿")
-    private Date updateTime;
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "鏇存柊鏃ユ湡")
+    private java.util.Date updateTime;
 }
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsStocktakingBound.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsStocktakingBound.java
index 076f61c..38e4313 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsStocktakingBound.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsStocktakingBound.java
@@ -88,6 +88,16 @@
     @ApiModelProperty(value = "鐩樼偣鏃堕棿")
     private java.util.Date inventoryTime;
 
+
+    /**
+     * 瀹℃牳鏃堕棿
+     */
+    @Excel(name = "approvalDate", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "瀹℃牳鏃堕棿")
+    private java.util.Date approvalDate;
+
     @TableField(exist = false)
     private List<ToolsStocktakingBoundDetail> toolsStocktakingBoundDetailList;
 }
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/LossBoundFlowDto.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/LossBoundFlowDto.java
new file mode 100644
index 0000000..65d2b09
--- /dev/null
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/LossBoundFlowDto.java
@@ -0,0 +1,12 @@
+package org.jeecg.modules.tms.entity.dto;
+
+import lombok.Data;
+import org.jeecg.modules.flowable.domain.vo.FlowTaskVo;
+
+@Data
+public class LossBoundFlowDto extends FlowTaskVo {
+    //瀹℃壒鐘舵��
+    private String status;
+    //瀹℃壒鎰忚
+    private String approvalOpinion;
+}
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/StocktakingBoundFlowDto.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/StocktakingBoundFlowDto.java
new file mode 100644
index 0000000..46ef4f6
--- /dev/null
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/StocktakingBoundFlowDto.java
@@ -0,0 +1,12 @@
+package org.jeecg.modules.tms.entity.dto;
+
+import lombok.Data;
+import org.jeecg.modules.flowable.domain.vo.FlowTaskVo;
+
+@Data
+public class StocktakingBoundFlowDto extends FlowTaskVo {
+    //瀹℃壒鐘舵��
+    private String status;
+    //瀹℃壒鎰忚
+    private String approvalOpinion;
+}
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaHolesToolsVo.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaHolesToolsVo.java
index b4b4eb7..59dbf3c 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaHolesToolsVo.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaHolesToolsVo.java
@@ -57,25 +57,25 @@
     private String positionCode;
 
     @ApiModelProperty(value = "宸ュ叿绫诲瀷;1.閫氱敤 2.涓撶敤")
-    private java.lang.String applicationType;
+    private String applicationType;
 
     @ApiModelProperty(value = "鍘傚")
-    private java.lang.String supplierId;
+    private String supplierId;
 
     @ApiModelProperty(value = "浠撳簱鐪佷唤鍩庡競")
-    private java.lang.String provinceCity;
+    private String provinceCity;
 
     @ApiModelProperty(value = "瀛樺偍浣嶇疆锛堝亸閭d釜鍘傚尯鐨勫簱锛�")
-    private java.lang.String storageLocation;
+    private String storageLocation;
 
     @ApiModelProperty(value = "璁¢噺涓诲崟浣�")
-    private java.lang.String mainUnit;
+    private String mainUnit;
 
     @ApiModelProperty(value = "璁¢噺杈呭崟浣�")
-    private java.lang.String auxiliaryUnit;
+    private String auxiliaryUnit;
 
     @ApiModelProperty(value = "鏄惁鏈夎閲忚緟鍗曚綅;1,鏈夎緟鍔╁崟浣�2.鏃犺緟鍔╁崟浣�")
-    private java.lang.String auxiliaryUnitFlag;
+    private String auxiliaryUnitFlag;
 
     @ApiModelProperty(value = "鍗曚环")
     private java.math.BigDecimal price;
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/SharpeeningVo.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/SharpeeningVo.java
new file mode 100644
index 0000000..aa9d7d8
--- /dev/null
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/SharpeeningVo.java
@@ -0,0 +1,37 @@
+package org.jeecg.modules.tms.entity.vo;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecg.common.aspect.annotation.Dict;
+
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+public class SharpeeningVo {
+    private String id;
+
+    @Dict(dictTable = "tms_tools_classify", dicText = "type_name", dicCode = "id")
+    private String classifyId;
+
+    private String toolCode;
+
+    private String foreignLanguageName;
+    private String standardLevel;
+    private String standardCode;
+    private String toolModel;
+    @Dict(dicCode = "tool_para_type")
+    private String paramaTableName;
+    private Integer totalCount;
+    @Dict(dicCode = "application_type")
+    private String applicationType;
+    private String chineseName;
+    private String supplierId;
+    private String storageLocation;
+    private String mainUnit;
+    private String toolId;
+    private String positionCode;
+    private String warehouseId;
+    private String provinceCity;
+
+}
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ToolSharpeningVo.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ToolSharpeningVo.java
new file mode 100644
index 0000000..d9d14e5
--- /dev/null
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ToolSharpeningVo.java
@@ -0,0 +1,132 @@
+package org.jeecg.modules.tms.entity.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecg.common.aspect.annotation.Dict;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Description: tms_tool_sharpening
+ * @Author: houjie
+ * @Date:   2025-05-10
+ * @Version: V1.0
+ */
+@Data
+@TableName("tms_tool_sharpening")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="ToolSharpening瀵硅薄", description="鍒�鍏峰垉纾ㄨ褰曞疄浣撶被")
+public class ToolSharpeningVo implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /** 涓婚敭ID */
+    @TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "涓婚敭ID")
+    private String id;
+
+    /** 宸ュ叿缂栫爜 */
+    @ApiModelProperty(value = "宸ュ叿缂栫爜")
+    private String toolCode;
+
+    /** 宸ュ叿缂栧彿 */
+    @ApiModelProperty(value = "宸ュ叿缂栧彿")
+    private String toolId;
+
+    /** 鍒冪(鏃堕棿 */
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "鍒冪(鏃堕棿")
+    private Date sharpeningTime;
+
+    /** 鍒冪(缁撴灉鍙婂缓璁� */
+    @ApiModelProperty(value = "鍒冪(缁撴灉鍙婂缓璁�")
+    private String sharpeningResult;
+
+    /** 璐d换浜� */
+    @ApiModelProperty(value = "璐d换浜�")
+    @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "id")
+    private String responsiblePerson;
+
+    /** 澶囨敞 */
+    @ApiModelProperty(value = "澶囨敞")
+    private String remark;
+
+    /** 绉熸埛鍙� */
+    @ApiModelProperty(value = "绉熸埛鍙�")
+    private String tenantId;
+
+    /** 鍒涘缓浜� */
+    @ApiModelProperty(value = "鍒涘缓浜�")
+    private String createBy;
+
+    /** 鍒涘缓鏃堕棿 */
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    private Date createTime;
+
+    /** 鏇存柊浜� */
+    @ApiModelProperty(value = "鏇存柊浜�")
+    private String updateBy;
+
+    /** 鏇存柊鏃堕棿 */
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "鏇存柊鏃ユ湡")
+    private Date updateTime;
+
+    @Dict(dictTable = "tms_tools_classify" , dicText = "type_name", dicCode = "id")
+    @ApiModelProperty(value = "宸ュ叿鍒嗙被")
+    private String  classifyId;
+
+
+    @Dict(dicCode = "tool_para_type")
+    @ApiModelProperty(value = "宸ュ叿鍒嗙被缂栫爜")
+    private String  paramaTableName;
+
+    @ApiModelProperty(value = "宸ュ叿鍚嶇О")
+    private String  typeName;
+
+
+    @Dict(dicCode = "application_type")
+    @ApiModelProperty(value = "宸ュ叿鍒嗙被缂栫爜")
+    private String  applicationType;
+
+
+    @ApiModelProperty(value = "鍨嬪彿/瑙勫垯")
+    private String  toolModel;
+
+    @ApiModelProperty(value = "浠撳簱鍩庡競")
+    private String  provinceCity;
+
+    @ApiModelProperty(value = "涓枃鍚嶅瓧")
+    private String  chineseName;
+
+    @ApiModelProperty(value = "鍘傚")
+    private String  supplierId;
+
+    @ApiModelProperty(value = "瀛樺偍浣嶇疆")
+    private String  positionCode;
+
+
+    @ApiModelProperty(value = "璁$畻涓诲崟浣�")
+    private String  mainUnit;
+
+
+    @ApiModelProperty(value = "搴撳尯/搴撳彿")
+    private String  warehouseId;
+
+
+
+
+}
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/BaseToolsMapper.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/BaseToolsMapper.java
index f5bb4bf..da80ca3 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/BaseToolsMapper.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/BaseToolsMapper.java
@@ -36,4 +36,6 @@
                                                @Param(Constants.WRAPPER) Wrapper<ParaBladeVo> queryWrapper);
 
     IPage<StocktakingPoundVo> pageWithLedgerAndConfig(Page<StocktakingPoundVo> page, @Param(Constants.WRAPPER) Wrapper<StocktakingPoundVo> wrapper);
+
+    IPage<SharpeeningVo> pageWithSharpedAndConfig(Page<SharpeeningVo> page, @Param(Constants.WRAPPER) Wrapper<SharpeeningVo> wrapper);
 }
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsSharpeningMapper.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsSharpeningMapper.java
index 458ed7e..5a951cc 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsSharpeningMapper.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsSharpeningMapper.java
@@ -1,7 +1,16 @@
 package org.jeecg.modules.tms.mapper;
 
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+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.OutboundDetail;
+import org.jeecg.modules.tms.entity.OutboundOrder;
 import org.jeecg.modules.tms.entity.ToolSharpening;
+import org.jeecg.modules.tms.entity.vo.OutboundDetailVo;
+import org.jeecg.modules.tms.entity.vo.ToolSharpeningVo;
 
 /**
  * @Description: tms_tool_sharpening Mapper 鎺ュ彛
@@ -9,5 +18,6 @@
  * @Date:   2025-05-10
  */
 public interface ToolsSharpeningMapper extends BaseMapper<ToolSharpening> {
-    // 鍙嚜瀹氫箟鏌ヨ鏂规硶
+    IPage<ToolSharpeningVo> queryPageList(Page<ToolSharpeningVo> page,
+                                          @Param(Constants.WRAPPER) Wrapper<ToolSharpeningVo> queryWrapper);
 }
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 a8d4349..4d01ce4 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
@@ -436,4 +436,41 @@
         ORDER BY t.create_time DESC
     </select>
 
+
+    <select id="pageWithSharpedAndConfig" resultType="org.jeecg.modules.tms.entity.vo.SharpeeningVo">
+        SELECT
+        t.id,
+        t.classify_id AS classifyId,
+        t.tool_code AS toolCode,
+        t.foreign_language_name AS foreignLanguageName,
+        t.standard_level AS standardLevel,
+        t.standard_code AS standardCode,
+        t.tool_model AS toolModel,
+        t.parama_table_name AS paramaTableName,
+        t.tool_id AS toolId,
+        t1.total_count AS totalCount,
+        t1.available_count AS availableCount,
+        t4.position_code AS positionCode,
+        t3.application_type AS applicationType,
+        t3.chinese_name AS chineseName,
+        t3.supplier_id AS supplierId,
+        t3.storage_location AS storageLocation,
+        t3.main_unit AS mainUnit,
+        t4.warehouse_id AS warehouseId,
+        t3.province_city AS provinceCity
+
+        FROM tms_base_tools t
+        LEFT JOIN tms_tool_ledger t1 ON t1.tool_id = t.id
+        LEFT JOIN tms_tools_config_property t3 ON t3.tool_code = t.id
+        LEFT JOIN tms_tool_ledger_detail t4 ON t4.tool_code = t.id
+
+        <where>
+            <if test="ew.paramNameValuePairs.toolCode != null and ew.paramNameValuePairs.toolCode != ''">
+                AND t.tool_code LIKE CONCAT('%', #{ew.paramNameValuePairs.toolCode}, '%')
+            </if>
+        </where>
+
+        ORDER BY t.create_time DESC
+    </select>
+
 </mapper>
\ No newline at end of file
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsSharpeningMapper.xml b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsSharpeningMapper.xml
index 481ae06..34e329a 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsSharpeningMapper.xml
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsSharpeningMapper.xml
@@ -1,5 +1,26 @@
 <?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="org.jeecg.modules.tms.mapper.ToolsSharpeningMapper">
-
+    <select id="queryPageList" resultType="org.jeecg.modules.tms.entity.vo.ToolSharpeningVo">
+        SELECT
+            t.*,
+            t1.classify_id AS classifyId,
+            t1.parama_table_name AS paramaTableName,
+            t2.type_name AS typeName,
+            t3.application_type AS applicationType,
+            t3.tool_model AS toolModel,
+            t3.province_city AS provinceCity,
+            t3.chinese_name AS chineseName,
+            t3.supplier_id AS supplierId,
+            t3.storage_location AS storageLocation,
+            t3.main_unit AS mainUnit,
+            t4.position_code AS positionCode,
+            t4.warehouse_id AS warehouseId
+        FROM tms_tool_sharpening t
+                 LEFT JOIN tms_base_tools t1 ON t1.id = t.tool_code
+                 LEFT JOIN tms_tools_classify t2 ON t1.classify_id = t2.id
+                 LEFT JOIN tms_tools_config_property t3 ON t3.tool_code = t.tool_id
+                 LEFT JOIN tms_tool_ledger_detail t4 ON t4.tool_code = t.tool_id
+        ${ew.customSqlSegment}
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IBaseToolsService.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IBaseToolsService.java
index eeb5752..b01cbed 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IBaseToolsService.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IBaseToolsService.java
@@ -30,4 +30,5 @@
 
     IPage<ParaBladeVo> paraBladeList(Page<ParaBladeVo> page, Map<String, String[]> parameterMap);
     IPage<StocktakingPoundVo> pageWithLedgerAndConfig(Page<StocktakingPoundVo> page, QueryWrapper<StocktakingPoundVo> queryWrapper);
+    IPage<SharpeeningVo> pageWithSharpedAndConfig(Page<SharpeeningVo> page, QueryWrapper<SharpeeningVo> queryWrapper);
 }
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsLossBoundService.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsLossBoundService.java
index a197313..9964c40 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsLossBoundService.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsLossBoundService.java
@@ -5,6 +5,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.modules.tms.entity.ToolsLossBound;
+import org.jeecg.modules.tms.entity.dto.LossBoundFlowDto;
 
 import java.io.Serializable;
 import java.util.Collection;
@@ -46,4 +47,7 @@
      * @return
      */
     boolean submintOrder(String id);
+
+
+    void  approvalProcess(LossBoundFlowDto lossBoundFlowDto);
 }
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsSharpeningService.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsSharpeningService.java
index d06399d..060d369 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsSharpeningService.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsSharpeningService.java
@@ -1,7 +1,13 @@
 package org.jeecg.modules.tms.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.jeecg.modules.tms.entity.ToolSharpening;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.tms.entity.ToolsLossBoundDetail;
+import org.jeecg.modules.tms.entity.vo.ToolSharpeningVo;
+
+import java.util.Map;
 
 /**
  * @Description: 鍒�鍏峰垉纾ㄨ褰� Service 鎺ュ彛
@@ -9,5 +15,5 @@
  * @Date:   2025-05-10
  */
 public interface IToolsSharpeningService extends IService<ToolSharpening> {
-
+    IPage<ToolSharpeningVo> queryPageList(Page<ToolSharpeningVo> page, Map<String, String[]> parameterMap);
 }
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsStocktakingBoundService.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsStocktakingBoundService.java
index 717c9b1..84f5c52 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsStocktakingBoundService.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsStocktakingBoundService.java
@@ -3,6 +3,9 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.modules.tms.entity.ToolsStocktakingBound;
 import org.jeecg.modules.tms.entity.ToolsStocktakingBoundDetail;
+import org.jeecg.modules.tms.entity.dto.LossBoundFlowDto;
+import org.jeecg.modules.tms.entity.dto.StocktakingBoundFlowDto;
+import org.jeecg.modules.tms.entity.vo.StocktakingPoundVo;
 
 import java.io.Serializable;
 import java.util.Collection;
@@ -53,4 +56,10 @@
      */
     boolean submintOrder(String id);
 
+    /**
+     * 瀹℃壒娴佺▼
+     * @param stocktakingBoundFlowDto
+     */
+    void  approvalProcess(StocktakingBoundFlowDto stocktakingBoundFlowDto);
+
 }
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/BaseToolsServiceImpl.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/BaseToolsServiceImpl.java
index 595cfcb..fdcb8d4 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/BaseToolsServiceImpl.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/BaseToolsServiceImpl.java
@@ -139,4 +139,9 @@
     public IPage<StocktakingPoundVo> pageWithLedgerAndConfig(Page<StocktakingPoundVo> page, QueryWrapper<StocktakingPoundVo> queryWrapper) {
         return baseMapper.pageWithLedgerAndConfig(page, queryWrapper);
     }
+
+    @Override
+    public IPage<SharpeeningVo> pageWithSharpedAndConfig(Page<SharpeeningVo> page, QueryWrapper<SharpeeningVo> queryWrapper) {
+        return baseMapper.pageWithSharpedAndConfig(page, queryWrapper);
+    }
 }
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsLossBoundServiceImpl.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsLossBoundServiceImpl.java
index b789be8..8e3ff5b 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsLossBoundServiceImpl.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsLossBoundServiceImpl.java
@@ -4,6 +4,7 @@
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -12,9 +13,13 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.apache.shiro.SecurityUtils;
+import org.flowable.engine.TaskService;
+import org.flowable.task.api.Task;
 import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness;
+import org.jeecg.modules.flowable.apithird.business.service.IFlowMyBusinessService;
 import org.jeecg.modules.flowable.apithird.service.FlowCallBackServiceI;
 import org.jeecg.modules.flowable.apithird.service.FlowCommonService;
 import org.jeecg.modules.flowable.service.IFlowDefinitionService;
@@ -22,7 +27,9 @@
 import org.jeecg.modules.system.service.ISysBusinessCodeRuleService;
 import org.jeecg.modules.tms.entity.ToolsLossBound;
 import org.jeecg.modules.tms.entity.ToolsLossBoundDetail;
+import org.jeecg.modules.tms.entity.dto.LossBoundFlowDto;
 import org.jeecg.modules.tms.enums.OutBillStatus;
+import org.jeecg.modules.tms.enums.OutBoundStatusEnum;
 import org.jeecg.modules.tms.mapper.ToolsLossBoundDetailMapper;
 import org.jeecg.modules.tms.mapper.ToolsLossBoundMapper;
 import org.jeecg.modules.tms.service.IToolsLossBoundDetailService;
@@ -58,7 +65,10 @@
     private IFlowTaskService flowTaskService;
     @Autowired
     private ISysBusinessCodeRuleService businessCodeRuleService;
-
+    @Autowired
+    private IFlowMyBusinessService flowMyBusinessService;
+    @Autowired
+    private TaskService taskService;
 
     @Override
     public void delMain(String id) {
@@ -77,9 +87,9 @@
     @Override
     public void addTotal(ToolsLossBound toolsLossBound) {
         LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
-         if (loginUser != null){
-             toolsLossBound.setHandler(loginUser.getId());
-         }
+        if (loginUser != null) {
+            toolsLossBound.setHandler(loginUser.getId());
+        }
         toolsLossBound.setOrderCode(businessCodeRuleService.generateBusinessCodeSeq("LossBound"));
         toolsLossBound.setOrderStatus(OutBillStatus.DRAFT.getValue());
         save(toolsLossBound);
@@ -165,6 +175,93 @@
     }
 
     @Override
+    public void approvalProcess(LossBoundFlowDto lossBoundFlowDto) {
+        if (StrUtil.isBlank(lossBoundFlowDto.getTaskId()) || StrUtil.isBlank(lossBoundFlowDto.getDataId())) {
+            throw new JeecgBootException("闈炴硶鍙傛暟锛�");
+        }
+
+        // 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        if (user == null || StrUtil.isBlank(user.getId())) {
+            throw new JeecgBootException("璐﹀彿涓嶅瓨鍦�");
+        }
+
+        //鑾峰彇鎶ユ崯鍗曚俊鎭�
+        ToolsLossBound toolsLossBound = getById(lossBoundFlowDto.getDataId());
+        if (toolsLossBound == null) {
+            throw new JeecgBootException("鏈壘鍒板搴旂殑鍑哄簱鐢宠鍗曪紒");
+        }
+
+        //鑾峰彇娴佺▼涓氬姟璁板綍
+        FlowMyBusiness flowMyBusiness = getFlowMyBusiness(lossBoundFlowDto.getInstanceId());
+        if (flowMyBusiness == null) {
+            throw new JeecgBootException("娴佺▼璁板綍涓嶅瓨鍦�");
+        }
+
+        // 妫�鏌ョ敤鎴锋槸鍚︽湁鏉冮檺鎿嶄綔浠诲姟
+        if (!isUserAuthorized(flowMyBusiness, user)) {
+            throw new JeecgBootException("鐢ㄦ埛鏃犳潈鎿嶄綔姝や换鍔�");
+        }
+
+        // 璁ら浠诲姟
+        if (!claimTask(flowMyBusiness.getTaskId(), user)) {
+            throw new JeecgBootException("浠诲姟涓嶅瓨鍦ㄣ�佸凡瀹屾垚鎴栧凡琚粬浜鸿棰�");
+        }
+
+        //璁剧疆娴佺▼鍙橀噺
+        setupProcessVariables(lossBoundFlowDto, toolsLossBound, user);
+
+        //瀹屾垚娴佺▼浠诲姟
+        Result result = flowTaskService.complete(lossBoundFlowDto);
+
+        //鏍规嵁浠诲姟瀹屾垚缁撴灉鏇存柊鐢宠鍗曠姸鎬�
+        if (result.isSuccess()) {
+            toolsLossBound.setOrderStatus(lossBoundFlowDto.getStatus());
+            if (OutBillStatus.APPROVED.getValue().equals(lossBoundFlowDto.getStatus())) {
+                toolsLossBound.setOrderStatus(OutBoundStatusEnum.NOT_OUTBOUND.getValue());
+            }
+            toolsLossBound.setApprovalDate(new Date());
+            toolsLossBound.setApprovalOpinion(lossBoundFlowDto.getApprovalOpinion());
+            updateById(toolsLossBound);
+        }
+    }
+
+    private void setupProcessVariables(LossBoundFlowDto lossBoundFlowDto, ToolsLossBound toolsLossBound, LoginUser user) {
+        if (OutBillStatus.SUBMITTED.getValue().equals(toolsLossBound.getOrderStatus()) && user.getUsername().equals(toolsLossBound.getReviewer())) {
+            Map<String, Object> values = new HashMap<>();
+            values.put("dataId", toolsLossBound.getId());
+            values.put("organization", lossBoundFlowDto.getApprovalOpinion());
+            values.put("comment", lossBoundFlowDto.getApprovalOpinion());
+            values.put("status", lossBoundFlowDto.getStatus());
+            values.put("NextAssignee", Collections.singletonList(toolsLossBound.getReviewer()));
+            lossBoundFlowDto.setValues(values);
+        }
+    }
+
+    private FlowMyBusiness getFlowMyBusiness(String instanceId) {
+        List<FlowMyBusiness> businessList = flowMyBusinessService.list(
+                new LambdaQueryWrapper<FlowMyBusiness>().eq(FlowMyBusiness::getProcessInstanceId, instanceId));
+        return businessList.isEmpty() ? null : businessList.get(0);
+    }
+
+    private boolean isUserAuthorized(FlowMyBusiness flowMyBusiness, LoginUser user) {
+        List<String> todoUsers = JSON.parseArray(flowMyBusiness.getTodoUsers(), String.class);
+        return todoUsers != null && todoUsers.contains(user.getUsername());
+    }
+
+    private boolean claimTask(String taskId, LoginUser user) {
+        Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
+        if (task == null) {
+            return false;
+        }
+        if (task.getAssignee() != null && !task.getAssignee().equals(user.getUsername())) {
+            return false;
+        }
+        taskService.claim(taskId, user.getUsername());
+        return true;
+    }
+
+    @Override
     public void afterFlowHandle(FlowMyBusiness business) {
         business.getTaskNameId();//鎺ヤ笅鏉ュ鎵圭殑鑺傜偣
         business.getValues();//鍓嶇浼犺繘鏉ョ殑鍙傛暟
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsSharpeningServiceImpl.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsSharpeningServiceImpl.java
index 3831e2d..5a64898 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsSharpeningServiceImpl.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsSharpeningServiceImpl.java
@@ -1,10 +1,18 @@
 package org.jeecg.modules.tms.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.jeecg.modules.tms.entity.ToolSharpening;
+import org.jeecg.modules.tms.entity.ToolsLossBoundDetail;
+import org.jeecg.modules.tms.entity.vo.ToolSharpeningVo;
 import org.jeecg.modules.tms.mapper.ToolsSharpeningMapper;
 import org.jeecg.modules.tms.service.IToolsSharpeningService;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import java.util.Map;
 
 /**
  * @Description: 鍒�鍏峰垉纾ㄨ褰� Service 瀹炵幇绫�
@@ -13,5 +21,28 @@
  */
 @Service
 public class ToolsSharpeningServiceImpl extends ServiceImpl<ToolsSharpeningMapper, ToolSharpening> implements IToolsSharpeningService {
-    // 濡傞渶鎵╁睍閫昏緫鍙湪姝ゆ坊鍔�
+    @Override
+    public IPage<ToolSharpeningVo> queryPageList(Page<ToolSharpeningVo> page, Map<String, String[]> parameterMap) {
+        QueryWrapper<ToolSharpeningVo> queryWrapper = Wrappers.query();
+        String[] ids = parameterMap.get("id");
+        if (ids != null && ids.length > 0) {
+            queryWrapper.like("t.id", ids[0]);
+        }
+        String[] toolIds = parameterMap.get("toolId");
+        if (toolIds != null && toolIds.length > 0) {
+            queryWrapper.like("t.tool_id", toolIds[0]);
+        }
+        String[] startTimes = parameterMap.get("startTime");
+        if (startTimes != null && startTimes.length > 0) {
+            queryWrapper.ge("t.create_time", startTimes[0]);
+        }
+        String[] endTimes = parameterMap.get("endTime");
+        if (endTimes != null && endTimes.length > 0) {
+            queryWrapper.le("t.create_time", endTimes[0]);
+        }
+        queryWrapper.orderByDesc("t.create_time");
+        return this.baseMapper.queryPageList(page, queryWrapper);
+    }
+
+
 }
diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsStocktakingBoundServiceImpl.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsStocktakingBoundServiceImpl.java
index 1548e1d..d263f68 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsStocktakingBoundServiceImpl.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsStocktakingBoundServiceImpl.java
@@ -2,13 +2,18 @@
 
 
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.apache.shiro.SecurityUtils;
+import org.flowable.engine.TaskService;
+import org.flowable.task.api.Task;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness;
+import org.jeecg.modules.flowable.apithird.business.service.IFlowMyBusinessService;
 import org.jeecg.modules.flowable.apithird.service.FlowCallBackServiceI;
 import org.jeecg.modules.flowable.apithird.service.FlowCommonService;
 import org.jeecg.modules.flowable.service.IFlowDefinitionService;
@@ -16,9 +21,13 @@
 import org.jeecg.modules.system.entity.SysUser;
 import org.jeecg.modules.system.service.ISysUserService;
 import org.jeecg.modules.tms.entity.BaseTools;
+import org.jeecg.modules.tms.entity.ToolsLossBound;
 import org.jeecg.modules.tms.entity.ToolsStocktakingBound;
 import org.jeecg.modules.tms.entity.ToolsStocktakingBoundDetail;
+import org.jeecg.modules.tms.entity.dto.LossBoundFlowDto;
+import org.jeecg.modules.tms.entity.dto.StocktakingBoundFlowDto;
 import org.jeecg.modules.tms.enums.OutBillStatus;
+import org.jeecg.modules.tms.enums.OutBoundStatusEnum;
 import org.jeecg.modules.tms.mapper.ToolsStocktakingBoundDetailMapper;
 import org.jeecg.modules.tms.mapper.ToolsStocktakingBoundMapper;
 import org.jeecg.modules.tms.service.IToolsStocktakingBoundService;
@@ -53,6 +62,11 @@
     private IFlowDefinitionService flowDefinitionService;
     @Autowired
     private IFlowTaskService flowTaskService;
+    @Autowired
+    private IFlowMyBusinessService flowMyBusinessService;
+    @Autowired
+    private TaskService taskService;
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void saveMain(ToolsStocktakingBound toolsStocktakingBound, List<ToolsStocktakingBoundDetail> toolsStocktakingBoundDetailList) {
@@ -99,6 +113,7 @@
             toolsStocktakingBoundMapper.deleteById(id);
         }
     }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean submintOrder(String id) {
@@ -140,13 +155,96 @@
     }
 
 
+    @Override
+    public void approvalProcess(StocktakingBoundFlowDto stocktakingBoundFlowDto) {
+        if (StrUtil.isBlank(stocktakingBoundFlowDto.getTaskId()) || StrUtil.isBlank(stocktakingBoundFlowDto.getDataId())) {
+            throw new JeecgBootException("闈炴硶鍙傛暟锛�");
+        }
 
+        // 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        if (user == null || StrUtil.isBlank(user.getId())) {
+            throw new JeecgBootException("璐﹀彿涓嶅瓨鍦�");
+        }
 
+        //鑾峰彇鎶ユ崯鍗曚俊鎭�
+        ToolsStocktakingBound toolsStocktakingBound = getById(stocktakingBoundFlowDto.getDataId());
+        if (toolsStocktakingBound == null) {
+            throw new JeecgBootException("鏈壘鍒板搴旂殑鍑哄簱鐢宠鍗曪紒");
+        }
 
+        //鑾峰彇娴佺▼涓氬姟璁板綍
+        FlowMyBusiness flowMyBusiness = getFlowMyBusiness(stocktakingBoundFlowDto.getInstanceId());
+        if (flowMyBusiness == null) {
+            throw new JeecgBootException("娴佺▼璁板綍涓嶅瓨鍦�");
+        }
+
+        // 妫�鏌ョ敤鎴锋槸鍚︽湁鏉冮檺鎿嶄綔浠诲姟
+        if (!isUserAuthorized(flowMyBusiness, user)) {
+            throw new JeecgBootException("鐢ㄦ埛鏃犳潈鎿嶄綔姝や换鍔�");
+        }
+
+        // 璁ら浠诲姟
+        if (!claimTask(flowMyBusiness.getTaskId(), user)) {
+            throw new JeecgBootException("浠诲姟涓嶅瓨鍦ㄣ�佸凡瀹屾垚鎴栧凡琚粬浜鸿棰�");
+        }
+
+        //璁剧疆娴佺▼鍙橀噺
+        setupProcessVariables(stocktakingBoundFlowDto, toolsStocktakingBound, user);
+
+        //瀹屾垚娴佺▼浠诲姟
+        Result result = flowTaskService.complete(stocktakingBoundFlowDto);
+
+        //鏍规嵁浠诲姟瀹屾垚缁撴灉鏇存柊鐢宠鍗曠姸鎬�
+        if (result.isSuccess()) {
+            toolsStocktakingBound.setApprovalStatus(stocktakingBoundFlowDto.getStatus());
+            if (OutBillStatus.APPROVED.getValue().equals(stocktakingBoundFlowDto.getStatus())) {
+                toolsStocktakingBound.setApprovalStatus(OutBoundStatusEnum.NOT_OUTBOUND.getValue());
+            }
+            toolsStocktakingBound.setApprovalDate(new Date());
+            toolsStocktakingBound.setApprovalOpinion(stocktakingBoundFlowDto.getApprovalOpinion());
+            updateById(toolsStocktakingBound);
+        }
+    }
+
+    private void setupProcessVariables(StocktakingBoundFlowDto stocktakingBoundFlowDto, ToolsStocktakingBound toolsStocktakingBound, LoginUser user) {
+        if (OutBillStatus.SUBMITTED.getValue().equals(toolsStocktakingBound.getApprovalStatus()) && user.getUsername().equals(toolsStocktakingBound.getReviewer())) {
+            Map<String, Object> values = new HashMap<>();
+            values.put("dataId", toolsStocktakingBound.getId());
+            values.put("organization", stocktakingBoundFlowDto.getApprovalOpinion());
+            values.put("comment", stocktakingBoundFlowDto.getApprovalOpinion());
+            values.put("status", stocktakingBoundFlowDto.getStatus());
+            values.put("NextAssignee", Collections.singletonList(toolsStocktakingBound.getReviewer()));
+            stocktakingBoundFlowDto.setValues(values);
+        }
+    }
+
+    private FlowMyBusiness getFlowMyBusiness(String instanceId) {
+        List<FlowMyBusiness> businessList = flowMyBusinessService.list(
+                new LambdaQueryWrapper<FlowMyBusiness>().eq(FlowMyBusiness::getProcessInstanceId, instanceId));
+        return businessList.isEmpty() ? null : businessList.get(0);
+    }
+
+    private boolean isUserAuthorized(FlowMyBusiness flowMyBusiness, LoginUser user) {
+        List<String> todoUsers = JSON.parseArray(flowMyBusiness.getTodoUsers(), String.class);
+        return todoUsers != null && todoUsers.contains(user.getUsername());
+    }
+
+    private boolean claimTask(String taskId, LoginUser user) {
+        Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
+        if (task == null) {
+            return false;
+        }
+        if (task.getAssignee() != null && !task.getAssignee().equals(user.getUsername())) {
+            return false;
+        }
+        taskService.claim(taskId, user.getUsername());
+        return true;
+    }
     @Override
     public void afterFlowHandle(FlowMyBusiness business) {
         business.getTaskNameId();//鎺ヤ笅鏉ュ鎵圭殑鑺傜偣
-        business.getValues();//鍓嶇浼犺繘鏉ョ殑鍙傛暟
+        business.getValues();
         business.getActStatus();
     }
 

--
Gitblit v1.9.3