| | |
| | | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | | import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.pro.feedback.vo.MesProFeedbackApproveReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.pro.feedback.vo.MesProFeedbackBatchCheckRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.pro.feedback.vo.MesProFeedbackBatchCreateReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.pro.feedback.vo.MesProFeedbackBatchCreateRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.pro.feedback.vo.MesProFeedbackPageReqVO; |
| | |
| | | import cn.iocoder.yudao.module.mes.controller.admin.pro.feedback.vo.MesProFeedbackQuickCreateRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.pro.feedback.vo.MesProFeedbackRespVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.pro.feedback.vo.MesProFeedbackSaveReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.pro.feedback.vo.MesProFeedbackSubmitReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationDO; |
| | |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.wm.itemconsume.MesWmItemConsumeMapper; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.wm.productproduce.MesWmProductProduceLineMapper; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.wm.productproduce.MesWmProductProduceMapper; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderParamRecordDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderParamRecordDetailDO; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.pro.workorder.MesProWorkOrderParamRecordMapper; |
| | | import cn.iocoder.yudao.module.mes.dal.mysql.pro.workorder.MesProWorkOrderParamRecordDetailMapper; |
| | | import cn.iocoder.yudao.module.mes.enums.MesBizTypeConstants; |
| | | |
| | | import java.io.IOException; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | import java.util.stream.Stream; |
| | | |
| | | import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; |
| | |
| | | private MesWmItemConsumeLineMapper itemConsumeLineMapper; |
| | | @Resource |
| | | private MesQcIpqcMapper ipqcMapper; |
| | | @Resource |
| | | private MesProWorkOrderParamRecordMapper paramRecordMapper; |
| | | @Resource |
| | | private MesProWorkOrderParamRecordDetailMapper paramRecordDetailMapper; |
| | | |
| | | @PostMapping("/create") |
| | | @Operation(summary = "创建生产报工") |
| | |
| | | |
| | | @PutMapping("/submit") |
| | | @Operation(summary = "提交报工") |
| | | @Parameter(name = "id", description = "编号", required = true) |
| | | @PreAuthorize("@ss.hasPermission('mes:pro-feedback:update')") |
| | | public CommonResult<Boolean> submitFeedback(@RequestParam("id") Long id) { |
| | | feedbackService.submitFeedback(id); |
| | | public CommonResult<Boolean> submitFeedback(@Valid @RequestBody MesProFeedbackSubmitReqVO reqVO) { |
| | | feedbackService.submitFeedback(reqVO); |
| | | return success(true); |
| | | } |
| | | |
| | |
| | | |
| | | @PutMapping("/approve") |
| | | @Operation(summary = "审批报工") |
| | | @Parameter(name = "id", description = "编号", required = true) |
| | | @PreAuthorize("@ss.hasPermission('mes:pro-feedback:approve')") |
| | | public CommonResult<Boolean> approveFeedback(@RequestParam("id") Long id) { |
| | | return success(feedbackService.approveFeedback(id)); |
| | | public CommonResult<Boolean> approveFeedback(@Valid @RequestBody MesProFeedbackApproveReqVO reqVO) { |
| | | return success(feedbackService.approveFeedback(reqVO)); |
| | | } |
| | | |
| | | @GetMapping("/batch-requirements") |
| | | @Operation(summary = "检查报工审批前是否需要填写批次属性") |
| | | @Parameter(name = "id", description = "报工单编号", required = true) |
| | | @PreAuthorize("@ss.hasPermission('mes:pro-feedback:approve')") |
| | | public CommonResult<MesProFeedbackBatchCheckRespVO> getBatchRequirements(@RequestParam("id") Long id) { |
| | | return success(feedbackService.checkBatchRequirements(id)); |
| | | } |
| | | |
| | | @PostMapping("/quick-create") |
| | |
| | | Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap( |
| | | convertSetByFlatMap(list, feedback -> |
| | | Stream.of(feedback.getFeedbackUserId(), feedback.getApproveUserId()))); |
| | | // 1.9 任务参数记录:报工回显参数值 |
| | | Set<Long> taskIds = convertSet(list, MesProFeedbackDO::getTaskId); |
| | | Map<Long, List<MesProWorkOrderParamRecordDetailDO>> taskParamDetailMap = new HashMap<>(); |
| | | if (CollUtil.isNotEmpty(taskIds)) { |
| | | List<MesProWorkOrderParamRecordDO> paramRecords = paramRecordMapper.selectListByTaskIds(taskIds); |
| | | if (CollUtil.isNotEmpty(paramRecords)) { |
| | | Map<Long, List<MesProWorkOrderParamRecordDetailDO>> recordDetailMap = paramRecordDetailMapper |
| | | .selectListByRecordIds(convertSet(paramRecords, MesProWorkOrderParamRecordDO::getId)).stream() |
| | | .collect(Collectors.groupingBy(MesProWorkOrderParamRecordDetailDO::getRecordId)); |
| | | for (MesProWorkOrderParamRecordDO record : paramRecords) { |
| | | taskParamDetailMap.putIfAbsent(record.getTaskId(), |
| | | recordDetailMap.getOrDefault(record.getId(), Collections.emptyList())); |
| | | } |
| | | } |
| | | } |
| | | Set<Long> paramUnitIds = new HashSet<>(); |
| | | taskParamDetailMap.values().forEach(details -> details.forEach(d -> { |
| | | if (d.getUnitMeasureId() != null) { |
| | | paramUnitIds.add(d.getUnitMeasureId()); |
| | | } |
| | | })); |
| | | Map<Long, MesMdUnitMeasureDO> paramUnitMeasureMap = unitMeasureService.getUnitMeasureMap(paramUnitIds); |
| | | |
| | | // 2. 拼接 VO |
| | | return BeanUtils.toBean(list, MesProFeedbackRespVO.class, vo -> { |
| | |
| | | vo.setFeedbackUserNickname(user.getNickname())); |
| | | findAndThen(userMap, vo.getApproveUserId(), user -> |
| | | vo.setApproveUserNickname(user.getNickname())); |
| | | // 参数值回显(任务参数记录快照,含必填标记) |
| | | List<MesProWorkOrderParamRecordDetailDO> taskDetails = taskParamDetailMap.get(vo.getTaskId()); |
| | | if (CollUtil.isNotEmpty(taskDetails)) { |
| | | vo.setParamValues(taskDetails.stream().map(detail -> { |
| | | MesProFeedbackRespVO.ParamValueResp pv = new MesProFeedbackRespVO.ParamValueResp(); |
| | | pv.setDetailId(detail.getId()); |
| | | pv.setParamCode(detail.getParamCode()); |
| | | pv.setParamName(detail.getParamName()); |
| | | pv.setParamType(detail.getParamType()); |
| | | pv.setUnitMeasureName(paramUnitMeasureMap.containsKey(detail.getUnitMeasureId()) |
| | | ? paramUnitMeasureMap.get(detail.getUnitMeasureId()).getName() : null); |
| | | pv.setParamValue(detail.getParamValue()); |
| | | pv.setRequired(detail.getRequired()); |
| | | return pv; |
| | | }).toList()); |
| | | } |
| | | }); |
| | | } |
| | | |