Browse Source

乐团缴费项目改造

zouxuan 2 năm trước cách đây
mục cha
commit
ab529d0eb4

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

@@ -0,0 +1,12 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.biz.dal.entity.MusicGroupCalenderRefundPeriod;
+import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface MusicGroupCalenderRefundPeriodDao extends BaseDAO<Integer, MusicGroupCalenderRefundPeriod> {
+
+    void batchInsert(@Param("refundPeriods") List<MusicGroupCalenderRefundPeriod> refundPeriods);
+}

+ 46 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicGroupPaymentBaseCalender.java

@@ -5,6 +5,7 @@ import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PayUserType;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PaymentType;
 import io.swagger.annotations.ApiModelProperty;
 
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 
@@ -59,7 +60,51 @@ public class MusicGroupPaymentBaseCalender {
 	
 	@ApiModelProperty(value = "是否显示销售价", required = false)
 	private Boolean isShowSalePrice;
-	
+
+	@ApiModelProperty(value = "学校缴费计价json", required = false)
+	private String calenderFeeJson;
+
+	@ApiModelProperty(value = "学校缴费计价标准,STUDENT、TEACHER", required = false)
+	private String calenderFeeType;
+
+	@ApiModelProperty(value = "学校缴费回款周期", required = false)
+	private List<MusicGroupCalenderRefundPeriod> musicGroupCalenderRefundPeriods;
+
+	@ApiModelProperty(value = "学校缴费折扣价", required = false)
+	private BigDecimal currentTotalAmount;
+
+	public BigDecimal getCurrentTotalAmount() {
+		return currentTotalAmount;
+	}
+
+	public void setCurrentTotalAmount(BigDecimal currentTotalAmount) {
+		this.currentTotalAmount = currentTotalAmount;
+	}
+
+	public List<MusicGroupCalenderRefundPeriod> getMusicGroupCalenderRefundPeriods() {
+		return musicGroupCalenderRefundPeriods;
+	}
+
+	public void setMusicGroupCalenderRefundPeriods(List<MusicGroupCalenderRefundPeriod> musicGroupCalenderRefundPeriods) {
+		this.musicGroupCalenderRefundPeriods = musicGroupCalenderRefundPeriods;
+	}
+
+	public String getCalenderFeeJson() {
+		return calenderFeeJson;
+	}
+
+	public void setCalenderFeeJson(String calenderFeeJson) {
+		this.calenderFeeJson = calenderFeeJson;
+	}
+
+	public String getCalenderFeeType() {
+		return calenderFeeType;
+	}
+
+	public void setCalenderFeeType(String calenderFeeType) {
+		this.calenderFeeType = calenderFeeType;
+	}
+
 	public Boolean getConfirmCreate() {
 		return confirmCreate;
 	}

+ 114 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupCalenderRefundPeriod.java

@@ -0,0 +1,114 @@
+package com.ym.mec.biz.dal.entity;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * 对应数据库表(music_group_calender_refund_period):
+ */
+public class MusicGroupCalenderRefundPeriod {
+
+	/**  */
+	private Integer id;
+	
+	/** 分部 */
+	private Integer organId;
+	
+	/** 合作单位编号 */
+	private Integer cooperationOrganId;
+	
+	/** 缴费项目编号 */
+	private Long calenderId;
+	
+	/** 回款时间 */
+	private java.util.Date refundDate;
+	
+	/** 回款金额 */
+	private java.math.BigDecimal refundAmount;
+	
+	/** 剩余待回款金额 */
+	private java.math.BigDecimal subRefundAmount;
+	
+	/**  */
+	private java.util.Date createTime;
+	
+	/**  */
+	private java.util.Date updateTime;
+	
+	public void setId(Integer id){
+		this.id = id;
+	}
+	
+	public Integer getId(){
+		return this.id;
+	}
+			
+	public void setOrganId(Integer organId){
+		this.organId = organId;
+	}
+	
+	public Integer getOrganId(){
+		return this.organId;
+	}
+			
+	public void setCooperationOrganId(Integer cooperationOrganId){
+		this.cooperationOrganId = cooperationOrganId;
+	}
+	
+	public Integer getCooperationOrganId(){
+		return this.cooperationOrganId;
+	}
+			
+	public void setCalenderId(Long calenderId){
+		this.calenderId = calenderId;
+	}
+	
+	public Long getCalenderId(){
+		return this.calenderId;
+	}
+			
+	public void setRefundDate(java.util.Date refundDate){
+		this.refundDate = refundDate;
+	}
+	
+	public java.util.Date getRefundDate(){
+		return this.refundDate;
+	}
+			
+	public void setRefundAmount(java.math.BigDecimal refundAmount){
+		this.refundAmount = refundAmount;
+	}
+	
+	public java.math.BigDecimal getRefundAmount(){
+		return this.refundAmount;
+	}
+			
+	public void setSubRefundAmount(java.math.BigDecimal subRefundAmount){
+		this.subRefundAmount = subRefundAmount;
+	}
+	
+	public java.math.BigDecimal getSubRefundAmount(){
+		return this.subRefundAmount;
+	}
+			
+	public void setCreateTime(java.util.Date createTime){
+		this.createTime = createTime;
+	}
+	
+	public java.util.Date getCreateTime(){
+		return this.createTime;
+	}
+			
+	public void setUpdateTime(java.util.Date updateTime){
+		this.updateTime = updateTime;
+	}
+	
+	public java.util.Date getUpdateTime(){
+		return this.updateTime;
+	}
+			
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 22 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupPaymentCalender.java

@@ -209,6 +209,28 @@ public class MusicGroupPaymentCalender extends BaseEntity {
 	@ApiModelProperty(value = "是否显示销售价", required = false)
 	private Boolean isShowSalePrice;
 
+	@ApiModelProperty(value = "学校缴费计价json", required = false)
+	private String calenderFeeJson;
+
+	@ApiModelProperty(value = "学校缴费计价标准,STUDENT、TEACHER", required = false)
+	private String calenderFeeType;
+
+	public String getCalenderFeeJson() {
+		return calenderFeeJson;
+	}
+
+	public void setCalenderFeeJson(String calenderFeeJson) {
+		this.calenderFeeJson = calenderFeeJson;
+	}
+
+	public String getCalenderFeeType() {
+		return calenderFeeType;
+	}
+
+	public void setCalenderFeeType(String calenderFeeType) {
+		this.calenderFeeType = calenderFeeType;
+	}
+
 	public Boolean getCloudTeacherPaymentFlag() {
 		return cloudTeacherPaymentFlag;
 	}

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupCalenderRefundPeriodService.java

@@ -0,0 +1,10 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.dto.MusicGroupPaymentBaseCalender;
+import com.ym.mec.biz.dal.entity.MusicGroupCalenderRefundPeriod;
+import com.ym.mec.common.service.BaseService;
+
+public interface MusicGroupCalenderRefundPeriodService extends BaseService<Integer, MusicGroupCalenderRefundPeriod> {
+
+    void savePeriod(MusicGroupPaymentBaseCalender musicGroupPaymentBaseCalender);
+}

+ 57 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupCalenderRefundPeriodServiceImpl.java

@@ -0,0 +1,57 @@
+package com.ym.mec.biz.service.impl;
+
+import com.ym.mec.biz.dal.dao.MusicGroupCalenderRefundPeriodDao;
+import com.ym.mec.biz.dal.dao.MusicGroupDao;
+import com.ym.mec.biz.dal.dto.MusicGroupPaymentBaseCalender;
+import com.ym.mec.biz.dal.entity.MusicGroup;
+import com.ym.mec.biz.dal.entity.MusicGroupCalenderRefundPeriod;
+import com.ym.mec.biz.service.MusicGroupCalenderRefundPeriodService;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
+
+import static com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PayUserType.SCHOOL;
+
+@Service
+public class MusicGroupCalenderRefundPeriodServiceImpl extends BaseServiceImpl<Integer, MusicGroupCalenderRefundPeriod>  implements MusicGroupCalenderRefundPeriodService {
+
+    @Autowired
+    private MusicGroupCalenderRefundPeriodDao musicGroupCalenderRefundPeriodDao;
+    @Autowired
+    private MusicGroupDao musicGroupDao;
+
+    @Override
+    public BaseDAO<Integer, MusicGroupCalenderRefundPeriod> getDAO() {
+        return musicGroupCalenderRefundPeriodDao;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void savePeriod(MusicGroupPaymentBaseCalender baseCalender) {
+        if(baseCalender.getPayUserType() != SCHOOL){
+            return;
+        }
+        List<MusicGroupCalenderRefundPeriod> refundPeriods = baseCalender.getMusicGroupCalenderRefundPeriods();
+        if(CollectionUtils.isEmpty(refundPeriods)){
+            throw new BizException("请录入回款周期");
+        }
+        MusicGroup musicGroup = musicGroupDao.get(baseCalender.getMusicGroupId());
+        Date date = new Date();
+        refundPeriods.forEach(e-> {
+            e.setCalenderId(baseCalender.getCalenderId());
+            e.setSubRefundAmount(e.getRefundAmount());
+            e.setOrganId(musicGroup.getOrganId());
+            e.setCooperationOrganId(musicGroup.getCooperationOrganId());
+            e.setCreateTime(date);
+            e.setUpdateTime(date);
+        });
+        musicGroupCalenderRefundPeriodDao.batchInsert(refundPeriods);
+    }
+}

+ 27 - 23
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java

@@ -29,6 +29,7 @@ import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Service;
@@ -121,6 +122,8 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
     private VipGroupActivityDao vipGroupActivityDao;
     @Autowired
     private OperatingReportCloudService operatingReportCloudService;
+    @Autowired
+    private MusicGroupCalenderRefundPeriodService musicGroupCalenderRefundPeriodService;
 
     @Override
     public BaseDAO<Long, MusicGroupPaymentCalender> getDAO() {
@@ -258,6 +261,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
         //进行中加学员拓展信息
         CalenderAddStudent calenderAddStudent = musicGroupPaymentBaseCalender.getCalenderAddStudent();
         MusicGroupPaymentCalender musicGroupPaymentCalender = new MusicGroupPaymentCalender();
+        BeanUtils.copyProperties(musicGroupPaymentBaseCalender,musicGroupPaymentCalender);
         //判断缴费项目类型
         if (musicGroup.getStatus() == MusicGroupStatusEnum.DRAFT) {
             musicGroupPaymentBaseCalender.setPaymentType(MUSIC_APPLY);
@@ -289,19 +293,24 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
         BigDecimal originalTotalAmount = courseOriginalAmount.add(memberOriginalAmount)
                 .add(activityOriginalAmount)
                 .add(repairOriginalAmount).setScale(0, BigDecimal.ROUND_HALF_UP);
+        BigDecimal actualTotalAmount;
 
-        //计算缴费项目总金额(前端录入)
-        BigDecimal courseActualAmount = musicGroupPaymentCalenderCourseSettingsService.getActualAmount(musicGroupPaymentBaseCalender);
-        BigDecimal memberActualAmount = musicGroupPaymentCalenderMemberService.getActualAmount(musicGroupPaymentBaseCalender);
-        BigDecimal repairActualAmount = musicGroupPaymentCalenderRepairService.getActualAmount(musicGroupPaymentBaseCalender);
-        BigDecimal activityActualAmount = musicGroupPaymentCalenderActivityService.getActualAmount(musicGroupPaymentBaseCalender);
+        if(musicGroupPaymentBaseCalender.getPayUserType() == SCHOOL){
+            actualTotalAmount = musicGroupPaymentBaseCalender.getCurrentTotalAmount();
+        }else {
+            //计算缴费项目总金额(前端录入)
+            BigDecimal courseActualAmount = musicGroupPaymentCalenderCourseSettingsService.getActualAmount(musicGroupPaymentBaseCalender);
+            BigDecimal memberActualAmount = musicGroupPaymentCalenderMemberService.getActualAmount(musicGroupPaymentBaseCalender);
+            BigDecimal repairActualAmount = musicGroupPaymentCalenderRepairService.getActualAmount(musicGroupPaymentBaseCalender);
+            BigDecimal activityActualAmount = musicGroupPaymentCalenderActivityService.getActualAmount(musicGroupPaymentBaseCalender);
 
-        BigDecimal actualTotalAmount = courseActualAmount.add(memberActualAmount)
-                .add(repairActualAmount)
-                .add(activityActualAmount).setScale(0, BigDecimal.ROUND_HALF_UP);
+            actualTotalAmount = courseActualAmount.add(memberActualAmount)
+                    .add(repairActualAmount)
+                    .add(activityActualAmount).setScale(0, BigDecimal.ROUND_HALF_UP);
+        }
 
-        PaymentCalenderStatusEnum status = PaymentCalenderStatusEnum.DRAFT;
-        /*if (musicGroupPaymentBaseCalender.getPayUserType() == SCHOOL) {
+        PaymentCalenderStatusEnum status;
+        if (musicGroupPaymentBaseCalender.getPaymentType() == MUSIC_APPLY || musicGroupPaymentBaseCalender.getPayUserType() == SCHOOL) {
             status = AUDITING;
         } else {
             //计算项目原现价
@@ -320,27 +329,19 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
                         .add(activityCurrentAmount).setScale(0, BigDecimal.ROUND_HALF_UP);
                 status = actualTotalAmount.compareTo(currentTotalAmount) == 0 ? NO : AUDITING;
             }
-        }*/
+        }
         Date date = new Date();
 
-        musicGroupPaymentCalender.setIsShowSalePrice(musicGroupPaymentBaseCalender.getIsShowSalePrice());
-        musicGroupPaymentCalender.setDeadlinePaymentDate(musicGroupPaymentBaseCalender.getDeadlinePaymentDate());
-        musicGroupPaymentCalender.setMemo(musicGroupPaymentBaseCalender.getMemo());
         musicGroupPaymentCalender.setMusicGroupId(musicGroupId);
-        musicGroupPaymentCalender.setMusicGroupOrganizationCourseSettingId(musicGroupPaymentBaseCalender.getMusicGroupOrganizationCourseSettingId());
-        musicGroupPaymentCalender.setPayUserType(musicGroupPaymentBaseCalender.getPayUserType());
-        musicGroupPaymentCalender.setStartPaymentDate(musicGroupPaymentBaseCalender.getStartPaymentDate());
         musicGroupPaymentCalender.setOperator(sysUser.getId());
         musicGroupPaymentCalender.setCreateTime(date);
         musicGroupPaymentCalender.setUpdateTime(date);
-        musicGroupPaymentCalender.setPaymentType(musicGroupPaymentBaseCalender.getPaymentType());
         musicGroupPaymentCalender.setCurrentTotalAmount(actualTotalAmount);
         musicGroupPaymentCalender.setOriginalTotalAmount(originalTotalAmount);
         musicGroupPaymentCalender.setStatus(status);
         musicGroupPaymentCalender.setOrganId(musicGroup.getOrganId());
-        musicGroupPaymentCalender.setPaymentItemShowState(musicGroupPaymentBaseCalender.getPaymentItemShowState());
 
-        /*if (musicGroupPaymentCalender.getStatus() != AUDITING) {
+        if (musicGroupPaymentCalender.getStatus() != AUDITING) {
             if (date.after(musicGroupPaymentCalender.getStartPaymentDate())) {
                 musicGroupPaymentCalender.setStatus(PaymentCalenderStatusEnum.OPEN);
             } else if (date.after(musicGroupPaymentCalender.getDeadlinePaymentDate())) {
@@ -348,7 +349,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
             } else {
                 musicGroupPaymentCalender.setStatus(PaymentCalenderStatusEnum.NO);
             }
-        }*/
+        }
         // 设置批次号
         String batchNo = idGeneratorService.generatorId() + "";
         musicGroupPaymentCalender.setBatchNo(batchNo);
@@ -356,13 +357,16 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
         if(musicGroupPaymentCalender.getPayUserType() == STUDENT && musicGroup.getCourseViewType() == CourseViewTypeEnum.MEMBER_FEE){
             if(musicGroupPaymentCalender.getPaymentType() == ADD_STUDENT){
                 musicGroupPaymentCalender.setCloudTeacherPaymentFlag(true);
-            }else if(memberActualAmount.compareTo(BigDecimal.ZERO) > 0 &&
+            }/*else if(memberActualAmount.compareTo(BigDecimal.ZERO) > 0 &&
                     ((courseActualAmount.compareTo(BigDecimal.ZERO) == 0 && CollectionUtils.isNotEmpty(musicGroupPaymentBaseCalender.getMusicGroupPaymentCalenderCourseSettingsList()))
                             || (activityActualAmount.compareTo(BigDecimal.ZERO) == 0 && CollectionUtils.isNotEmpty(musicGroupPaymentBaseCalender.getCalenderActivityList())))) {
                 musicGroupPaymentCalender.setCloudTeacherPaymentFlag(true);
-            }
+            }*/
         }
         musicGroupPaymentCalenderDao.insert(musicGroupPaymentCalender);
+        musicGroupPaymentBaseCalender.setCalenderId(musicGroupPaymentCalender.getId());
+        //如果是学校缴费,需要保存还款周期
+        musicGroupCalenderRefundPeriodService.savePeriod(musicGroupPaymentBaseCalender);
 
         operatingReportCloudService.save(musicGroupPaymentCalender);
         Long calenderId = musicGroupPaymentCalender.getId();

+ 52 - 0
mec-biz/src/main/resources/config/mybatis/MusicGroupCalenderRefundPeriodMapper.xml

@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!--
+这个文件是自动生成的。
+不要修改此文件。所有改动将在下次重新自动生成时丢失。
+-->
+<mapper namespace="com.ym.mec.biz.dal.dao.MusicGroupCalenderRefundPeriodDao">
+	
+	<resultMap type="com.ym.mec.biz.dal.entity.MusicGroupCalenderRefundPeriod" id="MusicGroupCalenderRefundPeriod">
+		<result column="id_" property="id" />
+		<result column="organ_id_" property="organId" />
+		<result column="cooperation_organ_id_" property="cooperationOrganId" />
+		<result column="calender_id_" property="calenderId" />
+		<result column="refund_date_" property="refundDate" />
+		<result column="refund_amount_" property="refundAmount" />
+		<result column="sub_refund_amount_" property="subRefundAmount" />
+		<result column="create_time_" property="createTime" />
+		<result column="update_time_" property="updateTime" />
+	</resultMap>
+	
+	
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="MusicGroupCalenderRefundPeriod">
+		SELECT * FROM music_group_calender_refund_period
+	</select>
+	
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.MusicGroupCalenderRefundPeriod" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		INSERT INTO music_group_calender_refund_period (organ_id_,cooperation_organ_id_,calender_id_,
+		                                                refund_date_,refund_amount_,sub_refund_amount_,create_time_,update_time_)
+		VALUES(#{organId},#{cooperationOrganId},#{calenderId},#{refundDate},#{refundAmount},#{subRefundAmount},NOW(),NOW())
+	</insert>
+	<insert id="batchInsert">
+		INSERT INTO music_group_calender_refund_period (organ_id_,cooperation_organ_id_,calender_id_,
+														refund_date_,refund_amount_,sub_refund_amount_,create_time_,update_time_)
+		VALUES
+		<foreach collection="refundPeriods" separator="," item="bean">
+			(#{organId},#{cooperationOrganId},#{calenderId},#{refundDate},#{refundAmount},#{subRefundAmount},#{createTime},#{updateTime})
+		</foreach>
+	</insert>
+
+
+	<!-- 分页查询 -->
+	<select id="queryPage" resultMap="MusicGroupCalenderRefundPeriod" parameterType="map">
+		SELECT * FROM music_group_calender_refund_period <include refid="global.limit"/>
+	</select>
+	
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM music_group_calender_refund_period
+	</select>
+</mapper>