rev:修改调度代码
This commit is contained in:
@@ -27,7 +27,7 @@ public enum AcsTaskEnum {
|
||||
//专机到深坑任务:深坑业务单独处理
|
||||
TASK_PRODUCT_WASH("3","专机-深坑任务"),
|
||||
//3个点,任务编号,缓存线满料载具列表
|
||||
TASK_CACHELINE_OUT("4","缓存线-专机出库任务"),
|
||||
TASK_CACHELINE_OUT("4","缓存线-专机缺料任务"),
|
||||
TASK_PLOTTER_MAC("5","刻字机-满料入库"),
|
||||
TASK_PLOTTER_EMPTY("6","刻字机-呼叫空框"),
|
||||
TASK_WARP_MAC("7","包装机-叫料出库"),
|
||||
|
||||
@@ -122,49 +122,30 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{
|
||||
String task_id = row.getString("task_id");
|
||||
TaskDto taskDto = taskService.findById(task_id);
|
||||
String processing_class = taskDto.getHandle_class();
|
||||
//1:执行中,2:完成 ,3:acs取消
|
||||
//6:执行中,7:完成 ,8:acs取消 acs:123
|
||||
String acs_task_status = row.getString("status");
|
||||
String message = "";
|
||||
String status = "";
|
||||
if ("1".equals(acs_task_status)) {
|
||||
status = AcsTaskEnum.STATUS_START.getCode();
|
||||
status = StatusEnum.TASK_RUNNING.getCode();
|
||||
}
|
||||
if ("2".equals(acs_task_status)) {
|
||||
status = AcsTaskEnum.STATUS_FINISH.getCode();
|
||||
status = StatusEnum.TASK_FINISH.getCode();
|
||||
}
|
||||
if ("3".equals(acs_task_status)) {
|
||||
status = AcsTaskEnum.STATUS_CANNEL.getCode();
|
||||
status = StatusEnum.TASK_CANNEL.getCode();
|
||||
}
|
||||
// 任务处理类
|
||||
try {
|
||||
Object obj = SpringContextHolder.getBean(Class.forName(processing_class));
|
||||
Method m = obj.getClass().getDeclaredMethod("updateTaskStatus", JSONObject.class, String.class);
|
||||
m.invoke(obj, row, status);
|
||||
} catch (InvocationTargetException e) {
|
||||
e.printStackTrace();
|
||||
//空指针
|
||||
if (ObjectUtil.isNull(e.getTargetException().getMessage())) {
|
||||
message = e.getTargetException().toString();
|
||||
} else {
|
||||
message = e.getTargetException().getMessage();
|
||||
}
|
||||
log.info("任务状态更新失败:{}", message);
|
||||
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("task_id", task_id);
|
||||
json.put("message", message);
|
||||
errArr.add(json);
|
||||
|
||||
AbstractAcsTask taskHandler = (AbstractAcsTask)SpringContextHolder.getBean(Class.forName(processing_class));
|
||||
taskHandler.updateTaskStatus(row,status);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
message = e.getMessage();
|
||||
log.info("任务状态更新失败:{}", message);
|
||||
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("task_id", task_id);
|
||||
json.put("message", message);
|
||||
errArr.add(json);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.nl.wms.ext.acs.service.impl;
|
||||
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
@@ -79,12 +80,14 @@ public class AgvInstService {
|
||||
//判断缓存线是不是去深坑清洗:深坑区域15个点:判断空的物料坑位:
|
||||
if (next.getName().equals("深坑清洗")){
|
||||
query.put("material_id",task.getString("material_id"));
|
||||
query.put("spec",null);
|
||||
// query.put("qty",quantity) 深坑物料需要转重量
|
||||
task.put("task_type",AcsTaskEnum.TASK_PRODUCT_WASH.getCode());
|
||||
task.put("task_name",AcsTaskEnum.TASK_PRODUCT_WASH.getDesc());
|
||||
|
||||
}
|
||||
List<Map<String,String>> collect = deviceService.workproceduceDevices(query);
|
||||
log.info("调度任务分配点位信息:", JSON.toJSONString(collect));
|
||||
List<Map<String, String>> list = collect.stream().filter(stringStringMap -> stringStringMap.get("tasks") == null || stringStringMap.get("materials").contains(task.getString("material_id"))).collect(Collectors.toList());
|
||||
task.put("acs_task_type",AcsTaskEnum.ACS_TASK_TYPE_NOBLE_SINGLE_TASK.getCode());
|
||||
task.put("is_send","1");
|
||||
|
||||
@@ -2,7 +2,7 @@ package org.nl.wms.ext.acs.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.utils.AcsUtil;
|
||||
@@ -32,8 +32,11 @@ public class WmsToAcsServiceImpl implements WmsToAcsService{
|
||||
, "next_point_code", task.getString("point_code3")//空盘返回点
|
||||
, "task_group_id", StringUtils.isBlank(task.getString("task_group_id"))? IdUtil.getStringId():task.getString("task_group_id")
|
||||
, "priority", task.getString("priority")
|
||||
, "is_send", task.getString("is_send")
|
||||
, "is_send", task.getBoolean("is_send")?"1":"0"
|
||||
, "vehicle_code", task.getString("vehicle_code")
|
||||
, "quantity", task.getString("material_qty")
|
||||
, "barcodeArr", task.getString("barcodeArr")
|
||||
, "proprity_floor", "2"
|
||||
, "agv_system_type", task.getString("agv_system_type")
|
||||
));
|
||||
form.add(param);
|
||||
@@ -104,3 +107,4 @@ public class WmsToAcsServiceImpl implements WmsToAcsService{
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -84,7 +84,6 @@ public interface TaskService {
|
||||
*
|
||||
* @param param
|
||||
*/
|
||||
void operation(Map<String, Object> param);
|
||||
|
||||
/**
|
||||
* 获取任务类型
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.enums.AcsTaskEnum;
|
||||
import org.nl.common.enums.StatusEnum;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.wql.WQL;
|
||||
@@ -176,48 +177,6 @@ public class TaskServiceImpl implements TaskService {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void operation(Map<String, Object> map) {
|
||||
WmsToAcsServiceImpl wms = new WmsToAcsServiceImpl();
|
||||
String task_id = MapUtil.getStr(map, "task_id");
|
||||
String method_name = MapUtil.getStr(map, "method_name");
|
||||
JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0);
|
||||
if (taskObj.getString("task_status").equals(TaskStatusEnum.FINISHED.getCode())) throw new BadRequestException("任务已完成!");
|
||||
|
||||
switch (method_name) { // forceFinish, cancel
|
||||
case "immediateNotifyAcs":
|
||||
JSONArray array = new JSONArray();
|
||||
array.add(taskObj);
|
||||
wms.issueTaskToAcs(array);
|
||||
break;
|
||||
case "forceFinish":
|
||||
JSONArray finish = new JSONArray();
|
||||
JSONObject res = new JSONObject();
|
||||
res.put("task_id", task_id);
|
||||
res.put("status", AcsTaskEnum.STATUS_FINISH.getCode());
|
||||
res.put("finished_type", AcsTaskEnum.MANUAL_TASK_FINISHED_TYPE.getCode()); // 手动完成
|
||||
finish.add(res);
|
||||
acsToWmsService.receiveTaskStatusAcs(JSON.toJSONString(finish));
|
||||
break;
|
||||
case "cancel":
|
||||
JSONArray cancel = new JSONArray();
|
||||
JSONObject res2 = new JSONObject();
|
||||
res2.put("task_id", task_id);
|
||||
res2.put("status", AcsTaskEnum.STATUS_CANNEL.getCode());
|
||||
cancel.add(res2);
|
||||
acsToWmsService.receiveTaskStatusAcs(JSON.toJSONString(cancel));
|
||||
break;
|
||||
case "delete":
|
||||
JSONArray delete = new JSONArray();
|
||||
JSONObject res3 = new JSONObject();
|
||||
res3.put("task_id", task_id);
|
||||
res3.put("status", AcsTaskEnum.STATUS_CANNEL.getCode());
|
||||
delete.add(res3);
|
||||
acsToWmsService.receiveTaskStatusAcs(JSON.toJSONString(delete));
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONArray getTaskTypes() {
|
||||
|
||||
@@ -106,7 +106,7 @@ public class SpeEmpTask extends AbstractAcsTask {
|
||||
|
||||
JSONObject form = new JSONObject(MapOf.of("start_point_code","",
|
||||
"next_point_code",param.getString("device_code"),"return_point_code", "","vehicle_code",
|
||||
"","product_area",one.getProduct_area(),"quantity", param.getString("quantity"),"type",param.getString("type"),"material_id", one.getMaterial_id()));
|
||||
"","product_area",one.getProduct_area(),"quantity", param.getString("quantity"),"type",AcsTaskEnum.TASK_CACHELINE_OUT.getCode(),"material_id", one.getMaterial_id()));
|
||||
String taskId = IdUtil.getSnowflake(1, 1).nextId() + "";
|
||||
JSONObject task = packageParam(form, taskId);
|
||||
taskService.save(task.toJavaObject(SchBaseTask.class));
|
||||
@@ -155,9 +155,8 @@ public class SpeEmpTask extends AbstractAcsTask {
|
||||
private JSONObject packageParam(JSONObject form, String task_id) {
|
||||
JSONObject task = new JSONObject();
|
||||
参数封装:{
|
||||
AcsTaskEnum taskEnum = AcsTaskEnum.getType(form.getString("type"), "TASK_");
|
||||
task.put("task_id", task_id);
|
||||
task.put("task_name", taskEnum.getDesc());
|
||||
task.put("task_name", AcsTaskEnum.TASK_CACHELINE_OUT.name());
|
||||
task.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
|
||||
task.put("task_type", form.getString("type"));
|
||||
task.put("acs_task_type", AcsTaskEnum.ACS_TASK_TYPE_NOBLE_DOUBLE_TASK.getCode());
|
||||
|
||||
@@ -77,14 +77,9 @@ public class SpeFullTask extends AbstractAcsTask {
|
||||
log.info(InterfaceLogType.ACS_TO_LMS.getDesc());
|
||||
// 指令执行中
|
||||
SchBaseTask task = taskService.getById(param.getString("task_id"));
|
||||
AcsTaskEnum taskType = AcsTaskEnum.getType(task.getTask_type(),"TASK_");
|
||||
pointService.update(new UpdateWrapper<SchBasePoint>().set("lock_type","0").in("point_code",task.getPoint_code1(),task.getPoint_code2(),task.getPoint_code3()));
|
||||
taskService.update(new UpdateWrapper<SchBaseTask>()
|
||||
.set("task_status",status)
|
||||
.set("update_name","acs")
|
||||
.set("update_time",DateUtil.now()).eq("task_id",task.getTask_id()));
|
||||
try {
|
||||
SpeHandles.get(taskType.name()).handle(param,status,task);
|
||||
SpeHandles.get(task.getTask_name()).handle(param,status,task);
|
||||
}catch (Exception ex){
|
||||
log.error(OPT_NAME+"updateStatus error:{}",ex);
|
||||
throw ex;
|
||||
@@ -270,6 +265,10 @@ public class SpeFullTask extends AbstractAcsTask {
|
||||
switch (status){
|
||||
case STATUS_START:
|
||||
Map<String, String> extParam = (Map)param.get("ext_param");
|
||||
UpdateWrapper<SchBaseTask> wrapper = new UpdateWrapper<SchBaseTask>()
|
||||
.set("task_status", StatusEnum.TASK_RUNNING.getCode())
|
||||
.set("update_name", "acs")
|
||||
.set("update_time", DateUtil.now()).eq("task_id", task.getTask_id());
|
||||
log.info("生坑到料完成:"+param.toString());
|
||||
if (extParam.get("fall_finish") != null){
|
||||
PdmBiDevice one = deviceService.getOne(new QueryWrapper<PdmBiDevice>().eq("device_code", task.getPoint_code2()));
|
||||
@@ -280,8 +279,13 @@ public class SpeFullTask extends AbstractAcsTask {
|
||||
}
|
||||
break;
|
||||
case STATUS_FINISH:
|
||||
taskService.update(new UpdateWrapper<SchBaseTask>()
|
||||
.set("task_status",StatusEnum.TASK_FINISH.getCode())
|
||||
.set("update_name","acs")
|
||||
.set("update_time",DateUtil.now()).eq("task_id",task.getTask_id()));
|
||||
break;
|
||||
case STATUS_CANNEL:
|
||||
cancel(param.getString("task_id"));
|
||||
break;
|
||||
default:
|
||||
throw new BadRequestException(OPT_NAME+"未定义任务状态:"+sta);
|
||||
|
||||
@@ -84,7 +84,7 @@ public class TaskScheduleService {
|
||||
}
|
||||
}
|
||||
}
|
||||
List<SchBaseTask> all = taskService.list(new QueryWrapper<SchBaseTask>().eq("is_auto_issue", "1").eq("is_delete",false).eq("task_status", StatusEnum.TASK_START_END_P.getCode()));
|
||||
List<SchBaseTask> all = taskService.list(new QueryWrapper<SchBaseTask>().eq("is_auto_issue", "1").eq("is_delete",false).eq("task_status", StatusEnum.TASK_START_END_P.getCode()).orderByAsc("point_code2"));
|
||||
//分区域:不同区域调用不同acs接口
|
||||
log.info("定时调度——2222——准备下发任务:{}", JSON.toJSONString(all.stream().map(a->a.getTask_id()+"__"+a.getPoint_code1()+a.getPoint_code2()+a.getPoint_code3()).collect(Collectors.toList())));
|
||||
Map<String, List<SchBaseTask>> areaCollent = all.stream().collect(Collectors.groupingBy(SchBaseTask::getProduct_area));
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
</select>
|
||||
<select id="workproceduceDevices" resultType="java.util.Map">
|
||||
select
|
||||
GROUP_CONCAT(sch_base_task.task_id),
|
||||
GROUP_CONCAT(sch_base_task.task_id) as tasks,GROUP_CONCAT(sch_base_task.material_id) as materials,
|
||||
pdm_bi_device.inupperlimit_qty - ifnull( sum( sch_base_task.material_qty ), 0 ) - pdm_bi_device.deviceinstor_qty AS currentQty,
|
||||
pdm_bi_device.device_code,
|
||||
sch_base_point.point_code
|
||||
@@ -34,7 +34,7 @@
|
||||
and (pdm_bi_device.material_id = #{material_id} or pdm_bi_device.material_id is null )
|
||||
</if>
|
||||
<if test="spec != null and spec != ''">
|
||||
and pdm_bi_device.spec = #{spec}
|
||||
and (pdm_bi_device.spec = #{spec} or pdm_bi_device.spec is null)
|
||||
</if>
|
||||
GROUP BY pdm_bi_device.device_code
|
||||
HAVING currentQty > #{qty}
|
||||
|
||||
@@ -4,6 +4,7 @@ import lombok.SneakyThrows;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.BaseConverter;
|
||||
import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.BaseElement;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.xml.stream.XMLStreamConstants;
|
||||
@@ -19,6 +20,9 @@ import java.util.Map;
|
||||
*/
|
||||
@Service("flow")
|
||||
public class FlowConverter implements BaseConverter {
|
||||
@Autowired
|
||||
ParamConverter paramConverter;
|
||||
|
||||
String[] labels = new String[]{"id","name","sourceRef","targetRef"};
|
||||
@Override
|
||||
@SneakyThrows
|
||||
@@ -37,6 +41,8 @@ public class FlowConverter implements BaseConverter {
|
||||
if (XMLStreamConstants.START_ELEMENT == xtr.next()){
|
||||
System.out.println(xtr.getLocalName());
|
||||
element.getParams().put(xtr.getAttributeValue(null,"id"),xtr.getAttributeValue(null,"value"));
|
||||
ParamElement process = (ParamElement)paramConverter.process(xtr);
|
||||
element.getParams().put(process.getId(),process.getValue());
|
||||
i++;
|
||||
}
|
||||
}
|
||||
@@ -45,3 +51,4 @@ public class FlowConverter implements BaseConverter {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ public class FlowElement extends BaseElement {
|
||||
private FlowElement targetRef;
|
||||
private String sourceRefId;
|
||||
private String targetRefId;
|
||||
private Map<String,String> params = new HashMap<>();
|
||||
private Map<String,Object> params = new HashMap<>();
|
||||
|
||||
|
||||
|
||||
@@ -55,11 +55,11 @@ public class FlowElement extends BaseElement {
|
||||
this.targetRefId = targetRefId;
|
||||
}
|
||||
|
||||
public Map<String, String> getParams() {
|
||||
public Map<String, Object> getParams() {
|
||||
return params;
|
||||
}
|
||||
|
||||
public void setParams(Map<String, String> params) {
|
||||
public void setParams(Map<String, Object> params) {
|
||||
this.params = params;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
package org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl;
|
||||
|
||||
import lombok.SneakyThrows;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.BaseConverter;
|
||||
import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.BaseElement;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.xml.stream.XMLStreamConstants;
|
||||
import javax.xml.stream.XMLStreamReader;
|
||||
|
||||
/*
|
||||
* @author ZZQ
|
||||
* @Date 2023/5/19 11:00
|
||||
*/
|
||||
@Service("param")
|
||||
public class ParamConverter implements BaseConverter {
|
||||
String[] labels = new String[]{"id","value"};
|
||||
@Override
|
||||
@SneakyThrows
|
||||
public BaseElement process(XMLStreamReader xtr) {
|
||||
ParamElement element = new ParamElement();
|
||||
setBaseLabel(element,xtr,labels);
|
||||
element.setValue(xtr.getAttributeValue(null,"value"));
|
||||
String has = xtr.getAttributeValue(null, "has");
|
||||
if (StringUtils.isNotEmpty(has)){
|
||||
int i = 0;
|
||||
while (true){
|
||||
if (i == Integer.valueOf(has)){
|
||||
break;
|
||||
}
|
||||
if (XMLStreamConstants.START_ELEMENT == xtr.next()){
|
||||
element.getItem().put(xtr.getAttributeValue(null,"spec"),xtr.getAttributeValue(null,"value"));
|
||||
i++;
|
||||
}
|
||||
}
|
||||
element.setValue(element.getItem());
|
||||
}
|
||||
return element;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl;
|
||||
|
||||
import lombok.Data;
|
||||
import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.BaseElement;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/*
|
||||
* @author ZZQ
|
||||
* @Date 2023/5/21 18:03
|
||||
*/
|
||||
@Data
|
||||
public class ParamElement extends BaseElement {
|
||||
private Object value;
|
||||
private Map<String,String> item = new HashMap<>();
|
||||
|
||||
}
|
||||
@@ -57,7 +57,7 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
JSONArray finish = new JSONArray();
|
||||
JSONObject res = new JSONObject();
|
||||
res.put("task_id", task_id);
|
||||
res.put("status", AcsTaskEnum.STATUS_FINISH.getCode());
|
||||
res.put("status", StatusEnum.TASK_FINISH.getCode());
|
||||
res.put("finished_type", AcsTaskEnum.MANUAL_TASK_FINISHED_TYPE.getCode()); // 手动完成
|
||||
finish.add(res);
|
||||
acsToWmsService.receiveTaskStatusAcs(JSON.toJSONString(finish));
|
||||
@@ -66,7 +66,7 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
JSONArray cancel = new JSONArray();
|
||||
JSONObject res2 = new JSONObject();
|
||||
res2.put("task_id", task_id);
|
||||
res2.put("status", AcsTaskEnum.STATUS_CANNEL.getCode());
|
||||
res2.put("status", StatusEnum.TASK_CANNEL.getCode());
|
||||
cancel.add(res2);
|
||||
acsToWmsService.receiveTaskStatusAcs(JSON.toJSONString(cancel));
|
||||
break;
|
||||
|
||||
@@ -8,8 +8,11 @@
|
||||
<item spec="22" value="A1_HCX_02"></item>
|
||||
</param>
|
||||
</flow>
|
||||
<flow id="A1_TWYTJ" name="推弯一体工序" sourceRef="A1_JGXL" targetRef="A1_SKQX">
|
||||
<flow id="A1_TWYTJ" name="推弯一体工序" sourceRef="A1_JGXL" targetRef="A1_TK">
|
||||
|
||||
</flow>
|
||||
<flow id="A1_TK" name="镗孔" sourceRef="A1_TWYTJ" targetRef="A1_SKQX"></flow>
|
||||
|
||||
<flow id="A1_SKQX" name="深坑清洗" sourceRef="A1_TWYTJ" targetRef="end"></flow>
|
||||
<end id="end" name="Junior Reject End" sourceRef="A1_SKQX"></end>
|
||||
</process>
|
||||
|
||||
Reference in New Issue
Block a user