|
|
@ -76,21 +76,16 @@ public class YCLCKTask extends AbstractTask { |
|
|
|
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>() |
|
|
|
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); |
|
|
|
for (SchBaseTask task : tasks) { |
|
|
|
String extGroupData = task.getExt_group_data(); |
|
|
|
JSONObject jsonObject = JSONObject.parseObject(extGroupData); |
|
|
|
String materialType = jsonObject.getString("material_type"); |
|
|
|
SchBasePoint point = findNextPoint(jsonObject,task); |
|
|
|
SchBasePoint point = findNextPoint(task); |
|
|
|
if (ObjectUtil.isEmpty(point)) { |
|
|
|
task.setRemark("未找到所需点位!"); |
|
|
|
taskService.update(task); |
|
|
|
// 消息通知
|
|
|
|
log.info("包片上料未找到当前符合条件的点位materialType:{},",materialType); |
|
|
|
log.info("原材料出库未找到所需点位!"); |
|
|
|
continue; |
|
|
|
} |
|
|
|
// 设置起点并修改创建成功状态
|
|
|
|
// 取料先去等待点
|
|
|
|
task.setTask_type("3"); |
|
|
|
task.setPoint_code1(point.getNext_wait_point()); |
|
|
|
task.setPoint_code1(point.getPoint_code()); |
|
|
|
task.setTask_status(TaskStatus.CREATED.getCode()); |
|
|
|
task.setRemark(""); |
|
|
|
taskService.update(task); |
|
|
@ -107,22 +102,13 @@ public class YCLCKTask extends AbstractTask { |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 判断目标点位 |
|
|
|
* 从10-1查找可以物料一致且有货的点位 |
|
|
|
* todo 待确认怎么区分普通回温和快速回温 |
|
|
|
* todo 设置回温时间 |
|
|
|
* |
|
|
|
* @param extGroupData |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
private SchBasePoint findNextPoint(JSONObject extGroupData,SchBaseTask task) { |
|
|
|
String regionCode = ""; |
|
|
|
String materialType = extGroupData.getString("material_type"); |
|
|
|
if("1".equals(materialType)){ |
|
|
|
regionCode="ZJBDJW"; |
|
|
|
}else if("2".equals(materialType)){ |
|
|
|
regionCode="HCQ2"; |
|
|
|
}else if ("3".equals(materialType)){ |
|
|
|
regionCode="HCQ3"; |
|
|
|
} |
|
|
|
private SchBasePoint findNextPoint(SchBaseTask task) { |
|
|
|
String regionCode = "HW"; |
|
|
|
List<SchBasePoint> schBasePointList = pointMapper.findPointByRegion(regionCode,"1"); |
|
|
|
for(int i=schBasePointList.size()-1;i>=0;i--){ |
|
|
|
SchBasePoint schBasePoint=schBasePointList.get(i); |
|
|
@ -130,10 +116,9 @@ public class YCLCKTask extends AbstractTask { |
|
|
|
if(task.getTask_code().equals(schBasePoint.getIng_task_code())){ |
|
|
|
return schBasePoint; |
|
|
|
} |
|
|
|
if (!"2".equals(schBasePoint.getPoint_type())&&schBasePoint.getVehicle_qty()!=0 |
|
|
|
&&ObjectUtil.isEmpty(schBasePoint.getIng_task_code()) |
|
|
|
&&(ObjectUtil.isEmpty(schBasePoint.getVehicle_type())||materialType.equals(schBasePoint.getVehicle_type()))){ |
|
|
|
log.info("包片上料任务找到当前符合条件的缓存区位置{}",schBasePoint.getPoint_code()); |
|
|
|
if ("2".equals(schBasePoint.getPoint_status()) |
|
|
|
&& schBasePoint.getVehicle_qty() ==0) { |
|
|
|
log.info("原材料出库任务找到当前符合条件的缓存区位置{}",schBasePoint.getPoint_code()); |
|
|
|
return schBasePoint; |
|
|
|
} |
|
|
|
} |
|
|
@ -141,8 +126,7 @@ public class YCLCKTask extends AbstractTask { |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 1.取货完毕后起点减少最后一份组盘,并且该组盘视为已结束 |
|
|
|
* 2.包片机LMS不记录点位信息,由人工对组盘进行操作 |
|
|
|
* todo 任务完成设置完成时间为开始固化时间 |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
// @Transactional(rollbackFor = Exception.class)
|
|
|
@ -206,6 +190,11 @@ public class YCLCKTask extends AbstractTask { |
|
|
|
taskObj.setTask_status(TaskStatus.FINISHED.getCode()); |
|
|
|
taskObj.setGroup_id(one.getGroup_id()); |
|
|
|
taskObj.setRemark("任务完成"); |
|
|
|
try { |
|
|
|
//todo 出库成功后上报mes
|
|
|
|
}catch (Exception e){ |
|
|
|
log.error("原材料出库上报MES失败{}",e.getMessage(),e); |
|
|
|
} |
|
|
|
} |
|
|
|
if (status.equals(TaskStatus.CANCELED)) { // 取消
|
|
|
|
// 终点解锁
|
|
|
@ -239,21 +228,6 @@ public class YCLCKTask extends AbstractTask { |
|
|
|
|
|
|
|
@Override |
|
|
|
protected void feedbackTaskState(JSONObject param,SchBaseTask schBaseTask, BaseResponse result) { |
|
|
|
//重算最优点
|
|
|
|
JSONObject jsonObject = JSONObject.parseObject(schBaseTask.getExt_group_data()); |
|
|
|
SchBasePoint point = this.findNextPoint(jsonObject,schBaseTask); |
|
|
|
//正极板现在不堆叠
|
|
|
|
if( "1".equals(jsonObject.getString("material_type"))) { |
|
|
|
schBaseTask.setPoint_code1(point.getPoint_code()+"0"+(point.getVehicle_qty())); |
|
|
|
}else{ |
|
|
|
schBaseTask.setPoint_code1(point.getPoint_code().replace("HCQ","QHQ")); |
|
|
|
} |
|
|
|
//重算点位时把点位占用
|
|
|
|
point.setIng_task_code(schBaseTask.getTask_code()); |
|
|
|
//如果是正极板对接位则直接减库存
|
|
|
|
if ((point.getPoint_code().startsWith("ZJBDJW"))) { |
|
|
|
point.setVehicle_qty(point.getVehicle_qty() - 1); |
|
|
|
} |
|
|
|
pointService.update(point); |
|
|
|
//该场景无需重算等待点
|
|
|
|
} |
|
|
|
} |
|
|
|