# GmwrStrDataBasicDTO.java

    package cloud.wconnect.workperformance.pojo.dto.gmwr.strdata.basic;

    import cloud.wconnect.workperformance.cons.gmwr.strdata.GmwrStrDataDateEnum;
    import cloud.wconnect.workperformance.cons.gmwr.strdata.GmwrStrDataEnum;
    import com.google.common.collect.Lists;
    import lombok.AllArgsConstructor;
    import lombok.Builder;
    import lombok.Data;

    import java.util.Arrays;
    import java.util.List;
    import java.util.stream.Stream;

    /**
     * DTO: Str Data Basic
     *
     * @author zc
     * @date 2024/10/18
     */
    @Data
    @Builder
    @AllArgsConstructor
    public class GmwrStrDataBasicDTO {
        /**
         * Date Category: 1 Week、2 MTD
         */
        private Integer category;
        /**
         * List
         */
        private List<GmwrStrDataBasicValueDTO> list;

        public GmwrStrDataBasicDTO() {
            this.list = Lists.newArrayList(GmwrStrDataEnum.OCC_PERCENT, GmwrStrDataEnum.ADR,
                    GmwrStrDataEnum.REV_PAR).stream().map(item -> {
                GmwrStrDataBasicValueDTO otbPaceValueDTO = new GmwrStrDataBasicValueDTO();
                otbPaceValueDTO.setCategory(item.getCategory());
                return otbPaceValueDTO;
            }).toList();
        }

        /**
         * 生成 BasicDTO 初始值
         *
         * @return List<GmwrStrDataBasicDTO>
         * @author zc
         * @date 2025/3/2
         */
        public static List<GmwrStrDataBasicDTO> generateInitBasicDTOList() {
            return Arrays.stream(GmwrStrDataDateEnum.values()).map(item -> {
                GmwrStrDataBasicDTO basicDTO = new GmwrStrDataBasicDTO();
                basicDTO.setCategory(item.getCategory());
                return basicDTO;
            }).toList();
        }

        /**
         * 提取用户 id
         *
         * @return java.util.List<java.lang.Integer>
         * @author zc
         * @date 2025/8/21
         */
        public List<Integer> extractAllUserId() {
            return list.stream().flatMap(valueDto ->
                    extractUserIdFromValueDto(valueDto).stream()).toList();
        }

        /**
         * 提取用户 id
         *
         * @param valueDTO 值对象
         * @return java.util.List<java.lang.Integer>
         * @author zc
         * @date 2025/8/21
         */
        private static List<Integer> extractUserIdFromValueDto(GmwrStrDataBasicValueDTO valueDTO) {
            return Stream.of(valueDTO.getProperty(), valueDTO.getPropertyChg(), valueDTO.getCompSet(),
                            valueDTO.getCompSetChg(), valueDTO.getIndex(), valueDTO.getIndexChg())
                    .map(GmwrStrDataBasicValueDetailDTO::getUpdatedBy).filter(item -> item > 0).toList();
        }
    }