fix:工单管理

This commit is contained in:
zhangzhiqiang
2023-03-24 17:16:22 +08:00
parent 7faf39babb
commit 4a94968944
13 changed files with 44 additions and 32 deletions

View File

@@ -27,11 +27,10 @@ public enum AcsTaskEnum {
TASK_CACHELINE_OUT("3","缓存线出库任务"), TASK_CACHELINE_OUT("3","缓存线出库任务"),
//回调状态 //回调状态
STATUS_START("1","开始取货"), STATUS_START("1","执行中"),
STATUS_RUNDING("2","放货中"), STATUS_FINISH("2","完成"),
STATUS_FINISH("3","完成"), STATUS_CANNEL("3","取消"),
STATUS_CANNEL("4","取消"), //专机请求
REQUEST_CALLTYPE_FULL("1","满料请求"), REQUEST_CALLTYPE_FULL("1","满料请求"),
REQUEST_CALLTYPE_EMP("2","缺料请求"), REQUEST_CALLTYPE_EMP("2","缺料请求"),
; ;

View File

@@ -44,11 +44,11 @@ public class AcsToWmsController {
return new ResponseEntity<>(acsToWmsService.receiveTaskStatusAcs(string), HttpStatus.OK); return new ResponseEntity<>(acsToWmsService.receiveTaskStatusAcs(string), HttpStatus.OK);
} }
@PostMapping("/orderFinish") @PostMapping("/orderStatus")
@Log("ACS给WMS下发工单完成状态") @Log("ACS给WMS下发工单完成状态")
@ApiOperation("ACS给WMS下发工单完成状态") @ApiOperation("ACS给WMS下发工单完成状态")
public ResponseEntity<Object> orderFinish(@RequestBody String string) { public ResponseEntity<Object> orderFinish(@RequestBody JSONObject param) {
return new ResponseEntity<>(acsToWmsService.orderFinish(string), HttpStatus.OK); return new ResponseEntity<>(acsToWmsService.orderStatus(param), HttpStatus.OK);
} }
@PostMapping("/feedDeviceStatusType") @PostMapping("/feedDeviceStatusType")

View File

@@ -10,6 +10,7 @@ import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.nl.common.anno.Log; import org.nl.common.anno.Log;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.common.enums.WorkerOrderEnum;
import org.nl.wms.ext.acs.service.WmsToAcsService; import org.nl.wms.ext.acs.service.WmsToAcsService;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
@@ -64,6 +65,11 @@ public class WmsToAcsController {
return new ResponseEntity<>(wmsToAcsService.order(arr), HttpStatus.OK); return new ResponseEntity<>(wmsToAcsService.order(arr), HttpStatus.OK);
} }
/**
* @see org.nl.common.enums.WorkerOrderEnum
* @param whereJson
* @return
*/
@PostMapping("/orderStatusUpdate") @PostMapping("/orderStatusUpdate")
@Log("WMS向acs发送强制完成") @Log("WMS向acs发送强制完成")
@ApiOperation("WMS强制完成向acs发送强制完成") @ApiOperation("WMS强制完成向acs发送强制完成")

View File

@@ -40,7 +40,7 @@ public interface AcsToWmsService {
* @param string * @param string
* @return * @return
*/ */
Map<String, Object> orderFinish(String string); Map<String, Object> orderStatus(JSONObject param);
/** /**
* ACS给WMS反馈设备状态状态 * ACS给WMS反馈设备状态状态

View File

@@ -70,15 +70,15 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
JSONArray errArr = new JSONArray(); JSONArray errArr = new JSONArray();
for (int i = 0; i < array.size(); i++) { for (int i = 0; i < array.size(); i++) {
JSONObject row = array.getJSONObject(i); JSONObject row = array.getJSONObject(i);
String task_uuid = row.getString("task_uuid"); String task_id = row.getString("task_id");
TaskDto taskDto = taskService.findById(task_uuid); TaskDto taskDto = taskService.findById(task_id);
String processing_class = taskDto.getHandle_class(); String processing_class = taskDto.getHandle_class();
//1:执行中,2:完成 ,3:acs取消 //1:执行中,2:完成 ,3:acs取消
String acs_task_status = row.getString("task_status"); String acs_task_status = row.getString("task_status");
String message = ""; String message = "";
String status = ""; String status = "";
if ("1".equals(acs_task_status)) { if ("1".equals(acs_task_status)) {
status = AcsTaskEnum.STATUS_RUNDING.getCode(); status = AcsTaskEnum.STATUS_START.getCode();
} }
if ("2".equals(acs_task_status)) { if ("2".equals(acs_task_status)) {
status = AcsTaskEnum.STATUS_FINISH.getCode(); status = AcsTaskEnum.STATUS_FINISH.getCode();
@@ -101,7 +101,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
log.info("任务状态更新失败:{}", message); log.info("任务状态更新失败:{}", message);
JSONObject json = new JSONObject(); JSONObject json = new JSONObject();
json.put("task_uuid", task_uuid); json.put("task_id", task_id);
json.put("message", message); json.put("message", message);
errArr.add(json); errArr.add(json);
@@ -111,7 +111,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
log.info("任务状态更新失败:{}", message); log.info("任务状态更新失败:{}", message);
JSONObject json = new JSONObject(); JSONObject json = new JSONObject();
json.put("task_uuid", task_uuid); json.put("task_id", task_id);
json.put("message", message); json.put("message", message);
errArr.add(json); errArr.add(json);
@@ -132,14 +132,13 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
} }
@Override @Override
public Map<String, Object> orderFinish(String string) { public Map<String, Object> orderStatus(JSONObject orderJson) {
JSONObject result = new JSONObject(); JSONObject result = new JSONObject();
try { try {
JSONObject orderJson = JSONObject.parseObject(string); String ext_order_id = orderJson.getString("workorder_id");
String ext_order_id = orderJson.getString("ext_order_id");
// JSONArray array = JSONArray.parseArray(string); // JSONArray array = JSONArray.parseArray(string);
//TODO: 表未维护
WQLObject wo = WQLObject.getWQLObject("MPS_BD_ProduceShiftOrder"); WQLObject wo = WQLObject.getWQLObject("PDM_produce_workOrder");
JSONObject map = new JSONObject(); JSONObject map = new JSONObject();
map.put("produceorder_id", ext_order_id); map.put("produceorder_id", ext_order_id);
map.put("order_status", "04"); map.put("order_status", "04");

View File

@@ -44,7 +44,7 @@ public class AgvInstService {
WQLObject basePoint = WQLObject.getWQLObject("sch_base_point"); WQLObject basePoint = WQLObject.getWQLObject("sch_base_point");
WQLObject cacheLineSearch = WQLObject.getWQLObject("SCH_cacheLine_region_relation"); WQLObject cacheLineSearch = WQLObject.getWQLObject("SCH_cacheLine_region_relation");
try { try {
String workorder = param.getString("workorder_code"); String workorder = param.getString("workorder_code");//
String point_code = param.getString("point_code"); String point_code = param.getString("point_code");
String quantity = param.getString("quantity"); String quantity = param.getString("quantity");
//1.PDM_produce_workOrder //1.PDM_produce_workOrder

View File

@@ -22,12 +22,15 @@ public class WmsToAcsServiceImpl implements WmsToAcsService {
for (Object o : arr) { for (Object o : arr) {
JSONObject task = (JSONObject) o; JSONObject task = (JSONObject) o;
JSONObject param = new JSONObject(MapOf.of("task_id", task.getString("task_id") JSONObject param = new JSONObject(MapOf.of("task_id", task.getString("task_id")
, "task_type", task.getString("task_type") , "acs_task_type", task.getString("acs_task_type")
, "start_point_code", task.getString("point_code1") , "start_point_code", task.getString("point_code1")
, "next_point_code", task.getString("point_code2") , "next_point_code", task.getString("point_code2")
, "return_point_code", task.getString("point_code3") , "return_point_code", task.getString("point_code3")
, "task_group_id", task.getString("task_group_id") , "task_group_id", task.getString("task_group_id")
, "priority", task.getString("priority")
, "task_group_id", task.getString("is_send")
, "vehicle_code", task.getString("vehicle_code") , "vehicle_code", task.getString("vehicle_code")
, "agv_system_type", task.getString("agv_system_type")
)); ));
form.add(param); form.add(param);
} }

View File

@@ -16,6 +16,8 @@ import lombok.extern.slf4j.Slf4j;
*/ */
@Slf4j @Slf4j
public abstract class AbstractAcsTask { public abstract class AbstractAcsTask {
private static final String OPT_NAME = "acs回调#"; private static final String OPT_NAME = "acs回调#";
public abstract void updateTaskStatus(JSONObject taskObj,String status); public abstract void updateTaskStatus(JSONObject taskObj,String status);

View File

@@ -14,7 +14,7 @@ import org.nl.modules.system.util.CodeUtil;
import org.nl.common.utils.SecurityUtils; import org.nl.common.utils.SecurityUtils;
import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.manage.AbstractAcsTask;
import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service;
import java.util.HashMap; import java.util.HashMap;
@@ -24,6 +24,7 @@ import java.util.Map;
* 专机任务 * 专机任务
*/ */
@Slf4j @Slf4j
@Service
public class SpeMachineryTask extends AbstractAcsTask { public class SpeMachineryTask extends AbstractAcsTask {
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回调# ";
@@ -116,8 +117,6 @@ public class SpeMachineryTask extends AbstractAcsTask {
case STATUS_START: case STATUS_START:
taskTable.update(MapOf.of("task_status",StatusEnum.TASK_RUNNING.getCode(),"update_name","acs","update_time", DateUtil.now()),"task_id = '"+task.getString("task_id")+"'"); taskTable.update(MapOf.of("task_status",StatusEnum.TASK_RUNNING.getCode(),"update_name","acs","update_time", DateUtil.now()),"task_id = '"+task.getString("task_id")+"'");
break; break;
case STATUS_RUNDING:
break;
case STATUS_FINISH: case STATUS_FINISH:
taskTable.update(MapOf.of("task_status",StatusEnum.TASK_FINISH.getCode(),"update_name","acs","update_time", DateUtil.now()),"task_id = '"+task.getString("task_id")+"'"); taskTable.update(MapOf.of("task_status",StatusEnum.TASK_FINISH.getCode(),"update_name","acs","update_time", DateUtil.now()),"task_id = '"+task.getString("task_id")+"'");
//到专机:更新设备上料位物料数量 //到专机:更新设备上料位物料数量
@@ -146,8 +145,6 @@ public class SpeMachineryTask extends AbstractAcsTask {
switch (status){ switch (status){
case STATUS_START: case STATUS_START:
taskTable.update(MapOf.of("task_status",StatusEnum.TASK_RUNNING.getCode(),"update_name","acs","update_time", DateUtil.now()),"task_id = '"+task.getString("task_id")+"'"); taskTable.update(MapOf.of("task_status",StatusEnum.TASK_RUNNING.getCode(),"update_name","acs","update_time", DateUtil.now()),"task_id = '"+task.getString("task_id")+"'");
break;
case STATUS_RUNDING:
cacheVehTable.delete("vehicle_code = '" + outboxtxm + "'"); cacheVehTable.delete("vehicle_code = '" + outboxtxm + "'");
break; break;
case STATUS_FINISH: case STATUS_FINISH:

View File

@@ -38,13 +38,14 @@ public class TaskScheduleService {
private ReentrantLock lock = new ReentrantLock(); private ReentrantLock lock = new ReentrantLock();
private final WmsToAcsService wmsToAcsService; private final WmsToAcsService wmsToAcsService;
@Scheduled(cron = "0/10 * * * * ?") @Scheduled(cron = "0/30 * * * * ?")
public void taskPublish(){ public void taskPublish(){
boolean islock = lock.tryLock(); boolean islock = lock.tryLock();
try { try {
if (islock){ if (islock){
WQLObject taskTable = WQLObject.getWQLObject("sch_base_task"); WQLObject taskTable = WQLObject.getWQLObject("sch_base_task");
JSONArray all = taskTable.query("task_type < '" + StatusEnum.TASK_PUBLISH + "'").getResultJSONArray(0); //查询所有自动下发的任务
JSONArray all = taskTable.query("is_auto_issue = '1' and task_type < '" + StatusEnum.TASK_PUBLISH + "'").getResultJSONArray(0);
//分区域不同区域调用不同acs接口 //分区域不同区域调用不同acs接口
log.info("TaskScheduleService#taskPublish all_task:{}",all.size()); log.info("TaskScheduleService#taskPublish all_task:{}",all.size());
Map<String, List<Object>> areaCollent = all.stream().collect(Collectors.groupingBy(o -> ((JSONObject) o).getString("product_area"))); Map<String, List<Object>> areaCollent = all.stream().collect(Collectors.groupingBy(o -> ((JSONObject) o).getString("product_area")));
@@ -65,8 +66,10 @@ public class TaskScheduleService {
String taskGroupId = IdUtil.getStringId(); String taskGroupId = IdUtil.getStringId();
JSONObject task = (JSONObject) o; JSONObject task = (JSONObject) o;
String taskId = task.getString("task_id"); String taskId = task.getString("task_id");
task.put("is_send","1");
if (taskGroupMap.get(taskId) != null){ if (taskGroupMap.get(taskId) != null){
task.put("task_group_id",taskGroupMap.get(taskId)); task.put("task_group_id",taskGroupMap.get(taskId));
task.put("is_send","0");
continue; continue;
} }
String start = task.getString("point_code1"); String start = task.getString("point_code1");
@@ -96,10 +99,15 @@ public class TaskScheduleService {
String waitingTaskId = waitingTask.stream().map(a -> ((JSONObject) a).getString("task_id")).collect(Collectors.joining(",")); String waitingTaskId = waitingTask.stream().map(a -> ((JSONObject) a).getString("task_id")).collect(Collectors.joining(","));
String MergeId = Merge.stream().map(a -> ((JSONObject) a).getString("task_id")).collect(Collectors.joining(",")); String MergeId = Merge.stream().map(a -> ((JSONObject) a).getString("task_id")).collect(Collectors.joining(","));
log.info("TaskScheduleService#taskPublish notMerge:{},waitingTask:{},merge:{}",notMergeID,waitingTaskId,MergeId); log.info("TaskScheduleService#taskPublish notMerge:{},waitingTask:{},merge:{}",notMergeID,waitingTaskId,MergeId);
//下发任务:一次暂时下发十条同一个区域任务不超过10条
JSONArray form = new JSONArray();
Merge.addAll(notMerge); Merge.addAll(notMerge);
JSONArray jsonArray = new JSONArray(Merge); JSONArray jsonArray = new JSONArray(Merge);
//批量更新任务状态is_send,task_group_id
for (Object task : Merge) {
JSONObject task1 = (JSONObject) task;
task1.put("task_type",StatusEnum.TASK_PUBLISH.getCode());
taskTable.update(task1,"task_id = '"+task1.getString("task_id")+"'");
}
//缓存线任务待确认是否生成多个
wmsToAcsService.issueTaskToAcs(jsonArray); wmsToAcsService.issueTaskToAcs(jsonArray);
} }
} }

View File

@@ -752,10 +752,8 @@ export default {
var orders = [] var orders = []
console.log(rows) console.log(rows)
rows.forEach((item) => { rows.forEach((item) => {
debugger
orders.push(item.workprocedure_id) orders.push(item.workprocedure_id)
}) })
debugger
crudProduceshiftorder.submits(orders).then(res => { crudProduceshiftorder.submits(orders).then(res => {
this.crud.notify('下发成功', CRUD.NOTIFICATION_TYPE.SUCCESS) this.crud.notify('下发成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.crud.toQuery() this.crud.toQuery()