skyouc
16 小时以前 523d8cf68615134c7780f74933e70a14edb60f01
wcs联调功能优化
15个文件已修改
233 ■■■■ 已修改文件
rsf-admin/src/config/setting.js 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/i18n/zh.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/wave/WaveList.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/task/TaskList.jsx 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-open-api/src/main/resources/application-dev.yml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-open-api/src/main/resources/application-prod.yml 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-open-api/src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AutoRunSchedules.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/system/constant/GlobalConfigCode.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/resources/application-prod.yml 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/config/setting.js
@@ -45,4 +45,6 @@
export const DEFAULT_TYPE = 15; //默认效率优化  15:效率优化 16:先进先出
export const DEFAULT_WAVE_AUTO_EXCE = 'WaveAutoExce'; //
export const DEFAULT_WAVE_AUTO_EXCE = 'WaveAutoExce'; //
export const AUTO_RUN_CHECK_ORDERS = 'AUTO_RUN_CHECK_ORDERS'; //
rsf-admin/src/i18n/zh.js
@@ -1331,6 +1331,7 @@
        batch: '批量操作',
        confirm: '确认',
        start: '自动下发',
        autoStartLocs: '自动跑库',
        stopPub: '终止下发',
        pause: '暂停',
        pick: '拣料',
rsf-admin/src/page/orders/wave/WaveList.jsx
@@ -152,7 +152,7 @@
                    rowClick={(id, resource, record) => false}
                    expand={<WavePannel />}
                    expandSingle={true}
                    omit={['id', 'createTime', 'createBy', 'createBy$', 'memo']}
                    omit={['id', 'createTime', 'createBy', 'createBy$']}
                >
                    <NumberField source="id" />
                    <TextField source="code" label="table.field.wave.code" />
rsf-admin/src/page/task/TaskList.jsx
@@ -37,7 +37,10 @@
import TaskPanel from "./TaskPanel";
import MyField from "../components/MyField";
import ConfirmButton from "../components/ConfirmButton";
import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE, AUTO_RUN_CHECK_ORDERS } from '@/config/setting';
import PlayArrowOutlinedIcon from '@mui/icons-material/PlayArrowOutlined';
import PauseIcon from '@mui/icons-material/Pause';
import PauseCircleOutlineIcon from '@mui/icons-material/PauseCircleOutline';
import * as Common from '@/utils/common';
import ColorizeOutlinedIcon from '@mui/icons-material/ColorizeOutlined';
import GradingOutlinedIcon from '@mui/icons-material/GradingOutlined';
@@ -67,7 +70,19 @@
    const translate = useTranslate();
    const refresh = useRefresh();
    const [drawerVal, setDrawerVal] = useState(false);
    const [autoExce, setAutoExce] = useState(false);
    const dict = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_warehouse_type')) || [];
    useEffect(() => {
        getConfig()
    }, [])
    const getConfig = async () => {
        const { data: { code, data, msg } } = await request.get('/config/flag/' + AUTO_RUN_CHECK_ORDERS);
        if (code === 200) {
            setAutoExce(JSON.parse(data?.val))
        }
    }
    // useEffect(() => {
    //     const interval = setInterval(() => {
@@ -127,6 +142,8 @@
                sort={{ field: "sort", order: "desc" }}
                actions={(
                    <TopToolbar>
                        <BulkAutoStartButton autoExce={autoExce} setAutoExce={setAutoExce}/>
                        <BulkAutoPauseButton autoExce={autoExce} setAutoExce={setAutoExce} />
                        <FilterButton />
                        <SelectColumnsButton preferenceKey='task' />
                    </TopToolbar>
@@ -205,6 +222,40 @@
    return (record?.taskStatus == 199 && record?.taskType == 107 ? <ConfirmButton label={"toolbar.check"} startIcon={<GradingOutlinedIcon />} onConfirm={checkClick} /> : <></>)
}
/**自动下发任务**/
const BulkAutoStartButton = ({ autoExce, setAutoExce }) => {
    const notify = useNotify();
    const startClick = async () => {
        setAutoExce(true)
        const { data: { code, data, msg } } = await request.post('/config/byFlag', { val: true, flag: 'AUTO_RUN_CHECK_ORDERS' });
        if (code === 200) {
            notify(msg);
        } else {
            notify(msg);
        }
    }
    return (
        !autoExce ? <Button label="toolbar.autoStartLocs" onClick={startClick} startIcon={<PlayArrowOutlinedIcon />} /> : <></>
    )
}
const BulkAutoPauseButton = ({ autoExce, setAutoExce }) => {
    const notify = useNotify();
    const pauseClick = async () => {
        const { data: { code, data, msg } } = await request.post('/config/byFlag', { val: false, flag: 'AUTO_RUN_CHECK_ORDERS' });
        if (code === 200) {
            notify(msg);
            setAutoExce(false)
        } else {
            notify(msg);
        }
    }
    return (
        autoExce ? <Button label="toolbar.pause" onClick={pauseClick} startIcon={<PauseIcon />} /> : <></>
    )
}
/**
 * 拣料出库
 * @returns 
rsf-open-api/src/main/resources/application-dev.yml
@@ -14,10 +14,10 @@
#    url: jdbc:mysql://47.76.147.249:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
#    username: rsf
    username: root
    url: jdbc:mysql://127.0.0.1:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
    password: 34821015
#    url: jdbc:mysql://10.10.10.200:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
#    password: xltys1995
#    url: jdbc:mysql://127.0.0.1:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
#    password: 34821015
    url: jdbc:mysql://10.10.10.200:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
    password: xltys1995
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      initial-size: 5
rsf-open-api/src/main/resources/application-prod.yml
@@ -1,5 +1,5 @@
server:
  port: 8080
  port: 8081
  servlet:
    context-path: /@pom.artifactId@
@@ -10,9 +10,9 @@
    static-path-pattern: /**
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://192.168.4.24:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
    url: jdbc:mysql://10.10.10.200:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: 34821015
    password: xltys1995
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      initial-size: 5
@@ -66,3 +66,17 @@
stock:
  flagAvailable: true
  #平台接口信息配置(如:ERP, QMS, WCS等)
  platform:
    #RCS链接
    rcs:
      #链接
      host: http://10.10.10.200
      #端口
      port: 8088
    wms:
      #链接
      host: http://10.10.10.200
      #端口
      port: 8085
rsf-open-api/src/main/resources/application.yml
@@ -1,6 +1,6 @@
spring:
  profiles:
    active: dev
    active: prod
mybatis-plus:
  mapper-locations: classpath:mapper/*/*.xml
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
@@ -471,13 +471,25 @@
        }
        /**料箱搬运中, 修改站点状态*/
        if (params.getEventType().equals(CallBackEvent.CALL_BACK_EVENT_OBIT.event)) {
//        if (params.getEventType().equals(CallBackEvent.CALL_BACK_EVENT_OBIT.event)) {
//            if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type)
//                    || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_IN.type)
//                    || task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_IN.type)
//                    || task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_IN.type)
//                    || task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_IN.type)
//                    || task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) {
//
//            }
//            /**取箱完成, 修改任务状态*/
//        } else
        if (params.getEventType().equals(CallBackEvent.CALL_BACK_EVENT_END.event)) {
            if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type)
                    || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_IN.type)
                    || task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_IN.type)
                    || task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_IN.type)
                    || task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_IN.type)
                    || task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) {
                if (!task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) {
                    BasStation station = basStationService.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName, task.getOrgSite()));
                    if (Objects.isNull(station)) {
@@ -490,11 +502,20 @@
                        }
                    }
                }
                if (!taskService.update(new LambdaUpdateWrapper<Task>()
                        .lt(Task::getTaskStatus, TaskStsType.COMPLETE_IN.id)
                        .eq(Task::getTaskCode, task.getTaskCode())
                        .set(Task::getTaskStatus, TaskStsType.COMPLETE_IN.id))) {
                    throw new CoolException("任务状态修改失败!!");
                }
            } else if (task.getTaskType().equals(TaskType.TASK_TYPE_OUT.type)
                    || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_AGAIN_OUT.type)
                    || task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_OUT.type)
                    || task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type)
                    || task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_OUT.type)) {
                /**修改出库站点状态*/
                BasStation station = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
                        .eq(BasStation::getStationName, task.getTargSite()));
@@ -507,26 +528,7 @@
                        throw new CoolException("站点状态修改失败!!");
                    }
                }
            }
            /**取箱完成, 修改任务状态*/
        } else if (params.getEventType().equals(CallBackEvent.CALL_BACK_EVENT_END.event)) {
            if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type)
                    || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_IN.type)
                    || task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_IN.type)
                    || task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_IN.type)
                    || task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_IN.type)
                    || task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) {
                if (!taskService.update(new LambdaUpdateWrapper<Task>()
                        .lt(Task::getTaskStatus, TaskStsType.COMPLETE_IN.id)
                        .eq(Task::getTaskCode, task.getTaskCode())
                        .set(Task::getTaskStatus, TaskStsType.COMPLETE_IN.id))) {
                    throw new CoolException("任务状态修改失败!!");
                }
            } else if (task.getTaskType().equals(TaskType.TASK_TYPE_OUT.type)
                    || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_AGAIN_OUT.type)
                    || task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_OUT.type)
                    || task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type)
                    || task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_OUT.type)) {
                if (!taskService.update(new LambdaUpdateWrapper<Task>().eq(Task::getTaskCode, task.getTaskCode())
                        .lt(Task::getTaskStatus, TaskStsType.COMPLETE_OUT.id)
                        .set(Task::getTaskStatus, TaskStsType.COMPLETE_OUT.id))) {
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AutoRunSchedules.java
@@ -13,7 +13,9 @@
import com.vincent.rsf.server.manager.enums.*;
import com.vincent.rsf.server.manager.service.*;
import com.vincent.rsf.server.manager.service.impl.BasStationServiceImpl;
import com.vincent.rsf.server.system.constant.GlobalConfigCode;
import com.vincent.rsf.server.system.constant.SerialRuleCode;
import com.vincent.rsf.server.system.entity.Config;
import com.vincent.rsf.server.system.service.ConfigService;
import com.vincent.rsf.server.system.utils.SerialRuleUtils;
import lombok.extern.slf4j.Slf4j;
@@ -104,13 +106,12 @@
    @Scheduled(cron = "0/35 * * * * ?")
    @Transactional(rollbackFor = Exception.class)
    public void autoCheckComplete() {
//        Boolean autoRunArea = configService.getVal("AUTO_RUN_CHECK_ORDERS", Boolean.class);
//        if (!autoRunArea) {
//            return;
//        }
        //获取任务列表中,为盘点出库的任务
        List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>()
                .in(Task::getTaskType, Arrays.asList(TaskType.TASK_TYPE_CHECK_OUT.type, TaskType.TASK_TYPE_CHECK_IN.type)));
                .in(Task::getTaskType, Arrays.asList(TaskType.TASK_TYPE_CHECK_OUT.type,
                        TaskType.TASK_TYPE_PICK_IN.type,
                        TaskType.TASK_TYPE_PICK_AGAIN_OUT.type,
                        TaskType.TASK_TYPE_CHECK_IN.type)));
        if (!tasks.isEmpty()) {
            tasks.forEach(task -> {
@@ -122,19 +123,13 @@
                    if (task.getTaskStatus().equals(TaskStsType.WAVE_SEED.id)) {
                        if (!stationService.update(new LambdaUpdateWrapper<BasStation>()
                                .eq(BasStation::getStationName, task.getTargSite())
                                .set(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_F.type))) {
                                .set(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_R.type))) {
                            log.error("站点状态修改完成失败,当前任务状态:", task.getTaskStatus());
//                            throw new CoolException("站点状态修改失败!!");
//                                throw new CoolException("站点状态修改失败!!");
                        }
                        try {
                            taskService.pickOrCheckTask(task.getId(), Constants.TASK_TYPE_OUT_CHECK);
                            taskService.pickOrCheckTask(task.getId(),  task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type) ? Constants.TASK_TYPE_OUT_CHECK : "");
                            if (!stationService.update(new LambdaUpdateWrapper<BasStation>()
                                    .eq(BasStation::getStationName, task.getTargSite())
                                    .set(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_R.type))) {
                                log.error("站点状态修改完成失败,当前任务状态:", task.getTaskStatus());
//                                throw new CoolException("站点状态修改失败!!");
                            }
                        } catch (Exception e) {
                            log.error("error====>", e);
                        }
@@ -152,10 +147,9 @@
     * @version 1.0
     */
    @Scheduled(cron = "0/25 * * * * ?")
//    @Scheduled(cron = "0 0/05 * * * ?  ")
    public void genRun() {
        Boolean flagAuto = configService.getVal("AUTO_RUN_CHECK_ORDERS", Boolean.class);
        if (!flagAuto) {
        Config config = configService.getOne(new LambdaQueryWrapper<Config>().eq(Config::getFlag, GlobalConfigCode.AUTO_RUN_CHECK_ORDERS));
        if (!Boolean.parseBoolean(config.getVal())) {
            return;
        }
        //获取任务列表中,为盘点出库的任务
@@ -232,12 +226,6 @@
                    continue;
                }
                try {
                    //生成盘点出库任务,站点预约
                    if (!stationService.update(new LambdaUpdateWrapper<BasStation>()
                            .eq(BasStation::getStationName, deviceSite.getSite())
                            .set(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_S.type))) {
                        throw new CoolException("站点状态更新失败!!");
                    }
                    locItemService.generateTask(TaskResouceType.TASK_RESOUCE_CHECK_TYPE.val, locToTaskParams, getLoginUserId());
                } catch (Exception e) {
                    throw new CoolException(e.getMessage());
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
@@ -234,22 +234,26 @@
//        }
    }
    /**
     * 非光电站点任务下发
     */
    @Scheduled(cron = "0/5 * * * * ?  ")
    @Transactional(rollbackFor = Exception.class)
    public void pubTaskToWcs() {
        Long loginUserId = SystemAuthUtils.getLoginUserId();
        List<Integer> list = Arrays.asList(TaskType.TASK_TYPE_IN.type, TaskType.TASK_TYPE_OUT.type, TaskType.TASK_TYPE_LOC_MOVE.type, TaskType.TASK_TYPE_EMPITY_IN.type
                , TaskType.TASK_TYPE_CHECK_IN.type, TaskType.TASK_TYPE_MERGE_IN.type, TaskType.TASK_TYPE_EMPITY_OUT.type,
                , TaskType.TASK_TYPE_CHECK_IN.type, TaskType.TASK_TYPE_MERGE_IN.type, TaskType.TASK_TYPE_EMPITY_OUT.type, TaskType.TASK_TYPE_PICK_IN.type,
                TaskType.TASK_TYPE_PICK_AGAIN_OUT.type, TaskType.TASK_TYPE_CHECK_OUT.type, TaskType.TASK_TYPE_MERGE_OUT.type);
        List<Integer> integers = Arrays.asList(TaskStsType.GENERATE_IN.id, TaskStsType.GENERATE_OUT.id);
        List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>()
                .in(Task::getTaskType, list)
                .in(Task::getTaskStatus, integers)
                .in(Task::getTaskStatus, integers).last("limit 1")
                .orderByDesc(Task::getSort));
        for (Task task : tasks) {
            /**移库不做站点操作*/
            if (!task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) {
                BasStation station = basStationService.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName,
                BasStation station = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
                        .eq(BasStation::getStationName,
                        task.getTaskStatus().equals(TaskStsType.GENERATE_IN.id) ? task.getOrgSite() : task.getTargSite()));
                if (station.getType().equals(StationTypeEnum.STATION_TYPE_MUTI.type)) {
                    continue;
@@ -366,16 +370,25 @@
        }
        /**判断是否光电站点,非光店站点需管控站点状态*/
        if (station.getType().equals(StationTypeEnum.STATION_TYPE_NORMAL.type)) {
            if (task.getTaskType() <= TaskType.TASK_TYPE_CHECK_IN.type && task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) {
            if (task.getTaskType() <= TaskType.TASK_TYPE_CHECK_IN.type && !task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) {
                if (!station.getUseStatus().equals(LocStsType.LOC_STS_TYPE_F.type)) {
                    throw new CoolException("当前站点不是F.在库状态!!");
                    throw new CoolException("当前站点不是F.在库状态状态!!");
                }
                station.setUseStatus(LocStsType.LOC_STS_TYPE_R.type);
                if (!basStationService.updateById(station)) {
                    throw new CoolException("站点状态更新失败!!");
                }
            } else if (task.getTaskType() >= TaskType.TASK_TYPE_OUT.type) {
                if (!station.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) {
                    throw new CoolException("目标站点不是O.空闲状态!!");
                    throw new CoolException("目标站点不处O.空闲状态,无法预约出库。");
                }
                station.setUseStatus(LocStsType.LOC_STS_TYPE_S.type);
                if (!basStationService.updateById(station)) {
                    throw new CoolException("站点状态更新失败!!");
                }
            }
        }
        /**移库参数*/
        if (task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) {
            itemParam.setOriLoc(task.getOrgLoc()).setDestLoc(task.getTargLoc());
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
@@ -137,7 +137,7 @@
                    //拣料出库 -- 盘点出库
                    DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>()
                            .eq(DeviceSite::getSite, siteNo)
                            .eq(DeviceSite::getChannel, loc.getChannel())
                            .eq(!Objects.isNull(loc.getChannel()),DeviceSite::getChannel, loc.getChannel())
                            .eq(DeviceSite::getType, TaskType.TASK_TYPE_PICK_AGAIN_OUT.type));
                    if (Objects.isNull(deviceSite)) {
                        throw new CoolException("站点不支持拣料出库!!");
@@ -146,7 +146,7 @@
                } else {
                    //全板出库
                    DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>()
                            .eq(DeviceSite::getChannel, loc.getChannel())
                            .eq(!Objects.isNull(loc.getChannel()), DeviceSite::getChannel, loc.getChannel())
                            .eq(DeviceSite::getSite, siteNo).eq(DeviceSite::getType, TaskType.TASK_TYPE_OUT.type));
                    if (Objects.isNull(deviceSite)) {
                        throw new CoolException("站点不支持全板出库!!");
@@ -294,7 +294,7 @@
            //目标库位为空,自动获取新库位
            DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>()
                    .eq(DeviceSite::getType, TaskType.TASK_TYPE_LOC_MOVE.type)
                    .eq(DeviceSite::getChannel, orgLoc.getChannel()), false);
                    .eq(!Objects.isNull(orgLoc.getChannel()), DeviceSite::getChannel, orgLoc.getChannel()), false);
            if (Objects.isNull(deviceSite)) {
                throw new CoolException("站点信息不存在!!");
            }
rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java
@@ -157,7 +157,7 @@
                        orderOutItemDto.setLocItem(locItem);
                        List<DeviceSite> deviceSites = deviceSiteService.list(new LambdaQueryWrapper<DeviceSite>()
                                .eq(DeviceSite::getChannel, loc.getChannel())
                                .eq(!Objects.isNull(loc.getChannel()), DeviceSite::getChannel, loc.getChannel())
                                .eq(DeviceSite::getType, issued.doubleValue() >= locItem.getAnfme() && itemList.size() == 1 ? TaskType.TASK_TYPE_OUT.type : TaskType.TASK_TYPE_PICK_AGAIN_OUT.type)
                        );
rsf-server/src/main/java/com/vincent/rsf/server/system/constant/GlobalConfigCode.java
@@ -19,4 +19,6 @@
    /**波次自动下发任务*/
    public final static String WAVE_AUTO_EXCE_TASK = "WaveAutoExce";
    public final static String AUTO_RUN_CHECK_ORDERS = "AUTO_RUN_CHECK_ORDERS";
}
rsf-server/src/main/resources/application-prod.yml
@@ -1,5 +1,5 @@
server:
  port: 8080
  port: 8085
  servlet:
    context-path: /@pom.artifactId@
@@ -10,9 +10,9 @@
    static-path-pattern: /**
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://192.168.4.24:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
    url: jdbc:mysql://10.10.10.200:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: 34821015
    password: xltys1995
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      initial-size: 5
@@ -66,3 +66,25 @@
stock:
  flagAvailable: true
  #平台接口信息配置(如:ERP, QMS, WCS等)
  platform:
    #企业ERP平台
    erp:
      #localhost
      host: http://10.10.10.200
      #端口号
      port: 8085
      #接品链接前缀
      pre-path: rsf-server
      #接口明细
      api:
        #质检上报接口
        notify-inspect: /report/inspect
    rcs:
      #链接
      host: http://10.10.10.200
      #端口
      port: 8081
rsf-server/src/main/resources/application.yml
@@ -1,6 +1,6 @@
spring:
  profiles:
    active: dev
    active: prod
config:
  system-name: @pom.artifactId@