Browse Source

opt:优化调度

master
张东升 2 weeks ago
parent
commit
ac1a28983b
  1. 2
      lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/IBstIvtStockingivtService.java
  2. 2
      lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dao/mapper/BstIvtStockingivtMapper.java
  3. 2
      lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dao/mapper/BstIvtStockingivtMapper.xml
  4. 4
      lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/impl/BstIvtStockingivtServiceImpl.java
  5. 102
      lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoCallAirShaftTask.java
  6. 10
      lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/constant/SlitterConstant.java

2
lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/IBstIvtStockingivtService.java

@ -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);
} }

2
lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dao/mapper/BstIvtStockingivtMapper.java

@ -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);
} }

2
lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dao/mapper/BstIvtStockingivtMapper.xml

@ -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>

4
lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/impl/BstIvtStockingivtServiceImpl.java

@ -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);
} }
} }

102
lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoCallAirShaftTask.java

@ -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)
// 如果qty=0,创建AGV送空任务,(新的task_type 010816)、后期优化可以新增诺宝取货完成提前释放货位,任务状态变成071 .eq(BstIvtStockingivt::getPoint_type,"2");
List<MdPbPapervehicle> papers = papervehicleService.list(new LambdaQueryWrapper<MdPbPapervehicle>() List<BstIvtStockingivt> stockList = stockingivtService.list(stockLam);
.eq(MdPbPapervehicle::getVehicle_code, vehicleCode) for(int i=0;i<stockList.size();i++){
.ne(MdPbPapervehicle::getQty, 0)); BstIvtStockingivt stockNow = stockList.get(i);
if (papers.size() <= 0) { //载具号
// 搬走 String vehicleCode = stockNow.getVehicle_code();
List<SchBaseTask> unFinishtasks = taskService.checkHaveTask(point_code); //点位号
if (CollectionUtil.isEmpty(unFinishtasks)) { String point_code = stockNow.getPoint_code();
// 查找一个没有任务的空位
List<BstIvtStockingivt> list = stockingivtService.getEmptyPointNotTask("3"); // 如果qty=0,创建AGV送空任务,(新的task_type 010816)、后期优化可以新增诺宝取货完成提前释放货位,任务状态变成071
if (list.size() == 0) { List<MdPbPapervehicle> papers = papervehicleService.list(new LambdaQueryWrapper<MdPbPapervehicle>()
log.warn("备货区找不到空位置搬运!"); .eq(MdPbPapervehicle::getVehicle_code, vehicleCode)
.ne(MdPbPapervehicle::getQty, 0));
if (papers.size() <= 0) {
// 搬走
List<SchBaseTask> unFinishtasks = taskService.checkHaveTask(point_code);
if (CollectionUtil.isEmpty(unFinishtasks)) {
// 查找一个没有任务的空位
List<BstIvtStockingivt> list = stockingivtService.getEmptyPointNotTask("3");
if (list.size() == 0) {
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
lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/constant/SlitterConstant.java

@ -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";
/** /**
* 区域 * 区域
*/ */

Loading…
Cancel
Save