add: 添加手持功能
This commit is contained in:
@@ -11,6 +11,7 @@ public enum RegionEnum {
|
||||
TRUBEND_SHELVES_3_1_1("TruBend 7036货架03-01-01","111-07"),
|
||||
ZDFJ("分拣工序","111-08"),
|
||||
DDLK("堆叠笼框工序","111-20"),
|
||||
NBJG("内部加工区","111-10"),
|
||||
;
|
||||
private final String region_name;
|
||||
private final String region_code;
|
||||
|
||||
@@ -400,8 +400,17 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("vehicle_code", schBaseTask.getVehicle_code());
|
||||
json.put("status", status);
|
||||
String point_code2 = schBaseTask.getPoint_code2();
|
||||
if (point_code2.contains("_0")) {
|
||||
point_code2 = point_code2.substring(0, point_code2.length() - 3);
|
||||
}
|
||||
String task_code = schBaseTask.getTask_code();
|
||||
String substring = task_code.substring(task_code.length() - 1);
|
||||
if ("A".equals(substring) || "B".equals(substring)) {
|
||||
task_code = task_code.substring(0, task_code.length() - 1);
|
||||
}
|
||||
json.put("device_code", schBaseTask.getPoint_code2());
|
||||
json.put("task_code", schBaseTask.getTask_code());
|
||||
json.put("task_code", task_code);
|
||||
AcsResponse acsResponse = sortingService.feedAgvTaskStatus(json);
|
||||
}
|
||||
}
|
||||
@@ -448,8 +457,17 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("vehicle_code", vehicle_code);
|
||||
json.put("status", status);
|
||||
json.put("device_code", schBaseTask.getPoint_code1());
|
||||
json.put("task_code", schBaseTask.getTask_code());
|
||||
String point_code1 = schBaseTask.getPoint_code1();
|
||||
if (point_code1.contains("_0")) {
|
||||
point_code1 = point_code1.substring(0, point_code1.length() - 3);
|
||||
}
|
||||
json.put("device_code", point_code1);
|
||||
String task_code = schBaseTask.getTask_code();
|
||||
String substring = task_code.substring(task_code.length() - 1);
|
||||
if ("A".equals(substring) || "B".equals(substring)) {
|
||||
task_code = task_code.substring(0, task_code.length() - 1);
|
||||
}
|
||||
json.put("task_code", task_code);
|
||||
AcsResponse acsResponse = sortingService.feedAgvTaskStatus(json);
|
||||
}
|
||||
}
|
||||
@@ -502,8 +520,17 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("vehicle_code", schBaseTask.getVehicle_code());
|
||||
json.put("status", status);
|
||||
json.put("device_code", schBaseTask.getPoint_code1());
|
||||
json.put("task_code", schBaseTask.getTask_code());
|
||||
String point_code1 = schBaseTask.getPoint_code1();
|
||||
if (point_code1.contains("_0")) {
|
||||
point_code1 = point_code1.substring(0, point_code1.length() - 3);
|
||||
}
|
||||
json.put("device_code", point_code1);
|
||||
String task_code = schBaseTask.getTask_code();
|
||||
String substring = task_code.substring(task_code.length() - 1);
|
||||
if ("A".equals(substring) || "B".equals(substring)) {
|
||||
task_code = task_code.substring(0, task_code.length() - 1);
|
||||
}
|
||||
json.put("task_code", task_code);
|
||||
boolean flag = true;
|
||||
AcsResponse acsResponse = sortingService.feedAgvTaskStatus(json);
|
||||
if (acsResponse.getStatus() != 200 || StringUtils.isNotEmpty(acsResponse.getErrMsg())) {
|
||||
@@ -525,8 +552,17 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("vehicle_code", schBaseTask.getVehicle_code());
|
||||
json.put("status", status);
|
||||
json.put("device_code", schBaseTask.getPoint_code1());
|
||||
json.put("task_code", schBaseTask.getTask_code());
|
||||
String point_code2 = schBaseTask.getPoint_code2();
|
||||
if (point_code2.contains("_0")) {
|
||||
point_code2 = point_code2.substring(0, point_code2.length() - 3);
|
||||
}
|
||||
json.put("device_code", point_code2);
|
||||
String task_code = schBaseTask.getTask_code();
|
||||
String substring = task_code.substring(task_code.length() - 1);
|
||||
if ("A".equals(substring) || "B".equals(substring)) {
|
||||
task_code = task_code.substring(0, task_code.length() - 1);
|
||||
}
|
||||
json.put("task_code", task_code);
|
||||
boolean flag = true;
|
||||
AcsResponse acsResponse = sortingService.feedAgvTaskStatus(json);
|
||||
if (acsResponse.getStatus() != 200 || StringUtils.isNotEmpty(acsResponse.getErrMsg())) {
|
||||
|
||||
@@ -28,9 +28,9 @@ public class HandheldController {
|
||||
@Autowired
|
||||
private HandheldService handheldService;
|
||||
|
||||
@PostMapping("/task")
|
||||
@Log("手持空料笼入库")
|
||||
@ApiOperation("手持空料笼入库")
|
||||
@PostMapping("/cageFrame")
|
||||
@Log("外协区空笼框送回")
|
||||
@ApiOperation("外协区空笼框送回")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> createEmptyCageStorageTask(@RequestBody JSONObject param) {
|
||||
handheldService.emptyCageStorageTask(param);
|
||||
@@ -38,7 +38,27 @@ public class HandheldController {
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/emptyVehicle")
|
||||
@PostMapping("/rack")
|
||||
@Log("外协区空料架送回")
|
||||
@ApiOperation("外协区空料架送回")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> applyRackSendItBask(@RequestBody JSONObject param) {
|
||||
handheldService.rackSendItBask(param);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/transhipment")
|
||||
@Log("物料转运")
|
||||
@ApiOperation("物料转运")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> applyMaterialTransfer(@RequestBody JSONObject param) {
|
||||
handheldService.materialTransfer(param);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@PostMapping("/callEmptyRack")
|
||||
@Log("手持呼叫空料笼")
|
||||
@ApiOperation("手持呼叫空料笼")
|
||||
@SaIgnore
|
||||
@@ -65,8 +85,16 @@ public class HandheldController {
|
||||
return new ResponseEntity<>(handheldService.pointLock(param), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/pointStatus")
|
||||
@Log("修改点位货物状态")
|
||||
@ApiOperation("修改点位货物状态")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> applyPointStatus(@RequestBody JSONObject param) {
|
||||
return new ResponseEntity<>(handheldService.pointStatus(param), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/sourehouse")
|
||||
|
||||
@PostMapping("/storehouse")
|
||||
@Log("补空框")
|
||||
@ApiOperation("补空框")
|
||||
@SaIgnore
|
||||
|
||||
@@ -9,7 +9,7 @@ public interface HandheldService {
|
||||
|
||||
|
||||
/**
|
||||
* 手持创建空料笼入库任务
|
||||
* 外协区空料笼送回
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
@@ -40,4 +40,23 @@ public interface HandheldService {
|
||||
* @param param
|
||||
*/
|
||||
void toStorehouse(JSONObject param);
|
||||
|
||||
/**
|
||||
* 外协区空料架送回
|
||||
* @param param
|
||||
*/
|
||||
void rackSendItBask(JSONObject param);
|
||||
|
||||
/**
|
||||
* 物料转运
|
||||
* @param param
|
||||
*/
|
||||
void materialTransfer(JSONObject param);
|
||||
|
||||
/**
|
||||
* 修改点位货物状态
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
Object pointStatus(JSONObject param);
|
||||
}
|
||||
|
||||
@@ -8,8 +8,12 @@ import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import nl.basjes.shaded.org.springframework.util.Assert;
|
||||
import org.nl.common.enums.VehicleTypeEnum;
|
||||
import org.nl.common.enums.region.RegionEnum;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.system.service.notice.ISysNoticeService;
|
||||
import org.nl.wms.database.vehicle.service.IMdBaseVehicleService;
|
||||
import org.nl.wms.database.vehicle.service.dao.MdBaseVehicle;
|
||||
import org.nl.wms.ext.handheld.service.HandheldService;
|
||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
|
||||
@@ -42,15 +46,19 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
private ISchBaseVehiclematerialgroupService iSchBaseVehiclematerialgroupService;
|
||||
@Autowired
|
||||
private ISchBaseTaskService iSchBaseTaskService;
|
||||
@Autowired
|
||||
private IMdBaseVehicleService iMdBaseVehicleService;
|
||||
|
||||
|
||||
@Override
|
||||
public void emptyCageStorageTask(JSONObject param) {
|
||||
Assert.noNullElements(new Object[]{param.getString("device_code"), param.getString("vehicle_list")
|
||||
, param.getString("vehicle_type")}, "参数不能为空!");
|
||||
}, "参数不能为空!");
|
||||
JSONArray vehicle_list = param.getJSONArray("vehicle_list");
|
||||
String device_code = param.getString("device_code");
|
||||
String vehicle_type = param.getString("vehicle_type");
|
||||
if (vehicle_list.size() != 2 && vehicle_list.size() != 4) {
|
||||
throw new BadRequestException("笼框数量不匹配,请确认笼框数量后重新扫码!");
|
||||
}
|
||||
SchBasePoint schBasePoint = iSchBasePointService.selectByPointCode(device_code);
|
||||
if (ObjectUtil.isEmpty(schBasePoint)) throw new BadRequestException("设备点位不存在!");
|
||||
AbstractTask connectorTask = taskFactory.getTask("EMPTYCAGETask");
|
||||
@@ -61,44 +69,33 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
jo.put("create_mode", GeneralDefinition.AUTO_CREATION);
|
||||
jo.put("vehicle_qty", vehicle_list.size());
|
||||
jo.put("vehicle_code", vehicle_list);
|
||||
jo.put("vehicle_type", vehicle_type);
|
||||
jo.put("ext_data", param);
|
||||
connectorTask.apply(jo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object applyEmptyVehicle(JSONObject param) {
|
||||
/* Assert.noNullElements(new Object[]{param.getString("device_code"), param.getString("vehicle_type")}, "参数不能为空!");
|
||||
String device_code = param.getString("device_code");
|
||||
String vehicle_type = param.getString("vehicle_type");
|
||||
SchBasePoint schBasePoint = iSchBasePointService.selectByPointCode(device_code);
|
||||
if (ObjectUtil.isEmpty(schBasePoint)) throw new BadRequestException("设备点位不存在!");
|
||||
AbstractTask connectorTask = taskFactory.getTask("CALLEMPTYTask");
|
||||
// 准备参数:设备编码
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("device_code", device_code);
|
||||
jo.put("config_code", "CALLEMPTYTask");
|
||||
jo.put("create_mode", GeneralDefinition.AUTO_CREATION);
|
||||
jo.put("vehicle_type", vehicle_type);
|
||||
jo.put("ext_data", param);
|
||||
connectorTask.apply(jo);*/
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cageBlankingTask(JSONObject param) {
|
||||
Assert.noNullElements(new Object[]{param.getString("device_code"), param.getString("vehicle_code")
|
||||
, param.getString("material_qty"), param.getString("region_code"), param.getString("order_code")}, "参数不能为空!");
|
||||
Assert.noNullElements(new Object[]{param.getString("device_code"), param.getString("region_code"),}, "当前点位或目的地不能为空!");
|
||||
if (!param.getString("region_code").equals(RegionEnum.NBJG.getRegion_code())) {
|
||||
Assert.noNullElements(new Object[]{param.getString("vehicle_code"), param.getString("material_code")
|
||||
, param.getString("material_qty"), param.getString("order_code")}, "参数不能为空!");
|
||||
}
|
||||
String device_code = param.getString("device_code");
|
||||
String vehicle_code = param.getString("vehicle_code");
|
||||
String material_qty = param.getString("material_qty");
|
||||
String material_code = param.getString("material_code");
|
||||
String region_code = param.getString("region_code");
|
||||
String order_code = param.getString("order_id");
|
||||
String order_code = param.getString("order_code");
|
||||
SchBasePoint schBasePoint = iSchBasePointService.selectByPointCode(device_code);
|
||||
if (ObjectUtil.isEmpty(schBasePoint)) throw new BadRequestException("设备点位不存在!");
|
||||
iSchBasePointService.update(Wrappers.lambdaUpdate(SchBasePoint.class)
|
||||
.eq(SchBasePoint::getPoint_code, device_code)
|
||||
.set(SchBasePoint::getIs_lock,true));
|
||||
.set(SchBasePoint::getIs_lock, true));
|
||||
AbstractTask connectorTask = taskFactory.getTask("BLANKINGTask");
|
||||
// 准备参数:设备编码
|
||||
JSONObject jo = new JSONObject();
|
||||
@@ -114,6 +111,7 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
SchBaseVehiclematerialgroup schBaseVehiclematerialgroup = new SchBaseVehiclematerialgroup();
|
||||
schBaseVehiclematerialgroup.setVehicle_code(vehicle_code);
|
||||
schBaseVehiclematerialgroup.setMaterial_qty(Integer.parseInt(material_qty));
|
||||
schBaseVehiclematerialgroup.setMaterial_code(material_code);
|
||||
schBaseVehiclematerialgroup.setOrder_code(order_code);
|
||||
iSchBaseVehiclematerialgroupService.create(schBaseVehiclematerialgroup);
|
||||
}
|
||||
@@ -126,14 +124,20 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
SchBaseRegion schBaseRegion = iSchBaseRegionService.getOne(Wrappers.lambdaQuery(SchBaseRegion.class)
|
||||
.eq(SchBaseRegion::getRegion_code, region_code));
|
||||
if (ObjectUtil.isEmpty(schBaseRegion)) throw new BadRequestException("该区域不存在!");
|
||||
List<String> byRegionCode = iSchBasePointService.getByRegionCode(region_code);
|
||||
List<String> pointCodes = iSchBasePointService.getByRegionCode(region_code);
|
||||
boolean is_executing = iSchBaseTaskService.selectByPointCodeAndStatus(pointCodes);
|
||||
if (is_executing) {
|
||||
return "当前区域有任务正在执行,请等待任务执行完在锁定!";
|
||||
}
|
||||
iSchBaseTaskService.selectByPointCodeAndTaskStatus(pointCodes);
|
||||
if (StrUtil.equals(status, "0")) {
|
||||
iSchBasePointService.releasePoint(region_code);
|
||||
iSchBaseTaskService.updateTaskStatusByPointCode(pointCodes);
|
||||
} else if (StrUtil.equals(status, "1")) {
|
||||
iSchBasePointService.lockPoint(region_code);
|
||||
}
|
||||
if(CollUtil.isNotEmpty(byRegionCode) && byRegionCode.size()>0){
|
||||
return "当前区域已存在的任务有" + byRegionCode.size() + "个";
|
||||
if (CollUtil.isNotEmpty(pointCodes) && pointCodes.size() > 0) {
|
||||
return "当前区域已存在的任务有" + pointCodes.size() + "个";
|
||||
}
|
||||
return "操作成功";
|
||||
}
|
||||
@@ -160,5 +164,65 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
connectorTask.apply(jo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void rackSendItBask(JSONObject param) {
|
||||
Assert.noNullElements(new Object[]{param.getString("device_code"), param.getString("vehicle_code")}, "参数不能为空!");
|
||||
String vehicle_code = param.getString("vehicle_code");
|
||||
String device_code = param.getString("device_code");
|
||||
MdBaseVehicle mdBaseVehicle = iMdBaseVehicleService.selectByVehicleCode(vehicle_code);
|
||||
if(ObjectUtil.isEmpty(mdBaseVehicle)) throw new BadRequestException("载具不存在!");
|
||||
if(!mdBaseVehicle.getVehicle_type().equals(VehicleTypeEnum.RACKS_S04.getVehicleCode())
|
||||
|| !mdBaseVehicle.getVehicle_type().equals(VehicleTypeEnum.RACKS_S06.getVehicleCode())){
|
||||
throw new BadRequestException("不是料架,生成搬运任务失败!");
|
||||
}
|
||||
SchBasePoint schBasePoint = iSchBasePointService.selectByPointCode(device_code);
|
||||
if (ObjectUtil.isEmpty(schBasePoint)) throw new BadRequestException("设备点位不存在!");
|
||||
AbstractTask connectorTask = taskFactory.getTask("RACKTask");
|
||||
// 准备参数:设备编码
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("device_code", device_code);
|
||||
jo.put("config_code", "RACKTask");
|
||||
jo.put("create_mode", GeneralDefinition.AUTO_CREATION);
|
||||
jo.put("vehicle_code", vehicle_code);
|
||||
jo.put("vehicle_type", mdBaseVehicle.getVehicle_type());
|
||||
jo.put("ext_data", param);
|
||||
connectorTask.apply(jo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void materialTransfer(JSONObject param) {
|
||||
Assert.noNullElements(new Object[]{param.getString("device_code"), param.getString("vehicle_code")}, "参数不能为空!");
|
||||
// String vehicle_code = param.getString("vehicle_code");
|
||||
String device_code = param.getString("device_code");
|
||||
SchBasePoint schBasePoint = iSchBasePointService.selectByPointCode(device_code);
|
||||
if (ObjectUtil.isEmpty(schBasePoint)) throw new BadRequestException("设备点位不存在!");
|
||||
AbstractTask connectorTask = taskFactory.getTask("MTTask");
|
||||
// 准备参数:设备编码
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("device_code", device_code);
|
||||
jo.put("config_code", "MTTask");
|
||||
jo.put("create_mode", GeneralDefinition.AUTO_CREATION);
|
||||
/*jo.put("vehicle_code", vehicle_code);
|
||||
jo.put("vehicle_type", mdBaseVehicle.getVehicle_type());*/
|
||||
jo.put("ext_data", param);
|
||||
connectorTask.apply(jo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object pointStatus(JSONObject param) {
|
||||
Assert.noNullElements(new Object[]{param.getString("point_code"),param.getString("point_status")}, "参数不能为空!");
|
||||
String point_code = param.getString("point_code");
|
||||
String point_status = param.getString("point_status");
|
||||
SchBasePoint schBasePoint = iSchBasePointService.selectByPointCode(point_code);
|
||||
if (ObjectUtil.isEmpty(schBasePoint)) throw new BadRequestException("设备点位不存在!");
|
||||
iSchBasePointService.update(Wrappers.lambdaUpdate(SchBasePoint.class)
|
||||
.eq(SchBasePoint::getPoint_code,point_code)
|
||||
.set(SchBasePoint::getPoint_status,point_status)
|
||||
.set(SchBasePoint::getIs_lock,false)
|
||||
.set(SchBasePoint::getVehicle_code,null)
|
||||
);
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -89,6 +89,7 @@ public class SortingServiceImpl implements SortingService {
|
||||
.set("remark", task_code)
|
||||
.eq("point_code", pointCode));
|
||||
if (SortingEnum.TASK_TYPE_ONE.getValue().equals(task_type) && SortingEnum.IS_EMPTY.getValue().equals(is_empty)) {
|
||||
taskParam.put("vehicle_type", "G01");
|
||||
taskParam.put("config_code", "SortingCNTTask");
|
||||
connectorTask.apply(taskParam);
|
||||
//TODO:叫料
|
||||
@@ -107,17 +108,30 @@ public class SortingServiceImpl implements SortingService {
|
||||
} else if ("1".equals(vehicle_type)) {
|
||||
//TODO:呼叫两个空笼框
|
||||
if (SortingEnum.TASK_TYPE_ONE.getValue().equals(task_type) && SortingEnum.IS_EMPTY.getValue().equals(is_empty)) {
|
||||
taskParam.put("device_code", pointCode + "_1");
|
||||
taskParam.put("device_code", pointCode + "_01");
|
||||
taskParam.put("task_seq","1");
|
||||
taskParam.put("config_code", "SortingTwoCNTTask");
|
||||
taskParam.put("task_code", task_code + "A");
|
||||
connectorTask.apply(taskParam);
|
||||
taskParam.put("device_code", pointCode + "_2");
|
||||
taskParam.put("device_code", pointCode + "_02");
|
||||
taskParam.put("task_seq","2");
|
||||
taskParam.put("task_code", task_code + "B");
|
||||
connectorTask.apply(taskParam);
|
||||
//TODO:将两个笼框放到线边库
|
||||
} else if (SortingEnum.TASK_TYPE_TWO.getValue().equals(task_type) && SortingEnum.NOT_EMPTY.getValue().equals(is_empty)) {
|
||||
if (StrUtil.isEmpty(jsonObject.getString("vehicle_code2"))) {
|
||||
return MapOf.of("status", 400, "msg", "第二个笼框载具号未传递!");
|
||||
}
|
||||
taskParam.put("config_code", "SortingSMTTask");
|
||||
taskParam.put("device_code", pointCode + "_1");
|
||||
taskParam.put("task_seq","1");
|
||||
taskParam.put("vehicle_code", jsonObject.getString("vehicle_code2"));
|
||||
taskParam.put("device_code", pointCode + "_02");
|
||||
taskParam.put("task_code", task_code + "B");
|
||||
connectorTask.apply(taskParam);
|
||||
taskParam.put("device_code", pointCode + "_2");
|
||||
taskParam.put("vehicle_code", vehicle_code);
|
||||
taskParam.put("task_seq","2");
|
||||
taskParam.put("device_code", pointCode + "_01");
|
||||
taskParam.put("task_code", task_code + "A");
|
||||
connectorTask.apply(taskParam);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,7 +54,5 @@
|
||||
sch_base_point sbp
|
||||
where
|
||||
sbp.region_code = #{region_code}
|
||||
and sbp.is_lock = true
|
||||
and sbp.is_used = true
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -461,8 +461,7 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
|
||||
|
||||
@Override
|
||||
public List<String> getByRegionCode(String region_code) {
|
||||
List<String> list = pointMapper.selectByRegionCode(region_code);
|
||||
return list;
|
||||
return pointMapper.selectByRegionCode(region_code);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -101,4 +101,23 @@ public interface ISchBaseTaskService extends IService<SchBaseTask> {
|
||||
void operation(Map<String, Object> param);
|
||||
|
||||
SchBaseTask getByCode(String taskCode);
|
||||
|
||||
/**
|
||||
* 根据设备点位查询是否有执行中的任务
|
||||
* @param pointCodes
|
||||
* @return
|
||||
*/
|
||||
boolean selectByPointCodeAndStatus(List<String> pointCodes);
|
||||
|
||||
/**
|
||||
* 根据设备查询未执行的任务
|
||||
* @param pointCodes
|
||||
*/
|
||||
boolean selectByPointCodeAndTaskStatus(List<String> pointCodes);
|
||||
|
||||
/**
|
||||
* 根据设备修改任务状态
|
||||
* @param pointCodes
|
||||
*/
|
||||
void updateTaskStatusByPointCode(List<String> pointCodes);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.nl.wms.sch.task.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
@@ -9,6 +10,7 @@ import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -261,4 +263,62 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
return this.getOne(lam);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean selectByPointCodeAndStatus(List<String> pointCodes) {
|
||||
for (String pointCode : pointCodes) {
|
||||
List<SchBaseTask> schBaseTasks = schBaseTaskMapper.selectList(Wrappers.lambdaQuery(SchBaseTask.class)
|
||||
.eq(SchBaseTask::getPoint_code1, pointCode)
|
||||
.or()
|
||||
.eq(SchBaseTask::getPoint_code2, pointCode)
|
||||
.in(SchBaseTask::getTask_status, TaskStatus.EXECUTING.getCode()));
|
||||
if (CollUtil.isNotEmpty(schBaseTasks) && schBaseTasks.size() > 0) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean selectByPointCodeAndTaskStatus(List<String> pointCodes) {
|
||||
boolean flag = false;
|
||||
for (String pointCode : pointCodes) {
|
||||
List<SchBaseTask> schBaseTasks = schBaseTaskMapper.selectList(Wrappers.lambdaQuery(SchBaseTask.class)
|
||||
.eq(SchBaseTask::getPoint_code1, pointCode)
|
||||
.or()
|
||||
.eq(SchBaseTask::getPoint_code2, pointCode)
|
||||
.le(SchBaseTask::getTask_status, TaskStatus.ISSUED.getCode()));
|
||||
if (CollUtil.isNotEmpty(schBaseTasks) && schBaseTasks.size() > 0) {
|
||||
schBaseTasks.forEach(task -> {
|
||||
update(Wrappers.lambdaUpdate(SchBaseTask.class)
|
||||
.eq(SchBaseTask::getTask_code, task.getTask_code())
|
||||
.set(SchBaseTask::getTask_status, TaskStatus.TIMEOUT.getCode())
|
||||
.set(SchBaseTask::getHandle_status, task.getTask_status())
|
||||
);
|
||||
});
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateTaskStatusByPointCode(List<String> pointCodes) {
|
||||
for (String pointCode : pointCodes) {
|
||||
List<SchBaseTask> schBaseTasks = schBaseTaskMapper.selectList(Wrappers.lambdaQuery(SchBaseTask.class)
|
||||
.eq(SchBaseTask::getPoint_code1, pointCode)
|
||||
.or()
|
||||
.eq(SchBaseTask::getPoint_code2, pointCode)
|
||||
.eq(SchBaseTask::getTask_status, TaskStatus.TIMEOUT.getCode()));
|
||||
if (CollUtil.isNotEmpty(schBaseTasks) && schBaseTasks.size() > 0) {
|
||||
schBaseTasks.forEach(task -> {
|
||||
update(Wrappers.lambdaUpdate(SchBaseTask.class)
|
||||
.eq(SchBaseTask::getTask_code, task.getTask_code())
|
||||
.set(SchBaseTask::getTask_status, task.getHandle_status())
|
||||
.set(SchBaseTask::getHandle_status, null)
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -105,8 +105,6 @@ public abstract class AbstractTask {
|
||||
} else {
|
||||
taskDto.setNext_device_code(task.getPoint_code2());
|
||||
}
|
||||
// taskDto.setStart_wait_code(task.getStart_wait_point());
|
||||
// taskDto.setNext_wait_code(task.getNext_wait_point());
|
||||
taskDto.setVehicle_code(task.getVehicle_code());
|
||||
this.setTask(task.getConfig_code(), taskDto, task);
|
||||
list.add(taskDto);
|
||||
@@ -127,7 +125,7 @@ public abstract class AbstractTask {
|
||||
private AcsTaskDto setTask(String config_code, AcsTaskDto taskDto, SchBaseTask task) {
|
||||
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
|
||||
.eq(SchBaseTaskconfig::getConfig_code, config_code));
|
||||
taskDto.setPriority(taskConfig.getPriority());
|
||||
taskDto.setPriority(StrUtil.isNotEmpty(task.getAcs_trace_id()) ? task.getAcs_trace_id() : taskConfig.getPriority());
|
||||
taskDto.setTask_type(StrUtil.isNotEmpty(task.getTask_type()) ? task.getTask_type() : taskConfig.getTask_type());
|
||||
taskDto.setAgv_task_type(taskConfig.getAcs_task_type());
|
||||
taskDto.setRoute_plan_code(taskConfig.getRoute_plan_code());
|
||||
@@ -267,7 +265,7 @@ public abstract class AbstractTask {
|
||||
return;
|
||||
}
|
||||
// 2、创建申请任务
|
||||
task.setAcs_trace_id(requestNo);
|
||||
//task.setAcs_trace_id(requestNo);
|
||||
task.setTask_id(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
task.setTask_code(StrUtil.isNotEmpty(param.getString("task_code")) ? task_code : IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
task.setConfig_code(config_code);
|
||||
@@ -282,6 +280,7 @@ public abstract class AbstractTask {
|
||||
task.setTask_type(StrUtil.isNotEmpty(param.getString("task_type")) ? param.getString("task_type") : taskConfig.getTask_type());
|
||||
task.setWorkshop_code(taskConfig.getWorkshop_code());
|
||||
task.setRemark(param.getString("remark"));
|
||||
task.setAcs_trace_id(param.getString("task_seq"));
|
||||
// 设置起/终点
|
||||
this.setTaskPoint(taskConfig, task, apply_point_code);
|
||||
task.setRequest_param(JSONObject.toJSONString(param.get("ext_data")));
|
||||
|
||||
@@ -7,7 +7,9 @@ public enum TaskStatus {
|
||||
EXECUTING("4", "执行中", "执行中"),
|
||||
FINISHED("5", "完成", "完成"),
|
||||
CANCELED("6", "已取消", "已取消"),
|
||||
UNFINISHED("7", "未完成", "未完成");
|
||||
UNFINISHED("7", "未完成", "未完成"),
|
||||
TIMEOUT("8", "暂停", "暂停"),
|
||||
;
|
||||
|
||||
|
||||
TaskStatus(String code, String name, String desc) {
|
||||
|
||||
@@ -11,6 +11,8 @@ import org.nl.common.enums.VehicleTypeEnum;
|
||||
import org.nl.common.enums.region.RegionEnum;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.system.service.notice.ISysNoticeService;
|
||||
import org.nl.wms.database.vehicle.service.IMdBaseVehicleService;
|
||||
import org.nl.wms.database.vehicle.service.dao.MdBaseVehicle;
|
||||
import org.nl.wms.ext.acs.service.dto.to.BaseResponse;
|
||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||
@@ -50,6 +52,8 @@ public class EmptyCageTask extends AbstractTask {
|
||||
private ISchBasePointService schBasePointService;
|
||||
@Autowired
|
||||
private ISchBaseVehiclematerialgroupService schBaseVehiclematerialgroupService;
|
||||
@Autowired
|
||||
private IMdBaseVehicleService iMdBaseVehicleService;
|
||||
|
||||
@Override
|
||||
protected void create() throws BadRequestException {
|
||||
@@ -60,22 +64,23 @@ public class EmptyCageTask extends AbstractTask {
|
||||
TaskUtils.setUpdateByAcs(task);
|
||||
// 查询是空料笼还是,空料架
|
||||
String vehicle_type = task.getVehicle_type();
|
||||
/*String vehicle_code = task.getVehicle_code();
|
||||
if(StrUtil.isNotEmpty(vehicle_code)){
|
||||
String vehicle_code = task.getVehicle_code();
|
||||
if (StrUtil.isNotEmpty(vehicle_code)) {
|
||||
JSONArray json = JSONUtil.parseArray(vehicle_code);
|
||||
String s = json.get(0, String.class);
|
||||
|
||||
}*/
|
||||
MdBaseVehicle mdBaseVehicle = iMdBaseVehicleService.selectByVehicleCode(s);
|
||||
vehicle_type = mdBaseVehicle.getVehicle_type();
|
||||
}
|
||||
SchBasePoint schBasePoint = null;
|
||||
switch (vehicle_type) {
|
||||
case "S04":
|
||||
/*case "S04":
|
||||
//空料架
|
||||
schBasePoint = schBasePointService.selectByGroundPoint(null, GoodsEnum.OUT_OF_STOCK.getValue(), task.getVehicle_type(), 1);
|
||||
break;
|
||||
case "S06":
|
||||
//空料架
|
||||
schBasePoint = schBasePointService.selectByGroundPoint(null, GoodsEnum.OUT_OF_STOCK.getValue(), task.getVehicle_type(), 1);
|
||||
break;
|
||||
break;*/
|
||||
case "R01":
|
||||
//RO1空料容
|
||||
schBasePoint = schBasePointService.selectByGroundPoint(RegionEnum.DDLK.getRegion_code(),
|
||||
|
||||
@@ -0,0 +1,166 @@
|
||||
package org.nl.wms.sch.task_manage.task.tasks.handheld;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import org.nl.common.enums.GoodsEnum;
|
||||
import org.nl.common.enums.region.RegionEnum;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.system.service.notice.ISysNoticeService;
|
||||
import org.nl.wms.database.vehicle.service.IMdBaseVehicleService;
|
||||
import org.nl.wms.ext.acs.service.dto.to.BaseResponse;
|
||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch.task.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch.task.service.ISchBaseTaskconfigService;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
import org.nl.wms.sch.task_manage.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum;
|
||||
import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
import org.nl.wms.util.PointUtils;
|
||||
import org.nl.wms.util.TaskUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author LENOVO
|
||||
* 手持创建空料笼入库
|
||||
*/
|
||||
@Component("MTTask")
|
||||
public class MtTask extends AbstractTask {
|
||||
|
||||
private static final String TASK_CONFIG_CODE = "MTTask";
|
||||
@Autowired
|
||||
private ISchBasePointService pointService;
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
@Autowired
|
||||
private ISchBaseTaskconfigService taskConfigService;
|
||||
@Autowired
|
||||
private ISysNoticeService noticeService;
|
||||
@Autowired
|
||||
private ISchBasePointService schBasePointService;
|
||||
@Autowired
|
||||
private ISchBaseVehiclematerialgroupService schBaseVehiclematerialgroupService;
|
||||
@Autowired
|
||||
private IMdBaseVehicleService iMdBaseVehicleService;
|
||||
|
||||
@Override
|
||||
protected void create() throws BadRequestException {
|
||||
// 获取任务
|
||||
List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
|
||||
// 配置信息
|
||||
for (SchBaseTask task : tasks) {
|
||||
String vehicle_type = task.getVehicle_type();
|
||||
SchBasePoint schBasePoint = schBasePointService.selectByGroundPoint(RegionEnum.NBJG.getRegion_code(),
|
||||
GoodsEnum.OUT_OF_STOCK.getValue(),null, 1);
|
||||
if (ObjectUtil.isEmpty(schBasePoint)) {
|
||||
task.setRemark("未找到所需点位!");
|
||||
taskService.updateById(task);
|
||||
// 消息通知
|
||||
noticeService.createNotice("未找到所需点位!", TASK_CONFIG_CODE + task.getTask_code(),
|
||||
NoticeTypeEnum.WARN.getCode());
|
||||
continue;
|
||||
}
|
||||
// 设置终点并修改创建成功状态
|
||||
task.setPoint_code2(schBasePoint.getPoint_code());
|
||||
task.setVehicle_type(schBasePoint.getCan_vehicle_type());
|
||||
task.setRemark("");
|
||||
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||
TaskUtils.setUpdateByAcs(task);
|
||||
taskService.updateById(task);
|
||||
|
||||
|
||||
schBasePoint.setVehicles(task.getVehicle_code());
|
||||
schBasePoint.setPoint_status(GoodsEnum.IN_STOCK.getValue());
|
||||
schBasePoint.setIs_lock(true);
|
||||
PointUtils.setUpdateByAcs(schBasePoint);
|
||||
pointService.updateById(schBasePoint);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateStatus(String task_code, TaskStatus status) {
|
||||
//TODO:完成任务的时候将int_task_code的清除
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void forceFinish(String task_code) {
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
throw new BadRequestException("该任务不存在");
|
||||
}
|
||||
this.finishTask(taskObj, TaskFinishedTypeEnum.MANUAL_CONNECTOR);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel(String task_code) {
|
||||
//TODO:取消任务的时候将int_task_code的清除
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
throw new BadRequestException("该任务不存在");
|
||||
}
|
||||
this.cancelTask(taskObj, TaskFinishedTypeEnum.MANUAL_CONNECTOR);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result) {
|
||||
|
||||
}
|
||||
|
||||
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
||||
// 获取参数
|
||||
String startPoint = taskObj.getPoint_code1();
|
||||
SchBasePoint schBasePoint = pointService.selectByPointCode(startPoint);
|
||||
// 起点清空
|
||||
if (ObjectUtil.isNotEmpty(schBasePoint)) {
|
||||
PointUtils.updateByIngTaskCode(schBasePoint);
|
||||
pointService.update(Wrappers.lambdaUpdate(SchBasePoint.class).eq(SchBasePoint::getPoint_code, startPoint)
|
||||
.set(SchBasePoint::getIs_lock, false));
|
||||
}
|
||||
String point_code2 = taskObj.getPoint_code2();
|
||||
SchBasePoint schBasePoint2 = pointService.selectByPointCode(point_code2);
|
||||
if (ObjectUtil.isNotEmpty(schBasePoint2)) {
|
||||
PointUtils.updateByIngTaskCode(schBasePoint2);
|
||||
pointService.update(Wrappers.lambdaUpdate(SchBasePoint.class).eq(SchBasePoint::getPoint_code, point_code2)
|
||||
.set(SchBasePoint::getIs_lock, false));
|
||||
}
|
||||
// 任务完成
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskObj.setRemark(GeneralDefinition.TASK_FINISH);
|
||||
taskObj.setFinished_type(taskFinishedType.getCode());
|
||||
TaskUtils.setUpdateByType(taskObj, taskFinishedType);
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
|
||||
public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
||||
// 获取参数
|
||||
String startPoint = taskObj.getPoint_code1();
|
||||
SchBasePoint schBasePoint = pointService.selectByPointCode(startPoint);
|
||||
// 起点清空
|
||||
if (ObjectUtil.isNotEmpty(schBasePoint)) {
|
||||
PointUtils.updateByIngTaskCode(schBasePoint);
|
||||
pointService.update(Wrappers.lambdaUpdate(SchBasePoint.class).eq(SchBasePoint::getPoint_code, startPoint)
|
||||
.set(SchBasePoint::getIs_lock, false));
|
||||
}
|
||||
String point_code2 = taskObj.getPoint_code2();
|
||||
SchBasePoint schBasePoint2 = pointService.selectByPointCode(point_code2);
|
||||
if (ObjectUtil.isNotEmpty(schBasePoint2)) {
|
||||
PointUtils.updateByIngTaskCode(schBasePoint2);
|
||||
pointService.update(Wrappers.lambdaUpdate(SchBasePoint.class).eq(SchBasePoint::getPoint_code, point_code2)
|
||||
.set(SchBasePoint::getIs_lock, false));
|
||||
}
|
||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
taskObj.setRemark(GeneralDefinition.TASK_CANCEL);
|
||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
taskObj.setFinished_type(taskFinishedType.getCode());
|
||||
TaskUtils.setUpdateByType(taskObj, taskFinishedType);
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,172 @@
|
||||
package org.nl.wms.sch.task_manage.task.tasks.handheld;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.json.JSONArray;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import org.nl.common.enums.GoodsEnum;
|
||||
import org.nl.common.enums.VehicleTypeEnum;
|
||||
import org.nl.common.enums.region.RegionEnum;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.system.service.notice.ISysNoticeService;
|
||||
import org.nl.wms.database.vehicle.service.IMdBaseVehicleService;
|
||||
import org.nl.wms.database.vehicle.service.dao.MdBaseVehicle;
|
||||
import org.nl.wms.ext.acs.service.dto.to.BaseResponse;
|
||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch.task.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch.task.service.ISchBaseTaskconfigService;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
import org.nl.wms.sch.task_manage.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum;
|
||||
import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
import org.nl.wms.util.PointUtils;
|
||||
import org.nl.wms.util.TaskUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author LENOVO
|
||||
* 手持创建空料笼入库
|
||||
*/
|
||||
@Component("RACKTask")
|
||||
public class RackTask extends AbstractTask {
|
||||
|
||||
private static final String TASK_CONFIG_CODE = "RACKTask";
|
||||
@Autowired
|
||||
private ISchBasePointService pointService;
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
@Autowired
|
||||
private ISchBaseTaskconfigService taskConfigService;
|
||||
@Autowired
|
||||
private ISysNoticeService noticeService;
|
||||
@Autowired
|
||||
private ISchBasePointService schBasePointService;
|
||||
@Autowired
|
||||
private ISchBaseVehiclematerialgroupService schBaseVehiclematerialgroupService;
|
||||
@Autowired
|
||||
private IMdBaseVehicleService iMdBaseVehicleService;
|
||||
|
||||
@Override
|
||||
protected void create() throws BadRequestException {
|
||||
// 获取任务
|
||||
List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
|
||||
// 配置信息
|
||||
for (SchBaseTask task : tasks) {
|
||||
|
||||
String vehicle_type = task.getVehicle_type();
|
||||
SchBasePoint schBasePoint = schBasePointService.selectByGroundPoint(null,
|
||||
GoodsEnum.OUT_OF_STOCK.getValue(),vehicle_type, 1);
|
||||
if (ObjectUtil.isEmpty(schBasePoint)) {
|
||||
task.setRemark("未找到所需点位!");
|
||||
taskService.updateById(task);
|
||||
// 消息通知
|
||||
noticeService.createNotice("未找到所需点位!", TASK_CONFIG_CODE + task.getTask_code(),
|
||||
NoticeTypeEnum.WARN.getCode());
|
||||
continue;
|
||||
}
|
||||
// 设置终点并修改创建成功状态
|
||||
task.setPoint_code2(schBasePoint.getPoint_code());
|
||||
task.setVehicle_type(schBasePoint.getCan_vehicle_type());
|
||||
task.setRemark("");
|
||||
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||
TaskUtils.setUpdateByAcs(task);
|
||||
taskService.updateById(task);
|
||||
|
||||
|
||||
schBasePoint.setVehicles(task.getVehicle_code());
|
||||
schBasePoint.setPoint_status(GoodsEnum.IN_STOCK.getValue());
|
||||
schBasePoint.setIs_lock(true);
|
||||
PointUtils.setUpdateByAcs(schBasePoint);
|
||||
pointService.updateById(schBasePoint);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateStatus(String task_code, TaskStatus status) {
|
||||
//TODO:完成任务的时候将int_task_code的清除
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void forceFinish(String task_code) {
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
throw new BadRequestException("该任务不存在");
|
||||
}
|
||||
this.finishTask(taskObj, TaskFinishedTypeEnum.MANUAL_CONNECTOR);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel(String task_code) {
|
||||
//TODO:取消任务的时候将int_task_code的清除
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
throw new BadRequestException("该任务不存在");
|
||||
}
|
||||
this.cancelTask(taskObj, TaskFinishedTypeEnum.MANUAL_CONNECTOR);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result) {
|
||||
|
||||
}
|
||||
|
||||
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
||||
// 获取参数
|
||||
String startPoint = taskObj.getPoint_code1();
|
||||
SchBasePoint schBasePoint = pointService.selectByPointCode(startPoint);
|
||||
// 起点清空
|
||||
if (ObjectUtil.isNotEmpty(schBasePoint)) {
|
||||
PointUtils.updateByIngTaskCode(schBasePoint);
|
||||
pointService.update(Wrappers.lambdaUpdate(SchBasePoint.class).eq(SchBasePoint::getPoint_code, startPoint)
|
||||
.set(SchBasePoint::getIs_lock, false));
|
||||
}
|
||||
String point_code2 = taskObj.getPoint_code2();
|
||||
SchBasePoint schBasePoint2 = pointService.selectByPointCode(point_code2);
|
||||
if (ObjectUtil.isNotEmpty(schBasePoint2)) {
|
||||
PointUtils.updateByIngTaskCode(schBasePoint2);
|
||||
pointService.update(Wrappers.lambdaUpdate(SchBasePoint.class).eq(SchBasePoint::getPoint_code, point_code2)
|
||||
.set(SchBasePoint::getIs_lock, false));
|
||||
}
|
||||
// 任务完成
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskObj.setRemark(GeneralDefinition.TASK_FINISH);
|
||||
taskObj.setFinished_type(taskFinishedType.getCode());
|
||||
TaskUtils.setUpdateByType(taskObj, taskFinishedType);
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
|
||||
public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
||||
// 获取参数
|
||||
String startPoint = taskObj.getPoint_code1();
|
||||
SchBasePoint schBasePoint = pointService.selectByPointCode(startPoint);
|
||||
// 起点清空
|
||||
if (ObjectUtil.isNotEmpty(schBasePoint)) {
|
||||
PointUtils.updateByIngTaskCode(schBasePoint);
|
||||
pointService.update(Wrappers.lambdaUpdate(SchBasePoint.class).eq(SchBasePoint::getPoint_code, startPoint)
|
||||
.set(SchBasePoint::getIs_lock, false));
|
||||
}
|
||||
String point_code2 = taskObj.getPoint_code2();
|
||||
SchBasePoint schBasePoint2 = pointService.selectByPointCode(point_code2);
|
||||
if (ObjectUtil.isNotEmpty(schBasePoint2)) {
|
||||
PointUtils.updateByIngTaskCode(schBasePoint2);
|
||||
pointService.update(Wrappers.lambdaUpdate(SchBasePoint.class).eq(SchBasePoint::getPoint_code, point_code2)
|
||||
.set(SchBasePoint::getIs_lock, false));
|
||||
}
|
||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
taskObj.setRemark(GeneralDefinition.TASK_CANCEL);
|
||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
taskObj.setFinished_type(taskFinishedType.getCode());
|
||||
TaskUtils.setUpdateByType(taskObj, taskFinishedType);
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
}
|
||||
@@ -59,7 +59,7 @@ public class SortingCNTTask extends AbstractTask {
|
||||
for (SchBaseTask task : tasks) {
|
||||
TaskUtils.setUpdateByAcs(task);
|
||||
// 找起点
|
||||
SchBasePoint basePoint = schBasePointService.selectEmpVehicleByRegionCode(RegionEnum.ZDFJ.getRegion_code(), Vehicle_Type);
|
||||
SchBasePoint basePoint = schBasePointService.selectEmpVehicleByRegionCode(RegionEnum.ZDFJ.getRegion_code(), task.getVehicle_type());
|
||||
if (basePoint==null){
|
||||
task.setRemark("未找到所需点位!");
|
||||
taskService.updateById(task);
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.nl.wms.sch.task_manage.task.tasks.sorting;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
@@ -61,6 +62,7 @@ public class SortingSMTTask extends AbstractTask {
|
||||
// 配置信息
|
||||
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
|
||||
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
|
||||
tasks.stream().sorted((task1, task2) -> Long.compare(getTime(task2.getCreate_time()), getTime(task1.getCreate_time())));
|
||||
for (SchBaseTask task : tasks) {
|
||||
TaskUtils.setUpdateByAcs(task);
|
||||
// 找起点
|
||||
@@ -113,6 +115,13 @@ public class SortingSMTTask extends AbstractTask {
|
||||
}
|
||||
}
|
||||
|
||||
private Long getTime(String dateString){
|
||||
String pattern = "yyyy-MM-dd HH:mm:ss";
|
||||
java.util.Date date = DateUtil.parse(dateString, pattern);
|
||||
long timestamp = date.getTime();
|
||||
return timestamp;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateStatus(String task_code, TaskStatus status) {
|
||||
//TODO:完成任务的时候将int_task_code的清除
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
package org.nl.wms.sch.task_manage.task.tasks.sorting;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.io.unit.DataUnit;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.mysql.cj.util.TimeUtil;
|
||||
import org.nl.common.enums.GoodsEnum;
|
||||
import org.nl.common.enums.VehicleEnum;
|
||||
import org.nl.common.enums.VehicleTypeEnum;
|
||||
@@ -26,6 +29,8 @@ import org.nl.wms.util.TaskUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -54,8 +59,8 @@ public class SortingTwoCNTTask extends AbstractTask {
|
||||
protected void create() throws BadRequestException {
|
||||
// 获取任务
|
||||
List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
|
||||
tasks.stream().sorted((task1, task2) -> Long.compare(getTime(task2.getCreate_time()), getTime(task1.getCreate_time())));
|
||||
for (SchBaseTask task : tasks) {
|
||||
TaskUtils.setUpdateByAcs(task);
|
||||
// 找起点
|
||||
SchBasePoint basePoint = schBasePointService.selectByEmptyCage(RegionEnum.DDLK.getRegion_code(),
|
||||
VehicleTypeEnum.FRAME_R02.getVehicleCode(),GoodsEnum.EMPTY_PALLETS.getValue(),true,task);
|
||||
@@ -64,11 +69,37 @@ public class SortingTwoCNTTask extends AbstractTask {
|
||||
taskService.updateById(task);
|
||||
continue;
|
||||
}
|
||||
taskService.update(new UpdateWrapper<SchBaseTask>()
|
||||
.set("task_status",TaskStatus.CREATED.getCode())
|
||||
.set("point_code1",basePoint.getPoint_code())
|
||||
.set("vehicle_code",basePoint.getVehicle_code())
|
||||
.eq("task_id",task.getTask_id()));
|
||||
TaskUtils.setUpdateByAcs(task);
|
||||
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||
task.setPoint_code1(basePoint.getPoint_code());
|
||||
task.setVehicle_code(basePoint.getVehicle_code());
|
||||
taskService.update(task);
|
||||
schBasePointService.update(Wrappers.lambdaUpdate(SchBasePoint.class)
|
||||
.eq(SchBasePoint::getPoint_code,basePoint.getPoint_code())
|
||||
.set(SchBasePoint::getIs_lock,true)
|
||||
.set(SchBasePoint::getPoint_status,GoodsEnum.OUT_OF_STOCK.getValue()));
|
||||
}
|
||||
}
|
||||
|
||||
private Long getTime(String dateString){
|
||||
String pattern = "yyyy-MM-dd HH:mm:ss";
|
||||
java.util.Date date = DateUtil.parse(dateString, pattern);
|
||||
long timestamp = date.getTime();
|
||||
return timestamp;
|
||||
}
|
||||
|
||||
|
||||
private static int extractLastDigit(String value) {
|
||||
if (value == null || value.isEmpty()) {
|
||||
throw new IllegalArgumentException("Value is null or empty");
|
||||
}
|
||||
// 提取最后一位字符
|
||||
char lastChar = value.charAt(value.length() - 1);
|
||||
// 转换为数字
|
||||
if (Character.isDigit(lastChar)) {
|
||||
return Character.getNumericValue(lastChar);
|
||||
} else {
|
||||
throw new IllegalArgumentException("Last character is not a digit");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -103,7 +134,7 @@ public class SortingTwoCNTTask extends AbstractTask {
|
||||
}
|
||||
|
||||
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
||||
/*// 获取参数
|
||||
// 获取参数
|
||||
String startPoint = taskObj.getPoint_code1();
|
||||
SchBasePoint schBasePoint = pointService.selectByPointCode(startPoint);
|
||||
// 起点清空
|
||||
@@ -118,7 +149,7 @@ public class SortingTwoCNTTask extends AbstractTask {
|
||||
PointUtils.updateByIngTaskCode(schBasePoint2);
|
||||
pointService.update(Wrappers.lambdaUpdate(SchBasePoint.class).eq(SchBasePoint::getPoint_code, point_code2)
|
||||
.set(SchBasePoint::getIs_lock, false));
|
||||
}*/
|
||||
}
|
||||
// 任务完成
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskObj.setRemark(GeneralDefinition.TASK_FINISH);
|
||||
|
||||
Reference in New Issue
Block a user