diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/enums/StatusEnum.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/enums/StatusEnum.java index caa08b65..4927985d 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/enums/StatusEnum.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/common/enums/StatusEnum.java @@ -40,7 +40,7 @@ public enum StatusEnum { ERP_TYPE(ForkMap.of("PRD_MO", "10", "生产订单", "PUR_ReceiveBill", "11", "收料通知单", "SAL_SaleOrder", "12", "销售订单", "PRD_INSTOCK", "13", "生产入库单", "STK_InStock", "14", "采购入库单", "PRD_PPBOM", "20", "生产用料清单", "PRD_PickMtrl", "21", "生产领料单", - "ka7c19edf9d4b4b39b8cc4a06802163b0", "22", "简单生产领料单", + "SP_PickMtrl", "22", "简单生产领料单", "STK_TransferDirect", "23", "调拨出库单", "SAL_RETURNSTOCK", "24", "销售退货单", "PUR_MRB", "25", "采购退料单", "STK_MisDelivery", "26", "其他出库单")), diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/md_manage/group_dick/service/impl/MdGruopDickServiceImpl.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/md_manage/group_dick/service/impl/MdGruopDickServiceImpl.java index 4fed827f..1ea3e6a1 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/md_manage/group_dick/service/impl/MdGruopDickServiceImpl.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/md_manage/group_dick/service/impl/MdGruopDickServiceImpl.java @@ -230,15 +230,15 @@ public class MdGruopDickServiceImpl extends ServiceImpl vehicleMaters = iMdPbVehicleMaterService.getVehicleMaters(vehicle_code); if (!CollectionUtils.isEmpty(vehicleMaters)) { - throw new BadRequestException(vehicle_code + "存在信息,先出库确认在使用"); + throw new BadRequestException("第" + (i + 1) +"行,"+vehicle_code+ "存在信息,先出库确认在使用"); } MdMeMaterialbase materialCode = mdMeMaterialbaseService.getOne(new QueryWrapper().eq("material_code", material_code)); if (materialCode == null) { - throw new BadRequestException(material_code + "物料编码不存在"); + throw new BadRequestException("第" + (i + 1) +"行,"+material_code+ "物料编码不存在"); } materialCode.setSingle_weight(new BigDecimal(single_weight)); //更新单重 diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/cockpit/service/dao/TaskInfo.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/cockpit/service/dao/TaskInfo.java index 046fad96..8251c16a 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/cockpit/service/dao/TaskInfo.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/cockpit/service/dao/TaskInfo.java @@ -39,5 +39,6 @@ public class TaskInfo { private BigDecimal remaining_qty; private String form_data; private String product_area; + private BigDecimal vehicleWeight; private BigDecimal vehicle_weight; } \ No newline at end of file diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/cockpit/service/impl/CockpitServiceImpl.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/cockpit/service/impl/CockpitServiceImpl.java index b5dd0224..80b2cedb 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/cockpit/service/impl/CockpitServiceImpl.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/cockpit/service/impl/CockpitServiceImpl.java @@ -31,10 +31,7 @@ import java.time.Duration; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ThreadPoolExecutor; import java.util.stream.Collectors; @@ -63,6 +60,14 @@ public class CockpitServiceImpl implements CockpitService { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM-dd"); LocalDate today = LocalDate.now(); + public static List weightList1 = new ArrayList<>(); + public static List weightList2 = new ArrayList<>(); + + private static String vehicle_code1; + private static String vehicle_code2; + + private static BigDecimal vehicleWeight1; + private static BigDecimal vehicleWeight2; /** * 查询拣选台 @@ -303,6 +308,124 @@ public class CockpitServiceImpl implements CockpitService { } + /** + * 拣选任务 + */ + public List pickingInfo1(String code) { + List taskList = cockpitMapper.getPickingTask(code); + if (ObjectUtil.isNotEmpty(taskList)) { + TaskInfo task = taskList.get(0); + if (StringUtils.isNotBlank(task.getForm_data())) { + PointInfo pointInfo = JSON.parseObject(task.getForm_data(), PointInfo.class); + if (StringUtils.isNotBlank(pointInfo.getProduct_area())) { + task.setProduct_area(pointInfo.getProduct_area()); + } + } + String code1 = code; + if ("1308".equals(code)) { + code1 = "1207"; + vehicle_code1 = task.getVehicle_code(); + } else if ("1311".equals(code)) { + code1 = "1210"; + vehicle_code2 = task.getVehicle_code(); + } + BigDecimal theoryQty = BigDecimal.ZERO; + BigDecimal actual_weight = null; + try { + InteracteDto dto = InteracteDto.builder() + .service("wmsToAcsService") + .trace_id(MDC.get("trace_id")) + .type("getWeight") + .data(new JSONObject().fluentPut("device_code", code1)) + .build(); + //查询称重重量 + TableDataInfo result = InterationUtil.notifyExt("/api/wmsToAcs/apply", (JSONObject) JSON.toJSON(dto)); + if ("200".equals(result.getCode())) { + Object dataObj = result.getData(); + if (dataObj != null) { + JSONObject data = JSONObject.parseObject(dataObj.toString()); + if (data != null && data.containsKey("weight")) { + String weightStr = data.getString("weight"); + if (ObjectUtil.isNotEmpty(weightStr)) { + actual_weight = new BigDecimal(weightStr.trim()); + if ("1207".equals(code1)) { + getVehicleWeight(weightList1, code1); + } else { + getVehicleWeight(weightList2, code1); + } + } + } + } + } + } catch (Exception ex) { + log.error(ex.getMessage()); + } + task.setActual_weight(actual_weight); + if (task.getActual_weight() != null && task.getSingle_weight() != null) { + if ("1207".equals(code1)) { + if (vehicleWeight1 != null && task.getActual_weight().compareTo(vehicleWeight1) > 0) { + task.setActual_weight(task.getActual_weight().subtract(vehicleWeight1).max(BigDecimal.ZERO).setScale(0, RoundingMode.DOWN)); + //根据称重信息计算理论数量 + if (task.getActual_weight().compareTo(BigDecimal.ZERO) > 0 && task.getSingle_weight().compareTo(BigDecimal.ZERO) > 0) { + //计算理论重量:称重-载具重量/单重 = 理论数量,理论数量!=需出数量:称重异常 + theoryQty = task.getActual_weight().divide(task.getSingle_weight(), 0, RoundingMode.DOWN); + task.setActual_weight(task.getActual_weight().setScale(2, RoundingMode.DOWN)); + } + task.setTheory_qty(theoryQty); + //计算剩余数量 + BigDecimal remaining_qty = task.getQty().subtract(theoryQty).max(BigDecimal.ZERO).setScale(0, RoundingMode.DOWN); + task.setRemaining_qty(remaining_qty); + if (!task.getVehicle_code().equals(vehicle_code1)) { + vehicleWeight2 = null; + } + } + } else { + if (vehicleWeight2 != null && task.getActual_weight().compareTo(vehicleWeight2) > 0) { + task.setActual_weight(task.getActual_weight().subtract(vehicleWeight2).max(BigDecimal.ZERO).setScale(0, RoundingMode.DOWN)); + //根据称重信息计算理论数量 + if (task.getActual_weight().compareTo(BigDecimal.ZERO) > 0 && task.getSingle_weight().compareTo(BigDecimal.ZERO) > 0) { + //计算理论重量:称重-载具重量/单重 = 理论数量,理论数量!=需出数量:称重异常 + theoryQty = task.getActual_weight().divide(task.getSingle_weight(), 0, RoundingMode.DOWN); + task.setActual_weight(task.getActual_weight().setScale(2, RoundingMode.DOWN)); + } + task.setTheory_qty(theoryQty); + //计算剩余数量 + BigDecimal remaining_qty = task.getQty().subtract(theoryQty).max(BigDecimal.ZERO).setScale(0, RoundingMode.DOWN); + task.setRemaining_qty(remaining_qty); + if (!task.getVehicle_code().equals(vehicle_code2)) { + vehicleWeight2 = null; + } + } + } + } + //单重 + task.setSingle_weight(task.getSingle_weight().setScale(2, RoundingMode.DOWN)); + //需出数量 + task.setAssign_qty(task.getAssign_qty().setScale(0, RoundingMode.DOWN)); + task.setQty(task.getQty().setScale(0, RoundingMode.DOWN)); + } + return taskList; + } + + + //获取箱子重量 + private static void getVehicleWeight(List pointList, String code) { + Optional nextWeight = pointList + .stream() + .filter(w -> w.compareTo(new BigDecimal(2000)) > 0) + .findFirst(); + nextWeight.ifPresent(w -> { + if ("1207".equals(code)) { + vehicleWeight1 = w; + } else { + vehicleWeight2 = w; + } + pointList.clear(); + }); + + } + + /** * 拣选任务 */ @@ -349,8 +472,9 @@ public class CockpitServiceImpl implements CockpitService { log.error(ex.getMessage()); } r.setActual_weight(actual_weight); - r.setActual_weight(r.getActual_weight().subtract(r.getVehicle_weight()).max(BigDecimal.ZERO).setScale(0, RoundingMode.DOWN)); if (r.getActual_weight() != null && r.getSingle_weight() != null) { + r.setVehicle_weight(new BigDecimal(2400)); + r.setActual_weight(r.getActual_weight().subtract(r.getVehicle_weight()).max(BigDecimal.ZERO).setScale(0, RoundingMode.DOWN)); //根据称重信息计算理论数量 if (r.getActual_weight().compareTo(BigDecimal.ZERO) > 0 && r.getSingle_weight().compareTo(BigDecimal.ZERO) > 0) { //计算理论重量:称重-载具重量/单重 = 理论数量,理论数量!=需出数量:称重异常 @@ -371,6 +495,7 @@ public class CockpitServiceImpl implements CockpitService { return taskList; } + /** * 领料分析 */ @@ -427,12 +552,13 @@ public class CockpitServiceImpl implements CockpitService { } private static JSONObject getElapsedTime(JSONObject item, List stockList1) { + double totalHours = 0; //计算数量 - BigDecimal total = stockList1.stream().filter(r->StringUtils.isNotBlank(r.getUpdate_time())).map(TaskInfo::getQty) + BigDecimal total = stockList1.stream().filter(r -> StringUtils.isNotBlank(r.getUpdate_time())).map(TaskInfo::getQty) .reduce(BigDecimal.ZERO, BigDecimal::add).setScale(0, RoundingMode.HALF_UP); item.put("total", total); //计算箱数 - int box = stockList1.stream().filter(r->StringUtils.isNotBlank(r.getUpdate_time())) + int box = stockList1.stream().filter(r -> StringUtils.isNotBlank(r.getUpdate_time())) .mapToInt(taskInfo -> taskInfo.getVehicle_code().split(",").length) .sum(); item.put("box", box); @@ -454,7 +580,11 @@ public class CockpitServiceImpl implements CockpitService { } }) .reduce(Duration.ZERO, Duration::plus); - double totalHours = totalDuration.toMillis() / 1000.0 / 3600.0; + if (Integer.parseInt(stockList1.get(0).getTask_type()) <= 14 && stockList1.size() > 10) { + totalHours = totalDuration.toMillis() / 1000.0 / 3600.0 / 2; + } else { + totalHours = totalDuration.toMillis() / 1000.0 / 3600.0; + } BigDecimal roundedTotalHours = BigDecimal.valueOf(totalHours).setScale(1, RoundingMode.HALF_UP); item.put("time", roundedTotalHours + "h"); return item; diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/cockpit/service/mapper/CockpitMapper.xml b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/cockpit/service/mapper/CockpitMapper.xml index 3b22e5c9..7a2341d2 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/cockpit/service/mapper/CockpitMapper.xml +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/cockpit/service/mapper/CockpitMapper.xml @@ -72,7 +72,7 @@ AND p.status = '10' AND m.material_id is NOT NULL ORDER BY d.create_time - LIMIT 2; + LIMIT 4;