add:任务下发按钮及逻辑
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
package org.nl.wms.dispatch_manage.task.service.impl;
|
||||
|
||||
import cn.hutool.http.HttpStatus;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
@@ -11,6 +14,8 @@ import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import org.apache.poi.ss.formula.functions.T;
|
||||
import org.nl.common.TableDataInfo;
|
||||
import org.nl.common.domain.entity.PageQuery;
|
||||
import org.nl.common.domain.exception.BadRequestException;
|
||||
import org.nl.common.enums.StatusEnum;
|
||||
@@ -23,6 +28,7 @@ import org.nl.wms.dispatch_manage.task.service.dao.mapper.SchBaseTaskMapper;
|
||||
import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.nl.wms.dispatch_manage.task.service.dto.SchBaseTaskQuery;
|
||||
import org.nl.wms.external_system.acs.service.WmsToAcsService;
|
||||
import org.nl.wms.flow_manage.flow.framework.process.nodeType.excess.impl.DecisionHandler;
|
||||
import org.nl.wms.flow_manage.flow.service.execution.IActRuExecutionService;
|
||||
import org.nl.wms.flow_manage.flow.service.execution.dao.ActRuExecution;
|
||||
@@ -34,6 +40,7 @@ import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
@@ -60,6 +67,9 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
@Lazy
|
||||
private MoveStorageTask moveStorageTask;
|
||||
|
||||
@Autowired
|
||||
private WmsToAcsService wmsToAcsService;
|
||||
|
||||
@Override
|
||||
public IPage<SchBaseTask> queryAll(SchBaseTaskQuery whereJson, PageQuery page) {
|
||||
List<String> collect = ObjectUtil.isNotEmpty(whereJson.getMore_status())
|
||||
@@ -76,11 +86,9 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public List<Map> getByVehicle(String vehicle_code) {
|
||||
if (StringUtils.isEmpty(vehicle_code)){
|
||||
if (StringUtils.isEmpty(vehicle_code)) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
return this.baseMapper.getByVehicle(ListOf.of(vehicle_code.split(",")));
|
||||
@@ -122,40 +130,65 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
}
|
||||
|
||||
@Override
|
||||
public void operation(JSONObject param) {
|
||||
public void operation(JSONObject param) {
|
||||
String task_code = param.getString("task_code");
|
||||
SchBaseTask task = this.getOne(new QueryWrapper<SchBaseTask>().eq("task_code", task_code));
|
||||
if (task.getStatus().equals(StatusEnum.FORM_STATUS.code("完成"))){
|
||||
if (task.getStatus().equals(StatusEnum.FORM_STATUS.code("完成"))) {
|
||||
throw new BadRequestException("当前任务已完成");
|
||||
}
|
||||
if (param.getString("status").equals(StatusEnum.FORM_STATUS.code("完成"))){
|
||||
if (param.getString("status").equals(StatusEnum.FORM_STATUS.code("完成"))) {
|
||||
MdPbVehicleMater vehicleMater = iMdPbVehicleMaterService.getOne(new QueryWrapper<MdPbVehicleMater>()
|
||||
.eq("vehicle_code", task.getVehicle_code()));
|
||||
if (vehicleMater!=null && !StringUtils.isEmpty(vehicleMater.getProc_inst_id())){
|
||||
if (vehicleMater != null && !StringUtils.isEmpty(vehicleMater.getProc_inst_id())) {
|
||||
FlowContinueEvent continueEvent = new FlowContinueEvent(vehicleMater.getProc_inst_id(), null, null);
|
||||
BussEventMulticaster.Publish(continueEvent);
|
||||
}else {
|
||||
} else {
|
||||
String handleClass = task.getHandle_class();
|
||||
try {
|
||||
AbstractTask bean = (AbstractTask)SpringContextHolder.getBean(Class.forName(handleClass));
|
||||
AbstractTask bean = (AbstractTask) SpringContextHolder.getBean(Class.forName(handleClass));
|
||||
bean.finish(param);
|
||||
}catch (Exception ex){
|
||||
} catch (Exception ex) {
|
||||
throw new BadRequestException(ex.getMessage());
|
||||
}
|
||||
}
|
||||
}else {
|
||||
this.update(new UpdateWrapper<SchBaseTask>()
|
||||
.set("status",param.getString("status"))
|
||||
} else if (param.getString("status").equals(StatusEnum.FORM_STATUS.code("下发"))) {
|
||||
ArrayList<SchBaseTask> list = ListOf.of(task);
|
||||
if (!CollectionUtils.isEmpty(list)) {
|
||||
List<String> taskCodes = list.stream().map(SchBaseTask::getTask_code).collect(Collectors.toList());
|
||||
TableDataInfo response = wmsToAcsService.interationToExt(list, "createTask");
|
||||
if (!response.getCode().equals(String.valueOf(HttpStatus.HTTP_OK))) {
|
||||
JSONArray results = (JSONArray) JSON.toJSON(response.getData());
|
||||
if (!CollectionUtils.isEmpty(results)) {
|
||||
for (Object result : results) {
|
||||
Map resultM = (Map) result;
|
||||
taskCodes.remove(resultM.get("task_code"));
|
||||
this.update(new UpdateWrapper<SchBaseTask>()
|
||||
.eq("task_code", resultM.get("task_code"))
|
||||
.set("status", StatusEnum.FORM_STATUS.code("暂停"))
|
||||
.set("update_time", DateUtil.now()).set("remark", resultM.get("msg")));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!CollectionUtils.isEmpty(taskCodes)) {
|
||||
this.update(new UpdateWrapper<SchBaseTask>()
|
||||
.set("status", StatusEnum.FORM_STATUS.code("下发"))
|
||||
.in("task_code", taskCodes));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
this.update(new UpdateWrapper<SchBaseTask>()
|
||||
.set("status", param.getString("status"))
|
||||
.eq("task_code", task_code));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
"type":
|
||||
"rm" 入满 标记目标货位异常,重新分配货位;更新任务终点,反馈目的货位
|
||||
"rzd"入库阻挡 异常位生成移库单,标记目标货位异常,后续人工处理;更新任务终点,反馈目的货位
|
||||
"ck"空出 修改目标货位为空位,任务直接取消,不扣件关联单据已出库数量
|
||||
"czd"取货阻挡 异常位生成移库单,标记目标货位异常,后续人工处理;任务重新下发
|
||||
* "type":
|
||||
* "rm" 入满 标记目标货位异常,重新分配货位;更新任务终点,反馈目的货位
|
||||
* "rzd"入库阻挡 异常位生成移库单,标记目标货位异常,后续人工处理;更新任务终点,反馈目的货位
|
||||
* "ck"空出 修改目标货位为空位,任务直接取消,不扣件关联单据已出库数量
|
||||
* "czd"取货阻挡 异常位生成移库单,标记目标货位异常,后续人工处理;任务重新下发
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
@@ -165,33 +198,33 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
StIvtStructattr stIvtStructattr = iStIvtStructattrService.getOne(new QueryWrapper<StIvtStructattr>().eq("struct_code", struct_code));
|
||||
SchBaseTask task = this.getOne(new QueryWrapper<SchBaseTask>().eq("task_code", task_code));
|
||||
|
||||
switch (type){
|
||||
switch (type) {
|
||||
case "ck":
|
||||
MdPbVehicleMater vehicleCode = iMdPbVehicleMaterService.getOne(new QueryWrapper<MdPbVehicleMater>().eq("vehicle_code", task.getVehicle_code()));
|
||||
iActRuExecutionService.update(new UpdateWrapper<ActRuExecution>()
|
||||
.set("status",StatusEnum.FLOW_STATUS.code("异常完成"))
|
||||
.set("remark",task.getVehicle_code()+"载具空出:货位"+struct_code)
|
||||
.eq("proc_inst_id",vehicleCode.getProc_inst_id()));
|
||||
.set("status", StatusEnum.FLOW_STATUS.code("异常完成"))
|
||||
.set("remark", task.getVehicle_code() + "载具空出:货位" + struct_code)
|
||||
.eq("proc_inst_id", vehicleCode.getProc_inst_id()));
|
||||
iStIvtStructattrService.update(new UpdateWrapper<StIvtStructattr>()
|
||||
.set("update_time", DateUtil.now())
|
||||
.set("vehicle_code",null)
|
||||
.set("remark",struct_code+"出库异常")
|
||||
.set("vehicle_code", null)
|
||||
.set("remark", struct_code + "出库异常")
|
||||
.eq("struct_code", struct_code));
|
||||
this.update(new UpdateWrapper<SchBaseTask>()
|
||||
.set("status",StatusEnum.FORM_STATUS.code("取消"))
|
||||
.set("remark",struct_code+"出库异常")
|
||||
.set("update_time",DateUtil.now())
|
||||
.eq("task_code",task_code));
|
||||
.set("status", StatusEnum.FORM_STATUS.code("取消"))
|
||||
.set("remark", struct_code + "出库异常")
|
||||
.set("update_time", DateUtil.now())
|
||||
.eq("task_code", task_code));
|
||||
break;
|
||||
case "rm":
|
||||
return dicisionStruct(struct_code,stIvtStructattr, task);
|
||||
return dicisionStruct(struct_code, stIvtStructattr, task);
|
||||
case "rzd":
|
||||
iStIvtStructattrService.update(new UpdateWrapper<StIvtStructattr>()
|
||||
.set("update_time", DateUtil.now())
|
||||
.set("vehicle_code",null)
|
||||
.set("lock_type",StatusEnum.LOCK.code("无锁"))
|
||||
.set("vehicle_code", null)
|
||||
.set("lock_type", StatusEnum.LOCK.code("无锁"))
|
||||
.eq("struct_code", task.getPoint_code2()));
|
||||
return dicisionStruct(struct_code,stIvtStructattr, task);
|
||||
return dicisionStruct(struct_code, stIvtStructattr, task);
|
||||
case "czd":
|
||||
moveTask(task_code, struct_code, stIvtStructattr);
|
||||
break;
|
||||
@@ -203,15 +236,15 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
private void moveTask(String task_code, String struct_code, StIvtStructattr stIvtStructattr) {
|
||||
AtomicReference<String> moveStruct = new AtomicReference<>();
|
||||
this.update(new UpdateWrapper<SchBaseTask>()
|
||||
.set("status",StatusEnum.FORM_STATUS.code("生成"))
|
||||
.set("remark",struct_code+"出库阻挡二次下发")
|
||||
.set("update_time",DateUtil.now())
|
||||
.eq("task_code",task_code));
|
||||
RedissonUtils.lock(()->{
|
||||
System.out.println("---3--"+Thread.currentThread().getName());
|
||||
.set("status", StatusEnum.FORM_STATUS.code("生成"))
|
||||
.set("remark", struct_code + "出库阻挡二次下发")
|
||||
.set("update_time", DateUtil.now())
|
||||
.eq("task_code", task_code));
|
||||
RedissonUtils.lock(() -> {
|
||||
System.out.println("---3--" + Thread.currentThread().getName());
|
||||
Map process = SpringContextHolder.getBean(DecisionHandler.class).dispenseTransa(ListOf.of("nearby"), new JSONObject(MapOf.of("stor_code", stIvtStructattr.getStor_code())));
|
||||
moveStruct.set(((Map<String, String>) process.get("form_data")).get("end_struct_code"));
|
||||
},"1"+ stIvtStructattr.getStor_code(),5);
|
||||
}, "1" + stIvtStructattr.getStor_code(), 5);
|
||||
Map moveForm = MapOf.of("task_type", StatusEnum.IOBILL_TYPE_MOVE.code("异常位移库")
|
||||
, "is_send", false
|
||||
, "vehicle_code", "YCZJ" + task_code, "form_data", new JSONObject(MapOf.of("start_struct_code", struct_code, "end_struct_code", moveStruct.get())));
|
||||
@@ -227,20 +260,20 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
String new_struct_code = ((Map<String, String>) map.get("form_data")).get("end_struct_code");
|
||||
|
||||
iActRuExecutionService.update(new UpdateWrapper<ActRuExecution>()
|
||||
.set("remark", struct_code +"入满异常重新分配货位"+new_struct_code)
|
||||
.eq("proc_inst_id",vehicleCode.getProc_inst_id()));
|
||||
.set("remark", struct_code + "入满异常重新分配货位" + new_struct_code)
|
||||
.eq("proc_inst_id", vehicleCode.getProc_inst_id()));
|
||||
this.update(new UpdateWrapper<SchBaseTask>()
|
||||
.set("point_code2",new_struct_code)
|
||||
.set("remark", struct_code +"入满异常重新分配货位"+new_struct_code)
|
||||
.set("point_code2", new_struct_code)
|
||||
.set("remark", struct_code + "入满异常重新分配货位" + new_struct_code)
|
||||
.eq("task_code", task_code));
|
||||
iStIvtStructattrService.update(new UpdateWrapper<StIvtStructattr>()
|
||||
.eq("struct_code", struct_code)
|
||||
.set("lock_type",StatusEnum.LOCK.code("异常锁定"))
|
||||
.set("update_time",DateUtil.now())
|
||||
.set("remark","入满异常:"+ task_code)
|
||||
.set("vehicle_code","YCZJ"+ task_code));
|
||||
.set("lock_type", StatusEnum.LOCK.code("异常锁定"))
|
||||
.set("update_time", DateUtil.now())
|
||||
.set("remark", "入满异常:" + task_code)
|
||||
.set("vehicle_code", "YCZJ" + task_code));
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("point_code2",new_struct_code);
|
||||
result.put("point_code2", new_struct_code);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user