rev:接口联调
This commit is contained in:
@@ -14,7 +14,10 @@ import org.nl.system.service.param.impl.SysParamServiceImpl;
|
||||
import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||
import org.springframework.http.HttpStatus;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* ACS连接工具类:
|
||||
@@ -54,16 +57,27 @@ public class AcsUtil {
|
||||
result.put("data", new JSONObject());
|
||||
}
|
||||
//acs抛异常这里
|
||||
List<String> errorList = new ArrayList();
|
||||
if (!StrUtil.equals(result.getString("status"), "200")) {
|
||||
throw new BadRequestException("下发失败:"+result.getString("message"));
|
||||
result.put("status", HttpStatus.BAD_REQUEST);
|
||||
JSONArray errorArr = result.getJSONArray("result");
|
||||
if (errorArr !=null && errorArr.size()>0){
|
||||
errorList = errorArr.stream().map(a -> ((JSONObject) a).getString("task_id")).collect(Collectors.toList());
|
||||
}
|
||||
result.put("message", result.getString("message"));
|
||||
result.put("data", new JSONObject());
|
||||
}else {
|
||||
//如果向ACS下发任务,变更任务状态为下发
|
||||
if (api.equals("api/wms/task")){
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
JSONObject task_jo = list.getJSONObject(i);
|
||||
String task_id = task_jo.getString("task_id");
|
||||
if (errorList.contains(task_id)){
|
||||
continue;
|
||||
}
|
||||
HashMap<String,String> map = new HashMap<>();
|
||||
map.put("task_status", TaskStatusEnum.ISSUE.getCode());
|
||||
WQLObject.getWQLObject("SCH_BASE_Task").update(map,"task_id = '"+task_jo.getString("ext_task_id")+"'");
|
||||
WQLObject.getWQLObject("SCH_BASE_Task").update(map,"task_id = '"+task_id+"'");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,7 +109,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{
|
||||
TaskDto taskDto = taskService.findById(task_id);
|
||||
String processing_class = taskDto.getHandle_class();
|
||||
//1:执行中,2:完成 ,3:acs取消
|
||||
String acs_task_status = row.getString("task_status");
|
||||
String acs_task_status = row.getString("status");
|
||||
String message = "";
|
||||
String status = "";
|
||||
if ("1".equals(acs_task_status)) {
|
||||
@@ -118,6 +118,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{
|
||||
if ("2".equals(acs_task_status)) {
|
||||
status = AcsTaskEnum.STATUS_FINISH.getCode();
|
||||
}
|
||||
if ("3".equals(acs_task_status)) {
|
||||
status = AcsTaskEnum.STATUS_CANNEL.getCode();
|
||||
}
|
||||
// 任务处理类
|
||||
try {
|
||||
Class<?> clz = Class.forName(processing_class);
|
||||
|
||||
@@ -4,7 +4,9 @@ import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.utils.AcsUtil;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.MapOf;
|
||||
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
@@ -24,12 +26,14 @@ public class WmsToAcsServiceImpl implements WmsToAcsService{
|
||||
JSONObject task = (JSONObject) o;
|
||||
JSONObject param = new JSONObject(MapOf.of("task_id", task.getString("task_id")
|
||||
, "acs_task_type", task.getString("acs_task_type")
|
||||
, "start_point_code", task.getString("point_code1")
|
||||
, "next_point_code", task.getString("point_code2")
|
||||
, "return_point_code", task.getString("point_code3")
|
||||
, "task_group_id", task.getString("task_group_id")
|
||||
, "task_code", task.getString("task_code")
|
||||
, "start_point_code", task.getString("point_code1")//起点
|
||||
, "put_point_code", task.getString("point_code2")//到料
|
||||
, "next_point_code", task.getString("point_code3")//空盘返回点
|
||||
, "task_group_id", StringUtils.isEmpty(task.getString("task_group_id"))? IdUtil.getStringId():task.getString("task_group_id")
|
||||
, "task_type", task.getString("task_type")
|
||||
, "priority", task.getString("priority")
|
||||
, "task_group_id", task.getString("is_send")
|
||||
, "is_send", task.getString("is_send")
|
||||
, "vehicle_code", task.getString("vehicle_code")
|
||||
, "agv_system_type", task.getString("agv_system_type")
|
||||
));
|
||||
|
||||
@@ -242,106 +242,31 @@ public class ProduceshiftorderServiceImpl implements ProduceshiftorderService {
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void openStart(JSONObject param) {
|
||||
WQLObject wo = WQLObject.getWQLObject("MPS_BD_ProduceShiftOrder");
|
||||
WQLObject wo = WQLObject.getWQLObject("pdm_produce_workorder");
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
|
||||
//获取前台传入的开工的工单信息
|
||||
JSONObject row = param.getJSONObject("row");
|
||||
String device_id = row.getString("device_id");
|
||||
String produceorder_id = row.getString("produceorder_id");
|
||||
String workorder_id = param.getString("workorder_id");
|
||||
String device_code = param.getString("device_code");
|
||||
|
||||
JSONObject result = wo.query("device_id = '" + device_id + "' and (order_status = '02' or order_status = '03') and produceorder_id != '" + produceorder_id + "'").uniqueResult(0);
|
||||
JSONObject result = wo.query("current_device_code = '" + device_code + "' and workorder_status in ('2','3','4') and workorder_id != '" + workorder_id + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(result)) {
|
||||
throw new BadRequestException("已有工单选择该设备开工,请更换开工设备!");
|
||||
}
|
||||
String workprocedure_id = row.getString("workprocedure_id");
|
||||
String produceorder_code = row.getString("produceorder_code");
|
||||
String material_id = row.getString("material_id");
|
||||
String material_code = row.getString("material_code");
|
||||
String material_name = row.getString("material_name");
|
||||
String material_spec = row.getString("material_spec");
|
||||
String is_needmove = row.getString("is_needmove");
|
||||
String plan_qty = row.getString("plan_qty");
|
||||
String order_status = row.getString("order_status");
|
||||
//根据设备id获取设备编码 传给acs用
|
||||
WQLObject wo_device = WQLObject.getWQLObject("pdm_bi_device");
|
||||
JSONObject device = wo_device.query("device_id = '" + device_id + "'").uniqueResult(0);
|
||||
String device_code = device.getString("device_code");
|
||||
//开工时修改生产班次工单表 生产设备、以及工单状态
|
||||
JSONObject jsonObject1 = wo.query("produceorder_id = '" + produceorder_id + "'").uniqueResult(0);
|
||||
JSONObject produceorderMap = new JSONObject();
|
||||
produceorderMap.put("produceorder_id", produceorder_id);
|
||||
produceorderMap.put("order_status", "02");
|
||||
produceorderMap.put("update_optid", currentUserId);
|
||||
produceorderMap.put("update_optname", nickName);
|
||||
produceorderMap.put("update_time", DateUtil.now());
|
||||
if (order_status.equals("01")) {
|
||||
produceorderMap.put("realproducestart_date", DateUtil.now());
|
||||
|
||||
//TODO:开工时修改生产班次工单表 生产设备、以及工单状态
|
||||
|
||||
wo.update(MapOf.of("workorder_id",workorder_id,"workorder_status",WorkerOrderEnum.SEND.getCode(),"update_id", currentUserId,"update_name", nickName,"update_time", DateUtil.now()));
|
||||
|
||||
JSONArray array = new JSONArray();
|
||||
JSONObject order = new JSONObject(MapOf.of("workorder_id", workorder_id,"type",WorkerOrderEnum.SEND.getCode()));
|
||||
array.add(order);
|
||||
Map<String, Object> resp = wmsToAcsService.orderStatusUpdate(array);
|
||||
String status = String.valueOf(resp.get("status"));
|
||||
String message = (String) resp.get("message");
|
||||
if (!status.equals("200")) {
|
||||
throw new BadRequestException(message);
|
||||
}
|
||||
wo.update(produceorderMap);
|
||||
//同时工单记录表中插入一条数据
|
||||
WQLObject wo_record = WQLObject.getWQLObject("MPS_BD_MacOperateRecord");
|
||||
JSONObject recordMap = new JSONObject();
|
||||
recordMap.put("macoperate_id", IdUtil.getSnowflake(1, 1).nextId());
|
||||
recordMap.put("device_id", device_id);
|
||||
recordMap.put("workprocedure_id", workprocedure_id);
|
||||
recordMap.put("produceorder_id", produceorder_id);
|
||||
recordMap.put("produceorder_code", produceorder_code);
|
||||
recordMap.put("init_qty", jsonObject1.getString("real_qty"));
|
||||
//填写生产记录表中的生产数量时,先判断是否已经生产过了,如果没有生产过,就将工单记录表中的计划数量付给记录表中的生产数量
|
||||
final JSONArray alreadyPro = wo_record.query("produceorder_id = '" + produceorder_id + "'").getResultJSONArray(0);
|
||||
if (ObjectUtil.isEmpty(alreadyPro)) {
|
||||
recordMap.put("produce_qty", plan_qty);
|
||||
//同时向acs系统下发工单 问题是现在一个工单分多次执行,现在是每开工一次,向acs发送一次工单
|
||||
//acs那边就会新增多个工单
|
||||
//如果是第一次开工,就向acs下发工单
|
||||
JSONArray array = new JSONArray();
|
||||
JSONObject acsObj = new JSONObject();
|
||||
acsObj.put("ext_order_id", produceorder_id);
|
||||
acsObj.put("is_needmove", is_needmove);
|
||||
acsObj.put("order_code", produceorder_code);
|
||||
acsObj.put("qty", plan_qty);
|
||||
acsObj.put("material_uuid", material_id);
|
||||
acsObj.put("material_code", material_code);
|
||||
acsObj.put("material_name", material_name);
|
||||
acsObj.put("material_spec", material_spec);
|
||||
acsObj.put("device_code", device_code);
|
||||
array.add(acsObj);
|
||||
Map<String, Object> resp = wmsToAcsService.order(array);
|
||||
String status = String.valueOf(resp.get("status"));
|
||||
String message = (String) resp.get("message");
|
||||
if (!status.equals("200")) {
|
||||
throw new BadRequestException(message);
|
||||
}
|
||||
} else {
|
||||
Integer sum = 0;
|
||||
//如果生产过了,就获取记录表中的报工数量,用计划数量减去生产过的报工数量的和,为这次的生产数量
|
||||
for (int i = 0; i < alreadyPro.size(); i++) {
|
||||
JSONObject jsonObject = alreadyPro.getJSONObject(i);
|
||||
String report_qty = jsonObject.getString("report_qty");
|
||||
sum += Integer.parseInt(report_qty);
|
||||
}
|
||||
Integer produce_qty = Integer.parseInt(plan_qty) - sum;
|
||||
recordMap.put("produce_qty", produce_qty);
|
||||
//wms向acs发送请求 工单恢复
|
||||
//如果不是第一次开工,就向acs发送恢复工单状态
|
||||
// TODO
|
||||
JSONArray array = new JSONArray();
|
||||
JSONObject map = new JSONObject();
|
||||
map.put("ext_order_id", produceorder_id);
|
||||
map.put("type", "2");
|
||||
array.add(map);
|
||||
Map<String, Object> resp = wmsToAcsService.orderStatusUpdate(array);
|
||||
String status = String.valueOf(resp.get("status"));
|
||||
String message = (String) resp.get("message");
|
||||
if (!status.equals("200")) {
|
||||
throw new BadRequestException(message);
|
||||
}
|
||||
}
|
||||
recordMap.put("operatetime_start", DateUtil.now());
|
||||
recordMap.put("jockey_id", currentUserId);
|
||||
wo_record.insert(recordMap);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -10,7 +10,8 @@ public enum TaskStatusEnum {
|
||||
START_AND_POINT("4", "起点终点确认"),
|
||||
ISSUE("5", "下发"),
|
||||
EXECUTING("6", "执行中"),
|
||||
FINISHED("7", "完成");
|
||||
FINISHED("7", "完成"),
|
||||
CANCEL("8", "取消");
|
||||
|
||||
private String name;
|
||||
private String code;
|
||||
|
||||
@@ -42,7 +42,7 @@ public class SpeMachineryTask extends AbstractAcsTask {
|
||||
WQLObject taskTable = WQLObject.getWQLObject("sch_base_task");
|
||||
log.info(InterfaceLogType.ACS_TO_LMS.getDesc());
|
||||
// 指令执行中
|
||||
JSONObject task = taskTable.query("task_id = '" + param.getString("taskId") + "'").uniqueResult(0);
|
||||
JSONObject task = taskTable.query("task_id = '" + param.getString("task_id") + "'").uniqueResult(0);
|
||||
AcsTaskEnum taskType = AcsTaskEnum.getType(task.getString("task_type"),"TASK_");
|
||||
try {
|
||||
SpeHandles.get(taskType.name()).handle(param,status,task);
|
||||
@@ -133,6 +133,8 @@ public class SpeMachineryTask extends AbstractAcsTask {
|
||||
double currentQty = device.getDouble("deviceinstor_qty") + task.getDouble("material_qty");
|
||||
deviceTable.update(MapOf.of("deviceinstor_qty", String.valueOf(currentQty)), "device_code = '" + pointInfo.getString("device_code") + "'");
|
||||
break;
|
||||
case STATUS_CANNEL:
|
||||
cancel(param.getString("task_id"));
|
||||
default:
|
||||
log.error(OPT_NAME+"未定义任务状态:{}",sta);
|
||||
throw new BadRequestException(OPT_NAME+"未定义任务状态:"+sta);
|
||||
@@ -166,6 +168,8 @@ public class SpeMachineryTask extends AbstractAcsTask {
|
||||
//物料规格,物料名称 从物料信息表关联查询
|
||||
));
|
||||
break;
|
||||
case STATUS_CANNEL:
|
||||
cancel(param.getString("task_id"));
|
||||
default:
|
||||
throw new BadRequestException(OPT_NAME+"未定义任务状态:"+sta);
|
||||
}
|
||||
@@ -196,6 +200,9 @@ public class SpeMachineryTask extends AbstractAcsTask {
|
||||
double currentQty = device.getDouble("deviceinstor_qty") + task.getDouble("material_qty");
|
||||
deviceTable.update(MapOf.of("deviceinstor_qty", String.valueOf(currentQty)), "device_code = '" + pointInfo.getString("device_code") + "'");
|
||||
break;
|
||||
case STATUS_CANNEL:
|
||||
cancel(param.getString("task_id"));
|
||||
break;
|
||||
default:
|
||||
throw new BadRequestException(OPT_NAME+"未定义任务状态:"+sta);
|
||||
}
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user