rev:生产调度相关

This commit is contained in:
zhangzhiqiang
2023-05-24 09:42:52 +08:00
parent db5c1de411
commit 1ce759c718
17 changed files with 232 additions and 95 deletions

View File

@@ -89,7 +89,8 @@ public class AcsToWmsController {
@ApiOperation("向wms反馈设备状态")
@SaIgnore
public ResponseEntity<Object> feedDeviceStatusType(@RequestBody JSONObject param) {
return new ResponseEntity<>(acsToWmsService.feedDeviceStatusType(param), HttpStatus.OK);
return null;
// return new ResponseEntity<>(acsToWmsService.feedDeviceStatusType(param), HttpStatus.OK);
}

View File

@@ -22,6 +22,8 @@ import org.nl.wms.product_manage.sch.manage.AbstractAcsTask;
import org.nl.wms.product_manage.sch.service.TaskService;
import org.nl.wms.product_manage.sch.service.dto.TaskDto;
import org.nl.wms.product_manage.sch.tasks.WashMachineryTask;
import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService;
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.http.HttpStatus;
@@ -47,6 +49,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{
private TaskService taskService;
@Autowired
private CacheLineHandService cacheLineHandService;
@Autowired
private IPdmProduceWorkorderService workorderService;
@@ -203,17 +207,12 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{
public Map<String, Object> orderStatus(JSONObject orderJson) {
JSONObject result = new JSONObject();
try {
JSONObject map = new JSONObject();
map.put("workorder_id", orderJson.getString("workorder_id"));
map.put("workorder_status", orderJson.getString("status"));
map.put("update_id", "1");
map.put("real_qty", orderJson.getString("real_qty"));
map.put("device_code", "");
map.put("update_name", "acs");
map.put("update_time", DateUtil.now());
map.put("realproduceend_date", DateUtil.now());
WQLObject.getWQLObject("PDM_produce_workOrder").update(map, "workorder_id = '" + orderJson.getString("workorder_id") + "'");
//OptionRecord.record(OptionRecord.OptionEnum.UPDATEOP, OptionRecord.Buss.WORKORDER,orderJson.getString("workorder_id"),MapOf.of("workorder_status", orderJson.getString("status")));
PdmProduceWorkorder workorder = new PdmProduceWorkorder();
workorder.setWorkorder_id(orderJson.getString("workorder_id"));
workorder.setWorkorder_status(orderJson.getString("status"));
workorder.setDq_real_qty(orderJson.getBigDecimal("real_qty"));
workorder.setRealproduceend_date(DateUtil.now());
workorderService.updateById(workorder);
} catch (Exception e){
result.put("status", 400);
result.put("message", e.getMessage());

View File

@@ -52,7 +52,11 @@ public class AgvInstService {
@Autowired
private ISchCachelineVehicleService cachelineVehicleService;
public static void main(String[] args) {
String a= "A1_DC_15_6";
int i = a.lastIndexOf("_");
System.out.println(a.substring(0, i));
}
//满料请求点位确认
//1.判断当前设备路由表是否配置下一道路由设备,如果不是则说明直接到清洗
@@ -81,11 +85,14 @@ public class AgvInstService {
if (next.getParams().get("cacheLine") == null){
throw new BadRequestException("当前任务下一道工序无可用设备");
}
nextPoint = next.getParams().get("cacheLine");
nextPoint = getParamByXml(workprodure, next, nextPoint);
cacheVehile = getCacheVehile(nextPoint, null);
}
if (StringUtils.isBlank(nextPoint)){
throw new BadRequestException("逻辑非配错误,请检查代码");
结果校验:{
if (StringUtils.isBlank(nextPoint)) {
throw new BadRequestException("逻辑非配错误,请检查代码");
}
}
basePointService.update(new UpdateWrapper<SchBasePoint>()
.set("lock_type",StatusEnum.LOCK_ON.getCode()).set("task_id",task.getString("task_id")).eq("point_code",nextPoint));
@@ -96,7 +103,20 @@ public class AgvInstService {
schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode());
schBaseTask.setUpdate_time(new Date());
taskService.updateById(schBaseTask);
};
}
private String getParamByXml(Map<String, String> workprodure, FlowElement next, String nextPoint) {
Object cacheLine = next.getParams().get("cacheLine");
if (cacheLine instanceof String){
nextPoint = (String) cacheLine;
}
if (cacheLine instanceof Map){
nextPoint = ((Map<String, String>) cacheLine).get(workprodure.get("device_code").substring(0, workprodure.get("device_code").lastIndexOf("_")));
}
return nextPoint;
}
;
public FlowElement getFlowElement(JSONObject task,Map<String,String> workprodure){
if (CollectionUtils.isEmpty(workprodure)){
@@ -126,7 +146,7 @@ public class AgvInstService {
//3.agv根据对应载具列表行进扫码匹配匹配到对应物料则创建点对点任务
public void empMatter(JSONObject task){
//参数
String targetDevice = task.getString("next_point_code");
String targetDevice = task.getString("point_code2");
String material_id = task.getString("material_id");
SchBasePoint devicePoint = basePointService.getOne(new QueryWrapper<SchBasePoint>()
.eq("point_code", targetDevice)
@@ -157,12 +177,14 @@ public class AgvInstService {
}
public String getCacheVehile(String cacheLine,String materialId){
int count = taskService.count(new QueryWrapper<SchBaseTask>().eq("point_code2", cacheLine).lt("task_status", StatusEnum.TASK_FINISH.getCode()));
String status = StringUtils.isBlank(materialId) ? StatusEnum.CACHE_VEL_EMT.getCode() : StatusEnum.CACHE_VEL_FULL.getCode();
List<SchCachelineVehicle> vehicle = cachelineVehicleService.getCachelineVehicle(MapOf.of("vehicle_status", status, "material_id", materialId));
if (vehicle.size()>0){
if (vehicle.size()>count){
return vehicle.stream().map(SchCachelineVehicle::getVehicle_code).collect(Collectors.joining(","));
if (StringUtils.isNotEmpty(cacheLine)){
int count = taskService.count(new QueryWrapper<SchBaseTask>().eq("point_code2", cacheLine).lt("task_status", StatusEnum.TASK_FINISH.getCode()));
String status = StringUtils.isBlank(materialId) ? StatusEnum.CACHE_VEL_EMT.getCode() : StatusEnum.CACHE_VEL_FULL.getCode();
List<SchCachelineVehicle> vehicle = cachelineVehicleService.getCachelineVehicle(MapOf.of("vehicle_status", status, "material_id", materialId));
if (vehicle.size()>0){
if (vehicle.size()>count){
return vehicle.stream().map(SchCachelineVehicle::getVehicle_code).collect(Collectors.joining(","));
}
}
}
return "";

View File

@@ -72,7 +72,7 @@
WHERE d.is_delete = 0
ORDER BY
device_code
LIMIT 10
LIMIT 200
ENDSELECT
ENDQUERY
ENDIF

View File

@@ -6,6 +6,7 @@ import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.enums.AcsTaskEnum;
import org.nl.common.enums.InterfaceLogType;
@@ -18,11 +19,17 @@ import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.ext.acs.service.impl.AgvInstService;
import org.nl.wms.product_manage.sch.manage.AbstractAcsTask;
import org.nl.wms.product_manage.sch.manage.TaskStatusEnum;
import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService;
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder;
import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
@@ -31,7 +38,10 @@ import java.util.Map;
@Slf4j
@Service
public class SpeEmpTask extends AbstractAcsTask {
@Autowired
private IPdmProduceWorkorderService workorderService;
@Autowired
private ISchBaseTaskService taskService;
@Autowired
AgvInstService agvInstService;
private final Map<String,SpeStatusHandler > SpeHandles= new HashMap<>();
@@ -62,28 +72,33 @@ public class SpeEmpTask extends AbstractAcsTask {
@Override
@Transactional
public String createTask(JSONObject param) {
//{"workorder_code":230523019,"device_code":"A1_TW_15_6_D","type":"1"}
String point_code = param.getString("device_code");
String quantity = param.getString("quantity");
String type = param.getString("type");
JSONObject order = WQLObject.getWQLObject("PDM_produce_workOrder").query("workorder_code = '" + param.getString("workorder_code") + "' and is_delete = 0 and workorder_status != "+StatusEnum.TASK_FINISH.getCode()).uniqueResult(0);
Assert.notNull(order, String.format("下发工单%s不存在未完成工单", param.getString("workorder_code")));
JSONArray chectIndDatabase = WQLObject.getWQLObject("SCH_BASE_Task").query((AcsTaskEnum.REQUEST_CALLTYPE_FULL.getCode().equals(type) ? "point_code1" : "point_code2") + "= '" + point_code + "' and task_status < " + StatusEnum.TASK_FINISH.getCode()).getResultJSONArray(0);
if (ObjectUtil.isNotEmpty(chectIndDatabase)){
Assert.notNull(order, String.format("设备%s存在未完成任务", param.getString("point_code")));
PdmProduceWorkorder one = workorderService.getOne(new QueryWrapper<PdmProduceWorkorder>()
.eq("workorder_code", param.getString("workorder_code"))
.lt("workorder_status", StatusEnum.TASK_FINISH.getCode()));
Assert.notNull(one, String.format("下发工单%s不存在未完成工单", param.getString("workorder_code")));
List<SchBaseTask> list = taskService.list(new QueryWrapper<SchBaseTask>()
.eq("point_code2", point_code).lt("task_status", StatusEnum.TASK_FINISH.getCode())
);
if (!CollectionUtils.isEmpty(list)){
throw new BadRequestException(String.format("设备%s存在未完成任务", param.getString("device_code")));
}
JSONObject form = new JSONObject(MapOf.of("start_point_code","",
"next_point_code",point_code,"return_point_code", "","vehicle_code",
"","product_area",order.getString("product_area"),"quantity", quantity,"type",type,"material_id", order.getString("material_id")));
"","product_area",one.getProduct_area(),"quantity", quantity,"type",type,"material_id", one.getMaterial_id()));
String taskId = IdUtil.getSnowflake(1, 1).nextId() + "";
JSONObject task = packageParam(form, taskId);
WQLObject.getWQLObject("SCH_BASE_Task").insert(task);
taskService.save(task.toJavaObject(SchBaseTask.class));
try {
pointConfirm(task);
//下发
}catch (Exception ex){
log.error("SpeEmpTask#点位确认异常:{}",ex.getMessage());
task.put("task_status", TaskStatusEnum.SURE_START_ERROR.getCode());
task.put("remark",ex.getMessage());
WQLObject.getWQLObject("sch_base_task").update(task);

View File

@@ -6,6 +6,7 @@ import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.enums.AcsTaskEnum;
import org.nl.common.enums.InterfaceLogType;
@@ -19,11 +20,17 @@ import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.ext.acs.service.impl.AgvInstService;
import org.nl.wms.product_manage.sch.manage.AbstractAcsTask;
import org.nl.wms.product_manage.sch.manage.TaskStatusEnum;
import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService;
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder;
import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
@@ -32,11 +39,15 @@ import java.util.Map;
@Slf4j
@Service
public class SpeFullTask extends AbstractAcsTask {
@Autowired
private IPdmProduceWorkorderService workorderService;
@Autowired
private ISchBaseTaskService taskService;
@Autowired
AgvInstService agvInstService;
private final Map<String,SpeStatusHandler > SpeHandles= new HashMap<>();
private static String OPT_NAME = "ACS回调# ";
private static String OPT_NAME = "ACS回调# ";
public SpeFullTask() {
@@ -63,25 +74,29 @@ public class SpeFullTask extends AbstractAcsTask {
@Override
@Transactional
public String createTask(JSONObject param) {
//{"quantity":5,"workorder_code":230523019,"device_code":"A1_TW_15_6_M","type":"2"}
String point_code = param.getString("device_code");
String quantity = param.getString("quantity");
String type = param.getString("type");
JSONObject order = WQLObject.getWQLObject("PDM_produce_workOrder").query("workorder_code = '" + param.getString("workorder_code") + "' and is_delete = 0 and workorder_status != "+StatusEnum.TASK_FINISH.getCode()).uniqueResult(0);
PdmProduceWorkorder order = workorderService.getOne(new QueryWrapper<PdmProduceWorkorder>()
.eq("workorder_code", param.getString("workorder_code"))
.eq("is_delete", false)
.lt("workorder_status", StatusEnum.TASK_FINISH.getCode()));
Assert.notNull(order, String.format("下发工单%s不存在未完成工单", param.getString("workorder_code")));
JSONArray chectIndDatabase = WQLObject.getWQLObject("SCH_BASE_Task").query((AcsTaskEnum.REQUEST_CALLTYPE_FULL.getCode().equals(type) ? "point_code1" : "point_code2") + "= '" + point_code + "' and task_status < " + StatusEnum.TASK_FINISH.getCode()).getResultJSONArray(0);
if (ObjectUtil.isNotEmpty(chectIndDatabase)){
Assert.notNull(order, String.format("设备%s存在未完成任务", param.getString("point_code")));
List<SchBaseTask> list = taskService.list(new QueryWrapper<SchBaseTask>()
.eq("point_code1", point_code).lt("task_status", StatusEnum.TASK_FINISH.getCode())
);
if (!CollectionUtils.isEmpty(list)){
throw new BadRequestException(String.format("设备%s存在未完成任务", param.getString("device_code")));
}
JSONObject empPoint = WQL.getWO("sch_point").addParamMap(MapOf.of("flag", "2", "point_code", point_code, "point_type", StatusEnum.POINT_LOCATION_EMP.getCode())).process().uniqueResult(0);
JSONObject form = new JSONObject(MapOf.of("start_point_code",point_code,
"next_point_code","","return_point_code", empPoint.getString("point_code"),"vehicle_code",
"","product_area",order.getString("product_area"),"quantity", quantity,"type",type,"material_id", order.getString("material_id")));
"","product_area",order.getProduct_area(),"quantity", quantity,"type",type,"material_id", order.getProduct_area()));
String taskId = IdUtil.getSnowflake(1, 1).nextId() + "";
JSONObject task = packageParam(form, taskId);
WQLObject.getWQLObject("SCH_BASE_Task").insert(task);
taskService.save(task.toJavaObject(SchBaseTask.class));
try {
pointConfirm(task);
//下发

View File

@@ -11,7 +11,7 @@
WHERE
device.is_delete = '0'
<if test="workprocedure_id != null and workprocedure_id != ''">
device.workprocedure_id = #{workprocedure_id}
and device.workprocedure_id = #{workprocedure_id}
</if>
and device.device_code not in (
select o.device_code as device_code

View File

@@ -14,6 +14,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import io.jsonwebtoken.lang.Assert;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.nl.common.TableDataInfo;
@@ -63,6 +64,7 @@ import java.util.stream.Collectors;
* @since 2023-04-26
*/
@Service
@Slf4j
public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorkorderMapper, PdmProduceWorkorder> implements IPdmProduceWorkorderService {
@Autowired
private IMdPbClassstandardService classstandardService;
@@ -179,9 +181,9 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
String workorder_id = param.getJSONObject("row").getString("workorder_id");
this.update(new UpdateWrapper<PdmProduceWorkorder>()
.set("workorder_status", WorkerOrderEnum.FORCE_COMPLETE.getCode())
.set("update_id", SecurityUtils.getCurrentUserId())
.set("update_name", SecurityUtils.getCurrentNickName())
.set("update_time", new Date())
.set("confirm_id", SecurityUtils.getCurrentUserId())
.set("confirm_name", SecurityUtils.getCurrentNickName())
.set("confirm_time", new Date())
.in("workorder_id", workorder_id));
JSONArray array = new JSONArray();
JSONObject map = new JSONObject();
@@ -190,7 +192,7 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
array.add(map);
Map<String, Object> result = wmsToAcsService.orderStatusUpdate(array);
if (!HttpStatus.OK.equals(result.get("status"))) {
throw new BadRequestException((String) result.get("message"));
log.error((String) result.get("message"));
}
this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, workorder_id);
}
@@ -525,8 +527,8 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
if (((int) resp.get("status")) == (HttpStatus.BAD_REQUEST.value())) {
throw new BadRequestException(String.valueOf(resp.get("message")));
}
workOrder.setReal_qty(null);
this.update(workOrder, new QueryWrapper<PdmProduceWorkorder>().eq("workorder_id", param.getString("workorder_id")));
this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, result.getWorkorder_id());
return RestBusinessTemplate.execute(() -> resp);
}

View File

@@ -9,7 +9,7 @@
FROM
sch_cacheline_vehilematerial v
LEFT JOIN sch_cacheline_position p ON p.vehicle_code = v.vehicle_code
WHERE p.vehicle_code <> '' and
WHERE p.vehicle_code <![CDATA[<>]]> '' and
v.vehicle_status = #{vehicle_status}
<if test="material_id != null and material_id != ''">
v.material_id = #{material_id}

View File

@@ -91,7 +91,7 @@
</select>
<select id="getDeviceWorkprodure" resultType="java.util.Map">
select
r.workprocedure_code,r.workprocedure_id from pdm_bi_device dev
r.workprocedure_code,r.workprocedure_id,p.device_code from pdm_bi_device dev
LEFT join sch_base_point p on p.device_code = dev.device_code
LEFT JOIN pdm_bi_workprocedure r on dev.workprocedure_id = r.workprocedure_id
where p.point_code = #{pointCode};

View File

@@ -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
@@ -35,8 +39,8 @@ public class FlowConverter implements BaseConverter {
break;
}
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++;
}
}

View File

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

View File

@@ -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,"id"),xtr.getAttributeValue(null,"value"));
i++;
}
}
element.setValue(element.getItem());
}
return element;
}
}

View File

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

View File

@@ -1,22 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<definitions>
<process id="JGXJ" name="机关下料">
<start id="start" name="Starter" targetRef="A1_JGXJ"></start>
<flow id="A1_JGXJ" name="机关下料工序" has="1" sourceRef="start" targetRef="A1_TWYTJ">
<param id="cacheLine" value="A1_HCX_01"/>
<process id="JGXL" name="机关下料">
<start id="start" name="Starter" targetRef="A1_JGXL"></start>
<flow id="A1_JGXL" name="机关下料工序" has="1" sourceRef="start" targetRef="A1_TWYTJ">
<param id="cacheLine" has="2">
<item key="A1_JGXL_15" value="A1_HCX_01"></item>
<item key="A1_JGXL_22" value="A1_HCX_02"></item>
</param>
</flow>
<flow id="A1_TWYTJ" name="推弯工序" has="1" sourceRef="A1_JGXJ" targetRef="A1_SKQX">
<param id="cacheLine" value="A1_HCX_01"/>
<flow id="A1_TWYTJ" name="推弯一体工序" sourceRef="A1_JGXJ" 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>
<process id="WXXL" name="直管无屑下料">
<start id="start" name="Starter" targetRef="A1_WXXL"></start>
<flow id="A1_WXXL" name="无屑下料工序" has="3" sourceRef="starter" targetRef="A1_STLS">
<param id="param1" value="param1"/>
<param id="param2" value="param2"/>
<param id="param3" value="param3"/>
<flow id="A1_WXXL" name="无屑下料工序" has="1" sourceRef="starter" targetRef="A1_STLS">
<param id="cacheLine" value="A1_HCX_03"/>
</flow>
<flow id="A1_STLS" name="三通拉伸工序" sourceRef="A1_WXXL" targetRef="A1_TK"></flow>
<flow id="A1_TK" name="镗孔" sourceRef="A1_TK" targetRef="end"></flow>

View File

@@ -2,7 +2,7 @@ import request from '@/utils/request'
export function add(data) {
return request({
url: 'api/produceWorkorder',
url: 'api/produceWorkorder/create',
method: 'post',
data
})

View File

@@ -1,14 +1,20 @@
<template>
<div class="app-container">
<!--表单组件-->
<el-dialog append-to-body :close-on-click-modal="false" :before-close="crud.cancelCU" :visible="crud.status.cu > 0"
:title="crud.status.title" width="500px">
<el-dialog
append-to-body
:close-on-click-modal="false"
:before-close="crud.cancelCU"
:visible="crud.status.cu > 0"
:title="crud.status.title"
width="500px"
>
<el-form ref="form" :model="form" :rules="rules" size="mini" label-width="80px">
<el-form-item label="物料系列" prop="code">
<el-input v-model="form.material_spec" style="width: 370px;"/>
<el-form-item label="物料系列/生产区域" prop="code">
<el-input v-model="form.rule_code" style="width: 370px;" />
</el-form-item>
<el-form-item label="工序调度编号">
<el-input v-model="form.process_id" style="width: 370px;"/>
<el-input v-model="form.process_id" style="width: 370px;" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
@@ -22,11 +28,18 @@
<div class="head-container">
<div v-if="crud.props.searchToggle">
<!-- 搜索 -->
<el-input v-model="query.blurry" clearable size="mini" placeholder="输入名称或者描述搜索" style="width: 200px;"
class="filter-item" @keyup.enter.native="crud.toQuery"/>
<rrOperation/>
<el-input
v-model="query.blurry"
clearable
size="mini"
placeholder="输入名称或者描述搜索"
style="width: 200px;"
class="filter-item"
@keyup.enter.native="crud.toQuery"
/>
<rrOperation />
</div>
<crudOperation :permission="permission"/>
<crudOperation :permission="permission" />
</div>
<!--表格渲染-->
<el-table
@@ -36,13 +49,19 @@
highlight-current-row
style="width: 100%;"
@selection-change="crud.selectionChangeHandler"
@current-change="handleCurrentChange">
<el-table-column type="selection" width="55"/>
<el-table-column show-overflow-tooltip prop="material_spec" label="物料系列"/>
<el-table-column show-overflow-tooltip prop="process_id" label="工序调度编号"/>
<el-table-column show-overflow-tooltip prop="process_name" label="工序调度名称"/>
<el-table-column v-permission="['admin','dict:edit','dict:del']" label="操作" width="130px" align="center"
fixed="right">
@current-change="handleCurrentChange"
>
<el-table-column type="selection" width="55" />
<el-table-column show-overflow-tooltip prop="rule_code" label="物料系列" />
<el-table-column show-overflow-tooltip prop="process_id" label="工序调度编号" />
<el-table-column show-overflow-tooltip prop="process_name" label="工序调度名称" />
<el-table-column
v-permission="['admin','dict:edit','dict:del']"
label="操作"
width="130px"
align="center"
fixed="right"
>
<template slot-scope="scope">
<udOperation
:data="scope.row"
@@ -52,39 +71,39 @@
</el-table-column>
</el-table>
<!--分页组件-->
<pagination/>
<pagination />
</el-card>
</div>
</template>
<script>
import crudRoute from '@/views/wms/scheduler_manage/scheduler/schedulerRoute.js'
import CRUD, {presenter, header, form} from '@crud/crud'
import CRUD, { presenter, header, form } from '@crud/crud'
import crudOperation from '@crud/CRUD.operation'
import pagination from '@crud/Pagination'
import rrOperation from '@crud/RR.operation'
import udOperation from '@crud/UD.operation'
const defaultForm = {material_spec: null, process_id: null, process_name: null}
const defaultForm = { rule_code: null, process_id: null, process_name: null }
export default {
name: 'SchedulerRoute',
components: {crudOperation, pagination, rrOperation, udOperation},
components: { crudOperation, pagination, rrOperation, udOperation },
cruds() {
return [
CRUD({title: '物料对应工序调度', url: '/api/shceduler/route', idField: 'material_spec', crudMethod: {...crudRoute}})
CRUD({ title: '物料对应工序调度', url: '/api/shceduler/route', idField: 'rule_code', crudMethod: { ...crudRoute }})
]
},
mixins: [presenter(), header(), form(defaultForm)],
data() {
return {
queryTypeOptions: [
{key: 'name', display_name: '字典名称'},
{key: 'description', display_name: '描述'}
{ key: 'name', display_name: '字典名称' },
{ key: 'description', display_name: '描述' }
],
rules: {
material_spec: [
{required: true, message: '请输入编码', trigger: 'blur'}
rule_code: [
{ required: true, message: '请输入编码', trigger: 'blur' }
]
},
permission: {