/* * Copyright (c) 2018-2025, ztt All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the pig4cloud.com developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: ztt */ package com.chinaztt.mes.technology.controller; import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.chinaztt.mes.common.wrapper.QueryWrapperUtil; import com.chinaztt.mes.technology.dto.BomDTO; import com.chinaztt.mes.technology.entity.Bom; import com.chinaztt.mes.technology.entity.Structure; import com.chinaztt.mes.technology.excel.BomData; import com.chinaztt.mes.technology.excel.BomUploadListener; import com.chinaztt.mes.technology.service.BomService; import com.chinaztt.mes.technology.service.OperationService; import com.chinaztt.mes.technology.service.StructureService; import com.chinaztt.ztt.common.core.util.R; import com.chinaztt.ztt.common.log.annotation.SysLog; import com.chinaztt.ztt.common.security.service.ZttUser; import com.chinaztt.ztt.common.security.util.SecurityUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.util.List; /** * 完整bom树 * * @author zhangxy * @date 2021-05-07 15:08:17 */ @RestController @AllArgsConstructor @RequestMapping("/bom") @Api(value = "bom", tags = "完整bom树管理") public class BomController { private OperationService operationService; private final BomService bomService; private final StructureService structureService; /** * 分页查询 * * @param page 分页对象 * @param bom 完整bom树 * @return */ @ApiOperation(value = "分页查询", notes = "分页查询") @GetMapping("/page") public R getBomComponentPage(Page page, BomDTO bom) { return R.ok(bomService.getPage(page, QueryWrapperUtil.gen(bom))); } /** * 通过零件ID查询完整树结构 * * @param partId * @return */ @ApiOperation(value = "通过零件id查询完整树结构", notes = "通过零件id查询完整树结构") @GetMapping("/bigTree/{id}") public R getAllBomByPartId(@PathVariable("id") Long partId) { return R.ok(bomService.getAllBomByPartId(partId)); } /** * 通过零件id和版本号查询完整树结构 * * @param bom * @return */ @ApiOperation(value = "通过零件id和版本号查询完整树结构", notes = "通过零件id和版本号查询完整树结构") @PostMapping("/bigTreeExt") public R getAllBomExt(@RequestBody Bom bom) { return R.ok(bomService.getAllBomExt(bom, 999)); } /** * 通过id查询完整bom树 * * @param id id * @return R */ @ApiOperation(value = "通过id查询", notes = "通过id查询") @GetMapping("/{id}") public R getById(@PathVariable("id") Long id) { return R.ok(bomService.getBomDtoById(id)); } /** * @param bomDTO 完整bom树 * @return R */ @ApiOperation(value = "新增完整bom树", notes = "新增完整bom树") @SysLog("新增完整bom树") @PostMapping public R save(@RequestBody BomDTO bomDTO) { return bomService.saveBom(bomDTO); } /** * 修改完整bom树 * * @param bomDTO 完整bom树 * @return R */ @ApiOperation(value = "修改完整bom树", notes = "修改完整bom树") @SysLog("修改完整bom树") @PutMapping public R updateById(@RequestBody BomDTO bomDTO) { return R.ok(bomService.updateBom(bomDTO)); } /** * 通过id删除完整bom树 * * @param ids id * @return R */ @ApiOperation(value = "通过id删除完整bom树", notes = "通过id删除完整bom树") @SysLog("通过id删除完整bom树") @DeleteMapping public R removeById(@RequestBody List ids) { return R.ok(bomService.delete(ids)); } /** * 查询BOM的详细节点信息 * * @param id * @return */ @ApiOperation(value = "通过id查询组件", notes = "通过id查询组件") @GetMapping("/component/{id}") public R getComponentsById(@PathVariable("id") Long id) { return R.ok(bomService.getComponentsById(id)); } /** * 批准、作废 * * @param * @return */ @ApiOperation(value = "更改状态", notes = "更改状态") @SysLog("更改状态") @PostMapping("/state/{event}") public R changeState(@RequestBody List ids, @PathVariable String event) { return R.ok(bomService.changeState(ids, event)); } /** * excel上传 * * @return */ @PostMapping("/uploadExcel") public R uploadExcel(@RequestParam("file") MultipartFile file) { ZttUser currentUser = SecurityUtils.getUser(); System.out.println(currentUser); try { EasyExcel.read(file.getInputStream(), BomData.class, new BomUploadListener(bomService)).sheet().doRead(); } catch (IOException e) { e.printStackTrace(); } return R.ok(); } /** * @Author: Hans * @Description: 根据产品结构生成BOM * @Date: 2022-06-01 */ @PostMapping("/addByStructure") public R addByStructure() { // 获取需要进行构建BOM的产品结构 List structures = structureService.getBuildBom(); structures.forEach(System.out::println); return bomService.saveALLBom(structures); } }