package com.qianwen.smartman.modules.dnc.controller; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import java.util.List; import java.util.Set; import java.util.stream.Collectors; import javax.validation.Valid; import com.qianwen.smartman.common.cache.RegionCache; import com.qianwen.core.boot.ctrl.BladeController; import com.qianwen.core.scanner.modular.annotation.DeleteResource; import com.qianwen.core.scanner.modular.annotation.GetResource; import com.qianwen.core.scanner.modular.annotation.PostResource; import com.qianwen.core.scanner.modular.stereotype.ApiResource; import com.qianwen.core.secure.annotation.PreAuth; import com.qianwen.core.tool.api.R; import com.qianwen.core.tool.api.ResultCode; import com.qianwen.smartman.modules.dnc.convert.DncArtFileConvert; import com.qianwen.smartman.modules.dnc.entity.DncArtFile; import com.qianwen.smartman.modules.dnc.service.IDncArtFileService; import com.qianwen.smartman.modules.dnc.vo.BatchArchiveArtBagFilesVO; import com.qianwen.smartman.modules.dnc.vo.DncArtFileAddVO; import com.qianwen.smartman.modules.dnc.vo.DncArtFileVO; import com.qianwen.smartman.modules.dnc.vo.DuplicateValidationFileVO; import com.qianwen.smartman.modules.dnc.vo.sync.SyncArtBagVO; import com.qianwen.smartman.modules.dnc.vo.sync.SyncArtCatalogVO; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @Api(value = "工艺包文件管理", tags = {"工艺包文件管理"}) @RestController @ApiResource({"blade-dnc/dnc-art-file"}) @Validated /* loaded from: blade-api.jar:BOOT-INF/classes/org/springblade/modules/dnc/controller/DncArtFileController.class */ public class DncArtFileController extends BladeController { private final IDncArtFileService dncArtFileService; public DncArtFileController(final IDncArtFileService dncArtFileService) { this.dncArtFileService = dncArtFileService; } @ApiOperationSupport(order = 1) @GetResource({"/get/{id}"}) @ApiOperation(value = "工艺包文件详情", notes = "传入dncArtFile") public R detail(@PathVariable String id) { DncArtFile dncArtFile = (DncArtFile) this.dncArtFileService.getById(id); return R.data(DncArtFileConvert.INSTANCE.convert(dncArtFile)); } @ApiOperationSupport(order = 2) @GetResource({"/list"}) @ApiOperation(value = "工艺包文件列表", notes = "传入工艺包id") @PreAuth public R> list(@RequestParam("artBagId") String artBagId) { return R.data(this.dncArtFileService.artFileList(artBagId)); } @ApiOperationSupport(order = 3) @PostResource({"/insert"}) @ApiOperation(value = "工艺包文件新增", notes = "传入dncArtFileAddVO") @PreAuth public R> insert(@Valid @RequestBody List dncArtFileAdds) { return R.data(this.dncArtFileService.addArtFile(dncArtFileAdds)); } @ApiOperationSupport(order = 4) @ApiOperation(value = "工艺包文件删除", notes = "传入ids") @PreAuth @DeleteResource({"/remove"}) public R remove(@ApiParam(value = "主键", required = true) @RequestBody List ids) { if (ids.isEmpty()) { return R.status(false); } return R.status(this.dncArtFileService.batchRemoveFile(ids)); } @ApiOperationSupport(order = RegionCache.VILLAGE_LEVEL) @PostResource({"/duplicate-validation-file"}) @ApiOperation(value = "验证工艺包文件是否存在", notes = "传入DuplicateValidationFileVO") @PreAuth public R duplicateValidationArtFile(@Valid @RequestBody DuplicateValidationFileVO validationFileVO) { return R.data(Boolean.valueOf(this.dncArtFileService.duplicateValidationFile(validationFileVO))); } @ApiOperationSupport(order = 6) @PostResource({"/batch-insert"}) @ApiOperation(value = "多个工位文件归档多个工艺包文件", notes = "传入bagFilesVO") public R batchInsert(@Valid @RequestBody BatchArchiveArtBagFilesVO bagFilesVO) { return R.data(this.dncArtFileService.batchArchiveArtBagFile(bagFilesVO)); } @ApiOperationSupport(order = 7) @PostResource({"/sync"}) @ApiOperation(value = "外部系统同步工艺包文件", notes = "传入syncArtCatalogVO") public R syncArtCatalog(@Valid @RequestBody SyncArtCatalogVO syncArtCatalogVO) { if (existDuplicateFileInArtBag(syncArtCatalogVO)) { return R.fail(ResultCode.MSG_NOT_READABLE, "非法数据"); } return R.data(this.dncArtFileService.syncFile(syncArtCatalogVO)); } private boolean existDuplicateFileInArtBag(SyncArtCatalogVO syncArtCatalogVO) { List artBags = syncArtCatalogVO.getArtBag(); return artBags.stream().anyMatch(item -> { Set fileNames = (Set) item.getFileList().stream().map(x -> { return x.getFileName(); }).collect(Collectors.toSet()); boolean existDuplicateFile = item.getFileList().size() > fileNames.size(); return existDuplicateFile; }); } }