no message
							parent
							
								
									c406d91b57
								
							
						
					
					
						commit
						aaf1b546b3
					
				| 
						 | 
				
			
			@ -1 +0,0 @@
 | 
			
		|||
186180
 | 
			
		||||
							
								
								
									
										8
									
								
								pom.xml
								
								
								
								
							
							
						
						
									
										8
									
								
								pom.xml
								
								
								
								
							| 
						 | 
				
			
			@ -146,7 +146,7 @@
 | 
			
		|||
        <dependency>
 | 
			
		||||
            <groupId>org.apache.poi</groupId>
 | 
			
		||||
            <artifactId>poi-ooxml</artifactId>
 | 
			
		||||
            <version>5.2.0</version>
 | 
			
		||||
            <version>4.1.2</version>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>xerces</groupId>
 | 
			
		||||
| 
						 | 
				
			
			@ -199,6 +199,12 @@
 | 
			
		|||
            <version>6.11</version>
 | 
			
		||||
        </dependency>
 | 
			
		||||
 | 
			
		||||
        <!-- fastexcel导出 -->
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>cn.idev.excel</groupId>
 | 
			
		||||
            <artifactId>fastexcel</artifactId>
 | 
			
		||||
            <version>1.2.0</version>
 | 
			
		||||
        </dependency>
 | 
			
		||||
 | 
			
		||||
    </dependencies>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -69,7 +69,7 @@ public class NioF3AppController {
 | 
			
		|||
    public ResponseEntity<Object> findByLinePoint(@RequestBody LinePoint linePoint) {
 | 
			
		||||
        try {
 | 
			
		||||
            List<LesTask> lesList = nioF3AppService.findByLinePoint(linePoint.getDstPositionCode());
 | 
			
		||||
            return new ResponseEntity<>(ApiResult.success(lesList), HttpStatus.OK);
 | 
			
		||||
            return new ResponseEntity<>(lesList, HttpStatus.OK);
 | 
			
		||||
        } catch (Exception e) {
 | 
			
		||||
            return new ResponseEntity<>(ApiResult.fail(e.getMessage()), HttpStatus.BAD_REQUEST);
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -45,14 +45,14 @@ public class NioF3AppServiceImpl implements NioF3AppService {
 | 
			
		|||
        List<Les> lesList = validateLes(bindSmall.getSrcPositionCode(), bindSmall.getOnlineNo());
 | 
			
		||||
        List<Long> lesIds = lesList.stream().map(Les::getId).collect(Collectors.toList());
 | 
			
		||||
 | 
			
		||||
        // 获取目标点位
 | 
			
		||||
        String endPointCode = getEndPointCode(lesList);
 | 
			
		||||
        // 获取停靠点
 | 
			
		||||
        String beatCode = getBeatCode(lesList);
 | 
			
		||||
        AgvTask agvTask;
 | 
			
		||||
        synchronized (bindSmall.getSrcPositionCode().intern()) {
 | 
			
		||||
            // 验证起点是否有Agv任务
 | 
			
		||||
            validateAgvTask(bindSmall.getSrcPositionCode());
 | 
			
		||||
            // 生成任务
 | 
			
		||||
            agvTask = agvTaskService.createAgvTask(BizStatus.OPEN, null, bindSmall.getSrcPositionCode(), endPointCode, "TUGGER");
 | 
			
		||||
            agvTask = agvTaskService.createAgvTask(BizStatus.OPEN, null, bindSmall.getSrcPositionCode(), beatCode, "TUGGER");
 | 
			
		||||
            // 绑定任务
 | 
			
		||||
            bindLesAgvTask(agvTask.getId(), lesIds);
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -99,9 +99,9 @@ public class NioF3AppServiceImpl implements NioF3AppService {
 | 
			
		|||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private String getEndPointCode(List<Les> lesList) {
 | 
			
		||||
    private String getBeatCode(List<Les> lesList) {
 | 
			
		||||
        return lesList.stream()
 | 
			
		||||
                .map(Les::getDstPositionCode)    // 提取目标字段
 | 
			
		||||
                .map(Les::getBeatCode)    // 提取目标字段
 | 
			
		||||
                .distinct()                      // 去重
 | 
			
		||||
                .collect(Collectors.joining(",")); // 用逗号拼接字符串
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -129,14 +129,14 @@ public class NioF3AppServiceImpl implements NioF3AppService {
 | 
			
		|||
        validateBoxNos(lesList, boxNos);
 | 
			
		||||
 | 
			
		||||
        //获取目标点位
 | 
			
		||||
        String endPointCode = getEndPointCode(lesList);
 | 
			
		||||
        String beatCode = getBeatCode(lesList);
 | 
			
		||||
 | 
			
		||||
        AgvTask agvTask;
 | 
			
		||||
        synchronized (bindLarge.getSrcPositionCode().intern()) {
 | 
			
		||||
            // 验证起点是否有Agv任务
 | 
			
		||||
            validateAgvTask(bindLarge.getSrcPositionCode());
 | 
			
		||||
            // 生成任务
 | 
			
		||||
            agvTask = agvTaskService.createAgvTask(BizStatus.OPEN, null, bindLarge.getSrcPositionCode(), endPointCode, "TUGGER");
 | 
			
		||||
            agvTask = agvTaskService.createAgvTask(BizStatus.OPEN, null, bindLarge.getSrcPositionCode(), beatCode, "TUGGER");
 | 
			
		||||
            // 绑定任务
 | 
			
		||||
            bindLesAgvTask(agvTask.getId(), lesIds);
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -209,7 +209,7 @@ public class NioF3AppServiceImpl implements NioF3AppService {
 | 
			
		|||
    public List<LesTask> findByLinePoint(String dstPositionCode) {
 | 
			
		||||
        List<LesTask> lesList = lesRepository.findByLinePoint(dstPositionCode);
 | 
			
		||||
        if (lesList.isEmpty()) {
 | 
			
		||||
            throw new BadRequestException("PDA扫描的停靠点未匹配到LES任务");
 | 
			
		||||
            throw new BadRequestException(dstPositionCode+"停靠点无任务");
 | 
			
		||||
        }
 | 
			
		||||
        return lesList;
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,10 +17,14 @@ package com.youchain.basicdata.domain;
 | 
			
		|||
 | 
			
		||||
import com.youchain.base.BaseEntity;
 | 
			
		||||
import com.youchain.modules.system.domain.Dept;
 | 
			
		||||
import lombok.AllArgsConstructor;
 | 
			
		||||
import lombok.Builder;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import cn.hutool.core.bean.BeanUtil;
 | 
			
		||||
import io.swagger.annotations.ApiModelProperty;
 | 
			
		||||
import cn.hutool.core.bean.copier.CopyOptions;
 | 
			
		||||
import lombok.NoArgsConstructor;
 | 
			
		||||
 | 
			
		||||
import javax.persistence.*;
 | 
			
		||||
import java.io.Serializable;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -30,8 +34,11 @@ import java.io.Serializable;
 | 
			
		|||
* @author liuxue
 | 
			
		||||
* @date 2023-07-26
 | 
			
		||||
**/
 | 
			
		||||
@Entity
 | 
			
		||||
@Data
 | 
			
		||||
@Builder
 | 
			
		||||
@AllArgsConstructor
 | 
			
		||||
@NoArgsConstructor
 | 
			
		||||
@Entity
 | 
			
		||||
@Table(name="base_point")
 | 
			
		||||
public class Point extends BaseEntity implements Serializable {
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -58,7 +65,7 @@ public class Point extends BaseEntity implements Serializable {
 | 
			
		|||
    private String description;
 | 
			
		||||
 | 
			
		||||
    @Column(name = "`beat_code`")
 | 
			
		||||
    @ApiModelProperty(value = "冷却区区域编码")
 | 
			
		||||
    @ApiModelProperty(value = "停靠点")
 | 
			
		||||
    private String beatCode;
 | 
			
		||||
 | 
			
		||||
    @Column(name = "`item_code`")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,13 +16,19 @@
 | 
			
		|||
package com.youchain.basicdata.repository;
 | 
			
		||||
 | 
			
		||||
import com.youchain.basicdata.domain.Area;
 | 
			
		||||
import com.youchain.basicdata.domain.Point;
 | 
			
		||||
import org.springframework.data.jpa.repository.JpaRepository;
 | 
			
		||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 | 
			
		||||
import org.springframework.data.jpa.repository.Query;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
* @website https://eladmin.vip
 | 
			
		||||
 * @author HJL
 | 
			
		||||
 * @website https://eladmin.vip
 | 
			
		||||
 * @date 2023-08-14
 | 
			
		||||
 **/
 | 
			
		||||
public interface AreaRepository extends JpaRepository<Area, Long>, JpaSpecificationExecutor<Area> {
 | 
			
		||||
    @Query("from Area area where area.enabled=true and area.name in :names")
 | 
			
		||||
    List<Area> findByNames(List<String> names);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,6 +16,7 @@
 | 
			
		|||
package com.youchain.basicdata.repository;
 | 
			
		||||
 | 
			
		||||
import com.youchain.basicdata.domain.Point;
 | 
			
		||||
import com.youchain.basicdata.domain.Stock;
 | 
			
		||||
import org.springframework.cache.annotation.Cacheable;
 | 
			
		||||
import org.springframework.data.jpa.repository.JpaRepository;
 | 
			
		||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 | 
			
		||||
| 
						 | 
				
			
			@ -23,10 +24,11 @@ import org.springframework.data.jpa.repository.Query;
 | 
			
		|||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
* @website https://eladmin.vip
 | 
			
		||||
 * @author liuxue
 | 
			
		||||
 * @website https://eladmin.vip
 | 
			
		||||
 * @date 2023-07-26
 | 
			
		||||
 **/
 | 
			
		||||
public interface PointRepository extends JpaRepository<Point, Long>, JpaSpecificationExecutor<Point> {
 | 
			
		||||
| 
						 | 
				
			
			@ -41,4 +43,8 @@ public interface PointRepository extends JpaRepository<Point, Long>, JpaSpecific
 | 
			
		|||
            "and (:type is null or p.type = :type) " +
 | 
			
		||||
            "and (:areaName is null or p.area.name = :areaName)")
 | 
			
		||||
    List<Point> queryPoints(String code, String status, String type, String areaName);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    @Query("from Point point where point.enabled=true and point.code in :codes")
 | 
			
		||||
    List<Point> findByCodes(List<String> codes);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,20 @@
 | 
			
		|||
package com.youchain.basicdata.requset;
 | 
			
		||||
 | 
			
		||||
import cn.idev.excel.annotation.ExcelProperty;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
@Data
 | 
			
		||||
public class PointImportReq {
 | 
			
		||||
 | 
			
		||||
    @ExcelProperty("库区名称")
 | 
			
		||||
    private String name;
 | 
			
		||||
 | 
			
		||||
    @ExcelProperty("库位编码")
 | 
			
		||||
    private String code;
 | 
			
		||||
 | 
			
		||||
    @ExcelProperty("停靠点")
 | 
			
		||||
    private String beatCode;
 | 
			
		||||
 | 
			
		||||
    @ExcelProperty("类型")
 | 
			
		||||
    private String type;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -17,10 +17,8 @@ package com.youchain.basicdata.rest;
 | 
			
		|||
 | 
			
		||||
import com.youchain.annotation.Log;
 | 
			
		||||
import com.youchain.basicdata.domain.Point;
 | 
			
		||||
import com.youchain.basicdata.service.AreaService;
 | 
			
		||||
import com.youchain.basicdata.service.PointService;
 | 
			
		||||
import com.youchain.basicdata.service.dto.PointQueryCriteria;
 | 
			
		||||
import com.youchain.config.FileProperties;
 | 
			
		||||
import com.youchain.exception.handler.ApiResult;
 | 
			
		||||
import com.youchain.utils.*;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
| 
						 | 
				
			
			@ -37,9 +35,6 @@ import org.springframework.web.multipart.MultipartFile;
 | 
			
		|||
import java.io.IOException;
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
 | 
			
		||||
import static org.springframework.http.HttpStatus.BAD_REQUEST;
 | 
			
		||||
import static org.springframework.http.HttpStatus.OK;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author liuxue
 | 
			
		||||
 * @website https://eladmin.vip
 | 
			
		||||
| 
						 | 
				
			
			@ -63,11 +58,15 @@ public class PointController {
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    @Log("导入点位")
 | 
			
		||||
    @PostMapping(value = "/import_point")
 | 
			
		||||
    @PostMapping(value = "/importPoint")
 | 
			
		||||
    @ApiOperation("导入点位")
 | 
			
		||||
    @PreAuthorize("@el.check('point:importPoint')")
 | 
			
		||||
    public ResponseEntity<Object> importPoint(@RequestParam("file") MultipartFile multipartFile) {
 | 
			
		||||
        return null;
 | 
			
		||||
        try {
 | 
			
		||||
            String result = pointService.importPoint(multipartFile);
 | 
			
		||||
            return new ResponseEntity<>(ApiResult.success(result, null), HttpStatus.OK);
 | 
			
		||||
        }catch (Exception e){
 | 
			
		||||
            return new ResponseEntity<>(ApiResult.fail(e.getMessage()), HttpStatus.BAD_REQUEST);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @GetMapping
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,6 +19,8 @@ import com.youchain.basicdata.domain.Point;
 | 
			
		|||
import com.youchain.basicdata.service.dto.PointDto;
 | 
			
		||||
import com.youchain.basicdata.service.dto.PointQueryCriteria;
 | 
			
		||||
import org.springframework.data.domain.Pageable;
 | 
			
		||||
import org.springframework.web.multipart.MultipartFile;
 | 
			
		||||
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
| 
						 | 
				
			
			@ -81,6 +83,13 @@ public interface PointService {
 | 
			
		|||
    */
 | 
			
		||||
    void download(List<PointDto> all, HttpServletResponse response) throws IOException;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 导入点位
 | 
			
		||||
     *
 | 
			
		||||
     * @param multipartFile 文件
 | 
			
		||||
     */
 | 
			
		||||
    String importPoint(MultipartFile multipartFile);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 验证点位是否存在
 | 
			
		||||
     *
 | 
			
		||||
| 
						 | 
				
			
			@ -118,5 +127,11 @@ public interface PointService {
 | 
			
		|||
     */
 | 
			
		||||
    Point queryPoint(String code, String status, String type, String areaName);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 批量查询点位
 | 
			
		||||
     *
 | 
			
		||||
     * @param codes 点位集合
 | 
			
		||||
     */
 | 
			
		||||
    Map<String, Point> findByCodes(List<String> codes);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,8 +15,13 @@
 | 
			
		|||
 */
 | 
			
		||||
package com.youchain.basicdata.service.impl;
 | 
			
		||||
 | 
			
		||||
import cn.idev.excel.FastExcel;
 | 
			
		||||
import com.youchain.basicdata.domain.Area;
 | 
			
		||||
import com.youchain.basicdata.domain.Point;
 | 
			
		||||
import com.youchain.basicdata.repository.AreaRepository;
 | 
			
		||||
import com.youchain.basicdata.requset.PointImportReq;
 | 
			
		||||
import com.youchain.exception.BadRequestException;
 | 
			
		||||
import com.youchain.modules.system.domain.Dept;
 | 
			
		||||
import com.youchain.utils.*;
 | 
			
		||||
import lombok.RequiredArgsConstructor;
 | 
			
		||||
import com.youchain.basicdata.repository.PointRepository;
 | 
			
		||||
| 
						 | 
				
			
			@ -25,15 +30,18 @@ import com.youchain.basicdata.service.dto.PointDto;
 | 
			
		|||
import com.youchain.basicdata.service.dto.PointQueryCriteria;
 | 
			
		||||
import com.youchain.basicdata.service.mapstruct.PointMapper;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
import org.apache.commons.collections4.CollectionUtils;
 | 
			
		||||
import org.springframework.cache.annotation.CacheConfig;
 | 
			
		||||
import org.springframework.cache.annotation.Cacheable;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
import org.springframework.transaction.annotation.Transactional;
 | 
			
		||||
import org.springframework.data.domain.Page;
 | 
			
		||||
import org.springframework.data.domain.Pageable;
 | 
			
		||||
import org.springframework.web.multipart.MultipartFile;
 | 
			
		||||
 | 
			
		||||
import java.util.*;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.util.stream.Collectors;
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
| 
						 | 
				
			
			@ -49,6 +57,7 @@ import javax.servlet.http.HttpServletResponse;
 | 
			
		|||
public class PointServiceImpl implements PointService {
 | 
			
		||||
 | 
			
		||||
    private final PointRepository pointRepository;
 | 
			
		||||
    private final AreaRepository areaRepository;
 | 
			
		||||
    private final PointMapper pointMapper;
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
| 
						 | 
				
			
			@ -122,7 +131,119 @@ public class PointServiceImpl implements PointService {
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    @Cacheable(key = "#position", unless = "#result == null")
 | 
			
		||||
    @Transactional(rollbackFor = Exception.class)
 | 
			
		||||
    public String importPoint(MultipartFile multipartFile) {
 | 
			
		||||
        List<PointImportReq> dataList;
 | 
			
		||||
        try {
 | 
			
		||||
            dataList = FastExcel.read(multipartFile.getInputStream()).head(PointImportReq.class)
 | 
			
		||||
                    .sheet()
 | 
			
		||||
                    .doReadSync();
 | 
			
		||||
        } catch (IOException e) {
 | 
			
		||||
            throw new BadRequestException("数据格式存在问题,无法读取");
 | 
			
		||||
        }
 | 
			
		||||
        if (CollectionUtils.isEmpty(dataList)) {
 | 
			
		||||
            throw new BadRequestException("数据为空");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        //获取文件中所有库区名称
 | 
			
		||||
        List<String> names = dataList.stream()
 | 
			
		||||
                .map(PointImportReq::getName)
 | 
			
		||||
                .distinct()
 | 
			
		||||
                .collect(Collectors.toList());
 | 
			
		||||
 | 
			
		||||
        //查找数据库中存在的库区
 | 
			
		||||
        List<Area> areaList = areaRepository.findByNames(names);
 | 
			
		||||
        List<String> exitingAreaNames = areaList.stream().map(Area::getName).collect(Collectors.toList());
 | 
			
		||||
 | 
			
		||||
        //获取不存在的库区名称
 | 
			
		||||
        List<String> diffAreaNames = SmartStringUtil.getDifference(names, exitingAreaNames);
 | 
			
		||||
        if (!diffAreaNames.isEmpty()) {
 | 
			
		||||
            throw new BadRequestException("WMS不存在的库区集合,请维护:" + diffAreaNames);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        Map<String, Area> existingAreaMap = areaList.stream().collect(Collectors.toMap(Area::getName, area -> area));
 | 
			
		||||
 | 
			
		||||
        //获取文件中所有库位编码
 | 
			
		||||
        List<String> codes = dataList.stream()
 | 
			
		||||
                .map(PointImportReq::getCode)
 | 
			
		||||
                .distinct()
 | 
			
		||||
                .collect(Collectors.toList());
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        //获取已存在的点位
 | 
			
		||||
        Map<String, Point> existingPointMap = this.findByCodes(codes);
 | 
			
		||||
 | 
			
		||||
        //新增容器集合
 | 
			
		||||
        List<Point> pointsToCreate = new ArrayList<>();
 | 
			
		||||
 | 
			
		||||
        //修改容器集合
 | 
			
		||||
        List<Point> pointsToUpdate = new ArrayList<>();
 | 
			
		||||
 | 
			
		||||
        for (PointImportReq pointImportReq : dataList) {
 | 
			
		||||
            Area area = existingAreaMap.get(pointImportReq.getName());
 | 
			
		||||
            String code = pointImportReq.getCode();
 | 
			
		||||
            String type = pointImportReq.getType();
 | 
			
		||||
            String beatCode = pointImportReq.getBeatCode();
 | 
			
		||||
            //判断是否已存在容器
 | 
			
		||||
            if (existingPointMap.containsKey(code)) {
 | 
			
		||||
                //修改容器
 | 
			
		||||
                Point point = existingPointMap.get(code);
 | 
			
		||||
                pointsToUpdate.add(updatePoint(point, area, beatCode, type));
 | 
			
		||||
            } else {
 | 
			
		||||
                //新增容器
 | 
			
		||||
                Point point = createPoint(code, beatCode, type, area, UserUtils.getDept());
 | 
			
		||||
                pointsToCreate.add(point);
 | 
			
		||||
                existingPointMap.put(code, point);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        //批量新增容器
 | 
			
		||||
        if (!pointsToCreate.isEmpty()) {
 | 
			
		||||
            pointRepository.saveAll(pointsToCreate);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        //批量更新容器
 | 
			
		||||
        if (!pointsToUpdate.isEmpty()) {
 | 
			
		||||
            pointRepository.saveAll(pointsToUpdate);
 | 
			
		||||
        }
 | 
			
		||||
        return ("导入成功:" + " 新增(" + pointsToCreate.size() + ")修改(" + pointsToUpdate.size() + ")");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Point createPoint(String code, String beatCode, String type, Area area, Dept dept) {
 | 
			
		||||
        if ("缓存点".equals(type)) {
 | 
			
		||||
            type = BaseStatus.STORAGE;
 | 
			
		||||
 | 
			
		||||
        } else if ("线边点位".equals(type)) {
 | 
			
		||||
            type = BaseStatus.BOX;
 | 
			
		||||
        }
 | 
			
		||||
        return Point.builder()
 | 
			
		||||
                .code(code)
 | 
			
		||||
                .name(code)
 | 
			
		||||
                .status(BaseStatus.FREE)
 | 
			
		||||
                .beatCode(beatCode)
 | 
			
		||||
                .area(area)
 | 
			
		||||
                .enabled(true)
 | 
			
		||||
                .dept(dept)
 | 
			
		||||
                .type(type)
 | 
			
		||||
                .heat(0.0)
 | 
			
		||||
                .build();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Point updatePoint(Point point, Area area, String beatCode, String type) {
 | 
			
		||||
        if ("缓存点".equals(type)) {
 | 
			
		||||
            type = BaseStatus.STORAGE;
 | 
			
		||||
 | 
			
		||||
        } else if ("线边点位".equals(type)) {
 | 
			
		||||
            type = BaseStatus.BOX;
 | 
			
		||||
        }
 | 
			
		||||
        point.setArea(area);
 | 
			
		||||
        point.setBeatCode(beatCode);
 | 
			
		||||
        point.setType(type);
 | 
			
		||||
        return point;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public Point validatePoint(String position) {
 | 
			
		||||
        Point point = pointRepository.findByCode(position);
 | 
			
		||||
        if (point == null) {
 | 
			
		||||
| 
						 | 
				
			
			@ -158,4 +279,14 @@ public class PointServiceImpl implements PointService {
 | 
			
		|||
        }
 | 
			
		||||
        return pointList.get(0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public Map<String, Point> findByCodes(List<String> codes) {
 | 
			
		||||
        List<Point> pointList = pointRepository.findByCodes(codes);
 | 
			
		||||
        Map<String, Point> pointMap = new HashMap<>();
 | 
			
		||||
        for (Point point : pointList) {
 | 
			
		||||
            pointMap.put(point.getCode(), point);
 | 
			
		||||
        }
 | 
			
		||||
        return pointMap;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -71,6 +71,10 @@ public class Les extends BaseEntity implements Serializable {
 | 
			
		|||
    @ApiModelProperty(value = "终点库位")
 | 
			
		||||
    private String dstPositionCode;
 | 
			
		||||
 | 
			
		||||
    @Column(name = "`beat_code`")
 | 
			
		||||
    @ApiModelProperty(value = "停靠点")
 | 
			
		||||
    private String beatCode;
 | 
			
		||||
 | 
			
		||||
    @Column(name = "`dst_type`")
 | 
			
		||||
    @ApiModelProperty(value = "终点类型")
 | 
			
		||||
    private String dstType;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder;
 | 
			
		|||
import io.swagger.annotations.ApiModelProperty;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
import javax.validation.constraints.NotBlank;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
/**
 | 
			
		||||
 * @description:LES入参
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,35 +3,37 @@ package com.youchain.businessdata.repository;
 | 
			
		|||
import com.youchain.businessdata.domain.Les;
 | 
			
		||||
import com.youchain.appupdate.response.LesTask;
 | 
			
		||||
import org.springframework.data.jpa.repository.*;
 | 
			
		||||
 | 
			
		||||
import javax.persistence.LockModeType;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
public interface LesRepository extends JpaRepository<Les, Long>, JpaSpecificationExecutor<Les> {
 | 
			
		||||
 | 
			
		||||
    @Query(value = "select les from Les les where les.taskCode=:taskCode ")
 | 
			
		||||
    @Query(value = "from Les les where les.taskCode=:taskCode ")
 | 
			
		||||
    Les findByTaskCode(String taskCode);
 | 
			
		||||
 | 
			
		||||
    @Query(value = " from Les les where les.agvTaskId is null and les.onlineNo=:onlineNo and les.srcPositionCode=:srcPositionCode and les.status='OPEN' ")
 | 
			
		||||
    @Query(value = "from Les les where les.srcPositionCode=:srcPositionCode and les.onlineNo=:onlineNo and les.agvTaskId is null and les.status='OPEN' ")
 | 
			
		||||
    List<Les> findByOnlineNo(String srcPositionCode, String onlineNo);
 | 
			
		||||
 | 
			
		||||
    @Query(value = " from Les les where les.agvTaskId=:agvTaskId and les.dstPositionCode=:currentPositionCode and les.status='OPEN' ")
 | 
			
		||||
    List<Les> findByAgvTaskId(Long agvTaskId, String currentPositionCode);
 | 
			
		||||
    @Query(value = "from Les les where les.agvTaskId=:agvTaskId and les.beatCode=:beatCode and les.status='OPEN' ")
 | 
			
		||||
    List<Les> findByAgvTaskId(Long agvTaskId, String beatCode);
 | 
			
		||||
 | 
			
		||||
    @Query(value = "from Les les where les.srcPositionCode=:srcPositionCode and les.boxNo in (:boxNos) and les.agvTaskId is null and les.status='OPEN' ")
 | 
			
		||||
    List<Les>  findByBoxNoAndPoint(String srcPositionCode, List<String> boxNos);
 | 
			
		||||
 | 
			
		||||
    @Query(value = "select " +
 | 
			
		||||
            "new com.youchain.appupdate.response.LesTask(les.id,les.onlineNo,les.createTime," +
 | 
			
		||||
            "les.routeCode,les.dstPositionCode,les.boxNo,les.materialCode,les.caseNum) " +
 | 
			
		||||
            "from Les les " +
 | 
			
		||||
            "where les.agvTaskId > 0 " +
 | 
			
		||||
            "and les.dstPositionCode = :dstPositionCode " +
 | 
			
		||||
            "and les.beatCode = :beatCode " +
 | 
			
		||||
            "and les.status = 'ARRIVED'")
 | 
			
		||||
    List<LesTask> findByLinePoint(String dstPositionCode);
 | 
			
		||||
 | 
			
		||||
    @Query(value = " from Les les where les.agvTaskId is null and les.srcPositionCode=:srcPositionCode and les.boxNo in (:boxNos) and les.status='OPEN' ")
 | 
			
		||||
    List<Les>  findByBoxNoAndPoint(String srcPositionCode, List<String> boxNos);
 | 
			
		||||
    List<LesTask> findByLinePoint(String beatCode);
 | 
			
		||||
 | 
			
		||||
    @Modifying
 | 
			
		||||
    @Query("update Les set agvTaskId = :agvTaskId where id in :ids")
 | 
			
		||||
    void batchUpdateAgvTaskId(Long agvTaskId,List<Long> ids);
 | 
			
		||||
 | 
			
		||||
    @Modifying
 | 
			
		||||
    @Query("update Les set status = :status,arrivedTime=now() where id in :lesIds")
 | 
			
		||||
    void batchUpdateStatus(String status,List<Long> lesIds);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,9 @@
 | 
			
		|||
package com.youchain.businessdata.service.dto;
 | 
			
		||||
 | 
			
		||||
import io.swagger.annotations.ApiModelProperty;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
import javax.persistence.Column;
 | 
			
		||||
import java.sql.Timestamp;
 | 
			
		||||
 | 
			
		||||
@Data
 | 
			
		||||
| 
						 | 
				
			
			@ -41,6 +43,9 @@ public class LesDto {
 | 
			
		|||
    //终点库位
 | 
			
		||||
    private String dstPositionCode;
 | 
			
		||||
 | 
			
		||||
    //停靠点
 | 
			
		||||
    private String beatCode;
 | 
			
		||||
 | 
			
		||||
    //终点类型
 | 
			
		||||
    private String dstType;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -489,15 +489,12 @@ public class KMReServiceImpl implements KMReService {
 | 
			
		|||
     * @param agvTask 任务
 | 
			
		||||
     */
 | 
			
		||||
    private void handleArrivedContainer(AgvTask agvTask, String currentPosition) {
 | 
			
		||||
        // 验证当前点位
 | 
			
		||||
        pointService.validatePoint(currentPosition);
 | 
			
		||||
        // 记录当前节点
 | 
			
		||||
        lesService.arrivedLes(agvTask.getId(), currentPosition);
 | 
			
		||||
        agvTask.setStatus(BizStatus.ARRIVED);
 | 
			
		||||
 | 
			
		||||
        // 更新点位路径
 | 
			
		||||
        updateSlotCode(agvTask, currentPosition);
 | 
			
		||||
 | 
			
		||||
        agvTask.setStatus(BizStatus.ARRIVED);
 | 
			
		||||
        agvTaskService.update(agvTask);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,6 +2,7 @@ package com.youchain.businessdata.service.impl;
 | 
			
		|||
 | 
			
		||||
import com.alibaba.fastjson.JSON;
 | 
			
		||||
import com.alibaba.fastjson.JSONObject;
 | 
			
		||||
import com.youchain.basicdata.domain.Point;
 | 
			
		||||
import com.youchain.basicdata.service.PointService;
 | 
			
		||||
import com.youchain.businessdata.domain.Les;
 | 
			
		||||
import com.youchain.businessdata.inputJson.LesRequest;
 | 
			
		||||
| 
						 | 
				
			
			@ -17,6 +18,7 @@ import com.youchain.modules.system.repository.DictRepository;
 | 
			
		|||
import com.youchain.utils.*;
 | 
			
		||||
import lombok.RequiredArgsConstructor;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
import org.springframework.dao.DataAccessException;
 | 
			
		||||
import org.springframework.data.domain.Page;
 | 
			
		||||
import org.springframework.data.domain.Pageable;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
| 
						 | 
				
			
			@ -24,9 +26,11 @@ import org.springframework.transaction.annotation.Transactional;
 | 
			
		|||
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.sql.SQLIntegrityConstraintViolationException;
 | 
			
		||||
import java.sql.Timestamp;
 | 
			
		||||
import java.text.SimpleDateFormat;
 | 
			
		||||
import java.util.*;
 | 
			
		||||
import java.util.stream.Collectors;
 | 
			
		||||
 | 
			
		||||
@Service
 | 
			
		||||
@Slf4j
 | 
			
		||||
| 
						 | 
				
			
			@ -107,21 +111,22 @@ public class LesServiceImpl implements LesService {
 | 
			
		|||
        //验证参数有效性
 | 
			
		||||
        validateParams(lesRequest);
 | 
			
		||||
 | 
			
		||||
        //目标库位
 | 
			
		||||
        Point dstPoint = validatePositionCode(lesRequest);
 | 
			
		||||
 | 
			
		||||
        //验证任务是否存在
 | 
			
		||||
        String taskCode = lesRequest.getTaskCode();
 | 
			
		||||
        validateLes(taskCode);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        String materialCode = lesRequest.getMaterialCode();//物料代码
 | 
			
		||||
 | 
			
		||||
        //有物料走料箱上线场景;无物料走其余场景
 | 
			
		||||
        if (StringUtils.isNotEmpty(materialCode)) {
 | 
			
		||||
            try {
 | 
			
		||||
                createLes(lesRequest);
 | 
			
		||||
                createLes(lesRequest, dstPoint);
 | 
			
		||||
            } catch (Exception e) {
 | 
			
		||||
                throw new BadRequestException(taskCode + "任务号系统已接收,请勿重复操作");
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        } else {
 | 
			
		||||
            //直接转发给AGV
 | 
			
		||||
            sendLesTask(JSON.toJSONString(lesRequest));
 | 
			
		||||
| 
						 | 
				
			
			@ -188,15 +193,10 @@ public class LesServiceImpl implements LesService {
 | 
			
		|||
    public void arrivedLes(Long agvTaskId, String currentPositionCode) {
 | 
			
		||||
        List<Les> lesList = lesRepository.findByAgvTaskId(agvTaskId, currentPositionCode);
 | 
			
		||||
        if (lesList.isEmpty()) {
 | 
			
		||||
            throw new BadRequestException("系统未识别到任务");
 | 
			
		||||
        }
 | 
			
		||||
        for (Les les : lesList) {
 | 
			
		||||
            les.setStatus(BizStatus.ARRIVED);
 | 
			
		||||
            les.setArrivedTime(new Timestamp(new Date().getTime()));
 | 
			
		||||
        }
 | 
			
		||||
        if (!lesList.isEmpty()) {
 | 
			
		||||
            lesRepository.saveAll(lesList);
 | 
			
		||||
            throw new BadRequestException(currentPositionCode + "停靠点未识别到任务");
 | 
			
		||||
        }
 | 
			
		||||
        List<Long> lesIds = lesList.stream().map(Les::getId).collect(Collectors.toList());
 | 
			
		||||
        lesRepository.batchUpdateStatus(BizStatus.ARRIVED,lesIds);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
| 
						 | 
				
			
			@ -225,7 +225,10 @@ public class LesServiceImpl implements LesService {
 | 
			
		|||
            if (lesRequest.getPositionCodePath() == null || lesRequest.getPositionCodePath().isEmpty() || lesRequest.getPositionCodePath().size() < 2) {
 | 
			
		||||
                throw new BadRequestException("节点不能为空且长度至少为2");
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Point validatePositionCode(LesRequest lesRequest) {
 | 
			
		||||
        //节点集合
 | 
			
		||||
        List<PositionCodeRequest> positionCodes = lesRequest.getPositionCodePath();
 | 
			
		||||
        //验证起点
 | 
			
		||||
| 
						 | 
				
			
			@ -234,8 +237,9 @@ public class LesServiceImpl implements LesService {
 | 
			
		|||
        //验证目标库位
 | 
			
		||||
        PositionCodeRequest dstPosition = positionCodes.get(1);
 | 
			
		||||
        pointService.validatePoint(dstPosition.getPositionCode());
 | 
			
		||||
        return pointService.validatePoint(dstPosition.getPositionCode());
 | 
			
		||||
    }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 验证任务号是否存在
 | 
			
		||||
| 
						 | 
				
			
			@ -250,7 +254,7 @@ public class LesServiceImpl implements LesService {
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    @Transactional(rollbackFor = Exception.class)
 | 
			
		||||
    public void createLes(LesRequest lesRequest) {
 | 
			
		||||
    public void createLes(LesRequest lesRequest, Point dstPoint) {
 | 
			
		||||
        //节点集合
 | 
			
		||||
        List<PositionCodeRequest> positionCodes = lesRequest.getPositionCodePath();
 | 
			
		||||
        //起点对象
 | 
			
		||||
| 
						 | 
				
			
			@ -271,6 +275,7 @@ public class LesServiceImpl implements LesService {
 | 
			
		|||
                .srcType(srcPosition.getType())
 | 
			
		||||
                .dstPositionCode(dstPosition.getPositionCode())
 | 
			
		||||
                .dstType(dstPosition.getType())
 | 
			
		||||
                .beatCode(dstPoint.getBeatCode())
 | 
			
		||||
                .build();
 | 
			
		||||
        lesRepository.save(les);
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,11 +19,8 @@ package com.youchain.businessdata.service.impl;
 | 
			
		|||
import com.youchain.basicdata.domain.Item;
 | 
			
		||||
import com.youchain.basicdata.domain.Point;
 | 
			
		||||
import com.youchain.basicdata.domain.Stock;
 | 
			
		||||
import com.youchain.basicdata.service.StockService;
 | 
			
		||||
import com.youchain.businessdata.domain.*;
 | 
			
		||||
import com.youchain.businessdata.repository.PickDetailRepository;
 | 
			
		||||
import com.youchain.businessdata.service.*;
 | 
			
		||||
import com.youchain.exception.BadRequestException;
 | 
			
		||||
import com.youchain.utils.*;
 | 
			
		||||
import com.youchain.businessdata.repository.TaskRepository;
 | 
			
		||||
import com.youchain.businessdata.service.dto.TaskDto;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,40 @@
 | 
			
		|||
package com.youchain.utils;
 | 
			
		||||
 | 
			
		||||
import java.util.HashSet;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
import java.util.stream.Collectors;
 | 
			
		||||
 | 
			
		||||
public class SmartStringUtil {
 | 
			
		||||
    /**
 | 
			
		||||
     * 获取两个列表的相同的元素
 | 
			
		||||
     *
 | 
			
		||||
     * @param list1 第一个列表
 | 
			
		||||
     * @param list2 第二个列表
 | 
			
		||||
     * @return 相同元素
 | 
			
		||||
     */
 | 
			
		||||
    public static List<String> getIntersection(List<String> list1, List<String> list2) {
 | 
			
		||||
        return list1.stream()
 | 
			
		||||
                .filter(list2::contains)
 | 
			
		||||
                .collect(Collectors.toList());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 找到 list1 中存在但 list2 中不存在的元素
 | 
			
		||||
     *
 | 
			
		||||
     * @param list1 第一个列表
 | 
			
		||||
     * @param list2 第二个列表
 | 
			
		||||
     * @return 不同
 | 
			
		||||
     */
 | 
			
		||||
    public static List<String> getDifference(List<String> list1, List<String> list2) {
 | 
			
		||||
        Set<String> existingLocationCodesSet = new HashSet<>(list2);
 | 
			
		||||
        return list1.stream()
 | 
			
		||||
                .filter(code -> !existingLocationCodesSet.contains(code))
 | 
			
		||||
                .collect(Collectors.toList());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static boolean containsAllIgnoreCase(List<String> requiredColumns, List<String> headers) {
 | 
			
		||||
        Set<String> headersSet = new HashSet<>(headers);
 | 
			
		||||
        return headersSet.containsAll(requiredColumns);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -4,7 +4,7 @@ spring:
 | 
			
		|||
    druid:
 | 
			
		||||
      db-type: com.alibaba.druid.pool.DruidDataSource
 | 
			
		||||
      driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
 | 
			
		||||
      url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.0.159}:${DB_PORT:3306}/${DB_NAME:nio_wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
 | 
			
		||||
      url: jdbc:log4jdbc:mysql://${DB_HOST:47.117.45.79}:${DB_PORT:3306}/${DB_NAME:nio_wms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
 | 
			
		||||
      username: ${DB_USER:root}
 | 
			
		||||
      password: ${DB_PWD:Youchain@56}
 | 
			
		||||
      # 初始连接数
 | 
			
		||||
| 
						 | 
				
			
			@ -45,7 +45,7 @@ spring:
 | 
			
		|||
          enabled: true
 | 
			
		||||
          # 记录慢SQL
 | 
			
		||||
          log-slow-sql: true
 | 
			
		||||
          slow-sql-millis: 1000
 | 
			
		||||
          slow-sql-millis: 10000
 | 
			
		||||
          merge-sql: true
 | 
			
		||||
        wall:
 | 
			
		||||
          config:
 | 
			
		||||
| 
						 | 
				
			
			@ -119,17 +119,14 @@ file:
 | 
			
		|||
    path: ~/file/
 | 
			
		||||
    avatar: ~/avatar/
 | 
			
		||||
  linux:
 | 
			
		||||
    path: /home/eladmin/file/
 | 
			
		||||
    avatar: /home/eladmin/avatar/
 | 
			
		||||
    path: /home/f3/eladmin/file/
 | 
			
		||||
    avatar: /home/f3/eladmin/avatar/
 | 
			
		||||
  windows:
 | 
			
		||||
    path: C:\eladmin\file\
 | 
			
		||||
    avatar: C:\eladmin\avatar\
 | 
			
		||||
  # 文件大小 /M
 | 
			
		||||
  maxSize: 100
 | 
			
		||||
  maxSize: 200
 | 
			
		||||
  avatarMaxSize: 5
 | 
			
		||||
minidao:
 | 
			
		||||
  base-package: org.jeecg.modules.jmreport.desreport.dao*
 | 
			
		||||
  db-type: mysql
 | 
			
		||||
task:
 | 
			
		||||
  onOff:
 | 
			
		||||
    zCJXBTask: false
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,7 +6,7 @@ spring:
 | 
			
		|||
  freemarker:
 | 
			
		||||
    check-template-location: false
 | 
			
		||||
  profiles:
 | 
			
		||||
    active: dev
 | 
			
		||||
    active: prod
 | 
			
		||||
  jackson:
 | 
			
		||||
    time-zone: GMT+8
 | 
			
		||||
  data:
 | 
			
		||||
| 
						 | 
				
			
			@ -35,13 +35,14 @@ spring:
 | 
			
		|||
 | 
			
		||||
  redis:
 | 
			
		||||
    #数据库索引
 | 
			
		||||
    database: ${REDIS_DB:3}
 | 
			
		||||
    #host: ${REDIS_HOST:192.168.0.159}
 | 
			
		||||
    #password: ${REDIS_PWD:}
 | 
			
		||||
    #port: ${REDIS_PORT:6379}
 | 
			
		||||
    database: ${REDIS_DB:1}
 | 
			
		||||
    host: ${REDIS_HOST:47.117.45.79}
 | 
			
		||||
    password: ${REDIS_PWD:123456}
 | 
			
		||||
 | 
			
		||||
    #database: ${REDIS_DB:3}
 | 
			
		||||
    #host: ${REDIS_HOST:127.0.0.1}
 | 
			
		||||
    #password: ${REDIS_PWD:}
 | 
			
		||||
 | 
			
		||||
    host: ${REDIS_HOST:127.0.0.1}
 | 
			
		||||
    password: ${REDIS_PWD:}
 | 
			
		||||
    port: ${REDIS_PORT:6379}
 | 
			
		||||
    #连接超时时间
 | 
			
		||||
    timeout: 5000
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue