Browse Source

fix: 任务工厂3.0改造与工单for update的使用

master
李永德 1 year ago
parent
commit
9b251ed604
  1. 2
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LogMessageConstant.java
  2. 121
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/autotask/AutoIssueWorkOrder.java
  3. 2
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java
  4. 14
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/IPdmBdWorkorderService.java
  5. 9
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/mapper/PdmBdWorkorderMapper.java
  6. 8
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/mapper/PdmBdWorkorderMapper.xml
  7. 25
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/impl/PdmBdWorkorderServiceImpl.java
  8. 7
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/ISchBaseTaskService.java
  9. 6
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/dao/mapper/SchBaseTaskMapper.java
  10. 25
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/dao/mapper/SchBaseTaskMapper.xml
  11. 6
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/impl/SchBaseTaskServiceImpl.java
  12. 11
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java
  13. 25
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/TaskFactory.java
  14. 2
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/CTQKTask.java
  15. 2
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/DTSKTask.java
  16. 2
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJMKTask.java
  17. 5
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQKTask.java
  18. 8
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQLTask.java
  19. 2
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQZRKTask.java
  20. 2
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJRKTask.java
  21. 2
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSKTask.java
  22. 2
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSLTask.java
  23. 2
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNMLTask.java
  24. 2
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/CYZCTask.java
  25. 2
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/GZYQLTask.java
  26. 2
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZQKTask.java
  27. 2
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSKTask.java
  28. 2
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSLTask.java

2
lms/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/LogMessageConstant.java

@ -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";
}

121
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/autotask/AutoIssueWorkOrder.java

@ -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);
}
}

2
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java

@ -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, "任务状态反馈成功!");

14
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/IPdmBdWorkorderService.java

@ -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);
}

9
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/mapper/PdmBdWorkorderMapper.java

@ -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);
}

8
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/mapper/PdmBdWorkorderMapper.xml

@ -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>

25
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/impl/PdmBdWorkorderServiceImpl.java

@ -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);
}
}

7
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/ISchBaseTaskService.java

@ -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);
}

6
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/dao/mapper/SchBaseTaskMapper.java

@ -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);
}

25
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/dao/mapper/SchBaseTaskMapper.xml

@ -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>

6
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task/service/impl/SchBaseTaskServiceImpl.java

@ -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
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java

@ -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();
}
}

25
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/TaskFactory.java

@ -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);
}
}

2
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/CTQKTask.java

@ -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";

2
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/DTSKTask.java

@ -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";

2
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJMKTask.java

@ -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";

5
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQKTask.java

@ -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(); // 获取终点

8
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQLTask.java

@ -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());

2
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQZRKTask.java

@ -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";

2
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJRKTask.java

@ -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";

2
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSKTask.java

@ -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";

2
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSLTask.java

@ -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";

2
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNMLTask.java

@ -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";

2
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/CYZCTask.java

@ -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";

2
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/GZYQLTask.java

@ -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";

2
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZQKTask.java

@ -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";

2
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSKTask.java

@ -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";

2
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSLTask.java

@ -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";

Loading…
Cancel
Save