add:增加任务优先级;

增加任务开始反馈;
opt:优化近一个月现场问题;
This commit is contained in:
2026-04-10 17:13:41 +08:00
parent 6c03f3a96b
commit e260b5a3ce
25 changed files with 185 additions and 139 deletions

View File

@@ -193,8 +193,8 @@ public class TaskServiceImpl extends CommonServiceImpl<TaskMapper, Task> impleme
List<Task> taskList = new LambdaQueryChainWrapper<>(taskMapper)
.eq(Task::getTask_status, task_status)
.eq(Task::getIs_delete, "0")
.orderByDesc(Task::getPriority)
.orderByAsc(Task::getCreate_time)
.orderByAsc(Task::getTask_code)
.list();
return ConvertUtil.convertList(taskList, TaskDto.class);
}

View File

@@ -25,7 +25,9 @@ import org.nl.system.service.lucene.impl.LuceneExecuteLogServiceImpl;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
/**
* 自动创建指令
@@ -112,7 +114,17 @@ public class AutoCreateInst {
flag = true;
}
}
} else if (start_point.equals("BCPRK1")) {
} else if (start_point.equals("CPRK5")) {
List<TaskDto> list1 = taskserver.queryAllByStatus("1");
for (int j = 0; j < list1.size(); j++) {
String start_device_code1 = list1.get(j).getStart_device_code();
String[] parts = start_device_code1.split("-", 2);
start_point = parts[0];
if (start_point.equals("CPRK5")) {
flag = true;
}
}
}else if (start_point.equals("BCPRK1")) {
List<TaskDto> list1 = taskserver.queryAllByStatus("1");
for (int j = 0; j < list1.size(); j++) {
String start_device_code1 = list1.get(j).getStart_device_code();

View File

@@ -10,7 +10,7 @@ spring:
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
# url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:stand_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
# url: jdbc:log4jdbc:mysql://${DB_HOST:47.111.78.178}:${DB_PORT:3306}/${DB_NAME:lzhl_two_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3307}/${DB_NAME:hyjm_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true
url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:acs_huayu}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true
username: ${DB_USER:root}
# password: ${DB_PWD:Root.123456}
password: ${DB_PWD:123456}

View File

@@ -5,8 +5,8 @@
"author": "Zheng Jie",
"license": "Apache-2.0",
"scripts": {
"dev1": "vue-cli-service serve",
"dev": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
"dev": "vue-cli-service serve",
"dev1": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
"build:prod": "vue-cli-service build",
"build:stage": "vue-cli-service build --mode staging",
"preview": "node build/index.js --preview",

View File

@@ -366,40 +366,48 @@ public class StructattrServiceImpl extends ServiceImpl<StructattrMapper, Structa
}
List<String> strategy = one.getStrategy();
Map<String, Decisioner> decisionerMap = SpringContextHolder.getBeansOfType(Decisioner.class);
QueryWrapper<Structattr> query = new QueryWrapper<Structattr>();
if ("2FCP3C".equals(param.getStoragevehicle_type())) {
QueryWrapper<Structattr> query = new QueryWrapper<>();
//一楼车辆特殊分配
if ("firstfloorBC".equals(param.getStor_code())) {
if ("3".equals(param.getSuitable_car())) {
query.eq("is_used", true)
.eq("lock_type", IOSEnum.LOCK_TYPE.code("未锁定"))
.eq("sect_code", param.getSect_code())
.isNull("width")
.isNull("stor_type")
.and(wrapper -> wrapper.isNull("storagevehicle_code")
.or()
.eq("storagevehicle_code", " "));
} else if ("2".equals(param.getSuitable_car())) {
query.eq("is_used", true)
.eq("lock_type", IOSEnum.LOCK_TYPE.code("未锁定"))
.eq("sect_code", param.getSect_code())
.eq("width", 1)
.ne("layer_num", maxLayerNum)
.isNull("stor_type")
.and(wrapper -> wrapper.isNull("storagevehicle_code")
.or()
.eq("storagevehicle_code", " "));
} else if ("1".equals(param.getSuitable_car())) {
query.eq("is_used", true)
.eq("lock_type", IOSEnum.LOCK_TYPE.code("未锁定"))
.eq("sect_code", param.getSect_code())
.eq("layer_num", maxLayerNum)
.isNull("stor_type")
.and(wrapper -> wrapper.isNull("storagevehicle_code")
.or()
.eq("storagevehicle_code", " "));
}
} else {
//特殊物料优先放3层
if ("2FCP3C".equals(param.getStoragevehicle_type())) {
query.eq("layer_num", maxLayerNum);
} else {
query.ne("layer_num", maxLayerNum);
}
query.eq("is_used", true)
.eq("lock_type", IOSEnum.LOCK_TYPE.code("未锁定"))
.eq("sect_code", param.getSect_code())
.eq("layer_num", maxLayerNum)
.and(wrapper -> wrapper.isNull("storagevehicle_code")
.or()
.eq("storagevehicle_code", " "));
} else if ("3".equals(param.getSuitable_car())) {
query.eq("is_used", true)
.eq("lock_type", IOSEnum.LOCK_TYPE.code("未锁定"))
.eq("sect_code", param.getSect_code())
.isNull("width")
.isNull("stor_type")
.and(wrapper -> wrapper.isNull("storagevehicle_code")
.or()
.eq("storagevehicle_code", " "));
} else if ("2".equals(param.getSuitable_car())) {
query.eq("is_used", true)
.eq("lock_type", IOSEnum.LOCK_TYPE.code("未锁定"))
.eq("sect_code", param.getSect_code())
.eq("width", 1)
.ne("layer_num", maxLayerNum)
.isNull("stor_type")
.and(wrapper -> wrapper.isNull("storagevehicle_code")
.or()
.eq("storagevehicle_code", " "));
} else if ("1".equals(param.getSuitable_car())) {
query.eq("is_used", true)
.eq("lock_type", IOSEnum.LOCK_TYPE.code("未锁定"))
.eq("sect_code", param.getSect_code())
.eq("layer_num", maxLayerNum)
.isNull("stor_type")
.and(wrapper -> wrapper.isNull("storagevehicle_code")
.or()
.eq("storagevehicle_code", " "));

View File

@@ -17,6 +17,7 @@ import org.nl.wms.sch_manage.service.dao.SchBaseTask;
import org.nl.wms.sch_manage.service.dao.mapper.SchBasePointMapper;
import org.nl.wms.sch_manage.service.util.AbstractTask;
import org.nl.wms.sch_manage.service.util.TaskFactory;
import org.nl.wms.warehouse_manage.inAndOut.service.IInBillService;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
@@ -57,6 +58,10 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
@Autowired
private ISchBasePointService iSchBasePointService;
@Autowired
private IInBillService iInBillService;
/**
* 任务工厂服务
*/
@@ -89,6 +94,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
if (ResultAcsStatus.EXECUTING.getCode().equals(acs_task_status)) {
// 执行中
status = TaskStatus.EXECUTING;
taskObj.setTask_status(acs_task_status);
iInBillService.taskFinish(taskObj);
} else if (ResultAcsStatus.FINISHED.getCode().equals(acs_task_status)) {
// 完成
status = TaskStatus.FINISHED;

View File

@@ -217,6 +217,7 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
taskForm.put("PickingLocation", whereJson.getString("struct_code"));
taskForm.put("PlacedLocation", whereJson.getString("siteCode"));
taskForm.put("vehicle_code", whereJson.getString("storagevehicle_code"));
taskForm.put("priority", whereJson.getString("priority"));
StOutTask stOutTask = SpringContextHolder.getBean("STOutTask");
String taskId = stOutTask.create(taskForm);
//更新任务id

View File

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.nl.wms.sch_manage.enums.TaskStatus;
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
@@ -64,6 +65,8 @@ public class AutoTask {
}
// 整理下发acs参数
for (SchBaseTask taskDao : taskList) {
//任务优先级
taskDao.setPriority(StringUtils.isBlank(taskDao.getPriority()) ? "0" : taskDao.getPriority());
AbstractTask task = taskFactory.getTask(taskDao.getConfig_code());
task.sendTaskOne(taskDao.getTask_id());
}

View File

@@ -61,7 +61,7 @@ public class BackInTask extends AbstractTask {
task.setPoint_code2(json.getString("point_code2"));
task.setVehicle_code(json.getString("vehicle_code"));
task.setRequest_param(json.toString());
task.setPriority(json.getString("Priority"));
task.setPriority(json.getString("priority"));
task.setCreate_id(SecurityUtils.getCurrentUserId());
task.setCreate_name(SecurityUtils.getCurrentNickName());
task.setCreate_time(DateUtil.now());

View File

@@ -96,7 +96,7 @@ public class CheckBackMoveTask extends AbstractTask {
task.setVehicle_code(json.getString("vehicle_code"));
task.setGroup_id(json.getString("group_id"));
task.setRequest_param(json.toString());
task.setPriority(json.getString("Priority"));
task.setPriority(json.getString("priority"));
task.setCreate_id(SecurityUtils.getCurrentUserId());
task.setCreate_name(SecurityUtils.getCurrentNickName());
task.setCreate_time(DateUtil.now());

View File

@@ -58,7 +58,7 @@ public class CheckInTask extends AbstractTask {
task.setGroup_id(json.getString("group_id"));
task.setCar_type(json.getString("car_type"));
task.setCar_width(json.getString("car_width"));
task.setPriority(json.getString("Priority"));
task.setPriority(json.getString("priority"));
task.setCreate_id(SecurityUtils.getCurrentUserId());
task.setCreate_name(SecurityUtils.getCurrentNickName());
task.setCreate_time(DateUtil.now());

View File

@@ -74,7 +74,7 @@ public class CheckMoveTask extends AbstractTask {
task.setVehicle_code(json.getString("vehicle_code"));
task.setGroup_id(json.getString("group_id"));
task.setRequest_param(json.toString());
task.setPriority(json.getString("Priority"));
task.setPriority(json.getString("priority"));
task.setCreate_id(SecurityUtils.getCurrentUserId());
task.setCreate_name(SecurityUtils.getCurrentNickName());
task.setCreate_time(DateUtil.now());

View File

@@ -55,7 +55,7 @@ public class CheckOutTask extends AbstractTask {
task.setGroup_id(json.getString("group_id"));
task.setCar_type(json.getString("car_type"));
task.setCar_width(json.getString("car_width"));
task.setPriority(json.getString("Priority"));
task.setPriority(json.getString("priority"));
task.setCreate_id(SecurityUtils.getCurrentUserId());
task.setCreate_name(SecurityUtils.getCurrentNickName());
task.setCreate_time(DateUtil.now());

View File

@@ -59,7 +59,7 @@ public class MoveTask extends AbstractTask {
task.setPoint_code2(json.getString("point_code2"));
task.setVehicle_code(json.getString("vehicle_code"));
task.setRequest_param(json.toString());
task.setPriority(json.getString("Priority"));
task.setPriority(json.getString("priority"));
task.setCreate_id(SecurityUtils.getCurrentUserId());
task.setCreate_name(SecurityUtils.getCurrentNickName());
task.setCreate_time(DateUtil.now());

View File

@@ -61,7 +61,7 @@ public class PdaPointTask extends AbstractTask {
task.setPoint_code2(json.getString("point_code2"));
task.setVehicle_code(json.getString("vehicle_code"));
task.setRequest_param(json.toString());
task.setPriority(json.getString("Priority"));
task.setPriority(json.getString("priority"));
task.setCreate_id(SecurityUtils.getCurrentUserId());
task.setCreate_name(SecurityUtils.getCurrentNickName());
task.setCreate_time(DateUtil.now());

View File

@@ -71,7 +71,7 @@ public class StInTask extends AbstractTask {
task.setGroup_id(json.getString("group_id"));
task.setCar_type(json.getString("car_type"));
task.setCar_width(json.getString("car_width"));
task.setPriority(json.getString("Priority"));
task.setPriority(json.getString("priority"));
task.setCreate_id(SecurityUtils.getCurrentUserId());
task.setCreate_name(SecurityUtils.getCurrentNickName());
task.setCreate_time(DateUtil.now());

View File

@@ -56,7 +56,7 @@ public class StOutTask extends AbstractTask {
task.setCar_width(json.getString("car_width"));
task.setGroup_id(json.getString("group_id"));
task.setRequest_param(json.toString());
task.setPriority(json.getString("Priority"));
task.setPriority(json.getString("priority"));
task.setCreate_id(SecurityUtils.getCurrentUserId());
task.setCreate_name(SecurityUtils.getCurrentNickName());
task.setCreate_time(DateUtil.now());

View File

@@ -61,7 +61,7 @@ public class VehicleInTask extends AbstractTask {
task.setPoint_code2(json.getString("point_code2"));
task.setVehicle_code(json.getString("vehicle_code"));
task.setRequest_param(json.toString());
task.setPriority(json.getString("Priority"));
task.setPriority(json.getString("priority"));
task.setCreate_id(SecurityUtils.getCurrentUserId());
task.setCreate_name(SecurityUtils.getCurrentNickName());
task.setCreate_time(DateUtil.now());

View File

@@ -53,7 +53,7 @@ public class VehicleOutTask extends AbstractTask {
task.setVehicle_code(json.getString("vehicle_code"));
task.setGroup_id(json.getString("group_id"));
task.setRequest_param(json.toString());
task.setPriority(json.getString("Priority"));
task.setPriority(json.getString("priority"));
task.setCreate_id(SecurityUtils.getCurrentUserId());
task.setCreate_name(SecurityUtils.getCurrentNickName());
task.setCreate_time(DateUtil.now());

View File

@@ -29,28 +29,28 @@ import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleinfoMappe
import org.nl.wms.basedata_manage.service.dto.StrategyMater;
import org.nl.wms.basedata_manage.service.dto.StrategyStructParam;
import org.nl.wms.basedata_manage.service.dto.StructattrChangeDto;
import org.nl.wms.ext_manage.enums.ResultAcsStatus;
import org.nl.wms.sch_manage.enums.StatusEnum;
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
import org.nl.wms.sch_manage.service.dao.mapper.SchBasePointMapper;
import org.nl.wms.sch_manage.service.util.tasks.StInTask;
import org.nl.wms.warehouse_manage.enums.IOSConstant;
import org.nl.wms.warehouse_manage.enums.IOSEnum;
import org.nl.wms.warehouse_manage.inAndOut.service.dto.TOWMSMSG;
import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService;
import org.nl.wms.warehouse_manage.service.dao.mapper.MdPbGroupplateMapper;
import org.nl.wms.warehouse_manage.service.impl.MdPbGroupplateServiceImpl;
import org.nl.wms.warehouse_manage.inAndOut.service.IInBillService;
import org.nl.wms.warehouse_manage.service.dao.GroupPlate;
import org.nl.wms.warehouse_manage.inAndOut.service.dao.IOStorInv;
import org.nl.wms.warehouse_manage.inAndOut.service.dao.IOStorInvDis;
import org.nl.wms.warehouse_manage.inAndOut.service.dao.IOStorInvDtl;
import org.nl.wms.warehouse_manage.service.dto.GroupPlateDto;
import org.nl.wms.warehouse_manage.inAndOut.service.dao.mapper.IOStorInvDisMapper;
import org.nl.wms.warehouse_manage.inAndOut.service.dao.mapper.IOStorInvDtlMapper;
import org.nl.wms.warehouse_manage.inAndOut.service.dao.mapper.IOStorInvMapper;
import org.nl.wms.warehouse_manage.inAndOut.service.dto.IOStorInvDisDto;
import org.nl.wms.warehouse_manage.inAndOut.service.dto.IOStorInvDtlDto;
import org.nl.wms.warehouse_manage.inAndOut.service.dto.TOWMSMSG;
import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService;
import org.nl.wms.warehouse_manage.service.dao.GroupPlate;
import org.nl.wms.warehouse_manage.service.dao.mapper.MdPbGroupplateMapper;
import org.nl.wms.warehouse_manage.service.dto.GroupPlateDto;
import org.nl.wms.warehouse_manage.service.impl.MdPbGroupplateServiceImpl;
import org.nl.wms.wbwms.service.IWmsToWmsService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -61,8 +61,6 @@ import java.math.BigDecimal;
import java.math.BigInteger;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.function.Predicate;
import java.util.function.ToIntFunction;
import java.util.stream.Collectors;
/**
@@ -806,10 +804,9 @@ public class InBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
task_form.put("vehicle_code", whereJson.get("storagevehicle_code"));
task_form.put("car_type",car_type);
task_form.put("car_width",car_width);
task_form.put("priority", whereJson.get("priority"));
StInTask stInTask = SpringContextHolder.getBean("STInTask");
String task_id = stInTask.create(task_form);
//分配明细表更新任务相关数据
IOStorInvDis dis = new IOStorInvDis();
dis.setIostorinvdis_id((String) whereJson.get("iostorinvdis_id"));
@@ -850,6 +847,7 @@ public class InBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
task_form.put("PickingLocation", point_code);
task_form.put("PlacedLocation", ioStorInvDis.get(0).getStruct_code());
task_form.put("vehicle_code", map.get("storagevehicle_code"));
task_form.put("priority", map.get("priority"));
StInTask stInTask = SpringContextHolder.getBean("STInTask");
String task_id = stInTask.create(task_form);
@@ -970,79 +968,79 @@ public class InBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
String structCode = ioStorInvDis.get(0).getStruct_code();
IOStorInvDis item1 = ioStorInvDis.get(0);
//获取出入库单标识
String iostorinv_id=item1.getIostorinv_id();
IOStorInv ioStorInv=ioStorInvMapper.selectOne(new LambdaQueryWrapper<IOStorInv>().eq(IOStorInv::getIostorinv_id,iostorinv_id));
String iostorinv_id = item1.getIostorinv_id();
IOStorInv ioStorInv = ioStorInvMapper.selectOne(new LambdaQueryWrapper<IOStorInv>().eq(IOStorInv::getIostorinv_id, iostorinv_id));
//获取单据编号
String bill_code=ioStorInv.getBill_code();
//
//
String source_name=ioStorInv.getSource_name();
//解锁库位
JSONObject finish_map = new JSONObject();
finish_map.put("struct_code", structCode);
finish_map.put("storagevehicle_code", storagevehicleCode);
finish_map.put("lock_type", IOSEnum.LOCK_TYPE.code("未锁定"));
finish_map.put("inv_type", null);
finish_map.put("inv_id", null);
finish_map.put("inv_code", null);
iStructattrService.updateStatusByCode("1", finish_map);
//库存变动
StructattrChangeDto changeDto = StructattrChangeDto.builder()
.inv(iostorinvId)
.storagevehicleCode(storagevehicleCode)
.structCode(structCode).taskType(task.getConfig_code()).inBound(true).build();
iStructattrService.changeStruct(changeDto);
// 完成当前分配明细
Map<String, BigDecimal> dtlMap = new HashMap<>();
for (IOStorInvDis item : ioStorInvDis) {
ioStorInvDisMapper.update(item, new LambdaUpdateWrapper<>(IOStorInvDis.class)
.set(IOStorInvDis::getWork_status, IOSEnum.INBILL_DIS_STATUS.code("完成"))
.set(IOStorInvDis::getReal_qty, item.getPlan_qty())
.eq(IOStorInvDis::getIostorinvdis_id, item.getIostorinvdis_id()));
dtlMap.put(item.getIostorinvdtl_id(), item.getPlan_qty());
}
//更新明细
for (String dtl_id : dtlMap.keySet()) {
IOStorInvDtl invDtl = new IOStorInvDtl();
invDtl.setIostorinvdtl_id(dtl_id);
invDtl.setReal_qty(dtlMap.get(dtl_id));
invDtl.setBill_status(IOSEnum.BILL_STATUS.code("完成"));
ioStorInvDtlMapper.updateById(invDtl);
}
// 查看明细是否全部完成
int countDtl = ioStorInvDtlMapper.selectCount(new LambdaQueryWrapper<>(IOStorInvDtl.class)
.eq(IOStorInvDtl::getIostorinv_id, iostorinvId)
.ne(IOStorInvDtl::getBill_status, IOSEnum.BILL_STATUS.code("完成"))
);
// 如果明细全部完成则更新主表状态
if (countDtl == 0) {
//更新主表状态
ioStorInvMapper.update(new IOStorInv(), new LambdaUpdateWrapper<>(IOStorInv.class)
.set(IOStorInv::getBill_status, IOSEnum.BILL_STATUS.code("完成"))
.set(IOStorInv::getConfirm_optid, currentUserId)
.set(IOStorInv::getConfirm_optname, nickName)
.set(IOStorInv::getConfirm_time, now)
.eq(IOStorInv::getIostorinv_id, iostorinvId)
String bill_code = ioStorInv.getBill_code();
String source_name = ioStorInv.getSource_name();
if (!ResultAcsStatus.EXECUTING.getCode().equals(task.getTask_status())) {
//解锁库位
JSONObject finish_map = new JSONObject();
finish_map.put("struct_code", structCode);
finish_map.put("storagevehicle_code", storagevehicleCode);
finish_map.put("lock_type", IOSEnum.LOCK_TYPE.code("未锁定"));
finish_map.put("inv_type", null);
finish_map.put("inv_id", null);
finish_map.put("inv_code", null);
iStructattrService.updateStatusByCode("1", finish_map);
//库存变动
StructattrChangeDto changeDto = StructattrChangeDto.builder()
.inv(iostorinvId)
.storagevehicleCode(storagevehicleCode)
.structCode(structCode).taskType(task.getConfig_code()).inBound(true).build();
iStructattrService.changeStruct(changeDto);
// 完成当前分配明细
Map<String, BigDecimal> dtlMap = new HashMap<>();
for (IOStorInvDis item : ioStorInvDis) {
ioStorInvDisMapper.update(item, new LambdaUpdateWrapper<>(IOStorInvDis.class)
.set(IOStorInvDis::getWork_status, IOSEnum.INBILL_DIS_STATUS.code("完成"))
.set(IOStorInvDis::getReal_qty, item.getPlan_qty())
.eq(IOStorInvDis::getIostorinvdis_id, item.getIostorinvdis_id()));
dtlMap.put(item.getIostorinvdtl_id(), item.getPlan_qty());
}
//更新明细
for (String dtl_id : dtlMap.keySet()) {
IOStorInvDtl invDtl = new IOStorInvDtl();
invDtl.setIostorinvdtl_id(dtl_id);
invDtl.setReal_qty(dtlMap.get(dtl_id));
invDtl.setBill_status(IOSEnum.BILL_STATUS.code("完成"));
ioStorInvDtlMapper.updateById(invDtl);
}
// 查看明细是否全部完成
int countDtl = ioStorInvDtlMapper.selectCount(new LambdaQueryWrapper<>(IOStorInvDtl.class)
.eq(IOStorInvDtl::getIostorinv_id, iostorinvId)
.ne(IOStorInvDtl::getBill_status, IOSEnum.BILL_STATUS.code("完成"))
);
// 如果明细全部完成则更新主表状态
if (countDtl == 0) {
//更新主表状态
ioStorInvMapper.update(new IOStorInv(), new LambdaUpdateWrapper<>(IOStorInv.class)
.set(IOStorInv::getBill_status, IOSEnum.BILL_STATUS.code("完成"))
.set(IOStorInv::getConfirm_optid, currentUserId)
.set(IOStorInv::getConfirm_optname, nickName)
.set(IOStorInv::getConfirm_time, now)
.eq(IOStorInv::getIostorinv_id, iostorinvId)
);
}
}
//回传给wms
TOWMSMSG towmsmsg=new TOWMSMSG();
TOWMSMSG towmsmsg = new TOWMSMSG();
towmsmsg.setType("0");
towmsmsg.setBill_code(source_name);
towmsmsg.setStatus("200");
JSONObject jo=new JSONObject();
jo.put("storagevehicle_code",task.getVehicle_code());
jo.put("struct_name",task.getPoint_code2());
jo.put("struct_code",task.getPoint_code2());
GroupPlate groupPlate=mdPbGroupplateMapper.selectOne(new LambdaQueryWrapper<GroupPlate>()
.eq(GroupPlate::getStatus,IOSEnum.GROUP_PLATE_STATUS.code("入库"))
.eq(GroupPlate::getStoragevehicle_code,task.getVehicle_code()
));
MdMeMaterialbase mdMeMaterialbase=mdMeMaterialbaseMapper.selectOne(new LambdaQueryWrapper<MdMeMaterialbase>().eq(MdMeMaterialbase::getMaterial_code,groupPlate.getMaterial_id()));
jo.put("material_name",mdMeMaterialbase.getMaterial_name());
jo.put("material_code",mdMeMaterialbase.getMaterial_code());
jo.put("qty",groupPlate.getQty());
List<JSONObject> tableData=new ArrayList<>();
towmsmsg.setStatus(ResultAcsStatus.EXECUTING.getCode().equals(task.getTask_status()) ? "1" : "200");
JSONObject jo = new JSONObject();
jo.put("storagevehicle_code", task.getVehicle_code());
jo.put("struct_name", task.getPoint_code2());
jo.put("struct_code", task.getPoint_code2());
GroupPlate groupPlate = mdPbGroupplateMapper.selectOne(new LambdaQueryWrapper<GroupPlate>()
.eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库"))
.eq(GroupPlate::getStoragevehicle_code, task.getVehicle_code()
));
MdMeMaterialbase mdMeMaterialbase = mdMeMaterialbaseMapper.selectOne(new LambdaQueryWrapper<MdMeMaterialbase>().eq(MdMeMaterialbase::getMaterial_code, groupPlate.getMaterial_id()));
jo.put("material_name", mdMeMaterialbase.getMaterial_name());
jo.put("material_code", mdMeMaterialbase.getMaterial_code());
jo.put("qty", groupPlate.getQty());
List<JSONObject> tableData = new ArrayList<>();
tableData.add(jo);
towmsmsg.setTableData(tableData);
iWmsToWmsService.FinishOutTask(towmsmsg);

View File

@@ -1146,15 +1146,15 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
if (StrUtil.isBlank(whereJson.getString("region_code"))){
throw new BadRequestException("未选择出库区");
}
List<SchBasePoint> regionCode = schBasePointMapper.selectList(new LambdaQueryWrapper<SchBasePoint>()
.eq(SchBasePoint::getRegion_code, whereJson.getString("region_code"))
.eq(SchBasePoint::getPoint_status,PointStatusEnum.EMPTY_POINT.getCode())
.eq(SchBasePoint::getIs_used,true)
.eq(SchBasePoint::getLock_up,"0")
);
if (CollectionUtils.isEmpty(regionCode)){
throw new BadRequestException("当前库区"+regionCode+"无可用点位");
}
// List<SchBasePoint> regionCode = schBasePointMapper.selectList(new LambdaQueryWrapper<SchBasePoint>()
// .eq(SchBasePoint::getRegion_code, whereJson.getString("region_code"))
// .eq(SchBasePoint::getPoint_status,PointStatusEnum.EMPTY_POINT.getCode())
// .eq(SchBasePoint::getIs_used,true)
// .eq(SchBasePoint::getLock_up,"0")
// );
// if (CollectionUtils.isEmpty(regionCode)){
// throw new BadRequestException("当前库区"+regionCode+"无可用点位");
// }
// String pointCode=regionCode.get(0).getPoint_code();
// SchBasePoint schBasePoint=new SchBasePoint();
// schBasePoint=iSchBasePointService.getByCode(pointCode);
@@ -1205,6 +1205,7 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
task_form.put("vehicle_code", item.getStoragevehicle_code());
task_form.put("car_type",car_type);
task_form.put("car_width",car_width);
task_form.put("priority", whereJson.getString("priority"));
StOutTask stOutTask = SpringContextHolder.getBean("STOutTask");
String task_id = stOutTask.create(task_form);
for (IOStorInvDis itemDis : disList) {

View File

@@ -206,6 +206,7 @@ public class WmsToIWmsServiceImpl implements WmsToIWmsService {
task_form.put("vehicle_code", parm.getString("storagevehicle_type"));
task_form.put("car_type",car_type);
task_form.put("car_width",car_width);
task_form.put("priority", parm.getString("priority"));
CheckInTask checkInTask = SpringContextHolder.getBean("CheckInTask");
String task_id = checkInTask.create(task_form);
} else if("2".equals(parm.getString("task_type"))){
@@ -223,6 +224,7 @@ public class WmsToIWmsServiceImpl implements WmsToIWmsService {
task_form.put("vehicle_code",parm.getString("storagevehicle_type"));
task_form.put("car_type",car_type);
task_form.put("car_width",car_width);
task_form.put("priority", parm.getString("priority"));
CheckOutTask checkOutTask = SpringContextHolder.getBean("CheckOutTask");
String task_id = checkOutTask.create(task_form);
}

View File

@@ -8,7 +8,7 @@
"dev": "vue-cli-service serve",
"dev1": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
"dev_mac": "export NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
"build:prod": "vue-cli-service build",
"build": "vue-cli-service build",
"build:stage": "vue-cli-service build --mode staging",
"preview": "node build/index.js --preview",
"lint": "eslint --ext .js,.vue src",

View File

@@ -257,7 +257,7 @@
-->
<el-table-column prop="struct_code" label="仓位编码" :min-width="flexWidth('struct_code',crud.data,'仓位编码')" />
<el-table-column prop="struct_name" label="仓位名称" :min-width="flexWidth('struct_name',crud.data,'仓位名称')" />
<el-table-column prop="simple_name" label="仓位简称" :min-width="flexWidth('simple_name',crud.data,'仓位简称')" />
<!-- <el-table-column prop="simple_name" label="仓位简称" :min-width="flexWidth('simple_name',crud.data,'仓位简称')" />-->
<el-table-column prop="sect_name" label="所属库区" width="150" />
<el-table-column prop="stor_name" label="所属仓库" width="150" />
<el-table-column prop="storagevehicle_code" label="载具号" :min-width="flexWidth('storagevehicle_code',crud.data,'载具号')" />
@@ -282,12 +282,15 @@
/>
</template>
</el-table-column>
<el-table-column prop="row_num" label="" width="150" />
<el-table-column prop="col_num" label="" width="150" />
<el-table-column prop="layer_num" label="" width="150" />
<el-table-column prop="width" label="宽度(1为专放蝴蝶龙)" width="150" />
<el-table-column prop="stor_type" label="类型(1为专放超托)" width="150" />
<el-table-column prop="taskdtl_type" label="锁定任务类型" width="150" :formatter="taskdtl_typeFormat" />
<el-table-column prop="task_code" label="锁定任务编码" width="150" />
<el-table-column prop="inv_code" label="锁定单据编码" width="150" />
<el-table-column prop="inv_type" label="锁定单据类型" width="150" :formatter="invtypeFormat" />
<el-table-column prop="width" label="宽度(1为专放蝴蝶龙)" width="150" />
<el-table-column prop="stor_type" label="类型(1为专放超托)" width="150" />
<el-table-column prop="remark" label="备注" show-overflow-tooltip />
<el-table-column
v-permission="['admin','structattr:edit','structattr:del']"
@@ -407,7 +410,8 @@ export default {
layerList: [
{ 'label': '1层', 'value': '1' },
{ 'label': '2层', 'value': '2' },
{ 'label': '3层', 'value': '3' }
{ 'label': '3层', 'value': '3' },
{ 'label': '4层', 'value': '4' }
],
isHaveList: [
{ 'label': '空位', 'value': '1' },

View File

@@ -42,6 +42,16 @@
class="filter-item"
/>
</el-form-item>
<el-form-item label="载具信息">
<el-input
v-model="query.storagevehicle_code"
clearable
size="small"
placeholder="载具信息"
style="width: 200px;"
class="filter-item"
/>
</el-form-item>
<el-form-item label="批次号">
<el-input
v-model="query.pcsn"