From f99e7de6d1ed98913398fc5a725ba83b1c5a007d Mon Sep 17 00:00:00 2001 From: lixiangyu <lixiangyu@xalxzn.com> Date: 星期一, 15 九月 2025 18:06:46 +0800 Subject: [PATCH] feat(cms): 更新刀具库存状态管理 --- src/main/java/org/jeecg/modules/cms/service/impl/CuttingInventoryServiceImpl.java | 51 ++++++++++++++++- src/main/java/org/jeecg/modules/cms/mapper/CuttingScrapMapper.java | 3 + src/main/java/org/jeecg/modules/cms/entity/CuttingReceiveDetail.java | 1 src/main/java/org/jeecg/modules/cms/controller/CuttingScrapController.java | 29 +++++++++ src/main/java/org/jeecg/modules/cms/service/ICuttingScrapService.java | 5 + src/main/java/org/jeecg/modules/cms/service/impl/CuttingScrapServiceImpl.java | 9 +++ src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingScrapMapper.xml | 17 +++++ src/main/java/org/jeecg/modules/cms/controller/CuttingReceiveController.java | 24 +++++++- src/main/java/org/jeecg/modules/cms/service/ICuttingInventoryService.java | 2 src/main/java/org/jeecg/modules/cms/entity/CuttingScrap.java | 1 10 files changed, 135 insertions(+), 7 deletions(-) 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 5789c83..8c93b00 100644 --- a/src/main/java/org/jeecg/modules/cms/controller/CuttingReceiveController.java +++ b/src/main/java/org/jeecg/modules/cms/controller/CuttingReceiveController.java @@ -103,7 +103,7 @@ temp.setOrderId(cuttingReceive.getId()); cuttingReceiveDetailService.save(temp); } - // 鏇存柊搴撳瓨鍒�鍏风姸鎬佷负"宸插嚭搴�" + // 鏇存柊搴撳瓨鍒�鍏风姸鎬佷负"寰呭嚭搴�" if (!list.isEmpty()) { // 鏀堕泦鎵�鏈夐渶瑕佹洿鏂扮姸鎬佺殑搴撳瓨ID List<String> inventoryIds = list.stream() @@ -112,7 +112,7 @@ .collect(Collectors.toList()); if (!inventoryIds.isEmpty()) { - // 鏇存柊搴撳瓨鐘舵�佷负"宸插嚭搴�" + // 鏇存柊搴撳瓨鐘舵�佷负"寰呭嚭搴�" cuttingInventoryService.updateStatus(inventoryIds, "寰呭嚭搴�"); } } @@ -140,7 +140,25 @@ //@RequiresPermissions("org.jeecg.modules:cms_cutting_receive:delete") @DeleteMapping(value = "/delete") public Result<String> delete(@RequestParam(name = "id") String id) { + // 鍏堟煡璇㈠嚭棰嗙敤鍗曟槑缁嗭紝鑾峰彇鐩稿叧鐨勫簱瀛業D + List<CuttingReceiveDetail> detailList = cuttingReceiveDetailService.lambdaQuery() + .eq(CuttingReceiveDetail::getOrderId, id) + .list(); + // 鍒犻櫎棰嗙敤鍗曚富琛ㄥ拰鏄庣粏琛ㄦ暟鎹� cuttingReceiveService.removeById(id); + cuttingReceiveDetailService.removeById(id); + + // 鑾峰彇搴撳瓨ID鍒楄〃 + List<String> inventoryIds = detailList.stream() + .map(CuttingReceiveDetail::getInventoryId) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + + // 灏嗙浉鍏冲垁鍏峰簱瀛樼姸鎬佹敼鍥炰箣鍓嶇殑鐘舵�� + if (!inventoryIds.isEmpty()) { + cuttingInventoryService.restoreStatus(inventoryIds); + } + return Result.OK("鍒犻櫎鎴愬姛!"); } @@ -153,6 +171,7 @@ @DeleteMapping(value = "/deleteBatch") public Result<String> deleteBatch(@RequestParam(name = "ids") String ids) { this.cuttingReceiveService.removeByIds(Arrays.asList(ids.split(","))); + //FIXME: 鎵归噺鍒犻櫎鏃讹紝搴撳瓨鐘舵�佹湭鎭㈠銆備篃闇�瑕佹壒閲忔仮澶嶅簱瀛樼姸鎬併�� return Result.OK("鎵归噺鍒犻櫎鎴愬姛!"); } @@ -214,7 +233,6 @@ return cuttingReceiveService.submit(orderId); } - //TODO: @GetMapping("/handleBack") @GetMapping("/handleBack") public Result<?> handleBack(@RequestParam("orderId") String orderId) { return cuttingReceiveService.handleBack(orderId); 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 8c84412..1d4790b 100644 --- a/src/main/java/org/jeecg/modules/cms/controller/CuttingScrapController.java +++ b/src/main/java/org/jeecg/modules/cms/controller/CuttingScrapController.java @@ -19,6 +19,7 @@ import org.jeecg.modules.cms.entity.CuttingReceiveDetail; import org.jeecg.modules.cms.entity.CuttingScrap; import org.jeecg.modules.cms.entity.CuttingScrapDetail; +import org.jeecg.modules.cms.service.ICuttingInventoryService; import org.jeecg.modules.cms.service.ICuttingScrapDetailService; import org.jeecg.modules.cms.service.ICuttingScrapService; @@ -59,6 +60,9 @@ @Autowired private ICuttingScrapDetailService cuttingScrapDetailService; + + @Autowired + private ICuttingInventoryService cuttingInventoryService; /** * 鍒嗛〉鍒楄〃鏌ヨ @@ -106,6 +110,20 @@ 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("娣诲姞鎴愬姛锛�"); } @@ -209,4 +227,15 @@ return Result.ok(list); } + /** + * 閫夋嫨鎶ュ簾鍒�鍏风殑鍒楄〃 + */ + @GetMapping("/getInventoryToolList") + public Result<?> getInventoryToolList(@RequestParam("pageNo") Integer pageNo, + @RequestParam("pageSize") Integer pageSize, + @RequestParam Map<String, Object> params) { + IPage<Map<String, Object>> inventoryTooList = cuttingScrapService.getInventoryToolList(pageNo, pageSize, params); + return Result.ok(inventoryTooList); + } + } diff --git a/src/main/java/org/jeecg/modules/cms/entity/CuttingReceiveDetail.java b/src/main/java/org/jeecg/modules/cms/entity/CuttingReceiveDetail.java index 731e4d8..53bc04d 100644 --- a/src/main/java/org/jeecg/modules/cms/entity/CuttingReceiveDetail.java +++ b/src/main/java/org/jeecg/modules/cms/entity/CuttingReceiveDetail.java @@ -70,4 +70,5 @@ @Excel(name = "浣跨敤瀵垮懡", width = 15) @ApiModelProperty(value = "浣跨敤瀵垮懡") private Integer usedLife; + } diff --git a/src/main/java/org/jeecg/modules/cms/entity/CuttingScrap.java b/src/main/java/org/jeecg/modules/cms/entity/CuttingScrap.java index 8fff14a..8781d50 100644 --- a/src/main/java/org/jeecg/modules/cms/entity/CuttingScrap.java +++ b/src/main/java/org/jeecg/modules/cms/entity/CuttingScrap.java @@ -61,6 +61,7 @@ /**鎶ュ簾鍗曠姸鎬�*/ @Excel(name = "鎶ュ簾鍗曠姸鎬�", width = 15) @ApiModelProperty(value = "鎶ュ簾鍗曠姸鎬�") + @Dict(dicCode = "order_status") private String orderStatus; /**鐢宠浜�*/ @Excel(name = "鐢宠浜�", width = 15) diff --git a/src/main/java/org/jeecg/modules/cms/mapper/CuttingScrapMapper.java b/src/main/java/org/jeecg/modules/cms/mapper/CuttingScrapMapper.java index b79c998..af5ffee 100644 --- a/src/main/java/org/jeecg/modules/cms/mapper/CuttingScrapMapper.java +++ b/src/main/java/org/jeecg/modules/cms/mapper/CuttingScrapMapper.java @@ -1,7 +1,9 @@ package org.jeecg.modules.cms.mapper; import java.util.List; +import java.util.Map; +import com.baomidou.mybatisplus.core.metadata.IPage; import org.apache.ibatis.annotations.Param; import org.jeecg.modules.cms.entity.CuttingScrap; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -14,4 +16,5 @@ */ public interface CuttingScrapMapper extends BaseMapper<CuttingScrap> { + IPage<Map<String, Object>> getInventoryToolList(IPage<Map> pageData, Map<String, Object> params); } diff --git a/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingScrapMapper.xml b/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingScrapMapper.xml index eacf082..1004efa 100644 --- a/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingScrapMapper.xml +++ b/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingScrapMapper.xml @@ -2,4 +2,21 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="org.jeecg.modules.cms.mapper.CuttingScrapMapper"> + <select id="getInventoryToolList" parameterType="Map" resultType="Map"> + SELECT + t1.cutting_id cuttingId, + t1.id, + t1.cutting_barcode cuttingBarcode, + t1.current_life currentLife, + t2.cutting_code cuttingCode, + t2.cutting_name cuttingName, + t2.cutting_category, + t3.item_text cuttingCategory + 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 != '寰呮姤搴�' + AND t1.inventory_status != '宸叉姤搴�' + AND t2.del_flag = 0 + </select> </mapper> \ No newline at end of file diff --git a/src/main/java/org/jeecg/modules/cms/service/ICuttingInventoryService.java b/src/main/java/org/jeecg/modules/cms/service/ICuttingInventoryService.java index 875a21f..523402a 100644 --- a/src/main/java/org/jeecg/modules/cms/service/ICuttingInventoryService.java +++ b/src/main/java/org/jeecg/modules/cms/service/ICuttingInventoryService.java @@ -18,5 +18,5 @@ IPage<Map<String, Object>> statisticsByCuttingIdAndStatus(Page<Map<String, Object>> page); void updateStatus(List<String> ids, String status); - + void restoreStatus(List<String> ids); } 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 9faf974..02593f5 100644 --- a/src/main/java/org/jeecg/modules/cms/service/ICuttingScrapService.java +++ b/src/main/java/org/jeecg/modules/cms/service/ICuttingScrapService.java @@ -1,7 +1,10 @@ package org.jeecg.modules.cms.service; +import com.baomidou.mybatisplus.core.metadata.IPage; import org.jeecg.modules.cms.entity.CuttingScrap; import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.Map; /** * @Description: 鍒�鍏锋姤搴� @@ -11,4 +14,6 @@ */ public interface ICuttingScrapService extends IService<CuttingScrap> { + IPage<Map<String, Object>> getInventoryToolList(Integer pageNo, Integer pageSize, Map<String, Object> params); + } 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 6443d88..7816739 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 @@ -4,16 +4,21 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.shiro.SecurityUtils; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.cms.entity.CuttingInventory; import org.jeecg.modules.cms.mapper.CuttingInventoryMapper; import org.jeecg.modules.cms.service.ICuttingInventoryService; import org.springframework.stereotype.Service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.transaction.annotation.Transactional; +import java.util.Collections; +import java.util.Date; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * @Description: 鍒�鍏峰簱瀛� @@ -32,11 +37,51 @@ @Transactional(rollbackFor = Exception.class) public void updateStatus(List<String> ids, String status) { if (ids != null && !ids.isEmpty() && StringUtils.isNotBlank(status)) { +// UpdateWrapper<CuttingInventory> updateWrapper = new UpdateWrapper<>(); +// updateWrapper.in("id", ids); +// updateWrapper.set("inventory_status", status); // 鏍规嵁瀹為檯鏁版嵁搴撳瓧娈靛悕璋冩暣 + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + String username = "System"; // 榛樿鐢ㄦ埛鍚� + if (user != null) { + username = oConvertUtils.getString(user.getUsername(), "System"); + } UpdateWrapper<CuttingInventory> updateWrapper = new UpdateWrapper<>(); updateWrapper.in("id", ids); - updateWrapper.set("inventory_status", status); // 鏍规嵁瀹為檯鏁版嵁搴撳瓧娈靛悕璋冩暣 + updateWrapper.set("inventory_status", status); + updateWrapper.set("update_time", new Date()); + updateWrapper.set("update_by", username); this.update(updateWrapper); } } + @Override + public void restoreStatus(List<String> ids) { + if (ids != null && !ids.isEmpty()) { + // 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛淇℃伅 + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + String username = "System"; // 榛樿鐢ㄦ埛鍚� + if (user != null) { + username = oConvertUtils.getString(user.getUsername(), "System"); + } + + // 鏂瑰紡1: 鏌ヨ褰撳墠鐘舵�佸苟鏍规嵁鐘舵�佸喅瀹氭仮澶嶅埌鍝釜鐘舵�� + List<CuttingInventory> inventoryList = this.listByIds(ids); + List<String> toRestoreIds = inventoryList.stream() + .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("update_time", new Date()); + updateWrapper.set("update_by", username); + this.update(updateWrapper); + } + } + } + + + } 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 e8f937a..7dd15e8 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 @@ -1,11 +1,15 @@ package org.jeecg.modules.cms.service.impl; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.jeecg.modules.cms.entity.CuttingScrap; import org.jeecg.modules.cms.mapper.CuttingScrapMapper; import org.jeecg.modules.cms.service.ICuttingScrapService; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import java.util.Map; /** * @Description: 鍒�鍏锋姤搴� @@ -15,5 +19,10 @@ */ @Service public class CuttingScrapServiceImpl extends ServiceImpl<CuttingScrapMapper, CuttingScrap> implements ICuttingScrapService { + @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); + } } -- Gitblit v1.9.3