licailing 4 роки тому
батько
коміт
1787d0a875

+ 3 - 0
src/main/java/com/izouma/wenlvju/domain/performance/Arrange.java

@@ -66,6 +66,9 @@ public class Arrange extends BaseEntity {
     @ApiModelProperty(value = "审核次数")
     private int auditTimes;
 
+    @ApiModelProperty(value = "仅限选择的专业")
+    private Boolean selectedOnly;
+
     @Transient
     private List<String> specialtyName;
 

+ 3 - 0
src/main/java/com/izouma/wenlvju/dto/ArrangeDTO.java

@@ -40,6 +40,9 @@ public class ArrangeDTO {
     @ApiModelProperty(value = "分组节目数量")
     private int quantity;
 
+    @ApiModelProperty(value = "仅限选择的专业")
+    private Boolean selectedOnly;
+
     private List<Long> specialtyId;
 
     private int times;

+ 3 - 1
src/main/java/com/izouma/wenlvju/service/performance/ArrangeService.java

@@ -191,6 +191,7 @@ public class ArrangeService {
                         .name(name)
                         .morning(morning)
                         .auditTimes(times)
+                        .selectedOnly(dto.getSelectedOnly())
                         .build();
 
                 Map<String, String> programmes = programmeService.group1(byPerformanceId, arrange);
@@ -292,7 +293,7 @@ public class ArrangeService {
         List<Programme> byPerformanceId = programmeRepo.findAllByPerformanceIdAndProgrammeStatus(dto.getPerformanceId(), ProgrammeStatus.SUBMIT);
         int group = (int) Math.ceil((double) byPerformanceId.size() / dto.getQuantity());
 
-        long count = arrangeRepo.countArrangeByPerformanceId(dto.getPerformanceId());
+        long count = arrangeRepo.countArrangeByPerformanceId(dto.getPerformanceId()) + 1;
         for (int i = 0; i < group; i++) {
             Arrange arrange = Arrange.builder()
                     .performanceId(dto.getPerformanceId())
@@ -308,6 +309,7 @@ public class ArrangeService {
                     .map(Programme::getParentSpecialtyId)
                     .distinct()
                     .collect(Collectors.toList());
+            ids.remove(null);
             arrange.setSpecialtyId(ids);
             arrange.setQuantity(programmeList.size());
             arrange = arrangeRepo.save(arrange);

+ 3 - 2
src/main/java/com/izouma/wenlvju/service/performance/ProgrammeService.java

@@ -162,7 +162,7 @@ public class ProgrammeService {
         List<ArtType> artTypes = artTypeRepo.findAll();
 
         String finalArtCode = artCode;
-        Page<Programme> all =  programmeRepo.findAll(((root, criteriaQuery, criteriaBuilder) -> {
+        Page<Programme> all = programmeRepo.findAll(((root, criteriaQuery, criteriaBuilder) -> {
             List<Predicate> and = JpaUtils.toPredicates(pageQuery, Programme.class, root, criteriaQuery, criteriaBuilder);
             if (StrUtil.isNotBlank(finalArtCode)) {
                 and.add(root.get("specialtyId").in(artTypeService.getIds(artTypes, finalArtCode)));
@@ -519,7 +519,8 @@ public class ProgrammeService {
                     .collect(Collectors.toList());
 
             int size = programmeList.size();
-            if (size < quantity) {
+            // 数量小于 ,未填仅限选择或仅限选择为false
+            if (size < quantity && (ObjectUtil.isNull(arrange.getSelectedOnly()) || !arrange.getSelectedOnly())) {
                 programmeList.addAll(byPerformanceId.stream()
                         .filter(programme -> !arrange.getSpecialtyId().contains(programme.getParentSpecialtyId()))
                         .limit(quantity - size)

+ 23 - 10
src/main/vue/src/views/performance/ArrangeList.vue

@@ -154,6 +154,16 @@
                                             <el-input v-model="form.address"></el-input>
                                         </el-form-item>
                                     </el-col>
+                                    <el-col :span="12" :offset="0">
+                                        <el-form-item prop="selectedOnly" class="flex">
+                                            <span style="color: #606266; font-size: 12px;"
+                                                >/**默认所有,可以选择多个*/</span
+                                            >
+                                            <el-checkbox v-model="form.selectedOnly"
+                                                >仅限选择的专业</el-checkbox
+                                            ></el-form-item
+                                        >
+                                    </el-col>
                                 </el-row>
 
                                 <el-form-item style="margin-left: 40px">
@@ -586,11 +596,14 @@ export default {
             let data = { ...this.form };
             data.startDate = this.dateRange[0];
             data.endDate = this.dateRange[1];
-            data.morningStartTime = this.timeRange[0] + ':00';
-            data.morningEndTime = this.timeRange[1] + ':00';
-            data.afternoonStartTime = this.afterTimeRange[0] + ':00';
-            data.afternoonEndTime = this.afterTimeRange[1] + ':00';
-
+            if (this.timeRange[0] != null || this.timeRange[1] != null) {
+                data.morningStartTime = this.timeRange[0] + ':00';
+                data.morningEndTime = this.timeRange[1] + ':00';
+            }
+            if (this.afterTimeRange[0] != null || this.afterTimeRange[1] != null) {
+                data.afternoonStartTime = this.afterTimeRange[0] + ':00';
+                data.afternoonEndTime = this.afterTimeRange[1] + ':00';
+            }
             this.saving = true;
             this.$http
                 .post('/arrange/group', data, { body: 'json' })
@@ -707,11 +720,11 @@ export default {
         },
         canEdit() {
             let can = this.performance.status == 'UNDER_REVIEW' || this.performance.status == 'ARRANGE';
-            if (this.review) {
-                can &= this.performance.auditTimes > 1;
-            } else {
-                can &= this.performance.auditTimes == 1;
-            }
+            // if (this.review) {
+            //     can &= this.performance.auditTimes > 1;
+            // } else {
+            //     can &= this.performance.auditTimes == 1;
+            // }
             return can;
         }
     }

+ 12 - 0
src/main/vue/src/views/performance/ProgrammeEdit.vue

@@ -580,6 +580,9 @@ export default {
             } else {
                 data.programmeStatus = 'INITIAL';
             }
+            if (this.formData.organizationId && this.formData.examPoint == '') {
+                this.formData.examPoint = this.getName(this.formData.organizationId);
+            }
             this.saving = true;
             this.$http
                 .post('/programme/save', data, { body: 'json' })
@@ -659,6 +662,15 @@ export default {
                     this.$message.success('删除成功');
                 })
                 .catch(e => {});
+        },
+        getName(id) {
+            let name = this.organizationIdOptions.filter(item => {
+                if (item.value == id) {
+                    return item.name;
+                }
+            });
+            console.log(name);
+            return name;
         }
     }
 };