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

---
 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/OutboundOrderServiceImpl.java |   97 +++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 87 insertions(+), 10 deletions(-)

diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/OutboundOrderServiceImpl.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/OutboundOrderServiceImpl.java
index 221f064..936e09c 100644
--- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/OutboundOrderServiceImpl.java
+++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/OutboundOrderServiceImpl.java
@@ -30,10 +30,8 @@
 import org.jeecg.modules.tms.entity.dto.OutBoundOrderFlowDto;
 import org.jeecg.modules.tms.entity.dto.OutBoundRequestDto;
 import org.jeecg.modules.tms.entity.dto.OutboundOrderAndDetailDto;
-import org.jeecg.modules.tms.enums.OutBillStatus;
-import org.jeecg.modules.tms.enums.OutBoundStatusEnum;
-import org.jeecg.modules.tms.enums.OutStorehouseType;
-import org.jeecg.modules.tms.enums.ToolCirculationStatus;
+import org.jeecg.modules.tms.entity.vo.SelectOutboundToolVo;
+import org.jeecg.modules.tms.enums.*;
 import org.jeecg.modules.tms.mapper.OutboundDetailMapper;
 import org.jeecg.modules.tms.convert.OutboundOrderConvert;
 import org.jeecg.modules.tms.mapper.OutboundOrderMapper;
@@ -67,6 +65,8 @@
 	private IOutStoreDetailService outStoreDetailService;
 	@Autowired
 	private IBaseToolsService baseToolsService;
+	@Autowired
+	private IToolsSharpeningService toolsSharpeningService;
 	@Autowired
 	private ISysBusinessCodeRuleService businessCodeRuleService;
 	@Autowired
@@ -206,13 +206,13 @@
 			String toolCode = detail.getToolCode();
 			List<ToolLedgerDetail> ledgerDetailList = toolLedgerDetailList.stream().filter(item -> Objects.equals(item.getToolCode(), toolCode)
 					&& Objects.equals(item.getToolId(), detail.getToolId())).collect(Collectors.toList());
+			BaseTools tools = baseToolsService.getById(toolCode);
 			if (CollectionUtil.isEmpty(ledgerDetailList)) {
-				BaseTools tools = baseToolsService.getById(toolCode);
 				throw new JeecgBootException("缂栫爜涓恒��" + tools.getToolCode() + "銆戠殑宸ュ叿锛屽簱瀛樹笉瓒筹紒");
 			} else {
 				ToolLedgerDetail toolLedgerDetail = ledgerDetailList.get(0);
 				if (toolLedgerDetail.getQuantity().compareTo(detail.getOutboundQuantity()) < 0) {
-					throw new JeecgBootException("缂栫爜涓恒��" + toolLedgerDetail.getToolCode() + "銆戠殑宸ュ叿锛屽簱瀛樹笉瓒筹紒");
+					throw new JeecgBootException("缂栫爜涓恒��" + tools.getToolCode() + "銆戠殑宸ュ叿锛屽簱瀛樹笉瓒筹紒");
 				} else {
 					//鎵e噺鍙拌处鏄庣粏涓殑搴撳瓨锛屾墽琛岄攣搴�
 					if (StrUtil.isBlank(detail.getToolId())) {
@@ -386,22 +386,32 @@
 		Map<String, ToolLedger> toolLedgerMap = toolLedgerService.list(new LambdaQueryWrapper<ToolLedger>().in(ToolLedger::getToolId, toolIdList)).stream()
 				.collect(Collectors.toMap(ToolLedger::getToolId, item -> item, (k1, k2) -> k1));
 
-		LambdaQueryWrapper<ToolLedgerDetail> queryWrapper = new LambdaQueryWrapper<>();
+		LambdaQueryWrapper<ToolLedgerDetail> ledgerDetailQueryWrapper = new LambdaQueryWrapper<>();
+		LambdaQueryWrapper<ToolSharpening> toolSharpenQueryWrapper = new LambdaQueryWrapper<>();
 		for (int i = 0; i < outboundDetailList.size(); i++) {
 			if (i > 0) {
-				queryWrapper.or();
+				ledgerDetailQueryWrapper.or();
+				toolSharpenQueryWrapper.or();
 			}
 			OutboundDetail detail = outboundDetailList.get(i);
-			queryWrapper.or(wrapper ->
+			ledgerDetailQueryWrapper.or(wrapper ->
 					wrapper.eq(ToolLedgerDetail::getToolCode, detail.getToolCode())
 							.eq(ToolLedgerDetail::getToolId, detail.getToolId()) //濡傛灉涓嶇鍒版妸锛岃瀛楁涓虹┖
 			);
+			toolSharpenQueryWrapper.or(wrapper ->
+					wrapper.eq(ToolSharpening::getToolCode, detail.getToolCode())
+							.eq(ToolSharpening::getToolId, detail.getToolId())
+							.eq(ToolSharpening::getSharpeningStatus, SharpenStatus.PENDING.getValue())
+			);
 		}
-		List<ToolLedgerDetail> toolLedgerDetailList = toolLedgerDetailService.list(queryWrapper);
+		List<ToolLedgerDetail> toolLedgerDetailList = toolLedgerDetailService.list(ledgerDetailQueryWrapper);
+		List<ToolSharpening> toolSharpeningList = toolsSharpeningService.list(toolSharpenQueryWrapper);
+
 		List<ToolLedger> toolLedgerUpdateList = CollectionUtil.newArrayList();
 		List<ToolLedgerDetail> toolLedgerDetailUpdateList = CollectionUtil.newArrayList();
 		List<OutStoreDetail> outStoreAddList = CollectionUtil.newArrayList();
 		List<OutboundDetail> outboundDetailUpdateList = CollectionUtil.newArrayList();
+		List<ToolSharpening> toolSharpeningUpdateList = CollectionUtil.newArrayList();
 
 		for (OutboundDetail detail : outboundDetailList) {
 			//鏇存柊搴撳瓨鍙拌处
@@ -448,6 +458,15 @@
 						toolLedgerDetailUpdateList.add(item);
 					});
 
+			if (outStorehouseType == OutStorehouseType.GRINDING_OUTBOUND) {
+				//鏇存柊鍒冪(鍗曠姸鎬�
+				toolSharpeningList.stream().filter(item -> item.getToolCode().equals(detail.getToolCode()) && item.getToolId().equals(detail.getToolId()))
+						.findFirst().ifPresent(item -> {
+							item.setSharpeningStatus(SharpenStatus.IN_PROGRESS.getValue());
+							toolSharpeningUpdateList.add(item);
+						});
+			}
+
 			//璁板綍鍑哄簱娴佹按
 			OutStoreDetail outStoreDetail = new OutStoreDetail()
 					.setToolCode(detail.getToolCode())
@@ -473,6 +492,7 @@
 		toolLedgerDetailService.updateBatchById(toolLedgerDetailUpdateList);
 		outStoreDetailService.saveBatch(outStoreAddList);
 		outboundDetailService.updateBatchById(outboundDetailUpdateList);
+		toolsSharpeningService.updateBatchById(toolSharpeningUpdateList);
 
 		//鏇存柊鐢宠鍗�
 		boolean allMatch = outboundDetailService.list(new LambdaQueryWrapper<OutboundDetail>()
@@ -534,7 +554,10 @@
 				.toMap(OutBoundAddDto::getToolLedgerDetailId, item -> item, (k1, k2) -> k1));
 		Map<String, ToolLedgerDetail> toolLedgerDetailMap = toolLedgerDetailService.listByIds(boundAddDtoMap.keySet()).stream()
 				.collect(Collectors.toMap(ToolLedgerDetail::getId, item -> item, (k1, k2) -> k1));
+		List<ToolSharpening> toolSharpeningList = toolsSharpeningService.list(new LambdaQueryWrapper<ToolSharpening>()
+				.in(ToolSharpening::getToolCode, toolBoundQuantityMap.keySet()).eq(ToolSharpening::getSharpeningStatus, SharpenStatus.PENDING.getValue()));
 		List<ToolLedgerDetail> toolLedgerDetailUpdateList = CollectionUtil.newArrayList();
+		List<ToolSharpening> toolSharpeningUpdateList = CollectionUtil.newArrayList();
 		for (String toolLedgerDetailId : boundAddDtoMap.keySet()) {
 			OutBoundAddDto outBoundAddDto = boundAddDtoMap.get(toolLedgerDetailId);
 			BigDecimal outboundQuantity = outBoundAddDto.getOutboundQuantity();
@@ -563,6 +586,12 @@
 							break;
 						case GRINDING_OUTBOUND:
 							toolLedgerDetail.setStatus(ToolCirculationStatus.GRINDING.getValue());
+							//鍚屾椂鏇存柊鍒冪(鍗曠姸鎬�
+							toolSharpeningList.stream().filter(item -> item.getToolCode().equals(outBoundAddDto.getToolCode())
+									&& item.getToolId().equals(outBoundAddDto.getToolId())).findFirst().ifPresent(item -> {
+								item.setSharpeningStatus(SharpenStatus.IN_PROGRESS.getValue());
+								toolSharpeningUpdateList.add(item);
+							});
 							break;
 						default:
 							throw new JeecgBootException("鏈煡鐨勫嚭搴撶被鍨嬶紒");
@@ -573,6 +602,7 @@
 		}
 		toolLedgerService.updateBatchById(toolLedgerUpdateList);
 		toolLedgerDetailService.updateBatchById(toolLedgerDetailUpdateList);
+		toolsSharpeningService.updateBatchById(toolSharpeningUpdateList);
 		//璁板綍鍑哄簱娴佹按
 		List<OutStoreDetail> outStoreAddList = CollectionUtil.newArrayList();
 		for (OutBoundAddDto outBoundAddDto : boundAddList) {
@@ -588,6 +618,53 @@
 		outStoreDetailService.saveBatch(outStoreAddList);
 	}
 
+	@Override
+	public IPage<SelectOutboundToolVo> querySharpenOutboundToolPageList(Page<SelectOutboundToolVo> page, Map<String, String[]> parameterMap) {
+		QueryWrapper<SelectOutboundToolVo> queryWrapper = Wrappers.query();
+		String[] toolCodes = parameterMap.get("toolCode");
+		if (toolCodes != null && toolCodes.length > 0) {
+			queryWrapper.like("t3.tool_code", toolCodes[0]);
+		}
+		String[] classifyIds = parameterMap.get("classifyId");
+		if (classifyIds != null && classifyIds.length > 0) {
+			queryWrapper.eq("t3.classify_id", classifyIds[0]);
+		}
+		String[] excludeIds = parameterMap.get("excludeIds");
+		if (excludeIds != null && excludeIds.length > 0) {
+			String[] idArray = excludeIds[0].split(",");
+			queryWrapper.notIn("t1.id", idArray);
+		}
+		queryWrapper.eq("t1.sharpening_status", SharpenStatus.PENDING.getValue());
+		return this.baseMapper.querySharpenOutboundToolPageList(page, queryWrapper);
+	}
+
+	@Override
+	public IPage<SelectOutboundToolVo> queryBorrowOutboundToolPageList(Page<SelectOutboundToolVo> page, Map<String, String[]> parameterMap) {
+		QueryWrapper<SelectOutboundToolVo> queryWrapper = Wrappers.query();
+		String[] toolCodes = parameterMap.get("toolCode");
+		if (toolCodes != null && toolCodes.length > 0) {
+			queryWrapper.like("p.tool_code", toolCodes[0]);
+		}
+		String[] statuses = parameterMap.get("status");
+		if (statuses != null && statuses.length > 0) {
+			queryWrapper.eq("t.status", statuses[0]);
+		}
+		String[] quantities = parameterMap.get("quantity");
+		if (quantities != null && quantities.length > 0) {
+			queryWrapper.gt("t.quantity", quantities[0]);
+		}
+		String[] classifyIds = parameterMap.get("classifyId");
+		if (classifyIds != null && classifyIds.length > 0) {
+			queryWrapper.eq("p.classify_id", classifyIds[0]);
+		}
+		String[] excludeIds = parameterMap.get("excludeIds");
+		if (excludeIds != null && excludeIds.length > 0) {
+			String[] idArray = excludeIds[0].split(",");
+			queryWrapper.notIn("t.id", idArray);
+		}
+		return this.baseMapper.queryBorrowOutboundToolPageList(page, queryWrapper);
+	}
+
 
 	private boolean fromOneApply(List<OutBoundRequestDto> outBoundRequestList) {
 		long count = outBoundRequestList.stream().map(OutBoundRequestDto::getOutBoundOrderId).distinct().count();

--
Gitblit v1.9.3