opt:优化现场联调产生的一些问题
This commit is contained in:
@@ -103,7 +103,7 @@ public class PdmBiSubpackagerelationController {
|
||||
}
|
||||
|
||||
@PostMapping("/updateEntityList")
|
||||
@Log("子卷分配木箱规格")
|
||||
@Log("子卷装箱")
|
||||
//@SaCheckPermission("@el.check(updateEntityList)")
|
||||
public ResponseEntity<Object> updateEntityList(@RequestBody JSONObject whereJson) {
|
||||
pdmBiSubpackagerelationService.updateEntityList(whereJson);
|
||||
|
||||
@@ -24,6 +24,7 @@ import org.nl.common.utils.SecurityUtils;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.system.service.param.ISysParamService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
@@ -61,7 +62,8 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
private PdmBiSubpackagerelationMapper pdmBiSubpackagerelationMapper;
|
||||
@Resource
|
||||
private BstIvtPackageinfoivtMapper bstIvtPackageinfoivtMapper;
|
||||
|
||||
@Resource
|
||||
private ISysParamService iSysParamService;
|
||||
/**
|
||||
* 查询数据分页
|
||||
*
|
||||
@@ -70,7 +72,6 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
*/
|
||||
@Override
|
||||
public IPage<PdmBiSubpackagerelation> queryAll(Map whereJson, PageQuery page) {
|
||||
|
||||
return pdmBiSubpackagerelationMapper.selectPage(new Page<>(page.getPage() + 1, page.getSize()), new QueryWrapper<PdmBiSubpackagerelation>()
|
||||
.lambda());
|
||||
}
|
||||
@@ -175,7 +176,7 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
}
|
||||
|
||||
/**
|
||||
* 子卷分配木箱规格
|
||||
* 子卷装箱
|
||||
*
|
||||
* @param whereJson 分配信息
|
||||
*/
|
||||
@@ -212,12 +213,88 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
updateWrapper.in("workorder_id", entityList);
|
||||
pdmBiSubpackagerelationMapper.update(null, updateWrapper);
|
||||
//下发空木箱出库任务
|
||||
//outBox(entityList, packagerelationList, boxType);
|
||||
outBox1(entityList, packagerelationList, boxType);
|
||||
//transferToPacking1(packagerelationList);
|
||||
} catch (Exception e) {
|
||||
throw new BadRequestException(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 空木箱出库
|
||||
*/
|
||||
private void outBox1(List<String> entityList, List<PdmBiSubpackagerelation> packagerelationList, String boxType) {
|
||||
JSONObject boxInfo = new JSONObject();
|
||||
boxInfo.put("device_code", "ZXQ_1_1");
|
||||
boxInfo.put("material_code", "MX61103");
|
||||
String workorderId = "1597797877554483219";
|
||||
//子卷个数
|
||||
boxInfo.put("num", "1");
|
||||
String boxSn = outBoxManageService.outBox(boxInfo);
|
||||
if (StringUtils.isBlank(boxSn)) {
|
||||
throw new BadRequestException("库位 -> 装箱对接位,木箱码不能为空!");
|
||||
}
|
||||
//更新子卷包装关系更新木箱号
|
||||
UpdateWrapper<PdmBiSubpackagerelation> updateWrapper1 = new UpdateWrapper<>();
|
||||
updateWrapper1.set("package_box_sn", boxSn);
|
||||
updateWrapper1.eq("workorder_id", workorderId);
|
||||
pdmBiSubpackagerelationMapper.update(null, updateWrapper1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private void transferToPacking1(List<PdmBiSubpackagerelation> packagerelationList) {
|
||||
JSONObject jo = new JSONObject();
|
||||
//子卷号
|
||||
String containerName = "A1652211050505A2";
|
||||
//获取纸管长度
|
||||
String frpDescription = "1300";
|
||||
//获取木箱高度等级
|
||||
String height = "730";
|
||||
//起点
|
||||
String point_code1 = "ZXQ_1_9";
|
||||
//终点
|
||||
String point_code2 = "ZXQ_1_1";
|
||||
//托盘类型 1小托盘 2大托盘
|
||||
String containerType = "2";
|
||||
//木箱高度等级
|
||||
String heightLevel = "";
|
||||
String heightLevel1 = iSysParamService.findByCode("height_level_1").getValue();
|
||||
String heightLevel2 = iSysParamService.findByCode("height_level_2").getValue();
|
||||
if (Integer.parseInt(height) <= Integer.parseInt(heightLevel1)) {
|
||||
heightLevel = "1";
|
||||
} else if (Integer.parseInt(height) > Integer.parseInt(heightLevel1) && Integer.parseInt(height) <= Integer.parseInt(heightLevel2)) {
|
||||
heightLevel = "2";
|
||||
} else {
|
||||
heightLevel = "3";
|
||||
}
|
||||
jo.put("point_code1", point_code1);
|
||||
jo.put("point_code2", point_code2);
|
||||
jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("装箱区->装箱对接位"));
|
||||
jo.put("vehicle_code", containerName);
|
||||
jo.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
|
||||
jo.put("is_send", "1");
|
||||
JSONObject param = new JSONObject();
|
||||
//木箱最大数量
|
||||
param.put("maxNo", "1");
|
||||
//木箱放入子卷数量
|
||||
param.put("boxNo", "1");
|
||||
//是否最后子卷
|
||||
param.put("lastOne", "1");
|
||||
//子卷号
|
||||
param.put("barcode", containerName);
|
||||
//子卷长度
|
||||
param.put("len", frpDescription);
|
||||
//木箱高度等级
|
||||
param.put("heightLevel", heightLevel);
|
||||
//托盘类型 1小托盘 2大托盘
|
||||
param.put("containerType", containerType);
|
||||
jo.put("request_param", param.toString());
|
||||
zxDjwTask.createTask(jo);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 空木箱出库
|
||||
@@ -265,7 +342,7 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
boxInfo.put("num", entityList.size());
|
||||
String boxSn = outBoxManageService.outBox(boxInfo);
|
||||
if (StringUtils.isBlank(boxSn)) {
|
||||
throw new BadRequestException("满轴缓存位 -> 待检区,木箱码不能为空!");
|
||||
throw new BadRequestException("库位 -> 装箱对接位,木箱码不能为空!");
|
||||
}
|
||||
//更新子卷包装关系更新木箱号
|
||||
UpdateWrapper<PdmBiSubpackagerelation> updateWrapper1 = new UpdateWrapper<>();
|
||||
@@ -276,6 +353,7 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
agvTransfer(packagerelationList, deviceCode, boxSn);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 待检区->装箱区agv任务
|
||||
*/
|
||||
@@ -318,12 +396,15 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private void transferToPacking(List<PdmBiSubpackagerelation> packagerelationList) {
|
||||
//下发装箱区->装箱对接位桁架任务
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("装箱区->装箱对接位"));
|
||||
//todo 测试,装箱点位-1-1
|
||||
jo.put("point_code1", "ZXQ_1_9");
|
||||
jo.put("point_code1", "ZXQ_1_8");
|
||||
//todo 测试,装箱对接位01
|
||||
jo.put("point_code2", "ZXQ_1_1");
|
||||
jo.put("vehicle_code", packagerelationList.get(0).getContainer_name());
|
||||
@@ -356,13 +437,15 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
//子卷号
|
||||
param.put("barcode", packagerelationList.get(0).getContainer_name());
|
||||
//子卷长度
|
||||
//param.put("len", maxNum);
|
||||
param.put("len", maxNum);
|
||||
//托盘类型 1小托盘 2大托盘
|
||||
param.put("containerType", "2");
|
||||
param.put("containerType", "1");
|
||||
jo.put("request_param", param.toString());
|
||||
zxDjwTask.createTask(jo);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 多选删除
|
||||
*
|
||||
|
||||
@@ -3,10 +3,12 @@ package org.nl.b_lms.sch.point.service;
|
||||
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
|
||||
|
||||
@@ -29,6 +31,18 @@ public interface IbstIvtPackageinfoivtService extends IService<BstIvtPackageinfo
|
||||
IPage<BstIvtPackageinfoivt> queryAll(Map whereJson, PageQuery pageable);
|
||||
|
||||
|
||||
/**
|
||||
* 查询没有搬运任务的空的目标点位
|
||||
* @param ivtType 点位类型
|
||||
* @param ivtStatus 库存状态
|
||||
* @return List<BstIvtPackageinfoivt>
|
||||
*/
|
||||
List<BstIvtPackageinfoivt> checkEndPointTask(String ivtType, String ivtStatus);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 创建
|
||||
*
|
||||
@@ -52,6 +66,9 @@ public interface IbstIvtPackageinfoivtService extends IService<BstIvtPackageinfo
|
||||
void deleteAll(Set<String> ids);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,20 +1,27 @@
|
||||
package org.nl.b_lms.sch.point.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
|
||||
import org.nl.b_lms.sch.point.dao.mapper.BstIvtPackageinfoivtMapper;
|
||||
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
||||
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
|
||||
import org.nl.common.enums.PackageInfoIvtEnum;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
/**
|
||||
@@ -30,6 +37,14 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
|
||||
@Resource
|
||||
private BstIvtPackageinfoivtMapper bstIvtPackageinfoivtMapper;
|
||||
|
||||
@Resource
|
||||
private IschBaseTaskService taskService;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 查询数据分页
|
||||
@@ -44,6 +59,25 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<BstIvtPackageinfoivt> checkEndPointTask(String ivtType, String ivtStatus) {
|
||||
List<BstIvtPackageinfoivt> bstIvtPackageinfoivtList = bstIvtPackageinfoivtMapper
|
||||
.selectList(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
|
||||
.eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
|
||||
.eq(BstIvtPackageinfoivt::getPoint_status, ivtType)
|
||||
.eq(BstIvtPackageinfoivt::getIvt_status,ivtStatus)
|
||||
.orderByAsc(BstIvtPackageinfoivt::getSort_seq));
|
||||
List<SchBaseTask> taskList = taskService.list(new LambdaUpdateWrapper<SchBaseTask>()
|
||||
//未完成任务
|
||||
.lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode())
|
||||
.and(
|
||||
r -> r.in(SchBaseTask::getPoint_code2, bstIvtPackageinfoivtList)
|
||||
));
|
||||
return bstIvtPackageinfoivtList.stream().filter(r->! taskList.stream().map(SchBaseTask::getPoint_code2).collect(Collectors.toSet()).contains(r.getPoint_code())).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 创建
|
||||
*
|
||||
|
||||
@@ -109,6 +109,10 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 获取实体基础信息
|
||||
*
|
||||
|
||||
@@ -17,6 +17,8 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static org.nl.wms.util.TaskUtil.getRoutePlanCode;
|
||||
|
||||
/**
|
||||
* 二期空托盘出库任务类
|
||||
* Created by Lxy on 2024/1/19.
|
||||
@@ -43,6 +45,7 @@ public class TwoBoxExcepTask extends AbstractAcsTask {
|
||||
AcsTaskDto dto = AcsTaskDto.builder()
|
||||
.ext_task_id(json.getString("task_id"))
|
||||
.task_code(json.getString("task_code"))
|
||||
.route_plan_code(getRoutePlanCode(json.getString("point_code1")))
|
||||
.task_type(json.getString("acs_task_type"))
|
||||
.start_device_code(json.getString("point_code1"))
|
||||
.next_device_code(json.getString("point_code2"))
|
||||
|
||||
@@ -17,6 +17,8 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static org.nl.wms.util.TaskUtil.getRoutePlanCode;
|
||||
|
||||
/**
|
||||
* 二期空木箱入库任务类
|
||||
* Created by Lxy on 2024/1/19.
|
||||
@@ -48,6 +50,7 @@ public class TwoInBoxTask extends AbstractAcsTask {
|
||||
.next_device_code(json.getString("point_code2"))
|
||||
.vehicle_code(json.getString("vehicle_code2"))
|
||||
.priority(json.getString("priority"))
|
||||
.route_plan_code(getRoutePlanCode(json.getString("point_code2")))
|
||||
.class_type(json.getString("task_type"))
|
||||
.interaction_json(json.getJSONObject("request_param"))
|
||||
.dtl_type(String.valueOf(dtl_type))
|
||||
|
||||
@@ -19,6 +19,8 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.nl.wms.util.TaskUtil.getRoutePlanCode;
|
||||
|
||||
/**
|
||||
* 二期入木箱行架任务类
|
||||
* Created by Lxy on 2024/1/19.
|
||||
@@ -47,6 +49,7 @@ public class TwoInBoxTrussTask extends AbstractAcsTask {
|
||||
.task_type(json.getString("acs_task_type"))
|
||||
.start_device_code(json.getString("point_code1"))
|
||||
.next_device_code(json.getString("point_code2"))
|
||||
.route_plan_code(getRoutePlanCode(json.getString("point_code2")))
|
||||
.vehicle_code(json.getString("vehicle_code"))
|
||||
.priority(json.getString("priority"))
|
||||
.class_type(json.getString("task_type"))
|
||||
|
||||
@@ -17,6 +17,8 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static org.nl.wms.util.TaskUtil.getRoutePlanCode;
|
||||
|
||||
/**
|
||||
* 二期空托盘入库异常任务类
|
||||
* Created by Lxy on 2024/1/19.
|
||||
@@ -43,6 +45,7 @@ public class TwoInEmpExcepTask extends AbstractAcsTask {
|
||||
AcsTaskDto dto = AcsTaskDto.builder()
|
||||
.ext_task_id(json.getString("task_id"))
|
||||
.task_code(json.getString("task_code"))
|
||||
.route_plan_code(getRoutePlanCode(json.getString("point_code2")))
|
||||
.task_type(json.getString("acs_task_type"))
|
||||
.start_device_code(json.getString("point_code1"))
|
||||
.next_device_code(json.getString("point_code2"))
|
||||
|
||||
@@ -21,6 +21,8 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static org.nl.wms.util.TaskUtil.getRoutePlanCode;
|
||||
|
||||
/**
|
||||
* 二期空托盘入库任务类
|
||||
* Created by Lxy on 2024/1/19.
|
||||
@@ -48,6 +50,7 @@ public class TwoInEmpTask extends AbstractAcsTask {
|
||||
.ext_task_id(json.getString("task_id"))
|
||||
.task_code(json.getString("task_code"))
|
||||
.task_type(json.getString("acs_task_type"))
|
||||
.route_plan_code(getRoutePlanCode(json.getString("point_code2")))
|
||||
.start_device_code(json.getString("point_code1"))
|
||||
.next_device_code(json.getString("point_code2"))
|
||||
.interaction_json(json.getJSONObject("request_param"))
|
||||
|
||||
@@ -34,6 +34,8 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.nl.wms.util.TaskUtil.getRoutePlanCode;
|
||||
|
||||
/**
|
||||
* 二期入库任务类
|
||||
* Created by Lxy on 2024/1/19.
|
||||
@@ -61,6 +63,7 @@ public class TwoInTask extends AbstractAcsTask {
|
||||
.ext_task_id(json.getString("task_id"))
|
||||
.task_code(json.getString("task_code"))
|
||||
.task_type(json.getString("acs_task_type"))
|
||||
.route_plan_code(getRoutePlanCode(json.getString("point_code2")))
|
||||
.start_device_code(json.getString("point_code1"))
|
||||
.next_device_code(json.getString("point_code2"))
|
||||
.vehicle_code(json.getString("vehicle_code2"))
|
||||
|
||||
@@ -35,6 +35,8 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static org.nl.wms.util.TaskUtil.getRoutePlanCode;
|
||||
|
||||
/**
|
||||
* 二期捆扎任务类
|
||||
* Created by Lxy on 2024/1/19.
|
||||
@@ -85,9 +87,11 @@ public class TwoLashTask extends AbstractAcsTask {
|
||||
interaction_json.put("length",dao.get(0).getBox_length());
|
||||
interaction_json.put("weight",dao.get(0).getBox_width());
|
||||
interaction_json.put("height",dao.get(0).getBox_high());
|
||||
interaction_json.put("template","2");
|
||||
interaction_json.put("template","4");
|
||||
//第二次捆扎次数
|
||||
interaction_json.put("bindingTimes","1");
|
||||
interaction_json.put("isBinding", IOSEnum.IS_SEND.code("是"));
|
||||
interaction_json.put("isBinding", IOSEnum.IS_SEND.code("否"));
|
||||
|
||||
|
||||
char dtl_type = json.getString("task_type").charAt(json.getString("task_type").length() - 1);
|
||||
AcsTaskDto dto = AcsTaskDto.builder()
|
||||
@@ -97,6 +101,7 @@ public class TwoLashTask extends AbstractAcsTask {
|
||||
.start_device_code(json.getString("point_code1"))
|
||||
.next_device_code(json.getString("point_code2"))
|
||||
.vehicle_code(json.getString("vehicle_code"))
|
||||
.route_plan_code(getRoutePlanCode(json.getString("point_code1")))
|
||||
.priority(json.getString("priority"))
|
||||
.class_type(json.getString("task_type"))
|
||||
.dtl_type(String.valueOf(dtl_type))
|
||||
|
||||
@@ -17,6 +17,8 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static org.nl.wms.util.TaskUtil.getRoutePlanCode;
|
||||
|
||||
/**
|
||||
* 二期空木箱出库任务类
|
||||
* Created by Lxy on 2024/1/19.
|
||||
@@ -43,6 +45,7 @@ public class TwoOutBoxTask extends AbstractAcsTask {
|
||||
AcsTaskDto dto = AcsTaskDto.builder()
|
||||
.ext_task_id(json.getString("task_id"))
|
||||
.task_code(json.getString("task_code"))
|
||||
.route_plan_code(getRoutePlanCode(json.getString("point_code1")))
|
||||
.task_type(json.getString("acs_task_type"))
|
||||
.start_device_code(json.getString("point_code1"))
|
||||
.next_device_code(json.getString("point_code2"))
|
||||
@@ -83,42 +86,29 @@ public class TwoOutBoxTask extends AbstractAcsTask {
|
||||
|
||||
// 完成
|
||||
if (status.equals(TaskStatusEnum.FINISHED.getCode())) {
|
||||
|
||||
map.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
|
||||
// 更新仓位
|
||||
JSONObject jsonAttr = attrTab.query("struct_code = '" + jsonTask.getString("point_code1") + "'").uniqueResult(0);
|
||||
jsonAttr.put("lock_type",IOSEnum.LOCK_TYPE.code("未锁定"));
|
||||
jsonAttr.put("storagevehicle_code","");
|
||||
attrTab.update(jsonAttr);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
// 取消
|
||||
if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) {
|
||||
|
||||
if (taskObj.getIntValue("task_status") > Integer.valueOf(TaskStatusEnum.ISSUE.getCode())) {
|
||||
throw new BadRequestException("任务已执行不能取消");
|
||||
}
|
||||
|
||||
// 更新任务表删除字段
|
||||
map.put("is_delete", IOSEnum.IS_NOTANDYES.code("是"));
|
||||
|
||||
// 解锁仓位
|
||||
JSONObject jsonAttr = attrTab.query("struct_code = '" + jsonTask.getString("point_code1") + "'").uniqueResult(0);
|
||||
jsonAttr.put("lock_type",IOSEnum.LOCK_TYPE.code("未锁定"));
|
||||
attrTab.update(jsonAttr);
|
||||
}
|
||||
|
||||
map.put("update_optid", SecurityUtils.getCurrentUserId());
|
||||
map.put("update_optname", SecurityUtils.getCurrentNickName());
|
||||
map.put("update_time", DateUtil.now());
|
||||
|
||||
WQLObject.getWQLObject("SCH_BASE_Task").update(map, "task_id = '" + taskObj.getString("task_id") + "'");
|
||||
}
|
||||
|
||||
|
||||
@@ -17,6 +17,8 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static org.nl.wms.util.TaskUtil.getRoutePlanCode;
|
||||
|
||||
/**
|
||||
* 二期空托盘出库任务类
|
||||
* Created by Lxy on 2024/1/19.
|
||||
@@ -45,6 +47,7 @@ public class TwoOutEmpTask extends AbstractAcsTask {
|
||||
.task_code(json.getString("task_code"))
|
||||
.task_type(json.getString("acs_task_type"))
|
||||
.start_device_code(json.getString("point_code1"))
|
||||
.route_plan_code(getRoutePlanCode(json.getString("point_code1")))
|
||||
.next_device_code(json.getString("point_code2"))
|
||||
.vehicle_code(json.getString("vehicle_code"))
|
||||
.priority(json.getString("priority"))
|
||||
@@ -167,7 +170,6 @@ public class TwoOutEmpTask extends AbstractAcsTask {
|
||||
json.put("create_time", DateUtil.now());
|
||||
json.put("priority", "1");
|
||||
json.put("acs_task_type", "7");
|
||||
|
||||
WQLObject.getWQLObject("SCH_BASE_Task").insert(json);
|
||||
return json.getString("task_id");
|
||||
}
|
||||
|
||||
@@ -18,6 +18,8 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static org.nl.wms.util.TaskUtil.getRoutePlanCode;
|
||||
|
||||
/**
|
||||
* 二期出库异常任务类
|
||||
* Created by Lxy on 2024/1/19.
|
||||
@@ -50,6 +52,7 @@ public class TwoOutExceptionalTask extends AbstractAcsTask {
|
||||
.vehicle_code(json.getString("vehicle_code"))
|
||||
.priority(json.getString("priority"))
|
||||
.class_type(json.getString("task_type"))
|
||||
.route_plan_code(getRoutePlanCode(json.getString("point_code1")))
|
||||
.dtl_type(String.valueOf(dtl_type))
|
||||
.remark(json.getString("remark"))
|
||||
.build();
|
||||
|
||||
@@ -29,6 +29,8 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static org.nl.wms.util.TaskUtil.getRoutePlanCode;
|
||||
|
||||
/**
|
||||
* Created by Lxy on 2021/12/22.
|
||||
*/
|
||||
@@ -74,6 +76,7 @@ public class TwoOutTask extends AbstractAcsTask {
|
||||
.next_device_code(json.getString("point_code2"))
|
||||
.vehicle_code(json.getString("vehicle_code"))
|
||||
.interaction_json(json.getJSONObject("request_param"))
|
||||
.route_plan_code(getRoutePlanCode(json.getString("point_code1")))
|
||||
.priority(json.getString("priority"))
|
||||
.class_type(json.getString("task_type"))
|
||||
.dtl_type(String.valueOf(dtl_type))
|
||||
@@ -131,6 +134,7 @@ public class TwoOutTask extends AbstractAcsTask {
|
||||
// 调用标识完成
|
||||
StIvtIostorinvOutServiceImpl bean = SpringContextHolder.getBean(StIvtIostorinvOutServiceImpl.class);
|
||||
bean.finishTask(jsonTask);
|
||||
|
||||
// 判断此任务组是否全部完成
|
||||
JSONArray resultJSONArray = taskTab.query("task_group_id = '" + jsonTask.getString("task_group_id") + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'")
|
||||
.getResultJSONArray(0);
|
||||
|
||||
@@ -26,6 +26,8 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static org.nl.wms.util.TaskUtil.getRoutePlanCode;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
@@ -54,6 +56,7 @@ public class TwoSendOutTask extends AbstractAcsTask {
|
||||
.priority(json.getString("priority"))
|
||||
.class_type(json.getString("task_type"))
|
||||
.dtl_type(String.valueOf(dtl_type))
|
||||
.route_plan_code(getRoutePlanCode(json.getString("point_code1")))
|
||||
.remark(json.getString("remark"))
|
||||
.build();
|
||||
resultList.add(dto);
|
||||
@@ -127,13 +130,13 @@ public class TwoSendOutTask extends AbstractAcsTask {
|
||||
if (cutConveyorTask.isSingleTask(point_code2)) {
|
||||
throw new BadRequestException("点位:" + point_code2 + "存在未完成的任务!");
|
||||
}
|
||||
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("task_id", IdUtil.getSnowflake(1, 1).nextId());
|
||||
json.put("task_code", IdUtil.getSnowflake(1, 1).nextId());
|
||||
json.put("task_type", form.getString("task_type"));
|
||||
json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
|
||||
json.put("point_code1", form.getString("point_code1"));
|
||||
json.put("route_plan_code", getRoutePlanCode(json.getString("point_code1")));
|
||||
json.put("point_code2", form.getString("point_code2"));
|
||||
json.put("vehicle_code", form.getString("vehicle_code"));
|
||||
json.put("handle_class", THIS_CLASS);
|
||||
|
||||
@@ -4,7 +4,9 @@ import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.BooleanUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -72,10 +74,10 @@ public class DjqTask extends AbstractAcsTask {
|
||||
.priority(r.getPriority())
|
||||
.remark(r.getRemark())
|
||||
.product_area(r.getProduct_area())
|
||||
.agv_system_type(PackageInfoIvtEnum.AGV_SYSTEM_TYPE.code("1楼叉车系统"))
|
||||
.agv_system_type(PackageInfoIvtEnum.AGV_SYSTEM_TYPE.code("1楼诺宝任务"))
|
||||
//.truss_type(PackageInfoIvtEnum.TRUSS_TYPE.code("点对点任务"))
|
||||
//.dtl_type(r.getDtl_type())
|
||||
//.params(r.getParams())
|
||||
.interaction_json(JSON.parseObject(r.getRequest_param()))
|
||||
.build();
|
||||
resultList.add(dto);
|
||||
});
|
||||
@@ -103,17 +105,24 @@ public class DjqTask extends AbstractAcsTask {
|
||||
packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1()));
|
||||
//3更新库存记录
|
||||
packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("有子卷")).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2()));
|
||||
//4.查询是否有未下发的输送线->满轴位任务,有就下发
|
||||
List<SchBaseTask> notIssueTaskList = taskService.list(new LambdaUpdateWrapper<SchBaseTask>()
|
||||
//确定起点
|
||||
//4.判断是否存在确定起点的输送线->满轴缓存位任务,存在就下发任务
|
||||
List<SchBaseTask> taskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
|
||||
//确定起点未下发
|
||||
.eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_START.getCode())
|
||||
.eq(SchBaseTask::getPoint_code1, "NBJ1002")
|
||||
.eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"))
|
||||
.eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_START.getCode()));
|
||||
if (CollectionUtils.isNotEmpty(notIssueTaskList)) {
|
||||
JSONObject jo = (JSONObject) JSONObject.toJSON(notIssueTaskList.get(0));
|
||||
jo.put("point_code2", schBaseTask.getPoint_code1());
|
||||
jo.put("task_status", TaskStatusEnum.SURE_START.getCode());
|
||||
jo.put("is_send", true);
|
||||
mzhcwTask.createTask(jo);
|
||||
.eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("否"))
|
||||
);
|
||||
if (CollectionUtils.isNotEmpty(taskList)) {
|
||||
SchBaseTask task = taskList.get(0);
|
||||
task.setPoint_code2(schBaseTask.getPoint_code1());
|
||||
task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode());
|
||||
task.setUpdate_time(DateUtil.now());
|
||||
task.setUpdate_optid(SecurityUtils.getCurrentUserId());
|
||||
task.setUpdate_optname(SecurityUtils.getCurrentNickName());
|
||||
taskService.update(task);
|
||||
//任务下发
|
||||
mzhcwTask.immediateNotifyAcs(task.getTask_id().toString());
|
||||
}
|
||||
}
|
||||
// 取消
|
||||
@@ -207,4 +216,6 @@ public class DjqTask extends AbstractAcsTask {
|
||||
schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName());
|
||||
taskService.update(schBaseTask);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -3,7 +3,9 @@ import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.BooleanUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -67,10 +69,10 @@ public class GzqTask extends AbstractAcsTask {
|
||||
.priority(r.getPriority())
|
||||
.remark(r.getRemark())
|
||||
.product_area(r.getProduct_area())
|
||||
.agv_system_type(PackageInfoIvtEnum.AGV_SYSTEM_TYPE.code("1楼叉车系统"))
|
||||
.agv_system_type(PackageInfoIvtEnum.AGV_SYSTEM_TYPE.code("1楼诺宝任务"))
|
||||
//.truss_type(PackageInfoIvtEnum.TRUSS_TYPE.code("点对点任务"))
|
||||
//.dtl_type(r.getDtl_type())
|
||||
//.params(r.getParams())
|
||||
.interaction_json(JSON.parseObject(r.getRequest_param()))
|
||||
.build();
|
||||
resultList.add(dto);
|
||||
});
|
||||
@@ -95,17 +97,24 @@ public class GzqTask extends AbstractAcsTask {
|
||||
packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1()));
|
||||
//更新库存记录
|
||||
packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("有子卷")).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2()));
|
||||
//3.查询是否有未下发的输送线->满轴位任务,有就下发
|
||||
List<SchBaseTask> notIssueTaskList = taskService.list(new LambdaUpdateWrapper<SchBaseTask>()
|
||||
//确定起点
|
||||
//3.判断是否存在确定起点的输送线->满轴缓存位任务,存在就下发任务
|
||||
List<SchBaseTask> taskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
|
||||
//确定起点未下发
|
||||
.eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_START.getCode())
|
||||
.eq(SchBaseTask::getPoint_code1, "NBJ1002")
|
||||
.eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"))
|
||||
.eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_START.getCode()));
|
||||
if (CollectionUtils.isNotEmpty(notIssueTaskList)) {
|
||||
JSONObject jo = (JSONObject) JSONObject.toJSON(notIssueTaskList.get(0));
|
||||
jo.put("point_code2", schBaseTask.getPoint_code1());
|
||||
jo.put("task_status", TaskStatusEnum.SURE_START.getCode());
|
||||
jo.put("is_send", true);
|
||||
mzhcwTask.createTask(jo);
|
||||
.eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("否"))
|
||||
);
|
||||
if (CollectionUtils.isNotEmpty(taskList)) {
|
||||
SchBaseTask task = taskList.get(0);
|
||||
task.setPoint_code2(schBaseTask.getPoint_code1());
|
||||
task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode());
|
||||
task.setUpdate_time(DateUtil.now());
|
||||
task.setUpdate_optid(SecurityUtils.getCurrentUserId());
|
||||
task.setUpdate_optname(SecurityUtils.getCurrentNickName());
|
||||
taskService.update(task);
|
||||
//任务下发
|
||||
mzhcwTask.immediateNotifyAcs(task.getTask_id().toString());
|
||||
}
|
||||
}
|
||||
// 取消
|
||||
|
||||
@@ -4,12 +4,15 @@ import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.BooleanUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
|
||||
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
|
||||
import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
||||
@@ -25,13 +28,14 @@ import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 3 目标空载具缓存位, 待检区或管制区 -> 空载具缓存位 , 补空载具, agv任务
|
||||
* 3 目标空载具缓存位, 装箱区 -> 空载具缓存位 , 补空载具, agv任务
|
||||
*
|
||||
* @author gbx
|
||||
* @since 2024-01-24
|
||||
@@ -48,10 +52,8 @@ public class KzjhcwTask extends AbstractAcsTask {
|
||||
|
||||
@Resource
|
||||
private IbstIvtPackageinfoivtService packageinfoivtService;
|
||||
|
||||
|
||||
@Resource
|
||||
private KzjhcwTask kzjhcwTask;
|
||||
private SsxDjwTask ssxDjwTask;
|
||||
|
||||
|
||||
@Override
|
||||
@@ -74,10 +76,10 @@ public class KzjhcwTask extends AbstractAcsTask {
|
||||
.priority(r.getPriority())
|
||||
.remark(r.getRemark())
|
||||
.product_area(r.getProduct_area())
|
||||
.agv_system_type(PackageInfoIvtEnum.AGV_SYSTEM_TYPE.code("1楼叉车系统"))
|
||||
.agv_system_type(PackageInfoIvtEnum.AGV_SYSTEM_TYPE.code("1楼诺宝任务"))
|
||||
//.truss_type(PackageInfoIvtEnum.TRUSS_TYPE.code("点对点任务"))
|
||||
//.dtl_type(r.getDtl_type())
|
||||
//.params(r.getParams())
|
||||
.interaction_json(JSON.parseObject(r.getRequest_param()))
|
||||
.build();
|
||||
resultList.add(dto);
|
||||
});
|
||||
@@ -87,8 +89,7 @@ public class KzjhcwTask extends AbstractAcsTask {
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateTaskStatus(JSONObject taskObj, String status) {
|
||||
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>().eq( SchBaseTask::getTask_id, taskObj.getString("task_id")), false);
|
||||
;
|
||||
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>().eq(SchBaseTask::getTask_id, taskObj.getString("task_id")), false);
|
||||
if (schBaseTask == null) {
|
||||
throw new BadRequestException("待检区或管制区 -> 空载具缓存位更新接口任务号为空!");
|
||||
}
|
||||
@@ -102,28 +103,25 @@ public class KzjhcwTask extends AbstractAcsTask {
|
||||
//2.改变起点点位状态
|
||||
packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1()));
|
||||
//更新库存记录
|
||||
packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("有子卷")).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2()));
|
||||
//3.待检区搬运空载具到空载具缓存位完毕,判断是否有未下发的空载具送输送线任务,有就下发
|
||||
List<BstIvtPackageinfoivt> bstIvtPackageinfoivtList = packageinfoivtService
|
||||
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
|
||||
.eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
|
||||
.eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空"))
|
||||
.orderByAsc(BstIvtPackageinfoivt::getSort_seq));
|
||||
//待检区和管控区点位
|
||||
List<BstIvtPackageinfoivt> djqPointList = bstIvtPackageinfoivtList.stream().filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("待检区").equals(r.getPoint_status())
|
||||
|| PackageInfoIvtEnum.POINT_STATUS.code("管制区").equals(r.getPoint_status())).collect(Collectors.toList());
|
||||
packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空载具")).eq("point_code", schBaseTask.getPoint_code2()));
|
||||
//3.装箱区搬运空载具到空载具缓存位完毕,判断是否存在确定终点的空载具缓存位->输送线任务,存在就下发任务
|
||||
List<SchBaseTask> taskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
|
||||
//确定起点未下发
|
||||
.eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_START.getCode())
|
||||
.and(r ->
|
||||
r.in(SchBaseTask::getPoint_code1, djqPointList)
|
||||
)
|
||||
);
|
||||
taskList.forEach(r -> {
|
||||
//任务下发
|
||||
kzjhcwTask.immediateNotifyAcs(r.getTask_id().toString());
|
||||
}
|
||||
//确定终点未下发
|
||||
.eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_END.getCode())
|
||||
.eq(SchBaseTask::getPoint_code2, "NBJ1002")
|
||||
.eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)")).eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("否"))
|
||||
);
|
||||
if (CollectionUtils.isNotEmpty(taskList)) {
|
||||
SchBaseTask task = taskList.get(0);
|
||||
task.setPoint_code1(schBaseTask.getPoint_code2());
|
||||
task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode());
|
||||
task.setUpdate_time(DateUtil.now());
|
||||
task.setUpdate_optid(SecurityUtils.getCurrentUserId());
|
||||
task.setUpdate_optname(SecurityUtils.getCurrentNickName());
|
||||
taskService.update(task);
|
||||
//任务下发
|
||||
ssxDjwTask.immediateNotifyAcs(task.getTask_id().toString());
|
||||
}
|
||||
}
|
||||
// 取消
|
||||
if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) {
|
||||
@@ -215,4 +213,36 @@ public class KzjhcwTask extends AbstractAcsTask {
|
||||
schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName());
|
||||
taskService.update(schBaseTask);
|
||||
}
|
||||
|
||||
/**
|
||||
* 装箱区->空载具缓存位补空
|
||||
*/
|
||||
public void toKzjHcw(String pointCode) {
|
||||
//存在空载具缓存位无空载具的点位
|
||||
List<BstIvtPackageinfoivt> kzjIvtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"), PackageInfoIvtEnum.IVT_STATUS.code("空"));
|
||||
String pointCode1 = null;
|
||||
JSONObject toKzjHcwTask = new JSONObject();
|
||||
if (StringUtils.isNotBlank(pointCode)) {
|
||||
pointCode1 = pointCode;
|
||||
} else {
|
||||
//查询装箱区有空载具
|
||||
List<BstIvtPackageinfoivt> zxqPointList = packageinfoivtService
|
||||
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
|
||||
.eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("装箱区"))
|
||||
.eq(BstIvtPackageinfoivt::getIs_used, IOSEnum.IS_NOTANDYES.code("是"))
|
||||
.eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空载具")).orderByAsc(BstIvtPackageinfoivt::getSort_seq));
|
||||
//装箱区有空载具
|
||||
if (CollectionUtils.isNotEmpty(zxqPointList)) {
|
||||
pointCode1 = zxqPointList.get(0).getPoint_code();
|
||||
}
|
||||
}
|
||||
//去装箱区搬运空载具
|
||||
if (CollectionUtils.isNotEmpty(kzjIvtList) && pointCode1 != null) {
|
||||
toKzjHcwTask.put("point_code1", pointCode1);
|
||||
//送到到任意空载具缓存位
|
||||
toKzjHcwTask.put("point_code2", kzjIvtList.get(0).getPoint_code());
|
||||
toKzjHcwTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("取空(待检区->空载具缓存位)"));
|
||||
this.createTask(toKzjHcwTask);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.BooleanUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
@@ -94,10 +95,10 @@ public class MzhcwTask extends AbstractAcsTask {
|
||||
.priority(r.getPriority())
|
||||
.remark(r.getRemark())
|
||||
.product_area(r.getProduct_area())
|
||||
//.agv_system_type(PackageInfoIvtEnum.AGV_SYSTEM_TYPE.code("1楼叉车系统"))
|
||||
//.agv_system_type(PackageInfoIvtEnum.AGV_SYSTEM_TYPE.code("1楼诺宝任务"))
|
||||
//.truss_type(PackageInfoIvtEnum.TRUSS_TYPE.code("点对点任务"))
|
||||
//.dtl_type(r.getDtl_type())
|
||||
//.params(r.getParams())
|
||||
.interaction_json(JSON.parseObject(r.getRequest_param()))
|
||||
.build();
|
||||
resultList.add(dto);
|
||||
});
|
||||
@@ -121,65 +122,69 @@ public class MzhcwTask extends AbstractAcsTask {
|
||||
//1.更改任务状态为完成
|
||||
schBaseTask.setTask_status(TaskStatusEnum.FINISHED.getCode());
|
||||
//2.改变起点点位状态
|
||||
packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1()));
|
||||
//packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1()));
|
||||
//更新库存记录
|
||||
packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("有子卷")).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2()));
|
||||
//3.任务一、待检区AGV搬运任务,查询子卷信息,去分切计划表查找定级数据,桁架任务完成根据子卷定级创建AGV任务将满轴搬运至质检区或管制区
|
||||
if (StringUtils.isBlank(schBaseTask.getVehicle_code())) {
|
||||
throw new BadRequestException("子卷号不能为空!");
|
||||
}
|
||||
PdmBiSlittingproductionplan containerInfo = productionPlanService.getOne(new LambdaUpdateWrapper<PdmBiSlittingproductionplan>()
|
||||
.eq(PdmBiSlittingproductionplan::getContainer_name, schBaseTask.getVehicle_code()));
|
||||
if (containerInfo == null) {
|
||||
throw new BadRequestException("找不到子卷信息!");
|
||||
}
|
||||
//子卷等级
|
||||
String level = containerInfo.getLevel() == null ? "1" : containerInfo.getLevel();
|
||||
// if (Arrays.stream(ContainerLevelEnum.values()).noneMatch(enumItem -> enumItem.getCode().equals(level))) {
|
||||
// throw new BadRequestException("非法的子卷等级!");
|
||||
// if (StringUtils.isBlank(schBaseTask.getVehicle_code())) {
|
||||
// throw new BadRequestException("子卷号不能为空!");
|
||||
// }
|
||||
//查询待检区和管制区库位情况
|
||||
//PdmBiSlittingproductionplan containerInfo = productionPlanService.getOne(new LambdaUpdateWrapper<PdmBiSlittingproductionplan>()
|
||||
//.eq(PdmBiSlittingproductionplan::getContainer_name, schBaseTask.getVehicle_code()));
|
||||
// if (containerInfo == null) {
|
||||
//todo 现场测试,子卷号不在包装关系表中
|
||||
// throw new BadRequestException("找不到子卷信息!");
|
||||
// }
|
||||
//子卷等级
|
||||
// String level = containerInfo.getLevel() == null ? "1" : containerInfo.getLevel();
|
||||
// if (Arrays.stream(ContainerLevelEnum.values()).noneMatch(enumItem -> enumItem.getCode().equals(level))) {
|
||||
// throw new BadRequestException("非法的子卷等级!");
|
||||
// }
|
||||
//String level ="1";
|
||||
//查询库位信息
|
||||
List<BstIvtPackageinfoivt> bstIvtPackageinfoivtList = packageinfoivtService
|
||||
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
|
||||
.eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
|
||||
.orderByAsc(BstIvtPackageinfoivt::getSort_seq));
|
||||
// JSONObject toDjqTask = new JSONObject();
|
||||
// //获取子卷号
|
||||
// toDjqTask.put("vehicle_code", containerInfo.getContainer_name());
|
||||
// // 判断子卷等级属于待检区还是管制区,创建满轴缓存位到待检区或管制区的agv任务
|
||||
// if (Stream.of(ContainerLevelEnum.BEST, ContainerLevelEnum.WELL, ContainerLevelEnum.COMMON).anyMatch(enumItem -> enumItem.getCode().equals(level))) {
|
||||
// List<BstIvtPackageinfoivt> djqPointList = bstIvtPackageinfoivtList.stream()
|
||||
// .filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("待检区").equals(r.getPoint_status())
|
||||
// && PackageInfoIvtEnum.IVT_STATUS.code("空").equals(r.getIvt_status())).collect(Collectors.toList());
|
||||
// if (CollectionUtils.isEmpty(djqPointList)) {
|
||||
// throw new BadRequestException("待检区暂无空余库位!");
|
||||
// }
|
||||
// toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->待检区"));
|
||||
// toDjqTask.put("point_code1", schBaseTask.getPoint_code2());
|
||||
// toDjqTask.put("point_code2", djqPointList.get(0).getPoint_code());
|
||||
// djqTask.createTask(toDjqTask);
|
||||
// } else if (Stream.of(ContainerLevelEnum.REWORK, ContainerLevelEnum.CONTROL).anyMatch(enumItem -> enumItem.getCode().equals(level))) {
|
||||
// List<BstIvtPackageinfoivt> gkqPointList = bstIvtPackageinfoivtList.stream()
|
||||
// .filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("管制区").equals(r.getPoint_status())
|
||||
// && PackageInfoIvtEnum.IVT_STATUS.code("空").equals(r.getIvt_status())).collect(Collectors.toList());
|
||||
// if (CollectionUtils.isEmpty(gkqPointList)) {
|
||||
// throw new BadRequestException("管控区暂无空余库位!");
|
||||
// }
|
||||
// toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->管制区"));
|
||||
// toDjqTask.put("point_code1", schBaseTask.getPoint_code2());
|
||||
// toDjqTask.put("point_code2", gkqPointList.get(0).getPoint_code());
|
||||
// gzqTask.createTask(toDjqTask);
|
||||
// }
|
||||
//4.创建空载具到输送线任务
|
||||
// if (schBaseTask.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"))) {
|
||||
// JSONObject toDjqTask = new JSONObject();
|
||||
// //获取子卷号
|
||||
// toDjqTask.put("vehicle_code", schBaseTask.getVehicle_code());
|
||||
// // 判断子卷等级属于待检区还是管制区,创建满轴缓存位到待检区或管制区的agv任务
|
||||
// if (Stream.of(ContainerLevelEnum.BEST, ContainerLevelEnum.WELL, ContainerLevelEnum.COMMON).anyMatch(enumItem -> enumItem.getCode().equals(level))) {
|
||||
// List<BstIvtPackageinfoivt> djqPointList = bstIvtPackageinfoivtList.stream()
|
||||
// .filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("待检区").equals(r.getPoint_status())
|
||||
// && PackageInfoIvtEnum.IVT_STATUS.code("空").equals(r.getIvt_status())&& r.getIs_used().equals(PackageInfoIvtEnum.IS_USED.code("启用"))).collect(Collectors.toList());
|
||||
// if (CollectionUtils.isEmpty(djqPointList)) {
|
||||
// throw new BadRequestException("待检区暂无空余库位!");
|
||||
// }
|
||||
// toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->待检区"));
|
||||
// toDjqTask.put("point_code1", schBaseTask.getPoint_code2());
|
||||
// toDjqTask.put("point_code2", djqPointList.get(0).getPoint_code());
|
||||
// // djqTask.createTask(toDjqTask);
|
||||
// } else if (Stream.of(ContainerLevelEnum.REWORK, ContainerLevelEnum.CONTROL).anyMatch(enumItem -> enumItem.getCode().equals(level))) {
|
||||
// List<BstIvtPackageinfoivt> gkqPointList = bstIvtPackageinfoivtList.stream()
|
||||
// .filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("管制区").equals(r.getPoint_status())
|
||||
// && PackageInfoIvtEnum.IVT_STATUS.code("空").equals(r.getIvt_status())&& r.getIs_used().equals(PackageInfoIvtEnum.IS_USED.code("启用"))).collect(Collectors.toList());
|
||||
// if (CollectionUtils.isEmpty(gkqPointList)) {
|
||||
// throw new BadRequestException("管控区暂无空余库位!");
|
||||
// }
|
||||
// toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->管制区"));
|
||||
// toDjqTask.put("point_code1", schBaseTask.getPoint_code2());
|
||||
// toDjqTask.put("point_code2", gkqPointList.get(0).getPoint_code());
|
||||
// //gzqTask.createTask(toDjqTask);
|
||||
// }
|
||||
//4.创建空载具到输送线任务,完成后需要创建空载具缓存位->输送线任务
|
||||
//如果是输送线->满轴缓存位任务
|
||||
if (schBaseTask.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"))) {
|
||||
List<BstIvtPackageinfoivt> kzjPointList = bstIvtPackageinfoivtList.stream()
|
||||
.filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位").equals(r.getPoint_status())
|
||||
&& PackageInfoIvtEnum.IVT_STATUS.code("空载具").equals(r.getIvt_status())).collect(Collectors.toList());
|
||||
JSONObject toSsxTask = new JSONObject();
|
||||
toSsxTask.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
|
||||
toSsxTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"));
|
||||
toSsxTask.put("vehicle_code", containerInfo.getContainer_name());
|
||||
//判断空载具缓存位是否有空载具库存,有就叫桁架去任一一个位置搬空载具
|
||||
toSsxTask.put("vehicle_code", schBaseTask.getVehicle_code());
|
||||
//toSsxTask.put("vehicle_code", containerInfo.getContainer_name());
|
||||
//判断空载具缓存位是否有空载具库存,有就叫桁架去任一位置搬空载具
|
||||
if (CollectionUtils.isNotEmpty(kzjPointList)) {
|
||||
//直接创建搬运空载具任务
|
||||
toSsxTask.put("point_code1", kzjPointList.get(0).getPoint_code());
|
||||
@@ -187,49 +192,53 @@ public class MzhcwTask extends AbstractAcsTask {
|
||||
toSsxTask.put("point_code2", schBaseTask.getPoint_code1());
|
||||
ssxDjwTask.createTask(toSsxTask);
|
||||
} else {
|
||||
//空载具缓存位没有可用的库存:判断是否有正在搬运空载具过来的任务,有的话不创建
|
||||
//没有的话创建搬运空载具任务, 当任务完成的时候,补发桁架任务。
|
||||
List<BstIvtPackageinfoivt> packageinfoivtList = packageinfoivtService.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
|
||||
.eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"))
|
||||
.eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")));
|
||||
//todo 查找正在搬运到待检区的任务,假设只有一个
|
||||
List<SchBaseTask> taskList = taskService.list(new LambdaUpdateWrapper<SchBaseTask>()
|
||||
//执行中
|
||||
.eq(SchBaseTask::getTask_status, TaskStatusEnum.EXECUTING.getCode())
|
||||
.and(
|
||||
r -> r.in(SchBaseTask::getPoint_code2, packageinfoivtList)
|
||||
));
|
||||
//没有正在搬运空载具过来的任务,创建搬运空载具任务
|
||||
if (CollectionUtils.isEmpty(taskList)) {
|
||||
//查询待检区或管制区有空载具的
|
||||
List<BstIvtPackageinfoivt> djqOrGzqPointList = packageinfoivtService
|
||||
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
|
||||
.in(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.POINT_STATUS.code("管制区"))
|
||||
.eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空载具")).orderByAsc(BstIvtPackageinfoivt::getSort_seq));
|
||||
List<BstIvtPackageinfoivt> djqPointList = djqOrGzqPointList.stream().filter(r -> r.getPoint_status().equals(PackageInfoIvtEnum.POINT_STATUS.code("待检区"))).collect(Collectors.toList());
|
||||
//待检区库位有空载具
|
||||
if (CollectionUtils.isNotEmpty(djqPointList)) {
|
||||
List<BstIvtPackageinfoivt> kzjPoint = packageinfoivtList.stream()
|
||||
.filter(r -> PackageInfoIvtEnum.IVT_STATUS.code("空载具").equals(r.getIvt_status()))
|
||||
.sorted(Comparator.comparing(BstIvtPackageinfoivt::getSort_seq))
|
||||
.collect(Collectors.toList());
|
||||
//创建搬运空载具任务
|
||||
JSONObject toKzjhcwTask = new JSONObject();
|
||||
if (CollectionUtils.isNotEmpty(djqPointList)) {
|
||||
//优先去待检区取空载具
|
||||
toKzjhcwTask.put("point_code1", djqPointList.get(0).getPoint_code());
|
||||
} else {
|
||||
|
||||
toKzjhcwTask.put("point_code1", djqOrGzqPointList.get(0).getPoint_code());
|
||||
}
|
||||
toKzjhcwTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("取空(待检区->空载具缓存位)"));
|
||||
//送到到任意空载具缓存位
|
||||
toKzjhcwTask.put("point_code2", kzjPoint.get(0).getPoint_code());
|
||||
toKzjhcwTask.put("vehicle_code", containerInfo.getContainer_name());
|
||||
kzjhcwTask.createTask(toKzjhcwTask);
|
||||
}
|
||||
}
|
||||
//}
|
||||
// //空载具缓存位空载具:判断是否有正在搬运空载具过来的任务,有的话不创建
|
||||
// //没有的话创建搬运空载具任务, 当任务完成的时候,补发桁架任务。
|
||||
// List<BstIvtPackageinfoivt> packageinfoivtList = packageinfoivtService.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
|
||||
// .eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"))
|
||||
// .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")));
|
||||
// //todo 查找正在搬运到待检区的任务,假设只有一个
|
||||
// List<SchBaseTask> taskList = taskService.list(new LambdaUpdateWrapper<SchBaseTask>()
|
||||
// //执行中
|
||||
// .eq(SchBaseTask::getTask_status, TaskStatusEnum.EXECUTING.getCode())
|
||||
// .and(
|
||||
// r -> r.in(SchBaseTask::getPoint_code2, packageinfoivtList)
|
||||
// ));
|
||||
// //没有正在搬运空载具过来的任务,创建搬运空载具任务
|
||||
// if (CollectionUtils.isEmpty(taskList)) {
|
||||
// //查询待检区或管制区有空载具的
|
||||
// List<BstIvtPackageinfoivt> djqOrGzqPointList = packageinfoivtService
|
||||
// .list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
|
||||
// .in(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.POINT_STATUS.code("管制区"))
|
||||
// .eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空载具")).orderByAsc(BstIvtPackageinfoivt::getSort_seq));
|
||||
// List<BstIvtPackageinfoivt> djqPointList = djqOrGzqPointList.stream().filter(r -> r.getPoint_status().equals(PackageInfoIvtEnum.POINT_STATUS.code("待检区"))).collect(Collectors.toList());
|
||||
// //待检区库位有空载具
|
||||
// if (CollectionUtils.isNotEmpty(djqPointList)) {
|
||||
// List<BstIvtPackageinfoivt> kzjPoint = packageinfoivtList.stream()
|
||||
// .filter(r -> PackageInfoIvtEnum.IVT_STATUS.code("空载具").equals(r.getIvt_status()))
|
||||
// .sorted(Comparator.comparing(BstIvtPackageinfoivt::getSort_seq))
|
||||
// .collect(Collectors.toList());
|
||||
// //创建搬运空载具任务
|
||||
// JSONObject toKzjhcwTask = new JSONObject();
|
||||
// if (CollectionUtils.isNotEmpty(djqPointList)) {
|
||||
// //优先去待检区取空载具
|
||||
// toKzjhcwTask.put("point_code1", djqPointList.get(0).getPoint_code());
|
||||
// } else {
|
||||
//
|
||||
// toKzjhcwTask.put("point_code1", djqOrGzqPointList.get(0).getPoint_code());
|
||||
// }
|
||||
// toKzjhcwTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("取空(待检区->空载具缓存位)"));
|
||||
// //送到到任意空载具缓存位
|
||||
// toKzjhcwTask.put("point_code2", kzjPoint.get(0).getPoint_code());
|
||||
// //toKzjhcwTask.put("vehicle_code", containerInfo.getContainer_name());
|
||||
// toKzjhcwTask.put("vehicle_code", schBaseTask.getVehicle_code());
|
||||
// kzjhcwTask.createTask(toKzjhcwTask);
|
||||
// }
|
||||
//}
|
||||
}
|
||||
} else {
|
||||
//四个点任务,改变pointCode3点位状态
|
||||
packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code3()));
|
||||
}
|
||||
}
|
||||
// 取消
|
||||
@@ -262,9 +271,9 @@ public class MzhcwTask extends AbstractAcsTask {
|
||||
throw new BadRequestException("起点不能为空");
|
||||
}
|
||||
String pointCode2 = form.getString("point_code2");
|
||||
if (StrUtil.isBlank(pointCode2)) {
|
||||
throw new BadRequestException("下一点不能为空");
|
||||
}
|
||||
// if (StrUtil.isBlank(pointCode2)) {
|
||||
// throw new BadRequestException("下一点不能为空");
|
||||
// }
|
||||
//是否立即下发
|
||||
boolean isSend = !StrUtil.isNotBlank(form.getString("is_send")) || BooleanUtil.toBoolean(form.getString("is_send"));
|
||||
SchBaseTaskVO schBaseTaskVo = SchBaseTaskVO.builder()
|
||||
@@ -322,6 +331,36 @@ public class MzhcwTask extends AbstractAcsTask {
|
||||
schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName());
|
||||
taskService.update(schBaseTask);
|
||||
}
|
||||
|
||||
/**
|
||||
* 满轴缓存位->待检区
|
||||
*/
|
||||
public void toDjq(String pointCode) {
|
||||
//查询空载具缓存位是否有空载具
|
||||
List<BstIvtPackageinfoivt> djQIvtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("空"));
|
||||
String pointCode1 = null;
|
||||
JSONObject toDjqTask = new JSONObject();
|
||||
if (StringUtils.isNotBlank(pointCode)) {
|
||||
pointCode1 = pointCode;
|
||||
} else {
|
||||
//查询满轴位是否有子卷且不存在进行中的任务
|
||||
List<BstIvtPackageinfoivt> mzPointList = packageinfoivtService
|
||||
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
|
||||
.eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位"))
|
||||
.eq(BstIvtPackageinfoivt::getIs_used, IOSEnum.IS_NOTANDYES.code("是"))
|
||||
.eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("有子卷")).orderByAsc(BstIvtPackageinfoivt::getSort_seq));
|
||||
//装箱区有空载具
|
||||
if (CollectionUtils.isNotEmpty(mzPointList)) {
|
||||
pointCode1 = mzPointList.get(0).getPoint_code();
|
||||
}
|
||||
}
|
||||
//去装箱区搬运空载具
|
||||
if (CollectionUtils.isNotEmpty(djQIvtList) && pointCode1 != null) {
|
||||
toDjqTask.put("point_code1", pointCode1);
|
||||
//送到到任意空载具缓存位
|
||||
toDjqTask.put("point_code2", djQIvtList.get(0).getPoint_code());
|
||||
toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("取空(待检区->空载具缓存位)"));
|
||||
this.createTask(toDjqTask);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.BooleanUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
@@ -51,6 +52,9 @@ public class SsxDjwTask extends AbstractAcsTask {
|
||||
|
||||
@Resource
|
||||
private KzjhcwTask kzjhcwTask;
|
||||
@Resource
|
||||
private SsxDjwTask ssxDjwTask;
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
@@ -73,10 +77,10 @@ public class SsxDjwTask extends AbstractAcsTask {
|
||||
.priority(r.getPriority())
|
||||
.remark(r.getRemark())
|
||||
.product_area(r.getProduct_area())
|
||||
//.agv_system_type(PackageInfoIvtEnum.AGV_SYSTEM_TYPE.code("1楼叉车系统"))
|
||||
//.agv_system_type(PackageInfoIvtEnum.AGV_SYSTEM_TYPE.code("1楼诺宝任务"))
|
||||
//.truss_type(PackageInfoIvtEnum.TRUSS_TYPE.code("点对点任务"))
|
||||
//.dtl_type(r.getDtl_type())
|
||||
//.params(r.getParams())
|
||||
.interaction_json(JSON.parseObject(r.getRequest_param()))
|
||||
.build();
|
||||
resultList.add(dto);
|
||||
});
|
||||
@@ -100,24 +104,23 @@ public class SsxDjwTask extends AbstractAcsTask {
|
||||
//2.改变起点点位状态
|
||||
packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1()));
|
||||
//更新库存记录
|
||||
packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("有子卷")).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2()));
|
||||
//packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("有子卷")).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2()));
|
||||
//3.空载具缓存位到输送线送空任务完成,去待检区或管制区补空载具
|
||||
List<BstIvtPackageinfoivt> djqPointList = packageinfoivtService
|
||||
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
|
||||
.in(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.POINT_STATUS.code("管制区"))
|
||||
.eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空载具"))
|
||||
.eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
|
||||
.orderByAsc(BstIvtPackageinfoivt::getSort_seq));
|
||||
//有空载具
|
||||
if (CollectionUtils.isNotEmpty(djqPointList)) {
|
||||
//创建搬运空载具任务
|
||||
JSONObject toKzjhcwTask = new JSONObject();
|
||||
toKzjhcwTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("取空(待检区->空载具缓存位)"));
|
||||
toKzjhcwTask.put("point_code1", djqPointList.get(0).getPoint_code());
|
||||
//任务起点为补空载具终点
|
||||
toKzjhcwTask.put("point_code2", schBaseTask.getPoint_code1());
|
||||
kzjhcwTask.createTask(toKzjhcwTask);
|
||||
}
|
||||
// List<BstIvtPackageinfoivt> zxqPointList = packageinfoivtService
|
||||
// .list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
|
||||
// .eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("装箱区"))
|
||||
// .eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空载具"))
|
||||
// .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
|
||||
// .orderByAsc(BstIvtPackageinfoivt::getSort_seq));
|
||||
// //有空载具,创建搬运空载具任务
|
||||
// if (CollectionUtils.isNotEmpty(zxqPointList)) {
|
||||
// JSONObject toKzjhcwTask = new JSONObject();
|
||||
// toKzjhcwTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("取空(待检区->空载具缓存位)"));
|
||||
// toKzjhcwTask.put("point_code1", zxqPointList.get(0).getPoint_code());
|
||||
// //任务起点为补空载具终点
|
||||
// toKzjhcwTask.put("point_code2", schBaseTask.getPoint_code1());
|
||||
// kzjhcwTask.createTask(toKzjhcwTask);
|
||||
// }
|
||||
}
|
||||
// 取消
|
||||
if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) {
|
||||
@@ -141,13 +144,13 @@ public class SsxDjwTask extends AbstractAcsTask {
|
||||
throw new BadRequestException("业务类型不能为空");
|
||||
}
|
||||
String vehicleCode = form.getString("vehicle_code");
|
||||
if (StrUtil.isBlank(vehicleCode)) {
|
||||
throw new BadRequestException("载具号不能为空");
|
||||
}
|
||||
// if (StrUtil.isBlank(vehicleCode)) {
|
||||
// throw new BadRequestException("载具号不能为空");
|
||||
// }
|
||||
String pointCode1 = form.getString("point_code1");
|
||||
if (StrUtil.isBlank(pointCode1)) {
|
||||
throw new BadRequestException("起点不能为空");
|
||||
}
|
||||
// if (StrUtil.isBlank(pointCode1)) {
|
||||
// throw new BadRequestException("起点不能为空");
|
||||
// }
|
||||
String pointCode2 = form.getString("point_code2");
|
||||
if (StrUtil.isBlank(pointCode2)) {
|
||||
throw new BadRequestException("下一点不能为空");
|
||||
|
||||
@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.BooleanUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
@@ -11,6 +12,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.IPdmBiSlittingproductionplanService;
|
||||
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan;
|
||||
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
|
||||
@@ -49,7 +51,8 @@ import java.util.stream.Collectors;
|
||||
@Slf4j
|
||||
public class ZxDjwTask extends AbstractAcsTask {
|
||||
|
||||
|
||||
@Resource
|
||||
private KzjhcwTask kzjhcwTask;
|
||||
@Resource
|
||||
private DjqTask djqTask;
|
||||
@Resource
|
||||
@@ -82,13 +85,13 @@ public class ZxDjwTask extends AbstractAcsTask {
|
||||
.start_device_code2(r.getPoint_code3())
|
||||
.next_device_code2(r.getPoint_code4())
|
||||
.vehicle_code(r.getVehicle_code())
|
||||
.interaction_json(JSON.parseObject(r.getRequest_param()))
|
||||
.priority(r.getPriority())
|
||||
.remark(r.getRemark())
|
||||
.product_area(r.getProduct_area())
|
||||
//.agv_system_type(PackageInfoIvtEnum.AGV_SYSTEM_TYPE.code("1楼叉车系统"))
|
||||
//.agv_system_type(PackageInfoIvtEnum.AGV_SYSTEM_TYPE.code("1楼诺宝任务"))
|
||||
//.truss_type(PackageInfoIvtEnum.TRUSS_TYPE.code("点对点任务"))
|
||||
//.dtl_type(r.getDtl_type())
|
||||
//.params(r.getParams())
|
||||
.build();
|
||||
resultList.add(dto);
|
||||
});
|
||||
@@ -132,24 +135,8 @@ public class ZxDjwTask extends AbstractAcsTask {
|
||||
bstIvtBoxinfo.setIs_packing("1");
|
||||
bstIvtBoxinfoMapper.updateById(bstIvtBoxinfo);
|
||||
}
|
||||
//5.装箱区->装箱对接位桁架任务完成后,创建搬运空载具任务,放空(装箱区->待检区)
|
||||
List<BstIvtPackageinfoivt> djqOrGzqPointList = packageinfoivtService
|
||||
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
|
||||
.in(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.POINT_STATUS.code("管制区"))
|
||||
.eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空")).orderByAsc(BstIvtPackageinfoivt::getSort_seq));
|
||||
List<BstIvtPackageinfoivt> djqPointList = djqOrGzqPointList.stream().filter(r -> r.getPoint_status().equals(PackageInfoIvtEnum.POINT_STATUS.code("待检区"))).collect(Collectors.toList());
|
||||
JSONObject toDjqOrGzqTask = new JSONObject();
|
||||
toDjqOrGzqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("放空(装箱区->待检区)"));
|
||||
//装箱区->待检区起点为桁架任务的起点
|
||||
toDjqOrGzqTask.put("point_code1", schBaseTask.getPoint_code1());
|
||||
if (CollectionUtils.isNotEmpty(djqPointList)) {
|
||||
//优先送到待检区
|
||||
toDjqOrGzqTask.put("point_code2", djqPointList.get(0).getPoint_code());
|
||||
} else {
|
||||
toDjqOrGzqTask.put("point_code2", djqOrGzqPointList.get(0).getPoint_code());
|
||||
}
|
||||
toDjqOrGzqTask.put("vehicle_code", containerInfo.getContainer_name());
|
||||
djqTask.createTask(toDjqOrGzqTask);
|
||||
//创建装箱区->空载具缓存位补空任务
|
||||
kzjhcwTask.toKzjHcw(schBaseTask.getPoint_code1());
|
||||
}
|
||||
// 取消
|
||||
if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) {
|
||||
@@ -165,6 +152,10 @@ public class ZxDjwTask extends AbstractAcsTask {
|
||||
taskService.update(schBaseTask);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public String createTask(JSONObject form) {
|
||||
Assert.notNull(form, "请求参数不能为空");
|
||||
@@ -193,6 +184,7 @@ public class ZxDjwTask extends AbstractAcsTask {
|
||||
.point_code2(pointCode2)
|
||||
.point_code3(form.getString("point_code3"))
|
||||
.point_code4(form.getString("point_code4"))
|
||||
.request_param(form.getString("request_param"))
|
||||
.task_id(org.nl.common.utils.IdUtil.getStringId())
|
||||
.task_code(org.nl.common.utils.IdUtil.getStringId())
|
||||
.handle_class(THIS_CLASS)
|
||||
|
||||
@@ -27,10 +27,12 @@ import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
|
||||
import org.nl.common.enums.PackageInfoIvtEnum;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.system.service.param.ISysParamService;
|
||||
import org.nl.wms.sch.AcsTaskDto;
|
||||
import org.nl.wms.sch.manage.AbstractAcsTask;
|
||||
import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@@ -69,6 +71,9 @@ public class ZxqTask extends AbstractAcsTask {
|
||||
@Resource
|
||||
private BstIvtBoxinfoMapper bstIvtBoxinfoMapper;
|
||||
|
||||
@Resource
|
||||
private ISysParamService iSysParamService;
|
||||
|
||||
|
||||
private final String THIS_CLASS = ZxqTask.class.getName();
|
||||
|
||||
@@ -93,7 +98,7 @@ public class ZxqTask extends AbstractAcsTask {
|
||||
.remark(r.getRemark())
|
||||
.product_area(r.getProduct_area())
|
||||
.interaction_json(JSON.parseObject(r.getRequest_param()))
|
||||
.agv_system_type(PackageInfoIvtEnum.AGV_SYSTEM_TYPE.code("1楼叉车系统"))
|
||||
.agv_system_type(PackageInfoIvtEnum.AGV_SYSTEM_TYPE.code("1楼诺宝任务"))
|
||||
//.truss_type(PackageInfoIvtEnum.TRUSS_TYPE.code("点对点任务"))
|
||||
//.dtl_type(r.getDtl_type())
|
||||
.build();
|
||||
@@ -161,6 +166,9 @@ public class ZxqTask extends AbstractAcsTask {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//扩展参数
|
||||
JSONObject param = new JSONObject();
|
||||
//获取木箱信息,未包装的木箱
|
||||
@@ -168,6 +176,20 @@ public class ZxqTask extends AbstractAcsTask {
|
||||
if (bstIvtBoxinfo == null) {
|
||||
throw new BadRequestException("找不到木箱信息!");
|
||||
}
|
||||
//获取木箱高度等级
|
||||
String height = "";
|
||||
String heightLevel1 = iSysParamService.findByCode("height_level_1").getValue();
|
||||
String heightLevel2 = iSysParamService.findByCode("height_level_2").getValue();
|
||||
String box_high = bstIvtBoxinfo.getBox_high();
|
||||
if (Integer.parseInt(box_high) <= Integer.parseInt(heightLevel1)) {
|
||||
height = "1";
|
||||
} else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
|
||||
height = "2";
|
||||
} else {
|
||||
height = "3";
|
||||
}
|
||||
//木箱高度等级
|
||||
param.put("heightLevel", height);
|
||||
//木箱最大数量
|
||||
param.put("maxNo", bstIvtBoxinfo.getNum());
|
||||
//托盘类型 1小托盘 2大托盘
|
||||
|
||||
@@ -9,6 +9,7 @@ import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
|
||||
import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
||||
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
|
||||
import org.nl.b_lms.sch.tasks.first_floor_area.KzjhcwTask;
|
||||
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
|
||||
import org.nl.common.enums.PackageInfoIvtEnum;
|
||||
import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -16,6 +17,8 @@ import org.springframework.stereotype.Component;
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
@@ -27,71 +30,13 @@ public class AutoSendEmptyVehicle {
|
||||
private KzjhcwTask kzjhcwTask;
|
||||
|
||||
|
||||
@Resource
|
||||
private IschBaseTaskService taskService;
|
||||
|
||||
|
||||
@Resource
|
||||
private IbstIvtPackageinfoivtService packageinfoivtService;
|
||||
|
||||
public void run() {
|
||||
this.sendKzjHcwEmptyVehicle();
|
||||
}
|
||||
|
||||
//装箱区->待检区补空任务
|
||||
void sendKzjHcwEmptyVehicle() {
|
||||
//查询空载具缓存位是否有空载具
|
||||
List<BstIvtPackageinfoivt> bstIvtPackageinfoivtList = packageinfoivtService
|
||||
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
|
||||
.eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
|
||||
.orderByAsc(BstIvtPackageinfoivt::getSort_seq));
|
||||
List<BstIvtPackageinfoivt> kzjPointList = bstIvtPackageinfoivtList.stream()
|
||||
.filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位").equals(r.getPoint_status())
|
||||
&& PackageInfoIvtEnum.IVT_STATUS.code("空").equals(r.getIvt_status())).collect(Collectors.toList());
|
||||
//如果空载具缓存位都为空,则去搬运空载具
|
||||
if (CollectionUtils.isEmpty(kzjPointList)) {
|
||||
//空载具缓存位没有可用的库存:判断是否有正在搬运空载具过来的任务,有的话不创建
|
||||
//没有的话创建搬运空载具任务, 当任务完成的时候,补发桁架任务。
|
||||
List<BstIvtPackageinfoivt> packageinfoivtList = packageinfoivtService.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
|
||||
.eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"))
|
||||
.eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")));
|
||||
//todo 查找正在搬运到待检区的任务,假设只有一个
|
||||
List<SchBaseTask> taskList = taskService.list(new LambdaUpdateWrapper<SchBaseTask>()
|
||||
//执行中
|
||||
.eq(SchBaseTask::getTask_status, TaskStatusEnum.EXECUTING.getCode())
|
||||
.and(
|
||||
r -> r.in(SchBaseTask::getPoint_code2, packageinfoivtList)
|
||||
));
|
||||
//没有正在搬运空载具过来的任务,创建搬运空载具任务
|
||||
if (CollectionUtils.isEmpty(taskList)) {
|
||||
//查询待检区或管制区有空载具的
|
||||
List<BstIvtPackageinfoivt> djqOrGzqPointList = packageinfoivtService
|
||||
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
|
||||
.in(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.POINT_STATUS.code("管制区"))
|
||||
.eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空载具")).orderByAsc(BstIvtPackageinfoivt::getSort_seq));
|
||||
List<BstIvtPackageinfoivt> djqPointList = djqOrGzqPointList.stream().filter(r -> r.getPoint_status().equals(PackageInfoIvtEnum.POINT_STATUS.code("待检区"))).collect(Collectors.toList());
|
||||
//待检区库位有空载具
|
||||
if (CollectionUtils.isNotEmpty(djqPointList)) {
|
||||
List<BstIvtPackageinfoivt> kzjPoint = packageinfoivtList.stream()
|
||||
.filter(r -> PackageInfoIvtEnum.IVT_STATUS.code("空载具").equals(r.getIvt_status()))
|
||||
.sorted(Comparator.comparing(BstIvtPackageinfoivt::getSort_seq))
|
||||
.collect(Collectors.toList());
|
||||
//创建搬运空载具任务
|
||||
JSONObject toKzjhcwTask = new JSONObject();
|
||||
if (CollectionUtils.isNotEmpty(djqPointList)) {
|
||||
//优先去待检区取空载具
|
||||
toKzjhcwTask.put("point_code1", djqPointList.get(0).getPoint_code());
|
||||
} else {
|
||||
toKzjhcwTask.put("point_code1", djqOrGzqPointList.get(0).getPoint_code());
|
||||
}
|
||||
toKzjhcwTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("取空(待检区->空载具缓存位)"));
|
||||
//送到到任意空载具缓存位
|
||||
toKzjhcwTask.put("point_code2", kzjPoint.get(0).getPoint_code());
|
||||
//todo 载具号
|
||||
toKzjhcwTask.put("vehicle_code", "containerInfo.getContainer_name()");
|
||||
kzjhcwTask.createTask(toKzjhcwTask);
|
||||
}
|
||||
}
|
||||
}
|
||||
kzjhcwTask.toKzjHcw("");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,101 @@
|
||||
package org.nl.b_lms.sch.tasks.first_floor_area.auto;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.IPdmBiSlittingproductionplanService;
|
||||
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan;
|
||||
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
|
||||
import org.nl.b_lms.sch.point.dao.mapper.BstIvtPackageinfoivtMapper;
|
||||
import org.nl.b_lms.sch.tasks.first_floor_area.DjqTask;
|
||||
import org.nl.b_lms.sch.tasks.first_floor_area.GzqTask;
|
||||
import org.nl.common.enums.ContainerLevelEnum;
|
||||
import org.nl.common.enums.PackageInfoIvtEnum;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
public class AutoSendToDjq {
|
||||
|
||||
@Resource
|
||||
private DjqTask djqTask;
|
||||
@Resource
|
||||
private GzqTask gzqTask;
|
||||
|
||||
@Resource
|
||||
private BstIvtPackageinfoivtMapper bstIvtPackageinfoivtMapper;
|
||||
|
||||
@Resource
|
||||
private IPdmBiSlittingproductionplanService productionPlanService;
|
||||
|
||||
public void run() {
|
||||
this.sendMzqToDjq();
|
||||
}
|
||||
|
||||
//装箱区->待检区补空任务
|
||||
void sendMzqToDjq() {
|
||||
// //满轴位有子卷
|
||||
// List<BstIvtPackageinfoivt> bstIvtPackageinfoivtList = bstIvtPackageinfoivtMapper
|
||||
// .selectList(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
|
||||
// .eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
|
||||
// .eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位"))
|
||||
// .eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("有子卷"))
|
||||
// .orderByAsc(BstIvtPackageinfoivt::getSort_seq));
|
||||
// if (CollectionUtils.isNotEmpty(bstIvtPackageinfoivtList)) {
|
||||
// String containerName = bstIvtPackageinfoivtList.get(0).getContainer_name();
|
||||
// String pointCode = bstIvtPackageinfoivtList.get(0).getPoint_code();
|
||||
// //查询子卷信息,去分切计划表查找定级数据,桁架任务完成根据子卷定级创建AGV任务将满轴搬运至质检区或管制区
|
||||
// PdmBiSlittingproductionplan containerInfo = productionPlanService.getOne(new LambdaUpdateWrapper<PdmBiSlittingproductionplan>()
|
||||
// .eq(PdmBiSlittingproductionplan::getContainer_name, containerName));
|
||||
// if (containerInfo == null) {
|
||||
// throw new BadRequestException("找不到子卷信息!");
|
||||
// }
|
||||
// //子卷等级
|
||||
// String level = containerInfo.getLevel() == null ? "1" : containerInfo.getLevel();
|
||||
// String finalLevel = level;
|
||||
// if (Arrays.stream(ContainerLevelEnum.values()).noneMatch(enumItem -> enumItem.getCode().equals(finalLevel))) {
|
||||
// throw new BadRequestException("非法的子卷等级!");
|
||||
// }
|
||||
// level = "1";
|
||||
// JSONObject toDjqTask = new JSONObject();
|
||||
// toDjqTask.put("vehicle_code", containerName);
|
||||
// // 判断子卷等级属于待检区还是管制区,创建满轴缓存位到待检区或管制区的agv任务
|
||||
// String finalLevel1 = level;
|
||||
// if (Stream.of(ContainerLevelEnum.BEST, ContainerLevelEnum.WELL, ContainerLevelEnum.COMMON).anyMatch(enumItem -> enumItem.getCode().equals(finalLevel1))) {
|
||||
// List<BstIvtPackageinfoivt> djqPointList = bstIvtPackageinfoivtList.stream()
|
||||
// .filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("待检区").equals(r.getPoint_status())
|
||||
// && PackageInfoIvtEnum.IVT_STATUS.code("空").equals(r.getIvt_status()) && r.getIs_used().equals(PackageInfoIvtEnum.IS_USED.code("启用"))).collect(Collectors.toList());
|
||||
// if (CollectionUtils.isEmpty(djqPointList)) {
|
||||
// throw new BadRequestException("待检区暂无空余库位!");
|
||||
// }
|
||||
// toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->待检区"));
|
||||
// toDjqTask.put("point_code1", pointCode);
|
||||
// toDjqTask.put("point_code2", djqPointList.get(0).getPoint_code());
|
||||
// djqTask.createTask(toDjqTask);
|
||||
// } else {
|
||||
// String finalLevel2 = level;
|
||||
// if (Stream.of(ContainerLevelEnum.REWORK, ContainerLevelEnum.CONTROL).anyMatch(enumItem -> enumItem.getCode().equals(finalLevel2))) {
|
||||
// List<BstIvtPackageinfoivt> gkqPointList = bstIvtPackageinfoivtList.stream()
|
||||
// .filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("管制区").equals(r.getPoint_status())
|
||||
// && PackageInfoIvtEnum.IVT_STATUS.code("空").equals(r.getIvt_status()) && r.getIs_used().equals(PackageInfoIvtEnum.IS_USED.code("启用"))).collect(Collectors.toList());
|
||||
// if (CollectionUtils.isEmpty(gkqPointList)) {
|
||||
// throw new BadRequestException("管控区暂无空余库位!");
|
||||
// }
|
||||
// toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->管制区"));
|
||||
// toDjqTask.put("point_code1", pointCode);
|
||||
// toDjqTask.put("point_code2", gkqPointList.get(0).getPoint_code());
|
||||
// gzqTask.createTask(toDjqTask);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
}
|
||||
}
|
||||
@@ -59,9 +59,11 @@ public enum IOSEnum {
|
||||
OUT_CANCEL_TYPE(MapOf.of("全部取消", "1","自动取消","2","删除一个","3")),
|
||||
|
||||
//仓位锁定类型
|
||||
LOCK_TYPE(MapOf.of("未锁定", "1", "入库锁", "2", "出库锁", "3", "空托盘出库锁", "4",
|
||||
"空托盘入库锁", "5", "移出锁", "6", "移入锁", "7","木箱入库锁","8","木箱出库锁","9",
|
||||
"出库异常锁","10","货位异常锁", "11","其它", "99"
|
||||
LOCK_TYPE(MapOf.of("未锁定", "1", "入库锁", "2", "出库锁", "3",
|
||||
"空托盘出库锁", "4", "空托盘入库锁", "5",
|
||||
"移出锁", "6", "移入锁", "7","木箱入库锁","8",
|
||||
"木箱出库锁","9","出库异常锁","10",
|
||||
"货位异常锁", "11","其它", "99"
|
||||
)),
|
||||
|
||||
//仓库id
|
||||
|
||||
@@ -540,14 +540,13 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
|
||||
StIvtIostorinv mstDao = this.getById(whereJson.getLongValue("iostorinv_id"));
|
||||
|
||||
// 判断是否有正在执行中的任务
|
||||
List<JSONObject> arr = taskService.query("handle_class = '" + TwoOutTask.class.getName() + "' and task_status = '" + TaskStatusEnum.EXECUTING.getCode() + "' and is_delete ='0'")
|
||||
.getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||
|
||||
if (ObjectUtil.isNotEmpty(arr)) {
|
||||
throw new BadRequestException("当前有出库任务正在执行,请稍后在试!");
|
||||
}
|
||||
|
||||
//判断是否有正在执行中的任务
|
||||
// List<JSONObject> arr = taskService.query("handle_class = '" + TwoOutTask.class.getName() + "' and task_status = '" + TaskStatusEnum.EXECUTING.getCode() + "' and is_delete ='0'")
|
||||
// .getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||
//
|
||||
// if (ObjectUtil.isNotEmpty(arr)) {
|
||||
// throw new BadRequestException("当前有出库任务正在执行,请稍后在试!");
|
||||
// }
|
||||
// 查询此明细所有未生成的分配明细
|
||||
List<JSONObject> disDaoList = stIvtIostorinvdisMapper.getNotCreateDis(whereJson);
|
||||
|
||||
@@ -848,7 +847,6 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
new QueryWrapper<StIvtIostorinvdis>().lambda()
|
||||
.eq(StIvtIostorinvdis::getTask_id, whereJson.getString("task_id"))
|
||||
);
|
||||
|
||||
StIvtIostorinvdis disDao = disDaoList.get(0);
|
||||
|
||||
// 查询主表
|
||||
|
||||
@@ -525,8 +525,7 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
|
||||
jsonTaskParam.put("task_type", "010703");
|
||||
jsonTaskParam.put("start_device_code", pointDto.getPoint_code());
|
||||
jsonTaskParam.put("next_device_code", jsonDis.getString("struct_code"));
|
||||
//jsonTaskParam.put("vehicle_code", whereJson.get("vehicle_code"));
|
||||
jsonTaskParam.put("vehicle_code", "A00010");
|
||||
jsonTaskParam.put("vehicle_code", whereJson.get("vehicle_code"));
|
||||
jsonTaskParam.put("vehicle_code2", whereJson.get("vehicle_code2"));
|
||||
jsonTaskParam.put("inv_type", mstDao.getBill_type());
|
||||
jsonTaskParam.put("inv_id", mstDao.getIostorinv_id());
|
||||
|
||||
@@ -75,6 +75,7 @@ public class InBoxManageServiceImpl implements InBoxManageService {
|
||||
@Autowired
|
||||
private ISysParamService iSysParamService;
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void inBox(JSONObject whereJson) {
|
||||
@@ -275,7 +276,6 @@ public class InBoxManageServiceImpl implements InBoxManageService {
|
||||
taskParam.put("start_device_code", whereJson.getString("point_code"));
|
||||
taskParam.put("next_device_code", "RK1005");
|
||||
taskParam.put("vehicle_code", whereJson.getString("box_no"));
|
||||
// taskParam.put("vehicle_code2", whereJson.getString("box_no"));
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("layer", whereJson.getString("layer"));
|
||||
param.put("length", boxDao.getBox_length());
|
||||
@@ -305,6 +305,7 @@ public class InBoxManageServiceImpl implements InBoxManageService {
|
||||
@Override
|
||||
public void returnIn(JSONObject whereJson) {
|
||||
// 载具表
|
||||
///api/twoPda/vehicle/returnIn
|
||||
WQLObject vehicleTab = WQLObject.getWQLObject("md_pb_storagevehicleinfo");
|
||||
// 载具扩展属性表
|
||||
WQLObject veExtTab = WQLObject.getWQLObject("md_pb_storagevehicleext");
|
||||
@@ -353,14 +354,13 @@ public class InBoxManageServiceImpl implements InBoxManageService {
|
||||
ext_jo.put("update_time", DateUtil.now());
|
||||
veExtTab.update(ext_jo);
|
||||
}
|
||||
|
||||
// 下发桁架任务
|
||||
JSONObject taskParam = new JSONObject();
|
||||
taskParam.put("task_type", "010713");
|
||||
taskParam.put("start_device_code", whereJson.getString("point_code"));
|
||||
taskParam.put("next_device_code", "CK2005");
|
||||
taskParam.put("vehicle_code", whereJson.getString("box_no"));
|
||||
// taskParam.put("vehicle_code2", whereJson.getString("box_no"));
|
||||
//taskParam.put("vehicle_code2", whereJson.getString("box_no"));
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("layer", whereJson.getString("layer"));
|
||||
param.put("length", boxDao.getBox_length());
|
||||
|
||||
@@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.checkerframework.checker.units.qual.A;
|
||||
import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
||||
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
|
||||
@@ -205,7 +206,6 @@ public class InBussManageServiceImpl implements InBussManageService {
|
||||
|
||||
// 处理子卷号
|
||||
String material_barcode = jsonObject.getString("material_barcode");
|
||||
|
||||
if (ObjectUtil.isEmpty(material_barcode)) {
|
||||
throw new BadRequestException("子卷号不能为空!");
|
||||
}
|
||||
@@ -214,22 +214,23 @@ public class InBussManageServiceImpl implements InBussManageService {
|
||||
throw new BadRequestException("设备号不能为空!");
|
||||
}
|
||||
|
||||
// 查询木箱信息
|
||||
BstIvtBoxinfo boxDao = iBstIvtBoxinfoService.getOne(
|
||||
new QueryWrapper<BstIvtBoxinfo>().lambda()
|
||||
.eq(BstIvtBoxinfo::getBox_no, jsonObject.getString("box_no"))
|
||||
);
|
||||
|
||||
List<String> pcsnList = Arrays.asList(material_barcode.split(","));
|
||||
|
||||
// 查询子卷包装关系
|
||||
List<JSONObject> subList = subTab.query("container_name in ('"+String.join("','", pcsnList)+"') and status IN ( '0', '1')")
|
||||
List<JSONObject> subList = subTab.query("container_name in ('" + String.join("','", pcsnList) + "') and status in ('0','1')")
|
||||
.getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||
|
||||
if (ObjectUtil.isEmpty(subList)) {
|
||||
throw new BadRequestException("未查询到子卷包装信息!");
|
||||
}
|
||||
|
||||
if (StringUtils.isBlank(subList.get(0).getString("package_box_sn"))) {
|
||||
throw new BadRequestException("木箱号不能为空!");
|
||||
}
|
||||
BstIvtBoxinfo boxDao = iBstIvtBoxinfoService.getOne(
|
||||
new QueryWrapper<BstIvtBoxinfo>().lambda()
|
||||
.eq(BstIvtBoxinfo::getBox_no, subList.get(0).getString("package_box_sn"))
|
||||
);
|
||||
// 主表
|
||||
JSONObject mst = new JSONObject();
|
||||
mst.put("stor_id", IOSEnum.STOR_ID.code("二期"));
|
||||
|
||||
@@ -127,7 +127,6 @@ public class LashManageServiceImpl implements LashManageService {
|
||||
jsonPoint.put("vehicle_code","");
|
||||
is_move = IOSEnum.IS_NOTANDYES.code("是");
|
||||
}
|
||||
|
||||
end_point = jsonPoint.getString("point_code");
|
||||
schBasePointMapper.updateById(JSON.parseObject(jsonPoint.toString(), SchBasePoint.class));
|
||||
|
||||
@@ -209,6 +208,7 @@ public class LashManageServiceImpl implements LashManageService {
|
||||
result.put("width", boxDao.getBox_width());
|
||||
result.put("height", boxDao.getBox_high());
|
||||
result.put("case", boxDao.getMaterial_code());
|
||||
//result.put("isBinding", IOSEnum.IS_SEND.code("否"));
|
||||
result.put("isBinding", IOSEnum.IS_SEND.code("是"));
|
||||
result.put("isLabeling", IOSEnum.IS_SEND.code("否"));
|
||||
|
||||
@@ -217,6 +217,7 @@ public class LashManageServiceImpl implements LashManageService {
|
||||
result.put("printDevice", "1");
|
||||
|
||||
result.put("printQty", "1");
|
||||
//第一次捆扎次数
|
||||
result.put("bundleTimes", "1");
|
||||
|
||||
return result;
|
||||
|
||||
@@ -194,7 +194,7 @@ public class SendOutManageServiceImpl implements SendOutManageService {
|
||||
//创建任务
|
||||
JSONObject task_jo = new JSONObject();
|
||||
task_jo.put("point_code1", whereJson.getString("device_code"));
|
||||
task_jo.put("point_code2", point_code);
|
||||
task_jo.put("point_code2", "CK2023");
|
||||
task_jo.put("vehicle_code", whereJson.getString("vehicle_code"));
|
||||
task_jo.put("task_type", "010708");
|
||||
TwoSendOutTask taskBean = new TwoSendOutTask();
|
||||
@@ -203,7 +203,7 @@ public class SendOutManageServiceImpl implements SendOutManageService {
|
||||
// 锁住点位
|
||||
ischBasePointService.update(
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getPoint_code, point_code)
|
||||
.eq(SchBasePoint::getPoint_code, "CK2023")
|
||||
.set(SchBasePoint::getLock_type, IOSEnum.LOCK_TYPE.code("其它"))
|
||||
.set(SchBasePoint::getVehicle_code, whereJson.getString("vehicle_code"))
|
||||
);
|
||||
|
||||
@@ -21,14 +21,14 @@ public enum PackageInfoIvtEnum {
|
||||
POINT_STATUS(MapOf.of("满轴缓存位", "1", "空载具缓存位", "2", "待检区", "3", "管制区", "4", "装箱区", "5", "装箱位", "6")),
|
||||
|
||||
//任务类型
|
||||
TASK_TYPE(MapOf.of("输送线->满轴缓存位", "010701", "满轴缓存位->待检区", "010702", "满轴缓存位->管制区", "010703", "放空(空载具缓存位->输送线)",
|
||||
"010704", "取空(待检区->空载具缓存位)", "010705", "待检区->管制区", "010706","管制区->待检区", "010707","待检区->装箱区", "010708", "装箱区->装箱对接位", "010709","放空(装箱区->待检区)", "010710","输送线四个点任务", "010711")),
|
||||
TASK_TYPE(MapOf.of("输送线->满轴缓存位", "010901", "满轴缓存位->待检区", "010902", "满轴缓存位->管制区", "010903", "放空(空载具缓存位->输送线)",
|
||||
"010904", "取空(待检区->空载具缓存位)", "010905", "待检区->管制区", "010906","管制区->待检区", "010907","待检区->装箱区", "010908", "装箱区->装箱对接位", "010909","放空(装箱区->待检区)", "010910","输送线四个点任务", "010911")),
|
||||
|
||||
//ACS任务类型
|
||||
ACS_TASK_TYPE(MapOf.of("agv任务", "1", "桁架任务", "6")),
|
||||
|
||||
//ACS系统类型
|
||||
AGV_SYSTEM_TYPE(MapOf.of("1楼叉车系统", "1", "2楼1区域AGV系统", "2", "2楼2区域AGV系统", "3")),
|
||||
AGV_SYSTEM_TYPE(MapOf.of("1楼诺宝任务", "1", "2楼1区域AGV系统", "2", "1楼叉车任务", "3")),
|
||||
|
||||
//桁架任务类型
|
||||
TRUSS_TYPE(MapOf.of("点对点任务", "1", "下卷拔轴任务", "6", "换轴任务", "7","放轴任务", "8")),
|
||||
|
||||
@@ -61,8 +61,8 @@ public class ExecutionJob extends TLogQuartzJobBean {
|
||||
logDto.setCron_expression(quartzJob.getCron_expression());
|
||||
try {
|
||||
// 执行任务
|
||||
System.out.println("--------------------------------------------------------------");
|
||||
System.out.println("任务开始执行,任务名称:" + quartzJob.getJob_name());
|
||||
//System.out.println("--------------------------------------------------------------");
|
||||
//System.out.println("任务开始执行,任务名称:" + quartzJob.getJob_name());
|
||||
QuartzRunnable task = new QuartzRunnable(quartzJob.getBean_name(), quartzJob.getMethod_name(),
|
||||
quartzJob.getParams());
|
||||
Future<?> future = EXECUTOR.submit(task);
|
||||
@@ -74,8 +74,8 @@ public class ExecutionJob extends TLogQuartzJobBean {
|
||||
}
|
||||
// 任务状态
|
||||
logDto.setIs_success(true);
|
||||
System.out.println("任务执行完毕,任务名称:" + quartzJob.getJob_name() + ", 执行时间:" + times + "毫秒");
|
||||
System.out.println("--------------------------------------------------------------");
|
||||
// System.out.println("任务执行完毕,任务名称:" + quartzJob.getJob_name() + ", 执行时间:" + times + "毫秒");
|
||||
//System.out.println("--------------------------------------------------------------");
|
||||
// 判断是否存在子任务
|
||||
if (StrUtil.isNotEmpty(quartzJob.getSub_task())) {
|
||||
String[] tasks = quartzJob.getSub_task().split("[,,]");
|
||||
@@ -86,8 +86,8 @@ public class ExecutionJob extends TLogQuartzJobBean {
|
||||
if (StrUtil.isNotEmpty(uuid)) {
|
||||
redisUtils.set(uuid, false);
|
||||
}
|
||||
System.out.println("任务执行失败,任务名称:" + quartzJob.getJob_name());
|
||||
System.out.println("--------------------------------------------------------------");
|
||||
//System.out.println("任务执行失败,任务名称:" + quartzJob.getJob_name());
|
||||
// System.out.println("--------------------------------------------------------------");
|
||||
long times = System.currentTimeMillis() - startTime;
|
||||
logDto.setTime(times);
|
||||
// 任务状态 0:成功 1:失败
|
||||
|
||||
@@ -26,6 +26,7 @@ import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
||||
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
|
||||
import org.nl.b_lms.sch.tasks.TwoBoxExcepTask;
|
||||
import org.nl.b_lms.sch.tasks.first_floor_area.MzhcwTask;
|
||||
import org.nl.b_lms.sch.tasks.first_floor_area.SsxDjwTask;
|
||||
import org.nl.b_lms.sch.tasks.slitter.service.SlitterService;
|
||||
import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxinfoService;
|
||||
import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxinfo;
|
||||
@@ -139,6 +140,10 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
@Resource
|
||||
private MzhcwTask mzhcwTask;
|
||||
|
||||
@Resource
|
||||
private SsxDjwTask ssxDjwTask;
|
||||
|
||||
|
||||
@Autowired
|
||||
private ISysParamService iSysParamService;
|
||||
|
||||
@@ -1733,9 +1738,11 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
}
|
||||
|
||||
/**
|
||||
* 成品子卷到达一楼输送线
|
||||
* 二楼到一楼,成品子卷到达一楼输送线
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@SneakyThrows
|
||||
public JSONObject sendProductToFirstFloor(JSONObject whereJson) {
|
||||
// JSONObject whereJson 应该传子卷号,设备号,车间号
|
||||
// 先查询满轴缓存位是否有可用库位,有创建搬运任务
|
||||
@@ -1748,78 +1755,87 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
if (StringUtils.isBlank(whereJson.getString("device_code")) || StringUtils.isBlank(whereJson.getString("material_barcode"))) {
|
||||
throw new BadRequestException("接口sendProductToFirstFloor,任务号或子卷号参数为空!");
|
||||
}
|
||||
//1.查询满轴缓存位是否有空位
|
||||
List<BstIvtPackageinfoivt> bstIvtPackageinfoivtList = packageinfoivtService
|
||||
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>().eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
|
||||
.orderByAsc(BstIvtPackageinfoivt::getSort_seq));
|
||||
List<BstIvtPackageinfoivt> mzPointList = bstIvtPackageinfoivtList.stream()
|
||||
.filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位").equals(r.getPoint_status())
|
||||
&& PackageInfoIvtEnum.IVT_STATUS.code("空").equals(r.getIvt_status())).collect(Collectors.toList());
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
|
||||
jo.put("vehicle_code", whereJson.getString("material_barcode"));
|
||||
//2.创建输送线->满轴位桁架任务,
|
||||
String point_code1 = whereJson.getString("device_code");
|
||||
jo.put("point_code1", point_code1);
|
||||
if (CollectionUtils.isNotEmpty(mzPointList)) {
|
||||
//任意一个满轴缓存位为终点
|
||||
jo.put("point_code2", mzPointList.get(0).getPoint_code());
|
||||
List<BstIvtPackageinfoivt> kzjPointList = bstIvtPackageinfoivtList.stream()
|
||||
.filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位").equals(r.getPoint_status())
|
||||
&& PackageInfoIvtEnum.IVT_STATUS.code("空载具").equals(r.getIvt_status())).collect(Collectors.toList());
|
||||
//空载具缓存位有空载具
|
||||
if (CollectionUtils.isNotEmpty(kzjPointList)) {
|
||||
jo.put("point_code3", kzjPointList.get(0).getPoint_code());
|
||||
//终点为输送线点位
|
||||
jo.put("point_code4", whereJson.getString("device_code"));
|
||||
jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"));
|
||||
RLock lock = redissonClient.getLock(whereJson.getString("material_barcode"));
|
||||
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
|
||||
try {
|
||||
if (tryLock) {
|
||||
//1.查询满轴缓存位是否有空位
|
||||
List<BstIvtPackageinfoivt> bstIvtPackageinfoivtList = packageinfoivtService
|
||||
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>().eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
|
||||
.orderByAsc(BstIvtPackageinfoivt::getSort_seq));
|
||||
List<BstIvtPackageinfoivt> mzPointList = bstIvtPackageinfoivtList.stream()
|
||||
.filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位").equals(r.getPoint_status())
|
||||
&& PackageInfoIvtEnum.IVT_STATUS.code("空").equals(r.getIvt_status())).collect(Collectors.toList());
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
|
||||
jo.put("vehicle_code", whereJson.getString("material_barcode"));
|
||||
//2.创建输送线->满轴位桁架任务,
|
||||
String point_code1 = whereJson.getString("device_code");
|
||||
jo.put("point_code1", point_code1);
|
||||
if (CollectionUtils.isNotEmpty(mzPointList)) {
|
||||
//任意一个满轴缓存位为终点
|
||||
jo.put("point_code2", mzPointList.get(0).getPoint_code());
|
||||
List<BstIvtPackageinfoivt> kzjPointList = bstIvtPackageinfoivtList.stream()
|
||||
.filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位").equals(r.getPoint_status())
|
||||
&& PackageInfoIvtEnum.IVT_STATUS.code("空载具").equals(r.getIvt_status())).collect(Collectors.toList());
|
||||
//空载具缓存位有空载具
|
||||
if (CollectionUtils.isNotEmpty(kzjPointList)) {
|
||||
jo.put("point_code3", kzjPointList.get(0).getPoint_code());
|
||||
//终点为输送线点位
|
||||
jo.put("point_code4", whereJson.getString("device_code"));
|
||||
jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"));
|
||||
} else {
|
||||
//空载具缓存位缺少空载具,下发一个确定终点的空载具缓存位->输送线任务
|
||||
// 创建前先判断是否有已创建相同任务
|
||||
List<SchBaseTask> existTaskList = taskService.list(new LambdaUpdateWrapper<SchBaseTask>()
|
||||
.eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"))
|
||||
.eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_END.getCode())
|
||||
.eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("否")));
|
||||
if (CollectionUtils.isEmpty(existTaskList)) {
|
||||
JSONObject jo1 = new JSONObject();
|
||||
jo1.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
|
||||
jo1.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"));
|
||||
jo1.put("point_code2", "NBJ1002");
|
||||
jo1.put("task_status", TaskStatusEnum.SURE_END.getCode());
|
||||
jo1.put("is_send", false);
|
||||
ssxDjwTask.createTask(jo1);
|
||||
}
|
||||
}
|
||||
jo.put("is_send", true);
|
||||
mzhcwTask.createTask(jo);
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
result.put("message", "反馈成功!");
|
||||
} else {
|
||||
// 如果满轴位没有可用的空点位,先创建一个桁架任务但是不下发,等这边空出来点位,判断是否有这种桁架任务然后补发;
|
||||
// 创建前先判断是否有已创建相同任务
|
||||
List<SchBaseTask> existTaskList = taskService.list(new LambdaUpdateWrapper<SchBaseTask>()
|
||||
.eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"))
|
||||
.eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_START.getCode()).eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("否")));
|
||||
//如果有就不创建,没有就创建
|
||||
if (CollectionUtils.isEmpty(existTaskList)) {
|
||||
//只确定起点NBJ1002
|
||||
JSONObject jo2 = new JSONObject();
|
||||
jo2.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
|
||||
jo2.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"));
|
||||
jo2.put("point_code1", "NBJ1002");
|
||||
jo.put("task_status", TaskStatusEnum.SURE_START.getCode());
|
||||
jo2.put("is_send", false);
|
||||
mzhcwTask.createTask(jo2);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"));
|
||||
result.put("status", HttpStatus.BAD_REQUEST.value());
|
||||
result.put("message", "任务正在创建中!");
|
||||
}
|
||||
jo.put("is_send", true);
|
||||
mzhcwTask.createTask(jo);
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
result.put("message", "反馈成功!");
|
||||
return result;
|
||||
} else {
|
||||
//3.满轴缓存位点位,查找正在搬运到待检区的任务
|
||||
List<BstIvtPackageinfoivt> packageinfoivtList = packageinfoivtService
|
||||
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
|
||||
.eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位")));
|
||||
//todo 查找正在起点为满轴缓存位点位,且执行中搬运到待检区或管制区的任务,如果有一个或多个,现场其实有多个车正在搬运过去
|
||||
List<SchBaseTask> taskList = taskService.list(new LambdaUpdateWrapper<SchBaseTask>()
|
||||
//执行中
|
||||
.nested(
|
||||
r -> r.eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->待检区"))
|
||||
.or().eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->管制区")))
|
||||
.eq(SchBaseTask::getTask_status, TaskStatusEnum.EXECUTING.getCode())
|
||||
.and(
|
||||
r -> r.in(SchBaseTask::getPoint_code1, packageinfoivtList)
|
||||
));
|
||||
//4.满轴缓存位无空闲库位,且无执行中搬运到待检区或管制区的任务,则报错!
|
||||
if (CollectionUtils.isEmpty(taskList)) {
|
||||
throw new BadRequestException("接口sendProductToFirstFloor,满轴缓存位暂无空闲库位!");
|
||||
} finally {
|
||||
if (tryLock) {
|
||||
lock.unlock();
|
||||
}
|
||||
// 5.如果满轴位没有可用的空点位,先创建一个桁架任务但是不下发,等这边空出来点位,判断是否有这种桁架任务然后补发;
|
||||
// 创建前先判断是否有已创建相同任务
|
||||
List<SchBaseTask> existTaskList = taskService.list(new LambdaUpdateWrapper<SchBaseTask>()
|
||||
.eq(SchBaseTask::getPoint_code1, point_code1)
|
||||
.eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_START.getCode()));
|
||||
//6.如果有就不创建,没有就创建
|
||||
// 等这边空出来点位,也就是满轴位->待检区或管制区任务完成后,再补发;
|
||||
if (CollectionUtils.isEmpty(existTaskList)) {
|
||||
//暂时只确定起点,正在搬运的满轴位->待检区的点位,暂不作为终点
|
||||
//jo.put("point_code2", taskList.get(0).getPoint_code1());
|
||||
jo.put("task_status", TaskStatusEnum.SURE_START.getCode());
|
||||
jo.put("is_send", false);
|
||||
mzhcwTask.createTask(jo);
|
||||
}
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
result.put("message", "操作成功!");
|
||||
return result;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@SneakyThrows
|
||||
@@ -1908,7 +1924,13 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
log.info("applyTwo返回参数:---------------------------------------------" + result.toString());
|
||||
return result;
|
||||
}
|
||||
} finally {
|
||||
}catch (Exception ex){
|
||||
log.info("applyTwo申请任务异常,任务类型为:---------------------------------------------"+type+"异常信息为"+ex.toString());
|
||||
result.put("status", HttpStatus.BAD_REQUEST.value());
|
||||
result.put("message","申请任务异常,任务类型为:"+type+"异常信息为"+ex.toString());
|
||||
return result;
|
||||
}
|
||||
finally {
|
||||
if (tryLock) {
|
||||
lock.unlock();
|
||||
}
|
||||
@@ -2182,20 +2204,24 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
String device_code = param.getString("device_code");
|
||||
String material_barcode = param.getString("material_barcode");
|
||||
String vehicle_code = param.getString("vehicle_code");
|
||||
if (device_code.equals("RK1018")) {
|
||||
JSONObject vehicle_info = WQLObject.getWQLObject("md_pb_storagevehicleext").query("storagevehicle_code = '" + vehicle_code + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(vehicle_info)) {
|
||||
throw new BadRequestException("未查询到载具号【" + vehicle_code + "】对应的载具信息!");
|
||||
//干燥剂模板
|
||||
String desiccantTemplate = "4";
|
||||
//是否开盖
|
||||
String isUncap = "1";
|
||||
if (StringUtils.isNotBlank(vehicle_code)) {
|
||||
if (device_code.equals("RK1018")) {
|
||||
JSONObject vehicle_info = WQLObject.getWQLObject("md_pb_storagevehicleext").query("storagevehicle_code = '" + vehicle_code + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(vehicle_info)) {
|
||||
throw new BadRequestException("未查询到载具号【" + vehicle_code + "】对应的载具信息!");
|
||||
}
|
||||
material_barcode = vehicle_info.getString("pcsn");
|
||||
}
|
||||
material_barcode = vehicle_info.getString("pcsn");
|
||||
}
|
||||
|
||||
// 查询木箱信息
|
||||
BstIvtBoxinfo boxDao = iBstIvtBoxinfoService.getOne(
|
||||
new QueryWrapper<BstIvtBoxinfo>().lambda()
|
||||
.eq(BstIvtBoxinfo::getBox_no, material_barcode)
|
||||
);
|
||||
|
||||
//根据木箱高度,判断入库仓位的高度
|
||||
String height = "";
|
||||
String heightLevel1 = iSysParamService.findByCode("height_level_1").getValue();
|
||||
@@ -2209,6 +2235,11 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
height = "3";
|
||||
}
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("boxLength", boxDao.getBox_length());
|
||||
jsonObject.put("boxWidth", boxDao.getBox_width());
|
||||
jsonObject.put("boxHigh", boxDao.getBox_high());
|
||||
jsonObject.put("desiccantTemplate", desiccantTemplate);
|
||||
jsonObject.put("isUncap", isUncap);
|
||||
jsonObject.put("heightLevel", height);
|
||||
jsonObject.put("status", HttpStatus.OK.value());
|
||||
return jsonObject;
|
||||
|
||||
@@ -55,6 +55,11 @@ public class AcsTaskDto {
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 大小托盘路由类型
|
||||
*/
|
||||
private String route_plan_code;
|
||||
/**
|
||||
* 扩展参数
|
||||
*/
|
||||
|
||||
@@ -49,8 +49,7 @@ public class AcsUtil {
|
||||
log.info(product_area);
|
||||
throw new BadRequestException("未查询到区域对应的acs地址!");
|
||||
}
|
||||
//String url =acs_url + api;
|
||||
String url =acs_url+ api;
|
||||
String url =acs_url + api;
|
||||
try {
|
||||
JSONArray rows = new JSONArray();
|
||||
rows.add(jo);
|
||||
@@ -58,7 +57,7 @@ public class AcsUtil {
|
||||
.body(String.valueOf(rows))
|
||||
.execute().body();
|
||||
result = JSONObject.parseObject(resultMsg);
|
||||
log.info("ACS相应参数----------------------------------------+" + api + ",---" + result.toString());
|
||||
log.info("下发acs任务成功,返回参数----------------------------------------+" + api + ",---" + result.toString());
|
||||
} catch (Exception e) {
|
||||
String msg = e.getMessage();
|
||||
//ConnectException: Connection refused: connect
|
||||
@@ -67,9 +66,11 @@ public class AcsUtil {
|
||||
result.put("status", HttpStatus.BAD_REQUEST);
|
||||
result.put("message", "网络不通,操作失败!");
|
||||
result.put("data", new JSONObject());
|
||||
log.info("下发ACS任务失败,原因是:----------------------------------------+"+ msg);
|
||||
}
|
||||
//acs抛异常这里
|
||||
if (!StrUtil.equals(result.getString("status"), "200")) {
|
||||
log.info("下发acs任务失败,原因是:----------------------------------------+"+ result.getString("message"));
|
||||
throw new BadRequestException(result.getString("message"));
|
||||
} else {
|
||||
//如果向ACS下发任务,变更任务状态为下发
|
||||
@@ -84,6 +85,7 @@ public class AcsUtil {
|
||||
}
|
||||
|
||||
}
|
||||
log.info("下发acs任务,结果是:----------------------------------------+"+ result);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -97,11 +97,11 @@ public class TaskServiceImpl implements TaskService {
|
||||
map.put("is_delete", whereJson.getString("is_delete"));
|
||||
}
|
||||
//获取人员对应的区域
|
||||
UserAreaServiceImpl userAreaService = new UserAreaServiceImpl();
|
||||
String in_area_id = userAreaService.getInArea();
|
||||
if (ObjectUtil.isNotEmpty(in_area_id)) {
|
||||
map.put("in_area_id", in_area_id);
|
||||
}
|
||||
// UserAreaServiceImpl userAreaService = new UserAreaServiceImpl();
|
||||
// String in_area_id = userAreaService.getInArea();
|
||||
// if (ObjectUtil.isNotEmpty(in_area_id)) {
|
||||
// map.put("in_area_id", in_area_id);
|
||||
// }
|
||||
JSONObject json = WQL.getWO("QSCH_TASK_01").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "update_time desc");
|
||||
JSONArray content = json.getJSONArray("content");
|
||||
JSONArray res = new JSONArray();
|
||||
|
||||
@@ -215,7 +215,6 @@ public class StorPublicServiceImpl implements StorPublicService {
|
||||
map.put("storagevehicle_code", storagevehicle_code);
|
||||
}
|
||||
}
|
||||
|
||||
// 获取仓位物料信息
|
||||
JSONObject jo_in = WQL.getWO("QST_IVT_STORPUBLIC").addParamMap(map).process().uniqueResult(0);
|
||||
switch (change_type_scode) {
|
||||
|
||||
@@ -217,7 +217,6 @@ public class CheckOutBillController {
|
||||
} else {
|
||||
checkOutBillService.allSetPoint(whereJson);
|
||||
}
|
||||
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
package org.nl.wms.util;
|
||||
|
||||
public class TaskUtil {
|
||||
|
||||
/**
|
||||
* 一楼立库获取托盘路由方案two大托盘,normal小托盘
|
||||
*/
|
||||
public static String getRoutePlanCode(String location) {
|
||||
if (location.contains("L1-") || location.contains("L2-") || location.contains("L3-") || location.contains("L4-")) {
|
||||
return "two";
|
||||
} else {
|
||||
return "normal";
|
||||
}
|
||||
}
|
||||
}
|
||||
264
lms/nladmin-system/src/test/java/org/nl/init/EventTest.java
Normal file
264
lms/nladmin-system/src/test/java/org/nl/init/EventTest.java
Normal file
@@ -0,0 +1,264 @@
|
||||
package org.nl.init;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.mapper.PdmBiSlittingproductionplanMapper;
|
||||
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
|
||||
import org.nl.b_lms.pdm.subpackagerelation.dao.mapper.PdmBiSubpackagerelationMapper;
|
||||
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
|
||||
import org.nl.b_lms.sch.point.dao.mapper.BstIvtPackageinfoivtMapper;
|
||||
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
|
||||
import org.nl.b_lms.sch.tasks.first_floor_area.*;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.OutBoxManageService;
|
||||
import org.nl.common.enums.ContainerLevelEnum;
|
||||
import org.nl.common.enums.PackageInfoIvtEnum;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.system.service.param.ISysParamService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@Slf4j
|
||||
@ExtendWith(SpringExtension.class)
|
||||
@SpringBootTest
|
||||
@DisplayName("event test")
|
||||
public class EventTest {
|
||||
|
||||
@Resource
|
||||
private ZxqTask zxqTask;
|
||||
@Resource
|
||||
private ZxDjwTask zxDjwTask;
|
||||
|
||||
@Resource
|
||||
private ISysParamService iSysParamService;
|
||||
|
||||
@Resource
|
||||
private DjqTask djqTask;
|
||||
@Resource
|
||||
private GzqTask gzqTask;
|
||||
|
||||
@Resource
|
||||
private KzjhcwTask kzjhcwTask;
|
||||
|
||||
@Resource
|
||||
private OutBoxManageService outBoxManageService;
|
||||
|
||||
@Resource
|
||||
private IbstIvtPackageinfoivtService packageinfoivtService;
|
||||
|
||||
@Resource
|
||||
private PdmBiSubpackagerelationMapper pdmBiSubpackagerelationMapper;
|
||||
|
||||
/**
|
||||
* 装箱区->空载具缓存位补空
|
||||
*/
|
||||
@Test
|
||||
public void zxToKzjHcw() {
|
||||
kzjhcwTask.toKzjHcw("");
|
||||
}
|
||||
|
||||
/**
|
||||
* 满轴->待检
|
||||
*/
|
||||
@Test
|
||||
public void mzToDj() {
|
||||
//子卷成色等级
|
||||
String level = "1";
|
||||
//子卷号
|
||||
String containerName = "1";
|
||||
//起点
|
||||
String pointCode1 = "2";
|
||||
//查询库位信息
|
||||
List<BstIvtPackageinfoivt> bstIvtPackageinfoivtList = packageinfoivtService
|
||||
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
|
||||
.eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
|
||||
.orderByAsc(BstIvtPackageinfoivt::getSort_seq));
|
||||
JSONObject toDjqTask = new JSONObject();
|
||||
//获取子卷号
|
||||
toDjqTask.put("vehicle_code", containerName);
|
||||
// 判断子卷等级属于待检区还是管制区,创建满轴缓存位到待检区或管制区的agv任务
|
||||
if (Stream.of(ContainerLevelEnum.BEST, ContainerLevelEnum.WELL, ContainerLevelEnum.COMMON).anyMatch(enumItem -> enumItem.getCode().equals(level))) {
|
||||
List<BstIvtPackageinfoivt> djqPointList = bstIvtPackageinfoivtList.stream()
|
||||
.filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("待检区").equals(r.getPoint_status())
|
||||
&& PackageInfoIvtEnum.IVT_STATUS.code("空").equals(r.getIvt_status())).collect(Collectors.toList());
|
||||
if (CollectionUtils.isEmpty(djqPointList)) {
|
||||
throw new BadRequestException("待检区暂无空余库位!");
|
||||
}
|
||||
toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->待检区"));
|
||||
toDjqTask.put("point_code1", pointCode1);
|
||||
toDjqTask.put("point_code2", djqPointList.get(0).getPoint_code());
|
||||
djqTask.createTask(toDjqTask);
|
||||
} else if (Stream.of(ContainerLevelEnum.REWORK, ContainerLevelEnum.CONTROL).anyMatch(enumItem -> enumItem.getCode().equals(level))) {
|
||||
List<BstIvtPackageinfoivt> gkqPointList = bstIvtPackageinfoivtList.stream()
|
||||
.filter(r -> PackageInfoIvtEnum.POINT_STATUS.code("管制区").equals(r.getPoint_status())
|
||||
&& PackageInfoIvtEnum.IVT_STATUS.code("空").equals(r.getIvt_status())).collect(Collectors.toList());
|
||||
if (CollectionUtils.isEmpty(gkqPointList)) {
|
||||
throw new BadRequestException("管控区暂无空余库位!");
|
||||
}
|
||||
toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("满轴缓存位->管制区"));
|
||||
toDjqTask.put("point_code1", pointCode1);
|
||||
toDjqTask.put("point_code2", gkqPointList.get(0).getPoint_code());
|
||||
gzqTask.createTask(toDjqTask);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 待检->装箱
|
||||
*/
|
||||
@Test
|
||||
public void djToZx() {
|
||||
//子卷号
|
||||
String containerName = "";
|
||||
//起点
|
||||
String pointCode1 = "";
|
||||
//木箱
|
||||
String boxSn = "";
|
||||
//装箱区点位
|
||||
List<BstIvtPackageinfoivt> zxqPointList = packageinfoivtService
|
||||
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
|
||||
.eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("装箱区"))
|
||||
.eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
|
||||
.eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空"))
|
||||
//装箱区1
|
||||
.eq(BstIvtPackageinfoivt::getBlock, "1")
|
||||
.orderByAsc(BstIvtPackageinfoivt::getSort_seq));
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("待检区->装箱区"));
|
||||
jo.put("vehicle_code", containerName);
|
||||
jo.put("point_code1", pointCode1);
|
||||
//木箱号
|
||||
jo.put("vehicle_code2", boxSn);
|
||||
//装箱区没满,则确定起点与终点,如果满了则只确定起点
|
||||
if (CollectionUtils.isNotEmpty(zxqPointList)) {
|
||||
jo.put("point_code2", zxqPointList.get(0).getPoint_code());
|
||||
}
|
||||
zxqTask.createTask(jo);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 空木箱出库
|
||||
*/
|
||||
@Test
|
||||
public void outBox() {
|
||||
JSONObject boxInfo = new JSONObject();
|
||||
boxInfo.put("device_code", "ZXQ_1_1");
|
||||
boxInfo.put("material_code", "MX61102");
|
||||
String workorderId = "1597797877554483218";
|
||||
//子卷个数
|
||||
boxInfo.put("num", "1");
|
||||
String boxSn = outBoxManageService.outBox(boxInfo);
|
||||
if (StringUtils.isBlank(boxSn)) {
|
||||
throw new BadRequestException("库位 -> 装箱对接位,木箱码不能为空!");
|
||||
}
|
||||
//更新子卷包装关系更新木箱号
|
||||
UpdateWrapper<PdmBiSubpackagerelation> updateWrapper1 = new UpdateWrapper<>();
|
||||
updateWrapper1.set("package_box_sn", boxSn);
|
||||
updateWrapper1.eq("workorder_id", workorderId);
|
||||
pdmBiSubpackagerelationMapper.update(null, updateWrapper1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 装箱区->装箱对接位桁架任务
|
||||
*/
|
||||
@Test
|
||||
public void transferToPacking() {
|
||||
JSONObject jo = new JSONObject();
|
||||
//子卷号
|
||||
String containerName = "A1642211060505E2";
|
||||
//获取纸管长度
|
||||
String frpDescription = "1300";
|
||||
//获取木箱高度等级
|
||||
String height = "730";
|
||||
//起点
|
||||
String point_code1 = "ZXQ_1_9";
|
||||
//终点
|
||||
String point_code2 = "ZXQ_1_1";
|
||||
//托盘类型 1小托盘 2大托盘
|
||||
String containerType = "2";
|
||||
//木箱高度等级
|
||||
String heightLevel = "";
|
||||
String heightLevel1 = iSysParamService.findByCode("height_level_1").getValue();
|
||||
String heightLevel2 = iSysParamService.findByCode("height_level_2").getValue();
|
||||
if (Integer.parseInt(height) <= Integer.parseInt(heightLevel1)) {
|
||||
heightLevel = "1";
|
||||
} else if (Integer.parseInt(height) > Integer.parseInt(heightLevel1) && Integer.parseInt(height) <= Integer.parseInt(heightLevel2)) {
|
||||
heightLevel = "2";
|
||||
} else {
|
||||
heightLevel = "3";
|
||||
}
|
||||
jo.put("point_code1", point_code1);
|
||||
jo.put("point_code2", point_code2);
|
||||
jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("装箱区->装箱对接位"));
|
||||
jo.put("vehicle_code", containerName);
|
||||
jo.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
|
||||
jo.put("is_send", "1");
|
||||
JSONObject param = new JSONObject();
|
||||
//木箱最大数量
|
||||
param.put("maxNo", "1");
|
||||
//木箱放入子卷数量
|
||||
param.put("boxNo", "1");
|
||||
//是否最后子卷
|
||||
param.put("lastOne", "1");
|
||||
//子卷号
|
||||
param.put("barcode", containerName);
|
||||
//子卷长度
|
||||
param.put("len", frpDescription);
|
||||
//木箱高度等级
|
||||
param.put("heightLevel", heightLevel);
|
||||
//托盘类型 1小托盘 2大托盘
|
||||
param.put("containerType", containerType);
|
||||
jo.put("request_param", param.toString());
|
||||
zxDjwTask.createTask(jo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 装箱区->装箱对接位桁架任务2
|
||||
*/
|
||||
@Test
|
||||
public void transferToPacking1() {
|
||||
//下发装箱区->装箱对接位桁架任务
|
||||
JSONObject jo = new JSONObject();
|
||||
//子卷号
|
||||
String containerName = "";
|
||||
//获取纸管长度
|
||||
String frpDescription = "";
|
||||
//起点
|
||||
String point_code1 = "ZXQ_1_8";
|
||||
//终点
|
||||
String point_code2 = "ZXQ_1_1";
|
||||
jo.put("point_code1", point_code1);
|
||||
jo.put("point_code2", point_code2);
|
||||
jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("装箱区->装箱对接位"));
|
||||
jo.put("vehicle_code", containerName);
|
||||
jo.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
|
||||
jo.put("is_send", "1");
|
||||
JSONObject param = new JSONObject();
|
||||
//木箱最大数量
|
||||
param.put("maxNo", "1");
|
||||
//木箱放入子卷数量
|
||||
param.put("boxNo", "1");
|
||||
//是否最后子卷
|
||||
param.put("lastOne", "1");
|
||||
//子卷号
|
||||
param.put("barcode", containerName);
|
||||
//子卷长度
|
||||
param.put("len", frpDescription);
|
||||
//托盘类型 1小托盘 2大托盘
|
||||
param.put("containerType", "1");
|
||||
jo.put("request_param", param.toString());
|
||||
zxDjwTask.createTask(jo);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user