From bcd90314646203b32f73c89c1c2f89eaa96e2c9f Mon Sep 17 00:00:00 2001 From: zhangherong <571457620@qq.com> Date: 星期五, 18 七月 2025 18:05:35 +0800 Subject: [PATCH] art: 设备台账-查询需要做技术状态鉴定的设备列表 --- lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamSecondMaintenanceOrderController.java | 330 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 317 insertions(+), 13 deletions(-) diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamSecondMaintenanceOrderController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamSecondMaintenanceOrderController.java index 056eb5f..2405991 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamSecondMaintenanceOrderController.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamSecondMaintenanceOrderController.java @@ -2,7 +2,9 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -21,11 +23,11 @@ import org.jeecg.modules.eam.service.IEamSecondMaintenanceOrderService; import org.jeecg.modules.system.service.ISysBusinessCodeRuleService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; -import java.util.Arrays; -import java.util.List; +import java.util.*; import java.util.concurrent.atomic.AtomicInteger; /** @@ -94,6 +96,119 @@ } /** + * 鎵归噺娣诲姞 + * @param requests + * @return + */ + @AutoLog(value = "璁惧浜岀骇淇濆吇-鎵归噺娣诲姞") + @ApiOperation(value = "璁惧浜岀骇淇濆吇-鎵归噺娣诲姞", notes = "璁惧浜岀骇淇濆吇-鎵归噺娣诲姞") + @PostMapping(value = "/batchAdd") + public Result<?> batchAdd(@RequestBody List<EamSecondMaintenanceRequest> requests) { + if (CollectionUtils.isEmpty(requests)) { + return Result.error("娣诲姞鐨勫璞″垪琛ㄤ笉鑳戒负绌猴紒"); + } + + // 璁板綍鎴愬姛/澶辫触鐨勬潯鐩� + List<String> successOrders = new ArrayList<>(); + List<Map<String, Object>> failedItems = new ArrayList<>(); + + for (int i = 0; i < requests.size(); i++) { + EamSecondMaintenanceRequest item = requests.get(i); + try { + // 1. 鍙傛暟鏍¢獙 + if (item == null) { + failedItems.add(createErrorItem(i, "瀵硅薄涓虹┖")); + continue; + } + if (StrUtil.isEmpty(item.getStandardId())) { + failedItems.add(createErrorItem(i, "淇濆吇椤逛笉鑳戒负绌�")); + continue; + } + + // 2. 鐢熸垚缂栫爜骞惰缃睘鎬� + String codeSeq = businessCodeRuleService.generateBusinessCodeSeq( + BusinessCodeConst.SECOND_MAINTENANCE_CODE_RULE); + item.setOrderNum(codeSeq); + item.setCreationMethod(OrderCreationMethodEnum.MANUAL.name()); + + // 3. 鎵ц娣诲姞 + if (eamSecondMaintenanceOrderService.addMaintenance(item)) { + successOrders.add(codeSeq); + } else { + failedItems.add(createErrorItem(i, "鏈嶅姟娣诲姞澶辫触")); + } + } catch (Exception e) { + failedItems.add(createErrorItem(i, "绯荤粺寮傚父: " + e.getMessage())); + } + } + + // 4. 鏋勯�犺繑鍥炵粨鏋� + if (failedItems.isEmpty()) { + return Result.OK("鎵归噺娣诲姞鎴愬姛锛屽叡娣诲姞" + successOrders.size() + "鏉¤褰�"); + } else { + Map<String, Object> result = new HashMap<>(); + result.put("successCount", successOrders.size()); + result.put("failedCount", failedItems.size()); + result.put("failedDetails", failedItems); + + return Result.OK( + "閮ㄥ垎娣诲姞澶辫触锛堟垚鍔�" + successOrders.size() + "鏉★紝澶辫触" + failedItems.size() + "鏉★級", + result + ); + } + } + + // 鍒涘缓閿欒鏉$洰淇℃伅 + private Map<String, Object> createErrorItem(int index, String reason) { + Map<String, Object> error = new HashMap<>(); + error.put("index", index); + error.put("reason", reason); + return error; + } + + /** + * 鍒涘缓閿欒椤硅鎯� + * @param id 宸ュ崟ID + * @param errorMessage 閿欒淇℃伅 + * @param detail 閿欒璇︽儏 + * @return 閿欒璇︽儏Map + */ + private Map<String, Object> createErrorItem(String id, String errorMessage, Object detail) { + Map<String, Object> errorItem = new HashMap<>(); + errorItem.put("id", id); + errorItem.put("error", errorMessage); + if (detail != null) { + errorItem.put("detail", detail); + } + return errorItem; + } + + /** + * 鏋勫缓鎵归噺鎿嶄綔杩斿洖缁撴灉 + * @param successCount 鎴愬姛鏁伴噺 + * @param failedDetails 澶辫触璇︽儏鍒楄〃 + * @param actionName 鎿嶄綔鍚嶇О锛�"浣滃簾"鎴�"杩樺師"锛� + * @return 缁熶竴鏍煎紡鐨勮繑鍥炵粨鏋� + */ + private Result<?> buildBatchResult(int successCount, + List<Map<String, Object>> failedDetails, + List<String> successIds, + String actionName) { + Map<String, Object> resultMap = new HashMap<>(); + resultMap.put("successCount", successCount); + resultMap.put("failedCount", failedDetails.size()); + resultMap.put("successIds", successIds); + resultMap.put("failedDetails", failedDetails); + + if (failedDetails.isEmpty()) { + return Result.OK("鎵归噺" + actionName + "鎴愬姛锛屽叡" + actionName + " " + successCount + " 鏉″伐鍗曪紒"+resultMap); + } else { + return Result.OK("鎵归噺" + actionName + "閮ㄥ垎鎴愬姛锛堟垚鍔�" + successCount + "鏉★紝澶辫触" + failedDetails.size() + "鏉★級"+resultMap.get("failedDetails")); + } + } + + + /** * 缂栬緫 * * @param request @@ -131,6 +246,167 @@ } /** + * 閫氳繃id浣滃簾 + * + * @param id + * @return + */ + @AutoLog(value = "璁惧浜岀骇淇濆吇-浣滃簾") + @ApiOperation(value = "璁惧浜岀骇淇濆吇-浣滃簾", notes = "璁惧浜岀骇淇濆吇-浣滃簾") + @DeleteMapping(value = "/abolish") + public Result<?> abolish(@RequestParam(name = "id", required = true) String id) { + EamSecondMaintenanceOrder entity = eamSecondMaintenanceOrderService.getById(id); + if (entity == null) { + return Result.error("瑕佷綔搴熺殑鏁版嵁涓嶅瓨鍦紝璇峰埛鏂伴噸璇曪紒"); + } + if (!SecondMaintenanceStatusEnum.WAIT_MAINTENANCE.name().equals(entity.getMaintenanceStatus())) { + return Result.error("璇ョ姸鎬佺殑鏁版嵁涓嶅厑璁歌繘琛屼綔搴燂紒"); + } + entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.ABOLISH.name()); + eamSecondMaintenanceOrderService.updateById(entity); + return Result.OK("浣滃簾鎴愬姛!"); + } + + @AutoLog(value = "鍛ㄤ繚宸ュ崟-鎵归噺浣滃簾") + @ApiOperation(value = "鍛ㄤ繚宸ュ崟-鎵归噺浣滃簾", notes = "鍛ㄤ繚宸ュ崟-鎵归噺浣滃簾") + @DeleteMapping(value = "/abolishBatch") + public Result<?> abolishBatch(@RequestParam(name = "ids", required = true) String ids) { + List<String> list = Arrays.asList(ids.split(",")); + + // 璁板綍鎿嶄綔缁撴灉 + int successCount = 0; + List<Map<String, Object>> failedDetails = new ArrayList<>(); + List<String> successIds = new ArrayList<>(); + + for (String id : list) { + try { + EamSecondMaintenanceOrder entity = eamSecondMaintenanceOrderService.getById(id); + if (entity == null) { + // 璁板綍宸ュ崟涓嶅瓨鍦� + failedDetails.add(createErrorItem(id, "宸ュ崟涓嶅瓨鍦�", null)); + continue; + } + + if (!SecondMaintenanceStatusEnum.WAIT_MAINTENANCE.name().equals(entity.getMaintenanceStatus())) { + // 璁板綍鐘舵�佷笉绗﹀悎瑕佹眰 + failedDetails.add(createErrorItem(id, "宸ュ崟鐘舵�佷笉婊¤冻浣滃簾瑕佹眰", entity.getMaintenanceStatus())); + continue; + } + + entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.ABOLISH.name()); + boolean updateResult = eamSecondMaintenanceOrderService.updateById(entity); + + if (updateResult) { + successCount++; + successIds.add(id); + } else { + // 璁板綍鏇存柊澶辫触 + failedDetails.add(createErrorItem(id, "鏇存柊鎿嶄綔鎵ц澶辫触", entity.getMaintenanceStatus())); + } + } catch (Exception e) { + // 璁板綍绯荤粺寮傚父 + failedDetails.add(createErrorItem(id, "绯荤粺寮傚父: " + e.getMessage(), null)); + } + } + + // 鏋勯�犺繑鍥炵粨鏋� + return buildBatchResult(successCount, failedDetails, successIds, "浣滃簾"); + } + + /** + * 杩樺師浣滃簾宸ュ崟 + * @param id + * @return + */ + @AutoLog(value = "璁惧浜岀骇淇濆吇-杩樺師浣滃簾宸ュ崟") + @ApiOperation(value = "璁惧浜岀骇淇濆吇-杩樺師浣滃簾宸ュ崟", notes = "璁惧浜岀骇淇濆吇-杩樺師浣滃簾宸ュ崟") + @GetMapping(value = "/restore") + public Result<?> restore(@RequestParam(name = "id", required = true) String id) { + EamSecondMaintenanceOrder entity = eamSecondMaintenanceOrderService.getById(id); + if (entity == null) { + return Result.error("瑕佽繕鍘熺殑浣滃簾鏁版嵁涓嶅瓨鍦紝璇峰埛鏂伴噸璇曪紒"); + } + if (!SecondMaintenanceStatusEnum.ABOLISH.name().equals(entity.getMaintenanceStatus())) { + return Result.error("璇ョ姸鎬佺殑鏁版嵁涓嶅厑璁歌繘琛岃繕鍘燂紒"); + } + //鏌ヨ褰撳墠璁惧鍜屼繚鍏昏鑼僫d鏄惁鏈夊�� + List<EamSecondMaintenanceOrder> eamSecondMaintenanceOrderList=eamSecondMaintenanceOrderService + .list(new QueryWrapper<EamSecondMaintenanceOrder>().eq("equipment_id",entity.getEquipmentId()) + .eq("standard_id",entity.getStandardId()) + .ne("maintenance_status",SecondMaintenanceStatusEnum.ABOLISH.name())); + if(!eamSecondMaintenanceOrderList.isEmpty()){ + return Result.error("璇ヨ澶囧凡瀛樺湪瀵瑰簲浜屼繚宸ュ崟锛屼笉鍏佽杩樺師!"); + } + entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.WAIT_MAINTENANCE.name()); + eamSecondMaintenanceOrderService.updateById(entity); + return Result.OK("杩樺師鎴愬姛!"); + } + + /** + * 鎵归噺杩樺師浣滃簾宸ュ崟 + * @param ids + * @return + */ + @AutoLog(value = "璁惧浜岀骇淇濆吇-鎵归噺杩樺師浣滃簾宸ュ崟") + @ApiOperation(value = "璁惧浜岀骇淇濆吇-鎵归噺杩樺師浣滃簾宸ュ崟", notes = "璁惧浜岀骇淇濆吇-鎵归噺杩樺師浣滃簾宸ュ崟") + @DeleteMapping(value = "/restoreBatch") + public Result<?> restoreBatch(@RequestParam(name = "ids", required = true) String ids) { + List<String> list = Arrays.asList(ids.split(",")); + + // 璁板綍鎿嶄綔缁撴灉 + int successCount = 0; + List<Map<String, Object>> failedDetails = new ArrayList<>(); + List<String> successIds = new ArrayList<>(); + + for (String id : list) { + try { + EamSecondMaintenanceOrder entity = eamSecondMaintenanceOrderService.getById(id); + if (entity == null) { + // 璁板綍宸ュ崟涓嶅瓨鍦� + failedDetails.add(createErrorItem(id, "宸ュ崟涓嶅瓨鍦�", null)); + continue; + } + + if (!SecondMaintenanceStatusEnum.ABOLISH.name().equals(entity.getMaintenanceStatus())) { + // 璁板綍鐘舵�佷笉鏄凡浣滃簾 + failedDetails.add(createErrorItem(id, "宸ュ崟鐘舵�佷笉鏄凡浣滃簾", entity.getMaintenanceStatus())); + continue; + } + + // 鏌ヨ褰撳墠璁惧鍜屼繚鍏昏鑼冩槸鍚﹀瓨鍦ㄩ潪浣滃簾鐘舵�佺殑宸ュ崟 + List<EamSecondMaintenanceOrder> existingOrders = eamSecondMaintenanceOrderService + .list(new QueryWrapper<EamSecondMaintenanceOrder>() + .eq("equipment_id", entity.getEquipmentId()) + .eq("standard_id", entity.getStandardId()) + .ne("maintenance_status", SecondMaintenanceStatusEnum.ABOLISH.name())); + + if (CollectionUtils.isNotEmpty(existingOrders)) { + // 璁板綍瀛樺湪闈炰綔搴熺姸鎬佺殑宸ュ崟 + failedDetails.add(createErrorItem(id, "璇ヨ澶囧拰淇濆吇瑙勮寖宸插瓨鍦ㄩ潪浣滃簾鐘舵�佺殑宸ュ崟", existingOrders.size())); + continue; + } + + entity.setMaintenanceStatus(SecondMaintenanceStatusEnum.WAIT_MAINTENANCE.name()); + boolean updateResult = eamSecondMaintenanceOrderService.updateById(entity); + + if (updateResult) { + successCount++; + successIds.add(id); + } else { + // 璁板綍鏇存柊澶辫触 + failedDetails.add(createErrorItem(id, "鏇存柊鎿嶄綔鎵ц澶辫触", entity.getMaintenanceStatus())); + } + } catch (Exception e) { + // 璁板綍绯荤粺寮傚父 + failedDetails.add(createErrorItem(id, "绯荤粺寮傚父: " + e.getMessage(), null)); + } + } + + // 鏋勯�犺繑鍥炵粨鏋� + return buildBatchResult(successCount, failedDetails, successIds, "杩樺師"); + } + + /** * 閫氳繃id棰嗗彇 * * @param id @@ -153,22 +429,50 @@ * @param ids * @return */ - @AutoLog(value = "鍛ㄤ繚宸ュ崟-鎵归噺棰嗗彇") - @ApiOperation(value = "鍛ㄤ繚宸ュ崟-鎵归噺棰嗗彇", notes = "鍛ㄤ繚宸ュ崟-鎵归噺棰嗗彇") + @AutoLog(value = "璁惧浜岀骇淇濆吇-鎵归噺棰嗗彇") + @ApiOperation(value = "璁惧浜岀骇淇濆吇-鎵归噺棰嗗彇", notes = "璁惧浜岀骇淇濆吇-鎵归噺棰嗗彇") @DeleteMapping(value = "/collectBatch") public Result<?> collectBatch(@RequestParam(name = "ids", required = true) String ids) { List<String> list = Arrays.asList(ids.split(",")); - AtomicInteger i = new AtomicInteger(); - list.forEach(id -> { - EamSecondMaintenanceOrder entity = eamSecondMaintenanceOrderService.getById(id); - if (entity != null && SecondMaintenanceStatusEnum.WAIT_MAINTENANCE.name().equals(entity.getMaintenanceStatus())) { - boolean b = eamSecondMaintenanceOrderService.collect(id); - if (b) { - i.getAndIncrement(); + + // 璁板綍鎿嶄綔缁撴灉 + int successCount = 0; + List<Map<String, Object>> failedDetails = new ArrayList<>(); + List<String> successIds = new ArrayList<>(); + + for (String id : list) { + try { + EamSecondMaintenanceOrder entity = eamSecondMaintenanceOrderService.getById(id); + if (entity == null) { + // 璁板綍宸ュ崟涓嶅瓨鍦� + failedDetails.add(createErrorItem(id, "宸ュ崟涓嶅瓨鍦�", null)); + continue; } + + // 鐘舵�佹牎楠� + if (!SecondMaintenanceStatusEnum.WAIT_MAINTENANCE.name().equals(entity.getMaintenanceStatus())) { + failedDetails.add(createErrorItem(id, + "宸ュ崟褰撳墠鐘舵�佷笉婊¤冻棰嗗彇鏉′欢", + entity.getMaintenanceStatus())); + continue; + } + + // 鎵ц棰嗗彇鎿嶄綔 + boolean collectResult = eamSecondMaintenanceOrderService.collect(id); + + if (collectResult) { + successCount++; + successIds.add(id); + } else { + failedDetails.add(createErrorItem(id, "棰嗗彇鎿嶄綔鎵ц澶辫触", null)); + } + } catch (Exception e) { + failedDetails.add(createErrorItem(id, "绯荤粺寮傚父: " + e.getMessage(), null)); } - }); - return Result.OK("鎵归噺棰嗗彇鎴愬姛 " + i.get() + " 鏉″伐鍗曪紒"); + } + + // 鏋勯�犺繑鍥炵粨鏋滐紙浣跨敤涓庢壒閲忎綔搴�/杩樺師鐩稿悓鐨勬柟娉曪級 + return buildBatchResult(successCount, failedDetails, successIds, "棰嗗彇"); } /** -- Gitblit v1.9.3