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 1a6c387..2027b26 100644 Binary files a/lms/nladmin-system/src/main/java/org/nl/wms/wms.xls and b/lms/nladmin-system/src/main/java/org/nl/wms/wms.xls differ 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: