| | |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.iocoder.yudao.module.crm.api.customer.CrmCustomerApi; |
| | | import cn.iocoder.yudao.module.crm.api.customer.dto.CrmCustomerRespDTO; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; |
| | | import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; |
| | | import cn.iocoder.yudao.module.mes.api.qc.dto.MesQcReportItemRespDTO; |
| | | import cn.iocoder.yudao.module.mes.api.qc.dto.MesQcReportRespDTO; |
| | | 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.qc.indicator.MesQcIndicatorDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.qc.indicatorresult.MesQcIndicatorResultDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.qc.indicatorresult.MesQcIndicatorResultDetailDO; |
| | |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.qc.oqc.MesQcOqcLineDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.qc.rqc.MesQcRqcDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.qc.rqc.MesQcRqcLineDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO; |
| | | import cn.iocoder.yudao.module.mes.enums.qc.MesQcCheckResultEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.qc.MesQcIndicatorItemTypeEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.qc.MesQcResultValueTypeEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.qc.MesQcStatusEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService; |
| | | import cn.iocoder.yudao.module.mes.service.qc.indicator.MesQcIndicatorService; |
| | | import cn.iocoder.yudao.module.mes.service.qc.indicatorresult.MesQcIndicatorResultService; |
| | | import cn.iocoder.yudao.module.mes.service.qc.iqc.MesQcIqcLineService; |
| | |
| | | private MesQcIndicatorService indicatorService; |
| | | |
| | | @Resource |
| | | private MesMdItemService itemService; |
| | | private MdmItemApi mdmItemApi; |
| | | @Resource |
| | | private MesMdUnitMeasureService unitMeasureService; |
| | | @Resource |
| | | private MesProWorkOrderService workOrderService; |
| | | private MdmUnitMeasureApi mdmUnitMeasureApi; |
| | | @Resource |
| | | private AdminUserApi adminUserApi; |
| | | @Resource |
| | |
| | | order.getSourceDocType(), order.getSourceDocCode(), order.getItemId(), order.getCheckQuantity(), |
| | | order.getQualifiedQuantity(), order.getUnqualifiedQuantity(), order.getCheckResult(), |
| | | order.getInspectDate(), order.getStatus(), order.getRemark()); |
| | | resp.setWorkOrderCode(workOrderCode(order.getWorkOrderId())); |
| | | resp.setBatchCode(defaultStr(order.getBatchCode())); |
| | | lines = loadIpqcLines(qcId); |
| | | inspectorUserId = order.getInspectorUserId(); |
| | | } else if (Objects.equals(qcType, MesQcTypeEnum.OQC.getType())) { |
| | |
| | | throw new IllegalArgumentException("暂不支持 qcType=" + qcType); |
| | | } |
| | | |
| | | // 物料与单位:单位优先取行上的(检验时实际用的单位),缺失才回退物料的默认单位 |
| | | MesMdItemDO item = resp.getItemId() == null ? null |
| | | : itemService.getItemMap(Collections.singletonList(resp.getItemId())).get(resp.getItemId()); |
| | | // 物料与单位:物料 ID 来自 MDM;单位优先取行上的(检验时实际用的单位),缺失才回退物料的默认单位 |
| | | MdmItemRespDTO item = resp.getItemId() == null ? null |
| | | : mdmItemApi.getItemMap(Collections.singletonList(resp.getItemId())).get(resp.getItemId()); |
| | | if (item != null) { |
| | | resp.setItemCode(defaultStr(item.getCode())); |
| | | resp.setItemName(defaultStr(item.getName())); |
| | | resp.setItemSpecification(defaultStr(item.getSpecification())); |
| | | } |
| | | Map<Long, MesMdUnitMeasureDO> unitMap = unitMapOf(lines, item); |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMap = unitMapOf(lines, item); |
| | | if (item != null) { |
| | | MesMdUnitMeasureDO itemUnit = unitMap.get(item.getUnitMeasureId()); |
| | | MdmUnitMeasureRespDTO itemUnit = unitMap.get(item.getUnitMeasureId()); |
| | | resp.setUnitName(itemUnit == null ? "" : defaultStr(itemUnit.getName())); |
| | | } |
| | | resp.setInspectorName(userName(inspectorUserId)); |
| | |
| | | * (组名与公式是分组检验项最不该丢的两样东西)。 |
| | | */ |
| | | private BuiltItems buildItems(Long qcId, Integer qcType, List<LineRow> lines, |
| | | Map<Long, MesMdUnitMeasureDO> unitMap, MesMdItemDO item) { |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMap, MdmItemRespDTO item) { |
| | | if (CollUtil.isEmpty(lines)) { |
| | | return new BuiltItems(Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), 0); |
| | | } |
| | |
| | | private List<MesQcReportItemRespDTO> expandRows(MesQcIndicatorDO indicator, LineRow line, |
| | | List<MesQcIndicatorResultDO> samples, |
| | | Map<Long, List<MesQcIndicatorResultDetailDO>> detailMap, |
| | | Map<Long, MesMdUnitMeasureDO> unitMap, MesMdItemDO item) { |
| | | Map<Long, MdmUnitMeasureRespDTO> unitMap, MdmItemRespDTO item) { |
| | | List<MesQcReportItemRespDTO> rows = new ArrayList<>(); |
| | | for (MesQcIndicatorResultDO sample : samples) { |
| | | for (MesQcIndicatorResultDetailDO detail : detailMap.getOrDefault(sample.getId(), |
| | |
| | | } |
| | | |
| | | private MesQcReportItemRespDTO toItem(MesQcIndicatorDO indicator, LineRow line, String sampleCode, String value, |
| | | String detailRemark, Map<Long, MesMdUnitMeasureDO> unitMap, |
| | | MesMdItemDO item) { |
| | | MesMdUnitMeasureDO unit = unitMap.get(line.unitMeasureId()); |
| | | String detailRemark, Map<Long, MdmUnitMeasureRespDTO> unitMap, |
| | | MdmItemRespDTO item) { |
| | | MdmUnitMeasureRespDTO unit = unitMap.get(line.unitMeasureId()); |
| | | if (unit == null && item != null) { |
| | | unit = unitMap.get(item.getUnitMeasureId()); |
| | | } |
| | |
| | | |
| | | // ==================== 关联名称 ==================== |
| | | |
| | | private Map<Long, MesMdUnitMeasureDO> unitMapOf(List<LineRow> lines, MesMdItemDO item) { |
| | | private Map<Long, MdmUnitMeasureRespDTO> unitMapOf(List<LineRow> lines, MdmItemRespDTO item) { |
| | | List<Long> unitIds = new ArrayList<>(); |
| | | for (LineRow line : lines) { |
| | | if (line.unitMeasureId() != null) { |
| | |
| | | if (item != null && item.getUnitMeasureId() != null) { |
| | | unitIds.add(item.getUnitMeasureId()); |
| | | } |
| | | return unitIds.isEmpty() ? Collections.emptyMap() : unitMeasureService.getUnitMeasureMap(unitIds); |
| | | return unitIds.isEmpty() ? Collections.emptyMap() : mdmUnitMeasureApi.getUnitMeasureMap(unitIds); |
| | | } |
| | | |
| | | private String supplierName(Long vendorId) { |
| | |
| | | } |
| | | CrmCustomerRespDTO client = customerApi.getCustomerMap(Collections.singleton(clientId)).get(clientId); |
| | | return client == null ? "" : defaultStr(client.getName()); |
| | | } |
| | | |
| | | private String workOrderCode(Long workOrderId) { |
| | | if (workOrderId == null) { |
| | | return ""; |
| | | } |
| | | MesProWorkOrderDO workOrder = workOrderService.getWorkOrder(workOrderId); |
| | | return workOrder == null ? "" : defaultStr(workOrder.getCode()); |
| | | } |
| | | |
| | | private String userName(Long userId) { |