From 283ba69e119e6402646f5c87f488888afc543341 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=B1=9F=E7=8E=AE?= Date: Fri, 22 Sep 2023 17:57:28 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E5=A4=A7=E5=B1=8F=E7=9C=9F=E5=AE=9E?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lnsh_station/LnshStationDeviceDriver.java | 3 + .../acs/ext/wms/service/AcsToWmsService.java | 2 + .../wms/service/impl/AcsToWmsServiceImpl.java | 27 + .../dashboard/service/DashboardService.java | 762 ++++++++++-------- .../org/nl/wms/dashboard/wql/DASHBOARD.wql | 89 +- .../wms/ext/acs/rest/AcsToWmsController.java | 8 + .../wms/ext/acs/service/AcsToWmsService.java | 2 + .../acs/service/impl/AcsToWmsServiceImpl.java | 11 + .../wms/sch/manage/AutoUpdateWorkOrder.java | 2 +- .../call/material/YZCallMaterialTask.java | 22 +- .../send/material/YZSendMaterialTask.java | 20 +- .../send/material/wql/SEND_MATERIAL_TASK.wql | 16 + .../src/main/java/org/nl/wms/wms.xls | Bin 287744 -> 288768 bytes .../src/main/resources/config/application.yml | 2 +- 14 files changed, 609 insertions(+), 357 deletions(-) diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_station/LnshStationDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_station/LnshStationDeviceDriver.java index a6df84f..403557b 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_station/LnshStationDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_station/LnshStationDeviceDriver.java @@ -144,6 +144,9 @@ public class LnshStationDeviceDriver extends AbstractOpcDeviceDriver implements this.setRequireSucess(false); logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + " -> " + mode); + if ("true".equals(this.getExtraValue().get("ignore_release_check"))) { + acsToWmsService.deactivatePoint(this.device_code, mode != 0); + } } if (move != last_move) { logServer.deviceItemValue(this.device_code, "move", String.valueOf(move)); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java index 30e09c9..2bfbd10 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java @@ -184,4 +184,6 @@ public interface AcsToWmsService { HttpResponse fjNeed(JSONObject param); void equipmentFailure(String deviceCode); + + void deactivatePoint(String deviceCode, boolean isUsed); } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java index cdf76e6..ec1b97f 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java @@ -1183,4 +1183,31 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { MDC.remove(log_file_type); } } + + @Override + public void deactivatePoint(String deviceCode, boolean isUsed) { + try { + MDC.put(log_file_type, log_type); + String wmsurl = acsConfigService.findByCode(AcsConfig.WMSURL).getValue(); + + JSONObject param = new JSONObject(); + param.put("device_code", deviceCode); + param.put("is_used", isUsed); + log.info("deactivatePoint - 请求参数 {}", param); + AddressDto addressDto = addressService.findByCode("deactivatePoint"); + String methods_url = addressDto.getMethods_url(); + try { + HttpResponse response = HttpRequest + .post(wmsurl + methods_url) + .timeout(2000) + .body(param.toJSONString()) + .execute(); + log.info("deactivatePoint - 响应参数 {}", response.body()); + } catch (Exception e) { + log.error("deactivatePoint - 请求错误!", e); + } + } finally { + MDC.remove(log_file_type); + } + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/dashboard/service/DashboardService.java b/lms/nladmin-system/src/main/java/org/nl/wms/dashboard/service/DashboardService.java index e1c3da6..f885484 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/dashboard/service/DashboardService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/dashboard/service/DashboardService.java @@ -9,17 +9,14 @@ import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; -import org.nl.modules.wql.core.engine.object.WO; -import org.nl.wms.basedata.eum.VehicleType; +import org.nl.wms.basedata.eum.StandStatus; import org.nl.wms.ext.acs.service.WmsToAcsService; +import org.nl.wms.sch.manage.PointStatus; import org.nl.wms.sch.manage.Region; -import org.nl.wms.sch.manage.WorkOrderEnum; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; /** @@ -32,232 +29,10 @@ public class DashboardService { private final WmsToAcsService wmsToAcsService; /** - * 生产统计 + * 大屏首页报表 * - * @return 大屏生产统计页面数据 + * @return 大屏首页报表数据 */ - public JSONObject productionStatistics() { - JSONObject result = new JSONObject(); - - // 总量---------------------------------------------------------------------------------------------------------- - JSONObject total = new JSONObject(); - result.put("total", total); - // todo 现在是假数据,后期更新。 - total.put("pressWeight", 30.25); - total.put("dryWeight", 20.25); - total.put("sortWeight", 16.25); - - // 混碾生产------------------------------------------------------------------------------------------------------ - JSONArray mixProduction = new JSONArray(); - result.put("mixProduction", mixProduction); - // todo 现在是假数据,后期更新。 - for (int i = 1; i <= Integer.parseInt(this.randomFrom1To(8)); i++) { - JSONObject row = new JSONObject(); - row.put("name", "物料" + i); - row.put("value", Integer.parseInt(this.randomFrom1To(10)) * 100 + 0.25); - mixProduction.add(row); - } - - // 在制品设备生产量------------------------------------------------------------------------------------------------ - JSONObject pressProduction = new JSONObject(); - result.put("pressProduction", pressProduction); - - // 当日产量 - // todo 现在是假数据,后期更新。 - pressProduction.put("dailyProductionQty", 32.25); - - // 当班产量 - // todo 现在是假数据,后期更新。 - pressProduction.put("dailyProductionWeight", 64.25); - - // 设备产量 - JSONArray equipmentProduction = new JSONArray(); - pressProduction.put("equipmentProduction", equipmentProduction); - // todo 现在是假数据,后期更新。 - for (int i = 1; i <= Integer.parseInt(this.randomFrom1To(10)); i++) { - JSONObject row = new JSONObject(); - row.put("name", "压机" + i); - row.put("qty", Integer.parseInt(this.randomFrom1To(20)) * 1000); - row.put("weight", Integer.parseInt(this.randomFrom1To(20)) * 1000); - equipmentProduction.add(row); - } - - // 成品完成率----------------------------------------------------------------------------------------------------- - JSONArray finishedProductCompletionRate = new JSONArray(); - result.put("finishedProductCompletionRate", finishedProductCompletionRate); - // todo 现在是假数据,后期更新。 - for (int i = 1; i <= Integer.parseInt(this.randomFrom1To(5)); i++) { - JSONObject row = new JSONObject(); - row.put("name", "物料" + i); - row.put("completed", Integer.parseInt(this.randomFrom1To(5)) * 1000); - row.put("uncompleted", Integer.parseInt(this.randomFrom1To(5)) * 1000); - finishedProductCompletionRate.add(row); - } - - // 生产任务------------------------------------------------------------------------------------------------------ - JSONArray workOrder = new JSONArray(); - result.put("workOrder", workOrder); - // todo 现在是假数据,后期更新。 - for (int i = 1; i <= Integer.parseInt(this.randomFrom1To(10)); i++) { - JSONObject row = new JSONObject(); - row.put("workOrderCode", "DD" + String.format("%03d", i)); - row.put("equipment", i % 2 == 0 ? "混料机" + i : "压机" + i); - row.put("materialCode", "WL" + String.format("%02d", i)); - row.put("customer", "厂家" + i); - int qty = Integer.parseInt(this.randomFrom1To(9)) * 1000; - row.put("planned", qty + "kg"); - row.put("completed", qty - Integer.parseInt(this.randomFrom1To(qty)) + "kg"); - WorkOrderEnum status = WorkOrderEnum.get(this.randomFrom1To(5)); - row.put("status", status.label()); - row.put("planStartTime", DateUtil.now()); - if (Integer.parseInt(status.value()) > 1) { - row.put("startTime", DateUtil.now()); - } - if (Integer.parseInt(status.value()) > 4) { - row.put("endTime", DateUtil.now()); - } - workOrder.add(row); - } - - return result; - } - - /** - * 仓储监控 - * - * @return 仓储监控数据 - */ - public JSONObject warehouseMonitor() { - JSONObject result = new JSONObject(); - - // 困料监控------------------------------------------------------------------------------------------------------ - JSONArray standMonitor = new JSONArray(); - result.put("standMonitor", standMonitor); - // todo 现在是假数据,后期更新。 - for (int i = 1; i <= 41; i++) { - JSONObject row = new JSONObject(); - row.put("storageLocation", i + "号位"); - String pointStatus = this.randomFrom1To(3); - row.put("pointStatus", pointStatus); - if (!"1".equals(pointStatus)) { - row.put("vehicleCode", String.format("%04d", Integer.parseInt(this.randomFrom1To(9999)))); - if (!"2".equals(pointStatus)) { - row.put("materialCode", "WL" + String.format("%02d", i)); - row.put("materialName", "物料" + i); - row.put("weight", this.randomFrom1To(2000)); - row.put("warehousingTime", DateUtil.format(DateUtil.offsetHour(DateUtil.date(), -1), "yyyy-MM-dd HH:mm:ss")); - row.put("standTime", "1"); - row.put("standStatus", this.randomFrom1To(5)); - } - } - standMonitor.add(row); - } - - // 成型暂存监控--------------------------------------------------------------------------------------------------- - JSONArray frontWarehouseMonitor = new JSONArray(); - result.put("frontWarehouseMonitor", frontWarehouseMonitor); - // todo 现在是假数据,后期更新。 - for (int i = 1; i <= 28; i += 2) { - JSONObject row = new JSONObject(); - row.put("storageLocation", "窑前货位" + i); - String pointStatus = this.randomFrom1To(3); - row.put("pointStatus", pointStatus); - if (!"1".equals(pointStatus)) { - row.put("vehicleCode", String.format("%04d", Integer.parseInt(this.randomFrom1To(9999)))); - if (!"2".equals(pointStatus)) { - row.put("materialCode", "WL" + String.format("%02d", i)); - row.put("materialName", "物料" + i); - row.put("qty", this.randomFrom1To(200)); - row.put("warehousingTime", DateUtil.format(DateUtil.offsetHour(DateUtil.date(), -1), "yyyy-MM-dd HH:mm:ss")); - } - } - frontWarehouseMonitor.add(row); - } - for (int i = 2; i <= 28; i += 2) { - JSONObject row = new JSONObject(); - row.put("storageLocation", "窑前货位" + i); - String pointStatus = this.randomFrom1To(3); - row.put("pointStatus", pointStatus); - if (!"1".equals(pointStatus)) { - row.put("vehicleCode", String.format("%04d", Integer.parseInt(this.randomFrom1To(9999)))); - if (!"2".equals(pointStatus)) { - row.put("materialCode", "WL" + String.format("%02d", i)); - row.put("materialName", "物料" + i); - row.put("qty", this.randomFrom1To(200)); - row.put("warehousingTime", DateUtil.format(DateUtil.offsetHour(DateUtil.date(), -1), "yyyy-MM-dd HH:mm:ss")); - } - } - frontWarehouseMonitor.add(row); - } - - // 半成品暂存监控------------------------------------------------------------------------------------------------- - JSONArray backWarehouseMonitor = new JSONArray(); - result.put("backWarehouseMonitor", backWarehouseMonitor); - // todo 现在是假数据,后期更新。 - for (int i = 1; i <= 26; i += 2) { - JSONObject row = new JSONObject(); - row.put("storageLocation", "窑后货位" + i); - String pointStatus = this.randomFrom1To(3); - row.put("pointStatus", pointStatus); - if (!"1".equals(pointStatus)) { - row.put("vehicleCode", String.format("%04d", Integer.parseInt(this.randomFrom1To(9999)))); - if (!"2".equals(pointStatus)) { - row.put("materialCode", "WL" + String.format("%02d", i)); - row.put("materialName", "物料" + i); - row.put("qty", this.randomFrom1To(200)); - row.put("warehousingTime", DateUtil.format(DateUtil.offsetHour(DateUtil.date(), -1), "yyyy-MM-dd HH:mm:ss")); - } - } - backWarehouseMonitor.add(row); - } - for (int i = 2; i <= 26; i += 2) { - JSONObject row = new JSONObject(); - row.put("storageLocation", "窑后货位" + i); - String pointStatus = this.randomFrom1To(3); - row.put("pointStatus", pointStatus); - if (!"1".equals(pointStatus)) { - row.put("vehicleCode", String.format("%04d", Integer.parseInt(this.randomFrom1To(9999)))); - if (!"2".equals(pointStatus)) { - row.put("materialCode", "WL" + String.format("%02d", i)); - row.put("materialName", "物料" + i); - row.put("qty", this.randomFrom1To(200)); - row.put("warehousingTime", DateUtil.format(DateUtil.offsetHour(DateUtil.date(), -1), "yyyy-MM-dd HH:mm:ss")); - } - } - backWarehouseMonitor.add(row); - } - - // 困料库存------------------------------------------------------------------------------------------------------ - JSONArray standStock = new JSONArray(standMonitor.stream() - .filter(o -> "3".equals(((JSONObject) o).getString("pointStatus"))) - .collect(Collectors.toList())); - result.put("standStock", standStock); - - // 成型库存------------------------------------------------------------------------------------------------------ - JSONArray frontWarehouseStock = new JSONArray(frontWarehouseMonitor.stream() - .filter(o -> "3".equals(((JSONObject) o).getString("pointStatus"))) - .collect(Collectors.toList())); - result.put("frontWarehouseStock", frontWarehouseStock); - - // 半成品库存----------------------------------------------------------------------------------------------------- - JSONArray backWarehouseStock = new JSONArray(backWarehouseMonitor.stream() - .filter(o -> "3".equals(((JSONObject) o).getString("pointStatus"))) - .collect(Collectors.toList())); - result.put("backWarehouseStock", backWarehouseStock); - - return result; - } - - private String randomFrom1To(int to) { - return String.valueOf(1 + (int) (Math.random() * to)); - } - - /** - * 首页真实数据,后期内部调用这个方法。 - * - * @return 首页真实数据 - */ - @SuppressWarnings("unused") public JSONObject homepageData() { JSONObject result = new JSONObject(); @@ -270,8 +45,7 @@ public class DashboardService { currentEquipmentCondition.put("shutdown", 0); currentEquipmentCondition.put("inTrouble", 0); // 真实获取 - JSONArray pdmBiDevice = WQLObject.getWQLObject("pdm_bi_device").query().getResultJSONArray(0); - JSONObject acsResult = wmsToAcsService.getDeviceStatus(pdmBiDevice); + JSONObject acsResult = wmsToAcsService.getDeviceStatus(WQLObject.getWQLObject("pdm_bi_device").query().getResultJSONArray(0)); if (acsResult.getIntValue("status") == HttpStatus.OK.value()) { JSONArray data = acsResult.getJSONArray("data"); @@ -295,6 +69,9 @@ public class DashboardService { currentMonth.put("sort", 0); // 真实获取 JSONArray data = WQL.getWO("DASHBOARD").addParam("flag", "1").process().getResultJSONArray(0); + if (ObjectUtil.isEmpty(data)) { + data = new JSONArray(); + } List mixData = data.stream().filter(o -> "HL".equals(((JSONObject) o).getString("region_code"))).collect(Collectors.toList()); List pressData = data.stream().filter(o -> "YZ".equals(((JSONObject) o).getString("region_code"))).collect(Collectors.toList()); List dryData = data.stream().filter(o -> "GZ".equals(((JSONObject) o).getString("region_code"))).collect(Collectors.toList()); @@ -302,19 +79,19 @@ public class DashboardService { currentMonth.put("mix", mixData.stream().filter(o -> { JSONObject row = (JSONObject) o; return DateUtil.thisYear() == row.getIntValue("year") && (DateUtil.thisMonth() + 1) == row.getIntValue("month"); - }).count()); + }).mapToInt(o -> ((JSONObject) o).getIntValue("count")).sum()); currentMonth.put("press", pressData.stream().filter(o -> { JSONObject row = (JSONObject) o; return DateUtil.thisYear() == row.getIntValue("year") && (DateUtil.thisMonth() + 1) == row.getIntValue("month"); - }).count()); + }).mapToInt(o -> ((JSONObject) o).getIntValue("count")).sum()); currentMonth.put("dry", dryData.stream().filter(o -> { JSONObject row = (JSONObject) o; return DateUtil.thisYear() == row.getIntValue("year") && (DateUtil.thisMonth() + 1) == row.getIntValue("month"); - }).count()); + }).mapToInt(o -> ((JSONObject) o).getIntValue("count")).sum()); currentMonth.put("sort", sortData.stream().filter(o -> { JSONObject row = (JSONObject) o; return DateUtil.thisYear() == row.getIntValue("year") && (DateUtil.thisMonth() + 1) == row.getIntValue("month"); - }).count()); + }).mapToInt(o -> ((JSONObject) o).getIntValue("count")).sum()); // 平均次数 JSONObject average = new JSONObject(); @@ -331,14 +108,16 @@ public class DashboardService { // 今日各区域生产数据 data = WQL.getWO("DASHBOARD").addParam("flag", "2").process().getResultJSONArray(0); + if (ObjectUtil.isEmpty(data)) { + data = new JSONArray(); + } // 混料 JSONObject mix = new JSONObject(); dailyProductionStatistics.put("mix", mix); - // 初始化 0 - mix.put("planned", 0); // 真实获取 - mix.put("completed", String.format("%.2f", data.stream().filter(o -> "HL".equals(((JSONObject) o).getString("region_code"))).mapToInt(o -> ((JSONObject) o).getIntValue("weight")).sum() / 1000.00)); + mix.put("planned", String.format("%.2f", data.stream().filter(o -> "HL".equals(((JSONObject) o).getString("region_code"))).mapToDouble(o -> ((JSONObject) o).getDoubleValue("plan_weight")).sum() / 1000)); + mix.put("completed", String.format("%.2f", data.stream().filter(o -> "HL".equals(((JSONObject) o).getString("region_code"))).mapToDouble(o -> ((JSONObject) o).getDoubleValue("weight")).sum() / 1000)); // 困料 JSONObject stand = new JSONObject(); @@ -346,22 +125,21 @@ public class DashboardService { // 当前所有存在的料盅数据 JSONArray cupData = WQLObject.getWQLObject("st_ivt_vehicle_detail").query("is_delete = '0' AND vehicle_type = '1'").getResultJSONArray(0); // 处理 - stand.put("onStanding", String.format("%.2f", cupData.stream().filter(o -> "1".equals(((JSONObject) o).getString("stand_status"))).mapToInt(o -> ((JSONObject) o).getIntValue("weight")).sum() / 1000.00)); - stand.put("completed", String.format("%.2f", cupData.stream().filter(o -> "23".contains(((JSONObject) o).getString("stand_status"))).mapToInt(o -> ((JSONObject) o).getIntValue("weight")).sum() / 1000.00)); + stand.put("onStanding", String.format("%.2f", cupData.stream().filter(o -> "1".equals(((JSONObject) o).getString("stand_status"))).mapToDouble(o -> ((JSONObject) o).getDoubleValue("weight")).sum() / 1000)); + stand.put("completed", String.format("%.2f", cupData.stream().filter(o -> "23".contains(((JSONObject) o).getString("stand_status"))).mapToDouble(o -> ((JSONObject) o).getDoubleValue("weight")).sum() / 1000)); // 压制 JSONObject press = new JSONObject(); dailyProductionStatistics.put("press", press); - // 初始化 0 - press.put("planned", 0); // 真实获取 + press.put("planned", String.format("%.2f", data.stream().filter(o -> "YZ".equals(((JSONObject) o).getString("region_code"))).mapToInt(o -> ((JSONObject) o).getIntValue("plan_qty")).sum() / 10000.00)); press.put("completed", String.format("%.2f", data.stream().filter(o -> "YZ".equals(((JSONObject) o).getString("region_code"))).mapToInt(o -> ((JSONObject) o).getIntValue("qty")).sum() / 10000.00)); // 干燥 JSONObject dry = new JSONObject(); dailyProductionStatistics.put("dry", dry); // 出窑时间为今天的数据 - JSONArray outKilnData = WQLObject.getWQLObject("st_ivt_vehicle_detail").query("vehicle_type = '2' AND TO_DAYS ( out_kiln_time ) = TO_DAYS ( NOW() )").getResultJSONArray(0); + JSONArray outKilnData = WQLObject.getWQLObject("st_ivt_vehicle_detail").query("vehicle_type = '2' AND TO_DAYS (out_kiln_time) = TO_DAYS (NOW())").getResultJSONArray(0); // 处理 dry.put("planned", 0); dry.put("completed", String.format("%.2f", outKilnData.stream().mapToInt(o -> ((JSONObject) o).getIntValue("qty")).sum() / 10000.00)); @@ -369,23 +147,34 @@ public class DashboardService { // 分拣 JSONObject sort = new JSONObject(); dailyProductionStatistics.put("sort", sort); - sort.put("planned", 0); // 真实获取 + sort.put("planned", String.format("%.2f", data.stream().filter(o -> "FJ".equals(((JSONObject) o).getString("region_code"))).mapToInt(o -> ((JSONObject) o).getIntValue("plan_qty")).sum() / 10000.00)); sort.put("completed", String.format("%.2f", data.stream().filter(o -> "FJ".equals(((JSONObject) o).getString("region_code"))).mapToInt(o -> ((JSONObject) o).getIntValue("qty")).sum() / 10000.00)); // 设备生产统计--------------------------------------------------------------------------------------------------- JSONArray equipmentProductionStatistics = new JSONArray(); result.put("equipmentProductionStatistics", equipmentProductionStatistics); - + data = WQL.getWO("DASHBOARD").addParam("flag", "7").process().getResultJSONArray(0); + for (JSONObject datum : data.stream().map(o -> (JSONObject) o).collect(Collectors.toList())) { + JSONObject row = new JSONObject(); + row.put("equipment", datum.getString("device_name")); + row.put("materialCode", datum.getString("material_number")); + row.put("materialName", datum.getString("material_name")); + if (Region.HL.value().equals(datum.getString("region_code"))) { + row.put("completed", String.format("%.2f", datum.getDoubleValue("weight") / 1000) + "吨"); + } else { + row.put("completed", datum.getIntValue("qty") + "块"); + } + equipmentProductionStatistics.add(row); + } return result; } /** - * 大屏首页设备真实数据,后期内部调用这个方法。 + * 大屏首页设备 * * @return 大屏首页设备数据 */ - @SuppressWarnings("all") public JSONObject homepageEquipment() { JSONObject result = new JSONObject(); @@ -416,7 +205,7 @@ public class DashboardService { // 混料机 JSONArray mixingMachine = new JSONArray(); mix.put("mixingMachine", mixingMachine); - List mixingMachineData = deviceData.stream().map(o -> (JSONObject) o).filter(o -> "1".equals(o.getString("device_model")) || "2".equals(o.getString("device_model"))).sorted((o1, o2) -> Integer.compare(o1.getIntValue("productivity"), o2.getIntValue("productivity"))).collect(Collectors.toList()); + List mixingMachineData = deviceData.stream().map(o -> (JSONObject) o).filter(o -> "1".equals(o.getString("device_model")) || "2".equals(o.getString("device_model"))).sorted(Comparator.comparingInt(o -> o.getIntValue("productivity"))).collect(Collectors.toList()); for (JSONObject datum : mixingMachineData) { String deviceCode = datum.getString("device_code"); int deviceStatus = datum.getIntValue("status"); @@ -425,17 +214,14 @@ public class DashboardService { JSONObject row = new JSONObject(); row.put("equipment", deviceCode); row.put("status", this.deviceStatusToDictStatus(deviceStatus)); + row.put("equipmentName", datum.getString("device_name")); + row.put("statusChinese", this.deviceStatusToChinese(deviceStatus)); JSONArray rowData = new JSONArray(); row.put("data", rowData); - JSONObject rowDatum = new JSONObject(); - rowDatum.put("key", datum.getString("device_name")); - rowDatum.put("value", this.deviceStatusToChinese(deviceStatus)); - rowData.add(rowDatum); - List currentMaterial = WorkOrders.stream().map(o -> ((JSONObject) o)).filter(o -> deviceCode.equals(o.getString("device_code"))).map(o -> o.getString("material_number")).collect(Collectors.toList()); - rowDatum = new JSONObject(); + JSONObject rowDatum = new JSONObject(); rowDatum.put("key", "当前生产"); rowDatum.put("value", currentMaterial.isEmpty() ? "" : currentMaterial.get(0)); rowData.add(rowDatum); @@ -473,7 +259,7 @@ public class DashboardService { // 混料对接位 JSONArray unloadLocation = new JSONArray(); mix.put("unloadLocation", unloadLocation); - List unloadLocationData = pointData.stream().map(o -> (JSONObject) o).filter(o -> Region.HL.value().equals(o.getString("region_code")) && "12".contains(o.getString("point_type"))).sorted((o1, o2) -> Integer.compare(o1.getIntValue("sort_seq"), o2.getIntValue("sort_seq"))).collect(Collectors.toList()); + List unloadLocationData = pointData.stream().map(o -> (JSONObject) o).filter(o -> Region.HL.value().equals(o.getString("region_code")) && "12".contains(o.getString("point_type"))).sorted(Comparator.comparingInt(o -> o.getIntValue("sort_seq"))).collect(Collectors.toList()); for (JSONObject datum : unloadLocationData) { String deviceCode = datum.getString("device_code"); int deviceMode = datum.getIntValue("mode"); @@ -522,7 +308,7 @@ public class DashboardService { rowDatum = new JSONObject(); rowDatum.put("key", "已静置时间"); - rowDatum.put("value", StrUtil.isBlank(createTime) ? "" : DateUtil.between(DateUtil.parseDate(datum.getString("create_time")), new Date(), DateUnit.HOUR) + "小时"); + rowDatum.put("value", StrUtil.isBlank(createTime) ? "" : DateUtil.between(DateUtil.parseDate(createTime), new Date(), DateUnit.HOUR) + "小时"); rowData.add(rowDatum); unloadLocation.add(row); @@ -535,7 +321,7 @@ public class DashboardService { // 困料货位 JSONArray storageLocation = new JSONArray(); stand.put("storageLocation", storageLocation); - List storageLocationData = pointData.stream().map(o -> (JSONObject) o).filter(o -> Region.KLHJ.value().equals(o.getString("region_code")) && "1234".contains(o.getString("point_type"))).sorted((o1, o2) -> Integer.compare(o1.getIntValue("sort_seq"), o2.getIntValue("sort_seq"))).collect(Collectors.toList()); + List storageLocationData = pointData.stream().map(o -> (JSONObject) o).filter(o -> Region.KLHJ.value().equals(o.getString("region_code")) && "1234".contains(o.getString("point_type"))).sorted(Comparator.comparingInt(o -> o.getIntValue("sort_seq"))).collect(Collectors.toList()); for (JSONObject datum : storageLocationData) { String deviceCode = datum.getString("device_code"); int deviceMode = datum.getIntValue("mode"); @@ -547,6 +333,8 @@ public class DashboardService { } else { row.put("status", this.deviceModeToDictStatus(deviceMode)); } + row.put("pointStatus", datum.getString("point_status")); + row.put("standStatus", datum.getString("stand_status")); JSONArray rowData = new JSONArray(); row.put("data", rowData); @@ -584,7 +372,7 @@ public class DashboardService { rowDatum = new JSONObject(); rowDatum.put("key", "已静置时间"); - rowDatum.put("value", StrUtil.isBlank(createTime) ? "" : DateUtil.between(DateUtil.parseDate(datum.getString("create_time")), new Date(), DateUnit.HOUR) + "小时"); + rowDatum.put("value", StrUtil.isBlank(createTime) ? "" : DateUtil.between(DateUtil.parseDate(createTime), new Date(), DateUnit.HOUR) + "小时"); rowData.add(rowDatum); storageLocation.add(row); @@ -597,7 +385,7 @@ public class DashboardService { // 压机上料位 JSONArray loadLocation = new JSONArray(); press.put("loadLocation", loadLocation); - List loadLocationData = pointData.stream().map(o -> (JSONObject) o).filter(o -> Region.YZ.value().equals(o.getString("region_code")) && "2".contains(o.getString("point_type"))).sorted((o1, o2) -> Integer.compare(o1.getIntValue("sort_seq"), o2.getIntValue("sort_seq"))).collect(Collectors.toList()); + List loadLocationData = pointData.stream().map(o -> (JSONObject) o).filter(o -> Region.YZ.value().equals(o.getString("region_code")) && "2".contains(o.getString("point_type"))).sorted(Comparator.comparingInt(o -> o.getIntValue("sort_seq"))).collect(Collectors.toList()); for (JSONObject datum : loadLocationData) { String deviceCode = datum.getString("device_code"); int deviceMode = datum.getIntValue("mode"); @@ -646,7 +434,7 @@ public class DashboardService { rowDatum = new JSONObject(); rowDatum.put("key", "已静置时间"); - rowDatum.put("value", StrUtil.isBlank(createTime) ? "" : DateUtil.between(DateUtil.parseDate(datum.getString("create_time")), new Date(), DateUnit.HOUR) + "小时"); + rowDatum.put("value", StrUtil.isBlank(createTime) ? "" : DateUtil.between(DateUtil.parseDate(createTime), new Date(), DateUnit.HOUR) + "小时"); rowData.add(rowDatum); loadLocation.add(row); @@ -655,7 +443,7 @@ public class DashboardService { // 压机 JSONArray pressMachine = new JSONArray(); press.put("pressMachine", pressMachine); - List pressMachineData = deviceData.stream().map(o -> (JSONObject) o).filter(o -> "3".equals(o.getString("device_model")) || "4".equals(o.getString("device_model"))).sorted((o1, o2) -> Integer.compare(o1.getIntValue("productivity"), o2.getIntValue("productivity"))).collect(Collectors.toList()); + List pressMachineData = deviceData.stream().map(o -> (JSONObject) o).filter(o -> "3".equals(o.getString("device_model")) || "4".equals(o.getString("device_model"))).sorted(Comparator.comparingInt(o -> o.getIntValue("productivity"))).collect(Collectors.toList()); for (JSONObject datum : pressMachineData) { String deviceCode = datum.getString("device_code"); int deviceStatus = datum.getIntValue("status"); @@ -664,17 +452,14 @@ public class DashboardService { JSONObject row = new JSONObject(); row.put("equipment", deviceCode); row.put("status", this.deviceStatusToDictStatus(deviceStatus)); + row.put("equipmentName", datum.getString("device_name")); + row.put("statusChinese", this.deviceStatusToChinese(deviceStatus)); JSONArray rowData = new JSONArray(); row.put("data", rowData); - JSONObject rowDatum = new JSONObject(); - rowDatum.put("key", datum.getString("device_name")); - rowDatum.put("value", this.deviceStatusToChinese(deviceStatus)); - rowData.add(rowDatum); - List currentMaterial = WorkOrders.stream().map(o -> ((JSONObject) o)).filter(o -> deviceCode.equals(o.getString("device_code"))).map(o -> o.getString("material_number")).collect(Collectors.toList()); - rowDatum = new JSONObject(); + JSONObject rowDatum = new JSONObject(); rowDatum.put("key", "当前生产"); rowDatum.put("value", currentMaterial.isEmpty() ? "" : currentMaterial.get(0)); rowData.add(rowDatum); @@ -712,7 +497,7 @@ public class DashboardService { // 码垛机械手 JSONArray palletizingRobot = new JSONArray(); press.put("palletizingRobot", palletizingRobot); - List palletizingRobotData = deviceData.stream().map(o -> (JSONObject) o).filter(o -> "5".equals(o.getString("device_model"))).sorted((o1, o2) -> Integer.compare(o1.getIntValue("productivity"), o2.getIntValue("productivity"))).collect(Collectors.toList()); + List palletizingRobotData = deviceData.stream().map(o -> (JSONObject) o).filter(o -> "5".equals(o.getString("device_model"))).sorted(Comparator.comparingInt(o -> o.getIntValue("productivity"))).collect(Collectors.toList()); for (JSONObject datum : palletizingRobotData) { String deviceCode = datum.getString("device_code"); int deviceStatus = datum.getIntValue("status"); @@ -720,20 +505,13 @@ public class DashboardService { JSONObject row = new JSONObject(); row.put("equipment", deviceCode); row.put("status", this.deviceStatusToDictStatus(deviceStatus)); + row.put("equipmentName", datum.getString("device_name")); + row.put("statusChinese", this.deviceStatusToChinese(deviceStatus)); JSONArray rowData = new JSONArray(); row.put("data", rowData); JSONObject rowDatum = new JSONObject(); - rowDatum.put("key", datum.getString("device_name")); - rowDatum.put("value", this.deviceStatusToChinese(deviceStatus)); - rowData.add(rowDatum); - - - - - - rowDatum = new JSONObject(); rowDatum.put("key", "开机时间"); rowDatum.put("value", datum.getString("open_time")); rowData.add(rowDatum); @@ -761,7 +539,7 @@ public class DashboardService { // 压机下料位 unloadLocation = new JSONArray(); press.put("unloadLocation", unloadLocation); - unloadLocationData = pointData.stream().map(o -> (JSONObject) o).filter(o -> Region.YZ.value().equals(o.getString("region_code")) && "1".contains(o.getString("point_type"))).sorted((o1, o2) -> Integer.compare(o1.getIntValue("sort_seq"), o2.getIntValue("sort_seq"))).collect(Collectors.toList()); + unloadLocationData = pointData.stream().map(o -> (JSONObject) o).filter(o -> Region.YZ.value().equals(o.getString("region_code")) && "1".contains(o.getString("point_type"))).sorted(Comparator.comparingInt(o -> o.getIntValue("sort_seq"))).collect(Collectors.toList()); for (JSONObject datum : unloadLocationData) { String deviceCode = datum.getString("device_code"); int deviceMode = datum.getIntValue("mode"); @@ -817,7 +595,7 @@ public class DashboardService { // 窑前货位 storageLocation = new JSONArray(); frontWarehouse.put("storageLocation", storageLocation); - storageLocationData = pointData.stream().map(o -> (JSONObject) o).filter(o -> Region.YQHJ.value().equals(o.getString("region_code")) && "1".contains(o.getString("point_type"))).sorted((o1, o2) -> Integer.compare(o1.getIntValue("sort_seq"), o2.getIntValue("sort_seq"))).collect(Collectors.toList()); + storageLocationData = pointData.stream().map(o -> (JSONObject) o).filter(o -> Region.YQHJ.value().equals(o.getString("region_code")) && "1".contains(o.getString("point_type"))).sorted(Comparator.comparingInt(o -> o.getIntValue("sort_seq"))).collect(Collectors.toList()); for (JSONObject datum : storageLocationData) { String deviceCode = datum.getString("device_code"); int deviceMode = datum.getIntValue("mode"); @@ -829,6 +607,7 @@ public class DashboardService { } else { row.put("status", this.deviceModeToDictStatus(deviceMode)); } + row.put("pointStatus", datum.getString("point_status")); JSONArray rowData = new JSONArray(); row.put("data", rowData); @@ -874,7 +653,7 @@ public class DashboardService { // 输送线 JSONArray conveyorLine = new JSONArray(); dry.put("conveyorLine", conveyorLine); - List conveyorLineData = pointData.stream().map(o -> (JSONObject) o).filter(o -> Region.GZ.value().equals(o.getString("region_code")) && "123".contains(o.getString("point_type"))).sorted((o1, o2) -> Integer.compare(o1.getIntValue("sort_seq"), o2.getIntValue("sort_seq"))).collect(Collectors.toList()); + List conveyorLineData = pointData.stream().map(o -> (JSONObject) o).filter(o -> Region.GZ.value().equals(o.getString("region_code")) && "123".contains(o.getString("point_type"))).sorted(Comparator.comparingInt(o -> o.getIntValue("sort_seq"))).collect(Collectors.toList()); for (JSONObject datum : conveyorLineData) { String deviceCode = datum.getString("device_code"); int deviceMode = datum.getIntValue("mode"); @@ -926,7 +705,7 @@ public class DashboardService { // 桁架 JSONArray gantryRobot = new JSONArray(); dry.put("gantryRobot", gantryRobot); - List gantryRobotData = deviceData.stream().map(o -> (JSONObject) o).filter(o -> "6".equals(o.getString("device_model")) || "8".equals(o.getString("device_model"))).sorted((o1, o2) -> Integer.compare(o1.getIntValue("productivity"), o2.getIntValue("productivity"))).collect(Collectors.toList()); + List gantryRobotData = deviceData.stream().map(o -> (JSONObject) o).filter(o -> "6".equals(o.getString("device_model")) || "8".equals(o.getString("device_model"))).sorted(Comparator.comparingInt(o -> o.getIntValue("productivity"))).collect(Collectors.toList()); for (JSONObject datum : gantryRobotData) { String deviceCode = datum.getString("device_code"); int deviceStatus = datum.getIntValue("status"); @@ -934,16 +713,13 @@ public class DashboardService { JSONObject row = new JSONObject(); row.put("equipment", deviceCode); row.put("status", this.deviceStatusToDictStatus(deviceStatus)); + row.put("equipmentName", datum.getString("device_name")); + row.put("statusChinese", this.deviceStatusToChinese(deviceStatus)); JSONArray rowData = new JSONArray(); row.put("data", rowData); JSONObject rowDatum = new JSONObject(); - rowDatum.put("key", datum.getString("device_name")); - rowDatum.put("value", this.deviceStatusToChinese(deviceStatus)); - rowData.add(rowDatum); - - rowDatum = new JSONObject(); rowDatum.put("key", "开机时间"); rowDatum.put("value", datum.getString("open_time")); rowData.add(rowDatum); @@ -969,7 +745,7 @@ public class DashboardService { // 窑 JSONArray kiln = new JSONArray(); dry.put("kiln", kiln); - List kilnData = deviceData.stream().map(o -> (JSONObject) o).filter(o -> "7".equals(o.getString("device_model"))).sorted((o1, o2) -> Integer.compare(o1.getIntValue("productivity"), o2.getIntValue("productivity"))).collect(Collectors.toList()); + List kilnData = deviceData.stream().map(o -> (JSONObject) o).filter(o -> "7".equals(o.getString("device_model"))).sorted(Comparator.comparingInt(o -> o.getIntValue("productivity"))).collect(Collectors.toList()); List toadyOutKiln = WQL.getWO("DASHBOARD").addParam("flag", "6").process().getResultJSONArray(0).stream().map(o -> (JSONObject) o).collect(Collectors.toList()); for (JSONObject datum : kilnData) { String deviceCode = datum.getString("device_code"); @@ -978,16 +754,13 @@ public class DashboardService { JSONObject row = new JSONObject(); row.put("equipment", deviceCode); row.put("status", this.deviceStatusToDictStatus(deviceStatus)); + row.put("equipmentName", datum.getString("device_name")); + row.put("statusChinese", this.deviceStatusToChinese(deviceStatus)); JSONArray rowData = new JSONArray(); row.put("data", rowData); JSONObject rowDatum = new JSONObject(); - rowDatum.put("key", datum.getString("device_name")); - rowDatum.put("value", this.deviceStatusToChinese(deviceStatus)); - rowData.add(rowDatum); - - rowDatum = new JSONObject(); rowDatum.put("key", "开机时间"); rowDatum.put("value", datum.getString("open_time")); rowData.add(rowDatum); @@ -1019,7 +792,7 @@ public class DashboardService { // 冷却道 JSONArray coolingConveyorLine = new JSONArray(); dry.put("coolingConveyorLine", coolingConveyorLine); - List coolingConveyorLineData = deviceData.stream().map(o -> (JSONObject) o).filter(o -> "13".equals(o.getString("device_model"))).sorted((o1, o2) -> Integer.compare(o1.getIntValue("productivity"), o2.getIntValue("productivity"))).collect(Collectors.toList()); + List coolingConveyorLineData = deviceData.stream().map(o -> (JSONObject) o).filter(o -> "13".equals(o.getString("device_model"))).sorted(Comparator.comparingInt(o -> o.getIntValue("productivity"))).collect(Collectors.toList()); for (JSONObject datum : coolingConveyorLineData) { String deviceCode = datum.getString("device_code"); int deviceStatus = datum.getIntValue("status"); @@ -1027,16 +800,13 @@ public class DashboardService { JSONObject row = new JSONObject(); row.put("equipment", deviceCode); row.put("status", this.deviceStatusToDictStatus(deviceStatus)); + row.put("equipmentName", datum.getString("device_name")); + row.put("statusChinese", this.deviceStatusToChinese(deviceStatus)); JSONArray rowData = new JSONArray(); row.put("data", rowData); JSONObject rowDatum = new JSONObject(); - rowDatum.put("key", datum.getString("device_name")); - rowDatum.put("value", this.deviceStatusToChinese(deviceStatus)); - rowData.add(rowDatum); - - rowDatum = new JSONObject(); rowDatum.put("key", "开机时间"); rowDatum.put("value", datum.getString("open_time")); rowData.add(rowDatum); @@ -1066,7 +836,7 @@ public class DashboardService { // 窑后货位 storageLocation = new JSONArray(); backWarehouse.put("storageLocation", storageLocation); - storageLocationData = pointData.stream().map(o -> (JSONObject) o).filter(o -> Region.YHHJ.value().equals(o.getString("region_code")) && "1".contains(o.getString("point_type"))).sorted((o1, o2) -> Integer.compare(o1.getIntValue("sort_seq"), o2.getIntValue("sort_seq"))).collect(Collectors.toList()); + storageLocationData = pointData.stream().map(o -> (JSONObject) o).filter(o -> Region.YHHJ.value().equals(o.getString("region_code")) && "1".contains(o.getString("point_type"))).sorted(Comparator.comparingInt(o -> o.getIntValue("sort_seq"))).collect(Collectors.toList()); for (JSONObject datum : storageLocationData) { String deviceCode = datum.getString("device_code"); int deviceMode = datum.getIntValue("mode"); @@ -1078,6 +848,7 @@ public class DashboardService { } else { row.put("status", this.deviceModeToDictStatus(deviceMode)); } + row.put("pointStatus", datum.getString("point_status")); JSONArray rowData = new JSONArray(); row.put("data", rowData); @@ -1137,7 +908,7 @@ public class DashboardService { // 拆垛对接位 loadLocation = new JSONArray(); sort.put("loadLocation", loadLocation); - loadLocationData = pointData.stream().map(o -> (JSONObject) o).filter(o -> Region.FJ.value().equals(o.getString("region_code")) && "1".contains(o.getString("point_type"))).sorted((o1, o2) -> Integer.compare(o1.getIntValue("sort_seq"), o2.getIntValue("sort_seq"))).collect(Collectors.toList()); + loadLocationData = pointData.stream().map(o -> (JSONObject) o).filter(o -> Region.FJ.value().equals(o.getString("region_code")) && "1".contains(o.getString("point_type"))).sorted(Comparator.comparingInt(o -> o.getIntValue("sort_seq"))).collect(Collectors.toList()); for (JSONObject datum : loadLocationData) { String deviceCode = datum.getString("device_code"); int deviceMode = datum.getIntValue("mode"); @@ -1204,7 +975,7 @@ public class DashboardService { // 分拣拆垛机械手 JSONArray depalletizingRobot = new JSONArray(); sort.put("depalletizingRobot", depalletizingRobot); - List depalletizingRobotData = deviceData.stream().map(o -> (JSONObject) o).filter(o -> "9".equals(o.getString("device_model"))).sorted((o1, o2) -> Integer.compare(o1.getIntValue("productivity"), o2.getIntValue("productivity"))).collect(Collectors.toList()); + List depalletizingRobotData = deviceData.stream().map(o -> (JSONObject) o).filter(o -> "9".equals(o.getString("device_model"))).sorted(Comparator.comparingInt(o -> o.getIntValue("productivity"))).collect(Collectors.toList()); for (JSONObject datum : depalletizingRobotData) { String deviceCode = datum.getString("device_code"); int deviceStatus = datum.getIntValue("status"); @@ -1213,17 +984,14 @@ public class DashboardService { JSONObject row = new JSONObject(); row.put("equipment", deviceCode); row.put("status", this.deviceStatusToDictStatus(deviceStatus)); + row.put("equipmentName", datum.getString("device_name")); + row.put("statusChinese", this.deviceStatusToChinese(deviceStatus)); JSONArray rowData = new JSONArray(); row.put("data", rowData); - JSONObject rowDatum = new JSONObject(); - rowDatum.put("key", datum.getString("device_name")); - rowDatum.put("value", this.deviceStatusToChinese(deviceStatus)); - rowData.add(rowDatum); - List currentMaterial = WorkOrders.stream().map(o -> ((JSONObject) o)).filter(o -> deviceCode.equals(o.getString("device_code"))).map(o -> o.getString("material_number")).collect(Collectors.toList()); - rowDatum = new JSONObject(); + JSONObject rowDatum = new JSONObject(); rowDatum.put("key", "当前生产"); rowDatum.put("value", currentMaterial.isEmpty() ? "" : currentMaterial.get(0)); rowData.add(rowDatum); @@ -1261,7 +1029,7 @@ public class DashboardService { // 分拣码垛机械手 palletizingRobot = new JSONArray(); sort.put("palletizingRobot", palletizingRobot); - palletizingRobotData = deviceData.stream().map(o -> (JSONObject) o).filter(o -> "10".equals(o.getString("device_model"))).sorted((o1, o2) -> Integer.compare(o1.getIntValue("productivity"), o2.getIntValue("productivity"))).collect(Collectors.toList()); + palletizingRobotData = deviceData.stream().map(o -> (JSONObject) o).filter(o -> "10".equals(o.getString("device_model"))).sorted(Comparator.comparingInt(o -> o.getIntValue("productivity"))).collect(Collectors.toList()); for (JSONObject datum : palletizingRobotData) { String deviceCode = datum.getString("device_code"); int deviceStatus = datum.getIntValue("status"); @@ -1269,16 +1037,13 @@ public class DashboardService { JSONObject row = new JSONObject(); row.put("equipment", deviceCode); row.put("status", this.deviceStatusToDictStatus(deviceStatus)); + row.put("equipmentName", datum.getString("device_name")); + row.put("statusChinese", this.deviceStatusToChinese(deviceStatus)); JSONArray rowData = new JSONArray(); row.put("data", rowData); JSONObject rowDatum = new JSONObject(); - rowDatum.put("key", datum.getString("device_name")); - rowDatum.put("value", this.deviceStatusToChinese(deviceStatus)); - rowData.add(rowDatum); - - rowDatum = new JSONObject(); rowDatum.put("key", "开机时间"); rowDatum.put("value", datum.getString("open_time")); rowData.add(rowDatum); @@ -1306,7 +1071,7 @@ public class DashboardService { // 码垛对接位 unloadLocation = new JSONArray(); sort.put("unloadLocation", unloadLocation); - unloadLocationData = pointData.stream().map(o -> (JSONObject) o).filter(o -> Region.FJ.value().equals(o.getString("region_code")) && "2".contains(o.getString("point_type"))).sorted((o1, o2) -> Integer.compare(o1.getIntValue("sort_seq"), o2.getIntValue("sort_seq"))).collect(Collectors.toList()); + unloadLocationData = pointData.stream().map(o -> (JSONObject) o).filter(o -> Region.FJ.value().equals(o.getString("region_code")) && "2".contains(o.getString("point_type"))).sorted(Comparator.comparingInt(o -> o.getIntValue("sort_seq"))).collect(Collectors.toList()); for (JSONObject datum : unloadLocationData) { String deviceCode = datum.getString("device_code"); int deviceMode = datum.getIntValue("mode"); @@ -1358,7 +1123,7 @@ public class DashboardService { // 覆膜机 JSONArray laminatingMachine = new JSONArray(); sort.put("laminatingMachine", laminatingMachine); - List laminatingMachineData = deviceData.stream().map(o -> (JSONObject) o).filter(o -> "14".equals(o.getString("device_model"))).sorted((o1, o2) -> Integer.compare(o1.getIntValue("productivity"), o2.getIntValue("productivity"))).collect(Collectors.toList()); + List laminatingMachineData = deviceData.stream().map(o -> (JSONObject) o).filter(o -> "14".equals(o.getString("device_model"))).sorted(Comparator.comparingInt(o -> o.getIntValue("productivity"))).collect(Collectors.toList()); for (JSONObject datum : laminatingMachineData) { String deviceCode = datum.getString("device_code"); int deviceMode = datum.getIntValue("mode"); @@ -1370,16 +1135,13 @@ public class DashboardService { } else { row.put("status", this.deviceModeToDictStatus(deviceMode)); } + row.put("equipmentName", datum.getString("device_name")); + row.put("statusChinese", this.deviceModeToChinese(deviceMode)); JSONArray rowData = new JSONArray(); row.put("data", rowData); JSONObject rowDatum = new JSONObject(); - rowDatum.put("key", datum.getString("device_name")); - rowDatum.put("value", this.deviceModeToChinese(deviceMode)); - rowData.add(rowDatum); - - rowDatum = new JSONObject(); rowDatum.put("key", "木托盘类型"); rowDatum.put("value", datum.getIntValue("container_type")); rowData.add(rowDatum); @@ -1394,7 +1156,7 @@ public class DashboardService { // 叠托机 JSONArray trayStacker = new JSONArray(); vehicleConveyorLine.put("trayStacker", trayStacker); - List trayStackerData = pointData.stream().map(o -> (JSONObject) o).filter(o -> Region.GTK.value().equals(o.getString("region_code")) && "4".contains(o.getString("point_type"))).sorted((o1, o2) -> Integer.compare(o1.getIntValue("sort_seq"), o2.getIntValue("sort_seq"))).collect(Collectors.toList()); + List trayStackerData = pointData.stream().map(o -> (JSONObject) o).filter(o -> Region.GTK.value().equals(o.getString("region_code")) && "4".contains(o.getString("point_type"))).sorted(Comparator.comparingInt(o -> o.getIntValue("sort_seq"))).collect(Collectors.toList()); for (JSONObject datum : trayStackerData) { String deviceCode = datum.getString("device_code"); int deviceStatus = datum.getIntValue("status"); @@ -1402,16 +1164,13 @@ public class DashboardService { JSONObject row = new JSONObject(); row.put("equipment", deviceCode); row.put("status", this.deviceStatusToDictStatus(deviceStatus)); + row.put("equipmentName", datum.getString("device_name")); + row.put("statusChinese", this.deviceStatusToChinese(deviceStatus)); JSONArray rowData = new JSONArray(); row.put("data", rowData); JSONObject rowDatum = new JSONObject(); - rowDatum.put("key", datum.getString("device_name")); - rowDatum.put("value", this.deviceStatusToChinese(deviceStatus)); - rowData.add(rowDatum); - - rowDatum = new JSONObject(); rowDatum.put("key", "托盘数量"); rowDatum.put("value", datum.getString("container_qty")); rowData.add(rowDatum); @@ -1444,7 +1203,7 @@ public class DashboardService { // 输送线 conveyorLine = new JSONArray(); vehicleConveyorLine.put("conveyorLine", conveyorLine); - conveyorLineData = pointData.stream().map(o -> (JSONObject) o).filter(o -> Region.GTK.value().equals(o.getString("region_code")) && "123".contains(o.getString("point_type"))).sorted((o1, o2) -> Integer.compare(o1.getIntValue("sort_seq"), o2.getIntValue("sort_seq"))).collect(Collectors.toList()); + conveyorLineData = pointData.stream().map(o -> (JSONObject) o).filter(o -> Region.GTK.value().equals(o.getString("region_code")) && "123".contains(o.getString("point_type"))).sorted(Comparator.comparingInt(o -> o.getIntValue("sort_seq"))).collect(Collectors.toList()); for (JSONObject datum : conveyorLineData) { String deviceCode = datum.getString("device_code"); int deviceMode = datum.getIntValue("mode"); @@ -1475,6 +1234,353 @@ public class DashboardService { return result; } + /** + * 生产统计 + * + * @return 大屏生产统计页面数据 + */ + public JSONObject productionStatistics() { + JSONObject result = new JSONObject(); + + // 今日各设备生产数据 + JSONArray todayWorkOrderProduction = WQL.getWO("DASHBOARD").addParam("flag", "2").process().getResultJSONArray(0); + if (ObjectUtil.isEmpty(todayWorkOrderProduction)) { + todayWorkOrderProduction = new JSONArray(); + } + + // 今日出窑托盘 + JSONArray todayOutKiln = WQL.getWO("DASHBOARD").addParam("flag", "6").process().getResultJSONArray(0); + if (ObjectUtil.isEmpty(todayOutKiln)) { + todayOutKiln = new JSONArray(); + } + + // 总量---------------------------------------------------------------------------------------------------------- + JSONObject total = new JSONObject(); + result.put("total", total); + total.put("pressWeight", String.format("%.2f", todayWorkOrderProduction.stream().filter(o -> Region.YZ.value().equals(((JSONObject) o).getString("region_code"))).mapToDouble(o -> ((JSONObject)o).getDoubleValue("weight")).sum() / 1000)); + total.put("dryWeight", String.format("%.2f", todayOutKiln.stream().mapToDouble(o -> ((JSONObject)o).getDoubleValue("weight")).sum() / 1000)); + total.put("sortWeight", String.format("%.2f", todayWorkOrderProduction.stream().filter(o -> Region.FJ.value().equals(((JSONObject) o).getString("region_code"))).mapToDouble(o -> ((JSONObject)o).getDoubleValue("weight")).sum() / 1000)); + + // 混碾生产------------------------------------------------------------------------------------------------------ + JSONArray mixProduction = new JSONArray(); + result.put("mixProduction", mixProduction); + List mixTodayProduction = todayWorkOrderProduction.stream().filter(o -> Region.HL.value().equals(((JSONObject) o).getString("region_code"))).map(o -> (JSONObject) o).collect(Collectors.toList()); + HashMap mixMaterialYield = new HashMap<>(); + for (JSONObject row : mixTodayProduction) { + mixMaterialYield.merge(row.getString("material_name"), row.getDoubleValue("weight"), Double::sum); + } + for (Map.Entry entry : mixMaterialYield.entrySet()) { + JSONObject row = new JSONObject(); + row.put("name", entry.getKey()); + row.put("value", entry.getValue()); + mixProduction.add(row); + } + + // 在制品设备生产量------------------------------------------------------------------------------------------------ + JSONObject pressProduction = new JSONObject(); + result.put("pressProduction", pressProduction); + + // 当日产量 + pressProduction.put("dailyProductionQty", String.format("%.2f", todayWorkOrderProduction.stream().filter(o -> Region.YZ.value().equals(((JSONObject) o).getString("region_code"))).mapToInt(o -> ((JSONObject)o).getIntValue("qty")).sum() / 10000.00)); + + // 当班产量 + pressProduction.put("dailyProductionWeight", String.format("%.2f", todayWorkOrderProduction.stream().filter(o -> Region.YZ.value().equals(((JSONObject) o).getString("region_code"))).mapToDouble(o -> ((JSONObject)o).getDoubleValue("weight")).sum() / 1000)); + + // 设备产量 + JSONArray equipmentProduction = new JSONArray(); + pressProduction.put("equipmentProduction", equipmentProduction); + List pressTodayProduction = todayWorkOrderProduction.stream().filter(o -> Region.YZ.value().equals(((JSONObject) o).getString("region_code"))).map(o -> (JSONObject) o).collect(Collectors.toList()); + HashMap> pressEquipmentYield = new HashMap<>(); + for (JSONObject row : pressTodayProduction) { + Map yield = new HashMap<>(); + yield.put("qty", row.getDoubleValue("qty")); + yield.put("weight", row.getDoubleValue("weight")); + pressEquipmentYield.merge(row.getString("device_name"), yield, (v1, v2) -> { + Map temp = new HashMap<>(); + temp.put("qty", Double.sum(v1.get("qty"), v2.get("qty"))); + temp.put("weight", Double.sum(v1.get("weight"), v2.get("weight"))); + return temp; + }); + } + for (Map.Entry> entry : pressEquipmentYield.entrySet()) { + JSONObject row = new JSONObject(); + row.put("name", entry.getKey()); + row.put("qty", entry.getValue().get("qty")); + row.put("weight", entry.getValue().get("weight")); + equipmentProduction.add(row); + } + + // 成品完成率----------------------------------------------------------------------------------------------------- + JSONArray finishedProductCompletionRate = new JSONArray(); + result.put("finishedProductCompletionRate", finishedProductCompletionRate); + List finishedProductCompletionData = WQL.getWO("DASHBOARD") + .addParam("flag", "8") + .process() + .getResultJSONArray(0) + .stream() + .map(o -> (JSONObject) o) + .collect(Collectors.toList()); + for (JSONObject datum : finishedProductCompletionData) { + JSONObject row = new JSONObject(); + row.put("name", datum.getString("material_name")); + int completed = datum.getIntValue("qty"); + row.put("completed", completed); + row.put("uncompleted", Math.max(0, datum.getIntValue("plan_qty") - completed)); + finishedProductCompletionRate.add(row); + } + + // 生产任务------------------------------------------------------------------------------------------------------ + JSONArray workOrder = new JSONArray(); + result.put("workOrder", workOrder); + List workOrderData = WQL.getWO("DASHBOARD") + .addParam("flag", "9") + .process() + .getResultJSONArray(0) + .stream() + .map(o -> (JSONObject) o) + .collect(Collectors.toList()); + for (JSONObject datum : workOrderData) { + JSONObject row = new JSONObject(); + row.put("workOrderCode", datum.getString("workorder_code")); + row.put("equipment", datum.getString("device_name")); + row.put("materialCode", datum.getString("material_number")); + row.put("materialName", datum.getString("material_name")); + row.put("customer", datum.getString("kh")); + if (Region.HL.value().equals(datum.getString("region_code"))) { + row.put("planned", datum.getString("plan_weight") + "千克"); + row.put("completed", datum.getString("weight") + "千克"); + } else { + row.put("planned", datum.getString("plan_qty") + "块"); + row.put("completed", datum.getString("qty") + "块"); + } + row.put("status", datum.getString("status")); + row.put("startTime", datum.getString("realproducestart_date")); + row.put("endTime", datum.getString("realproduceend_date")); + workOrder.add(row); + } + + return result; + } + + /** + * 仓储监控 + * + * @return 仓储监控数据 + */ + public JSONObject warehouseMonitor() { + JSONObject result = new JSONObject(); + + JSONArray pointData = WQL.getWO("DASHBOARD").addParam("flag", "3").process().getResultJSONArray(0); + + // 困料监控------------------------------------------------------------------------------------------------------ + JSONArray standMonitor = new JSONArray(); + result.put("standMonitor", standMonitor); + List standMonitorData = pointData.stream().map(o -> (JSONObject) o).filter(o -> Region.KLHJ.value().equals(o.getString("region_code")) && "1234".contains(o.getString("point_type"))).sorted(Comparator.comparingInt(o -> o.getIntValue("sort_seq1"))).collect(Collectors.toList()); + for (JSONObject datum : standMonitorData) { + String pointName = datum.getString("point_name"); + + JSONObject row = new JSONObject(); + row.put("storageLocation", pointName); + row.put("pointStatus", datum.getString("point_status")); + row.put("standStatus", datum.getString("stand_status")); + + JSONArray rowData = new JSONArray(); + row.put("data", rowData); + + JSONObject rowDatum = new JSONObject(); + rowDatum.put("key", "货位"); + rowDatum.put("value", pointName); + rowData.add(rowDatum); + + rowDatum = new JSONObject(); + rowDatum.put("key", "载具号"); + rowDatum.put("value", datum.getString("vehicle_code")); + rowData.add(rowDatum); + + rowDatum = new JSONObject(); + rowDatum.put("key", "物料号"); + rowDatum.put("value", datum.getString("material_number")); + rowData.add(rowDatum); + + rowDatum = new JSONObject(); + rowDatum.put("key", "物料名称"); + rowDatum.put("value", datum.getString("material_name")); + rowData.add(rowDatum); + + rowDatum = new JSONObject(); + rowDatum.put("key", "重量"); + rowDatum.put("value", String.format("%.0f", datum.getDoubleValue("weight")) + "千克"); + rowData.add(rowDatum); + + String createTime = datum.getString("create_time"); + rowDatum = new JSONObject(); + rowDatum.put("key", "入库时间"); + rowDatum.put("value", createTime); + rowData.add(rowDatum); + + rowDatum = new JSONObject(); + rowDatum.put("key", "已静置时间"); + rowDatum.put("value", StrUtil.isBlank(createTime) ? "" : DateUtil.between(DateUtil.parseDate(createTime), new Date(), DateUnit.HOUR) + "小时"); + rowData.add(rowDatum); + + standMonitor.add(row); + } + + + // 成型暂存监控--------------------------------------------------------------------------------------------------- + JSONArray frontWarehouseMonitor = new JSONArray(); + result.put("frontWarehouseMonitor", frontWarehouseMonitor); + List frontWarehouseMonitorData = pointData.stream().map(o -> (JSONObject) o).filter(o -> Region.YQHJ.value().equals(o.getString("region_code")) && "1".contains(o.getString("point_type"))).sorted(Comparator.comparingInt(o -> o.getIntValue("sort_seq1"))).collect(Collectors.toList()); + for (JSONObject datum : frontWarehouseMonitorData) { + String pointName = datum.getString("point_name"); + + JSONObject row = new JSONObject(); + row.put("storageLocation", pointName); + row.put("pointStatus", datum.getString("point_status")); + + JSONArray rowData = new JSONArray(); + row.put("data", rowData); + + JSONObject rowDatum = new JSONObject(); + rowDatum.put("key", "货位"); + rowDatum.put("value", pointName); + rowData.add(rowDatum); + + rowDatum = new JSONObject(); + rowDatum.put("key", "载具号"); + rowDatum.put("value", datum.getString("vehicle_code")); + rowData.add(rowDatum); + + rowDatum = new JSONObject(); + rowDatum.put("key", "物料号"); + rowDatum.put("value", datum.getString("material_number")); + rowData.add(rowDatum); + + rowDatum = new JSONObject(); + rowDatum.put("key", "物料名称"); + rowDatum.put("value", datum.getString("material_name")); + rowData.add(rowDatum); + + rowDatum = new JSONObject(); + rowDatum.put("key", "数量"); + rowDatum.put("value", datum.getIntValue("qty")+ "块"); + rowData.add(rowDatum); + + rowDatum = new JSONObject(); + rowDatum.put("key", "组盘时间"); + rowDatum.put("value", datum.getString("create_time")); + rowData.add(rowDatum); + + frontWarehouseMonitor.add(row); + } + + // 半成品暂存监控------------------------------------------------------------------------------------------------- + JSONArray backWarehouseMonitor = new JSONArray(); + result.put("backWarehouseMonitor", backWarehouseMonitor); + List backWarehouseMonitorData = pointData.stream().map(o -> (JSONObject) o).filter(o -> Region.YHHJ.value().equals(o.getString("region_code")) && "1".contains(o.getString("point_type"))).sorted(Comparator.comparingInt(o -> o.getIntValue("sort_seq1"))).collect(Collectors.toList()); + for (JSONObject datum : backWarehouseMonitorData) { + String pointName = datum.getString("point_name"); + + JSONObject row = new JSONObject(); + row.put("storageLocation", pointName); + row.put("pointStatus", datum.getString("point_status")); + + JSONArray rowData = new JSONArray(); + row.put("data", rowData); + + JSONObject rowDatum = new JSONObject(); + rowDatum.put("key", "货位"); + rowDatum.put("value", pointName); + rowData.add(rowDatum); + + rowDatum = new JSONObject(); + rowDatum.put("key", "载具号"); + rowDatum.put("value", datum.getString("vehicle_code")); + rowData.add(rowDatum); + + rowDatum = new JSONObject(); + rowDatum.put("key", "物料号"); + rowDatum.put("value", datum.getString("material_number")); + rowData.add(rowDatum); + + rowDatum = new JSONObject(); + rowDatum.put("key", "物料名称"); + rowDatum.put("value", datum.getString("material_name")); + rowData.add(rowDatum); + + rowDatum = new JSONObject(); + rowDatum.put("key", "数量"); + rowDatum.put("value", datum.getIntValue("qty")+ "块"); + rowData.add(rowDatum); + + rowDatum = new JSONObject(); + rowDatum.put("key", "组盘时间"); + rowDatum.put("value", datum.getString("create_time")); + rowData.add(rowDatum); + + rowDatum = new JSONObject(); + rowDatum.put("key", "入窑时间"); + rowDatum.put("value", datum.getString("in_kiln_time")); + rowData.add(rowDatum); + + rowDatum = new JSONObject(); + rowDatum.put("key", "窑"); + rowDatum.put("value", datum.getString("device_name")); + rowData.add(rowDatum); + + rowDatum = new JSONObject(); + rowDatum.put("key", "出窑时间"); + rowDatum.put("value", datum.getString("out_kiln_time")); + rowData.add(rowDatum); + + backWarehouseMonitor.add(row); + } + + // 困料库存------------------------------------------------------------------------------------------------------ + JSONArray standStock = new JSONArray(); + result.put("standStock", standStock); + for (JSONObject datum : standMonitorData.stream().filter(o -> PointStatus.HAS_GOODS.value().equals(o.getString("point_status"))).collect(Collectors.toList())) { + JSONObject row = new JSONObject(); + row.put("storageLocation", datum.getString("point_name")); + row.put("materialCode", datum.getString("material_number")); + row.put("materialName", datum.getString("material_name")); + row.put("weight", String.format("%.0f", datum.getDoubleValue("weight")) + "千克"); + row.put("standTime", DateUtil.between(DateUtil.parseDate(datum.getString("create_time")), new Date(), DateUnit.HOUR) + "小时"); + row.put("standStatus", StandStatus.get(datum.getString("stand_status")).value()); + standStock.add(row); + } + + // 成型库存------------------------------------------------------------------------------------------------------ + JSONArray frontWarehouseStock = new JSONArray(); + result.put("frontWarehouseStock", frontWarehouseStock); + for (JSONObject datum : frontWarehouseMonitorData.stream().filter(o -> PointStatus.HAS_GOODS.value().equals(o.getString("point_status"))).collect(Collectors.toList())) { + JSONObject row = new JSONObject(); + row.put("storageLocation", datum.getString("point_name")); + row.put("materialCode", datum.getString("material_number")); + row.put("materialName", datum.getString("material_name")); + row.put("qty", String.format("%.0f", datum.getDoubleValue("qty")) + "块"); + row.put("vehicleCode", datum.getString("vehicle_code")); + row.put("warehousingTime", DateUtil.parseDate(datum.getString("update_time"))); + frontWarehouseStock.add(row); + } + + // 半成品库存----------------------------------------------------------------------------------------------------- + JSONArray backWarehouseStock = new JSONArray(); + result.put("backWarehouseStock", backWarehouseStock); + for (JSONObject datum : backWarehouseMonitorData.stream().filter(o -> PointStatus.HAS_GOODS.value().equals(o.getString("point_status"))).collect(Collectors.toList())) { + JSONObject row = new JSONObject(); + row.put("storageLocation", datum.getString("point_name")); + row.put("materialCode", datum.getString("material_number")); + row.put("materialName", datum.getString("material_name")); + row.put("qty", String.format("%.0f", datum.getDoubleValue("qty")) + "块"); + row.put("vehicleCode", datum.getString("vehicle_code")); + row.put("warehousingTime", DateUtil.parseDate(datum.getString("update_time"))); + backWarehouseStock.add(row); + } + + return result; + } + private int deviceStatusToDictStatus(int status) { switch (status) { case 0: diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/dashboard/wql/DASHBOARD.wql b/lms/nladmin-system/src/main/java/org/nl/wms/dashboard/wql/DASHBOARD.wql index a843a47..9301491 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/dashboard/wql/DASHBOARD.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/dashboard/wql/DASHBOARD.wql @@ -61,13 +61,17 @@ d.region_code, wod.qty, wod.weight, - wo.plan_qty + wo.plan_qty, + wo.plan_weight, + mb.material_name, + d.device_name FROM - pdm_bd_work_order_daliy wod + pdm_bd_work_order_daily wod LEFT JOIN pdm_bd_workorder wo ON wod.workorder_id = wo.workorder_id LEFT JOIN pdm_bi_device d ON wo.device_id = d.device_id + LEFT JOIN md_me_materialbase mb ON wo.material_id = mb.material_id WHERE - TO_DAYS ( wod.date ) = TO_DAYS ( NOW() ) + TO_DAYS(wod.date) = TO_DAYS(NOW()) ENDSELECT ENDQUERY ENDIF @@ -91,7 +95,8 @@ mb.material_name, d.device_name, vd.in_kiln_time, - vd.out_kiln_time + vd.out_kiln_time, + p.update_time FROM sch_base_point p LEFT JOIN st_ivt_vehicle_detail vd ON p.vd_id = vd.vd_id @@ -140,6 +145,8 @@ QUERY SELECT vd.qty, + vd.weight, + mb.material_id, mb.material_name, wo.kh, wo.device_code @@ -154,3 +161,77 @@ ENDSELECT ENDQUERY ENDIF + + IF 输入.flag = "7" + QUERY + SELECT + d.device_name, + d.region_code, + mb.material_number, + mb.material_name, + SUM(wod.qty) AS qty, + SUM(wod.weight) AS weight + FROM + pdm_bd_work_order_daily wod + LEFT JOIN pdm_bd_workorder wo ON wod.workorder_id = wo.workorder_id + LEFT JOIN pdm_bi_device d ON wo.device_id = d.device_id + LEFT JOIN md_me_materialbase mb ON wo.material_id = mb.material_id + WHERE + TO_DAYS(wod.date) = TO_DAYS(NOW()) + GROUP BY + d.device_id, mb.material_id + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "8" + QUERY + SELECT + mb.material_name, + SUM( wo.plan_qty ) AS plan_qty, + SUM( wod.qty ) AS qty + FROM + pdm_bd_workorder wo + LEFT JOIN pdm_bd_work_order_daily wod ON wo.workorder_id = wod.workorder_id + LEFT JOIN pdm_bi_device d ON wo.device_id = d.device_id + LEFT JOIN md_me_materialbase mb ON wo.material_id = mb.material_id + WHERE + wo.is_delete = '0' + AND d.region_code = 'FJ' + AND wo.order_status <> '5' + GROUP BY + mb.material_id + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "9" + QEURY + SELECT + wo.workorder_code, + d.device_name, + mb.material_number, + mb.material_name, + wo.kh, + wo.plan_qty, + wo.plan_weight, + ANY_VALUE(dd.label) AS `status`, + wo.realproducestart_date, + wo.realproduceend_date, + SUM(wod.qty) AS qty, + SUM(wod.weight) AS weight, + d.region_code + FROM + pdm_bd_workorder wo + LEFT JOIN pdm_bi_device d ON wo.device_id = d.device_id + LEFT JOIN md_me_materialbase mb ON wo.material_id = mb.material_id + LEFT JOIN sys_dict_detail dd ON wo.order_status = dd.`value` AND dd.`name` = 'pdm_workorder_status' + LEFT JOIN pdm_bd_work_order_daily wod ON wo.workorder_id = wod.workorder_id + WHERE + wo.is_delete = '0' + AND DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= DATE(wo.create_time) + GROUP BY + wo.workorder_id + ENDSELECT + ENDQUERY + ENDIF diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java index ddfd475..13d4a03 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java @@ -229,4 +229,12 @@ public class AcsToWmsController { public void equipmentFailure(@RequestBody JSONObject param) { acsToWmsService.equipmentFailure(param); } + + @PostMapping("/deactivatePoint") + @Log("禁用或启用点位") + @ApiOperation("禁用或启用点位") + @SaIgnore + public void deactivatePoint(@RequestBody JSONObject param) { + acsToWmsService.deactivatePoint(param); + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java index f0f07ee..efd5035 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java @@ -118,4 +118,6 @@ public interface AcsToWmsService { JSONObject fjNeed(JSONObject param); void equipmentFailure(JSONObject param); + + void deactivatePoint(JSONObject param); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index 0218ed0..e989976 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -1276,4 +1276,15 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { WQLObject.getWQLObject("das_device_number").insert(dn); } } + + @Override + public void deactivatePoint(JSONObject param) { + String pointCode = param.getString("device_code"); + if (StrUtil.isNotBlank(pointCode)) { + JSONObject update = new JSONObject(); + update.put("is_used", param.getBooleanValue("is_used") ? TrueOrFalse.TRUE.value() : TrueOrFalse.FALSE.value()); + TaskUtils.addACSUpdateColum(update); + WQLObject.getWQLObject("sch_base_point").update(update, "point_code = '" + pointCode + "'"); + } + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoUpdateWorkOrder.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoUpdateWorkOrder.java index 0c0617f..cef22cc 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoUpdateWorkOrder.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/AutoUpdateWorkOrder.java @@ -72,7 +72,7 @@ public class AutoUpdateWorkOrder { wod.put("qty", datum.getIntValue("qty") + wod.getIntValue("qty")); wod.put("qualified_qty", datum.getIntValue("qualified_qty") + wod.getIntValue("qualified_qty")); wod.put("unqualified_qty", datum.getIntValue("unqualified_qty") + wod.getIntValue("unqualified_qty")); - wod.put("weight", datum.getDoubleValue("weight") + wod.getIntValue("weight")); + wod.put("weight", datum.getDoubleValue("weight") + wod.getDoubleValue("weight")); wod.put("avg_piece_weight", datum.getDoubleValue("avg_piece_weight") / 1000); TaskUtils.addAutoUpdateColum(wod); wodTable.update(wod); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/call/material/YZCallMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/call/material/YZCallMaterialTask.java index a0b5572..4d7927a 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/call/material/YZCallMaterialTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/call/material/YZCallMaterialTask.java @@ -89,11 +89,10 @@ public class YZCallMaterialTask extends AbstractAcsTask { task.put("group_id", point1.getString("vd_id")); task.put("remark", ""); - JSONObject point_update = new JSONObject(); - point_update.put("lock_type", LockType.TASK_LOCKED.value()); - point_update.put("task_code", task.getString("task_code")); - TaskUtils.addFormUpdateColum(point_update, form); - point_table.update(point_update, "point_id = " + point1.getLongValue("point_id")); + point1.put("lock_type", LockType.TASK_LOCKED.value()); + point1.put("task_code", task.getString("task_code")); + TaskUtils.addFormUpdateColum(point1, form); + point_table.update(point1); WQLObject.getWQLObject("sch_base_task").insert(task); @@ -106,19 +105,6 @@ public class YZCallMaterialTask extends AbstractAcsTask { @Override public void findStartPoint() { - WQLObject task_table = WQLObject.getWQLObject("sch_base_task"); - JSONArray tasks = task_table - .query("is_delete = '0' AND task_status = '" + TaskStatus.SURE_END.value() + "' AND handle_class = '" + YZCallMaterialTask.class.getName() + "'", "priority DESC, create_time ASC") - .getResultJSONArray(0); - if (ObjectUtil.isNotEmpty(tasks)) { - WQLObject point_table = WQLObject.getWQLObject("sch_base_point"); - - for (int i = 0; i < tasks.size(); i++) { - JSONObject task = tasks.getJSONObject(i); - - - } - } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/send/material/YZSendMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/send/material/YZSendMaterialTask.java index ad79ca6..9f61d7a 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/send/material/YZSendMaterialTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/send/material/YZSendMaterialTask.java @@ -85,11 +85,21 @@ public class YZSendMaterialTask extends AbstractAcsTask { for (int i = 0; i < tasks.size(); i++) { JSONObject task = tasks.getJSONObject(i); - JSONObject point = WQL - .getWO("SEND_MATERIAL_TASK") - .addParam("flag", "1") - .process() - .uniqueResult(0); + JSONObject point = null; + if (100 == task.getIntValue("priority")) { + point = WQL + .getWO("SEND_MATERIAL_TASK") + .addParam("flag", "7") + .process() + .uniqueResult(0); + } + if (ObjectUtil.isEmpty(point)) { + point = WQL + .getWO("SEND_MATERIAL_TASK") + .addParam("flag", "1") + .process() + .uniqueResult(0); + } if (ObjectUtil.isNotEmpty(point)) { task.put("task_status", TaskStatus.START_AND_END.value()); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/send/material/wql/SEND_MATERIAL_TASK.wql b/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/send/material/wql/SEND_MATERIAL_TASK.wql index e339dac..f5f0a16 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/send/material/wql/SEND_MATERIAL_TASK.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/task/send/material/wql/SEND_MATERIAL_TASK.wql @@ -143,3 +143,19 @@ ENDSELECT ENDQUERY ENDIF + + IF 输入.flag = "7" + QUERY + SELECT + * + FROM + sch_base_point + WHERE + is_used = '1' + AND lock_type = '1' + AND point_status = '1' + AND region_code = 'GZ' + AND point_type = '1' + ENDSELECT + ENDQUERY + ENDIF diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/wms.xls b/lms/nladmin-system/src/main/java/org/nl/wms/wms.xls index 1a6c3879db6cc08b3155b46c2af0e0b8f0ac0154..2027b2651755abc4a7a88e7f37d9a0d1580f2fd7 100644 GIT binary patch delta 14322 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 HXj1KREiY4F2ou;l5k^5)WjMS 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 k^pF diff --git a/lms/nladmin-system/src/main/resources/config/application.yml b/lms/nladmin-system/src/main/resources/config/application.yml index 6f01423..942ceff 100644 --- a/lms/nladmin-system/src/main/resources/config/application.yml +++ b/lms/nladmin-system/src/main/resources/config/application.yml @@ -2,7 +2,7 @@ spring: freemarker: check-template-location: false profiles: - active: dev + active: prod jackson: time-zone: GMT+8 data: