Browse Source

add:新增强制完成接口

master
涂强 3 weeks ago
parent
commit
aa6fa8af26
  1. 1
      acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java
  2. 8
      acs/nladmin-system/src/main/java/org/nl/acs/task/rest/TaskController.java
  3. 8
      acs/nladmin-system/src/main/java/org/nl/acs/task/service/TaskService.java
  4. 169
      acs/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java
  5. 4
      acs/nladmin-system/src/main/resources/config/application-dev.yml
  6. 2
      acs/nladmin-system/src/main/resources/config/application.yml
  7. 10
      acs/nladmin-ui/src/api/acs/task/task.js
  8. 12
      acs/nladmin-ui/src/views/acs/task/index.vue

1
acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java

@ -626,6 +626,7 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void finish(String id) { public void finish(String id) {
Instruction entity = this.findById(id); Instruction entity = this.findById(id);
// if (entity == null) throw new BadRequestException("被删除或无权限,操作失败!"); // if (entity == null) throw new BadRequestException("被删除或无权限,操作失败!");
String currentUsername = SecurityUtils.getCurrentUsername(); String currentUsername = SecurityUtils.getCurrentUsername();

8
acs/nladmin-system/src/main/java/org/nl/acs/task/rest/TaskController.java

@ -115,6 +115,14 @@ public class TaskController {
return new ResponseEntity<>(HttpStatus.OK); return new ResponseEntity<>(HttpStatus.OK);
} }
@Log("强制完成任务")
@ApiOperation("强制完成任务")
@PostMapping(value = "/forceFinish/{id}")
public ResponseEntity<Object> forceFinish(@RequestBody String id) throws Exception {
taskService.forceFinish(id);
return new ResponseEntity<>(HttpStatus.OK);
}
@Log("取消任务") @Log("取消任务")
@ApiOperation("取消任务") @ApiOperation("取消任务")
@PostMapping(value = "/cancel/{id}") @PostMapping(value = "/cancel/{id}")

8
acs/nladmin-system/src/main/java/org/nl/acs/task/service/TaskService.java

@ -180,6 +180,14 @@ public interface TaskService {
*/ */
void finish(String ids); void finish(String ids);
/**
* 强制完成任务
*
* @param ids
*/
void forceFinish(String ids) throws Exception;
/** /**
* 取消任务 * 取消任务
* *

169
acs/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java

@ -12,6 +12,7 @@ import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.Synchronized; import lombok.Synchronized;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.nl.acs.AcsConfig; import org.nl.acs.AcsConfig;
import org.nl.acs.agv.server.XianGongAgvService; import org.nl.acs.agv.server.XianGongAgvService;
import org.nl.acs.auto.initial.ApplicationAutoInitial; import org.nl.acs.auto.initial.ApplicationAutoInitial;
@ -100,6 +101,7 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial {
} }
} }
@Override
public synchronized void reload() { public synchronized void reload() {
List list = this.queryAll("task_status <2 and is_delete =0 order by create_time"); List list = this.queryAll("task_status <2 and is_delete =0 order by create_time");
@ -373,6 +375,7 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial {
return list; return list;
} }
@Override
public List<TaskDto> queryTaskByStartAndIntStatus(String head_start_device_code) { public List<TaskDto> queryTaskByStartAndIntStatus(String head_start_device_code) {
List<TaskDto> list = new ArrayList<>(); List<TaskDto> list = new ArrayList<>();
Iterator<TaskDto> iterator = tasks.iterator(); Iterator<TaskDto> iterator = tasks.iterator();
@ -393,6 +396,7 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial {
return list; return list;
} }
@Override
public List<TaskDto> queryTaskByNextAndIntStatus(String back_start_device_code) { public List<TaskDto> queryTaskByNextAndIntStatus(String back_start_device_code) {
List<TaskDto> list = new ArrayList<>(); List<TaskDto> list = new ArrayList<>();
Iterator<TaskDto> iterator = tasks.iterator(); Iterator<TaskDto> iterator = tasks.iterator();
@ -732,10 +736,14 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void finish(String id) { public void finish(String id) {
TaskDto entity = this.findById(id); TaskDto entity = this.findById(id);
if (entity == null) throw new BadRequestException("被删除或无权限,操作失败!"); if (entity == null) {
throw new BadRequestException("被删除或无权限,操作失败!");
}
InstructionService instructionservice = SpringContextHolder.getBean("instructionServiceImpl"); InstructionService instructionservice = SpringContextHolder.getBean("instructionServiceImpl");
InstructionDto instdto = instructionservice.findByTaskid(id, "instruction_status <2 "); InstructionDto instdto = instructionservice.findByTaskid(id, "instruction_status <2 ");
if (instdto != null) throw new BadRequestException("有指令未完成!"); if (instdto != null) {
throw new BadRequestException("有指令未完成!");
}
String currentUsername = SecurityUtils.getCurrentUsername(); String currentUsername = SecurityUtils.getCurrentUsername();
String now = DateUtil.now(); String now = DateUtil.now();
entity.setUpdate_time(now); entity.setUpdate_time(now);
@ -782,6 +790,161 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial {
} }
} }
public void finish1(String id) {
TaskDto entity = this.findById(id);
if (entity == null) {
throw new BadRequestException("被删除或无权限,操作失败!");
}
InstructionService instructionservice = SpringContextHolder.getBean("instructionServiceImpl");
InstructionDto instdto = instructionservice.findByTaskid(id, "instruction_status <2 ");
if (instdto != null) {
throw new BadRequestException("有指令未完成!");
}
String currentUsername = SecurityUtils.getCurrentUsername();
String now = DateUtil.now();
entity.setUpdate_time(now);
entity.setUpdate_by(currentUsername);
entity.setTask_status("2");
WQLObject wo = WQLObject.getWQLObject("acs_task");
JSONObject json = (JSONObject) JSONObject.toJSON(entity);
wo.update(json);
removeByCodeFromCache(entity.getTask_code());
// 判断是否为WMS下发的任务,如果是反馈任务状态给WMS
// String hasWms = paramService.findByCode(AcsConfig.HASWMS).getValue();
// if (!StrUtil.startWith(entity.getTask_code(), "-") && StrUtil.equals(hasWms, "1")) {
// TaskFeedbackDto feefbackdto = taskFeedbackService.findByCode(entity.getTask_code());
// System.out.println(feefbackdto == null);
// JSONObject feed_jo = new JSONObject();
// feed_jo.put("task_id", entity.getTask_id());
// feed_jo.put("task_code", entity.getTask_code());
// feed_jo.put("task_status", entity.getTask_status());
// JSONArray ja = new JSONArray();
// ja.add(feed_jo);
//
// try {
// JSONObject request1 = new JSONObject();
// request1.put("REQCODE", entity.getExt_task_id());
// request1.put("TASKCODE", entity.getTask_code());
// request1.put("PODCODE", entity.getVehicle_code());
// request1.put("TASKTYPE", entity.getTask_type());
// request1.put("METHOD", "3");
// request1.put("REQTIME", DateUtil.now());
// log.info("atrAgvCallback 请求参数:" + request1.toString());
// String str1 = new RTMSAGVSERVICE().getBasicHttpBindingIRTMSAGVSERVICE().atrAgvCallback(request1.toJSONString());
// log.info("atrAgvCallback 返回参数:" + str1);
//
// JSONObject request = new JSONObject();
// request.put("REQCODE", entity.getExt_task_id());
// request.put("TASKCODE", entity.getTask_code());
// request.put("PODCODE", entity.getVehicle_code());
// request.put("TASKTYPE", entity.getTask_type());
// request.put("METHOD", "5");
// request.put("REQTIME", DateUtil.now());
// log.info("atrAgvCallback 请求参数:" + request.toString());
// String str = new RTMSAGVSERVICE().getBasicHttpBindingIRTMSAGVSERVICE().atrAgvCallback(request.toJSONString());
// log.info("atrAgvCallback 返回参数:" + str);
// } catch (Exception e) {
// e.printStackTrace();
// throw new BadRequestException(e.getMessage());
// }
// }
// 如果属于先知AGV,关闭运单序列
if (StrUtil.equals(paramService.findByCode(AcsConfig.AGVTYPE).getValue(), "3")) {
try {
agvService.markComplete(entity.getTask_code());
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Override
public void forceFinish(String ids) throws Exception {
TaskDto dto = this.findById(ids);
if (dto == null) {
throw new BadRequestException("权限不足,操作失败");
}
Instruction entity = instructionService.findByTaskid(ids, "instruction_status <2 ");
if (entity != null) {
String currentUsername = SecurityUtils.getCurrentUsername();
String now = DateUtil.now();
entity.setUpdate_time(now);
entity.setUpdate_by(currentUsername);
entity.setInstruction_status("2");
WQLObject wo = WQLObject.getWQLObject("acs_instruction");
JSONObject json = (JSONObject) JSONObject.toJSON(entity);
wo.update(json);
removeByCodeFromCache(entity.getInstruction_code());
}
String instnextdevice = dto.getNext_device_code();
WQLObject taskwo = WQLObject.getWQLObject("acs_task");
DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class);
Device startdevice = appService.findDeviceByCode(entity.getStart_device_code());
if (ObjectUtils.isEmpty(startdevice)) {
log.debug("地址对应设备未找到");
throw new BadRequestException("地址对应设备未找到");
}
if (instnextdevice.indexOf(".") != -1) {
instnextdevice = instnextdevice.substring(0, instnextdevice.indexOf("."));
}
Device device = appService.findDeviceByCode(instnextdevice);
if (device == null) {
log.debug("地址对应设备未找到");
throw new BadRequestException("地址对应设备未找到");
}
DeviceService deviceService = SpringContextHolder.getBean(DeviceServiceImpl.class);
JSONObject jo1 = new JSONObject();
jo1.put("device_code", instnextdevice);
String start_device_code = entity.getStart_device_code();
Device deviceByCode = deviceAppService.findDeviceByCode(start_device_code);
if (deviceByCode == null) {
log.debug("地址对应设备未找到");
throw new BadRequestException("地址对应设备未找到");
}
jo1.put("hasGoodStatus", "1");
jo1.put("material_type", startdevice.getMaterial_type());
jo1.put("quantity", startdevice.getQuantity());
jo1.put("remark", startdevice.getRemark());
jo1.put("batch", startdevice.getBatch());
jo1.put("vehicle_code", entity.getVehicle_code());
jo1.put("islock", "0");
jo1.put("barrels_code", startdevice.getBarrels_code());
jo1.put("cooperate_code", startdevice.getCooperate_code());
jo1.put("powder_name", startdevice.getPowder_name());
jo1.put("barrels_status", startdevice.getBarrels_status());
deviceService.changeDeviceStatus(jo1);
// 如果是无光电的设备 指令完成变更起点、终点状态
JSONObject jo = new JSONObject();
jo.put("device_code", entity.getStart_device_code());
jo.put("hasGoodStatus", "0");
jo.put("material_type", "");
jo.put("quantity", "");
jo.put("remark", "");
jo.put("batch", "");
jo.put("islock", "0");
deviceService.changeDeviceStatus(jo);
JSONObject taskjson = taskwo.query("task_id ='" + ids + "'").uniqueResult(0);
TaskDto obj = taskjson.toJavaObject(TaskDto.class);
// =0 则不用再次请求
if (StrUtil.equals(obj.getRequest_again(), "0")) {
if (StrUtil.equals(obj.getNext_device_code(), instnextdevice)) {
this.finish1(obj.getTask_id());
} else {
instructionService.finishAndCreateNextInst(entity);
}
}
}
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void cancel(String id) { public void cancel(String id) {
@ -1164,6 +1327,7 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial {
return tasks; return tasks;
} }
@Override
public TaskDto findByContainer(String container_code) { public TaskDto findByContainer(String container_code) {
Iterator var3 = tasks.iterator(); Iterator var3 = tasks.iterator();
@ -1177,6 +1341,7 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial {
return null; return null;
} }
@Override
public TaskDto findByCodeFromCache(String task_code) { public TaskDto findByCodeFromCache(String task_code) {
Iterator var3 = tasks.iterator(); Iterator var3 = tasks.iterator();

4
acs/nladmin-system/src/main/resources/config/application-dev.yml

@ -13,11 +13,11 @@ spring:
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
# url: jdbc:log4jdbc:mysql://${DB_HOST:10.1.3.91}:${DB_PORT:3306}/${DB_NAME:acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true # url: jdbc:log4jdbc:mysql://${DB_HOST:10.1.3.91}:${DB_PORT:3306}/${DB_NAME:acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
# url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:lzhl_one_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true # url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:lzhl_one_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:huaYan_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:huayan_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
username: ${DB_USER:root} username: ${DB_USER:root}
# password: ${DB_PWD:P@ssw0rd} # password: ${DB_PWD:P@ssw0rd}
# password: ${DB_PWD:Root.123456} # password: ${DB_PWD:Root.123456}
password: ${DB_PWD:password} password: ${DB_PWD:123456}
# 初始连接数 # 初始连接数
initial-size: 5 initial-size: 5

2
acs/nladmin-system/src/main/resources/config/application.yml

@ -2,7 +2,7 @@ spring:
freemarker: freemarker:
check-template-location: false check-template-location: false
profiles: profiles:
active: dev active: prod
jackson: jackson:
time-zone: GMT+8 time-zone: GMT+8
data: data:

10
acs/nladmin-ui/src/api/acs/task/task.js

@ -32,6 +32,14 @@ export function finish(task_id) {
}) })
} }
export function forceFinish(task_id) {
return request({
url: 'api/task/forceFinish/' + task_id,
method: 'post',
data: task_id
})
}
export function cancel(task_id) { export function cancel(task_id) {
return request({ return request({
url: 'api/task/cancel/' + task_id, url: 'api/task/cancel/' + task_id,
@ -95,5 +103,5 @@ export function reload() {
}) })
} }
export default { add, edit, del, finish, cancel, createTaskByClick, deviceAskTask, ordinaryTaskCreate, specialTaskCreate, createInst, reload } export default { add, edit, del, finish, cancel, createTaskByClick, deviceAskTask, ordinaryTaskCreate, specialTaskCreate, createInst, reload, forceFinish }

12
acs/nladmin-ui/src/views/acs/task/index.vue

@ -368,6 +368,7 @@
<el-dropdown-item :command="beforeHandleCommand(scope.$index, scope.row,'a')">完成</el-dropdown-item> <el-dropdown-item :command="beforeHandleCommand(scope.$index, scope.row,'a')">完成</el-dropdown-item>
<el-dropdown-item :command="beforeHandleCommand(scope.$index, scope.row,'b')">取消</el-dropdown-item> <el-dropdown-item :command="beforeHandleCommand(scope.$index, scope.row,'b')">取消</el-dropdown-item>
<el-dropdown-item :command="beforeHandleCommand(scope.$index, scope.row,'c')">创建指令</el-dropdown-item> <el-dropdown-item :command="beforeHandleCommand(scope.$index, scope.row,'c')">创建指令</el-dropdown-item>
<el-dropdown-item :command="beforeHandleCommand(scope.$index, scope.row,'d')">强制完成</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
</template> </template>
@ -562,6 +563,14 @@ export default {
console.log(err.response.data.message) console.log(err.response.data.message)
}) })
}, },
forceFinish(index, row) {
crudTask.forceFinish(row.task_id).then(res => {
this.crud.toQuery()
this.crud.notify('强制完成成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
}).catch(err => {
console.log(err.response.data.message)
})
},
reload() { reload() {
crudTask.reload().then(res => { crudTask.reload().then(res => {
this.crud.toQuery() this.crud.toQuery()
@ -588,6 +597,9 @@ export default {
case 'c':// case 'c'://
this.createInst(command.index, command.row) this.createInst(command.index, command.row)
break break
case 'd'://
this.forceFinish(command.index, command.row)
break
} }
}, },
showStartStorage(val) { showStartStorage(val) {

Loading…
Cancel
Save