包片上料
This commit is contained in:
@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.config.MapOf;
|
||||
import org.nl.wms.ext.service.WmsToAcsService;
|
||||
import org.nl.wms.pdm.service.IPdmBdWorkorderService;
|
||||
import org.nl.wms.pdm.service.dao.PdmBdWorkorder;
|
||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||
@@ -19,6 +20,7 @@ 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.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
|
||||
import org.nl.wms.sch.task_manage.enums.GroupStatusEnum;
|
||||
import org.nl.wms.sch.task_manage.task.TaskType;
|
||||
@@ -58,7 +60,9 @@ public class BPSLTask extends AbstractTask {
|
||||
@Autowired
|
||||
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
|
||||
@Autowired
|
||||
private PointMapper yzMapper;
|
||||
private PointMapper pointMapper;
|
||||
@Autowired
|
||||
private WmsToAcsService wmsToAcsService;
|
||||
|
||||
@Override
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
@@ -69,72 +73,64 @@ public class BPSLTask extends AbstractTask {
|
||||
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
|
||||
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
|
||||
for (SchBaseTask task : tasks) {
|
||||
List<String> nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")).collect(Collectors.toList());
|
||||
// 找终点
|
||||
// 找起点
|
||||
SchBasePoint nextPoint = pointService.getOne(new LambdaQueryWrapper<SchBasePoint>()
|
||||
.eq(SchBasePoint::getPoint_code, task.getPoint_code2()));
|
||||
String extGroupData = task.getExt_group_data();
|
||||
JSONObject jsonObject = JSONObject.parseObject(extGroupData);
|
||||
SchBasePoint point = findNextPoint(nextRegionStr, jsonObject);
|
||||
String materialType = jsonObject.getString("material_type");
|
||||
SchBasePoint point = findNextPoint(jsonObject);
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
task.setRemark("未找到所需点位!");
|
||||
taskService.update(task);
|
||||
// 消息通知
|
||||
log.info("包片上料未找到当前符合条件的点位materialType:{},",materialType);
|
||||
continue;
|
||||
}
|
||||
// 设置终点并修改创建成功状态
|
||||
task.setPoint_code2(point.getPoint_code());
|
||||
// 设置起点并修改创建成功状态
|
||||
task.setPoint_code1(point.getPoint_code());
|
||||
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||
task.setRemark("");
|
||||
taskService.update(task);
|
||||
|
||||
//发起任务时先把点位占用,防止发起重复任务
|
||||
point.setIng_task_code(task.getTask_code());
|
||||
point.setVehicle_qty(point.getVehicle_qty() - 1);
|
||||
point.setVehicle_type(materialType);
|
||||
pointService.update(point);
|
||||
|
||||
//下发
|
||||
// this.renotifyAcs(task);
|
||||
this.renotifyAcs(task);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否加急:是->入窑口,否->双层缓存线
|
||||
* 判断目标点位
|
||||
* 从10-1查找可以物料一致且有货的点位
|
||||
*
|
||||
* @param nextRegionStr
|
||||
* @param extGroupData
|
||||
* @return
|
||||
*/
|
||||
private SchBasePoint findNextPoint(List<String> nextRegionStr, JSONObject extGroupData) {
|
||||
// 需要获取nextRegionStr
|
||||
if (nextRegionStr.size() < 2) {
|
||||
throw new BadRequestException("压制送料任务的配置文件有错!");
|
||||
private SchBasePoint findNextPoint(JSONObject extGroupData) {
|
||||
String regionCode = "HCQ1";
|
||||
String materialType = extGroupData.getString("material_type");
|
||||
List<SchBasePoint> schBasePointList = pointMapper.findPointByRegion(regionCode,"2");
|
||||
for(int i=schBasePointList.size()-1;i>=0;i--){
|
||||
SchBasePoint schBasePoint=schBasePointList.get(i);
|
||||
if (schBasePoint.getVehicle_qty()!=0
|
||||
&&ObjectUtil.isEmpty(schBasePoint.getIng_task_code())
|
||||
&&(ObjectUtil.isEmpty(schBasePoint.getVehicle_type())||materialType.equals(schBasePoint.getVehicle_type()))){
|
||||
log.info("包片上料任务找到当前符合条件的缓存区位置{}",schBasePoint.getPoint_code());
|
||||
return schBasePoint;
|
||||
}
|
||||
}
|
||||
String regionCode = nextRegionStr.get(0);
|
||||
// 当前设备的工单
|
||||
String workorderCode = extGroupData.getString("workorder_code");
|
||||
PdmBdWorkorder one = ObjectUtil.isNotEmpty(workorderCode)
|
||||
? workorderService.getOne(new LambdaQueryWrapper<PdmBdWorkorder>()
|
||||
.eq(PdmBdWorkorder::getWorkorder_code, workorderCode))
|
||||
: null;
|
||||
if (one == null) {
|
||||
throw new BadRequestException("压制机的工单不能为空!");
|
||||
}
|
||||
// 判断是否加急,加急则去窑口,不加急就是去双层缓存输送线
|
||||
if (one.getIs_urgent()) {
|
||||
regionCode = nextRegionStr.get(1); // 去窑区
|
||||
}
|
||||
List<SchBasePoint> pointForYZSL = yzMapper.findPointForYZSL(new JSONObject(
|
||||
MapOf.of("regionCode", regionCode, "pointType", ENTRANCE)));
|
||||
return ObjectUtil.isNotEmpty(pointForYZSL) ? pointForYZSL.get(0) : null;
|
||||
// ??
|
||||
// LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
||||
// lam.eq(SchBasePoint::getRegion_code, regionCode)
|
||||
// .eq(SchBasePoint::getPoint_type, ENTRANCE)
|
||||
// .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住
|
||||
// .or()
|
||||
// .eq(SchBasePoint::getIng_task_code, ""))
|
||||
// .eq(SchBasePoint::getIs_used, true);
|
||||
// List<SchBasePoint> schBasePoints = pointService.list(lam);
|
||||
// return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null;
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1.取货完毕后起点减少最后一份组盘,,并且该组盘视为已结束
|
||||
* 2.包片机LMS不记录点位信息,由人工对组盘进行操作
|
||||
*/
|
||||
@Override
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
protected void updateStatus(String task_code, TaskStatus status) {
|
||||
@@ -146,18 +142,6 @@ public class BPSLTask extends AbstractTask {
|
||||
if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) {
|
||||
throw new BadRequestException("该任务已取消!");
|
||||
}
|
||||
// 获取参数
|
||||
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();
|
||||
PdmBdWorkorder workorderCode = ObjectUtil.isNotEmpty(extGroupData.getString("workorder_code"))
|
||||
? workorderService.getOne(new LambdaQueryWrapper<PdmBdWorkorder>()
|
||||
.eq(PdmBdWorkorder::getWorkorder_code, extGroupData.getString("workorder_code")))
|
||||
: null;
|
||||
String startPoint = taskObj.getPoint_code1(); // 获取起点
|
||||
String endPoint = taskObj.getPoint_code2(); // 获取终点
|
||||
SchBasePoint startPointObj = pointService.getById(startPoint);
|
||||
@@ -168,46 +152,40 @@ public class BPSLTask extends AbstractTask {
|
||||
taskObj.setRemark("执行中");
|
||||
}
|
||||
if (status.equals(TaskStatus.FINISHED)) { // 完成
|
||||
// 起点清空
|
||||
if (ObjectUtil.isNotEmpty(startPointObj)) {
|
||||
PointUtils.clearPoint(startPointObj);
|
||||
List<String> vehicleCodeList = Arrays.stream(startPointObj.getVehicle_code().split(",")).collect(Collectors.toList());
|
||||
String vehicleCode=vehicleCodeList.get(vehicleCodeList.size()-1);
|
||||
SchBaseVehiclematerialgroup one = vehiclematerialgroupService.getOne(new LambdaQueryWrapper<SchBaseVehiclematerialgroup>()
|
||||
.eq(SchBaseVehiclematerialgroup::getVehicle_code, vehicleCode)
|
||||
.eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status,
|
||||
GroupBindMaterialStatusEnum.BOUND.getValue()));
|
||||
if (ObjectUtil.isEmpty(one)) {
|
||||
throw new BadRequestException(vehicleCode + " => " + startPointObj.getVehicle_type() + "的组盘信息未找到");
|
||||
}
|
||||
// 终点解锁
|
||||
endPointObj.setIng_task_code("");
|
||||
pointService.update(endPointObj);
|
||||
// 要把数据存到组盘表 -> 改造公共方法,返回id
|
||||
SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
|
||||
groupEntity.setGroup_id(IdUtil.getSnowflake(1,1).nextIdStr());
|
||||
groupEntity.setCreate_id("2");
|
||||
groupEntity.setCreate_name("ACS");
|
||||
groupEntity.setCreate_time(DateUtil.now());
|
||||
groupEntity.setMaterial_id(ObjectUtil.isNotEmpty(workorderCode)
|
||||
? workorderCode.getMaterial_id()
|
||||
: "");
|
||||
groupEntity.setStanding_time(ObjectUtil.isNotEmpty(workorderCode)
|
||||
? workorderCode.getStanding_time()
|
||||
: 0);
|
||||
groupEntity.setMaterial_weight(ObjectUtil.isNotEmpty(extGroupData)
|
||||
? extGroupData.getBigDecimal("material_qty")
|
||||
: BigDecimal.valueOf(0));
|
||||
groupEntity.setWorkorder_code(ObjectUtil.isNotEmpty(workorderCode)
|
||||
? workorderCode.getWorkorder_code()
|
||||
: "");
|
||||
groupEntity.setVehicle_code(vehicle_code);
|
||||
groupEntity.setVehicle_type(taskObj.getVehicle_type());
|
||||
groupEntity.setPoint_code(startPoint);
|
||||
groupEntity.setPoint_name(startPointObj.getPoint_name());
|
||||
groupEntity.setPcsn( DateUtil.format(DateUtil.date(), "yyyyMMdd"));
|
||||
groupEntity.setInstorage_time(DateUtil.now());
|
||||
groupEntity.setTask_code(taskObj.getTask_code());
|
||||
groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定
|
||||
groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。
|
||||
groupEntity.setIs_delete(false);
|
||||
vehiclematerialgroupService.save(groupEntity);
|
||||
|
||||
one.setTask_code(taskObj.getTask_code());
|
||||
one.setPoint_code(endPointObj.getPoint_code()); // 当前位置
|
||||
one.setPoint_name(endPointObj.getPoint_name());
|
||||
one.setMove_way(one.getMove_way()==null?"":(one.getMove_way() + " -> ") + endPointObj.getPoint_code());
|
||||
one.setGroup_bind_material_status(GroupBindMaterialStatusEnum.UNBOUND.getValue());
|
||||
one.setUpdate_id(GeneralDefinition.ACS_ID);
|
||||
one.setUpdate_name(GeneralDefinition.ACS_NAME);
|
||||
one.setUpdate_time(DateUtil.now());
|
||||
vehiclematerialgroupService.updateById(one);
|
||||
// 起点清空
|
||||
if (vehicleCodeList.size()==1) {
|
||||
startPointObj.setVehicle_code("");
|
||||
}else{
|
||||
StringBuilder vehicle_code=new StringBuilder();
|
||||
for(int i=0;i<=vehicleCodeList.size()-2;i++){
|
||||
vehicle_code.append(vehicleCodeList.get(i)).append(',');
|
||||
}
|
||||
startPointObj.setVehicle_code(vehicle_code.toString());
|
||||
}
|
||||
startPointObj.setIng_task_code("");
|
||||
startPointObj.setUpdate_time(DateUtil.now());
|
||||
pointService.updateById(startPointObj);
|
||||
// 任务完成
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskObj.setGroup_id(groupEntity.getGroup_id());
|
||||
taskObj.setGroup_id(one.getGroup_id());
|
||||
taskObj.setRemark("任务完成");
|
||||
}
|
||||
if (status.equals(TaskStatus.CANCELED)) { // 取消
|
||||
@@ -216,6 +194,12 @@ public class BPSLTask extends AbstractTask {
|
||||
endPointObj.setIng_task_code("");
|
||||
pointService.update(endPointObj);
|
||||
}
|
||||
// 起点解锁
|
||||
if (ObjectUtil.isNotEmpty(startPointObj)) {
|
||||
startPointObj.setIng_task_code("");
|
||||
startPointObj.setVehicle_qty(startPointObj.getVehicle_qty()+1);
|
||||
pointService.update(endPointObj);
|
||||
}
|
||||
taskObj.setRemark("任务取消");
|
||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.config.MapOf;
|
||||
import org.nl.wms.ext.service.WmsToAcsService;
|
||||
import org.nl.wms.pdm.service.IPdmBdWorkorderService;
|
||||
import org.nl.wms.pdm.service.dao.PdmBdWorkorder;
|
||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||
@@ -58,168 +59,24 @@ public class KGHJRKTask extends AbstractTask {
|
||||
@Autowired
|
||||
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
|
||||
@Autowired
|
||||
private PointMapper yzMapper;
|
||||
private PointMapper pointMapper;
|
||||
@Autowired
|
||||
private WmsToAcsService wmsToAcsService;
|
||||
|
||||
@Override
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
protected void create() throws BadRequestException {
|
||||
// 获取任务
|
||||
List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
|
||||
// 配置信息
|
||||
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
|
||||
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
|
||||
for (SchBaseTask task : tasks) {
|
||||
List<String> nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")).collect(Collectors.toList());
|
||||
// 找终点
|
||||
String extGroupData = task.getExt_group_data();
|
||||
JSONObject jsonObject = JSONObject.parseObject(extGroupData);
|
||||
SchBasePoint point = findNextPoint(nextRegionStr, jsonObject);
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
task.setRemark("未找到所需点位!");
|
||||
taskService.update(task);
|
||||
// 消息通知
|
||||
continue;
|
||||
}
|
||||
// 设置终点并修改创建成功状态
|
||||
task.setPoint_code2(point.getPoint_code());
|
||||
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||
task.setRemark("");
|
||||
taskService.update(task);
|
||||
|
||||
point.setIng_task_code(task.getTask_code());
|
||||
pointService.update(point);
|
||||
|
||||
//下发
|
||||
// this.renotifyAcs(task);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否加急:是->入窑口,否->双层缓存线
|
||||
*
|
||||
* @param nextRegionStr
|
||||
* @param extGroupData
|
||||
* @return
|
||||
*/
|
||||
private SchBasePoint findNextPoint(List<String> nextRegionStr, JSONObject extGroupData) {
|
||||
// 需要获取nextRegionStr
|
||||
if (nextRegionStr.size() < 2) {
|
||||
throw new BadRequestException("压制送料任务的配置文件有错!");
|
||||
}
|
||||
String regionCode = nextRegionStr.get(0);
|
||||
// 当前设备的工单
|
||||
String workorderCode = extGroupData.getString("workorder_code");
|
||||
PdmBdWorkorder one = ObjectUtil.isNotEmpty(workorderCode)
|
||||
? workorderService.getOne(new LambdaQueryWrapper<PdmBdWorkorder>()
|
||||
.eq(PdmBdWorkorder::getWorkorder_code, workorderCode))
|
||||
: null;
|
||||
if (one == null) {
|
||||
throw new BadRequestException("压制机的工单不能为空!");
|
||||
}
|
||||
// 判断是否加急,加急则去窑口,不加急就是去双层缓存输送线
|
||||
if (one.getIs_urgent()) {
|
||||
regionCode = nextRegionStr.get(1); // 去窑区
|
||||
}
|
||||
List<SchBasePoint> pointForYZSL = yzMapper.findPointForYZSL(new JSONObject(
|
||||
MapOf.of("regionCode", regionCode, "pointType", ENTRANCE)));
|
||||
return ObjectUtil.isNotEmpty(pointForYZSL) ? pointForYZSL.get(0) : null;
|
||||
// ??
|
||||
// LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
||||
// lam.eq(SchBasePoint::getRegion_code, regionCode)
|
||||
// .eq(SchBasePoint::getPoint_type, ENTRANCE)
|
||||
// .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住
|
||||
// .or()
|
||||
// .eq(SchBasePoint::getIng_task_code, ""))
|
||||
// .eq(SchBasePoint::getIs_used, true);
|
||||
// List<SchBasePoint> schBasePoints = pointService.list(lam);
|
||||
// return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null;
|
||||
|
||||
private SchBasePoint findNextPoint(SchBasePoint startPoint) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
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("该任务已取消!");
|
||||
}
|
||||
// 获取参数
|
||||
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();
|
||||
PdmBdWorkorder workorderCode = ObjectUtil.isNotEmpty(extGroupData.getString("workorder_code"))
|
||||
? workorderService.getOne(new LambdaQueryWrapper<PdmBdWorkorder>()
|
||||
.eq(PdmBdWorkorder::getWorkorder_code, extGroupData.getString("workorder_code")))
|
||||
: null;
|
||||
String startPoint = taskObj.getPoint_code1(); // 获取起点
|
||||
String endPoint = taskObj.getPoint_code2(); // 获取终点
|
||||
SchBasePoint startPointObj = pointService.getById(startPoint);
|
||||
SchBasePoint endPointObj = pointService.getById(endPoint);
|
||||
// 根据传来的类型去对任务进行操作
|
||||
if (status.equals(TaskStatus.EXECUTING)) { // 执行中
|
||||
taskObj.setTask_status(TaskStatus.EXECUTING.getCode());
|
||||
taskObj.setRemark("执行中");
|
||||
}
|
||||
if (status.equals(TaskStatus.FINISHED)) { // 完成
|
||||
// 起点清空
|
||||
if (ObjectUtil.isNotEmpty(startPointObj)) {
|
||||
PointUtils.clearPoint(startPointObj);
|
||||
}
|
||||
// 终点解锁
|
||||
endPointObj.setIng_task_code("");
|
||||
pointService.update(endPointObj);
|
||||
// 要把数据存到组盘表 -> 改造公共方法,返回id
|
||||
SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
|
||||
groupEntity.setGroup_id(IdUtil.getSnowflake(1,1).nextIdStr());
|
||||
groupEntity.setCreate_id("2");
|
||||
groupEntity.setCreate_name("ACS");
|
||||
groupEntity.setCreate_time(DateUtil.now());
|
||||
groupEntity.setMaterial_id(ObjectUtil.isNotEmpty(workorderCode)
|
||||
? workorderCode.getMaterial_id()
|
||||
: "");
|
||||
groupEntity.setStanding_time(ObjectUtil.isNotEmpty(workorderCode)
|
||||
? workorderCode.getStanding_time()
|
||||
: 0);
|
||||
groupEntity.setMaterial_weight(ObjectUtil.isNotEmpty(extGroupData)
|
||||
? extGroupData.getBigDecimal("material_qty")
|
||||
: BigDecimal.valueOf(0));
|
||||
groupEntity.setWorkorder_code(ObjectUtil.isNotEmpty(workorderCode)
|
||||
? workorderCode.getWorkorder_code()
|
||||
: "");
|
||||
groupEntity.setVehicle_code(vehicle_code);
|
||||
groupEntity.setVehicle_type(taskObj.getVehicle_type());
|
||||
groupEntity.setPoint_code(startPoint);
|
||||
groupEntity.setPoint_name(startPointObj.getPoint_name());
|
||||
groupEntity.setPcsn( DateUtil.format(DateUtil.date(), "yyyyMMdd"));
|
||||
groupEntity.setInstorage_time(DateUtil.now());
|
||||
groupEntity.setTask_code(taskObj.getTask_code());
|
||||
groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定
|
||||
groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。
|
||||
groupEntity.setIs_delete(false);
|
||||
vehiclematerialgroupService.save(groupEntity);
|
||||
|
||||
// 任务完成
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskObj.setGroup_id(groupEntity.getGroup_id());
|
||||
taskObj.setRemark("任务完成");
|
||||
}
|
||||
if (status.equals(TaskStatus.CANCELED)) { // 取消
|
||||
// 终点解锁
|
||||
if (ObjectUtil.isNotEmpty(endPointObj)) {
|
||||
endPointObj.setIng_task_code("");
|
||||
pointService.update(endPointObj);
|
||||
}
|
||||
taskObj.setRemark("任务取消");
|
||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
}
|
||||
taskService.update(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -231,4 +88,4 @@ public class KGHJRKTask extends AbstractTask {
|
||||
public void cancel(String task_code) {
|
||||
this.updateStatus(task_code, TaskStatus.CANCELED);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -78,7 +78,7 @@ public class MJXLTask extends AbstractTask {
|
||||
task.setRemark("未找到所需点位!");
|
||||
taskService.update(task);
|
||||
// 消息通知
|
||||
log.info("未找到当前符合条件的点位materialType:{},",materialType);
|
||||
log.info("满架下料未找到当前符合条件的点位materialType:{},",materialType);
|
||||
continue;
|
||||
}
|
||||
// 设置终点并修改创建成功状态
|
||||
@@ -206,6 +206,7 @@ public class MJXLTask extends AbstractTask {
|
||||
groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定
|
||||
groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。
|
||||
groupEntity.setIs_delete(false);
|
||||
groupEntity.setMove_way(startPoint);
|
||||
vehiclematerialgroupService.save(groupEntity);
|
||||
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.config.MapOf;
|
||||
import org.nl.wms.ext.service.WmsToAcsService;
|
||||
import org.nl.wms.pdm.service.IPdmBdWorkorderService;
|
||||
import org.nl.wms.pdm.service.dao.PdmBdWorkorder;
|
||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||
@@ -58,168 +59,24 @@ public class TBXBKJTask extends AbstractTask {
|
||||
@Autowired
|
||||
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
|
||||
@Autowired
|
||||
private PointMapper yzMapper;
|
||||
private PointMapper pointMapper;
|
||||
@Autowired
|
||||
private WmsToAcsService wmsToAcsService;
|
||||
|
||||
@Override
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
protected void create() throws BadRequestException {
|
||||
// 获取任务
|
||||
List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
|
||||
// 配置信息
|
||||
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
|
||||
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
|
||||
for (SchBaseTask task : tasks) {
|
||||
List<String> nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")).collect(Collectors.toList());
|
||||
// 找终点
|
||||
String extGroupData = task.getExt_group_data();
|
||||
JSONObject jsonObject = JSONObject.parseObject(extGroupData);
|
||||
SchBasePoint point = findNextPoint(nextRegionStr, jsonObject);
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
task.setRemark("未找到所需点位!");
|
||||
taskService.update(task);
|
||||
// 消息通知
|
||||
continue;
|
||||
}
|
||||
// 设置终点并修改创建成功状态
|
||||
task.setPoint_code2(point.getPoint_code());
|
||||
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||
task.setRemark("");
|
||||
taskService.update(task);
|
||||
|
||||
point.setIng_task_code(task.getTask_code());
|
||||
pointService.update(point);
|
||||
|
||||
//下发
|
||||
// this.renotifyAcs(task);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否加急:是->入窑口,否->双层缓存线
|
||||
*
|
||||
* @param nextRegionStr
|
||||
* @param extGroupData
|
||||
* @return
|
||||
*/
|
||||
private SchBasePoint findNextPoint(List<String> nextRegionStr, JSONObject extGroupData) {
|
||||
// 需要获取nextRegionStr
|
||||
if (nextRegionStr.size() < 2) {
|
||||
throw new BadRequestException("压制送料任务的配置文件有错!");
|
||||
}
|
||||
String regionCode = nextRegionStr.get(0);
|
||||
// 当前设备的工单
|
||||
String workorderCode = extGroupData.getString("workorder_code");
|
||||
PdmBdWorkorder one = ObjectUtil.isNotEmpty(workorderCode)
|
||||
? workorderService.getOne(new LambdaQueryWrapper<PdmBdWorkorder>()
|
||||
.eq(PdmBdWorkorder::getWorkorder_code, workorderCode))
|
||||
: null;
|
||||
if (one == null) {
|
||||
throw new BadRequestException("压制机的工单不能为空!");
|
||||
}
|
||||
// 判断是否加急,加急则去窑口,不加急就是去双层缓存输送线
|
||||
if (one.getIs_urgent()) {
|
||||
regionCode = nextRegionStr.get(1); // 去窑区
|
||||
}
|
||||
List<SchBasePoint> pointForYZSL = yzMapper.findPointForYZSL(new JSONObject(
|
||||
MapOf.of("regionCode", regionCode, "pointType", ENTRANCE)));
|
||||
return ObjectUtil.isNotEmpty(pointForYZSL) ? pointForYZSL.get(0) : null;
|
||||
// ??
|
||||
// LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
||||
// lam.eq(SchBasePoint::getRegion_code, regionCode)
|
||||
// .eq(SchBasePoint::getPoint_type, ENTRANCE)
|
||||
// .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住
|
||||
// .or()
|
||||
// .eq(SchBasePoint::getIng_task_code, ""))
|
||||
// .eq(SchBasePoint::getIs_used, true);
|
||||
// List<SchBasePoint> schBasePoints = pointService.list(lam);
|
||||
// return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null;
|
||||
|
||||
private SchBasePoint findNextPoint(SchBasePoint startPoint) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
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("该任务已取消!");
|
||||
}
|
||||
// 获取参数
|
||||
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();
|
||||
PdmBdWorkorder workorderCode = ObjectUtil.isNotEmpty(extGroupData.getString("workorder_code"))
|
||||
? workorderService.getOne(new LambdaQueryWrapper<PdmBdWorkorder>()
|
||||
.eq(PdmBdWorkorder::getWorkorder_code, extGroupData.getString("workorder_code")))
|
||||
: null;
|
||||
String startPoint = taskObj.getPoint_code1(); // 获取起点
|
||||
String endPoint = taskObj.getPoint_code2(); // 获取终点
|
||||
SchBasePoint startPointObj = pointService.getById(startPoint);
|
||||
SchBasePoint endPointObj = pointService.getById(endPoint);
|
||||
// 根据传来的类型去对任务进行操作
|
||||
if (status.equals(TaskStatus.EXECUTING)) { // 执行中
|
||||
taskObj.setTask_status(TaskStatus.EXECUTING.getCode());
|
||||
taskObj.setRemark("执行中");
|
||||
}
|
||||
if (status.equals(TaskStatus.FINISHED)) { // 完成
|
||||
// 起点清空
|
||||
if (ObjectUtil.isNotEmpty(startPointObj)) {
|
||||
PointUtils.clearPoint(startPointObj);
|
||||
}
|
||||
// 终点解锁
|
||||
endPointObj.setIng_task_code("");
|
||||
pointService.update(endPointObj);
|
||||
// 要把数据存到组盘表 -> 改造公共方法,返回id
|
||||
SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
|
||||
groupEntity.setGroup_id(IdUtil.getSnowflake(1,1).nextIdStr());
|
||||
groupEntity.setCreate_id("2");
|
||||
groupEntity.setCreate_name("ACS");
|
||||
groupEntity.setCreate_time(DateUtil.now());
|
||||
groupEntity.setMaterial_id(ObjectUtil.isNotEmpty(workorderCode)
|
||||
? workorderCode.getMaterial_id()
|
||||
: "");
|
||||
groupEntity.setStanding_time(ObjectUtil.isNotEmpty(workorderCode)
|
||||
? workorderCode.getStanding_time()
|
||||
: 0);
|
||||
groupEntity.setMaterial_weight(ObjectUtil.isNotEmpty(extGroupData)
|
||||
? extGroupData.getBigDecimal("material_qty")
|
||||
: BigDecimal.valueOf(0));
|
||||
groupEntity.setWorkorder_code(ObjectUtil.isNotEmpty(workorderCode)
|
||||
? workorderCode.getWorkorder_code()
|
||||
: "");
|
||||
groupEntity.setVehicle_code(vehicle_code);
|
||||
groupEntity.setVehicle_type(taskObj.getVehicle_type());
|
||||
groupEntity.setPoint_code(startPoint);
|
||||
groupEntity.setPoint_name(startPointObj.getPoint_name());
|
||||
groupEntity.setPcsn( DateUtil.format(DateUtil.date(), "yyyyMMdd"));
|
||||
groupEntity.setInstorage_time(DateUtil.now());
|
||||
groupEntity.setTask_code(taskObj.getTask_code());
|
||||
groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定
|
||||
groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。
|
||||
groupEntity.setIs_delete(false);
|
||||
vehiclematerialgroupService.save(groupEntity);
|
||||
|
||||
// 任务完成
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskObj.setGroup_id(groupEntity.getGroup_id());
|
||||
taskObj.setRemark("任务完成");
|
||||
}
|
||||
if (status.equals(TaskStatus.CANCELED)) { // 取消
|
||||
// 终点解锁
|
||||
if (ObjectUtil.isNotEmpty(endPointObj)) {
|
||||
endPointObj.setIng_task_code("");
|
||||
pointService.update(endPointObj);
|
||||
}
|
||||
taskObj.setRemark("任务取消");
|
||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
}
|
||||
taskService.update(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -231,4 +88,4 @@ public class TBXBKJTask extends AbstractTask {
|
||||
public void cancel(String task_code) {
|
||||
this.updateStatus(task_code, TaskStatus.CANCELED);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.config.MapOf;
|
||||
import org.nl.wms.ext.service.WmsToAcsService;
|
||||
import org.nl.wms.pdm.service.IPdmBdWorkorderService;
|
||||
import org.nl.wms.pdm.service.dao.PdmBdWorkorder;
|
||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||
@@ -58,168 +59,24 @@ public class XSCKTask extends AbstractTask {
|
||||
@Autowired
|
||||
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
|
||||
@Autowired
|
||||
private PointMapper yzMapper;
|
||||
private PointMapper pointMapper;
|
||||
@Autowired
|
||||
private WmsToAcsService wmsToAcsService;
|
||||
|
||||
@Override
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
protected void create() throws BadRequestException {
|
||||
// 获取任务
|
||||
List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
|
||||
// 配置信息
|
||||
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
|
||||
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
|
||||
for (SchBaseTask task : tasks) {
|
||||
List<String> nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")).collect(Collectors.toList());
|
||||
// 找终点
|
||||
String extGroupData = task.getExt_group_data();
|
||||
JSONObject jsonObject = JSONObject.parseObject(extGroupData);
|
||||
SchBasePoint point = findNextPoint(nextRegionStr, jsonObject);
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
task.setRemark("未找到所需点位!");
|
||||
taskService.update(task);
|
||||
// 消息通知
|
||||
continue;
|
||||
}
|
||||
// 设置终点并修改创建成功状态
|
||||
task.setPoint_code2(point.getPoint_code());
|
||||
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||
task.setRemark("");
|
||||
taskService.update(task);
|
||||
|
||||
point.setIng_task_code(task.getTask_code());
|
||||
pointService.update(point);
|
||||
|
||||
//下发
|
||||
// this.renotifyAcs(task);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否加急:是->入窑口,否->双层缓存线
|
||||
*
|
||||
* @param nextRegionStr
|
||||
* @param extGroupData
|
||||
* @return
|
||||
*/
|
||||
private SchBasePoint findNextPoint(List<String> nextRegionStr, JSONObject extGroupData) {
|
||||
// 需要获取nextRegionStr
|
||||
if (nextRegionStr.size() < 2) {
|
||||
throw new BadRequestException("压制送料任务的配置文件有错!");
|
||||
}
|
||||
String regionCode = nextRegionStr.get(0);
|
||||
// 当前设备的工单
|
||||
String workorderCode = extGroupData.getString("workorder_code");
|
||||
PdmBdWorkorder one = ObjectUtil.isNotEmpty(workorderCode)
|
||||
? workorderService.getOne(new LambdaQueryWrapper<PdmBdWorkorder>()
|
||||
.eq(PdmBdWorkorder::getWorkorder_code, workorderCode))
|
||||
: null;
|
||||
if (one == null) {
|
||||
throw new BadRequestException("压制机的工单不能为空!");
|
||||
}
|
||||
// 判断是否加急,加急则去窑口,不加急就是去双层缓存输送线
|
||||
if (one.getIs_urgent()) {
|
||||
regionCode = nextRegionStr.get(1); // 去窑区
|
||||
}
|
||||
List<SchBasePoint> pointForYZSL = yzMapper.findPointForYZSL(new JSONObject(
|
||||
MapOf.of("regionCode", regionCode, "pointType", ENTRANCE)));
|
||||
return ObjectUtil.isNotEmpty(pointForYZSL) ? pointForYZSL.get(0) : null;
|
||||
// ??
|
||||
// LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
||||
// lam.eq(SchBasePoint::getRegion_code, regionCode)
|
||||
// .eq(SchBasePoint::getPoint_type, ENTRANCE)
|
||||
// .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住
|
||||
// .or()
|
||||
// .eq(SchBasePoint::getIng_task_code, ""))
|
||||
// .eq(SchBasePoint::getIs_used, true);
|
||||
// List<SchBasePoint> schBasePoints = pointService.list(lam);
|
||||
// return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null;
|
||||
|
||||
private SchBasePoint findNextPoint(SchBasePoint startPoint) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
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("该任务已取消!");
|
||||
}
|
||||
// 获取参数
|
||||
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();
|
||||
PdmBdWorkorder workorderCode = ObjectUtil.isNotEmpty(extGroupData.getString("workorder_code"))
|
||||
? workorderService.getOne(new LambdaQueryWrapper<PdmBdWorkorder>()
|
||||
.eq(PdmBdWorkorder::getWorkorder_code, extGroupData.getString("workorder_code")))
|
||||
: null;
|
||||
String startPoint = taskObj.getPoint_code1(); // 获取起点
|
||||
String endPoint = taskObj.getPoint_code2(); // 获取终点
|
||||
SchBasePoint startPointObj = pointService.getById(startPoint);
|
||||
SchBasePoint endPointObj = pointService.getById(endPoint);
|
||||
// 根据传来的类型去对任务进行操作
|
||||
if (status.equals(TaskStatus.EXECUTING)) { // 执行中
|
||||
taskObj.setTask_status(TaskStatus.EXECUTING.getCode());
|
||||
taskObj.setRemark("执行中");
|
||||
}
|
||||
if (status.equals(TaskStatus.FINISHED)) { // 完成
|
||||
// 起点清空
|
||||
if (ObjectUtil.isNotEmpty(startPointObj)) {
|
||||
PointUtils.clearPoint(startPointObj);
|
||||
}
|
||||
// 终点解锁
|
||||
endPointObj.setIng_task_code("");
|
||||
pointService.update(endPointObj);
|
||||
// 要把数据存到组盘表 -> 改造公共方法,返回id
|
||||
SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
|
||||
groupEntity.setGroup_id(IdUtil.getSnowflake(1,1).nextIdStr());
|
||||
groupEntity.setCreate_id("2");
|
||||
groupEntity.setCreate_name("ACS");
|
||||
groupEntity.setCreate_time(DateUtil.now());
|
||||
groupEntity.setMaterial_id(ObjectUtil.isNotEmpty(workorderCode)
|
||||
? workorderCode.getMaterial_id()
|
||||
: "");
|
||||
groupEntity.setStanding_time(ObjectUtil.isNotEmpty(workorderCode)
|
||||
? workorderCode.getStanding_time()
|
||||
: 0);
|
||||
groupEntity.setMaterial_weight(ObjectUtil.isNotEmpty(extGroupData)
|
||||
? extGroupData.getBigDecimal("material_qty")
|
||||
: BigDecimal.valueOf(0));
|
||||
groupEntity.setWorkorder_code(ObjectUtil.isNotEmpty(workorderCode)
|
||||
? workorderCode.getWorkorder_code()
|
||||
: "");
|
||||
groupEntity.setVehicle_code(vehicle_code);
|
||||
groupEntity.setVehicle_type(taskObj.getVehicle_type());
|
||||
groupEntity.setPoint_code(startPoint);
|
||||
groupEntity.setPoint_name(startPointObj.getPoint_name());
|
||||
groupEntity.setPcsn( DateUtil.format(DateUtil.date(), "yyyyMMdd"));
|
||||
groupEntity.setInstorage_time(DateUtil.now());
|
||||
groupEntity.setTask_code(taskObj.getTask_code());
|
||||
groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定
|
||||
groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。
|
||||
groupEntity.setIs_delete(false);
|
||||
vehiclematerialgroupService.save(groupEntity);
|
||||
|
||||
// 任务完成
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskObj.setGroup_id(groupEntity.getGroup_id());
|
||||
taskObj.setRemark("任务完成");
|
||||
}
|
||||
if (status.equals(TaskStatus.CANCELED)) { // 取消
|
||||
// 终点解锁
|
||||
if (ObjectUtil.isNotEmpty(endPointObj)) {
|
||||
endPointObj.setIng_task_code("");
|
||||
pointService.update(endPointObj);
|
||||
}
|
||||
taskObj.setRemark("任务取消");
|
||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
}
|
||||
taskService.update(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -231,4 +88,4 @@ public class XSCKTask extends AbstractTask {
|
||||
public void cancel(String task_code) {
|
||||
this.updateStatus(task_code, TaskStatus.CANCELED);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.config.MapOf;
|
||||
import org.nl.wms.ext.service.WmsToAcsService;
|
||||
import org.nl.wms.pdm.service.IPdmBdWorkorderService;
|
||||
import org.nl.wms.pdm.service.dao.PdmBdWorkorder;
|
||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||
@@ -58,168 +59,24 @@ public class ZJBZKDDTask extends AbstractTask {
|
||||
@Autowired
|
||||
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
|
||||
@Autowired
|
||||
private PointMapper yzMapper;
|
||||
private PointMapper pointMapper;
|
||||
@Autowired
|
||||
private WmsToAcsService wmsToAcsService;
|
||||
|
||||
@Override
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
protected void create() throws BadRequestException {
|
||||
// 获取任务
|
||||
List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
|
||||
// 配置信息
|
||||
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
|
||||
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
|
||||
for (SchBaseTask task : tasks) {
|
||||
List<String> nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")).collect(Collectors.toList());
|
||||
// 找终点
|
||||
String extGroupData = task.getExt_group_data();
|
||||
JSONObject jsonObject = JSONObject.parseObject(extGroupData);
|
||||
SchBasePoint point = findNextPoint(nextRegionStr, jsonObject);
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
task.setRemark("未找到所需点位!");
|
||||
taskService.update(task);
|
||||
// 消息通知
|
||||
continue;
|
||||
}
|
||||
// 设置终点并修改创建成功状态
|
||||
task.setPoint_code2(point.getPoint_code());
|
||||
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||
task.setRemark("");
|
||||
taskService.update(task);
|
||||
|
||||
point.setIng_task_code(task.getTask_code());
|
||||
pointService.update(point);
|
||||
|
||||
//下发
|
||||
// this.renotifyAcs(task);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否加急:是->入窑口,否->双层缓存线
|
||||
*
|
||||
* @param nextRegionStr
|
||||
* @param extGroupData
|
||||
* @return
|
||||
*/
|
||||
private SchBasePoint findNextPoint(List<String> nextRegionStr, JSONObject extGroupData) {
|
||||
// 需要获取nextRegionStr
|
||||
if (nextRegionStr.size() < 2) {
|
||||
throw new BadRequestException("压制送料任务的配置文件有错!");
|
||||
}
|
||||
String regionCode = nextRegionStr.get(0);
|
||||
// 当前设备的工单
|
||||
String workorderCode = extGroupData.getString("workorder_code");
|
||||
PdmBdWorkorder one = ObjectUtil.isNotEmpty(workorderCode)
|
||||
? workorderService.getOne(new LambdaQueryWrapper<PdmBdWorkorder>()
|
||||
.eq(PdmBdWorkorder::getWorkorder_code, workorderCode))
|
||||
: null;
|
||||
if (one == null) {
|
||||
throw new BadRequestException("压制机的工单不能为空!");
|
||||
}
|
||||
// 判断是否加急,加急则去窑口,不加急就是去双层缓存输送线
|
||||
if (one.getIs_urgent()) {
|
||||
regionCode = nextRegionStr.get(1); // 去窑区
|
||||
}
|
||||
List<SchBasePoint> pointForYZSL = yzMapper.findPointForYZSL(new JSONObject(
|
||||
MapOf.of("regionCode", regionCode, "pointType", ENTRANCE)));
|
||||
return ObjectUtil.isNotEmpty(pointForYZSL) ? pointForYZSL.get(0) : null;
|
||||
// ??
|
||||
// LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
||||
// lam.eq(SchBasePoint::getRegion_code, regionCode)
|
||||
// .eq(SchBasePoint::getPoint_type, ENTRANCE)
|
||||
// .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住
|
||||
// .or()
|
||||
// .eq(SchBasePoint::getIng_task_code, ""))
|
||||
// .eq(SchBasePoint::getIs_used, true);
|
||||
// List<SchBasePoint> schBasePoints = pointService.list(lam);
|
||||
// return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null;
|
||||
|
||||
private SchBasePoint findNextPoint(SchBasePoint startPoint) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
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("该任务已取消!");
|
||||
}
|
||||
// 获取参数
|
||||
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();
|
||||
PdmBdWorkorder workorderCode = ObjectUtil.isNotEmpty(extGroupData.getString("workorder_code"))
|
||||
? workorderService.getOne(new LambdaQueryWrapper<PdmBdWorkorder>()
|
||||
.eq(PdmBdWorkorder::getWorkorder_code, extGroupData.getString("workorder_code")))
|
||||
: null;
|
||||
String startPoint = taskObj.getPoint_code1(); // 获取起点
|
||||
String endPoint = taskObj.getPoint_code2(); // 获取终点
|
||||
SchBasePoint startPointObj = pointService.getById(startPoint);
|
||||
SchBasePoint endPointObj = pointService.getById(endPoint);
|
||||
// 根据传来的类型去对任务进行操作
|
||||
if (status.equals(TaskStatus.EXECUTING)) { // 执行中
|
||||
taskObj.setTask_status(TaskStatus.EXECUTING.getCode());
|
||||
taskObj.setRemark("执行中");
|
||||
}
|
||||
if (status.equals(TaskStatus.FINISHED)) { // 完成
|
||||
// 起点清空
|
||||
if (ObjectUtil.isNotEmpty(startPointObj)) {
|
||||
PointUtils.clearPoint(startPointObj);
|
||||
}
|
||||
// 终点解锁
|
||||
endPointObj.setIng_task_code("");
|
||||
pointService.update(endPointObj);
|
||||
// 要把数据存到组盘表 -> 改造公共方法,返回id
|
||||
SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
|
||||
groupEntity.setGroup_id(IdUtil.getSnowflake(1,1).nextIdStr());
|
||||
groupEntity.setCreate_id("2");
|
||||
groupEntity.setCreate_name("ACS");
|
||||
groupEntity.setCreate_time(DateUtil.now());
|
||||
groupEntity.setMaterial_id(ObjectUtil.isNotEmpty(workorderCode)
|
||||
? workorderCode.getMaterial_id()
|
||||
: "");
|
||||
groupEntity.setStanding_time(ObjectUtil.isNotEmpty(workorderCode)
|
||||
? workorderCode.getStanding_time()
|
||||
: 0);
|
||||
groupEntity.setMaterial_weight(ObjectUtil.isNotEmpty(extGroupData)
|
||||
? extGroupData.getBigDecimal("material_qty")
|
||||
: BigDecimal.valueOf(0));
|
||||
groupEntity.setWorkorder_code(ObjectUtil.isNotEmpty(workorderCode)
|
||||
? workorderCode.getWorkorder_code()
|
||||
: "");
|
||||
groupEntity.setVehicle_code(vehicle_code);
|
||||
groupEntity.setVehicle_type(taskObj.getVehicle_type());
|
||||
groupEntity.setPoint_code(startPoint);
|
||||
groupEntity.setPoint_name(startPointObj.getPoint_name());
|
||||
groupEntity.setPcsn( DateUtil.format(DateUtil.date(), "yyyyMMdd"));
|
||||
groupEntity.setInstorage_time(DateUtil.now());
|
||||
groupEntity.setTask_code(taskObj.getTask_code());
|
||||
groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定
|
||||
groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。
|
||||
groupEntity.setIs_delete(false);
|
||||
vehiclematerialgroupService.save(groupEntity);
|
||||
|
||||
// 任务完成
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskObj.setGroup_id(groupEntity.getGroup_id());
|
||||
taskObj.setRemark("任务完成");
|
||||
}
|
||||
if (status.equals(TaskStatus.CANCELED)) { // 取消
|
||||
// 终点解锁
|
||||
if (ObjectUtil.isNotEmpty(endPointObj)) {
|
||||
endPointObj.setIng_task_code("");
|
||||
pointService.update(endPointObj);
|
||||
}
|
||||
taskObj.setRemark("任务取消");
|
||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
}
|
||||
taskService.update(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -231,4 +88,4 @@ public class ZJBZKDDTask extends AbstractTask {
|
||||
public void cancel(String task_code) {
|
||||
this.updateStatus(task_code, TaskStatus.CANCELED);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -242,7 +242,7 @@ public class GHSFMTask extends AbstractTask {
|
||||
one.setTask_code(taskObj.getTask_code());
|
||||
one.setPoint_code(endPointObj.getPoint_code()); // 当前位置
|
||||
one.setPoint_name(endPointObj.getPoint_name());
|
||||
one.setMove_way(one.getMove_way() + " -> " + endPointObj.getPoint_code());
|
||||
one.setMove_way(one.getMove_way()==null?"":(one.getMove_way() + " -> ") + endPointObj.getPoint_code());
|
||||
one.setUpdate_id(GeneralDefinition.ACS_ID);
|
||||
one.setUpdate_name(GeneralDefinition.ACS_NAME);
|
||||
one.setUpdate_time(DateUtil.now());
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.nl.wms.sch.task_manage.task.tasks.ghs;
|
||||
|
||||
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.JSONObject;
|
||||
@@ -8,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.config.MapOf;
|
||||
import org.nl.wms.ext.service.WmsToAcsService;
|
||||
import org.nl.wms.pdm.service.IPdmBdWorkorderService;
|
||||
import org.nl.wms.pdm.service.dao.PdmBdWorkorder;
|
||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||
@@ -19,6 +21,7 @@ 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.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
|
||||
import org.nl.wms.sch.task_manage.enums.GroupStatusEnum;
|
||||
import org.nl.wms.sch.task_manage.task.TaskType;
|
||||
@@ -58,83 +61,141 @@ public class GHSQHTask extends AbstractTask {
|
||||
@Autowired
|
||||
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
|
||||
@Autowired
|
||||
private PointMapper yzMapper;
|
||||
private PointMapper pointMapper;
|
||||
@Autowired
|
||||
private WmsToAcsService wmsToAcsService;
|
||||
|
||||
/**
|
||||
* 1.扫描每个允许取货的固化室从1-10的顺序开始进行取货
|
||||
*/
|
||||
@Override
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
protected void create() throws BadRequestException {
|
||||
// 获取任务
|
||||
List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
|
||||
// 配置信息
|
||||
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
|
||||
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
|
||||
for (SchBaseTask task : tasks) {
|
||||
List<String> nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")).collect(Collectors.toList());
|
||||
// 找终点
|
||||
String extGroupData = task.getExt_group_data();
|
||||
JSONObject jsonObject = JSONObject.parseObject(extGroupData);
|
||||
SchBasePoint point = findNextPoint(nextRegionStr, jsonObject);
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
task.setRemark("未找到所需点位!");
|
||||
taskService.update(task);
|
||||
// 消息通知
|
||||
continue;
|
||||
}
|
||||
// 设置终点并修改创建成功状态
|
||||
task.setPoint_code2(point.getPoint_code());
|
||||
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||
task.setRemark("");
|
||||
taskService.update(task);
|
||||
|
||||
point.setIng_task_code(task.getTask_code());
|
||||
pointService.update(point);
|
||||
|
||||
//下发
|
||||
// this.renotifyAcs(task);
|
||||
List<SchBasePoint> schBasePointList = pointMapper.findPointByRegion("GHS","3");
|
||||
if (schBasePointList.size()==0) {
|
||||
// 消息通知
|
||||
log.info("未找到当前符合允许取货的固化室点位,暂不生成任务");
|
||||
return;
|
||||
}
|
||||
SchBasePoint schBasePoint=null;
|
||||
//按顺序查找第一个符合条件的固化室位置,发起任务
|
||||
for(SchBasePoint schBasePoint1:schBasePointList){
|
||||
if (schBasePoint1.getVehicle_qty()==3&&ObjectUtil.isEmpty(schBasePoint1.getIng_task_code())) {
|
||||
schBasePoint=schBasePoint1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (ObjectUtil.isEmpty(schBasePoint)) {
|
||||
// 消息通知
|
||||
log.info("未找到当前符合允许取货的固化室点位,暂不生成任务");
|
||||
return;
|
||||
}
|
||||
SchBasePoint nextPoint=this.findNextPoint(schBasePoint);
|
||||
if (ObjectUtil.isEmpty(nextPoint)) {
|
||||
// 消息通知
|
||||
log.info("未找到当前符合允许放货的缓存点,暂不生成任务Vehicle_type:{}",schBasePoint.getVehicle_type());
|
||||
return;
|
||||
}
|
||||
this.createTask(schBasePoint,nextPoint.getPoint_code());
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否加急:是->入窑口,否->双层缓存线
|
||||
* 创建任务并下发
|
||||
*
|
||||
* @param nextRegionStr
|
||||
* @param extGroupData
|
||||
* @param schBasePoint
|
||||
* @param endPoint
|
||||
* @return
|
||||
*/
|
||||
private SchBasePoint findNextPoint(List<String> nextRegionStr, JSONObject extGroupData) {
|
||||
// 需要获取nextRegionStr
|
||||
if (nextRegionStr.size() < 2) {
|
||||
throw new BadRequestException("压制送料任务的配置文件有错!");
|
||||
private void createTask(SchBasePoint schBasePoint,String endPoint) {
|
||||
// 申请任务
|
||||
SchBaseTask task = new SchBaseTask(); // 任务实体
|
||||
String apply_point_code =schBasePoint.getPoint_code(); // 请求点
|
||||
String config_code = "GHSQHTask";
|
||||
// 1、校验数据
|
||||
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
|
||||
.eq(SchBaseTaskconfig::getConfig_code, config_code));
|
||||
Assert.notNull(taskConfig, "找不到配置文件,请确认[" + config_code + "]配置是否存在!");
|
||||
// 最大任务数
|
||||
Integer tcmn = taskConfig.getTask_create_max_num();
|
||||
// 获取执行中的任务
|
||||
List<SchBaseTask> unFinishTasksByTaskConfig = taskService.findUnFinishTasksByTaskConfig(
|
||||
taskConfig.getConfig_code(), apply_point_code, taskConfig.getTask_direction());
|
||||
|
||||
Assert.isFalse(unFinishTasksByTaskConfig.size() >= tcmn,
|
||||
"该点位申请的任务未完成数已超过上限,无法申请任务");
|
||||
// 获取对接位点位对象
|
||||
SchBasePoint pointObj = pointService.getOne(new LambdaQueryWrapper<SchBasePoint>()
|
||||
.eq(SchBasePoint::getPoint_code, apply_point_code));
|
||||
// 校验是否需要自动agv
|
||||
if (!pointObj.getIs_auto()) {
|
||||
// 如果不需要自动,则不创建任务
|
||||
return;
|
||||
}
|
||||
String regionCode = nextRegionStr.get(0);
|
||||
// 当前设备的工单
|
||||
String workorderCode = extGroupData.getString("workorder_code");
|
||||
PdmBdWorkorder one = ObjectUtil.isNotEmpty(workorderCode)
|
||||
? workorderService.getOne(new LambdaQueryWrapper<PdmBdWorkorder>()
|
||||
.eq(PdmBdWorkorder::getWorkorder_code, workorderCode))
|
||||
: null;
|
||||
if (one == null) {
|
||||
throw new BadRequestException("压制机的工单不能为空!");
|
||||
}
|
||||
// 判断是否加急,加急则去窑口,不加急就是去双层缓存输送线
|
||||
if (one.getIs_urgent()) {
|
||||
regionCode = nextRegionStr.get(1); // 去窑区
|
||||
}
|
||||
List<SchBasePoint> pointForYZSL = yzMapper.findPointForYZSL(new JSONObject(
|
||||
MapOf.of("regionCode", regionCode, "pointType", ENTRANCE)));
|
||||
return ObjectUtil.isNotEmpty(pointForYZSL) ? pointForYZSL.get(0) : null;
|
||||
// ??
|
||||
// LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
||||
// lam.eq(SchBasePoint::getRegion_code, regionCode)
|
||||
// .eq(SchBasePoint::getPoint_type, ENTRANCE)
|
||||
// .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住
|
||||
// .or()
|
||||
// .eq(SchBasePoint::getIng_task_code, ""))
|
||||
// .eq(SchBasePoint::getIs_used, true);
|
||||
// List<SchBasePoint> schBasePoints = pointService.list(lam);
|
||||
// return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null;
|
||||
// 2、创建申请任务
|
||||
task.setConfig_code(config_code);
|
||||
task.setCreate_mode(GeneralDefinition.ACS_CREATION);
|
||||
task.setVehicle_code(schBasePoint.getVehicle_code());
|
||||
task.setVehicle_qty(schBasePoint.getVehicle_qty());
|
||||
task.setTask_status(TaskStatus.APPLY.getCode());
|
||||
task.setWorkshop_code(taskConfig.getWorkshop_code()); // 车间编码
|
||||
task.setPoint_code2(endPoint);
|
||||
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||
task.setRemark("");
|
||||
// 设置起/终点
|
||||
this.setTaskPoint(taskConfig, task, apply_point_code);
|
||||
taskService.create(task);
|
||||
|
||||
//下发
|
||||
this.renotifyAcs(task);
|
||||
}
|
||||
|
||||
/**
|
||||
* 1.根据当前固化室所处区域,判断到哪个区的缓存位
|
||||
* 2.从1010列到0101列倒叙判断当前列物料类型是否与起点一致且存在空位
|
||||
* 3.将当前点位设置为目标点
|
||||
* 4.如果没有符合条件的点位,跳过执行暂时等待
|
||||
*/
|
||||
private SchBasePoint findNextPoint(SchBasePoint startPoint) {
|
||||
String regionCode = null;
|
||||
String materialType = startPoint.getVehicle_type();
|
||||
if ("GHS1".equals(startPoint.getRegion_code())) {
|
||||
//HCQ1找A区
|
||||
regionCode = "HCQ1";
|
||||
|
||||
} else if ("GHS2".equals(startPoint.getRegion_code())) {
|
||||
//GHS2找B区
|
||||
regionCode = "HCQ2";
|
||||
}
|
||||
List<SchBasePoint> schBasePointList = pointMapper.findPointByRegion(regionCode,"2");
|
||||
for(int i=schBasePointList.size()-1;i>=0;i--){
|
||||
SchBasePoint schBasePoint=schBasePointList.get(i);
|
||||
SchBasePoint temp=null;
|
||||
if (schBasePoint.getVehicle_qty()==0
|
||||
&&ObjectUtil.isEmpty(schBasePoint.getIng_task_code())
|
||||
&&(ObjectUtil.isEmpty(schBasePoint.getVehicle_type())||materialType.equals(schBasePoint.getVehicle_type()))){
|
||||
//发现有空位时暂存当前位置,检查当前列前面是否存在已放货位置,找最前面无货的位置
|
||||
//如果当列其他位置均已放满,则继续找下一列
|
||||
List<SchBasePoint> tempList = pointMapper.findPointByParentPoint(schBasePoint.getParent_point_code());
|
||||
for(SchBasePoint tempPoint:tempList){
|
||||
if(tempPoint.getVehicle_qty()!=0||ObjectUtil.isNotEmpty(schBasePoint.getIng_task_code())){
|
||||
if(temp!=null){
|
||||
return temp;
|
||||
}
|
||||
temp=tempPoint;
|
||||
}
|
||||
}
|
||||
log.info("固化室取货任务找到当前符合条件的缓存区位置{}",schBasePoint.getPoint_code());
|
||||
return temp;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1.如果起点点位为10结尾视为最后该固化室最后一个任务,取完后通知acs取货完毕
|
||||
*/
|
||||
@Override
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
protected void updateStatus(String task_code, TaskStatus status) {
|
||||
@@ -146,18 +207,6 @@ public class GHSQHTask extends AbstractTask {
|
||||
if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) {
|
||||
throw new BadRequestException("该任务已取消!");
|
||||
}
|
||||
// 获取参数
|
||||
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();
|
||||
PdmBdWorkorder workorderCode = ObjectUtil.isNotEmpty(extGroupData.getString("workorder_code"))
|
||||
? workorderService.getOne(new LambdaQueryWrapper<PdmBdWorkorder>()
|
||||
.eq(PdmBdWorkorder::getWorkorder_code, extGroupData.getString("workorder_code")))
|
||||
: null;
|
||||
String startPoint = taskObj.getPoint_code1(); // 获取起点
|
||||
String endPoint = taskObj.getPoint_code2(); // 获取终点
|
||||
SchBasePoint startPointObj = pointService.getById(startPoint);
|
||||
@@ -168,47 +217,54 @@ public class GHSQHTask extends AbstractTask {
|
||||
taskObj.setRemark("执行中");
|
||||
}
|
||||
if (status.equals(TaskStatus.FINISHED)) { // 完成
|
||||
StringBuilder group_id= new StringBuilder();
|
||||
// 终点解锁
|
||||
endPointObj.setIng_task_code("");
|
||||
endPointObj.setVehicle_code(startPointObj.getVehicle_code());
|
||||
endPointObj.setVehicle_type(startPointObj.getVehicle_type());
|
||||
endPointObj.setVehicle_code(startPointObj.getVehicle_code());
|
||||
endPointObj.setVehicle_qty(startPointObj.getVehicle_qty());
|
||||
endPointObj.setUpdate_time(DateUtil.now());
|
||||
pointService.update(endPointObj);
|
||||
List<String> vehicleCodeList = Arrays.stream(startPointObj.getVehicle_code().split(",")).collect(Collectors.toList());
|
||||
for(String vehicleCode:vehicleCodeList) {
|
||||
SchBaseVehiclematerialgroup one = vehiclematerialgroupService.getOne(new LambdaQueryWrapper<SchBaseVehiclematerialgroup>()
|
||||
.eq(SchBaseVehiclematerialgroup::getVehicle_code, vehicleCode)
|
||||
.eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status,
|
||||
GroupBindMaterialStatusEnum.BOUND.getValue()));
|
||||
if (ObjectUtil.isEmpty(one)) {
|
||||
throw new BadRequestException(vehicleCode + " => " + startPointObj.getVehicle_type() + "的组盘信息未找到");
|
||||
}
|
||||
one.setTask_code(taskObj.getTask_code());
|
||||
one.setPoint_code(endPointObj.getPoint_code()); // 当前位置
|
||||
one.setPoint_name(endPointObj.getPoint_name());
|
||||
one.setMove_way(one.getMove_way()==null?"":(one.getMove_way() + " -> ") + endPointObj.getPoint_code());
|
||||
one.setUpdate_id(GeneralDefinition.ACS_ID);
|
||||
one.setUpdate_name(GeneralDefinition.ACS_NAME);
|
||||
one.setUpdate_time(DateUtil.now());
|
||||
vehiclematerialgroupService.updateById(one);
|
||||
group_id.append(one.getGroup_id()).append(',');
|
||||
}
|
||||
// 起点清空
|
||||
if (ObjectUtil.isNotEmpty(startPointObj)) {
|
||||
PointUtils.clearPoint(startPointObj);
|
||||
}
|
||||
// 终点解锁
|
||||
endPointObj.setIng_task_code("");
|
||||
pointService.update(endPointObj);
|
||||
// 要把数据存到组盘表 -> 改造公共方法,返回id
|
||||
SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
|
||||
groupEntity.setGroup_id(IdUtil.getSnowflake(1,1).nextIdStr());
|
||||
groupEntity.setCreate_id("2");
|
||||
groupEntity.setCreate_name("ACS");
|
||||
groupEntity.setCreate_time(DateUtil.now());
|
||||
groupEntity.setMaterial_id(ObjectUtil.isNotEmpty(workorderCode)
|
||||
? workorderCode.getMaterial_id()
|
||||
: "");
|
||||
groupEntity.setStanding_time(ObjectUtil.isNotEmpty(workorderCode)
|
||||
? workorderCode.getStanding_time()
|
||||
: 0);
|
||||
groupEntity.setMaterial_weight(ObjectUtil.isNotEmpty(extGroupData)
|
||||
? extGroupData.getBigDecimal("material_qty")
|
||||
: BigDecimal.valueOf(0));
|
||||
groupEntity.setWorkorder_code(ObjectUtil.isNotEmpty(workorderCode)
|
||||
? workorderCode.getWorkorder_code()
|
||||
: "");
|
||||
groupEntity.setVehicle_code(vehicle_code);
|
||||
groupEntity.setVehicle_type(taskObj.getVehicle_type());
|
||||
groupEntity.setPoint_code(startPoint);
|
||||
groupEntity.setPoint_name(startPointObj.getPoint_name());
|
||||
groupEntity.setPcsn( DateUtil.format(DateUtil.date(), "yyyyMMdd"));
|
||||
groupEntity.setInstorage_time(DateUtil.now());
|
||||
groupEntity.setTask_code(taskObj.getTask_code());
|
||||
groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定
|
||||
groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。
|
||||
groupEntity.setIs_delete(false);
|
||||
vehiclematerialgroupService.save(groupEntity);
|
||||
|
||||
// 任务完成
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskObj.setGroup_id(groupEntity.getGroup_id());
|
||||
taskObj.setGroup_id(group_id.toString());
|
||||
taskObj.setRemark("任务完成");
|
||||
|
||||
//如果起点点位为10结尾视为最后该固化室最后一个任务,取完后通知acs取货完毕
|
||||
if(taskObj.getPoint_code1().endsWith("10")) {
|
||||
String middle = taskObj.getPoint_code1().substring(taskObj.getPoint_code1().length() - 4, taskObj.getPoint_code1().length() - 2);
|
||||
//通知acs已经放满,固化室可以进行固化
|
||||
String device_code = "ZDM" + middle;
|
||||
log.info("当前固化室已经全部取完,通知固化室的自动门{}取货完毕", device_code);
|
||||
JSONObject map = new JSONObject();
|
||||
map.put("device_code", device_code);
|
||||
map.put("type", "2");
|
||||
wmsToAcsService.notifyAcs(map);
|
||||
}
|
||||
}
|
||||
if (status.equals(TaskStatus.CANCELED)) { // 取消
|
||||
// 终点解锁
|
||||
|
||||
@@ -11,8 +11,9 @@ import java.util.List;
|
||||
* @Date: 2023/10/9
|
||||
*/
|
||||
public interface PointMapper {
|
||||
List<SchBasePoint> findPointByRegion(String regionCode,String point_state);
|
||||
List<SchBasePoint> findPointByPoint(String pointCode);
|
||||
List<SchBasePoint> findPointByRegion(String regionCode,String point_status);
|
||||
|
||||
List<SchBasePoint> findPointByParentPoint(String pointCode);
|
||||
|
||||
void updatePointStatus(String device_code,String state);
|
||||
List<SchBasePoint> findPointForYZSL(JSONObject param);
|
||||
|
||||
@@ -7,16 +7,16 @@
|
||||
FROM
|
||||
`sch_base_point` p
|
||||
WHERE p.region_code like CONCAT('%', #{regionCode}, '%')
|
||||
and p.point_state = #{point_state}
|
||||
and p.point_status = #{point_status}
|
||||
ORDER BY region_code
|
||||
</select>
|
||||
|
||||
<select id="findPointByRegion" resultType="org.nl.wms.sch.point.service.dao.SchBasePoint">
|
||||
<select id="findPointByParentPoint" resultType="org.nl.wms.sch.point.service.dao.SchBasePoint">
|
||||
SELECT
|
||||
p.*
|
||||
FROM
|
||||
`sch_base_point` p
|
||||
WHERE p.point_code like CONCAT('%', #{pointCode}, '%')
|
||||
WHERE p.parent_point_code like CONCAT('%', #{pointCode}, '%')
|
||||
ORDER BY point_code
|
||||
</select>
|
||||
|
||||
|
||||
@@ -42,7 +42,6 @@ public class PointUtils {
|
||||
point.setVehicle_code("");
|
||||
point.setIng_task_code("");
|
||||
point.setVehicle_qty(0);
|
||||
point.setVehicle_type("");
|
||||
point.setUpdate_time(DateUtil.now());
|
||||
pointService.updateById(point);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user