package cn.iocoder.yudao.module.mes.controller.admin.pro.process;
|
|
import cn.hutool.core.collection.CollUtil;
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
import cn.iocoder.yudao.module.mes.controller.admin.pro.process.vo.MesProProcessRespVO;
|
import cn.iocoder.yudao.module.mes.controller.admin.pro.process.vo.param.MesProProcessParamRespVO;
|
import cn.iocoder.yudao.module.mes.controller.admin.pro.process.vo.param.MesProProcessParamSaveReqVO;
|
import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
|
import cn.iocoder.yudao.module.mes.dal.dataobject.pd.processparam.MesPdProcessParamDO;
|
import cn.iocoder.yudao.module.mes.dal.dataobject.pro.process.MesProProcessDO;
|
import cn.iocoder.yudao.module.mes.dal.dataobject.pro.process.MesProProcessParamDO;
|
import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
|
import cn.iocoder.yudao.module.mes.service.pd.processparam.MesPdProcessParamService;
|
import cn.iocoder.yudao.module.mes.service.pro.process.MesProProcessParamService;
|
import cn.iocoder.yudao.module.mes.service.pro.process.MesProProcessService;
|
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.ArrayList;
|
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;
|
import static cn.iocoder.yudao.framework.common.util.collection.MapUtils.findAndThen;
|
|
@Tag(name = "管理后台 - MES 工序工艺参数绑定")
|
@RestController
|
@RequestMapping("/mes/pro/process-param")
|
@Validated
|
public class MesProProcessParamController {
|
|
@Resource
|
private MesProProcessParamService processParamService;
|
@Resource
|
private MesPdProcessParamService pdProcessParamService;
|
@Resource
|
private MesMdUnitMeasureService unitMeasureService;
|
@Resource
|
private MesProProcessService processService;
|
|
@GetMapping("/list-by-process")
|
@Operation(summary = "获得工序绑定的工艺参数列表(按工序编号)")
|
@Parameter(name = "processId", description = "工序编号", required = true, example = "1024")
|
@PreAuthorize("@ss.hasPermission('mes:pro-process:query')")
|
public CommonResult<List<MesProProcessParamRespVO>> getProcessParamListByProcessId(@RequestParam("processId") Long processId) {
|
List<MesProProcessParamDO> list = processParamService.getProcessParamListByProcessId(processId);
|
return success(buildRespVOList(list));
|
}
|
|
@PostMapping("/update-bindings")
|
@Operation(summary = "全量覆盖保存工序绑定的工艺参数")
|
@PreAuthorize("@ss.hasPermission('mes:pro-process:update')")
|
public CommonResult<Boolean> updateProcessParams(@Valid @RequestBody MesProProcessParamSaveReqVO reqVO) {
|
processParamService.updateProcessParams(reqVO.getProcessId(), reqVO.getItems());
|
return success(true);
|
}
|
|
@GetMapping("/list-by-param")
|
@Operation(summary = "获得工艺参数被绑定的工序列表(按工艺参数编号)")
|
@Parameter(name = "paramId", description = "工艺参数编号", required = true, example = "1024")
|
@PreAuthorize("@ss.hasPermission('mes:pro-process:query')")
|
public CommonResult<List<MesProProcessRespVO>> getProcessListByParamId(@RequestParam("paramId") Long paramId) {
|
List<MesProProcessParamDO> list = processParamService.getProcessParamListByParamId(paramId);
|
if (CollUtil.isEmpty(list)) {
|
return success(Collections.emptyList());
|
}
|
Map<Long, MesProProcessDO> processMap = processService.getProcessMap(
|
convertSet(list, MesProProcessParamDO::getProcessId));
|
List<MesProProcessRespVO> result = new ArrayList<>(list.size());
|
for (MesProProcessParamDO binding : list) {
|
MesProProcessDO process = processMap.get(binding.getProcessId());
|
if (process != null) {
|
result.add(new MesProProcessRespVO()
|
.setId(process.getId()).setCode(process.getCode()).setName(process.getName()));
|
}
|
}
|
return success(result);
|
}
|
|
// ==================== 拼接 VO ====================
|
|
private List<MesProProcessParamRespVO> buildRespVOList(List<MesProProcessParamDO> list) {
|
if (CollUtil.isEmpty(list)) {
|
return Collections.emptyList();
|
}
|
// 1. 批量获取工艺参数与计量单位
|
Map<Long, MesPdProcessParamDO> paramMap = pdProcessParamService.getProcessParamMap(
|
convertSet(list, MesProProcessParamDO::getProcessParamId));
|
Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(
|
convertSet(paramMap.values(), MesPdProcessParamDO::getUnitMeasureId));
|
// 2. 拼接 VO
|
return BeanUtils.toBean(list, MesProProcessParamRespVO.class, vo ->
|
findAndThen(paramMap, vo.getProcessParamId(), param -> {
|
vo.setParamCode(param.getParamCode()).setParamName(param.getParamName())
|
.setParamType(param.getParamType()).setUnitMeasureId(param.getUnitMeasureId());
|
findAndThen(unitMeasureMap, param.getUnitMeasureId(), unit ->
|
vo.setUnitMeasureName(unit.getName()));
|
})
|
);
|
}
|
|
}
|