src/main/java/com/ruoyi/production/controller/ProcessRouteController.java
@@ -23,9 +23,6 @@ @Autowired private ProcessRouteService processRouteService; @Autowired private ProcessRouteItemService processRouteItemService; @GetMapping("page") @ApiOperation("分页查询") public R page(Page<ProcessRouteDto> page, ProcessRouteDto processRouteDto) { @@ -45,8 +42,6 @@ @ApiOperation("删除工艺路线") @DeleteMapping("/{ids}") public R delete(@PathVariable("ids") Long[] ids) { //删除工艺路线详情 processRouteItemService.remove(Wrappers.<ProcessRouteItem>lambdaQuery().in(ProcessRouteItem::getRouteId,Arrays.asList(ids))); return R.ok(processRouteService.removeBatchByIds(Arrays.asList(ids))); return R.ok(processRouteService.batchDelete(Arrays.asList(ids))); } } src/main/java/com/ruoyi/production/controller/ProductBomController.java
@@ -11,8 +11,10 @@ import com.ruoyi.production.pojo.ProcessRoute; import com.ruoyi.production.pojo.ProductBom; import com.ruoyi.production.pojo.ProductProcess; import com.ruoyi.production.pojo.ProductProcessRoute; import com.ruoyi.production.service.ProcessRouteService; import com.ruoyi.production.service.ProductBomService; import com.ruoyi.production.service.ProductProcessRouteService; import com.ruoyi.production.service.ProductProcessService; import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiOperation; @@ -39,6 +41,9 @@ @Autowired private ProcessRouteService processRouteService; @Autowired private ProductProcessRouteService productProcessRouteService; @GetMapping("/listPage") @Log(title = "BOM-分页查询", businessType = BusinessType.OTHER) @@ -67,7 +72,8 @@ @Log(title = "删除", businessType = BusinessType.DELETE) public AjaxResult batchDelete(@RequestBody List<Integer> ids) { List<ProcessRoute> list = processRouteService.list(Wrappers.<ProcessRoute>lambdaQuery().in(ProcessRoute::getBomId, ids)); if (list.size()>0){ List<ProductProcessRoute> list2 = productProcessRouteService.list(Wrappers.<ProductProcessRoute>lambdaQuery().in(ProductProcessRoute::getBomId, ids)); if (list.size()>0 || list2.size()>0){ return AjaxResult.error("该BOM已经存在对应的工艺路线,无法进行删除"); } if(CollectionUtils.isEmpty(ids)){ src/main/java/com/ruoyi/production/controller/ProductProcessController.java
@@ -59,10 +59,7 @@ @DeleteMapping("/batchDelete") @Log(title = "删除", businessType = BusinessType.DELETE) public AjaxResult batchDelete(@RequestBody List<Integer> ids) { if(CollectionUtils.isEmpty(ids)){ return AjaxResult.error("请选择至少一条数据"); } return AjaxResult.success(productProcessService.removeBatchByIds(ids)); return AjaxResult.success(productProcessService.batchDelete(ids)); } @ApiOperation("查询所有工序") src/main/java/com/ruoyi/production/pojo/ProductOrder.java
@@ -34,7 +34,7 @@ private Long productModelId; /** * 工艺路线id * 模版的工艺路线id */ @ApiModelProperty(value = "工艺路线id") private Long routeId; src/main/java/com/ruoyi/production/service/ProcessRouteService.java
@@ -7,9 +7,13 @@ import com.ruoyi.production.pojo.ProcessRoute; import io.swagger.models.auth.In; import java.util.List; public interface ProcessRouteService extends IService<ProcessRoute> { IPage<ProcessRouteDto> pageProcessRouteDto(Page<ProcessRouteDto> page, ProcessRouteDto processRouteDto); Integer saveProcessRoute(ProcessRoute processRoute); int batchDelete(List<Long> ids); } src/main/java/com/ruoyi/production/service/ProductProcessService.java
@@ -23,4 +23,6 @@ AjaxResult add(ProductProcessDto productProcessDto); AjaxResult importData(MultipartFile file); String batchDelete(List<Integer> ids); } src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java
@@ -1,11 +1,18 @@ package com.ruoyi.production.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.production.dto.ProcessRouteDto; import com.ruoyi.production.mapper.ProcessRouteItemMapper; import com.ruoyi.production.mapper.ProcessRouteMapper; import com.ruoyi.production.mapper.ProductOrderMapper; import com.ruoyi.production.mapper.ProductProcessRouteMapper; import com.ruoyi.production.pojo.ProcessRoute; import com.ruoyi.production.pojo.ProcessRouteItem; import com.ruoyi.production.pojo.ProductOrder; import com.ruoyi.production.pojo.ProductProcessRoute; import com.ruoyi.production.service.ProcessRouteService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -15,6 +22,8 @@ import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.Arrays; import java.util.List; @Service @AllArgsConstructor @@ -23,6 +32,12 @@ @Autowired private ProcessRouteMapper processRouteMapper; @Autowired private ProcessRouteItemMapper processRouteItemMapper; @Autowired private ProductOrderMapper productOrderMapper; @Override public IPage<ProcessRouteDto> pageProcessRouteDto(Page<ProcessRouteDto> page, ProcessRouteDto processRouteDto) { @@ -40,4 +55,16 @@ processRoute.setProcessRouteCode(newProductCode); return processRouteMapper.updateById(processRoute); } @Override public int batchDelete(List<Long> ids) { //先判断是否已经引用了 List<ProductOrder> productOrders = productOrderMapper.selectList(Wrappers.<ProductOrder>lambdaQuery().in(ProductOrder::getRouteId, ids)); if (productOrders.size()>0){ throw new RuntimeException("该工艺路线生产已引用,不能删除"); } //删除工艺路线详情 processRouteItemMapper.delete(Wrappers.<ProcessRouteItem>lambdaQuery().in(ProcessRouteItem::getRouteId, ids)); return processRouteMapper.deleteBatchIds(ids); } } src/main/java/com/ruoyi/production/service/impl/ProductProcessServiceImpl.java
@@ -2,14 +2,19 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.basic.pojo.Customer; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.production.dto.ProductProcessDto; import com.ruoyi.production.mapper.ProcessRouteItemMapper; import com.ruoyi.production.mapper.ProductProcessMapper; import com.ruoyi.production.mapper.ProductProcessRouteItemMapper; import com.ruoyi.production.pojo.ProcessRouteItem; import com.ruoyi.production.pojo.ProductProcess; import com.ruoyi.production.pojo.ProductProcessRouteItem; import com.ruoyi.production.service.ProductProcessService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -23,6 +28,10 @@ public class ProductProcessServiceImpl extends ServiceImpl<ProductProcessMapper, ProductProcess> implements ProductProcessService { @Autowired private ProductProcessMapper productProcessMapper; @Autowired private ProcessRouteItemMapper processRouteItemMapper; @Autowired private ProductProcessRouteItemMapper productProcessRouteItemMapper; @Override public IPage<ProductProcessDto> listPage(Page page, ProductProcessDto productProcessDto) { @@ -34,7 +43,7 @@ ProductProcess productProcess = new ProductProcess(); BeanUtils.copyProperties(productProcessDto,productProcess); boolean save = productProcessMapper.insert(productProcess) > 0; if (save && ObjectUtils.isNotNull(productProcessDto.getNo())) { if (save && ObjectUtils.isNull(productProcessDto.getNo())) { // 根据id生成no字段:GX + 8位数字(不足8位前面补0) String no = "GX" + String.format("%08d", productProcess.getId()); productProcess.setNo(no); @@ -60,4 +69,16 @@ return AjaxResult.error("导入失败"); } } @Override public String batchDelete(List<Integer> ids) { //查询是否生产中已经引用了这些工序 List<ProcessRouteItem> processRouteItems = processRouteItemMapper.selectList(Wrappers.<ProcessRouteItem>lambdaQuery().in(ProcessRouteItem::getProcessId, ids)); List<ProductProcessRouteItem> productProcessRouteItems = productProcessRouteItemMapper.selectList(Wrappers.<ProductProcessRouteItem>lambdaQuery().in(ProductProcessRouteItem::getProcessId, ids)); if (!CollectionUtils.isEmpty(processRouteItems) || !CollectionUtils.isEmpty(productProcessRouteItems)){ throw new RuntimeException("该工序已经被使用,无法删除"); } productProcessMapper.deleteBatchIds(ids); return null; } } src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -160,10 +160,10 @@ Product product = productMapper.selectById(productModel1.getProductId()); BigDecimal stockQuantity = stockUtils.getStockQuantity(productModel1.getId()).get("stockQuantity"); if (!(stockQuantity.compareTo(BigDecimal.ZERO) > 0)) { throw new RuntimeException(product.getProductName() + "库存为0"); throw new RuntimeException(product.getProductName()+"产品的"+productModel1.getModel() + "的规格库存为0"); } if (stockQuantity.compareTo(productStructureDto.getUnitQuantity().multiply(dto.getQuantity())) < 0) { throw new RuntimeException(product.getProductName() + "库存不足"); throw new RuntimeException(product.getProductName()+"产品的"+productModel1.getModel() + "的规格库存不足"); } ProductionProductInput productionProductInput = new ProductionProductInput(); productionProductInput.setProductModelId(productStructureDto.getProductModelId()); src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.production.mapper.*; import com.ruoyi.production.pojo.*; @@ -202,7 +203,7 @@ ProcessRoute processRoute = processRouteMapper.selectList(new QueryWrapper<ProcessRoute>().lambda() .eq(ProcessRoute::getProductModelId, salesLedgerProduct.getProductModelId()) .orderByDesc(ProcessRoute::getCreateTime)).get(0); if (processRoute != null) { if (ObjectUtils.isNotNull(processRoute)) { //新增生产订单工艺路线主表 ProductProcessRoute productProcessRoute = new ProductProcessRoute(); productProcessRoute.setProductModelId(processRoute.getProductModelId()); @@ -258,8 +259,6 @@ productOrder.setRouteId(processRoute.getId()); productOrderMapper.updateById(productOrder); } } else { salesLedgerProduct.setFutureTickets(salesLedgerProduct.getQuantity()); result = salesLedgerProductMapper.updateById(salesLedgerProduct); src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -705,7 +705,7 @@ ProcessRoute processRoute = processRouteMapper.selectList(new QueryWrapper<ProcessRoute>().lambda() .eq(ProcessRoute::getProductModelId, salesLedgerProduct.getProductModelId()) .orderByDesc(ProcessRoute::getCreateTime)).get(0); if (processRoute != null) { if (ObjectUtils.isNotNull(processRoute)) { //新增生产订单工艺路线主表 ProductProcessRoute productProcessRoute = new ProductProcessRoute(); productProcessRoute.setProductModelId(processRoute.getProductModelId());