rev:修改更新任务状态接口:出烘箱强制完成不考虑事务,接口完成走事务

This commit is contained in:
zhangzq
2025-02-02 13:18:12 +08:00
parent ae2bc86877
commit 51b8ef85d2
20 changed files with 82 additions and 99 deletions

View File

@@ -12,6 +12,7 @@ import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
@@ -23,6 +24,7 @@ import static org.nl.wms.util.TaskUtil.getRoutePlanCode;
* 二期空托盘出库任务类
* Created by Lxy on 2024/1/19.
*/
@Service
public class TwoBoxExcepTask extends AbstractAcsTask {
/**

View File

@@ -12,6 +12,7 @@ import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
@@ -21,6 +22,7 @@ import java.util.List;
* 二期异常出库任务(木箱:浅货位阻挡)
* Created by Lxy on 2024/1/19.
*/
@Service
public class TwoExcepionalMoveTask extends AbstractAcsTask {
/**

View File

@@ -13,6 +13,7 @@ import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
@@ -24,6 +25,7 @@ import static org.nl.wms.util.TaskUtil.getRoutePlanCode;
* 二期空木箱入库任务类
* Created by Lxy on 2024/1/19.
*/
@Service
public class TwoInBoxTask extends AbstractAcsTask {
/**

View File

@@ -13,6 +13,7 @@ import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
@@ -25,6 +26,7 @@ import static org.nl.wms.util.TaskUtil.getRoutePlanCode;
* 二期入木箱行架任务类
* Created by Lxy on 2024/1/19.
*/
@Service
public class TwoInBoxTrussTask extends AbstractAcsTask {
/**

View File

@@ -12,6 +12,7 @@ import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
@@ -23,6 +24,7 @@ import static org.nl.wms.util.TaskUtil.getRoutePlanCode;
* 二期空托盘入库异常任务类
* Created by Lxy on 2024/1/19.
*/
@Service
public class TwoInEmpExcepTask extends AbstractAcsTask {
/**

View File

@@ -17,6 +17,7 @@ import org.nl.modules.wql.util.SpringContextHolder;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
@@ -28,6 +29,7 @@ import static org.nl.wms.util.TaskUtil.getRoutePlanCode;
* 二期空托盘入库任务类
* Created by Lxy on 2024/1/19.
*/
@Service
public class TwoInEmpTask extends AbstractAcsTask {
/**

View File

@@ -40,6 +40,7 @@ import static org.nl.wms.util.TaskUtil.getRoutePlanCode;
* 二期入库任务类
* Created by Lxy on 2024/1/19.
*/
@Service
public class TwoInTask extends AbstractAcsTask {
/**

View File

@@ -12,6 +12,7 @@ import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
@@ -23,6 +24,7 @@ import static org.nl.wms.util.TaskUtil.getRoutePlanCode;
* 二期空木箱移库任务类
* Created by Lxy on 2024/1/19.
*/
@Service
public class TwoMoveBoxTask extends AbstractAcsTask {
/**

View File

@@ -23,6 +23,7 @@ import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
@@ -36,6 +37,7 @@ import static org.nl.wms.util.TaskUtil.getRoutePlanCode;
* 二期空木箱出库任务类
* Created by Lxy on 2024/1/19.
*/
@Service
public class TwoOutBoxTask extends AbstractAcsTask {
/**

View File

@@ -12,6 +12,7 @@ import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
@@ -23,6 +24,7 @@ import static org.nl.wms.util.TaskUtil.getRoutePlanCode;
* 二期空托盘出库任务类
* Created by Lxy on 2024/1/19.
*/
@Service
public class TwoOutEmpTask extends AbstractAcsTask {
/**

View File

@@ -14,6 +14,7 @@ import org.nl.wms.pda.mps.eum.RegionTypeEnum;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
@@ -25,6 +26,7 @@ import static org.nl.wms.util.TaskUtil.getRoutePlanCode;
* 二期出库异常任务类
* Created by Lxy on 2024/1/19.
*/
@Service
public class TwoOutExceptionalTask extends AbstractAcsTask {
/**

View File

@@ -54,6 +54,7 @@ import org.nl.wms.pda.mps.service.ShippingService;
import org.nl.wms.pda.mps.service.impl.BakingServiceImpl;
import org.nl.wms.pda.st.service.impl.PrintServiceImpl;
import org.nl.wms.sch.ComPareUtil;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.sch.tasks.CutConveyorTask;
import org.nl.wms.sch.tasks.EmptyVehicleTask;
@@ -171,7 +172,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
* @returnzss
*/
@Override
@Transactional(rollbackFor = Exception.class)
@SneakyThrows
public Map<String, Object> receiveTaskStatusAcs(String string) {
log.info("acs向lms反馈任务状态请求参数--------------------------------------" + string);
@@ -186,52 +186,37 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
try {
if (tryLock) {
JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0);
// 任务处理类
String processing_class = taskObj.getString("handle_class");
//1:执行中,2:完成 ,3:acs取消
String acs_task_status = row.getString("task_status");
String car_no = row.getString("car_no");
if (StrUtil.isNotEmpty(car_no)) {
taskObj.put("car_no", car_no);
if (StrUtil.isNotEmpty(row.getString("car_no"))) {
taskObj.put("car_no", row.getString("car_no"));
WQLObject.getWQLObject("SCH_BASE_Task").update(taskObj);
}
String message = "";
// 任务处理类
String processing_class = taskObj.getString("handle_class");
AbstractAcsTask abstractTask = (AbstractAcsTask)SpringContextHolder.getBean(Class.forName(processing_class));
String status = "";
if ("1".equals(acs_task_status)) {
if ("1".equals(row.getString("task_status"))) {
status = TaskStatusEnum.EXECUTING.getCode();
}
if ("2".equals(acs_task_status)) {
if ("2".equals(row.getString("task_status"))) {
status = TaskStatusEnum.FINISHED.getCode();
}
if ("3".equals(acs_task_status)) {
if ("3".equals(row.getString("task_status"))) {
status = "0";
}
// 任务处理类
try {
Object obj = new Object();
try {
obj = SpringContextHolder.getBean(Class.forName(processing_class));
} catch (Exception e) {
Class<?> clz = Class.forName(processing_class);
obj = clz.newInstance();
}
// 调用每个任务类的forceFinishInst()强制结束方法
Method m = obj.getClass().getDeclaredMethod("updateTaskStatus", JSONObject.class, String.class);
m.invoke(obj, row, status);
} catch (Exception e) {
WQLObject.getWQLObject("SCH_BASE_Task").update(MapOf.of("remark",DateUtil.now()+"更新"+status+"失败:"+e.getMessage()),"task_id = '" + task_id + "'");
StringBuffer exinfo = new StringBuffer();
for (int i1 = 0; i1 < Math.min(e.getStackTrace().length,15); i1++) {
exinfo.append(e.getStackTrace()[i1].toString());
}
log.error(task_id+"反馈任务状态失败:{}", exinfo);
throw new BadRequestException(message);
}
abstractTask.updateTaskStatus(taskObj,status);
} else {
throw new BadRequestException("任务标识为:" + task_id + "的任务正在操作中!");
}
} finally {
if (tryLock) {
}catch (Exception ex){
WQLObject.getWQLObject("SCH_BASE_Task").update(MapOf.of("remark",DateUtil.now()+"更新"+row.getString("task_status")+"失败:"+ex.getMessage()),"task_id = '" + task_id + "'");
StringBuffer exinfo = new StringBuffer();
for (int i1 = 0; i1 < ex.getStackTrace().length; i1++) {
exinfo.append(ex.getStackTrace()[i1].toString());
}
log.error(task_id+"手动更新任务失败:{}", exinfo);
throw new BadRequestException(ex.getMessage());
}finally {
if (lock.isLocked() && lock.isHeldByCurrentThread()) {
lock.unlock();
}
}

View File

@@ -21,6 +21,7 @@ import org.nl.modules.wql.util.WqlUtil;
import org.nl.wms.basedata.master.service.ClassstandardService;
import org.nl.wms.basedata.master.service.dto.ClassstandardDto;
import org.nl.wms.basedata.st.service.impl.UserAreaServiceImpl;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.sch.service.TaskService;
import org.redisson.api.RLock;
@@ -118,7 +119,6 @@ public class TaskServiceImpl implements TaskService {
}
@Override
@Transactional(rollbackFor = Exception.class)
@SneakyThrows
public void operation(Map<String, Object> map) {
String task_id = MapUtil.getStr(map, "task_id");
@@ -126,64 +126,41 @@ public class TaskServiceImpl implements TaskService {
boolean tryLock = lock.tryLock(0,20, TimeUnit.SECONDS);
try {
if (tryLock) {
String method_name = MapUtil.getStr(map, "method_name");
JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0);
if ("finish".equals(method_name)) {
//强制执行,只把任务变更成完成状态
// 更改任务状态为完成
taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode());
taskObj.put("update_optid", SecurityUtils.getCurrentUserId());
taskObj.put("update_optname", SecurityUtils.getCurrentUsername());
taskObj.put("update_time", DateUtil.now());
taskObj.put("remark", "任务被用户:" + SecurityUtils.getCurrentUsername() + "在:" + DateUtil.now() + "强制完成。");
WQLObject.getWQLObject("SCH_BASE_Task").update(taskObj);
} else {
// 任务处理类
String processing_class = taskObj.getString("handle_class");
try {
Object obj = new Object();
try {
obj = SpringContextHolder.getBean(Class.forName(processing_class));
} catch (Exception e) {
Class<?> clz = Class.forName(processing_class);
obj = clz.newInstance();
}
// 调用每个任务类的method_name()强制结束方法
Method m = obj.getClass().getMethod(method_name, String.class);
JSONObject result = (JSONObject) m.invoke(obj, task_id);
if (ObjectUtil.isEmpty(result)) {
return;
}
JSONArray arr = result.getJSONArray("errArr");
WQLObject wo = WQLObject.getWQLObject("sch_base_task");
if (ObjectUtil.isNotEmpty(arr)) {
for (int i = 0; i < arr.size(); i++) {
JSONObject json = arr.getJSONObject(i);
JSONObject param = new JSONObject();
param.put("task_id", json.getString("task_id"));
param.put("remark", json.getString("message"));
wo.update(param);
}
throw new BadRequestException("任务操作失败!");
} else {
JSONObject param = new JSONObject();
param.put("task_id", task_id);
param.put("remark", "操作成功");
wo.update(param);
}
} catch (Exception e) {
StringBuffer exinfo = new StringBuffer();
for (int i1 = 0; i1 < Math.min(e.getStackTrace().length,15); i1++) {
exinfo.append(e.getStackTrace()[i1].toString());
}
log.error(task_id+"手动更新任务失败:{}", exinfo);
throw new BadRequestException(e.getMessage());
}
String processing_class = taskObj.getString("handle_class");
AbstractAcsTask obj = (AbstractAcsTask)SpringContextHolder.getBean(Class.forName(processing_class));
switch (MapUtil.getStr(map, "method_name")){
case "finish":
taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode());
taskObj.put("update_optid", SecurityUtils.getCurrentUserId());
taskObj.put("update_optname", SecurityUtils.getCurrentUsername());
taskObj.put("update_time", DateUtil.now());
taskObj.put("remark", "任务被用户:" + SecurityUtils.getCurrentUsername() + "在:" + DateUtil.now() + "强制完成。");
WQLObject.getWQLObject("SCH_BASE_Task").update(taskObj);
break;
case "forceFinish":
obj.forceFinish(task_id);
break;
case "cancel":
obj.cancel(task_id);
break;
case "immediateNotifyAcs":
obj.immediateNotifyAcs(task_id);
break;
}
} else {
throw new BadRequestException("任务标识为:" + task_id + "的任务正在操作中!");
}
} finally {
}catch (Exception ex){
StringBuffer exinfo = new StringBuffer();
WQLObject.getWQLObject("SCH_BASE_Task").update(MapOf.of("remark",DateUtil.now()+"更新"+MapUtil.getStr(map, "method_name")+"失败:"+ex.getMessage()),"task_id = '" + task_id + "'");
for (int i1 = 0; i1 < ex.getStackTrace().length; i1++) {
exinfo.append(ex.getStackTrace()[i1].toString());
}
log.error(task_id+"手动更新任务失败:{}", exinfo);
throw new BadRequestException(ex.getMessage());
}
finally {
if (lock.isLocked() && lock.isHeldByCurrentThread()) {
lock.unlock();
}

View File

@@ -11,6 +11,7 @@ import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
@@ -21,6 +22,7 @@ import java.util.List;
* Created by ZZ on 2021/12/22.
* Description:密集库空载具任务创建
*/
@Service
public class EmptyVehicleTask extends AbstractAcsTask {
private final String THIS_CLASS = EmptyVehicleTask.class.getName();
@@ -76,7 +78,6 @@ public class EmptyVehicleTask extends AbstractAcsTask {
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateTaskStatus(JSONObject taskObj, String status) {
WQLObject point_table = WQLObject.getWQLObject("SCH_BASE_Point");
WQLObject struct_table = WQLObject.getWQLObject("ST_IVT_StructAttr");
@@ -154,7 +155,6 @@ public class EmptyVehicleTask extends AbstractAcsTask {
}
@Override
@Transactional(rollbackFor = Exception.class)
public String createTask(JSONObject form) {
String task_type = form.getString("task_type");
@@ -199,7 +199,6 @@ public class EmptyVehicleTask extends AbstractAcsTask {
}
@Override
@Transactional(rollbackFor = Exception.class)
public void forceFinish(String task_id) {
JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0);
this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode());

View File

@@ -390,7 +390,6 @@ public class InHotTask extends AbstractAcsTask {
}
@Override
@Transactional(rollbackFor = Exception.class)
public void forceFinish(String task_id) {
JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0);
this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode());

View File

@@ -18,6 +18,7 @@ import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.st.inbill.service.impl.InbillServiceImpl;
import org.nl.wms.st.inbill.service.impl.RawAssistIStorServiceImpl;
import org.nl.wms.st.inbill.service.impl.StorPublicServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
@@ -28,6 +29,7 @@ import java.util.Map;
/**
* Created by ZZ on 2021/12/22.
*/
@Service
public class InTask extends AbstractAcsTask {
private final String THIS_CLASS = InTask.class.getName();
@@ -66,7 +68,6 @@ public class InTask extends AbstractAcsTask {
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateTaskStatus(JSONObject taskObj, String status) {
WQLObject disTab = WQLObject.getWQLObject("st_ivt_iostorinvdis"); // 出入库分配表
WQLObject mstTab = WQLObject.getWQLObject("ST_IVT_IOStorInv"); // 出入库主表

View File

@@ -284,7 +284,6 @@ public class OutHotTask extends AbstractAcsTask {
}
@Override
@Transactional(rollbackFor = Exception.class)
public void forceFinish(String task_id) {
JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0);
this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode());

View File

@@ -17,6 +17,7 @@ import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.st.inbill.service.CheckOutBillService;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
@@ -25,7 +26,7 @@ import java.util.List;
/**
* Created by Lxy on 2021/12/22.
*/
@Component
@Service
@RequiredArgsConstructor
public class OutTask extends AbstractAcsTask {
private final String THIS_CLASS = OutTask.class.getName();

View File

@@ -13,6 +13,7 @@ import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
@@ -23,7 +24,7 @@ import java.util.List;
* @Date:2023/12/12
* @Description:立库空载具搬运任务
*/
@Component
@Service
@RequiredArgsConstructor
public class EmpMoveTask extends AbstractAcsTask {
private final String THIS_CLASS = EmpMoveTask.class.getName();
@@ -188,7 +189,6 @@ public class EmpMoveTask extends AbstractAcsTask {
}
@Override
@Transactional(rollbackFor = Exception.class)
public void forceFinish(String task_id) {
JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0);
this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode());

View File

@@ -15,13 +15,14 @@ import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.st.instor.service.impl.HandMoveStorServiceImpl;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@Component
@Service
@RequiredArgsConstructor
public class HandMoveStorAcsTask extends AbstractAcsTask {
private final String THIS_CLASS = HandMoveStorAcsTask.class.getName();