fix: 任务工厂3.0改造与工单for update的使用
This commit is contained in:
@@ -41,6 +41,6 @@ public class LogMessageConstant {
|
||||
/** 背景颜色:黄色 */
|
||||
public final static String BACKGROUND_YELLOW = "\u001B[43m";
|
||||
/** 索引路径 */
|
||||
public final static String INDEX_DIR = "E:\\lucene\\index";
|
||||
public final static String INDEX_DIR = "D:\\lucene\\index";
|
||||
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@ import org.redisson.api.RedissonClient;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.annotation.Order;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -40,88 +41,50 @@ public class AutoIssueWorkOrder {
|
||||
private ISysNoticeService noticeService;
|
||||
@SneakyThrows
|
||||
public void run() {
|
||||
// 获取每台设备的第一条工单
|
||||
// 获取压制每台设备的第一条工单
|
||||
List<PdmBdWorkorder> workorderList = workorderService.getNotIssueOrder();
|
||||
// 查找该设备未生产的工单去下发
|
||||
workorderList.forEach(s -> {
|
||||
// 判断是否有工单
|
||||
List<PdmBdWorkorder> lists = workorderService.getTheDayProducedWorkOrderByDevice(s.getPoint_code());
|
||||
if (lists.size() > 0) {
|
||||
return;
|
||||
}
|
||||
// 已生产就退出
|
||||
if (s.getWorkorder_status().equals(WorkOrderStatusEnum.PRODUCING.getCode())
|
||||
|| s.getWorkorder_code().equals(WorkOrderStatusEnum.ISSUED.getCode())) {
|
||||
return;
|
||||
}
|
||||
AcsWorkOrderVo acsWorkOrderVo = workorderService.toAcsWorkOrderById(s.getWorkorder_id());
|
||||
// 获取一个下发
|
||||
List<AcsWorkOrderVo> list = new ArrayList<>();
|
||||
list.add(acsWorkOrderVo);
|
||||
AcsResponse resultForAcs;
|
||||
try {
|
||||
resultForAcs = wmsToAcsService.order(list);
|
||||
log.info("自动下发工单:{}", list);
|
||||
} catch (Exception e) {
|
||||
log.error("工单下发异常:" + e.getMessage());
|
||||
// 通知
|
||||
noticeService.createNotice("工单下发失败: " + e.getMessage(), "工单下发失败: "
|
||||
+ acsWorkOrderVo.getWorkorder_code(), NoticeTypeEnum.EXCEPTION.getCode());
|
||||
return;
|
||||
}
|
||||
if (resultForAcs.getCode() != HttpStatus.HTTP_OK) {
|
||||
// 不成功
|
||||
noticeService.createNotice(resultForAcs.getMessage(), "工单下发失败: " + acsWorkOrderVo.getWorkorder_code(),
|
||||
NoticeTypeEnum.EXCEPTION.getCode());
|
||||
return;
|
||||
}
|
||||
// 修改工单数据
|
||||
PdmBdWorkorder pdmBdWorkorder = workorderService.getByCode(acsWorkOrderVo.getWorkorder_code());
|
||||
pdmBdWorkorder.setWorkorder_status(WorkOrderStatusEnum.ISSUED.getCode());
|
||||
TaskUtils.setWorkOrderUpdateByAcs(pdmBdWorkorder);
|
||||
workorderService.updateById(pdmBdWorkorder);
|
||||
});
|
||||
|
||||
// mark: 使得执行一个工单完成后就提交
|
||||
workorderList.forEach(this::toIssueWorkOrder);
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
public void run_backup() {
|
||||
// todo: 获取每台设备的第一条工单
|
||||
// 获取所有设备号
|
||||
List<String> deviceCodes = workorderService.getTheDayUnProducedDevice();
|
||||
// 查找该设备未生产的工单去下发
|
||||
deviceCodes.forEach(s -> {
|
||||
// 判断是否有工单
|
||||
List<PdmBdWorkorder> lists = workorderService.getTheDayProducedWorkOrderByDevice(s);
|
||||
if (lists.size() > 0) return;
|
||||
List<AcsWorkOrderVo> acsWorkOrderVoList = workorderService.getAcsWorkOrderVos(s);
|
||||
if (acsWorkOrderVoList.size() == 0) return;
|
||||
AcsWorkOrderVo acsWorkOrderVo = acsWorkOrderVoList.get(0);
|
||||
// 获取一个下发
|
||||
List<AcsWorkOrderVo> list = new CopyOnWriteArrayList<>();
|
||||
list.add(acsWorkOrderVo);
|
||||
AcsResponse resultForAcs;
|
||||
try {
|
||||
resultForAcs = wmsToAcsService.order(list);
|
||||
} catch (Exception e) {
|
||||
log.error("工单下发异常:" + e.getMessage());
|
||||
// 通知
|
||||
noticeService.createNotice("工单下发失败: " + e.getMessage(), "工单下发失败: "
|
||||
+ acsWorkOrderVo.getWorkorder_code(), NoticeTypeEnum.EXCEPTION.getCode());
|
||||
return;
|
||||
}
|
||||
if (resultForAcs.getCode() != HttpStatus.HTTP_OK) {
|
||||
// 不成功
|
||||
noticeService.createNotice(resultForAcs.getMessage(), "工单下发失败: " + acsWorkOrderVo.getWorkorder_code(),
|
||||
NoticeTypeEnum.EXCEPTION.getCode());
|
||||
return;
|
||||
}
|
||||
// 修改工单数据
|
||||
PdmBdWorkorder pdmBdWorkorder = workorderService.getByCode(acsWorkOrderVo.getWorkorder_code());
|
||||
pdmBdWorkorder.setWorkorder_status(WorkOrderStatusEnum.ISSUED.getCode());
|
||||
TaskUtils.setWorkOrderUpdateByAcs(pdmBdWorkorder);
|
||||
workorderService.updateById(pdmBdWorkorder);
|
||||
});
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void toIssueWorkOrder(PdmBdWorkorder s) {
|
||||
// 判断是否有工单
|
||||
List<PdmBdWorkorder> lists = workorderService.getTheDayProducedWorkOrderByDevice(s.getPoint_code());
|
||||
if (lists.size() > 0) {
|
||||
return;
|
||||
}
|
||||
// hint: 已生产就退出, 实际上已经不会有这种情况
|
||||
if (s.getWorkorder_status().equals(WorkOrderStatusEnum.PRODUCING.getCode())
|
||||
|| s.getWorkorder_code().equals(WorkOrderStatusEnum.ISSUED.getCode())) {
|
||||
return;
|
||||
}
|
||||
AcsWorkOrderVo acsWorkOrderVo = workorderService.toAcsWorkOrderById(s.getWorkorder_id());
|
||||
// 获取一个下发
|
||||
List<AcsWorkOrderVo> list = new ArrayList<>();
|
||||
list.add(acsWorkOrderVo);
|
||||
PdmBdWorkorder pdmBdWorkorder = workorderService.selectByIdLock(s.getWorkorder_id());
|
||||
AcsResponse resultForAcs;
|
||||
try {
|
||||
resultForAcs = wmsToAcsService.order(list);
|
||||
log.info("自动下发工单:{}", list);
|
||||
} catch (Exception e) {
|
||||
log.error("工单下发异常:" + e.getMessage());
|
||||
// 通知
|
||||
noticeService.createNotice("工单下发失败: " + e.getMessage(), "工单下发失败: "
|
||||
+ acsWorkOrderVo.getWorkorder_code(), NoticeTypeEnum.EXCEPTION.getCode());
|
||||
return;
|
||||
}
|
||||
if (resultForAcs.getCode() != HttpStatus.HTTP_OK) {
|
||||
// 不成功
|
||||
noticeService.createNotice(resultForAcs.getMessage(), "工单下发失败: " + acsWorkOrderVo.getWorkorder_code(),
|
||||
NoticeTypeEnum.EXCEPTION.getCode());
|
||||
return;
|
||||
}
|
||||
// 修改工单数据
|
||||
pdmBdWorkorder.setWorkorder_status(WorkOrderStatusEnum.ISSUED.getCode());
|
||||
TaskUtils.setWorkOrderUpdateByAcs(pdmBdWorkorder);
|
||||
workorderService.updateById(pdmBdWorkorder);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -862,7 +862,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
try {
|
||||
abstractTask.updateTaskStatus(taskCode, status);
|
||||
} catch (Exception e) {
|
||||
log.error("任务状态更新失败: {}", message);
|
||||
log.error("任务状态更新失败: {}", e.getMessage());
|
||||
return BaseResponse.responseError(requestNo, "任务:[" + taskCode + "]状态更新失败," + message);
|
||||
}
|
||||
return BaseResponse.responseOk(requestNo, "任务状态反馈成功!");
|
||||
|
||||
@@ -133,4 +133,18 @@ public interface IPdmBdWorkorderService extends IService<PdmBdWorkorder> {
|
||||
* @return
|
||||
*/
|
||||
List<PdmBdWorkorder> getNotIssueOrder();
|
||||
|
||||
/**
|
||||
* 判断对应分拣设备是否需要呼叫满料
|
||||
* @param deviceCode
|
||||
* @return
|
||||
*/
|
||||
boolean isEnoughCallMaterial(String deviceCode);
|
||||
|
||||
/**
|
||||
* 悲观锁查找工单数据
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
PdmBdWorkorder selectByIdLock(String id);
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ public interface PdmBdWorkorderMapper extends BaseMapper<PdmBdWorkorder> {
|
||||
|
||||
/**
|
||||
* 获取设备未生产的工单
|
||||
* @param s
|
||||
* @param device
|
||||
* @return
|
||||
*/
|
||||
List<AcsWorkOrderVo> getAcsWorkOrderVos(String device);
|
||||
@@ -57,4 +57,11 @@ public interface PdmBdWorkorderMapper extends BaseMapper<PdmBdWorkorder> {
|
||||
List<PdmBdWorkorder> getNeedCallMaterial();
|
||||
|
||||
List<PdmBdWorkorder> getNotIssueOrder();
|
||||
|
||||
/**
|
||||
* 悲观锁查找工单数据
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
PdmBdWorkorder selectByIdLock(String id);
|
||||
}
|
||||
|
||||
@@ -154,4 +154,12 @@
|
||||
) AS ranked
|
||||
WHERE row_num = 1
|
||||
</select>
|
||||
<select id="selectByIdLock" resultType="org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder">
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
`pdm_bd_workorder`
|
||||
WHERE workorder_id = #{id}
|
||||
FOR UPDATE
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -40,6 +40,7 @@ import org.nl.wms.util.CommonUtils;
|
||||
import org.nl.wms.util.TaskUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
@@ -176,8 +177,12 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl<PdmBdWorkorderMapper,
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void submits(PdmBdWorkorder entity) {
|
||||
PdmBdWorkorder pdmBdWorkorder = pdmBdWorkorderMapper.selectById(entity.getWorkorder_id());
|
||||
if (ObjectUtil.isEmpty(entity.getWorkorder_id())) {
|
||||
throw new BadRequestException("工单编码不能为空");
|
||||
}
|
||||
PdmBdWorkorder pdmBdWorkorder = pdmBdWorkorderMapper.selectByIdLock(entity.getWorkorder_id());
|
||||
if (ObjectUtil.isEmpty(pdmBdWorkorder)) {
|
||||
throw new BadRequestException("工单编码[" + entity.getWorkorder_code() + "]不存在");
|
||||
}
|
||||
@@ -221,6 +226,7 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl<PdmBdWorkorderMapper,
|
||||
throw new BadRequestException("工单下发失败");
|
||||
}
|
||||
// 修改工单数据
|
||||
// hint: 查找工单是否为生产中,lms接收反馈的时候可能是在人工排产确认之前, 此处之前已经用悲观锁锁住,故不需要校验
|
||||
pdmBdWorkorder.setWorkorder_status(WorkOrderStatusEnum.ISSUED.getCode());
|
||||
TaskUtils.setWorkOrderUpdateByPC(pdmBdWorkorder);
|
||||
pdmBdWorkorderMapper.updateById(pdmBdWorkorder);
|
||||
@@ -342,4 +348,21 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl<PdmBdWorkorderMapper,
|
||||
public List<PdmBdWorkorder> getNotIssueOrder() {
|
||||
return pdmBdWorkorderMapper.getNotIssueOrder();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnoughCallMaterial(String deviceCode) {
|
||||
// 计算搬运中的任务
|
||||
// hint: 对应当前位置的问题,需要校验的是:货架位置到当前对接位的设备
|
||||
BigDecimal sum = taskService.getCallMaterialCarryingByDevice(deviceCode);
|
||||
PdmBdWorkorder workorder = this.getDeviceDockingProductionTask(deviceCode);
|
||||
BigDecimal realWeight = workorder.getReal_weight().add(sum);
|
||||
BigDecimal planWeight = workorder.getPlan_weight();
|
||||
// 还可以叫空盘
|
||||
return realWeight.compareTo(planWeight) < 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PdmBdWorkorder selectByIdLock(String id) {
|
||||
return pdmBdWorkorderMapper.selectByIdLock(id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import org.nl.wms.ext.acs.service.dto.to.BaseRequest;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
@@ -109,4 +110,10 @@ public interface ISchBaseTaskService extends IService<SchBaseTask> {
|
||||
* @return
|
||||
*/
|
||||
int getEmptyVehicleCarryingByDevice(String deviceCode);
|
||||
/**
|
||||
* 返回当前设备搬运满料的任务数量
|
||||
* @param deviceCode
|
||||
* @return
|
||||
*/
|
||||
BigDecimal getCallMaterialCarryingByDevice(String deviceCode);
|
||||
}
|
||||
|
||||
@@ -3,6 +3,8 @@ package org.nl.wms.sch.task.service.dao.mapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* @author lyd
|
||||
* @date 2023-05-15
|
||||
@@ -10,4 +12,8 @@ import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
public interface SchBaseTaskMapper extends BaseMapper<SchBaseTask> {
|
||||
|
||||
int getEmptyVehicleCarryingByDevice(String deviceCode);
|
||||
|
||||
BigDecimal getCallMaterialCarryingByDevice(String deviceCode);
|
||||
|
||||
int getCarryingByDevice(String deviceCode, String taskConfig);
|
||||
}
|
||||
|
||||
@@ -14,4 +14,29 @@
|
||||
AND t.task_status IN ('1', '2', '3', '4')
|
||||
AND p1.parent_point_code = p2.parent_point_code
|
||||
</select>
|
||||
<select id="getCarryingByDevice" resultType="java.lang.Integer">
|
||||
SELECT
|
||||
COUNT(*)
|
||||
FROM
|
||||
`sch_base_task` t
|
||||
LEFT JOIN sch_base_point p1 ON p1.point_code = t.point_code4
|
||||
LEFT JOIN sch_base_point p2 ON p2.point_code = #{deviceCode}
|
||||
WHERE t.config_code = #{taskConfig}
|
||||
AND t.point_code4 IS NOT NULL
|
||||
AND t.task_status IN ('1', '2', '3', '4')
|
||||
AND p1.parent_point_code = p2.parent_point_code
|
||||
</select>
|
||||
<select id="getCallMaterialCarryingByDevice" resultType="java.math.BigDecimal">
|
||||
SELECT
|
||||
COALESCE(SUM(vg.material_qty), 0) AS total_material_qty
|
||||
FROM
|
||||
`sch_base_task` t
|
||||
LEFT JOIN sch_base_point p1 ON p1.point_code = t.point_code2
|
||||
LEFT JOIN sch_base_point p2 ON p2.point_code = #{deviceCode}
|
||||
LEFT JOIN sch_base_vehiclematerialgroup vg ON vg.group_id = t.group_id
|
||||
WHERE t.config_code = 'FJQLTask'
|
||||
AND t.point_code2 IS NOT NULL
|
||||
AND t.task_status IN ('1', '2', '3', '4')
|
||||
AND p1.parent_point_code = p2.parent_point_code
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -25,6 +25,7 @@ import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -248,4 +249,9 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
return schBaseTaskMapper.getEmptyVehicleCarryingByDevice(deviceCode);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BigDecimal getCallMaterialCarryingByDevice(String deviceCode) {
|
||||
return schBaseTaskMapper.getCallMaterialCarryingByDevice(deviceCode);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
||||
import org.nl.wms.ext.acs.service.dto.to.wms.AcsResponse;
|
||||
import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService;
|
||||
@@ -27,6 +28,7 @@ import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||
import org.nl.wms.util.TaskUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -244,6 +246,7 @@ public abstract class AbstractTask {
|
||||
String requestNo = param.getString("requestNo");
|
||||
String vehicleType = param.getString("vehicle_type");
|
||||
String vehicleCode = TaskUtils.defaultVehicleCode(param.getString("vehicle_code"));
|
||||
AbstractTask bean = SpringContextHolder.getBean(this.getClass());
|
||||
// 1、校验数据
|
||||
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
|
||||
.eq(SchBaseTaskconfig::getConfig_code, config_code));
|
||||
@@ -293,17 +296,17 @@ public abstract class AbstractTask {
|
||||
task.setTask_status(TaskStatus.APPLY.getCode());
|
||||
task.setWorkshop_code(taskConfig.getWorkshop_code()); // 车间编码
|
||||
// 设置起/终点
|
||||
this.setTaskPoint(taskConfig, task, apply_point_code);
|
||||
bean.setTaskPoint(taskConfig, task, apply_point_code);
|
||||
task.setRequest_param(JSONObject.toJSONString(param));
|
||||
TaskUtils.setCreateByAcsOrPda(task, param); // 设置创建人信息
|
||||
// 3、判断是否直接找点下发
|
||||
if (taskConfig.getIs_immediate_create()) { // 立即创建吧组盘放到具体位置,免得重复创建
|
||||
this.createCompletion(task);
|
||||
bean.createCompletion(task);
|
||||
} else { // 不需要立即创建,需要立马组盘
|
||||
// 设置组盘 - 需要的话由子类自行实现
|
||||
task.setGroup_id(this.setGroupPlate(param));
|
||||
task.setGroup_id(bean.setGroupPlate(param));
|
||||
taskService.save(task); // 创建一条单点任务。
|
||||
this.create();
|
||||
bean.create();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
package org.nl.wms.sch.task_manage.task;
|
||||
|
||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
import org.springframework.beans.BeansException;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.config.BeanPostProcessor;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -10,33 +12,32 @@ import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author ldjun
|
||||
* @version 2.0
|
||||
* @version 3.0
|
||||
* @date 2023年05月16日 16:42
|
||||
* @desc 采用获取注解来标识任务类型,并通过扫描和反射的方式来获取任务实例
|
||||
* @desc 2.0 采用获取注解来标识任务类型,并通过扫描和反射的方式来获取任务实例
|
||||
* 3.0 采用获取所有bean对象判断是否为AbstractTask
|
||||
*/
|
||||
@Component
|
||||
public class TaskFactory {
|
||||
public class TaskFactory implements BeanPostProcessor {
|
||||
private final Map<String, AbstractTask> taskMap;
|
||||
|
||||
@Autowired
|
||||
public TaskFactory(ApplicationContext applicationContext) {
|
||||
public TaskFactory() {
|
||||
taskMap = new HashMap<>();
|
||||
initializeTasks(applicationContext);
|
||||
}
|
||||
|
||||
private void initializeTasks(ApplicationContext applicationContext) {
|
||||
Map<String, Object> taskBeans = applicationContext.getBeansWithAnnotation(TaskType.class);
|
||||
for (Object taskBean : taskBeans.values()) {
|
||||
TaskType taskTypeAnnotation = taskBean.getClass().getAnnotation(TaskType.class);
|
||||
String taskType = taskTypeAnnotation.value();
|
||||
taskMap.put(taskType.toUpperCase(), (AbstractTask) taskBean);
|
||||
@Override
|
||||
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
|
||||
if (bean instanceof AbstractTask) {
|
||||
taskMap.put(beanName, (AbstractTask) bean);
|
||||
}
|
||||
return bean;
|
||||
}
|
||||
|
||||
public AbstractTask getTask(String taskType) {
|
||||
if (taskType == null) {
|
||||
return null;
|
||||
}
|
||||
return taskMap.get(taskType.toUpperCase());
|
||||
return taskMap.get(taskType);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ import java.util.stream.Collectors;
|
||||
* @Description: 拆盘机呼叫空托
|
||||
* @Date: 2023/6/21
|
||||
*/
|
||||
@Component
|
||||
@Component(value = "DTKQKTask")
|
||||
@TaskType("DTKQKTask")
|
||||
public class CTQKTask extends AbstractTask {
|
||||
private static String TASK_CONFIG_CODE = "DTKQKTask";
|
||||
|
||||
@@ -33,7 +33,7 @@ import java.util.stream.Collectors;
|
||||
* @Description: 叠托送空盘任务:-> 货架
|
||||
* @Date: 2023/6/21
|
||||
*/
|
||||
@Component
|
||||
@Component(value = "DTKSKTask")
|
||||
@TaskType("DTKSKTask")
|
||||
public class DTSKTask extends AbstractTask {
|
||||
private static String TASK_CONFIG_CODE = "DTKSKTask";
|
||||
|
||||
@@ -47,7 +47,7 @@ import java.util.stream.Collectors;
|
||||
* @Description: 分拣满空任务 - 4点
|
||||
* @Date: 2023/6/21
|
||||
*/
|
||||
@Component
|
||||
@Component(value = "FJMLTask")
|
||||
@TaskType("FJMLTask")
|
||||
public class FJMKTask extends AbstractTask {
|
||||
private static String TASK_CONFIG_CODE = "FJMLTask";
|
||||
|
||||
@@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.system.service.notice.ISysNoticeService;
|
||||
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
||||
@@ -39,7 +40,8 @@ import java.util.stream.Collectors;
|
||||
* @Description: 分拣呼叫空木托盘任务 - 2点
|
||||
* @Date: 2023/6/21
|
||||
*/
|
||||
@Component
|
||||
@Component(value = "FJQKTask")
|
||||
@Slf4j
|
||||
@TaskType("FJQKTask")
|
||||
public class FJQKTask extends AbstractTask {
|
||||
private static String TASK_CONFIG_CODE = "FJQKTask";
|
||||
@@ -231,6 +233,7 @@ public class FJQKTask extends AbstractTask {
|
||||
JSONObject jsonObject = JSONObject.parseObject(requestParam);
|
||||
String workorderCode = jsonObject.getString("workorder_code");
|
||||
PdmBdWorkorder workorder = workorderService.getByCode(workorderCode);
|
||||
log.debug("分拣呼叫空盘寻找的工单数据:{}", workorder);
|
||||
String vehicleCode = taskObj.getVehicle_code();
|
||||
String vehicleType = taskObj.getVehicle_type();
|
||||
String startPoint = taskObj.getPoint_code1(); // 获取终点
|
||||
|
||||
@@ -43,7 +43,7 @@ import java.util.stream.Collectors;
|
||||
* @Description: 分拣缺料任务
|
||||
* @Date: 2023/6/20
|
||||
*/
|
||||
@Component
|
||||
@Component(value = "FJQLTask")
|
||||
@TaskType("FJQLTask")
|
||||
public class FJQLTask extends AbstractTask {
|
||||
private static String TASK_CONFIG_CODE = "FJQLTask";
|
||||
@@ -121,10 +121,10 @@ public class FJQLTask extends AbstractTask {
|
||||
// 找起点
|
||||
String requestParam = task.getRequest_param();
|
||||
JSONObject extGroupData = JSONObject.parseObject(requestParam);
|
||||
// 判断是否满足工单要求
|
||||
PdmBdWorkorder workorderCode = workorderService.getByCode(extGroupData.getString("workorder_code"));
|
||||
// hint: 需要加上搬运过程中的数量
|
||||
boolean enoughCallMaterial = workorderService.isEnoughCallMaterial(task.getPoint_code2());
|
||||
// 对于分拣,用于分拣钢托盘砖块数
|
||||
if (workorderCode.getReal_weight().compareTo(workorderCode.getPlan_weight()) >= 0) {
|
||||
if (!enoughCallMaterial) {
|
||||
// 消息通知
|
||||
noticeService.createNotice("钢托盘砖块数已达到所需数量!", TASK_CONFIG_CODE + task.getPoint_code2(),
|
||||
NoticeTypeEnum.WARN.getCode());
|
||||
|
||||
@@ -37,7 +37,7 @@ import java.util.stream.Collectors;
|
||||
* @Description: rgv - 分拣强制入库任务 - 2点
|
||||
* @Date: 2023/6/21
|
||||
*/
|
||||
@Component
|
||||
@Component(value = "FJQZRKTask")
|
||||
@TaskType("FJQZRKTask")
|
||||
public class FJQZRKTask extends AbstractTask {
|
||||
private static String TASK_CONFIG_CODE = "FJQZRKTask";
|
||||
|
||||
@@ -40,7 +40,7 @@ import java.util.stream.Collectors;
|
||||
* @Description: rgv - 分拣强制入库任务 - 2点 改:不需要强制入库,改为人工分拣入库的方法
|
||||
* @Date: 2023/6/21
|
||||
*/
|
||||
@Component
|
||||
@Component(value = "RGFJRKTask")
|
||||
@TaskType("RGFJRKTask")
|
||||
public class FJRKTask extends AbstractTask {
|
||||
private static String TASK_CONFIG_CODE = "RGFJRKTask";
|
||||
|
||||
@@ -39,7 +39,7 @@ import java.util.stream.Collectors;
|
||||
* @Description: 分拣送空托 -> 叠托位
|
||||
* @Date: 2023/6/20
|
||||
*/
|
||||
@Component
|
||||
@Component(value = "FJSKTask")
|
||||
@TaskType("FJSKTask")
|
||||
public class FJSKTask extends AbstractTask {
|
||||
private static String TASK_CONFIG_CODE = "FJSKTask";
|
||||
|
||||
@@ -38,7 +38,7 @@ import java.util.stream.Collectors;
|
||||
* @Description: 分拣回收剩料
|
||||
* @Date: 2023/7/20
|
||||
*/
|
||||
@Component
|
||||
@Component(value = "FJSLHSTask")
|
||||
@TaskType("FJSLHSTask")
|
||||
public class FJSLTask extends AbstractTask {
|
||||
private static String TASK_CONFIG_CODE = "FJSLHSTask";
|
||||
|
||||
@@ -47,7 +47,7 @@ import java.util.stream.Collectors;
|
||||
* @desc 混碾满料任务: 混碾机 -> 困料输送线
|
||||
* 混碾没有工单,也可能获取不到压机工单(统一用获取不到压机工单,全部由要料记录表)
|
||||
*/
|
||||
@Component
|
||||
@Component(value = "HLMLTask")
|
||||
@TaskType("HLMLTask")
|
||||
public class HNMLTask extends AbstractTask {
|
||||
private static String TASK_CONFIG_CODE = "HLMLTask";
|
||||
|
||||
@@ -42,7 +42,7 @@ import java.util.stream.Collectors;
|
||||
* @Date: 2023/6/20
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@Component(value = "GZYMLTask")
|
||||
@TaskType("GZYMLTask")
|
||||
public class CYZCTask extends AbstractTask {
|
||||
private static String TASK_CONFIG_CODE = "GZYMLTask";
|
||||
|
||||
@@ -37,7 +37,7 @@ import java.util.stream.Collectors;
|
||||
* @Date: 2023/7/20
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@Component(value = "GZYQLTask")
|
||||
@TaskType("GZYQLTask")
|
||||
public class GZYQLTask extends AbstractTask {
|
||||
private static String TASK_CONFIG_CODE = "GZYQLTask";
|
||||
|
||||
@@ -35,7 +35,7 @@ import java.util.stream.Collectors;
|
||||
* @Date: 2023/6/16
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@Component(value = "YZQKTask")
|
||||
@TaskType("YZQKTask")
|
||||
public class YZQKTask extends AbstractTask {
|
||||
private static String TASK_CONFIG_CODE = "YZQKTask";
|
||||
|
||||
@@ -38,7 +38,7 @@ import java.util.stream.Collectors;
|
||||
* @Date: 2023/5/25
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@Component(value = "LZKLXSKTask")
|
||||
@TaskType("LZKLXSKTask")
|
||||
public class YZSKTask extends AbstractTask {
|
||||
private static String TASK_CONFIG_CODE = "LZKLXSKTask";
|
||||
|
||||
@@ -47,7 +47,7 @@ import java.util.stream.Collectors;
|
||||
* @Date: 2023/6/19
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@Component(value = "YZMLTask")
|
||||
@TaskType("YZMLTask")
|
||||
public class YZSLTask extends AbstractTask {
|
||||
private static String TASK_CONFIG_CODE = "YZMLTask";
|
||||
|
||||
Reference in New Issue
Block a user