gongchunyi
12 小时以前 78286a5422d2180df5cd66a85570a7a3cd2f4d71
fix: 新增工艺路线与子集去除绑定产品,改为工序与产品类型
已修改10个文件
121 ■■■■ 文件已修改
doc/宁夏-中盛建材.sql 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/controller/ProcessRouteController.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/controller/ProcessRouteItemController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/dto/ProcessRouteDto.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/dto/ProcessRouteItemDto.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/pojo/ProcessRoute.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/ProcessRouteService.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/impl/ProcessRouteItemServiceImpl.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/production/ProcessRouteMapper.xml 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
doc/ÄþÏÄ-ÖÐÊ¢½¨²Ä.sql
@@ -272,4 +272,7 @@
ALTER TABLE `product_bom`
    ADD COLUMN `dict_code` bigint NOT NULL COMMENT '关联字典数据编码(sys_dict_data.dict_code)';
ALTER TABLE `product_bom` ADD INDEX `idx_dict_code` (`dict_code`);
ALTER TABLE `product_bom` ADD INDEX `idx_dict_code` (`dict_code`);
ALTER TABLE `product-inventory-management-zsjc`.`process_route`
    ADD COLUMN `dict_code` bigint NOT NULL COMMENT '产品类型字典编码' AFTER `status`;
src/main/java/com/ruoyi/production/controller/ProcessRouteController.java
@@ -2,8 +2,10 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.framework.web.domain.R;
import com.ruoyi.production.dto.ProcessRouteDto;
import com.ruoyi.production.dto.ProductStructureDto;
import com.ruoyi.production.pojo.ProcessRoute;
import com.ruoyi.production.pojo.ProcessRouteItem;
import com.ruoyi.production.service.ProcessRouteItemService;
@@ -14,34 +16,44 @@
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
@RestController
@RequestMapping("processRoute")
@RequestMapping("/processRoute")
@Api(tags = "工艺路线")
public class ProcessRouteController {
    @Autowired
    private ProcessRouteService processRouteService;
    @GetMapping("page")
    @GetMapping("/page")
    @ApiOperation("分页查询")
    public R page(Page<ProcessRouteDto>  page, ProcessRouteDto processRouteDto) {
    public R page(Page<ProcessRouteDto> page, ProcessRouteDto processRouteDto) {
        return R.ok(processRouteService.pageProcessRouteDto(page, processRouteDto));
    }
    @ApiOperation("新增工艺路线")
    @PostMapping ()
    public R add(@RequestBody  ProcessRoute processRoute) {
    @PostMapping("")
    public R add(@RequestBody ProcessRoute processRoute) {
        return R.ok(processRouteService.saveProcessRoute(processRoute));
    }
    @ApiOperation("修改工艺路线")
    @PutMapping ()
    public R update(@RequestBody  ProcessRoute processRoute) {
    @PutMapping("")
    public R update(@RequestBody ProcessRoute processRoute) {
        return R.ok(processRouteService.updateById(processRoute));
    }
    @ApiOperation("删除工艺路线")
    @DeleteMapping("/{ids}")
    public R delete(@PathVariable("ids") Long[] ids) {
        return R.ok(processRouteService.batchDelete(Arrays.asList(ids)));
    }
    @GetMapping("/getRouteBom/{id}")
    @ApiOperation("获取工艺路线绑定的BOM子集")
    public AjaxResult getRouteBom(@PathVariable Long id) {
        List<ProductStructureDto> list = processRouteService.getRouteBom(id);
        return AjaxResult.success(list);
    }
}
src/main/java/com/ruoyi/production/controller/ProcessRouteItemController.java
@@ -21,13 +21,13 @@
import java.util.List;
@RestController
@RequestMapping("processRouteItem")
@RequestMapping("/processRouteItem")
@Api(tags = "工艺路线明细")
public class ProcessRouteItemController {
    @Autowired
    private ProcessRouteItemService processRouteItemService;
    @GetMapping("list")
    @GetMapping("/list")
    public R listProcessRouteItemDto(ProcessRouteItemDto processRouteItemDto) {
        return R.ok(processRouteItemService.listProcessRouteItemDto(processRouteItemDto));
    }
@@ -50,4 +50,5 @@
    public AjaxResult batchDelete(@PathVariable("id") Long id) {
        return AjaxResult.success(processRouteItemService.batchDelete(id));
    }
}
src/main/java/com/ruoyi/production/dto/ProcessRouteDto.java
@@ -11,8 +11,8 @@
    private String productName;
    @ApiModelProperty("规格")
    private String model;
    @ApiModelProperty("产品类型")
    private String dictLabel;
    private String bomNo;
}
src/main/java/com/ruoyi/production/dto/ProcessRouteItemDto.java
@@ -26,4 +26,8 @@
    @ApiModelProperty("工序参数个数")
    private Integer paramCount;
    @ApiModelProperty("产品类型")
    private String dictLabel;
}
src/main/java/com/ruoyi/production/pojo/ProcessRoute.java
@@ -44,4 +44,7 @@
    @ApiModelProperty(value = "状态:0-草稿,1-已批准")
    private Boolean status;
    @ApiModelProperty(value = "产品类型字典编码")
    private Long dictCode;
}
src/main/java/com/ruoyi/production/service/ProcessRouteService.java
@@ -4,8 +4,8 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.production.dto.ProcessRouteDto;
import com.ruoyi.production.dto.ProductStructureDto;
import com.ruoyi.production.pojo.ProcessRoute;
import io.swagger.models.auth.In;
import java.util.List;
@@ -16,4 +16,6 @@
    Integer saveProcessRoute(ProcessRoute processRoute);
    int batchDelete(List<Long> ids);
    List<ProductStructureDto> getRouteBom(Long id);
}
src/main/java/com/ruoyi/production/service/impl/ProcessRouteItemServiceImpl.java
@@ -11,7 +11,6 @@
import com.ruoyi.production.pojo.ProcessRouteItem;
import com.ruoyi.production.pojo.ProcessRouteItemParam;
import com.ruoyi.production.service.ProcessRouteItemService;
import com.ruoyi.production.service.ProductMaterialSkuService;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -29,9 +28,6 @@
    @Autowired
    private ProcessRouteItemParamMapper processRouteItemParamMapper;
    @Autowired
    private ProductMaterialSkuService productMaterialSkuService;
    @Override
    public List<ProcessRouteItemDto> listProcessRouteItemDto(ProcessRouteItemDto processRouteItemDto) {
@@ -107,14 +103,7 @@
        if (processRouteItem == null) {
            throw new ServiceException("数据不能为空");
        }
        if (processRouteItem.getProductModelId() != null) {
            Object product = productMaterialSkuService.getById(processRouteItem.getProductModelId());
            if (product == null) {
                throw new ServiceException("操作失败:关联的产品(ID:" + processRouteItem.getProductModelId() + ")不存在");
            }
        } else {
            throw new ServiceException("产品ID不能为空");
        }
        Long tenantId = SecurityUtils.getLoginUser().getTenantId();
        processRouteItem.setTenantId(tenantId);
src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java
@@ -4,16 +4,19 @@
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.common.exception.ServiceException;
import com.ruoyi.production.dto.ProcessRouteDto;
import com.ruoyi.production.dto.ProductStructureDto;
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 com.ruoyi.production.service.ProductStructureService;
import com.ruoyi.project.system.domain.SysDictData;
import com.ruoyi.project.system.mapper.SysDictDataMapper;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -22,7 +25,7 @@
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.List;
@Service
@@ -39,6 +42,13 @@
    @Autowired
    private ProductOrderMapper productOrderMapper;
    @Autowired
    private ProductStructureService productStructureService;
    @Autowired
    private SysDictDataMapper sysDictDataMapper;
    @Override
    public IPage<ProcessRouteDto> pageProcessRouteDto(Page<ProcessRouteDto> page, ProcessRouteDto processRouteDto) {
@@ -48,6 +58,14 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Integer saveProcessRoute(ProcessRoute processRoute) {
        if (processRoute == null || processRoute.getDictCode() == null) {
            throw new ServiceException("新增工艺路线失败,产品类型不能为空");
        }
        SysDictData sysDictData = sysDictDataMapper.selectDictDataById(processRoute.getDictCode());
        if (sysDictData == null) {
            throw new ServiceException("新增工艺路线失败,产品类型不存在");
        }
        save(processRoute);
        if (processRoute.getProcessRouteCode() == null || processRoute.getProcessRouteCode().trim().isEmpty()) {
            String dateStr = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
@@ -70,4 +88,22 @@
        processRouteItemMapper.delete(Wrappers.<ProcessRouteItem>lambdaQuery().in(ProcessRouteItem::getRouteId, ids));
        return processRouteMapper.deleteBatchIds(ids);
    }
    @Override
    public List<ProductStructureDto> getRouteBom(Long id) {
        if (id == null) {
            return new ArrayList<>(0);
        }
        ProcessRoute processRoute = getById(id);
        if (processRoute == null) {
            throw new ServiceException("工艺路线不存在");
        }
        List<ProductStructureDto> list = productStructureService.listByBomId(processRoute.getBomId());
        if (list == null) {
            list = new ArrayList<>(0);
        }
        return list;
    }
}
src/main/resources/mapper/production/ProcessRouteMapper.xml
@@ -17,16 +17,15 @@
    <select id="pageProcessRouteDto" resultType="com.ruoyi.production.dto.ProcessRouteDto">
        select
        ps.*,
        pm.product_name, pms.product_id, pms.model, pb.bom_no
        pb.bom_no,
        sdd.dict_label AS dictLabel
        from process_route ps
        left join product_bom pb on ps.bom_id = pb.id
        left join product_material_sku pms on ps.product_model_id = pms.id
        left join product_material pm on pms.product_id = pm.id
        <where>
            <if test="c.model != null and c.model != ''">
                and pms.model like concat('%', #{c.model}, '%')
            </if>
        </where>
        left join sys_dict_data sdd on sdd.dict_code = ps.dict_code
        where 1= 1
        <if test="c.dictCode != null">
            and ps.dict_code = #{c.dictCode}
        </if>
        order by ps.id
    </select>