no message

main
HUOJIN\92525 2025-11-21 18:14:04 +08:00
parent da421426d0
commit 6d64ca5662
9 changed files with 24 additions and 40 deletions

View File

@ -2,6 +2,7 @@ package org.jeecg.config.mybatis;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.parser.JsqlParserGlobal;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler; import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
import com.baomidou.mybatisplus.extension.plugins.inner.DynamicTableNameInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.DynamicTableNameInnerInterceptor;
@ -13,6 +14,7 @@ import lombok.extern.slf4j.Slf4j;
import me.zhyd.oauth.log.Log; import me.zhyd.oauth.log.Log;
import net.sf.jsqlparser.expression.Expression; import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.expression.LongValue; import net.sf.jsqlparser.expression.LongValue;
import net.sf.jsqlparser.parser.CCJSqlParserUtil;
import org.jeecg.common.config.TenantContext; import org.jeecg.common.config.TenantContext;
import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.constant.TenantConstant; import org.jeecg.common.constant.TenantConstant;
@ -159,6 +161,9 @@ public class MybatisPlusSaasConfig {
private DynamicTableNameInnerInterceptor dynamicTableNameInnerInterceptor() { private DynamicTableNameInnerInterceptor dynamicTableNameInnerInterceptor() {
DynamicTableNameInnerInterceptor dynamicTableNameInnerInterceptor = new DynamicTableNameInnerInterceptor(); DynamicTableNameInnerInterceptor dynamicTableNameInnerInterceptor = new DynamicTableNameInnerInterceptor();
dynamicTableNameInnerInterceptor.setTableNameHandler((sql, tableName) -> { dynamicTableNameInnerInterceptor.setTableNameHandler((sql, tableName) -> {
/* if (sql.contains("FOR UPDATE")) {
return tableName;
}*/
//获取需要动态解析的表名 //获取需要动态解析的表名
String dynamicTableName = ThreadLocalDataHelper.get(CommonConstant.DYNAMIC_TABLE_NAME); String dynamicTableName = ThreadLocalDataHelper.get(CommonConstant.DYNAMIC_TABLE_NAME);
//当dynamicTableName不为空时才走动态表名处理逻辑,否则返回原始表名 //当dynamicTableName不为空时才走动态表名处理逻辑,否则返回原始表名

View File

@ -1,47 +1,20 @@
package org.cpte.modules.agvTask.controller; package org.cpte.modules.agvTask.controller;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import org.cpte.modules.agvTask.mapper.AgvTaskMapper;
import org.cpte.modules.constant.enums.AgvStatusEnum;
import org.cpte.modules.constant.enums.AgvVendorEnum;
import org.cpte.modules.hikAgv.service.IHikAgvService;
import org.cpte.modules.shipping.entity.Task;
import org.cpte.modules.tesAgv.service.ITesAgvService;
import org.jeecg.common.api.vo.Result; import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.system.query.QueryRuleEnum;
import org.jeecg.common.util.oConvertUtils;
import org.cpte.modules.agvTask.entity.AgvTask; import org.cpte.modules.agvTask.entity.AgvTask;
import org.cpte.modules.agvTask.service.IAgvTaskService; import org.cpte.modules.agvTask.service.IAgvTaskService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.jeecg.config.shiro.IgnoreAuth;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.base.controller.JeecgController;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import com.alibaba.fastjson.JSON;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.aspect.annotation.AutoLog;

View File

@ -66,8 +66,8 @@ public class InventoryLogServiceImpl extends ServiceImpl<InventoryLogMapper, Inv
//出库分配 //出库分配
inventoryLog.setLogType(InventoryLogEnum.ALLOC.getValue()); inventoryLog.setLogType(InventoryLogEnum.ALLOC.getValue());
//实际数量不变 //实际数量不变
inventoryLog.setBeforeAllocatedQty(BigDecimalUtil.subtract(inventory.getQueuedQty(), AllocatedQty, 0)); inventoryLog.setBeforeAllocatedQty(inventory.getQuantity());
inventoryLog.setAfterAllocatedQty(inventory.getQueuedQty()); inventoryLog.setAfterAllocatedQty(AllocatedQty);
addInventoryLog(inventoryLog); addInventoryLog(inventoryLog);
} }

View File

@ -81,8 +81,8 @@ public class AllocateJob implements Job {
//生成出库AGV出库任务 //生成出库AGV出库任务
long startTime2 = System.currentTimeMillis(); long startTime2 = System.currentTimeMillis();
List<Task> taskList = taskMapper.queryUnallocatedTask();
iTaskService.generateAgvTask(taskList); iTaskService.generateAgvTask();
long endTime2 = System.currentTimeMillis(); long endTime2 = System.currentTimeMillis();
log.info("生成AGV出库任务耗时{}ms", endTime2 - startTime2); log.info("生成AGV出库任务耗时{}ms", endTime2 - startTime2);
} }

View File

@ -9,9 +9,7 @@ import java.util.Map;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid;
import org.cpte.modules.constant.GeneralConstant; import org.cpte.modules.constant.GeneralConstant;
import org.cpte.modules.saiWms.request.InboundRequest;
import org.cpte.modules.serialNumber.PickSerialNumberRule; import org.cpte.modules.serialNumber.PickSerialNumberRule;
import org.cpte.modules.shipping.entity.Task; import org.cpte.modules.shipping.entity.Task;
import org.cpte.modules.shipping.mapper.PickMapper; import org.cpte.modules.shipping.mapper.PickMapper;
@ -290,8 +288,7 @@ public class PickController {
public Result<String> allocatedPick() { public Result<String> allocatedPick() {
List<Long> pickList = pickMapper.queryUnallocatedPick(); List<Long> pickList = pickMapper.queryUnallocatedPick();
pickService.allocatePick2(pickList); pickService.allocatePick2(pickList);
List<Task> taskList = taskMapper.queryUnallocatedTask(); taskService.generateAgvTask();
taskService.generateAgvTask(taskList);
return Result.OK("操作成功!"); return Result.OK("操作成功!");
} }

View File

@ -6,6 +6,7 @@ import org.cpte.modules.shipping.entity.Pick;
import org.cpte.modules.shipping.entity.Task; import org.cpte.modules.shipping.entity.Task;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import javax.persistence.LockModeType;
import java.util.List; import java.util.List;
/** /**
@ -20,6 +21,6 @@ public interface TaskMapper extends BaseMapper<Task> {
* *
* @return List<Pick> * @return List<Pick>
*/ */
@Select("select * from data_task where agv_task_id is null order by create_time") @Select("SELECT t.* FROM data_task t WHERE t.agv_task_id IS NULL ORDER BY t.create_time ASC FOR UPDATE ")
List<Task> queryUnallocatedTask(); List<Task> queryUnallocatedTask();
} }

View File

@ -1,5 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.cpte.modules.shipping.mapper.TaskMapper"> <mapper namespace="org.cpte.modules.shipping.mapper.TaskMapper">
</mapper> </mapper>

View File

@ -55,6 +55,6 @@ public interface ITaskService extends IService<Task> {
/** /**
* TaskAGV * TaskAGV
*/ */
void generateAgvTask(List<Task> taskList); void generateAgvTask();
} }

View File

@ -1,5 +1,7 @@
package org.cpte.modules.shipping.service.impl; package org.cpte.modules.shipping.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.shiro.SecurityUtils; import org.apache.shiro.SecurityUtils;
import org.cpte.modules.agvTask.entity.AgvTask; import org.cpte.modules.agvTask.entity.AgvTask;
@ -31,8 +33,12 @@ import java.util.stream.Collectors;
* @Version: V1.0 * @Version: V1.0
*/ */
@Service @Service
@Slf4j
public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements ITaskService { public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements ITaskService {
@Autowired
private TaskMapper taskMapper;
@Autowired @Autowired
private IAgvTaskService agvTaskService; private IAgvTaskService agvTaskService;
@ -110,7 +116,8 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements IT
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void generateAgvTask(List<Task> taskList) { public void generateAgvTask() {
List<Task> taskList = taskMapper.queryUnallocatedTask();
if (CollectionUtils.isEmpty(taskList)) { if (CollectionUtils.isEmpty(taskList)) {
return; return;
} }
@ -128,10 +135,12 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements IT
Map<TaskGroupKey, AgvTask> groupToAgvTaskMap = new HashMap<>(); Map<TaskGroupKey, AgvTask> groupToAgvTaskMap = new HashMap<>();
for (Map.Entry<TaskGroupKey, List<Task>> entry : taskGroupMap.entrySet()) { for (Map.Entry<TaskGroupKey, List<Task>> entry : taskGroupMap.entrySet()) {
TaskGroupKey key = entry.getKey(); TaskGroupKey key = entry.getKey();
log.info("任务分组:{}", key);
if (!groupToAgvTaskMap.containsKey(key)) { if (!groupToAgvTaskMap.containsKey(key)) {
AgvTask agvTask = agvTaskService.bulidAgvTask(null, key.getStockCode(), key.getFromPointCode(), key.getToPointCode(), null, BusinessTypeEnum.OUTBOUND.getValue(), AgvVendorEnum.TES.getValue()); AgvTask agvTask = agvTaskService.bulidAgvTask(null, key.getStockCode(), key.getFromPointCode(), key.getToPointCode(), null, BusinessTypeEnum.OUTBOUND.getValue(), AgvVendorEnum.TES.getValue());
createToAgvTaskList.add(agvTask); createToAgvTaskList.add(agvTask);
groupToAgvTaskMap.put(key, agvTask); // 建立映射 groupToAgvTaskMap.put(key, agvTask); // 建立映射
log.info("创建AGV任务{}", agvTask);
} }
} }
if (CollectionUtils.isNotEmpty(createToAgvTaskList)) { if (CollectionUtils.isNotEmpty(createToAgvTaskList)) {