fix: 任务配置
This commit is contained in:
@@ -30,14 +30,12 @@ public class SchBaseTaskconfigController {
|
||||
|
||||
@GetMapping
|
||||
@Log("查询任务配置")
|
||||
|
||||
public ResponseEntity<Object> query(@RequestParam Map whereJson, PageQuery page){
|
||||
return new ResponseEntity<>(TableDataInfo.build(schBaseTaskconfigService.queryAll(whereJson,page)),HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
@Log("新增任务配置")
|
||||
|
||||
public ResponseEntity<Object> create(@Validated @RequestBody SchBaseTaskconfig entity){
|
||||
schBaseTaskconfigService.create(entity);
|
||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||
@@ -45,14 +43,12 @@ public class SchBaseTaskconfigController {
|
||||
|
||||
@PutMapping
|
||||
@Log("修改任务配置")
|
||||
|
||||
public ResponseEntity<Object> update(@Validated @RequestBody SchBaseTaskconfig entity){
|
||||
schBaseTaskconfigService.update(entity);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
@Log("删除任务配置")
|
||||
|
||||
@DeleteMapping
|
||||
public ResponseEntity<Object> delete(@RequestBody Set<String> ids) {
|
||||
schBaseTaskconfigService.deleteAll(ids);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.nl.wms.sch.task.service.dao;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
|
||||
@@ -23,7 +24,6 @@ public class SchBaseTask implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@TableId(value = "task_id", type = IdType.NONE)
|
||||
|
||||
private String task_id;
|
||||
|
||||
|
||||
@@ -102,7 +102,7 @@ public class SchBaseTask implements Serializable {
|
||||
private String remark;
|
||||
|
||||
|
||||
private String is_delete;
|
||||
private Boolean is_delete;
|
||||
|
||||
|
||||
private String create_id;
|
||||
@@ -132,4 +132,7 @@ public class SchBaseTask implements Serializable {
|
||||
|
||||
private String is_send;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String dtl_type;
|
||||
|
||||
}
|
||||
|
||||
@@ -64,21 +64,6 @@ public class SchBaseTaskconfigServiceImpl extends ServiceImpl<SchBaseTaskconfigM
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
String now = DateUtil.now();
|
||||
|
||||
if (ObjectUtil.isAllEmpty(entity.getStart_region_strs(), entity.getNext_region_strs()))
|
||||
throw new BadRequestException(LangProcess.msg("point_checkNull_1"));
|
||||
|
||||
if (ObjectUtil.isNotEmpty(entity.getStart_region_strs())) {
|
||||
// 起点区域配置
|
||||
String startRegion = String.join(",", entity.getStart_region_strs());
|
||||
entity.setStart_region_str(startRegion);
|
||||
}
|
||||
|
||||
if (ObjectUtil.isNotEmpty(entity.getNext_region_strs())) {
|
||||
// 终点区域配置
|
||||
String nextRegion = String.join(",", entity.getNext_region_strs());
|
||||
entity.setNext_region_str(nextRegion);
|
||||
}
|
||||
|
||||
entity.setConfig_id(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
entity.setCreate_id(currentUserId);
|
||||
entity.setCreate_name(nickName);
|
||||
|
||||
@@ -47,15 +47,13 @@ public abstract class AbstractTask {
|
||||
@Autowired
|
||||
private WmsToAcsService wmsToAcsService;
|
||||
|
||||
protected abstract List<AcsTaskDto> addTask();
|
||||
|
||||
/**
|
||||
* 任务创建
|
||||
* 根据配置生成任务,如并发控制等
|
||||
*
|
||||
* @throws BadRequestException /
|
||||
*/
|
||||
protected abstract void create() throws BadRequestException;
|
||||
public abstract void create() throws BadRequestException;
|
||||
|
||||
/**
|
||||
* 任务创建
|
||||
@@ -63,7 +61,7 @@ public abstract class AbstractTask {
|
||||
*
|
||||
* @param task /
|
||||
*/
|
||||
protected void createCompletion(SchBaseTask task) {
|
||||
public void createCompletion(SchBaseTask task) {
|
||||
}
|
||||
|
||||
|
||||
@@ -104,9 +102,9 @@ public abstract class AbstractTask {
|
||||
taskDto.setNext_device_code2(task.getPoint_code4());
|
||||
taskDto.setVehicle_code(task.getVehicle_code());
|
||||
taskDto.setVehicle_code2(task.getVehicle_code2());
|
||||
this.setTask(task.getConfig_code(), taskDto);
|
||||
// 如果各类方法对返回参数有不同,可以通过调用子类实现的deliveryBeforeProcessing方法来完成赋值,也可以是统一封装到参数值中。
|
||||
this.deliveryBeforeProcessing(task, taskDto);
|
||||
this.setTask(task.getConfig_code(), taskDto);
|
||||
list.add(taskDto);
|
||||
}
|
||||
try {
|
||||
@@ -163,7 +161,8 @@ public abstract class AbstractTask {
|
||||
|
||||
public void getAllFinishTask() {
|
||||
List<SchBaseTask> list = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
|
||||
.eq(SchBaseTask::getTask_status, TaskStatus.START_AND_POINT.getCode()));
|
||||
.eq(SchBaseTask::getTask_status, TaskStatus.START_AND_POINT.getCode())
|
||||
.eq(SchBaseTask::getIs_delete, false));
|
||||
if (ObjectUtil.isEmpty(list)) {
|
||||
return;
|
||||
}
|
||||
@@ -171,6 +170,11 @@ public abstract class AbstractTask {
|
||||
this.renotifyAcs(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新任务状态,暴露给外围使用
|
||||
* @param task_code 任务编码
|
||||
* @param status 状态
|
||||
*/
|
||||
public void updateTaskStatus(String task_code, TaskStatus status) {
|
||||
this.updateStatus(task_code, status);
|
||||
}
|
||||
@@ -255,15 +259,31 @@ public abstract class AbstractTask {
|
||||
// 申请任务
|
||||
SchBaseTask task = new SchBaseTask();
|
||||
// 请求点
|
||||
String apply_point_code = param.getString("device_code");
|
||||
String requestNo = param.getString("requestNo");
|
||||
String config_code = param.getString("config_code");
|
||||
|
||||
// 1、校验数据
|
||||
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
|
||||
.eq(SchBaseTaskconfig::getConfig_code, config_code));
|
||||
Assert.notNull(taskConfig, "找不到配置文件,请确认[" + config_code + "]配置是否存在!");
|
||||
// 最大任务数
|
||||
Integer tcmn = taskConfig.getTask_create_max_num();
|
||||
// 获取执行中的任务
|
||||
List<SchBaseTask> unFinishTasksByTaskConfig = taskService.findUnFinishTasksByTaskConfig(
|
||||
taskConfig.getConfig_code(), apply_point_code, taskConfig.getTask_direction());
|
||||
|
||||
Assert.isFalse(unFinishTasksByTaskConfig.size() >= tcmn,
|
||||
apply_point_code + "该点位申请的任务未完成数已超过上限,无法申请任务");
|
||||
String vehicleType = param.getString("vehicle_type");
|
||||
String vehicleCode = TaskUtils.defaultVehicleCode(param.getString("vehicle_code"));
|
||||
AbstractTask bean = SpringContextHolder.getBean(this.getClass());
|
||||
// 1、校验数据
|
||||
|
||||
// 2、创建申请任务
|
||||
task.setAcs_trace_id(requestNo);
|
||||
task.setTask_id(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
task.setTask_code(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
task.setConfig_code(config_code);
|
||||
task.setCreate_mode(ObjectUtil.isNotEmpty(param.getString("create_mode"))
|
||||
? param.getString("create_mode") : GeneralDefinition.ACS_CREATION);
|
||||
task.setVehicle_code(vehicleCode);
|
||||
@@ -281,7 +301,7 @@ public abstract class AbstractTask {
|
||||
TaskUtils.setCreateByAcsOrPda(task, param);
|
||||
// 3、判断是否直接找点下发
|
||||
// 立即创建吧组盘放到具体位置,免得重复创建
|
||||
if ("1".equals(param.getString("is_immediate_create"))) {
|
||||
if (taskConfig.getIs_immediate_create()) {
|
||||
bean.createCompletion(task);
|
||||
} else {
|
||||
// 不需要立即创建
|
||||
|
||||
@@ -138,4 +138,5 @@ public class AcsTaskDto {
|
||||
* 区域
|
||||
*/
|
||||
private String product_area;
|
||||
private String truss_type;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
package org.nl.wms.sch.task_manage.task;
|
||||
|
||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
import org.springframework.beans.BeansException;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.config.BeanPostProcessor;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -13,30 +15,29 @@ import java.util.Map;
|
||||
* @version 2.0
|
||||
* @date 2023年05月16日 16:42
|
||||
* @desc 采用获取注解来标识任务类型,并通过扫描和反射的方式来获取任务实例
|
||||
* 3.0 采用获取所有bean对象判断是否为AbstractTask
|
||||
*/
|
||||
@Component
|
||||
public class TaskFactory {
|
||||
public class TaskFactory implements BeanPostProcessor {
|
||||
private final Map<String, AbstractTask> taskMap;
|
||||
|
||||
@Autowired
|
||||
public TaskFactory(ApplicationContext applicationContext) {
|
||||
public TaskFactory() {
|
||||
taskMap = new HashMap<>();
|
||||
initializeTasks(applicationContext);
|
||||
}
|
||||
|
||||
private void initializeTasks(ApplicationContext applicationContext) {
|
||||
Map<String, Object> taskBeans = applicationContext.getBeansWithAnnotation(TaskType.class);
|
||||
for (Object taskBean : taskBeans.values()) {
|
||||
TaskType taskTypeAnnotation = taskBean.getClass().getAnnotation(TaskType.class);
|
||||
String taskType = taskTypeAnnotation.value();
|
||||
taskMap.put(taskType.toUpperCase(), (AbstractTask) taskBean);
|
||||
@Override
|
||||
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
|
||||
if (bean instanceof AbstractTask) {
|
||||
taskMap.put(beanName, (AbstractTask) bean);
|
||||
}
|
||||
return bean;
|
||||
}
|
||||
|
||||
public AbstractTask getTask(String taskType) {
|
||||
if (taskType == null) {
|
||||
return null;
|
||||
}
|
||||
return taskMap.get(taskType.toUpperCase());
|
||||
return taskMap.get(taskType);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
package org.nl.wms.sch.task_manage.task.second_floor_area;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.BooleanUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.alibaba.fastjson2.TypeReference;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
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;
|
||||
@@ -16,12 +16,13 @@ import org.nl.wms.sch.task_manage.AcsTaskDto;
|
||||
import org.nl.wms.sch.task_manage.enums.PackageInfoIvtEnum;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
import org.nl.wms.storage_manage.ios.enums.IOSEnum;
|
||||
import org.nl.wms.util.TaskUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
/**
|
||||
@@ -30,55 +31,39 @@ import java.util.List;
|
||||
* @author gbx
|
||||
* @since 2024-03-28
|
||||
*/
|
||||
@Service()
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
@Component(value = "CallEmpReelTask")
|
||||
public class CallEmpReelTask extends AbstractTask {
|
||||
|
||||
private final String THIS_CLASS = CallEmpReelTask.class.getName();
|
||||
@Resource
|
||||
private ISchBaseTaskService taskService;
|
||||
|
||||
|
||||
/**
|
||||
* 特殊操作
|
||||
* @param task LMS任务
|
||||
* @param acsTaskDto ACS任务
|
||||
*/
|
||||
@Override
|
||||
public List<AcsTaskDto> addTask() {
|
||||
ArrayList<AcsTaskDto> resultList = new ArrayList<>();
|
||||
List<SchBaseTask> taskList = taskService.list(new LambdaUpdateWrapper<SchBaseTask>().eq(SchBaseTask::getHandle_class, THIS_CLASS)
|
||||
.eq(SchBaseTask::getTask_status, TaskStatus.START_AND_POINT.getCode())
|
||||
.eq(SchBaseTask::getIs_delete, 0)
|
||||
);
|
||||
taskList.forEach(r -> {
|
||||
AcsTaskDto dto = AcsTaskDto.builder()
|
||||
.ext_task_uuid(r.getTask_id().toString())
|
||||
.task_code(r.getTask_code())
|
||||
.task_type(r.getAcs_task_type())
|
||||
.start_device_code(r.getPoint_code1())
|
||||
.next_device_code(r.getPoint_code2())
|
||||
.start_device_code2(r.getPoint_code3())
|
||||
.next_device_code2(r.getPoint_code4())
|
||||
.vehicle_code(r.getVehicle_code())
|
||||
.priority(r.getPriority())
|
||||
.remark(r.getRemark())
|
||||
.product_area(r.getProduct_area())
|
||||
//.agv_system_type(PackageInfoIvtEnum.AGV_SYSTEM_TYPE.code("1楼叉车系统"))
|
||||
//.truss_type(PackageInfoIvtEnum.TRUSS_TYPE.code("点对点任务"))
|
||||
//.dtl_type(r.getDtl_type())
|
||||
//.params(r.getParams())
|
||||
.build();
|
||||
resultList.add(dto);
|
||||
});
|
||||
return resultList;
|
||||
public void deliveryBeforeProcessing(SchBaseTask task, AcsTaskDto acsTaskDto) {
|
||||
acsTaskDto.setDtl_type(task.getDtl_type());
|
||||
acsTaskDto.setTruss_type(PackageInfoIvtEnum.TRUSS_TYPE.code("点对点任务"));
|
||||
acsTaskDto.setAgv_system_type(PackageInfoIvtEnum.AGV_SYSTEM_TYPE.code("1楼叉车系统"));
|
||||
acsTaskDto.setParams(JSON.parseObject(task.getRequest_param(),
|
||||
new TypeReference<Map<String, String>>() {}));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void create() throws BadRequestException {
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void create() throws BadRequestException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateTaskStatus(String task_code, TaskStatus status) {
|
||||
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>().eq(SchBaseTask::getTask_code, task_code), false);
|
||||
protected void updateStatus(String task_code, TaskStatus status) {
|
||||
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>()
|
||||
.eq(SchBaseTask::getTask_code, task_code), false);
|
||||
if (schBaseTask == null) {
|
||||
throw new BadRequestException("CallEmpReelTask任务更新接口任务号为空!");
|
||||
}
|
||||
@@ -98,17 +83,10 @@ public class CallEmpReelTask extends AbstractTask {
|
||||
throw new BadRequestException("CallEmpReelTask任务已执行不能取消");
|
||||
}
|
||||
// 更新任务表删除字段
|
||||
schBaseTask.setIs_delete(IOSEnum.IS_NOTANDYES.code("是"));
|
||||
schBaseTask.setIs_delete(true);
|
||||
}
|
||||
schBaseTask.setUpdate_time(DateUtil.now());
|
||||
schBaseTask.setUpdate_id(SecurityUtils.getCurrentUserId());
|
||||
schBaseTask.setUpdate_name(SecurityUtils.getCurrentNickName());
|
||||
taskService.update(schBaseTask);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateStatus(String task_code, TaskStatus status) {
|
||||
|
||||
TaskUtils.setUpdateByDefault(schBaseTask);
|
||||
taskService.updateById(schBaseTask);
|
||||
}
|
||||
|
||||
|
||||
@@ -133,16 +111,16 @@ public class CallEmpReelTask extends AbstractTask {
|
||||
}
|
||||
//是否立即下发
|
||||
boolean isSend = !StrUtil.isNotBlank(task.getIs_send()) || BooleanUtil.toBoolean(task.getIs_send());
|
||||
task.setTask_id(org.nl.common.utils.IdUtil.getStringId());
|
||||
task.setTask_code(org.nl.common.utils.IdUtil.getStringId());
|
||||
task.setTask_id(IdUtil.getSnowflake(1,1).nextIdStr());
|
||||
task.setTask_code(IdUtil.getSnowflake(1,1).nextIdStr());
|
||||
task.setHandle_class(THIS_CLASS);
|
||||
task.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
task.setCreate_name(SecurityUtils.getCurrentUsername());
|
||||
task.setCreate_time(DateUtil.now());
|
||||
task.setIs_send(isSend ? "1" : "0");
|
||||
task.setAcs_task_type(StrUtil.isEmpty(task.getAcs_task_type()) ? PackageInfoIvtEnum.ACS_TASK_TYPE.code("agv任务") : (task.getAcs_task_type()));
|
||||
task.setTask_status(StrUtil.isEmpty(task.getTask_status()) ? TaskStatus.START_AND_POINT.getCode() : task.getTask_status());
|
||||
task.setAcs_task_type(StrUtil.isEmpty(task.getAcs_task_type())
|
||||
? PackageInfoIvtEnum.ACS_TASK_TYPE.code("agv任务") : (task.getAcs_task_type()));
|
||||
task.setTask_status(StrUtil.isEmpty(task.getTask_status())
|
||||
? TaskStatus.START_AND_POINT.getCode() : task.getTask_status());
|
||||
task.setProduct_area(StrUtil.isEmpty(task.getProduct_area()) ? "A1" : task.getProduct_area());
|
||||
TaskUtils.setCreateByDefault(task);
|
||||
taskService.save(task);
|
||||
//如果目标点位没有空位先创建不下发
|
||||
if (isSend) {
|
||||
@@ -158,10 +136,8 @@ public class CallEmpReelTask extends AbstractTask {
|
||||
throw new BadRequestException("CallEmpReelTask任务强制完成接口任务号为空!");
|
||||
}
|
||||
schBaseTask.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
schBaseTask.setUpdate_time(DateUtil.now());
|
||||
schBaseTask.setUpdate_id(SecurityUtils.getCurrentUserId());
|
||||
schBaseTask.setUpdate_name(SecurityUtils.getCurrentNickName());
|
||||
taskService.update(schBaseTask);
|
||||
TaskUtils.setUpdateByDefault(schBaseTask);
|
||||
taskService.updateById(schBaseTask);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -172,10 +148,8 @@ public class CallEmpReelTask extends AbstractTask {
|
||||
throw new BadRequestException("CallEmpReelTask任务取消接口任务号为空!");
|
||||
}
|
||||
schBaseTask.setTask_status(IOSEnum.ACS_RESULT.code("取消"));
|
||||
schBaseTask.setUpdate_time(DateUtil.now());
|
||||
schBaseTask.setUpdate_id(SecurityUtils.getCurrentUserId());
|
||||
schBaseTask.setUpdate_name(SecurityUtils.getCurrentNickName());
|
||||
taskService.update(schBaseTask);
|
||||
TaskUtils.setUpdateByDefault(schBaseTask);
|
||||
taskService.updateById(schBaseTask);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -476,7 +476,7 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
|
||||
if (!taskDao.getTask_status().equals("20")) throw new BadRequestException("请检查任务状态!");
|
||||
|
||||
// 删除任务
|
||||
taskDao.setIs_delete(IOSEnum.IS_NOTANDYES.code("是"));
|
||||
taskDao.setIs_delete(true);
|
||||
iSchBaseTaskService.updateById(taskDao);
|
||||
|
||||
// 更新分配明细
|
||||
|
||||
@@ -34,6 +34,11 @@ public class TaskUtils {
|
||||
taskObj.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
taskObj.setCreate_time(DateUtil.now());
|
||||
}
|
||||
public static void setCreateByDefault(SchBaseTask taskObj) {
|
||||
taskObj.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
taskObj.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
taskObj.setCreate_time(DateUtil.now());
|
||||
}
|
||||
public static void setCreateByAcsOrPda(SchBaseTask taskObj, JSONObject param) {
|
||||
// 如果是人工创建,会带个用户过来
|
||||
if (ObjectUtil.isNotEmpty(param.getString("user_id"))) {
|
||||
@@ -54,6 +59,11 @@ public class TaskUtils {
|
||||
taskObj.setUpdate_name(SecurityUtils.getCurrentNickName());
|
||||
taskObj.setUpdate_time(DateUtil.now());
|
||||
}
|
||||
public static void setUpdateByDefault(SchBaseTask taskObj) {
|
||||
taskObj.setUpdate_id(SecurityUtils.getCurrentUserId());
|
||||
taskObj.setUpdate_name(SecurityUtils.getCurrentNickName());
|
||||
taskObj.setUpdate_time(DateUtil.now());
|
||||
}
|
||||
|
||||
public static void setGroupUpdateByAcs(SchBaseVehiclematerialgroup groupEntity) {
|
||||
groupEntity.setUpdate_id(GeneralDefinition.ACS_ID);
|
||||
|
||||
@@ -1,8 +1,13 @@
|
||||
package org.nl;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.alibaba.fastjson2.TypeReference;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 单元测试
|
||||
@@ -15,4 +20,22 @@ public class ApplicationTest {
|
||||
void contextLoads() {
|
||||
}
|
||||
|
||||
@Test
|
||||
void testJSONToMap() {
|
||||
JSONObject pa = new JSONObject();
|
||||
JSONObject pa2 = new JSONObject();
|
||||
pa2.put("a", 2);
|
||||
pa.put("name", "lyd");
|
||||
pa.put("age", pa2);
|
||||
String jsonString = pa.toJSONString();
|
||||
|
||||
// 使用Fastjson解析JSON字符串
|
||||
Map<String, String> map = JSON.parseObject(jsonString, new TypeReference<Map<String, String>>() {});
|
||||
|
||||
// 输出Map
|
||||
for (Map.Entry<String, String> entry : map.entrySet()) {
|
||||
System.out.println(entry.getKey() + " : " + entry.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -15,7 +15,8 @@ export default {
|
||||
'm1': 'Are you sure you want to force logout on this use?',
|
||||
'm2': 'Successful forced withdrawal!',
|
||||
'm3_1': 'Confirm the forcibly unselected',
|
||||
'm3_2': 'users?'
|
||||
'm3_2': 'users?',
|
||||
'm4': 'Fuzzy Search'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,7 +15,8 @@ export default {
|
||||
'm1': 'Apakah Anda yakin ingin memaksa logout pada penggunaan ini?',
|
||||
'm2': 'Penarikan paksa yang berhasil!',
|
||||
'm3_1': 'Konfirmasikan yang tidak dipilih secara paksa',
|
||||
'm3_2': 'pengguna?'
|
||||
'm3_2': 'pengguna?',
|
||||
'm4': 'Pencarian Kabur'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,7 +15,8 @@ export default {
|
||||
'm1': '确定强制退出该用户吗?',
|
||||
'm2': '强退成功!',
|
||||
'm3_1': '确认强退选中的',
|
||||
'm3_2': '个用户?'
|
||||
'm3_2': '个用户?',
|
||||
'm4': '模糊搜索'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,15 +34,10 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
title: '诺力开发平台',
|
||||
title: '印尼海亮LMS系统',
|
||||
logo: Logo,
|
||||
title_param: 'platform'
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getValueByCode(this.title_param).then(res => {
|
||||
this.title = res.value
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<div class="app-container">
|
||||
<div class="head-container">
|
||||
<div v-if="crud.props.searchToggle">
|
||||
<el-input v-model="query.filter" clearable size="mini" placeholder="全表模糊搜索" style="width: 200px;" class="filter-item" @keyup.enter.native="crud.toQuery" />
|
||||
<el-input v-model="query.filter" clearable size="mini" :placeholder="$t('Online.msg.m4')" style="width: 200px;" class="filter-item" @keyup.enter.native="crud.toQuery" />
|
||||
<rrOperation />
|
||||
</div>
|
||||
<crudOperation>
|
||||
@@ -63,7 +63,7 @@ import CRUD, { presenter, header, crud } from '@crud/crud'
|
||||
import rrOperation from '@crud/RR.operation'
|
||||
import crudOperation from '@crud/CRUD.operation'
|
||||
import pagination from '@crud/Pagination'
|
||||
import i18n from "@/i18n";
|
||||
import i18n from '@/i18n'
|
||||
|
||||
export default {
|
||||
name: 'OnlineUser',
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
<!--表单组件-->
|
||||
<el-dialog :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0" :title="crud.status.title" width="820px">
|
||||
<el-form ref="form" style="border: 1px solid #cfe0df;margin-top: 10px;padding-top: 10px;" :inline="true" :model="form" :rules="rules" size="mini" label-width="135px" label-suffix=":">
|
||||
<el-form-item label="所属车间">
|
||||
<el-form-item label="所属区域">
|
||||
<el-select
|
||||
v-model="form.workshop_code"
|
||||
placeholder="请选择"
|
||||
@@ -61,7 +61,7 @@
|
||||
<el-form-item label="配置名称">
|
||||
<el-input v-model="form.config_name" style="width: 240px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="任务取放类型">
|
||||
<el-form-item v-if="false" label="任务取放类型">
|
||||
<el-select
|
||||
v-model="form.task_qf_type"
|
||||
size="mini"
|
||||
@@ -75,11 +75,11 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="acs任务类型" prop="acs_task_type">
|
||||
<el-form-item label="ACS任务类型" prop="acs_task_type">
|
||||
<el-select
|
||||
v-model="form.acs_task_type"
|
||||
size="mini"
|
||||
placeholder="acs任务类型"
|
||||
placeholder="ACS任务类型"
|
||||
style="width: 240px;"
|
||||
>
|
||||
<el-option
|
||||
@@ -114,6 +114,18 @@
|
||||
style="width: 240px;"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否立即创建">
|
||||
<el-radio-group v-model="form.is_immediate_create" style="width: 240px">
|
||||
<el-radio :label="true">是</el-radio>
|
||||
<el-radio :label="false">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否自动下发">
|
||||
<el-radio-group v-model="form.is_auto_issue" style="width: 240px">
|
||||
<el-radio :label="true">是</el-radio>
|
||||
<el-radio :label="false">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="任务生成数上限" prop="task_create_max_num">
|
||||
<el-input-number
|
||||
v-model.number="form.task_create_max_num"
|
||||
@@ -122,12 +134,6 @@
|
||||
style="width: 240px;"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否自动下发">
|
||||
<el-radio-group v-model="form.is_auto_issue" style="width: 240px">
|
||||
<el-radio :label="true">是</el-radio>
|
||||
<el-radio :label="false">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="任务下发数上限" prop="task_issue_max_num">
|
||||
<el-input-number
|
||||
v-model.number="form.task_issue_max_num"
|
||||
@@ -136,33 +142,13 @@
|
||||
style="width: 240px;"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="起点区域">
|
||||
<el-select v-model="form.start_region_strs" multiple placeholder="请选择" style="width: 240px;">
|
||||
<el-option
|
||||
v-for="item in regionList"
|
||||
:key="item.region_code"
|
||||
:label="item.region_name"
|
||||
:value="item.region_code"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="终点区域">
|
||||
<el-select v-model="form.next_region_strs" multiple placeholder="请选择" style="width: 240px;">
|
||||
<el-option
|
||||
v-for="item in regionList"
|
||||
:key="item.region_code"
|
||||
:label="item.region_name"
|
||||
:value="item.region_code"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="起点前缀">
|
||||
<el-input v-model="form.start_point_pre" style="width: 240px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="终点前缀">
|
||||
<el-input v-model="form.next_region_pre" style="width: 240px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="任务方向" prop="task_direction">
|
||||
<el-form-item v-if="false" label="任务方向" prop="task_direction">
|
||||
<el-select
|
||||
v-model="form.task_direction"
|
||||
size="mini"
|
||||
@@ -176,83 +162,15 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否校验工单">
|
||||
<el-radio-group v-model="form.is_check_workorder" style="width: 240px">
|
||||
<el-radio :label="true">是</el-radio>
|
||||
<el-radio :label="false">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否判断起点锁">
|
||||
<el-radio-group v-model="form.is_check_start_lock" style="width: 240px">
|
||||
<el-radio :label="true">是</el-radio>
|
||||
<el-radio :label="false">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否立即创建">
|
||||
<el-radio-group v-model="form.is_immediate_create" style="width: 240px">
|
||||
<el-radio :label="true">是</el-radio>
|
||||
<el-radio :label="false">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否判断终点锁">
|
||||
<el-radio-group v-model="form.is_check_next_lock" style="width: 240px">
|
||||
<el-radio :label="true">是</el-radio>
|
||||
<el-radio :label="false">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否起点自动">
|
||||
<el-radio-group v-model="form.is_start_auto" style="width: 240px">
|
||||
<el-radio :label="true">是</el-radio>
|
||||
<el-radio :label="false">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否终点自动">
|
||||
<el-radio-group v-model="form.is_next_auto" style="width: 240px">
|
||||
<el-radio :label="true">是</el-radio>
|
||||
<el-radio :label="false">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否锁定起点">
|
||||
<el-radio-group v-model="form.is_lock_start" style="width: 240px">
|
||||
<el-radio :label="true">是</el-radio>
|
||||
<el-radio :label="false">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否锁定终点">
|
||||
<el-radio-group v-model="form.is_lock_next" style="width: 240px">
|
||||
<el-radio :label="true">是</el-radio>
|
||||
<el-radio :label="false">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="false" label="生成任务的请求参数">
|
||||
<el-input v-model="form.request_param" style="width: 240px;" />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="false" label="下发任务的请求参数">
|
||||
<el-input v-model="form.response_param" style="width: 240px;" />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="false" label="是否按组控制下发顺序">
|
||||
<el-radio-group v-model="form.is_group_congrol_issue_seq" style="width: 240px">
|
||||
<el-radio :label="true">是</el-radio>
|
||||
<el-radio :label="false">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="路由编码" prop="route_plan_code">
|
||||
<el-input v-model="form.route_plan_code" style="width: 240px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="未完成通知时间" prop="unfinish_notify_time">
|
||||
<el-input-number
|
||||
v-model.number="form.unfinish_notify_time"
|
||||
:min="0"
|
||||
:max="999"
|
||||
style="width: 240px;"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="false" label="sql配置">
|
||||
<el-input v-model="form.sql_param" style="width: 240px;" />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="false" label="车间编码">
|
||||
<el-input v-model="form.workshop_code" style="width: 240px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<label slot="label">备 注:</label>
|
||||
<el-input v-model.trim="form.remark" style="width: 480px;" rows="2" type="textarea" :disabled="crud.status.view > 0" />
|
||||
@@ -279,7 +197,7 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="task_name" label="任务名字" :min-width="flexWidth('task_name',crud.data,'任务名字')" />
|
||||
<el-table-column prop="task_type" label="任务类型" :min-width="flexWidth('task_type',crud.data,'任务类型', 20)" >
|
||||
<el-table-column prop="task_type" label="任务类型" :min-width="flexWidth('task_type',crud.data,'任务类型', 20)">
|
||||
<template slot-scope="scope">
|
||||
{{ dict.label.task_type[scope.row.task_type] }}
|
||||
</template>
|
||||
@@ -292,30 +210,30 @@
|
||||
{{ scope.row.is_auto_issue?'是':'否' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="start_region_str" label="起点区域" :min-width="flexWidth('start_region_str',crud.data,'起点区域')">
|
||||
<el-table-column v-if="false" prop="start_region_str" label="起点区域" :min-width="flexWidth('start_region_str',crud.data,'起点区域')">
|
||||
<template slot-scope="scope">
|
||||
{{ getRegionNames(scope.row.start_region_str) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="next_region_str" label="终点区域" :min-width="flexWidth('next_region_str',crud.data,'终点区域')">
|
||||
<el-table-column v-if="false" prop="next_region_str" label="终点区域" :min-width="flexWidth('next_region_str',crud.data,'终点区域')">
|
||||
<template slot-scope="scope">
|
||||
{{ getRegionNames(scope.row.next_region_str) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="start_point_pre" label="起点前缀" :min-width="flexWidth('start_point_pre',crud.data,'起点前缀')" />
|
||||
<el-table-column prop="next_region_pre" label="终点前缀" :min-width="flexWidth('next_region_pre',crud.data,'终点前缀')" />
|
||||
<el-table-column prop="route_plan_code" label="路由编码" :min-width="flexWidth('route_plan_code',crud.data,'终点前缀')" />
|
||||
<el-table-column prop="task_direction" label="任务方向" :min-width="flexWidth('task_direction',crud.data,'终点前缀')" >
|
||||
<el-table-column v-if="false" prop="route_plan_code" label="路由编码" :min-width="flexWidth('route_plan_code',crud.data,'终点前缀')" />
|
||||
<el-table-column v-if="false" prop="task_direction" label="任务方向" :min-width="flexWidth('task_direction',crud.data,'终点前缀')">
|
||||
<template slot-scope="scope">
|
||||
{{ dict.label.task_direction[scope.row.task_direction] }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="is_check_workorder" label="是否校验工单" :min-width="flexWidth('is_check_workorder',crud.data,'是否校验工单')">
|
||||
<el-table-column v-if="false" prop="is_check_workorder" label="是否校验工单" :min-width="flexWidth('is_check_workorder',crud.data,'是否校验工单')">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.is_check_workorder?'是':'否' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="is_check_start_lock" label="是否判断起点锁" :min-width="flexWidth('is_check_start_lock',crud.data,'是否判断起点锁')">
|
||||
<el-table-column v-if="false" prop="is_check_start_lock" label="是否判断起点锁" :min-width="flexWidth('is_check_start_lock',crud.data,'是否判断起点锁')">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.is_check_start_lock?'是':'否' }}
|
||||
</template>
|
||||
@@ -325,27 +243,27 @@
|
||||
{{ scope.row.is_immediate_create?'是':'否' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="is_check_next_lock" label="是否判断终点锁" :min-width="flexWidth('is_check_next_lock',crud.data,'是否判断终点锁')">
|
||||
<el-table-column v-if="false" prop="is_check_next_lock" label="是否判断终点锁" :min-width="flexWidth('is_check_next_lock',crud.data,'是否判断终点锁')">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.is_check_next_lock?'是':'否' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="is_start_auto" label="是否起点自动" :min-width="flexWidth('is_start_auto',crud.data,'是否起点自动')">
|
||||
<el-table-column v-if="false" prop="is_start_auto" label="是否起点自动" :min-width="flexWidth('is_start_auto',crud.data,'是否起点自动')">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.is_start_auto?'是':'否' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="is_next_auto" label="是否终点自动" :min-width="flexWidth('is_next_auto',crud.data,'是否终点自动')">
|
||||
<el-table-column v-if="false" prop="is_next_auto" label="是否终点自动" :min-width="flexWidth('is_next_auto',crud.data,'是否终点自动')">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.is_next_auto?'是':'否' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="is_lock_start" label="是否锁定起点" :min-width="flexWidth('is_lock_start',crud.data,'是否锁定起点')">
|
||||
<el-table-column v-if="false" prop="is_lock_start" label="是否锁定起点" :min-width="flexWidth('is_lock_start',crud.data,'是否锁定起点')">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.is_lock_start?'是':'否' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="is_lock_next" label="是否锁定终点" :min-width="flexWidth('is_lock_next',crud.data,'是否锁定终点')">
|
||||
<el-table-column v-if="false" prop="is_lock_next" label="是否锁定终点" :min-width="flexWidth('is_lock_next',crud.data,'是否锁定终点')">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.is_lock_next?'是':'否' }}
|
||||
</template>
|
||||
|
||||
Reference in New Issue
Block a user