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反馈设备状态") @ApiOperation("向wms反馈设备状态")
@SaIgnore @SaIgnore
public ResponseEntity<Object> feedDeviceStatusType(@RequestBody JSONObject param) { 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.TaskService;
import org.nl.wms.product_manage.sch.service.dto.TaskDto; 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.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.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
@@ -47,6 +49,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{
private TaskService taskService; private TaskService taskService;
@Autowired @Autowired
private CacheLineHandService cacheLineHandService; private CacheLineHandService cacheLineHandService;
@Autowired
private IPdmProduceWorkorderService workorderService;
@@ -203,17 +207,12 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{
public Map<String, Object> orderStatus(JSONObject orderJson) { public Map<String, Object> orderStatus(JSONObject orderJson) {
JSONObject result = new JSONObject(); JSONObject result = new JSONObject();
try { try {
JSONObject map = new JSONObject(); PdmProduceWorkorder workorder = new PdmProduceWorkorder();
map.put("workorder_id", orderJson.getString("workorder_id")); workorder.setWorkorder_id(orderJson.getString("workorder_id"));
map.put("workorder_status", orderJson.getString("status")); workorder.setWorkorder_status(orderJson.getString("status"));
map.put("update_id", "1"); workorder.setDq_real_qty(orderJson.getBigDecimal("real_qty"));
map.put("real_qty", orderJson.getString("real_qty")); workorder.setRealproduceend_date(DateUtil.now());
map.put("device_code", ""); workorderService.updateById(workorder);
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")));
} catch (Exception e){ } catch (Exception e){
result.put("status", 400); result.put("status", 400);
result.put("message", e.getMessage()); result.put("message", e.getMessage());

View File

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

View File

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

View File

@@ -6,6 +6,7 @@ import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.common.enums.AcsTaskEnum; import org.nl.common.enums.AcsTaskEnum;
import org.nl.common.enums.InterfaceLogType; 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.ext.acs.service.impl.AgvInstService;
import org.nl.wms.product_manage.sch.manage.AbstractAcsTask; import org.nl.wms.product_manage.sch.manage.AbstractAcsTask;
import org.nl.wms.product_manage.sch.manage.TaskStatusEnum; 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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
@@ -31,7 +38,10 @@ import java.util.Map;
@Slf4j @Slf4j
@Service @Service
public class SpeEmpTask extends AbstractAcsTask { public class SpeEmpTask extends AbstractAcsTask {
@Autowired
private IPdmProduceWorkorderService workorderService;
@Autowired
private ISchBaseTaskService taskService;
@Autowired @Autowired
AgvInstService agvInstService; AgvInstService agvInstService;
private final Map<String,SpeStatusHandler > SpeHandles= new HashMap<>(); private final Map<String,SpeStatusHandler > SpeHandles= new HashMap<>();
@@ -62,28 +72,33 @@ public class SpeEmpTask extends AbstractAcsTask {
@Override @Override
@Transactional @Transactional
public String createTask(JSONObject param) { 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 point_code = param.getString("device_code");
String quantity = param.getString("quantity"); String quantity = param.getString("quantity");
String type = param.getString("type"); 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 one = workorderService.getOne(new QueryWrapper<PdmProduceWorkorder>()
Assert.notNull(order, String.format("下发工单%s不存在未完成工单", param.getString("workorder_code"))); .eq("workorder_code", 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); .lt("workorder_status", StatusEnum.TASK_FINISH.getCode()));
if (ObjectUtil.isNotEmpty(chectIndDatabase)){ Assert.notNull(one, String.format("下发工单%s不存在未完成工单", param.getString("workorder_code")));
Assert.notNull(order, String.format("设备%s存在未完成任务", param.getString("point_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","", JSONObject form = new JSONObject(MapOf.of("start_point_code","",
"next_point_code",point_code,"return_point_code", "","vehicle_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() + ""; String taskId = IdUtil.getSnowflake(1, 1).nextId() + "";
JSONObject task = packageParam(form, taskId); JSONObject task = packageParam(form, taskId);
WQLObject.getWQLObject("SCH_BASE_Task").insert(task); taskService.save(task.toJavaObject(SchBaseTask.class));
try { try {
pointConfirm(task); pointConfirm(task);
//下发 //下发
}catch (Exception ex){ }catch (Exception ex){
log.error("SpeEmpTask#点位确认异常:{}",ex.getMessage());
task.put("task_status", TaskStatusEnum.SURE_START_ERROR.getCode()); task.put("task_status", TaskStatusEnum.SURE_START_ERROR.getCode());
task.put("remark",ex.getMessage()); task.put("remark",ex.getMessage());
WQLObject.getWQLObject("sch_base_task").update(task); 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 cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.common.enums.AcsTaskEnum; import org.nl.common.enums.AcsTaskEnum;
import org.nl.common.enums.InterfaceLogType; 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.ext.acs.service.impl.AgvInstService;
import org.nl.wms.product_manage.sch.manage.AbstractAcsTask; import org.nl.wms.product_manage.sch.manage.AbstractAcsTask;
import org.nl.wms.product_manage.sch.manage.TaskStatusEnum; 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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
@@ -32,9 +39,13 @@ import java.util.Map;
@Slf4j @Slf4j
@Service @Service
public class SpeFullTask extends AbstractAcsTask { public class SpeFullTask extends AbstractAcsTask {
@Autowired
private IPdmProduceWorkorderService workorderService;
@Autowired
private ISchBaseTaskService taskService;
@Autowired @Autowired
AgvInstService agvInstService; AgvInstService agvInstService;
private final Map<String,SpeStatusHandler > SpeHandles= new HashMap<>(); private final Map<String,SpeStatusHandler > SpeHandles= new HashMap<>();
private static String OPT_NAME = "ACS回调# "; private static String OPT_NAME = "ACS回调# ";
@@ -63,25 +74,29 @@ public class SpeFullTask extends AbstractAcsTask {
@Override @Override
@Transactional @Transactional
public String createTask(JSONObject param) { 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 point_code = param.getString("device_code");
String quantity = param.getString("quantity"); String quantity = param.getString("quantity");
String type = param.getString("type"); 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"))); 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); List<SchBaseTask> list = taskService.list(new QueryWrapper<SchBaseTask>()
if (ObjectUtil.isNotEmpty(chectIndDatabase)){ .eq("point_code1", point_code).lt("task_status", StatusEnum.TASK_FINISH.getCode())
Assert.notNull(order, String.format("设备%s存在未完成任务", param.getString("point_code"))); );
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 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, JSONObject form = new JSONObject(MapOf.of("start_point_code",point_code,
"next_point_code","","return_point_code", empPoint.getString("point_code"),"vehicle_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() + ""; String taskId = IdUtil.getSnowflake(1, 1).nextId() + "";
JSONObject task = packageParam(form, taskId); JSONObject task = packageParam(form, taskId);
WQLObject.getWQLObject("SCH_BASE_Task").insert(task); taskService.save(task.toJavaObject(SchBaseTask.class));
try { try {
pointConfirm(task); pointConfirm(task);
//下发 //下发

View File

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

View File

@@ -9,7 +9,7 @@
FROM FROM
sch_cacheline_vehilematerial v sch_cacheline_vehilematerial v
LEFT JOIN sch_cacheline_position p ON p.vehicle_code = v.vehicle_code 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} v.vehicle_status = #{vehicle_status}
<if test="material_id != null and material_id != ''"> <if test="material_id != null and material_id != ''">
v.material_id = #{material_id} v.material_id = #{material_id}

View File

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

View File

@@ -4,6 +4,7 @@ import lombok.SneakyThrows;
import org.apache.commons.lang3.StringUtils; 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.BaseConverter;
import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.BaseElement; import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.BaseElement;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.xml.stream.XMLStreamConstants; import javax.xml.stream.XMLStreamConstants;
@@ -19,6 +20,9 @@ import java.util.Map;
*/ */
@Service("flow") @Service("flow")
public class FlowConverter implements BaseConverter { public class FlowConverter implements BaseConverter {
@Autowired
ParamConverter paramConverter;
String[] labels = new String[]{"id","name","sourceRef","targetRef"}; String[] labels = new String[]{"id","name","sourceRef","targetRef"};
@Override @Override
@SneakyThrows @SneakyThrows
@@ -35,8 +39,8 @@ public class FlowConverter implements BaseConverter {
break; break;
} }
if (XMLStreamConstants.START_ELEMENT == xtr.next()){ if (XMLStreamConstants.START_ELEMENT == xtr.next()){
System.out.println(xtr.getLocalName()); ParamElement process = (ParamElement)paramConverter.process(xtr);
element.getParams().put(xtr.getAttributeValue(null,"id"),xtr.getAttributeValue(null,"value")); element.getParams().put(process.getId(),process.getValue());
i++; i++;
} }
} }

View File

@@ -17,7 +17,7 @@ public class FlowElement extends BaseElement {
private FlowElement targetRef; private FlowElement targetRef;
private String sourceRefId; private String sourceRefId;
private String targetRefId; 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; this.targetRefId = targetRefId;
} }
public Map<String, String> getParams() { public Map<String, Object> getParams() {
return params; return params;
} }
public void setParams(Map<String, String> params) { public void setParams(Map<String, Object> params) {
this.params = 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"?> <?xml version="1.0" encoding="UTF-8"?>
<definitions> <definitions>
<process id="JGXJ" name="机关下料"> <process id="JGXL" name="机关下料">
<start id="start" name="Starter" targetRef="A1_JGXJ"></start> <start id="start" name="Starter" targetRef="A1_JGXL"></start>
<flow id="A1_JGXJ" name="机关下料工序" has="1" sourceRef="start" targetRef="A1_TWYTJ"> <flow id="A1_JGXL" name="机关下料工序" has="1" sourceRef="start" targetRef="A1_TWYTJ">
<param id="cacheLine" value="A1_HCX_01"/> <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>
<flow id="A1_TWYTJ" name="推弯工序" has="1" sourceRef="A1_JGXJ" targetRef="A1_SKQX"> <flow id="A1_TWYTJ" name="推弯一体工序" sourceRef="A1_JGXJ" targetRef="A1_SKQX">
<param id="cacheLine" value="A1_HCX_01"/>
</flow> </flow>
<flow id="A1_SKQX" name="深坑清洗" sourceRef="A1_TWYTJ" targetRef="end"></flow> <flow id="A1_SKQX" name="深坑清洗" sourceRef="A1_TWYTJ" targetRef="end"></flow>
<end id="end" name="Junior Reject End" sourceRef="A1_SKQX"></end> <end id="end" name="Junior Reject End" sourceRef="A1_SKQX"></end>
</process> </process>
<process id="WXXL" name="直管无屑下料"> <process id="WXXL" name="直管无屑下料">
<start id="start" name="Starter" targetRef="A1_WXXL"></start> <start id="start" name="Starter" targetRef="A1_WXXL"></start>
<flow id="A1_WXXL" name="无屑下料工序" has="3" sourceRef="starter" targetRef="A1_STLS"> <flow id="A1_WXXL" name="无屑下料工序" has="1" sourceRef="starter" targetRef="A1_STLS">
<param id="param1" value="param1"/> <param id="cacheLine" value="A1_HCX_03"/>
<param id="param2" value="param2"/>
<param id="param3" value="param3"/>
</flow> </flow>
<flow id="A1_STLS" name="三通拉伸工序" sourceRef="A1_WXXL" targetRef="A1_TK"></flow> <flow id="A1_STLS" name="三通拉伸工序" sourceRef="A1_WXXL" targetRef="A1_TK"></flow>
<flow id="A1_TK" name="镗孔" sourceRef="A1_TK" targetRef="end"></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) { export function add(data) {
return request({ return request({
url: 'api/produceWorkorder', url: 'api/produceWorkorder/create',
method: 'post', method: 'post',
data data
}) })

View File

@@ -1,11 +1,17 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<!--表单组件--> <!--表单组件-->
<el-dialog append-to-body :close-on-click-modal="false" :before-close="crud.cancelCU" :visible="crud.status.cu > 0" <el-dialog
:title="crud.status.title" width="500px"> 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 ref="form" :model="form" :rules="rules" size="mini" label-width="80px">
<el-form-item label="物料系列" prop="code"> <el-form-item label="物料系列/生产区域" prop="code">
<el-input v-model="form.material_spec" style="width: 370px;"/> <el-input v-model="form.rule_code" style="width: 370px;" />
</el-form-item> </el-form-item>
<el-form-item label="工序调度编号"> <el-form-item label="工序调度编号">
<el-input v-model="form.process_id" style="width: 370px;" /> <el-input v-model="form.process_id" style="width: 370px;" />
@@ -22,8 +28,15 @@
<div class="head-container"> <div class="head-container">
<div v-if="crud.props.searchToggle"> <div v-if="crud.props.searchToggle">
<!-- 搜索 --> <!-- 搜索 -->
<el-input v-model="query.blurry" clearable size="mini" placeholder="输入名称或者描述搜索" style="width: 200px;" <el-input
class="filter-item" @keyup.enter.native="crud.toQuery"/> v-model="query.blurry"
clearable
size="mini"
placeholder="输入名称或者描述搜索"
style="width: 200px;"
class="filter-item"
@keyup.enter.native="crud.toQuery"
/>
<rrOperation /> <rrOperation />
</div> </div>
<crudOperation :permission="permission" /> <crudOperation :permission="permission" />
@@ -36,13 +49,19 @@
highlight-current-row highlight-current-row
style="width: 100%;" style="width: 100%;"
@selection-change="crud.selectionChangeHandler" @selection-change="crud.selectionChangeHandler"
@current-change="handleCurrentChange"> @current-change="handleCurrentChange"
>
<el-table-column type="selection" width="55" /> <el-table-column type="selection" width="55" />
<el-table-column show-overflow-tooltip prop="material_spec" label="物料系列"/> <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_id" label="工序调度编号" />
<el-table-column show-overflow-tooltip prop="process_name" 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" <el-table-column
fixed="right"> v-permission="['admin','dict:edit','dict:del']"
label="操作"
width="130px"
align="center"
fixed="right"
>
<template slot-scope="scope"> <template slot-scope="scope">
<udOperation <udOperation
:data="scope.row" :data="scope.row"
@@ -65,14 +84,14 @@ import pagination from '@crud/Pagination'
import rrOperation from '@crud/RR.operation' import rrOperation from '@crud/RR.operation'
import udOperation from '@crud/UD.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 { export default {
name: 'SchedulerRoute', name: 'SchedulerRoute',
components: { crudOperation, pagination, rrOperation, udOperation }, components: { crudOperation, pagination, rrOperation, udOperation },
cruds() { cruds() {
return [ 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)], mixins: [presenter(), header(), form(defaultForm)],
@@ -83,7 +102,7 @@ export default {
{ key: 'description', display_name: '描述' } { key: 'description', display_name: '描述' }
], ],
rules: { rules: {
material_spec: [ rule_code: [
{ required: true, message: '请输入编码', trigger: 'blur' } { required: true, message: '请输入编码', trigger: 'blur' }
] ]
}, },