add: 新增mes对接接口,油漆线任务变动,废弃油漆线缓存区
This commit is contained in:
@@ -137,6 +137,11 @@ public class MaterialbaseServiceImpl implements MaterialbaseService {
|
||||
Long currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
String now = DateUtil.now();
|
||||
WQLObject wo = WQLObject.getWQLObject("md_me_materialbase");
|
||||
JSONObject jsonObject = wo.query("material_code = '" + dto.getMaterial_code() + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(jsonObject)) {
|
||||
throw new BadRequestException("物料柜号不能重复");
|
||||
}
|
||||
|
||||
dto.setMaterial_id(IdUtil.getSnowflake(1, 1).nextId());
|
||||
dto.setCreate_id(currentUserId);
|
||||
@@ -146,7 +151,6 @@ public class MaterialbaseServiceImpl implements MaterialbaseService {
|
||||
dto.setUpdate_time(now);
|
||||
dto.setCreate_time(now);
|
||||
dto.setBase_unit_id(15);
|
||||
WQLObject wo = WQLObject.getWQLObject("md_me_materialbase");
|
||||
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
|
||||
wo.insert(json);
|
||||
}
|
||||
|
||||
@@ -21,10 +21,7 @@ import org.nl.wms.sch.tasks.callMaterial.YqxCallMaterialTask;
|
||||
import org.nl.wms.sch.tasks.sendEmpty.DpxwSendEmpVehicleTask;
|
||||
import org.nl.wms.sch.tasks.sendEmpty.HtSendEmpVehicleTask;
|
||||
import org.nl.wms.sch.tasks.sendEmpty.YqxSendEmpVehicleTask;
|
||||
import org.nl.wms.sch.tasks.sendMaterial.GjxSendMaterialTask;
|
||||
import org.nl.wms.sch.tasks.sendMaterial.HkxSendMaterialTask;
|
||||
import org.nl.wms.sch.tasks.sendMaterial.HtSendMaterialTask;
|
||||
import org.nl.wms.sch.tasks.sendMaterial.YqxSendMaterialTask;
|
||||
import org.nl.wms.sch.tasks.sendMaterial.*;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -171,7 +168,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public JSONObject apply(JSONObject whereJson) {
|
||||
String type = whereJson.getString("type");
|
||||
String point_code = whereJson.getString("point_code");
|
||||
String point_code = ObjectUtil.isNotEmpty(whereJson.getString("point_code"))
|
||||
? whereJson.getString("point_code")
|
||||
: whereJson.getString("device_code");
|
||||
String vehicle_type = whereJson.getString("vehicle_type");
|
||||
String vehicle_code = whereJson.getString("vehicle_code");
|
||||
//载具数量
|
||||
@@ -194,6 +193,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
* 8.豪凯自动线下料入库
|
||||
* 9.碟盘限位送空盘到输送线
|
||||
* 10.一楼货梯送料
|
||||
* 11.新增包装输送线送料
|
||||
* 12.新增包装输送线送料入库
|
||||
*/
|
||||
if (StrUtil.equals(type, "1")) {
|
||||
// 1.共挤线申请空盘: 调用空托盘出库处理类创建任务
|
||||
@@ -218,6 +219,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
param.put("qty", material_num); // 满料位
|
||||
param.put("vehicle_type", vehicle_type);
|
||||
param.put("vehicle_code", vehicle_code);
|
||||
param.put("task_code", whereJson.getString("task_code"));
|
||||
|
||||
GjxSendMaterialTask taskBean = SpringContextHolder.getBean(GjxSendMaterialTask.class);
|
||||
String task_id = taskBean.createTask(param); // 创建任务
|
||||
@@ -240,6 +242,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
param.put("vehicle_type", vehicle_type);
|
||||
param.put("vehicle_code", vehicle_code);
|
||||
param.put("material_num", material_num);
|
||||
param.put("task_code", whereJson.getString("task_code"));
|
||||
// 创建任务
|
||||
YqxCallMaterialTask taskBean = SpringContextHolder.getBean(YqxCallMaterialTask.class);
|
||||
String task_id = taskBean.createTask(param);
|
||||
@@ -281,6 +284,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
param.put("vehicle_code", vehicle_code);
|
||||
param.put("vehicle_type", vehicle_type);
|
||||
param.put("qty", material_num);
|
||||
param.put("task_code", whereJson.getString("task_code"));
|
||||
HkxSendMaterialTask taskBean = SpringContextHolder.getBean(HkxSendMaterialTask.class);
|
||||
String task_id = taskBean.createTask(param);
|
||||
|
||||
@@ -300,6 +304,22 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
param.put("task_id", whereJson.getString("task_id"));
|
||||
HtSendMaterialTask taskBean = SpringContextHolder.getBean(HtSendMaterialTask.class);
|
||||
String task_id = taskBean.createTask(param);
|
||||
} else if (StrUtil.equals(type, "11")) {
|
||||
// 11.新增包装输送线送料
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("point_code1", point_code);
|
||||
param.put("vehicle_type", vehicle_type);
|
||||
param.put("qty", material_num);
|
||||
param.put("material_id", whereJson.getString("material_id"));
|
||||
BzssxSendMaterialTask taskBean = SpringContextHolder.getBean(BzssxSendMaterialTask.class);
|
||||
String task_id = taskBean.createTask(param);
|
||||
} else if (StrUtil.equals(type, "12")) {
|
||||
// 12.新增包装输送线送料入库
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("point_code1", point_code);
|
||||
param.put("task_id", whereJson.getString("task_id"));
|
||||
BZXSendMaterialTask taskBean = SpringContextHolder.getBean(BZXSendMaterialTask .class);
|
||||
String task_id = taskBean.createTask(param);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -23,22 +23,21 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@Api(tags = "mes请求wms")
|
||||
@RequestMapping("/api/to/wms")
|
||||
@RequestMapping("/api")
|
||||
@Slf4j
|
||||
@SaIgnore
|
||||
public class MesToWmsController {
|
||||
private final MesToWmsService mesToWmsService;
|
||||
|
||||
@PostMapping("/workWorder")
|
||||
@PostMapping("/workOrder")
|
||||
@Log("mes下发工单")
|
||||
@ApiOperation("mes下发工单")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> issueWorkOrderForMes(@RequestBody JSONObject param) {
|
||||
mesToWmsService.issueWorkOrderForMes(param);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
return new ResponseEntity<>(mesToWmsService.issueWorkOrderForMes(param), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/workWorder/finish")
|
||||
@PostMapping("/workOrder/finish")
|
||||
@Log("mes获取工单反馈")
|
||||
@ApiOperation("mes获取工单反馈")
|
||||
@SaIgnore
|
||||
@@ -54,11 +53,35 @@ public class MesToWmsController {
|
||||
return new ResponseEntity<>(mesToWmsService.gjxAutomaticForMes(param), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/yqxUp")
|
||||
@Log("油漆线上料")
|
||||
@ApiOperation("油漆线上料")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> yqxAutomaticForMes(@RequestBody JSONObject param) {
|
||||
return new ResponseEntity<>(mesToWmsService.yqxAutomaticForMes(param), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/hkxDown")
|
||||
@Log("豪凯自动线下料")
|
||||
@ApiOperation("豪凯自动线下料")
|
||||
@Log("1.5成品入库")
|
||||
@ApiOperation("1.5成品入库")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> hawKeAutomaticForMes(@RequestBody JSONObject param) {
|
||||
return new ResponseEntity<>(mesToWmsService.hawKeAutomaticForMes(param), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/finishMaterialOut")
|
||||
@Log("1.5成品出库")
|
||||
@ApiOperation("1.5成品出库")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> finishMaterialOut(@RequestBody JSONObject param) {
|
||||
return new ResponseEntity<>(mesToWmsService.finishMaterialOut(param), HttpStatus.OK);
|
||||
}
|
||||
@PostMapping("/releaseCpPointArea")
|
||||
@Log("成品出库区域释放")
|
||||
@ApiOperation("成品出库区域释放")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> releaseCpPointArea(@RequestBody JSONObject param) {
|
||||
return new ResponseEntity<>(mesToWmsService.releaseCpPointArea(param), HttpStatus.OK);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.nl.wms.ext.mes.rest;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -21,7 +22,7 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@Api(tags = "wms请求mes")
|
||||
@RequestMapping("/api/to/wms")
|
||||
@RequestMapping("/api")
|
||||
@Slf4j
|
||||
@SaIgnore
|
||||
public class WmsToMesController {
|
||||
@@ -45,12 +46,12 @@ public class WmsToMesController {
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
@PostMapping("/device")
|
||||
@Log("从MES系统获取设备基础信息")
|
||||
@ApiOperation("从MES系统获取设备基础信息")
|
||||
@PostMapping("/task/feedback")
|
||||
@Log("任务反馈")
|
||||
@ApiOperation("任务反馈")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> getDeviceInfoForMes() {
|
||||
wmsToMesService.getDeviceInfoForMes();
|
||||
public ResponseEntity<Object> taskFeedback(JSONObject param) {
|
||||
wmsToMesService.taskFeedback(param);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,11 +12,17 @@ public interface MesToWmsService {
|
||||
/**
|
||||
* mes下发工单
|
||||
*/
|
||||
void issueWorkOrderForMes(JSONObject param);
|
||||
JSONObject issueWorkOrderForMes(JSONObject param);
|
||||
|
||||
JSONObject feedbackWorkOrderToMes(JSONObject param);
|
||||
|
||||
JSONObject hawKeAutomaticForMes(JSONObject param);
|
||||
|
||||
JSONObject gjxAutomaticForMes(JSONObject param);
|
||||
|
||||
JSONObject yqxAutomaticForMes(JSONObject param);
|
||||
|
||||
JSONObject finishMaterialOut(JSONObject param);
|
||||
|
||||
JSONObject releaseCpPointArea(JSONObject param);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package org.nl.wms.ext.mes.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: wms对接mes的业务层
|
||||
@@ -17,8 +19,5 @@ public interface WmsToMesService {
|
||||
*/
|
||||
void getUnitInfoForMes();
|
||||
|
||||
/**
|
||||
* 设备
|
||||
*/
|
||||
void getDeviceInfoForMes();
|
||||
void taskFeedback(JSONObject param);
|
||||
}
|
||||
|
||||
@@ -1,10 +1,28 @@
|
||||
package org.nl.wms.ext.mes.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.common.utils.SecurityUtils;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.modules.wql.util.SpringContextHolder;
|
||||
import org.nl.wms.basedata.service.MaterialbaseService;
|
||||
import org.nl.wms.basedata.service.dto.MaterialbaseDto;
|
||||
import org.nl.wms.ext.acs.service.AcsToWmsService;
|
||||
import org.nl.wms.ext.mes.service.MesToWmsService;
|
||||
import org.nl.wms.pdm.service.DeviceService;
|
||||
import org.nl.wms.pdm.service.dto.DeviceDto;
|
||||
import org.nl.wms.sch.tasks.callEmpty.GjxCallEmpVehicleTask;
|
||||
import org.nl.wms.sch.tasks.cpOut.CpOutTask;
|
||||
import org.slf4j.MDC;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
@@ -15,28 +33,126 @@ import org.springframework.stereotype.Service;
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class MesToWmsServiceImpl implements MesToWmsService {
|
||||
private final AcsToWmsService acsToWmsService;
|
||||
private final MaterialbaseService materialbaseService;
|
||||
@Override
|
||||
public void issueWorkOrderForMes(JSONObject param) {
|
||||
//
|
||||
@Transactional
|
||||
public JSONObject issueWorkOrderForMes(JSONObject param) {
|
||||
MDC.put("log_file_type", "MES下发工单");
|
||||
log.info("mes传来工单信息:" + param);
|
||||
WQLObject workOrderTab = WQLObject.getWQLObject("pdm_bd_workorder");
|
||||
WQLObject deviceTab = WQLObject.getWQLObject("pdm_bi_device");
|
||||
if (ObjectUtil.isEmpty(param)) {
|
||||
throw new BadRequestException("工单不能为空");
|
||||
}
|
||||
MaterialbaseDto materialCode = materialbaseService.findByCode(param.getString("material_code"));
|
||||
JSONObject deviceCode = deviceTab.query("extend_code = '" + param.getString("device_code") + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(deviceCode)) {
|
||||
throw new BadRequestException("设备编码错误!");
|
||||
}
|
||||
param.put("workorder_id", IdUtil.getSnowflake(1,1).nextIdStr());
|
||||
param.put("plan_qty", param.getString("qty"));
|
||||
param.put("order_status", param.getString("workorder_status"));
|
||||
param.put("material_id", materialCode.getMaterial_id());
|
||||
param.put("device_id", deviceCode.getString("device_id"));
|
||||
param.put("device_code", deviceCode.getString("device_code"));
|
||||
param.put("produce_date", DateUtil.format(new Date(), "yyyy-MM-dd"));
|
||||
param.put("create_id", "3");
|
||||
param.put("create_name", "MES系统");
|
||||
param.put("create_time", param.getString("create_time"));
|
||||
workOrderTab.insert(param);
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("status", 200);
|
||||
result.put("message", "操作成功");
|
||||
MDC.remove("log_file_type");
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject feedbackWorkOrderToMes(JSONObject param) {
|
||||
return null;
|
||||
log.info("mes传来工单信息:", param);
|
||||
WQLObject workOrderTab = WQLObject.getWQLObject("pdm_bd_workorder");
|
||||
if (ObjectUtil.isEmpty(param)) {
|
||||
throw new BadRequestException("工单不能为空");
|
||||
}
|
||||
JSONObject jsonObject = workOrderTab
|
||||
.query("workorder_code = '" + param.getString("workorder_code") + "'")
|
||||
.uniqueResult(0);
|
||||
jsonObject.put("order_status", param.getString("workorder_status"));
|
||||
jsonObject.put("update_optid", "3");
|
||||
jsonObject.put("update_optname", "MES系统");
|
||||
jsonObject.put("update_time", DateUtil.now());
|
||||
jsonObject.put("realproduceend_date", DateUtil.now());
|
||||
workOrderTab.update(jsonObject);
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("status", 200);
|
||||
result.put("message", "操作成功");
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject hawKeAutomaticForMes(JSONObject param) {
|
||||
return null;
|
||||
log.info("mes成品入库参数:" + param);
|
||||
param.put("type", "8");
|
||||
acsToWmsService.apply(param);
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("status", 200);
|
||||
result.put("message", "操作成功");
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject gjxAutomaticForMes(JSONObject param) {
|
||||
log.info("mes供给线下料参数:" + param);
|
||||
param.put("type", "2");
|
||||
acsToWmsService.apply(param);
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("status", 200);
|
||||
result.put("message", "操作成功");
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject yqxAutomaticForMes(JSONObject param) {
|
||||
log.info("mes油漆线上料参数:" + param);
|
||||
param.put("type", "4");
|
||||
acsToWmsService.apply(param);
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("status", 200);
|
||||
result.put("message", "操作成功");
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject finishMaterialOut(JSONObject param) {
|
||||
// 创建任务
|
||||
CpOutTask taskBean = SpringContextHolder.getBean(CpOutTask.class);
|
||||
taskBean.createTask(param);
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("status", 200);
|
||||
result.put("message", "操作成功");
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject releaseCpPointArea(JSONObject param) {
|
||||
if (ObjectUtil.isEmpty(param) || ObjectUtil.isEmpty(param.getString("out_store_order"))) {
|
||||
throw new BadRequestException("参数不能为空");
|
||||
}
|
||||
WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point");
|
||||
JSONObject entity = new JSONObject();
|
||||
entity.put("point_status", "1");
|
||||
entity.put("material_id", "");
|
||||
entity.put("pcsn", "");
|
||||
entity.put("ivt_qty", "0");
|
||||
entity.put("instorage_time", "");
|
||||
entity.put("vehicle_type", "");
|
||||
entity.put("vehicle_code", "");
|
||||
entity.put("update_time", DateUtil.now());
|
||||
pointTab.update(entity, "region_code = 'CPCKQ01' and lock_type = '1'");
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("status", 200);
|
||||
result.put("message", "操作成功");
|
||||
result.put("data", param);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.nl.wms.ext.mes.service.impl;
|
||||
|
||||
import cn.hutool.http.HttpUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.wms.ext.mes.service.WmsToMesService;
|
||||
@@ -31,9 +32,13 @@ public class WmsToMesServiceImpl implements WmsToMesService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getDeviceInfoForMes() {
|
||||
String url = http + "api/device";
|
||||
String result = HttpUtil.post(url, "");
|
||||
System.out.println(result);
|
||||
public void taskFeedback(JSONObject param) {
|
||||
String url = http + "api/task";
|
||||
try {
|
||||
// String result = HttpUtil.post(url, param);
|
||||
} catch (Exception e) {
|
||||
log.error("反馈MES异常");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
package org.nl.wms.pda.ssxsendmaterial.rest;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.modules.logging.annotation.Log;
|
||||
import org.nl.wms.pda.ssxsendmaterial.service.SSXSendMaterialService;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 包装输送线送料
|
||||
* @Date: 2023/6/15
|
||||
*/
|
||||
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@Api(tags = "手持送料")
|
||||
@RequestMapping("api/pda/ssx/sendMaterial")
|
||||
@Slf4j
|
||||
public class SSXSendMaterialController {
|
||||
|
||||
private final SSXSendMaterialService sendMaterialService;
|
||||
@PostMapping("/queryMaterial")
|
||||
@Log("查询物料")
|
||||
@ApiOperation("查询物料")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> queryMaterial() {
|
||||
return new ResponseEntity<>(sendMaterialService.queryMaterial(), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/queryVehicle")
|
||||
@Log("查询载具类型")
|
||||
@ApiOperation("查询载具类型")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> queryVehicle() {
|
||||
return new ResponseEntity<>(sendMaterialService.queryVehicle(), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/confirm")
|
||||
@Log("送料确定")
|
||||
@ApiOperation("送料确定")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> confirm(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(sendMaterialService.confirm(whereJson), HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package org.nl.wms.pda.ssxsendmaterial.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description:
|
||||
* @Date: 2023/6/15
|
||||
*/
|
||||
public interface SSXSendMaterialService {
|
||||
JSONObject queryMaterial();
|
||||
|
||||
JSONObject confirm(JSONObject whereJson);
|
||||
|
||||
JSONObject queryVehicle();
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
package org.nl.wms.pda.ssxsendmaterial.service.impl;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.wms.ext.acs.service.AcsToWmsService;
|
||||
import org.nl.wms.pda.ssxsendmaterial.service.SSXSendMaterialService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 输送线送料
|
||||
* @Date: 2023/6/15
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class SSXSendMaterialServiceImpl implements SSXSendMaterialService {
|
||||
private final AcsToWmsService acsToWmsService;
|
||||
@Override
|
||||
public JSONObject queryMaterial() {
|
||||
JSONObject result = new JSONObject();
|
||||
JSONArray mdMeMaterialbase = WQLObject.getWQLObject("md_me_materialbase").query("is_used = '1' and is_delete = '0'").getResultJSONArray(0);
|
||||
result.put("result", mdMeMaterialbase);
|
||||
result.put("code", "1");
|
||||
result.put("desc", "查询成功");
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public JSONObject confirm(JSONObject param) {
|
||||
JSONObject result = new JSONObject();
|
||||
String materialId = param.getString("material_id");
|
||||
String vehicle_type = param.getString("value");
|
||||
String qty = param.getString("qty");
|
||||
if (ObjectUtil.isEmpty(materialId)) {
|
||||
// 物料不能为空
|
||||
throw new BadRequestException("物料不能为空");
|
||||
}
|
||||
// 执行创建任务并下发给acs: 1001 -> 1004
|
||||
param.put("point_code", "BZSSX1001");
|
||||
param.put("material_id", materialId);
|
||||
param.put("vehicle_type", vehicle_type);
|
||||
param.put("qty", qty);
|
||||
param.put("type", "11");// 组盘信息:task_id
|
||||
// 2、调用接口
|
||||
JSONObject json = acsToWmsService.apply(param);
|
||||
if (ObjectUtil.isEmpty(json) || StrUtil.equals(json.getString("status"), "200")) {
|
||||
result.put("result", "");
|
||||
result.put("code", "1");
|
||||
result.put("desc", "操作成功");
|
||||
} else {
|
||||
result.put("result", "");
|
||||
result.put("code", "0");
|
||||
result.put("desc", "操作失败:" + json.getString("message"));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject queryVehicle() {
|
||||
JSONObject result = new JSONObject();
|
||||
WQLObject dictTab = WQLObject.getWQLObject("sys_dict_detail");
|
||||
JSONArray dictSort = dictTab.query("name = 'vehicle_type' and value in ('4','5','6')", "dict_sort").getResultJSONArray(0);
|
||||
result.put("result", dictSort);
|
||||
result.put("code", "1");
|
||||
result.put("desc", "操作成功");
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -1,323 +1,323 @@
|
||||
package org.nl.wms.sch.tasks.autoTask;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.config.MapOf;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.common.utils.SecurityUtils;
|
||||
import org.nl.modules.system.util.CodeUtil;
|
||||
import org.nl.modules.wql.WQL;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.wms.sch.SchTaskDto;
|
||||
import org.nl.wms.sch.manage.AbstractAcsTask;
|
||||
import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||
import org.nl.wms.sch.tasks.AcsTaskDto;
|
||||
import org.nl.wms.util.IdUtil;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 油漆线缓存区自动叫料
|
||||
* @Date: 2023/2/25
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class YqxhcqCallMaterialTask extends AbstractAcsTask {
|
||||
private final String THIS_CLASS = YqxhcqCallMaterialTask.class.getName();
|
||||
@Override
|
||||
public List<AcsTaskDto> addTask() {
|
||||
/*
|
||||
* 下发给ACS时需要特殊处理
|
||||
*/
|
||||
JSONArray arr = WQLObject.getWQLObject("SCH_BASE_Task").query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0'").getResultJSONArray(0);
|
||||
|
||||
ArrayList<AcsTaskDto> acsTaskArr = new ArrayList<>();
|
||||
for (int i = 0; i < arr.size(); i++) {
|
||||
JSONObject json = arr.getJSONObject(i);
|
||||
//养生A区发给ACS需要新的点位(2101-03-1----->21011-03-1)
|
||||
String point_code = json.getString("point_code1");
|
||||
if (ObjectUtil.isEmpty(point_code)) {
|
||||
// 证明是等待点
|
||||
point_code = json.getString("point_code3");
|
||||
}
|
||||
String newPoint = point_code.substring(0, 4) + "2" + point_code.substring(4, 10);
|
||||
|
||||
AcsTaskDto dto = AcsTaskDto.builder()
|
||||
.task_id(json.getString("task_id"))
|
||||
.task_code(json.getString("task_code"))
|
||||
.task_type(json.getString("acs_task_type"))
|
||||
.start_device_code(newPoint)
|
||||
.next_device_code(json.getString("point_code2"))
|
||||
.vehicle_code(json.getString("vehicle_code"))
|
||||
.vehicle_type(json.getString("vehicle_type"))
|
||||
.priority(json.getString("priority"))
|
||||
.remark(json.getString("remark"))
|
||||
.build();
|
||||
acsTaskArr.add(dto);
|
||||
}
|
||||
return acsTaskArr;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateTaskStatus(JSONObject task, String status) {
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
|
||||
|
||||
String task_id = task.getString("task_id");
|
||||
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
|
||||
// 物料点
|
||||
JSONObject material_point = pointTab.query("point_code = '" + taskObj.getString("point_code1") + "'").uniqueResult(0);
|
||||
//任务取消
|
||||
if (StrUtil.equals(status, "0")) {
|
||||
// 取消删除任务
|
||||
if (StrUtil.equals(taskObj.getString("task_status"), TaskStatusEnum.FINISHED.getCode())) {
|
||||
throw new BadRequestException("已完成不能取消!");
|
||||
}
|
||||
taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
taskObj.put("remark", "已取消");
|
||||
taskTab.update(taskObj);
|
||||
|
||||
if (ObjectUtil.isEmpty(material_point)) return;
|
||||
// 点位解锁
|
||||
material_point.put("lock_type", "1");
|
||||
pointTab.update(material_point);
|
||||
}
|
||||
|
||||
if ("1".equals(status)) {
|
||||
// 更新任务状态为执行中
|
||||
taskObj.put("task_status", TaskStatusEnum.EXECUTING.getCode());
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskObj.put("car_no", taskObj.getString("car_no"));
|
||||
taskTab.update(taskObj);
|
||||
}
|
||||
|
||||
if (StrUtil.equals(status, "2")) {
|
||||
//完成后
|
||||
// 物料点位解锁 并设置空位
|
||||
material_point.put("lock_type", "1");
|
||||
material_point.put("point_status", "1");
|
||||
material_point.put("material_id", "");
|
||||
material_point.put("vehicle_type", "");
|
||||
material_point.put("vehicle_code", "");
|
||||
pointTab.update(material_point);
|
||||
|
||||
// 油漆线缓存点位更新
|
||||
JSONObject yqx_point = pointTab.query("point_code = '" + taskObj.getString("point_code2") + "'").uniqueResult(0);
|
||||
yqx_point.put("point_status", "3");
|
||||
yqx_point.put("material_id", taskObj.getString("material_id"));
|
||||
yqx_point.put("vehicle_type", taskObj.getString("vehicle_type"));
|
||||
yqx_point.put("material_qty", taskObj.getString("material_qty"));
|
||||
yqx_point.put("vehicle_qty", taskObj.getString("vehicle_qty"));
|
||||
pointTab.update(yqx_point);
|
||||
|
||||
// 更改任务状态为完成
|
||||
taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskObj.put("remark", "任务完成");
|
||||
taskTab.update(taskObj);
|
||||
|
||||
if (ObjectUtil.isEmpty(material_point)) return;
|
||||
|
||||
//区域出入表【st_ivt_regionIO】
|
||||
WQLObject regionIoTab = WQLObject.getWQLObject("st_ivt_regionIO");
|
||||
JSONObject regionIoObj = new JSONObject();
|
||||
regionIoObj.put("iostorinv_id", IdUtil.getLongId());
|
||||
regionIoObj.put("bill_code", CodeUtil.getNewCode("IN_STORE_CODE"));
|
||||
regionIoObj.put("buss_date", DateUtil.today());
|
||||
regionIoObj.put("io_type", "2");
|
||||
regionIoObj.put("region_id", material_point.getString("region_id"));
|
||||
regionIoObj.put("region_code", material_point.getString("region_code"));
|
||||
regionIoObj.put("region_name", material_point.getString("region_name"));
|
||||
regionIoObj.put("material_id", taskObj.getString("material_id"));
|
||||
regionIoObj.put("vehicle_code", taskObj.getString("vehicle_code"));
|
||||
regionIoObj.put("qty", taskObj.getString("material_qty"));
|
||||
regionIoObj.put("bill_status", "3");
|
||||
regionIoObj.put("start_point_code", taskObj.getString("point_code1"));
|
||||
regionIoObj.put("end_point_code", taskObj.getString("point_code2"));
|
||||
regionIoObj.put("create_mode", "2");
|
||||
regionIoObj.put("pcsn", DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd"));
|
||||
regionIoObj.put("create_id", SecurityUtils.getCurrentUserId());
|
||||
regionIoObj.put("create_name", SecurityUtils.getCurrentNickName());
|
||||
regionIoObj.put("create_time", DateUtil.now());
|
||||
regionIoTab.insert(regionIoObj);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void autoCreate() {
|
||||
// 自动叫料
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder");
|
||||
// 找终点:四个缓存区按顺序获取一个
|
||||
JSONObject endPoint = WQL.getWO("YQX_AUTOTASK").addParamMap(MapOf.of("flag","1")).process().uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(endPoint)) return;
|
||||
String point_code2 = endPoint.getString("point_code");
|
||||
// 判断任务
|
||||
JSONObject taskObj = taskTab.query("is_delete='0' and point_code2 = '" + point_code2 + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(taskObj)) throw new BadRequestException("当前点位" + point_code2 + "存在未完成的任务");
|
||||
// 判断工单
|
||||
JSONObject workOrderObj = workOrderTab.query("device_code = '" + endPoint.getString("device_code") + "' and order_status = '3' and is_delete ='0'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(workOrderObj)) throw new BadRequestException("该设备当前未生产或者已删除");
|
||||
// 创建任务
|
||||
SchTaskDto dto = SchTaskDto.builder()
|
||||
.task_id(IdUtil.getLongId())
|
||||
.task_code(CodeUtil.getNewCode("TASK_CODE"))
|
||||
.task_type("task_type")
|
||||
.task_name("油漆线叫料")
|
||||
.acs_task_type("2")//2楼AGV普通任务
|
||||
.priority("7")
|
||||
.task_status(TaskStatusEnum.SURE_END.getCode())
|
||||
.point_code2(point_code2)
|
||||
.vehicle_qty(1)
|
||||
.material_info_id(workOrderObj.getLong("workorder_id"))
|
||||
.material_id(workOrderObj.getLong("material_id"))
|
||||
.vehicle_type(workOrderObj.getString("vehicle_type"))
|
||||
.handle_class(THIS_CLASS)
|
||||
.create_time(DateUtil.now())
|
||||
.remark("任务创建成功")
|
||||
.build();
|
||||
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
|
||||
taskTab.insert(json);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void findStartPoint() {
|
||||
// 到养生A区找起点:根据物料、载具类型去查找,均在工单中
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表
|
||||
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); // 点位表
|
||||
JSONArray taskArr = taskTab.query("handle_class = '" + THIS_CLASS + "'and is_delete = '0' and task_status = '" + TaskStatusEnum.SURE_END.getCode() + "'").getResultJSONArray(0);
|
||||
for (int i = 0; i < taskArr.size(); i++) {
|
||||
JSONObject taskObj = taskArr.getJSONObject(i);
|
||||
String material_id = taskObj.getString("material_id");
|
||||
String vehicle_type = taskObj.getString("vehicle_type");
|
||||
JSONObject queryParam = new JSONObject();
|
||||
queryParam.put("flag", "1");
|
||||
queryParam.put("material_id", material_id);
|
||||
queryParam.put("region_code", "YSQA01");
|
||||
queryParam.put("vehicle_type", vehicle_type );
|
||||
// 查找养生A区,如果最后一个位置有货,直接搬走,如果没货,就作为等待点。先让agv到达等待点
|
||||
// 1、根据物料id查找养生A区物料点
|
||||
JSONObject materialPoint = WQL.getWO("QSCH_yqxCallMAterial_01").addParamMap(queryParam).process().uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(materialPoint)) {
|
||||
// 2、判断是否在等待点,如果不是,先去等待点,是直接搬运
|
||||
// 2.1、获取当前快排列的等待点 row:排
|
||||
JSONObject waitPoint = WQL.getWO("QSCH_yqxCallMAterial_01")
|
||||
.addParamMap(MapOf.of("flag", "2", "block_num", materialPoint.getString("block_num"),
|
||||
"row_num", materialPoint.getString("row_num"),
|
||||
"region_code", "YSQA01")).process()
|
||||
.uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(waitPoint)) throw new BadRequestException("油漆线缓存区判断等待点异常!");
|
||||
// 2.2、判断等待点
|
||||
if (!waitPoint.getString("waitcol").equals(materialPoint.getString("col_num"))) {
|
||||
// 获取等待点
|
||||
JSONObject waitPoints = pointTab.query("block_num = '" + materialPoint.getString("block_num") + "' " +
|
||||
"AND row_num = '" + materialPoint.getString("row_num") + "' " +
|
||||
"AND col_num = '" + waitPoint.getString("waitcol") + "' " +
|
||||
"AND is_used = '1' " +
|
||||
"AND is_delete = '0' " +
|
||||
"AND lock_type = '1' " +
|
||||
"AND region_code = 'YSQA01'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(waitPoints)) {
|
||||
taskObj.put("remark", "等待点已被占用");
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskTab.update(taskObj);
|
||||
continue;
|
||||
}
|
||||
// 等待点上锁
|
||||
// waitPoints.put("lock_type", "2");
|
||||
pointTab.update(waitPoints);
|
||||
|
||||
taskObj.put("point_code3", waitPoints.getString("point_code"));
|
||||
taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
|
||||
taskObj.put("acs_task_type", "3");
|
||||
taskObj.put("remark", "等待点");
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskTab.update(taskObj);
|
||||
continue;
|
||||
}
|
||||
// 是等待点直接搬走
|
||||
// 物料点位上锁
|
||||
materialPoint.put("lock_type", "2");
|
||||
pointTab.update(materialPoint);
|
||||
|
||||
taskObj.put("point_code1", materialPoint.getString("point_code"));
|
||||
taskObj.put("material_qty", materialPoint.getString("ivt_qty"));
|
||||
taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
|
||||
taskObj.put("acs_task_type", "2");
|
||||
taskObj.put("remark", "等待点搬运物料");
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskTab.update(taskObj);
|
||||
} else {
|
||||
taskObj.put("remark", "养生A区无所需物料");
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskTab.update(taskObj);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String createTask(JSONObject whereJson) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void forceFinish(String task_id) {
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(taskObj)) throw new BadRequestException("未找到该任务或者任务已完成!");
|
||||
this.updateTaskStatus(taskObj,"2");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel(String task_id) {
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(taskObj)) throw new BadRequestException("任务已完成不能取消!");
|
||||
this.updateTaskStatus(taskObj,"0");
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public String againApply(String task_id) {
|
||||
// 二次下发任务
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表
|
||||
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); // 点位表
|
||||
JSONObject hcTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(hcTask)) throw new BadRequestException("任务ID: " + task_id + "的任务不存在!");
|
||||
JSONObject waitPoint = pointTab.query("point_code = '" + hcTask.getString("point_code3") + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(waitPoint)) throw new BadRequestException("油漆线二次下发等待点编码错误!");
|
||||
JSONObject materialPoint = WQL.getWO("QSCH_yqxCallMAterial_01").addParamMap(MapOf.of(
|
||||
"flag", "3", "material_id", hcTask.getString("material_id"),
|
||||
"region_code", "YSQA01", "vehicle_type", hcTask.getString("vehicle_type"),
|
||||
"block_num", hcTask.getString("block_num"), "col_num", hcTask.getString("col_num")
|
||||
)).process().uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(materialPoint)) throw new BadRequestException("养生A区暂无所需物料!");
|
||||
String pointCode = materialPoint.getString("point_code");
|
||||
// 修改任务
|
||||
hcTask.put("point_code1", pointCode);
|
||||
hcTask.put("remark", "养生A区:" + pointCode);
|
||||
taskTab.update(hcTask);
|
||||
// 锁住点位
|
||||
materialPoint.put("lock_type", "2");
|
||||
pointTab.update(materialPoint);
|
||||
// 点位处理
|
||||
//养生A区发给ACS需要新的点位(2101-03-1----->21011-03-1)2812
|
||||
String newPoint = pointCode.substring(0, 4) + "2" + pointCode.substring(4, 10);
|
||||
return newPoint;
|
||||
}
|
||||
}
|
||||
//package org.nl.wms.sch.tasks.autoTask;
|
||||
//
|
||||
//import cn.hutool.core.date.DateUtil;
|
||||
//import cn.hutool.core.util.ObjectUtil;
|
||||
//import cn.hutool.core.util.StrUtil;
|
||||
//import com.alibaba.fastjson.JSON;
|
||||
//import com.alibaba.fastjson.JSONArray;
|
||||
//import com.alibaba.fastjson.JSONObject;
|
||||
//import lombok.RequiredArgsConstructor;
|
||||
//import lombok.extern.slf4j.Slf4j;
|
||||
//import org.nl.config.MapOf;
|
||||
//import org.nl.modules.common.exception.BadRequestException;
|
||||
//import org.nl.modules.common.utils.SecurityUtils;
|
||||
//import org.nl.modules.system.util.CodeUtil;
|
||||
//import org.nl.modules.wql.WQL;
|
||||
//import org.nl.modules.wql.core.bean.WQLObject;
|
||||
//import org.nl.wms.sch.SchTaskDto;
|
||||
//import org.nl.wms.sch.manage.AbstractAcsTask;
|
||||
//import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||
//import org.nl.wms.sch.tasks.AcsTaskDto;
|
||||
//import org.nl.wms.util.IdUtil;
|
||||
//import org.springframework.stereotype.Service;
|
||||
//import org.springframework.transaction.annotation.Transactional;
|
||||
//
|
||||
//import java.util.ArrayList;
|
||||
//import java.util.List;
|
||||
//
|
||||
///**
|
||||
// * @Author: lyd
|
||||
// * @Description: 油漆线缓存区自动叫料
|
||||
// * @Date: 2023/2/25
|
||||
// */
|
||||
//@Service
|
||||
//@RequiredArgsConstructor
|
||||
//@Slf4j
|
||||
//public class YqxhcqCallMaterialTask extends AbstractAcsTask {
|
||||
// private final String THIS_CLASS = YqxhcqCallMaterialTask.class.getName();
|
||||
// @Override
|
||||
// public List<AcsTaskDto> addTask() {
|
||||
// /*
|
||||
// * 下发给ACS时需要特殊处理
|
||||
// */
|
||||
// JSONArray arr = WQLObject.getWQLObject("SCH_BASE_Task").query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0'").getResultJSONArray(0);
|
||||
//
|
||||
// ArrayList<AcsTaskDto> acsTaskArr = new ArrayList<>();
|
||||
// for (int i = 0; i < arr.size(); i++) {
|
||||
// JSONObject json = arr.getJSONObject(i);
|
||||
// //养生A区发给ACS需要新的点位(2101-03-1----->21011-03-1)
|
||||
// String point_code = json.getString("point_code1");
|
||||
// if (ObjectUtil.isEmpty(point_code)) {
|
||||
// // 证明是等待点
|
||||
// point_code = json.getString("point_code3");
|
||||
// }
|
||||
// String newPoint = point_code.substring(0, 4) + "2" + point_code.substring(4, 10);
|
||||
//
|
||||
// AcsTaskDto dto = AcsTaskDto.builder()
|
||||
// .task_id(json.getString("task_id"))
|
||||
// .task_code(json.getString("task_code"))
|
||||
// .task_type(json.getString("acs_task_type"))
|
||||
// .start_device_code(newPoint)
|
||||
// .next_device_code(json.getString("point_code2"))
|
||||
// .vehicle_code(json.getString("vehicle_code"))
|
||||
// .vehicle_type(json.getString("vehicle_type"))
|
||||
// .priority(json.getString("priority"))
|
||||
// .remark(json.getString("remark"))
|
||||
// .build();
|
||||
// acsTaskArr.add(dto);
|
||||
// }
|
||||
// return acsTaskArr;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
// public void updateTaskStatus(JSONObject task, String status) {
|
||||
// WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
// WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
|
||||
//
|
||||
// String task_id = task.getString("task_id");
|
||||
// JSONObject taskObj = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
|
||||
// // 物料点
|
||||
// JSONObject material_point = pointTab.query("point_code = '" + taskObj.getString("point_code1") + "'").uniqueResult(0);
|
||||
// //任务取消
|
||||
// if (StrUtil.equals(status, "0")) {
|
||||
// // 取消删除任务
|
||||
// if (StrUtil.equals(taskObj.getString("task_status"), TaskStatusEnum.FINISHED.getCode())) {
|
||||
// throw new BadRequestException("已完成不能取消!");
|
||||
// }
|
||||
// taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
// taskObj.put("remark", "已取消");
|
||||
// taskTab.update(taskObj);
|
||||
//
|
||||
// if (ObjectUtil.isEmpty(material_point)) return;
|
||||
// // 点位解锁
|
||||
// material_point.put("lock_type", "1");
|
||||
// pointTab.update(material_point);
|
||||
// }
|
||||
//
|
||||
// if ("1".equals(status)) {
|
||||
// // 更新任务状态为执行中
|
||||
// taskObj.put("task_status", TaskStatusEnum.EXECUTING.getCode());
|
||||
// taskObj.put("update_time", DateUtil.now());
|
||||
// taskObj.put("car_no", taskObj.getString("car_no"));
|
||||
// taskTab.update(taskObj);
|
||||
// }
|
||||
//
|
||||
// if (StrUtil.equals(status, "2")) {
|
||||
// //完成后
|
||||
// // 物料点位解锁 并设置空位
|
||||
// material_point.put("lock_type", "1");
|
||||
// material_point.put("point_status", "1");
|
||||
// material_point.put("material_id", "");
|
||||
// material_point.put("vehicle_type", "");
|
||||
// material_point.put("vehicle_code", "");
|
||||
// pointTab.update(material_point);
|
||||
//
|
||||
// // 油漆线缓存点位更新
|
||||
// JSONObject yqx_point = pointTab.query("point_code = '" + taskObj.getString("point_code2") + "'").uniqueResult(0);
|
||||
// yqx_point.put("point_status", "3");
|
||||
// yqx_point.put("material_id", taskObj.getString("material_id"));
|
||||
// yqx_point.put("vehicle_type", taskObj.getString("vehicle_type"));
|
||||
// yqx_point.put("material_qty", taskObj.getString("material_qty"));
|
||||
// yqx_point.put("vehicle_qty", taskObj.getString("vehicle_qty"));
|
||||
// pointTab.update(yqx_point);
|
||||
//
|
||||
// // 更改任务状态为完成
|
||||
// taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
// taskObj.put("update_time", DateUtil.now());
|
||||
// taskObj.put("remark", "任务完成");
|
||||
// taskTab.update(taskObj);
|
||||
//
|
||||
// if (ObjectUtil.isEmpty(material_point)) return;
|
||||
//
|
||||
// //区域出入表【st_ivt_regionIO】
|
||||
// WQLObject regionIoTab = WQLObject.getWQLObject("st_ivt_regionIO");
|
||||
// JSONObject regionIoObj = new JSONObject();
|
||||
// regionIoObj.put("iostorinv_id", IdUtil.getLongId());
|
||||
// regionIoObj.put("bill_code", CodeUtil.getNewCode("IN_STORE_CODE"));
|
||||
// regionIoObj.put("buss_date", DateUtil.today());
|
||||
// regionIoObj.put("io_type", "2");
|
||||
// regionIoObj.put("region_id", material_point.getString("region_id"));
|
||||
// regionIoObj.put("region_code", material_point.getString("region_code"));
|
||||
// regionIoObj.put("region_name", material_point.getString("region_name"));
|
||||
// regionIoObj.put("material_id", taskObj.getString("material_id"));
|
||||
// regionIoObj.put("vehicle_code", taskObj.getString("vehicle_code"));
|
||||
// regionIoObj.put("qty", taskObj.getString("material_qty"));
|
||||
// regionIoObj.put("bill_status", "3");
|
||||
// regionIoObj.put("start_point_code", taskObj.getString("point_code1"));
|
||||
// regionIoObj.put("end_point_code", taskObj.getString("point_code2"));
|
||||
// regionIoObj.put("create_mode", "2");
|
||||
// regionIoObj.put("pcsn", DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd"));
|
||||
// regionIoObj.put("create_id", SecurityUtils.getCurrentUserId());
|
||||
// regionIoObj.put("create_name", SecurityUtils.getCurrentNickName());
|
||||
// regionIoObj.put("create_time", DateUtil.now());
|
||||
// regionIoTab.insert(regionIoObj);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
// public void autoCreate() {
|
||||
// // 自动叫料
|
||||
// WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
// WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder");
|
||||
// // 找终点:四个缓存区按顺序获取一个
|
||||
// JSONObject endPoint = WQL.getWO("YQX_AUTOTASK").addParamMap(MapOf.of("flag","1")).process().uniqueResult(0);
|
||||
// if (ObjectUtil.isEmpty(endPoint)) return;
|
||||
// String point_code2 = endPoint.getString("point_code");
|
||||
// // 判断任务
|
||||
// JSONObject taskObj = taskTab.query("is_delete='0' and point_code2 = '" + point_code2 + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0);
|
||||
// if (ObjectUtil.isNotEmpty(taskObj)) throw new BadRequestException("当前点位" + point_code2 + "存在未完成的任务");
|
||||
// // 判断工单
|
||||
// JSONObject workOrderObj = workOrderTab.query("device_code = '" + endPoint.getString("device_code") + "' and order_status = '3' and is_delete ='0'").uniqueResult(0);
|
||||
// if (ObjectUtil.isEmpty(workOrderObj)) throw new BadRequestException("该设备当前未生产或者已删除");
|
||||
// // 创建任务
|
||||
// SchTaskDto dto = SchTaskDto.builder()
|
||||
// .task_id(IdUtil.getLongId())
|
||||
// .task_code(CodeUtil.getNewCode("TASK_CODE"))
|
||||
// .task_type("task_type")
|
||||
// .task_name("油漆线叫料")
|
||||
// .acs_task_type("2")//2楼AGV普通任务
|
||||
// .priority("7")
|
||||
// .task_status(TaskStatusEnum.SURE_END.getCode())
|
||||
// .point_code2(point_code2)
|
||||
// .vehicle_qty(1)
|
||||
// .material_info_id(workOrderObj.getLong("workorder_id"))
|
||||
// .material_id(workOrderObj.getLong("material_id"))
|
||||
// .vehicle_type(workOrderObj.getString("vehicle_type"))
|
||||
// .handle_class(THIS_CLASS)
|
||||
// .create_time(DateUtil.now())
|
||||
// .remark("任务创建成功")
|
||||
// .build();
|
||||
// JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
|
||||
// taskTab.insert(json);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
// public void findStartPoint() {
|
||||
// // 到养生A区找起点:根据物料、载具类型去查找,均在工单中
|
||||
// WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表
|
||||
// WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); // 点位表
|
||||
// JSONArray taskArr = taskTab.query("handle_class = '" + THIS_CLASS + "'and is_delete = '0' and task_status = '" + TaskStatusEnum.SURE_END.getCode() + "'").getResultJSONArray(0);
|
||||
// for (int i = 0; i < taskArr.size(); i++) {
|
||||
// JSONObject taskObj = taskArr.getJSONObject(i);
|
||||
// String material_id = taskObj.getString("material_id");
|
||||
// String vehicle_type = taskObj.getString("vehicle_type");
|
||||
// JSONObject queryParam = new JSONObject();
|
||||
// queryParam.put("flag", "1");
|
||||
// queryParam.put("material_id", material_id);
|
||||
// queryParam.put("region_code", "YSQA01");
|
||||
// queryParam.put("vehicle_type", vehicle_type );
|
||||
// // 查找养生A区,如果最后一个位置有货,直接搬走,如果没货,就作为等待点。先让agv到达等待点
|
||||
// // 1、根据物料id查找养生A区物料点
|
||||
// JSONObject materialPoint = WQL.getWO("QSCH_yqxCallMAterial_01").addParamMap(queryParam).process().uniqueResult(0);
|
||||
// if (ObjectUtil.isNotEmpty(materialPoint)) {
|
||||
// // 2、判断是否在等待点,如果不是,先去等待点,是直接搬运
|
||||
// // 2.1、获取当前快排列的等待点 row:排
|
||||
// JSONObject waitPoint = WQL.getWO("QSCH_yqxCallMAterial_01")
|
||||
// .addParamMap(MapOf.of("flag", "2", "block_num", materialPoint.getString("block_num"),
|
||||
// "row_num", materialPoint.getString("row_num"),
|
||||
// "region_code", "YSQA01")).process()
|
||||
// .uniqueResult(0);
|
||||
// if (ObjectUtil.isEmpty(waitPoint)) throw new BadRequestException("油漆线缓存区判断等待点异常!");
|
||||
// // 2.2、判断等待点
|
||||
// if (!waitPoint.getString("waitcol").equals(materialPoint.getString("col_num"))) {
|
||||
// // 获取等待点
|
||||
// JSONObject waitPoints = pointTab.query("block_num = '" + materialPoint.getString("block_num") + "' " +
|
||||
// "AND row_num = '" + materialPoint.getString("row_num") + "' " +
|
||||
// "AND col_num = '" + waitPoint.getString("waitcol") + "' " +
|
||||
// "AND is_used = '1' " +
|
||||
// "AND is_delete = '0' " +
|
||||
// "AND lock_type = '1' " +
|
||||
// "AND region_code = 'YSQA01'").uniqueResult(0);
|
||||
// if (ObjectUtil.isEmpty(waitPoints)) {
|
||||
// taskObj.put("remark", "等待点已被占用");
|
||||
// taskObj.put("update_time", DateUtil.now());
|
||||
// taskTab.update(taskObj);
|
||||
// continue;
|
||||
// }
|
||||
// // 等待点上锁
|
||||
//// waitPoints.put("lock_type", "2");
|
||||
// pointTab.update(waitPoints);
|
||||
//
|
||||
// taskObj.put("point_code3", waitPoints.getString("point_code"));
|
||||
// taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
|
||||
// taskObj.put("acs_task_type", "3");
|
||||
// taskObj.put("remark", "等待点");
|
||||
// taskObj.put("update_time", DateUtil.now());
|
||||
// taskTab.update(taskObj);
|
||||
// continue;
|
||||
// }
|
||||
// // 是等待点直接搬走
|
||||
// // 物料点位上锁
|
||||
// materialPoint.put("lock_type", "2");
|
||||
// pointTab.update(materialPoint);
|
||||
//
|
||||
// taskObj.put("point_code1", materialPoint.getString("point_code"));
|
||||
// taskObj.put("material_qty", materialPoint.getString("ivt_qty"));
|
||||
// taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
|
||||
// taskObj.put("acs_task_type", "2");
|
||||
// taskObj.put("remark", "等待点搬运物料");
|
||||
// taskObj.put("update_time", DateUtil.now());
|
||||
// taskTab.update(taskObj);
|
||||
// } else {
|
||||
// taskObj.put("remark", "养生A区无所需物料");
|
||||
// taskObj.put("update_time", DateUtil.now());
|
||||
// taskTab.update(taskObj);
|
||||
// }
|
||||
//
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public String createTask(JSONObject whereJson) {
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void forceFinish(String task_id) {
|
||||
// WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
// JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0);
|
||||
// if (ObjectUtil.isEmpty(taskObj)) throw new BadRequestException("未找到该任务或者任务已完成!");
|
||||
// this.updateTaskStatus(taskObj,"2");
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void cancel(String task_id) {
|
||||
// WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
// JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0);
|
||||
// if (ObjectUtil.isEmpty(taskObj)) throw new BadRequestException("任务已完成不能取消!");
|
||||
// this.updateTaskStatus(taskObj,"0");
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
// public String againApply(String task_id) {
|
||||
// // 二次下发任务
|
||||
// WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表
|
||||
// WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); // 点位表
|
||||
// JSONObject hcTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
|
||||
// if (ObjectUtil.isEmpty(hcTask)) throw new BadRequestException("任务ID: " + task_id + "的任务不存在!");
|
||||
// JSONObject waitPoint = pointTab.query("point_code = '" + hcTask.getString("point_code3") + "'").uniqueResult(0);
|
||||
// if (ObjectUtil.isEmpty(waitPoint)) throw new BadRequestException("油漆线二次下发等待点编码错误!");
|
||||
// JSONObject materialPoint = WQL.getWO("QSCH_yqxCallMAterial_01").addParamMap(MapOf.of(
|
||||
// "flag", "3", "material_id", hcTask.getString("material_id"),
|
||||
// "region_code", "YSQA01", "vehicle_type", hcTask.getString("vehicle_type"),
|
||||
// "block_num", hcTask.getString("block_num"), "col_num", hcTask.getString("col_num")
|
||||
// )).process().uniqueResult(0);
|
||||
// if (ObjectUtil.isEmpty(materialPoint)) throw new BadRequestException("养生A区暂无所需物料!");
|
||||
// String pointCode = materialPoint.getString("point_code");
|
||||
// // 修改任务
|
||||
// hcTask.put("point_code1", pointCode);
|
||||
// hcTask.put("remark", "养生A区:" + pointCode);
|
||||
// taskTab.update(hcTask);
|
||||
// // 锁住点位
|
||||
// materialPoint.put("lock_type", "2");
|
||||
// pointTab.update(materialPoint);
|
||||
// // 点位处理
|
||||
// //养生A区发给ACS需要新的点位(2101-03-1----->21011-03-1)2812
|
||||
// String newPoint = pointCode.substring(0, 4) + "2" + pointCode.substring(4, 10);
|
||||
// return newPoint;
|
||||
// }
|
||||
//}
|
||||
|
||||
@@ -10,7 +10,6 @@ import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.common.utils.SecurityUtils;
|
||||
import org.nl.modules.system.util.CodeUtil;
|
||||
import org.nl.modules.wql.WQL;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
@@ -38,7 +37,6 @@ import java.util.Map;
|
||||
public class GjxCallEmpVehicleTask extends AbstractAcsTask {
|
||||
private final String THIS_CLASS = GjxCallEmpVehicleTask.class.getName();
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateTaskStatus(JSONObject taskObj, String status) {
|
||||
@@ -47,7 +45,6 @@ public class GjxCallEmpVehicleTask extends AbstractAcsTask {
|
||||
|
||||
String task_id = taskObj.getString("task_id");
|
||||
JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
|
||||
|
||||
if (StrUtil.equals(status, "0")) {
|
||||
/*
|
||||
* 取消删除
|
||||
@@ -61,6 +58,13 @@ public class GjxCallEmpVehicleTask extends AbstractAcsTask {
|
||||
String point_code1 = jsonTask.getString("point_code1");
|
||||
String point_code2 = jsonTask.getString("point_code2");
|
||||
|
||||
if (ObjectUtil.isEmpty(point_code1)) {
|
||||
jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
jsonTask.put("update_time", DateUtil.now());
|
||||
taskTab.update(jsonTask);
|
||||
return;
|
||||
}
|
||||
|
||||
JSONObject jsonEnd = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);
|
||||
// 终点在叠盘架
|
||||
if (StrUtil.equals(jsonEnd.getString("region_id"), RegionTypeEnum.DPJQB.getId())) {
|
||||
@@ -117,7 +121,12 @@ public class GjxCallEmpVehicleTask extends AbstractAcsTask {
|
||||
// 判断终点在哪里
|
||||
String point_code1 = jsonTask.getString("point_code1");
|
||||
String point_code2 = jsonTask.getString("point_code2");
|
||||
|
||||
if (ObjectUtil.isEmpty(point_code1)) {
|
||||
jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
jsonTask.put("update_time", DateUtil.now());
|
||||
taskTab.update(jsonTask);
|
||||
return;
|
||||
}
|
||||
JSONObject jsonEnd = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);
|
||||
// 终点在叠盘架
|
||||
if (StrUtil.equals(jsonEnd.getString("region_id"), RegionTypeEnum.DPJQB.getId())) {
|
||||
|
||||
@@ -8,16 +8,20 @@ import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.config.MapOf;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.common.utils.SecurityUtils;
|
||||
import org.nl.modules.system.util.CodeUtil;
|
||||
import org.nl.modules.wql.WQL;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.modules.wql.util.SpringContextHolder;
|
||||
import org.nl.wms.ext.mes.service.WmsToMesService;
|
||||
import org.nl.wms.sch.SchTaskDto;
|
||||
import org.nl.wms.sch.manage.AbstractAcsTask;
|
||||
import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||
import org.nl.wms.sch.tasks.AcsTaskDto;
|
||||
import org.nl.wms.util.IdUtil;
|
||||
import org.slf4j.MDC;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@@ -34,10 +38,10 @@ import java.util.List;
|
||||
public class YqxCallMaterialTask extends AbstractAcsTask {
|
||||
private final String THIS_CLASS = YqxCallMaterialTask.class.getName();
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateTaskStatus(JSONObject task, String status) {
|
||||
WmsToMesService wmsToMesService = SpringContextHolder.getBean(WmsToMesService.class);
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
|
||||
|
||||
@@ -45,6 +49,8 @@ public class YqxCallMaterialTask extends AbstractAcsTask {
|
||||
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
|
||||
// 物料点
|
||||
JSONObject material_point = pointTab.query("point_code = '" + taskObj.getString("point_code1") + "'").uniqueResult(0);
|
||||
JSONObject feedback = new JSONObject();
|
||||
feedback.put("task_code", taskObj.getString("task_code"));
|
||||
//任务取消
|
||||
if (StrUtil.equals(status, "0")) {
|
||||
// 取消删除任务
|
||||
@@ -53,13 +59,11 @@ public class YqxCallMaterialTask extends AbstractAcsTask {
|
||||
}
|
||||
taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
taskObj.put("remark", "已取消");
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskTab.update(taskObj);
|
||||
|
||||
// 点位解锁
|
||||
if (ObjectUtil.isEmpty(material_point)) return;
|
||||
// 点位解锁
|
||||
material_point.put("lock_type", "1");
|
||||
material_point.put("update_time", DateUtil.now());
|
||||
pointTab.update(material_point);
|
||||
}
|
||||
|
||||
@@ -69,15 +73,35 @@ public class YqxCallMaterialTask extends AbstractAcsTask {
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskObj.put("car_no", taskObj.getString("car_no"));
|
||||
taskTab.update(taskObj);
|
||||
// 通知mes
|
||||
feedback.put("task_status", TaskStatusEnum.EXECUTING.getCode());
|
||||
feedback.put("struct_code", taskObj.getString("point_code1"));
|
||||
wmsToMesService.taskFeedback(feedback);
|
||||
}
|
||||
|
||||
if (StrUtil.equals(status, "2")) {
|
||||
//完成后
|
||||
// 物料点位解锁 并设置空位
|
||||
material_point.put("lock_type", "1");
|
||||
material_point.put("point_status", "1");
|
||||
material_point.put("material_id", "");
|
||||
material_point.put("vehicle_type", "");
|
||||
material_point.put("vehicle_code", "");
|
||||
pointTab.update(material_point);
|
||||
|
||||
// 更改任务状态为完成
|
||||
taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskObj.put("remark", "任务完成");
|
||||
taskTab.update(taskObj);
|
||||
|
||||
// JSONObject requestObj = task.getJSONObject("request_param");
|
||||
// 通知mes
|
||||
feedback.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
feedback.put("struct_code", taskObj.getString("point_code1"));
|
||||
wmsToMesService.taskFeedback(feedback);
|
||||
|
||||
|
||||
if (ObjectUtil.isEmpty(material_point)) return;
|
||||
|
||||
//区域出入表【st_ivt_regionIO】
|
||||
WQLObject regionIoTab = WQLObject.getWQLObject("st_ivt_regionIO");
|
||||
@@ -101,26 +125,14 @@ public class YqxCallMaterialTask extends AbstractAcsTask {
|
||||
regionIoObj.put("create_name", SecurityUtils.getCurrentNickName());
|
||||
regionIoObj.put("create_time", DateUtil.now());
|
||||
regionIoTab.insert(regionIoObj);
|
||||
|
||||
//完成后
|
||||
// 物料点位解锁 并设置空位
|
||||
if (ObjectUtil.isEmpty(material_point)) return;
|
||||
material_point.put("lock_type", "1");
|
||||
material_point.put("point_status", "1");
|
||||
material_point.put("material_id", "");
|
||||
material_point.put("vehicle_type", "");
|
||||
material_point.put("vehicle_code", "");
|
||||
material_point.put("update_time", DateUtil.now());
|
||||
pointTab.update(material_point);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void findStartPoint() {
|
||||
/*
|
||||
* 根据业务找对应的起点
|
||||
*/
|
||||
MDC.put("log_file_type", "YqxCallMaterial");
|
||||
// 到养生A区找起点:根据物料、载具类型去查找,均在工单中
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表
|
||||
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); // 点位表
|
||||
JSONArray taskArr = taskTab.query("handle_class = '" + THIS_CLASS + "'and is_delete = '0' and task_status = '" + TaskStatusEnum.SURE_END.getCode() + "'").getResultJSONArray(0);
|
||||
@@ -128,28 +140,76 @@ public class YqxCallMaterialTask extends AbstractAcsTask {
|
||||
JSONObject taskObj = taskArr.getJSONObject(i);
|
||||
String material_id = taskObj.getString("material_id");
|
||||
String vehicle_type = taskObj.getString("vehicle_type");
|
||||
// 直接到缓存区获取物料
|
||||
JSONObject material_point = pointTab.query("region_code = 'YQXHCQ' AND material_id = '" + material_id + "' " +
|
||||
"AND vehicle_type = '" + vehicle_type + "' AND is_used = '1' AND lock_type = '1' AND is_delete = '0'", "point_code").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(material_point)) {
|
||||
// 拿到点位
|
||||
material_point.put("lock_type", "2");
|
||||
pointTab.update(material_point);
|
||||
JSONObject queryParam = new JSONObject();
|
||||
queryParam.put("flag", "1");
|
||||
queryParam.put("material_id", material_id);
|
||||
queryParam.put("region_code", "YSQA01");
|
||||
queryParam.put("vehicle_type", vehicle_type );
|
||||
// 查找养生A区,如果最后一个位置有货,直接搬走,如果没货,就作为等待点。先让agv到达等待点
|
||||
// 1、根据物料id查找养生A区物料点
|
||||
JSONObject materialPoint = WQL.getWO("QSCH_yqxCallMAterial_01").addParamMap(queryParam).process().uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(materialPoint)) {
|
||||
// 2、判断是否在等待点,如果不是,先去等待点,是就直接搬运
|
||||
// 2.1、获取当前快排列的等待点 row:排
|
||||
JSONObject waitPoint = WQL.getWO("QSCH_yqxCallMAterial_01")
|
||||
.addParamMap(MapOf.of("flag", "2", "block_num", materialPoint.getString("block_num"),
|
||||
"row_num", materialPoint.getString("row_num"),
|
||||
"region_code", "YSQA01")).process()
|
||||
.uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(waitPoint)) {
|
||||
log.error("油漆线缓存区判断等待点异常!");
|
||||
throw new BadRequestException("油漆线缓存区判断等待点异常!");
|
||||
}
|
||||
// 2.2、判断等待点
|
||||
if (!waitPoint.getString("waitcol").equals(materialPoint.getString("col_num"))) {
|
||||
// 获取等待点
|
||||
JSONObject waitPoints = pointTab.query("block_num = '" + materialPoint.getString("block_num") + "' " +
|
||||
"AND row_num = '" + materialPoint.getString("row_num") + "' " +
|
||||
"AND col_num = '" + waitPoint.getString("waitcol") + "' " +
|
||||
"AND is_used = '1' " +
|
||||
"AND is_delete = '0' " +
|
||||
"AND lock_type = '1' " +
|
||||
"AND region_code = 'YSQA01'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(waitPoints)) {
|
||||
log.info("等待点已被占用");
|
||||
taskObj.put("remark", "等待点已被占用");
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskTab.update(taskObj);
|
||||
continue;
|
||||
}
|
||||
// 等待点上锁
|
||||
// waitPoints.put("lock_type", "2");
|
||||
pointTab.update(waitPoints);
|
||||
|
||||
taskObj.put("point_code1", material_point.getString("point_code"));
|
||||
taskObj.put("material_qty", material_point.getString("ivt_qty"));
|
||||
taskObj.put("point_code3", waitPoints.getString("point_code"));
|
||||
taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
|
||||
taskObj.put("acs_task_type", "3");
|
||||
taskObj.put("remark", "等待点");
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskTab.update(taskObj);
|
||||
continue;
|
||||
}
|
||||
// 是等待点直接搬走
|
||||
// 物料点位上锁
|
||||
materialPoint.put("lock_type", "2");
|
||||
pointTab.update(materialPoint);
|
||||
log.info("等待点搬运物料");
|
||||
taskObj.put("point_code1", materialPoint.getString("point_code"));
|
||||
taskObj.put("material_qty", materialPoint.getString("ivt_qty"));
|
||||
taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
|
||||
taskObj.put("acs_task_type", "2");
|
||||
taskObj.put("remark", "");
|
||||
taskObj.put("remark", "等待点搬运物料");
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskTab.update(taskObj);
|
||||
} else {
|
||||
taskObj.put("remark", "油漆线缓存区无所需物料");
|
||||
log.info("养生A区无所需物料");
|
||||
taskObj.put("remark", "养生A区无所需物料");
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskTab.update(taskObj);
|
||||
}
|
||||
|
||||
}
|
||||
MDC.remove("log_file_type");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -163,14 +223,18 @@ public class YqxCallMaterialTask extends AbstractAcsTask {
|
||||
for (int i = 0; i < arr.size(); i++) {
|
||||
JSONObject json = arr.getJSONObject(i);
|
||||
//养生A区发给ACS需要新的点位(2101-03-1----->21011-03-1)
|
||||
String point_code =json.getString("point_code1");
|
||||
// String newPoint = point_code.substring(0, 4) + "2" + point_code.substring(4, 10);
|
||||
String point_code = json.getString("point_code1");
|
||||
if (ObjectUtil.isEmpty(point_code)) {
|
||||
// 证明是等待点
|
||||
point_code = json.getString("point_code3");
|
||||
}
|
||||
String newPoint = point_code.substring(0, 4) + "2" + point_code.substring(4, 10);
|
||||
|
||||
AcsTaskDto dto = AcsTaskDto.builder()
|
||||
.task_id(json.getString("task_id"))
|
||||
.task_code(json.getString("task_code"))
|
||||
.task_type(json.getString("acs_task_type"))
|
||||
.start_device_code(point_code)
|
||||
.start_device_code(newPoint)
|
||||
.next_device_code(json.getString("point_code2"))
|
||||
.vehicle_code(json.getString("vehicle_code"))
|
||||
.vehicle_type(json.getString("vehicle_type"))
|
||||
@@ -185,7 +249,10 @@ public class YqxCallMaterialTask extends AbstractAcsTask {
|
||||
@Override
|
||||
public String createTask(JSONObject whereJson) {
|
||||
String point_code2 = whereJson.getString("point_code2");
|
||||
|
||||
String task_code = CodeUtil.getNewCode("TASK_CODE");
|
||||
if (ObjectUtil.isNotEmpty(whereJson.getString("task_code"))) {
|
||||
task_code = whereJson.getString("task_code");
|
||||
}
|
||||
//生产工单表【PDM_BD_WorkOrder】
|
||||
WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder");
|
||||
//任务表【SCH_BASE_Task】
|
||||
@@ -201,7 +268,7 @@ public class YqxCallMaterialTask extends AbstractAcsTask {
|
||||
|
||||
SchTaskDto dto = SchTaskDto.builder()
|
||||
.task_id(IdUtil.getLongId())
|
||||
.task_code(CodeUtil.getNewCode("TASK_CODE"))
|
||||
.task_code(task_code)
|
||||
.task_type("task_type")
|
||||
.task_name("油漆线叫料")
|
||||
.acs_task_type("2")//2楼AGV普通任务
|
||||
@@ -239,4 +306,36 @@ public class YqxCallMaterialTask extends AbstractAcsTask {
|
||||
if (ObjectUtil.isEmpty(taskObj)) throw new BadRequestException("任务已完成不能取消!");
|
||||
this.updateTaskStatus(taskObj,"0");
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public String againApply(String task_id) {
|
||||
// 二次下发任务
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表
|
||||
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); // 点位表
|
||||
JSONObject hcTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(hcTask)) throw new BadRequestException("任务ID: " + task_id + "的任务不存在!");
|
||||
JSONObject waitPoint = pointTab.query("point_code = '" + hcTask.getString("point_code3") + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(waitPoint)) throw new BadRequestException("油漆线二次下发等待点编码错误!");
|
||||
JSONObject materialPoint = WQL.getWO("QSCH_yqxCallMAterial_01").addParamMap(MapOf.of(
|
||||
"flag", "3", "material_id", hcTask.getString("material_id"),
|
||||
"region_code", "YSQA01", "vehicle_type", hcTask.getString("vehicle_type"),
|
||||
"block_num", waitPoint.getString("block_num"), "row_num", waitPoint.getString("row_num")
|
||||
)).process().uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(materialPoint)) {
|
||||
throw new BadRequestException("养生A区暂无所需物料!"); // 此时车会停止
|
||||
}
|
||||
String pointCode = materialPoint.getString("point_code");
|
||||
// 修改任务
|
||||
hcTask.put("point_code1", pointCode);
|
||||
hcTask.put("remark", "养生A区:" + pointCode);
|
||||
taskTab.update(hcTask);
|
||||
// 锁住点位
|
||||
materialPoint.put("lock_type", "2");
|
||||
pointTab.update(materialPoint);
|
||||
// 点位处理
|
||||
//养生A区发给ACS需要新的点位(2101-03-1----->21011-03-1)2812
|
||||
String newPoint = pointCode.substring(0, 4) + "2" + pointCode.substring(4, 10);
|
||||
return newPoint;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,242 @@
|
||||
package org.nl.wms.sch.tasks.callMaterial;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.common.utils.SecurityUtils;
|
||||
import org.nl.modules.system.util.CodeUtil;
|
||||
import org.nl.modules.wql.WQL;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.wms.sch.SchTaskDto;
|
||||
import org.nl.wms.sch.manage.AbstractAcsTask;
|
||||
import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||
import org.nl.wms.sch.tasks.AcsTaskDto;
|
||||
import org.nl.wms.util.IdUtil;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
*油漆线叫料
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class YqxCallMaterialTask extends AbstractAcsTask {
|
||||
private final String THIS_CLASS = YqxCallMaterialTask.class.getName();
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateTaskStatus(JSONObject task, String status) {
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
|
||||
|
||||
String task_id = task.getString("task_id");
|
||||
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
|
||||
// 物料点
|
||||
JSONObject material_point = pointTab.query("point_code = '" + taskObj.getString("point_code1") + "'").uniqueResult(0);
|
||||
//任务取消
|
||||
if (StrUtil.equals(status, "0")) {
|
||||
// 取消删除任务
|
||||
if (StrUtil.equals(taskObj.getString("task_status"), TaskStatusEnum.FINISHED.getCode())) {
|
||||
throw new BadRequestException("已完成不能取消!");
|
||||
}
|
||||
taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
taskObj.put("remark", "已取消");
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskTab.update(taskObj);
|
||||
|
||||
// 点位解锁
|
||||
if (ObjectUtil.isEmpty(material_point)) return;
|
||||
material_point.put("lock_type", "1");
|
||||
material_point.put("update_time", DateUtil.now());
|
||||
pointTab.update(material_point);
|
||||
}
|
||||
|
||||
if ("1".equals(status)) {
|
||||
// 更新任务状态为执行中
|
||||
taskObj.put("task_status", TaskStatusEnum.EXECUTING.getCode());
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskObj.put("car_no", taskObj.getString("car_no"));
|
||||
taskTab.update(taskObj);
|
||||
}
|
||||
|
||||
if (StrUtil.equals(status, "2")) {
|
||||
// 更改任务状态为完成
|
||||
taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskTab.update(taskObj);
|
||||
|
||||
// JSONObject requestObj = task.getJSONObject("request_param");
|
||||
|
||||
//区域出入表【st_ivt_regionIO】
|
||||
WQLObject regionIoTab = WQLObject.getWQLObject("st_ivt_regionIO");
|
||||
JSONObject regionIoObj = new JSONObject();
|
||||
regionIoObj.put("iostorinv_id", IdUtil.getLongId());
|
||||
regionIoObj.put("bill_code", CodeUtil.getNewCode("IN_STORE_CODE"));
|
||||
regionIoObj.put("buss_date", DateUtil.today());
|
||||
regionIoObj.put("io_type", "2");
|
||||
regionIoObj.put("region_id", material_point.getString("region_id"));
|
||||
regionIoObj.put("region_code", material_point.getString("region_code"));
|
||||
regionIoObj.put("region_name", material_point.getString("region_name"));
|
||||
regionIoObj.put("material_id", taskObj.getString("material_id"));
|
||||
regionIoObj.put("vehicle_code", taskObj.getString("vehicle_code"));
|
||||
regionIoObj.put("qty", taskObj.getString("material_qty"));
|
||||
regionIoObj.put("bill_status", "3");
|
||||
regionIoObj.put("start_point_code", taskObj.getString("point_code1"));
|
||||
regionIoObj.put("end_point_code", taskObj.getString("point_code2"));
|
||||
regionIoObj.put("create_mode", "2");
|
||||
regionIoObj.put("pcsn", DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd"));
|
||||
regionIoObj.put("create_id", SecurityUtils.getCurrentUserId());
|
||||
regionIoObj.put("create_name", SecurityUtils.getCurrentNickName());
|
||||
regionIoObj.put("create_time", DateUtil.now());
|
||||
regionIoTab.insert(regionIoObj);
|
||||
|
||||
//完成后
|
||||
// 物料点位解锁 并设置空位
|
||||
if (ObjectUtil.isEmpty(material_point)) return;
|
||||
material_point.put("lock_type", "1");
|
||||
material_point.put("point_status", "1");
|
||||
material_point.put("material_id", "");
|
||||
material_point.put("vehicle_type", "");
|
||||
material_point.put("vehicle_code", "");
|
||||
material_point.put("update_time", DateUtil.now());
|
||||
pointTab.update(material_point);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void findStartPoint() {
|
||||
/*
|
||||
* 根据业务找对应的起点
|
||||
*/
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表
|
||||
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); // 点位表
|
||||
JSONArray taskArr = taskTab.query("handle_class = '" + THIS_CLASS + "'and is_delete = '0' and task_status = '" + TaskStatusEnum.SURE_END.getCode() + "'").getResultJSONArray(0);
|
||||
for (int i = 0; i < taskArr.size(); i++) {
|
||||
JSONObject taskObj = taskArr.getJSONObject(i);
|
||||
String material_id = taskObj.getString("material_id");
|
||||
String vehicle_type = taskObj.getString("vehicle_type");
|
||||
// 直接到缓存区获取物料
|
||||
JSONObject material_point = pointTab.query("region_code = 'YQXHCQ' AND material_id = '" + material_id + "' " +
|
||||
"AND vehicle_type = '" + vehicle_type + "' AND is_used = '1' AND lock_type = '1' AND is_delete = '0'", "point_code").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(material_point)) {
|
||||
// 拿到点位
|
||||
material_point.put("lock_type", "2");
|
||||
pointTab.update(material_point);
|
||||
|
||||
taskObj.put("point_code1", material_point.getString("point_code"));
|
||||
taskObj.put("material_qty", material_point.getString("ivt_qty"));
|
||||
taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
|
||||
taskObj.put("acs_task_type", "2");
|
||||
taskObj.put("remark", "");
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskTab.update(taskObj);
|
||||
} else {
|
||||
taskObj.put("remark", "油漆线缓存区无所需物料");
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskTab.update(taskObj);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<AcsTaskDto> addTask() {
|
||||
/*
|
||||
* 下发给ACS时需要特殊处理
|
||||
*/
|
||||
JSONArray arr = WQLObject.getWQLObject("SCH_BASE_Task").query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0'").getResultJSONArray(0);
|
||||
|
||||
ArrayList<AcsTaskDto> acsTaskArr = new ArrayList<>();
|
||||
for (int i = 0; i < arr.size(); i++) {
|
||||
JSONObject json = arr.getJSONObject(i);
|
||||
//养生A区发给ACS需要新的点位(2101-03-1----->21011-03-1)
|
||||
String point_code =json.getString("point_code1");
|
||||
// String newPoint = point_code.substring(0, 4) + "2" + point_code.substring(4, 10);
|
||||
|
||||
AcsTaskDto dto = AcsTaskDto.builder()
|
||||
.task_id(json.getString("task_id"))
|
||||
.task_code(json.getString("task_code"))
|
||||
.task_type(json.getString("acs_task_type"))
|
||||
.start_device_code(point_code)
|
||||
.next_device_code(json.getString("point_code2"))
|
||||
.vehicle_code(json.getString("vehicle_code"))
|
||||
.vehicle_type(json.getString("vehicle_type"))
|
||||
.priority(json.getString("priority"))
|
||||
.remark(json.getString("remark"))
|
||||
.build();
|
||||
acsTaskArr.add(dto);
|
||||
}
|
||||
return acsTaskArr;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String createTask(JSONObject whereJson) {
|
||||
String point_code2 = whereJson.getString("point_code2");
|
||||
|
||||
//生产工单表【PDM_BD_WorkOrder】
|
||||
WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder");
|
||||
//任务表【SCH_BASE_Task】
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
//判断当前点是否有未完成的任务
|
||||
JSONObject taskObj = taskTab.query("is_delete='0' and point_code2 = '" + point_code2 + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(taskObj)) throw new BadRequestException("当前点位" + point_code2 + "存在未完成的任务");
|
||||
//点位基础表【SCH_BASE_Point】
|
||||
WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point");
|
||||
String device_code = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0).getString("device_code");
|
||||
JSONObject workOrderObj = workOrderTab.query("device_code = '" + device_code + "' and order_status = '3' and is_delete ='0'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(workOrderObj)) throw new BadRequestException("该设备当前未生产或者已删除");
|
||||
|
||||
SchTaskDto dto = SchTaskDto.builder()
|
||||
.task_id(IdUtil.getLongId())
|
||||
.task_code(CodeUtil.getNewCode("TASK_CODE"))
|
||||
.task_type("task_type")
|
||||
.task_name("油漆线叫料")
|
||||
.acs_task_type("2")//2楼AGV普通任务
|
||||
.priority("8")
|
||||
.task_status(TaskStatusEnum.SURE_END.getCode())
|
||||
.point_code2(point_code2)
|
||||
.material_info_id(workOrderObj.getLong("workorder_id"))
|
||||
.material_id(workOrderObj.getLong("material_id"))
|
||||
.vehicle_type(workOrderObj.getString("vehicle_type"))
|
||||
.handle_class(THIS_CLASS)
|
||||
.create_time(DateUtil.now())
|
||||
.request_param(whereJson.toJSONString())
|
||||
.build();
|
||||
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
|
||||
taskTab.insert(json);
|
||||
|
||||
//创建好立即下发
|
||||
this.immediateNotifyAcs();
|
||||
return String.valueOf(dto.getTask_id());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void forceFinish(String task_id) {
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(taskObj)) throw new BadRequestException("未找到该任务或者任务已完成!");
|
||||
this.updateTaskStatus(taskObj,"2");
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void cancel(String task_id) {
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(taskObj)) throw new BadRequestException("任务已完成不能取消!");
|
||||
this.updateTaskStatus(taskObj,"0");
|
||||
}
|
||||
}
|
||||
@@ -106,8 +106,8 @@
|
||||
SCH_BASE_Point p
|
||||
WHERE
|
||||
p.is_used = '1'
|
||||
AND is_delete = '0'
|
||||
AND lock_type='1'
|
||||
AND p.is_delete = '0'
|
||||
AND p.lock_type='1'
|
||||
OPTION 输入.material_id <> ""
|
||||
p.material_id = 输入.material_id
|
||||
ENDOPTION
|
||||
|
||||
@@ -13,10 +13,13 @@ import org.nl.modules.common.utils.SecurityUtils;
|
||||
import org.nl.modules.system.util.CodeUtil;
|
||||
import org.nl.modules.wql.WQL;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.modules.wql.util.SpringContextHolder;
|
||||
import org.nl.wms.ext.mes.service.WmsToMesService;
|
||||
import org.nl.wms.sch.SchTaskDto;
|
||||
import org.nl.wms.sch.manage.AbstractAcsTask;
|
||||
import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||
import org.nl.wms.sch.tasks.AcsTaskDto;
|
||||
import org.nl.wms.sch.tasks.utils.PointUpdateUtil;
|
||||
import org.nl.wms.util.IdUtil;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -38,13 +41,15 @@ public class CpOutTask extends AbstractAcsTask {
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateTaskStatus(JSONObject task, String status) {
|
||||
WmsToMesService wmsToMesService = SpringContextHolder.getBean(WmsToMesService.class);
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
|
||||
WQLObject regionIoTab = WQLObject.getWQLObject("st_ivt_regionIO");
|
||||
|
||||
String task_id = task.getString("task_id");
|
||||
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
|
||||
|
||||
JSONObject requestParam = JSONObject.parseObject(taskObj.getString("request_param"));
|
||||
JSONObject feedback = new JSONObject();
|
||||
feedback.put("task_code", taskObj.getString("task_code"));
|
||||
//任务取消
|
||||
if (StrUtil.equals(status, "0")) {
|
||||
// 取消删除任务
|
||||
@@ -76,6 +81,10 @@ public class CpOutTask extends AbstractAcsTask {
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskObj.put("car_no", taskObj.getString("car_no"));
|
||||
taskTab.update(taskObj);
|
||||
// 通知mes
|
||||
feedback.put("task_status", TaskStatusEnum.EXECUTING.getCode());
|
||||
feedback.put("struct_code", taskObj.getString("point_code2"));
|
||||
wmsToMesService.taskFeedback(feedback);
|
||||
}
|
||||
|
||||
if (StrUtil.equals(status, "2")) {
|
||||
@@ -84,40 +93,32 @@ public class CpOutTask extends AbstractAcsTask {
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskTab.update(taskObj);
|
||||
|
||||
// 通知mes
|
||||
feedback.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
feedback.put("struct_code", taskObj.getString("point_code2"));
|
||||
wmsToMesService.taskFeedback(feedback);
|
||||
|
||||
// 任务表的点位1:成品库区点
|
||||
String point_code1 = taskObj.getString("point_code1"); // 起点编码
|
||||
JSONObject point1Obj = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0);// 起点
|
||||
|
||||
//table_fk_id = 单据id
|
||||
JSONObject regionIoObject = regionIoTab.query("iostorinv_id = '" + taskObj.getString("table_fk_id") + "'").uniqueResult(0);
|
||||
|
||||
String point_code2 = taskObj.getString("point_code2"); // 终点编码:出库点位
|
||||
JSONObject point2Obj = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);// 终点
|
||||
|
||||
// 修改区域出入库 - 起点点位解锁、点位状态更新 - 终点上锁、更新状态
|
||||
//区域出入表【st_ivt_regionIO】
|
||||
regionIoObject.put("end_point_code", point_code2);
|
||||
regionIoObject.put("start_region_id", point1Obj.getString("region_id")); // 起点区域
|
||||
regionIoObject.put("end_region_id", point2Obj.getString("region_id")); // 终点区域
|
||||
regionIoObject.put("bill_status", "3"); // 单据状态
|
||||
regionIoObject.put("task_id", task_id); // 任务id
|
||||
regionIoObject.put("update_optid", SecurityUtils.getCurrentUserId());
|
||||
regionIoObject.put("update_optname", SecurityUtils.getCurrentNickName());
|
||||
regionIoObject.put("update_time", DateUtil.now());
|
||||
regionIoTab.update(regionIoObject);
|
||||
|
||||
//完成后修改点位
|
||||
// 点位解锁 并设置空位
|
||||
// 货位点
|
||||
point2Obj.put("lock_type", "2");
|
||||
point2Obj.put("point_status", "3");
|
||||
point2Obj.put("material_id", point1Obj.getString("material_id"));
|
||||
point2Obj.put("pcsn", point1Obj.getString("pcsn"));
|
||||
point2Obj.put("ivt_qty", point1Obj.getString("ivt_qty"));
|
||||
point2Obj.put("instorage_time", point1Obj.getString("instorage_time"));
|
||||
point2Obj.put("vehicle_type", point1Obj.getString("vehicle_type"));
|
||||
point2Obj.put("vehicle_code", point1Obj.getString("vehicle_code"));
|
||||
point2Obj.put("standing_time", point1Obj.getString("standing_time"));
|
||||
if (ObjectUtil.isNotEmpty(point2Obj)) {
|
||||
point2Obj.put("lock_type", "1");
|
||||
point2Obj.put("point_status", "3");
|
||||
point2Obj.put("material_id", point1Obj.getString("material_id"));
|
||||
point2Obj.put("pcsn", requestParam.getString("out_store_order"));
|
||||
point2Obj.put("ivt_qty", point1Obj.getString("ivt_qty"));
|
||||
point2Obj.put("instorage_time", DateUtil.now());
|
||||
point2Obj.put("vehicle_type", point1Obj.getString("vehicle_type"));
|
||||
point2Obj.put("vehicle_code", point1Obj.getString("vehicle_code"));
|
||||
point2Obj.put("update_time", DateUtil.now());
|
||||
}
|
||||
// 起点
|
||||
point1Obj.put("lock_type", "1");
|
||||
point1Obj.put("point_status", "1");
|
||||
@@ -128,6 +129,7 @@ public class CpOutTask extends AbstractAcsTask {
|
||||
point1Obj.put("vehicle_type", "");
|
||||
point1Obj.put("vehicle_code", "");
|
||||
point1Obj.put("standing_time", 0);
|
||||
point1Obj.put("update_time", DateUtil.now());
|
||||
|
||||
pointTab.update(point1Obj);
|
||||
pointTab.update(point2Obj);
|
||||
@@ -145,11 +147,10 @@ public class CpOutTask extends AbstractAcsTask {
|
||||
JSONArray taskArr = taskTab.query("handle_class = '" + THIS_CLASS + "'and is_delete = '0' and task_status = '" + TaskStatusEnum.SURE_END.getCode() + "'").getResultJSONArray(0);
|
||||
for (int i = 0; i < taskArr.size(); i++) {
|
||||
JSONObject taskObj = taskArr.getJSONObject(i);
|
||||
String material_id = taskObj.getString("material_id");
|
||||
JSONObject requestParam = JSONObject.parseObject(taskObj.getString("request_param"));
|
||||
JSONObject param1 = new JSONObject();
|
||||
param1.put("flag", "1");
|
||||
param1.put("material_id", material_id);
|
||||
param1.put("region_code", "CPCKQ01");
|
||||
param1.put("region_code", requestParam.getString("end_area_code"));
|
||||
//1、找空位的终点
|
||||
JSONObject endPoint = WQL.getWO("QSCH_cpOut_01").addParamMap(param1).process().uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(endPoint)) {
|
||||
@@ -161,15 +162,14 @@ public class CpOutTask extends AbstractAcsTask {
|
||||
|
||||
//锁住终点
|
||||
endPoint.put("task_id", taskObj.getString("task_id"));
|
||||
taskObj.put("remark", "");
|
||||
endPoint.put("lock_type", "2");
|
||||
pointTab.update(endPoint);
|
||||
} else {
|
||||
taskObj.put("remark", "成品出库区无可用货位");
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
}
|
||||
|
||||
taskTab.update(taskObj);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -202,19 +202,27 @@ public class CpOutTask extends AbstractAcsTask {
|
||||
@Override
|
||||
public String createTask(JSONObject whereJson) {
|
||||
WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point");
|
||||
WQLObject regionIoTab = WQLObject.getWQLObject("st_ivt_regionIO");
|
||||
|
||||
String point_code1 = whereJson.getString("point_code1"); // 起点
|
||||
WQLObject materialTab = WQLObject.getWQLObject("md_me_materialbase");
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
String point_code1 = whereJson.getString("start_struct_code"); // 起点
|
||||
String vehicle_code = whereJson.getString("vehicle_code");
|
||||
String iostorinv_id = whereJson.getString("iostorinv_id");
|
||||
String material_id = whereJson.getString("material_id");
|
||||
JSONObject materialCode = materialTab.query("material_code = '" + whereJson.getString("material_code") + "'").uniqueResult(0);
|
||||
String material_id = materialCode.getString("material_id");
|
||||
String taskCode = CodeUtil.getNewCode("TASK_CODE");
|
||||
if (ObjectUtil.isNotEmpty(whereJson.get("task_code"))) {
|
||||
taskCode = whereJson.getString("task_code");
|
||||
}
|
||||
// 校验任务
|
||||
//判断当前点是否有未完成的任务
|
||||
JSONObject taskObj = taskTab.query("is_delete='0' and point_code1 = '" + point_code1 + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(taskObj)) throw new BadRequestException("当前点位" + point_code1 + "存在未完成的任务");
|
||||
|
||||
JSONObject point = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0);
|
||||
String vehicle_type = point.getString("vehicle_type");
|
||||
|
||||
SchTaskDto dto = SchTaskDto.builder()
|
||||
.task_id(IdUtil.getLongId())
|
||||
.task_code(CodeUtil.getNewCode("TASK_CODE"))
|
||||
.task_code(taskCode)
|
||||
.task_type("task_type")
|
||||
.task_name("成品区出库")
|
||||
.task_status(TaskStatusEnum.SURE_END.getCode())
|
||||
@@ -225,23 +233,10 @@ public class CpOutTask extends AbstractAcsTask {
|
||||
.material_id(Long.valueOf(material_id))
|
||||
.create_time(DateUtil.now())
|
||||
.request_param(whereJson.toJSONString())
|
||||
.table_name("st_ivt_regionIO")
|
||||
.table_fk("iostorinv_id")
|
||||
.table_fk_id(Long.valueOf(iostorinv_id))
|
||||
.build();
|
||||
//任务表【SCH_BASE_Task】
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
|
||||
taskTab.insert(json);
|
||||
|
||||
// 单据设置执行中
|
||||
JSONObject iostorinv = regionIoTab.query("iostorinv_id = '" + iostorinv_id + "'").uniqueResult(0);
|
||||
iostorinv.put("bill_status", "2");
|
||||
iostorinv.put("update_optid", SecurityUtils.getCurrentUserId());
|
||||
iostorinv.put("update_optname", SecurityUtils.getCurrentNickName());
|
||||
iostorinv.put("update_time", DateUtil.now());
|
||||
regionIoTab.update(iostorinv);
|
||||
|
||||
//创建好立即下发
|
||||
this.immediateNotifyAcs();
|
||||
return String.valueOf(dto.getTask_id());
|
||||
|
||||
@@ -209,12 +209,6 @@ public class HtSendEmpVehicleTask extends AbstractAcsTask {
|
||||
for (int i = 0; i < taskArr.size(); i++) {
|
||||
JSONObject jsonTask = taskArr.getJSONObject(i);
|
||||
String pointCode1 = jsonTask.getString("point_code1");
|
||||
JSONObject jsonObject = pointTab.query("point_code = '" + pointCode1 + "'").uniqueResult(0);
|
||||
if (jsonObject.getString("lock_type").equals("2")) { // 查看是否被锁住
|
||||
jsonTask.put("remark", "货梯已被锁住!");
|
||||
taskTab.update(jsonTask);
|
||||
continue;
|
||||
}
|
||||
String point_code_ht = "";
|
||||
// 查找组盘信息
|
||||
JSONObject groupObj = groupTab.query("vehicle_code = '" + jsonTask.getString("vehicle_code") + "'").uniqueResult(0);
|
||||
|
||||
@@ -0,0 +1,199 @@
|
||||
package org.nl.wms.sch.tasks.sendMaterial;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.system.util.CodeUtil;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.wms.sch.SchTaskDto;
|
||||
import org.nl.wms.sch.manage.AbstractAcsTask;
|
||||
import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||
import org.nl.wms.sch.tasks.AcsTaskDto;
|
||||
import org.nl.wms.util.IdUtil;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 包装入库->成品区
|
||||
* @Date: 2023/6/25
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class BZXSendMaterialTask extends AbstractAcsTask {
|
||||
private final String THIS_CLASS = BZXSendMaterialTask.class.getName();
|
||||
@Override
|
||||
public List<AcsTaskDto> addTask() {
|
||||
JSONArray arr = WQLObject.getWQLObject("SCH_BASE_Task").query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0'").getResultJSONArray(0);
|
||||
|
||||
ArrayList<AcsTaskDto> acsTaskArr = new ArrayList<>();
|
||||
for (int i = 0; i < arr.size(); i++) {
|
||||
JSONObject json = arr.getJSONObject(i);
|
||||
AcsTaskDto dto = AcsTaskDto.builder()
|
||||
.task_id(json.getString("task_id"))
|
||||
.task_code(json.getString("task_code"))
|
||||
.task_type(json.getString("acs_task_type"))
|
||||
.start_device_code(json.getString("point_code1"))
|
||||
.next_device_code(json.getString("point_code2"))
|
||||
.vehicle_code(json.getString("vehicle_code"))
|
||||
.vehicle_type(json.getString("vehicle_type"))
|
||||
.priority(json.getString("priority"))
|
||||
.remark(json.getString("remark"))
|
||||
.build();
|
||||
acsTaskArr.add(dto);
|
||||
}
|
||||
return acsTaskArr;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateTaskStatus(JSONObject task, String status) {
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
|
||||
String task_id = task.getString("task_id");
|
||||
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
|
||||
String point_code2 = taskObj.getString("point_code2");
|
||||
JSONObject endPoint = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);
|
||||
//任务取消
|
||||
if (StrUtil.equals(status, "0")) {
|
||||
// 取消删除任务
|
||||
if (StrUtil.equals(taskObj.getString("task_status"), TaskStatusEnum.FINISHED.getCode())) {
|
||||
throw new BadRequestException("已完成不能取消!");
|
||||
}
|
||||
taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
taskObj.put("remark", "已取消");
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskTab.update(taskObj);
|
||||
if (ObjectUtil.isEmpty(endPoint)) return;
|
||||
endPoint.put("lock_type", "1");
|
||||
endPoint.put("update_time", DateUtil.now());
|
||||
pointTab.update(endPoint);
|
||||
}
|
||||
|
||||
if ("1".equals(status)) {
|
||||
// 更新任务状态为执行中
|
||||
taskObj.put("task_status", TaskStatusEnum.EXECUTING.getCode());
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskObj.put("car_no", taskObj.getString("car_no"));
|
||||
taskTab.update(taskObj);
|
||||
}
|
||||
|
||||
if (StrUtil.equals(status, "2")) {
|
||||
// 更改任务状态为完成
|
||||
taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskObj.put("remark", "任务执行完成");
|
||||
taskTab.update(taskObj);
|
||||
if (ObjectUtil.isNotEmpty(endPoint)) {
|
||||
// 终点解锁并赋值
|
||||
endPoint.put("lock_type", "1");
|
||||
endPoint.put("point_status", "3");
|
||||
endPoint.put("material_id", taskObj.getString("material_id"));
|
||||
endPoint.put("vehicle_type", taskObj.getString("vehicle_type"));
|
||||
endPoint.put("update_time", DateUtil.now());
|
||||
pointTab.update(endPoint);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String createTask(JSONObject whereJson) {
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
String startPointCode = whereJson.getString("point_code1");
|
||||
String taskId = whereJson.getString("task_id");
|
||||
// 根据上个任务的载具类型寻找起点
|
||||
JSONObject taskObj = taskTab.query("task_id = '" + taskId + "'").uniqueResult(0);
|
||||
// 找起点
|
||||
if (taskObj.getString("vehicle_type").equals("4")) {
|
||||
// 1.3选择第一位
|
||||
startPointCode = startPointCode + "01";
|
||||
} else {
|
||||
startPointCode = startPointCode + "02";
|
||||
}
|
||||
//判断当前点是否有未完成的任务
|
||||
JSONObject taskEntity = taskTab.query("is_delete='0' and point_code1 = '" + startPointCode + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(taskEntity)) throw new BadRequestException("当前点位" + startPointCode + "存在未完成的任务");
|
||||
// 创建任务
|
||||
SchTaskDto dto = SchTaskDto.builder()
|
||||
.task_id(IdUtil.getLongId())
|
||||
.task_code(CodeUtil.getNewCode("TASK_CODE"))
|
||||
.task_type("task_type")
|
||||
.task_name("包装输送线入库")
|
||||
.task_status(TaskStatusEnum.SURE_START.getCode())
|
||||
.point_code1(startPointCode)
|
||||
.acs_task_type("1")//1楼AGV普通任务
|
||||
.material_qty(taskObj.getString("material_qty"))
|
||||
.material_id(taskObj.getLong("material_id"))
|
||||
.vehicle_type(taskObj.getString("vehicle_type"))
|
||||
.handle_class(THIS_CLASS)
|
||||
.create_time(DateUtil.now())
|
||||
.request_param(whereJson.toJSONString())
|
||||
.build();
|
||||
|
||||
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
|
||||
taskTab.insert(json);
|
||||
|
||||
//创建好立即下发
|
||||
this.immediateNotifyAcs();
|
||||
return String.valueOf(dto.getTask_id());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void findNextPoint() {
|
||||
// 从立库中查找一个空位
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
|
||||
JSONArray taskArr = taskTab.query("handle_class = '" + THIS_CLASS + "'and is_delete = '0' " +
|
||||
"and task_status = '2'").getResultJSONArray(0);
|
||||
for (int i = 0; i < taskArr.size(); i++) {
|
||||
JSONObject taskObj = taskArr.getJSONObject(i);
|
||||
JSONObject pointObj = pointTab.query("region_code = 'CPQYA01' AND is_delete = '0' " +
|
||||
"AND is_used = '1' AND lock_type = '1' AND point_status = '1'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(pointObj)) {
|
||||
taskObj.put("remark", "暂无可用的点位!");
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskTab.update(taskObj);
|
||||
continue;
|
||||
}
|
||||
taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
|
||||
taskObj.put("remark", "");
|
||||
taskObj.put("point_code2", pointObj.getString("point_code"));
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskTab.update(taskObj);
|
||||
//锁住相关货位
|
||||
pointObj.put("lock_type", "2");
|
||||
pointTab.update(pointObj);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void forceFinish(String task_id) {
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status < " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(taskObj)) {
|
||||
this.updateTaskStatus(taskObj, "2");
|
||||
} else {
|
||||
throw new BadRequestException("任务已删除或者已完成!");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel(String task_id) {
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(taskObj)) {
|
||||
this.updateTaskStatus(taskObj, "0");
|
||||
} else {
|
||||
throw new BadRequestException("任务已完成不能取消!");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,203 @@
|
||||
package org.nl.wms.sch.tasks.sendMaterial;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.system.util.CodeUtil;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.wms.sch.SchTaskDto;
|
||||
import org.nl.wms.sch.manage.AbstractAcsTask;
|
||||
import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||
import org.nl.wms.sch.tasks.AcsTaskDto;
|
||||
import org.nl.wms.util.IdUtil;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 包装输送线送料
|
||||
* @Date: 2023/6/25
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class BzssxSendMaterialTask extends AbstractAcsTask {
|
||||
private final String THIS_CLASS = BzssxSendMaterialTask.class.getName();
|
||||
@Override
|
||||
public List<AcsTaskDto> addTask() {
|
||||
JSONArray arr = WQLObject.getWQLObject("SCH_BASE_Task").query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0'").getResultJSONArray(0);
|
||||
|
||||
ArrayList<AcsTaskDto> acsTaskArr = new ArrayList<>();
|
||||
for (int i = 0; i < arr.size(); i++) {
|
||||
JSONObject json = arr.getJSONObject(i);
|
||||
AcsTaskDto dto = AcsTaskDto.builder()
|
||||
.task_id(json.getString("task_id"))
|
||||
.task_code(json.getString("task_code"))
|
||||
.task_type(json.getString("acs_task_type"))
|
||||
.start_device_code(json.getString("point_code1"))
|
||||
.next_device_code(json.getString("point_code2"))
|
||||
.vehicle_code(json.getString("vehicle_code"))
|
||||
.vehicle_type(json.getString("vehicle_type"))
|
||||
.priority(json.getString("priority"))
|
||||
.remark(json.getString("remark"))
|
||||
.build();
|
||||
acsTaskArr.add(dto);
|
||||
}
|
||||
return acsTaskArr;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateTaskStatus(JSONObject task, String status) {
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
|
||||
WQLObject materialtaskgroupTab = WQLObject.getWQLObject("md_pb_materialtaskgroup");
|
||||
String task_id = task.getString("task_id");
|
||||
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
|
||||
String point_code2 = taskObj.getString("point_code2");
|
||||
JSONObject endPoint = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);
|
||||
//任务取消
|
||||
if (StrUtil.equals(status, "0")) {
|
||||
// 取消删除任务
|
||||
if (StrUtil.equals(taskObj.getString("task_status"), TaskStatusEnum.FINISHED.getCode())) {
|
||||
throw new BadRequestException("已完成不能取消!");
|
||||
}
|
||||
taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
taskObj.put("remark", "已取消");
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskTab.update(taskObj);
|
||||
if (ObjectUtil.isEmpty(endPoint)) return;
|
||||
endPoint.put("lock_type", "1");
|
||||
endPoint.put("update_time", DateUtil.now());
|
||||
pointTab.update(endPoint);
|
||||
}
|
||||
|
||||
if ("1".equals(status)) {
|
||||
// 更新任务状态为执行中
|
||||
taskObj.put("task_status", TaskStatusEnum.EXECUTING.getCode());
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskObj.put("car_no", taskObj.getString("car_no"));
|
||||
taskTab.update(taskObj);
|
||||
// 终点解锁
|
||||
endPoint.put("lock_type", "1");
|
||||
endPoint.put("update_time", DateUtil.now());
|
||||
pointTab.update(endPoint);
|
||||
}
|
||||
|
||||
if (StrUtil.equals(status, "2")) {
|
||||
// 更改任务状态为完成
|
||||
taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskObj.put("remark", "任务执行完成");
|
||||
taskTab.update(taskObj);
|
||||
if (ObjectUtil.isNotEmpty(endPoint)) {
|
||||
// 组盘
|
||||
JSONObject group = new JSONObject();
|
||||
group.put("task_material_id", cn.hutool.core.util.IdUtil.getSnowflake(1,1).nextIdStr());
|
||||
group.put("material_id", taskObj.getString("material_id"));
|
||||
group.put("task_id", taskObj.getString("task_id"));
|
||||
group.put("qty", taskObj.getString("material_qty"));
|
||||
group.put("vehicle_type", taskObj.getString("vehicle_type"));
|
||||
materialtaskgroupTab.insert(group);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String createTask(JSONObject whereJson) {
|
||||
String point_code1 = whereJson.getString("point_code1");
|
||||
String vehicle_type = whereJson.getString("vehicle_type");
|
||||
Long materialId = whereJson.getLong("material_id");
|
||||
String qty = whereJson.getString("qty");
|
||||
|
||||
//任务表【SCH_BASE_Task】
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
//判断当前点是否有未完成的任务
|
||||
JSONObject taskObj = taskTab.query("is_delete='0' and point_code1 = '" + point_code1 + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(taskObj)) throw new BadRequestException("当前点位" + point_code1 + "存在未完成的任务");
|
||||
|
||||
SchTaskDto dto = SchTaskDto.builder()
|
||||
.task_id(IdUtil.getLongId())
|
||||
.task_code(CodeUtil.getNewCode("TASK_CODE"))
|
||||
.task_type("task_type")
|
||||
.task_name("进入包装线")
|
||||
.task_status(TaskStatusEnum.SURE_START.getCode())
|
||||
.point_code1(point_code1)
|
||||
.acs_task_type("1")//1楼AGV普通任务
|
||||
.material_qty(qty)
|
||||
.material_id(materialId)
|
||||
.vehicle_type(vehicle_type)
|
||||
.handle_class(THIS_CLASS)
|
||||
.create_time(DateUtil.now())
|
||||
.request_param(whereJson.toJSONString())
|
||||
.build();
|
||||
|
||||
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
|
||||
taskTab.insert(json);
|
||||
|
||||
//创建好立即下发
|
||||
this.immediateNotifyAcs();
|
||||
return String.valueOf(dto.getTask_id());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void findNextPoint() {
|
||||
//判断共挤线是否有执行中的任务,如果任务数>=3,则不生成任务
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
|
||||
JSONArray taskArr = taskTab.query("handle_class = '" + THIS_CLASS + "'and is_delete = '0' and task_status = '2'").getResultJSONArray(0);
|
||||
for (int i = 0; i < taskArr.size(); i++) {
|
||||
JSONObject taskObj = taskArr.getJSONObject(i);
|
||||
// 找BZSSX04, 先查看是否锁住
|
||||
JSONObject point = pointTab.query("point_code = 'BZSSX1005' AND lock_type = '1' AND is_used = '1' AND is_delete = '0'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
taskObj.put("remark", "暂无可用的点位!");
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskTab.update(taskObj);
|
||||
continue;
|
||||
}
|
||||
taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
|
||||
taskObj.put("remark", "");
|
||||
taskObj.put("point_code2", point.getString("point_code"));
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskTab.update(taskObj);
|
||||
//锁住相关货位
|
||||
point.put("lock_type", "2");
|
||||
pointTab.update(point);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void forceFinish(String task_id) {
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status < " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(taskObj)) {
|
||||
this.updateTaskStatus(taskObj, "2");
|
||||
} else {
|
||||
throw new BadRequestException("任务已删除或者已完成!");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel(String task_id) {
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(taskObj)) {
|
||||
this.updateTaskStatus(taskObj, "0");
|
||||
} else {
|
||||
throw new BadRequestException("任务已完成不能取消!");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -13,6 +13,8 @@ import org.nl.modules.common.utils.SecurityUtils;
|
||||
import org.nl.modules.system.util.CodeUtil;
|
||||
import org.nl.modules.wql.WQL;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.modules.wql.util.SpringContextHolder;
|
||||
import org.nl.wms.ext.mes.service.WmsToMesService;
|
||||
import org.nl.wms.log.LokiLogType;
|
||||
import org.nl.wms.sch.SchTaskDto;
|
||||
import org.nl.wms.sch.manage.AbstractAcsTask;
|
||||
@@ -45,7 +47,7 @@ public class GjxSendMaterialTask extends AbstractAcsTask {
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateTaskStatus(JSONObject task, String status) {
|
||||
|
||||
WmsToMesService wmsToMesService = SpringContextHolder.getBean(WmsToMesService.class);
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
|
||||
WQLObject orderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder");
|
||||
@@ -53,6 +55,8 @@ public class GjxSendMaterialTask extends AbstractAcsTask {
|
||||
String task_id = task.getString("task_id");
|
||||
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
|
||||
String workOrderId = taskObj.getString("material_info_id");
|
||||
JSONObject feedback = new JSONObject();
|
||||
feedback.put("task_code", taskObj.getString("task_code"));
|
||||
//任务取消
|
||||
if (StrUtil.equals(status, "0")) {
|
||||
// 取消删除任务
|
||||
@@ -79,6 +83,10 @@ public class GjxSendMaterialTask extends AbstractAcsTask {
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskObj.put("car_no", taskObj.getString("car_no"));
|
||||
taskTab.update(taskObj);
|
||||
// 通知mes
|
||||
feedback.put("task_status", TaskStatusEnum.EXECUTING.getCode());
|
||||
feedback.put("struct_code", taskObj.getString("point_code2"));
|
||||
wmsToMesService.taskFeedback(feedback);
|
||||
}
|
||||
|
||||
if (StrUtil.equals(status, "2")) {
|
||||
@@ -121,6 +129,11 @@ public class GjxSendMaterialTask extends AbstractAcsTask {
|
||||
taskObj.put("remark", "任务执行完成");
|
||||
taskTab.update(taskObj);
|
||||
|
||||
// 通知mes
|
||||
feedback.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
feedback.put("struct_code", taskObj.getString("point_code2"));
|
||||
wmsToMesService.taskFeedback(feedback);
|
||||
|
||||
//区域出入表【st_ivt_regionIO】
|
||||
WQLObject regionIoTab = WQLObject.getWQLObject("st_ivt_regionIO");
|
||||
JSONObject regionIoObj = new JSONObject();
|
||||
@@ -163,11 +176,10 @@ public class GjxSendMaterialTask extends AbstractAcsTask {
|
||||
String task_id = taskObj.getString("task_id");
|
||||
String material_id = taskObj.getString("material_id");
|
||||
String vehicle_type = taskObj.getString("vehicle_type");
|
||||
String workOrderId = taskObj.getString("material_info_id"); // 工单号
|
||||
// 获取工单判断是去养生区还是货梯口
|
||||
JSONObject workOrder = orderTab.query("workorder_id = '" + workOrderId + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(workOrder)) throw new BadRequestException("工单不能为空");
|
||||
if (workOrder.getString("workorder_type").equals("1")) { // 机采去货梯扣
|
||||
JSONObject areaType = JSONObject.parseObject(taskObj.getString("request_param"));
|
||||
if (ObjectUtil.isNotEmpty(areaType.getString("end_area_type"))
|
||||
&& areaType.getString("end_area_type").equals("1")) { // 机采去货梯扣
|
||||
// 更新点位
|
||||
JSONArray ssxArray = WQL.getWO("QSCH_yqxSendMaterial_01").addParam("flag", "2").process().getResultJSONArray(0);
|
||||
PointUpdateUtil.updatePoint(ssxArray);
|
||||
@@ -316,8 +328,12 @@ public class GjxSendMaterialTask extends AbstractAcsTask {
|
||||
public String createTask(JSONObject whereJson) {
|
||||
String point_code1 = whereJson.getString("point_code1");
|
||||
String vehicle_code = whereJson.getString("vehicle_code");
|
||||
String vehicle_type = whereJson.getString("vehicle_type");
|
||||
String qty = whereJson.getString("qty");
|
||||
|
||||
String task_code = CodeUtil.getNewCode("TASK_CODE");
|
||||
if (ObjectUtil.isNotEmpty(whereJson.getString("task_code"))) {
|
||||
task_code = whereJson.getString("task_code");
|
||||
}
|
||||
//生产工单表【PDM_BD_WorkOrder】
|
||||
WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder");
|
||||
//点位基础表【SCH_BASE_Point】
|
||||
@@ -331,14 +347,13 @@ public class GjxSendMaterialTask extends AbstractAcsTask {
|
||||
|
||||
String device_code = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0).getString("device_code");
|
||||
|
||||
|
||||
JSONObject workOrderObj = workOrderTab.query("device_code = '" + device_code + "' and order_status = '3' and is_delete ='0'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(workOrderObj)) throw new BadRequestException("该设备当前未生产或者已删除");
|
||||
|
||||
|
||||
SchTaskDto dto = SchTaskDto.builder()
|
||||
.task_id(IdUtil.getLongId())
|
||||
.task_code(CodeUtil.getNewCode("TASK_CODE"))
|
||||
.task_code(task_code)
|
||||
.task_type("task_type")
|
||||
.task_name("共挤线满料")
|
||||
.task_status(TaskStatusEnum.SURE_START.getCode())
|
||||
@@ -348,7 +363,7 @@ public class GjxSendMaterialTask extends AbstractAcsTask {
|
||||
.material_qty(qty)
|
||||
.material_info_id(workOrderObj.getLong("workorder_id"))
|
||||
.material_id(workOrderObj.getLong("material_id"))
|
||||
.vehicle_type(workOrderObj.getString("vehicle_type"))
|
||||
.vehicle_type(vehicle_type)
|
||||
.handle_class(THIS_CLASS)
|
||||
.create_time(DateUtil.now())
|
||||
.request_param(whereJson.toJSONString())
|
||||
@@ -374,7 +389,6 @@ public class GjxSendMaterialTask extends AbstractAcsTask {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void cancel(String task_id) {
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
|
||||
@@ -13,6 +13,8 @@ import org.nl.modules.common.utils.SecurityUtils;
|
||||
import org.nl.modules.system.util.CodeUtil;
|
||||
import org.nl.modules.wql.WQL;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.modules.wql.util.SpringContextHolder;
|
||||
import org.nl.wms.ext.mes.service.WmsToMesService;
|
||||
import org.nl.wms.sch.SchTaskDto;
|
||||
import org.nl.wms.sch.manage.AbstractAcsTask;
|
||||
import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||
@@ -39,12 +41,14 @@ public class HkxSendMaterialTask extends AbstractAcsTask {
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateTaskStatus(JSONObject task, String status) {
|
||||
WmsToMesService wmsToMesService = SpringContextHolder.getBean(WmsToMesService.class);
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
|
||||
|
||||
String task_id = task.getString("task_id");
|
||||
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
|
||||
|
||||
JSONObject feedback = new JSONObject();
|
||||
feedback.put("task_code", taskObj.getString("task_code"));
|
||||
//任务取消
|
||||
if (StrUtil.equals(status, "0")) {
|
||||
// 取消删除任务
|
||||
@@ -69,6 +73,10 @@ public class HkxSendMaterialTask extends AbstractAcsTask {
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskObj.put("car_no", taskObj.getString("car_no"));
|
||||
taskTab.update(taskObj);
|
||||
// 通知mes
|
||||
feedback.put("task_status", TaskStatusEnum.EXECUTING.getCode());
|
||||
feedback.put("struct_code", taskObj.getString("point_code2"));
|
||||
wmsToMesService.taskFeedback(feedback);
|
||||
}
|
||||
|
||||
if (StrUtil.equals(status, "2")) {
|
||||
@@ -77,9 +85,14 @@ public class HkxSendMaterialTask extends AbstractAcsTask {
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskTab.update(taskObj);
|
||||
|
||||
// 通知mes
|
||||
feedback.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
feedback.put("struct_code", taskObj.getString("point_code2"));
|
||||
wmsToMesService.taskFeedback(feedback);
|
||||
|
||||
String point_code2 = taskObj.getString("point_code2");
|
||||
JSONObject point2Obj = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);
|
||||
JSONObject requestObj = task.getJSONObject("request_param");
|
||||
JSONObject requestObj = JSONObject.parseObject(taskObj.getString("request_param"));
|
||||
//工单标识
|
||||
String workorder_id = requestObj.getString("material_info_id");
|
||||
//生产工单表【PDM_BD_WorkOrder】
|
||||
@@ -151,6 +164,7 @@ public class HkxSendMaterialTask extends AbstractAcsTask {
|
||||
taskTab.update(taskObj);
|
||||
} else {
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskObj.put("remark", "");
|
||||
taskObj.put("point_code2", endPoint.getString("point_code"));
|
||||
taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
|
||||
taskTab.update(taskObj);
|
||||
@@ -197,7 +211,10 @@ public class HkxSendMaterialTask extends AbstractAcsTask {
|
||||
String vehicle_type = whereJson.getString("vehicle_type");
|
||||
String vehicle_code = whereJson.getString("vehicle_code");
|
||||
String qty = whereJson.getString("qty");
|
||||
|
||||
String task_code = CodeUtil.getNewCode("TASK_CODE");
|
||||
if (ObjectUtil.isNotEmpty(whereJson.getString("task_code"))) {
|
||||
task_code = whereJson.getString("task_code");
|
||||
}
|
||||
|
||||
//任务表【SCH_BASE_Task】
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
@@ -216,7 +233,7 @@ public class HkxSendMaterialTask extends AbstractAcsTask {
|
||||
|
||||
SchTaskDto dto = SchTaskDto.builder()
|
||||
.task_id(IdUtil.getLongId())
|
||||
.task_code(CodeUtil.getNewCode("TASK_CODE"))
|
||||
.task_code(task_code)
|
||||
.task_type("task_type")
|
||||
.task_name("豪凯线满料")
|
||||
.material_qty(qty)
|
||||
|
||||
Binary file not shown.
@@ -59,6 +59,16 @@ spring:
|
||||
password: ${REDIS_PWD:}
|
||||
#连接超时时间
|
||||
timeout: 5000
|
||||
redisson:
|
||||
config: |
|
||||
threads: 4
|
||||
nettyThreads: 4
|
||||
singleServerConfig:
|
||||
connectionMinimumIdleSize: 8
|
||||
connectionPoolSize: 8
|
||||
address: redis://127.0.0.1:6379
|
||||
idleConnectionTimeout: 10000
|
||||
timeout: 3000
|
||||
# 登录相关配置
|
||||
login:
|
||||
# 登录缓存
|
||||
@@ -162,4 +172,4 @@ sa-token:
|
||||
|
||||
loki:
|
||||
url: http://localhost:3100/loki/api/v1
|
||||
systemName: lms
|
||||
systemName: lms
|
||||
|
||||
Reference in New Issue
Block a user