| | |
| | | import com.vincent.rsf.framework.exception.CoolException; |
| | | import com.vincent.rsf.server.api.utils.LocUtils; |
| | | import com.vincent.rsf.server.common.constant.Constants; |
| | | import com.vincent.rsf.server.common.domain.BaseParam; |
| | | import com.vincent.rsf.server.common.domain.PageParam; |
| | | import com.vincent.rsf.server.manager.controller.dto.ExistDto; |
| | | import com.vincent.rsf.server.manager.controller.dto.OrderOutItemDto; |
| | | import com.vincent.rsf.server.manager.controller.params.*; |
| | | import com.vincent.rsf.server.manager.enums.*; |
| | | import com.vincent.rsf.server.manager.entity.Matnr; |
| | | import com.vincent.rsf.server.manager.entity.*; |
| | | import com.vincent.rsf.server.manager.mapper.AsnOrderMapper; |
| | | import com.vincent.rsf.server.manager.mapper.LocItemMapper; |
| | | import com.vincent.rsf.server.manager.service.*; |
| | | import com.vincent.rsf.server.manager.utils.LocManageUtil; |
| | | import com.vincent.rsf.server.manager.utils.OptimalAlgorithmUtil; |
| | |
| | | private WaveOrderRelaServiceImpl waveOrderRelaService; |
| | | @Autowired |
| | | private TaskItemService taskItemService; |
| | | @Autowired |
| | | private LocItemMapper locItemMapper; |
| | | |
| | | @Override |
| | | public PageParam<Matnr, BaseParam> pageMatnrForOutStock(PageParam<Matnr, BaseParam> pageParam, Map<String, Object> params) { |
| | | PageParam<Matnr, BaseParam> page = matnrService.getMatnrPage(pageParam, params); |
| | | List<Matnr> records = page.getRecords(); |
| | | if (records == null || records.isEmpty()) { |
| | | return page; |
| | | } |
| | | List<Long> matnrIds = records.stream().map(Matnr::getId).collect(Collectors.toList()); |
| | | String locUseStatus = params.get("locUseStatus") != null ? params.get("locUseStatus").toString() : null; |
| | | List<Map<String, Object>> stockList = locItemMapper.listStockByMatnrIds(matnrIds, locUseStatus); |
| | | Map<Long, Double> stockQtyMap = new HashMap<>(); |
| | | Map<Long, String> locStatusDescMap = new HashMap<>(); |
| | | Map<Long, String> locCodesMap = new HashMap<>(); |
| | | for (Map<String, Object> row : stockList) { |
| | | Long matnrId = getLong(row, "matnrId", "matnrid"); |
| | | if (matnrId == null) continue; |
| | | Object qty = getAny(row, "stockQty", "stockqty"); |
| | | double v = qty instanceof Number ? ((Number) qty).doubleValue() : 0d; |
| | | stockQtyMap.put(matnrId, v); |
| | | String locCodes = getStr(row, "locCodes", "loccodes"); |
| | | if (locCodes != null && !locCodes.isEmpty()) { |
| | | locCodesMap.put(matnrId, locCodes); |
| | | } |
| | | String locStatuses = getStr(row, "locStatuses", "locstatuses"); |
| | | if (locStatuses != null && !locStatuses.isEmpty()) { |
| | | String desc = Arrays.stream(locStatuses.split(",")) |
| | | .map(String::trim) |
| | | .map(LocStsType::getDescByType) |
| | | .collect(Collectors.joining(",")); |
| | | locStatusDescMap.put(matnrId, desc); |
| | | } else if (locUseStatus != null && !locUseStatus.isEmpty()) { |
| | | locStatusDescMap.put(matnrId, LocStsType.getDescByType(locUseStatus)); |
| | | } |
| | | } |
| | | for (Matnr record : records) { |
| | | record.setStockQty(stockQtyMap.getOrDefault(record.getId(), 0d)); |
| | | record.setLocUseStatus$(locStatusDescMap.get(record.getId())); |
| | | record.setLocCodes$(locCodesMap.get(record.getId())); |
| | | } |
| | | return page; |
| | | } |
| | | |
| | | private static Long getLong(Map<String, Object> map, String... keys) { |
| | | Object v = getAny(map, keys); |
| | | if (v == null) return null; |
| | | if (v instanceof Long) return (Long) v; |
| | | if (v instanceof Number) return ((Number) v).longValue(); |
| | | try { return Long.parseLong(v.toString()); } catch (NumberFormatException e) { return null; } |
| | | } |
| | | |
| | | private static String getStr(Map<String, Object> map, String... keys) { |
| | | Object v = getAny(map, keys); |
| | | return v != null ? v.toString() : null; |
| | | } |
| | | |
| | | private static Object getAny(Map<String, Object> map, String... keys) { |
| | | for (String key : keys) { |
| | | Object v = map.get(key); |
| | | if (v != null) return v; |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * @param |