Browse Source

代码更新

master
李永德 3 years ago
parent
commit
f447ee6964
  1. 15
      lms/nladmin-system/src/main/java/org/nl/modules/loki/service/impl/LokiServiceImpl.java
  2. 5
      lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/dto/MaterialbaseDto.java
  3. 18
      lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java
  4. 109
      lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java
  5. 5
      lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/WorkOrderEnum.java
  6. 30
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/PointUpdateUtil.java
  7. 31
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/autoCallMaterial/RykCallMaterialTask.java
  8. 7
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/autoCallMaterial/wql/QSCH_rykCallMaterial_01.wql
  9. 133
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/FjCallEmptyVehicleTask.java
  10. 15
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/HnCallEmptyVehicleTask.java
  11. 18
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/YzjCallEmptyVehicleTask.java
  12. 10
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/wql/QSCH_fjCallEmptyVehicle_01.wql
  13. 10
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/wql/QSCH_yzjCallEmptyVehicle_01.wql
  14. 26
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/FjCallMaterialTask.java
  15. 32
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/YzjCallMaterialTask.java
  16. 81
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendEmpty/DpSendEmpVehicleTask.java
  17. 65
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendEmpty/FjSendEmpVehicleTask.java
  18. 449
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendEmpty/HtSendEmpVehicleTask.java
  19. 403
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendEmpty/YqxSendEmpVehicleTask.java
  20. 12
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendEmpty/YzjSendEmpVehicleTask.java
  21. 1
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendEmpty/wql/QSCH_yzjSendEmptyVehicle_01.wql
  22. 101
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/FjSendMaterialTask.java
  23. 19
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/HnSendMaterialTask.java
  24. 26
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/SzSendMaterialTask.java
  25. 21
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/YzjSendMaterialTask.java
  26. 1
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/wql/QSCH_fjSendMaterial_01.wql
  27. 4
      lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/wql/QSCH_hnSendMaterial_01.wql
  28. BIN
      lms/nladmin-system/src/main/java/org/nl/wms/wms.xls
  29. 49
      lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue
  30. 4
      lms/nladmin-ui/src/views/wms/sch/task/index.vue

15
lms/nladmin-system/src/main/java/org/nl/modules/loki/service/impl/LokiServiceImpl.java

@ -1,6 +1,7 @@
package org.nl.modules.loki.service.impl;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
@ -33,13 +34,13 @@ public class LokiServiceImpl implements LokiService {
String text = "";
String limit = "100";
String direction = "backward";
if (json.get("logLabel") != null) logLabel = json.getString("logLabel");
if (json.get("logLabelValue") != null) logLabelValue = json.getString("logLabelValue");
if (json.get("text") != null) text = json.getString("text");
if (json.get("start") != null) start = json.getLong("start");
if (json.get("end") != null) end = json.getLong("end");
if (json.get("limits") != null) limit = json.getString("limits");
if (json.get("direction") != null) direction = json.getString("direction");
if (ObjectUtil.isNotEmpty(json.get("logLabel"))) logLabel = json.getString("logLabel");
if (ObjectUtil.isNotEmpty(json.get("logLabelValue"))) logLabelValue = json.getString("logLabelValue");
if (ObjectUtil.isNotEmpty(json.get("text"))) text = json.getString("text");
if (ObjectUtil.isNotEmpty(json.get("start"))) start = json.getLong("start");
if (ObjectUtil.isNotEmpty(json.get("end"))) end = json.getLong("end");
if (ObjectUtil.isNotEmpty(json.get("limits"))) limit = json.getString("limits");
if (ObjectUtil.isNotEmpty(json.get("direction"))) direction = json.getString("direction");
/**
* 组织参数
* 纳秒数

5
lms/nladmin-system/src/main/java/org/nl/wms/basedata/service/dto/MaterialbaseDto.java

@ -26,6 +26,11 @@ public class MaterialbaseDto implements Serializable {
*/
private String material_code;
/**
* 产品编码
*/
private String product_code;
/**
* 物料名称
*/

18
lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java

@ -3,6 +3,7 @@ package org.nl.wms.ext.acs.rest;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaIgnore;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -10,6 +11,8 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.modules.logging.annotation.Log;
import org.nl.wms.ext.acs.service.AcsToWmsService;
import org.nl.wms.log.LokiLog;
import org.nl.wms.log.LokiLogType;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
@ -28,12 +31,14 @@ import java.util.Map;
@Api(tags = "acs接收lms")
@RequestMapping("/api/wms/task")
@Slf4j
@SaIgnore
public class AcsToWmsController {
private final AcsToWmsService acsToWmsService;
@PostMapping("/status")
@Log("ACS给WMS反馈任务状态")
@ApiOperation("ACS给WMS反馈任务状态")
@LokiLog(type = LokiLogType.ACS_TO_LMS)
public ResponseEntity<Object> receiveTaskStatusAcs(@RequestBody String string) {
return new ResponseEntity<>(acsToWmsService.receiveTaskStatusAcs(string), HttpStatus.OK);
}
@ -41,6 +46,7 @@ public class AcsToWmsController {
@PostMapping("/orderFinish")
@Log("ACS给WMS下发工单完成状态")
@ApiOperation("ACS给WMS下发工单完成状态")
@LokiLog(type = LokiLogType.ACS_TO_LMS)
public ResponseEntity<Object> orderFinish(@RequestBody String string) {
return new ResponseEntity<>(acsToWmsService.orderFinish(string), HttpStatus.OK);
}
@ -48,7 +54,9 @@ public class AcsToWmsController {
@PostMapping("/apply")
@Log("申请任务")
@ApiOperation("申请任务")
@SaCheckPermission("menu:list")
@LokiLog(type = LokiLogType.ACS_TO_LMS)
// @SaCheckPermission("menu:list")
// @SaIgnore
public ResponseEntity<Object> apply(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(acsToWmsService.apply(whereJson), HttpStatus.OK);
}
@ -56,6 +64,7 @@ public class AcsToWmsController {
@PostMapping("/manipulatorApply")
@Log("ACS机械手给WMS发送任务")
@ApiOperation("ACS机械手给WMS发送任务")
@LokiLog(type = LokiLogType.ACS_TO_LMS)
public ResponseEntity<Object> manipulatorApply(@RequestBody JSONObject whereJson) {
acsToWmsService.manipulatorApply(whereJson);
JSONObject result = new JSONObject();
@ -67,6 +76,7 @@ public class AcsToWmsController {
@PostMapping("/reverseGroup")
@Log("入窑口反向组盘")
@ApiOperation("入窑口反向组盘")
@LokiLog(type = LokiLogType.ACS_TO_LMS)
public ResponseEntity<Object> reverseGroup(@RequestBody JSONObject whereJson) {
acsToWmsService.reverseGroup(whereJson);
JSONObject result = new JSONObject();
@ -79,6 +89,7 @@ public class AcsToWmsController {
@PostMapping("/ispackage")
@Log("ACS给WMS请求是否优先包装")
@ApiOperation("ACS给WMS请求是否优先包装")
@LokiLog(type = LokiLogType.ACS_TO_LMS)
public ResponseEntity<Object> ispackage(@RequestBody Map whereJson) {
return new ResponseEntity<>(acsToWmsService.ispackage(whereJson), HttpStatus.OK);
}
@ -86,6 +97,7 @@ public class AcsToWmsController {
@PostMapping("/getEmptyVehicle_code")
@Log("获取空木托盘号")
@ApiOperation("获取空木托盘号")
@LokiLog(type = LokiLogType.ACS_TO_LMS)
public ResponseEntity<Object> getEmptyVehicle_code(@RequestBody Map whereJson) {
return new ResponseEntity<>(acsToWmsService.getEmptyVehicle_code(whereJson), HttpStatus.OK);
}
@ -93,6 +105,7 @@ public class AcsToWmsController {
@PostMapping("/sureProduceTask")
@Log("排产单确认")
@ApiOperation("排产单确认")
@LokiLog(type = LokiLogType.ACS_TO_LMS)
public ResponseEntity<Object> sureProduceTask(@RequestBody Map whereJson) {
return new ResponseEntity<>(acsToWmsService.sureWorkOrder(whereJson), HttpStatus.OK);
}
@ -100,6 +113,7 @@ public class AcsToWmsController {
@PostMapping("/getDevicecodeByVehicletype")
@Log("根据木托盘类型获取对应所在的点位")
@ApiOperation("根据木托盘类型获取对应的点位")
@LokiLog(type = LokiLogType.ACS_TO_LMS)
public ResponseEntity<Object> getDevicecodeByVehicle_ype(@RequestBody Map whereJson) {
return new ResponseEntity<>(acsToWmsService.getDeviceCodeByVehicleType(whereJson), HttpStatus.OK);
}
@ -107,6 +121,7 @@ public class AcsToWmsController {
@PostMapping("/getVehicleInfoBycode")
@Log("根据设备编码编码获取托盘信息")
@ApiOperation("根据设备编码编码获取托盘信息")
@LokiLog(type = LokiLogType.ACS_TO_LMS)
public ResponseEntity<Object> getVehicleInfoByDevice_code(@RequestBody Map whereJson) {
return new ResponseEntity<>(acsToWmsService.getVehicleInfoByDeviceCode(whereJson), HttpStatus.OK);
}
@ -115,6 +130,7 @@ public class AcsToWmsController {
@Log("二次申请任务")
@ApiOperation("二次申请任务")
@SaCheckPermission("menu:list")
@LokiLog(type = LokiLogType.ACS_TO_LMS)
public ResponseEntity<Object> againApply(@RequestBody String task_id) {
return new ResponseEntity<>(acsToWmsService.againApply(task_id), HttpStatus.OK);
}

109
lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java

@ -18,9 +18,7 @@ import org.nl.wms.basedata.service.dto.VehicleDto;
import org.nl.wms.ext.acs.service.AcsToWmsService;
import org.nl.wms.log.LokiLog;
import org.nl.wms.log.LokiLogType;
import org.nl.wms.sch.manage.RegionEnum;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.sch.manage.WorkOrderEnum;
import org.nl.wms.sch.manage.*;
import org.nl.wms.sch.service.TaskService;
import org.nl.wms.sch.tasks.PointUpdateUtil;
import org.nl.wms.sch.tasks.callEmpty.FjCallEmptyVehicleTask;
@ -62,7 +60,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
JSONArray errArr = new JSONArray();
for (int i = 0; i < array.size(); i++) {
JSONObject row = array.getJSONObject(i);
String task_id = row.getString("task_id");
String task_id = row.getString("ext_task_uuid");
if (ObjectUtil.isEmpty(task_id)) throw new BadRequestException("任务号不能为空");
row.put("task_id", task_id);
JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0);
// 任务处理类
String processing_class = taskObj.getString("handle_class");
@ -71,13 +71,13 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
String message = "";
String status = "";
if ("1".equals(acs_task_status)) {
status = TaskStatusEnum.EXECUTING.getCode();
status = UpdateTaskStatusEnum.EXECUTION.getCode();
}
if ("2".equals(acs_task_status)) {
status = TaskStatusEnum.FINISHED.getCode();
status = UpdateTaskStatusEnum.FORCEFINISH.getCode();
}
if ("3".equals(acs_task_status)) {
status = "0";
status = UpdateTaskStatusEnum.CANCEL.getCode();
}
// 任务处理类
try {
@ -310,7 +310,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
SpringContextHolder.getBean(YzjCallEmptyVehicleTask.class).createTask(param);
break;
case ZDCDX:
// 12.分拣呼叫木托盘 -- xxx
// 12.分拣呼叫木托盘
param.put("point_code2", point_code); // 起点
SpringContextHolder.getBean(FjCallEmptyVehicleTask.class).createTask(param);
break;
@ -336,9 +336,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
WQLObject groupTab = WQLObject.getWQLObject("st_buss_vehiclegroup");
//组盘
JSONObject produceInfoByCode = new JSONObject();
String device_code = (String) jsonObject.get("device_code"); // 对接位
String device_code = jsonObject.getString("device_code"); // 对接位
// vehicle_code:不一定有,分拣码垛会提供木托盘载具号、压制码垛是不提供载具号
String vehicle_code = (String) jsonObject.get("vehicle_code");
String vehicle_code = jsonObject.getString("vehicle_code");
String qty = String.valueOf(jsonObject.get("qty"));
produceInfoByCode = this.getProduceInfoByCode(device_code); // 获取设备的
String material_id = (String) produceInfoByCode.get("material_id");
@ -355,13 +355,14 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
if (ObjectUtil.isNotEmpty(pointObj.getString("group_id"))) { // 存在组盘id,表示是半托
// 半托只需要修改参数即可
groupObj = groupTab.query("group_id = '" + pointObj.getString("group_id") + "'").uniqueResult(0);
jsonObject.put("group_id", ObjectUtil.isNotEmpty(pointObj.getString("group_id"))); // 组盘标识
jsonObject.put("group_id", pointObj.getString("group_id")); // 组盘标识
} else {
long nextId = IdUtil.getSnowflake(1, 1).nextId();
groupObj.put("group_id", nextId);
jsonObject.put("group_id", nextId); // 组盘标识
}
groupObj.put("vehicle_code", vehicle_code);
if (device_code.startsWith("FJ"))
groupObj.put("vehicle_code", String.format("%04d", Integer.parseInt(vehicle_code)));
groupObj.put("material_uuid", material_id);
groupObj.put("material_code", materialObj.getString("material_code"));
groupObj.put("material_name", materialObj.getString("material_name"));
@ -422,8 +423,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
groupObj.put("one_qty", jsonObject.get("one_qty"));
groupObj.put("two_qty", jsonObject.get("two_qty"));
groupObj.put("tool_coordinate", jsonObject.get("tool_coordinate"));
groupObj.put("create_id", SecurityUtils.getCurrentUserId());
groupObj.put("create_name", SecurityUtils.getCurrentNickName());
groupObj.put("create_id", "22");
groupObj.put("create_name", "ACS系统");
groupObj.put("create_time", DateUtil.now());
if (ObjectUtil.isNotEmpty(pointObj.getString("group_id"))) {
groupTab.update(groupObj);
@ -433,12 +434,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
} else {
groupTab.insert(groupObj);
}
// 物料更新
materialObj.put("AlongSide", jsonObject.get("AlongSide"));
materialObj.put("BshortSide", jsonObject.get("BshortSide"));
materialObj.put("Htrapezoidal", jsonObject.get("Htrapezoidal"));
materialObj.put("Wthickness", jsonObject.get("Wthickness"));
WQLObject.getWQLObject("MD_ME_MaterialBase").insert(materialObj);
// 入库
jsonObject.put("type", "1");
this.apply(jsonObject);
@ -480,15 +475,15 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
@Override
@Transactional(rollbackFor = Exception.class)
public Map<String, Object> getEmptyVehicle_code(Map jsonObject) {
//获取一个空的托盘号
String code = "VEHICCLE_CODE_MTP";
String vehicle_type = "03"; // todo
WQLObject vehicle_table = WQLObject.getWQLObject("MD_PB_Vehicle");
//获取一个空的托盘号
String code = "VEHICLE_CODE_MTP";
String vehicle_type = "4"; // todo
VehicleDto dto = new VehicleDto();
dto.setVehicle_id(IdUtil.getSnowflake(1, 1).nextId());
String vehicle_code = CodeUtil.getNewCode(code);
Long currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName();
Long currentUserId = 22L;
String nickName = "ACS系统";
String now = DateUtil.now();
dto.setVehicle_code(vehicle_code);
dto.setCreate_id(currentUserId);
@ -504,19 +499,19 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
JSONObject returnjo = new JSONObject();
returnjo.put("vehicle_code", vehicle_code);
returnjo.put("status", HttpStatus.OK.value());
//将起点终点确定不下发的任务查出来,将木托盘点位解锁,起点改为扫描点,is_auto_issue 改为1,
String device_code = (String) jsonObject.get("device_code");
WQLObject task_Table = WQLObject.getWQLObject("SCH_BASE_Task");
JSONObject taskObj = task_Table.query("task_status='" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_auto_issue='0'", "create_time desc").uniqueResult(0);
String start_point_code = taskObj.getString("point_code1");
WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
JSONObject startObj = pointTable.query("point_code ='" + start_point_code + "'").uniqueResult(0);
startObj.put("lock_type", "1");
pointTable.update(startObj);
taskObj.put("point_code1", device_code);
taskObj.put("is_auto_issue", "1");
taskObj.put("vehicle_code", vehicle_code);
task_Table.update(taskObj);
// // 将起点终点确定不下发的任务查出来,将木托盘点位解锁,起点改为扫描点,is_auto_issue 改为1,
// String device_code = (String) jsonObject.get("device_code");
// WQLObject task_Table = WQLObject.getWQLObject("SCH_BASE_Task");
// JSONObject taskObj = task_Table.query("task_status='" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_auto_issue='0'", "create_time desc").uniqueResult(0);
// String start_point_code = taskObj.getString("point_code1");
// WQLObject pointTable = WQLObject.getWQLObject("sch_base_point");
// JSONObject startObj = pointTable.query("point_code ='" + start_point_code + "'").uniqueResult(0);
// startObj.put("lock_type", "1");
// pointTable.update(startObj);
// taskObj.put("point_code1", device_code);
// taskObj.put("is_auto_issue", "1");
// taskObj.put("vehicle_code", vehicle_code);
// task_Table.update(taskObj);
return returnjo;
}
@ -596,7 +591,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
WQLObject point_table = WQLObject.getWQLObject("sch_base_point");
JSONObject pointObj = point_table.query("vehicle_type='" + vehicle_type + "' and region_code = 'RGCPQ'").uniqueResult(0);
if (ObjectUtil.isEmpty(pointObj)) {
throw new BadRequestException("找到类型为'" + vehicle_type + "' 的设备点位");
throw new BadRequestException("找到类型为'" + vehicle_type + "' 的设备点位");
}
JSONObject returnjo = new JSONObject();
returnjo.put("device_code", pointObj.getString("point_code"));
@ -613,16 +608,21 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
public void reverseGroup(JSONObject whereJson) {
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
WQLObject groupTab = WQLObject.getWQLObject("st_buss_vehiclegroup");
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
String vehicle_code = whereJson.getString("vehicle_code");
String task_id = whereJson.getString("task_id");
// 通过任务号获取任务中的
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
String group_id = taskObj.getString("group_id");
JSONObject rywPoint = pointTab.query("point_code = 'RYW'").uniqueResult(0);
String group_id = rywPoint.getString("group_id");
if (ObjectUtil.isEmpty(group_id)) return;
JSONObject group = groupTab.query("group_id = '" + group_id + "'").uniqueResult(0);
group.put("vehicle_code", vehicle_code);
group.put("create_time", DateUtil.now());
groupTab.update(group);
// 清理点位
rywPoint.put("group_id", null);
rywPoint.put("point_status", PointEnum.POINT_STATUS_EMPTY_POSITION.getCode());
pointTab.update(rywPoint);
}
@ -634,26 +634,29 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
*/
@Override
public Map<String, Object> getVehicleInfoByDeviceCode(Map jsonObject) {
JSONObject vehicleObj = new JSONObject();
WQLObject groupTab = WQLObject.getWQLObject("st_buss_vehiclegroup");
WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point");
WQLObject materialTab = WQLObject.getWQLObject("MD_ME_MaterialBase");
WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder");
String point_code = (String) jsonObject.get("device_code");
JSONObject point = pointTab.query("point_code = '" + point_code + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(point)) throw new BadRequestException("未找到点位编码为'"+ point_code +"'的点位信息");
String group_id = point.getString("group_id");
JSONObject vehicleObj = groupTab.query("group_id = '" + group_id + "' AND is_delete='0'").uniqueResult(0);
if (ObjectUtil.isEmpty(vehicleObj)){
throw new BadRequestException("未找到组盘信息");
}
JSONObject vehicleObj2 = groupTab.query("group_id = '" + group_id + "' AND is_delete='0'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(vehicleObj2)) vehicleObj = vehicleObj2;
// 获取工单
String device_code = point.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("该设备当前未生产或者已删除");
// 还需要返回砖型
String material_id = point.getString("material_id");
String material_id = workOrderObj.getString("material_id");
JSONObject materialObj = materialTab.query("material_id = '" + material_id + "'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(materialObj)) {
vehicleObj.put("AlongSide", materialObj.get("AlongSide"));
vehicleObj.put("BshortSide", materialObj.get("BshortSide"));
vehicleObj.put("Htrapezoidal", materialObj.get("Htrapezoidal"));
vehicleObj.put("Wthickness", materialObj.get("Wthickness"));
}
if (ObjectUtil.isEmpty(materialObj)) throw new BadRequestException("物料不能为空");
vehicleObj.put("AlongSide", materialObj.get("alongside"));
vehicleObj.put("BshortSide", materialObj.get("bshortside"));
vehicleObj.put("Htrapezoidal", materialObj.get("htrapezoidal"));
vehicleObj.put("Wthickness", materialObj.get("wthickness"));
JSONObject result = new JSONObject();
result.put("status", HttpStatus.OK.value());
result.put("message", "反馈成功!");

5
lms/nladmin-system/src/main/java/org/nl/wms/sch/manage/WorkOrderEnum.java

@ -13,8 +13,9 @@ public enum WorkOrderEnum {
ORDER_STATUS_STOP("4", "停止"),
ORDER_STATUS_FINISH("5", "完成"),
IS_NEW_MATERIAL("1", "新物料"),
IS_OLD_MATERIAL("2", "旧物料")
IS_NEW_MATERIAL("1", "新料"),
IS_MIXIN_MATERIAL("2", "混料"),
IS_OLD_MATERIAL("3", "旧料")
;
private final String code;
private final String name;

30
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/PointUpdateUtil.java

@ -1,13 +1,10 @@
package org.nl.wms.sch.tasks;
import cn.hutool.core.date.DateUtil;
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.WmsToAcsService;
import org.nl.wms.ext.acs.service.impl.WmsToAcsServiceImpl;
import org.nl.wms.sch.manage.PointEnum;
@ -25,20 +22,20 @@ public class PointUpdateUtil {
JSONObject pointObj = pointTab.query("point_code = '" + point_code + "'").uniqueResult(0);
pointObj.put("point_status", PointEnum.POINT_STATUS_EMPTY_POSITION.getCode());
pointObj.put("lock_type", PointEnum.LOCK_TYPE_FALSE.getCode());
pointObj.put("vehicle_type", null);
pointObj.put("vehicle_code", null);
pointObj.put("vehicle_type", "");
pointObj.put("vehicle_code", "");
pointObj.put("vehicle_qty", "0");
pointObj.put("material_id", null);
pointObj.put("pcsn", null);
pointObj.put("material_id", "");
pointObj.put("pcsn", "");
pointObj.put("ivt_qty", "0");
pointObj.put("qty_unit_id", null);
pointObj.put("qty_unit_id", "");
pointObj.put("ivt_weight", "0");
pointObj.put("weight_unit_id", null);
pointObj.put("instorage_time", null);
pointObj.put("weight_unit_id", "");
pointObj.put("instorage_time", "");
pointObj.put("is_full", "0");
pointObj.put("standing_time", "0");
pointObj.put("warn_time", "0");
pointObj.put("group_id", null);
pointObj.put("group_id", "");
pointTab.update(pointObj);
}
@ -76,13 +73,18 @@ public class PointUpdateUtil {
JSONArray deviceDatas = pointStatus.getJSONArray("data");
for (int j = 0; j < deviceDatas.size(); j++) {
JSONObject pointObj = deviceDatas.getJSONObject(j);
String point_code = pointObj.getString("device_code");
String mode = pointObj.getString("mode"); // 工作状态:0脱机,其他正常
String error = pointObj.getString("error"); // 0是正常
if (mode.equals("0") || !error.equals("0")) continue; // 点位异常
String point_status = pointObj.getString("move"); // 点位状态:0无货,1有货(具体是空载具还是物料不知道)
String point_code = pointObj.getString("device_code");
//将托盘类型456....
String vehicle_type = pointObj.getString("container_type");
if (mode.equals("0") || !error.equals("0")) {
// 点位异常
vehicle_type = "";
point_status = "0";
if (point_code.startsWith("BZX")) point_status = "1";
}
JSONObject pointObj2 = pointTable.query("point_code = '" + point_code + "'").uniqueResult(0);
pointObj2.put("point_status", Integer.parseInt(point_status) + 1); // 1空位, 2空载具
pointObj2.put("vehicle_type", vehicle_type);

31
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/autoCallMaterial/RykCallMaterialTask.java

@ -129,18 +129,18 @@ public class RykCallMaterialTask extends AbstractAcsTask {
regionIoObj.put("end_point_code", point_code2);
regionIoObj.put("create_mode", RegionIOEnum.CREATE_MODE_ACS.getCode());
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_id", "22");
regionIoObj.put("create_name", "ACS系统");
regionIoObj.put("create_time", DateUtil.now());
regionIoTab.insert(regionIoObj);
/**
* 完成后将组盘id和任务id赋值到入窑口
*/
JSONObject uniqueResult = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);
uniqueResult.put("group_id", material_point.getString("group_id"));
uniqueResult.put("task_id", material_point.getString("task_id"));
pointTab.update(uniqueResult);
// JSONObject uniqueResult = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);
// uniqueResult.put("group_id", material_point.getString("group_id"));
// uniqueResult.put("task_id", material_point.getString("task_id"));
// pointTab.update(uniqueResult);
// 物料点位解锁 并设置空位
PointUpdateUtil.clearPoint(material_point.getString("point_code"));
}
@ -160,9 +160,19 @@ public class RykCallMaterialTask extends AbstractAcsTask {
//判断当前点是否有未完成的任务
JSONObject taskObj = taskTab.query("is_delete='0' and point_code2 = '" + point_code2 + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(taskObj)) return;
JSONObject object = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(object.getString("group_id"))) return;
// todo 判断是否有货
// JSONObject object = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);
// if (ObjectUtil.isNotEmpty(object.getString("group_id"))) return;
// 判断是否有货
// 获取RYW
JSONArray pointCodes = new JSONArray();
JSONObject jsonObject = new JSONObject();
jsonObject.put("device_code", "RYW");
pointCodes.add(jsonObject);
// 更新点位
PointUpdateUtil.updatePoint(pointCodes);
JSONObject object1 = pointTab.query("point_code = 'RYW'").uniqueResult(0);
if (object1.getString("point_status").equals("2")) return; // 代表有货就不需要继续执行
SchTaskDto dto = SchTaskDto.builder()
.task_id(IdUtil.getLongId())
.task_code(CodeUtil.getNewCode("TASK_CODE"))
@ -243,7 +253,7 @@ public class RykCallMaterialTask extends AbstractAcsTask {
queryParam.put("flag", "1");
queryParam.put("material_id", material_id);
queryParam.put("region_code", "RYZCQ");
// 到入窑暂存区找,优先找满拖的
// 到入窑暂存区找,找满拖的
JSONObject json1 = WQL.getWO("QSCH_rykCallMaterial_01").addParamMap(queryParam).process().uniqueResult(0);
if (ObjectUtil.isNotEmpty(json1)) {
// 拿到点位
@ -257,6 +267,7 @@ public class RykCallMaterialTask extends AbstractAcsTask {
taskObj.put("material_id", material_point.getString("material_id"));
taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
taskObj.put("task_id", taskObj.getString("task_id"));
taskObj.put("group_id", json1.getString("group_id"));
taskObj.put("update_time", DateUtil.now());
taskTab.update(taskObj);
} else {

7
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/autoCallMaterial/wql/QSCH_rykCallMaterial_01.wql

@ -43,12 +43,7 @@
IF 输入.flag = "1"
QUERY
SELECT
p.point_id,
p.point_code,
p.point_name,
p.block_num,
p.col_num,
p.row_num
*
FROM
SCH_BASE_Point p
WHERE

133
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/FjCallEmptyVehicleTask.java

@ -13,16 +13,16 @@ 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.ext.acs.service.WmsToAcsService;
import org.nl.wms.sch.SchTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.RegionIOEnum;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.sch.manage.UpdateTaskStatusEnum;
import org.nl.wms.sch.manage.*;
import org.nl.wms.sch.tasks.AcsTaskDto;
import org.nl.wms.sch.tasks.PointUpdateUtil;
import org.nl.wms.util.IdUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
@ -35,6 +35,9 @@ import java.util.List;
@Slf4j
public class FjCallEmptyVehicleTask extends AbstractAcsTask {
private final String THIS_CLASS = FjCallEmptyVehicleTask.class.getName();
@Autowired
private WmsToAcsService wmsToAcsService;
/**
* 添加任务进行下发
*
@ -42,7 +45,28 @@ public class FjCallEmptyVehicleTask extends AbstractAcsTask {
*/
@Override
public List<AcsTaskDto> addTask() {
return null;
/*
* 下发给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);
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;
}
/**
@ -58,12 +82,14 @@ public class FjCallEmptyVehicleTask extends AbstractAcsTask {
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
WQLObject regionIoTab = WQLObject.getWQLObject("st_ivt_regionIO");
WQLObject groupTab = WQLObject.getWQLObject("st_buss_vehiclegroup");
JSONObject requestObj = task.getJSONObject("request_param");
String task_id = task.getString("task_id");
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
JSONObject requestObj = taskObj.getJSONObject("request_param");
String point_code1 = task.getString("point_code1");
String point_code1 = taskObj.getString("point_code1");
JSONObject startPoint = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0);
if (StrUtil.equals(status, UpdateTaskStatusEnum.CANCEL.getCode())) {
/*
@ -72,16 +98,13 @@ public class FjCallEmptyVehicleTask extends AbstractAcsTask {
if (StrUtil.equals(taskObj.getString("task_status"), TaskStatusEnum.FINISHED.getCode())) {
throw new BadRequestException("已完成不能取消!");
}
if (ObjectUtil.isNotEmpty(point_code1)) {
taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode());
taskObj.put("update_time", DateUtil.now());
taskObj.put("remark", "已取消");
taskTab.update(taskObj);
JSONObject startPoint = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0);
startPoint.put("lock_type", "1");
pointTab.update(startPoint);
}
taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode());
taskObj.put("update_time", DateUtil.now());
taskObj.put("remark", "已取消");
taskTab.update(taskObj);
if (ObjectUtil.isEmpty(startPoint)) return;
startPoint.put("lock_type", PointEnum.LOCK_TYPE_FALSE.getCode());
pointTab.update(startPoint);
}
if (StrUtil.equals(status, UpdateTaskStatusEnum.EXECUTION.getCode())) {
@ -97,14 +120,12 @@ public class FjCallEmptyVehicleTask extends AbstractAcsTask {
* 更改任务状态为完成
*/
taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode());
taskObj.put("update_optid", SecurityUtils.getCurrentUserId());
taskObj.put("update_optname", SecurityUtils.getCurrentUsername());
taskObj.put("update_time", DateUtil.now());
taskTab.update(taskObj);
JSONObject startPoint = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0);
if (startPoint.getString("point_type").equals("1")) { // 包装缓存位
// 插入出库单
if (ObjectUtil.isEmpty(startPoint)) return;
if (startPoint.getString("point_code").startsWith("BT")) { // 包装缓存位
JSONObject groupObj = groupTab.query("group_id = '" + taskObj.getString("group_id") + "'").uniqueResult(0);
JSONObject regionIoObj = new JSONObject();
regionIoObj.put("iostorinv_id", IdUtil.getLongId());
regionIoObj.put("bill_code", CodeUtil.getNewCode("IN_STORE_CODE"));
@ -115,20 +136,21 @@ public class FjCallEmptyVehicleTask extends AbstractAcsTask {
regionIoObj.put("region_name", startPoint.getString("region_name"));
regionIoObj.put("material_id", taskObj.getString("material_id"));
regionIoObj.put("vehicle_code", taskObj.getString("vehicle_code"));
regionIoObj.put("qty", requestObj.getString("qty"));
regionIoObj.put("qty", groupObj.getString("qty"));
regionIoObj.put("weight_unit_id", RegionIOEnum.UNIT_ID_B.getCode());
regionIoObj.put("bill_status", RegionIOEnum.BILL_STATUS_FINISH.getCode());
regionIoObj.put("start_point_code", taskObj.getString("point_code1"));
regionIoObj.put("end_point_code", taskObj.getString("point_code2"));
regionIoObj.put("create_mode", RegionIOEnum.CREATE_MODE_ACS.getCode());
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_id", "22");
regionIoObj.put("create_name", "ACS系统");
regionIoObj.put("create_time", DateUtil.now());
regionIoTab.insert(regionIoObj);
// 点位更新,起点:空位,解锁;
PointUpdateUtil.clearPoint(startPoint.getString("point_code"));
} else { // 钢托盘每次就一个
startPoint.put("lock_type", "1");
startPoint.put("lock_type", PointEnum.LOCK_TYPE_FALSE.getCode()); // 出口点
}
pointTab.update(startPoint);
}
@ -162,11 +184,10 @@ public class FjCallEmptyVehicleTask extends AbstractAcsTask {
.task_name("分拣呼叫木托盘")
.task_status(TaskStatusEnum.SURE_END.getCode())
.point_code2(point_code2)
.acs_task_type("2")
.vehicle_code(form.getString("vehicle_code"))
.acs_task_type("3")
.vehicle_type(workOrderObj.getString("vehicle_type"))
.vehicle_qty(form.getIntValue("qty"))
.task_group_id(org.nl.wms.util.IdUtil.getLongId())
.vehicle_qty(1)
// .task_group_id(org.nl.wms.util.IdUtil.getLongId())
.handle_class(THIS_CLASS)
.create_time(DateUtil.now())
.request_param(form.toJSONString())
@ -205,31 +226,46 @@ public class FjCallEmptyVehicleTask extends AbstractAcsTask {
taskObj.put("point_code1", noFullPoint.getString("point_code"));
taskObj.put("group_id", noFullPoint.getString("group_id")); // 组盘信息挪到任务中
taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
taskObj.put("remark", "");
taskTab.update(taskObj);
//锁住起点
noFullPoint.put("task_id", taskObj.getString("task_id"));
noFullPoint.put("lock_type", "2");
noFullPoint.put("lock_type", PointEnum.LOCK_TYPE_TRUE.getCode());
pointTab.update(noFullPoint);
} else { // 没有就呼叫空的木托盘
// todo
JSONObject param = new JSONObject();
param.put("flag", "2");
param.put("region_code", "BZZCQ");
param.put("vehicle_type", vehicle_type);
JSONObject kmtPoint = WQL.getWO("QSCH_fjCallEmptyVehicle_01").addParamMap(param).process().uniqueResult(0);
if (ObjectUtil.isNotEmpty(kmtPoint)) {
// 获取所有的托盘堆叠位
JSONArray pointCodes = WQL.getWO("QSCH_fjSendMaterial_01").addParam("flag", "2").process().getResultJSONArray(0);
// 更新点位
PointUpdateUtil.updatePoint(pointCodes);
// 找到载具类型符合的覆膜机位置:真正的位置在device_code
JSONObject emptyTray = pointTab.query("region_code = 'RGCPQ' AND vehicle_type = '" +
taskObj.getString("vehicle_type") + "' AND point_status = '2' " +
"AND is_used = '1' AND is_delete = '0' AND point_type = '2'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(emptyTray)) {
// 判断出口是否锁住
JSONObject exitPoint = pointTab.query("point_code = '" +
emptyTray.getString("device_code") + "'" +
" AND lock_type = '1'").uniqueResult(0);
if (ObjectUtil.isEmpty(exitPoint)) return; // 出口点锁住就不能呼叫空盘
// 向ACS申请传送一个空木托盘
JSONArray jsonArray = new JSONArray();
JSONObject data = new JSONObject();
data.put("device_code", exitPoint.getString("point_code"));
jsonArray.add(data);
wmsToAcsService.getTray(jsonArray);
// 去搬运
taskObj.put("point_code1", exitPoint.getString("point_code"));
taskObj.put("update_time", DateUtil.now());
taskObj.put("point_code1", kmtPoint.getString("point_code"));
taskObj.put("remark", "");
taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
taskTab.update(taskObj);
//锁住起点
kmtPoint.put("task_id", taskObj.getString("task_id"));
kmtPoint.put("lock_type", "2");
pointTab.update(kmtPoint);
// 锁住出口点
exitPoint.put("task_id", taskObj.getString("task_id"));
exitPoint.put("lock_type", PointEnum.LOCK_TYPE_TRUE.getCode());
pointTab.update(exitPoint);
} else {
taskObj.put("remark", "未找到可用的载具!");
taskObj.put("remark", "暂无空托盘");
taskObj.put("update_time", DateUtil.now());
taskTab.update(taskObj);
}
@ -261,10 +297,7 @@ public class FjCallEmptyVehicleTask extends AbstractAcsTask {
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("未找到该任务或者任务已完成!");
}
if (ObjectUtil.isEmpty(taskObj))throw new BadRequestException("未找到该任务或者任务已完成!");
this.updateTaskStatus(taskObj, UpdateTaskStatusEnum.CANCEL.getCode());
}
}

15
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/HnCallEmptyVehicleTask.java

@ -21,6 +21,7 @@ import org.nl.wms.sch.manage.UpdateTaskStatusEnum;
import org.nl.wms.sch.tasks.AcsTaskDto;
import org.nl.wms.sch.tasks.PointUpdateUtil;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
@ -43,6 +44,7 @@ public class HnCallEmptyVehicleTask extends AbstractAcsTask {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public List<AcsTaskDto> addTask() {
/*
* 下发给ACS时需要特殊处理
@ -77,6 +79,7 @@ public class HnCallEmptyVehicleTask extends AbstractAcsTask {
* @created 2019年4月17日 下午8:51:50
*/
@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");
@ -136,6 +139,7 @@ public class HnCallEmptyVehicleTask extends AbstractAcsTask {
* @return 返回任务标识
*/
@Override
@Transactional(rollbackFor = Exception.class)
public String createTask(JSONObject form) {
/*
* 1.先生成确定终点的任务
@ -163,7 +167,7 @@ public class HnCallEmptyVehicleTask extends AbstractAcsTask {
.task_name("混碾机叫空盅")
.task_status(TaskStatusEnum.SURE_END.getCode())
.point_code2(point_code2)
.acs_task_type("2")
.acs_task_type("3")
.workorder_id(workOrderObj.getLong("workorder_id"))
.vehicle_code(form.getString("vehicle_code"))
.vehicle_type(workOrderObj.getString("is_new"))//载具类型统一用载具表维护
@ -187,6 +191,7 @@ public class HnCallEmptyVehicleTask extends AbstractAcsTask {
* @created 2020年6月12日 下午6:01:30
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void findStartPoint() {
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); // 点位表
@ -212,6 +217,7 @@ public class HnCallEmptyVehicleTask extends AbstractAcsTask {
taskTab.update(taskObj);
} else {
taskObj.put("update_time", DateUtil.now());
taskObj.put("remark", "");
taskObj.put("point_code1", startPoint.getString("point_code"));
taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
taskTab.update(taskObj);
@ -248,10 +254,7 @@ public class HnCallEmptyVehicleTask extends AbstractAcsTask {
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,UpdateTaskStatusEnum.CANCEL.getCode());
else {
throw new BadRequestException("未找到该任务或者任务已完成!");
}
if (ObjectUtil.isEmpty(taskObj))throw new BadRequestException("未找到该任务或者任务已完成!");
this.updateTaskStatus(taskObj, UpdateTaskStatusEnum.CANCEL.getCode());
}
}

18
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/YzjCallEmptyVehicleTask.java

@ -80,12 +80,11 @@ public class YzjCallEmptyVehicleTask extends AbstractAcsTask {
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
WQLObject regionIoTab = WQLObject.getWQLObject("st_ivt_regionIO");
JSONObject requestObj = task.getJSONObject("request_param");
String task_id = task.getString("task_id");
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
String point_code1 = task.getString("point_code1");
String point_code2 = task.getString("point_code2");
String point_code1 = taskObj.getString("point_code1");
String point_code2 = taskObj.getString("point_code2");
if (StrUtil.equals(status, UpdateTaskStatusEnum.CANCEL.getCode())) {
/*
@ -136,15 +135,14 @@ public class YzjCallEmptyVehicleTask extends AbstractAcsTask {
regionIoObj.put("region_name", startPoint.getString("region_name"));
regionIoObj.put("material_id", taskObj.getString("material_id"));
regionIoObj.put("vehicle_code", taskObj.getString("vehicle_code"));
regionIoObj.put("qty", requestObj.getString("qty"));
regionIoObj.put("weight_unit_id", RegionIOEnum.UNIT_ID_B.getCode());
regionIoObj.put("bill_status", RegionIOEnum.BILL_STATUS_FINISH.getCode());
regionIoObj.put("start_point_code", taskObj.getString("point_code1"));
regionIoObj.put("end_point_code", taskObj.getString("point_code2"));
regionIoObj.put("create_mode", RegionIOEnum.CREATE_MODE_ACS.getCode());
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_id", "22");
regionIoObj.put("create_name", "ACS系统");
regionIoObj.put("create_time", DateUtil.now());
regionIoTab.insert(regionIoObj);
// 点位更新,起点:空位,解锁;
@ -155,8 +153,9 @@ public class YzjCallEmptyVehicleTask extends AbstractAcsTask {
pointTab.update(endPoint);
}
// 起点解锁
startPoint.put("lock_type", PointEnum.LOCK_TYPE_FALSE.getCode());
pointTab.update(startPoint);
JSONObject object = pointTab.query("point_code = '" + startPoint.getString("point_code") + "'").uniqueResult(0);
object.put("lock_type", PointEnum.LOCK_TYPE_FALSE.getCode());
pointTab.update(object);
}
}
@ -224,7 +223,6 @@ public class YzjCallEmptyVehicleTask extends AbstractAcsTask {
for (int i = 0; i < taskArr.size(); i++) {
// 创建任务
JSONObject taskObj = taskArr.getJSONObject(i);
String vehicle_type = taskObj.getString("vehicle_type");
// 寻找入窑暂存区是否有半托
JSONObject noFull = new JSONObject();
noFull.put("flag", "1");
@ -233,6 +231,7 @@ public class YzjCallEmptyVehicleTask extends AbstractAcsTask {
JSONObject noFullPoint = WQL.getWO("QSCH_yzjCallEmptyVehicle_01").addParamMap(noFull).process().uniqueResult(0);
if (ObjectUtil.isNotEmpty(noFullPoint)) { // 找到半满托盘,叫料出库
taskObj.put("update_time", DateUtil.now());
taskObj.put("remark", "");
taskObj.put("group_id", noFullPoint.getString("group_id")); // 组盘信息挪到任务中
taskObj.put("point_code1", noFullPoint.getString("point_code"));
taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
@ -257,6 +256,7 @@ public class YzjCallEmptyVehicleTask extends AbstractAcsTask {
JSONObject kgtPoint = WQL.getWO("QSCH_yzjCallEmptyVehicle_01").addParamMap(param).process().uniqueResult(0);
if (ObjectUtil.isNotEmpty(kgtPoint)) {
taskObj.put("update_time", DateUtil.now());
taskObj.put("remark", "");
taskObj.put("point_code1", kgtPoint.getString("point_code"));
taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
taskTab.update(taskObj);

10
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/wql/QSCH_fjCallEmptyVehicle_01.wql

@ -43,9 +43,7 @@
IF 输入.flag = "1"
QUERY
SELECT
p.point_id,
p.point_code,
p.point_name
*
FROM
SCH_BASE_Point p
WHERE
@ -54,11 +52,13 @@
AND is_delete = '0'
AND is_full = '0'
AND point_status = '3'
AND point_type = '1'
OPTION 输入.region_code <> ""
p.region_code = 输入.region_code
ENDOPTION
ORDER BY instorage_time desc
OPTION 输入.material_id <> ""
p.material_id = 输入.material_id
ENDOPTION
ORDER BY instorage_time
ENDSELECT
ENDQUERY
ENDIF

10
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callEmpty/wql/QSCH_yzjCallEmptyVehicle_01.wql

@ -43,9 +43,7 @@
IF 输入.flag = "1"
QUERY
SELECT
p.point_id,
p.point_code,
p.point_name
*
FROM
SCH_BASE_Point p
WHERE
@ -63,17 +61,13 @@
IF 输入.flag = "2"
QUERY
SELECT
p.point_id,
p.point_code,
p.point_name
*
FROM
SCH_BASE_Point p
WHERE
lock_type = '1'
AND is_used = '1'
AND is_delete = '0'
AND point_status = '2'
AND vehicle_qty > '0'
OPTION 输入.region_code <> ""
p.region_code = 输入.region_code
ENDOPTION

26
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/FjCallMaterialTask.java

@ -19,6 +19,7 @@ import org.nl.wms.sch.tasks.AcsTaskDto;
import org.nl.wms.sch.tasks.PointUpdateUtil;
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;
@ -39,6 +40,7 @@ public class FjCallMaterialTask extends AbstractAcsTask {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public List<AcsTaskDto> addTask() {
/*
* 下发给ACS时需要特殊处理
@ -73,6 +75,7 @@ public class FjCallMaterialTask extends AbstractAcsTask {
* @created 2019年4月17日 下午8:51:50
*/
@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");
@ -112,7 +115,7 @@ public class FjCallMaterialTask extends AbstractAcsTask {
taskObj.put("update_time", DateUtil.now());
taskTab.update(taskObj);
JSONObject requestObj = task.getJSONObject("request_param");
if (ObjectUtil.isEmpty(material_point)) return;
//区域出入表【st_ivt_regionIO】
WQLObject regionIoTab = WQLObject.getWQLObject("st_ivt_regionIO");
@ -124,19 +127,18 @@ public class FjCallMaterialTask extends AbstractAcsTask {
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", requestObj.getString("qty"));
regionIoObj.put("material_id", material_point.getString("material_id"));
regionIoObj.put("vehicle_code", material_point.getString("vehicle_code"));
regionIoObj.put("qty", material_point.getString("ivt_qty"));
regionIoObj.put("weight_unit_id", RegionIOEnum.UNIT_ID_B.getCode());
regionIoObj.put("bill_status", RegionIOEnum.BILL_STATUS_FINISH.getCode());
regionIoObj.put("start_point_code", taskObj.getString("point_code1"));
regionIoObj.put("end_point_code", taskObj.getString("point_code2"));
regionIoObj.put("create_mode", RegionIOEnum.CREATE_MODE_ACS.getCode());
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_id", "22");
regionIoObj.put("create_name", "ACS系统");
regionIoObj.put("create_time", DateUtil.now());
regionIoObj.put("task_id", taskObj.getString("task_id"));
regionIoTab.insert(regionIoObj);
//完成后
@ -150,6 +152,7 @@ public class FjCallMaterialTask extends AbstractAcsTask {
* @return 返回任务标识
*/
@Override
@Transactional(rollbackFor = Exception.class)
public String createTask(JSONObject form) {
String point_code2 = form.getString("point_code2");
String qty = form.getString("qty");
@ -197,6 +200,7 @@ public class FjCallMaterialTask extends AbstractAcsTask {
* @created 2020年6月12日 下午6:01:30
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void findStartPoint() {
// 到出窑缓存区找一托物料
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表
@ -227,6 +231,7 @@ public class FjCallMaterialTask extends AbstractAcsTask {
taskObj.put("vehicle_code", object.getString("vehicle_code"));
taskObj.put("point_code1", material_point.getString("point_code"));
taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
taskObj.put("remark", "");
taskObj.put("update_time", DateUtil.now());
taskTab.update(taskObj);
} else {
@ -262,10 +267,7 @@ public class FjCallMaterialTask extends AbstractAcsTask {
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,UpdateTaskStatusEnum.CANCEL.getCode());
else {
throw new BadRequestException("未找到该任务或者任务已完成!");
}
if (ObjectUtil.isEmpty(taskObj))throw new BadRequestException("未找到该任务或者任务已完成!");
this.updateTaskStatus(taskObj, UpdateTaskStatusEnum.CANCEL.getCode());
}
}

32
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/callMaterial/YzjCallMaterialTask.java

@ -40,6 +40,7 @@ public class YzjCallMaterialTask extends AbstractAcsTask {
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public List<AcsTaskDto> addTask() {
/*
* 下发给ACS时需要特殊处理
@ -74,6 +75,7 @@ public class YzjCallMaterialTask extends AbstractAcsTask {
* @created 2019年4月17日 下午8:51:50
*/
@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");
@ -112,7 +114,7 @@ public class YzjCallMaterialTask extends AbstractAcsTask {
taskObj.put("update_time", DateUtil.now());
taskTab.update(taskObj);
if (ObjectUtil.isEmpty(material_point)) return;
JSONObject requestObj = task.getJSONObject("request_param");
JSONObject requestObj = taskObj.getJSONObject("request_param");
// 区域出入表【st_ivt_regionIO】
WQLObject regionIoTab = WQLObject.getWQLObject("st_ivt_regionIO");
JSONObject regionIoObj = new JSONObject();
@ -124,17 +126,15 @@ public class YzjCallMaterialTask extends AbstractAcsTask {
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", requestObj.getString("qty"));
regionIoObj.put("ivt_weight", requestObj.getString("weight"));
regionIoObj.put("ivt_weight", requestObj.getString("qty"));
regionIoObj.put("weight_unit_id", RegionIOEnum.UNIT_ID_T.getCode());
regionIoObj.put("bill_status", RegionIOEnum.BILL_STATUS_FINISH.getCode());
regionIoObj.put("start_point_code", taskObj.getString("point_code1"));
regionIoObj.put("end_point_code", taskObj.getString("point_code2"));
regionIoObj.put("create_mode", RegionIOEnum.CREATE_MODE_ACS.getCode());
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_id", "22");
regionIoObj.put("create_name", "ACS系统");
regionIoObj.put("create_time", DateUtil.now());
regionIoTab.insert(regionIoObj);
//完成后
@ -148,6 +148,7 @@ public class YzjCallMaterialTask extends AbstractAcsTask {
* @return 返回任务标识
*/
@Override
@Transactional(rollbackFor = Exception.class)
public String createTask(JSONObject form) {
String point_code2 = form.getString("point_code2");
String vehicle_type = form.getString("vehicle_type");
@ -167,6 +168,11 @@ public class YzjCallMaterialTask extends AbstractAcsTask {
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("该设备当前未生产或者已删除");
if (workOrderObj.getString("is_new").equals(WorkOrderEnum.IS_NEW_MATERIAL.getCode()) && point_code2.endsWith("02")) {
// 不需要下发任务,也不能创建任务
return null;
}
SchTaskDto dto = SchTaskDto.builder()
.task_id(IdUtil.getLongId())
.task_code(CodeUtil.getNewCode("TASK_CODE"))
@ -224,13 +230,15 @@ public class YzjCallMaterialTask extends AbstractAcsTask {
// 获取工单
JSONObject workOrderObj = workOrderTab.query("workorder_id = '" + taskObj.getString("workorder_id") + "'").uniqueResult(0);
JSONObject deviceObj = deviceTab.query("device_code = '" + device_code + "'").uniqueResult(0);
String is_new = "1";
if (deviceObj.getString("device_model").equals("3")) { // 普通压制机:区分新旧物料
// 新物料終点不用修改
if (workOrderObj.getString("is_new").equals(WorkOrderEnum.IS_OLD_MATERIAL.getCode())) { // 旧物
if (workOrderObj.getString("is_new").equals(WorkOrderEnum.IS_MIXIN_MATERIAL.getCode()) && point_code2.endsWith("02")) { //
// 查找该设备对应的旧盅位
JSONObject endPoint = pointTab.query("region_code = 'KLHJ' AND point_type = '4' AND device_code LIKE '%" +
point_code2 + "%' AND point_status = '1' AND is_used = '1' AND is_delete = '0' AND lock_type = '1'").uniqueResult(0);
point_code2 = endPoint.getString("point_code"); // 未锁的旧盅货架位
is_new = "2";
}
}
@ -239,7 +247,7 @@ public class YzjCallMaterialTask extends AbstractAcsTask {
queryParam.put("flag", "1");
queryParam.put("material_id", material_id);
queryParam.put("region_code", "KLHJ");
queryParam.put("is_new", workOrderObj.getString("is_new"));
queryParam.put("is_new", is_new);
JSONObject json1 = WQL.getWO("QSCH_yzjCallMaterial_01").addParamMap(queryParam).process().uniqueResult(0);
if (ObjectUtil.isNotEmpty(json1)) {
// 拿到点位
@ -251,6 +259,7 @@ public class YzjCallMaterialTask extends AbstractAcsTask {
pointTab.update(material_point);
taskObj.put("point_code2", point_code2);
taskObj.put("remark", "");
taskObj.put("point_code1", material_point.getString("point_code"));
taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
taskObj.put("update_time", DateUtil.now());
@ -286,10 +295,7 @@ public class YzjCallMaterialTask extends AbstractAcsTask {
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("未找到该任务或者任务已完成!");
}
if (ObjectUtil.isEmpty(taskObj))throw new BadRequestException("未找到该任务或者任务已完成!");
this.updateTaskStatus(taskObj, UpdateTaskStatusEnum.CANCEL.getCode());
}
}

81
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendEmpty/DpSendEmpVehicleTask.java

@ -23,6 +23,7 @@ import org.nl.wms.sch.tasks.PointUpdateUtil;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
/**
@ -42,7 +43,28 @@ public class DpSendEmpVehicleTask extends AbstractAcsTask {
*/
@Override
public List<AcsTaskDto> addTask() {
return null;
/*
* 下发给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);
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;
}
/**
@ -60,9 +82,9 @@ public class DpSendEmpVehicleTask extends AbstractAcsTask {
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
String task_id = taskObj.getString("task_id");
String point_code1 = taskObj.getString("point_code1");
String point_code2 = taskObj.getString("point_code2");
JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
String point_code1 = jsonTask.getString("point_code1");
String point_code2 = jsonTask.getString("point_code2");
if (StrUtil.equals(status, UpdateTaskStatusEnum.CANCEL.getCode())) {
// 取消删除任务
@ -72,7 +94,7 @@ public class DpSendEmpVehicleTask extends AbstractAcsTask {
// 解锁终点位置
if (ObjectUtil.isNotEmpty(point_code2)) { // 未找到终点的取消只需要完成任务就行
JSONObject point2 = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);
point2.put("lock_type", "1");
point2.put("lock_type", PointEnum.LOCK_TYPE_FALSE.getCode());
pointTab.update(point2);
}
// 任务设置为完成
@ -92,28 +114,27 @@ public class DpSendEmpVehicleTask extends AbstractAcsTask {
if (StrUtil.equals(status, UpdateTaskStatusEnum.FORCEFINISH.getCode())) {
// 更改任务状态为完成
jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode());
jsonTask.put("update_optid", SecurityUtils.getCurrentUserId());
jsonTask.put("update_optname", SecurityUtils.getCurrentUsername());
jsonTask.put("update_optid", "22");
jsonTask.put("update_optname", "ACS系统");
jsonTask.put("update_time", DateUtil.now());
taskTab.update(jsonTask);
// 释放点位
if (ObjectUtil.isNotEmpty(point_code2)) { // 防止只有确定起点的任务完成
JSONObject point_2 = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);
point_2.put("lock_type", "1");
point_2.put("vehicle_code", jsonTask.getString("vehicle_code"));
point_2.put("vehicle_qty", NumberUtil.add(point_2.getString("vehicle_qty"), jsonTask.getString("vehicle_qty")));
point_2.put("instorage_time", DateUtil.now());
point_2.put("is_full", "1");
point_2.put("ivt_qty", "0");
point_2.put("pcsn", "");
point_2.put("material_id", "");
point_2.put("standing_time", "0");
pointTab.update(point_2);
// 起点设置为空位
JSONObject point_1 = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0);
point_1.put("point_status", PointEnum.POINT_STATUS_EMPTY_POSITION.getCode());
pointTab.update(point_1);
}
if (ObjectUtil.isEmpty(point_code2)) return;// 防止只有确定起点的任务完成
JSONObject point_2 = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);
point_2.put("lock_type", PointEnum.LOCK_TYPE_FALSE.getCode());
point_2.put("vehicle_code", jsonTask.getString("vehicle_code"));
point_2.put("vehicle_qty", NumberUtil.add(point_2.getString("vehicle_qty"), jsonTask.getString("vehicle_qty")));
point_2.put("instorage_time", DateUtil.now());
point_2.put("is_full", "1");
point_2.put("ivt_qty", "0");
point_2.put("pcsn", "");
point_2.put("material_id", "");
point_2.put("standing_time", "0");
pointTab.update(point_2);
// 起点设置为空位
JSONObject point_1 = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0);
point_1.put("point_status", PointEnum.POINT_STATUS_EMPTY_POSITION.getCode());
pointTab.update(point_1);
}
}
@ -171,15 +192,15 @@ public class DpSendEmpVehicleTask extends AbstractAcsTask {
params.add(param);
PointUpdateUtil.updatePoint(params);
// 直接找
JSONObject endPoint = pointTab.query("point_code = 'KGTDDW01' AND lock_type = '1' AND is_used = '1' AND is_delete = '0'").uniqueResult(0);
JSONObject endPoint = pointTab.query("point_code = 'KGTDDW01' AND lock_type = '1' AND is_used = '1' AND is_delete = '0' AND point_status = '1'").uniqueResult(0);
if (ObjectUtil.isEmpty(endPoint)) {
taskObj.put("remark", "钢托盘堆叠位不可用!");
taskObj.put("task_status", TaskStatusEnum.SURE_START.getCode());
taskObj.put("update_time", DateUtil.now());
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);
@ -201,7 +222,10 @@ public class DpSendEmpVehicleTask extends AbstractAcsTask {
*/
@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, UpdateTaskStatusEnum.FORCEFINISH.getCode());
}
/**
@ -211,6 +235,9 @@ public class DpSendEmpVehicleTask extends AbstractAcsTask {
*/
@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, UpdateTaskStatusEnum.CANCEL.getCode());
}
}

65
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendEmpty/FjSendEmpVehicleTask.java

@ -22,6 +22,7 @@ import org.nl.wms.sch.manage.UpdateTaskStatusEnum;
import org.nl.wms.sch.tasks.AcsTaskDto;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
@ -41,11 +42,32 @@ public class FjSendEmpVehicleTask extends AbstractAcsTask {
*/
@Override
public List<AcsTaskDto> addTask() {
return null;
/*
* 下发给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);
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;
}
/**
* @param taskObj 代表一条任务对象
* @param task 代表一条任务对象
* @param status 代表wcs任务完成状态 //0:acs,取消,:执行中,2:完成
* @return
* @discription wcs请求wms任务完成状态反馈接口, 比如agv从a点往b点走生成任务的时候绑定b的物料信息任务完成的时候清除a的物料信息
@ -53,17 +75,17 @@ public class FjSendEmpVehicleTask extends AbstractAcsTask {
* @created 2019年4月17日 下午8:51:50
*/
@Override
public void updateTaskStatus(JSONObject taskObj, String status) {
public void updateTaskStatus(JSONObject task, String status) {
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
String task_id = taskObj.getString("task_id");
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 jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
if (StrUtil.equals(status, UpdateTaskStatusEnum.CANCEL.getCode())) {
// 取消删除任务
if (StrUtil.equals(jsonTask.getString("task_status"), TaskStatusEnum.FINISHED.getCode())) {
if (StrUtil.equals(taskObj.getString("task_status"), TaskStatusEnum.FINISHED.getCode())) {
throw new BadRequestException("已完成不能取消!");
}
// 解锁终点位置
@ -73,31 +95,29 @@ public class FjSendEmpVehicleTask extends AbstractAcsTask {
pointTab.update(point2);
}
// 任务设置为完成
jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode());
jsonTask.put("remark", "已取消");
taskTab.update(jsonTask);
taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode());
taskObj.put("remark", "已取消");
taskTab.update(taskObj);
}
if (UpdateTaskStatusEnum.EXECUTION.getCode().equals(status)) {
// 更新任务状态为执行中
jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode());
jsonTask.put("update_time", DateUtil.now());
jsonTask.put("car_no", taskObj.getString("car_no"));
taskTab.update(jsonTask);
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, UpdateTaskStatusEnum.FORCEFINISH.getCode())) {
// 更改任务状态为完成
jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode());
jsonTask.put("update_optid", SecurityUtils.getCurrentUserId());
jsonTask.put("update_optname", SecurityUtils.getCurrentUsername());
jsonTask.put("update_time", DateUtil.now());
taskTab.update(jsonTask);
taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode());
taskObj.put("update_time", DateUtil.now());
taskTab.update(taskObj);
// 释放点位
if (ObjectUtil.isNotEmpty(point_code2)) { // 防止只有确定起点的任务完成
JSONObject point_2 = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);
point_2.put("lock_type", PointEnum.LOCK_TYPE_FALSE.getCode());
point_2.put("vehicle_qty", NumberUtil.add(point_2.getString("vehicle_qty"), jsonTask.getString("vehicle_qty")));
point_2.put("vehicle_qty", NumberUtil.add(point_2.getString("vehicle_qty"), taskObj.getString("vehicle_qty")));
pointTab.update(point_2);
}
}
@ -122,9 +142,9 @@ public class FjSendEmpVehicleTask extends AbstractAcsTask {
.task_type("")
.task_name("分拣送空钢托盘")
.task_status(TaskStatusEnum.SURE_START.getCode())
.acs_task_type("4")
.point_code1(point_code1)
.vehicle_code(form.getString("vehicle_code"))
.vehicle_type(form.getString("vehicle_type"))
.vehicle_type(PointEnum.VEHICLE_TYPE_STEEL_TRAY.getCode())
.vehicle_qty(1)
.handle_class(THIS_CLASS)
.create_time(DateUtil.now())
@ -158,7 +178,8 @@ public class FjSendEmpVehicleTask extends AbstractAcsTask {
taskTab.update(taskObj);
} else {
taskObj.put("update_time", DateUtil.now());
taskObj.put("point_code2", endPoint.getString("point_code"));
taskObj.put("remark", "");
taskObj.put("point_code2", "KGTDTW01");
taskObj.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
taskTab.update(taskObj);

449
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendEmpty/HtSendEmpVehicleTask.java

@ -1,449 +0,0 @@
package org.nl.wms.sch.tasks.sendEmpty;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.NumberUtil;
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.sch.manage.RegionTypeEnum;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
/**
* 一楼往二楼送空托盘业务
*/
@Service
@RequiredArgsConstructor
@Slf4j
public class HtSendEmpVehicleTask extends AbstractAcsTask {
private final String THIS_CLASS = HtSendEmpVehicleTask.class.getName();
@Override
@Transactional(rollbackFor = Exception.class)
public void updateTaskStatus(JSONObject taskObj, String status) {
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
String task_id = taskObj.getString("task_id");
JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
if (StrUtil.equals(status, "0")) {
// 取消删除任务
if (StrUtil.equals(jsonTask.getString("task_status"), TaskStatusEnum.FINISHED.getCode())) {
throw new BadRequestException("已完成不能取消!");
}
String point_code3 = jsonTask.getString("point_code3");
String point_code2 = jsonTask.getString("point_code2");
if (ObjectUtil.isNotEmpty(point_code3)) {
JSONObject jsonPoint3 = pointTab.query("point_code ='" + point_code3 + "'").uniqueResult(0);
jsonPoint3.put("point_status", "1");
pointTab.update(jsonPoint3);
}
if (ObjectUtil.isNotEmpty(point_code2)) {
JSONObject jsonPoint2 = pointTab.query("point_code ='" + point_code2 + "'").uniqueResult(0);
jsonPoint2.put("point_status", "1");
pointTab.update(jsonPoint2);
}
taskTab.delete("task_id = '" + task_id + "'");
}
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
// 更新任务状态为执行中
jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode());
jsonTask.put("update_time", DateUtil.now());
jsonTask.put("car_no", taskObj.getString("car_no"));
taskTab.update(jsonTask);
}
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
// 更改任务状态为完成
jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode());
jsonTask.put("update_time", DateUtil.now());
taskTab.update(jsonTask);
String point_code3 = jsonTask.getString("point_code3");
String point_code = "";
// 更新终点:判断point_code3是否为空,为空就更新point_code2
if (ObjectUtil.isNotEmpty(point_code3)) {
point_code = point_code3;
// 更新point_code2:解锁
JSONObject point2 = pointTab.query("point_code = '" + jsonTask.getString("point_code2") + "'").uniqueResult(0);
point2.put("lock_type", "1");
point2.put("vehicle_type", "");
point2.put("vehicle_code", "");
point2.put("vehicle_qty", 0);
pointTab.update(point2);
} else {
point_code = jsonTask.getString("point_code2");
}
JSONObject endPoint = pointTab.query("point_code = '" + point_code + "'").uniqueResult(0);
//终点是叠盘架
if (StrUtil.equals(endPoint.getString("region_id"), RegionTypeEnum.DPJQA.getId())) {
Integer vehicle_qty = endPoint.getInteger("vehicle_qty");
vehicle_qty += jsonTask.getInteger("vehicle_qty");
endPoint.put("lock_type", "1");
endPoint.put("vehicle_qty", vehicle_qty);
endPoint.put("point_status", "2");
endPoint.put("vehicle_type", jsonTask.getString("vehicle_type"));
pointTab.update(endPoint);
} else {//非叠盘架
endPoint.put("lock_type", "1");
endPoint.put("vehicle_code", jsonTask.getString("vehicle_code"));
endPoint.put("vehicle_qty", jsonTask.getString("vehicle_qty"));
endPoint.put("vehicle_type", jsonTask.getString("vehicle_type"));
endPoint.put("point_status", "2");
pointTab.update(endPoint);
}
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public String createTask(JSONObject form) {
/*
* 1.先生成确定起点的任务
* 2.通过findNextPoint()找终点
* 3.下发给ACS
*/
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表
String point_code1 = form.getString("point_code1");
SchTaskDto dto = SchTaskDto.builder().task_id(org.nl.wms.util.IdUtil.getLongId())
.task_code(CodeUtil.getNewCode("TASK_CODE"))
.task_type("")
.task_name("电梯送空载具")
.task_status(TaskStatusEnum.SURE_START.getCode())
.point_code1(point_code1)
.vehicle_code(form.getString("vehicle_code"))
.vehicle_type(form.getString("vehicle_type"))
.vehicle_qty(form.getIntValue("qty"))
.handle_class(THIS_CLASS)
.create_time(DateUtil.now())
.build();
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
taskTab.insert(json);
this.findNextPoint();
// 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 jsonTask = taskArr.getJSONObject(i);
String point_code_ht = "";
//判断SSX01A1是否有任务没有则判断其他的三个点位
boolean ssx_1 = this.isTask("SSX01A1");
if (ssx_1) {
String like = "SSX01%";
JSONArray taskArrNum = new JSONArray();
JSONArray pointArr = pointTab.query("region_id = '" + RegionTypeEnum.SSX.getId() + "' and is_used = '1' and is_delete = '0' and point_code like '" + like + "'").getResultJSONArray(0);
for (int j = 0; j < pointArr.size(); j++) {
JSONObject json = pointArr.getJSONObject(j);
boolean is_empTask = this.isTask(json.getString("point_code"));
if (!is_empTask) taskArrNum.add(json);
}
if (taskArrNum.size() > 0) {
} else {
point_code_ht = "SSX01A1";
}
}
// 判断SSX02A1是否有任务没有则判断其他的三个点位
if (ObjectUtil.isEmpty(point_code_ht)) {
boolean ssx_2 = this.isTask("SSX02A1");
if (ssx_2) {
String like = "SSX02%";
JSONArray taskArrNum = new JSONArray();
JSONArray pointArr = pointTab.query("region_id = '" + RegionTypeEnum.SSX.getId() + "' and is_used = '1' and is_delete = '0' and point_code like '" + like + "'").getResultJSONArray(0);
for (int k = 0; k < pointArr.size(); k++) {
JSONObject json = pointArr.getJSONObject(k);
boolean is_empTask = this.isTask(json.getString("point_code"));
if (!is_empTask) taskArrNum.add(json);
}
if (taskArrNum.size() > 0) {
} else {
point_code_ht = "SSX02A1";
}
}
}
// 如果此时point_code_ht为空则循环下一个任务
if (ObjectUtil.isEmpty(point_code_ht)) {
continue;
}
// 说明货梯无任务:找终点
JSONObject param = new JSONObject();
param.put("vehicle_type", jsonTask.getString("vehicle_type"));
param.put("qty", jsonTask.getString("vehicle_qty"));
String endPoint = this.endPoint(param);
// 如果此时endPoint为空则循环下一个任务
if (ObjectUtil.isEmpty(endPoint)) {
continue;
}
// 更新任务表point_code2
jsonTask.put("point_code2", endPoint);
jsonTask.put("task_status", "4");
taskTab.update(jsonTask);
// 锁定终点
JSONObject jsonEnd = pointTab.query("point_code = '" + endPoint + "'").uniqueResult(0);
jsonEnd.put("lock_type", "2");
pointTab.update(jsonEnd);
}
}
@Override
@Transactional(rollbackFor = Exception.class)
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("未找到该任务或者任务已完成!");
}
}
@Transactional(rollbackFor = Exception.class)
public String endPoint(JSONObject param) {
/*
* 1.叠盘架有A对应货位 规则如果暂存位能放下则放暂存位如果放不下则走2或3
* 2.叠盘架A没有货位 则去叠盘架暂存位
* 3.叠盘架暂存位没有货位则去养生A区
*/
WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point"); // 点位表
String end_code = "";
String vehicle_type = param.getString("vehicle_type");
// 1.找到对应类型的叠盘架
JSONObject jsonDpjEnd = pointTab.query("region_id = '" + RegionTypeEnum.DPJQA.getId() + "' and can_vehicle_type = '" + vehicle_type + "' and lock_type = '1' and is_used = '1' and is_delete = '0'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonDpjEnd)) {
// 判断数量 + 叠盘架的数量是否超过此叠盘架的最大数量
double add_num = NumberUtil.add(param.getIntValue("qty"), jsonDpjEnd.getIntValue("vehicle_qty"));
if (jsonDpjEnd.getDoubleValue("vehicle_max_qty") >= add_num) {
end_code = jsonDpjEnd.getString("point_code");
} else {
// 如果数量大于此叠盘架最大数量则查找叠盘架缓存位是否有对应空位
JSONObject jsonZcwEnd = pointTab.query("region_id = '" + RegionTypeEnum.KTPHCQA.getId() + "' and can_vehicle_type = '" + vehicle_type + "' and lock_type = '1' and is_used = '1' and is_delete = '0' and point_status = '1'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonZcwEnd)) {
end_code = jsonZcwEnd.getString("point_code");
} else {
// 为空就去养生A区的等待位
JSONObject jsonEmpWait = pointTab.query("region_id = '" + RegionTypeEnum.YSAQKTPQ01.getId() + "' and col_num = '1' and can_vehicle_type = '" + vehicle_type + "' and lock_type = '1' and is_used = '1' and is_delete = '0' and point_status = '1'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonEmpWait)) {
// 判断是否有任务
boolean is_point = this.isTask(jsonEmpWait.getString("point_code"));
if (is_point) {
JSONArray jsonEmpArr = pointTab.query("region_id = '" + RegionTypeEnum.YSAQKTPQ01.getId() + "' and row_num = '" + jsonEmpWait.getString("row_num") + "' and can_vehicle_type = '" + vehicle_type + "' and lock_type = '1' and is_used = '1' and is_delete = '0' and point_status = '1'").getResultJSONArray(0);
if (ObjectUtil.isNotEmpty(jsonEmpArr)) end_code = jsonEmpWait.getString("point_code");
}
}
}
}
} else {
// 2.叠盘架没有空位去找叠盘暂存位
JSONObject jsonZcwEnd = pointTab.query("region_id = '" + RegionTypeEnum.KTPHCQA.getId() + "' and can_vehicle_type = '" + vehicle_type + "' and lock_type = '1' and is_used = '1' and is_delete = '0' and point_status = '1'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonZcwEnd)) {
end_code = jsonZcwEnd.getString("point_code");
} else {
// 为空就去养生A区的等待位
JSONObject jsonEmpWait = pointTab.query("region_id = '" + RegionTypeEnum.YSAQKTPQ01.getId() + "' and col_num = '1' and can_vehicle_type = '" + vehicle_type + "' and lock_type = '1' and is_used = '1' and is_delete = '0' and point_status = '1'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonEmpWait)) {
// 判断是否有任务
boolean is_point = this.isTask(jsonEmpWait.getString("point_code"));
if (is_point) {
JSONArray jsonEmpArr = pointTab.query("region_id = '" + RegionTypeEnum.YSAQKTPQ01.getId() + "' and row_num = '" + jsonEmpWait.getString("row_num") + "' and can_vehicle_type = '" + vehicle_type + "' and lock_type = '1' and is_used = '1' and is_delete = '0' and point_status = '1'").getResultJSONArray(0);
if (ObjectUtil.isNotEmpty(jsonEmpArr)) end_code = jsonEmpWait.getString("point_code");
}
}
}
}
return end_code;
}
@Transactional(rollbackFor = Exception.class)
public boolean isTask(String point_code) {
/*
* 判断点位是否有任务存在
*/
WQLObject tab = WQLObject.getWQLObject("SCH_BASE_Task");
boolean result;
JSONObject jsonPointCode1 = tab.query("point_code1 = '" + point_code + "' and task_status <> '7' and is_delete = '0'").uniqueResult(0);
JSONObject jsonPointCode2 = tab.query("point_code2 = '" + point_code + "' and task_status <> '7' and is_delete = '0'").uniqueResult(0);
JSONObject jsonPointCode3 = tab.query("point_code3 = '" + point_code + "' and task_status <> '7' and is_delete = '0'").uniqueResult(0);
JSONObject jsonPointCode4 = tab.query("point_code4 = '" + point_code + "' and task_status <> '7' and is_delete = '0'").uniqueResult(0);
if (ObjectUtil.isEmpty(jsonPointCode1) && ObjectUtil.isEmpty(jsonPointCode2) && ObjectUtil.isEmpty(jsonPointCode3) && ObjectUtil.isEmpty(jsonPointCode4)) {
result = true;
} else {
result = false;
}
return result;
}
@Transactional(rollbackFor = Exception.class)
@Override
public String againApply(String task_id) {
/*
* 再次下发任务处理方法
* 涉及业务入空载具出空载具入物料出物料
*/
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表
WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point"); // 点位表
String point_code = "";
JSONObject jsonTask = taskTab.query("task_id ='" + task_id + "'").uniqueResult(0);
JSONObject jsonPoint2 = pointTab.query("point_code = '" + jsonTask.getString("point_code2") + "'").uniqueResult(0);
// 根据 区域、块、列找到第一个有物料的货位
JSONObject jsonOnePoint = pointTab.query("region_id = '" + jsonPoint2.getString("region_id") +
"' and block_num = '" + jsonPoint2.getString("block_num") +
"' and row_num = '" + jsonPoint2.getString("row_num") +
"' and point_code <> '" + jsonPoint2.getString("point_code") +
"' and point_status = '2' and lock_type = '1' order by in_empty_seq ASC").uniqueResult(0);
// 如果为空说明这一列其他货位为空 则入到最后一个货位
if (ObjectUtil.isEmpty(jsonOnePoint)) {
JSONObject jsonEmpPoint = pointTab.query("region_id = '" + jsonPoint2.getString("region_id") +
"' and block_num = '" + jsonPoint2.getString("block_num") +
"' and row_num = '" + jsonPoint2.getString("row_num") +
"' and point_code <> '" + jsonPoint2.getString("point_code") +
"' and point_status = '1' and lock_type = '1' order by in_empty_seq DESC").uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonEmpPoint)) {
point_code = jsonEmpPoint.getString("point_code");
jsonTask.put("point_code3", point_code);
taskTab.update(jsonTask);
}
} else {
// 找前一位的空位
double in_empty_seq = NumberUtil.sub(jsonOnePoint.getIntValue("in_empty_seq"), 1);
JSONObject jsonEmpPoint = pointTab.query("region_id = '" + jsonPoint2.getString("region_id") +
"' and block_num = '" + jsonPoint2.getString("block_num") +
"' and row_num = '" + jsonPoint2.getString("row_num") +
"' and point_code <> '" + jsonPoint2.getString("point_code") +
"' and in_empty_seq = '" + in_empty_seq +
"' and point_status = '1' and lock_type = '1'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonEmpPoint)) {
point_code = jsonEmpPoint.getString("point_code");
jsonTask.put("point_code3", point_code);
taskTab.update(jsonTask);
}
}
if (ObjectUtil.isNotEmpty(point_code)) {
JSONObject jsonEndPoint = pointTab.query("point_code = '" + point_code + "'").uniqueResult(0);
jsonEndPoint.put("lock_type", "2");
pointTab.update(jsonEndPoint);
}
//判断点位是否属于养生A区
if (point_code.startsWith("2")) {
//养生A区发给ACS需要新的点位(2101-03-1----->21011-03-1)
point_code = point_code.substring(0, 4) + "1" + point_code.substring(4, 9);
}
return point_code;
}
@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> resultList = new ArrayList<>();
for (int i = 0; i < arr.size(); i++) {
JSONObject json = arr.getJSONObject(i);
String point_code3=json.getString("point_code3");
//判断终点是否属于养生A区
if (point_code3.startsWith("2")) {
//养生A区发给ACS需要新的点位(2101-03-1----->21011-03-1)
point_code3 = point_code3.substring(0, 4) + "1" + point_code3.substring(4, 9);
}
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(point_code3)
.vehicle_code(json.getString("vehicle_code"))
.vehicle_type(json.getString("vehicle_type"))
.priority(json.getString("priority"))
.remark(json.getString("remark"))
.build();
resultList.add(dto);
}
return resultList;
}
}

403
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendEmpty/YqxSendEmpVehicleTask.java

@ -1,403 +0,0 @@
package org.nl.wms.sch.tasks.sendEmpty;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.NumberUtil;
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.sch.manage.RegionTypeEnum;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
@Service
@RequiredArgsConstructor
@Slf4j
public class YqxSendEmpVehicleTask extends AbstractAcsTask {
private final String THIS_CLASS = YqxSendEmpVehicleTask.class.getName();
@Override
@Transactional(rollbackFor = Exception.class)
public void updateTaskStatus(JSONObject taskObj, String status) {
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
String task_id = taskObj.getString("task_id");
JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
if (StrUtil.equals(status, "0")) {
// 取消删除任务
if (StrUtil.equals(jsonTask.getString("task_status"), TaskStatusEnum.FINISHED.getCode())) {
throw new BadRequestException("已完成不能取消!");
}
String point_code3 = jsonTask.getString("point_code3");
String point_code2 = jsonTask.getString("point_code2");
if (ObjectUtil.isNotEmpty(point_code3)) {
JSONObject jsonPoint3 = pointTab.query("point_code ='" + point_code3 + "'").uniqueResult(0);
jsonPoint3.put("point_status", "1");
pointTab.update(jsonPoint3);
}
if (ObjectUtil.isNotEmpty(point_code2)) {
JSONObject jsonPoint2 = pointTab.query("point_code ='" + point_code2 + "'").uniqueResult(0);
jsonPoint2.put("point_status", "1");
pointTab.update(jsonPoint2);
}
taskTab.delete("task_id = '" + task_id + "'");
}
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
// 更新任务状态为执行中
jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode());
jsonTask.put("update_time", DateUtil.now());
jsonTask.put("car_no", taskObj.getString("car_no"));
taskTab.update(jsonTask);
}
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
// 更改任务状态为完成
jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode());
jsonTask.put("update_time", DateUtil.now());
taskTab.update(jsonTask);
String point_code3 = jsonTask.getString("point_code3");
String point_code = "";
// 更新终点:判断point_code3是否为空,为空就更新point_code2
if (ObjectUtil.isNotEmpty(point_code3)) {
point_code = point_code3;
// 更新point_code2:解锁
JSONObject point2 = pointTab.query("point_code = '" + jsonTask.getString("point_code2") + "'").uniqueResult(0);
point2.put("lock_type", "1");
point2.put("vehicle_type", "");
point2.put("vehicle_code", "");
point2.put("vehicle_qty", 0);
pointTab.update(point2);
} else {
point_code = jsonTask.getString("point_code2");
}
JSONObject endPoint = pointTab.query("point_code = '" + point_code + "'").uniqueResult(0);
//终点是叠盘架
if (StrUtil.equals(endPoint.getString("region_id"), RegionTypeEnum.DPJQB.getId())) {
Integer vehicle_qty = endPoint.getInteger("vehicle_qty");
vehicle_qty += jsonTask.getInteger("vehicle_qty");
endPoint.put("lock_type", "1");
endPoint.put("vehicle_qty", vehicle_qty);
endPoint.put("point_status", "2");
endPoint.put("vehicle_type", jsonTask.getString("vehicle_type"));
pointTab.update(endPoint);
} else {//非叠盘架
endPoint.put("lock_type", "1");
endPoint.put("vehicle_code", jsonTask.getString("vehicle_code"));
endPoint.put("vehicle_qty", jsonTask.getString("vehicle_qty"));
endPoint.put("vehicle_type", jsonTask.getString("vehicle_type"));
endPoint.put("point_status", "2");
pointTab.update(endPoint);
}
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public String createTask(JSONObject form) {
/*
* 1.先生成确定起点的任务
* 2.通过findNextPoint()找终点
* 3.下发给ACS
*/
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表
String point_code1 = form.getString("point_code1");
SchTaskDto dto = SchTaskDto.builder().task_id(org.nl.wms.util.IdUtil.getLongId())
.task_code(CodeUtil.getNewCode("TASK_CODE"))
.task_type("")
.task_name("油漆线空盘入库")
.task_status(TaskStatusEnum.SURE_START.getCode())
.point_code1(point_code1)
.vehicle_code(form.getString("vehicle_code"))
.vehicle_type(form.getString("vehicle_type"))
.vehicle_qty(form.getIntValue("qty"))
.handle_class(THIS_CLASS)
.create_time(DateUtil.now())
.build();
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
taskTab.insert(json);
// this.findNextPoint();
this.immediateNotifyAcs();
return String.valueOf(dto.getTask_id());
}
/**
* @return
* @discription 确定下一点位
* @author ldjun
* @created 2020年6月12日 下午6:01:06
*/
@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 jsonTask = taskArr.getJSONObject(i);
// 找终点
JSONObject param = new JSONObject();
param.put("vehicle_type", jsonTask.getString("vehicle_type"));
param.put("qty", jsonTask.getString("vehicle_qty"));
String endPoint = this.endPoint(param);
// 如果此时endPoint为空则循环下一个任务
if (ObjectUtil.isEmpty(endPoint)) {
continue;
}
// 更新任务表point_code2
jsonTask.put("point_code2", endPoint);
jsonTask.put("task_status", "4");
taskTab.update(jsonTask);
// 锁定终点
JSONObject jsonEnd = pointTab.query("point_code = '" + endPoint + "'").uniqueResult(0);
jsonEnd.put("lock_type", "2");
pointTab.update(jsonEnd);
}
}
@Override
@Transactional(rollbackFor = Exception.class)
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("未找到该任务或者任务已完成!");
}
}
@Transactional(rollbackFor = Exception.class)
public String endPoint(JSONObject param) {
/*
* 1.叠盘架有B对应货位 规则如果暂存位能放下则放暂存位如果放不下则走2或3
* 2.叠盘架B没有货位 则去叠盘架暂存位
* 3.叠盘架暂存位没有货位则去养生A区
*/
WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point"); // 点位表
String end_code = "";
String vehicle_type = param.getString("vehicle_type");
// 1.找到对应类型的叠盘架
JSONObject jsonDpjEnd = pointTab.query("region_id = '" + RegionTypeEnum.DPJQB.getId() + "' and can_vehicle_type = '" + vehicle_type + "' and lock_type = '1' and is_used = '1' and is_delete = '0'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonDpjEnd)) {
// 判断数量 + 叠盘架的数量是否超过此叠盘架的最大数量
double add_num = NumberUtil.add(param.getIntValue("qty"), jsonDpjEnd.getIntValue("vehicle_qty"));
if (jsonDpjEnd.getDoubleValue("vehicle_max_qty") >= add_num) {
end_code = jsonDpjEnd.getString("point_code");
} else {
// 如果数量大于此叠盘架最大数量则查找叠盘架缓存位是否有对应空位
JSONObject jsonZcwEnd = pointTab.query("region_id = '" + RegionTypeEnum.KTPHCQB.getId() + "' and can_vehicle_type = '" + vehicle_type + "' and lock_type = '1' and is_used = '1' and is_delete = '0' and point_status = '1'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonZcwEnd)) {
end_code = jsonZcwEnd.getString("point_code");
} else {
// 为空就去养生A区的等待位
JSONObject jsonEmpWait = pointTab.query("region_id = '" + RegionTypeEnum.YSAQKTPQ01.getId() + "' and col_num = '1' and can_vehicle_type = '" + vehicle_type + "' and lock_type = '1' and is_used = '1' and is_delete = '0' and point_status = '1'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonEmpWait)) {
// 判断是否有任务
boolean is_point = this.isTask(jsonEmpWait.getString("point_code"));
if (is_point) {
JSONArray jsonEmpArr = pointTab.query("region_id = '" + RegionTypeEnum.YSAQKTPQ01.getId() + "' and row_num = '" + jsonEmpWait.getString("row_num") + "' and can_vehicle_type = '" + vehicle_type + "' and lock_type = '1' and is_used = '1' and is_delete = '0' and point_status = '1'").getResultJSONArray(0);
if (ObjectUtil.isNotEmpty(jsonEmpArr)) end_code = jsonEmpWait.getString("point_code");
}
}
}
}
} else {
// 2.叠盘架没有空位去找叠盘暂存位
JSONObject jsonZcwEnd = pointTab.query("region_id = '" + RegionTypeEnum.KTPHCQB.getId() + "' and can_vehicle_type = '" + vehicle_type + "' and lock_type = '1' and is_used = '1' and is_delete = '0' and point_status = '1'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonZcwEnd)) {
end_code = jsonZcwEnd.getString("point_code");
} else {
// 为空就去养生A区的等待位
JSONObject jsonEmpWait = pointTab.query("region_id = '" + RegionTypeEnum.YSAQKTPQ01.getId() + "' and col_num = '1' and can_vehicle_type = '" + vehicle_type + "' and lock_type = '1' and is_used = '1' and is_delete = '0' and point_status = '1'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonEmpWait)) {
// 判断是否有任务
boolean is_point = this.isTask(jsonEmpWait.getString("point_code"));
if (is_point) {
JSONArray jsonEmpArr = pointTab.query("region_id = '" + RegionTypeEnum.YSAQKTPQ01.getId() + "' and row_num = '" + jsonEmpWait.getString("row_num") + "' and can_vehicle_type = '" + vehicle_type + "' and lock_type = '1' and is_used = '1' and is_delete = '0' and point_status = '1'").getResultJSONArray(0);
if (ObjectUtil.isNotEmpty(jsonEmpArr)) end_code = jsonEmpWait.getString("point_code");
}
}
}
}
return end_code;
}
@Transactional(rollbackFor = Exception.class)
public boolean isTask(String point_code) {
/*
* 判断点位是否有任务存在
*/
WQLObject tab = WQLObject.getWQLObject("SCH_BASE_Task");
boolean result;
JSONObject jsonPointCode1 = tab.query("point_code1 = '" + point_code + "' and task_status <> '7' and is_delete = '0'").uniqueResult(0);
JSONObject jsonPointCode2 = tab.query("point_code2 = '" + point_code + "' and task_status <> '7' and is_delete = '0'").uniqueResult(0);
JSONObject jsonPointCode3 = tab.query("point_code3 = '" + point_code + "' and task_status <> '7' and is_delete = '0'").uniqueResult(0);
JSONObject jsonPointCode4 = tab.query("point_code4 = '" + point_code + "' and task_status <> '7' and is_delete = '0'").uniqueResult(0);
if (ObjectUtil.isEmpty(jsonPointCode1) && ObjectUtil.isEmpty(jsonPointCode2) && ObjectUtil.isEmpty(jsonPointCode3) && ObjectUtil.isEmpty(jsonPointCode4)) {
result = true;
} else {
result = false;
}
return result;
}
@Transactional(rollbackFor = Exception.class)
@Override
public String againApply(String task_id) {
/*
* 再次下发任务处理方法
* 涉及业务入空载具出空载具入物料出物料
*/
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表
WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point"); // 点位表
String point_code = "";
JSONObject jsonTask = taskTab.query("task_id ='" + task_id + "'").uniqueResult(0);
JSONObject jsonPoint2 = pointTab.query("point_code = '" + jsonTask.getString("point_code2") + "'").uniqueResult(0);
// 根据 区域、块、列找到第一个有物料的货位
JSONObject jsonOnePoint = pointTab.query("region_id = '" + jsonPoint2.getString("region_id") +
"' and block_num = '" + jsonPoint2.getString("block_num") +
"' and row_num = '" + jsonPoint2.getString("row_num") +
"' and point_code <> '" + jsonPoint2.getString("point_code") +
"' and point_status = '2' and lock_type = '1' order by in_empty_seq ASC").uniqueResult(0);
// 如果为空说明这一列其他货位为空 则入到最后一个货位
if (ObjectUtil.isEmpty(jsonOnePoint)) {
JSONObject jsonEmpPoint = pointTab.query("region_id = '" + jsonPoint2.getString("region_id") +
"' and block_num = '" + jsonPoint2.getString("block_num") +
"' and row_num = '" + jsonPoint2.getString("row_num") +
"' and point_code <> '" + jsonPoint2.getString("point_code") +
"' and point_status = '1' and lock_type = '1' order by in_empty_seq DESC").uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonEmpPoint)) {
point_code = jsonEmpPoint.getString("point_code");
jsonTask.put("point_code3", point_code);
taskTab.update(jsonTask);
}
} else {
// 找前一位的空位
double in_empty_seq = NumberUtil.sub(jsonOnePoint.getIntValue("in_empty_seq"), 1);
JSONObject jsonEmpPoint = pointTab.query("region_id = '" + jsonPoint2.getString("region_id") +
"' and block_num = '" + jsonPoint2.getString("block_num") +
"' and row_num = '" + jsonPoint2.getString("row_num") +
"' and point_code <> '" + jsonPoint2.getString("point_code") +
"' and in_empty_seq = '" + in_empty_seq +
"' and point_status = '1' and lock_type = '1'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonEmpPoint)) {
point_code = jsonEmpPoint.getString("point_code");
jsonTask.put("point_code3", point_code);
taskTab.update(jsonTask);
}
}
if (ObjectUtil.isNotEmpty(point_code)) {
JSONObject jsonEndPoint = pointTab.query("point_code = '" + point_code + "'").uniqueResult(0);
jsonEndPoint.put("lock_type", "2");
pointTab.update(jsonEndPoint);
}
//判断点位是否属于养生A区
if (point_code.startsWith("2")) {
//养生A区发给ACS需要新的点位(2101-03-1----->21011-03-1)
point_code = point_code.substring(0, 4) + "1" + point_code.substring(4, 9);
}
return point_code;
}
@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> resultList = new ArrayList<>();
for (int i = 0; i < arr.size(); i++) {
JSONObject json = arr.getJSONObject(i);
String point_code3 = json.getString("point_code3");
//判断终点是否属于养生A区
if (point_code3.startsWith("2")) {
//养生A区发给ACS需要新的点位(2101-03-1----->21011-03-1)
point_code3 = point_code3.substring(0, 4) + "1" + point_code3.substring(4, 9);
}
AcsTaskDto dto = AcsTaskDto.builder()
.task_id(json.getString("task_id"))
.task_code(json.getString("task_code"))
.task_type(json.getString("task_type"))
.start_device_code(json.getString("point_code1"))
.next_device_code(point_code3)
.vehicle_code(json.getString("vehicle_code"))
.vehicle_type(json.getString("vehicle_type"))
.priority(json.getString("priority"))
.remark(json.getString("remark"))
.build();
resultList.add(dto);
}
return resultList;
}
}

12
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendEmpty/YzjSendEmpVehicleTask.java

@ -112,8 +112,8 @@ public class YzjSendEmpVehicleTask extends AbstractAcsTask {
if (StrUtil.equals(status, UpdateTaskStatusEnum.FORCEFINISH.getCode())) {
// 更改任务状态为完成
jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode());
jsonTask.put("update_optid", SecurityUtils.getCurrentUserId());
jsonTask.put("update_optname", SecurityUtils.getCurrentUsername());
jsonTask.put("update_optid", "22");
jsonTask.put("update_optname", "ACS系统");
jsonTask.put("update_time", DateUtil.now());
taskTab.update(jsonTask);
// 释放点位
@ -189,6 +189,7 @@ public class YzjSendEmpVehicleTask 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);
@ -225,10 +226,7 @@ public class YzjSendEmpVehicleTask extends AbstractAcsTask {
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,UpdateTaskStatusEnum.CANCEL.getCode());
else {
throw new BadRequestException("未找到该任务或者任务已完成!");
}
if (ObjectUtil.isEmpty(taskObj))throw new BadRequestException("未找到该任务或者任务已完成!");
this.updateTaskStatus(taskObj, UpdateTaskStatusEnum.CANCEL.getCode());
}
}

1
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendEmpty/wql/QSCH_yzjSendEmptyVehicle_01.wql

@ -65,7 +65,6 @@
OPTION 输入.vehicle_type <> ""
p.can_vehicle_type like 输入.vehicle_type
ENDOPTION
ORDER BY col_num desc,row_num,layer_num
ENDSELECT
ENDQUERY
ENDIF

101
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/FjSendMaterialTask.java

@ -13,13 +13,17 @@ 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.acs.service.WmsToAcsService;
import org.nl.wms.ext.acs.service.impl.WmsToAcsServiceImpl;
import org.nl.wms.sch.SchTaskDto;
import org.nl.wms.sch.manage.*;
import org.nl.wms.sch.tasks.AcsTaskDto;
import org.nl.wms.sch.tasks.PointUpdateUtil;
import org.nl.wms.sch.tasks.callEmpty.FjCallEmptyVehicleTask;
import org.nl.wms.sch.tasks.sendEmpty.FjSendEmpVehicleTask;
import org.nl.wms.util.IdUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -35,9 +39,8 @@ import java.util.List;
@RequiredArgsConstructor
@Slf4j
public class FjSendMaterialTask extends AbstractAcsTask {
private final String THIS_CLASS = FjSendEmpVehicleTask.class.getName();
private final String THIS_CLASS = FjSendMaterialTask.class.getName();
private final WmsToAcsService wmsToAcsService;
/**
* 添加任务进行下发
*
@ -252,6 +255,7 @@ public class FjSendMaterialTask extends AbstractAcsTask {
.material_qty(qty)
.task_status(TaskStatusEnum.SURE_START.getCode())
.point_code1(point_code1)
.acs_task_type("1")
.vehicle_code(vehicle_code)
.vehicle_type(workOrderObj.getString("vehicle_type"))
.workorder_id(workOrderObj.getLong("workorder_id"))
@ -286,30 +290,55 @@ public class FjSendMaterialTask extends AbstractAcsTask {
for (int i = 0; i < taskArr.size(); i++) {
JSONObject taskObj = taskArr.getJSONObject(i);
JSONObject requestObj = taskObj.getJSONObject("request_param");
if (requestObj.getString("is_full").equals("1")) {
JSONObject endPoint = pointTab.query("point_code = 'BZX01' AND lock_type = '1'").uniqueResult(0);
if (requestObj.getString("is_full").equals("1")) { // 满拖去包装线,并且叫空木托盘
// 更新包装线点位
JSONArray jsonArray = new JSONArray();
JSONObject data = new JSONObject();
data.put("device_code", "BZX01");
jsonArray.add(data);
// 更新点位
PointUpdateUtil.updatePoint(jsonArray);
// 找点位
JSONObject endPoint = pointTab.query("point_code = 'BZX01' AND" +
" point_status = '1' AND lock_type = '1'").uniqueResult(0); // 空位
//判断当前点是否有未完成的任务
JSONObject taskObj2 = taskTab.query("task_group_id = '" + taskObj.getString("task_group_id") + "' and sort_seq = '1'").uniqueResult(0);
// JSONObject param = new JSONObject();
// if (ObjectUtil.isNotEmpty(taskObj2)){
// param.put("point_code2", taskObj.getString("point_code1")); // 起点
// SpringContextHolder.getBean(FjCallEmptyVehicleTask.class).createTask(param);
// }
// 满拖先生成叫半托,没有在呼叫空托盘的任务,在执行去到包装线
SchTaskDto dto = SchTaskDto.builder()
.task_id(IdUtil.getLongId())
.task_code(CodeUtil.getNewCode("TASK_CODE"))
.task_type("task_type")
.task_name("分拣呼叫空托盘")
.vehicle_type(taskObj.getString("vehicle_type")) // 与满拖的类型一致,因为工单未结束
.material_qty(taskObj.getString("material_qty"))
.task_status(TaskStatusEnum.SURE_END.getCode())
.point_code2(taskObj.getString("point_code2"))
.handle_class(THIS_CLASS)
.create_time(DateUtil.now())
.sort_seq(1)
.task_group_id(taskObj.getLong("task_group_id"))
.build();
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
taskTab.insert(json);
SchTaskDto dto = null;
if (ObjectUtil.isEmpty(taskObj2)) {
dto = SchTaskDto.builder()
.task_id(IdUtil.getLongId())
.task_code(CodeUtil.getNewCode("TASK_CODE"))
.task_type("task_type")
.task_name("分拣呼叫空托盘")
.vehicle_type(taskObj.getString("vehicle_type")) // 与满拖的类型一致,因为工单未结束
.material_qty(taskObj.getString("material_qty"))
.task_status(TaskStatusEnum.SURE_END.getCode())
.point_code2(taskObj.getString("point_code1"))
.handle_class(THIS_CLASS)
.create_time(DateUtil.now())
.sort_seq(1)
.task_group_id(taskObj.getLong("task_group_id"))
.build();
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
taskTab.insert(json);
}
// 先呼叫半托
JSONObject halfTray = pointTab.query("region_code = 'BZZCQ' AND lock_type = '1' " +
"AND point_status = '2' AND is_used = '1' AND is_delete = '0'").uniqueResult(0);
// 获取任务
JSONObject taskEnt = taskTab.query("task_id = '" + dto.getTask_id() + "'").uniqueResult(0);
String id = null;
if (ObjectUtil.isNotEmpty(dto)) {
id = String.valueOf(dto.getTask_id());
} else {
id = taskObj2.getString("task_id");
}
JSONObject taskEnt = taskTab.query("task_id = '" + id + "'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(halfTray)) { // 半托
// 去搬运
taskEnt.put("point_code1", halfTray.getString("point_code"));
@ -330,24 +359,30 @@ public class FjSendMaterialTask extends AbstractAcsTask {
// 找到载具类型符合的覆膜机位置:真正的位置在device_code
JSONObject emptyTray = pointTab.query("region_code = 'RGCPQ' AND vehicle_type = '" +
taskObj.getString("vehicle_type") + "' AND point_status = '2' " +
"AND is_used = '1' AND is_delete = '0' AND lock_type = '1'").uniqueResult(0);
"AND is_used = '1' AND is_delete = '0'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(emptyTray)) {
// 判断出口是否锁住
JSONObject exitPoint = pointTab.query("point_code = '" +
emptyTray.getString("device_code") + "'" +
" AND lock_type = '1'").uniqueResult(0);
if (ObjectUtil.isEmpty(exitPoint)) return; // 出口点锁住就不能呼叫空盘
// 向ACS申请传送一个空木托盘
JSONArray jsonArray = new JSONArray();
JSONObject data = new JSONObject();
data.put("device_code", emptyTray.getString("point_code"));
jsonArray.add(data);
wmsToAcsService.getTray(jsonArray);
JSONArray jsons = new JSONArray();
JSONObject datas = new JSONObject();
datas.put("device_code", emptyTray.getString("point_code"));
jsons.add(datas);
WmsToAcsServiceImpl wmsToAcsService = SpringContextHolder.getBean(WmsToAcsServiceImpl.class);
wmsToAcsService.getTray(jsons);
// 去搬运
taskEnt.put("point_code1", emptyTray.getString("device_code"));
taskEnt.put("point_code1", exitPoint.getString("point_code"));
taskEnt.put("update_time", DateUtil.now());
taskEnt.put("remark", "");
taskEnt.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
taskTab.update(taskEnt);
// 更新空托盘点位状态
emptyTray.put("task_id", taskObj.getString("task_id"));
emptyTray.put("lock_type", PointEnum.LOCK_TYPE_TRUE.getCode());
pointTab.update(emptyTray);
exitPoint.put("task_id", taskObj.getString("task_id"));
exitPoint.put("lock_type", PointEnum.LOCK_TYPE_TRUE.getCode());
pointTab.update(exitPoint);
} else {
taskEnt.put("remark", "暂无空托盘");
taskEnt.put("update_time", DateUtil.now());
@ -360,7 +395,9 @@ public class FjSendMaterialTask extends AbstractAcsTask {
}
}
// 更新送料任务信息
if (ObjectUtil.isEmpty(endPoint)) return;
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);

19
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/HnSendMaterialTask.java

@ -18,6 +18,7 @@ import org.nl.wms.sch.manage.*;
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;
@ -114,8 +115,8 @@ public class HnSendMaterialTask extends AbstractAcsTask {
if (StrUtil.equals(status, UpdateTaskStatusEnum.FORCEFINISH.getCode())) {
// 更改任务状态为完成
taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode());
taskObj.put("update_optid", SecurityUtils.getCurrentUserId());
taskObj.put("update_optname", SecurityUtils.getCurrentUsername());
taskObj.put("update_optid", "22");
taskObj.put("update_optname", "ACS系统");
taskObj.put("update_time", DateUtil.now());
taskTab.update(taskObj);
@ -124,7 +125,7 @@ public class HnSendMaterialTask extends AbstractAcsTask {
if (ObjectUtil.isEmpty(point_code2)) return; // 防止未找到终点而完成任务空指针
JSONObject point2Obj = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);
JSONObject requestObj = task.getJSONObject("request_param");
JSONObject requestObj = taskObj.getJSONObject("request_param");
// 工单标识
String workorder_id = taskObj.getString("workorder_id");
JSONObject workorderObj = workOrderTab.query("workorder_id = '" + workorder_id + "'").uniqueResult(0);
@ -144,16 +145,15 @@ public class HnSendMaterialTask extends AbstractAcsTask {
regionIoObj.put("region_name", point2Obj.getString("region_name"));
regionIoObj.put("material_id", taskObj.getString("material_id"));
regionIoObj.put("vehicle_code", taskObj.getString("vehicle_code"));
regionIoObj.put("qty", requestObj.getString("qty"));
regionIoObj.put("ivt_weight", requestObj.getString("weight"));
regionIoObj.put("ivt_weight", requestObj.getString("qty"));
regionIoObj.put("weight_unit_id", RegionIOEnum.UNIT_ID_T.getCode());
regionIoObj.put("bill_status", RegionIOEnum.BILL_STATUS_FINISH.getCode());
regionIoObj.put("start_point_code", taskObj.getString("point_code1"));
regionIoObj.put("end_point_code", taskObj.getString("point_code2"));
regionIoObj.put("create_mode", RegionIOEnum.CREATE_MODE_ACS.getCode());
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_id", "22");
regionIoObj.put("create_name", "ACS系统");
regionIoObj.put("create_time", DateUtil.now());
regionIoTab.insert(regionIoObj);
@ -183,6 +183,7 @@ public class HnSendMaterialTask extends AbstractAcsTask {
* 混碾机送料到困料货架
*/
@Override
@Transactional(rollbackFor = Exception.class)
public String createTask(JSONObject form) {
String point_code1 = form.getString("point_code1");
String vehicle_code = form.getString("vehicle_code");
@ -251,7 +252,7 @@ public class HnSendMaterialTask extends AbstractAcsTask {
paramObj.put("flag", "1");
paramObj.put("material_id", taskObj.getString("material_id"));
JSONArray workerOrders = WQL.getWO("QSCH_hnSendMaterial_01").addParamMap(paramObj).process().getResultJSONArray(0);
for (int j = 0; j < workerOrders.size(); j++) {
for (int j = 0; j < workerOrders.size(); j++) { // 根据符合的工单查找
JSONObject workerOrder = workerOrders.getJSONObject(j);
// 判断仓库是否有该物料
JSONObject param2 = new JSONObject();
@ -272,6 +273,7 @@ public class HnSendMaterialTask extends AbstractAcsTask {
// 找到位置就可以直接搬
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);
@ -294,6 +296,7 @@ public class HnSendMaterialTask 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);

26
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/SzSendMaterialTask.java

@ -111,16 +111,16 @@ public class SzSendMaterialTask extends AbstractAcsTask {
String vehicle_code = taskObj.getString("vehicle_code");
// 更改任务状态为完成
taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode());
taskObj.put("update_optid", SecurityUtils.getCurrentUserId());
taskObj.put("update_optname", SecurityUtils.getCurrentUsername());
taskObj.put("update_optid", "22");
taskObj.put("update_optname", "ACS系统");
taskObj.put("update_time", DateUtil.now());
taskTab.update(taskObj);
String point_code2 = taskObj.getString("point_code2");
if (ObjectUtil.isEmpty(point_code2)) return;
JSONObject point2Obj = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);
JSONObject requestObj = task.getJSONObject("request_param");
JSONObject groupObj = groupTab.query("group_id = '" + taskObj.getString("group_id") + "'").uniqueResult(0);
//区域出入表【st_ivt_regionIO】
WQLObject regionIoTab = WQLObject.getWQLObject("st_ivt_regionIO");
JSONObject regionIoObj = new JSONObject();
@ -131,27 +131,27 @@ public class SzSendMaterialTask extends AbstractAcsTask {
regionIoObj.put("region_id", point2Obj.getString("region_id"));
regionIoObj.put("region_code", point2Obj.getString("region_code"));
regionIoObj.put("region_name", point2Obj.getString("region_name"));
regionIoObj.put("material_id", taskObj.getString("material_id"));
regionIoObj.put("material_id", groupObj.getString("material_uuid"));
regionIoObj.put("vehicle_code", vehicle_code);
regionIoObj.put("qty", requestObj.getString("qty"));
regionIoObj.put("qty", groupObj.getString("qty"));
regionIoObj.put("weight_unit_id", RegionIOEnum.UNIT_ID_B.getCode());
regionIoObj.put("bill_status", RegionIOEnum.BILL_STATUS_FINISH.getCode());
regionIoObj.put("start_point_code", taskObj.getString("point_code1"));
regionIoObj.put("end_point_code", taskObj.getString("point_code3"));
regionIoObj.put("end_point_code", taskObj.getString("point_code2"));
regionIoObj.put("create_mode", RegionIOEnum.CREATE_MODE_ACS.getCode());
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_id", "22");
regionIoObj.put("create_name", "ACS系统");
regionIoObj.put("create_time", DateUtil.now());
regionIoTab.insert(regionIoObj);
//完成后入库
point2Obj.put("instorage_time", DateUtil.now());
point2Obj.put("pcsn", DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyyMMdd"));
point2Obj.put("ivt_qty", requestObj.getString("qty"));
point2Obj.put("material_id", taskObj.getString("material_id"));
point2Obj.put("vehicle_type", taskObj.getString("vehicle_type"));
point2Obj.put("vehicle_code", taskObj.getString("vehicle_code"));
point2Obj.put("ivt_qty", groupObj.getString("qty"));
point2Obj.put("material_id", groupObj.getString("material_uuid"));
point2Obj.put("vehicle_type", groupObj.getString("vehicle_type"));
point2Obj.put("vehicle_code", groupObj.getString("vehicle_code"));
point2Obj.put("vehicle_qty", "1"); // 入库为1个载具
point2Obj.put("is_full", groupObj.getString("is_full"));
point2Obj.put("group_id", groupObj.getString("group_id"));
@ -187,6 +187,7 @@ public class SzSendMaterialTask extends AbstractAcsTask {
.task_code(CodeUtil.getNewCode("TASK_CODE"))
.task_type("task_type")
.task_name("烧制入库")
.acs_task_type("1")
.material_id(groupObj.getLong("material_uuid"))
.group_id(groupObj.getLong("group_id"))
.material_qty(qty)
@ -230,6 +231,7 @@ public class SzSendMaterialTask 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);

21
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/YzjSendMaterialTask.java

@ -18,6 +18,7 @@ import org.nl.wms.sch.manage.*;
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;
@ -75,6 +76,8 @@ public class YzjSendMaterialTask extends AbstractAcsTask {
public void updateTaskStatus(JSONObject task, String status) {
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
//生产工单表【PDM_BD_WorkOrder】
WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder");
String task_id = task.getString("task_id");
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
@ -107,20 +110,18 @@ public class YzjSendMaterialTask extends AbstractAcsTask {
if (StrUtil.equals(status, UpdateTaskStatusEnum.FORCEFINISH.getCode())) {
// 更改任务状态为完成
taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode());
taskObj.put("update_optid", SecurityUtils.getCurrentUserId());
taskObj.put("update_optname", SecurityUtils.getCurrentUsername());
taskObj.put("update_optid", "22");
taskObj.put("update_optname", "ACS系统");
taskObj.put("update_time", DateUtil.now());
taskTab.update(taskObj);
String point_code2 = taskObj.getString("point_code2");
JSONObject point2Obj = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(point2Obj)) return;
JSONObject requestObj = task.getJSONObject("request_param");
JSONObject requestObj = taskObj.getJSONObject("request_param");
//工单标识
String workorder_id = requestObj.getString("workorder_id");
//生产工单表【PDM_BD_WorkOrder】
WQLObject workOrderTab = WQLObject.getWQLObject("PDM_BD_WorkOrder");
JSONObject workorderObj = workOrderTab.query("workorder_id", workorder_id).uniqueResult(0);
String workorder_id = taskObj.getString("workorder_id");
JSONObject workorderObj = workOrderTab.query("workorder_id = '" + workorder_id + "'").uniqueResult(0);
//区域出入表【st_ivt_regionIO】
WQLObject regionIoTab = WQLObject.getWQLObject("st_ivt_regionIO");
@ -142,8 +143,8 @@ public class YzjSendMaterialTask extends AbstractAcsTask {
regionIoObj.put("end_point_code", taskObj.getString("point_code3"));
regionIoObj.put("create_mode", RegionIOEnum.CREATE_MODE_ACS.getCode());
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_id", "22");
regionIoObj.put("create_name", "ACS系统");
regionIoObj.put("create_time", DateUtil.now());
regionIoTab.insert(regionIoObj);
@ -173,6 +174,7 @@ public class YzjSendMaterialTask extends AbstractAcsTask {
* 压制机送料入窑缓存货架
*/
@Override
@Transactional(rollbackFor = Exception.class)
public String createTask(JSONObject form) {
String point_code1 = form.getString("point_code1");
String vehicle_code = form.getString("vehicle_code");
@ -247,6 +249,7 @@ public class YzjSendMaterialTask 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);

1
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/wql/QSCH_fjSendMaterial_01.wql

@ -53,7 +53,6 @@
AND is_used = '1'
AND is_delete = '0'
AND point_status = '1'
AND point_type = '1'
OPTION 输入.region_code <> ""
p.region_code = 输入.region_code
ENDOPTION

4
lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sendMaterial/wql/QSCH_hnSendMaterial_01.wql

@ -53,7 +53,11 @@
WHERE
workorder.order_status = '3'
AND
workorder.is_delete = '0'
AND
device.device_model = '4'
AND
workorder.is_delete = '0'
OPTION 输入.material_id <> ""
workorder.material_id = 输入.material_id
ENDOPTION

BIN
lms/nladmin-system/src/main/java/org/nl/wms/wms.xls

Binary file not shown.

49
lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue

@ -124,14 +124,14 @@
<el-form-item v-if="false" label="物料标识" prop="material_id">
<el-input v-model="form.material_id" style="width: 200px;" />
</el-form-item>
<el-form-item label="生产设备">
<el-input
v-model="form.device_code"
style="width: 200px;"
clearable
@focus="deviceShow=true"
@clear="form.device_id='', form.device_code=''"
/>
<el-form-item label="所属工序" prop="workorder_procedure">
<el-select v-model="form.workorder_procedure" style="width: 200px" filterable placeholder="请选择" clearable>
<el-option
v-for="item in dict.workorder_procedure"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="物料编码" prop="material_code">
<el-input
@ -197,8 +197,6 @@
v-model="form.order_status"
clearable
filterable
size="mini"
class="filter-item"
style="width: 200px"
>
<el-option
@ -208,21 +206,14 @@
/>
</el-select>
</el-form-item>
<el-form-item label="所属工序">
<el-select
v-model="form.workorder_procedure"
<el-form-item label="生产设备">
<el-input
v-model="form.device_code"
style="width: 200px;"
clearable
filterable
size="mini"
class="filter-item"
style="width: 200px"
>
<el-option
v-for="item in dict.workorder_procedure"
:label="item.label"
:value="item.value"
/>
</el-select>
@focus="deviceShow=true"
@clear="form.device_id='', form.device_code=''"
/>
</el-form-item>
<el-form-item label="计划开始时间" prop="planproducestart_date">
<el-date-picker
@ -240,6 +231,16 @@
style="width: 200px;"
/>
</el-form-item>
<el-form-item v-if="form.workorder_procedure == 4" label="所属客户">
<el-select v-model="query.cust_id" filterable clearable class="filter-item" style="width: 185px" placeholder="请选择客户" @change="crud.toQuery">
<el-option
v-for="item in custList"
:key="item.cust_id"
:label="item.cust_name"
:value="item.cust_id"
/>
</el-select>
</el-form-item>
<el-form-item label="是否搬运" prop="is_needmove">
<el-radio
v-for="item in dict.is_or_not"

4
lms/nladmin-ui/src/views/wms/sch/task/index.vue

@ -132,9 +132,9 @@
</template>
</el-table-column>
<el-table-column prop="vehicle_code" label="载具编码" min-width="100" show-overflow-tooltip />
<el-table-column prop="point_code1" label="点位1" width="100" />
<el-table-column prop="point_code1" label="点位1" width="120" />
<el-table-column prop="point1_region_name" label="区域1" width="120" />
<el-table-column prop="point_code2" label="点位2" min-width="100" show-overflow-tooltip />
<el-table-column prop="point_code2" label="点位2" min-width="120" show-overflow-tooltip />
<el-table-column prop="point2_region_name" label="区域2" min-width="120" show-overflow-tooltip />
<!--<el-table-column prop="point_code3" label="点位3" min-width="100" show-overflow-tooltip />
<el-table-column prop="point3_region_name" label="区域3" min-width="120" show-overflow-tooltip />-->

Loading…
Cancel
Save