opt:西门子优化,增加SD01重复入库功能
This commit is contained in:
@@ -19,6 +19,9 @@ public enum RegionEnum {
|
||||
ZDZWQ("自动折弯区","ZDZWQ"),
|
||||
NBGD("内部过道加工区","NBGDJGQ"),
|
||||
QTJG("其他加工送料暂存区","111-22"),
|
||||
|
||||
LAG("S04存放点","LAG"),
|
||||
S("空容器货架C","S"),
|
||||
;
|
||||
private final String region_name;
|
||||
private final String region_code;
|
||||
|
||||
@@ -5,6 +5,7 @@ import org.nl.common.domain.query.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.wms.database.vehicle.service.dao.MdBaseVehicle;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -46,4 +47,10 @@ public interface IMdBaseVehicleService extends IService<MdBaseVehicle> {
|
||||
* @param vehicle_code
|
||||
*/
|
||||
MdBaseVehicle selectByVehicleCode(String vehicle_code);
|
||||
|
||||
/**
|
||||
* 根据载具号查询
|
||||
* @param vehicle_code_list
|
||||
*/
|
||||
List<MdBaseVehicle> selectListByVehicleCode(List<String> vehicle_code_list);
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ import org.nl.wms.database.vehicle.service.dao.MdBaseVehicle;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -89,4 +90,10 @@ public class MdBaseVehicleServiceImpl extends ServiceImpl<MdBaseVehicleMapper, M
|
||||
.eq(MdBaseVehicle::getVehicle_code, vehicle_code));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<MdBaseVehicle> selectListByVehicleCode(List<String> vehicle_code_list) {
|
||||
return mdBaseVehicleMapper.selectList(Wrappers.lambdaQuery(MdBaseVehicle.class)
|
||||
.in(MdBaseVehicle::getVehicle_code, vehicle_code_list));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -8,9 +8,11 @@ import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.base.TableDataInfo;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.logging.annotation.Log;
|
||||
import org.nl.wms.ext.fab.service.dto.CallEmpVo;
|
||||
import org.nl.wms.ext.fab.service.impl.FabServiceImpl;
|
||||
import org.nl.wms.ext.handheld.dto.EmptyVehicleWarehousingDto;
|
||||
import org.nl.wms.ext.handheld.service.HandheldService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
@@ -42,6 +44,13 @@ public class HandheldController {
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/emptyVehicleWarehousing")
|
||||
@Log("空载具入库")
|
||||
public ResponseEntity<Object> emptyVehicleWarehousing(@RequestBody EmptyVehicleWarehousingDto dto) {
|
||||
handheldService.emptyVehicleWarehousing(dto);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/rack")
|
||||
@Log("外协区空料架送回")
|
||||
@@ -73,6 +82,12 @@ public class HandheldController {
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/getSD01GroupLog")
|
||||
@Log("获取SD01出库组盘")
|
||||
public ResponseEntity<Object> getSD01GroupLog(@RequestBody JSONObject param) {
|
||||
return new ResponseEntity<>( handheldService.getSD01GroupLog(param),HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/lock")
|
||||
@Log("点位锁定释放")
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
package org.nl.wms.ext.handheld.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 空载具入库Dto
|
||||
*/
|
||||
|
||||
@Data
|
||||
public class EmptyVehicleWarehousingDto {
|
||||
List<VehicleDto> vehicleList;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package org.nl.wms.ext.handheld.dto;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* 空载具入库Dto
|
||||
*/
|
||||
|
||||
@Data
|
||||
public class VehicleDto {
|
||||
@NotBlank
|
||||
@ApiModelProperty(value = "点位不能为空")
|
||||
private String point_code;
|
||||
|
||||
@NotBlank
|
||||
@ApiModelProperty(value = "载具编码不能为空")
|
||||
private String vehicle_code;
|
||||
}
|
||||
@@ -2,6 +2,8 @@ package org.nl.wms.ext.handheld.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.wms.ext.handheld.dto.EmptyVehicleWarehousingDto;
|
||||
import org.nl.wms.sch.group_delete_log.service.dto.SD01GroupLogRespondDto;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -18,6 +20,13 @@ public interface HandheldService {
|
||||
*/
|
||||
void emptyCageStorageTask(JSONObject param);
|
||||
|
||||
/**
|
||||
* 空载具入库
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
void emptyVehicleWarehousing(EmptyVehicleWarehousingDto param);
|
||||
|
||||
|
||||
/**
|
||||
* 手持呼叫空料笼
|
||||
@@ -32,6 +41,12 @@ public interface HandheldService {
|
||||
*/
|
||||
void cageBlankingTask(JSONObject param);
|
||||
|
||||
/**
|
||||
* 获取SD01出库组盘
|
||||
* @param param
|
||||
*/
|
||||
SD01GroupLogRespondDto getSD01GroupLog(JSONObject param);
|
||||
|
||||
/**
|
||||
* 点位锁定
|
||||
* @param param
|
||||
|
||||
@@ -23,6 +23,12 @@ import org.nl.common.enums.VehicleTypeEnum;
|
||||
import org.nl.common.enums.region.RegionEnum;
|
||||
import org.nl.system.service.dict.ISysDictService;
|
||||
import org.nl.system.service.dict.dao.Dict;
|
||||
import org.nl.wms.ext.handheld.dto.EmptyVehicleWarehousingDto;
|
||||
import org.nl.wms.ext.handheld.dto.VehicleDto;
|
||||
import org.nl.wms.sch.group_delete_log.service.dao.SchBaseVehiclematerialgroupDeleteLog;
|
||||
import org.nl.wms.sch.group_delete_log.service.ISchBaseVehiclematerialgroupDeleteLogService;
|
||||
import org.nl.wms.sch.group_delete_log.service.dto.LogMaterialDto;
|
||||
import org.nl.wms.sch.group_delete_log.service.dto.SD01GroupLogRespondDto;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
@@ -53,6 +59,7 @@ import org.nl.wms.sch.task_manage.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.task.TaskFactory;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskType;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -101,6 +108,9 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
@Autowired
|
||||
private ISysDictService dictService;
|
||||
|
||||
@Autowired
|
||||
private ISchBaseVehiclematerialgroupDeleteLogService iSchBaseVehiclematerialgroupDeleteLogService;
|
||||
|
||||
@Autowired
|
||||
private SchBasePointMapper schBasePointMapper;
|
||||
static final Map<String, String> STATUS = MapOf.of("释放", "0", "锁定", "1");
|
||||
@@ -132,6 +142,115 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 手持创建空载具入库,批量
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class) // 新增:事务控制,保证任务生成原子性
|
||||
public void emptyVehicleWarehousing(EmptyVehicleWarehousingDto param) {
|
||||
// 抽取魔法值为常量,便于后续维护
|
||||
final String OUTSOURCE_TEMP_AREA = "外协加工暂存区";
|
||||
final String MSG_VEHICLE_NOT_EXIST_BATCH = "载具%s不存在!";
|
||||
final String MSG_VEHICLE_OCCUPIED_BATCH = "以下载具已占用点位,无法入库:%s";
|
||||
|
||||
// 1. 提取载具列表并判空
|
||||
List<VehicleDto> vehicleList = param.getVehicleList();
|
||||
if (CollectionUtil.isEmpty(vehicleList)) {
|
||||
throw new BadRequestException("载具列表不能为空!");
|
||||
}
|
||||
|
||||
// 2. 提取载具编码(过滤null/空字符串,避免无效查询),并校验
|
||||
List<String> vehicleCodeList = vehicleList.stream()
|
||||
.map(VehicleDto::getVehicle_code)
|
||||
.filter(org.springframework.util.StringUtils::hasText) // 统一使用spring的字符串工具类,过滤无效值
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (CollectionUtil.isEmpty(vehicleCodeList)) {
|
||||
throw new BadRequestException("载具编码不能为空!");
|
||||
}
|
||||
|
||||
// 3. 查询数据库中存在的载具,批量校验无效载具
|
||||
List<MdBaseVehicle> mdBaseVehicleList = iMdBaseVehicleService.selectListByVehicleCode(vehicleCodeList);
|
||||
if (CollectionUtil.isEmpty(mdBaseVehicleList)) {
|
||||
throw new BadRequestException("载具在系统中不存在,请在系统中维护!");
|
||||
}
|
||||
|
||||
Set<String> existVehicleCodeSet = mdBaseVehicleList.stream()
|
||||
.map(MdBaseVehicle::getVehicle_code)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
// 批量收集所有无效载具,统一提示(优化用户体验)
|
||||
List<String> invalidVehicleCodes = vehicleCodeList.stream()
|
||||
.filter(vehicleCode -> !existVehicleCodeSet.contains(vehicleCode))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (!CollectionUtil.isEmpty(invalidVehicleCodes)) {
|
||||
String invalidVehicleMsg = String.join(",", invalidVehicleCodes);
|
||||
throw new BadRequestException(String.format(MSG_VEHICLE_NOT_EXIST_BATCH, invalidVehicleMsg));
|
||||
}
|
||||
|
||||
// 4. 校验载具是否已占用有效点位,批量提示违规载具
|
||||
List<SchBasePoint> occupiedPoints = iSchBasePointService.list(Wrappers.lambdaQuery(SchBasePoint.class)
|
||||
.in(SchBasePoint::getVehicle_code, existVehicleCodeSet)
|
||||
.ne(SchBasePoint::getRegion_name, OUTSOURCE_TEMP_AREA) // 使用常量,消除魔法值
|
||||
.eq(SchBasePoint::getIs_used, true));
|
||||
|
||||
if (!CollectionUtil.isEmpty(occupiedPoints)) {
|
||||
String occupiedMsg = occupiedPoints.stream()
|
||||
.map(point -> String.format("%s(点位:%s)", point.getVehicle_code(), point.getPoint_code()))
|
||||
.collect(Collectors.joining(","));
|
||||
throw new BadRequestException(String.format(MSG_VEHICLE_OCCUPIED_BATCH, occupiedMsg));
|
||||
}
|
||||
|
||||
// 5. 点位校验(保留你的优化,仅统一工具类和冗余调用)
|
||||
List<String> pointCodeList = vehicleList.stream()
|
||||
.map(VehicleDto::getPoint_code)
|
||||
.filter(org.springframework.util.StringUtils::hasText)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (CollectionUtil.isEmpty(pointCodeList)) {
|
||||
throw new BadRequestException("点位编码不能为空!");
|
||||
}
|
||||
|
||||
List<SchBasePoint> pointList = iSchBasePointService.selectListByPointCode(pointCodeList);
|
||||
Set<String> existPointCodeSet = pointList.stream()
|
||||
.map(SchBasePoint::getPoint_code)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
List<String> invalidPointCodes = pointCodeList.stream()
|
||||
.filter(pointCode -> !existPointCodeSet.contains(pointCode))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (!CollectionUtil.isEmpty(invalidPointCodes)) {
|
||||
throw new BadRequestException("点位" + String.join(",", invalidPointCodes) + "不存在!");
|
||||
}
|
||||
|
||||
// 6. 点位排序(保持原有逻辑)
|
||||
List<SchBasePoint> sortedPointList = pointList.stream()
|
||||
.sorted(Comparator.comparing(
|
||||
SchBasePoint::getOut_empty_seq,
|
||||
Comparator.nullsLast(Integer::compareTo)
|
||||
))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 7. 匹配点位和载具,生成任务(优化:构建Map,消除双层嵌套循环,提升性能)
|
||||
Map<String, List<VehicleDto>> point2VehicleMap = vehicleList.stream()
|
||||
.collect(Collectors.groupingBy(VehicleDto::getPoint_code));
|
||||
|
||||
for (SchBasePoint schBasePoint : sortedPointList) {
|
||||
String pointCode = schBasePoint.getPoint_code();
|
||||
List<VehicleDto> matchVehicleDtos = point2VehicleMap.get(pointCode);
|
||||
if (CollectionUtil.isNotEmpty(matchVehicleDtos)) {
|
||||
for (VehicleDto vehicleDto : matchVehicleDtos) {
|
||||
// 生成任务(可添加日志记录,便于生产环境排查问题)
|
||||
artificialBendingNew(vehicleDto.getVehicle_code(), vehicleDto.getPoint_code());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 空载具送回货架
|
||||
*/
|
||||
@@ -192,6 +311,22 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
rackTask(param, vehicle, device_code, mdBaseVehicle);
|
||||
}
|
||||
|
||||
/**
|
||||
* 空料框送回
|
||||
*/
|
||||
private void artificialBendingNew(String vehicle_code, String point_code) {
|
||||
SchBasePoint schBasePoint = iSchBasePointService.selectByPointCode(point_code);
|
||||
if (ObjectUtil.isEmpty(schBasePoint)) throw new BadRequestException("设备点位不存在!");
|
||||
AbstractTask connectorTask = taskFactory.getTask("EMPTYCAGENEWTask");
|
||||
// 准备参数:设备编码
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("device_code", point_code);
|
||||
jo.put("config_code", "EMPTYCAGENEWTask");
|
||||
jo.put("create_mode", GeneralDefinition.AUTO_CREATION);
|
||||
jo.put("vehicle_code", vehicle_code);
|
||||
connectorTask.apply(jo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 空料框送回
|
||||
*/
|
||||
@@ -287,6 +422,43 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
String vehicle_code = param.getString("vehicle_code");
|
||||
String type = param.getString("type");
|
||||
AbstractTask connectorTask = taskFactory.getTask("BLANKINGTask");
|
||||
|
||||
//是否需要从日志表重新入库的标志
|
||||
Boolean reentry_flag = param.getBoolean("reentry_flag");
|
||||
reentry_flag = true;
|
||||
|
||||
//如果当前点位是SD01点位,且当前载具在组盘表中不存在
|
||||
List<Map> groups = iSchBaseVehiclematerialgroupService.selectGroupByVehicleCode(param.getString("vehicle_code"));
|
||||
if (reentry_flag!= null && reentry_flag && "SD01".equals(device_code) && CollectionUtil.isEmpty(groups) ) {
|
||||
|
||||
List<Dict> dictList = dictService.getDictByName("sd01_interval_hour");
|
||||
if(CollectionUtil.isNotEmpty(dictList)){
|
||||
Dict dict = dictList.get(0);
|
||||
|
||||
if("hour".equals(dict.getLabel())){
|
||||
String hour = dict.getValue();
|
||||
List<SchBaseVehiclematerialgroupDeleteLog> logList = iSchBaseVehiclematerialgroupDeleteLogService
|
||||
.list(Wrappers.lambdaQuery(SchBaseVehiclematerialgroupDeleteLog.class)
|
||||
// 1. 对数据库字段:用Lambda + 字段名(MyBatis-Plus会自动转下划线)
|
||||
.eq(SchBaseVehiclematerialgroupDeleteLog::getVehicle_code, vehicle_code)
|
||||
// 2. 对非数据库字段(@TableField(exist=false)):改用apply手动拼接
|
||||
.apply("point_code = {0}", device_code)
|
||||
// 3. 核心新增:筛选 hour 小时内删除的数据
|
||||
.apply("delete_time >= DATE_SUB(NOW(), INTERVAL {0} HOUR)", hour)
|
||||
.orderByDesc(SchBaseVehiclematerialgroupDeleteLog::getDelete_time)
|
||||
.last("LIMIT 1"));
|
||||
|
||||
//则自动将log表中的数据库插入到组盘表中
|
||||
if(CollectionUtil.isNotEmpty(logList)){
|
||||
SchBaseVehiclematerialgroupDeleteLog log = logList.get(0);
|
||||
SchBaseVehiclematerialgroup group = new SchBaseVehiclematerialgroup();
|
||||
BeanUtils.copyProperties(log,group);
|
||||
iSchBaseVehiclematerialgroupService.save(group);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
switch (type) {
|
||||
case "1":
|
||||
goShelves(schBasePoint, param, region_code, device_code, vehicle_code, connectorTask);
|
||||
@@ -308,6 +480,63 @@ public class HandheldServiceImpl implements HandheldService {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public SD01GroupLogRespondDto getSD01GroupLog(JSONObject param) {
|
||||
String device_code = param.getString("device_code");
|
||||
String vehicle_code = param.getString("vehicle_code");
|
||||
|
||||
if(!"SD01".equals(device_code) || StringUtils.isBlank(vehicle_code)){
|
||||
return null;
|
||||
}
|
||||
|
||||
List<Dict> dictList = dictService.getDictByName("sd01_interval_hour");
|
||||
if(CollectionUtil.isEmpty(dictList)){
|
||||
return null;
|
||||
}
|
||||
Dict dict = dictList.get(0);
|
||||
|
||||
if(!"hour".equals(dict.getLabel())){
|
||||
return null;
|
||||
}
|
||||
|
||||
String hour = dict.getValue();
|
||||
|
||||
// 修复后的查询代码(兼容下划线字段的Lambda写法)
|
||||
List<SchBaseVehiclematerialgroupDeleteLog> logList = iSchBaseVehiclematerialgroupDeleteLogService
|
||||
.list(Wrappers.lambdaQuery(SchBaseVehiclematerialgroupDeleteLog.class)
|
||||
// 1. 对数据库字段:用Lambda + 字段名(MyBatis-Plus会自动转下划线)
|
||||
.eq(SchBaseVehiclematerialgroupDeleteLog::getVehicle_code, vehicle_code)
|
||||
// 2. 对非数据库字段(@TableField(exist=false)):改用apply手动拼接
|
||||
.apply("point_code = {0}", device_code)
|
||||
// 3. 核心新增:筛选 hour 小时内删除的数据
|
||||
.apply("delete_time >= DATE_SUB(NOW(), INTERVAL {0} HOUR)", hour)
|
||||
.orderByDesc(SchBaseVehiclematerialgroupDeleteLog::getDelete_time)
|
||||
.last("LIMIT 1"));
|
||||
|
||||
if(CollectionUtil.isEmpty(logList)){
|
||||
return null;
|
||||
}
|
||||
|
||||
SD01GroupLogRespondDto sd01GroupLogRespondDto = new SD01GroupLogRespondDto();
|
||||
LogMaterialDto logMaterialDto = new LogMaterialDto();
|
||||
|
||||
logMaterialDto.setMaterial_qty(logList.get(0).getMaterial_qty());
|
||||
logMaterialDto.setMaterial_code(logList.get(0).getMaterial_id());
|
||||
logMaterialDto.setDue_date(logList.get(0).getDue_date());
|
||||
logMaterialDto.setOrder_code(logList.get(0).getOrder_code());
|
||||
|
||||
List<LogMaterialDto> logMaterialDtos = new ArrayList<>();
|
||||
logMaterialDtos.add(logMaterialDto);
|
||||
|
||||
sd01GroupLogRespondDto.setMaterial(logMaterialDtos);
|
||||
sd01GroupLogRespondDto.setDevice_code(device_code);
|
||||
sd01GroupLogRespondDto.setRegionCode(logList.get(0).getRegion_code());
|
||||
sd01GroupLogRespondDto.setRegion_Code(logList.get(0).getRegion_code());
|
||||
sd01GroupLogRespondDto.setVehicle_code(vehicle_code);
|
||||
|
||||
return sd01GroupLogRespondDto;
|
||||
}
|
||||
|
||||
/**
|
||||
* connector下料入库
|
||||
*/
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package org.nl.wms.sch.group_delete_log.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.wms.sch.group_delete_log.service.dao.SchBaseVehiclematerialgroupDeleteLog;
|
||||
|
||||
/**
|
||||
* @description 服务接口
|
||||
* @author zxm
|
||||
* @date 2026年2月25日10:54:29
|
||||
**/
|
||||
public interface ISchBaseVehiclematerialgroupDeleteLogService extends IService<SchBaseVehiclematerialgroupDeleteLog> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,197 @@
|
||||
package org.nl.wms.sch.group_delete_log.service.dao;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author lyd
|
||||
* @description /
|
||||
* @date 2023-05-16
|
||||
**/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@TableName("sch_base_vehiclematerialgroup_delete_log")
|
||||
public class SchBaseVehiclematerialgroupDeleteLog implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
@TableId(value = "group_id", type = IdType.NONE)
|
||||
@ApiModelProperty(value = "组盘标识")
|
||||
private String group_id;
|
||||
|
||||
@ApiModelProperty(value = "区域编码")
|
||||
private String region_code;
|
||||
|
||||
@ApiModelProperty(value = "载具编码")
|
||||
private String vehicle_code;
|
||||
|
||||
@ApiModelProperty(value = "物料标识")
|
||||
private String material_id;
|
||||
|
||||
@ApiModelProperty(value = "载具类型")
|
||||
private String vehicle_type;
|
||||
|
||||
|
||||
@ApiModelProperty(value = "子载具编码")
|
||||
private String child_vehicle_code;
|
||||
|
||||
@ApiModelProperty(value = "来源载具编码")
|
||||
private String source_vehicle_code;
|
||||
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value = "点位编码")
|
||||
private String point_code;
|
||||
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value = "点位名称")
|
||||
private String point_name;
|
||||
|
||||
@ApiModelProperty(value = "是否满托")
|
||||
private Boolean is_full;
|
||||
|
||||
@ApiModelProperty(value = "批次")
|
||||
private String pcsn;
|
||||
|
||||
@ApiModelProperty(value = "入库时间")
|
||||
private String instorage_time;
|
||||
|
||||
@ApiModelProperty(value = "静置时间(分钟)")
|
||||
private Integer standing_time;
|
||||
|
||||
@ApiModelProperty(value = "物料数量")
|
||||
private Integer material_qty;
|
||||
|
||||
@ApiModelProperty(value = "connector任务号")
|
||||
private String job_name;
|
||||
|
||||
@ApiModelProperty(value = "物料重量")
|
||||
private BigDecimal material_weight;
|
||||
|
||||
@ApiModelProperty(value = "搬运工单编码")
|
||||
private String order_code;
|
||||
|
||||
@ApiModelProperty(value = "组盘次数")
|
||||
private Integer group_number;
|
||||
|
||||
@ApiModelProperty(value = "任务编码")
|
||||
private String task_code;
|
||||
|
||||
@ApiModelProperty(value = "额外信息")
|
||||
private String ext_data;
|
||||
|
||||
@ApiModelProperty(value = "是否已加工")
|
||||
private Boolean has_work;
|
||||
|
||||
@ApiModelProperty(value = "交期时间")
|
||||
private String due_date;
|
||||
|
||||
@ApiModelProperty(value = "车间编码")
|
||||
private String workshop_code;
|
||||
|
||||
@ApiModelProperty(value = "组盘状态")
|
||||
private String group_status;
|
||||
|
||||
@ApiModelProperty(value = "业务表表名")
|
||||
private String table_name;
|
||||
|
||||
@ApiModelProperty(value = "业务表表名主键字段")
|
||||
private String table_fk;
|
||||
|
||||
@ApiModelProperty(value = "业务表表名主键值")
|
||||
private String table_fk_id;
|
||||
|
||||
@ApiModelProperty(value = "业务链路标识")
|
||||
private String buss_move_id;
|
||||
|
||||
@ApiModelProperty(value = "优先级")
|
||||
private String priority;
|
||||
|
||||
@ApiModelProperty(value = "流程编码")
|
||||
private String flow_code;
|
||||
|
||||
@ApiModelProperty(value = "流程顺序")
|
||||
private BigDecimal flow_num;
|
||||
|
||||
@ApiModelProperty(value = "上一任务编码")
|
||||
private String before_task_code;
|
||||
|
||||
@ApiModelProperty(value = "下一任务编码")
|
||||
private String next_task_code;
|
||||
|
||||
@ApiModelProperty(value = "扩展")
|
||||
private String extend;
|
||||
|
||||
@ApiModelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
@ApiModelProperty(value = "1:待绑定,2:已绑定,3:已解绑")
|
||||
private String group_bind_material_status;
|
||||
|
||||
@ApiModelProperty(value = "是否删除")
|
||||
private Boolean is_delete;
|
||||
|
||||
@ApiModelProperty(value = "创建人")
|
||||
private String create_id;
|
||||
|
||||
@ApiModelProperty(value = "创建人")
|
||||
private String create_name;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private String create_time;
|
||||
|
||||
@ApiModelProperty(value = "修改人")
|
||||
private String update_id;
|
||||
|
||||
@ApiModelProperty(value = "修改人")
|
||||
private String update_name;
|
||||
|
||||
@ApiModelProperty(value = "修改时间")
|
||||
private String update_time;
|
||||
|
||||
@ApiModelProperty(value = "移动途径")
|
||||
private String move_way;
|
||||
|
||||
@ApiModelProperty(value = "物料图片路径")
|
||||
private String material_path;
|
||||
|
||||
@ApiModelProperty(value = "托盘图片路径")
|
||||
private String vehicle_path;
|
||||
|
||||
//货架待命 1 、任务中 2 、人工处理中 3
|
||||
@ApiModelProperty(value = "状态")
|
||||
private String status;
|
||||
|
||||
//货架待命 1 、任务中 2 、人工处理中 3
|
||||
@ApiModelProperty(value = "删除时间")
|
||||
private String delete_time;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String materialFile;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String daybetween;
|
||||
@TableField(exist = false)
|
||||
private String material_name;
|
||||
@TableField(exist = false)
|
||||
private String theLocation;
|
||||
@TableField(exist = false)
|
||||
private boolean hasChildren;
|
||||
@TableField(exist = false)
|
||||
private List<SchBaseVehiclematerialgroupDeleteLog> children;
|
||||
@TableField(exist = false)
|
||||
private String material_code;
|
||||
@TableField(exist = false)
|
||||
private String material_spec;
|
||||
@TableField(exist = false)
|
||||
private String region_name;
|
||||
@TableField(exist = false)
|
||||
private String group_bind_material_status_name;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package org.nl.wms.sch.group_delete_log.service.dao.mapper;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.nl.wms.ext.fab.service.dto.SendVehicleVo;
|
||||
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
|
||||
import org.nl.wms.sch.group.service.dto.SchBaseVehiclematerialgroupQuery;
|
||||
import org.nl.wms.sch.group_delete_log.service.dao.SchBaseVehiclematerialgroupDeleteLog;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author zxm
|
||||
* @date 2026年2月25日10:59:40
|
||||
**/
|
||||
public interface SchBaseVehiclematerialgroupDeleteLogMapper extends BaseMapper<SchBaseVehiclematerialgroupDeleteLog> {
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package org.nl.wms.sch.group_delete_log.service.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class LogMaterialDto {
|
||||
private String order_code;
|
||||
private String material_code;
|
||||
private Integer material_qty;
|
||||
private String due_date;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package org.nl.wms.sch.group_delete_log.service.dto;
|
||||
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class SD01GroupLogRespondDto {
|
||||
|
||||
private String device_code;
|
||||
private String regionCode;
|
||||
private String region_Code;
|
||||
private String vehicle_code;
|
||||
List<LogMaterialDto> material;
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
package org.nl.wms.sch.group_delete_log.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.date.DateUnit;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
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;
|
||||
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||
import org.apache.pdfbox.rendering.PDFRenderer;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.database.material.service.IMdBaseMaterialService;
|
||||
import org.nl.wms.database.material.service.dao.MdBaseMaterial;
|
||||
import org.nl.wms.database.vehicle.service.IMdBaseVehicleService;
|
||||
import org.nl.wms.database.vehicle.service.dao.MdBaseVehicle;
|
||||
import org.nl.wms.ext.fab.service.dto.SendVehicleVo;
|
||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
|
||||
import org.nl.wms.sch.group.service.dao.mapper.SchBaseVehiclematerialgroupMapper;
|
||||
import org.nl.wms.sch.group.service.dto.SchBaseVehiclematerialgroupQuery;
|
||||
import org.nl.wms.sch.group_delete_log.service.ISchBaseVehiclematerialgroupDeleteLogService;
|
||||
import org.nl.wms.sch.group_delete_log.service.dao.SchBaseVehiclematerialgroupDeleteLog;
|
||||
import org.nl.wms.sch.group_delete_log.service.dao.mapper.SchBaseVehiclematerialgroupDeleteLogMapper;
|
||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch.process_flow.service.ProcessFlowService;
|
||||
import org.nl.wms.sch.task_manage.task.tasks.pcoperation.PcOperationCMTask;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.net.InetAddress;
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author lyd
|
||||
* @description 服务实现
|
||||
* @date 2023-05-16
|
||||
**/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class SchBaseVehiclematerialgroupDeleteLogServiceImpl extends ServiceImpl<SchBaseVehiclematerialgroupDeleteLogMapper, SchBaseVehiclematerialgroupDeleteLog> implements ISchBaseVehiclematerialgroupDeleteLogService {
|
||||
|
||||
}
|
||||
@@ -107,11 +107,19 @@ public interface ISchBasePointService extends IService<SchBasePoint> {
|
||||
/**
|
||||
* 根据点位编码查询
|
||||
*
|
||||
* @param start_device_code
|
||||
* @param device_code
|
||||
* @return
|
||||
*/
|
||||
SchBasePoint selectByPointCode(String device_code);
|
||||
|
||||
/**
|
||||
* 根据点位编码查询
|
||||
*
|
||||
* @param device_code
|
||||
* @return
|
||||
*/
|
||||
List<SchBasePoint> selectListByPointCode(List<String> device_code_list);
|
||||
|
||||
/**
|
||||
* 查询二次分配的虚拟站点
|
||||
*
|
||||
|
||||
@@ -317,6 +317,13 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
|
||||
.eq(SchBasePoint::getIs_used, true));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SchBasePoint> selectListByPointCode(List<String> device_code_list) {
|
||||
return pointMapper.selectList(Wrappers.lambdaQuery(SchBasePoint.class)
|
||||
.in(SchBasePoint::getPoint_code, device_code_list)
|
||||
.eq(SchBasePoint::getIs_used, true));
|
||||
}
|
||||
|
||||
@Override
|
||||
public SchBasePoint selectByReassign(String region_code, String vehicleCode) {
|
||||
synchronized (SchBasePointServiceImpl.class) {
|
||||
|
||||
@@ -0,0 +1,243 @@
|
||||
package org.nl.wms.sch.task_manage.task.tasks.handheld;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
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.config.MapOf;
|
||||
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.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 手持创建空料笼入库新,主要是新增小车
|
||||
*/
|
||||
@Component("EMPTYCAGENEWTask")
|
||||
public class EmptyCageNewTask extends AbstractTask {
|
||||
|
||||
private static final String TASK_CONFIG_CODE = "EMPTYCAGENEWTask";
|
||||
@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;
|
||||
private static final HashMap<String,Integer> IS_VEHICLE = MapOf.of("vehicles",2,"vehicle_code",1);
|
||||
private static final HashMap<String,Integer> POINT_TYPE = MapOf.of("空托盘",0,"满托盘",1);
|
||||
|
||||
@Override
|
||||
protected void create() throws BadRequestException {
|
||||
// 获取任务
|
||||
List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
|
||||
// 配置信息
|
||||
for (SchBaseTask task : tasks) {
|
||||
String vehicle_type = getVehicleType(task);
|
||||
SchBasePoint schBasePoint = null;
|
||||
switch (vehicle_type) {
|
||||
case "R01":
|
||||
schBasePoint = schBasePointService.selectStackPoint(RegionEnum.S.getRegion_code(),
|
||||
GoodsEnum.OUT_OF_STOCK.getValue(), VehicleTypeEnum.FRAME_R01.getVehicleCode(), IS_VEHICLE.get("vehicles"), POINT_TYPE.get("空托盘"));
|
||||
break;
|
||||
case "R02":
|
||||
schBasePoint = schBasePointService.selectStackPoint(RegionEnum.S.getRegion_code(),
|
||||
GoodsEnum.OUT_OF_STOCK.getValue(), VehicleTypeEnum.FRAME_R02.getVehicleCode(), IS_VEHICLE.get("vehicles"), POINT_TYPE.get("空托盘"));
|
||||
break;
|
||||
case "S04":
|
||||
schBasePoint = schBasePointService.selectStackPoint(RegionEnum.LAG.getRegion_code(),
|
||||
GoodsEnum.OUT_OF_STOCK.getValue(), VehicleTypeEnum.RACKS_S04.getVehicleCode(), IS_VEHICLE.get("vehicle_code"), POINT_TYPE.get("空托盘"));
|
||||
|
||||
if (ObjectUtil.isEmpty(schBasePoint)) {
|
||||
schBasePoint = schBasePointService.selectStackPoint(RegionEnum.S.getRegion_code(),
|
||||
GoodsEnum.OUT_OF_STOCK.getValue(), VehicleTypeEnum.RACKS_S04.getVehicleCode(), IS_VEHICLE.get("vehicle_code"), POINT_TYPE.get("空托盘"));
|
||||
}
|
||||
break;
|
||||
case "S06":
|
||||
schBasePoint = schBasePointService.selectStackPoint(RegionEnum.LAG.getRegion_code(),
|
||||
GoodsEnum.OUT_OF_STOCK.getValue(), VehicleTypeEnum.RACKS_S06.getVehicleCode(), IS_VEHICLE.get("vehicle_code"), POINT_TYPE.get("空托盘"));
|
||||
if (ObjectUtil.isEmpty(schBasePoint)) {
|
||||
schBasePoint = schBasePointService.selectStackPoint(RegionEnum.S.getRegion_code(),
|
||||
GoodsEnum.OUT_OF_STOCK.getValue(), VehicleTypeEnum.RACKS_S06.getVehicleCode(), IS_VEHICLE.get("vehicle_code"), POINT_TYPE.get("空托盘"));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (ObjectUtil.isEmpty(schBasePoint)) {
|
||||
task.setRemark("未找到所需点位!");
|
||||
taskService.updateById(task);
|
||||
// 消息通知
|
||||
noticeService.createNotice("未找到所需点位!", TASK_CONFIG_CODE + task.getTask_code(),
|
||||
NoticeTypeEnum.WARN.getCode());
|
||||
continue;
|
||||
}
|
||||
// 设置终点并修改创建成功状态
|
||||
TaskUtils.setUpdateByAcs(task);
|
||||
task.setPoint_code2(schBasePoint.getPoint_code());
|
||||
task.setVehicle_type(vehicle_type);
|
||||
task.setRemark("");
|
||||
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||
taskService.updateById(task);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取托盘类型
|
||||
* @param task 任务对象
|
||||
* @return 托盘类型
|
||||
*/
|
||||
private String getVehicleType(SchBaseTask task) {
|
||||
String vehicle_type = task.getVehicle_type();
|
||||
String vehicle_code = task.getVehicle_code();
|
||||
if (StrUtil.isNotEmpty(vehicle_code)) {
|
||||
String vehicleCode = vehicle_code;
|
||||
if(vehicle_code.contains(",")){
|
||||
String[] split = vehicle_code.split(",");
|
||||
vehicleCode = split[0];
|
||||
}
|
||||
MdBaseVehicle mdBaseVehicle = iMdBaseVehicleService.selectByVehicleCode(vehicleCode);
|
||||
vehicle_type = mdBaseVehicle.getVehicle_type();
|
||||
}
|
||||
return vehicle_type;
|
||||
}
|
||||
|
||||
@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);
|
||||
cancelPoint(taskObj.getPoint_code1());
|
||||
cancelPoint(taskObj.getPoint_code2());
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
throw new BadRequestException("该任务不存在");
|
||||
}
|
||||
this.cancelTask(taskObj, TaskFinishedTypeEnum.MANUAL_CONNECTOR);
|
||||
}
|
||||
|
||||
/**
|
||||
* 取消任务还原点位状态
|
||||
*
|
||||
* @param pointCode 点位名称
|
||||
*/
|
||||
private void cancelPoint(String pointCode) {
|
||||
SchBasePoint schBasePoint = schBasePointService.selectByPointCode(pointCode);
|
||||
if (ObjectUtil.isNotEmpty(schBasePoint)) {
|
||||
schBasePoint.setIs_lock(false);
|
||||
PointUtils.setUpdateByAcs(schBasePoint);
|
||||
schBasePointService.updateById(schBasePoint);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新任务状态
|
||||
*
|
||||
* @param taskObj
|
||||
* @param taskFinishedType
|
||||
*/
|
||||
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
||||
updateStartPointStatus(taskObj);
|
||||
updateEndPointStatus(taskObj);
|
||||
// 任务完成
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskObj.setRemark(GeneralDefinition.TASK_FINISH);
|
||||
taskObj.setFinished_type(taskFinishedType.getCode());
|
||||
TaskUtils.setUpdateByType(taskObj, taskFinishedType);
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新起点点位状态
|
||||
*
|
||||
* @param taskObj 任务对象
|
||||
*/
|
||||
private void updateStartPointStatus(SchBaseTask taskObj) {
|
||||
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));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新终点点位状态
|
||||
*
|
||||
* @param taskObj 任务对象
|
||||
*/
|
||||
private void updateEndPointStatus(SchBaseTask taskObj) {
|
||||
String point_code2 = taskObj.getPoint_code2();
|
||||
SchBasePoint schBasePoint2 = pointService.selectByPointCode(point_code2);
|
||||
if (ObjectUtil.isNotEmpty(schBasePoint2)) {
|
||||
String vehicle_type = taskObj.getVehicle_type();
|
||||
if (vehicle_type.equals(VehicleTypeEnum.FRAME_R01.getVehicleCode()) || vehicle_type.equals(VehicleTypeEnum.FRAME_R02.getVehicleCode())) {
|
||||
schBasePoint2.setVehicles(taskObj.getVehicle_code());
|
||||
schBasePoint2.setVehicle_qty(taskObj.getVehicle_qty());
|
||||
} else {
|
||||
schBasePoint2.setVehicle_code(taskObj.getVehicle_code());
|
||||
}
|
||||
schBasePoint2.setPoint_status(GoodsEnum.EMPTY_PALLETS.getValue());
|
||||
schBasePoint2.setIs_lock(false);
|
||||
PointUtils.setUpdateByAcs(schBasePoint2);
|
||||
pointService.updateById(schBasePoint2);
|
||||
}
|
||||
}
|
||||
|
||||
public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
||||
taskObj.setRemark(GeneralDefinition.TASK_CANCEL);
|
||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
taskObj.setFinished_type(taskFinishedType.getCode());
|
||||
TaskUtils.setUpdateByType(taskObj, taskFinishedType);
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
}
|
||||
@@ -57,11 +57,21 @@ public class ToStoreHouseTask extends AbstractTask {
|
||||
// 配置信息
|
||||
for (SchBaseTask task : tasks) {
|
||||
SchBasePoint schBasePoint = null;
|
||||
|
||||
//这个修改 优先拿在满拖库的
|
||||
if (task.getVehicle_type().equals(VehicleTypeEnum.FRAME_R02.getVehicleCode()) || task.getVehicle_type().equals(VehicleTypeEnum.FRAME_R01.getVehicleCode())) {
|
||||
schBasePoint = schBasePointService.selectByEmptyCage(RegionEnum.DDLK.getRegion_code(),
|
||||
schBasePoint = schBasePointService.selectByEmptyCage(RegionEnum.S.getRegion_code(),
|
||||
task.getVehicle_type(), GoodsEnum.EMPTY_PALLETS.getValue(), true, task);
|
||||
if (ObjectUtil.isEmpty(schBasePoint)) {
|
||||
schBasePoint = schBasePointService.selectByEmptyCage(RegionEnum.DDLK.getRegion_code(),
|
||||
task.getVehicle_type(), GoodsEnum.EMPTY_PALLETS.getValue(), true, task);
|
||||
}
|
||||
} else if (task.getVehicle_type().equals(VehicleTypeEnum.RACKS_S04.getVehicleCode()) || task.getVehicle_type().equals(VehicleTypeEnum.RACKS_S06.getVehicleCode())) {
|
||||
schBasePoint = schBasePointService.selectByEmptyCage(RegionEnum.LAG.getRegion_code(),
|
||||
task.getVehicle_type(), GoodsEnum.EMPTY_PALLETS.getValue(), true, task);
|
||||
if (ObjectUtil.isEmpty(schBasePoint)) {
|
||||
schBasePoint = schBasePointService.selectByEmptyCage(RegionEnum.S.getRegion_code(),
|
||||
task.getVehicle_type(), GoodsEnum.EMPTY_PALLETS.getValue(), true, task);
|
||||
}
|
||||
} else {
|
||||
schBasePoint = schBasePointService.selectByVehicleQty(task.getVehicle_type());
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ spring:
|
||||
datasource:
|
||||
mysql:
|
||||
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
|
||||
url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.251}:${DB_PORT:3306}/${DB_NAME:ximenzi_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
|
||||
url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:ximenzi_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
|
||||
username: ${DB_USER:root}
|
||||
password: ${DB_PWD:123456}
|
||||
type: com.alibaba.druid.pool.DruidDataSource
|
||||
@@ -42,11 +42,10 @@ spring:
|
||||
|
||||
redis:
|
||||
#数据库索引
|
||||
database: ${REDIS_DB:2}
|
||||
database: ${REDIS_DB:1}
|
||||
# host: ${REDIS_HOST:10.44.101.112}
|
||||
host: ${REDIS_HOST:127.0.0.1}
|
||||
port: ${REDIS_PORT:6379}
|
||||
password: ${REDIS_PWD:}
|
||||
|
||||
# 登录相关配置
|
||||
login:
|
||||
@@ -141,16 +140,14 @@ sa-token:
|
||||
token-session-check-login: false
|
||||
alone-redis:
|
||||
# Redis数据库索引(默认为0)
|
||||
database: 2
|
||||
database: 1
|
||||
# Redis服务器地址
|
||||
host: 127.0.0.1
|
||||
# Redis服务器连接端口
|
||||
port: 6379
|
||||
# Redis服务器连接密码(默认为空)
|
||||
password:
|
||||
# 连接超时时间
|
||||
timeout: 10s
|
||||
lucene:
|
||||
index:
|
||||
path: E:\lms\lucene\index
|
||||
path: D:\lms\lucene\index
|
||||
|
||||
|
||||
@@ -112,6 +112,6 @@ mybatis-plus:
|
||||
id-type: INPUT
|
||||
lucene:
|
||||
index:
|
||||
path: E:\lms\lucene\index
|
||||
path: D:\lms\lucene\index
|
||||
tlog:
|
||||
enable-invoke-time-print: true
|
||||
|
||||
Reference in New Issue
Block a user