add: 手持生箔呼叫空辊、下料
This commit is contained in:
@@ -29,7 +29,7 @@ public class AcsToWmsController {
|
||||
@PostMapping("/status")
|
||||
@Log(value = "ACS给WMS反馈任务状态", isInterfaceLog = true, interfaceLogType = InterfaceLogType.ACS_TO_LMS)
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> receiveTaskStatusAcs(@RequestBody String string) {
|
||||
public ResponseEntity<Object> receiveTaskStatusAcs(@RequestBody String string) throws InterruptedException {
|
||||
log.info("ACS给WMS反馈任务状态:{}", string);
|
||||
return new ResponseEntity<>(acsToWmsService.receiveTaskStatusAcs(string), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@@ -8,8 +8,8 @@ import org.nl.wms.ext.acs.service.AcsToWmsService;
|
||||
import org.nl.wms.sch.task.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
import org.nl.wms.sch.task_manage.task.TaskFactory;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
import org.nl.wms.sch.task_manage.TaskFactory;
|
||||
import org.nl.wms.sch.task_manage.TaskStatus;
|
||||
import org.redisson.api.RLock;
|
||||
import org.redisson.api.RedissonClient;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -60,7 +60,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
// 任务处理类
|
||||
try {
|
||||
AbstractTask task1 = taskFactory.getTask(task.getConfig_code());
|
||||
task1.updateTaskStatus(row, status);
|
||||
task1.updateStatus(row, status);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
message = e.getMessage();
|
||||
|
||||
@@ -4,12 +4,9 @@ import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
||||
import org.nl.wms.ext.acs.service.dto.to.acs.IssueAcsRequest;
|
||||
import org.nl.wms.ext.acs.service.dto.to.wms.AcsResponse;
|
||||
import org.nl.wms.ext.record.service.ISysInteractRecordService;
|
||||
import org.nl.wms.sch.task_manage.AcsTaskDto;
|
||||
import org.nl.wms.sch.task_manage.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.task.AcsUtil;
|
||||
import org.nl.wms.sch.task_manage.AcsUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
package org.nl.wms.pda.mps.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.logging.annotation.Log;
|
||||
import org.nl.wms.pda.mps.service.RawFoilPdaService;
|
||||
import org.nl.wms.pdm.bi.service.IpdmBiRawfoilworkorderService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 生箔手持控制类
|
||||
* @Date: 2024/8/6
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/api/pda/raw")
|
||||
@Slf4j
|
||||
@SaIgnore
|
||||
public class RawFoilPdaController {
|
||||
|
||||
@Autowired
|
||||
private RawFoilPdaService rawFoilPdaService;
|
||||
|
||||
@PostMapping("/queryRawFoilList")
|
||||
@Log("查询生箔工单")
|
||||
public ResponseEntity<Object> queryRawFoilList(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(rawFoilPdaService.queryRawFoilList(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/needEmptyVehicle")
|
||||
@Log("生箔呼叫空辊")
|
||||
public ResponseEntity<Object> needEmptyVehicle(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(rawFoilPdaService.needEmptyVehicle(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/needEmptyAxis")
|
||||
@Log("生箔下料")
|
||||
public ResponseEntity<Object> needEmptyAxis(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(rawFoilPdaService.needEmptyAxis(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package org.nl.wms.pda.mps.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description:
|
||||
* @Date: 2024/8/6
|
||||
*/
|
||||
public interface RawFoilPdaService {
|
||||
|
||||
/**
|
||||
* 呼叫空辊
|
||||
* @param param /
|
||||
* @return /
|
||||
*/
|
||||
JSONObject needEmptyVehicle(JSONObject param);
|
||||
|
||||
/**
|
||||
* 查询生箔工单
|
||||
* @param param /
|
||||
* @return /
|
||||
*/
|
||||
JSONObject queryRawFoilList(JSONObject param);
|
||||
|
||||
/**
|
||||
* 生箔下料
|
||||
* @param param /
|
||||
* @return /
|
||||
*/
|
||||
JSONObject needEmptyAxis(JSONObject param);
|
||||
}
|
||||
@@ -0,0 +1,125 @@
|
||||
package org.nl.wms.pda.mps.service.impl;
|
||||
|
||||
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.extern.slf4j.Slf4j;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.wms.pda.mps.service.RawFoilPdaService;
|
||||
import org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder;
|
||||
import org.nl.wms.pdm.bi.service.IpdmBiRawfoilworkorderService;
|
||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||
import org.nl.wms.sch.task.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task_manage.constant.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.tasks.raw.RawCallRollTrussTask;
|
||||
import org.nl.wms.util.TaskUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description:
|
||||
* @Date: 2024/8/6
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class RawFoilPdaServiceImpl implements RawFoilPdaService {
|
||||
@Autowired
|
||||
private RawCallRollTrussTask rawCallRollTrussTask;
|
||||
@Autowired
|
||||
private ISchBasePointService pointService;
|
||||
@Autowired
|
||||
private IpdmBiRawfoilworkorderService rawfoilworkorderService;
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public JSONObject needEmptyVehicle(JSONObject param) {
|
||||
log.info("手持呼叫空收卷辊: {}", param);
|
||||
// param: point_code, vehicle_type
|
||||
String pointCode = param.getString("point_code");
|
||||
String vehicleType = param.getString("vehicle_type");
|
||||
if (ObjectUtil.isEmpty(vehicleType)) {
|
||||
throw new BadRequestException("收卷辊的类型不能为空!");
|
||||
}
|
||||
// 判断是否存在任务
|
||||
List<SchBaseTask> unFinishTasks = taskService.checkHaveTask(pointCode);
|
||||
// 判断是否存在对应的桁架任务
|
||||
List<SchBaseTask> unFinishRelatedTasks = taskService.checkHaveRelatedTaskInRequestParam(pointCode);
|
||||
if (unFinishTasks.size() > 0 || unFinishRelatedTasks.size() > 0) {
|
||||
log.error("点位 [{}] 已经存在任务!", pointCode);
|
||||
throw new BadRequestException("点位[" + pointCode + "]已经存在任务!");
|
||||
}
|
||||
param.put("config_code", "RawCallRollTrussTask");
|
||||
param.put("device_code", pointCode);
|
||||
param.put("create_mode", GeneralDefinition.PDA_CREATION);
|
||||
param.put("requestNo", "LMS" + IdUtil.getSnowflake(1,1).nextIdStr());
|
||||
// 调用通用口, 创建空辊桁架任务
|
||||
rawCallRollTrussTask.apply(param);
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
result.put("message", "任务创建成功!");
|
||||
result.put("data", new JSONObject());
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject queryRawFoilList(JSONObject param) {
|
||||
// 查找生箔工单,通过点位获取,时间排序最近10条
|
||||
// param: point_code,vehicle_code
|
||||
String pointCode = param.getString("point_code");
|
||||
String vehicleCode = param.getString("vehicle_code");
|
||||
List<PdmBiRawfoilworkorder> list = rawfoilworkorderService.list(new LambdaQueryWrapper<PdmBiRawfoilworkorder>()
|
||||
.eq(ObjectUtil.isNotEmpty(pointCode), PdmBiRawfoilworkorder::getPoint_code, pointCode)
|
||||
.eq(ObjectUtil.isNotEmpty(vehicleCode), PdmBiRawfoilworkorder::getWind_roll, vehicleCode)
|
||||
.orderByDesc(PdmBiRawfoilworkorder::getCreate_time)
|
||||
.last("limit 10"));
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("data", list);
|
||||
jo.put("message", "查询成功!");
|
||||
return jo;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public JSONObject needEmptyAxis(JSONObject param) {
|
||||
log.info("手持生箔下料: {}", param);
|
||||
// point_code, vehicle_code, is_call_empty, vehicle_type, workorder_id
|
||||
String pointCode = param.getString("point_code");
|
||||
String vehicleCode = param.getString("vehicle_code");
|
||||
String isCallEmpty = param.getString("is_call_empty");
|
||||
String vehicleType = param.getString("vehicle_type");
|
||||
String workOrderId = param.getString("workorder_id");
|
||||
if (GeneralDefinition.YES.equals(isCallEmpty) && ObjectUtil.isEmpty(vehicleType)) {
|
||||
throw new BadRequestException("收卷辊的类型不能为空!");
|
||||
}
|
||||
// 判断是否存在任务
|
||||
List<SchBaseTask> unFinishTasks = taskService.checkHaveTask(pointCode);
|
||||
// 判断是否存在对应的桁架任务
|
||||
List<SchBaseTask> unFinishRelatedTasks = taskService.checkHaveRelatedTaskInRequestParam(pointCode);
|
||||
if (unFinishTasks.size() > 0 || unFinishRelatedTasks.size() > 0) {
|
||||
log.error("点位 [{}] 已经存在任务!", pointCode);
|
||||
throw new BadRequestException("点位[" + pointCode + "]已经存在任务!");
|
||||
}
|
||||
// 获取生箔工单 01 -> 02
|
||||
PdmBiRawfoilworkorder rawfoilworkorder = rawfoilworkorderService.getById(workOrderId);
|
||||
rawfoilworkorder.setWind_roll(vehicleCode);
|
||||
rawfoilworkorder.setStatus("02");
|
||||
TaskUtils.setRawOrderUpdateByDefault(rawfoilworkorder);
|
||||
rawfoilworkorderService.updateById(rawfoilworkorder);
|
||||
// 判断是否呼叫空辊
|
||||
if (GeneralDefinition.YES.equals(isCallEmpty)) {
|
||||
// 创建桁架任务,之后创建AGV任务需要备注是四点任务
|
||||
} else {
|
||||
// 创建AGV任务,直接到烘箱的任务
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,22 +1,20 @@
|
||||
package org.nl.wms.pdm.bi.controller;
|
||||
|
||||
import java.util.Set;
|
||||
import java.util.Map;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.common.base.TableDataInfo;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.base.TableDataInfo;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.nl.common.logging.annotation.Log;
|
||||
import org.nl.wms.pdm.bi.dto.PdmBiRawfoilworkorderParam;
|
||||
import org.nl.wms.pdm.bi.service.IpdmBiRawfoilworkorderService;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
|
||||
/**
|
||||
@@ -48,7 +46,6 @@ public class PdmBiRawfoilworkorderController {
|
||||
return new ResponseEntity<>(TableDataInfo.build(pdmBiRawfoilworkorderService.query(whereJson, page)), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 条件查询
|
||||
*
|
||||
@@ -60,7 +57,6 @@ public class PdmBiRawfoilworkorderController {
|
||||
return new ResponseEntity<>(pdmBiRawfoilworkorderService.selectList(params), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 新增数据
|
||||
*
|
||||
@@ -74,7 +70,6 @@ public class PdmBiRawfoilworkorderController {
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 修改数据
|
||||
*
|
||||
@@ -89,7 +84,6 @@ public class PdmBiRawfoilworkorderController {
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 删除数据
|
||||
*
|
||||
@@ -104,7 +98,6 @@ public class PdmBiRawfoilworkorderController {
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
@Log("称重")
|
||||
@PostMapping("/confirm")
|
||||
public ResponseEntity<Object> confirm(@RequestBody JSONObject whereJson) {
|
||||
@@ -118,6 +111,5 @@ public class PdmBiRawfoilworkorderController {
|
||||
pdmBiRawfoilworkorderService.compelEnd(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
package org.nl.wms.pdm.bi.dao;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.io.Serializable;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.baomidou.mybatisplus.extension.activerecord.Model;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.extension.activerecord.Model;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
|
||||
/**
|
||||
@@ -23,190 +21,157 @@ public class PdmBiRawfoilworkorder extends Model<PdmBiRawfoilworkorder> {
|
||||
|
||||
private static final long serialVersionUID = -7739291296662381393L;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 工单标识
|
||||
*/
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
private String workorder_id;
|
||||
|
||||
|
||||
/**
|
||||
* 母卷号
|
||||
*/
|
||||
private String container_name;
|
||||
|
||||
|
||||
/**
|
||||
* 机台编码
|
||||
*/
|
||||
private String resource_name;
|
||||
|
||||
|
||||
/**
|
||||
* 生产工单
|
||||
*/
|
||||
private String mfg_order_name;
|
||||
|
||||
|
||||
/**
|
||||
* 产品编码
|
||||
*/
|
||||
private String product_name;
|
||||
|
||||
|
||||
/**
|
||||
* 产品名称
|
||||
*/
|
||||
private String description;
|
||||
|
||||
|
||||
/**
|
||||
* 理论长度
|
||||
*/
|
||||
private BigDecimal theory_height;
|
||||
|
||||
|
||||
/**
|
||||
* 设备生产速度
|
||||
*/
|
||||
private BigDecimal eqp_velocity;
|
||||
|
||||
|
||||
/**
|
||||
* 上卷开始时间
|
||||
*/
|
||||
private String up_coiler_date;
|
||||
|
||||
|
||||
/**
|
||||
* 是否重新更新
|
||||
*/
|
||||
private String is_reload_send;
|
||||
|
||||
|
||||
/**
|
||||
* 重量
|
||||
*/
|
||||
private BigDecimal productin_qty;
|
||||
|
||||
|
||||
/**
|
||||
* 开始时间
|
||||
*/
|
||||
private String realstart_time;
|
||||
|
||||
|
||||
/**
|
||||
* 结束时间
|
||||
*/
|
||||
private String realend_time;
|
||||
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
private String status;
|
||||
|
||||
|
||||
/**
|
||||
* 完成方式
|
||||
*/
|
||||
private String finish_type;
|
||||
|
||||
|
||||
/**
|
||||
* 车号
|
||||
*/
|
||||
private String agvno;
|
||||
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private Long create_id;
|
||||
|
||||
private String create_id;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private String create_name;
|
||||
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private String create_time;
|
||||
|
||||
|
||||
/**
|
||||
* 修改人
|
||||
*/
|
||||
private Long update_optid;
|
||||
|
||||
private String update_optid;
|
||||
|
||||
/**
|
||||
* 修改人
|
||||
*/
|
||||
private String update_optname;
|
||||
|
||||
|
||||
/**
|
||||
* 修改时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private String update_time;
|
||||
|
||||
|
||||
/**
|
||||
* 是否删除
|
||||
*/
|
||||
private String is_delete;
|
||||
|
||||
|
||||
/**
|
||||
* 生产区域
|
||||
*/
|
||||
private String product_area;
|
||||
|
||||
|
||||
/**
|
||||
* 点位编码
|
||||
*/
|
||||
private String point_code;
|
||||
|
||||
|
||||
/**
|
||||
* 请求烘烤
|
||||
* 是否烘烤
|
||||
*/
|
||||
private String is_baking;
|
||||
|
||||
|
||||
/**
|
||||
* 请求入半成品库
|
||||
*/
|
||||
private String is_instor;
|
||||
|
||||
/** 收卷辊 */
|
||||
private String wind_roll;
|
||||
|
||||
/** 类型:标箔、锂电 */
|
||||
private String order_type;
|
||||
|
||||
|
||||
/**
|
||||
* 获取主键值
|
||||
*
|
||||
* @return 主键值
|
||||
*/
|
||||
@Override
|
||||
protected Serializable pkVal() {
|
||||
return this.workorder_id;
|
||||
}
|
||||
/** 烘烤时间 */
|
||||
private String baking_time;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,36 +1,36 @@
|
||||
package org.nl.wms.pdm.bi.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.enums.WorkOrderStatusEnum;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.basedata.material.dao.MdMeMaterialbase;
|
||||
import org.nl.wms.basedata.material.service.ImdMeMaterialbaseService;
|
||||
import org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder;
|
||||
import org.nl.wms.pdm.bi.dto.PdmBiRawfoilworkorderParam;
|
||||
import org.nl.wms.pdm.bi.dao.mapper.PdmBiRawfoilworkorderMapper;
|
||||
import org.nl.wms.pdm.bi.dto.PdmBiRawfoilworkorderParam;
|
||||
import org.nl.wms.pdm.bi.service.IpdmBiRawfoilworkorderService;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import org.nl.wms.pdm.ivt.dao.StIvtSbpointivt;
|
||||
import org.nl.wms.pdm.ivt.dao.mapper.StIvtSbpointivtMapper;
|
||||
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.task.core.TaskStatus;
|
||||
import org.nl.wms.sch.task_manage.TaskStatus;
|
||||
import org.nl.wms.storage_manage.ios.enums.IOSEnum;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
@@ -48,10 +48,10 @@ import static org.nl.common.enums.WorkOrderStatusEnum.PRODUCT_STATUS;
|
||||
*
|
||||
* @since 2024-03-27
|
||||
*/
|
||||
@Service("pdmBiRawfoilworkorderService")
|
||||
@Slf4j
|
||||
@Service
|
||||
public class PdmBiRawfoilworkorderServiceImpl extends ServiceImpl<PdmBiRawfoilworkorderMapper, PdmBiRawfoilworkorder> implements IpdmBiRawfoilworkorderService {
|
||||
|
||||
|
||||
@Resource
|
||||
private PdmBiRawfoilworkorderMapper pdmBiRawfoilworkorderMapper;
|
||||
|
||||
@@ -61,7 +61,6 @@ public class PdmBiRawfoilworkorderServiceImpl extends ServiceImpl<PdmBiRawfoilwo
|
||||
private ImdMeMaterialbaseService materialBaseMapper;
|
||||
@Resource
|
||||
private SchBaseTaskMapper schBaseTaskMapper;
|
||||
|
||||
/**
|
||||
* 查询数据分页
|
||||
*
|
||||
@@ -134,7 +133,6 @@ public class PdmBiRawfoilworkorderServiceImpl extends ServiceImpl<PdmBiRawfoilwo
|
||||
pdmBiRawfoilworkorderMapper.updateById(getBasicInfo(params, false));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 业务参数校验
|
||||
*
|
||||
@@ -177,7 +175,6 @@ public class PdmBiRawfoilworkorderServiceImpl extends ServiceImpl<PdmBiRawfoilwo
|
||||
pdmBiRawfoilworkorderMapper.update(null, updateWrapper);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取实体基础信息
|
||||
*
|
||||
@@ -222,7 +219,6 @@ public class PdmBiRawfoilworkorderServiceImpl extends ServiceImpl<PdmBiRawfoilwo
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void confirm(JSONObject whereJson) {
|
||||
|
||||
@@ -27,7 +27,8 @@ public class StIvtSbpointivt extends Model<StIvtSbpointivt> {
|
||||
/**
|
||||
* 点位标识
|
||||
*/
|
||||
private Long point_id;
|
||||
@TableId(value = "point_id", type = IdType.NONE)
|
||||
private String point_id;
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -27,7 +27,8 @@ public class StIvtStpointivt extends Model<StIvtStpointivt> {
|
||||
/**
|
||||
* 点位标识
|
||||
*/
|
||||
private Long point_id;
|
||||
@TableId(value = "point_id")
|
||||
private String point_id;
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package org.nl.wms.pdm.ivt.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.wms.pdm.ivt.dao.StIvtSbpointivt;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.wms.pdm.ivt.dto.StIvtSbpointivtParam;
|
||||
|
||||
import java.util.List;
|
||||
@@ -59,7 +59,13 @@ public interface IstIvtSbpointivtService extends IService<StIvtSbpointivt> {
|
||||
*/
|
||||
void deleteAll(Set<String> ids);
|
||||
|
||||
|
||||
/**
|
||||
* 根据编码获取对应生箔点位
|
||||
* @param pointCode 点位编码
|
||||
* @param flag 是否判断禁用启用
|
||||
* @return /
|
||||
*/
|
||||
StIvtSbpointivt getByPointCode(String pointCode, boolean flag);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -3,27 +3,22 @@ package org.nl.wms.pdm.ivt.service.impl;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder;
|
||||
import org.nl.wms.pdm.ivt.dao.StIvtSbpointivt;
|
||||
import org.nl.wms.pdm.ivt.dto.StIvtSbpointivtParam;
|
||||
import org.nl.wms.pdm.ivt.dao.mapper.StIvtSbpointivtMapper;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import org.nl.wms.pdm.ivt.service.IstIvtSbpointivtService;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import org.nl.wms.storage_manage.ios.enums.IOSEnum;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.wms.pdm.ivt.dao.StIvtSbpointivt;
|
||||
import org.nl.wms.pdm.ivt.dao.mapper.StIvtSbpointivtMapper;
|
||||
import org.nl.wms.pdm.ivt.dto.StIvtSbpointivtParam;
|
||||
import org.nl.wms.pdm.ivt.service.IstIvtSbpointivtService;
|
||||
import org.nl.wms.storage_manage.ios.enums.IOSEnum;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
@@ -124,6 +119,14 @@ public class StIvtSbpointivtServiceImpl extends ServiceImpl<StIvtSbpointivtMappe
|
||||
stIvtSbpointivtMapper.update(null, updateWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public StIvtSbpointivt getByPointCode(String pointCode, boolean flag) {
|
||||
LambdaQueryWrapper<StIvtSbpointivt> lam = new QueryWrapper<StIvtSbpointivt>().lambda();
|
||||
lam.eq(StIvtSbpointivt::getPoint_code, pointCode)
|
||||
.eq(flag, StIvtSbpointivt::getIs_used, true);
|
||||
return getOne(lam);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取实体基础信息
|
||||
|
||||
@@ -17,7 +17,6 @@ import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
|
||||
import org.nl.wms.sch.group.service.dao.mapper.SchBaseVehiclematerialgroupMapper;
|
||||
import org.nl.wms.sch.group.service.dto.SchBaseVehiclematerialgroupQuery;
|
||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||
import org.nl.wms.sch.task_manage.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -6,6 +6,7 @@ import org.nl.common.domain.query.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
@@ -68,4 +69,22 @@ public interface ISchBasePointService extends IService<SchBasePoint> {
|
||||
* @param lock_ype 锁定类型
|
||||
*/
|
||||
void lockPoint(List<SchBasePoint> list, String lock_ype);
|
||||
|
||||
/**
|
||||
* 获取指定载具类型,并没有任务的收卷辊点位
|
||||
* @param vehicleType 载具类型
|
||||
* @return /
|
||||
*/
|
||||
List<SchBasePoint> getWindRollNotTaskPoints(String vehicleType);
|
||||
|
||||
/**
|
||||
* 根据条件获取点位
|
||||
* @param area 生产区域(车间)
|
||||
* @param region 区域
|
||||
* @param pointType 点位类型
|
||||
* @param pointStatus 点位状态
|
||||
* @param flag 是否校验启用状态
|
||||
* @return /
|
||||
*/
|
||||
List<SchBasePoint> getPointByConditions(String area, String region, String pointType, String pointStatus, @NotNull boolean flag);
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ public class SchBasePoint implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 点位编码 */
|
||||
/** 点位标识 */
|
||||
@TableId(value = "point_code", type = IdType.NONE)
|
||||
private String point_code;
|
||||
|
||||
@@ -42,9 +42,6 @@ public class SchBasePoint implements Serializable {
|
||||
/** 点位状态 */
|
||||
private String point_status;
|
||||
|
||||
/** 可以存放物料类型 */
|
||||
private String can_material_type;
|
||||
|
||||
/** 可以存放载具类型 */
|
||||
private String can_vehicle_type;
|
||||
|
||||
@@ -84,21 +81,18 @@ public class SchBasePoint implements Serializable {
|
||||
/** 出空顺序 */
|
||||
private Integer out_empty_seq;
|
||||
|
||||
/** 父点位 */
|
||||
private String parent_point_code;
|
||||
|
||||
/** 外部编码 */
|
||||
private String ext_point_code;
|
||||
|
||||
/** 进行中的任务编码 */
|
||||
private String ing_task_code;
|
||||
|
||||
/** 区域 */
|
||||
private String product_area;
|
||||
|
||||
/** 是否工单 */
|
||||
private Boolean is_has_workder;
|
||||
|
||||
/** 车间编码 */
|
||||
private String workshop_code;
|
||||
|
||||
/** 是否自动 */
|
||||
private Boolean is_auto;
|
||||
|
||||
@@ -152,7 +146,6 @@ public class SchBasePoint implements Serializable {
|
||||
@TableField(exist = false)
|
||||
private String record_id;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String device_code;
|
||||
|
||||
}
|
||||
|
||||
@@ -17,4 +17,11 @@ public interface SchBasePointMapper extends BaseMapper<SchBasePoint> {
|
||||
* @param used
|
||||
*/
|
||||
void batchChangeUsed(List<String> pointCodes, Boolean used);
|
||||
|
||||
/**
|
||||
* 获取指定载具类型,并没有任务的收卷辊点位
|
||||
* @param vehicleType 载具类型
|
||||
* @return /
|
||||
*/
|
||||
List<SchBasePoint> getWindRollNotTaskPoints(String vehicleType);
|
||||
}
|
||||
|
||||
@@ -12,4 +12,15 @@
|
||||
</foreach>
|
||||
</where>
|
||||
</update>
|
||||
<select id="getWindRollNotTaskPoints" resultType="org.nl.wms.sch.point.service.dao.SchBasePoint">
|
||||
SELECT p.*
|
||||
FROM sch_base_point p
|
||||
WHERE p.product_area = 'A1'
|
||||
AND p.point_type = '3'
|
||||
AND p.point_status = '2'
|
||||
AND p.vehicle_type = #{vehicleType}
|
||||
AND p.is_used = TRUE
|
||||
AND 0 = (SELECT COUNT(*) FROM sch_base_task t WHERE t.point_code1 = p.point_code AND t.task_status <![CDATA[<]]> '07')
|
||||
ORDER BY p.in_order_seq
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -6,6 +6,7 @@ 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.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
@@ -62,10 +63,8 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
|
||||
? Boolean.valueOf(whereJson.get("is_used").toString()) : null;
|
||||
String lock_type = ObjectUtil.isNotEmpty(whereJson.get("lock_type"))
|
||||
? String.valueOf(whereJson.get("lock_type").toString()) : null;
|
||||
Boolean parent_point = ObjectUtil.isNotEmpty(whereJson.get("parent_point"))
|
||||
? Boolean.valueOf(whereJson.get("parent_point").toString()) : false;
|
||||
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
||||
lam.eq(ObjectUtil.isNotEmpty(workshop_code), SchBasePoint::getWorkshop_code, workshop_code)
|
||||
lam.eq(ObjectUtil.isNotEmpty(workshop_code), SchBasePoint::getProduct_area, workshop_code)
|
||||
.and(ObjectUtil.isNotEmpty(blurry), la -> la.like(SchBasePoint::getPoint_code, blurry)
|
||||
.or().like(SchBasePoint::getPoint_name, blurry))
|
||||
.eq(ObjectUtil.isNotEmpty(region_code), SchBasePoint::getRegion_code, region_code)
|
||||
@@ -75,8 +74,7 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
|
||||
.eq(ObjectUtil.isNotEmpty(lock_type), SchBasePoint::getLock_type, lock_type)
|
||||
.orderByAsc(SchBasePoint::getRegion_code)
|
||||
.orderByAsc(SchBasePoint::getPoint_code)
|
||||
.orderByAsc(SchBasePoint::getPoint_type)
|
||||
.apply(parent_point, "point_code = parent_point_code");
|
||||
.orderByAsc(SchBasePoint::getPoint_type);
|
||||
IPage<SchBasePoint> pages = new Page<>(page.getPage() + 1, page.getSize());
|
||||
pointMapper.selectPage(pages, lam);
|
||||
// 可以存放的载具类型
|
||||
@@ -112,8 +110,8 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
|
||||
}
|
||||
|
||||
// 默认父类点位为自身
|
||||
if (ObjectUtil.isEmpty(entity.getParent_point_code())) {
|
||||
entity.setParent_point_code(entity.getPoint_code());
|
||||
if (ObjectUtil.isEmpty(entity.getDevice_code())) {
|
||||
entity.setDevice_code(entity.getPoint_code());
|
||||
}
|
||||
|
||||
if (ObjectUtil.isNotEmpty(entity.getCan_vehicle_types())) {
|
||||
@@ -211,4 +209,20 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
|
||||
this.updateBatchById(list);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SchBasePoint> getWindRollNotTaskPoints(String vehicleType) {
|
||||
return pointMapper.getWindRollNotTaskPoints(vehicleType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SchBasePoint> getPointByConditions(String area, String region, String pointType, String pointStatus, boolean flag) {
|
||||
LambdaQueryWrapper<SchBasePoint> lam = new QueryWrapper<SchBasePoint>().lambda();
|
||||
lam.eq(ObjectUtil.isNotEmpty(area), SchBasePoint::getProduct_area, area)
|
||||
.eq(ObjectUtil.isNotEmpty(region), SchBasePoint::getRegion_code, region)
|
||||
.eq(ObjectUtil.isNotEmpty(pointType), SchBasePoint::getPoint_type, pointType)
|
||||
.eq(ObjectUtil.isNotEmpty(pointStatus), SchBasePoint::getPoint_status, pointStatus)
|
||||
.eq(flag, SchBasePoint::getIs_used, true);
|
||||
return pointMapper.selectList(lam);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.wms.ext.acs.service.dto.to.BaseRequest;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task.service.dto.SchBaseTaskQuery;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
import org.nl.wms.sch.task_manage.TaskStatus;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -113,4 +113,19 @@ public interface ISchBaseTaskService extends IService<SchBaseTask> {
|
||||
* @return SchBaseTask
|
||||
*/
|
||||
SchBaseTask getByCode(String taskCode);
|
||||
|
||||
/**
|
||||
* 检测点位编码是否存在任务
|
||||
* @param code 点位编码
|
||||
* @return 任务
|
||||
*/
|
||||
List<SchBaseTask> checkHaveTask(String code);
|
||||
|
||||
/**
|
||||
* 判断是否存在对应的桁架任务
|
||||
* 参数like requestParam
|
||||
* @param param 校验的字符串
|
||||
* @return /
|
||||
*/
|
||||
List<SchBaseTask> checkHaveRelatedTaskInRequestParam(String param);
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@ public class SchBaseTask implements Serializable {
|
||||
private String task_code;
|
||||
|
||||
/** 任务类型 */
|
||||
@TableField(exist = false)
|
||||
private String task_type;
|
||||
|
||||
/** 任务状态 */
|
||||
@@ -93,7 +94,7 @@ public class SchBaseTask implements Serializable {
|
||||
private String response_param;
|
||||
|
||||
/** 生成区域 */
|
||||
private String workshop_code;
|
||||
private String product_area;
|
||||
|
||||
/** 外部数据 */
|
||||
private String ext_group_data;
|
||||
|
||||
@@ -121,7 +121,7 @@ public class SchBaseTaskconfig implements Serializable {
|
||||
private String sql_param;
|
||||
|
||||
|
||||
private String workshop_code;
|
||||
private String product_area;
|
||||
|
||||
|
||||
private String remark;
|
||||
|
||||
@@ -14,4 +14,8 @@ import java.util.List;
|
||||
public interface SchBaseTaskMapper extends BaseMapper<SchBaseTask> {
|
||||
|
||||
IPage<SchBaseTask> selectPageLeftJoin(IPage<SchBaseTask> pages, SchBaseTaskQuery whereJson, List<String> collect);
|
||||
|
||||
List<SchBaseTask> checkHaveTask(String code);
|
||||
|
||||
List<SchBaseTask> checkHaveRelatedTaskInRequestParam(String param);
|
||||
}
|
||||
|
||||
@@ -45,4 +45,21 @@
|
||||
</where>
|
||||
ORDER BY t.create_time DESC
|
||||
</select>
|
||||
<select id="checkHaveTask" resultType="org.nl.wms.sch.task.service.dao.SchBaseTask">
|
||||
SELECT *
|
||||
FROM sch_base_task
|
||||
WHERE task_status <![CDATA[ <= ]]> '071' AND task_status <![CDATA[ <> ]]> '07'
|
||||
AND ( point_code1 = #{code}
|
||||
OR point_code2 = #{code}
|
||||
OR point_code3 = #{code}
|
||||
OR point_code4 = #{code}
|
||||
)
|
||||
</select>
|
||||
<select id="checkHaveRelatedTaskInRequestParam" resultType="org.nl.wms.sch.task.service.dao.SchBaseTask">
|
||||
SELECT *
|
||||
FROM sch_base_task
|
||||
WHERE task_status <![CDATA[ <= ]]> '071'
|
||||
AND task_status <![CDATA[ <> ]]> '07'
|
||||
AND request_param LIKE '%${param}%'
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -14,8 +14,8 @@
|
||||
<if test="config.blurry != null">
|
||||
AND sc.config_name LIKE '%${config.blurry}%'
|
||||
</if>
|
||||
<if test="config.workshop_code != null">
|
||||
AND sc.workshop_code = #{config.workshop_code}
|
||||
<if test="config.product_area != null">
|
||||
AND sc.product_area = #{config.product_area}
|
||||
</if>
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -22,8 +22,8 @@ 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.service.dto.SchBaseTaskQuery;
|
||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
import org.nl.wms.sch.task_manage.task.TaskFactory;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
import org.nl.wms.sch.task_manage.TaskFactory;
|
||||
import org.nl.wms.sch.task_manage.TaskStatus;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -255,4 +255,14 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
return this.getOne(lam);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SchBaseTask> checkHaveTask(String code) {
|
||||
return schBaseTaskMapper.checkHaveTask(code);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SchBaseTask> checkHaveRelatedTaskInRequestParam(String param) {
|
||||
return schBaseTaskMapper.checkHaveRelatedTaskInRequestParam(param);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -17,8 +17,8 @@ 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.enums.TaskDirectionEnum;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
import org.nl.wms.sch.task_manage.constant.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum;
|
||||
import org.nl.wms.util.TaskUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -26,6 +26,8 @@ import org.springframework.stereotype.Component;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static org.nl.wms.sch.task_manage.constant.TaskConstant.*;
|
||||
|
||||
/**
|
||||
* @author ldjun
|
||||
* @version 1.0
|
||||
@@ -122,7 +124,7 @@ public abstract class AbstractTask {
|
||||
.eq(SchBaseTaskconfig::getConfig_code, config_code));
|
||||
taskDto.setPriority(taskConfig.getPriority());
|
||||
taskDto.setTask_type(taskConfig.getAcs_task_type());
|
||||
taskDto.setProduct_area(taskConfig.getWorkshop_code());
|
||||
taskDto.setProduct_area(taskConfig.getProduct_area());
|
||||
taskDto.setAgv_system_type(taskConfig.getAgv_system_type());
|
||||
taskDto.setRoute_plan_code(taskConfig.getRoute_plan_code());
|
||||
return taskDto;
|
||||
@@ -150,16 +152,6 @@ public abstract class AbstractTask {
|
||||
this.renotifyAcs(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新任务状态,暴露给外围使用
|
||||
* @param taskObj 任务信息
|
||||
* @param status 状态
|
||||
*/
|
||||
public void updateTaskStatus(JSONObject taskObj, TaskStatus status) {
|
||||
this.updateStatus(taskObj, status);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 自动生成任务
|
||||
*/
|
||||
@@ -169,12 +161,42 @@ public abstract class AbstractTask {
|
||||
|
||||
/**
|
||||
* 修改状态
|
||||
* 以下改为public会出现自动注入类出现问题
|
||||
*
|
||||
* @param taskObj 任务信息
|
||||
* @param task 任务信息
|
||||
* @param status 状态
|
||||
*/
|
||||
public abstract void updateStatus(JSONObject taskObj, TaskStatus status);
|
||||
public void updateStatus(JSONObject task, TaskStatus status) {
|
||||
String taskCode = task.getString("task_code");
|
||||
// 校验任务
|
||||
SchBaseTask taskObj = taskService.getByCode(taskCode);
|
||||
// 根据传来的类型去对任务进行操作
|
||||
if (status.equals(TaskStatus.EXECUTING)) {
|
||||
taskObj.setTask_status(TaskStatus.EXECUTING.getCode());
|
||||
taskObj.setRemark("执行中");
|
||||
taskObj.setCar_no(task.getString("car_no"));
|
||||
TaskUtils.setUpdateByAcs(taskObj);
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
if (status.equals(TaskStatus.FINISHED)) {
|
||||
finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS);
|
||||
}
|
||||
if (status.equals(TaskStatus.CANCELED)) {
|
||||
cancelTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 具体完成逻辑
|
||||
* @param taskObj 任务数据
|
||||
* @param autoAcs 完成枚举
|
||||
*/
|
||||
public abstract void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum autoAcs);
|
||||
/**
|
||||
* 具体完成逻辑
|
||||
* @param taskObj 任务数据
|
||||
* @param autoAcs 完成枚举
|
||||
*/
|
||||
public abstract void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum autoAcs);
|
||||
|
||||
|
||||
/**
|
||||
@@ -186,12 +208,14 @@ public abstract class AbstractTask {
|
||||
*/
|
||||
protected void setTaskPoint(SchBaseTaskconfig taskConfig, SchBaseTask task, String apply_point_code) {
|
||||
String taskDirection = taskConfig.getTask_direction();
|
||||
if (TaskDirectionEnum.SEND.getValue().equals(taskDirection)) {
|
||||
if (ObjectUtil.isEmpty(taskDirection)) {
|
||||
return;
|
||||
}
|
||||
if (VERIFY_START.equals(taskDirection)) {
|
||||
task.setPoint_code1(apply_point_code);
|
||||
} else {
|
||||
} else if (VERIFY_END.equals(taskDirection)) {
|
||||
task.setPoint_code2(apply_point_code);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -202,23 +226,21 @@ public abstract class AbstractTask {
|
||||
public void deliveryBeforeProcessing(SchBaseTask task, AcsTaskDto acsTaskDto) {
|
||||
}
|
||||
|
||||
/**
|
||||
* 强制结束完成任务
|
||||
*
|
||||
* @param task_code 任务标识
|
||||
* @return
|
||||
* @discription 强制结束完成任务
|
||||
* @author ldjun
|
||||
* @created 2020年6月19日 上午10:34:58
|
||||
*/
|
||||
public abstract void forceFinish(String task_code);
|
||||
public void forceFinish(String task_code) {
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
throw new BadRequestException("该任务不存在");
|
||||
}
|
||||
this.finishTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC);
|
||||
}
|
||||
|
||||
/**
|
||||
* 取消任务,货物搬回原点
|
||||
*
|
||||
* @param task_code
|
||||
*/
|
||||
public abstract void cancel(String task_code);
|
||||
public void cancel(String task_code) {
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
throw new BadRequestException("任务[" + task_code + "]不存在!");
|
||||
}
|
||||
this.cancelTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC);
|
||||
}
|
||||
|
||||
/**
|
||||
* 申请任务 - 暂时不用
|
||||
@@ -233,6 +255,7 @@ public abstract class AbstractTask {
|
||||
String applyPointCode = param.getString("device_code");
|
||||
String requestNo = param.getString("requestNo");
|
||||
String configCode = param.getString("config_code");
|
||||
String productArea = param.getString("product_area");
|
||||
|
||||
// 1、校验数据
|
||||
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
|
||||
@@ -248,11 +271,11 @@ public abstract class AbstractTask {
|
||||
Assert.isFalse(unFinishTasksByTaskConfig.size() >= tcmn, LangProcess.msg("common_maxTaskTip", applyPointCode));
|
||||
|
||||
// 校验同个点位,同种任务是否多次请求创建任务(固定只能1个任务)
|
||||
List<SchBaseTask> applyPointTask = taskService.findUnFinishTasksByTaskConfig(
|
||||
taskConfig.getConfig_code(), applyPointCode, taskConfig.getTask_direction());
|
||||
if (applyPointTask.size() == 1) {
|
||||
throw new BadRequestException(LangProcess.msg("common_taskCreatedTip", applyPointCode));
|
||||
}
|
||||
// List<SchBaseTask> applyPointTask = taskService.findUnFinishTasksByTaskConfig(
|
||||
// taskConfig.getConfig_code(), applyPointCode, taskConfig.getTask_direction());
|
||||
// if (applyPointTask.size() == 1) {
|
||||
// throw new BadRequestException(LangProcess.msg("common_taskCreatedTip", applyPointCode));
|
||||
// }
|
||||
|
||||
String vehicleType = param.getString("vehicle_type");
|
||||
String vehicleCode = TaskUtils.defaultVehicleCode(param.getString("vehicle_code"));
|
||||
@@ -266,6 +289,7 @@ public abstract class AbstractTask {
|
||||
task.setCreate_mode(ObjectUtil.isNotEmpty(param.getString("create_mode"))
|
||||
? param.getString("create_mode") : GeneralDefinition.ACS_CREATION);
|
||||
task.setVehicle_code(vehicleCode);
|
||||
task.setProduct_area(productArea);
|
||||
task.setVehicle_qty(param.getInteger("vehicle_qty"));
|
||||
task.setVehicle_type(vehicleType);
|
||||
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package org.nl.wms.sch.task_manage.task;
|
||||
package org.nl.wms.sch.task_manage;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
@@ -16,8 +16,7 @@ import org.nl.wms.ext.acs.service.dto.ResultForAcs;
|
||||
import org.nl.wms.ext.acs.service.dto.to.wms.AcsResponse;
|
||||
import org.nl.wms.sch.task.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task_manage.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
import org.nl.wms.sch.task_manage.constant.GeneralDefinition;
|
||||
import org.nl.wms.util.URLEnum;
|
||||
import org.springframework.http.HttpStatus;
|
||||
|
||||
@@ -48,7 +47,7 @@ public class AcsUtil {
|
||||
JSONObject jo = list.getJSONObject(j);
|
||||
String product_area = jo.getString("product_area");
|
||||
if (StrUtil.isEmpty(product_area)) {
|
||||
throw new BadRequestException("区域不能为空!下发信息:" + jo.toString());
|
||||
throw new BadRequestException("区域不能为空!下发信息:" + jo);
|
||||
}
|
||||
String acs_url = URLEnum.find(product_area);
|
||||
if (StrUtil.isEmpty(acs_url)) {
|
||||
@@ -1,4 +1,4 @@
|
||||
package org.nl.wms.sch.task_manage.task.core;
|
||||
package org.nl.wms.sch.task_manage;
|
||||
|
||||
/**
|
||||
* @author ldjun
|
||||
@@ -1,4 +1,4 @@
|
||||
package org.nl.wms.sch.task_manage.task;
|
||||
package org.nl.wms.sch.task_manage;
|
||||
|
||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
import org.springframework.beans.BeansException;
|
||||
@@ -1,4 +1,4 @@
|
||||
package org.nl.wms.sch.task_manage.task.core;
|
||||
package org.nl.wms.sch.task_manage;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -30,4 +30,4 @@ public enum TaskOperateType {
|
||||
private String code;
|
||||
private String name;
|
||||
private String desc;
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package org.nl.wms.sch.task_manage.task.core;
|
||||
package org.nl.wms.sch.task_manage;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -1,4 +1,4 @@
|
||||
package org.nl.wms.sch.task_manage.task;
|
||||
package org.nl.wms.sch.task_manage;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
@@ -1,4 +1,4 @@
|
||||
package org.nl.wms.sch.task_manage;
|
||||
package org.nl.wms.sch.task_manage.constant;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
@@ -27,6 +27,10 @@ public class GeneralDefinition {
|
||||
public static final String AUTO_CREATION = "1";
|
||||
/**ACS创建**/
|
||||
public static final String ACS_CREATION = "2";
|
||||
/** 手持创建 */
|
||||
public static final String PDA_CREATION = "3";
|
||||
/** 任务完成追加创建 */
|
||||
public static final String TASK_CREATION = "4";
|
||||
// 请求方向
|
||||
/**ACS->LMS**/
|
||||
public static final String ACS_LMS = "1";
|
||||
@@ -0,0 +1,11 @@
|
||||
package org.nl.wms.sch.task_manage.constant;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 任务相关的常量
|
||||
* @Date: 2024/8/7
|
||||
*/
|
||||
public class TaskConstant {
|
||||
public static final String VERIFY_START = "1";
|
||||
public static final String VERIFY_END = "2";
|
||||
}
|
||||
@@ -1,47 +0,0 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -35,7 +35,8 @@ import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
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.sch.task_manage.TaskStatus;
|
||||
import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum;
|
||||
import org.nl.wms.storage_manage.ios.enums.IOSEnum;
|
||||
import org.nl.wms.util.TaskUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -143,7 +144,7 @@ public class CallEmpReelTask extends AbstractTask {
|
||||
task.setTask_code(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
task.setHandle_class(THIS_CLASS);
|
||||
task.setTask_status(StrUtil.isBlank(task.getTask_status()) ? TaskStatus.START_AND_POINT.getCode() : task.getTask_status());
|
||||
task.setWorkshop_code(StrUtil.isEmpty(task.getWorkshop_code())? "A1" : task.getWorkshop_code());
|
||||
task.setProduct_area(StrUtil.isEmpty(task.getProduct_area())? "A1" : task.getProduct_area());
|
||||
Dict dict = sysDictService.getOne(new LambdaQueryWrapper<Dict>()
|
||||
.eq(Dict::getCode, "task_priority")
|
||||
.eq(Dict::getLabel, task.getTask_type()));
|
||||
@@ -368,6 +369,16 @@ public class CallEmpReelTask extends AbstractTask {
|
||||
taskService.updateById(schBaseTask);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum autoAcs) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum autoAcs) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void forceFinish(String taskId) {
|
||||
|
||||
@@ -30,7 +30,8 @@ import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
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.sch.task_manage.TaskStatus;
|
||||
import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum;
|
||||
import org.nl.wms.storage_manage.ios.enums.IOSEnum;
|
||||
import org.nl.wms.util.TaskUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -136,7 +137,7 @@ public class CoolCutTask extends AbstractTask {
|
||||
? 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.setWorkshop_code(StrUtil.isEmpty(task.getWorkshop_code())? "A1" : task.getWorkshop_code());
|
||||
task.setProduct_area(StrUtil.isEmpty(task.getProduct_area())? "A1" : task.getProduct_area());
|
||||
if ("010301".equals(task.getTask_type())) {
|
||||
task.setAcs_task_type("2");
|
||||
} else {
|
||||
@@ -330,6 +331,16 @@ public class CoolCutTask extends AbstractTask {
|
||||
taskService.updateById(schBaseTask);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum autoAcs) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum autoAcs) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void forceFinish(String taskId) {
|
||||
|
||||
@@ -30,7 +30,8 @@ import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
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.sch.task_manage.TaskStatus;
|
||||
import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum;
|
||||
import org.nl.wms.storage_manage.ios.enums.IOSEnum;
|
||||
import org.nl.wms.util.TaskUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -134,7 +135,7 @@ public class InCoolIvtTask extends AbstractTask {
|
||||
task.setAcs_task_type("3");
|
||||
task.setTask_status(StrUtil.isEmpty(task.getTask_status())
|
||||
? TaskStatus.START_AND_POINT.getCode() : task.getTask_status());
|
||||
task.setWorkshop_code(StrUtil.isEmpty(task.getWorkshop_code()) ? "A1" : task.getWorkshop_code());
|
||||
task.setProduct_area(StrUtil.isEmpty(task.getProduct_area()) ? "A1" : task.getProduct_area());
|
||||
//根据类型获取对应的任务优先级
|
||||
Dict dict = sysDictService.getOne(new LambdaQueryWrapper<Dict>().eq(Dict::getCode, "task_priority").eq(Dict::getLabel, task.getTask_type()));
|
||||
if (dict == null) {
|
||||
@@ -241,6 +242,16 @@ public class InCoolIvtTask extends AbstractTask {
|
||||
taskService.updateById(schBaseTask);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum autoAcs) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum autoAcs) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void forceFinish(String taskId) {
|
||||
|
||||
@@ -37,7 +37,8 @@ import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
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.sch.task_manage.TaskStatus;
|
||||
import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum;
|
||||
import org.nl.wms.storage_manage.ios.enums.IOSEnum;
|
||||
import org.nl.wms.util.TaskUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -128,7 +129,7 @@ public class InHotTask extends AbstractTask {
|
||||
task.setHandle_class(THIS_CLASS);
|
||||
task.setTask_status(StrUtil.isEmpty(task.getTask_status())
|
||||
? TaskStatus.START_AND_POINT.getCode() : task.getTask_status());
|
||||
task.setWorkshop_code(StrUtil.isEmpty(task.getWorkshop_code()) ? "A1" : task.getWorkshop_code());
|
||||
task.setProduct_area(StrUtil.isEmpty(task.getProduct_area()) ? "A1" : task.getProduct_area());
|
||||
|
||||
//根据类型获取对应的任务优先级
|
||||
Dict dict = sysDictService.getOne(new LambdaQueryWrapper<Dict>().eq(Dict::getCode, "task_priority").eq(Dict::getLabel, task.getTask_type()));
|
||||
@@ -335,6 +336,16 @@ public class InHotTask extends AbstractTask {
|
||||
taskService.updateById(schBaseTask);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum autoAcs) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum autoAcs) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void forceFinish(String taskId) {
|
||||
|
||||
@@ -26,7 +26,8 @@ import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
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.sch.task_manage.TaskStatus;
|
||||
import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum;
|
||||
import org.nl.wms.storage_manage.ios.enums.IOSEnum;
|
||||
import org.nl.wms.util.TaskUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -128,7 +129,7 @@ public class OutHotTask extends AbstractTask {
|
||||
task.setAcs_task_type("6");
|
||||
task.setTask_status(StrUtil.isEmpty(task.getTask_status())
|
||||
? TaskStatus.START_AND_POINT.getCode() : task.getTask_status());
|
||||
task.setWorkshop_code(StrUtil.isEmpty(task.getWorkshop_code())? "A1" : task.getWorkshop_code());
|
||||
task.setProduct_area(StrUtil.isEmpty(task.getProduct_area())? "A1" : task.getProduct_area());
|
||||
//根据类型获取对应的任务优先级
|
||||
Dict dict = sysDictService.getOne(new LambdaQueryWrapper<Dict>().eq(Dict::getCode, "task_priority").eq(Dict::getLabel, task.getTask_type()));
|
||||
if (dict == null) {
|
||||
@@ -220,6 +221,16 @@ public class OutHotTask extends AbstractTask {
|
||||
taskService.updateById(schBaseTask);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum autoAcs) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum autoAcs) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void forceFinish(String taskId) {
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
package org.nl.wms.sch.task_manage.tasks.raw;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.wms.sch.task.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
import org.nl.wms.sch.task_manage.TaskStatus;
|
||||
import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import static org.nl.wms.util.TaskUtils.setUpdateByPC;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 生箔呼叫空收卷辊AGV任务类
|
||||
* @Date: 2024/8/7
|
||||
*/
|
||||
@Slf4j
|
||||
@Component(value = "RawCallRollAGVTask")
|
||||
public class RawCallRollAGVTask extends AbstractTask {
|
||||
private final String THIS_CLASS = RawCallRollAGVTask.class.getName();
|
||||
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
|
||||
@Override
|
||||
public void create() throws BadRequestException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createCompletion(SchBaseTask task) {
|
||||
// 需要校验是两点任务还是四点任务
|
||||
// up_task_code:上一个任务code
|
||||
// start_point_code:收卷辊库桁架出口
|
||||
String requestParam = task.getRequest_param();
|
||||
JSONObject requestObj = JSONObject.parseObject(requestParam);
|
||||
String startPointCode = requestObj.getString("start_point_code");
|
||||
// 创建任务
|
||||
task.setPoint_code1(startPointCode);
|
||||
task.setHandle_class(THIS_CLASS);
|
||||
task.setTask_status(TaskStatus.START_AND_POINT.getCode());
|
||||
setUpdateByPC(task);
|
||||
taskService.save(task);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum autoAcs) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum autoAcs) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,130 @@
|
||||
package org.nl.wms.sch.task_manage.tasks.raw;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.wms.pdm.ivt.dao.StIvtSbpointivt;
|
||||
import org.nl.wms.pdm.ivt.service.IstIvtSbpointivtService;
|
||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch.task.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
import org.nl.wms.sch.task_manage.constant.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.TaskStatus;
|
||||
import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum;
|
||||
import org.nl.wms.util.TaskUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
import static org.nl.wms.util.PointUtils.clearPoint;
|
||||
import static org.nl.wms.util.TaskUtils.setUpdateByPC;
|
||||
import static org.nl.wms.util.TaskUtils.checkTaskOptionStatus;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 生箔呼叫空收卷辊桁架任务类
|
||||
* @Date: 2024/8/7
|
||||
*/
|
||||
@Slf4j
|
||||
@Component(value = "RawCallRollTrussTask")
|
||||
public class RawCallRollTrussTask extends AbstractTask {
|
||||
private final String THIS_CLASS = RawCallRollTrussTask.class.getName();
|
||||
@Autowired
|
||||
private ISchBasePointService pointService;
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
@Autowired
|
||||
private RawCallRollAGVTask rawCallRollAGVTask;
|
||||
@Resource
|
||||
private IstIvtSbpointivtService stIvtSbpointivtService;
|
||||
@Override
|
||||
public void create() throws BadRequestException {
|
||||
// 此任务不走apply路口创建任务
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createCompletion(SchBaseTask task) {
|
||||
log.info("生箔手持呼叫空辊任务创建, 参数:{}", task);
|
||||
// 查找同类型的起点, 并且没有任务
|
||||
List<SchBasePoint> startPoints = pointService.getWindRollNotTaskPoints(task.getVehicle_type());
|
||||
if (startPoints.size() == 0) {
|
||||
throw new BadRequestException("找不到同规格的收卷辊!");
|
||||
}
|
||||
// 终点为出口,不校验是否占用
|
||||
List<SchBasePoint> endPoints = pointService.getPointByConditions("A1", "A1-SJGK", "2", null, true);
|
||||
if (endPoints.size() == 0) {
|
||||
throw new BadRequestException("收卷辊出口查询失败!");
|
||||
}
|
||||
// 获取点
|
||||
SchBasePoint startPoint = startPoints.get(0);
|
||||
SchBasePoint endPoint = endPoints.get(0);
|
||||
// 创建任务
|
||||
task.setHandle_class(THIS_CLASS);
|
||||
task.setPoint_code1(startPoint.getPoint_code());
|
||||
task.setPoint_code2(endPoint.getPoint_code());
|
||||
task.setVehicle_code(startPoint.getVehicle_code());
|
||||
task.setTask_status(TaskStatus.START_AND_POINT.getCode());
|
||||
setUpdateByPC(task);
|
||||
taskService.save(task);
|
||||
log.info("任务创建成功:{}", task);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
||||
checkTaskOptionStatus(taskObj);
|
||||
// 完成任务:1、清空起点数据,2、创建AGV任务
|
||||
JSONObject taskParam = new JSONObject();
|
||||
// 获取参数
|
||||
String requestParam = taskObj.getRequest_param();
|
||||
// 其中device_code代表AGV的终点(生箔点位)
|
||||
JSONObject requestObj = JSONObject.parseObject(requestParam);
|
||||
String endAgvPoint = requestObj.getString("device_code");
|
||||
// 1、清空起点数据
|
||||
String startPoint = taskObj.getPoint_code1();
|
||||
SchBasePoint startPointObj = pointService.getById(startPoint);
|
||||
// 设置载具类型、点位状态、释放点位
|
||||
if (ObjectUtil.isNotEmpty(startPointObj)) {
|
||||
// 起点清空
|
||||
clearPoint(startPointObj);
|
||||
}
|
||||
log.info("点位清除完毕,清楚后的数据:{}", startPointObj);
|
||||
StIvtSbpointivt startAgvPointObj = stIvtSbpointivtService.getByPointCode(endAgvPoint, false);
|
||||
if (ObjectUtil.isEmpty(startAgvPointObj)) {
|
||||
throw new BadRequestException("点位[" + endAgvPoint + "]不存在!");
|
||||
}
|
||||
log.info("桁架任务完毕,开始创建 [{}] 的AGV任务", endAgvPoint);
|
||||
// 2、创建AGV任务
|
||||
taskParam.put("vehicle_code", taskObj.getVehicle_code());
|
||||
taskParam.put("vehicle_type", taskObj.getVehicle_type());
|
||||
taskParam.put("device_code", endAgvPoint);
|
||||
taskParam.put("start_point_code", taskObj.getPoint_code2());
|
||||
taskParam.put("config_code", "RawCallRollAGVTask");
|
||||
taskParam.put("up_task_code", taskObj.getTask_code());
|
||||
taskParam.put("create_mode", GeneralDefinition.TASK_CREATION);
|
||||
log.info("创建AGV任务的参数:{}", taskParam);
|
||||
rawCallRollAGVTask.apply(taskParam);
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskObj.setFinished_type(taskFinishedType.getCode());
|
||||
TaskUtils.setUpdateByType(taskObj, taskFinishedType);
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
||||
checkTaskOptionStatus(taskObj);
|
||||
// 取消
|
||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
taskObj.setRemark(GeneralDefinition.TASK_CANCEL);
|
||||
taskObj.setFinished_type(taskFinishedType.getCode());
|
||||
TaskUtils.setUpdateByType(taskObj, taskFinishedType);
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package org.nl.wms.sch.task_manage.tasks.raw;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 生箔下料AGV任务, 这里有四点或者两点任务
|
||||
* @Date: 2024/8/7
|
||||
*/
|
||||
@Slf4j
|
||||
@Component(value = "RawDownAGVTask")
|
||||
public class RawDownAGVTask extends AbstractTask {
|
||||
@Override
|
||||
public void create() throws BadRequestException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum autoAcs) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum autoAcs) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -11,7 +11,7 @@ import org.nl.system.service.notice.impl.SysNoticeServiceImpl;
|
||||
import org.nl.system.service.param.dao.Param;
|
||||
import org.nl.system.service.param.impl.SysParamServiceImpl;
|
||||
import org.nl.wms.ext.mes.service.dto.ResultForMes;
|
||||
import org.nl.wms.sch.task_manage.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.constant.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum;
|
||||
|
||||
/**
|
||||
|
||||
@@ -7,7 +7,7 @@ import org.nl.common.utils.SecurityUtils;
|
||||
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.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.constant.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
|
||||
import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum;
|
||||
|
||||
@@ -38,7 +38,7 @@ public class PointUtils {
|
||||
|
||||
/**
|
||||
* 清空点位
|
||||
*
|
||||
* 会直接更新数据,使用时候不需要在update
|
||||
* @param point
|
||||
*/
|
||||
public static void clearPoint(SchBasePoint point) {
|
||||
@@ -67,7 +67,7 @@ public class PointUtils {
|
||||
}
|
||||
SchBasePointServiceImpl pointService = SpringContextHolder.getBean(SchBasePointServiceImpl.class);
|
||||
// 获取父点位
|
||||
String parentPointCode = point.getParent_point_code();
|
||||
String parentPointCode = point.getDevice_code();
|
||||
SchBasePoint basePoint = pointService.getById(parentPointCode);
|
||||
point.setVehicle_type("");
|
||||
point.setVehicle_code("");
|
||||
|
||||
@@ -5,14 +5,16 @@ 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.common.utils.SecurityUtils;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder;
|
||||
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
|
||||
import org.nl.wms.sch.task.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task_manage.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.constant.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
import org.nl.wms.sch.task_manage.TaskStatus;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -39,6 +41,11 @@ public class TaskUtils {
|
||||
taskObj.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
taskObj.setCreate_time(DateUtil.now());
|
||||
}
|
||||
public static void setRawOrderUpdateByDefault(PdmBiRawfoilworkorder order) {
|
||||
order.setUpdate_optid(SecurityUtils.getCurrentUserId());
|
||||
order.setUpdate_optname(SecurityUtils.getCurrentNickName());
|
||||
order.setUpdate_time(DateUtil.now());
|
||||
}
|
||||
|
||||
public static void setCreateByAcsOrPda(SchBaseTask taskObj, JSONObject param) {
|
||||
// 如果是人工创建,会带个用户过来
|
||||
@@ -207,4 +214,18 @@ public class TaskUtils {
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 任务操作前校验,判断是否完成或取消
|
||||
* <p>注:此处直接抛出异常,如果不需要请捕获<p/>
|
||||
* @param taskObj 任务对象实体
|
||||
*/
|
||||
public static void checkTaskOptionStatus(SchBaseTask taskObj) {
|
||||
if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) {
|
||||
throw new BadRequestException("任务已完成,请勿多次请求!");
|
||||
}
|
||||
if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) {
|
||||
throw new BadRequestException("任务已被取消!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ spring:
|
||||
autoconfigure:
|
||||
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
|
||||
messages:
|
||||
basename: language/login/login,language/error/error,language/buss/buss,language/task/task
|
||||
basename: language/login/login,language/error/error,language/buss/buss,language/task/common
|
||||
datasource:
|
||||
druid:
|
||||
initial-size: 5 #初始化时建立物理连接的个数
|
||||
|
||||
Reference in New Issue
Block a user