rev:修改任务下发字段与acs反馈统一;add

This commit is contained in:
zhangzq
2024-07-01 10:40:02 +08:00
parent cb67ebd5cd
commit b73a9141fc
10 changed files with 165 additions and 37 deletions

View File

@@ -33,6 +33,11 @@ public class TableDataInfo<T> implements Serializable {
*/ */
private List<T> content; private List<T> content;
/**
* 反馈数据
*/
private Object data;
/** /**
* 消息状态码 * 消息状态码
*/ */

View File

@@ -6,6 +6,7 @@ import org.nl.common.TableDataInfo;
import org.nl.common.domain.entity.PageQuery; import org.nl.common.domain.entity.PageQuery;
import org.nl.common.domain.exception.BadRequestException; import org.nl.common.domain.exception.BadRequestException;
import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService; import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService;
import org.nl.wms.dispatch_manage.task.service.TaskScheduleService;
import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask; import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
@@ -16,7 +17,6 @@ import org.springframework.web.bind.annotation.*;
import org.nl.wms.dispatch_manage.task.service.dto.SchBaseTaskQuery; import org.nl.wms.dispatch_manage.task.service.dto.SchBaseTaskQuery;
import java.util.Map;
import java.util.Set; import java.util.Set;
/** /**
@@ -31,7 +31,9 @@ import java.util.Set;
@RequestMapping("api/schBaseTask") @RequestMapping("api/schBaseTask")
public class SchBaseTaskController { public class SchBaseTaskController {
@Autowired @Autowired
private ISchBaseTaskService schBaseTaskService; private ISchBaseTaskService iSchBaseTaskService;
@Autowired
private TaskScheduleService taskScheduleService;
@@ -40,37 +42,43 @@ public class SchBaseTaskController {
if (CollectionUtils.isEmpty(param)){ if (CollectionUtils.isEmpty(param)){
throw new BadRequestException("参数不能为空"); throw new BadRequestException("参数不能为空");
} }
return new ResponseEntity<>(schBaseTaskService.getByVehicle(param.getString("vehicle_code")), HttpStatus.OK); return new ResponseEntity<>(iSchBaseTaskService.getByVehicle(param.getString("vehicle_code")), HttpStatus.OK);
} }
@GetMapping @GetMapping
public ResponseEntity<Object> query(SchBaseTaskQuery whereJson, PageQuery page){ public ResponseEntity<Object> query(SchBaseTaskQuery whereJson, PageQuery page){
return new ResponseEntity<>(TableDataInfo.build(schBaseTaskService.queryAll(whereJson,page)), HttpStatus.OK); return new ResponseEntity<>(TableDataInfo.build(iSchBaseTaskService.queryAll(whereJson,page)), HttpStatus.OK);
} }
@PostMapping @PostMapping
public ResponseEntity<Object> create(@Validated @RequestBody SchBaseTask entity){ public ResponseEntity<Object> create(@Validated @RequestBody SchBaseTask entity){
schBaseTaskService.create(entity); iSchBaseTaskService.create(entity);
return new ResponseEntity<>(HttpStatus.OK); return new ResponseEntity<>(HttpStatus.OK);
} }
@PutMapping @PutMapping
public ResponseEntity<Object> update(@Validated @RequestBody SchBaseTask entity){ public ResponseEntity<Object> update(@Validated @RequestBody SchBaseTask entity){
schBaseTaskService.update(entity); iSchBaseTaskService.update(entity);
return new ResponseEntity<>(HttpStatus.OK); return new ResponseEntity<>(HttpStatus.OK);
} }
@DeleteMapping @DeleteMapping
public ResponseEntity<Object> delete(@RequestBody Set<String> ids) { public ResponseEntity<Object> delete(@RequestBody Set<String> ids) {
schBaseTaskService.deleteAll(ids); iSchBaseTaskService.deleteAll(ids);
return new ResponseEntity<>(HttpStatus.OK); return new ResponseEntity<>(HttpStatus.OK);
} }
@PutMapping("/operation") @PutMapping("/operation")
public ResponseEntity<Object> update(@RequestBody JSONObject map) { public ResponseEntity<Object> update(@RequestBody JSONObject map) {
schBaseTaskService.operation(map); iSchBaseTaskService.operation(map);
return new ResponseEntity<>(HttpStatus.OK);
}
@GetMapping("/taskSchedule")
public ResponseEntity<Object> taskSchedule() {
taskScheduleService.taskPublish();
return new ResponseEntity<>(HttpStatus.OK); return new ResponseEntity<>(HttpStatus.OK);
} }
} }

View File

@@ -1,9 +1,16 @@
package org.nl.wms.dispatch_manage.task.service; package org.nl.wms.dispatch_manage.task.service;
import cn.hutool.core.date.DateUtil;
import cn.hutool.http.HttpStatus;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.conditions.update.UpdateChainWrapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.common.TableDataInfo;
import org.nl.common.enums.StatusEnum; import org.nl.common.enums.StatusEnum;
import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask; import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask;
import org.nl.wms.external_system.acs.service.WmsToAcsService; import org.nl.wms.external_system.acs.service.WmsToAcsService;
@@ -42,11 +49,23 @@ public class TaskScheduleService {
List<SchBaseTask> list = taskService.list(new QueryWrapper<SchBaseTask>().eq("is_send", true) List<SchBaseTask> list = taskService.list(new QueryWrapper<SchBaseTask>().eq("is_send", true)
.eq("status", StatusEnum.FORM_STATUS.code("生成"))); .eq("status", StatusEnum.FORM_STATUS.code("生成")));
if (!CollectionUtils.isEmpty(list)){ if (!CollectionUtils.isEmpty(list)){
wmsToAcsService.interationToExt(list,"createTask"); TableDataInfo response = wmsToAcsService.interationToExt(list, "createTask");
if (response.getCode().equals(String.valueOf(HttpStatus.HTTP_BAD_REQUEST))){
JSONArray results = (JSONArray)JSON.toJSON(response.getData());
if (!CollectionUtils.isEmpty(results)){
for (Object result : results) {
Map resultM = (Map) result;
taskService.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("error")));
}
}
}
} }
} }
}finally { }finally {
if (islock){ if (lock.isLocked() && lock.isHeldByCurrentThread()){
lock.unlock(); lock.unlock();
} }
} }

View File

@@ -107,13 +107,13 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
@Override @Override
public void operation(JSONObject param) { public void operation(JSONObject param) {
String task_code = param.getString("task_code"); String task_code = param.getString("taskCode");
SchBaseTask task = this.getOne(new QueryWrapper<SchBaseTask>().eq("task_code", 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("当前任务已完成"); throw new BadRequestException("当前任务已完成");
} }
this.update(new UpdateWrapper<SchBaseTask>() this.update(new UpdateWrapper<SchBaseTask>()
.set("status",param.getString("method_name")) .set("status",param.getString("status"))
.eq("task_code", task_code)); .eq("task_code", task_code));
if (param.getString("method_name").equals(StatusEnum.FORM_STATUS.code("完成"))){ if (param.getString("method_name").equals(StatusEnum.FORM_STATUS.code("完成"))){
MdPbVehicleMater vehicleMater = iMdPbVehicleMaterService.getOne(new QueryWrapper<MdPbVehicleMater>() MdPbVehicleMater vehicleMater = iMdPbVehicleMaterService.getOne(new QueryWrapper<MdPbVehicleMater>()

View File

@@ -1,5 +1,8 @@
package org.nl.wms.external_system; package org.nl.wms.external_system;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService;
import org.nl.wms.external_system.acs.service.AcsToWmsService; import org.nl.wms.external_system.acs.service.AcsToWmsService;
import org.nl.wms.external_system.dto.InteracteDto; import org.nl.wms.external_system.dto.InteracteDto;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -15,17 +18,20 @@ public class GateWayService {
@Autowired @Autowired
private AcsToWmsService acsToWmsService; private AcsToWmsService acsToWmsService;
@Autowired
private ISchBaseTaskService iSchBaseTaskService;
public void apply(InteracteDto param){ public void apply(InteracteDto param){
//处理日志相关 //处理日志相关
String service = param.getService(); String service = param.getService();
String type = param.getType(); String type = param.getType();
//根据服务拆分不同的业务 //根据服务拆分不同的业务
acsToWmsService.applyTask(param.getService(), type, param.getData()); if (service.equals("InStorage")){
acsToWmsService.applyTask(param.getService(), type, (JSONObject) JSON.toJSON(param.getData()));
}
if (service.equals("Task")){
iSchBaseTaskService.operation((JSONObject) JSON.toJSON(param.getData()));
}
} }
} }

View File

@@ -0,0 +1,68 @@
package org.nl.wms.external_system.acs.service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.nl.common.TableDataInfo;
import org.nl.common.domain.exception.BadRequestException;
import org.nl.common.enums.StatusEnum;
import org.nl.common.utils.InterationUtil;
import org.nl.common.utils.SpringContextHolder;
import org.nl.wms.dispatch_manage.task.handler.AbstractTask;
import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService;
import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask;
import org.nl.wms.external_system.dto.InteracteDto;
import org.nl.wms.flow_manage.flow.framework.process.nodeType.source.impl.MappingSourceDataTypeHandler;
import org.nl.wms.sync_manage.service.form_mapping.ISyncFormMappingService;
import org.nl.wms.sync_manage.service.form_mapping.dao.SyncFormMapping;
import org.slf4j.MDC;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/*
* @author ZZQ
* @Date 2024/5/6 14:53
*/
@Service
public class AcsToWmsService {
@Autowired
private Map<String, AbstractTask> applyTaskMap;
@Autowired
private ISchBaseTaskService iSchBaseTaskService;
public void applyTask(String service,String type,JSONObject data){
if (service.equals("InStorage")){
/*
{
"service": "ZPInStorage",
"ip": "ip_7va9w",
"request_time": "request_time_pbi5u",
"trace_id": "trace_id_xl8dk",
"data": {
"D00018": "start001"
}
}
* */
applyTaskMap.get(type).createTask(data);
}
}
public void updateTAsk(String type,JSONObject data){
String task_code = data.getString("task_code");
SchBaseTask task = iSchBaseTaskService.getOne(new QueryWrapper<SchBaseTask>().eq("task_code", task_code)
.lt("status", StatusEnum.FORM_STATUS.code("完成")));
if (task == null){
throw new BadRequestException("更新失败:当前执行中的任务不存在");
}
applyTaskMap.get(task.getTask_type()).updateStatus(data);
}
}

View File

@@ -3,6 +3,7 @@ package org.nl.wms.external_system.dto;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
@@ -17,15 +18,16 @@ import java.util.List;
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor
public class InteracteDto { public class InteracteDto {
String service; private String service;
String type; private String type;
String ip = IPUtil.getLocalIp(); private String ip;
String request_time = DateUtil.now(); private String request_time;
String trace_id; private String trace_id;
/** /**
* 要么JSONArray要么JSONObject * 要么JSONArray要么JSONObject
*/ */
Object data; private Object data;
} }

View File

@@ -36,7 +36,7 @@ public class ExecuteFlowActivityBehavior extends FlowNodeActivityBehavior<JSONOb
ActHiExecution one = actHiExecutionService.getOne(new QueryWrapper<ActHiExecution>() ActHiExecution one = actHiExecutionService.getOne(new QueryWrapper<ActHiExecution>()
.eq("activity_id", source_data) .eq("activity_id", source_data)
.eq("proc_inst_id", entity.getProc_inst_id())); .eq("proc_inst_id", entity.getProc_inst_id()));
executeFlow.getDataSource() executeFlow.getDataSource();
//处理流程线:将结果值封装 //处理流程线:将结果值封装
super.execute(entity); super.execute(entity);
} }

View File

@@ -74,6 +74,15 @@
</el-form> </el-form>
</div> </div>
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'--> <!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<span>
未完成数
<el-input
v-model="undo"
clearable
style="width: 60px"
/>
<el-button type="primary" @click="taskScheduler()">任务调度</el-button>
</span>
<crudOperation :permission="permission"/> <crudOperation :permission="permission"/>
<!--表单组件--> <!--表单组件-->
<el-dialog :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0" <el-dialog :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0"
@@ -181,7 +190,7 @@
</template> </template>
<script> <script>
import crudSchBaseTask from './schBaseTask' import crudSchBaseTask, {scheduler} from './schBaseTask'
// import crudSchBaseTaskconfig from './config/schBaseTaskconfig' // import crudSchBaseTaskconfig from './config/schBaseTaskconfig'
import CRUD, {crud, form, header, presenter} from '@crud/crud' import CRUD, {crud, form, header, presenter} from '@crud/crud'
import rrOperation from '@crud/RR.operation' import rrOperation from '@crud/RR.operation'
@@ -238,6 +247,7 @@ export default {
}, },
data() { data() {
return { return {
undo: 0,
permission: {}, permission: {},
rules: {}, rules: {},
taskStatusList: [], taskStatusList: [],
@@ -261,29 +271,28 @@ export default {
this.crud.toQuery() this.crud.toQuery()
}, },
doOperate(row, command) { doOperate(row, command) {
let method_name = '' let status = ''
switch (command) { switch (command) {
case 'a':// 完成 case 'a':// 完成
method_name = '90' status = '90'
break break
case 'b':// 取消 case 'b':// 取消
method_name = '100' status = '100'
break break
case 'c':// 下发 case 'c':// 下发
method_name = '20' status = '20'
break break
case 'd':// 详情 case 'd':// 详情
method_name = 'view' status = 'view'
break break
} }
if (method_name === 'view') { if (status === 'view') {
// this.view(row) // this.view(row)
return return
} }
const data = { const data = {
task_code: row.task_code, taskCode: row.task_code,
method_name: method_name, status: status
config_code: row.config_code
} }
crudSchBaseTask.operation(data).then(res => { crudSchBaseTask.operation(data).then(res => {
this.crud.toQuery() this.crud.toQuery()
@@ -291,7 +300,12 @@ export default {
}).catch(err => { }).catch(err => {
console.log(err.response.data.message) console.log(err.response.data.message)
}) })
},
taskScheduler(){
crudSchBaseTask.scheduler().then(res => {
this.crud.toQuery()
this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
})
} }
} }
} }

View File

@@ -38,5 +38,11 @@ export function operation(data) {
data data
}) })
} }
export function scheduler() {
return request({
url: 'api/schBaseTask/taskSchedule',
method: 'get'
})
}
export default { add, edit, del, getTaskStatusList, operation} export default { add, edit, del, getTaskStatusList, operation, scheduler}