Przeglądaj źródła

Merge remote-tracking branch 'origin/master'

周箭河 4 lat temu
rodzic
commit
98e8be5521
22 zmienionych plików z 861 dodań i 59 usunięć
  1. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentCalenderCourseSettingsDao.java
  2. 25 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentCalenderDao.java
  3. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentCalenderDetailDao.java
  4. 41 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupPaymentCalenderAuditDetailDto.java
  5. 240 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupPaymentCalenderAuditDto.java
  6. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/SimpleUserDto.java
  7. 50 8
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupPaymentCalender.java
  8. 21 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/MusicGroupPaymentCalenderQueryInfo.java
  9. 6 1
      mec-biz/src/main/java/com/ym/mec/biz/service/GoodsCategoryService.java
  10. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/GoodsService.java
  11. 13 1
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupPaymentCalenderCourseSettingsService.java
  12. 49 0
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupPaymentCalenderService.java
  13. 23 11
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleStudentPaymentServiceImpl.java
  14. 17 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/GoodsCategoryServiceImpl.java
  15. 49 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/GoodsServiceImpl.java
  16. 36 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderCourseSettingsServiceImpl.java
  17. 97 16
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java
  18. 4 0
      mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentCalenderCourseSettingsMapper.xml
  19. 14 0
      mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentCalenderDetailMapper.xml
  20. 75 8
      mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentCalenderMapper.xml
  21. 11 0
      mec-web/src/main/java/com/ym/mec/web/controller/GoodsController.java
  22. 54 10
      mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupPaymentCalenderController.java

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentCalenderCourseSettingsDao.java

@@ -42,4 +42,14 @@ public interface MusicGroupPaymentCalenderCourseSettingsDao extends BaseDAO<Inte
 	 */
 	int batchInsert(List<MusicGroupPaymentCalenderCourseSettings> musicGroupPaymentCalenderCourseSettingsList);
 
+	/**
+	 * @describe 获取收费标准
+	 * @apiNote 时光荏苒,认真工作的时间总是过得很快,而我、享受这一刻!
+	 * @author zouxuan
+	 * @date 2020/10/30
+	 * @time 16:04
+	 * @param calenderId:
+	 * @return java.util.List<com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderCourseSettings>
+	 */
+	List<MusicGroupPaymentCalenderCourseSettings> queryCalenderCourseSettings(Integer calenderId);
 }

+ 25 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentCalenderDao.java

@@ -3,6 +3,7 @@ package com.ym.mec.biz.dal.dao;
 import java.util.*;
 
 import com.ym.mec.biz.dal.dto.CalenderPushDto;
+import com.ym.mec.biz.dal.dto.MusicGroupPaymentCalenderAuditDto;
 import org.apache.ibatis.annotations.Param;
 
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
@@ -141,4 +142,28 @@ public interface MusicGroupPaymentCalenderDao extends BaseDAO<Long, MusicGroupPa
      * @return java.util.List<com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender>
      */
     List<MusicGroupPaymentCalender> findByBatchNo(@Param("batchNo") String batchNo);
+
+
+    /**
+     * @describe 乐团缴费日历审核列表
+     * @apiNote 时光荏苒,认真工作的时间总是过得很快,而我、享受这一刻!
+     * @author zouxuan
+     * @date 2020/10/30
+     * @time 13:47
+     * @param params:
+     * @return int
+     */
+    int countAuditList(Map<String, Object> params);
+
+    /**
+     * @describe 乐团缴费日历审核列表
+     * @apiNote 时光荏苒,认真工作的时间总是过得很快,而我、享受这一刻!
+     * @author zouxuan
+     * @date 2020/10/30
+     * @time 13:47
+     * @param params:
+     * @return int
+     */
+    List<MusicGroupPaymentCalenderAuditDto> queryAuditList(Map<String, Object> params);
+
 }

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentCalenderDetailDao.java

@@ -155,4 +155,16 @@ public interface MusicGroupPaymentCalenderDetailDao extends BaseDAO<Long, MusicG
      * @return java.util.List<com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderDetail>
      */
     List<MusicGroupPaymentCalenderDetail> getUnusedPaymentCalenderWithMusicGroup(@Param("musicGroupId") String musicGroupId);
+
+    /**
+     * @describe 获取缴费日历学员列表
+     * @apiNote 时光荏苒,认真工作的时间总是过得很快,而我、享受这一刻!
+     * @author zouxuan
+     * @date 2020/10/30
+     * @time 16:39
+     * @param calenderId:
+     * @param musicGroupId:
+     * @return java.util.List<com.ym.mec.biz.dal.dto.SimpleUserDto>
+     */
+	List<SimpleUserDto> querySimpleUserDto(@Param("calenderId") Integer calenderId, @Param("musicGroupId") String musicGroupId);
 }

+ 41 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupPaymentCalenderAuditDetailDto.java

@@ -0,0 +1,41 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderCourseSettings;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+
+public class MusicGroupPaymentCalenderAuditDetailDto {
+    @ApiModelProperty(value = "学员数量",required = false)
+    private Integer studentNum;
+
+    @ApiModelProperty(value = "学员名单",required = false)
+    private List<SimpleUserDto> simpleUserDtos;
+
+    @ApiModelProperty(value = "收费标准列表",required = false)
+    private List<MusicGroupPaymentCalenderCourseSettings> musicGroupPaymentCalenderCourseSettings;
+
+    public Integer getStudentNum() {
+        return studentNum;
+    }
+
+    public void setStudentNum(Integer studentNum) {
+        this.studentNum = studentNum;
+    }
+
+    public List<SimpleUserDto> getSimpleUserDto() {
+        return simpleUserDtos;
+    }
+
+    public void setBasicUserDtos(List<SimpleUserDto> simpleUserDtos) {
+        this.simpleUserDtos = simpleUserDtos;
+    }
+
+    public List<MusicGroupPaymentCalenderCourseSettings> getMusicGroupPaymentCalenderCourseSettings() {
+        return musicGroupPaymentCalenderCourseSettings;
+    }
+
+    public void setMusicGroupPaymentCalenderCourseSettings(List<MusicGroupPaymentCalenderCourseSettings> musicGroupPaymentCalenderCourseSettings) {
+        this.musicGroupPaymentCalenderCourseSettings = musicGroupPaymentCalenderCourseSettings;
+    }
+}

+ 240 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupPaymentCalenderAuditDto.java

@@ -0,0 +1,240 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+public class MusicGroupPaymentCalenderAuditDto {
+    @ApiModelProperty(value = "缴费项目编号",required = false)
+    private Long musicGroupPaymentCalenderId;
+
+    @ApiModelProperty(value = "分部编号",required = false)
+    private Integer organId;
+
+    @ApiModelProperty(value = "分部名称",required = false)
+    private String organName;
+
+    @ApiModelProperty(value = "乐团名称",required = false)
+    private String musicGroupName;
+
+    @ApiModelProperty(value = "乐团编号",required = false)
+    private String musicGroupId;
+
+    @ApiModelProperty(value = "创建时间",required = false)
+    private Date createTime;
+
+    @ApiModelProperty(value = "缴费类型", required = false)
+    private MusicGroupPaymentCalender.PaymentType paymentType;
+
+    @ApiModelProperty(value = "订单类型,学校/个人", required = false)
+    private MusicGroupPaymentCalender.PayUserType payUserType;
+
+    @ApiModelProperty(value = "加课总时长",required = false)
+    private Integer addCourseTotalTime;
+
+    @ApiModelProperty(value = "原价",required = false)
+    private BigDecimal courseOriginalPrice;
+
+    @ApiModelProperty(value = "申请价格",required = false)
+    private BigDecimal courseCurrentPrice;
+
+    @ApiModelProperty(value = "备注",required = false)
+    private String memo;
+
+    @ApiModelProperty(value = "创建人编号",required = false)
+    private Integer operator;
+
+    @ApiModelProperty(value = "创建人名称",required = false)
+    private String operatorName;
+
+    @ApiModelProperty(value = "审核状态",required = false)
+    private MusicGroupPaymentCalender.PaymentCalenderStatusEnum auditStatus;
+
+    @ApiModelProperty(value = "收费标准名称",required = false)
+    private String calenderSettingsName;
+
+    @ApiModelProperty(value = "缴费方式",required = false)
+    private Integer paymentPattern;
+
+    @ApiModelProperty(value = "缴费有效期开始时间",required = false)
+    private String paymentValidStartDate;
+
+    @ApiModelProperty(value = "缴费有效期结束时间",required = false)
+    private String paymentValidEndDate;
+
+    @ApiModelProperty(value = "开始缴费日期",required = false)
+    private String startPaymentDate;
+
+    @ApiModelProperty(value = "缴费截止日期",required = false)
+    private String deadlinePaymentDate;
+
+    public String getCalenderSettingsName() {
+        return calenderSettingsName;
+    }
+
+    public void setCalenderSettingsName(String calenderSettingsName) {
+        this.calenderSettingsName = calenderSettingsName;
+    }
+
+    public Integer getPaymentPattern() {
+        return paymentPattern;
+    }
+
+    public void setPaymentPattern(Integer paymentPattern) {
+        this.paymentPattern = paymentPattern;
+    }
+
+    public String getPaymentValidStartDate() {
+        return paymentValidStartDate;
+    }
+
+    public void setPaymentValidStartDate(String paymentValidStartDate) {
+        this.paymentValidStartDate = paymentValidStartDate;
+    }
+
+    public String getPaymentValidEndDate() {
+        return paymentValidEndDate;
+    }
+
+    public void setPaymentValidEndDate(String paymentValidEndDate) {
+        this.paymentValidEndDate = paymentValidEndDate;
+    }
+
+    public String getStartPaymentDate() {
+        return startPaymentDate;
+    }
+
+    public void setStartPaymentDate(String startPaymentDate) {
+        this.startPaymentDate = startPaymentDate;
+    }
+
+    public String getDeadlinePaymentDate() {
+        return deadlinePaymentDate;
+    }
+
+    public void setDeadlinePaymentDate(String deadlinePaymentDate) {
+        this.deadlinePaymentDate = deadlinePaymentDate;
+    }
+
+    public Long getMusicGroupPaymentCalenderId() {
+        return musicGroupPaymentCalenderId;
+    }
+
+    public void setMusicGroupPaymentCalenderId(Long musicGroupPaymentCalenderId) {
+        this.musicGroupPaymentCalenderId = musicGroupPaymentCalenderId;
+    }
+
+    public Integer getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(Integer organId) {
+        this.organId = organId;
+    }
+
+    public String getOrganName() {
+        return organName;
+    }
+
+    public void setOrganName(String organName) {
+        this.organName = organName;
+    }
+
+    public String getMusicGroupName() {
+        return musicGroupName;
+    }
+
+    public void setMusicGroupName(String musicGroupName) {
+        this.musicGroupName = musicGroupName;
+    }
+
+    public String getMusicGroupId() {
+        return musicGroupId;
+    }
+
+    public void setMusicGroupId(String musicGroupId) {
+        this.musicGroupId = musicGroupId;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public MusicGroupPaymentCalender.PaymentType getPaymentType() {
+        return paymentType;
+    }
+
+    public void setPaymentType(MusicGroupPaymentCalender.PaymentType paymentType) {
+        this.paymentType = paymentType;
+    }
+
+    public MusicGroupPaymentCalender.PayUserType getPayUserType() {
+        return payUserType;
+    }
+
+    public void setPayUserType(MusicGroupPaymentCalender.PayUserType payUserType) {
+        this.payUserType = payUserType;
+    }
+
+    public Integer getAddCourseTotalTime() {
+        return addCourseTotalTime;
+    }
+
+    public void setAddCourseTotalTime(Integer addCourseTotalTime) {
+        this.addCourseTotalTime = addCourseTotalTime;
+    }
+
+    public BigDecimal getCourseOriginalPrice() {
+        return courseOriginalPrice;
+    }
+
+    public void setCourseOriginalPrice(BigDecimal courseOriginalPrice) {
+        this.courseOriginalPrice = courseOriginalPrice;
+    }
+
+    public BigDecimal getCourseCurrentPrice() {
+        return courseCurrentPrice;
+    }
+
+    public void setCourseCurrentPrice(BigDecimal courseCurrentPrice) {
+        this.courseCurrentPrice = courseCurrentPrice;
+    }
+
+    public String getMemo() {
+        return memo;
+    }
+
+    public void setMemo(String memo) {
+        this.memo = memo;
+    }
+
+    public Integer getOperator() {
+        return operator;
+    }
+
+    public void setOperator(Integer operator) {
+        this.operator = operator;
+    }
+
+    public String getOperatorName() {
+        return operatorName;
+    }
+
+    public void setOperatorName(String operatorName) {
+        this.operatorName = operatorName;
+    }
+
+    public MusicGroupPaymentCalender.PaymentCalenderStatusEnum getAuditStatus() {
+        return auditStatus;
+    }
+
+    public void setAuditStatus(MusicGroupPaymentCalender.PaymentCalenderStatusEnum auditStatus) {
+        this.auditStatus = auditStatus;
+    }
+}

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/SimpleUserDto.java

@@ -1,5 +1,7 @@
 package com.ym.mec.biz.dal.dto;
 
+import java.math.BigDecimal;
+
 /**
  * @Author Joburgess
  * @Date 2020/2/9
@@ -18,6 +20,16 @@ public class SimpleUserDto {
 
     private String phone;
 
+    private BigDecimal actualAmount;
+
+    public BigDecimal getActualAmount() {
+        return actualAmount;
+    }
+
+    public void setActualAmount(BigDecimal actualAmount) {
+        this.actualAmount = actualAmount;
+    }
+
     public String getPhone() {
         return phone;
     }

+ 50 - 8
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupPaymentCalender.java

@@ -1,15 +1,13 @@
 package com.ym.mec.biz.dal.entity;
 
+import com.ym.mec.common.enums.BaseEnum;
 import io.swagger.annotations.ApiModelProperty;
+import org.apache.commons.lang3.builder.ToStringBuilder;
 
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
-import org.apache.commons.lang3.builder.ToStringBuilder;
-
-import com.ym.mec.common.enums.BaseEnum;
-
 /**
  * 对应数据库表(music_group_payment_calender):
  */
@@ -36,7 +34,7 @@ public class MusicGroupPaymentCalender {
 	}
 
 	public enum PayUserType implements BaseEnum<String, PayUserType> {
-		STUDENT("学生"), SCHOOL("学校");
+		STUDENT("个人"), SCHOOL("学校");
 
 		private String desc;
 
@@ -55,6 +53,26 @@ public class MusicGroupPaymentCalender {
 
 	}
 
+	public enum PaymentType implements BaseEnum<String, PaymentType> {
+		ADD_STUDENT("新增学员"), ADD_COURSE("临时加课"), MUSIC_COURSE("乐团课程");
+
+		private String desc;
+
+		PaymentType(String desc) {
+			this.desc = desc;
+		}
+
+		@Override
+		public String getCode() {
+			return this.name();
+		}
+
+		public String getDesc() {
+			return desc;
+		}
+
+	}
+
 	private Long id;
 
 	@ApiModelProperty(value = "乐团编号", required = false)
@@ -80,16 +98,24 @@ public class MusicGroupPaymentCalender {
 	private Integer paymentPattern;
 
 	@ApiModelProperty(value = "缴费类型0续费,1报名", required = false)
-	private Integer paymentType;
+	private PaymentType paymentType;
 
+	@ApiModelProperty(value = "状态", required = false)
 	private PaymentCalenderStatusEnum status;
 
 	private Integer expectNum;
 
 	private Integer actualNum;
 
+	@ApiModelProperty(value = "创建人", required = false)
+	private Integer operator;
+
+	@ApiModelProperty(value = "备注", required = false)
 	private String memo;
 
+	@ApiModelProperty(value = "审核意见", required = false)
+	private String auditMemo;
+
 	private Boolean isGiveMusicNetwork;
 	
 	private String rejectReason;
@@ -102,16 +128,32 @@ public class MusicGroupPaymentCalender {
 
 	private List<MusicGroupPaymentCalenderCourseSettings> musicGroupPaymentCalenderCourseSettingsList = new ArrayList<MusicGroupPaymentCalenderCourseSettings>();
 
+	@ApiModelProperty(value = "批次号", required = false)
 	private String batchNo;
 
 	private List<MusicGroupPaymentCalenderCourseSettings> MusicGroupPaymentCalenderCourseSettingsList = new ArrayList<MusicGroupPaymentCalenderCourseSettings>();
 
+	public String getAuditMemo() {
+		return auditMemo;
+	}
+
+	public void setAuditMemo(String auditMemo) {
+		this.auditMemo = auditMemo;
+	}
+
+	public Integer getOperator() {
+		return operator;
+	}
+
+	public void setOperator(Integer operator) {
+		this.operator = operator;
+	}
 
-	public Integer getPaymentType() {
+	public PaymentType getPaymentType() {
 		return paymentType;
 	}
 
-	public void setPaymentType(Integer paymentType) {
+	public void setPaymentType(PaymentType paymentType) {
 		this.paymentType = paymentType;
 	}
 

+ 21 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/MusicGroupPaymentCalenderQueryInfo.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.page;
 
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PayUserType;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PaymentCalenderStatusEnum;
 import com.ym.mec.common.page.QueryInfo;
@@ -9,9 +10,29 @@ public class MusicGroupPaymentCalenderQueryInfo extends QueryInfo {
 	private String musicGroupId;
 	
 	private PayUserType payUserType;
+
+	private MusicGroupPaymentCalender.PaymentType paymentType;
 	
 	private PaymentCalenderStatusEnum status;
 
+	private String organId;
+
+	public MusicGroupPaymentCalender.PaymentType getPaymentType() {
+		return paymentType;
+	}
+
+	public void setPaymentType(MusicGroupPaymentCalender.PaymentType paymentType) {
+		this.paymentType = paymentType;
+	}
+
+	public String getOrganId() {
+		return organId;
+	}
+
+	public void setOrganId(String organId) {
+		this.organId = organId;
+	}
+
 	public String getMusicGroupId() {
 		return musicGroupId;
 	}

+ 6 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/GoodsCategoryService.java

@@ -2,10 +2,13 @@ package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.dto.SubjectGoodsDto;
 import com.ym.mec.biz.dal.entity.GoodsCategory;
+import com.ym.mec.biz.dal.enums.AccountType;
 import com.ym.mec.biz.dal.page.GoodsCategoryQueryInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
+import java.util.List;
+
 public interface GoodsCategoryService extends BaseService<Integer, GoodsCategory> {
     /**
      * 新增、修改商品类型
@@ -26,4 +29,6 @@ public interface GoodsCategoryService extends BaseService<Integer, GoodsCategory
      * @param goodsIds
      */
     void updateSubjectGoods(Long subjectGoodsMapperId, String goodsIds);
-}
+
+    void goodsTest(List<Integer> goodsIds);
+}

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/GoodsService.java

@@ -118,4 +118,6 @@ public interface GoodsService extends BaseService<Integer, Goods> {
      * @return java.util.List<com.ym.mec.biz.dal.dto.GoodsSellDto>
      */
     List<GoodsSellDto> queryGoodsSellDtos(String goodsId);
+
+    void getGoodsTest(List<Integer> goodsIds);
 }

+ 13 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupPaymentCalenderCourseSettingsService.java

@@ -3,6 +3,18 @@ package com.ym.mec.biz.service;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderCourseSettings;
 import com.ym.mec.common.service.BaseService;
 
+import java.util.List;
+
 public interface MusicGroupPaymentCalenderCourseSettingsService extends BaseService<Integer, MusicGroupPaymentCalenderCourseSettings> {
 
-}
+    /**
+     * @describe 获取指定学员在指定乐团下本次课排课时长
+     * @author Joburgess
+     * @date 2020.11.02
+     * @param musicGroupId:
+     * @param studentIds:
+     * @return java.util.List<com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderCourseSettings>
+     */
+    List<MusicGroupPaymentCalenderCourseSettings> getMusicCourseSettingsWithStudents(String musicGroupId, List<Integer> studentIds);
+
+}

+ 49 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupPaymentCalenderService.java

@@ -2,7 +2,12 @@ package com.ym.mec.biz.service;
 
 import java.util.List;
 
+import com.ym.mec.biz.dal.dto.MusicGroupPaymentCalenderAuditDetailDto;
+import com.ym.mec.biz.dal.dto.MusicGroupPaymentCalenderAuditDto;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
+import com.ym.mec.biz.dal.page.MusicGroupPaymentCalenderQueryInfo;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.BaseService;
 
 public interface MusicGroupPaymentCalenderService extends BaseService<Long, MusicGroupPaymentCalender> {
@@ -61,4 +66,48 @@ public interface MusicGroupPaymentCalenderService extends BaseService<Long, Musi
 	 * @return void
 	 */
 	void autoUpdateMusicGroupStudentFeeStatus();
+
+	/**
+	 * @describe 乐团缴费日历审核列表
+	 * @apiNote 时光荏苒,认真工作的时间总是过得很快,而我、享受这一刻!
+	 * @author zouxuan
+	 * @date 2020/10/30
+	 * @time 10:45
+	 * @param pageInfo:
+	 * @return void
+	 */
+	PageInfo<MusicGroupPaymentCalenderAuditDto> auditList(MusicGroupPaymentCalenderQueryInfo pageInfo);
+
+	/**
+	 * @describe 乐团缴费日历审核列表详情
+	 * @apiNote 时光荏苒,认真工作的时间总是过得很快,而我、享受这一刻!
+	 * @author zouxuan
+	 * @date 2020/10/30
+	 * @time 15:10
+	 * @param calenderId:
+	 * @return com.ym.mec.biz.dal.dto.MusicGroupPaymentCalenderAuditDetailDto
+	 */
+	MusicGroupPaymentCalenderAuditDetailDto auditListDetail(Integer calenderId,String musicGroupId);
+
+	/**
+	 * @describe 审核通过
+	 * @apiNote 时光荏苒,认真工作的时间总是过得很快,而我、享受这一刻!
+	 * @author zouxuan
+	 * @date 2020/10/30
+	 * @time 17:39
+	 * @param calenderId:
+	 * @return void
+	 */
+	void auditPass(Long calenderId,String auditMemo);
+
+	/**
+	 * @describe 审核拒绝
+	 * @apiNote 时光荏苒,认真工作的时间总是过得很快,而我、享受这一刻!
+	 * @author zouxuan
+	 * @date 2020/10/30
+	 * @time 17:39
+	 * @param calenderId:
+	 * @return void
+	 */
+	void auditRefuse(Long calenderId,String auditMemo);
 }

+ 23 - 11
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleStudentPaymentServiceImpl.java

@@ -392,19 +392,31 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 		}
 		List<Long> calenderIds = musicGroupPaymentCalenders.stream().map(MusicGroupPaymentCalender::getId).collect(Collectors.toList());
 		List<MusicGroupPaymentCalenderDetail> calenderDetails = musicGroupPaymentCalenderDetailDao.getWithCalenderIds(calenderIds);
-		//学员总缴费金额
-		BigDecimal totalActualAmount = calenderDetails.stream().map(MusicGroupPaymentCalenderDetail::getActualAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
-
-		for (CourseScheduleStudentPayment courseScheduleStudentPayment : courseScheduleStudentPayments) {
-			if(totalActualAmount.compareTo(courseScheduleStudentPayment.getExpectPrice())>=0){
-				courseScheduleStudentPayment.setActualPrice(courseScheduleStudentPayment.getExpectPrice());
-				totalActualAmount=totalActualAmount.subtract(courseScheduleStudentPayment.getExpectPrice());
-			}else{
-				courseScheduleStudentPayment.setActualPrice(totalActualAmount);
-				totalActualAmount=BigDecimal.ZERO;
+
+		Map<Integer, List<CourseScheduleStudentPayment>> studentStudentPaymentMap = courseScheduleStudentPayments.stream().collect(Collectors.groupingBy(CourseScheduleStudentPayment::getUserId));
+		Map<Integer, List<MusicGroupPaymentCalenderDetail>> studentCalenderDetailMap = calenderDetails.stream().collect(Collectors.groupingBy(MusicGroupPaymentCalenderDetail::getUserId));
+
+		List<CourseScheduleStudentPayment> updateStudentPayments = new ArrayList<>();
+
+		for (Map.Entry<Integer, List<CourseScheduleStudentPayment>> studentStudentPaymentMapEntry : studentStudentPaymentMap.entrySet()) {
+			List<MusicGroupPaymentCalenderDetail> musicGroupPaymentCalenderDetails = studentCalenderDetailMap.get(studentStudentPaymentMapEntry.getKey());
+
+			//学员总缴费金额
+			BigDecimal totalActualAmount = musicGroupPaymentCalenderDetails.stream().map(MusicGroupPaymentCalenderDetail::getActualAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+
+			for (CourseScheduleStudentPayment courseScheduleStudentPayment : studentStudentPaymentMapEntry.getValue()) {
+				if(totalActualAmount.compareTo(courseScheduleStudentPayment.getExpectPrice())>=0){
+					courseScheduleStudentPayment.setActualPrice(courseScheduleStudentPayment.getExpectPrice());
+					totalActualAmount=totalActualAmount.subtract(courseScheduleStudentPayment.getExpectPrice());
+				}else{
+					courseScheduleStudentPayment.setActualPrice(totalActualAmount);
+					totalActualAmount=BigDecimal.ZERO;
+				}
+				updateStudentPayments.add(courseScheduleStudentPayment);
 			}
 		}
-		courseScheduleStudentPaymentDao.batchUpdate(courseScheduleStudentPayments);
+
+		courseScheduleStudentPaymentDao.batchUpdate(updateStudentPayments);
 	}
 
 	@Override

+ 17 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/GoodsCategoryServiceImpl.java

@@ -6,15 +6,18 @@ import com.ym.mec.biz.dal.dto.SubjectGoodsDto;
 import com.ym.mec.biz.dal.entity.Goods;
 import com.ym.mec.biz.dal.entity.GoodsCategory;
 import com.ym.mec.biz.dal.entity.SubjectGoodsMapper;
+import com.ym.mec.biz.dal.enums.AccountType;
 import com.ym.mec.biz.dal.enums.GoodsType;
 import com.ym.mec.biz.dal.page.GoodsCategoryQueryInfo;
 import com.ym.mec.biz.service.GoodsCategoryService;
+import com.ym.mec.biz.service.GoodsService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.collection.MapUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
@@ -82,4 +85,17 @@ public class GoodsCategoryServiceImpl extends BaseServiceImpl<Integer, GoodsCate
 		subjectGoodsMapper.setUpdateTime(new Date());
 		subjectGoodsMapperDao.update(subjectGoodsMapper);
 	}
-}
+
+	@Autowired
+	private GoodsService goodsService;
+
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+	public void goodsTest(List<Integer> goodsIds) {
+		goodsTest1(goodsIds);
+	}
+
+	public void goodsTest1(List<Integer> goodsIds) {
+		goodsService.subtractStock(goodsIds, AccountType.INTERNAL);
+	}
+}

+ 49 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/GoodsServiceImpl.java

@@ -447,6 +447,54 @@ public class GoodsServiceImpl extends BaseServiceImpl<Integer, Goods>  implement
 
 	@Override
 	@Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
+	public void getGoodsTest(List<Integer> goodsIds) {
+		List<Goods> tempGoodsList = goodsDao.lockGoods(new ArrayList<>(goodsIds));
+		Map<Integer, Goods> idTempGoodsMap = tempGoodsList.stream().collect(Collectors.toMap(Goods::getId, g -> g));
+		List<GoodsProcurement> goodsProcurements = new ArrayList<>();
+		for (Integer goodsId : goodsIds) {
+			Goods tempGoods = goodsDao.get(goodsId);
+			List<Goods> childGoods = new ArrayList<>();
+			if(StringUtils.isBlank(tempGoods.getComplementGoodsIdList())){
+				childGoods.add(tempGoods);
+			}else{
+				List<Integer> complementGoodsIds = Arrays.stream(tempGoods.getComplementGoodsIdList().split(",")).map(s -> Integer.valueOf(s)).collect(Collectors.toList());
+				childGoods = goodsDao.lockGoods(complementGoodsIds);
+			}
+			for (Goods goods : childGoods) {
+				GoodsProcurement goodsProcurement = null;
+				if(StockType.INTERNAL.equals(goods.getStockType())||(StockType.ALL.equals(goods.getStockType())&&AccountType.INTERNAL.equals(AccountType.INTERNAL))){
+					goodsProcurement = goodsProcurementDao.getWithStockSurplusProcurement(goods.getId());
+					goods.setStockCount(new AtomicInteger(goods.getStockCount()).decrementAndGet());
+					if(Objects.nonNull(goodsProcurement)){
+						goodsProcurement.setStockSoldNum(new AtomicInteger(goodsProcurement.getStockSoldNum()).incrementAndGet());
+					}
+				}else if(StockType.EXTERNAL.equals(goods.getStockType())||(StockType.ALL.equals(goods.getStockType())&&AccountType.EXTERNAL.equals(AccountType.EXTERNAL))){
+					goodsProcurement = goodsProcurementDao.getWithTaxStockSurplusProcurement(goods.getId());
+					goods.setTaxStockCount(new AtomicInteger(goods.getTaxStockCount()).decrementAndGet());
+					if(Objects.nonNull(goodsProcurement)){
+						goodsProcurement.setTaxStockSoldNum(new AtomicInteger(goodsProcurement.getTaxStockSoldNum()).incrementAndGet());
+					}
+				}
+
+				goods.setSellCount(new AtomicInteger(goods.getSellCount()).incrementAndGet());
+
+				goodsDao.update(goods);
+				if(Objects.nonNull(goodsProcurement)){
+					goodsProcurementDao.update(goodsProcurement);
+				}else{
+					goodsProcurement = new GoodsProcurement(goods.getId());
+				}
+				if(StringUtils.isNotBlank(tempGoods.getComplementGoodsIdList())){
+					goodsProcurement.setParentGoodsId(tempGoods.getId());
+				}
+
+				goodsProcurements.add(goodsProcurement);
+			}
+		}
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
 	public List<SellOrder> subtractStock(List<Integer> goodsIds, AccountType accountType) {
 		if(CollectionUtils.isEmpty(goodsIds)){
 			return Collections.emptyList();
@@ -456,7 +504,7 @@ public class GoodsServiceImpl extends BaseServiceImpl<Integer, Goods>  implement
 		Map<Integer, Goods> idTempGoodsMap = tempGoodsList.stream().collect(Collectors.toMap(Goods::getId, g -> g));
 		List<GoodsProcurement> goodsProcurements = new ArrayList<>();
 		for (Integer goodsId : goodsIds) {
-			Goods tempGoods = idTempGoodsMap.get(goodsId);
+			Goods tempGoods = tempGoodsList.get(goodsId);
 			List<Goods> childGoods = new ArrayList<>();
 			if(StringUtils.isBlank(tempGoods.getComplementGoodsIdList())){
 				childGoods.add(tempGoods);

+ 36 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderCourseSettingsServiceImpl.java

@@ -1,5 +1,10 @@
 package com.ym.mec.biz.service.impl;
 
+import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDao;
+import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDetailDao;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderDetail;
+import com.ym.mec.common.exception.BizException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -8,16 +13,45 @@ import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderCourseSettings;
 import com.ym.mec.biz.service.MusicGroupPaymentCalenderCourseSettingsService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 @Service
 public class MusicGroupPaymentCalenderCourseSettingsServiceImpl extends BaseServiceImpl<Integer, MusicGroupPaymentCalenderCourseSettings>  implements MusicGroupPaymentCalenderCourseSettingsService {
 	
 	@Autowired
 	private MusicGroupPaymentCalenderCourseSettingsDao musicGroupPaymentCalenderCourseSettingsDao;
+	@Autowired
+	private MusicGroupPaymentCalenderDao musicGroupPaymentCalenderDao;
+	@Autowired
+	private MusicGroupPaymentCalenderDetailDao musicGroupPaymentCalenderDetailDao;
 
 	@Override
 	public BaseDAO<Integer, MusicGroupPaymentCalenderCourseSettings> getDAO() {
 		return musicGroupPaymentCalenderCourseSettingsDao;
 	}
-	
-}
+
+	@Override
+	public List<MusicGroupPaymentCalenderCourseSettings> getMusicCourseSettingsWithStudents(String musicGroupId, List<Integer> studentIds) {
+		MusicGroupPaymentCalender musicGroupUnusedFirstPaymentCalender = musicGroupPaymentCalenderDao.getMusicGroupUnusedFirstPaymentCalender(musicGroupId, studentIds);
+		if(Objects.isNull(musicGroupUnusedFirstPaymentCalender)){
+			throw new BizException("当前乐团暂无新缴费设置");
+		}
+
+		List<MusicGroupPaymentCalenderDetail> unusedPaymentCalenderDetail = musicGroupPaymentCalenderDetailDao.getCalenderDetailWithCalender(musicGroupUnusedFirstPaymentCalender.getId());
+		if(CollectionUtils.isEmpty(unusedPaymentCalenderDetail)){
+			throw new BizException("当前乐团无学员缴费信息");
+		}
+		Map<Integer, List<MusicGroupPaymentCalenderDetail>> studentPaymentCalenderMap = unusedPaymentCalenderDetail.stream().collect(Collectors.groupingBy(MusicGroupPaymentCalenderDetail::getUserId));
+
+		List<MusicGroupPaymentCalenderCourseSettings> calenderCourseSettings = musicGroupPaymentCalenderCourseSettingsDao.getWithPaymentCalender(musicGroupUnusedFirstPaymentCalender.getId());
+		if(CollectionUtils.isEmpty(calenderCourseSettings)){
+			throw new BizException("课程收费标准设置异常");
+		}
+		return calenderCourseSettings;
+	}
+}

+ 97 - 16
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java

@@ -1,17 +1,18 @@
 package com.ym.mec.biz.service.impl;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.Map.Entry;
-import java.util.Set;
 import java.util.stream.Collectors;
 
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dto.MusicGroupPaymentCalenderAuditDetailDto;
+import com.ym.mec.biz.dal.dto.MusicGroupPaymentCalenderAuditDto;
+import com.ym.mec.biz.dal.dto.SimpleUserDto;
+import com.ym.mec.biz.dal.page.MusicGroupPaymentCalenderQueryInfo;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.QueryInfo;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -73,6 +74,8 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 	private SysConfigDao sysConfigDao;
 	@Autowired
 	private SysMessageService sysMessageService;
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
 
 	@Override
 	public BaseDAO<Long, MusicGroupPaymentCalender> getDAO() {
@@ -90,13 +93,15 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 		if(musicGroup == null){
 			throw new BizException("乐团查询失败,请检查参数");
 		}
-
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if(sysUser == null){
+			throw new BizException("请登录");
+		}
 		Date date = new Date();
-		Map<Integer, String> pushUserMap = new HashMap<Integer, String>();
+		Map<Integer, String> pushUserMap = new HashMap<>();
 		MusicGroupPaymentCalenderDetail musicGroupPaymentCalenderDetail = null;
-		List<MusicGroupPaymentCalenderDetail> musicGroupPaymentCalenderDetailList = new ArrayList<MusicGroupPaymentCalenderDetail>();
-		
-
+		List<MusicGroupPaymentCalenderDetail> musicGroupPaymentCalenderDetailList = new ArrayList<>();
+		musicGroupPaymentCalender.setOperator(sysUser.getId());
 		musicGroupPaymentCalender.setCreateTime(date);
 		musicGroupPaymentCalender.setUpdateTime(date);
 		
@@ -112,7 +117,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 		//获取设置的课程
 		List<MusicGroupPaymentCalenderCourseSettings> musicGroupPaymentCalenderCourseSettingsList = musicGroupPaymentCalender.getMusicGroupPaymentCalenderCourseSettingsList();
 		if(musicGroupPaymentCalenderCourseSettingsList == null){
-			musicGroupPaymentCalenderCourseSettingsList = new ArrayList<MusicGroupPaymentCalenderCourseSettings>();
+			musicGroupPaymentCalenderCourseSettingsList = new ArrayList<>();
 		}
 		
 		//查询默认课程费用
@@ -141,7 +146,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 			}
 			
 			//如果是报名,需要修改乐团状态
-			if (musicGroupPaymentCalender.getPaymentType() == 1) {
+			if (musicGroupPaymentCalender.getPaymentType() == MusicGroupPaymentCalender.PaymentType.MUSIC_COURSE) {
 				musicGroup.setStatus(MusicGroupStatusEnum.AUDIT);
 				musicGroup.setUpdateTime(date);
 				musicGroupDao.update(musicGroup);
@@ -270,7 +275,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 			}
 			
 			//如果是报名,需要修改乐团状态
-			if (musicGroupPaymentCalender.getPaymentType() == 1) {
+			if (musicGroupPaymentCalender.getPaymentType() == MusicGroupPaymentCalender.PaymentType.MUSIC_COURSE) {
 				musicGroup.setStatus(MusicGroupStatusEnum.AUDIT);
 				musicGroup.setUpdateTime(date);
 				musicGroupDao.update(musicGroup);
@@ -382,6 +387,82 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 	}
 
 	@Override
+	public PageInfo<MusicGroupPaymentCalenderAuditDto> auditList(MusicGroupPaymentCalenderQueryInfo queryInfo) {
+		PageInfo<MusicGroupPaymentCalenderAuditDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+		Map<String, Object> params = new HashMap<>();
+		MapUtil.populateMap(params, queryInfo);
+
+		List<MusicGroupPaymentCalenderAuditDto> dataList = null;
+		int count = musicGroupPaymentCalenderDao.countAuditList(params);
+		if (count > 0) {
+			pageInfo.setTotal(count);
+			params.put("offset", pageInfo.getOffset());
+			dataList = musicGroupPaymentCalenderDao.queryAuditList(params);
+			List<Integer> collect = dataList.stream().map(e -> e.getOrganId()).collect(Collectors.toList());
+			Map<Integer, String> organNameMap = getMap("organization", "id_", "name_", collect, Integer.class, String.class);
+			List<Integer> operatorIds = dataList.stream().map(e -> e.getOperator()).collect(Collectors.toList());
+			operatorIds.removeAll(Collections.singleton(null));
+			Map<Integer, String> realNameMap = getMap("sys_user", "id_", "real_name_", operatorIds, Integer.class, String.class);
+			dataList.forEach(e->{
+				e.setOperatorName(organNameMap.get(e.getOrganId()));
+				e.setOperatorName(realNameMap.get(e.getOperator()));
+			});
+		}
+		if (count == 0) {
+			dataList = new ArrayList<>();
+		}
+		pageInfo.setRows(dataList);
+		return pageInfo;
+	}
+
+	@Override
+	public MusicGroupPaymentCalenderAuditDetailDto auditListDetail(Integer calenderId,String musicGroupId) {
+		MusicGroupPaymentCalenderAuditDetailDto calenderAuditDetailDto = new MusicGroupPaymentCalenderAuditDetailDto();
+		//获取收费标准
+		calenderAuditDetailDto.setMusicGroupPaymentCalenderCourseSettings(musicGroupPaymentCalenderCourseSettingsDao.queryCalenderCourseSettings(calenderId));
+		//获取学员列表
+		calenderAuditDetailDto.setBasicUserDtos(musicGroupPaymentCalenderDetailDao.querySimpleUserDto(calenderId,musicGroupId));
+		calenderAuditDetailDto.setStudentNum(calenderAuditDetailDto.getSimpleUserDto().size());
+		return calenderAuditDetailDto;
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void auditPass(Long calenderId,String auditMemo) {
+		MusicGroupPaymentCalender musicGroupPaymentCalender = musicGroupPaymentCalenderDao.get(calenderId);
+		Date date = new Date();
+		//如果是报名项目,将乐团改为审核中,缴费项目修改状态,审核状态改为审核通过
+		if (date.after(musicGroupPaymentCalender.getDeadlinePaymentDate())) {
+			musicGroupPaymentCalender.setStatus(PaymentCalenderStatusEnum.OVER);
+		} else if (date.after(musicGroupPaymentCalender.getStartPaymentDate())) {
+			musicGroupPaymentCalender.setStatus(PaymentCalenderStatusEnum.OPEN);
+		} else {
+			musicGroupPaymentCalender.setStatus(PaymentCalenderStatusEnum.NO);
+		}
+		//如果是报名,需要修改乐团状态
+		if (musicGroupPaymentCalender.getPaymentType() == MusicGroupPaymentCalender.PaymentType.MUSIC_COURSE) {
+			MusicGroup musicGroup = musicGroupDao.get(musicGroupPaymentCalender.getMusicGroupId());
+			musicGroup.setStatus(MusicGroupStatusEnum.AUDIT);
+			musicGroup.setUpdateTime(date);
+			musicGroupDao.update(musicGroup);
+		}
+		musicGroupPaymentCalender.setAuditMemo(auditMemo);
+		musicGroupPaymentCalender.setUpdateTime(date);
+		musicGroupPaymentCalenderDao.update(musicGroupPaymentCalender);
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void auditRefuse(Long calenderId,String auditMemo) {
+		MusicGroupPaymentCalender musicGroupPaymentCalender = musicGroupPaymentCalenderDao.get(calenderId);
+		Date date = new Date();
+		musicGroupPaymentCalender.setStatus(PaymentCalenderStatusEnum.AUDITING);
+		musicGroupPaymentCalender.setUpdateTime(date);
+		musicGroupPaymentCalender.setAuditMemo(auditMemo);
+		musicGroupPaymentCalenderDao.update(musicGroupPaymentCalender);
+	}
+
+	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public boolean autoUpdateMusicGroupPaymentCalenderStatus() {
 		// 获取当天创建且未缴费的数据,并推送

+ 4 - 0
mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentCalenderCourseSettingsMapper.xml

@@ -124,4 +124,8 @@
 			#{id}
 		</foreach>
 	</select>
+	<select id="queryCalenderCourseSettings" resultMap="MusicGroupPaymentCalenderCourseSettings">
+		SELECT * FROM music_group_payment_calender_course_settings mgpccs
+		WHERE mgpccs.music_group_payment_calender_id_ = #{calenderId}
+	</select>
 </mapper>

+ 14 - 0
mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentCalenderDetailMapper.xml

@@ -342,4 +342,18 @@
 				#{calenderId}
 			</foreach>
 	</select>
+	<resultMap id="SimpleUserDtoMap" type="com.ym.mec.biz.dal.dto.SimpleUserDto">
+		<result property="userName" column="username_"/>
+		<result property="userId" column="id_"/>
+		<result property="subjectNames" column="subject_name_"/>
+		<result property="actualAmount" column="actual_amount_"/>
+	</resultMap>
+    <select id="querySimpleUserDto" resultMap="SimpleUserDtoMap">
+		SELECT su.id_,su.username_,s.name_ subject_name_,mgpcd.actual_amount_
+		FROM music_group_payment_calender_detail mgpcd
+		LEFT JOIN sys_user su ON su.id_ = mgpcd.user_id_
+		LEFT JOIN student_registration sr ON sr.user_id_ = mgpcd.user_id_ AND sr.music_group_status_ != 'QUIT' AND sr.music_group_id_ = #{musicGroupId}
+		LEFT JOIN `subject` s ON s.id_ = sr.subject_id_
+		WHERE mgpcd.music_group_payment_calender_id_ = #{calenderId}
+	</select>
 </mapper>

+ 75 - 8
mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentCalenderMapper.xml

@@ -17,6 +17,7 @@
         <result column="expect_num_" property="expectNum"/>
         <result column="actual_num_" property="actualNum"/>
         <result column="memo_" property="memo"/>
+        <result column="audit_memo_" property="auditMemo"/>
         <result column="reject_reason_" property="rejectReason"/>
         <result column="is_give_music_network_" property="isGiveMusicNetwork"/>
         <result column="create_time_" property="createTime"/>
@@ -24,7 +25,7 @@
         <result column="payment_valid_start_date_" property="paymentValidStartDate"/>
         <result column="payment_valid_end_date_" property="paymentValidEndDate"/>
         <result column="payment_pattern_" property="paymentPattern"/>
-        <result column="payment_type_" property="paymentType"/>
+        <result column="payment_type_" property="paymentType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="batch_no_" property="batchNo"/>
     </resultMap>
 
@@ -43,22 +44,25 @@
             keyColumn="id_" keyProperty="id">
         INSERT INTO music_group_payment_calender
         (music_group_id_,music_group_organization_course_settings_id_,pay_user_type_,reject_reason_,start_payment_date_,deadline_payment_date_,status_,expect_num_,
-        actual_num_,memo_,is_give_music_network_,create_time_,update_time_,payment_valid_start_date_,payment_valid_end_date_,payment_pattern_,payment_type_,batch_no_)
-        VALUES(#{musicGroupId},#{musicGroupOrganizationCourseSettingId},#{payUserType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{rejectReason},#{startPaymentDate},#{deadlinePaymentDate},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+        actual_num_,memo_,is_give_music_network_,create_time_,update_time_,payment_valid_start_date_,payment_valid_end_date_,payment_pattern_,payment_type_,batch_no_,audit_memo_)
+        VALUES(#{musicGroupId},#{musicGroupOrganizationCourseSettingId},#{payUserType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+        #{rejectReason},#{startPaymentDate},#{deadlinePaymentDate},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
         #{expectNum},#{actualNum},#{memo},#{isGiveMusicNetwork},now(),now(),
-        #{paymentValidStartDate},#{paymentValidEndDate},#{paymentPattern},#{paymentType},#{batchNo})
+        #{paymentValidStartDate},#{paymentValidEndDate},#{paymentPattern},#{paymentType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{batchNo},#{auditMemo})
     </insert>
 
     <insert id="batchInsert" parameterType="com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender" useGeneratedKeys="true"
             keyColumn="id_" keyProperty="id">
         INSERT INTO music_group_payment_calender
         (music_group_id_,music_group_organization_course_settings_id_,pay_user_type_,reject_reason_,start_payment_date_,deadline_payment_date_,status_,expect_num_,
-        actual_num_,memo_,is_give_music_network_,create_time_,update_time_,payment_valid_start_date_,payment_valid_end_date_,payment_pattern_,payment_type_,batch_no_)
+        actual_num_,memo_,is_give_music_network_,create_time_,update_time_,payment_valid_start_date_,payment_valid_end_date_,payment_pattern_,
+        payment_type_,batch_no_,audit_memo_)
         VALUES
         <foreach collection="list" item="item" index="index" separator=",">
         (#{item.musicGroupId},#{item.musicGroupOrganizationCourseSettingId},#{item.payUserType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{item.rejectReason},#{item.startPaymentDate},#{item.deadlinePaymentDate},#{item.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
         #{item.expectNum},#{item.actualNum},#{item.memo},#{item.isGiveMusicNetwork},now(),now(),
-        #{item.paymentValidStartDate},#{item.paymentValidEndDate},#{item.paymentPattern},#{item.paymentType},#{item.batchNo})
+        #{item.paymentValidStartDate},#{item.paymentValidEndDate},#{item.paymentPattern},#{item.paymentType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+        #{item.batchNo},#{item.auditMemo})
         </foreach>
     </insert>
 
@@ -66,8 +70,11 @@
     <update id="update" parameterType="com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender">
         UPDATE music_group_payment_calender
         <set>
+            <if test="auditMemo != null and auditMemo != ''">
+                audit_memo_ = #{auditMemo},
+            </if>
             <if test="paymentType != null">
-                payment_type_ = #{paymentType},
+                payment_type_ = #{paymentType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
             </if>
             <if test="paymentValidStartDate != null">
                 payment_valid_start_date_ = #{paymentValidStartDate},
@@ -123,6 +130,9 @@
 	    <foreach collection="list" item="item" index="index" open="" close="" separator=";">
 	        UPDATE music_group_payment_calender
 	        <set>
+                <if test="item.auditMemo != null and item.auditMemo != ''">
+                    audit_memo_ = #{auditMemo},
+                </if>
                 <if test="item.paymentPattern != null">
                     payment_pattern_ = #{item.paymentPattern},
                 </if>
@@ -337,7 +347,64 @@
         ORDER BY create_time_ LIMIT 1;
     </select>
 
-    <select id="findByBatchNo" resultMap="MusicGroupPaymentCalender">
+	<select id="findByBatchNo" resultMap="MusicGroupPaymentCalender">
         SELECT * FROM music_group_payment_calender WHERE batch_no_=#{batchNo}
     </select>
+
+    <resultMap id="MusicGroupPaymentCalenderAuditDtoMap" type="com.ym.mec.biz.dal.dto.MusicGroupPaymentCalenderAuditDto">
+        <result property="musicGroupId" column="music_group_id_"/>
+        <result property="musicGroupName" column="music_group_name_"/>
+        <result property="organId" column="organ_id_"/>
+        <result property="createTime" column="create_time_"/>
+        <result property="paymentType" column="payment_type_"/>
+        <result property="memo" column="memo_"/>
+        <result property="operator" column="operator_"/>
+        <result property="auditStatus" column="status_"/>
+        <result property="addCourseTotalTime" column="course_total_minuties_"/>
+        <result property="courseCurrentPrice" column="course_current_price_"/>
+        <result property="courseOriginalPrice" column="course_original_price_"/>
+        <result property="musicGroupPaymentCalenderId" column="id_"/>
+        <result property="payUserType" column="pay_user_type_"/>
+        <result property="calenderSettingsName" column="calender_settings_name_"/>
+        <result property="paymentPattern" column="payment_pattern_"/>
+        <result property="paymentValidEndDate" column="payment_valid_start_date_"/>
+        <result property="paymentValidEndDate" column="payment_valid_end_date_"/>
+        <result property="startPaymentDate" column="start_payment_date_"/>
+        <result property="deadlinePaymentDate" column="deadline_payment_date_"/>
+    </resultMap>
+    <sql id="MusicGroupPaymentCalenderAuditDtoSql">
+        <where>
+            <if test="paymentType != null and paymentType != ''">
+                AND mgpc.payment_type_ = #{paymentType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+            </if>
+            <if test="paymentCalenderStatus != null and paymentCalenderStatus != ''">
+                AND mgpc.status_ = #{paymentCalenderStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+            </if>
+            <if test="organId != null and organId != ''">
+                AND FIND_IN_SET(mg.organ_id_,#{organId})
+            </if>
+            <if test="search != null and search != ''">
+                AND (mg.id_ LIKE CONCAT('%',#{search},'%') OR mg.name_ LIKE CONCAT('%',#{search},'%'))
+            </if>
+        </where>
+    </sql>
+    <select id="countAuditList" resultType="java.lang.Integer">
+        SELECT COUNT(DISTINCT mgpc.id_)
+        FROM music_group_payment_calender mgpc
+        LEFT JOIN music_group mg ON mg.id_ = mgpc.music_group_id_
+        <include refid="MusicGroupPaymentCalenderAuditDtoSql"/>
+    </select>
+    <select id="queryAuditList" resultMap="MusicGroupPaymentCalenderAuditDtoMap">
+        SELECT mgpc.id_,mgpc.music_group_id_,mgpc.create_time_,mgpc.payment_type_,mgpc.operator_,
+        mgpc.pay_user_type_,mgpc.memo_,mgpc.status_,SUM(mgpccs.course_total_minuties_) course_total_minuties_,
+        SUM(mgpccs.course_original_price_) course_original_price_,SUM(mgpccs.course_current_price_) course_current_price_,
+        MAX(mg.name_) music_group_name_,MAX(mg.organ_id_) organ_id_,MAX(mgpccs.name_) calender_settings_name_,mgpc.payment_pattern_,mgpc.payment_valid_start_date_,
+        mgpc.payment_valid_end_date_,mgpc.start_payment_date_,mgpc.deadline_payment_date_
+        FROM music_group_payment_calender mgpc
+        LEFT JOIN music_group mg ON mg.id_ = mgpc.music_group_id_
+        LEFT JOIN music_group_payment_calender_course_settings mgpccs ON mgpc.id_ = mgpccs.music_group_payment_calender_id_
+        <include refid="MusicGroupPaymentCalenderAuditDtoSql"/>
+        GROUP BY mgpc.id_
+        <include refid="global.limit"/>
+    </select>
 </mapper>

+ 11 - 0
mec-web/src/main/java/com/ym/mec/web/controller/GoodsController.java

@@ -4,13 +4,16 @@ import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.entity.GoodsCategory;
 import com.ym.mec.biz.dal.entity.GoodsProcurement;
+import com.ym.mec.biz.dal.enums.AccountType;
 import com.ym.mec.biz.service.GoodsCategoryService;
+import com.ym.mec.common.entity.HttpResponseResult;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 
+import java.util.Arrays;
 import java.util.Date;
 import java.util.Objects;
 
@@ -118,4 +121,12 @@ public class GoodsController extends BaseController {
     public Object findGoodsBySubId(Integer subjectId,String type){
         return succeed(goodsService.findGoodsBySubId(subjectId,type));
     }
+
+    @GetMapping("getGoodsTest")
+    public HttpResponseResult getGoodsTest(Integer goodsId){
+//        goodsService.getGoodsTest(Arrays.asList(goodsId));
+//        goodsService.subtractStock(Arrays.asList(goodsId), AccountType.INTERNAL);
+        goodsCategoryService.goodsTest(Arrays.asList(goodsId));
+        return succeed();
+    }
 }

+ 54 - 10
mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupPaymentCalenderController.java

@@ -1,21 +1,23 @@
 package com.ym.mec.web.controller;
 
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderCourseSettings;
+import com.ym.mec.biz.dal.page.MusicGroupPaymentCalenderQueryInfo;
+import com.ym.mec.biz.service.MusicGroupPaymentCalenderCourseSettingsService;
+import com.ym.mec.biz.service.MusicGroupPaymentCalenderService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.MediaType;
 import org.springframework.security.access.prepost.PreAuthorize;
-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.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
-import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
-import com.ym.mec.biz.dal.page.MusicGroupPaymentCalenderQueryInfo;
-import com.ym.mec.biz.service.MusicGroupPaymentCalenderService;
-import com.ym.mec.common.controller.BaseController;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
 
 @RequestMapping("musicGroupPaymentCalender")
 @Api(tags = "乐团缴费日历服务")
@@ -24,6 +26,8 @@ public class MusicGroupPaymentCalenderController extends BaseController {
 
     @Autowired
     private MusicGroupPaymentCalenderService musicGroupPaymentCalenderService;
+    @Autowired
+    private MusicGroupPaymentCalenderCourseSettingsService musicGroupPaymentCalenderCourseSettingsService;
 
     @ApiOperation(value = "分页查询乐团缴费日历列表")
     @GetMapping(value = "/queryPage", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@@ -63,4 +67,44 @@ public class MusicGroupPaymentCalenderController extends BaseController {
         musicGroupPaymentCalenderService.paymentPush(id,userIds);
         return succeed();
     }
+
+    @ApiOperation(value = "乐团缴费日历审核列表")
+    @GetMapping("/auditList")
+    @PreAuthorize("@pcs.hasPermissions('musicGroupPaymentCalender/auditList')")
+    public Object auditList(MusicGroupPaymentCalenderQueryInfo queryInfo) {
+        return succeed(musicGroupPaymentCalenderService.auditList(queryInfo));
+    }
+
+    @ApiOperation(value = "乐团缴费日历审核列表详情")
+    @GetMapping("/auditListDetail")
+    @PreAuthorize("@pcs.hasPermissions('musicGroupPaymentCalender/auditListDetail')")
+    public Object auditListDetail(Integer calenderId,String musicGroupId) {
+        return succeed(musicGroupPaymentCalenderService.auditListDetail(calenderId,musicGroupId));
+    }
+
+    @ApiOperation(value = "乐团缴费日历审核通过")
+    @PostMapping("/auditPass")
+    @PreAuthorize("@pcs.hasPermissions('musicGroupPaymentCalender/auditPass')")
+    public Object auditPass(Long calenderId,String auditMemo) {
+        musicGroupPaymentCalenderService.auditPass(calenderId,auditMemo);
+        return succeed();
+    }
+
+    @ApiOperation(value = "乐团缴费日历审核拒绝")
+    @PostMapping("/auditRefuse")
+    @PreAuthorize("@pcs.hasPermissions('musicGroupPaymentCalender/auditPass')")
+    public Object auditRefuse(Long calenderId,String auditMemo) {
+        musicGroupPaymentCalenderService.auditRefuse(calenderId,auditMemo);
+        return succeed();
+    }
+
+    @ApiOperation(value = "获取指定学员在指定乐团下本次课排课时长")
+    @PostMapping("/getMusicCourseSettingsWithStudents")
+    @PreAuthorize("@pcs.hasPermissions('musicGroupPaymentCalender/getMusicCourseSettingsWithStudents')")
+    public HttpResponseResult<List<MusicGroupPaymentCalenderCourseSettings>> getMusicCourseSettingsWithStudents(String musicGroupId, String studentIds){
+        if(StringUtils.isBlank(studentIds)){
+            return failed("请指定学员编号");
+        }
+        return succeed(musicGroupPaymentCalenderCourseSettingsService.getMusicCourseSettingsWithStudents(musicGroupId,Arrays.stream(studentIds.split(",")).map(id -> Integer.valueOf(id)).collect(Collectors.toList())));
+    }
 }