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) { // 先查询出领用单明细,获取相关的库存ID 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); 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); } } src/main/java/org/jeecg/modules/cms/entity/CuttingReceiveDetail.java
@@ -70,4 +70,5 @@ @Excel(name = "使用寿命", width = 15) @ApiModelProperty(value = "使用寿命") private Integer usedLife; } 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) 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); } 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> 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); } 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); } 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", "正常"); updateWrapper.set("update_time", new Date()); updateWrapper.set("update_by", username); this.update(updateWrapper); } } } } 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); } }