add 分拣作业监控

This commit is contained in:
张江玮
2023-09-25 17:52:12 +08:00
parent 283ba69e11
commit 5de2fde1fc
5 changed files with 202 additions and 16 deletions

View File

@@ -230,7 +230,7 @@ public class ResultBean implements Serializable, Cloneable {
rows = new ArrayList();
}
JSONArray jrows = this.rows2jsonarray(rows);
JSONObject jrow = null;
JSONObject jrow = new JSONObject();
if (jrows.size() > 0) {
jrow = jrows.getJSONObject(0);
}

View File

@@ -51,4 +51,11 @@ public class DashboardController {
public ResponseEntity<Object> warehouseMonitor(){
return new ResponseEntity<>(dashboardService.warehouseMonitor(), HttpStatus.OK);
}
@PostMapping("/sortProductionMonitor")
@Log("分拣作业监控")
@ApiOperation("分拣作业监控")
public ResponseEntity<Object> sortProductionMonitor(){
return new ResponseEntity<>(dashboardService.sortProductionMonitor(), HttpStatus.OK);
}
}

View File

@@ -577,7 +577,7 @@ public class DashboardService {
rowDatum = new JSONObject();
rowDatum.put("key", "数量");
rowDatum.put("value", datum.getIntValue("qty")+ "");
rowDatum.put("value", datum.getIntValue("qty") + "");
rowData.add(rowDatum);
rowDatum = new JSONObject();
@@ -634,7 +634,7 @@ public class DashboardService {
rowDatum = new JSONObject();
rowDatum.put("key", "数量");
rowDatum.put("value", datum.getIntValue("qty")+ "");
rowDatum.put("value", datum.getIntValue("qty") + "");
rowData.add(rowDatum);
rowDatum = new JSONObject();
@@ -691,7 +691,7 @@ public class DashboardService {
rowDatum = new JSONObject();
rowDatum.put("key", "数量");
rowDatum.put("value", datum.getIntValue("qty")+ "");
rowDatum.put("value", datum.getIntValue("qty") + "");
rowData.add(rowDatum);
rowDatum = new JSONObject();
@@ -875,7 +875,7 @@ public class DashboardService {
rowDatum = new JSONObject();
rowDatum.put("key", "数量");
rowDatum.put("value", datum.getIntValue("qty")+ "");
rowDatum.put("value", datum.getIntValue("qty") + "");
rowData.add(rowDatum);
rowDatum = new JSONObject();
@@ -946,7 +946,7 @@ public class DashboardService {
rowDatum = new JSONObject();
rowDatum.put("key", "数量");
rowDatum.put("value", datum.getIntValue("qty")+ "");
rowDatum.put("value", datum.getIntValue("qty") + "");
rowData.add(rowDatum);
rowDatum = new JSONObject();
@@ -1109,7 +1109,7 @@ public class DashboardService {
rowDatum = new JSONObject();
rowDatum.put("key", "数量");
rowDatum.put("value", datum.getIntValue("qty")+ "");
rowDatum.put("value", datum.getIntValue("qty") + "");
rowData.add(rowDatum);
rowDatum = new JSONObject();
@@ -1257,9 +1257,9 @@ public class DashboardService {
// 总量----------------------------------------------------------------------------------------------------------
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));
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();
@@ -1281,10 +1281,10 @@ public class DashboardService {
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("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));
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();
@@ -1463,7 +1463,7 @@ public class DashboardService {
rowDatum = new JSONObject();
rowDatum.put("key", "数量");
rowDatum.put("value", datum.getIntValue("qty")+ "");
rowDatum.put("value", datum.getIntValue("qty") + "");
rowData.add(rowDatum);
rowDatum = new JSONObject();
@@ -1510,7 +1510,7 @@ public class DashboardService {
rowDatum = new JSONObject();
rowDatum.put("key", "数量");
rowDatum.put("value", datum.getIntValue("qty")+ "");
rowDatum.put("value", datum.getIntValue("qty") + "");
rowData.add(rowDatum);
rowDatum = new JSONObject();
@@ -1581,6 +1581,117 @@ public class DashboardService {
return result;
}
/**
* 分拣作业监控
*
* @return 分拣作业监控数据
*/
public JSONObject sortProductionMonitor() {
JSONObject result = new JSONObject();
JSONArray fjWorkOrders = WQL.getWO("DASHBOARD").addParam("flag", "10").process().getResultJSONArray(0);
List<JSONObject> inProductionWorkOrder = fjWorkOrders.stream().map(o -> (JSONObject) o).filter(o -> "3".equals(o.getString("order_status"))).collect(Collectors.toList());
JSONObject currentWorkOrder;
if (inProductionWorkOrder.isEmpty()) {
JSONObject current = new JSONObject();
result.put("current", current);
currentWorkOrder = new JSONObject();
current.put("workOrderCode", "");
current.put("materialName", "");
current.put("spec", "");
current.put("qty", "");
current.put("weight", "");
current.put("orderCode", "");
current.put("customer", "");
current.put("vehicleType", "");
current.put("hasHalf", "");
} else {
JSONObject current = new JSONObject();
result.put("current", current);
currentWorkOrder = inProductionWorkOrder.get(0);
current.put("workOrderCode", currentWorkOrder.getString("workorder_code"));
current.put("materialName", currentWorkOrder.getString("material_name"));
current.put("spec", currentWorkOrder.getString("gg"));
current.put("qty", currentWorkOrder.getString("plan_qty") + "");
current.put("weight", String.format("%.2f", currentWorkOrder.getDoubleValue("plan_weight") / 1000) + "");
current.put("orderCode", currentWorkOrder.getString("dd"));
current.put("customer", currentWorkOrder.getString("kh"));
current.put("vehicleType", currentWorkOrder.getString("vehicle_type_name"));
JSONObject half = WQLObject.getWQLObject("st_ivt_vehicle_detail").query("is_delete = '0' AND is_full = '0' AND vehicle_type = '" + currentWorkOrder.getString("vehicle_type") + "' AND material_id = " + currentWorkOrder.getString("material_id")).uniqueResult(0);
if (ObjectUtil.isEmpty(half)) {
current.put("hasHalf", "");
} else {
current.put("hasHalf", "");
}
}
JSONObject depalletize = new JSONObject();
result.put("depalletize", depalletize);
JSONArray depalletizeWOD = WQLObject.getWQLObject("pdm_bd_work_order_daily").query("workorder_id = " + currentWorkOrder.getLongValue("workorder_id")).getResultJSONArray(0);
int completed = depalletizeWOD.stream().mapToInt(o -> ((JSONObject) o).getIntValue("qty")).sum();
depalletize.put("completed", completed);
depalletize.put("uncompleted", Math.max(0, currentWorkOrder.getIntValue("plan_qty") - completed));
JSONObject palletize = new JSONObject();
result.put("palletize", palletize);
JSONArray palletizeVD = WQLObject.getWQLObject("st_ivt_vehicle_detail").query("is_delete = '0' AND workorder_id = " + currentWorkOrder.getLongValue("workorder_id")).getResultJSONArray(0);
palletize.put("completed", palletizeVD.stream().mapToInt(o -> ((JSONObject) o).getIntValue("qty")).sum());
palletize.put("uncompleted", 0);
JSONArray depalletizedVehicle = new JSONArray();
result.put("depalletizedVehicle", depalletizedVehicle);
JSONArray depalletizedVD = WQL.getWO("DASHBOARD").addParam("flag", "11").process().getResultJSONArray(0);
for (JSONObject vd : depalletizedVD.stream().map(o -> (JSONObject) o).collect(Collectors.toList())) {
JSONObject row = new JSONObject();
row.put("datetime", vd.getString("update_time"));
row.put("vehicleCode", vd.getString("vehicle_code"));
row.put("materialName", vd.getString("material_name"));
row.put("qty", vd.getString("qty") + "");
row.put("weight", String.format("%.2f", vd.getDoubleValue("weight") / 1000) + "");
depalletizedVehicle.add(row);
}
JSONArray palletizedVehicle = new JSONArray();
result.put("palletizedVehicle", palletizedVehicle);
JSONArray palletizedVD = WQL.getWO("DASHBOARD").addParam("flag", "12").process().getResultJSONArray(0);
for (JSONObject vd : palletizedVD.stream().map(o -> (JSONObject) o).collect(Collectors.toList())) {
JSONObject row = new JSONObject();
row.put("datetime", vd.getString("create_time"));
row.put("vehicleCode", vd.getString("vehicle_code"));
row.put("materialName", vd.getString("material_name"));
row.put("qty", vd.getString("qty") + "");
row.put("weight", String.format("%.2f", vd.getDoubleValue("weight") / 1000) + "");
palletizedVehicle.add(row);
}
JSONArray residualWorkOrder = new JSONArray();
result.put("residualWorkOrder", residualWorkOrder);
List<JSONObject> otherWorkOrder = fjWorkOrders.stream().map(o -> (JSONObject) o).filter(o -> "1".equals(o.getString("order_status"))).collect(Collectors.toList());
for (JSONObject workOrder : otherWorkOrder) {
JSONObject row = new JSONObject();
row.put("workOrderCode", workOrder.getString("workorder_code"));
row.put("materialName", workOrder.getString("material_name"));
row.put("spec", workOrder.getString("gg"));
row.put("qty", workOrder.getString("plan_qty") + "");
row.put("weight", String.format("%.2f", workOrder.getDoubleValue("plan_weight") / 1000) + "");
row.put("orderCode", workOrder.getString("dd"));
row.put("customer", workOrder.getString("kh"));
row.put("vehicleType", workOrder.getString("vehicle_type_name"));
row.put("createTime", workOrder.getString("create_time"));
row.put("hasHalf", "");
JSONObject half = WQLObject.getWQLObject("st_ivt_vehicle_detail").query("is_delete = '0' AND is_full = '0' AND vehicle_type = '" + workOrder.getString("vehicle_type") + "' AND material_id = " + workOrder.getLongValue("material_id")).uniqueResult(0);
if (ObjectUtil.isEmpty(half)) {
row.put("hasHalf", "");
} else {
row.put("hasHalf", "");
}
residualWorkOrder.add(row);
}
return result;
}
private int deviceStatusToDictStatus(int status) {
switch (status) {
case 0:

View File

@@ -14,6 +14,7 @@
## 表字段对应输入参数
#################################################
输入.flag TYPEAS s_string
输入.workorder_id TYPEAS f_string
[临时表]
--这边列出来的临时表就会在运行期动态创建
@@ -206,7 +207,7 @@
ENDIF
IF 输入.flag = "9"
QEURY
QUERY
SELECT
wo.workorder_code,
d.device_name,
@@ -235,3 +236,70 @@
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "10"
QUERY
SELECT
wo.workorder_id,
wo.workorder_code,
mb.material_name,
wo.gg,
wo.plan_qty,
wo.plan_weight,
mb.dd,
wo.kh,
wo.vehicle_type,
dd.label AS vehicle_type_name,
mb.material_id,
wo.order_status,
wo.create_time
FROM
pdm_bd_workorder wo
LEFT JOIN md_me_materialbase mb ON wo.material_id = mb.material_id
LEFT JOIN sys_dict_detail dd ON wo.vehicle_type = dd.`value` AND dd.`name` = 'vehicle_type'
WHERE
wo.is_delete = '0'
AND wo.device_code = 'FJCDJXS01'
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "11"
QUERY
SELECT
vd.update_time,
vd.vehicle_code,
vd.qty,
vd.weight,
mb.material_name
FROM
st_ivt_vehicle_detail vd
LEFT JOIN md_me_materialbase mb ON vd.material_id = mb.material_id
WHERE
vd.is_delete = '1'
AND vd.vehicle_type = '2'
AND vd.out_kiln_time <> ''
AND TO_DAYS(vd.update_time) = TO_DAYS(NOW())
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "12"
QUERY
SELECT
vd.create_time,
vd.vehicle_code,
vd.qty,
vd.weight,
mb.material_name
FROM
st_ivt_vehicle_detail vd
LEFT JOIN md_me_materialbase mb ON vd.material_id = mb.material_id
LEFT JOIN pdm_bd_workorder wo ON vd.workorder_id = wo.workorder_id
WHERE
vd.is_delete = '0'
AND wo.device_code = 'FJCDJXS01'
AND TO_DAYS(vd.create_time) = TO_DAYS(NOW())
ENDSELECT
ENDQUERY
ENDIF

View File

@@ -463,7 +463,7 @@ public class WorkorderServiceImpl implements WorkordeService {
int qualifiedQty = row.getIntValue("qualified_qty");
int unqualifiedQty = row.getIntValue("unqualified_qty");
double weight = row.getDoubleValue("weight");
this.reportWorkOrderDaily(workOrderId, qty, qualifiedQty, unqualifiedQty, weight, weight / qty);
this.reportWorkOrderDaily(workOrderId, qty, qualifiedQty, unqualifiedQty, weight, qty == 0 ? qty : weight / qty);
// 汇总
JSONArray workOrderDailyList = WQLObject.getWQLObject("pdm_bd_work_order_daily").query("workorder_id = " + workOrderId).getResultJSONArray(0);