yangys
2024-11-02 27eb2df01ab873bc7f1451ff5865ed66b2876159
去掉dmpvar相关的代码
已修改9个文件
191 ■■■■■ 文件已修改
smart-man-boot/src/main/java/com/qianwen/smartman/modules/smis/controller/WorkstationController.java 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/smis/service/IWorkstationService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/smis/service/IWorkstationWcsService.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/smis/service/impl/CommonGroupServiceImpl.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/smis/service/impl/WorkstationServiceImpl.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/smis/service/impl/WorkstationWcsServiceImpl.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/visual/controller/VisualStatusController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/visual/service/IVisualStatusService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/visual/service/impl/VisualStatusServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
smart-man-boot/src/main/java/com/qianwen/smartman/modules/smis/controller/WorkstationController.java
@@ -1,14 +1,21 @@
package com.qianwen.smartman.modules.smis.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import com.qianwen.smartman.common.cache.RegionCache;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.qianwen.core.boot.ctrl.BladeController;
import com.qianwen.core.excel.util.ExcelUtil;
import com.qianwen.core.mp.support.Condition;
@@ -22,34 +29,25 @@
import com.qianwen.core.secure.annotation.PreAuth;
import com.qianwen.core.tenant.annotation.NonDS;
import com.qianwen.core.tool.api.R;
import com.qianwen.smartman.common.cache.RegionCache;
import com.qianwen.smartman.modules.resource.enums.TemplateEnum;
import com.qianwen.smartman.modules.resource.service.ISystemResourceService;
import com.qianwen.smartman.modules.smis.dto.WorkstationRealTimeStatusDTO;
import com.qianwen.smartman.modules.smis.entity.WorkstationDatapoints;
import com.qianwen.smartman.modules.smis.excel.WorkstationImport;
import com.qianwen.smartman.modules.smis.service.IDmpVariablesService;
import com.qianwen.smartman.modules.smis.service.IWorkstationService;
import com.qianwen.smartman.modules.smis.service.WorkstationDatapointsService;
import com.qianwen.smartman.modules.smis.vo.DmpVariablesVO;
import com.qianwen.smartman.modules.smis.vo.FmsWorkstationGroupVO;
import com.qianwen.smartman.modules.smis.vo.FmsWorkstationQueryVO;
import com.qianwen.smartman.modules.smis.vo.MachineDmpVariablesVO;
import com.qianwen.smartman.modules.smis.vo.WorkMachineEasyVO;
import com.qianwen.smartman.modules.smis.vo.WorkstationChangeCalendarVO;
import com.qianwen.smartman.modules.smis.vo.WorkstationDatapointsVO;
import com.qianwen.smartman.modules.smis.vo.WorkstationPageQueryVO;
import com.qianwen.smartman.modules.smis.vo.WorkstationRealTimeStatusVO;
import com.qianwen.smartman.modules.smis.vo.WorkstationSubmitVO;
import com.qianwen.smartman.modules.smis.vo.WorkstationVO;
import com.qianwen.smartman.modules.resource.enums.TemplateEnum;
import com.qianwen.smartman.modules.resource.service.ISystemResourceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@Api(value = "工位管理", tags = {"工位管理"})
@RestController
@@ -59,8 +57,8 @@
public class WorkstationController extends BladeController {
    @Autowired
    private IWorkstationService workstationService;
    @Autowired
    private IDmpVariablesService dmpVariablesService;
    //@Autowired
    //private IDmpVariablesService dmpVariablesService;
    @Autowired
    private ISystemResourceService systemResourceService;
@@ -71,7 +69,7 @@
    public R<WorkstationVO> submit(@Valid @RequestBody WorkstationSubmitVO workstationSubmitVO) {
        return R.data(this.workstationService.submit(workstationSubmitVO));
    }
    /*
    @GetResource({"/listDmpVariablesByMachineId"})
    @ApiOperation("根据机器id获取采集项")
    public R<List<DmpVariablesVO>> listDmpVariablesByMachineId(@RequestParam Long machineId) {
@@ -84,7 +82,7 @@
    public R<MachineDmpVariablesVO> listDmpVariablesByWorkstationId(@RequestParam Long workstationId) {
        return R.data(this.dmpVariablesService.listByWorkstationId(workstationId));
    }
    */
   
    
    @GetMapping({"/get"})
@@ -169,13 +167,14 @@
    public R<IPage<WorkstationRealTimeStatusVO>> getRealTimeStatus(@RequestBody WorkstationRealTimeStatusDTO dto, Query query) {
        return R.data(this.workstationService.getRealTimeStatus(dto, query));
    }
    /*
    @PreAuth
    @GetResource({"/get-dmp-variables"})
    @ApiOperation(value = "获得采集项", notes = "获得采集项")
    public R<List<DmpVariablesVO>> getDmpVariables(@RequestParam("workstationId") @ApiParam(value = "工位ID", required = true) String workstationId, @RequestParam("machineId") @ApiParam(value = "机器Id", required = false) String machineId) {
        return R.data(this.workstationService.getDmpVariables(workstationId, machineId));
    }
    */
    @PostResource({"/get-workstation-by-groupIds"})
    @ApiOperation("多个工位组查询工位")
smart-man-boot/src/main/java/com/qianwen/smartman/modules/smis/service/IWorkstationService.java
@@ -77,13 +77,13 @@
     */
    IPage<WorkstationRealTimeStatusVO> getRealTimeStatus(WorkstationRealTimeStatusDTO dto, Query query);
    List<RealTimeStatusVO> getRealTimeProperties(Long workstationId, Long machineId);
    //List<RealTimeStatusVO> getRealTimeProperties(Long workstationId, Long machineId);
    IPage<Workstation> listWorkStationOnShiftIndex(List<String> ids, LocalDate localDate, Query query, Integer shift, Integer type);
    List<Workstation> listWorkStationOnShift(List<Long> ids, LocalDate localDate, List<Integer> shifts, Integer type);
    List<DmpVariablesVO> getDmpVariables(String workstationId, String machineId);
    //List<DmpVariablesVO> getDmpVariables(String workstationId, String machineId);
    Integer countWorkStationOnShiftIndex(List<String> ids, LocalDate localDate, Integer shift, Integer type);
smart-man-boot/src/main/java/com/qianwen/smartman/modules/smis/service/IWorkstationWcsService.java
@@ -1,14 +1,18 @@
package com.qianwen.smartman.modules.smis.service;
import java.util.List;
import com.qianwen.core.mp.base.BaseService;
import com.qianwen.smartman.modules.smis.entity.WorkstationWcs;
import com.qianwen.smartman.modules.smis.vo.WorkstationWcsSaveNewVO;
import com.qianwen.smartman.modules.smis.vo.WorkstationWcsSaveVO;
import com.qianwen.smartman.modules.smis.vo.WorkstationWcsVO;
/**
 * TODO:这个类可能都没有用了,关注
 */
public interface IWorkstationWcsService extends BaseService<WorkstationWcs> {
    List<WorkstationWcsVO> insert(List<WorkstationWcsSaveVO> workstationWcsSaveVOList);
    //List<WorkstationWcsVO> insert(List<WorkstationWcsSaveVO> workstationWcsSaveVOList);
    Boolean deleteByWorkstationIdList(List<Long> ids);
smart-man-boot/src/main/java/com/qianwen/smartman/modules/smis/service/impl/CommonGroupServiceImpl.java
@@ -520,6 +520,17 @@
            }).distinct();
        }).collect(Collectors.toList()));
        */
        list.addAll( workstations.stream().flatMap(o1 -> {
            Long id = o1.getId();
            return itemList.stream().filter(o22 -> {
                Integer distinguish = commonGroupTypeVO.getDistinguish();
                boolean result = id.equals(o22.getItemId());
                return result;
            }).map(o23 -> {
                return WorkstationInGroupVO.builder().id(id).parentId(o23.getGroupId()).title(o1.getName()).code(o1.getCode()).isWorkstation(Boolean.TRUE).isGroup(Boolean.FALSE).avatar(o1.getAvatar()).ftpCatalogue(o1.getFtpCatalogue()).build();
            }).distinct();
        }).collect(Collectors.toList()));
        return list;
    }
smart-man-boot/src/main/java/com/qianwen/smartman/modules/smis/service/impl/WorkstationServiceImpl.java
@@ -87,7 +87,6 @@
import com.qianwen.smartman.modules.smis.service.ICalendarService;
import com.qianwen.smartman.modules.smis.service.ICommonGroupOfItemService;
import com.qianwen.smartman.modules.smis.service.ICommonGroupService;
import com.qianwen.smartman.modules.smis.service.IDmpVariablesService;
import com.qianwen.smartman.modules.smis.service.IMachineService;
import com.qianwen.smartman.modules.smis.service.IWorkstationOfMachineService;
import com.qianwen.smartman.modules.smis.service.IWorkstationService;
@@ -135,8 +134,7 @@
    private WorkstationMapper workstationMapper;
    @Autowired
    private OssBuilder ossBuilder;
    @Autowired
    private IDmpVariablesService dmpVariablesService;
    @Autowired
    private IWorkstationWorkbenchService workbenchService;
@@ -589,65 +587,11 @@
        return manualBuildIPage(query, buildProperties(result, dto.getDeviceStatus()));
    }
    @Override
    public List<RealTimeStatusVO> getRealTimeProperties(Long workstationId, Long machineId) {
        List<RealTimeStatusVO> properties = new ArrayList<>();
        Map<String, Object> map = WorkstationCache.getWorkstationRealTime(String.valueOf(workstationId));
        List<DmpVariablesVO> list = this.dmpVariablesService.getDmpVariablesByWorkstationId(workstationId);
        if (CollectionUtil.isNotEmpty(list)) {
            list.forEach(dmpVariablesVO -> {
                RealTimeStatusVO vo = new RealTimeStatusVO();
                vo.setKey(dmpVariablesVO.getName());
                vo.setName(dmpVariablesVO.getDescription());
                vo.setUnit(dmpVariablesVO.getDmpType());
                vo.setSort(dmpVariablesVO.getIdx());
                vo.setWcsDataType(dmpVariablesVO.getWcsDataType());
                vo.setBigScreen(dmpVariablesVO.getBigScreen());
                vo.setRealTimeData(dmpVariablesVO.getRealTimeData());
                if (map.containsKey(dmpVariablesVO.getName())) {
                    TelemetryDataResponseDTO t = (TelemetryDataResponseDTO) MapUtils.getObject(map, dmpVariablesVO.getName());
                    vo.setValue(t.getV());
                }
                properties.add(vo);
            });
        }
        return properties;
    }
    public Map<Long, List<RealTimeStatusVO>> getRealTimeProperties(List<Long> workstationIdList) {
        Map<Long, List<RealTimeStatusVO>> properties = new HashMap<>();
        //在这里!!!!
        //顶顶顶顶
        //List<DmpVariablesVO> list = this.dmpVariablesService.getDmpVariablesByWorkstationIds(workstationIdList);
        //this.wsDpService.getDatapointsByWorkstationIds();
        //if (Func.isNotEmpty(list)) {
            /*
            Map<Long, List<DmpVariablesVO>> dmpVariablesMap =list.stream().collect(Collectors.groupingBy((v0) -> {
                return v0.getWorkstationId();
            }));
            dmpVariablesMap.forEach((workstationId, dmpVariablesVOList) -> {
                ArrayList<RealTimeStatusVO> arrayList = new ArrayList<>();
                Map<String, Object> map = WorkstationCache.getWorkstationRealTime(String.valueOf(workstationId));//应该有数据,因为缓存没有,直接查的queryLastParameter
                dmpVariablesVOList.forEach(dmpVariablesVO -> {
                    RealTimeStatusVO vo = new RealTimeStatusVO();
                    vo.setKey(dmpVariablesVO.getName());
                    vo.setName(dmpVariablesVO.getDescription());
                    vo.setUnit(dmpVariablesVO.getDmpType());
                    vo.setSort(dmpVariablesVO.getIdx());
                    vo.setWcsDataType(dmpVariablesVO.getWcsDataType());
                    vo.setBigScreen(dmpVariablesVO.getBigScreen());
                    vo.setRealTimeData(dmpVariablesVO.getRealTimeData());
                    if (map.containsKey(dmpVariablesVO.getName())) {
                        TelemetryDataResponseDTO t = (TelemetryDataResponseDTO) MapUtils.getObject(map, dmpVariablesVO.getName());
                        vo.setValue(t.getV());
                    }
                    arrayList.add(vo);
                });
                properties.put(workstationId, arrayList);
            });
            */
            
        //}
        //yangys修改,改为数据点位的方式
        for(Long workstationId: workstationIdList) {
            
@@ -667,7 +611,7 @@
                    RealTimeStatusVO vo = new RealTimeStatusVO();
                    prop = cfgRow.getString("dpName");
                    vo.setKey(prop);
                    /*
                    label = prop;
                    if(StringUtils.equals("DeviceStatus", prop)) {
                        label = "状态";
@@ -675,11 +619,9 @@
                        label = "产量";
                    }else if(StringUtils.equals("AlarmNo", prop)) {
                        label = "告警号";
                    }
                    vo.setName(label);
                    //vo.setUnit(headRow.getString("dpUnit"));
                    }*/
                    vo.setName(cfgRow.getString("dpLabel"));
                    vo.setSort(i);
                    //vo.setWcsDataType(dmpVariablesVO.getWcsDataType());
                    vo.setBigScreen(false);
                    vo.setRealTimeData(true);
                    
@@ -1041,7 +983,7 @@
        }
        return null;
    }
    /*
    @Override 
    public List<DmpVariablesVO> getDmpVariables(String workstationId, String machineId) {
        if (Func.isBlank(machineId)) {
@@ -1052,6 +994,7 @@
            return v0.getRealTimeData();
        }).collect(Collectors.toList());
    }
    */
    private void checkWorkstation(WorkstationSubmitVO workstationSubmitVO) {
        if (Func.isNotEmpty(workstationSubmitVO.getCode()) && workstationSubmitVO.getCode().length() > 24) {
smart-man-boot/src/main/java/com/qianwen/smartman/modules/smis/service/impl/WorkstationWcsServiceImpl.java
@@ -30,7 +30,6 @@
import com.qianwen.smartman.modules.smis.entity.WorkstationWcs;
import com.qianwen.smartman.modules.smis.entity.WorkstationWcsUsage;
import com.qianwen.smartman.modules.smis.mapper.WorkstationWcsMapper;
import com.qianwen.smartman.modules.smis.service.IDmpVariablesService;
import com.qianwen.smartman.modules.smis.service.IWorkstationOfMachineService;
import com.qianwen.smartman.modules.smis.service.IWorkstationService;
import com.qianwen.smartman.modules.smis.service.IWorkstationWcsService;
@@ -52,16 +51,16 @@
    @Autowired
    @Lazy
    private IWorkstationService workstationService;
    @Autowired
    @Lazy
    private IDmpVariablesService dmpVariablesService;
    //@Autowired
    //@Lazy
    //private IDmpVariablesService dmpVariablesService;
    @Autowired
    private IWorkstationDynamicCollectService dynamicCollectService;
    @Autowired
    @Lazy
    private IWorkstationWcsUsageService workstationWcsUsageService;
    private static final String SUFFIX = "_____0";
    /*
    @Transactional(rollbackFor = {Exception.class})
    public List<WorkstationWcsVO> updateBatch(List<WorkstationWcsSaveVO> workstationWcsSaveVOList) {
        List<WorkstationWcs> workstationWcsList = WorkstationWcsConvert.INSTANCE.convertVOToEntity(workstationWcsSaveVOList);
@@ -74,18 +73,7 @@
                    .eq(WorkstationWcs::getDataType, workstationWcs.getDataType())
                    .eq(WorkstationWcs::getDataItem, workstationWcs.getDataItem()))
                    .stream().map(WorkstationWcs::getId).collect(Collectors.toList());
            /*
            List<Long> ids = (List) list((Wrapper) ((LambdaQueryWrapper) ((LambdaQueryWrapper) Wrappers.lambdaQuery().eq(Func.isNotEmpty(workstationWcs.getWorkstationId()), (v0) -> {
                return v0.getWorkstationId();
            }, workstationWcs.getWorkstationId()).eq((v0) -> {
                return v0.getCollectSettingItem();
            }, workstationWcs.getCollectSettingItem())).eq((v0) -> {
                return v0.getDataType();
            }, workstationWcs.getDataType())).eq((v0) -> {
                return v0.getDataItem();
            }, workstationWcs.getDataItem())).stream().map((v0) -> {
                return v0.getId();
            }).collect(Collectors.toList());*/
            if (Func.isNotEmpty(ids)) {
                workstationWcsIdList.addAll(ids);
            } else {
@@ -122,7 +110,9 @@
        wrapperVO(convert);
        return convert;
    }
    */
    /*
    @Override 
    @Transactional(rollbackFor = {Exception.class})
    public List<WorkstationWcsVO> insert(List<WorkstationWcsSaveVO> workstationWcsSaveVOList) {
@@ -177,6 +167,7 @@
        //返回所有数据的VO列表
        return WorkstationWcsConvert.INSTANCE.convert(saveWorkstationWcsList);
    }
    */
    private void validWorkstationExistsWcs(final List<WorkstationWcsSaveVO> workstationWcsSaveVOList) {
        boolean exist = (workstationWcsSaveVOList.stream().filter(it -> {
@@ -190,7 +181,7 @@
        });
        Assert.isTrue(!exist, MessageUtils.message("workstation.wcs.usage.id.already.exists", new Object[0]), new Object[0]);
    }
    /*
    private List<DmpVariables> validDmpName(Long workstationId, List<WorkstationWcsSaveVO> workstationWcsSaveVOList) {
        WorkstationOfMachine one = this.workstationOfMachineService.getWorkstationOfMachineByWorkstationId(workstationId);
        
@@ -207,7 +198,7 @@
        List<String> collectItemDistinctList = collectItemList.stream().distinct().collect(Collectors.toList());
        Assert.isTrue(collectItemList.size() == collectItemDistinctList.size(), MessageUtils.message("workstationWcs.collectItem.already.exists", new Object[0]), new Object[0]);
        return dmpVariablesList;
    }
    }*/
    public void setCrc(WorkstationWcs workstationWcs) {
        byte[] bytes = workstationWcs.getDataItem().concat(SUFFIX).getBytes();
smart-man-boot/src/main/java/com/qianwen/smartman/modules/visual/controller/VisualStatusController.java
@@ -67,27 +67,28 @@
    public R<ChartNameValueDataVO> getOeeAnalysis(@Validated @RequestBody VisualBaseVO vo) {
        return R.data(this.visualStatusService.getOeeAnalysis(vo));
    }
    /*
    @ApiOperationSupport(order = 6)
    @PostResource({"/workstation-status"})
    @ApiOperation(value = "工位实时数据(工位id)", notes = "传入visualBaseVO")
    public R<ChartDataTableVO> workstationRealTimeStatus(@Validated @RequestBody VisualBaseVO vo) {
        return R.data(this.visualStatusService.getWorkstationRealStatus(vo));
    }
    */
    @ApiOperationSupport(order = 6)
    @PostResource({"/workstation-status-chart"})
    @ApiOperation(value = "工位状态统计", notes = "工位列表")
    public R<ChartNameValueDataVO> workstationStatusChart(@Validated @RequestBody VisualBaseVO vo) {
        return R.data(this.visualStatusService.getWorkstationRealStatusChart(vo));
    }
    /*
    @ApiOperationSupport(order = 7)
    @PostResource({"/workstation-alarm"})
    @ApiOperation(value = "工位实时报警数据", notes = "传入visualBaseVO")
    public R<ChartDataTableVO> workstationAlarmData(@Validated @RequestBody VisualBaseVO vo) {
        return R.data(this.visualStatusService.getWorkstationAlarm(vo));
    }
    */
    @ApiOperationSupport(order = 8)
    @PostResource({"/oee-top"})
smart-man-boot/src/main/java/com/qianwen/smartman/modules/visual/service/IVisualStatusService.java
@@ -21,11 +21,11 @@
    ChartNameValueDataVO getOeeAnalysis(VisualBaseVO vo);
    ChartDataTableVO getWorkstationRealStatus(VisualBaseVO vo);
    //ChartDataTableVO getWorkstationRealStatus(VisualBaseVO vo);
    DefaultWcsEnum getWorkstationDefaultWcsEnum(List<RealTimeStatusVO> realTimeProperties);
    ChartDataTableVO getWorkstationAlarm(VisualBaseVO vo);
    //ChartDataTableVO getWorkstationAlarm(VisualBaseVO vo);
    ChartSeriesDataVO getEfficiencyAnalysisTop(TimeStatusVO timeStatusVO, ProductivityTypeEnum oee);
smart-man-boot/src/main/java/com/qianwen/smartman/modules/visual/service/impl/VisualStatusServiceImpl.java
@@ -130,7 +130,7 @@
        return this.wrapper.entityToOee(data);
    }
    /*
    public ChartDataTableVO getWorkstationRealStatus(VisualBaseVO visualBaseVO) {
        List<Long> workStationList = visualBaseVO.getWorkStationIdList();
        Map<String, Object> header = new LinkedHashMap<>();
@@ -164,7 +164,7 @@
        }).collect(Collectors.toList());
        ChartDataTableVO chartDataTableVO = new ChartDataTableVO().setData(list).setHeader(header);
        return chartDataTableVO;
    }
    }*/
    
    public DefaultWcsEnum getWorkstationDefaultWcsEnum(final List<RealTimeStatusVO> realTimeProperties) {
@@ -181,7 +181,7 @@
        }).orElse(null);
    }
    /*
    public ChartDataTableVO getWorkstationAlarm(final VisualBaseVO vo) {
        List<Long> workStationList = vo.getWorkStationIdList();
        List<ICard> voList = new ArrayList<>();
@@ -211,7 +211,7 @@
        ChartDataTableVO chartDataTableVO = new ChartDataTableVO().setData(voList).addHeader("code", "报警编码").addHeader(CommonConstant.ALARM_MSG, "报警信息");
        return chartDataTableVO;
    }
    */
    
    public ChartNameValueDataVO getAverageEfficiencyAnalysis(VisualBaseVO vo, ProductivityTypeEnum productivityTypeEnum) {
        List<Long> workStationIdList = vo.getWorkStationIdList();