package cn.iocoder.yudao.module.mes.controller.admin.qc.outsourcetest;
|
|
import cn.hutool.core.collection.CollUtil;
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
|
import cn.iocoder.yudao.module.mes.controller.admin.qc.outsourcetest.vo.MesQcOutsourceTestPageReqVO;
|
import cn.iocoder.yudao.module.mes.controller.admin.qc.outsourcetest.vo.MesQcOutsourceTestRespVO;
|
import cn.iocoder.yudao.module.mes.controller.admin.qc.outsourcetest.vo.MesQcOutsourceTestSaveReqVO;
|
import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO;
|
import cn.iocoder.yudao.module.mes.dal.dataobject.qc.outsourcetest.MesQcOutsourceTestDO;
|
import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
|
import cn.iocoder.yudao.module.mes.service.qc.outsourcetest.MesQcOutsourceTestService;
|
import cn.iocoder.yudao.module.system.api.storage.StorageAttachmentApi;
|
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
import jakarta.annotation.Resource;
|
import jakarta.validation.Valid;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.validation.annotation.Validated;
|
import org.springframework.web.bind.annotation.*;
|
|
import java.util.Collections;
|
import java.util.List;
|
import java.util.Map;
|
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
|
|
@Tag(name = "管理后台 - MES 委外检测/试验单")
|
@RestController
|
@RequestMapping("/mes/qc/outsource-test")
|
@Validated
|
public class MesQcOutsourceTestController {
|
|
@Resource
|
private MesQcOutsourceTestService testService;
|
@Resource
|
private MesMdItemService itemService;
|
@Resource
|
private StorageAttachmentApi storageAttachmentApi;
|
|
@PostMapping("/create")
|
@Operation(summary = "创建委外检测/试验单")
|
@PreAuthorize("@ss.hasPermission('mes:qc-outsource-test:create')")
|
public CommonResult<Long> createTest(@Valid @RequestBody MesQcOutsourceTestSaveReqVO createReqVO) {
|
return success(testService.createTest(createReqVO));
|
}
|
|
@PutMapping("/update")
|
@Operation(summary = "更新委外检测/试验单")
|
@PreAuthorize("@ss.hasPermission('mes:qc-outsource-test:update')")
|
public CommonResult<Boolean> updateTest(@Valid @RequestBody MesQcOutsourceTestSaveReqVO updateReqVO) {
|
testService.updateTest(updateReqVO);
|
return success(true);
|
}
|
|
@DeleteMapping("/delete")
|
@Operation(summary = "删除委外检测/试验单")
|
@Parameter(name = "ids", description = "编号数组", required = true)
|
@PreAuthorize("@ss.hasPermission('mes:qc-outsource-test:delete')")
|
public CommonResult<Boolean> deleteTest(@RequestParam("ids") List<Long> ids) {
|
testService.deleteTest(ids);
|
return success(true);
|
}
|
|
@GetMapping("/get")
|
@Operation(summary = "获得委外检测/试验单")
|
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
@PreAuthorize("@ss.hasPermission('mes:qc-outsource-test:query')")
|
public CommonResult<MesQcOutsourceTestRespVO> getTest(@RequestParam("id") Long id) {
|
MesQcOutsourceTestDO test = testService.getTest(id);
|
if (test == null) {
|
return success(null);
|
}
|
return success(buildRespVO(test));
|
}
|
|
@GetMapping("/page")
|
@Operation(summary = "获得委外检测/试验单分页")
|
@PreAuthorize("@ss.hasPermission('mes:qc-outsource-test:query')")
|
public CommonResult<PageResult<MesQcOutsourceTestRespVO>> getTestPage(@Valid MesQcOutsourceTestPageReqVO pageReqVO) {
|
PageResult<MesQcOutsourceTestDO> pageResult = testService.getTestPage(pageReqVO);
|
if (CollUtil.isEmpty(pageResult.getList())) {
|
return success(PageResult.empty(pageResult.getTotal()));
|
}
|
return success(new PageResult<>(BeanUtils.toBean(pageResult.getList(), MesQcOutsourceTestRespVO.class,
|
vo -> fillItemName(vo, vo.getItemId())), pageResult.getTotal()));
|
}
|
|
@PutMapping("/submit")
|
@Operation(summary = "提交委外检测/试验单")
|
@Parameter(name = "id", description = "编号", required = true)
|
@PreAuthorize("@ss.hasPermission('mes:qc-outsource-test:update')")
|
public CommonResult<Boolean> submitTest(@RequestParam("id") Long id) {
|
testService.submitTest(id);
|
return success(true);
|
}
|
|
@PutMapping("/finish")
|
@Operation(summary = "完成委外检测/试验单")
|
@Parameter(name = "id", description = "编号", required = true)
|
@PreAuthorize("@ss.hasPermission('mes:qc-outsource-test:update')")
|
public CommonResult<Boolean> finishTest(@RequestParam("id") Long id) {
|
testService.finishTest(id);
|
return success(true);
|
}
|
|
private MesQcOutsourceTestRespVO buildRespVO(MesQcOutsourceTestDO test) {
|
MesQcOutsourceTestRespVO vo = BeanUtils.toBean(test, MesQcOutsourceTestRespVO.class);
|
fillItemName(vo, test.getItemId());
|
// 附件
|
vo.setAttachmentList(BeanUtils.toBean(storageAttachmentApi.listAttachments(
|
"mes_qc_outsource_test", test.getId()), MesQcOutsourceTestRespVO.Attachment.class));
|
return vo;
|
}
|
|
private void fillItemName(MesQcOutsourceTestRespVO vo, Long itemId) {
|
if (itemId == null) {
|
return;
|
}
|
Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(Collections.singleton(itemId));
|
MapUtils.findAndThen(itemMap, itemId, item -> vo.setItemName(item.getName()));
|
}
|
|
}
|