| | |
| | | import cn.iocoder.yudao.module.mes.enums.pro.MesProPalletStatusEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.trace.MesTraceCodeStatusEnum; |
| | | import cn.iocoder.yudao.module.mes.framework.qrcode.MesProQrLabelBuilder; |
| | | import cn.iocoder.yudao.module.mes.framework.config.MesProperties; |
| | | import cn.iocoder.yudao.module.mes.service.mdm.MesMdmItemService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.bagcode.MesProBagCodeService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.batch.MesProBatchService; |
| | |
| | | private MesTraceIntegrityService integrityService; |
| | | @Resource |
| | | private MesTraceConsumerScanEventMapper consumerScanEventMapper; |
| | | @Resource |
| | | private MesProperties mesProperties; |
| | | |
| | | @Override |
| | | public MesProTracePublicRespVO queryTrace(String code) { |
| | |
| | | MesProTracePublicConfigRespVO respVO = new MesProTracePublicConfigRespVO(); |
| | | respVO.setOperatorName(MesProQrLabelBuilder.resolveOperatorName()); |
| | | respVO.setTraceUrl(MesProQrLabelBuilder.resolveTraceUrl()); |
| | | respVO.setTraceLocationUrl(mesProperties.getTraceLocationUrl()); |
| | | respVO.setImported(MesProQrLabelBuilder.isImported()); |
| | | respVO.setTraceLocationRequired(mesProperties.isTraceLocationRequired()); |
| | | return respVO; |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | private MesProTracePublicRespVO.QualityVO buildQuality(MesProBatchDO batch) { |
| | | List<MesQcSeedQualityDO> list = qcSeedQualityService.getQualityByBatchCode(batch.getCode()); |
| | | // 双线质检:同一袋存在加工部、销售部两条记录,全部放行才算合格,任一条报废即不合格 |
| | | List<MesQcSeedQualityDO> list = qcSeedQualityService.getQualityByBatchCode(batch.getCode()).stream() |
| | | .filter(quality -> quality.getBizType() == null || Integer.valueOf(1).equals(quality.getBizType())) |
| | | .toList(); |
| | | if (CollUtil.isEmpty(list)) { |
| | | return null; |
| | | } |
| | | MesQcSeedQualityDO quality = list.get(0); |
| | | boolean released = list.stream().allMatch(item -> Integer.valueOf(40).equals(item.getWorkflowStatus())); |
| | | boolean scrapped = list.stream().anyMatch(item -> Integer.valueOf(70).equals(item.getWorkflowStatus())); |
| | | MesProTracePublicRespVO.QualityVO vo = new MesProTracePublicRespVO.QualityVO(); |
| | | vo.setResult(quality.getResult()).setResultName(qualityResultName(quality.getResult())) |
| | | .setReason(quality.getReason()).setInspectorName(userName(quality.getInspectorId())) |
| | | Integer finalResult = scrapped ? 2 : released ? 1 : 0; |
| | | String reason = list.stream().map(MesQcSeedQualityDO::getReason) |
| | | .filter(StrUtil::isNotBlank).findFirst().orElse(quality.getReason()); |
| | | vo.setResult(finalResult).setResultName(finalResult == 0 ? "复检或审批中" : qualityResultName(finalResult)) |
| | | .setReason(reason).setInspectorName(userName(quality.getInspectorId())) |
| | | .setInspectedAt(quality.getInspectedAt()); |
| | | List<MesQcSeedQualityIndicatorDO> indicators = qcSeedQualityService.getIndicatorsByQualityId(quality.getId()); |
| | | vo.setIndicators(convertList(indicators, ind -> { |