| | |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.productissue.vo.line.MesWmProductIssueLineSaveReqVO; |
| | | import cn.iocoder.yudao.module.mdm.api.item.MdmItemModelApi; |
| | | import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemModelRespDTO; |
| | | 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.mdm.MesMdmItemDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.task.MesProTaskDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderBomDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productissue.MesWmProductIssueDO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productissue.MesWmProductIssueLineDO; |
| | | 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.mdm.MesMdmItemService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.task.MesProTaskService; |
| | | import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderBomService; |
| | | import cn.iocoder.yudao.module.mes.service.wm.productissue.MesWmProductIssueLineService; |
| | |
| | | @Resource |
| | | private MesProWorkOrderBomService workOrderBomService; |
| | | @Resource |
| | | private MesMdItemService mdmItemService; |
| | | private MesMdmItemService mdmItemService; |
| | | @Resource |
| | | private MesMdUnitMeasureService unitMeasureService; |
| | | @Resource |
| | |
| | | requiredQtyMap.merge(bom.getItemId(), quantity, BigDecimal::add); |
| | | } |
| | | // 3. 批量获取物料与单位信息,拼接 VO |
| | | Map<Long, MesMdItemDO> itemMap = mdmItemService.getItemMap(requiredQtyMap.keySet()); |
| | | Map<Long, MesMdmItemDO> itemMap = mdmItemService.getItemMap(requiredQtyMap.keySet()); |
| | | Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( |
| | | convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | convertSet(itemMap.values(), MesMdmItemDO::getUnitMeasureId)); |
| | | List<MesWmProductIssueBomItemRespVO> result = new ArrayList<>(requiredQtyMap.size()); |
| | | requiredQtyMap.forEach((itemId, requiredQuantity) -> { |
| | | MesMdItemDO item = itemMap.get(itemId); |
| | | MesMdmItemDO item = itemMap.get(itemId); |
| | | if (item == null) { |
| | | return; |
| | | } |
| | |
| | | return Collections.emptyList(); |
| | | } |
| | | // 1. 获得关联数据 |
| | | Map<Long, MesMdItemDO> itemMap = mdmItemService.getItemMap( |
| | | Map<Long, MesMdmItemDO> itemMap = mdmItemService.getItemMap( |
| | | convertSet(list, MesWmProductIssueLineDO::getItemId)); |
| | | // 物料主单位与录入单位都要解析名称 |
| | | Set<Long> unitMeasureIds = new HashSet<>(convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); |
| | | Set<Long> unitMeasureIds = new HashSet<>(convertSet(itemMap.values(), MesMdmItemDO::getUnitMeasureId)); |
| | | unitMeasureIds.addAll(convertSet(list, MesWmProductIssueLineDO::getEnterUnitMeasureId)); |
| | | Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap(unitMeasureIds); |
| | | Map<Long, MdmItemModelRespDTO> itemModelMap = mdmItemModelApi.getItemModelMap( |
| | |
| | | // 2. 构建结果 |
| | | return BeanUtils.toBean(list, MesWmProductIssueLineRespVO.class, vo -> { |
| | | MapUtils.findAndThen(itemMap, vo.getItemId(), item -> { |
| | | vo.setItemCode(item.getCode()).setItemName(item.getName()).setSpecification(item.getSpecification()).setMdmItemId(item.getMdmItemId()); |
| | | vo.setItemCode(item.getCode()).setItemName(item.getName()).setSpecification(item.getSpecification()).setMdmItemId(item.getId()); |
| | | vo.setUnitMeasureId(item.getUnitMeasureId()); |
| | | MapUtils.findAndThen(unitMeasureMap, item.getUnitMeasureId(), |
| | | unit -> vo.setUnitMeasureName(unit.getName())); |