add: 案例
This commit is contained in:
Binary file not shown.
@@ -49,7 +49,7 @@ public class SecurityUtils {
|
||||
* @return 系统用户名称
|
||||
*/
|
||||
public static String getCurrentNickName() {
|
||||
return getCurrentUser().getPresonName();
|
||||
return getCurrentUser().getPreson_name();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -22,7 +22,7 @@ public class CurrentUser implements Serializable {
|
||||
//账号
|
||||
private String username;
|
||||
//姓名
|
||||
private String presonName;
|
||||
private String preson_name;
|
||||
|
||||
//用户详细信息
|
||||
private SysUser user;
|
||||
|
||||
@@ -168,7 +168,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
|
||||
dept.setDept_id(IdUtil.getStringId());
|
||||
CurrentUser user = SecurityUtils.getCurrentUser();
|
||||
dept.setCreate_id(user.getId());
|
||||
dept.setCreate_name(user.getPresonName());
|
||||
dept.setCreate_name(user.getPreson_name());
|
||||
dept.setCreate_time(new Date());
|
||||
this.save(dept);
|
||||
// 清理缓存
|
||||
|
||||
@@ -244,7 +244,7 @@ public class OnlineUserService {
|
||||
CurrentUser user = new CurrentUser();
|
||||
user.setId(userInfo.getUser_id());
|
||||
user.setUsername(userInfo.getUsername());
|
||||
user.setPresonName((userInfo.getPerson_name()));
|
||||
user.setPreson_name((userInfo.getPerson_name()));
|
||||
user.setUser(userInfo);
|
||||
user.setPermissions(permissionList);
|
||||
|
||||
|
||||
@@ -8,28 +8,33 @@ import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* @description /
|
||||
* @author lyd
|
||||
* @date 2023-05-16
|
||||
**/
|
||||
* @author lyd
|
||||
* @description /
|
||||
* @date 2023-05-16
|
||||
**/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@TableName("sch_base_vehiclematerialgroup")
|
||||
public class SchBaseVehiclematerialgroup implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
@TableId(value = "group_id", type = IdType.NONE)
|
||||
@ApiModelProperty(value = "组盘标识")
|
||||
private String group_id;
|
||||
|
||||
@TableId(value = "vehicle_code", type = IdType.NONE)
|
||||
@ApiModelProperty(value = "载具编码")
|
||||
private String vehicle_code;
|
||||
|
||||
@ApiModelProperty(value = "物料标识")
|
||||
private String material_id;
|
||||
|
||||
@ApiModelProperty(value = "载具类型")
|
||||
private String vehicle_type;
|
||||
|
||||
|
||||
@ApiModelProperty(value = "子载具编码")
|
||||
private String child_vehicle_code;
|
||||
|
||||
@@ -52,10 +57,10 @@ public class SchBaseVehiclematerialgroup implements Serializable {
|
||||
private String instorage_time;
|
||||
|
||||
@ApiModelProperty(value = "静置时间(分钟)")
|
||||
private BigDecimal standing_time;
|
||||
private Integer standing_time;
|
||||
|
||||
@ApiModelProperty(value = "物料数量")
|
||||
private BigDecimal material_qty;
|
||||
private Integer material_qty;
|
||||
|
||||
@ApiModelProperty(value = "物料重量")
|
||||
private BigDecimal material_weight;
|
||||
@@ -64,7 +69,7 @@ public class SchBaseVehiclematerialgroup implements Serializable {
|
||||
private String workorder_code;
|
||||
|
||||
@ApiModelProperty(value = "组盘次数")
|
||||
private BigDecimal group_number;
|
||||
private Integer group_number;
|
||||
|
||||
@ApiModelProperty(value = "任务编码")
|
||||
private String task_code;
|
||||
@@ -108,6 +113,9 @@ public class SchBaseVehiclematerialgroup implements Serializable {
|
||||
@ApiModelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
@ApiModelProperty(value = "1:待绑定,2:已绑定,3:已解绑")
|
||||
private String group_bind_material_status;
|
||||
|
||||
@ApiModelProperty(value = "是否删除")
|
||||
private Boolean is_delete;
|
||||
|
||||
@@ -129,6 +137,7 @@ public class SchBaseVehiclematerialgroup implements Serializable {
|
||||
@ApiModelProperty(value = "修改时间")
|
||||
private String update_time;
|
||||
|
||||
|
||||
@TableField(exist = false)
|
||||
private String material_name;
|
||||
@TableField(exist = false)
|
||||
|
||||
@@ -12,6 +12,9 @@ import java.io.Serializable;
|
||||
@Data
|
||||
public class SchBaseVehiclematerialgroupDto implements Serializable {
|
||||
|
||||
/** 组盘id */
|
||||
private String group_id;
|
||||
|
||||
/** 载具编码 */
|
||||
private String vehicle_code;
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ package org.nl.wms.sch.group.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
@@ -41,15 +42,11 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
|
||||
|
||||
@Override
|
||||
public void create(SchBaseVehiclematerialgroup entity) {
|
||||
SchBaseVehiclematerialgroup schBaseVehiclematerialgroup = vehiclematerialgroupMapper.selectOne(new LambdaQueryWrapper<SchBaseVehiclematerialgroup>()
|
||||
.eq(SchBaseVehiclematerialgroup::getVehicle_code, entity.getVehicle_code())
|
||||
.eq(SchBaseVehiclematerialgroup::getIs_delete, false));
|
||||
Assert.isNull(schBaseVehiclematerialgroup, "载具编码[" + entity.getVehicle_code() + "]已存在");
|
||||
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
String now = DateUtil.now();
|
||||
|
||||
entity.setGroup_id(IdUtil.getSnowflake(1,1).nextIdStr());
|
||||
entity.setCreate_id(currentUserId);
|
||||
entity.setCreate_name(nickName);
|
||||
entity.setCreate_time(now);
|
||||
@@ -61,16 +58,12 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
|
||||
|
||||
@Override
|
||||
public void update(SchBaseVehiclematerialgroup entity) {
|
||||
SchBaseVehiclematerialgroup dto = vehiclematerialgroupMapper.selectById(entity.getVehicle_code());
|
||||
if (dto == null) throw new BadRequestException("被删除或无权限,操作失败!");
|
||||
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
String now = DateUtil.now();
|
||||
entity.setUpdate_id(currentUserId);
|
||||
entity.setUpdate_name(nickName);
|
||||
entity.setUpdate_time(now);
|
||||
|
||||
vehiclematerialgroupMapper.updateById(entity);
|
||||
}
|
||||
|
||||
|
||||
@@ -13,15 +13,14 @@ import org.nl.common.enums.wms.PointStatusEnum;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||
import org.nl.wms.sch.point.service.dao.mapper.SchBasePointMapper;
|
||||
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch.point.service.dao.mapper.SchBasePointMapper;
|
||||
import org.nl.wms.sch.region.service.dao.SchBaseRegion;
|
||||
import org.nl.wms.sch.region.service.dao.mapper.SchBaseRegionMapper;
|
||||
import org.nl.wms.utils.PointUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -51,6 +50,7 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
|
||||
String point_type = ObjectUtil.isNotEmpty(whereJson.get("point_type")) ? whereJson.get("point_type").toString() : null;
|
||||
String point_status = ObjectUtil.isNotEmpty(whereJson.get("point_status")) ? whereJson.get("point_status").toString() : null;
|
||||
Boolean is_used = ObjectUtil.isNotEmpty(whereJson.get("is_used")) ? Boolean.valueOf(whereJson.get("is_used").toString()) : null;
|
||||
Boolean lock_type = ObjectUtil.isNotEmpty(whereJson.get("lock_type")) ? Boolean.valueOf(whereJson.get("lock_type").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))
|
||||
@@ -58,7 +58,12 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
|
||||
.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);
|
||||
.eq(ObjectUtil.isNotEmpty(is_used), SchBasePoint::getIs_used, is_used)
|
||||
.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, ""));
|
||||
IPage<SchBasePoint> pages = new Page<>(page.getPage() + 1, page.getSize());
|
||||
pointMapper.selectPage(pages, lam);
|
||||
// 可以存放的载具类型
|
||||
@@ -122,8 +127,10 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
|
||||
entity.setUpdate_id(currentUserId);
|
||||
entity.setUpdate_name(nickName);
|
||||
entity.setUpdate_time(now);
|
||||
String can_vehicle_type = String.join(",", entity.getCan_vehicle_types());
|
||||
entity.setCan_vehicle_type(can_vehicle_type);
|
||||
if (ObjectUtil.isNotEmpty(entity.getCan_vehicle_types())) {
|
||||
String can_vehicle_type = String.join(",", entity.getCan_vehicle_types());
|
||||
entity.setCan_vehicle_type(can_vehicle_type);
|
||||
}
|
||||
String pointStatus = entity.getPoint_status();
|
||||
// 根据点位状态来判断更新内容
|
||||
if (ObjectUtil.isNotEmpty(pointStatus) && pointStatus.equals(PointStatusEnum.EMPTY_PLACE.getValue())) {
|
||||
|
||||
@@ -68,6 +68,15 @@ public class SchBaseTaskController {
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@GetMapping("/taskStatusList")
|
||||
@Log("任务状态下拉框")
|
||||
@ApiOperation("任务状态下拉框")
|
||||
@SaIgnore
|
||||
//@SaCheckPermission("@el.check('schBaseTask:list')")
|
||||
public ResponseEntity<Object> getTaskStatusList(){
|
||||
return new ResponseEntity<>(TableDataInfo.build(schBaseTaskService.getTaskStatusList()),HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/apply")
|
||||
@Log("新增任务管理")
|
||||
@ApiOperation("新增任务管理")
|
||||
@@ -78,4 +87,13 @@ public class SchBaseTaskController {
|
||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||
}
|
||||
|
||||
@PutMapping("/operation")
|
||||
@Log("任务操作")
|
||||
@ApiOperation("任务操作")
|
||||
//@SaCheckPermission("task:edit")
|
||||
public ResponseEntity<Object> update(@RequestBody Map<String, Object> map) {
|
||||
schBaseTaskService.operation(map);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.nl.wms.sch.task.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
@@ -67,6 +68,15 @@ public interface ISchBaseTaskService extends IService<SchBaseTask> {
|
||||
*/
|
||||
List<SchBaseTask> findUnFinishTasksByTaskConfig(String config_code, String task_code);
|
||||
|
||||
/**
|
||||
* 根据任务配置查询同台设备未完成的任务列表
|
||||
*
|
||||
* @param config_code 任务配置
|
||||
* @param device_code 设备
|
||||
* @return
|
||||
*/
|
||||
List<SchBaseTask> findUnFinishTasksByTaskConfig(String config_code, String device_code, String direction);
|
||||
|
||||
|
||||
List<SchBaseTask> findTasksByTaskStatus(String config_code, TaskStatus status);
|
||||
|
||||
@@ -76,4 +86,17 @@ public interface ISchBaseTaskService extends IService<SchBaseTask> {
|
||||
* @param param /
|
||||
*/
|
||||
void apply(JSONObject param);
|
||||
|
||||
/**
|
||||
* 获取任务状态下拉框
|
||||
* @return
|
||||
*/
|
||||
JSONArray getTaskStatusList();
|
||||
|
||||
/**
|
||||
* 任务操作
|
||||
*
|
||||
* @param param
|
||||
*/
|
||||
void operation(Map<String, Object> param);
|
||||
}
|
||||
|
||||
@@ -43,6 +43,9 @@ public class SchBaseTaskconfig implements Serializable {
|
||||
@ApiModelProperty(value = "任务类型")
|
||||
private String task_type;
|
||||
|
||||
@ApiModelProperty(value = "任务方向")
|
||||
private String task_direction;
|
||||
|
||||
@ApiModelProperty(value = "优先级")
|
||||
private String priority;
|
||||
|
||||
|
||||
@@ -33,6 +33,9 @@ public class SchBaseTaskconfigDto implements Serializable {
|
||||
/** 优先级 */
|
||||
private String priority;
|
||||
|
||||
/** 任务方向 **/
|
||||
private String task_direction;
|
||||
|
||||
/** 允许最大任务生成数 */
|
||||
private Integer task_create_max_num;
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
@@ -14,8 +15,8 @@ import org.nl.common.domain.query.PageQuery;
|
||||
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.mapper.SchBaseTaskMapper;
|
||||
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.service.dao.mapper.SchBaseTaskconfigMapper;
|
||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
import org.nl.wms.sch.task_manage.task.TaskFactory;
|
||||
@@ -23,9 +24,11 @@ import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author lyd
|
||||
@@ -41,6 +44,9 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
@Autowired
|
||||
private SchBaseTaskconfigMapper schBaseTaskconfigMapper;
|
||||
|
||||
@Autowired
|
||||
private TaskFactory taskFactory;
|
||||
|
||||
@Override
|
||||
public IPage<SchBaseTask> queryAll(Map whereJson, PageQuery page) {
|
||||
String task_code = ObjectUtil.isNotEmpty(whereJson.get("task_code")) ? whereJson.get("task_code").toString() : null;
|
||||
@@ -48,12 +54,16 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
String point_code = ObjectUtil.isNotEmpty(whereJson.get("point_code")) ? whereJson.get("point_code").toString() : null;
|
||||
String begin_time = ObjectUtil.isNotEmpty(whereJson.get("begin_time")) ? whereJson.get("begin_time").toString() : null;
|
||||
String end_time = ObjectUtil.isNotEmpty(whereJson.get("end_time")) ? whereJson.get("end_time").toString() : null;
|
||||
String more_task_status = ObjectUtil.isNotEmpty(whereJson.get("more_task_status")) ? whereJson.get("more_task_status").toString() : null;
|
||||
List<String> collect = ObjectUtil.isNotEmpty(more_task_status)?Arrays.stream(more_task_status.split(",")).collect(Collectors.toList()):null;
|
||||
LambdaQueryWrapper<SchBaseTask> lam = new LambdaQueryWrapper<>();
|
||||
lam.eq(ObjectUtil.isNotEmpty(task_code), SchBaseTask::getTask_code, task_code)
|
||||
.eq(ObjectUtil.isNotEmpty(vehicle_code), SchBaseTask::getVehicle_code, vehicle_code)
|
||||
.eq(ObjectUtil.isNotEmpty(point_code), SchBaseTask::getPoint_code1, point_code)
|
||||
.ge(ObjectUtil.isNotEmpty(begin_time), SchBaseTask::getCreate_time, begin_time)
|
||||
.le(ObjectUtil.isNotEmpty(end_time), SchBaseTask::getCreate_time, end_time);
|
||||
.le(ObjectUtil.isNotEmpty(end_time), SchBaseTask::getCreate_time, end_time)
|
||||
.in(ObjectUtil.isNotEmpty(collect), SchBaseTask::getTask_status, collect)
|
||||
.orderByDesc(SchBaseTask::getUpdate_time);
|
||||
IPage<SchBaseTask> pages = new Page<>(page.getPage() + 1, page.getSize());
|
||||
schBaseTaskMapper.selectPage(pages, lam);
|
||||
return pages;
|
||||
@@ -104,6 +114,19 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
return schBaseTasks;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SchBaseTask> findUnFinishTasksByTaskConfig(String config_code, String device_code, String direction) {
|
||||
Assert.notNull(config_code, "任务配置编码不能为空!");
|
||||
LambdaQueryWrapper<SchBaseTask> lam = new LambdaQueryWrapper<>();
|
||||
lam.eq(SchBaseTask::getConfig_code, config_code)
|
||||
.lt(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode())
|
||||
.eq(direction.equals("1"), SchBaseTask::getPoint_code1, device_code)
|
||||
.eq(direction.equals("2"), SchBaseTask::getPoint_code2, device_code)
|
||||
.eq(SchBaseTask::getIs_delete, false);
|
||||
List<SchBaseTask> schBaseTasks = schBaseTaskMapper.selectList(lam);
|
||||
return schBaseTasks;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SchBaseTask> findTasksByTaskStatus(String config_code, TaskStatus status) {
|
||||
Assert.notNull(config_code, "任务配置编码不能为空!");
|
||||
@@ -121,7 +144,6 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
String now = DateUtil.now();
|
||||
// if (ObjectUtil.isEmpty(entity.getTask_status())) throw new BadRequestException("任务状态不能为空!");
|
||||
Assert.notNull(entity.getTask_status(), "任务状态不能为空!");
|
||||
|
||||
entity.setTask_code(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
@@ -137,18 +159,74 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
|
||||
@Override
|
||||
public void apply(JSONObject param) {
|
||||
String device_code = "123";
|
||||
String type = "123";
|
||||
String vehicle_code = "123";
|
||||
|
||||
/**
|
||||
* 参数:设备编号(确定的点), 任务类型, 载具编码
|
||||
*/
|
||||
String device_code = ObjectUtil.isNotEmpty(param.getString("device_code")) ? param.getString("device_code") : null;
|
||||
String type = ObjectUtil.isNotEmpty(param.getString("type")) ? param.getString("type") : null;
|
||||
String vehicle_code = ObjectUtil.isNotEmpty(param.getString("vehicle_code")) ? param.getString("vehicle_code") : null;
|
||||
String vehicle_qty = ObjectUtil.isNotEmpty(param.getString("vehicle_qty")) ? param.getString("vehicle_qty") : null;
|
||||
// 校验设备编码
|
||||
if (ObjectUtil.isEmpty(device_code)) {
|
||||
throw new BadRequestException("设备编码不能为空!");
|
||||
}
|
||||
//1、如果是送料,检测载具状态
|
||||
if (type.equals("1") && ObjectUtil.isEmpty(vehicle_code)) {
|
||||
throw new BadRequestException("载具编码不能为空!");
|
||||
}
|
||||
//2、送空载具
|
||||
//...
|
||||
//3、叫料
|
||||
//...
|
||||
//4、叫空载具
|
||||
TaskFactory taskFactory = new TaskFactory();
|
||||
AbstractTask task = taskFactory.getTask("HNMLTask");
|
||||
//
|
||||
//...
|
||||
AbstractTask task = taskFactory.getTask("YZQLTask");
|
||||
// 执行创建任务
|
||||
task.apply(param);
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONArray getTaskStatusList() {
|
||||
TaskStatus[] values = TaskStatus.values();
|
||||
JSONArray arr = new JSONArray();
|
||||
for (TaskStatus value : values) {
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("code", value.getCode());
|
||||
json.put("name", value.getName());
|
||||
arr.add(json);
|
||||
}
|
||||
return arr;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void operation(Map<String, Object> param) {
|
||||
String task_code = ObjectUtil.isNotEmpty(param.get("task_code")) ? param.get("task_code").toString() : null;
|
||||
String method_name = ObjectUtil.isNotEmpty(param.get("method_name")) ? param.get("method_name").toString() : null;
|
||||
// 根据标识找到任务
|
||||
SchBaseTask taskOne = schBaseTaskMapper.selectById(task_code);
|
||||
if (Integer.parseInt(taskOne.getTask_status()) >= Integer.parseInt(TaskStatus.FINISHED.getCode())) {
|
||||
throw new BadRequestException("任务已完成或已取消!");
|
||||
}
|
||||
// 根据配置去工厂类获得类对象
|
||||
String processing_class = "YZQLTask";
|
||||
String message = "";
|
||||
// 根据任务类型获取对应的任务操作类
|
||||
AbstractTask abstractTask = taskFactory.getTask(processing_class);
|
||||
// 调用每个任务类的method_name()强制结束方法
|
||||
JSONObject result;
|
||||
switch (method_name) {
|
||||
case "immediateNotifyAcs":
|
||||
//
|
||||
break;
|
||||
case "forceFinish": // 强制完成
|
||||
abstractTask.forceFinish(task_code);
|
||||
break;
|
||||
case "cancel":
|
||||
abstractTask.cancel(task_code);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,18 +1,24 @@
|
||||
package org.nl.wms.sch.task_manage;
|
||||
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.pdm.service.IPdmBdWorkorderService;
|
||||
import org.nl.wms.pdm.service.dao.PdmBdWorkorder;
|
||||
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.ISchBaseTaskconfigService;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
|
||||
import org.nl.wms.sch.task.service.impl.SchBaseTaskServiceImpl;
|
||||
import org.nl.wms.sch.task.service.impl.SchBaseTaskconfigServiceImpl;
|
||||
import org.nl.wms.sch.task_manage.enums.TaskDirectionEnum;
|
||||
import org.nl.wms.sch.task_manage.task.AcsUtil;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -23,16 +29,22 @@ import java.util.List;
|
||||
* @date 2023年05月16日 16:42
|
||||
* @desc desc
|
||||
*/
|
||||
|
||||
@Component
|
||||
public abstract class AbstractTask {
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
@Autowired
|
||||
private ISchBaseTaskconfigService taskConfigService;
|
||||
@Autowired
|
||||
private ISchBasePointService pointService;
|
||||
@Autowired
|
||||
private IPdmBdWorkorderService workorderService;
|
||||
|
||||
/**
|
||||
* 任务创建
|
||||
* 根据配置生成任务,如并发控制等
|
||||
*/
|
||||
protected abstract void create();
|
||||
protected abstract void create() throws BadRequestException;
|
||||
|
||||
/**
|
||||
* 下发
|
||||
@@ -116,7 +128,7 @@ public abstract class AbstractTask {
|
||||
}
|
||||
|
||||
private AcsTaskDto setTask(String config_code, AcsTaskDto taskDto) {
|
||||
SchBaseTaskconfig taskConfig = SpringContextHolder.getBean(SchBaseTaskconfigServiceImpl.class).getById(config_code);
|
||||
SchBaseTaskconfig taskConfig = taskConfigService.getById(config_code);
|
||||
taskDto.setPriority(taskConfig.getPriority());
|
||||
taskDto.setTask_type(taskConfig.getAcs_task_type());
|
||||
taskDto.setRoute_plan_code("normal");
|
||||
@@ -140,7 +152,7 @@ public abstract class AbstractTask {
|
||||
|
||||
}
|
||||
|
||||
protected abstract void updateStatus(String config_code, TaskStatus status);
|
||||
protected abstract void updateStatus(String task_code, TaskStatus status);
|
||||
|
||||
/**
|
||||
* 寻找合适的点位
|
||||
@@ -150,34 +162,98 @@ public abstract class AbstractTask {
|
||||
protected abstract List<Object> findPoints();
|
||||
|
||||
|
||||
public void apply(JSONObject param) {
|
||||
String point_code = "";
|
||||
String config_code = "HNMLTask";
|
||||
//1、校验数据
|
||||
SchBaseTaskconfig taskConfig = SpringContextHolder.getBean(SchBaseTaskconfigServiceImpl.class).getById(config_code);
|
||||
Integer tcmn = taskConfig.getTask_create_max_num();
|
||||
SchBaseTaskServiceImpl taskService = SpringContextHolder.getBean(SchBaseTaskServiceImpl.class);
|
||||
List<SchBaseTask> unFinishTasksByTaskConfig = taskService.findUnFinishTasksByTaskConfig(taskConfig.getConfig_code());
|
||||
|
||||
Assert.isFalse(unFinishTasksByTaskConfig.size() > tcmn, "该点位申请的任务未完成数已超过上限,无法申请任务");
|
||||
|
||||
|
||||
SchBaseTask task = new SchBaseTask();
|
||||
task.setAcs_trace_id("");
|
||||
task.setConfig_code(config_code);
|
||||
task.setCreate_id("");
|
||||
task.setCreate_mode("");
|
||||
task.setPoint_code1("");
|
||||
task.setVehicle_code("");
|
||||
task.setTask_status(TaskStatus.APPLY.getCode());
|
||||
SpringContextHolder.getBean(SchBaseTaskServiceImpl.class).create(task);
|
||||
//1、如果是送料,检测载具状态
|
||||
//2、送空载具
|
||||
//3、叫料
|
||||
//4、叫空载具
|
||||
|
||||
//校验
|
||||
/**
|
||||
* 设置起点或者终点
|
||||
*
|
||||
* @param taskConfig
|
||||
* @param task
|
||||
* @param apply_point_code
|
||||
*/
|
||||
protected void setTaskPoint(SchBaseTaskconfig taskConfig, SchBaseTask task, String apply_point_code) {
|
||||
String taskDirection = taskConfig.getTask_direction();
|
||||
if (TaskDirectionEnum.SEND.getValue().equals(taskDirection)) {
|
||||
task.setPoint_code1(apply_point_code);
|
||||
} else {
|
||||
task.setPoint_code2(apply_point_code);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param task_code 任务标识
|
||||
* @return
|
||||
* @discription 强制结束完成任务
|
||||
* @author ldjun
|
||||
* @created 2020年6月19日 上午10:34:58
|
||||
*/
|
||||
public abstract void forceFinish(String task_code);
|
||||
|
||||
/**
|
||||
* 取消任务,货物搬回原点
|
||||
*
|
||||
* @param task_code
|
||||
*/
|
||||
public abstract void cancel(String task_code);
|
||||
|
||||
|
||||
/**
|
||||
* 申请任务
|
||||
*
|
||||
* @param param
|
||||
* @throws BadRequestException
|
||||
*/
|
||||
public void apply(JSONObject param) throws BadRequestException {
|
||||
// 申请任务
|
||||
SchBaseTask task = new SchBaseTask(); // 任务实体
|
||||
String apply_point_code = param.getString("device_code");
|
||||
String config_code = "YZQLTask";
|
||||
// 1、校验数据
|
||||
SchBaseTaskconfig taskConfig = taskConfigService.getById(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, "该点位申请的任务未完成数已超过上限,无法申请任务");
|
||||
// 获取设备
|
||||
SchBasePoint pointObj = pointService.getOne(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getPoint_code, apply_point_code));
|
||||
// 判断是否校验工单
|
||||
if (taskConfig.getIs_check_workorder()) {
|
||||
// 校验工单
|
||||
// 根据设备的父点位编码找到工单设备
|
||||
SchBasePoint one = pointService
|
||||
.getOne(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getPoint_code, pointObj.getParent_point_code()));
|
||||
// 查找当前设备、生产中、
|
||||
PdmBdWorkorder workorder = workorderService.getOne(new LambdaQueryWrapper<PdmBdWorkorder>()
|
||||
.eq(PdmBdWorkorder::getPoint_code, one.getPoint_code())
|
||||
.eq(PdmBdWorkorder::getWorkorder_status, "3"));
|
||||
if (ObjectUtil.isEmpty(workorder)) {
|
||||
throw new BadRequestException("当前设备工单未生产!");
|
||||
}
|
||||
// 将组盘所需的数据装成jsonObject跟着任务走
|
||||
param.put("material_id", workorder.getMaterial_id()); // 物料标识
|
||||
param.put("standing_time", workorder.getStanding_time()); // 静置时间
|
||||
param.put("workorder_code", workorder.getWorkorder_code()); // 静置时间
|
||||
param.put("vehicle_type", workorder.getVehicle_type()); // 载具类型
|
||||
// 设置任务数据
|
||||
task.setVehicle_type(workorder.getVehicle_type());
|
||||
}
|
||||
// 2、创建申请任务
|
||||
task.setAcs_trace_id("");
|
||||
task.setConfig_code(config_code);
|
||||
task.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
task.setCreate_mode("");
|
||||
task.setVehicle_code(param.getString("vehicle_code"));
|
||||
task.setTask_status(TaskStatus.APPLY.getCode());
|
||||
// 设置起/终点
|
||||
this.setTaskPoint(taskConfig, task, apply_point_code);
|
||||
task.setExt_group_data(JSONObject.toJSONString(param));
|
||||
taskService.create(task);
|
||||
|
||||
// 3、判断是否直接找点下发
|
||||
if (taskConfig.getIs_immediate_create()) {
|
||||
this.create();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ package org.nl.wms.sch.task_manage;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.reflections.Reflections;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -38,7 +39,10 @@ public class AutoCreateTask {
|
||||
subTypes.forEach(clz -> {
|
||||
// 调用AbstractAcsTask类的每个子类的schedule()方法
|
||||
try {
|
||||
Object obj = clz.newInstance();
|
||||
Object obj = SpringContextHolder.getBean(clz);
|
||||
// if (ObjectUtil.isEmpty(obj)) { // 如果spring中获取不到,就用newInstance创建
|
||||
// obj = clz.newInstance();
|
||||
// }
|
||||
//Method m = obj.getClass().getDeclaredMethod("schedule");
|
||||
Method m = obj.getClass().getMethod("schedule");
|
||||
List<AcsTaskDto> tasks = (List<AcsTaskDto>) m.invoke(obj);
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
package org.nl.wms.sch.task_manage.enums;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.Getter;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.nl.system.service.dict.dao.Dict;
|
||||
import org.nl.system.service.dict.impl.SysDictServiceImpl;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 组盘绑定物料状态枚举
|
||||
* @Date: 2023/5/25
|
||||
*/
|
||||
@Getter
|
||||
public enum GroupBindMaterialStatusEnum {
|
||||
/**
|
||||
* 待绑定
|
||||
*/WAIT_BIND,
|
||||
/**
|
||||
* 已绑定
|
||||
*/BOUND,
|
||||
/**
|
||||
* 已解绑
|
||||
*/UNBOUND;
|
||||
|
||||
private String value;
|
||||
private String label;
|
||||
|
||||
static {
|
||||
SysDictServiceImpl bean = SpringContextHolder.getBean(SysDictServiceImpl.class);
|
||||
List<Dict> taskDirection = bean.list(new LambdaQueryWrapper<Dict>()
|
||||
.eq(Dict::getCode, "group_bind_material_status")
|
||||
.orderByAsc(Dict::getDict_sort));
|
||||
GroupBindMaterialStatusEnum[] values = GroupBindMaterialStatusEnum.values();
|
||||
for (int i = 0; i < values.length; i++) {
|
||||
values[i].value = taskDirection.get(i).getValue();
|
||||
values[i].label = taskDirection.get(i).getLabel();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package org.nl.wms.sch.task_manage.enums;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 组盘状态枚举
|
||||
* @Date: 2023/5/24
|
||||
*/
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum GroupStatusEnum {
|
||||
OUT_SYSTEM("1", "系统外"),
|
||||
IN_STORAGE("2", "存储中"),
|
||||
IN_PROCESS("3", "处理中"),
|
||||
IN_CARRY("4", "搬运中"),
|
||||
DISCHARGE_MATERIAL("5", "可放料"),
|
||||
CABLE_RETRIEVABLE_MATERIAL("6", "可取料");
|
||||
|
||||
private final String type;
|
||||
private final String name;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package org.nl.wms.sch.task_manage.enums;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description:
|
||||
* @Date: 2023/5/25
|
||||
*/
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum PointStatusEnum {
|
||||
|
||||
EMPTY_POINT("1", "空位"),
|
||||
FULL_POINT("2", "有料"),
|
||||
EMPTY_VEHICLE("3", "空载具");
|
||||
|
||||
private final String value;
|
||||
private final String label;
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package org.nl.wms.sch.task_manage.enums;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.nl.system.service.dict.dao.Dict;
|
||||
import org.nl.system.service.dict.impl.SysDictServiceImpl;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 任务配置 - 任务去向枚举
|
||||
* @Date: 2023/5/25
|
||||
*/
|
||||
@Getter
|
||||
public enum TaskDirectionEnum {
|
||||
|
||||
/**
|
||||
* 送货
|
||||
*/
|
||||
SEND,
|
||||
/**
|
||||
* 取货
|
||||
*/
|
||||
CALL,
|
||||
/**
|
||||
* 移货
|
||||
*/
|
||||
MOVE;
|
||||
|
||||
private String value;
|
||||
private String label;
|
||||
|
||||
static {
|
||||
SysDictServiceImpl bean = SpringContextHolder.getBean(SysDictServiceImpl.class);
|
||||
List<Dict> taskDirection = bean.list(new LambdaQueryWrapper<Dict>()
|
||||
.eq(Dict::getCode, "task_direction")
|
||||
.orderByAsc(Dict::getDict_sort));
|
||||
TaskDirectionEnum[] values = TaskDirectionEnum.values();
|
||||
for (int i = 0; i < values.length; i++) {
|
||||
values[i].value = taskDirection.get(i).getValue();
|
||||
values[i].label = taskDirection.get(i).getLabel();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,11 @@
|
||||
package org.nl.wms.sch.task_manage.task;
|
||||
|
||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
import org.nl.wms.sch.task_manage.task.tasks.HNMLTask;
|
||||
import org.nl.wms.sch.task_manage.task.tasks.hn.HNMLTask;
|
||||
import org.nl.wms.sch.task_manage.task.tasks.hn.HNQKTask;
|
||||
import org.nl.wms.sch.task_manage.task.tasks.yz.YZQLTask;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* @author ldjun
|
||||
@@ -9,14 +13,25 @@ import org.nl.wms.sch.task_manage.task.tasks.HNMLTask;
|
||||
* @date 2023年05月16日 16:42
|
||||
* @desc desc
|
||||
*/
|
||||
@Component
|
||||
public class TaskFactory {
|
||||
|
||||
@Autowired
|
||||
private HNMLTask hnmlTask;
|
||||
|
||||
@Autowired
|
||||
private YZQLTask yzqlTask;
|
||||
|
||||
//使用 getShape 方法获取形状类型的对象
|
||||
public AbstractTask getTask(String taskType) {
|
||||
if (taskType == null) {
|
||||
return null;
|
||||
}
|
||||
if (taskType.equalsIgnoreCase("HNMLTask")) {
|
||||
return new HNMLTask();
|
||||
return hnmlTask;
|
||||
}
|
||||
if (taskType.equalsIgnoreCase("YZQLTask")) {
|
||||
return yzqlTask;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ public enum TaskStatus {
|
||||
CREATED("2", "创建完成", "创建完成"),
|
||||
ISSUED("3", "下发", "下发"),
|
||||
EXECUTING("4", "执行中", "执行中"),
|
||||
FINISHED("5", "完成", "执行中"),
|
||||
FINISHED("5", "完成", "完成"),
|
||||
CANCELED("6", "已取消", "已取消");
|
||||
|
||||
|
||||
|
||||
@@ -1,84 +0,0 @@
|
||||
package org.nl.wms.sch.task_manage.task.tasks;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch.point.service.impl.SchBasePointServiceImpl;
|
||||
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.SchBaseTaskconfig;
|
||||
import org.nl.wms.sch.task.service.impl.SchBaseTaskServiceImpl;
|
||||
import org.nl.wms.sch.task.service.impl.SchBaseTaskconfigServiceImpl;
|
||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author ldjun 混碾满料任务
|
||||
* @version 1.0
|
||||
* @date 2023年05月16日 16:44
|
||||
* @desc desc
|
||||
*/
|
||||
public class HNMLTask extends AbstractTask {
|
||||
private static String TASK_CONFIG_CODE = "HNMLTask";
|
||||
|
||||
@Override
|
||||
protected void updateStatus(String task_code, TaskStatus status) {
|
||||
ISchBaseTaskService taskService = SpringContextHolder.getBean(SchBaseTaskServiceImpl.class);
|
||||
taskService.updateById(null);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void create() {
|
||||
ISchBaseTaskService taskService = SpringContextHolder.getBean(SchBaseTaskServiceImpl.class);
|
||||
ISchBasePointService pointService = SpringContextHolder.getBean(SchBasePointServiceImpl.class);
|
||||
List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
|
||||
|
||||
SchBaseTaskconfig taskConfig = SpringContextHolder.getBean(SchBaseTaskconfigServiceImpl.class).getById(TASK_CONFIG_CODE);
|
||||
for (SchBaseTask task : tasks) {
|
||||
String[] nextRegionStr = taskConfig.getNext_region_str().split(",");
|
||||
|
||||
|
||||
SchBasePoint point = getSchBasePoint(pointService, nextRegionStr);
|
||||
if (ObjectUtil.isEmpty(point)) continue;
|
||||
|
||||
task.setPoint_code2(point.getPoint_code());
|
||||
|
||||
|
||||
taskService.update(task);
|
||||
|
||||
point.setIng_task_code(task.getTask_code());
|
||||
pointService.update(point);
|
||||
|
||||
//下发
|
||||
this.renotifyAcs(task);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private SchBasePoint getSchBasePoint(ISchBasePointService pointService, String[] nextRegionStr) {
|
||||
for (String nextRegion : nextRegionStr) {
|
||||
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
||||
lam.eq(SchBasePoint::getRegion_code, nextRegion)
|
||||
.eq(SchBasePoint::getPoint_status, "1");
|
||||
SchBasePoint p = pointService.getBaseMapper().selectOne(lam);
|
||||
if (p != null) return p;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void issue() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<Object> findPoints() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
package org.nl.wms.sch.task_manage.task.tasks;/**
|
||||
* @Author: lyd
|
||||
* @Description:
|
||||
* @Date: 2023/5/19
|
||||
*/public class HNQKTask {
|
||||
}
|
||||
@@ -0,0 +1,206 @@
|
||||
package org.nl.wms.sch.task_manage.task.tasks.hn;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.Data;
|
||||
import org.nl.common.enums.wms.PointStatusEnum;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
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.ISchBaseTaskconfigService;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
|
||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
import org.nl.wms.sch.task_manage.enums.GroupStatusEnum;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author ldjun 混碾满料任务
|
||||
* @version 1.0
|
||||
* @date 2023年05月16日 16:44
|
||||
* @desc desc
|
||||
*/
|
||||
@Component
|
||||
@Data
|
||||
public class HNMLTask extends AbstractTask {
|
||||
|
||||
private static String TASK_CONFIG_CODE = "HNMLTask";
|
||||
|
||||
// 空位
|
||||
private final String EMPTY_POINT = "1";
|
||||
// 有料
|
||||
private final String FULL_POINT = "2";
|
||||
// 空载具
|
||||
private final String EMPTY_VEHICLE = "3";
|
||||
@Autowired
|
||||
private ISchBasePointService pointService;
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
@Autowired
|
||||
private ISchBaseTaskconfigService taskConfigService;
|
||||
@Autowired
|
||||
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
|
||||
|
||||
@Override
|
||||
protected void updateStatus(String task_code, TaskStatus status) {
|
||||
// 校验任务
|
||||
SchBaseTask taskObj = taskService.getById(task_code);
|
||||
if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) {
|
||||
throw new BadRequestException("该任务已完成!");
|
||||
}
|
||||
if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) {
|
||||
throw new BadRequestException("该任务已取消!");
|
||||
}
|
||||
// 获取参数
|
||||
String endPoint = taskObj.getPoint_code2(); // 终点
|
||||
JSONObject extGroupData = ObjectUtil.isNotEmpty(taskObj.getExt_group_data())
|
||||
? JSONObject.parseObject(taskObj.getExt_group_data())
|
||||
: null;
|
||||
// 载具编码:没有就创建一个
|
||||
String vehicle_code = ObjectUtil.isNotEmpty(taskObj.getVehicle_code()) ? taskObj.getVehicle_code() : IdUtil.getSnowflake(1, 1).nextIdStr();
|
||||
SchBaseTaskconfig configObj = taskConfigService.getById(TASK_CONFIG_CODE);
|
||||
SchBasePoint endPointObj = pointService.getById(endPoint);
|
||||
// 根据传来的类型去对任务进行操作
|
||||
if (status.equals(TaskStatus.EXECUTING)) { // 执行中
|
||||
taskObj.setTask_status(TaskStatus.EXECUTING.getCode());
|
||||
taskObj.setRemark("执行中");
|
||||
}
|
||||
if (status.equals(TaskStatus.FINISHED)) { // 完成
|
||||
// 要把数据存到组盘表
|
||||
SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
|
||||
groupEntity.setMaterial_id(ObjectUtil.isNotEmpty(extGroupData) && ObjectUtil.isNotEmpty(extGroupData.getString("material_id"))
|
||||
? extGroupData.getString("material_id")
|
||||
: "");
|
||||
groupEntity.setStanding_time(ObjectUtil.isNotEmpty(extGroupData) && ObjectUtil.isNotEmpty(extGroupData.getString("standing_time"))
|
||||
? extGroupData.getInteger("standing_time")
|
||||
: 0);
|
||||
groupEntity.setIs_full(ObjectUtil.isNotEmpty(extGroupData)
|
||||
? extGroupData.getBoolean("is_full")
|
||||
: true);
|
||||
groupEntity.setMaterial_qty(ObjectUtil.isNotEmpty(extGroupData)
|
||||
? extGroupData.getInteger("material_qty")
|
||||
: 0);
|
||||
groupEntity.setMaterial_weight(ObjectUtil.isNotEmpty(extGroupData)
|
||||
? extGroupData.getBigDecimal("material_weight")
|
||||
: BigDecimal.valueOf(0));
|
||||
groupEntity.setWorkorder_code(ObjectUtil.isNotEmpty(extGroupData) && ObjectUtil.isNotEmpty(extGroupData.getString("workorder_code"))
|
||||
? extGroupData.getString("workorder_code")
|
||||
: "");
|
||||
groupEntity.setVehicle_code(vehicle_code);
|
||||
groupEntity.setVehicle_type(taskObj.getVehicle_type());
|
||||
groupEntity.setPoint_code(endPoint);
|
||||
groupEntity.setPoint_name(endPointObj.getPoint_name());
|
||||
groupEntity.setPcsn(IdUtil.simpleUUID());
|
||||
groupEntity.setInstorage_time(DateUtil.now());
|
||||
groupEntity.setTask_code(taskObj.getTask_code());
|
||||
groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。
|
||||
groupEntity.setIs_delete(false);
|
||||
vehiclematerialgroupService.create(groupEntity);
|
||||
// 终点去除正在执行的任务, 设置载具编码、载具类型、载具数量
|
||||
if (ObjectUtil.isNotEmpty(endPointObj)) {
|
||||
endPointObj.setIng_task_code("");
|
||||
endPointObj.setVehicle_code(vehicle_code);
|
||||
endPointObj.setVehicle_type(taskObj.getVehicle_type());
|
||||
endPointObj.setVehicle_qty(1);
|
||||
endPointObj.setPoint_status(PointStatusEnum.FULL_MATERIAL.getValue()); // 有料
|
||||
pointService.updateById(endPointObj);
|
||||
}
|
||||
taskObj.setRemark("任务完成");
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
}
|
||||
if (status.equals(TaskStatus.CANCELED)) { // 取消
|
||||
SchBasePoint one = ObjectUtil.isNotEmpty(endPoint)
|
||||
? pointService.getOne(new LambdaQueryWrapper<SchBasePoint>().eq(SchBasePoint::getPoint_code, endPoint))
|
||||
: null;
|
||||
if (one != null) {
|
||||
one.setIng_task_code("");
|
||||
pointService.updateById(one);
|
||||
}
|
||||
taskObj.setRemark("任务取消");
|
||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
}
|
||||
taskObj.setUpdate_time(DateUtil.now());
|
||||
taskService.updateById(taskObj);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 具体业务
|
||||
*/
|
||||
@Override
|
||||
protected void create() { // 找点+下发、 定时任务
|
||||
// 获取任务
|
||||
List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
|
||||
// 配置信息
|
||||
SchBaseTaskconfig taskConfig = taskConfigService.getById(TASK_CONFIG_CODE);
|
||||
for (SchBaseTask task : tasks) {
|
||||
List<String> nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")).collect(Collectors.toList());
|
||||
// 找终点
|
||||
SchBasePoint point = findNextPoint(nextRegionStr);
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
task.setRemark("未找到所需点位!");
|
||||
taskService.update(task);
|
||||
// 消息通知
|
||||
continue;
|
||||
}
|
||||
// 设置终点并修改创建成功状态
|
||||
task.setPoint_code2(point.getPoint_code());
|
||||
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||
taskService.update(task);
|
||||
|
||||
point.setIng_task_code(task.getTask_code());
|
||||
pointService.update(point);
|
||||
|
||||
//下发
|
||||
// this.renotifyAcs(task);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private SchBasePoint findNextPoint(List<String> nextRegionStr) {
|
||||
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
||||
lam.in(SchBasePoint::getRegion_code, nextRegionStr)
|
||||
.eq(SchBasePoint::getPoint_status, EMPTY_POINT)
|
||||
.and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住
|
||||
.or()
|
||||
.eq(SchBasePoint::getIng_task_code, ""))
|
||||
.orderByAsc(SchBasePoint::getIn_order_seq)
|
||||
.orderByAsc(SchBasePoint::getPoint_code);
|
||||
List<SchBasePoint> schBasePoints = pointService.list(lam);
|
||||
return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void issue() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<Object> findPoints() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void forceFinish(String task_code) {
|
||||
this.updateStatus(task_code, TaskStatus.FINISHED);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel(String task_code) {
|
||||
this.updateStatus(task_code, TaskStatus.CANCELED);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,139 @@
|
||||
package org.nl.wms.sch.task_manage.task.tasks.hn;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||
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.ISchBaseTaskconfigService;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
|
||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 混捻缺空:呼叫空载具
|
||||
* @Date: 2023/5/19
|
||||
*/
|
||||
@Component
|
||||
public class HNQKTask extends AbstractTask {
|
||||
private static String TASK_CONFIG_CODE = "HNQKTask";
|
||||
|
||||
// 空位
|
||||
private final String EMPTY_POINT = "1";
|
||||
// 有料
|
||||
private final String FULL_POINT = "2";
|
||||
// 空载具
|
||||
private final String EMPTY_VEHICLE = "3";
|
||||
|
||||
@Autowired
|
||||
private ISchBasePointService pointService;
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
@Autowired
|
||||
private ISchBaseTaskconfigService taskConfigService;
|
||||
@Autowired
|
||||
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
|
||||
|
||||
/**
|
||||
* 具体业务
|
||||
*/
|
||||
@Override
|
||||
protected void create() {
|
||||
// 获取任务
|
||||
List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
|
||||
// 配置信息
|
||||
SchBaseTaskconfig taskConfig = taskConfigService.getById(TASK_CONFIG_CODE);
|
||||
for (SchBaseTask task : tasks) {
|
||||
List<String> startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")).collect(Collectors.toList());
|
||||
// 找终点
|
||||
SchBasePoint point = findStartPoint(startRegionStr);
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
task.setRemark("未找到所需点位!");
|
||||
taskService.update(task);
|
||||
// 消息通知
|
||||
continue;
|
||||
}
|
||||
// 设置终点并修改创建成功状态
|
||||
task.setPoint_code1(point.getPoint_code());
|
||||
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||
taskService.update(task);
|
||||
|
||||
point.setIng_task_code(task.getTask_code());
|
||||
pointService.update(point);
|
||||
|
||||
//下发
|
||||
// this.renotifyAcs(task);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 找起点
|
||||
* @param startRegionStr
|
||||
* @return
|
||||
*/
|
||||
private SchBasePoint findStartPoint(List<String> startRegionStr) {
|
||||
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
||||
lam.in(SchBasePoint::getRegion_code, startRegionStr)
|
||||
.eq(SchBasePoint::getPoint_status, EMPTY_VEHICLE)
|
||||
// 可添加对托盘类型的校验
|
||||
.eq(SchBasePoint::getVehicle_type, "1")
|
||||
.and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住
|
||||
.or()
|
||||
.eq(SchBasePoint::getIng_task_code, ""))
|
||||
.orderByAsc(SchBasePoint::getIn_order_seq)
|
||||
.orderByAsc(SchBasePoint::getPoint_code);
|
||||
List<SchBasePoint> schBasePoints = pointService.list(lam);
|
||||
return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void issue() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateStatus(String task_code, TaskStatus status) {
|
||||
// 校验任务
|
||||
SchBaseTask taskObj = taskService.getById(task_code);
|
||||
if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) {
|
||||
throw new BadRequestException("该任务已完成!");
|
||||
}
|
||||
if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) {
|
||||
throw new BadRequestException("该任务已取消!");
|
||||
}
|
||||
// 获取参数
|
||||
String pointCode1 = taskObj.getPoint_code1(); // 获取起点
|
||||
// 获取外部参数
|
||||
JSONObject extGroupData = ObjectUtil.isNotEmpty(taskObj.getExt_group_data())
|
||||
? JSONObject.parseObject(taskObj.getExt_group_data())
|
||||
: null;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<Object> findPoints() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void forceFinish(String task_code) {
|
||||
this.updateStatus(task_code, TaskStatus.FINISHED);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel(String task_code) {
|
||||
this.updateStatus(task_code, TaskStatus.CANCELED);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,185 @@
|
||||
package org.nl.wms.sch.task_manage.task.tasks.yz;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
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.ISchBaseTaskconfigService;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
|
||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
import org.nl.wms.utils.PointUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 压制缺料任务
|
||||
* @Date: 2023/5/25
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
public class YZQLTask extends AbstractTask {
|
||||
private static String TASK_CONFIG_CODE = "YZQLTask";
|
||||
|
||||
// 空位
|
||||
private final String EMPTY_POINT = "1";
|
||||
// 有料
|
||||
private final String FULL_POINT = "2";
|
||||
// 空载具
|
||||
private final String EMPTY_VEHICLE = "3";
|
||||
@Autowired
|
||||
private ISchBasePointService pointService;
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
@Autowired
|
||||
private ISchBaseTaskconfigService taskConfigService;
|
||||
@Autowired
|
||||
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
|
||||
@Override
|
||||
protected void create() throws BadRequestException {
|
||||
// 获取任务
|
||||
List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
|
||||
// 配置信息
|
||||
SchBaseTaskconfig taskConfig = taskConfigService.getById(TASK_CONFIG_CODE);
|
||||
for (SchBaseTask task : tasks) {
|
||||
List<String> startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")).collect(Collectors.toList());
|
||||
// 找起点
|
||||
String extGroupData = task.getExt_group_data();
|
||||
JSONObject jsonObject = JSONObject.parseObject(extGroupData);
|
||||
SchBasePoint point = findStartPoint(startRegionStr, jsonObject);
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
task.setRemark("未找到所需点位!");
|
||||
taskService.update(task);
|
||||
// 消息通知
|
||||
continue;
|
||||
}
|
||||
// 设置起点并修改创建成功状态
|
||||
task.setPoint_code1(point.getPoint_code());
|
||||
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||
task.setVehicle_code(point.getVehicle_code());
|
||||
taskService.update(task);
|
||||
|
||||
point.setIng_task_code(task.getTask_code());
|
||||
pointService.update(point);
|
||||
|
||||
//下发
|
||||
// this.renotifyAcs(task);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 找起点业务:根据起点区域寻找所需点位
|
||||
* @param startRegionStr : 区域列表
|
||||
* @param extGroupData : 外部参数,包含条件所需的信息
|
||||
* @description : JSONObject获取不到就是null
|
||||
* @return
|
||||
*/
|
||||
private SchBasePoint findStartPoint(List<String> startRegionStr, JSONObject extGroupData) {
|
||||
String materialId = extGroupData.getString("material_id");
|
||||
String vehicleType = extGroupData.getString("vehicle_type");
|
||||
int standingTime = extGroupData.getInteger("standing_time"); // 静置时间
|
||||
Assert.notNull(materialId, "物料不能为空!");
|
||||
Assert.notNull(vehicleType, "载具类型不能为空!");
|
||||
Assert.notNull(standingTime, "静置时间不能为空!");
|
||||
// 找到所需要物料的载具编号
|
||||
List<SchBaseVehiclematerialgroup> list = vehiclematerialgroupService.list(new LambdaQueryWrapper<SchBaseVehiclematerialgroup>()
|
||||
.eq(SchBaseVehiclematerialgroup::getMaterial_id, materialId)
|
||||
.eq(SchBaseVehiclematerialgroup::getVehicle_type, vehicleType)
|
||||
.eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status, GroupBindMaterialStatusEnum.BOUND.getValue())
|
||||
.apply("DATE_ADD(instorage_time, INTERVAL " + standingTime + " MINUTE) <= NOW()")
|
||||
.orderByAsc(SchBaseVehiclematerialgroup::getPoint_code));
|
||||
// 获取第一个
|
||||
SchBaseVehiclematerialgroup vehiclematerialgroup = ObjectUtil.isNotEmpty(list) ? list.get(0) : null;
|
||||
if (ObjectUtil.isEmpty(vehiclematerialgroup)) return null;
|
||||
SchBasePoint one = pointService.getOne(new LambdaQueryWrapper<SchBasePoint>()
|
||||
.in(SchBasePoint::getRegion_code, startRegionStr)
|
||||
.eq(SchBasePoint::getPoint_status, FULL_POINT)
|
||||
.eq(SchBasePoint::getVehicle_code, vehiclematerialgroup.getVehicle_code())
|
||||
.eq(SchBasePoint::getVehicle_type, vehicleType));
|
||||
return one;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void issue() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateStatus(String task_code, TaskStatus status) {
|
||||
// 校验任务
|
||||
SchBaseTask taskObj = taskService.getById(task_code);
|
||||
if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) {
|
||||
throw new BadRequestException("该任务已完成!");
|
||||
}
|
||||
if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) {
|
||||
throw new BadRequestException("该任务已取消!");
|
||||
}
|
||||
// 获取参数
|
||||
String startPoint = taskObj.getPoint_code1(); // 起点
|
||||
JSONObject extGroupData = ObjectUtil.isNotEmpty(taskObj.getExt_group_data())
|
||||
? JSONObject.parseObject(taskObj.getExt_group_data())
|
||||
: null;
|
||||
SchBasePoint startPointObj = pointService.getById(startPoint);
|
||||
// 根据传来的类型去对任务进行操作
|
||||
if (status.equals(TaskStatus.EXECUTING)) { // 执行中
|
||||
taskObj.setTask_status(TaskStatus.EXECUTING.getCode());
|
||||
taskObj.setRemark("执行中");
|
||||
}
|
||||
if (status.equals(TaskStatus.FINISHED)) { // 完成
|
||||
// 任务上有载具编码 -> 获取当前载具编码的组盘信息
|
||||
SchBaseVehiclematerialgroup one = vehiclematerialgroupService.getOne(new LambdaQueryWrapper<SchBaseVehiclematerialgroup>()
|
||||
.eq(SchBaseVehiclematerialgroup::getVehicle_code, taskObj.getVehicle_code())
|
||||
.eq(SchBaseVehiclematerialgroup::getVehicle_type, taskObj.getVehicle_type())
|
||||
.eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status, GroupBindMaterialStatusEnum.BOUND.getValue()));
|
||||
// 将载具设置为已解绑
|
||||
one.setGroup_bind_material_status(GroupBindMaterialStatusEnum.UNBOUND.getValue());
|
||||
vehiclematerialgroupService.update(one);
|
||||
// 释放点位,将点位设置为空位,清空数据
|
||||
if (ObjectUtil.isNotEmpty(startPointObj)) {
|
||||
PointUtil.clearPoint(startPointObj);
|
||||
}
|
||||
// 任务修改成完成
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
}
|
||||
if (status.equals(TaskStatus.CANCELED)) { // 取消
|
||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
// 释放点位,起点正在执行的任务清空
|
||||
if (ObjectUtil.isNotEmpty(startPointObj)) {
|
||||
startPointObj.setIng_task_code("");
|
||||
pointService.updateById(startPointObj);
|
||||
}
|
||||
}
|
||||
taskObj.setUpdate_time(DateUtil.now());
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<Object> findPoints() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void forceFinish(String task_code) {
|
||||
this.updateStatus(task_code, TaskStatus.FINISHED);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel(String task_code) {
|
||||
this.updateStatus(task_code, TaskStatus.CANCELED);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package org.nl.wms.utils;
|
||||
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.event.ContextRefreshedEvent;
|
||||
import org.springframework.context.event.EventListener;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 监听事件,用来debug查看bean工厂等信息
|
||||
* @Date: 2023/5/23
|
||||
*/
|
||||
@Component
|
||||
public class MyEventListener {
|
||||
|
||||
@EventListener
|
||||
public void handleContextRefresh(ContextRefreshedEvent event) {
|
||||
ApplicationContext applicationContext = event.getApplicationContext();
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,11 @@
|
||||
package org.nl.wms.utils;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch.point.service.impl.SchBasePointServiceImpl;
|
||||
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
@@ -25,4 +30,19 @@ public class PointUtil {
|
||||
// 设置
|
||||
return statusArr.getString(label);
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空点位
|
||||
* @param point
|
||||
*/
|
||||
public static void clearPoint(SchBasePoint point) {
|
||||
SchBasePointServiceImpl pointService = SpringContextHolder.getBean(SchBasePointServiceImpl.class);
|
||||
point.setPoint_status(PointStatusEnum.EMPTY_POINT.getValue());
|
||||
point.setVehicle_type("");
|
||||
point.setVehicle_code("");
|
||||
point.setIng_task_code("");
|
||||
point.setVehicle_qty(0);
|
||||
point.setUpdate_time(DateUtil.now());
|
||||
pointService.updateById(point);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
package org.nl.enums;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
|
||||
import org.nl.wms.sch.task_manage.enums.TaskDirectionEnum;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description:
|
||||
* @Date: 2023/5/25
|
||||
*/
|
||||
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
|
||||
public class GetEnumOnSqlTest {
|
||||
@Test
|
||||
public void TaskDirectionEnum() {
|
||||
TaskDirectionEnum[] values = TaskDirectionEnum.values();
|
||||
for (TaskDirectionEnum value : values) {
|
||||
System.out.println(value.getValue() + ", " + value.getLabel());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void GroupBindMaterialStatusEnum() {
|
||||
GroupBindMaterialStatusEnum[] values = GroupBindMaterialStatusEnum.values();
|
||||
for (GroupBindMaterialStatusEnum value : values) {
|
||||
System.out.println(value.getValue() + ", " + value.getLabel());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -249,7 +249,11 @@
|
||||
prop="workorder_status"
|
||||
label="工单状态"
|
||||
:min-width="flexWidth('workorder_status',crud.data,'工单状态')"
|
||||
/>
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
{{ dict.label.pdm_workorder_status[scope.row.workorder_status] }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="is_needmove" label="是否自动搬运" :min-width="flexWidth('is_needmove',crud.data,'是否自动搬运')">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.is_needmove ? '是' : '否' }}
|
||||
@@ -324,7 +328,7 @@ const defaultForm = {
|
||||
}
|
||||
export default {
|
||||
name: 'PdmBdWorkorder',
|
||||
dicts: ['vehicle_type'],
|
||||
dicts: ['vehicle_type', 'pdm_workorder_status'],
|
||||
components: { MaterialDialog, pagination, crudOperation, rrOperation, udOperation },
|
||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||
cruds() {
|
||||
|
||||
@@ -256,6 +256,7 @@ import WorkOrderDialog from '@/views/wms/sch/group/WorkOrderDialog.vue'
|
||||
import crudSchBasePoint from '@/views/wms/sch/point/schBasePoint'
|
||||
|
||||
const defaultForm = {
|
||||
group_id: null,
|
||||
vehicle_code: null,
|
||||
material_id: null,
|
||||
child_vehicle_code: null,
|
||||
@@ -342,9 +343,9 @@ export default {
|
||||
}
|
||||
},
|
||||
getPointList() { // 获取点位列表
|
||||
crudSchBasePoint.getPointList().then(res => {
|
||||
this.pointList = res
|
||||
})
|
||||
crudSchBasePoint.getPointList().then(res => {
|
||||
this.pointList = res
|
||||
})
|
||||
},
|
||||
tableChanged(row) {
|
||||
this.form.material_name = row.material_name
|
||||
|
||||
@@ -84,6 +84,16 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="锁定类型">
|
||||
<el-switch
|
||||
v-model="query.lock_type"
|
||||
:active-value="true"
|
||||
:inactive-value="false"
|
||||
active-color="#409EFF"
|
||||
inactive-color="#C0CCDA"
|
||||
@change="hand"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否启用">
|
||||
<el-switch
|
||||
v-model="query.is_used"
|
||||
@@ -367,7 +377,8 @@ export default {
|
||||
reset: true
|
||||
},
|
||||
query: {
|
||||
is_used: 'true'
|
||||
is_used: 'true',
|
||||
lock_type: false
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
@@ -39,33 +39,33 @@
|
||||
@keyup.enter.native="crud.toQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="任务类型">-->
|
||||
<!-- <treeselect-->
|
||||
<!-- v-model="query.task_type"-->
|
||||
<!-- :load-options="loadChildNodes"-->
|
||||
<!-- :options="classes1"-->
|
||||
<!-- style="width: 180px"-->
|
||||
<!-- placeholder="请选择"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item label="完成方式">-->
|
||||
<!-- <el-select-->
|
||||
<!-- v-model="query.finished_type"-->
|
||||
<!-- style="width: 180px"-->
|
||||
<!-- placeholder="完成方式"-->
|
||||
<!-- class="filter-item"-->
|
||||
<!-- clearable-->
|
||||
<!-- @change="hand"-->
|
||||
<!-- >-->
|
||||
<!-- <el-option-->
|
||||
<!-- v-for="item in finishTypeList"-->
|
||||
<!-- :key="item.code"-->
|
||||
<!-- clearable-->
|
||||
<!-- :label="item.name"-->
|
||||
<!-- :value="item.code"-->
|
||||
<!-- />-->
|
||||
<!-- </el-select>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item label="任务类型">-->
|
||||
<!-- <treeselect-->
|
||||
<!-- v-model="query.task_type"-->
|
||||
<!-- :load-options="loadChildNodes"-->
|
||||
<!-- :options="classes1"-->
|
||||
<!-- style="width: 180px"-->
|
||||
<!-- placeholder="请选择"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item label="完成方式">-->
|
||||
<!-- <el-select-->
|
||||
<!-- v-model="query.finished_type"-->
|
||||
<!-- style="width: 180px"-->
|
||||
<!-- placeholder="完成方式"-->
|
||||
<!-- class="filter-item"-->
|
||||
<!-- clearable-->
|
||||
<!-- @change="hand"-->
|
||||
<!-- >-->
|
||||
<!-- <el-option-->
|
||||
<!-- v-for="item in finishTypeList"-->
|
||||
<!-- :key="item.code"-->
|
||||
<!-- clearable-->
|
||||
<!-- :label="item.name"-->
|
||||
<!-- :value="item.code"-->
|
||||
<!-- />-->
|
||||
<!-- </el-select>-->
|
||||
<!-- </el-form-item>-->
|
||||
<el-form-item label="创建时间">
|
||||
<el-date-picker
|
||||
v-model="query.createTime"
|
||||
@@ -77,24 +77,24 @@
|
||||
@change="crud.toQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="任务状态">-->
|
||||
<!-- <el-select-->
|
||||
<!-- v-model="query.task_status"-->
|
||||
<!-- multiple-->
|
||||
<!-- style="width: 400px"-->
|
||||
<!-- placeholder="任务状态"-->
|
||||
<!-- class="filter-item"-->
|
||||
<!-- clearable-->
|
||||
<!-- @change="handTaskStatus"-->
|
||||
<!-- >-->
|
||||
<!-- <el-option-->
|
||||
<!-- v-for="item in taskStatusList"-->
|
||||
<!-- :key="item.code"-->
|
||||
<!-- :label="item.name"-->
|
||||
<!-- :value="item.code"-->
|
||||
<!-- />-->
|
||||
<!-- </el-select>-->
|
||||
<!-- </el-form-item>-->
|
||||
<el-form-item label="任务状态">
|
||||
<el-select
|
||||
v-model="query.task_status"
|
||||
multiple
|
||||
style="width: 360px"
|
||||
placeholder="任务状态"
|
||||
class="filter-item"
|
||||
clearable
|
||||
@change="handTaskStatus"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in taskStatusList"
|
||||
:key="item.code"
|
||||
:label="item.name"
|
||||
:value="item.code"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<rrOperation />
|
||||
</el-form>
|
||||
</div>
|
||||
@@ -187,41 +187,56 @@
|
||||
<!--表格渲染-->
|
||||
<el-table ref="table" v-loading="crud.loading" :data="crud.data" size="mini" style="width: 100%;" @selection-change="crud.selectionChangeHandler">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column prop="task_code" label="任务编码" :min-width="flexWidth('task_code',crud.data,'任务编码')"/>
|
||||
<el-table-column prop="task_class_id" label="任务分类" :min-width="flexWidth('task_class_id',crud.data,'任务分类')"/>
|
||||
<el-table-column prop="task_status" label="任务状态" :min-width="flexWidth('task_status',crud.data,'任务状态')"/>
|
||||
<el-table-column prop="config_code" label="配置编码" :min-width="flexWidth('config_code',crud.data,'配置编码')"/>
|
||||
<el-table-column prop="point_code1" label="点位1" :min-width="flexWidth('point_code1',crud.data,'点位1')"/>
|
||||
<el-table-column prop="point_code2" label="点位2" :min-width="flexWidth('point_code2',crud.data,'点位2')"/>
|
||||
<el-table-column prop="point_code3" label="点位3" :min-width="flexWidth('point_code3',crud.data,'点位3')"/>
|
||||
<el-table-column prop="point_code4" label="点位4" :min-width="flexWidth('point_code4',crud.data,'点位4')"/>
|
||||
<el-table-column prop="vehicle_type" label="载具类型" :min-width="flexWidth('vehicle_type',crud.data,'载具类型')"/>
|
||||
<el-table-column prop="vehicle_qty" label="载具数量" :min-width="flexWidth('vehicle_qty',crud.data,'载具数量')"/>
|
||||
<el-table-column prop="vehicle_code" label="载具编码" :min-width="flexWidth('vehicle_code',crud.data,'载具编码')"/>
|
||||
<el-table-column prop="priority" label="优先级" :min-width="flexWidth('priority',crud.data,'优先级')"/>
|
||||
<el-table-column prop="handle_class" v-if="false" label="处理类" :min-width="flexWidth('handle_class',crud.data,'处理类')"/>
|
||||
<el-table-column prop="handle_status" label="处理状态" :min-width="flexWidth('handle_status',crud.data,'处理状态')"/>
|
||||
<el-table-column prop="car_no" label="车号" :min-width="flexWidth('car_no',crud.data,'车号')"/>
|
||||
<el-table-column prop="task_group_id" label="任务组标识" :min-width="flexWidth('task_group_id',crud.data,'任务组标识')"/>
|
||||
<el-table-column prop="task_group_seq" label="任务组顺序号" :min-width="flexWidth('task_group_seq',crud.data,'任务组顺序号')"/>
|
||||
<el-table-column prop="finished_type" label="任务完成类型" :min-width="flexWidth('finished_type',crud.data,'任务完成类型')"/>
|
||||
<el-table-column prop="create_mode" label="生成方式" :min-width="flexWidth('create_mode',crud.data,'生成方式')"/>
|
||||
<el-table-column prop="acs_trace_id" label="链路标识" :min-width="flexWidth('acs_trace_id',crud.data,'链路标识')"/>
|
||||
<el-table-column prop="request_param" label="生成任务的请求参数" :min-width="flexWidth('request_param',crud.data,'生成任务的请求参数')"/>
|
||||
<el-table-column prop="response_param" label="下发任务的请求参数" :min-width="flexWidth('response_param',crud.data,'下发任务的请求参数')"/>
|
||||
<el-table-column prop="workshop_code" label="车间编码" :min-width="flexWidth('workshop_code',crud.data,'车间编码')"/>
|
||||
<el-table-column prop="ext_group_data" label="额外组盘信息" :min-width="flexWidth('ext_group_data',crud.data,'额外组盘信息')"/>
|
||||
<el-table-column prop="remark" label="备注" :min-width="flexWidth('remark',crud.data,'备注')"/>
|
||||
<el-table-column prop="create_name" label="创建人" :min-width="flexWidth('create_name',crud.data,'创建人')"/>
|
||||
<el-table-column prop="create_time" label="创建时间" :min-width="flexWidth('create_time',crud.data,'创建时间')"/>
|
||||
<el-table-column prop="update_name" label="修改人" :min-width="flexWidth('update_name',crud.data,'修改人')"/>
|
||||
<el-table-column prop="update_time" label="修改时间" :min-width="flexWidth('update_time',crud.data,'修改时间')"/>
|
||||
<el-table-column v-permission="[]" label="操作" width="120px" align="center" fixed="right">
|
||||
<el-table-column prop="task_code" label="任务编码" :min-width="flexWidth('task_code',crud.data,'任务编码')" />
|
||||
<el-table-column prop="vehicle_code" label="载具编码" :min-width="flexWidth('vehicle_code',crud.data,'载具编码')" />
|
||||
<el-table-column prop="task_class_id" label="任务分类" :min-width="flexWidth('task_class_id',crud.data,'任务分类')" />
|
||||
<el-table-column prop="task_status" label="任务状态" :min-width="flexWidth('task_status',crud.data,'任务状态')">
|
||||
<template slot-scope="scope">
|
||||
<udOperation
|
||||
:data="scope.row"
|
||||
:permission="permission"
|
||||
/>
|
||||
{{ getStatusName(scope.row.task_status) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="remark" label="提示信息" :min-width="flexWidth('remark',crud.data,'提示信息')" />
|
||||
<el-table-column prop="config_code" label="配置编码" :min-width="flexWidth('config_code',crud.data,'配置编码')" />
|
||||
<el-table-column prop="point_code1" label="起点" :min-width="flexWidth('point_code1',crud.data,'点位1')" />
|
||||
<el-table-column prop="point_code2" label="终点" :min-width="flexWidth('point_code2',crud.data,'点位2')" />
|
||||
<el-table-column prop="point_code3" label="点位3" :min-width="flexWidth('point_code3',crud.data,'点位3')" />
|
||||
<el-table-column prop="point_code4" label="点位4" :min-width="flexWidth('point_code4',crud.data,'点位4')" />
|
||||
<el-table-column prop="vehicle_type" label="载具类型" :min-width="flexWidth('vehicle_type',crud.data,'载具类型')" />
|
||||
<el-table-column prop="vehicle_qty" label="载具数量" :min-width="flexWidth('vehicle_qty',crud.data,'载具数量')" />
|
||||
<el-table-column prop="priority" label="优先级" :min-width="flexWidth('priority',crud.data,'优先级')" />
|
||||
<el-table-column v-if="false" prop="handle_class" label="处理类" :min-width="flexWidth('handle_class',crud.data,'处理类')" />
|
||||
<el-table-column prop="handle_status" label="处理状态" :min-width="flexWidth('handle_status',crud.data,'处理状态')" />
|
||||
<el-table-column prop="car_no" label="车号" :min-width="flexWidth('car_no',crud.data,'车号')" />
|
||||
<el-table-column prop="task_group_id" label="任务组标识" :min-width="flexWidth('task_group_id',crud.data,'任务组标识')" />
|
||||
<el-table-column prop="task_group_seq" label="任务组顺序号" :min-width="flexWidth('task_group_seq',crud.data,'任务组顺序号')" />
|
||||
<el-table-column prop="finished_type" label="任务完成类型" :min-width="flexWidth('finished_type',crud.data,'任务完成类型')" />
|
||||
<el-table-column prop="create_mode" label="生成方式" :min-width="flexWidth('create_mode',crud.data,'生成方式')" />
|
||||
<el-table-column prop="acs_trace_id" label="链路标识" :min-width="flexWidth('acs_trace_id',crud.data,'链路标识')" />
|
||||
<el-table-column prop="request_param" label="生成任务的请求参数" :min-width="flexWidth('request_param',crud.data,'生成任务的请求参数')" />
|
||||
<el-table-column prop="response_param" label="下发任务的请求参数" :min-width="flexWidth('response_param',crud.data,'下发任务的请求参数')" />
|
||||
<el-table-column prop="workshop_code" label="车间编码" :min-width="flexWidth('workshop_code',crud.data,'车间编码')" />
|
||||
<el-table-column prop="ext_group_data" label="额外组盘信息" :min-width="flexWidth('ext_group_data',crud.data,'额外组盘信息')" />
|
||||
<!-- <el-table-column prop="create_name" label="创建人" :min-width="flexWidth('create_name',crud.data,'创建人')" />-->
|
||||
<el-table-column prop="create_time" label="创建时间" :min-width="flexWidth('create_time',crud.data,'创建时间')" />
|
||||
<!-- <el-table-column prop="update_name" label="修改人" :min-width="flexWidth('update_name',crud.data,'修改人')" />-->
|
||||
<el-table-column prop="update_time" label="修改时间" :min-width="flexWidth('update_time',crud.data,'修改时间')" />
|
||||
<el-table-column v-permission="[]" label="操作" width="160px" align="center" fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
type="text"
|
||||
icon="el-icon-upload"
|
||||
@click="doOperate(scope.row, 'c')"
|
||||
>下发</el-button>
|
||||
<el-button
|
||||
type="text"
|
||||
icon="el-icon-success"
|
||||
@click="doOperate(scope.row, 'a')"
|
||||
>完成</el-button>
|
||||
<el-button
|
||||
type="text"
|
||||
icon="el-icon-error"
|
||||
@click="doOperate(scope.row, 'b')"
|
||||
>取消</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -233,7 +248,7 @@
|
||||
|
||||
<script>
|
||||
import crudSchBaseTask from './schBaseTask'
|
||||
import CRUD, {crud, form, header, presenter} from '@crud/crud'
|
||||
import CRUD, { crud, form, header, presenter } from '@crud/crud'
|
||||
import rrOperation from '@crud/RR.operation'
|
||||
import crudOperation from '@crud/CRUD.operation'
|
||||
import udOperation from '@crud/UD.operation'
|
||||
@@ -265,13 +280,7 @@ const defaultForm = {
|
||||
workshop_code: null,
|
||||
ext_group_data: null,
|
||||
remark: null,
|
||||
is_delete: false,
|
||||
create_id: null,
|
||||
create_name: null,
|
||||
create_time: null,
|
||||
update_id: null,
|
||||
update_name: null,
|
||||
update_time: null
|
||||
is_delete: false
|
||||
}
|
||||
export default {
|
||||
name: 'Task',
|
||||
@@ -298,9 +307,13 @@ export default {
|
||||
permission: {
|
||||
},
|
||||
rules: {
|
||||
}
|
||||
},
|
||||
taskStatusList: []
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getTaskStatusList()
|
||||
},
|
||||
methods: {
|
||||
// 钩子:在获取表格数据之前执行,false 则代表不获取数据
|
||||
[CRUD.HOOK.beforeRefresh]() {
|
||||
@@ -308,6 +321,53 @@ export default {
|
||||
},
|
||||
hand(value) {
|
||||
this.crud.toQuery()
|
||||
},
|
||||
handTaskStatus(value) {
|
||||
this.crud.query.more_task_status = null
|
||||
if (value) {
|
||||
this.crud.query.more_task_status = value.toString()
|
||||
}
|
||||
this.crud.toQuery()
|
||||
},
|
||||
getTaskStatusList() {
|
||||
crudSchBaseTask.getTaskStatusList().then(res => {
|
||||
this.taskStatusList = res.content
|
||||
})
|
||||
},
|
||||
getStatusName(code) {
|
||||
const status = this.taskStatusList.find(item => item.code === code)
|
||||
return status ? status.name : '-'
|
||||
},
|
||||
doOperate(row, command) {
|
||||
let method_name = ''
|
||||
switch (command) {
|
||||
case 'a':// 完成
|
||||
method_name = 'forceFinish'
|
||||
break
|
||||
case 'b':// 取消
|
||||
method_name = 'cancel'
|
||||
break
|
||||
case 'c':// 下发
|
||||
method_name = 'immediateNotifyAcs'
|
||||
break
|
||||
case 'd':// 详情
|
||||
method_name = 'view'
|
||||
break
|
||||
}
|
||||
if (method_name === 'view') {
|
||||
// this.view(row)
|
||||
return
|
||||
}
|
||||
const data = {
|
||||
task_code: row.task_code,
|
||||
method_name: method_name
|
||||
}
|
||||
crudSchBaseTask.operation(data).then(res => {
|
||||
this.crud.toQuery()
|
||||
this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
}).catch(err => {
|
||||
console.log(err.response.data.message)
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,4 +24,19 @@ export function edit(data) {
|
||||
})
|
||||
}
|
||||
|
||||
export default { add, edit, del }
|
||||
export function getTaskStatusList() {
|
||||
return request({
|
||||
url: 'api/schBaseTask/taskStatusList',
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
export function operation(data) {
|
||||
return request({
|
||||
url: 'api/schBaseTask/operation',
|
||||
method: 'put',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export default { add, edit, del, getTaskStatusList, operation}
|
||||
|
||||
Reference in New Issue
Block a user