add: 添加自动门功能,手动推送物料功能
This commit is contained in:
@@ -1,12 +1,14 @@
|
||||
package org.nl.acs.auto.run;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.acs.AcsConfig;
|
||||
import org.nl.acs.agv.server.NDCAgvService;
|
||||
import org.nl.acs.device.domain.Device;
|
||||
import org.nl.acs.device.service.DeviceService;
|
||||
import org.nl.acs.device_driver.basedriver.agv.ndcone.AgvNdcOneDeviceDriver;
|
||||
import org.nl.acs.device_driver.basedriver.standard_autodoor.StandardAutodoorDeviceDriver;
|
||||
import org.nl.acs.ext.wms.service.AcsToWmsService;
|
||||
import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl;
|
||||
import org.nl.acs.instruction.domain.Instruction;
|
||||
@@ -131,7 +133,7 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable {
|
||||
//车号
|
||||
int carno = arr[20];
|
||||
//充电桩站点号
|
||||
int station=arr[25];
|
||||
int station = arr[25];
|
||||
Instruction link_inst = null;
|
||||
Instruction inst = null;
|
||||
List<Instruction> insts = null;
|
||||
@@ -157,7 +159,7 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable {
|
||||
|
||||
//
|
||||
AgvNdcOneDeviceDriver agvNdcOneDeviceDriver;
|
||||
|
||||
StandardAutodoorDeviceDriver standardAutodoorDeviceDriver;
|
||||
//开始任务/上报订单号
|
||||
if (phase == 0x01) {
|
||||
if (!ObjectUtil.isEmpty(inst)) {
|
||||
@@ -196,11 +198,11 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable {
|
||||
data = NDCAgvService.sendAgvOneModeInst(phase, index, 0, 0, 0, 0, 0);
|
||||
|
||||
//充电任务下发成功上报
|
||||
}else if (phase == 0x64){
|
||||
log.info("AGV车号{}反馈充电任务下发成功,锁定充电桩{}",agvaddr,station);
|
||||
List<Dict> dictList= dictService.getDictByName("station");
|
||||
for(Dict dict : dictList){
|
||||
if (Integer.parseInt(dict.getPara1())==station){
|
||||
} else if (phase == 0x64) {
|
||||
log.info("AGV车号{}反馈充电任务下发成功,锁定充电桩{}", agvaddr, station);
|
||||
List<Dict> dictList = dictService.getDictByName("station");
|
||||
for (Dict dict : dictList) {
|
||||
if (Integer.parseInt(dict.getPara1()) == station) {
|
||||
dict.setValue("1");
|
||||
dict.setPara2(String.valueOf(agvaddr));
|
||||
dictService.updateDetail(dict);
|
||||
@@ -208,8 +210,8 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable {
|
||||
}
|
||||
}
|
||||
//充电成功
|
||||
}else if (phase == 0x65){
|
||||
log.info("AGV车号{}反馈充电中,充电桩{}",agvaddr,station);
|
||||
} else if (phase == 0x65) {
|
||||
log.info("AGV车号{}反馈充电中,充电桩{}", agvaddr, station);
|
||||
// log.info("AGV车号{}反馈充电成功,释放充电桩{}",agvaddr,station);
|
||||
// List<Dict> dictList= dictService.getDictByName("station");
|
||||
// for(Dict dict : dictList){
|
||||
@@ -221,24 +223,57 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable {
|
||||
// }
|
||||
// }
|
||||
//充电取消上报
|
||||
}else if (phase == 0x66){
|
||||
log.info("AGV车号{}反馈充电任务已取消,释放充电桩{}",agvaddr,station);
|
||||
List<Dict> dictList= dictService.getDictByName("station");
|
||||
for(Dict dict : dictList){
|
||||
if (Integer.parseInt(dict.getPara1())==station){
|
||||
} else if (phase == 0x66) {
|
||||
log.info("AGV车号{}反馈充电任务已取消,释放充电桩{}", agvaddr, station);
|
||||
List<Dict> dictList = dictService.getDictByName("station");
|
||||
for (Dict dict : dictList) {
|
||||
if (Integer.parseInt(dict.getPara1()) == station) {
|
||||
dict.setValue("0");
|
||||
dict.setPara2("");
|
||||
dictService.updateDetail(dict);
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else if (phase == 0x50) {
|
||||
if (ObjectUtil.isEmpty(device_code)) {
|
||||
log.info(agvaddr + "对应设备号为空!");
|
||||
return;
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(device)) {
|
||||
if (device.getDeviceDriver() instanceof StandardAutodoorDeviceDriver) {
|
||||
standardAutodoorDeviceDriver = (StandardAutodoorDeviceDriver) device.getDeviceDriver();
|
||||
String is_enter = standardAutodoorDeviceDriver.getExtraValue().get("is_enter").toString();
|
||||
if (StrUtil.isNotBlank(is_enter) && !"true".equals(is_enter)) {
|
||||
data = NDCAgvService.sendAgvOneModeInst(phase, index, 0, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
log.info(agvaddr + "对应设备号为空!");
|
||||
}
|
||||
|
||||
} else if (phase == 0x51) {
|
||||
if (ObjectUtil.isEmpty(device_code)) {
|
||||
log.info(agvaddr + "对应设备号为空!");
|
||||
return;
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(device)) {
|
||||
if (device.getDeviceDriver() instanceof StandardAutodoorDeviceDriver) {
|
||||
standardAutodoorDeviceDriver = (StandardAutodoorDeviceDriver) device.getDeviceDriver();
|
||||
String is_enter = standardAutodoorDeviceDriver.getExtraValue().get("is_enter").toString();
|
||||
if (StrUtil.isNotBlank(is_enter) && !"true".equals(is_enter)) {
|
||||
data = NDCAgvService.sendAgvOneModeInst(phase, index, 0, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
log.info(device_code + "对应设备号为空!");
|
||||
}
|
||||
} else {
|
||||
//上报异常信息
|
||||
//(不需要WCS反馈)
|
||||
if (phase == 0x70 || phase == 0x71 || phase == 0x72 || phase == 0x73 || phase == 0x74) {
|
||||
device = deviceAppService.findDeviceByCode("agv"+ Integer.toString(agvaddr));
|
||||
device = deviceAppService.findDeviceByCode("agv" + Integer.toString(agvaddr));
|
||||
} else {
|
||||
device = deviceAppService.findDeviceByCode("agv"+ Integer.toString(arr[20]));
|
||||
device = deviceAppService.findDeviceByCode("agv" + Integer.toString(arr[20]));
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(device)) {
|
||||
if (device.getDeviceDriver() instanceof AgvNdcOneDeviceDriver) {
|
||||
@@ -246,7 +281,6 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable {
|
||||
agvNdcOneDeviceDriver.processSocket(arr);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
if (!ObjectUtil.isEmpty(data)) {
|
||||
write(data);
|
||||
|
||||
@@ -31,7 +31,7 @@ public enum DriverTypeEnum {
|
||||
|
||||
XGAGV(9, "xg_agv", "xg_agv", "agv"),
|
||||
|
||||
AUTODOOR(10, "standard_autodoor", "标准版-自动门", "autodoor"),
|
||||
AUTODOOR(10, "standard_autodoor", "标准版-自动门", "conveyor"),
|
||||
TUBANXIAN_SITE(11, "tubanxian_site", "涂板线", "conveyor"),
|
||||
GUHUASHI_SITE(12, "guhuashi_site", "固化室", "conveyor"),
|
||||
TIANNENG_SITE(13, "tianneng_site", "天能-检测站点", "conveyor"),
|
||||
|
||||
@@ -106,4 +106,12 @@ public class WmsToAcsController {
|
||||
return new ResponseEntity<>(wmstoacsService.notifyAcs(param), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/updateRouteLock")
|
||||
@Log("wms下发锁定释放路线动作")
|
||||
@ApiOperation("wms下发锁定释放路线动作")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> updateRouteLock(@RequestBody JSONObject param) {
|
||||
return new ResponseEntity<>(wmstoacsService.updateRoute(param), HttpStatus.OK);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -92,5 +92,10 @@ public interface WmsToAcsService {
|
||||
*/
|
||||
JSONObject notifyAcs(JSONObject param);
|
||||
|
||||
|
||||
/**
|
||||
* wms下发锁定释放路线
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
Object updateRoute(JSONObject param);
|
||||
}
|
||||
|
||||
@@ -6,12 +6,16 @@ import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import nl.basjes.shaded.org.springframework.util.Assert;
|
||||
import org.nl.acs.AcsConfig;
|
||||
import org.nl.acs.common.IDriverService;
|
||||
import org.nl.acs.device.domain.Device;
|
||||
import org.nl.acs.device.domain.DeviceExtra;
|
||||
import org.nl.acs.device.service.DeviceExtraService;
|
||||
import org.nl.acs.device.service.DeviceService;
|
||||
import org.nl.acs.device_driver.basedriver.hongxiang_conveyor.HongXiangStationDeviceDriver;
|
||||
import org.nl.acs.device_driver.basedriver.hongxiang_device.HongXiangConveyorDeviceDriver;
|
||||
@@ -36,14 +40,12 @@ import org.nl.system.service.param.ISysParamService;
|
||||
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.slf4j.MDC;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@@ -59,6 +61,8 @@ public class WmsToAcsServiceImpl implements WmsToAcsService {
|
||||
private final RouteLineService routeLineService;
|
||||
private final AcsToLiKuService acsToLiKuService;
|
||||
private final StorageCellMapper storageCellMapper;
|
||||
@Autowired
|
||||
private DeviceExtraService deviceExtraService;
|
||||
|
||||
private String log_file_type = "log_file_type";
|
||||
private String log_type = "LMS请求ACS";
|
||||
@@ -466,14 +470,14 @@ public class WmsToAcsServiceImpl implements WmsToAcsService {
|
||||
for (int i = 0; i < reqs.size(); i++) {
|
||||
CreateTaskRequest req = reqs.get(i);
|
||||
String task_code = req.getTask_code();
|
||||
String task_id =req.getTask_id();
|
||||
String task_id = req.getTask_id();
|
||||
String start_device_code = req.getStart_device_code();
|
||||
String next_device_code = req.getNext_device_code();
|
||||
String priority = req.getPriority();
|
||||
String vehicle_code = req.getVehicle_code();
|
||||
String vehicle_type = req.getVehicle_type();
|
||||
String task_type = req.getTask_type();
|
||||
String agv_task_type=req.getAgv_task_type();
|
||||
String agv_task_type = req.getAgv_task_type();
|
||||
String remark = req.getRemark();
|
||||
Map<String, String> params = req.getParams();
|
||||
|
||||
@@ -577,7 +581,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService {
|
||||
}
|
||||
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("ext_task_id",task_id);
|
||||
jo.put("ext_task_id", task_id);
|
||||
jo.put("task_code", task_code);
|
||||
jo.put("task_id", IdUtil.simpleUUID());
|
||||
jo.put("start_point_code", start_point_code);
|
||||
@@ -631,29 +635,30 @@ public class WmsToAcsServiceImpl implements WmsToAcsService {
|
||||
public JSONObject notifyAcs(JSONObject param) {
|
||||
log.info("notifyAcs - 请求参数 {}", param);
|
||||
JSONObject result = new JSONObject();
|
||||
Integer type=param.getInteger("type");
|
||||
String device_code=param.getString("device_code");
|
||||
Device device = deviceAppService.findDeviceByCode(device_code);;
|
||||
switch(type){
|
||||
Integer type = param.getInteger("type");
|
||||
String device_code = param.getString("device_code");
|
||||
Device device = deviceAppService.findDeviceByCode(device_code);
|
||||
;
|
||||
switch (type) {
|
||||
case 1:
|
||||
//LMS通知固化室极板已进满信号,开始固化
|
||||
if (device.getDeviceDriver() instanceof GuhuashiSiteDeviceDriver) {
|
||||
GuhuashiSiteDeviceDriver guhuashiSiteDeviceDriver = (GuhuashiSiteDeviceDriver) device.getDeviceDriver();
|
||||
guhuashiSiteDeviceDriver.writing("VW70043",1);
|
||||
guhuashiSiteDeviceDriver.writing("VW70043", 1);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
//LMS通知固化室在下班时未进满信号,开始固化
|
||||
if (device.getDeviceDriver() instanceof GuhuashiSiteDeviceDriver) {
|
||||
GuhuashiSiteDeviceDriver guhuashiSiteDeviceDriver = (GuhuashiSiteDeviceDriver) device.getDeviceDriver();
|
||||
guhuashiSiteDeviceDriver.writing("VW70045",1);
|
||||
guhuashiSiteDeviceDriver.writing("VW70045", 1);
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
//LMS通知固化室极板已出完
|
||||
if (device.getDeviceDriver() instanceof GuhuashiSiteDeviceDriver) {
|
||||
GuhuashiSiteDeviceDriver guhuashiSiteDeviceDriver = (GuhuashiSiteDeviceDriver) device.getDeviceDriver();
|
||||
guhuashiSiteDeviceDriver.writing("VW70053",1);
|
||||
guhuashiSiteDeviceDriver.writing("VW70053", 1);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@@ -666,4 +671,31 @@ public class WmsToAcsServiceImpl implements WmsToAcsService {
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object updateRoute(JSONObject param) {
|
||||
Assert.notNull(param.getString("pointCode"), "参数Point不能为空");
|
||||
String pointCode = param.getString("pointCode");
|
||||
if (pointCode.contains(",")) {
|
||||
String[] split = pointCode.split(",");
|
||||
Arrays.stream(split).forEach(point -> {
|
||||
deviceExtraService.update(Wrappers.lambdaUpdate(DeviceExtra.class)
|
||||
.eq(DeviceExtra::getDevice_code, point)
|
||||
.eq(DeviceExtra::getExtra_name, "is_enter")
|
||||
.eq(DeviceExtra::getExtra_code, "is_enter")
|
||||
.set("0".equals(param.getString("status")),DeviceExtra::getExtra_value, "false")
|
||||
.set("1".equals(param.getString("status")),DeviceExtra::getExtra_value, "true")
|
||||
);
|
||||
});
|
||||
} else {
|
||||
deviceExtraService.update(Wrappers.lambdaUpdate(DeviceExtra.class)
|
||||
.eq(DeviceExtra::getDevice_code, pointCode)
|
||||
.eq(DeviceExtra::getExtra_name, "is_enter")
|
||||
.eq(DeviceExtra::getExtra_code, "is_enter")
|
||||
.set("0".equals(param.getString("status")),DeviceExtra::getExtra_value, "false")
|
||||
.set("1".equals(param.getString("status")),DeviceExtra::getExtra_value, "true")
|
||||
);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -54,85 +54,14 @@
|
||||
<el-form-item label="电气调度号" label-width="150px">
|
||||
<el-switch v-model="form.OPCServer" />
|
||||
</el-form-item>
|
||||
<el-form-item label="是否允许进入" label-width="150px">
|
||||
<el-switch v-model="form.is_enter" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-card>
|
||||
|
||||
<el-card class="box-card" shadow="never">
|
||||
<div slot="header" class="clearfix">
|
||||
<span class="role-span">PLC读取字段:</span>
|
||||
</div>
|
||||
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="78px">
|
||||
<el-table
|
||||
v-loading="false"
|
||||
:data="data1"
|
||||
:max-height="550"
|
||||
size="small"
|
||||
style="width: 100%;margin-bottom: 15px"
|
||||
>
|
||||
|
||||
<el-table-column prop="name" label="用途" />
|
||||
<el-table-column prop="code" label="别名要求" />
|
||||
<el-table-column prop="db" label="DB块">
|
||||
<template slot-scope="scope">
|
||||
<el-input
|
||||
v-model="data1[scope.$index].db"
|
||||
size="mini"
|
||||
class="edit-input"
|
||||
@input="finishReadEdit(data1[scope.$index])"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="dbr_value">
|
||||
<template slot="header">
|
||||
<el-link type="primary" :underline="false" @click.native="test_read1()">测试读</el-link>
|
||||
</template>
|
||||
<template slot-scope="scope">
|
||||
<el-input v-model="data1[scope.$index].dbr_value" size="mini" class="edit-input" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-form>
|
||||
</el-card>
|
||||
|
||||
<el-card class="box-card" shadow="never">
|
||||
<div slot="header" class="clearfix">
|
||||
<span class="role-span">PLC写入字段:</span>
|
||||
</div>
|
||||
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="78px">
|
||||
<el-table
|
||||
v-loading="false"
|
||||
:data="data2"
|
||||
:max-height="550"
|
||||
size="small"
|
||||
style="width: 100%;margin-bottom: 15px"
|
||||
>
|
||||
|
||||
<el-table-column prop="name" label="用途" />
|
||||
<el-table-column prop="code" label="别名要求" />
|
||||
<el-table-column prop="db" label="DB块">
|
||||
<template slot-scope="scope">
|
||||
<el-input
|
||||
v-model="data2[scope.$index].db"
|
||||
size="mini"
|
||||
class="edit-input"
|
||||
@input="finishWriteEdit(data2[scope.$index])"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="dbw_value">
|
||||
<template slot="header">
|
||||
<el-link type="primary" :underline="false" @click.native="test_write1()">测试写</el-link>
|
||||
</template>
|
||||
<template slot-scope="scope">
|
||||
<el-input v-model="data2[scope.$index].dbw_value" size="mini" class="edit-input" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-form>
|
||||
</el-card>
|
||||
|
||||
<el-card class="box-card" shadow="never">
|
||||
<div slot="header" class="clearfix">
|
||||
<span class="role-span" />
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
sys_user.person_name as personName,
|
||||
sys_user.gender,
|
||||
sys_user.phone,
|
||||
sys_user.devices as devices,
|
||||
sys_user.email,
|
||||
sys_user.avatar_name as avatarName,
|
||||
sys_user.avatar_path as avatarPath,
|
||||
@@ -52,6 +53,7 @@
|
||||
<result column="updateTime" property="update_time" />
|
||||
<result column="extpersonId" property="extperson_id" />
|
||||
<result column="extuserId" property="extuser_id" />
|
||||
<result column="devices" property="devices" />
|
||||
<collection property="depts" ofType="org.nl.system.service.dept.dao.SysDept">
|
||||
<id property="dept_id" column="dept_id"/>
|
||||
<result column="dept_name" property="name"/>
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
package org.nl.system.service.user.impl;
|
||||
|
||||
import cn.dev33.satoken.secure.SaSecureUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
@@ -31,6 +33,7 @@ import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.Serializable;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
|
||||
@@ -73,6 +76,17 @@ public class ISysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> imp
|
||||
@Override
|
||||
public List<SysUserDetail> getUserDetail(UserQuery query, PageQuery pageQuery) {
|
||||
List<SysUserDetail> userDetail = sysUserMapper.getUserDetail(query, pageQuery);
|
||||
userDetail.stream().forEach(detail -> {
|
||||
if (StrUtil.isNotEmpty(detail.getDevices())) {
|
||||
String devices = detail.getDevices();
|
||||
CollUtil.addAll(JSONUtil.parseArray(devices), String.class);
|
||||
List<String> lists = new ArrayList<>();
|
||||
JSONUtil.parseArray(devices).stream().forEach(device -> {
|
||||
lists.add(device.toString());
|
||||
});
|
||||
detail.setDevice(lists);
|
||||
}
|
||||
});
|
||||
return userDetail;
|
||||
}
|
||||
|
||||
@@ -82,7 +96,7 @@ public class ISysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> imp
|
||||
public void create(Map userDetail) {
|
||||
SysUser username = this.getOne(Wrappers.lambdaQuery(SysUser.class)
|
||||
.eq(SysUser::getUsername, userDetail.get("username")));
|
||||
if (ObjectUtil.isEmpty(username)) {
|
||||
if (ObjectUtil.isNotEmpty(username)) {
|
||||
throw new BadRequestException("用户名已存在");
|
||||
}
|
||||
SysUser sysUser = new SysUser();
|
||||
@@ -132,6 +146,7 @@ public class ISysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> imp
|
||||
} catch (Exception ex) {
|
||||
throw new RuntimeException();
|
||||
}
|
||||
sysUser.setDevices(StrUtil.toString(sysUser.getDevice()));
|
||||
sysUser.setUpdate_time(new Date());
|
||||
sysUser.setUpdate_id(SecurityUtils.getCurrentUserId());
|
||||
this.updateById(sysUser);
|
||||
|
||||
@@ -19,6 +19,14 @@ public interface WmsToAcsService {
|
||||
*/
|
||||
AcsResponse notifyAcs(JSONObject map);
|
||||
|
||||
/**
|
||||
* 区域锁定
|
||||
* @param map: 任务链表
|
||||
* @return
|
||||
*/
|
||||
AcsResponse notifyAcs1(JSONObject map);
|
||||
|
||||
|
||||
/**
|
||||
* 下发acs任务
|
||||
* @param schBaseTask
|
||||
|
||||
@@ -624,4 +624,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -27,6 +27,13 @@ public class WmsToAcsServiceImpl implements WmsToAcsService {
|
||||
return resultForAcs;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AcsResponse notifyAcs1(JSONObject map) {
|
||||
String api = "api/wms/updateRouteLock";
|
||||
AcsResponse resultForAcs = AcsUtil.notifyAcs2(api, map);
|
||||
return resultForAcs;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
|
||||
@@ -17,7 +17,7 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@Api(tags = "connector请求lms")
|
||||
@RequestMapping("/api/")
|
||||
@RequestMapping("/api/wms")
|
||||
@Slf4j
|
||||
@SaIgnore
|
||||
public class ConnectorToWmsController {
|
||||
@@ -29,9 +29,20 @@ public class ConnectorToWmsController {
|
||||
@Log("connector下发agv任务")
|
||||
@ApiOperation("connector下发agv任务")
|
||||
@SaIgnore
|
||||
@PostMapping("/wms/task")
|
||||
@PostMapping("/task")
|
||||
public ResponseEntity<Object> createTaskByConnector(@RequestBody JSONArray jsonArray){
|
||||
return new ResponseEntity(connectorService.createTaskByConnector(jsonArray), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Log("推送物料信息")
|
||||
@ApiOperation("推送物料信息")
|
||||
@SaIgnore
|
||||
@PostMapping("/createMaterial")
|
||||
public ResponseEntity<Object> createMaterial(@RequestBody JSONArray jsonArray){
|
||||
return new ResponseEntity(connectorService.createMaterial(jsonArray), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -13,4 +13,11 @@ public interface ConnectorToWmsService {
|
||||
* @return
|
||||
*/
|
||||
Object createTaskByConnector(JSONArray jsonArray);
|
||||
|
||||
/**
|
||||
* connector推送物料信息
|
||||
* @param jsonArray
|
||||
* @return
|
||||
*/
|
||||
Object createMaterial(JSONArray jsonArray);
|
||||
}
|
||||
|
||||
@@ -1,18 +1,27 @@
|
||||
package org.nl.wms.ext.connector.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.http.HttpStatus;
|
||||
import cn.hutool.json.JSONArray;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import nl.basjes.shaded.org.springframework.util.Assert;
|
||||
import org.nl.config.MapOf;
|
||||
import org.nl.wms.database.material.service.dao.MdBaseMaterial;
|
||||
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
||||
import org.nl.wms.ext.connector.service.ConnectorToWmsService;
|
||||
import org.nl.wms.ext.connector.service.dto.ConnectorDto;
|
||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
|
||||
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_manage.AbstractTask;
|
||||
import org.nl.wms.sch.task_manage.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.task.TaskFactory;
|
||||
@@ -20,6 +29,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Slf4j
|
||||
@@ -29,15 +39,14 @@ public class ConnectorToWmsServiceImpl implements ConnectorToWmsService {
|
||||
|
||||
@Autowired
|
||||
private ISchBasePointService schBasePointService;
|
||||
|
||||
@Autowired
|
||||
private ISchBaseTaskService schBaseTaskService;
|
||||
|
||||
@Autowired
|
||||
private WmsToAcsService wmsToAcsService;
|
||||
|
||||
@Autowired
|
||||
private TaskFactory taskFactory;
|
||||
@Autowired
|
||||
private ISchBaseVehiclematerialgroupService iSchBaseVehiclematerialgroupService;
|
||||
|
||||
@Override
|
||||
public Map createTaskByConnector(JSONArray jsonArray) {
|
||||
@@ -114,4 +123,23 @@ public class ConnectorToWmsServiceImpl implements ConnectorToWmsService {
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object createMaterial(JSONArray jsonArray) {
|
||||
log.info("connector下发物料请求参数:{}", jsonArray);
|
||||
Assert.noNullElements(jsonArray, "请求参数为空!");
|
||||
List<ConnectorDto> connectorDtos = BeanUtil.copyToList(jsonArray, ConnectorDto.class);
|
||||
for (ConnectorDto connectorDto : connectorDtos) {
|
||||
SchBaseVehiclematerialgroup schBaseVehiclematerialgroup = new SchBaseVehiclematerialgroup();
|
||||
schBaseVehiclematerialgroup.setVehicle_code(connectorDto.getVehicle_code());
|
||||
schBaseVehiclematerialgroup.setJob_name(connectorDto.getJobname());
|
||||
schBaseVehiclematerialgroup.setMaterial_id(connectorDto.getProductID());
|
||||
schBaseVehiclematerialgroup.setMaterial_qty(connectorDto.getCurrentqty());
|
||||
schBaseVehiclematerialgroup.setRegion_code(connectorDto.getNextOperation());
|
||||
schBaseVehiclematerialgroup.setExtend(JSON.toJSONString(connectorDto));
|
||||
schBaseVehiclematerialgroup.setOrder_code(connectorDto.getProductionOrder());
|
||||
iSchBaseVehiclematerialgroupService.create(schBaseVehiclematerialgroup);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -154,11 +154,12 @@ public class FabController {
|
||||
List<SendVehicleVo> sendVehicleVoList = sendVehiclesVo.getMater();
|
||||
if (CollUtil.isEmpty(sendVehicleVoList)) throw new BadRequestException("物料信息为空,请确认!");
|
||||
AtomicReference<Boolean> flag = new AtomicReference<>(false);
|
||||
sendVehicleVoList.stream().forEach(sendVehicleVo1 -> {
|
||||
for (SendVehicleVo sendVehicleVo1 : sendVehicleVoList) {
|
||||
if (sendVehicleVo1.getMaterial_qty() != 0) {
|
||||
flag.set(true);
|
||||
break;
|
||||
}
|
||||
});
|
||||
}
|
||||
sendVehicleVoList.removeIf(sendVehicleVo1 -> (ObjectUtil.isEmpty(sendVehicleVo1) || sendVehicleVo1.getMaterial_qty() == 0));
|
||||
if (!flag.get()) {
|
||||
fabService.createAgvTask(toJSON, "snt");
|
||||
@@ -167,10 +168,12 @@ public class FabController {
|
||||
toJSON.put("vehicle_code", schBasePoint.getVehicle_code());
|
||||
List<String> materiales = new ArrayList<>();
|
||||
sendVehicleVoList.stream().forEach(send -> {
|
||||
SchBaseVehiclematerialgroup one = iSchBaseVehiclematerialgroupService.getOne(Wrappers.lambdaQuery(SchBaseVehiclematerialgroup.class)
|
||||
List<SchBaseVehiclematerialgroup> list = iSchBaseVehiclematerialgroupService.list(Wrappers.lambdaQuery(SchBaseVehiclematerialgroup.class)
|
||||
.eq(SchBaseVehiclematerialgroup::getOrder_code, send.getOrder_code()));
|
||||
send.setDue_date(one.getDue_date());
|
||||
materiales.add(JSONObject.toJSONString(send));
|
||||
if (CollUtil.isNotEmpty(list)) {
|
||||
send.setDue_date(list.get(0).getDue_date());
|
||||
materiales.add(JSONObject.toJSONString(send));
|
||||
}
|
||||
});
|
||||
toJSON.put("region_code", schBasePoint.getRegion_code());
|
||||
toJSON.put("material_info", materiales);
|
||||
@@ -282,9 +285,17 @@ public class FabController {
|
||||
@Log("查询订单号")
|
||||
@PostMapping("/orders")
|
||||
public ResponseEntity<TableDataInfo> selectOrders(@RequestBody SendVehicleVo sendVehicleVo) {
|
||||
SchBasePoint schBasePoint = iSchBasePointService.selectByPointCode(sendVehicleVo.getDevice_code());
|
||||
if (ObjectUtil.isEmpty(schBasePoint)) throw new BadRequestException("设备不存在!");
|
||||
List<String> list = iSchBaseVehiclematerialgroupService.selectOrdersByVehicleCode(schBasePoint.getVehicle_code());
|
||||
if (StrUtil.isEmpty(sendVehicleVo.getDevice_code()) && StrUtil.isEmpty(sendVehicleVo.getVehicle_code())) {
|
||||
throw new BadRequestException("请输入设备号或载具号!");
|
||||
}
|
||||
List<String> list = null;
|
||||
if (StrUtil.isNotEmpty(sendVehicleVo.getVehicle_code())) {
|
||||
list = iSchBaseVehiclematerialgroupService.selectOrdersByVehicleCode(sendVehicleVo.getVehicle_code());
|
||||
} else if (StrUtil.isNotEmpty(sendVehicleVo.getDevice_code())) {
|
||||
SchBasePoint schBasePoint = iSchBasePointService.selectByPointCode(sendVehicleVo.getDevice_code());
|
||||
if (ObjectUtil.isEmpty(schBasePoint)) throw new BadRequestException("设备不存在!");
|
||||
list = iSchBaseVehiclematerialgroupService.selectOrdersByVehicleCode(schBasePoint.getVehicle_code());
|
||||
}
|
||||
HashSet<String> keys = new HashSet<>();
|
||||
list.stream().forEach(item -> {
|
||||
keys.add(item);
|
||||
|
||||
@@ -27,6 +27,10 @@ public class SendVehicleVo {
|
||||
* 交期时间
|
||||
*/
|
||||
private String due_date;
|
||||
/**
|
||||
* 载具号
|
||||
*/
|
||||
private String vehicle_code;
|
||||
/**
|
||||
* 物料信息
|
||||
*/
|
||||
|
||||
@@ -104,7 +104,7 @@ public class FabServiceImpl {
|
||||
if(ObjectUtil.isEmpty(schBasePoint1)){
|
||||
throw new BadRequestException("点位不存在");
|
||||
}
|
||||
if(!schBasePoint1.getPoint_status().equals(GoodsEnum.OUT_OF_STOCK.getValue())){
|
||||
if(!schBasePoint1.getPoint_status().equals(GoodsEnum.OUT_OF_STOCK.getValue()) || schBasePoint1.getIs_lock()){
|
||||
throw new BadRequestException("该点位不是空站点,请确认再呼叫");
|
||||
}
|
||||
param.put("device_code", callEmpVo.getDevice_code());
|
||||
@@ -122,6 +122,7 @@ public class FabServiceImpl {
|
||||
Assert.noNullElements(new Object[]{form.getString("device_code"), form.getString("region_code")}, "参数不能为空!");
|
||||
SendMaterVo sendMaterVo = form.toJavaObject(SendMaterVo.class);
|
||||
MdBaseVehicle vehicle = iMdBaseVehicleService.getOne(new QueryWrapper<MdBaseVehicle>().eq("vehicle_code", sendMaterVo.getVehicle_code()));
|
||||
if(ObjectUtil.isEmpty(vehicle)) throw new BadRequestException("载具不存在");
|
||||
param.put("device_code", sendMaterVo.getDevice_code());
|
||||
param.put("ext_data", sendMaterVo);
|
||||
param.put("region_code", sendMaterVo.getRegion_code());
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.nl.wms.ext.handheld.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
@@ -114,7 +115,7 @@ public class HandheldController {
|
||||
@Log("修改订单工序")
|
||||
@ApiOperation("修改订单工序")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> updateRegionCodeByOrder(@RequestBody JSONObject json) {
|
||||
public ResponseEntity<Object> updateRegionCodeByOrder(@RequestBody JSONArray json) {
|
||||
handheldService.updateRegionCodeByOrder(json);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
@@ -146,4 +147,14 @@ public class HandheldController {
|
||||
return new ResponseEntity<>(vehicleCode,HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/updateRouteStatus")
|
||||
@Log("修改路线状态")
|
||||
@SaIgnore
|
||||
@ApiOperation("修改路线状态")
|
||||
public ResponseEntity<Object> updateRouteStatus(@RequestBody JSONObject json) {
|
||||
handheldService.updateRoute(json);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
package org.nl.wms.ext.handheld.handheldEnum;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 路线
|
||||
* @author LENOVO
|
||||
*/
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum RouteEnum {
|
||||
|
||||
ROUTE_A("外协区到冲床一路线","AD1");
|
||||
|
||||
public String routeName;
|
||||
public String pointCode;
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.nl.wms.ext.handheld.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
|
||||
import java.util.List;
|
||||
@@ -72,7 +73,7 @@ public interface HandheldService {
|
||||
* 修改订单工序
|
||||
* @param json
|
||||
*/
|
||||
void updateRegionCodeByOrder(JSONObject json);
|
||||
void updateRegionCodeByOrder(JSONArray json);
|
||||
|
||||
/**
|
||||
* 查询用户的关联设备
|
||||
@@ -94,4 +95,10 @@ public interface HandheldService {
|
||||
* @return
|
||||
*/
|
||||
String selectVehicleByPoint(JSONObject json);
|
||||
|
||||
/**
|
||||
* 修改路线状态
|
||||
* @param json
|
||||
*/
|
||||
void updateRoute(JSONObject json);
|
||||
}
|
||||
|
||||
@@ -14,11 +14,16 @@ import org.nl.common.enums.VehicleTypeEnum;
|
||||
import org.nl.common.enums.region.RegionEnum;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.RedisUtils;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.nl.system.service.param.dao.Param;
|
||||
import org.nl.system.service.param.impl.SysParamServiceImpl;
|
||||
import org.nl.system.service.user.ISysUserService;
|
||||
import org.nl.system.service.user.dao.SysUser;
|
||||
import org.nl.wms.database.vehicle.service.IMdBaseVehicleService;
|
||||
import org.nl.wms.database.vehicle.service.dao.MdBaseVehicle;
|
||||
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
||||
import org.nl.wms.ext.connector.service.WmsToConnectorService;
|
||||
import org.nl.wms.ext.handheld.handheldEnum.RouteEnum;
|
||||
import org.nl.wms.ext.handheld.service.HandheldService;
|
||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
|
||||
@@ -35,6 +40,7 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* @author LENOVO
|
||||
@@ -60,6 +66,8 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
private ISysUserService iSysUserService;
|
||||
@Autowired
|
||||
private RedisUtils redisUtils;
|
||||
@Autowired
|
||||
private WmsToAcsService wmsToAcsService;
|
||||
|
||||
|
||||
@Override
|
||||
@@ -180,6 +188,11 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
public void cageBlankingTask(JSONObject param) {
|
||||
Assert.noNullElements(new Object[]{param.getString("device_code"), param.getString("vehicle_code")},
|
||||
"当前点位或目的地不能为空!");
|
||||
SchBasePoint schBasePoint = iSchBasePointService.selectByPointCode(param.getString("device_code"));
|
||||
if (ObjectUtil.isEmpty(schBasePoint)) throw new BadRequestException("设备点位不存在!");
|
||||
if (schBasePoint.getIs_lock()) {
|
||||
throw new BadRequestException("该点位正在执行任务,请稍后再试!");
|
||||
}
|
||||
String region_code = param.getString("region_code");
|
||||
String device_code = param.getString("device_code");
|
||||
String vehicle_code = param.getString("vehicle_code");
|
||||
@@ -187,7 +200,7 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
AbstractTask connectorTask = taskFactory.getTask("BLANKINGTask");
|
||||
switch (type) {
|
||||
case "1":
|
||||
goShelves(param, region_code, device_code, vehicle_code, connectorTask);
|
||||
goShelves(schBasePoint, param, region_code, device_code, vehicle_code, connectorTask);
|
||||
break;
|
||||
case "2":
|
||||
goWxOrNx(param, region_code, device_code, vehicle_code, connectorTask);
|
||||
@@ -209,11 +222,9 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
* @param vehicle_code
|
||||
* @param connectorTask
|
||||
*/
|
||||
private void goShelves(JSONObject param, String region_code, String device_code, String vehicle_code, AbstractTask connectorTask) {
|
||||
private void goShelves(SchBasePoint schBasePoint, JSONObject param, String region_code, String device_code, String vehicle_code, AbstractTask connectorTask) {
|
||||
Assert.noNullElements(param.getJSONArray("material"), "参数不能为空!");
|
||||
JSONArray materials = param.getJSONArray("material");
|
||||
SchBasePoint schBasePoint = iSchBasePointService.selectByPointCode(device_code);
|
||||
if (ObjectUtil.isEmpty(schBasePoint)) throw new BadRequestException("设备点位不存在!");
|
||||
JSONObject jo = new JSONObject();
|
||||
if (StrUtil.isBlank(region_code)) {
|
||||
JSONObject json = new JSONObject();
|
||||
@@ -451,15 +462,14 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
|
||||
|
||||
@Override
|
||||
public void updateRegionCodeByOrder(JSONObject json) {
|
||||
Assert.noNullElements((Collection<?>) json, "参数不能为空!");
|
||||
JSONArray material_info = json.getJSONArray("material_info");
|
||||
material_info.stream().forEach(material -> {
|
||||
JSONObject jsonObject = JSONObject.parseObject(StrUtil.toString(material));
|
||||
public void updateRegionCodeByOrder(JSONArray json) {
|
||||
Assert.noNullElements(json, "参数不能为空!");
|
||||
json.stream().forEach(material -> {
|
||||
cn.hutool.json.JSONObject jsonObject = JSONUtil.parseObj(material);
|
||||
iSchBaseVehiclematerialgroupService.update(Wrappers.lambdaUpdate(SchBaseVehiclematerialgroup.class)
|
||||
.eq(SchBaseVehiclematerialgroup::getOrder_code, jsonObject.getString("order_code"))
|
||||
.set(SchBaseVehiclematerialgroup::getDue_date, jsonObject.getString("due_date"))
|
||||
.set(SchBaseVehiclematerialgroup::getRegion_code, jsonObject.getString("region_code"))
|
||||
.eq(SchBaseVehiclematerialgroup::getOrder_code, jsonObject.getStr("order_code"))
|
||||
.set(SchBaseVehiclematerialgroup::getDue_date, jsonObject.getStr("due_date"))
|
||||
.set(SchBaseVehiclematerialgroup::getRegion_code, jsonObject.getStr("region_code"))
|
||||
);
|
||||
});
|
||||
}
|
||||
@@ -493,7 +503,13 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
if (regin_code != null) {
|
||||
throw new BadRequestException("当前设备工序已经登陆,无法继续选择");
|
||||
} else {
|
||||
redisUtils.set("mobile:" + json.getString("device_code"), json.getString("device_code"));
|
||||
SysParamServiceImpl sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class);
|
||||
Param isInvokeConnector = sysParamService.findByCode(GeneralDefinition.HANDHELD_LOGIN_TIME);
|
||||
int loginTime = 3;
|
||||
if(ObjectUtil.isNotEmpty(isInvokeConnector)){
|
||||
loginTime = Integer.parseInt(isInvokeConnector.getValue());
|
||||
}
|
||||
redisUtils.set("mobile:" + json.getString("device_code"), json.getString("device_code"),loginTime, TimeUnit.HOURS);
|
||||
}
|
||||
}
|
||||
SchBasePoint schBasePoint = iSchBasePointService.selectByPointCode(json.getString("device_code"));
|
||||
@@ -517,5 +533,22 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
return schBasePoint.getVehicle_code();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateRoute(JSONObject json) {
|
||||
Assert.noNullElements(new String[]{json.getString("type"), json.getString("status")}, "参数不能为空!");
|
||||
switch(json.getString("type")){
|
||||
case "1":
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
SysParamServiceImpl sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class);
|
||||
Param isConnectConnector = sysParamService.findByCode(GeneralDefinition.ADD_ROUTE_DOOR_1);
|
||||
jsonObject.put("pointCode",isConnectConnector.getValue());
|
||||
jsonObject.put("status",json.getString("status"));
|
||||
wmsToAcsService.notifyAcs1(jsonObject);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -59,10 +59,18 @@ public class GeneralDefinition {
|
||||
/** 是否连接 */
|
||||
public static final String IS_CONNECT_ACS = "is_connect_acs";
|
||||
public static final String IS_CONNECT_CONNECTOR = "is_connect_connector";
|
||||
/**
|
||||
* 外协区到冲床一自动门
|
||||
*/
|
||||
public static final String ADD_ROUTE_DOOR_1 = "add_route_door_1";
|
||||
/**
|
||||
* 是否调用connector小插件
|
||||
*/
|
||||
public static final String IS_INVOKE_CONNECTOR = "is_invoke_connector";
|
||||
/**
|
||||
* 手持登录时间
|
||||
*/
|
||||
public static final String HANDHELD_LOGIN_TIME = "handheld_login_time";
|
||||
/** ACS路径 */
|
||||
public static final String ACS_URL = "acs_url";
|
||||
/**
|
||||
|
||||
@@ -55,13 +55,13 @@ public class CNTTask extends AbstractTask {
|
||||
List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
|
||||
// 配置信息
|
||||
// 定义按数字后缀排序的比较器
|
||||
Comparator<SchBaseTask> numericSuffixComparator = (s1, s2) -> {
|
||||
/*Comparator<SchBaseTask> numericSuffixComparator = (s1, s2) -> {
|
||||
Integer suffix1 = getNumericSuffix(s1.getPoint_code1());
|
||||
Integer suffix2 = getNumericSuffix(s2.getPoint_code1());
|
||||
return suffix1.compareTo(suffix2);
|
||||
};
|
||||
List<SchBaseTask> collect = tasks.stream().sorted(numericSuffixComparator).collect(Collectors.toList());
|
||||
for (SchBaseTask task : collect) {
|
||||
List<SchBaseTask> collect = tasks.stream().sorted(numericSuffixComparator).collect(Collectors.toList());*/
|
||||
for (SchBaseTask task : tasks) {
|
||||
TaskUtils.setUpdateByAcs(task);
|
||||
// 找起点
|
||||
SchBasePoint schBasePoint = null;
|
||||
|
||||
@@ -26,7 +26,9 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
@Component(value = "FTGTask")
|
||||
@@ -52,13 +54,15 @@ public class FTGTask extends AbstractTask {
|
||||
protected void create() throws BadRequestException {
|
||||
// 获取任务
|
||||
List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
|
||||
for (SchBaseTask task : tasks) {
|
||||
TaskUtils.setUpdateByAcs(task);
|
||||
// 找起点
|
||||
String requestParam = task.getRequest_param();
|
||||
JSONObject jsonObject = JSONObject.parseObject(requestParam);
|
||||
Comparator<SchBaseTask> numericSuffixComparator = (s1, s2) -> {
|
||||
Integer suffix1 = getNumericSuffix(s1.getPoint_code1());
|
||||
Integer suffix2 = getNumericSuffix(s2.getPoint_code1());
|
||||
return suffix1.compareTo(suffix2);
|
||||
};
|
||||
List<SchBaseTask> collect = tasks.stream().sorted(numericSuffixComparator).collect(Collectors.toList());
|
||||
for (SchBaseTask task : collect) {
|
||||
// 查找空载具点位
|
||||
SchBasePoint schBasePoint = schBasePointService.selectEmpVehicleByRegionCode(null,task.getVehicle_type());
|
||||
SchBasePoint schBasePoint = schBasePointService.selectEmpVehicleByRegionCode(RegionEnum.LAG_ROBOT_BEANDING_CELL.getRegion_code(),task.getVehicle_type());
|
||||
if (ObjectUtil.isEmpty(schBasePoint)) {
|
||||
task.setRemark("未找到所需点位!");
|
||||
taskService.updateById(task);
|
||||
@@ -74,6 +78,7 @@ public class FTGTask extends AbstractTask {
|
||||
task.setVehicle_code(schBasePoint.getVehicle_code());
|
||||
task.setRemark("");
|
||||
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||
TaskUtils.setUpdateByAcs(task);
|
||||
taskService.updateById(task);
|
||||
|
||||
schBasePoint.setIs_lock(true);
|
||||
@@ -82,6 +87,12 @@ public class FTGTask extends AbstractTask {
|
||||
pointService.updateById(schBasePoint);
|
||||
}
|
||||
}
|
||||
private static Integer getNumericSuffix(String filename) {
|
||||
// 提取数字后缀
|
||||
String suffix = filename.replaceAll(".*?(\\d+)$", "$1");
|
||||
// 将后缀转换为整数,默认值为0
|
||||
return suffix.isEmpty() ? 0 : Integer.parseInt(suffix);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateStatus(String task_code, TaskStatus status) {
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
inactive-color="#F56C6C"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="crud.status.add" style="margin-bottom: 0;" label="设备" prop="device">
|
||||
<el-form-item style="margin-bottom: 0;" label="设备" prop="device">
|
||||
<el-select
|
||||
v-model="form.device"
|
||||
style="width: 512px"
|
||||
@@ -170,6 +170,7 @@
|
||||
<el-table-column prop="gender" label="性别" :min-width="flexWidth('gender',crud.data,'性别')" />
|
||||
<el-table-column prop="phone" label="电话" :min-width="flexWidth('phone',crud.data,'电话')" />
|
||||
<el-table-column prop="email" label="邮箱" :min-width="flexWidth('email',crud.data,'邮箱')" />
|
||||
<el-table-column prop="devices" label="登录设备" :min-width="flexWidth('devices',crud.data,'邮箱')" />
|
||||
<el-table-column show-overflow-tooltip prop="depts" label="部门" :min-width="flexWidth('depts',crud.data,'邮箱')">
|
||||
<template slot-scope="scope">
|
||||
<span v-for="(item, index) in scope.row.depts" :key="index">
|
||||
|
||||
Reference in New Issue
Block a user