add 分拣作业监控
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user