add 数字孪生
This commit is contained in:
@@ -3,17 +3,37 @@
|
||||
<mapper namespace="org.nl.wms.board.service.dao.mapper.BoardMapper">
|
||||
|
||||
<select id="point" resultType="org.nl.wms.board.service.dao.dto.Point">
|
||||
SELECT
|
||||
p.point_code,
|
||||
m.material_name,
|
||||
p.point_status
|
||||
FROM
|
||||
sch_base_point p
|
||||
LEFT JOIN sch_base_vehiclematerialgroup v ON p.vehicle_code = v.vehicle_code
|
||||
LEFT JOIN md_base_material m ON v.material_id = m.material_id
|
||||
WHERE
|
||||
p.region_code = 'ZC'
|
||||
ORDER BY p.row_num,p.col_num
|
||||
SELECT
|
||||
p.point_code,
|
||||
m.material_name,
|
||||
p.point_status
|
||||
FROM
|
||||
sch_base_point p
|
||||
LEFT JOIN sch_base_vehiclematerialgroup v ON p.vehicle_code = v.vehicle_code
|
||||
LEFT JOIN md_base_material m ON v.material_id = m.material_id
|
||||
WHERE
|
||||
p.region_code = 'ZC'
|
||||
ORDER BY
|
||||
CASE
|
||||
|
||||
WHEN p.row_num > 18 THEN
|
||||
1 ELSE 0
|
||||
END,
|
||||
CASE
|
||||
|
||||
WHEN p.row_num > 18 THEN
|
||||
p.row_num ELSE NULL
|
||||
END,
|
||||
CASE
|
||||
|
||||
WHEN 19 > p.row_num THEN
|
||||
p.row_num ELSE NULL
|
||||
END,
|
||||
CASE
|
||||
|
||||
WHEN p.row_num < 19 THEN
|
||||
p.col_num ELSE NULL
|
||||
END DESC;
|
||||
</select>
|
||||
|
||||
<select id="detail" resultType="org.nl.wms.board.service.dao.dto.Detail">
|
||||
|
||||
@@ -57,9 +57,8 @@ public class CockpitController {
|
||||
@PostMapping("/acceptDeviceFaultInfo")
|
||||
@Log("接收acs推送的设备故障信息")
|
||||
@ApiOperation("接收acs推送的设备故障信息")
|
||||
public ResponseEntity<Object> acceptDeviceFaultInfo(@RequestBody JSONObject deviceInfo) {
|
||||
cockpitService.acceptDeviceFaultInfo(deviceInfo);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
public ResponseEntity<Object> acceptDeviceFaultInfo() {
|
||||
return new ResponseEntity<>(cockpitService.acceptDeviceFaultInfo(),HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/getHomeInfo")
|
||||
|
||||
@@ -3,9 +3,6 @@ package org.nl.wms.cockpit.service;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description:
|
||||
@@ -17,16 +14,16 @@ public interface CockpitService {
|
||||
JSONArray allDeviceStatus();
|
||||
void acceptAllDeviceInfo(JSONObject deviceInfo);
|
||||
|
||||
void acceptDeviceFaultInfo(JSONObject deviceInfo);
|
||||
JSONArray acceptDeviceFaultInfo();
|
||||
|
||||
|
||||
ConcurrentHashMap<String, Object> getHomeInfo();
|
||||
JSONObject getHomeInfo();
|
||||
|
||||
ConcurrentHashMap<String, Object> getGhsInfo();
|
||||
JSONObject getGhsInfo();
|
||||
|
||||
ConcurrentHashMap<String, Object> getTbxInfo();
|
||||
JSONObject getTbxInfo();
|
||||
|
||||
ConcurrentHashMap<String, Object> getZcqInfo();
|
||||
JSONObject getZcqInfo();
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,30 +1,20 @@
|
||||
package org.nl.wms.cockpit.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.ColaBeanUtils;
|
||||
import org.nl.common.utils.RedisUtils;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.cockpit.service.CockpitService;
|
||||
import org.nl.wms.cockpit.service.dao.CommonData;
|
||||
import org.nl.wms.cockpit.service.dao.DasDeviceFault;
|
||||
import org.nl.wms.cockpit.service.dao.ghs.DeviceFaultStatistics;
|
||||
import org.nl.wms.cockpit.service.dao.home.DayData;
|
||||
import org.nl.wms.cockpit.service.dao.home.HomeInfo;
|
||||
import org.nl.wms.cockpit.service.dao.home.TargetAchievement;
|
||||
import org.nl.wms.cockpit.service.dao.zcq.Inventory;
|
||||
import org.nl.wms.cockpit.service.dao.zcq.TaskInfo;
|
||||
import org.nl.wms.cockpit.service.mapper.CockpitMapper;
|
||||
import org.nl.wms.pdm.solidifyplan.service.impl.PdmBdSolidifyPlanServiceImpl;
|
||||
@@ -35,9 +25,7 @@ import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch.task.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task.service.dao.mapper.SchBaseTaskMapper;
|
||||
import org.nl.wms.sch.task_manage.enums.RegionCodeConstant;
|
||||
import org.nl.wms.sch.task_manage.task.TaskServiceImpl;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
@@ -51,7 +39,6 @@ import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
@@ -97,18 +84,11 @@ public class CockpitServiceImpl implements CockpitService {
|
||||
* 总览
|
||||
*/
|
||||
@Override
|
||||
public ConcurrentHashMap<String, Object> getHomeInfo() {
|
||||
ConcurrentHashMap<String, Object> map = new ConcurrentHashMap<>();
|
||||
public JSONObject getHomeInfo() {
|
||||
JSONObject getHomeInfo = new JSONObject();
|
||||
//生产任务目标达成
|
||||
CompletableFuture<TargetAchievement> task1 = CompletableFuture.supplyAsync(() -> {
|
||||
TargetAchievement targetAchievementResult = new TargetAchievement();
|
||||
try {
|
||||
targetAchievementResult = getWorkOrderList(null, null, 1);
|
||||
} catch (Exception e) {
|
||||
targetAchievementResult.setError_info(e.toString());
|
||||
}
|
||||
return targetAchievementResult;
|
||||
}, pool);
|
||||
JSONObject target_achievement = new JSONObject();
|
||||
target_achievement = cockpitMapper.getProductTarget();
|
||||
//固化汇总
|
||||
CompletableFuture<List<DayData>> task2 = CompletableFuture.supplyAsync(() -> {
|
||||
List<DayData> dayDataList = new ArrayList<>();
|
||||
@@ -122,186 +102,126 @@ public class CockpitServiceImpl implements CockpitService {
|
||||
return dayDataList;
|
||||
}, pool);
|
||||
//暂存库库存结构
|
||||
CompletableFuture<HomeInfo.ZCStorageInfo> task3 = CompletableFuture.supplyAsync(() -> {
|
||||
HomeInfo.ZCStorageInfo zCStorageInfo = new HomeInfo.ZCStorageInfo();
|
||||
try {
|
||||
zCStorageInfo = getTemporaryStorage();
|
||||
return zCStorageInfo;
|
||||
|
||||
} catch (Exception e) {
|
||||
zCStorageInfo.setError_info(e.toString());
|
||||
}
|
||||
return zCStorageInfo;
|
||||
}, pool);
|
||||
JSONObject zc_storage_info = new JSONObject();
|
||||
JSONArray material_info = new JSONArray();
|
||||
material_info=cockpitMapper.getZcMaterialmsg();
|
||||
//库位使用占比
|
||||
String percent=cockpitMapper.percent();
|
||||
zc_storage_info.put("material_info",material_info);
|
||||
zc_storage_info.put("percent",percent);
|
||||
//今日生产任务
|
||||
CompletableFuture<List<HomeInfo.TodayWork>> task4 = CompletableFuture.supplyAsync(() -> {
|
||||
List<HomeInfo.TodayWork> targetAchievement = new ArrayList<>();
|
||||
try {
|
||||
targetAchievement = getWorkOrders("");
|
||||
} catch (Exception e) {
|
||||
HomeInfo.TodayWork todayWork = new HomeInfo.TodayWork();
|
||||
todayWork.setError_info(e.toString());
|
||||
targetAchievement.add(todayWork);
|
||||
}
|
||||
return targetAchievement;
|
||||
}, pool);
|
||||
JSONArray today_work = new JSONArray();
|
||||
today_work=cockpitMapper.getTdWorkmsg();
|
||||
// 7天生产统计
|
||||
CompletableFuture<CommonData.WeekWorkorderStatistics> task5 = CompletableFuture.supplyAsync(() -> {
|
||||
CommonData.WeekWorkorderStatistics targetAchievement = new CommonData.WeekWorkorderStatistics();
|
||||
try {
|
||||
targetAchievement = getWeekWorkStatistics("");
|
||||
} catch (Exception e) {
|
||||
targetAchievement.setError_info(e.toString());
|
||||
}
|
||||
return targetAchievement;
|
||||
}, pool);
|
||||
CompletableFuture.allOf(task1, task2, task3, task4, task5).join();
|
||||
map.put("target_achievement", task1.join());
|
||||
map.put("gh_statistics", task2.join());
|
||||
map.put("zc_storage_info", task3.join());
|
||||
map.put("today_work", task4.join());
|
||||
map.put("workorder_statistics", task5.join());
|
||||
return map;
|
||||
JSONArray tb_real_qty=new JSONArray();
|
||||
JSONArray gh_real_qty=new JSONArray();
|
||||
tb_real_qty=cockpitMapper.getTxQty();
|
||||
gh_real_qty=cockpitMapper.getGhsQty();
|
||||
//设备运行状态
|
||||
JSONObject device_status=new JSONObject();
|
||||
//状态信息
|
||||
JSONArray status_info=new JSONArray();
|
||||
status_info=cockpitMapper.statusInfo();
|
||||
//固化架信息
|
||||
JSONArray storage_info=new JSONArray();
|
||||
storage_info=cockpitMapper.storageInfo();
|
||||
device_status.put("status_info",status_info);
|
||||
device_status.put("storage_info",storage_info);
|
||||
//实时故障告警
|
||||
JSONArray fault_alarm=new JSONArray();
|
||||
fault_alarm=cockpitMapper.faultAlarm();
|
||||
//进30日故障统计
|
||||
JSONArray monthly_fault_statistics=new JSONArray();
|
||||
monthly_fault_statistics=cockpitMapper.monthlyFaultStatistics();
|
||||
//设备报警前十
|
||||
JSONArray gh_statistics=new JSONArray();
|
||||
gh_statistics=cockpitMapper.ghStatistics();
|
||||
getHomeInfo.put("target_achievement", target_achievement);
|
||||
getHomeInfo.put("zc_storage_info", zc_storage_info);
|
||||
getHomeInfo.put("today_work", today_work);
|
||||
getHomeInfo.put("tbx_produce", tb_real_qty);
|
||||
getHomeInfo.put("ghs_produce", gh_real_qty);
|
||||
getHomeInfo.put("device_status",device_status);
|
||||
getHomeInfo.put("fault_alarm",fault_alarm);
|
||||
getHomeInfo.put("monthly_fault_statistics",monthly_fault_statistics);
|
||||
getHomeInfo.put("gh_statistics",gh_statistics);
|
||||
return getHomeInfo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 涂板线
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public ConcurrentHashMap<String, Object> getTbxInfo() {
|
||||
ConcurrentHashMap<String, Object> map = new ConcurrentHashMap<>();
|
||||
public JSONObject getTbxInfo() {
|
||||
JSONObject getTbxInfo=new JSONObject();
|
||||
//今日生产
|
||||
CompletableFuture<TargetAchievement.TbxTargetAchievement> task1 = CompletableFuture.supplyAsync(() -> {
|
||||
TargetAchievement.TbxTargetAchievement tbxTargetAchievement = new TargetAchievement.TbxTargetAchievement();
|
||||
try {
|
||||
//普涂
|
||||
TargetAchievement ptProduction = getWorkOrderList("TBX", "1", 1);
|
||||
//连涂
|
||||
TargetAchievement ltProduction = getWorkOrderList("TBX", "2", 1);
|
||||
tbxTargetAchievement.setPt_production(ptProduction);
|
||||
tbxTargetAchievement.setLt_production(ltProduction);
|
||||
|
||||
} catch (Exception e) {
|
||||
tbxTargetAchievement.setPt_production(new TargetAchievement());
|
||||
tbxTargetAchievement.setLt_production(new TargetAchievement());
|
||||
tbxTargetAchievement.setError_info(e.toString());
|
||||
}
|
||||
return tbxTargetAchievement;
|
||||
}, pool);
|
||||
//7天生产统计
|
||||
CompletableFuture<CommonData.WeekWorkorderStatistics> task2 = CompletableFuture.supplyAsync(() -> {
|
||||
CommonData.WeekWorkorderStatistics targetAchievement = new CommonData.WeekWorkorderStatistics();
|
||||
try {
|
||||
targetAchievement = getWeekWorkStatistics("TBX");
|
||||
} catch (Exception e) {
|
||||
targetAchievement.setError_info(e.toString());
|
||||
}
|
||||
return targetAchievement;
|
||||
}, pool);
|
||||
//今日涂板工单
|
||||
CompletableFuture<List<HomeInfo.TodayWork>> task3 = CompletableFuture.supplyAsync(() -> {
|
||||
List<HomeInfo.TodayWork> todayWorks = new ArrayList<>();
|
||||
try {
|
||||
todayWorks = getWorkOrders(RegionCodeConstant.COATED_PLATE_LINE_AREA);
|
||||
} catch (Exception e) {
|
||||
HomeInfo.TodayWork todayWork = new HomeInfo.TodayWork();
|
||||
todayWork.setError_info(e.toString());
|
||||
todayWorks.add(todayWork);
|
||||
}
|
||||
return todayWorks;
|
||||
}, pool);
|
||||
CompletableFuture.allOf(task1, task2, task3).join();
|
||||
map.put("target_achievement", task1.join());
|
||||
map.put("week_workorder_statistics", task2.join());
|
||||
map.put("today_work", task3.join());
|
||||
return map;
|
||||
JSONObject target_achievement=new JSONObject();
|
||||
JSONObject lt_production=new JSONObject();
|
||||
JSONObject pt_production=new JSONObject();
|
||||
lt_production=cockpitMapper.ltProduction();
|
||||
pt_production=cockpitMapper.ptProduction();
|
||||
target_achievement.put("lt_production",lt_production);
|
||||
target_achievement.put("pt_production",pt_production);
|
||||
//今日涂板任务
|
||||
JSONArray today_work=new JSONArray();
|
||||
today_work=cockpitMapper.todayTbTask();
|
||||
//实时故障告警
|
||||
JSONArray fault_alarm=new JSONArray();
|
||||
fault_alarm=cockpitMapper.FaultTime("TBX");
|
||||
//进30日故障统计
|
||||
JSONArray monthly_fault_statistics=new JSONArray();
|
||||
monthly_fault_statistics=cockpitMapper.FaultTotal("TBX");
|
||||
getTbxInfo.put("target_achievement",target_achievement);
|
||||
getTbxInfo.put("today_work",today_work);
|
||||
getTbxInfo.put("fault_alarm",fault_alarm);
|
||||
getTbxInfo.put("monthly_fault_statistics",monthly_fault_statistics);
|
||||
return getTbxInfo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 固化室
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public ConcurrentHashMap<String, Object> getGhsInfo() {
|
||||
ConcurrentHashMap<String, Object> map = new ConcurrentHashMap<>();
|
||||
//固化汇总
|
||||
CompletableFuture<List<DayData>> task1 = CompletableFuture.supplyAsync(() -> {
|
||||
List<DayData> dayDataList = new ArrayList<>();
|
||||
try {
|
||||
dayDataList = cockpitMapper.getGhCuringSummary();
|
||||
} catch (Exception e) {
|
||||
DayData dayData = new DayData();
|
||||
dayData.setError_info(e.toString());
|
||||
dayDataList.add(dayData);
|
||||
}
|
||||
return dayDataList;
|
||||
}, pool);
|
||||
|
||||
//7日固化
|
||||
CompletableFuture<CommonData.WeekWorkorderStatistics> task2 = CompletableFuture.supplyAsync(() -> {
|
||||
CommonData.WeekWorkorderStatistics targetAchievement = new CommonData.WeekWorkorderStatistics();
|
||||
try {
|
||||
targetAchievement = getWeekWorkStatistics("GH");
|
||||
} catch (Exception e) {
|
||||
targetAchievement.setError_info(e.toString());
|
||||
}
|
||||
return targetAchievement;
|
||||
}, pool);
|
||||
|
||||
//出入库任务
|
||||
CompletableFuture<List<TaskInfo>> task3 = CompletableFuture.supplyAsync(() -> {
|
||||
List<TaskInfo> tasks = new ArrayList<>();
|
||||
try {
|
||||
tasks = getTasks(RegionCodeConstant.CURING_ZONE);
|
||||
|
||||
} catch (Exception e) {
|
||||
TaskInfo taskInfo = new TaskInfo();
|
||||
taskInfo.setError_info(e.toString());
|
||||
tasks.add(taskInfo);
|
||||
}
|
||||
return tasks;
|
||||
}, pool);
|
||||
CompletableFuture.allOf(task1, task2, task3).join();
|
||||
map.put("curing_summary", task1.join());
|
||||
map.put("week_workorder_statistics", task2.join());
|
||||
map.put("task_info", task3.join());
|
||||
return map;
|
||||
public JSONObject getGhsInfo() {
|
||||
JSONObject getGhsInfo=new JSONObject();
|
||||
//固化汇总
|
||||
JSONArray curing_summary=new JSONArray();
|
||||
curing_summary=cockpitMapper.curingSummary();
|
||||
//实时故障告警
|
||||
JSONArray fault_alarm=new JSONArray();
|
||||
fault_alarm=cockpitMapper.FaultTime("GH");
|
||||
//进30日故障统计
|
||||
JSONArray monthly_fault_statistics=new JSONArray();
|
||||
monthly_fault_statistics=cockpitMapper.FaultTotal("GH");
|
||||
getGhsInfo.put("curing_summary",curing_summary);
|
||||
getGhsInfo.put("fault_alarm",fault_alarm);
|
||||
getGhsInfo.put("monthly_fault_statistics",monthly_fault_statistics);
|
||||
return getGhsInfo;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 暂存区
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public ConcurrentHashMap<String, Object> getZcqInfo() {
|
||||
ConcurrentHashMap<String, Object> map = new ConcurrentHashMap<>();
|
||||
//暂存区库存结构
|
||||
CompletableFuture<HomeInfo.ZCStorageInfo> task1 = CompletableFuture.supplyAsync(() -> {
|
||||
HomeInfo.ZCStorageInfo zCStorageInfo = new HomeInfo.ZCStorageInfo();
|
||||
try {
|
||||
zCStorageInfo = getTemporaryStorage();
|
||||
return zCStorageInfo;
|
||||
} catch (Exception e) {
|
||||
zCStorageInfo.setError_info(e.toString());
|
||||
}
|
||||
return zCStorageInfo;
|
||||
}, pool);
|
||||
//出入库任务
|
||||
CompletableFuture<List<TaskInfo>> task2 = CompletableFuture.supplyAsync(() -> {
|
||||
List<TaskInfo> tasks = new ArrayList<>();
|
||||
try {
|
||||
tasks = getTasks(RegionCodeConstant.STAGING_AREA);
|
||||
|
||||
} catch (Exception e) {
|
||||
TaskInfo taskInfo = new TaskInfo();
|
||||
taskInfo.setError_info(e.toString());
|
||||
tasks.add(taskInfo);
|
||||
}
|
||||
return tasks;
|
||||
}, pool);
|
||||
CompletableFuture.allOf(task1, task2).join();
|
||||
map.put("temporary_storage", task1.join());
|
||||
map.put("inventory", task2.join());
|
||||
return map;
|
||||
public JSONObject getZcqInfo() {
|
||||
JSONObject getZcqInfo = new JSONObject();
|
||||
//暂存库
|
||||
JSONObject temporary_storage = new JSONObject();
|
||||
temporary_storage = cockpitMapper.temporaryStorage();
|
||||
//暂存区库存
|
||||
JSONArray inventory = new JSONArray();
|
||||
inventory=cockpitMapper.inventory();
|
||||
//货位货位信息
|
||||
JSONArray task_info=new JSONArray();
|
||||
task_info=cockpitMapper.taskInfo();
|
||||
getZcqInfo.put("temporary_storage",temporary_storage);
|
||||
getZcqInfo.put("inventory",inventory);
|
||||
getZcqInfo.put("task_info",task_info);
|
||||
return getZcqInfo;
|
||||
}
|
||||
|
||||
|
||||
@@ -317,69 +237,68 @@ public class CockpitServiceImpl implements CockpitService {
|
||||
switch (point.getRegion_code()) {
|
||||
case RegionCodeConstant.COATED_PLATE_LINE_AREA:
|
||||
// hint: 涂板线是作为一整台设备显示。point:设备点
|
||||
JSONArray baoshijian= (JSONArray) redisUtils.get("baoshijian");
|
||||
JSONArray baoshijian = (JSONArray) redisUtils.get("baoshijian");
|
||||
points = pointService.getSubSites(deviceCode);
|
||||
res.put("device_code", deviceCode);
|
||||
res.put("device_name", point.getPoint_name());
|
||||
// res.put("mode", "2");
|
||||
// res.put("status", "1");
|
||||
// res.put("error", "0");
|
||||
// res.put("open_time", DateUtil.now());
|
||||
// res.put("standby_time", 20);
|
||||
// res.put("production_time", 20);
|
||||
// res.put("error_time", 0);
|
||||
// res.put("material", "01200000");
|
||||
//当前物料
|
||||
JSONObject getDeviceWorker=cockpitMapper.getDeviceWorker(deviceCode);
|
||||
String material=cockpitMapper.getMaterialName(getDeviceWorker.getString("material_id"));
|
||||
res.put("material", material);
|
||||
for (Object object : baoshijian) {
|
||||
JSONObject jsonObject = (JSONObject) object;
|
||||
if (deviceCode.equals(jsonObject.getString("device_code"))) {
|
||||
res.put("mode", jsonObject.getString("mode"));
|
||||
}
|
||||
}
|
||||
JSONArray array = new JSONArray();
|
||||
// 获取最近3条工单数据
|
||||
List<TargetAchievement> targetAchievementList = cockpitMapper.getDeviceLimitOrders(deviceCode, 3);
|
||||
JSONArray productionTask = JSONArray.parseArray(JSON.toJSONString(targetAchievementList));
|
||||
res.put("production_tasks", productionTask);
|
||||
for (int i = 0; i < points.size(); i++) {
|
||||
SchBasePoint pointObj = points.get(i);
|
||||
JSONObject one = new JSONObject();
|
||||
one.put("device_code", pointObj.getPoint_code());
|
||||
one.put("device_name", pointObj.getPoint_name());
|
||||
// one.put("mode", "2");
|
||||
for(Object object:baoshijian){
|
||||
JSONObject jsonObject= (JSONObject) object;
|
||||
if(pointObj.getPoint_code().equals(jsonObject.getString("device_code"))){
|
||||
one.put("move",jsonObject.getString("move")==null?"0":jsonObject.getString("move"));
|
||||
for (Object object : baoshijian) {
|
||||
JSONObject jsonObject = (JSONObject) object;
|
||||
if (pointObj.getPoint_code().equals(jsonObject.getString("device_code"))) {
|
||||
one.put("move", jsonObject.getString("move") == null ? "0" : jsonObject.getString("move"));
|
||||
}
|
||||
}
|
||||
// one.put("move", "0");
|
||||
one.put("material_name", targetAchievementList.size()!=0?targetAchievementList.get(0).getMaterial_name():null);
|
||||
// one.put("error", "0");
|
||||
array.add(one);
|
||||
}
|
||||
res.put("details", array);
|
||||
//日产量
|
||||
JSONArray production_day = new JSONArray();
|
||||
production_day=cockpitMapper.getProductionDay(deviceCode);
|
||||
res.put("production_day",production_day);
|
||||
//班产量
|
||||
JSONArray production_team=new JSONArray();
|
||||
production_team=cockpitMapper.getProductionTeam(deviceCode);
|
||||
res.put("production_team",production_team);
|
||||
//30日生产记录
|
||||
JSONArray production_history=new JSONArray();
|
||||
production_history=cockpitMapper.getProductionHistory(deviceCode);
|
||||
res.put("production_team",production_history);
|
||||
break;
|
||||
case RegionCodeConstant.CURING_ZONE:
|
||||
// hint: 固化室,需要显示整个设备+内部位置明细
|
||||
points = pointService.getSubSites(deviceCode); // 小固化位置以及进出口(入口是不管的)
|
||||
JSONArray guhuashi= (JSONArray) redisUtils.get("guhuashi");
|
||||
for(Object object:guhuashi){
|
||||
JSONObject jsonObject= (JSONObject) object;
|
||||
if(deviceCode.equals(jsonObject.getString("device_code"))){
|
||||
res.put("temperature_setting", jsonObject.getString("temperature_setting"));
|
||||
res.put("temperature", jsonObject.getString("temperature"));
|
||||
JSONArray guhuashi = (JSONArray) redisUtils.get("guhuashi");
|
||||
for (Object object : guhuashi) {
|
||||
res.put("device_code", deviceCode);
|
||||
res.put("device_name", point.getPoint_name());
|
||||
//设备状态 按照lms点位管理来 1-无货;2-有货;3-进料;4固化;5出料,6故障
|
||||
res.put("device_statue", point.getPoint_status());
|
||||
JSONObject jsonObject = (JSONObject) object;
|
||||
if (deviceCode.equals(jsonObject.getString("device_code"))) {
|
||||
res.put("current_stage", jsonObject.getString("current_stage"));
|
||||
res.put("humidity_setting", jsonObject.getString("humidity_setting"));
|
||||
res.put("temperature", jsonObject.getString("temperature"));
|
||||
res.put("humidity", jsonObject.getString("humidity"));
|
||||
res.put("total_running_time", jsonObject.getString("total_running_time"));
|
||||
res.put("current_stage", jsonObject.getString("current_stage"));
|
||||
res.put("executing_stage_num", jsonObject.getString("executing_stage_num"));
|
||||
res.put("device_statue", jsonObject.getString("device_statue"));
|
||||
}
|
||||
res.put("temperature_setting", jsonObject.getString("temperature_setting"));
|
||||
}
|
||||
}
|
||||
res.put("device_code", deviceCode);
|
||||
res.put("device_name", point.getPoint_name());
|
||||
// res.put("temperature_setting", 50);
|
||||
// res.put("temperature", 20);
|
||||
// res.put("humidity_setting", 20);
|
||||
// res.put("humidity", 10);
|
||||
// res.put("total_running_time", 8);
|
||||
// res.put("current_stage", 0);
|
||||
// res.put("executing_stage_num", 1);
|
||||
// res.put("device_statue", 1);
|
||||
JSONArray ghsArray = new JSONArray();
|
||||
for (int i = 0; i < points.size(); i++) {
|
||||
SchBasePoint pointObj = points.get(i);
|
||||
@@ -390,6 +309,7 @@ public class CockpitServiceImpl implements CockpitService {
|
||||
one.put("device_code", pointObj.getPoint_code());
|
||||
one.put("device_name", pointObj.getPoint_name());
|
||||
one.put("move", (Integer.parseInt(pointObj.getPoint_status()) - 1));
|
||||
//1是普涂 2是连涂
|
||||
one.put("material_type", ObjectUtil.isNotEmpty(pointObj.getVehicle_type()) ? pointObj.getVehicle_type() : "-");
|
||||
ghsArray.add(one);
|
||||
}
|
||||
@@ -400,11 +320,6 @@ public class CockpitServiceImpl implements CockpitService {
|
||||
points = pointService.getSubSites(deviceCode);
|
||||
res.put("device_code", deviceCode);
|
||||
res.put("device_name", point.getPoint_name());
|
||||
// res.put("mode", 0);
|
||||
// res.put("open_time", DateUtil.now());
|
||||
// res.put("standby_time", 20);
|
||||
// res.put("production_time", 10);
|
||||
// res.put("error_time", 8);
|
||||
res.put("material_type", ObjectUtil.isNotEmpty(point.getVehicle_type()) ? point.getVehicle_type() : "-");
|
||||
res.put("end_time", "-");
|
||||
JSONArray ssxArray = new JSONArray();
|
||||
@@ -429,8 +344,8 @@ public class CockpitServiceImpl implements CockpitService {
|
||||
// 货位直接显示,获取组盘信息,组装数据反馈
|
||||
res.put("device_code", deviceCode);
|
||||
res.put("device_name", point.getPoint_name());
|
||||
res.put("vehicle_code", ObjectUtil.isNotEmpty(point.getVehicle_code()) ? point.getVehicle_code() : "-");
|
||||
res.put("vehicle_type", ObjectUtil.isNotEmpty(point.getVehicle_type()) ? point.getVehicle_type() : "-");
|
||||
// res.put("vehicle_code", ObjectUtil.isNotEmpty(point.getVehicle_code()) ? point.getVehicle_code() : "-");
|
||||
// res.put("vehicle_type", ObjectUtil.isNotEmpty(point.getVehicle_type()) ? point.getVehicle_type() : "-");
|
||||
if (ObjectUtil.isNotEmpty(point.getVehicle_type()) && ObjectUtil.isNotEmpty(point.getVehicle_code())) {
|
||||
JSONObject groupInfo = cockpitMapper.getVehicleGroupInfo(point.getVehicle_code(), point.getVehicle_type());
|
||||
if (ObjectUtil.isNotEmpty(groupInfo)) {
|
||||
@@ -454,21 +369,27 @@ public class CockpitServiceImpl implements CockpitService {
|
||||
|
||||
/**
|
||||
* 接收acs推送的设备故障信息
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public void acceptDeviceFaultInfo(JSONObject deviceInfo) {
|
||||
public JSONArray acceptDeviceFaultInfo() {
|
||||
JSONArray res1 = new JSONArray();
|
||||
try {
|
||||
DasDeviceFault dasDeviceFault = new DasDeviceFault();
|
||||
String now = DateUtil.now();
|
||||
dasDeviceFault.setDevice_code(deviceInfo.getString("device_code"));
|
||||
dasDeviceFault.setRegion_code(pointService.getById(deviceInfo.getString("device_code")).getRegion_code());
|
||||
dasDeviceFault.setData_id(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
dasDeviceFault.setFailure_time(now);
|
||||
dasDeviceFault.setFailure_info(deviceInfo.getString("failure_info"));
|
||||
cockpitMapper.insertDeviceFault(dasDeviceFault);
|
||||
JSONArray errordetails = cockpitMapper.getError();
|
||||
for (int i = 0; i < errordetails.size(); i++) {
|
||||
JSONObject item = errordetails.getJSONObject(i);
|
||||
JSONObject res = new JSONObject();
|
||||
res.put("device_code", item.getString("device_code"));
|
||||
res.put("failure_info", item.getString("failure_info"));
|
||||
res.put("failure_time", item.getString("failure_time"));
|
||||
res.put("failure_area", item.getString("region_code"));
|
||||
res1.add(res);
|
||||
}
|
||||
} catch (Exception exception) {
|
||||
throw new BadRequestException(exception.toString());
|
||||
}
|
||||
return res1;
|
||||
}
|
||||
|
||||
|
||||
@@ -481,85 +402,17 @@ public class CockpitServiceImpl implements CockpitService {
|
||||
Random random = new Random();
|
||||
int lowerBound = 10000;
|
||||
int upperBound = 18000;
|
||||
JSONArray baoshijian= (JSONArray) redisUtils.get("baoshijian");
|
||||
JSONArray guhuashi= (JSONArray) redisUtils.get("guhuashi");
|
||||
JSONArray AGV= (JSONArray) redisUtils.get("AGV");
|
||||
JSONArray RGV= (JSONArray) redisUtils.get("RGV");
|
||||
JSONArray site= (JSONArray) redisUtils.get("site");
|
||||
array.add(baoshijian);
|
||||
array.add(guhuashi);
|
||||
array.add(AGV);
|
||||
array.add(RGV);
|
||||
// List<SchBasePoint> tbx = pointService.list(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getPoint_type, "1").eq(SchBasePoint::getRegion_code, "TBX"));
|
||||
// List<String> tbxList = tbx.stream().map(SchBasePoint::getPoint_code).collect(Collectors.toList());
|
||||
// tbxList.forEach(s -> {
|
||||
// JSONObject object = new JSONObject();
|
||||
// object.put("device_code", s);
|
||||
// object.put("device_name", s);
|
||||
// object.put("mode", "2");
|
||||
// object.put("status", "1");
|
||||
// object.put("error", "0");
|
||||
// object.put("open_time", DateUtil.now());
|
||||
// object.put("standby_time", 20);
|
||||
// object.put("production_time", 20);
|
||||
// object.put("error_time", 0);
|
||||
// object.put("material", "01200000");
|
||||
// array.add(object);
|
||||
// });
|
||||
// List<SchBasePoint> tbxDjw = pointService.list(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getPoint_type, "2").eq(SchBasePoint::getRegion_code, "TBX"));
|
||||
// List<String> tbxDjwList = tbxDjw.stream().map(SchBasePoint::getPoint_code).collect(Collectors.toList());
|
||||
// tbxDjwList.forEach(s -> {
|
||||
// JSONObject object = new JSONObject();
|
||||
// object.put("device_code", s);
|
||||
// object.put("device_name", s);
|
||||
// object.put("mode", "2");
|
||||
// object.put("move", "0");
|
||||
// object.put("error", 0);
|
||||
// array.add(object);
|
||||
// });
|
||||
// 缓存位
|
||||
// List<SchBasePoint> hcx = pointService.list(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getPoint_type, "3").eq(SchBasePoint::getRegion_code, "TBX"));
|
||||
// List<String> hcxList = hcx.stream().map(SchBasePoint::getPoint_code).collect(Collectors.toList());
|
||||
// hcxList.forEach(s -> {
|
||||
// JSONObject object = new JSONObject();
|
||||
// object.put("device_code", s);
|
||||
// object.put("device_name", s);
|
||||
// object.put("move", "0");
|
||||
// array.add(object);
|
||||
// });
|
||||
// List<SchBasePoint> gh = pointService.list(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getPoint_type, "1").eq(SchBasePoint::getRegion_code, "GH"));
|
||||
// List<String> ghList = gh.stream().map(SchBasePoint::getPoint_code).collect(Collectors.toList());
|
||||
// ghList.forEach(s -> {
|
||||
// JSONObject object = new JSONObject();
|
||||
// object.put("device_code", s);
|
||||
// object.put("device_name", s);
|
||||
// object.put("temperature_setting", 50);
|
||||
// object.put("temperature", 20);
|
||||
// object.put("humidity_setting", 20);
|
||||
// object.put("humidity", 10);
|
||||
// object.put("total_running_time", 8);
|
||||
// object.put("current_stage", 0);
|
||||
// object.put("executing_stage_num", 1);
|
||||
// object.put("device_statue", 1);
|
||||
// object.put("front_door", 1);
|
||||
// object.put("back_door", 0);
|
||||
// array.add(object);
|
||||
// });
|
||||
// 整体
|
||||
// List<SchBasePoint> kjzc = pointService.list(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getPoint_type, "5").eq(SchBasePoint::getRegion_code, "KJZC"));
|
||||
// List<String> kjzcList = kjzc.stream().map(SchBasePoint::getPoint_code).collect(Collectors.toList());
|
||||
// kjzcList.forEach(s -> {
|
||||
// JSONObject object = new JSONObject();
|
||||
// object.put("device_code", s);
|
||||
// object.put("device_name", s);
|
||||
// object.put("mode", 0);
|
||||
// object.put("open_time", DateUtil.now());
|
||||
// object.put("standby_time", 20);
|
||||
// object.put("production_time", 10);
|
||||
// object.put("error_time", 8);
|
||||
// object.put("material_type", "1");
|
||||
// array.add(object);
|
||||
// });
|
||||
JSONArray baoshijian = (JSONArray) redisUtils.get("baoshijian");
|
||||
JSONArray guhuashi = (JSONArray) redisUtils.get("guhuashi");
|
||||
JSONArray AGV = (JSONArray) redisUtils.get("AGV");
|
||||
//
|
||||
JSONArray RGV = (JSONArray) redisUtils.get("RGV");
|
||||
JSONArray site = (JSONArray) redisUtils.get("site");
|
||||
// array.add(baoshijian);
|
||||
// array.add(guhuashi);
|
||||
// array.add(AGV);
|
||||
// array.add(RGV);
|
||||
|
||||
// 固化室详情
|
||||
JSONArray ghsInteriorList = cockpitMapper.getGHSInteriorList();
|
||||
JSONObject ghsDetail = new JSONObject();
|
||||
@@ -575,11 +428,6 @@ public class CockpitServiceImpl implements CockpitService {
|
||||
JSONObject storage = new JSONObject();
|
||||
storage.put("storage", zcList);
|
||||
array.add(storage);
|
||||
// 空架缓存位
|
||||
JSONArray kjList = cockpitMapper.getKJList();
|
||||
JSONObject emptyCacheBit = new JSONObject();
|
||||
emptyCacheBit.put("empty_cache", kjList);
|
||||
array.add(emptyCacheBit);
|
||||
return array;
|
||||
}
|
||||
|
||||
|
||||
@@ -77,4 +77,56 @@ public interface CockpitMapper {
|
||||
JSONArray getZCList();
|
||||
|
||||
JSONArray getKJList();
|
||||
//目前是获取当天的错误数据
|
||||
JSONArray getError();
|
||||
//获取生产中的工单数据
|
||||
JSONObject getProductTarget();
|
||||
//获取暂存库库存信息
|
||||
JSONArray getZcMaterialmsg();
|
||||
//库位使用占比
|
||||
String percent();
|
||||
//获取今日创建的每一条工单的信息
|
||||
JSONArray getTdWorkmsg();
|
||||
//7天涂板实际生产
|
||||
JSONArray getTxQty();
|
||||
//7天固化室实际生产
|
||||
JSONArray getGhsQty();
|
||||
//查询所传设备当前生产的工单信息
|
||||
JSONObject getDeviceWorker(String devicecode);
|
||||
//根据所传的物料id获取物料名称
|
||||
String getMaterialName(String material_id);
|
||||
//根据所传设备得到该设备日产量
|
||||
JSONArray getProductionDay(String devicecode);
|
||||
//根据所传设备得到该设备班产量
|
||||
JSONArray getProductionTeam(String devicecode);
|
||||
//根据所传设备得到该设备30天生产记录
|
||||
JSONArray getProductionHistory(String devicecode);
|
||||
//今日生产连涂生产
|
||||
JSONObject ltProduction();
|
||||
//今日生产普涂生产
|
||||
JSONObject ptProduction();
|
||||
//今日涂板任务
|
||||
JSONArray todayTbTask();
|
||||
//实时故障告警
|
||||
JSONArray FaultTime(String region_code);
|
||||
//进30日故障统计
|
||||
JSONArray FaultTotal(String region_code);
|
||||
//固化汇总
|
||||
JSONArray curingSummary();
|
||||
//暂存库
|
||||
JSONObject temporaryStorage();
|
||||
//暂存区库存
|
||||
JSONArray inventory();
|
||||
//状态信息
|
||||
JSONArray statusInfo();
|
||||
//固化架信息
|
||||
JSONArray storageInfo();
|
||||
//实时故障告警
|
||||
JSONArray faultAlarm();
|
||||
//进30日故障统计
|
||||
JSONArray monthlyFaultStatistics();
|
||||
//设备报警前十
|
||||
JSONArray ghStatistics();
|
||||
//货位货位信息
|
||||
JSONArray taskInfo();
|
||||
}
|
||||
|
||||
@@ -164,6 +164,8 @@
|
||||
, vg.vehicle_code
|
||||
, ma.material_name
|
||||
, ma.material_code
|
||||
,vg.material_qty AS qty
|
||||
,vg.pcsn
|
||||
FROM sch_base_vehiclematerialgroup vg
|
||||
LEFT JOIN md_base_material ma ON vg.material_id = ma.material_id
|
||||
WHERE 1 = 1
|
||||
@@ -211,4 +213,320 @@
|
||||
FROM `sch_base_point`
|
||||
WHERE region_code = 'KJW'
|
||||
</select>
|
||||
<select id="getError" resultType="com.alibaba.fastjson.JSONObject">
|
||||
SELECT *
|
||||
FROM das_device_fault
|
||||
WHERE failure_time LIKE CONCAT(CURDATE(), '%');
|
||||
</select>
|
||||
<select id="getProductTarget" resultType="com.alibaba.fastjson.JSONObject">
|
||||
SELECT COUNT(*) AS await_curing,
|
||||
SUM( plan_qty ) AS expected_production,
|
||||
SUM( real_qty ) AS actual_production,
|
||||
(SUM( real_qty )/SUM( plan_qty ))AS percentage
|
||||
FROM pdm_bd_workorder
|
||||
WHERE workorder_status=3
|
||||
</select>
|
||||
<select id="getZcMaterialmsg" resultType="com.alibaba.fastjson.JSONObject">
|
||||
SELECT
|
||||
m.material_name AS item_name,
|
||||
m.standard_qty AS item_qty
|
||||
FROM `sch_base_point` p
|
||||
RIGHT JOIN sch_base_vehiclematerialgroup g ON p.vehicle_code = g.vehicle_code
|
||||
LEFT JOIN md_base_material m ON g.material_id = m.material_id
|
||||
WHERE p.region_code = 'ZC'
|
||||
AND p.vehicle_code IS NOT NULL
|
||||
</select>
|
||||
<select id="getTdWorkmsg" resultType="com.alibaba.fastjson.JSONObject">
|
||||
SELECT
|
||||
w.workorder_code,
|
||||
m.material_name AS material_name,
|
||||
w.plan_qty,
|
||||
w.real_qty,
|
||||
w.point_name,
|
||||
w.workorder_status
|
||||
FROM `pdm_bd_workorder` w
|
||||
LEFT JOIN md_base_material m ON m.material_id = w.material_id
|
||||
WHERE DATE(w.update_time) = CURDATE()
|
||||
</select>
|
||||
<select id="getTxQty" resultType="com.alibaba.fastjson.JSONObject">
|
||||
SELECT
|
||||
DATE_FORMAT(create_time,'%Y-%m-%d') AS date,
|
||||
SUM(real_qty) AS total_qty,
|
||||
'TBX' AS region_name
|
||||
FROM
|
||||
pdm_bd_workorder
|
||||
WHERE
|
||||
create_time >= CURDATE() - INTERVAL 7 DAY
|
||||
GROUP BY
|
||||
DATE_FORMAT(create_time,'%Y-%m-%d')
|
||||
ORDER BY
|
||||
date;
|
||||
</select>
|
||||
<select id="getGhsQty" resultType="com.alibaba.fastjson.JSONObject">
|
||||
SELECT
|
||||
DATE_FORMAT(create_time,'%Y-%m-%d') AS date,
|
||||
SUM(material_qty) AS total_qty,
|
||||
'GHS' AS region_name
|
||||
FROM
|
||||
sch_base_vehiclematerialgroup
|
||||
WHERE
|
||||
create_time >= CURDATE() - INTERVAL 7 DAY
|
||||
GROUP BY
|
||||
DATE_FORMAT(create_time,'%Y-%m-%d')
|
||||
ORDER BY
|
||||
date;
|
||||
</select>
|
||||
<select id="getDeviceWorker" resultType="com.alibaba.fastjson.JSONObject">
|
||||
SELECT *
|
||||
FROM
|
||||
`pdm_bd_workorder` w
|
||||
WHERE
|
||||
w.workorder_status=3
|
||||
And w.point_code= #{devicecode}
|
||||
</select>
|
||||
<select id="getMaterialName" resultType="java.lang.String">
|
||||
SELECT
|
||||
material_name
|
||||
FROM
|
||||
`md_base_material` m
|
||||
WHERE
|
||||
m.material_id= #{material_id}
|
||||
</select>
|
||||
<select id="getProductionDay" resultType="com.alibaba.fastjson.JSONObject">
|
||||
SELECT
|
||||
w.plan_qty,
|
||||
w.real_qty,
|
||||
(w.plan_qty)-(w.real_qty) AS remain_qty,
|
||||
(w.real_qty)/(w.plan_qty) AS percentage,
|
||||
m.material_name
|
||||
FROM `pdm_bd_workorder` w
|
||||
LEFT JOIN md_base_material m ON m.material_id = w.material_id
|
||||
WHERE
|
||||
DATE(w.create_time)=CURDATE()
|
||||
And w.point_code= #{devicecode}
|
||||
</select>
|
||||
<select id="getProductionTeam" resultType="com.alibaba.fastjson.JSONObject">
|
||||
SELECT
|
||||
w.plan_qty,
|
||||
w.real_qty,
|
||||
(w.plan_qty)-(w.real_qty) AS remain_qty,
|
||||
(w.real_qty)/(w.plan_qty) AS percentage,
|
||||
m.material_name,
|
||||
w.team
|
||||
FROM `pdm_bd_workorder` w
|
||||
LEFT JOIN md_base_material m ON m.material_id = w.material_id
|
||||
WHERE
|
||||
DATE(w.create_time)=CURDATE()
|
||||
And w.point_code= #{devicecode}
|
||||
And w.workorder_status= 3
|
||||
</select>
|
||||
<select id="getProductionHistory" resultType="com.alibaba.fastjson.JSONObject">
|
||||
SELECT
|
||||
DATE_FORMAT(w.create_time,'%Y-%m-%d') AS date,
|
||||
SUM(w.real_qty) AS total_qty
|
||||
FROM
|
||||
`pdm_bd_workorder` w
|
||||
WHERE
|
||||
create_time >= CURDATE() - INTERVAL 30 DAY
|
||||
And w.point_code= #{devicecode}
|
||||
GROUP BY
|
||||
DATE_FORMAT(w.create_time, '%Y-%m-%d');
|
||||
</select>
|
||||
<select id="ltProduction" resultType="com.alibaba.fastjson.JSONObject">
|
||||
SELECT
|
||||
SUM(w.plan_qty) AS plan_production,
|
||||
SUM(w.real_qty) AS actual_production,
|
||||
SUM(w.real_qty)/SUM(w.plan_qty)*100 AS percentage
|
||||
FROM
|
||||
`pdm_bd_workorder` w
|
||||
WHERE
|
||||
w.workorder_status=3
|
||||
And DATE(w.create_time)=CURDATE()
|
||||
And point_code LIKE 'LT%'
|
||||
</select>
|
||||
<select id="ptProduction" resultType="com.alibaba.fastjson.JSONObject">
|
||||
SELECT
|
||||
SUM(w.plan_qty) AS plan_production
|
||||
FROM
|
||||
`pdm_bd_workorder` w
|
||||
WHERE
|
||||
w.workorder_status=3
|
||||
And DATE(w.create_time)=CURDATE()
|
||||
And point_code LIKE 'PT%'
|
||||
</select>
|
||||
<select id="todayTbTask" resultType="com.alibaba.fastjson.JSONObject">
|
||||
SELECT
|
||||
w.workorder_code,
|
||||
m.material_name,
|
||||
w.plan_qty,
|
||||
w.real_qty,
|
||||
w.point_name,
|
||||
w.workorder_status
|
||||
FROM
|
||||
`pdm_bd_workorder` w
|
||||
LEFT JOIN md_base_material m ON m.material_id = w.material_id
|
||||
WHERE
|
||||
w.workorder_status=3
|
||||
And DATE(w.create_time)=CURDATE()
|
||||
</select>
|
||||
<select id="FaultTime" resultType="com.alibaba.fastjson.JSONObject">
|
||||
SELECT
|
||||
d1.device_code,
|
||||
d1.failure_info AS fault_cause,
|
||||
d1.failure_time AS alarm_time
|
||||
FROM
|
||||
das_device_fault d1
|
||||
WHERE
|
||||
d1.failure_time = (
|
||||
SELECT MAX(d2.failure_time)
|
||||
FROM das_device_fault d2
|
||||
WHERE d2.device_code = d1.device_code
|
||||
AND d2.region_code = #{region_code}
|
||||
)
|
||||
AND d1.region_code = #{region_code}
|
||||
And d1.current_status=1
|
||||
</select>
|
||||
<select id="FaultTotal" resultType="com.alibaba.fastjson.JSONObject">
|
||||
SELECT
|
||||
device_code,
|
||||
COUNT(*) AS alarm_qty
|
||||
FROM
|
||||
das_device_fault
|
||||
WHERE
|
||||
region_code = #{region_code}
|
||||
And current_status=1
|
||||
GROUP BY
|
||||
device_code;
|
||||
</select>
|
||||
<select id="curingSummary" resultType="com.alibaba.fastjson.JSONObject">
|
||||
SELECT
|
||||
p.point_status,
|
||||
COUNT(*) AS item_qty
|
||||
FROM `sch_base_point` p
|
||||
WHERE p.region_code = 'GH'
|
||||
AND p.point_type =1
|
||||
GROUP BY
|
||||
point_status;
|
||||
</select>
|
||||
<select id="temporaryStorage" resultType="com.alibaba.fastjson.JSONObject">
|
||||
SELECT
|
||||
SUM(CASE WHEN region_code = 'ZC' THEN 1 ELSE 0 END) AS total,
|
||||
SUM(CASE WHEN point_status = 2 THEN 1 ELSE 0 END) AS free,
|
||||
SUM(CASE WHEN point_status = 2 THEN 1 ELSE 0 END) * 1.0 /
|
||||
NULLIF(SUM(CASE WHEN region_code = 'ZC' THEN 1 ELSE 0 END), 0)*100 AS percentage
|
||||
FROM
|
||||
sch_base_point
|
||||
WHERE
|
||||
region_code = 'ZC';
|
||||
</select>
|
||||
<select id="percent" resultType="java.lang.String">
|
||||
SELECT
|
||||
SUM(CASE WHEN point_status = 2 THEN 1 ELSE 0 END) * 1.0 /
|
||||
NULLIF(SUM(CASE WHEN region_code = 'ZC' THEN 1 ELSE 0 END), 0)*100 AS percentage
|
||||
FROM
|
||||
sch_base_point
|
||||
WHERE
|
||||
region_code = 'ZC';
|
||||
</select>
|
||||
<select id="statusInfo" resultType="com.alibaba.fastjson.JSONObject">
|
||||
SELECT
|
||||
p.is_used AS item_name,
|
||||
COUNT(*) AS item_qty
|
||||
FROM
|
||||
`sch_base_point` p
|
||||
GROUP BY
|
||||
p.is_used;
|
||||
</select>
|
||||
<select id="storageInfo" resultType="com.alibaba.fastjson.JSONObject">
|
||||
SELECT
|
||||
p.point_status AS item_name,
|
||||
COUNT(*) AS item_qty
|
||||
FROM
|
||||
`sch_base_point` p
|
||||
WHERE p.region_code = 'GH'
|
||||
AND p.point_type=2
|
||||
GROUP BY
|
||||
p.point_status;
|
||||
</select>
|
||||
<select id="faultAlarm" resultType="com.alibaba.fastjson.JSONObject">
|
||||
WITH RankedFaults AS (
|
||||
SELECT
|
||||
device_code AS device_name,
|
||||
failure_info AS fault_cause,
|
||||
failure_time AS alarm_time,
|
||||
ROW_NUMBER() OVER (PARTITION BY device_code ORDER BY failure_time DESC) AS rn
|
||||
FROM das_device_fault
|
||||
WHERE current_status = 1
|
||||
)
|
||||
SELECT
|
||||
device_name,
|
||||
fault_cause,
|
||||
alarm_time
|
||||
FROM RankedFaults
|
||||
WHERE rn = 1;
|
||||
</select>
|
||||
<select id="monthlyFaultStatistics" resultType="com.alibaba.fastjson.JSONObject">
|
||||
SELECT
|
||||
region_code AS region_name,
|
||||
COUNT(*) AS alarm_qty
|
||||
FROM
|
||||
das_device_fault
|
||||
GROUP BY
|
||||
region_code;
|
||||
</select>
|
||||
<select id="ghStatistics" resultType="com.alibaba.fastjson.JSONObject">
|
||||
SELECT
|
||||
device_name,
|
||||
error_number
|
||||
FROM (
|
||||
SELECT
|
||||
device_code AS device_name,
|
||||
COUNT(*) AS error_number
|
||||
FROM
|
||||
das_device_fault
|
||||
GROUP BY
|
||||
device_code
|
||||
) AS device_errors
|
||||
ORDER BY
|
||||
error_number DESC
|
||||
LIMIT 10;
|
||||
</select>
|
||||
<select id="inventory" resultType="com.alibaba.fastjson.JSONObject">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
m.material_name AS material_name,
|
||||
SUM(g.material_qty) AS total_qty
|
||||
FROM
|
||||
sch_base_point p
|
||||
RIGHT JOIN sch_base_vehiclematerialgroup g ON p.vehicle_code = g.vehicle_code
|
||||
LEFT JOIN md_base_material m ON g.material_id = m.material_id
|
||||
WHERE
|
||||
p.region_code = 'ZC'
|
||||
AND p.point_status = 2
|
||||
AND p.vehicle_code IS NOT NULL
|
||||
AND p.vehicle_code <> ''
|
||||
GROUP BY
|
||||
m.material_name;
|
||||
]]>
|
||||
</select>
|
||||
<select id="taskInfo" resultType="com.alibaba.fastjson.JSONObject">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
p.point_code AS device_code,
|
||||
m.material_name AS material_name,
|
||||
p.vehicle_type,
|
||||
p.vehicle_code,
|
||||
m.standard_qty AS qty,
|
||||
g.pcsn
|
||||
FROM
|
||||
sch_base_point p
|
||||
RIGHT JOIN sch_base_vehiclematerialgroup g ON p.vehicle_code = g.vehicle_code
|
||||
LEFT JOIN md_base_material m ON g.material_id = m.material_id
|
||||
WHERE
|
||||
p.region_code = 'ZC'
|
||||
AND p.point_status = 2
|
||||
AND p.vehicle_code IS NOT NULL
|
||||
AND p.vehicle_code <> ''
|
||||
]]>
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -60,6 +60,14 @@ public class AcsToWmsController {
|
||||
return new ResponseEntity<>(acsToWmsService.againApply(task), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/ghsmlqhfinish")
|
||||
@Log("固化室出口取货完成")
|
||||
@ApiOperation("固化室出口取货完成")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> ghsmlqhfinish(@RequestBody JSONObject task) {
|
||||
return new ResponseEntity<>(acsToWmsService.ghsmlqhfinish(task), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/feedbackState")
|
||||
@Log("ACS系统反馈AGV取放货状态")
|
||||
@ApiOperation("ACS系统反馈AGV取放货状态")
|
||||
|
||||
@@ -28,4 +28,11 @@ public interface AcsToWmsService {
|
||||
* @return
|
||||
*/
|
||||
AgainApplyResponse againApply(JSONObject task);
|
||||
|
||||
/**
|
||||
* 固化室出口取货完成
|
||||
* @param task
|
||||
* @return
|
||||
*/
|
||||
AgainApplyResponse ghsmlqhfinish(JSONObject task);
|
||||
}
|
||||
|
||||
@@ -23,8 +23,10 @@ import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
import org.nl.wms.sch.task_manage.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum;
|
||||
import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum;
|
||||
import org.nl.wms.sch.task_manage.task.TaskFactory;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
import org.nl.wms.sch.task_manage.task.tasks.auto.GHCMLTask;
|
||||
import org.nl.wms.sch.task_manage.task.tasks.mapper.PointMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -69,7 +71,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
private ISysInteractRecordService interactRecordService;
|
||||
@Autowired
|
||||
private CockpitMapper cockpitMapper;
|
||||
|
||||
@Autowired
|
||||
private GHCMLTask ghcmlTask;
|
||||
/**
|
||||
* 初始化反射方法
|
||||
*/
|
||||
@@ -211,10 +214,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
dasDeviceFault.setRegion_code(pointService.getById(device_code).getRegion_code());
|
||||
dasDeviceFault.setData_id(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
dasDeviceFault.setFailure_time(now);
|
||||
dasDeviceFault.setFailure_info(state+"故障");
|
||||
dasDeviceFault.setFailure_info(state);
|
||||
cockpitMapper.insertDeviceFault(dasDeviceFault);
|
||||
schBasePoint.setIs_used(false);
|
||||
pointService.update(schBasePoint);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -289,5 +290,21 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@Override
|
||||
public AgainApplyResponse ghsmlqhfinish(JSONObject task) {
|
||||
AgainApplyResponse result = AgainApplyResponse.responseOk(task.getString("request_no"));
|
||||
SchBaseTask task2 = taskService.getById(task.getString("task_id"));
|
||||
String startpoint=task2.getPoint_code1();
|
||||
SchBasePoint startPointObj = pointService.getById(startpoint);
|
||||
//校验起点是固化室出口的任务
|
||||
String jwc = startpoint.substring(startpoint.length() - 1);
|
||||
if(jwc.equals("C")){
|
||||
ghcmlTask.finishTask(task2, TaskFinishedTypeEnum.AUTO_ACS);
|
||||
result.setMessage("该任务起点是固化室出口点位修改成功");
|
||||
}else{
|
||||
result.setMessage("该任务起点不是固化室出口");
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -58,21 +58,20 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
|
||||
Boolean lock_type = ObjectUtil.isNotEmpty(whereJson.get("lock_type")) ? Boolean.valueOf(whereJson.get("lock_type").toString()) : false;
|
||||
Boolean parent_point = ObjectUtil.isNotEmpty(whereJson.get("parent_point")) ? Boolean.valueOf(whereJson.get("parent_point").toString()) : false;
|
||||
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
||||
lam.like(ObjectUtil.isNotEmpty(blurry), SchBasePoint::getPoint_code, blurry)
|
||||
.or(ObjectUtil.isNotEmpty(blurry), lam1 -> lam1.like(SchBasePoint::getPoint_name, blurry))
|
||||
.eq(ObjectUtil.isNotEmpty(workshop_code), SchBasePoint::getWorkshop_code, workshop_code)
|
||||
lam.eq(ObjectUtil.isNotEmpty(workshop_code), SchBasePoint::getWorkshop_code, workshop_code)
|
||||
.and(ObjectUtil.isNotEmpty(blurry), la -> la.like(SchBasePoint::getPoint_code, blurry)
|
||||
.or().like(SchBasePoint::getPoint_name, blurry))
|
||||
.eq(ObjectUtil.isNotEmpty(region_code), SchBasePoint::getRegion_code, region_code)
|
||||
.eq(ObjectUtil.isNotEmpty(point_type), SchBasePoint::getPoint_type, point_type)
|
||||
.eq(ObjectUtil.isNotEmpty(point_status), SchBasePoint::getPoint_status, point_status)
|
||||
.eq(ObjectUtil.isNotEmpty(is_used), SchBasePoint::getIs_used, is_used)
|
||||
.and(!lock_type, slam -> slam.isNull(SchBasePoint::getIng_task_code)
|
||||
.or()
|
||||
.and(!lock_type, slam -> slam.isNull(SchBasePoint::getIng_task_code).or()
|
||||
.eq(SchBasePoint::getIng_task_code, ""))
|
||||
.and(lock_type, slam -> slam.isNotNull(SchBasePoint::getIng_task_code)
|
||||
.ne(SchBasePoint::getIng_task_code, ""))
|
||||
.orderByAsc(SchBasePoint::getRegion_code)
|
||||
.orderByAsc(SchBasePoint::getPoint_type)
|
||||
.orderByAsc(SchBasePoint::getPoint_code)
|
||||
.orderByAsc(SchBasePoint::getPoint_type)
|
||||
.apply(parent_point, "point_code = parent_point_code");
|
||||
IPage<SchBasePoint> pages = new Page<>(page.getPage() + 1, page.getSize());
|
||||
pointMapper.selectPage(pages, lam);
|
||||
|
||||
@@ -130,5 +130,4 @@ public class SchBaseTask implements Serializable {
|
||||
private String start_wait_point;
|
||||
@ApiModelProperty(value = "放货等待点")
|
||||
private String next_wait_point;
|
||||
|
||||
}
|
||||
|
||||
@@ -118,7 +118,7 @@ public class GHCMLTask extends AbstractTask {
|
||||
jsonObject.put("pcsn",ObjectUtil.isNotEmpty(groupInfo) ? groupInfo.getPcsn() : null);
|
||||
SchBasePoint point = findNextPoint(nextRegionStr, jsonObject);
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
throw new BadRequestException("涂板线[" + task.getPoint_code1() + "]未找到所需点位!");
|
||||
throw new BadRequestException("暂存区域[" + task.getPoint_code1() + "]未找到所需点位!");
|
||||
}
|
||||
log.info("当前任务{}找到预计终点{}",task.getTask_id(),point.getPoint_code());
|
||||
// 设置组盘 - 需要的话由子类自行实现
|
||||
@@ -234,6 +234,7 @@ public class GHCMLTask extends AbstractTask {
|
||||
vehiclematerialgroup.setPoint_code(endPointObj.getPoint_code());
|
||||
vehiclematerialgroup.setPoint_name(endPointObj.getPoint_name());
|
||||
vehiclematerialgroup.setMove_way(vehiclematerialgroup.getMove_way() + " -> " + endPointObj.getPoint_code());
|
||||
vehiclematerialgroup.setGroup_bind_material_status("3");
|
||||
vehiclematerialgroupService.updateById(vehiclematerialgroup);
|
||||
// 终点解锁
|
||||
endPointObj.setIng_task_code("");
|
||||
|
||||
@@ -39,7 +39,6 @@
|
||||
FROM sch_base_point p
|
||||
LEFT JOIN sch_base_vehiclematerialgroup vg
|
||||
ON p.vehicle_code = vg.vehicle_code
|
||||
AND vg.group_bind_material_status = '2'
|
||||
WHERE p.region_code = 'ZC'
|
||||
AND p.is_used = TRUE
|
||||
and p.row_num in (
|
||||
@@ -47,7 +46,6 @@
|
||||
FROM sch_base_point p
|
||||
LEFT JOIN sch_base_vehiclematerialgroup vg
|
||||
ON p.vehicle_code = vg.vehicle_code
|
||||
AND vg.group_bind_material_status = '2'
|
||||
WHERE p.region_code = 'ZC'
|
||||
and vg.material_id=#{materialId}
|
||||
and RIGHT(vg.pcsn,8)=RIGHT(#{pcsn},8)
|
||||
|
||||
@@ -38,6 +38,7 @@ import org.nl.wms.util.TaskUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
@@ -323,7 +324,7 @@ public class TBXMLTask extends AbstractTask {
|
||||
: "");
|
||||
groupEntity.setMaterial_qty(ObjectUtil.isNotEmpty(qty) && qty > 0
|
||||
? qty
|
||||
: ObjectUtil.isEmpty(materialObj.getStandard_qty()) ? 0 : Integer.parseInt(materialObj.getStandard_qty()) * 11);
|
||||
: ObjectUtil.isEmpty(materialObj.getStandard_qty()) ? 0 : Integer.parseInt(materialObj.getStandard_qty()));
|
||||
groupEntity.setCreate_id(GeneralDefinition.ACS_ID);
|
||||
groupEntity.setCreate_name(GeneralDefinition.ACS_NAME);
|
||||
groupEntity.setCreate_time(DateUtil.now());
|
||||
@@ -352,7 +353,11 @@ public class TBXMLTask extends AbstractTask {
|
||||
|
||||
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
||||
String endPoint = taskObj.getPoint_code2();
|
||||
//起点是对接位要转成连涂或者普涂
|
||||
String startPoint=taskObj.getPoint_code1();
|
||||
String startPoint1=startPoint.substring(0,5);
|
||||
SchBasePoint endPointObj = pointService.getById(endPoint);
|
||||
PdmBdWorkorder orderObject = workorderService.getDeviceDockingProductionTask(startPoint1);
|
||||
if (ObjectUtil.isNotEmpty(endPointObj)) {
|
||||
SchBaseVehiclematerialgroup vehiclematerialgroup = vehiclematerialgroupService.getById(taskObj.getGroup_id());
|
||||
TaskUtils.setGroupUpdateByType(vehiclematerialgroup, taskFinishedType);
|
||||
@@ -362,6 +367,11 @@ public class TBXMLTask extends AbstractTask {
|
||||
vehiclematerialgroup.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue());
|
||||
vehiclematerialgroup.setPoint_code(endPointObj.getPoint_code());
|
||||
vehiclematerialgroup.setPoint_name(endPointObj.getPoint_name());
|
||||
//在相应工单中修改实际数量
|
||||
Integer qty=vehiclematerialgroup.getMaterial_qty();
|
||||
Integer real_qty=(orderObject.getReal_qty()).intValue()+qty;
|
||||
orderObject.setReal_qty(BigDecimal.valueOf(real_qty));
|
||||
workorderService.updateById(orderObject);
|
||||
// 设置链路id,使用任务编码
|
||||
vehiclematerialgroup.setBuss_move_id(taskObj.getTask_code());
|
||||
vehiclematerialgroup.setMove_way(vehiclematerialgroup.getMove_way() + " -> " + endPointObj.getPoint_code());
|
||||
|
||||
Reference in New Issue
Block a user