From 4f38e5827b848298de8e95f59e0ba9b24951e615 Mon Sep 17 00:00:00 2001 From: lixiangyu <lixiangyu@xalxzn.com> Date: 星期二, 16 九月 2025 18:01:18 +0800 Subject: [PATCH] refactor(cms): 优化刀具管理功能和性能 刀具报废功能 - 新增 提交(/subumit)接口 刀具报废功能 - 修改完善其删除功能,同时删除报废单和报废明细 刀具报废功能 - (/add)接口中增加逻辑判断禁制同一个刀具重复申请报废 刀具领用功能 - 完善刀具寿命计算 刀具领用功能 - 完善其删除功能,同时删除领用单和领用明细 刀具入库功能 - 完善其删除功能,同时删除入库单和入库明细 把刀具库存中的库存状态,从“正常”改为“在库”。 --- src/main/java/org/jeecg/modules/cms/service/impl/CuttingInventoryServiceImpl.java | 5 src/main/java/org/jeecg/modules/cms/service/impl/CuttingReceiveServiceImpl.java | 39 ++++--- src/main/java/org/jeecg/modules/cms/service/ICuttingScrapDetailService.java | 3 src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingReceiveMapper.xml | 2 src/main/java/org/jeecg/modules/cms/controller/CuttingScrapController.java | 51 +++++++-- src/main/java/org/jeecg/modules/cms/service/impl/CuttingInboundServiceImpl.java | 2 src/main/java/org/jeecg/modules/cms/service/ICuttingScrapService.java | 2 src/main/java/org/jeecg/modules/cms/service/ICuttingReceiveService.java | 1 src/main/java/org/jeecg/modules/cms/service/impl/CuttingScrapServiceImpl.java | 69 +++++++++++++ src/main/java/org/jeecg/modules/cms/controller/CuttingReceiveController.java | 6 + src/main/java/org/jeecg/modules/cms/entity/CuttingInventory.java | 4 src/main/java/org/jeecg/modules/cms/controller/CuttingInboundController.java | 67 +------------ 12 files changed, 150 insertions(+), 101 deletions(-) diff --git a/src/main/java/org/jeecg/modules/cms/controller/CuttingInboundController.java b/src/main/java/org/jeecg/modules/cms/controller/CuttingInboundController.java index 59b2736..5066561 100644 --- a/src/main/java/org/jeecg/modules/cms/controller/CuttingInboundController.java +++ b/src/main/java/org/jeecg/modules/cms/controller/CuttingInboundController.java @@ -10,10 +10,7 @@ import io.micrometer.core.annotation.Timed; import org.jeecg.common.api.vo.Result; import org.jeecg.common.system.query.QueryGenerator; -import org.jeecg.modules.cms.entity.CuttingInbound; -import org.jeecg.modules.cms.entity.CuttingInboundDetail; -import org.jeecg.modules.cms.entity.CuttingInboundInventory; -import org.jeecg.modules.cms.entity.CuttingInventory; +import org.jeecg.modules.cms.entity.*; import org.jeecg.modules.cms.mapper.CuttingInboundMapper; import org.jeecg.modules.cms.service.ICuttingInboundDetailService; import org.jeecg.modules.cms.service.ICuttingInboundInventoryService; @@ -142,6 +139,9 @@ @DeleteMapping(value = "/delete") public Result<String> delete(@RequestParam(name = "id", required = true) String id) { cuttingInboundService.removeById(id); + //鍒犻櫎鍒�鍏烽鐢ㄦ槑缁嗚〃鐨勬暟鎹� + cuttingInboundDetailService.remove + (new QueryWrapper<CuttingInboundDetail>().eq("order_id", id)); return Result.OK("鍒犻櫎鎴愬姛!"); } @@ -289,64 +289,7 @@ @GetMapping("/submit") @Timed(value = "cutting.inbound.submit", description = "鍒�鍏峰叆搴撴彁浜よ�楁椂") public Result<?> submit(@RequestParam("orderId") String orderId) { -// long startTime = System.currentTimeMillis(); -// try { -// // 1. 鏇存柊鍏ュ簱鍗曠姸鎬� -// CuttingInbound cuttingInbound = cuttingInboundService.getById(orderId); -// if (cuttingInbound == null) { -// return Result.error("鏈壘鍒板搴旂殑鍏ュ簱鍗�"); -// } -// cuttingInbound.setOrderStatus("2"); -// cuttingInboundService.updateById(cuttingInbound); -// -// // 2. 鑾峰彇鍏ュ簱鏄庣粏 -// List<CuttingInboundDetail> detailList = cuttingInboundDetailService.lambdaQuery() -// .eq(CuttingInboundDetail::getOrderId, orderId) -// .list(); -// -// // 3. 鏀堕泦鎵�鏈夐渶瑕佷繚瀛樼殑鏁版嵁 -// List<CuttingInventory> inventoryList = new ArrayList<>(); -// List<CuttingInboundInventory> inboundInventoryList = new ArrayList<>(); -// -// for (CuttingInboundDetail detail : detailList) { -// int quantity = detail.getReceiveNumber() != null ? detail.getReceiveNumber().intValue() : 0; -// -// for (int i = 0; i < quantity; i++) { -// // 鐢熸垚搴撳瓨璁板綍 -// CuttingInventory cuttingInventory = new CuttingInventory(); -// cuttingInventory.setCuttingId(detail.getCuttingId()); -// cuttingInventory.setCuttingBarcode(generateUniqueBarcode(detail.getCuttingId(), i)); -// cuttingInventory.setInventoryStatus("姝e父"); -// cuttingInventory.setCurrentLife(BigDecimal.valueOf(100)); -// inventoryList.add(cuttingInventory); -// } -// } -// -// // 4. 鎵归噺淇濆瓨搴撳瓨璁板綍锛堜竴娆℃�ф搷浣滐級 -// if (!inventoryList.isEmpty()) { -// cuttingInventoryService.saveBatch(inventoryList); -// -// // 5. 涓烘瘡涓繚瀛樼殑搴撳瓨璁板綍鍒涘缓鍏宠仈鍏崇郴 -// for (CuttingInventory inventory : inventoryList) { -// CuttingInboundInventory cuttingInboundInventory = new CuttingInboundInventory(); -// cuttingInboundInventory.setOrderId(orderId); -// cuttingInboundInventory.setInventoryId(inventory.getId()); -// inboundInventoryList.add(cuttingInboundInventory); -// } -// -// // 6. 鎵归噺淇濆瓨鍏宠仈鍏崇郴锛堜竴娆℃�ф搷浣滐級 -// cuttingInboundInventoryService.saveBatch(inboundInventoryList); -// } -// -// long endTime = System.currentTimeMillis(); -// log.info("鍒�鍏峰叆搴撴彁浜ゅ畬鎴愶紝鑰楁椂: {} s", (endTime - startTime)/1000); -// return Result.ok("鎻愪氦鎴愬姛"); -// -// } catch (Exception e) { -// long endTime = System.currentTimeMillis(); -// log.error("鎻愪氦鍏ュ簱鍗曞け璐ワ紝orderId: " + orderId + "锛岃�楁椂: " + (endTime - startTime) + " ms", e); -// return Result.error("鎻愪氦澶辫触: " + e.getMessage()); -// } + return cuttingInboundService.submit(orderId); } } diff --git a/src/main/java/org/jeecg/modules/cms/controller/CuttingReceiveController.java b/src/main/java/org/jeecg/modules/cms/controller/CuttingReceiveController.java index 8c93b00..7c9cb87 100644 --- a/src/main/java/org/jeecg/modules/cms/controller/CuttingReceiveController.java +++ b/src/main/java/org/jeecg/modules/cms/controller/CuttingReceiveController.java @@ -159,6 +159,11 @@ cuttingInventoryService.restoreStatus(inventoryIds); } + //鍒犻櫎鍒�鍏烽鐢ㄦ槑缁嗚〃鐨勬暟鎹� + cuttingReceiveDetailService.remove + (new QueryWrapper<CuttingReceiveDetail>().eq("order_id", id)); + + return Result.OK("鍒犻櫎鎴愬姛!"); } @@ -171,7 +176,6 @@ @DeleteMapping(value = "/deleteBatch") public Result<String> deleteBatch(@RequestParam(name = "ids") String ids) { this.cuttingReceiveService.removeByIds(Arrays.asList(ids.split(","))); - //FIXME: 鎵归噺鍒犻櫎鏃讹紝搴撳瓨鐘舵�佹湭鎭㈠銆備篃闇�瑕佹壒閲忔仮澶嶅簱瀛樼姸鎬併�� return Result.OK("鎵归噺鍒犻櫎鎴愬姛!"); } diff --git a/src/main/java/org/jeecg/modules/cms/controller/CuttingScrapController.java b/src/main/java/org/jeecg/modules/cms/controller/CuttingScrapController.java index 1d4790b..cb634e8 100644 --- a/src/main/java/org/jeecg/modules/cms/controller/CuttingScrapController.java +++ b/src/main/java/org/jeecg/modules/cms/controller/CuttingScrapController.java @@ -107,25 +107,40 @@ JSONArray jsonArray = jSONObject.getJSONArray("detailData"); List<CuttingScrapDetail> list = jsonArray.toJavaList(CuttingScrapDetail.class); + //鍋氬垽鏂紝鐢宠鎶ュ簾鐨勬椂鍊欎竴涓垁鍏峰彧鑳界敵璇蜂竴娆� + for (CuttingScrapDetail temp : list) { + //鍒ゆ柇鍒�鍏锋槸鍚﹀凡缁忕敵璇锋姤搴� + QueryWrapper<CuttingScrapDetail> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("inventory_id", temp.getInventoryId()); + // 妫�鏌ユ暟鎹簱涓槸鍚﹀凡瀛樺湪鐩稿悓inventoryId鐨勬姤搴熺敵璇� + if (cuttingScrapDetailService.count(queryWrapper) > 0) { + cuttingScrapService.removeById(cuttingScrap.getId());//鍚屾椂鍒犻櫎鏈〃鍗� + return Result.error("鍒�鍏�" + temp.getInventoryId() + "宸茬粡鐢宠鎶ュ簾锛岃涓嶈閲嶅鐢宠"); + } + } + // 鎵�鏈夋鏌ラ�氳繃鍚庯紝淇濆瓨鎵�鏈夋槑缁嗘暟鎹� for (CuttingScrapDetail temp : list) { temp.setOrderId(cuttingScrap.getId()); cuttingScrapDetailService.save(temp); } - // 鏇存柊搴撳瓨鍒�鍏风姸鎬佷负"宸插嚭搴�" - if (!list.isEmpty()) { - // 鏀堕泦鎵�鏈夐渶瑕佹洿鏂扮姸鎬佺殑搴撳瓨ID - List<String> inventoryIds = list.stream() - .map(CuttingScrapDetail::getInventoryId) // 鍋囪CuttingScrapDetail涓湁inventoryId瀛楁 - .filter(id -> id != null && !id.isEmpty()) - .collect(Collectors.toList()); - - if (!inventoryIds.isEmpty()) { - // 鏇存柊搴撳瓨鐘舵�佷负"宸插嚭搴�" - cuttingInventoryService.updateStatus(inventoryIds, "寰呮姤搴�"); - } - } return Result.OK("娣诲姞鎴愬姛锛�"); + +// // 鏇存柊搴撳瓨鍒�鍏风姸鎬佷负"寰呮姤搴�" +// if (!list.isEmpty()) { +// // 鏀堕泦鎵�鏈夐渶瑕佹洿鏂扮姸鎬佺殑搴撳瓨ID +// List<String> inventoryIds = list.stream() +// .map(CuttingScrapDetail::getInventoryId) // 鍋囪CuttingScrapDetail涓湁inventoryId瀛楁 +// .filter(id -> id != null && !id.isEmpty()) +// .collect(Collectors.toList()); +// +// if (!inventoryIds.isEmpty()) { +// // 鏇存柊搴撳瓨鐘舵�佷负"寰呮姤搴�" +// cuttingInventoryService.updateStatus(inventoryIds, "寰呮姤搴�"); +// } +// } + + } /** @@ -154,7 +169,10 @@ //@RequiresPermissions("org.jeecg.modules:cms_cutting_scrap:delete") @DeleteMapping(value = "/delete") public Result<String> delete(@RequestParam(name = "id", required = true) String id) { - cuttingScrapService.removeById(id); + cuttingScrapService.removeById(id);//鍒犻櫎涓昏〃鏁版嵁 + //鍒犻櫎鍒�鍏锋姤搴熸槑缁嗚〃鐨勬暟鎹� + cuttingScrapDetailService.remove + (new QueryWrapper<CuttingScrapDetail>().eq("order_id", id)); return Result.OK("鍒犻櫎鎴愬姛!"); } @@ -238,4 +256,9 @@ return Result.ok(inventoryTooList); } + @GetMapping("/submit") + public Result<?> submit(@RequestParam("orderId") String orderId) { + return cuttingScrapService.submit(orderId); + } + } diff --git a/src/main/java/org/jeecg/modules/cms/entity/CuttingInventory.java b/src/main/java/org/jeecg/modules/cms/entity/CuttingInventory.java index 196cbe4..1ef6958 100644 --- a/src/main/java/org/jeecg/modules/cms/entity/CuttingInventory.java +++ b/src/main/java/org/jeecg/modules/cms/entity/CuttingInventory.java @@ -78,8 +78,8 @@ @TableField(exist = false) // 琛ㄧず杩欎笉鏄暟鎹簱瀛楁 private String cuttingBarcodeSearch; - @TableField(exist = false) // 琛ㄧず杩欎笉鏄暟鎹簱瀛楁 - private String workpieceMaterial; +// @TableField(exist = false) // 琛ㄧず杩欎笉鏄暟鎹簱瀛楁 +// private String workpieceMaterial; @TableField(exist = false) // 琛ㄧず杩欎笉鏄暟鎹簱瀛楁 private BigDecimal ratedLife; diff --git a/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingReceiveMapper.xml b/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingReceiveMapper.xml index 57a8969..4352701 100644 --- a/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingReceiveMapper.xml +++ b/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingReceiveMapper.xml @@ -15,7 +15,7 @@ FROM cms_cutting_inventory t1 LEFT JOIN cms_cutting_tool t2 ON t1.cutting_id = t2.id LEFT JOIN (select * from v_sys_dict where dict_code = 'cutting_category') t3 on t3.item_value = t2.cutting_category - WHERE t1.inventory_status = '姝e父' + WHERE t1.inventory_status = '鍦ㄥ簱' AND t2.del_flag = 0 </select> diff --git a/src/main/java/org/jeecg/modules/cms/service/ICuttingReceiveService.java b/src/main/java/org/jeecg/modules/cms/service/ICuttingReceiveService.java index df221a7..105cff3 100644 --- a/src/main/java/org/jeecg/modules/cms/service/ICuttingReceiveService.java +++ b/src/main/java/org/jeecg/modules/cms/service/ICuttingReceiveService.java @@ -16,6 +16,7 @@ public interface ICuttingReceiveService extends IService<CuttingReceive> { IPage<Map<String, Object>> getInventoryToolList(Integer pageNo, Integer pageSize, Map<String, Object> params); + Result<?> submit(String orderId); Result<?> handleBack(String orderId); diff --git a/src/main/java/org/jeecg/modules/cms/service/ICuttingScrapDetailService.java b/src/main/java/org/jeecg/modules/cms/service/ICuttingScrapDetailService.java index 54c7685..647c940 100644 --- a/src/main/java/org/jeecg/modules/cms/service/ICuttingScrapDetailService.java +++ b/src/main/java/org/jeecg/modules/cms/service/ICuttingScrapDetailService.java @@ -1,8 +1,10 @@ package org.jeecg.modules.cms.service; +import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; import org.jeecg.modules.cms.entity.CuttingScrapDetail; import com.baomidou.mybatisplus.extension.service.IService; +import java.io.Serializable; import java.util.List; import java.util.Map; @@ -15,4 +17,5 @@ public interface ICuttingScrapDetailService extends IService<CuttingScrapDetail> { public List<Map<String, Object>> detailList(String orderId); + } diff --git a/src/main/java/org/jeecg/modules/cms/service/ICuttingScrapService.java b/src/main/java/org/jeecg/modules/cms/service/ICuttingScrapService.java index 02593f5..9dbcbbd 100644 --- a/src/main/java/org/jeecg/modules/cms/service/ICuttingScrapService.java +++ b/src/main/java/org/jeecg/modules/cms/service/ICuttingScrapService.java @@ -1,6 +1,7 @@ package org.jeecg.modules.cms.service; import com.baomidou.mybatisplus.core.metadata.IPage; +import org.jeecg.common.api.vo.Result; import org.jeecg.modules.cms.entity.CuttingScrap; import com.baomidou.mybatisplus.extension.service.IService; @@ -15,5 +16,6 @@ public interface ICuttingScrapService extends IService<CuttingScrap> { IPage<Map<String, Object>> getInventoryToolList(Integer pageNo, Integer pageSize, Map<String, Object> params); + Result<?> submit(String orderId); } diff --git a/src/main/java/org/jeecg/modules/cms/service/impl/CuttingInboundServiceImpl.java b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingInboundServiceImpl.java index 18a80ad..4b21b3f 100644 --- a/src/main/java/org/jeecg/modules/cms/service/impl/CuttingInboundServiceImpl.java +++ b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingInboundServiceImpl.java @@ -135,7 +135,7 @@ CuttingInventory cuttingInventory = new CuttingInventory(); cuttingInventory.setCuttingId(detail.getCuttingId()); cuttingInventory.setCuttingBarcode(generateUniqueBarcode(detail.getCuttingId(), i)); - cuttingInventory.setInventoryStatus("姝e父"); + cuttingInventory.setInventoryStatus("鍦ㄥ簱"); cuttingInventory.setCurrentLife(BigDecimal.valueOf(100)); inventoryList.add(cuttingInventory); } diff --git a/src/main/java/org/jeecg/modules/cms/service/impl/CuttingInventoryServiceImpl.java b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingInventoryServiceImpl.java index 7816739..e4ca00f 100644 --- a/src/main/java/org/jeecg/modules/cms/service/impl/CuttingInventoryServiceImpl.java +++ b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingInventoryServiceImpl.java @@ -67,14 +67,13 @@ // 鏂瑰紡1: 鏌ヨ褰撳墠鐘舵�佸苟鏍规嵁鐘舵�佸喅瀹氭仮澶嶅埌鍝釜鐘舵�� List<CuttingInventory> inventoryList = this.listByIds(ids); List<String> toRestoreIds = inventoryList.stream() - .filter(inv -> "寰呭嚭搴�".equals(inv.getInventoryStatus())) // 鍙鐞�"寰呭嚭搴�"鐘舵�佺殑 + .filter(inv -> "寰呭嚭搴�".equals(inv.getInventoryStatus())) // 鍑哄簱鍗曚綔搴熺殑鎯呭喌涓嬶紝鍙細鏈夊緟鍑哄簱閫�鍥炴甯哥姸鎬佺殑鎯呭喌銆� .map(CuttingInventory::getId) .collect(Collectors.toList()); - //FIXME:鍦ㄦ姤搴熷墠鏈夊涓姸鎬侊紝濡傛灉鎶ュ簾浣滃簾锛屽垁鍏峰簱瀛樼姸鎬佸浣曢��鍥炲師鏉ョ殑鐘舵�併�� if (!toRestoreIds.isEmpty()) { UpdateWrapper<CuttingInventory> updateWrapper = new UpdateWrapper<>(); updateWrapper.in("id", toRestoreIds); - updateWrapper.set("inventory_status", "姝e父"); + updateWrapper.set("inventory_status", "鍦ㄥ簱"); updateWrapper.set("update_time", new Date()); updateWrapper.set("update_by", username); this.update(updateWrapper); diff --git a/src/main/java/org/jeecg/modules/cms/service/impl/CuttingReceiveServiceImpl.java b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingReceiveServiceImpl.java index 69edf6b..dd1cf54 100644 --- a/src/main/java/org/jeecg/modules/cms/service/impl/CuttingReceiveServiceImpl.java +++ b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingReceiveServiceImpl.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.micrometer.core.annotation.Timed; +import liquibase.pro.packaged.C; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.api.vo.Result; import org.jeecg.modules.cms.entity.CuttingInventory; @@ -20,6 +21,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -95,8 +97,10 @@ } } + @Override public synchronized Result<?> handleBack(String orderId) { + //FIXME锛氬垁鍏峰綊杩� 鐩墠璁捐鐨勬槸浠ラ鐢ㄥ崟涓虹淮搴﹁繘琛岃繕搴擄紱鑻ユ槸闇�瑕佷互鍒�鍏蜂负缁村害杩涜褰掕繕鐨勫垯闇�瑕佸彟琛岃璁� long startTime = System.currentTimeMillis(); try { // 1. 鏇存柊棰嗙敤鍗曠姸鎬佷负宸插綊杩� @@ -129,32 +133,35 @@ } } - // 4. 鎵归噺鏇存柊搴撳瓨鐘舵�佷负"姝e父" - if (!inventoryIds.isEmpty()) { - cuttingInventoryService.updateStatus(inventoryIds, "姝e父"); - } - // 5. 瀵垮懡鎵e噺 + // 4. 瀵垮懡鎵e噺 for (CuttingReceiveDetail detail : detailList) { if (detail.getInventoryId() != null && !detail.getInventoryId().isEmpty()) { + CuttingReceiveDetail cuttingReceiveDetail = cuttingReceiveDetailService.getById(detail.getInventoryId()); CuttingInventory inventory = cuttingInventoryService.getById(detail.getInventoryId()); - //FIXME:ratedLife绌烘寚閽� - RatedLife ratedLife = ratedLifeService.lambdaQuery() //棰濆畾瀵垮懡 - .eq(RatedLife::getCuttingId, inventory.getCuttingId()) - .eq(RatedLife::getWorkpieceMaterial, inventory.getWorkpieceMaterial()) - .one(); - BigDecimal currentLife = inventory.getCurrentLife().divide(BigDecimal.valueOf(100),java.math.RoundingMode.HALF_UP);//褰撳墠瀵垮懡鐧惧垎姣� + RatedLife ratedLife = ratedLifeService.lambdaQuery() + .eq(RatedLife::getCuttingId, detail.getCuttingId()) + .eq(RatedLife::getWorkpieceMaterial, detail.getWorkpieceMaterial()) + .one();//棰濆畾瀵垮懡 + Integer useLife = detail.getUsedLife();//浣跨敤瀵垮懡 - //璁$畻鍏紡: (ratedLife * currentLife - useLife) * 100 - BigDecimal newLife = ratedLife.getRatedLife() - .multiply(currentLife) - .subtract(BigDecimal.valueOf(useLife)) - .multiply(BigDecimal.valueOf(100)); + //浼樺寲锛�(1-浣跨敤瀵垮懡/棰濆畾瀵垮懡)*100 + BigDecimal usageRatio = BigDecimal.valueOf(useLife).divide(ratedLife.getRatedLife(), 4, RoundingMode.HALF_UP); + BigDecimal newLife = BigDecimal.valueOf(1) + .subtract(usageRatio) + .multiply(BigDecimal.valueOf(100)) + .setScale(2, RoundingMode.HALF_UP); // 鏇存柊搴撳瓨瀵垮懡 inventory.setCurrentLife(newLife); cuttingInventoryService.updateById(inventory); } } + + // 5. 鎵归噺鏇存柊搴撳瓨鐘舵�佷负"姝e父" + if (!inventoryIds.isEmpty()) { + cuttingInventoryService.updateStatus(inventoryIds, "鍦ㄥ簱"); + } + long endTime = System.currentTimeMillis(); log.info("鍒�鍏峰綊杩樺鐞嗗畬鎴愶紝鑰楁椂: {} ms", (endTime - startTime)); return Result.ok("褰掕繕鎴愬姛"); diff --git a/src/main/java/org/jeecg/modules/cms/service/impl/CuttingScrapServiceImpl.java b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingScrapServiceImpl.java index 7dd15e8..fb54435 100644 --- a/src/main/java/org/jeecg/modules/cms/service/impl/CuttingScrapServiceImpl.java +++ b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingScrapServiceImpl.java @@ -2,13 +2,22 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import org.jeecg.modules.cms.entity.CuttingScrap; +import io.micrometer.core.annotation.Timed; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.api.vo.Result; +import org.jeecg.modules.cms.entity.*; import org.jeecg.modules.cms.mapper.CuttingScrapMapper; +import org.jeecg.modules.cms.service.ICuttingInventoryService; +import org.jeecg.modules.cms.service.ICuttingScrapDetailService; import org.jeecg.modules.cms.service.ICuttingScrapService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; import java.util.Map; /** @@ -17,12 +26,70 @@ * @Date: 2025-07-28 * @Version: V1.0 */ +@Slf4j @Service public class CuttingScrapServiceImpl extends ServiceImpl<CuttingScrapMapper, CuttingScrap> implements ICuttingScrapService { + + @Autowired + private ICuttingScrapDetailService cuttingScarpDetailService; + @Autowired + private ICuttingInventoryService cuttingInventoryService; + @Override public IPage<Map<String, Object>> getInventoryToolList(Integer pageNo, Integer pageSize, Map<String, Object> params) { IPage<Map> pageData = new Page<Map>(pageNo, pageSize); return super.getBaseMapper().getInventoryToolList(pageData,params); } + @Override + @Timed(value = "cutting.scrap.submit", description = "鍒�鍏烽鐢ㄦ彁浜よ�楁椂") + public synchronized Result<?> submit(String orderId) { + long startTime = System.currentTimeMillis(); + try { + // 1. 鏇存柊棰嗙敤鍗曠姸鎬� + CuttingScrap cuttingScrap = this.getById(orderId); + if (cuttingScrap == null) { + return Result.error("鏈壘鍒板搴旂殑棰嗙敤鍗�"); + } + + // 妫�鏌ラ鐢ㄥ崟鐘舵�侊紝鍙厑璁哥姸鎬佷负"1"鐨勯鐢ㄥ崟鎻愪氦 + if (!"1".equals(cuttingScrap.getOrderStatus())) { + return Result.error("鍙湁鐘舵�佷负鏈彁浜ょ殑棰嗙敤鍗曟墠鑳芥墽琛屾彁浜ゆ搷浣�"); + } + + cuttingScrap.setOrderStatus("2"); // 鎶ュ簾鐢宠鍗曞彉涓� 宸叉彁浜� 鐘舵�� + boolean updateResult = this.updateById(cuttingScrap); + if (!updateResult) { + return Result.error("鏇存柊棰嗙敤鍗曠姸鎬佸け璐ワ紝鍙兘宸茶鍏朵粬鐢ㄦ埛澶勭悊"); + } + + // 2. 鑾峰彇棰嗙敤鏄庣粏 + List<CuttingScrapDetail> detailList = cuttingScarpDetailService.lambdaQuery() + .eq(CuttingScrapDetail::getOrderId, orderId) + .list(); + + // 3. 鏀堕泦鎵�鏈夐渶瑕佹洿鏂扮姸鎬佺殑搴撳瓨ID + List<String> inventoryIds = new ArrayList<>(); + for (CuttingScrapDetail detail : detailList) { + if (detail.getInventoryId() != null && !detail.getInventoryId().isEmpty()) { + inventoryIds.add(detail.getInventoryId()); + } + } + + // 4. 鎵归噺鏇存柊搴撳瓨鐘舵�佷负"宸叉姤搴�" + if (!inventoryIds.isEmpty()) { + cuttingInventoryService.updateStatus(inventoryIds, "宸叉姤搴�"); + } + + long endTime = System.currentTimeMillis(); + log.info("鍒�鍏烽鐢ㄦ彁浜ゅ畬鎴愶紝鑰楁椂: {} ms", (endTime - startTime)); + return Result.ok("鎻愪氦鎴愬姛"); + + } catch (Exception e) { + long endTime = System.currentTimeMillis(); + log.error("鎻愪氦棰嗙敤鍗曞け璐ワ紝orderId: " + orderId + "锛岃�楁椂: " + (endTime - startTime) + " ms", e); + return Result.error("鎻愪氦澶辫触: " + e.getMessage()); + } + } + } -- Gitblit v1.9.3