drew 5 år sedan
förälder
incheckning
9f5d129a8d
22 ändrade filer med 191 tillägg och 90 borttagningar
  1. 16 0
      db/migrate004.sql
  2. 8 0
      src/main/java/com/izouma/zhumj/domain/IndividualRent.java
  3. 0 1
      src/main/java/com/izouma/zhumj/domain/PersonalFeeType.java
  4. 13 7
      src/main/java/com/izouma/zhumj/dto/report/ShiftReport.java
  5. 2 0
      src/main/java/com/izouma/zhumj/repo/CheckinInfoRepo.java
  6. 1 1
      src/main/java/com/izouma/zhumj/repo/IndividualRentRepo.java
  7. 10 0
      src/main/java/com/izouma/zhumj/repo/PersonalFeeRepo.java
  8. 3 1
      src/main/java/com/izouma/zhumj/repo/PersonalFeeTypeRepo.java
  9. 2 0
      src/main/java/com/izouma/zhumj/repo/RoomFeeRepo.java
  10. 12 3
      src/main/java/com/izouma/zhumj/service/BedInfoService.java
  11. 11 2
      src/main/java/com/izouma/zhumj/service/FeeTypeService.java
  12. 1 1
      src/main/java/com/izouma/zhumj/service/FinancialService.java
  13. 35 6
      src/main/java/com/izouma/zhumj/service/PersonalFeeService.java
  14. 11 2
      src/main/java/com/izouma/zhumj/service/PersonalFeeTypeService.java
  15. 31 8
      src/main/java/com/izouma/zhumj/service/ShiftHandoverService.java
  16. 2 14
      src/main/java/com/izouma/zhumj/web/BedInfoController.java
  17. 6 13
      src/main/java/com/izouma/zhumj/web/FeeTypeController.java
  18. 8 14
      src/main/java/com/izouma/zhumj/web/PersonalFeeTypeController.java
  19. 2 1
      src/main/vue/src/components/operation/RoomFeeList.vue
  20. 13 2
      src/main/vue/src/views/FeeTypeEdit.vue
  21. 1 3
      src/test/java/com/izouma/zhumj/repo/IndividualRentRepoTest.java
  22. 3 11
      src/test/java/com/izouma/zhumj/service/PersonalFeeServiceTest.java

+ 16 - 0
db/migrate004.sql

@@ -0,0 +1,16 @@
+alter table individual_rent add column bed_name varchar(255);
+alter table individual_rent add column name varchar(255);
+alter table individual_rent add column room_name varchar(255);
+alter table individual_rent add column store_name varchar(255);
+
+update individual_rent join store_info on individual_rent.store_id = store_info.id
+set individual_rent.store_name = store_info.store_name;
+
+update individual_rent join room_info on individual_rent.room_id = room_info.id
+set individual_rent.room_name = room_info.room_name;
+
+update individual_rent join bed_info on individual_rent.bed_id = bed_info.id
+set individual_rent.bed_name = bed_info.bed_name;
+
+update individual_rent join checkin_info on individual_rent.checkin_id = checkin_info.id
+set individual_rent.name = checkin_info.name;

+ 8 - 0
src/main/java/com/izouma/zhumj/domain/IndividualRent.java

@@ -25,15 +25,23 @@ public class IndividualRent extends BaseEntity {
     @Column(nullable = false)
     private Long checkinId;
 
+    private String name;
+
     @Column(nullable = false)
     private Long storeId;
 
+    private String storeName;
+
     @Column(nullable = false)
     private Long roomId;
 
+    private String roomName;
+
     @Column(nullable = false)
     private Long bedId;
 
+    private String bedName;
+
     @Column(precision = 10, scale = 2, nullable = false)
     private BigDecimal money;
 

+ 0 - 1
src/main/java/com/izouma/zhumj/domain/PersonalFeeType.java

@@ -22,7 +22,6 @@ import java.math.BigDecimal;
 @ApiModel(value = "个人费用类型", description = "个人费用类型")
 public class PersonalFeeType extends BaseEntity implements Serializable {
 
-
     @ApiModelProperty(value = "分类", name = "category")
     @Enumerated(EnumType.STRING)
     private FeeCategory category;

+ 13 - 7
src/main/java/com/izouma/zhumj/dto/report/ShiftReport.java

@@ -17,15 +17,20 @@ import java.util.Map;
 @AllArgsConstructor
 @Builder
 public class ShiftReport {
-    private List<Fee>                        feeList;
-    private List<Fee>                        feeDetailList;
-    private List<DepositDetail>              depositDetailList;
-//    private Map<String, Map<String, Object>> sumFeeByMethod;
+    public final static String FEE_TYPE_ROOM            = "room";
+    public final static String FEE_TYPE_PERSONAL        = "personal";
+    public final static String FEE_TYPE_INDIVIDUAL_RENT = "individual_rent";
+    public final static String FEE_TYPE_STORE_PROXY     = "store_proxy";
+
+    private List<Fee>           feeList;
+    private List<Fee>           feeDetailList;
+    private List<DepositDetail> depositDetailList;
+    //    private Map<String, Map<String, Object>> sumFeeByMethod;
 //    private Map<String, Map<String, Object>> sumDepositByMethod;
 //    private Map<String, Map<String, Object>> sumDepositRefundByMethod;
-    private List<MethodSummary>              feeSummary;
-    private List<MethodSummary>              depositSummary;
-    private List<MethodSummary>              depositRefundSummary;
+    private List<MethodSummary> feeSummary;
+    private List<MethodSummary> depositSummary;
+    private List<MethodSummary> depositRefundSummary;
 
     @Data
     @NoArgsConstructor
@@ -37,6 +42,7 @@ public class ShiftReport {
         private BigDecimal    amount;
         private BigDecimal    adjust;
         private boolean       isPersonalFee;
+        private String        type;
         private LocalDateTime time;
         private PayMethod     payMethod;
     }

+ 2 - 0
src/main/java/com/izouma/zhumj/repo/CheckinInfoRepo.java

@@ -109,4 +109,6 @@ public interface CheckinInfoRepo extends JpaRepository<CheckinInfo, Long>, JpaSp
     @Query("select c from CheckinInfo c where c.checkInType <> com.izouma.zhumj.enums.CheckInType.INDIVIDUAL and " +
             "c.monthRate > 1500")
     List<CheckinBase> findError();
+
+    long countByBedId(Long bedId);
 }

+ 1 - 1
src/main/java/com/izouma/zhumj/repo/IndividualRentRepo.java

@@ -12,7 +12,7 @@ import java.util.List;
 public interface IndividualRentRepo extends JpaRepository<IndividualRent, Long>, JpaSpecificationExecutor<IndividualRent> {
     Page<IndividualRent> findByCheckinId(Long checkinId, Pageable pageable);
 
-    List<IndividualRent> findByCheckinInfoStoreIdAndCreatedAtBetween(Long storeId, LocalDateTime start, LocalDateTime end);
+    List<IndividualRent> findByStoreIdAndCreatedAtBetween(Long storeId, LocalDateTime start, LocalDateTime end);
 
     List<IndividualRent> findByIdNo(String idNo);
 }

+ 10 - 0
src/main/java/com/izouma/zhumj/repo/PersonalFeeRepo.java

@@ -6,8 +6,10 @@ import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 
+import java.beans.Transient;
 import java.time.LocalDateTime;
 import java.util.Collection;
 import java.util.List;
@@ -37,4 +39,12 @@ public interface PersonalFeeRepo extends JpaRepository<PersonalFee, Long>, JpaSp
     List<PersonalFee> findByRoomIdAndSettleTimeBetween(Long roomId, LocalDateTime start, LocalDateTime end);
 
     List<PersonalFee> findByIdNo(String idNo);
+
+    long countByPersonalFeeTypeId(Long personalFeeTypeId);
+
+    @Query(value = "select personal_fee.*\n" +
+            "from personal_fee\n" +
+            "    left join personal_fee_type on personal_fee.personal_fee_type_id = personal_fee_type.id\n" +
+            "where personal_fee_type.id is null", nativeQuery = true)
+    List<PersonalFee> findNoneFeeType();
 }

+ 3 - 1
src/main/java/com/izouma/zhumj/repo/PersonalFeeTypeRepo.java

@@ -3,11 +3,13 @@ package com.izouma.zhumj.repo;
 import com.izouma.zhumj.domain.PersonalFeeType;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
 
+import java.beans.Transient;
 import java.util.List;
 
 public interface PersonalFeeTypeRepo extends JpaRepository<PersonalFeeType, Long>, JpaSpecificationExecutor<PersonalFeeType> {
-
     List<PersonalFeeType> findAllByAutoFeeTrue();
 
     List<PersonalFeeType> findByStoreId(Long storeId);

+ 2 - 0
src/main/java/com/izouma/zhumj/repo/RoomFeeRepo.java

@@ -41,4 +41,6 @@ public interface RoomFeeRepo extends JpaRepository<RoomFee, Long>, JpaSpecificat
             "  and type = 'ROOM' " +
             "order by time desc", nativeQuery = true)
     Page<FeeRecordResult> findRoomFeeRecord(Long roomId, Pageable pageable);
+
+    long countByFeeTypeId(Long feeTypeId);
 }

+ 12 - 3
src/main/java/com/izouma/zhumj/service/BedInfoService.java

@@ -1,14 +1,23 @@
 package com.izouma.zhumj.service;
 
 import com.izouma.zhumj.domain.BedInfo;
+import com.izouma.zhumj.exception.BusinessException;
 import com.izouma.zhumj.repo.BedInfoRepo;
+import com.izouma.zhumj.repo.CheckinInfoRepo;
+import lombok.AllArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 @Service
+@AllArgsConstructor
 public class BedInfoService {
+    private BedInfoRepo     bedInfoRepo;
+    private CheckinInfoRepo checkinInfoRepo;
 
-    @Autowired
-    private BedInfoRepo bedInfoRepo;
-
+    public void delete(Long id) {
+        if (checkinInfoRepo.countByBedId(id) > 0) {
+            throw new BusinessException("已有入住信息,无法删除");
+        }
+        bedInfoRepo.deleteById(id);
+    }
 }

+ 11 - 2
src/main/java/com/izouma/zhumj/service/FeeTypeService.java

@@ -1,14 +1,23 @@
 package com.izouma.zhumj.service;
 
 import com.izouma.zhumj.domain.FeeType;
+import com.izouma.zhumj.exception.BusinessException;
 import com.izouma.zhumj.repo.FeeTypeRepo;
+import com.izouma.zhumj.repo.RoomFeeRepo;
+import lombok.AllArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 @Service
+@AllArgsConstructor
 public class FeeTypeService {
-
-    @Autowired
     private FeeTypeRepo feeTypeRepo;
+    private RoomFeeRepo roomFeeRepo;
 
+    public void delete(Long id) {
+        if (roomFeeRepo.countByFeeTypeId(id) > 0) {
+            throw new BusinessException("已录入费用,无法删除");
+        }
+        feeTypeRepo.deleteById(id);
+    }
 }

+ 1 - 1
src/main/java/com/izouma/zhumj/service/FinancialService.java

@@ -313,7 +313,7 @@ public class FinancialService {
             //散客房费
             BigDecimal individualRent = BigDecimal.ZERO;
             List<IndividualRent> individualRents = individualRentRepo
-                    .findByCheckinInfoStoreIdAndCreatedAtBetween(storeInfo.getId(), start, end);
+                    .findByStoreIdAndCreatedAtBetween(storeInfo.getId(), start, end);
             for (IndividualRent rent : individualRents) {
                 individualRent = individualRent.add(rent.getMoney());
             }

+ 35 - 6
src/main/java/com/izouma/zhumj/service/PersonalFeeService.java

@@ -7,6 +7,7 @@ import com.izouma.zhumj.dto.PageQuery;
 import com.izouma.zhumj.dto.PersonalFeeDTO;
 import com.izouma.zhumj.dto.report.FeeReport;
 import com.izouma.zhumj.enums.CheckInType;
+import com.izouma.zhumj.enums.FeeCategory;
 import com.izouma.zhumj.enums.PayMethod;
 import com.izouma.zhumj.event.BindIdentityEvent;
 import com.izouma.zhumj.event.CheckinEvent;
@@ -52,8 +53,8 @@ public class PersonalFeeService {
     private UserMoneyRecordService   userMoneyRecordService;
     private IndividualRentRepo       individualRentRepo;
     private RechargeRecordRepo       rechargeRecordRepo;
-    private UserMoneyRecordRepo userMoneyRecordRepo;
-    private MemberRepo          memberRepo;
+    private UserMoneyRecordRepo      userMoneyRecordRepo;
+    private MemberRepo               memberRepo;
 
     public PersonalFee save(PersonalFee record) {
         if (record.getId() != null) {
@@ -72,7 +73,9 @@ public class PersonalFeeService {
         MemberInfo memberInfo = memberRepo.findById(checkinInfo.getIdNo()).orElseThrow(new BusinessException("无住客信息"));
 
         if (record.getPayMethod() == PayMethod.WEIXIN || record.getPayMethod() == PayMethod.ALIPAY) {//非线下收款直接扣款
-            memberInfo.setMoney(Optional.ofNullable(memberInfo.getMoney()).orElse(BigDecimal.ZERO).subtract(record.getMoney()));
+            memberInfo.setMoney(Optional.ofNullable(memberInfo.getMoney())
+                    .orElse(BigDecimal.ZERO)
+                    .subtract(record.getMoney()));
             memberRepo.save(memberInfo);
         }
 
@@ -192,7 +195,8 @@ public class PersonalFeeService {
             if (StringUtils.isBlank(checkinInfo.getIdNo())) {
                 return;
             }
-            MemberInfo memberInfo = memberRepo.findById(checkinInfo.getIdNo()).orElseThrow(new BusinessException("无住客信息"));
+            MemberInfo memberInfo = memberRepo.findById(checkinInfo.getIdNo())
+                    .orElseThrow(new BusinessException("无住客信息"));
             PersonalFee newPersonalFee = PersonalFee.builder()
                     .checkinId(checkinInfo.getId())
                     .personalFeeTypeId(personalFeeType.getId())
@@ -281,8 +285,11 @@ public class PersonalFeeService {
         PersonalFee personalFee = personalFeeRepo.findById(id).orElseThrow(new BusinessException("无记录"));
         if (personalFee.getPayMethod() == PayMethod.WEIXIN
                 || personalFee.getPayMethod() == PayMethod.ALIPAY) {//非线下收款需返还余额
-            MemberInfo memberInfo = memberRepo.findById(personalFee.getIdNo()).orElseThrow(new BusinessException("无住客信息"));
-            memberInfo.setMoney(Optional.ofNullable(memberInfo.getMoney()).orElse(BigDecimal.ZERO).add(personalFee.getMoney()));
+            MemberInfo memberInfo = memberRepo.findById(personalFee.getIdNo())
+                    .orElseThrow(new BusinessException("无住客信息"));
+            memberInfo.setMoney(Optional.ofNullable(memberInfo.getMoney())
+                    .orElse(BigDecimal.ZERO)
+                    .add(personalFee.getMoney()));
             memberRepo.save(memberInfo);
 
             userMoneyRecordService.saveCancelPersonalFeeRecord(personalFee);
@@ -414,9 +421,13 @@ public class PersonalFeeService {
         MemberInfo memberInfo = memberRepo.findById(checkinInfo.getIdNo()).orElseThrow(new BusinessException("无住客信息"));
         IndividualRent individualRent = individualRentRepo.save(IndividualRent.builder()
                 .checkinId(checkinInfo.getId())
+                .name(checkinInfo.getName())
                 .storeId(checkinInfo.getStoreId())
+                .storeName(checkinInfo.getStoreInfo().getStoreName())
                 .roomId(checkinInfo.getRoomId())
+                .roomName(checkinInfo.getRoomInfo().getRoomName())
                 .bedId(checkinInfo.getBedId())
+                .bedName(checkinInfo.getBedInfo().getBedName())
                 .idNo(checkinInfo.getIdNo())
                 .money(money)
                 .payMethod(payMethod)
@@ -466,4 +477,22 @@ public class PersonalFeeService {
 //        }).start();
     }
 
+    public void fixNoneFeeTypeRecords() {
+        for (PersonalFee personalFee : personalFeeRepo.findNoneFeeType()) {
+            PersonalFeeType type = personalFeeTypeRepo.findByStoreId(personalFee.getStoreId()).stream()
+                    .filter(personalFeeType -> "其他费用".equals(personalFeeType.getName()))
+                    .findAny().orElse(null);
+            if (type == null) {
+                type = personalFeeTypeRepo.save(PersonalFeeType.builder()
+                        .storeId(personalFee.getStoreId())
+                        .name("其他费用")
+                        .autoFee(false)
+                        .money(BigDecimal.ZERO)
+                        .category(FeeCategory.BASE)
+                        .build());
+            }
+            personalFee.setPersonalFeeTypeId(type.getId());
+            personalFeeRepo.save(personalFee);
+        }
+    }
 }

+ 11 - 2
src/main/java/com/izouma/zhumj/service/PersonalFeeTypeService.java

@@ -1,14 +1,23 @@
 package com.izouma.zhumj.service;
 
 import com.izouma.zhumj.domain.PersonalFeeType;
+import com.izouma.zhumj.exception.BusinessException;
+import com.izouma.zhumj.repo.PersonalFeeRepo;
 import com.izouma.zhumj.repo.PersonalFeeTypeRepo;
+import lombok.AllArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 @Service
+@AllArgsConstructor
 public class PersonalFeeTypeService {
-
-    @Autowired
     private PersonalFeeTypeRepo personalFeeTypeRepo;
+    private PersonalFeeRepo     personalFeeRepo;
 
+    public void delete(Long id) {
+        if (personalFeeRepo.countByPersonalFeeTypeId(id) > 0) {
+            throw new BusinessException("已录入费用,无法删除");
+        }
+        personalFeeTypeRepo.deleteById(id);
+    }
 }

+ 31 - 8
src/main/java/com/izouma/zhumj/service/ShiftHandoverService.java

@@ -9,18 +9,12 @@ import com.izouma.zhumj.enums.PayMethod;
 import com.izouma.zhumj.repo.*;
 import com.izouma.zhumj.repo.client.DepositRefundApplyRepo;
 import lombok.AllArgsConstructor;
-import org.apache.commons.collections.MapUtils;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
 
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.*;
-import java.util.stream.Collectors;
 
 @Service
 @AllArgsConstructor
@@ -34,6 +28,7 @@ public class ShiftHandoverService {
     private DepositRecordRepo      depositRecordRepo;
     private StoreProxyFeeRepo      storeProxyFeeRepo;
     private DepositRefundApplyRepo depositRefundApplyRepo;
+    private IndividualRentRepo     individualRentRepo;
 
     public LocalDateTime shiftStartTime(Long storeId, Long userId) {
         return shiftHandoverRepo.findFirstByStoreIdOrderByCreatedAtDesc(storeId)
@@ -74,6 +69,7 @@ public class ShiftHandoverService {
                                 .mapToDouble(roomFee -> roomFee.getMoney().doubleValue())
                                 .sum()))
                         .isPersonalFee(false)
+                        .type(ShiftReport.FEE_TYPE_ROOM)
                         .adjust(BigDecimal.ZERO)
                         .build()));
 
@@ -88,6 +84,7 @@ public class ShiftHandoverService {
                                 .mapToDouble(roomFee -> roomFee.getMoney().doubleValue())
                                 .sum()))
                         .isPersonalFee(true)
+                        .type(ShiftReport.FEE_TYPE_PERSONAL)
                         .adjust(BigDecimal.ZERO)
                         .build()));
 
@@ -96,22 +93,25 @@ public class ShiftHandoverService {
         roomFeeList.forEach(roomFee -> {
             feeDetailList.add(ShiftReport.Fee.builder()
                     .feeId(roomFee.getFeeTypeId())
-                    .feeName(roomFee.getFeeType().getName())
+                    .feeName(Optional.ofNullable(roomFee.getFeeType()).map(FeeType::getName).orElse(null))
                     .amount(roomFee.getMoney())
                     .isPersonalFee(false)
                     .time(roomFee.getSettleTime())
                     .payMethod(roomFee.getPayMethod())
+                    .type(ShiftReport.FEE_TYPE_ROOM)
                     .build());
         });
         // 个人费用明细
         personalFeeList.forEach(personalFee ->
                 feeDetailList.add(ShiftReport.Fee.builder()
                         .feeId(personalFee.getPersonalFeeTypeId())
-                        .feeName(personalFee.getPersonalFeeType().getName())
+                        .feeName(Optional.ofNullable(personalFee.getPersonalFeeType())
+                                .map(PersonalFeeType::getName).orElse(null))
                         .amount(personalFee.getMoney())
                         .isPersonalFee(true)
                         .time(personalFee.getSettleTime())
                         .payMethod(personalFee.getPayMethod())
+                        .type(ShiftReport.FEE_TYPE_PERSONAL)
                         .build()));
 
         // 门店代收费用
@@ -126,6 +126,7 @@ public class ShiftHandoverService {
                 .amount(storeProxyFeeList.stream().map(StoreProxyFee::getMoney).reduce(BigDecimal::add)
                         .orElse(BigDecimal.ZERO))
                 .isPersonalFee(false)
+                .type(ShiftReport.FEE_TYPE_STORE_PROXY)
                 .adjust(BigDecimal.ZERO)
                 .build());
         for (StoreProxyFee storeProxyFee : storeProxyFeeList) {
@@ -135,6 +136,28 @@ public class ShiftHandoverService {
                     .isPersonalFee(false)
                     .time(storeProxyFee.getSettleTime())
                     .payMethod(storeProxyFee.getPayMethod())
+                    .type(ShiftReport.FEE_TYPE_STORE_PROXY)
+                    .build());
+        }
+
+        //散客押金
+        List<IndividualRent> individualRentList = individualRentRepo.findByStoreIdAndCreatedAtBetween(storeId, start, end);
+        feeList.add(ShiftReport.Fee.builder()
+                .feeName("散客押金")
+                .amount(individualRentList.stream().map(IndividualRent::getMoney).reduce(BigDecimal::add)
+                        .orElse(BigDecimal.ZERO))
+                .isPersonalFee(false)
+                .type(ShiftReport.FEE_TYPE_INDIVIDUAL_RENT)
+                .adjust(BigDecimal.ZERO)
+                .build());
+        for (IndividualRent individualRent : individualRentList) {
+            feeDetailList.add(ShiftReport.Fee.builder()
+                    .feeName("散客押金")
+                    .amount(individualRent.getMoney())
+                    .isPersonalFee(false)
+                    .time(individualRent.getCreatedAt())
+                    .payMethod(individualRent.getPayMethod())
+                    .type(ShiftReport.FEE_TYPE_INDIVIDUAL_RENT)
                     .build());
         }
 

+ 2 - 14
src/main/java/com/izouma/zhumj/web/BedInfoController.java

@@ -22,18 +22,10 @@ import java.util.List;
 @RestController
 @RequestMapping("/bedInfo")
 public class BedInfoController extends BaseController {
-    /*generatedStart*/
-    @Autowired
     private BedInfoService bedInfoService;
+    private BedInfoRepo    bedInfoRepo;
+    private RoomInfoRepo   roomInfoRepo;
 
-    @Autowired
-    private BedInfoRepo bedInfoRepo;
-    @Autowired
-    private RoomInfoRepo roomInfoRepo;
-    /*generatedEnd*/
-
-    /*generatedStart*/
-    //@PreAuthorize("hasRole('ADMIN')")
     @PostMapping("/save")
     public BedInfo save(@RequestBody BedInfo record) {
         if (record.getId() != null) {
@@ -41,14 +33,11 @@ public class BedInfoController extends BaseController {
             ObjUtils.merge(orig, record);
             return bedInfoRepo.save(orig);
         }
-
         RoomInfo roomInfo = roomInfoRepo.findById(record.getRoomId()).orElseThrow(new BusinessException("无房间记录"));
         record.setRoomTypeId(roomInfo.getRoomTypeId());
         return bedInfoRepo.save(record);
     }
 
-
-    //@PreAuthorize("hasRole('ADMIN')")
     @GetMapping("/all")
     public Page<BedInfo> all(PageQuery pageQuery) {
         return bedInfoRepo.findAll(toSpecification(pageQuery, BedInfo.class), toPageRequest(pageQuery));
@@ -65,6 +54,5 @@ public class BedInfoController extends BaseController {
         List<BedInfo> data = all(pageQuery).getContent();
         ExcelUtils.export(response, data);
     }
-    /*generatedEnd*/
 }
 

+ 6 - 13
src/main/java/com/izouma/zhumj/web/FeeTypeController.java

@@ -1,4 +1,5 @@
 package com.izouma.zhumj.web;
+
 import com.izouma.zhumj.domain.FeeType;
 import com.izouma.zhumj.service.FeeTypeService;
 import com.izouma.zhumj.dto.PageQuery;
@@ -6,6 +7,7 @@ import com.izouma.zhumj.exception.BusinessException;
 import com.izouma.zhumj.repo.FeeTypeRepo;
 import com.izouma.zhumj.utils.ObjUtils;
 import com.izouma.zhumj.utils.excel.ExcelUtils;
+import lombok.AllArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -17,17 +19,11 @@ import java.util.List;
 
 @RestController
 @RequestMapping("/feeType")
+@AllArgsConstructor
 public class FeeTypeController extends BaseController {
-    /*generatedStart*/
-    @Autowired
     private FeeTypeService feeTypeService;
+    private FeeTypeRepo    feeTypeRepo;
 
-    @Autowired
-    private FeeTypeRepo feeTypeRepo;
-    /*generatedEnd*/
-
-    /*generatedStart*/
-    //@PreAuthorize("hasRole('ADMIN')")
     @PostMapping("/save")
     public FeeType save(@RequestBody FeeType record) {
         if (record.getId() != null) {
@@ -38,11 +34,9 @@ public class FeeTypeController extends BaseController {
         return feeTypeRepo.save(record);
     }
 
-
-    //@PreAuthorize("hasRole('ADMIN')")
     @GetMapping("/all")
     public Page<FeeType> all(PageQuery pageQuery) {
-        return feeTypeRepo.findAll(toSpecification(pageQuery,FeeType.class), toPageRequest(pageQuery));
+        return feeTypeRepo.findAll(toSpecification(pageQuery, FeeType.class), toPageRequest(pageQuery));
     }
 
     @GetMapping("/get/{id}")
@@ -52,7 +46,7 @@ public class FeeTypeController extends BaseController {
 
     @PostMapping("/del/{id}")
     public void del(@PathVariable Long id) {
-        feeTypeRepo.deleteById(id);
+        feeTypeService.delete(id);
     }
 
     @GetMapping("/excel")
@@ -61,6 +55,5 @@ public class FeeTypeController extends BaseController {
         List<FeeType> data = all(pageQuery).getContent();
         ExcelUtils.export(response, data);
     }
-    /*generatedEnd*/
 }
 

+ 8 - 14
src/main/java/com/izouma/zhumj/web/PersonalFeeTypeController.java

@@ -1,4 +1,5 @@
 package com.izouma.zhumj.web;
+
 import com.izouma.zhumj.domain.PersonalFeeType;
 import com.izouma.zhumj.service.PersonalFeeTypeService;
 import com.izouma.zhumj.dto.PageQuery;
@@ -6,6 +7,7 @@ import com.izouma.zhumj.exception.BusinessException;
 import com.izouma.zhumj.repo.PersonalFeeTypeRepo;
 import com.izouma.zhumj.utils.ObjUtils;
 import com.izouma.zhumj.utils.excel.ExcelUtils;
+import lombok.AllArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -17,32 +19,25 @@ import java.util.List;
 
 @RestController
 @RequestMapping("/personalFeeType")
+@AllArgsConstructor
 public class PersonalFeeTypeController extends BaseController {
-    /*generatedStart*/
-    @Autowired
     private PersonalFeeTypeService personalFeeTypeService;
+    private PersonalFeeTypeRepo    personalFeeTypeRepo;
 
-    @Autowired
-    private PersonalFeeTypeRepo personalFeeTypeRepo;
-    /*generatedEnd*/
-
-    /*generatedStart*/
-    //@PreAuthorize("hasRole('ADMIN')")
     @PostMapping("/save")
     public PersonalFeeType save(@RequestBody PersonalFeeType record) {
         if (record.getId() != null) {
-            PersonalFeeType orig = personalFeeTypeRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
+            PersonalFeeType orig = personalFeeTypeRepo.findById(record.getId())
+                    .orElseThrow(new BusinessException("无记录"));
             ObjUtils.merge(orig, record);
             return personalFeeTypeRepo.save(orig);
         }
         return personalFeeTypeRepo.save(record);
     }
 
-
-    //@PreAuthorize("hasRole('ADMIN')")
     @GetMapping("/all")
     public Page<PersonalFeeType> all(PageQuery pageQuery) {
-        return personalFeeTypeRepo.findAll(toSpecification(pageQuery,PersonalFeeType.class), toPageRequest(pageQuery));
+        return personalFeeTypeRepo.findAll(toSpecification(pageQuery, PersonalFeeType.class), toPageRequest(pageQuery));
     }
 
     @GetMapping("/get/{id}")
@@ -52,7 +47,7 @@ public class PersonalFeeTypeController extends BaseController {
 
     @PostMapping("/del/{id}")
     public void del(@PathVariable Long id) {
-        personalFeeTypeRepo.deleteById(id);
+        personalFeeTypeService.delete(id);
     }
 
     @GetMapping("/excel")
@@ -61,6 +56,5 @@ public class PersonalFeeTypeController extends BaseController {
         List<PersonalFeeType> data = all(pageQuery).getContent();
         ExcelUtils.export(response, data);
     }
-    /*generatedEnd*/
 }
 

+ 2 - 1
src/main/vue/src/components/operation/RoomFeeList.vue

@@ -72,7 +72,8 @@ export default {
             payMethodOptions: [
                 { label: '线上', value: 'WEIXIN' },
                 { label: '转账', value: 'POS' },
-                { label: '现金', value: 'CASH' }
+                { label: '现金', value: 'CASH' },
+                { label: 'POS机', value: 'POSMA' }
             ],
             carryStoreId: true
         };

+ 13 - 2
src/main/vue/src/views/FeeTypeEdit.vue

@@ -28,7 +28,14 @@
                 </el-select>
             </el-form-item>
             <el-form-item prop="name" label="费用名称">
-                <el-input v-model="formData.name"></el-input>
+                <el-select v-model="formData.name">
+                    <el-option
+                        v-for="item in feeNames"
+                        :label="item.name"
+                        :value="item.name"
+                        :key="item.id"
+                    ></el-option>
+                </el-select>
             </el-form-item>
             <el-form-item prop="remark" label="备注">
                 <el-input v-model="formData.remark"></el-input>
@@ -84,6 +91,9 @@ export default {
                 console.log(e);
                 this.$message.error(e.error);
             });
+        this.$http.get('/feeName/all', { size: 1000 }).then(res => {
+            this.feeNames = res.content;
+        });
     },
     data() {
         return {
@@ -130,7 +140,8 @@ export default {
                 { label: '基础', value: 'BASE' },
                 { label: '其他', value: 'OTHER' }
             ],
-            storeIdOptions: []
+            storeIdOptions: [],
+            feeNames: []
         };
     },
     methods: {

+ 1 - 3
src/test/java/com/izouma/zhumj/repo/IndividualRentRepoTest.java

@@ -6,15 +6,13 @@ import org.springframework.beans.factory.annotation.Autowired;
 
 import java.time.LocalDateTime;
 
-import static org.junit.Assert.*;
-
 public class IndividualRentRepoTest extends ZhumjApplicationTests {
     @Autowired
     IndividualRentRepo individualRentRepo;
 
     @Test
     public void findByCheckinInfoStoreIdAndCreatedAtBetween() {
-        individualRentRepo.findByCheckinInfoStoreIdAndCreatedAtBetween(2418L,
+        individualRentRepo.findByStoreIdAndCreatedAtBetween(2418L,
                 LocalDateTime.of(2020, 1, 23, 0, 0, 0),
                 LocalDateTime.of(2020, 2, 23, 23, 59, 59, 99));
     }

+ 3 - 11
src/test/java/com/izouma/zhumj/service/PersonalFeeServiceTest.java

@@ -30,18 +30,10 @@ import static org.junit.Assert.*;
 
 public class PersonalFeeServiceTest extends ZhumjApplicationTests {
     @Autowired
-    private PersonalFeeRepo personalFeeRepo;
-
-    @Autowired
-    private UserRepo userRepo;
-
-    @Autowired
-    private CheckinInfoRepo checkinInfoRepo;
-
-    @Autowired
-    private RechargeRecordRepo rechargeRecordRepo;
+    private PersonalFeeService personalFeeService;
 
     @Test
-    public void aaa() {
+    public void fixNoneFeeTypeRecords() {
+        personalFeeService.fixNoneFeeTypeRecords();
     }
 }