opt:优化调度
This commit is contained in:
@@ -104,5 +104,5 @@ public interface IBstIvtStockingivtService extends IService<BstIvtStockingivt> {
|
|||||||
|
|
||||||
PdmBiOrderbominfo showBom2(Map param);
|
PdmBiOrderbominfo showBom2(Map param);
|
||||||
|
|
||||||
List<BstIvtStockingivt> getMoveTaskPoints();
|
List<BstIvtStockingivt> getMoveTaskPoints(String task_type);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,5 +45,5 @@ public interface BstIvtStockingivtMapper extends BaseMapper<BstIvtStockingivt> {
|
|||||||
|
|
||||||
List<ShowStockView> showPapervehicleView(String product_area, String material_code);
|
List<ShowStockView> showPapervehicleView(String product_area, String material_code);
|
||||||
|
|
||||||
List<BstIvtStockingivt> getMoveTaskPoints();
|
List<BstIvtStockingivt> getMoveTaskPoints(String task_type);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -124,7 +124,7 @@
|
|||||||
FROM
|
FROM
|
||||||
sch_base_task t
|
sch_base_task t
|
||||||
LEFT JOIN bst_ivt_stockingivt s ON s.point_code = t.point_code1 AND s.point_type = '2' AND s.is_used = '1'
|
LEFT JOIN bst_ivt_stockingivt s ON s.point_code = t.point_code1 AND s.point_type = '2' AND s.is_used = '1'
|
||||||
WHERE t.task_type = '010816'
|
WHERE t.task_type = #{task_type}
|
||||||
AND t.task_status <![CDATA[ <> ]]> '07'
|
AND t.task_status <![CDATA[ <> ]]> '07'
|
||||||
AND t.is_delete = '0'
|
AND t.is_delete = '0'
|
||||||
</select>
|
</select>
|
||||||
|
|||||||
@@ -199,7 +199,7 @@ public class BstIvtStockingivtServiceImpl extends ServiceImpl<BstIvtStockingivtM
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<BstIvtStockingivt> getMoveTaskPoints() {
|
public List<BstIvtStockingivt> getMoveTaskPoints(String task_type) {
|
||||||
return bstIvtStockingivtMapper.getMoveTaskPoints();
|
return bstIvtStockingivtMapper.getMoveTaskPoints(task_type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ import org.nl.system.service.notice.ISysNoticeService;
|
|||||||
import org.nl.system.service.param.ISysParamService;
|
import org.nl.system.service.param.ISysParamService;
|
||||||
import org.nl.system.service.param.dao.Param;
|
import org.nl.system.service.param.dao.Param;
|
||||||
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
||||||
|
import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
@@ -126,9 +127,8 @@ public class AutoCallAirShaftTask extends Prun {
|
|||||||
*/
|
*/
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void doCallShaft(Param isOnlyPulling, Param tzDay, Param tzArea, Param useXn, Param max_qzz_num) {
|
public void doCallShaft(Param isOnlyPulling, Param tzDay, Param tzArea, Param useXn, Param max_qzz_num) {
|
||||||
//查询套轴缓存位:点位启用、有子卷、气胀轴字段不为空、且无未完成的任务
|
//(1)查询套轴缓存位:点位启用、有子卷、气胀轴字段不为空、且无未完成的任务
|
||||||
List<CutpointAirShhaftDto> notTaskPoints = bcutpointivtService.getAreaNotTaskPointByTcQzzPoint("");
|
List<CutpointAirShhaftDto> notTaskPoints = bcutpointivtService.getAreaNotTaskPointByTcQzzPoint("");
|
||||||
//(1)若有拔轴任务,则会执行本段代码
|
|
||||||
//对满足的需拔轴子卷遍历下发任务,同时每次拔轴下发前判断是否有可以接续的套轴计划
|
//对满足的需拔轴子卷遍历下发任务,同时每次拔轴下发前判断是否有可以接续的套轴计划
|
||||||
for(int i= 0;i<notTaskPoints.size();i++){
|
for(int i= 0;i<notTaskPoints.size();i++){
|
||||||
//获取需拔轴子卷信息
|
//获取需拔轴子卷信息
|
||||||
@@ -317,9 +317,9 @@ public class AutoCallAirShaftTask extends Prun {
|
|||||||
//计划中需要的气胀轴代数
|
//计划中需要的气胀轴代数
|
||||||
String qzz_generation = planDto.getQzz_generation();
|
String qzz_generation = planDto.getQzz_generation();
|
||||||
String product_area = "";
|
String product_area = "";
|
||||||
if (StrUtil.equals(qzz_generation, "4")){
|
if (StrUtil.equals(qzz_generation, SlitterConstant.SLITTER_PLAN_FOUR)){
|
||||||
product_area = "A1";
|
product_area = "A1";
|
||||||
}else if (StrUtil.equals(qzz_generation, "5")){
|
}else if (StrUtil.equals(qzz_generation, SlitterConstant.SLITTER_PLAN_FIVE)){
|
||||||
product_area = "B1";
|
product_area = "B1";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -376,43 +376,53 @@ public class AutoCallAirShaftTask extends Prun {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//(3)套轴区自动移出空盘
|
//(3)套轴区自动移出空盘
|
||||||
//判断是否有可移出空盘:有库存、已启用、且属于套轴区点位
|
//判断是否有自动移出托盘的任务下发,如果有则跳过代码
|
||||||
LambdaQueryWrapper<BstIvtStockingivt> stockLam = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<SchBaseTask> lam = new LambdaQueryWrapper<>();
|
||||||
stockLam.eq(BstIvtStockingivt::getIvt_status,SlitterConstant.SLITTER_YES)
|
lam.eq(SchBaseTask::getHandle_class, StockAreaSendVehicleTask.class)
|
||||||
.eq(BstIvtStockingivt::getIs_used,SlitterConstant.SLITTER_YES)
|
.ne(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode())
|
||||||
.eq(BstIvtStockingivt::getPoint_type,"2");
|
.ne(SchBaseTask::getTask_status, TaskStatusEnum.CANCEL.getCode())
|
||||||
List<BstIvtStockingivt> stockList = stockingivtService.list(stockLam);
|
.eq(SchBaseTask::getIs_delete, "0")
|
||||||
for(int i=0;i<stockList.size();i++){
|
.orderByAsc(SchBaseTask::getTask_code);
|
||||||
BstIvtStockingivt stockNow = stockList.get(i);
|
List<SchBaseTask> tasks = taskService.list(lam);
|
||||||
//载具号
|
if(tasks.size()<=0){
|
||||||
String vehicleCode = stockNow.getVehicle_code();
|
//判断是否有可移出空盘:有库存、已启用、且属于套轴区点位
|
||||||
//点位号
|
LambdaQueryWrapper<BstIvtStockingivt> stockLam = new LambdaQueryWrapper<>();
|
||||||
String point_code = stockNow.getPoint_code();
|
stockLam.eq(BstIvtStockingivt::getIvt_status,SlitterConstant.SLITTER_YES)
|
||||||
|
.eq(BstIvtStockingivt::getIs_used,SlitterConstant.SLITTER_YES)
|
||||||
|
.eq(BstIvtStockingivt::getPoint_type,"2");
|
||||||
|
List<BstIvtStockingivt> stockList = stockingivtService.list(stockLam);
|
||||||
|
for(int i=0;i<stockList.size();i++){
|
||||||
|
BstIvtStockingivt stockNow = stockList.get(i);
|
||||||
|
//载具号
|
||||||
|
String vehicleCode = stockNow.getVehicle_code();
|
||||||
|
//点位号
|
||||||
|
String point_code = stockNow.getPoint_code();
|
||||||
|
|
||||||
// 如果qty=0,创建AGV送空任务,(新的task_type 010816)、后期优化可以新增诺宝取货完成提前释放货位,任务状态变成071
|
// 如果qty=0,创建AGV送空任务,(新的task_type 010816)、后期优化可以新增诺宝取货完成提前释放货位,任务状态变成071
|
||||||
List<MdPbPapervehicle> papers = papervehicleService.list(new LambdaQueryWrapper<MdPbPapervehicle>()
|
List<MdPbPapervehicle> papers = papervehicleService.list(new LambdaQueryWrapper<MdPbPapervehicle>()
|
||||||
.eq(MdPbPapervehicle::getVehicle_code, vehicleCode)
|
.eq(MdPbPapervehicle::getVehicle_code, vehicleCode)
|
||||||
.ne(MdPbPapervehicle::getQty, 0));
|
.ne(MdPbPapervehicle::getQty, 0));
|
||||||
if (papers.size() <= 0) {
|
if (papers.size() <= 0) {
|
||||||
// 搬走
|
// 搬走
|
||||||
List<SchBaseTask> unFinishtasks = taskService.checkHaveTask(point_code);
|
List<SchBaseTask> unFinishtasks = taskService.checkHaveTask(point_code);
|
||||||
if (CollectionUtil.isEmpty(unFinishtasks)) {
|
if (CollectionUtil.isEmpty(unFinishtasks)) {
|
||||||
// 查找一个没有任务的空位
|
// 查找一个没有任务的空位
|
||||||
List<BstIvtStockingivt> list = stockingivtService.getEmptyPointNotTask("3");
|
List<BstIvtStockingivt> list = stockingivtService.getEmptyPointNotTask("3");
|
||||||
if (list.size() == 0) {
|
if (list.size() == 0) {
|
||||||
log.warn("备货区找不到空位置搬运!");
|
log.warn("备货区找不到空位置搬运!");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
BstIvtStockingivt moveEmptyPoint = list.get(0);
|
||||||
|
JSONObject moveTaskParam = new JSONObject();
|
||||||
|
moveTaskParam.put("point_code1", point_code);
|
||||||
|
moveTaskParam.put("point_code2", moveEmptyPoint.getPoint_code());
|
||||||
|
moveTaskParam.put("vehicle_code", vehicleCode);
|
||||||
|
moveTaskParam.put("task_type", SlitterEnum.TASK_TYPE.code("备货区单独送空载具"));
|
||||||
|
moveTaskParam.put("product_area", SlitterConstant.SLITTER_TASK_AREA);
|
||||||
|
stockAreaSendVehicleTask.createTask(moveTaskParam);
|
||||||
|
//下发一个就行
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
BstIvtStockingivt moveEmptyPoint = list.get(0);
|
|
||||||
JSONObject moveTaskParam = new JSONObject();
|
|
||||||
moveTaskParam.put("point_code1", point_code);
|
|
||||||
moveTaskParam.put("point_code2", moveEmptyPoint.getPoint_code());
|
|
||||||
moveTaskParam.put("vehicle_code", vehicleCode);
|
|
||||||
moveTaskParam.put("task_type", SlitterEnum.TASK_TYPE.code("备货区单独送空载具"));
|
|
||||||
moveTaskParam.put("product_area", SlitterConstant.SLITTER_TASK_AREA);
|
|
||||||
stockAreaSendVehicleTask.createTask(moveTaskParam);
|
|
||||||
//下发一个就行
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -698,7 +708,7 @@ public class AutoCallAirShaftTask extends Prun {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
// 3.2 判断是否有单独拉出去的任务,有的话直接拉过来。
|
// 3.2 判断是否有单独拉出去的任务,有的话直接拉过来。
|
||||||
List<BstIvtStockingivt> stockingivts = stockingivtService.getMoveTaskPoints();
|
List<BstIvtStockingivt> stockingivts = stockingivtService.getMoveTaskPoints(SlitterEnum.TASK_TYPE.code("备货区单独送空载具"));
|
||||||
if (CollectionUtil.isNotEmpty(stockingivts)) {
|
if (CollectionUtil.isNotEmpty(stockingivts)) {
|
||||||
BstIvtStockingivt bstIvtStockingivt = stockingivts.get(0);
|
BstIvtStockingivt bstIvtStockingivt = stockingivts.get(0);
|
||||||
// 直接搬过来即可
|
// 直接搬过来即可
|
||||||
@@ -715,6 +725,18 @@ public class AutoCallAirShaftTask extends Prun {
|
|||||||
stockAreaCallTubeTask.createTask(param);
|
stockAreaCallTubeTask.createTask(param);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
//判断是否有自动移出托盘的任务下发,如果有则跳过代码
|
||||||
|
LambdaQueryWrapper<SchBaseTask> lam = new LambdaQueryWrapper<>();
|
||||||
|
lam.eq(SchBaseTask::getTask_type, SlitterEnum.TASK_TYPE.code("备货区送载具"))
|
||||||
|
.ne(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode())
|
||||||
|
.ne(SchBaseTask::getTask_status, TaskStatusEnum.CANCEL.getCode())
|
||||||
|
.eq(SchBaseTask::getIs_delete, "0")
|
||||||
|
.orderByAsc(SchBaseTask::getTask_code);
|
||||||
|
List<SchBaseTask> tasks = taskService.list(lam);
|
||||||
|
if(tasks.size()>=0){
|
||||||
|
log.info("已经有移出托盘的任务,不允许再次下发:"+tasks.toString());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
// 查找一个没有任务的空位
|
// 查找一个没有任务的空位
|
||||||
List<BstIvtStockingivt> list = stockingivtService.getEmptyPointNotTask("3");
|
List<BstIvtStockingivt> list = stockingivtService.getEmptyPointNotTask("3");
|
||||||
if (list.size() == 0) {
|
if (list.size() == 0) {
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ public interface SlitterConstant {
|
|||||||
/**
|
/**
|
||||||
* 任务区域:暂定Test
|
* 任务区域:暂定Test
|
||||||
*/
|
*/
|
||||||
String SLITTER_TASK_AREA = "B2";
|
String SLITTER_TASK_AREA = "B1";
|
||||||
/**
|
/**
|
||||||
* 是/可能/使用...
|
* 是/可能/使用...
|
||||||
*/
|
*/
|
||||||
@@ -20,13 +20,13 @@ public interface SlitterConstant {
|
|||||||
*/
|
*/
|
||||||
String SLITTER_NO = "0";
|
String SLITTER_NO = "0";
|
||||||
/**
|
/**
|
||||||
* 标箔:1
|
* 气胀轴尺寸4代
|
||||||
*/
|
*/
|
||||||
String SLITTER_STANDARD_FOIL = "1";
|
String SLITTER_PLAN_FOUR = "4";
|
||||||
/**
|
/**
|
||||||
* 锂电:2
|
* 气胀轴尺寸5代
|
||||||
*/
|
*/
|
||||||
String SLITTER_LITHIUM_BATTERY = "2";
|
String SLITTER_PLAN_FIVE = "5";
|
||||||
/**
|
/**
|
||||||
* 区域:上
|
* 区域:上
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user