add 数字孪生

This commit is contained in:
周俊杰
2024-09-05 08:32:02 +08:00
parent 078554d16e
commit 7404c6499f
22 changed files with 708 additions and 377 deletions

View File

@@ -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 &lt; 19 THEN
p.col_num ELSE NULL
END DESC;
</select>
<select id="detail" resultType="org.nl.wms.board.service.dao.dto.Detail">

View File

@@ -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")

View File

@@ -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();
}

View File

@@ -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;
}

View File

@@ -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();
}

View File

@@ -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>

View File

@@ -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取放货状态")

View File

@@ -28,4 +28,11 @@ public interface AcsToWmsService {
* @return
*/
AgainApplyResponse againApply(JSONObject task);
/**
* 固化室出口取货完成
* @param task
* @return
*/
AgainApplyResponse ghsmlqhfinish(JSONObject task);
}

View File

@@ -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;
}
}

View File

@@ -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);

View File

@@ -130,5 +130,4 @@ public class SchBaseTask implements Serializable {
private String start_wait_point;
@ApiModelProperty(value = "放货等待点")
private String next_wait_point;
}

View File

@@ -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("");

View File

@@ -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)

View File

@@ -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());