opt:1.空出取消分配,自动取消,异常处理流程;
2.顶楼出库不允许到1308;
This commit is contained in:
@@ -21,7 +21,6 @@ import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService;
|
||||
import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService;
|
||||
import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater;
|
||||
import org.nl.wms.md_manage.vehicleMater.service.dto.MdPbVehicleMaterVo;
|
||||
import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
|
||||
import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -30,7 +29,6 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/*
|
||||
@@ -60,39 +58,45 @@ public class ToPickPlatformTask extends AbstractTask {
|
||||
String vehicle_code = from.getString("vehicle_code");
|
||||
String target_point = null;// = from.getString("target_point");
|
||||
String priority = from.getString("priority");
|
||||
List<SchBasePoint> targetPoints = iSchBasePointService.list(new QueryWrapper<SchBasePoint>()
|
||||
.eq("region_code", "PICK01").eq("is_used", true));
|
||||
//通过全局变量获取目标位置
|
||||
if (CollectionUtils.isEmpty(targetPoints)){
|
||||
throw new BadRequestException("当前拣选工位未启用");
|
||||
StIvtStructattr struct = iStIvtStructattrService.getOne(new QueryWrapper<StIvtStructattr>().eq("vehicle_code", vehicle_code));
|
||||
if (ObjectUtils.isEmpty(struct)) {
|
||||
throw new BadRequestException("创建任务失败:未找到该物料对应起点仓位");
|
||||
}
|
||||
//轮询
|
||||
log.info("上次拣选平台分配位置:{},拣选平台开放点:{}",Lask_Point,targetPoints);
|
||||
for (int i = 0; i < targetPoints.size(); i++) {
|
||||
String code = targetPoints.get(i).getCode();
|
||||
if (targetPoints.size()>1 && !code.equals(Lask_Point)){
|
||||
target_point = code;
|
||||
break;
|
||||
String start_struct_code = struct.getStruct_code();
|
||||
//25.7.15,acs新增规则,顶楼出库拣选任务不允许去1308
|
||||
if (start_struct_code.contains("B")) {
|
||||
target_point = "1311";
|
||||
} else {
|
||||
List<SchBasePoint> targetPoints = iSchBasePointService.list(new QueryWrapper<SchBasePoint>()
|
||||
.eq("region_code", "PICK01").eq("is_used", true));
|
||||
//通过全局变量获取目标位置
|
||||
if (CollectionUtils.isEmpty(targetPoints)) {
|
||||
throw new BadRequestException("当前拣选工位未启用");
|
||||
}
|
||||
//轮询
|
||||
log.info("上次拣选平台分配位置:{},拣选平台开放点:{}", Lask_Point, targetPoints);
|
||||
for (int i = 0; i < targetPoints.size(); i++) {
|
||||
String code = targetPoints.get(i).getCode();
|
||||
if (targetPoints.size() > 1 && !code.equals(Lask_Point)) {
|
||||
target_point = code;
|
||||
break;
|
||||
}
|
||||
target_point = code;
|
||||
}
|
||||
target_point = code;
|
||||
}
|
||||
if (StringUtils.isEmpty(vehicle_code) ||StringUtils.isEmpty(target_point)){
|
||||
if (StringUtils.isEmpty(vehicle_code) || StringUtils.isEmpty(target_point)) {
|
||||
throw new BadRequestException("创建任务失败:方法请求参数不能为空");
|
||||
}
|
||||
List<SchBaseTask> list = iSchBaseTaskService.list(new QueryWrapper<SchBaseTask>().eq("vehicle_code", vehicle_code)
|
||||
.lt("status", StatusEnum.FORM_STATUS.code("完成")));
|
||||
if (!CollectionUtils.isEmpty(list)){
|
||||
throw new BadRequestException("当前载具存在任务:"+list.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(",")));
|
||||
if (!CollectionUtils.isEmpty(list)) {
|
||||
throw new BadRequestException("当前载具存在任务:" + list.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(",")));
|
||||
}
|
||||
StIvtStructattr struct = iStIvtStructattrService.getOne(new QueryWrapper<StIvtStructattr>().eq("vehicle_code", vehicle_code));
|
||||
if (ObjectUtils.isEmpty(struct)){
|
||||
throw new BadRequestException("创建任务失败:未找到该物料对应起点仓位");
|
||||
}
|
||||
String start_struct_code = struct.getStruct_code();
|
||||
|
||||
//移库判断
|
||||
if (struct.getStor_code().equals("FStockId")){
|
||||
synchronized ("FStockId"){
|
||||
start_struct_code= SpringContextHolder.getBean(OutStorageTask.class).DoubleStor(struct);
|
||||
if (struct.getStor_code().equals("FStockId")) {
|
||||
synchronized ("FStockId") {
|
||||
start_struct_code = SpringContextHolder.getBean(OutStorageTask.class).DoubleStor(struct);
|
||||
}
|
||||
}
|
||||
SchBaseTask task = new SchBaseTask();
|
||||
|
||||
@@ -256,7 +256,7 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
.eq("task_code", task.getTask_code()).eq("vehicle_code", task.getVehicle_code()).eq("is_delete", "0"));
|
||||
if (ObjectUtils.isNotEmpty(vehicleMaterList)) {
|
||||
//查找非二楼任务的未完成的出库单与明细
|
||||
if (StringUtils.isBlank(vehicleMaterList.get(0).getPrd_ppbom_no())) {
|
||||
if (vehicleMaterList.get(0).getRemark().contains("空出")) {
|
||||
List<Map> formData = this.getIoSourceFormData(task.getVehicle_code(), vehicleMaterList.get(0).getPcsn());
|
||||
if (ObjectUtils.isNotEmpty(formData)) {
|
||||
Map formDataMap = formData.get(0);
|
||||
@@ -265,16 +265,27 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
String id = formDataId.getString("id");
|
||||
String qty = formDataId.getString("qty");
|
||||
if (StringUtils.isNotBlank(id) && StringUtils.isNotBlank(qty)) {
|
||||
BigDecimal cancelQty = BigDecimal.valueOf(Long.parseLong(qty)).subtract(vehicleMaterList.get(0).getFrozen_qty());
|
||||
iPmFormDataService.update(new LambdaUpdateWrapper<PmFormData>()
|
||||
.set(PmFormData::getAssign_qty, cancelQty)
|
||||
.eq(PmFormData::getId, id));
|
||||
LambdaUpdateWrapper<PmFormData> lambdaUpdateWrapper = new LambdaUpdateWrapper<PmFormData>();
|
||||
PmFormData pmFormData = iPmFormDataService.getById(id);
|
||||
BigDecimal cancelQty = pmFormData.getAssign_qty().subtract(vehicleMaterList.get(0).getFrozen_qty()).abs();
|
||||
if (cancelQty.compareTo(BigDecimal.ZERO) == 0) {
|
||||
lambdaUpdateWrapper.set(PmFormData::getQty, pmFormData.getAssign_qty());
|
||||
}
|
||||
lambdaUpdateWrapper.set(PmFormData::getAssign_qty, cancelQty).eq(PmFormData::getId, id);
|
||||
iPmFormDataService.update(lambdaUpdateWrapper);
|
||||
}
|
||||
String msg = "该库存在执行出库单id为:" + id + ",任务号为:" + task.getTask_code() + ",触发空出或被手动取消,取消数量为:" + vehicleMaterList.get(0).getFrozen_qty();
|
||||
//冻结解锁
|
||||
iMdPbVehicleMaterService.update(new LambdaUpdateWrapper<MdPbVehicleMater>().set(MdPbVehicleMater::getFrozen_qty, 0).set(MdPbVehicleMater::getRemark, msg).eq(MdPbVehicleMater::getId, vehicleMaterList.get(0).getId()));
|
||||
iMdPbVehicleMaterService.update(new LambdaUpdateWrapper<MdPbVehicleMater>()
|
||||
.set(MdPbVehicleMater::getFrozen_qty, 0)
|
||||
.set(MdPbVehicleMater::getRemark, msg)
|
||||
.eq(MdPbVehicleMater::getId, vehicleMaterList.get(0).getId()));
|
||||
//库位空出
|
||||
iStIvtStructattrService.update(new LambdaUpdateWrapper<StIvtStructattr>().set(StIvtStructattr::getLock_type, StatusEnum.LOCK.code("空出锁")).set(StIvtStructattr::getRemark, msg).eq(StIvtStructattr::getVehicle_code, task.getVehicle_code()));
|
||||
iStIvtStructattrService.update(new LambdaUpdateWrapper<StIvtStructattr>()
|
||||
.set(StIvtStructattr::getLock_type, StatusEnum.LOCK.code("空出锁"))
|
||||
.set(StIvtStructattr::getRemark, msg)
|
||||
.eq(StIvtStructattr::getVehicle_code, task.getVehicle_code()));
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -321,11 +332,14 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
}
|
||||
switch (type) {
|
||||
case "ck":
|
||||
if (task.getStatus().equals(StatusEnum.FORM_STATUS.code("完成")) || task.getStatus().equals(StatusEnum.FORM_STATUS.code("取消")) || task.getStatus().equals(StatusEnum.FORM_STATUS.code("强制完成"))) {
|
||||
throw new BadRequestException("当前任务已完成或被取消");
|
||||
}
|
||||
List<MdPbVehicleMater> vehicleList = iMdPbVehicleMaterService.list(new QueryWrapper<MdPbVehicleMater>()
|
||||
.eq("vehicle_code", task.getVehicle_code())
|
||||
.eq("is_delete", false));
|
||||
if (ObjectUtils.isNotEmpty(vehicleList)) {
|
||||
//非混料托盘
|
||||
//非混料托盘,混料托盘不能直接清除库存
|
||||
if (vehicleList.size() == 1) {
|
||||
//清除库位库存
|
||||
iStIvtStructattrService.update(new UpdateWrapper<StIvtStructattr>()
|
||||
@@ -334,6 +348,11 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
.set("lock_type", StatusEnum.LOCK.code("无锁"))
|
||||
.set("remark", struct_code + "空出异常")
|
||||
.eq("struct_code", struct_code));
|
||||
//标记空出,清除组盘信息
|
||||
iMdPbVehicleMaterService.update(new UpdateWrapper<MdPbVehicleMater>()
|
||||
.set("update_time", DateUtil.now())
|
||||
.set("remark", "空出")
|
||||
.eq("id", vehicleList.get(0).getId()));
|
||||
}
|
||||
//流程异常完成
|
||||
vehicleList = vehicleList.stream().filter(r -> StringUtils.isNotBlank(r.getProc_inst_id())).collect(Collectors.toList());
|
||||
@@ -343,11 +362,14 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
.set("remark", task.getVehicle_code() + "载具空出:货位" + struct_code)
|
||||
.eq("proc_inst_id", vehicleList.get(0).getProc_inst_id()));
|
||||
}
|
||||
//增加备注
|
||||
this.update(new UpdateWrapper<SchBaseTask>()
|
||||
.set("status", StatusEnum.FORM_STATUS.code("取消"))
|
||||
.set("remark", struct_code + "空出异常")
|
||||
.set("update_time", DateUtil.now())
|
||||
.eq("task_code", task_code));
|
||||
param.put("status", StatusEnum.FORM_STATUS.code("取消"));
|
||||
//取消分配数据
|
||||
operation(param);
|
||||
}
|
||||
break;
|
||||
case "rm":
|
||||
|
||||
Reference in New Issue
Block a user