解决死锁初版
This commit is contained in:
parent
db35603d0b
commit
892c582abe
|
|
@ -99,7 +99,8 @@ public class ExcelController {
|
|||
} catch (Exception e) {
|
||||
// 回滚事务
|
||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||
logger.error("查询上传记录发生异常:{}", convertJsonString(e));
|
||||
e.printStackTrace();
|
||||
logger.error("查询上传记录发生异常:{}", e.getMessage());
|
||||
response.setCode(ResponseCode.ERROR.getCode());
|
||||
response.setMessage("查询上传记录发生异常");
|
||||
return convertJsonString(response);
|
||||
|
|
|
|||
|
|
@ -135,7 +135,8 @@ public class GoodsController {
|
|||
} catch (Exception e) {
|
||||
// 回滚事务
|
||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||
logger.error("更新物料信息发生异常:{}", convertJsonString(e));
|
||||
e.printStackTrace();
|
||||
logger.error("更新物料信息发生异常:{}", e.getMessage());
|
||||
// 返回其他异常
|
||||
rsp.setCode(ResponseCode.ERROR.getCode());
|
||||
rsp.setMessage("更新物料信息发生异常");
|
||||
|
|
|
|||
|
|
@ -114,7 +114,8 @@ public class KateWorkQueryController {
|
|||
} catch (Exception e) {
|
||||
// 回滚事务
|
||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||
logger.error("查询DBS发生异常:{}", convertJsonString(e));
|
||||
e.printStackTrace();
|
||||
logger.error("查询DBS发生异常:{}", e.getMessage());
|
||||
response.setCode(ResponseCode.ERROR.getCode());
|
||||
response.setMessage("查询DBS发生异常");
|
||||
return convertJsonString(response);
|
||||
|
|
|
|||
|
|
@ -8,6 +8,8 @@ import com.wms.entity.app.monitor.WorkInfoByStand;
|
|||
import com.wms.entity.table.*;
|
||||
import com.wms.service.*;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.CrossOrigin;
|
||||
|
|
@ -31,6 +33,7 @@ import static com.wms.utils.StringUtils.convertJsonString;
|
|||
@RequestMapping(value = "/monitor")
|
||||
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
|
||||
public class MonitorController {
|
||||
private final static Logger logger = LoggerFactory.getLogger(MonitorController.class);
|
||||
private final LocationService locationService;
|
||||
private final WorkFlowService workFlowService;
|
||||
private final WorkSummaryService workSummaryService;
|
||||
|
|
@ -68,7 +71,7 @@ public class MonitorController {
|
|||
response.setEmpty(0);
|
||||
response.setEmptyUsed(0);
|
||||
}
|
||||
System.out.println("结束执行getLocationUseDetail方法:"+(System.currentTimeMillis()-l));
|
||||
logger.info("结束执行getLocationUseDetail方法:{}",(System.currentTimeMillis()-l));
|
||||
return convertJsonString(response);
|
||||
}
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -125,7 +125,8 @@ public class UserController {
|
|||
} catch (Exception e) {
|
||||
// 回滚事务
|
||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||
logger.info("数据库错误:{}", convertJsonString(e));
|
||||
e.printStackTrace();
|
||||
logger.error("数据库错误:{}", e.getMessage());
|
||||
// 返回其他异常
|
||||
rsp.setCode(ResponseCode.ERROR.getCode());
|
||||
rsp.setMessage("登录异常");
|
||||
|
|
@ -175,7 +176,8 @@ public class UserController {
|
|||
} catch (Exception e) {
|
||||
// 回滚事务
|
||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||
logger.info("数据库错误:{}", convertJsonString(e));
|
||||
e.printStackTrace();
|
||||
logger.error("数据库错误:{}", e.getMessage());
|
||||
// 返回其他异常
|
||||
rsp.setCode(ResponseCode.ERROR.getCode());
|
||||
rsp.setMessage("登录异常");
|
||||
|
|
@ -357,7 +359,8 @@ public class UserController {
|
|||
} catch (Exception e) {
|
||||
// 回滚事务
|
||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||
logger.info("查询用户列表失败:{}", convertJsonString(e));
|
||||
e.printStackTrace();
|
||||
logger.error("查询用户列表失败:{}", e.getMessage());
|
||||
// 返回其他异常
|
||||
rsp.setCode(ResponseCode.ERROR.getCode());
|
||||
rsp.setMessage("查询用户列表失败。");
|
||||
|
|
|
|||
|
|
@ -70,7 +70,8 @@ public class WmsLogController {
|
|||
response.setReturnData(pageDto);
|
||||
return convertJsonString(response);
|
||||
} catch (Exception e) {
|
||||
logger.error("查询日志信息发生异常:{}", convertJsonString(e));
|
||||
e.printStackTrace();
|
||||
logger.error("查询日志信息发生异常:{}", e.getMessage());
|
||||
response.setCode(ResponseCode.ERROR.getCode());
|
||||
response.setMessage("查询日志信息发生异常");
|
||||
return convertJsonString(response);
|
||||
|
|
|
|||
|
|
@ -339,8 +339,8 @@ public class WmsTaskServiceImplements implements IWmsTaskService {
|
|||
}
|
||||
if (outsideVehicle.getRemainNum().compareTo(needNum) > 0) {
|
||||
// 当前箱子剩余物料数量多于需求数量
|
||||
needNum = BigDecimal.ZERO;
|
||||
outsideVehicle.setRemainNum(outsideVehicle.getRemainNum().subtract(needNum));
|
||||
needNum = BigDecimal.ZERO;
|
||||
usedOutsideVehiclesList.add(outsideVehicle);
|
||||
break;
|
||||
} else {
|
||||
|
|
@ -348,6 +348,9 @@ public class WmsTaskServiceImplements implements IWmsTaskService {
|
|||
needNum = needNum.subtract(outsideVehicle.getRemainNum());
|
||||
outsideVehicle.setRemainNum(BigDecimal.ZERO);
|
||||
usedOutsideVehiclesList.add(outsideVehicle);
|
||||
if(needNum.compareTo(BigDecimal.ZERO) == 0){
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -429,13 +432,16 @@ public class WmsTaskServiceImplements implements IWmsTaskService {
|
|||
// 设备应该处于不可用状态,就不生成任务了
|
||||
continue;
|
||||
}
|
||||
if (tempStock.getGoodsRelated().getRemainNum().compareTo(needNum) > 0) {
|
||||
// 当前箱子剩余物料数量多于需求数量
|
||||
needNum = BigDecimal.ZERO;
|
||||
if (tempStock.getGoodsRelated().getRemainNum().compareTo(needNum) >= 0) {
|
||||
|
||||
// 设置剩余数量
|
||||
StockDetailInfo goodsRelated = tempStock.getGoodsRelated();
|
||||
goodsRelated.setRemainNum(goodsRelated.getRemainNum().subtract(needNum));
|
||||
|
||||
tempStock.setGoodsRelated(goodsRelated);
|
||||
// 当前箱子剩余物料数量多于需求数量
|
||||
needNum = BigDecimal.ZERO;
|
||||
|
||||
} else {
|
||||
// 当前箱子物料剩余数量少于需求数量
|
||||
needNum = needNum.subtract(tempStock.getGoodsRelated().getRemainNum());
|
||||
|
|
@ -447,7 +453,10 @@ public class WmsTaskServiceImplements implements IWmsTaskService {
|
|||
waitForOutStockList.add(tempStock);
|
||||
// 将堆垛机任务数量更新
|
||||
runningTaskNumToEquipmentMap.put(equipmentId, runningTaskNumToEquipmentMap.get(equipmentId) + 1);
|
||||
break;
|
||||
if(needNum.compareTo(BigDecimal.ZERO) == 0){
|
||||
break;
|
||||
}
|
||||
// break;
|
||||
}
|
||||
if (!waitForOutStockList.isEmpty()) {
|
||||
// 创建任务
|
||||
|
|
|
|||
|
|
@ -15,8 +15,6 @@ import org.slf4j.Logger;
|
|||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Isolation;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
||||
|
||||
|
|
@ -28,7 +26,6 @@ import java.util.stream.Collectors;
|
|||
|
||||
import static com.wms.config.InitLocalConfig.*;
|
||||
import static com.wms.constants.WmsConstants.MYSQL_JSON_CI;
|
||||
import static com.wms.utils.StringUtils.convertJsonString;
|
||||
import static com.wms.utils.WmsUtils.generateId;
|
||||
|
||||
/**
|
||||
|
|
@ -84,7 +81,7 @@ public class WorkServiceImplements implements IWorkService {
|
|||
* @param workStation 工作站台
|
||||
*/
|
||||
@Override
|
||||
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void doWork(String workStation) {
|
||||
try {
|
||||
// 查找当前站台未开始的工作流
|
||||
|
|
@ -233,7 +230,7 @@ public class WorkServiceImplements implements IWorkService {
|
|||
goodsToStation.setDistributeStatus(2);
|
||||
}
|
||||
}
|
||||
// 更新已分配数量
|
||||
// 更新已分配数量 todo
|
||||
goodsToStation.setDistributedNum(goodsToStation.getTotalNum().subtract(needNum));
|
||||
}
|
||||
goodsToStationService.updateBatchById(notFinishedGoodsList);
|
||||
|
|
@ -254,7 +251,8 @@ public class WorkServiceImplements implements IWorkService {
|
|||
.in(KateOrders::getSupplyArea, smallBoxes)
|
||||
.eq(KateOrders::getOrderStatus, 1));
|
||||
} catch (Exception e) {
|
||||
logger.error("执行站台:{}工作发生异常:{}", workStation, convertJsonString(e));
|
||||
e.printStackTrace();
|
||||
logger.error("执行站台:{}工作发生异常:{}", workStation, e.getMessage());
|
||||
// 回滚事务
|
||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||
}
|
||||
|
|
@ -350,7 +348,10 @@ public class WorkServiceImplements implements IWorkService {
|
|||
.eq(KateDBS::getWorkOrder, workFlow.getOrderId()));
|
||||
}
|
||||
}
|
||||
workSummaryService.saveBatch(workSummaryList);
|
||||
//解决workSummary的主键冲突问题 去掉workSummaryListlist中对象WorkFlowId重复的对象
|
||||
workSummaryList = workSummaryList.stream().collect(Collectors.toMap(WorkSummary::getWorkFlowId, a -> a, (k1, k2) -> k1)).values().stream().collect(Collectors.toList());
|
||||
|
||||
workSummaryService.saveOrUpdateBatch(workSummaryList);
|
||||
// 移除工作流
|
||||
workFlowService.remove(new LambdaQueryWrapper<WorkFlow>()
|
||||
.eq(WorkFlow::getWorkStation, workStation));
|
||||
|
|
@ -358,7 +359,7 @@ public class WorkServiceImplements implements IWorkService {
|
|||
goodsToStationService.remove(new LambdaQueryWrapper<GoodsToStation>()
|
||||
.eq(GoodsToStation::getWorkStation, workStation));
|
||||
} catch (Exception e) {
|
||||
logger.error("完成站台:{}工作发生异常:{}", workStation, convertJsonString(e));
|
||||
logger.error("完成站台:{},工作发生异常:{}", workStation, e.getMessage());
|
||||
result = "完成站台:" + workStation + "工作发生异常!";
|
||||
}
|
||||
return result;
|
||||
|
|
@ -444,7 +445,7 @@ public class WorkServiceImplements implements IWorkService {
|
|||
}
|
||||
tasksOfTodayMap.put(workConfig.getSmallBox(), toDaysOrders);
|
||||
}
|
||||
// 判断是否有今天开工的工单和小工位
|
||||
// 生成今天开工的工单和小工位
|
||||
if (!tasksOfTodayMap.isEmpty()) {
|
||||
for (String smallBoxKey : tasksOfTodayMap.keySet()) {
|
||||
List<WorkCenterAndOrderDto> currentWorkCenterAndOrderDtoList = tasksOfTodayMap.get(smallBoxKey).stream().sorted(Comparator.comparingInt(WorkCenterAndOrderDto::getDbsSequence)).toList();
|
||||
|
|
@ -653,10 +654,10 @@ public class WorkServiceImplements implements IWorkService {
|
|||
.in(KateDBS::getWorkOrder, workOrderList)
|
||||
.eq(KateDBS::getDbsStatus, 0));
|
||||
}
|
||||
System.out.println("createTempWorkFlows 成功");
|
||||
logger.info("createTempWorkFlows 成功");
|
||||
}
|
||||
} else {
|
||||
System.out.println("createTempWorkFlows 为空");
|
||||
logger.info("createTempWorkFlows 为空");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -768,14 +769,9 @@ public class WorkServiceImplements implements IWorkService {
|
|||
Map<String, String> smallBoxToBigBoxConfigMap = workStationConfigs.stream().collect(Collectors.toMap(WorkStationConfig::getSmallBox, WorkStationConfig::getBigBox));
|
||||
for (WorkFlow workFlow : needDistributeWorks) {
|
||||
if (smallBoxToBigBoxConfigMap.containsKey(workFlow.getWorkCenter())) {
|
||||
if (workFlowsByBigBoxMap.containsKey(smallBoxToBigBoxConfigMap.get(workFlow.getWorkCenter()))) {
|
||||
String bigBox = smallBoxToBigBoxConfigMap.get(workFlow.getWorkCenter());
|
||||
List<WorkFlow> thisBoxWorkFlows = new ArrayList<>(workFlowsByBigBoxMap.get(bigBox));
|
||||
thisBoxWorkFlows.add(workFlow);
|
||||
workFlowsByBigBoxMap.replace(bigBox, thisBoxWorkFlows);
|
||||
} else {
|
||||
workFlowsByBigBoxMap.put(smallBoxToBigBoxConfigMap.get(workFlow.getWorkCenter()), List.of(workFlow));
|
||||
}
|
||||
String bigbox = smallBoxToBigBoxConfigMap.get(workFlow.getWorkCenter());
|
||||
workFlowsByBigBoxMap.computeIfAbsent(bigbox, k -> new ArrayList<>())
|
||||
.add(workFlow);
|
||||
}
|
||||
}
|
||||
// 生成每个大盒子的物料种类map
|
||||
|
|
@ -832,13 +828,15 @@ public class WorkServiceImplements implements IWorkService {
|
|||
Map<String, List<WorkFlow>> notDistributeYetWorksByBoxMap = new HashMap<>();
|
||||
for (WorkFlow workFlow : thisBoxWorkFlows) {
|
||||
String boxNo = workFlow.getWorkOrder() + "@" + workFlow.getWorkCenter();
|
||||
if (notDistributeYetWorksByBoxMap.containsKey(boxNo)) {
|
||||
List<WorkFlow> thisBoxNotDistributeYetWorks = new ArrayList<>(notDistributeYetWorksByBoxMap.get(boxNo));
|
||||
thisBoxNotDistributeYetWorks.add(workFlow);
|
||||
notDistributeYetWorksByBoxMap.replace(boxNo, thisBoxNotDistributeYetWorks);
|
||||
} else {
|
||||
notDistributeYetWorksByBoxMap.put(boxNo, List.of(workFlow));
|
||||
}
|
||||
notDistributeYetWorksByBoxMap.computeIfAbsent(boxNo, k -> new ArrayList<>())
|
||||
.add(workFlow);
|
||||
// if (notDistributeYetWorksByBoxMap.containsKey(boxNo)) {
|
||||
// List<WorkFlow> thisBoxNotDistributeYetWorks = new ArrayList<>(notDistributeYetWorksByBoxMap.get(boxNo));
|
||||
// thisBoxNotDistributeYetWorks.add(workFlow);
|
||||
// notDistributeYetWorksByBoxMap.replace(boxNo, thisBoxNotDistributeYetWorks);
|
||||
// } else {
|
||||
// notDistributeYetWorksByBoxMap.put(boxNo, List.of(workFlow));
|
||||
// }
|
||||
}
|
||||
if (notDistributeYetWorksByBoxMap.isEmpty()) {
|
||||
// 当前大盒子全部分配完毕
|
||||
|
|
@ -865,9 +863,15 @@ public class WorkServiceImplements implements IWorkService {
|
|||
continue;
|
||||
}
|
||||
// 排序后的key
|
||||
// List<String> sortedKeyString = notDistributeYetWorksByBoxMap.keySet().stream()
|
||||
// .sorted(Comparator.comparing(o -> workOrderToSequenceMap.get(o.split("@")[0])))
|
||||
// .sorted(Comparator.comparing(o -> o.split("@")[1]))
|
||||
// .toList();
|
||||
List<String> sortedKeyString = notDistributeYetWorksByBoxMap.keySet().stream()
|
||||
.sorted(Comparator.comparing(o -> workOrderToSequenceMap.get(o.split("@")[0])))
|
||||
.sorted(Comparator.comparing(o -> o.split("@")[1]))
|
||||
.sorted(
|
||||
Comparator.comparing((String o) -> workOrderToSequenceMap.get(o.split("@")[0]))
|
||||
.thenComparing(o -> o.split("@")[1])
|
||||
)
|
||||
.toList();
|
||||
// 本次生成的电子标签配置
|
||||
List<ELocationConfig> thisStandELocationConfigs = stationToELocationConfigsMap.getOrDefault(targetStandId, new ArrayList<>());
|
||||
|
|
@ -953,7 +957,8 @@ public class WorkServiceImplements implements IWorkService {
|
|||
}
|
||||
logger.info("分配工作完成");
|
||||
} catch (Exception e) {
|
||||
logger.error("分配工作发生异常:{}", convertJsonString(e));
|
||||
e.printStackTrace();
|
||||
logger.error("分配工作发生异常:{}", e.getMessage());
|
||||
// 回滚事务
|
||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -101,19 +101,49 @@ public class LocationServiceImplements extends ServiceImpl<LocationMapper, Locat
|
|||
}
|
||||
// 查找库位
|
||||
while (!runningTaskNumToEquipmentMap.isEmpty()) {
|
||||
Integer mostEmptyStackerId = runningTaskNumToEquipmentMap.entrySet().stream()
|
||||
.min(Comparator.comparingInt(Map.Entry::getValue))
|
||||
// Integer mostEmptyStackerId = runningTaskNumToEquipmentMap.entrySet().stream()
|
||||
// .min(Comparator.comparingInt(Map.Entry::getValue))
|
||||
// .map(Map.Entry::getKey)
|
||||
// .orElse(null);
|
||||
// if (mostEmptyStackerId == null) {
|
||||
// // 跳出循环
|
||||
// break;
|
||||
// }
|
||||
// getOneLocationByEquipmentId(resultMap, mostEmptyStackerId, vehicleId);
|
||||
// if (!resultMap.isEmpty()) {
|
||||
// break;
|
||||
// }
|
||||
// runningTaskNumToEquipmentMap.remove(mostEmptyStackerId);
|
||||
//为了实现堆垛机满载运行回库,更改堆垛机任务等于1时的逻辑
|
||||
// 第一步:尝试给已有一个任务的堆垛机再分配一个任务
|
||||
Optional<Integer> stackerWithOneTask = runningTaskNumToEquipmentMap.entrySet().stream()
|
||||
.filter(entry -> entry.getValue() == 1)
|
||||
.map(Map.Entry::getKey)
|
||||
.orElse(null);
|
||||
if (mostEmptyStackerId == null) {
|
||||
// 跳出循环
|
||||
.findFirst();
|
||||
|
||||
Integer selectedStackerId;
|
||||
|
||||
if (stackerWithOneTask.isPresent()) {
|
||||
selectedStackerId = stackerWithOneTask.get();
|
||||
} else {
|
||||
// 第二步:找当前任务最少的堆垛机
|
||||
selectedStackerId = runningTaskNumToEquipmentMap.entrySet().stream()
|
||||
.min(Comparator.comparingInt(Map.Entry::getValue))
|
||||
.map(Map.Entry::getKey)
|
||||
.orElse(null);
|
||||
}
|
||||
|
||||
if (selectedStackerId == null) {
|
||||
break;
|
||||
}
|
||||
getOneLocationByEquipmentId(resultMap, mostEmptyStackerId, vehicleId);
|
||||
|
||||
getOneLocationByEquipmentId(resultMap, selectedStackerId, vehicleId);
|
||||
if (!resultMap.isEmpty()) {
|
||||
break;
|
||||
}
|
||||
runningTaskNumToEquipmentMap.remove(mostEmptyStackerId);
|
||||
|
||||
// 分配失败就移除该堆垛机,避免死循环
|
||||
runningTaskNumToEquipmentMap.remove(selectedStackerId);
|
||||
}
|
||||
|
||||
// 选择最近未使用的设备
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@ import com.alibaba.excel.annotation.ExcelProperty;
|
|||
import com.wms.entity.app.dto.extend.KanbanEntity;
|
||||
import com.wms.utils.StringUtils;
|
||||
import lombok.Data;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.ArrayList;
|
||||
|
|
@ -14,6 +16,7 @@ import java.util.List;
|
|||
*/
|
||||
@Data
|
||||
public class KanbanExcelVo {
|
||||
private final static Logger log = LoggerFactory.getLogger(KanbanExcelVo.class);
|
||||
@ExcelProperty("KANBAN#1")
|
||||
private String KANBAN1;
|
||||
@ExcelProperty("KANBAN#2")
|
||||
|
|
@ -137,7 +140,7 @@ public class KanbanExcelVo {
|
|||
}
|
||||
} catch (IllegalAccessException e) {
|
||||
// 捕捉异常
|
||||
System.out.println("设置看板发生异常:" + e.getMessage());
|
||||
log.info("设置看板发生异常:{}" , e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -160,7 +163,7 @@ public class KanbanExcelVo {
|
|||
}
|
||||
} catch (IllegalAccessException e) {
|
||||
// 捕捉异常
|
||||
System.out.println("转化看板数据配置时发生异常:" + e.getMessage());
|
||||
log.info("转化看板数据配置时发生异常:{}" ,e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@ import com.alibaba.excel.annotation.ExcelProperty;
|
|||
import com.wms.entity.app.dto.extend.KanbanEntity;
|
||||
import com.wms.utils.StringUtils;
|
||||
import lombok.Data;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.math.BigDecimal;
|
||||
|
|
@ -15,6 +17,7 @@ import java.util.List;
|
|||
*/
|
||||
@Data
|
||||
public class KanbanGoodsExcelVo {
|
||||
private final static Logger logger = LoggerFactory.getLogger(KanbanGoodsExcelVo.class);
|
||||
/**
|
||||
* 料号
|
||||
*/
|
||||
|
|
@ -318,7 +321,7 @@ public class KanbanGoodsExcelVo {
|
|||
}
|
||||
} catch (IllegalAccessException e) {
|
||||
// 捕捉异常
|
||||
System.out.println("设置看板发生异常:" + e.getMessage());
|
||||
logger.info("设置看板发生异常:{}" ,e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -341,7 +344,7 @@ public class KanbanGoodsExcelVo {
|
|||
}
|
||||
} catch (IllegalAccessException e) {
|
||||
// 捕捉异常
|
||||
System.out.println("转化看板数据配置时发生异常:" + e.getMessage());
|
||||
logger.info("转化看板数据配置时发生异常:{}" , e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import org.springframework.stereotype.Component;
|
|||
/**
|
||||
* ws服务
|
||||
*/
|
||||
@ServerEndpoint(value = "/websocket/{userName}")
|
||||
@Component
|
||||
//@ServerEndpoint(value = "/websocket/{userName}")
|
||||
//@Component
|
||||
public class WebSocketService {
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,7 +20,8 @@
|
|||
</rollingPolicy>
|
||||
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
|
||||
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
|
||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
|
||||
<!-- <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>-->
|
||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%line - %msg%n</pattern>
|
||||
</encoder>
|
||||
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||
<level>INFO</level>
|
||||
|
|
@ -38,7 +39,8 @@
|
|||
</rollingPolicy>
|
||||
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
|
||||
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
|
||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
|
||||
<!-- <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>-->
|
||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%line - %msg%n</pattern>
|
||||
</encoder>
|
||||
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||
<level>WARNING</level>
|
||||
|
|
@ -56,7 +58,8 @@
|
|||
</rollingPolicy>
|
||||
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
|
||||
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
|
||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
|
||||
<!-- <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>-->
|
||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%line - %msg%n</pattern>
|
||||
</encoder>
|
||||
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||
<level>ERROR</level>
|
||||
|
|
@ -74,7 +77,8 @@
|
|||
</rollingPolicy>
|
||||
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
|
||||
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
|
||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
|
||||
<!-- <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>-->
|
||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%line - %msg%n</pattern>
|
||||
</encoder>
|
||||
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||
<level>DEBUG</level>
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user