Przeglądaj źródła

Merge remote-tracking branch 'origin/master'

zouxuan 4 lat temu
rodzic
commit
74cd72b999

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

@@ -5,6 +5,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import com.ym.mec.biz.dal.dto.MusicArrearageStudentDto;
 import org.apache.ibatis.annotations.Param;
 
 import com.ym.mec.biz.dal.dto.SimpleUserDto;
@@ -243,4 +244,7 @@ public interface MusicGroupPaymentCalenderDetailDao extends BaseDAO<Long, MusicG
 	 * @return
 	 */
 	List<Integer> queryNoPaymentUserIds(@Param("musicGroupId") String musicGroupId, @Param("userIds") List<Integer> userIds);
+
+	List<MusicArrearageStudentDto> queryArrearageStudents(Map<String, Object> params);
+	int countArrearageStudents(Map<String, Object> params);
 }

+ 130 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/MusicArrearageStudentDto.java

@@ -0,0 +1,130 @@
+package com.ym.mec.biz.dal.dto;
+
+import java.math.BigDecimal;
+
+/**
+ * @Author Joburgess
+ * @Date 2021/2/3 0003
+ */
+public class MusicArrearageStudentDto {
+
+    private Integer userId;
+
+    private String studentName;
+
+    private String organName;
+
+    private String cooperationName;
+
+    private String musicGroupId;
+
+    private String musicGroupName;
+
+    private String eduTeacherName;
+
+    private String subjectName;
+
+    private Integer gender;
+
+    private String parentName;
+
+    private String phone;
+
+    private BigDecimal noPaymentAmount;
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public String getStudentName() {
+        return studentName;
+    }
+
+    public void setStudentName(String studentName) {
+        this.studentName = studentName;
+    }
+
+    public String getOrganName() {
+        return organName;
+    }
+
+    public void setOrganName(String organName) {
+        this.organName = organName;
+    }
+
+    public String getCooperationName() {
+        return cooperationName;
+    }
+
+    public void setCooperationName(String cooperationName) {
+        this.cooperationName = cooperationName;
+    }
+
+    public String getMusicGroupId() {
+        return musicGroupId;
+    }
+
+    public void setMusicGroupId(String musicGroupId) {
+        this.musicGroupId = musicGroupId;
+    }
+
+    public String getMusicGroupName() {
+        return musicGroupName;
+    }
+
+    public void setMusicGroupName(String musicGroupName) {
+        this.musicGroupName = musicGroupName;
+    }
+
+    public String getEduTeacherName() {
+        return eduTeacherName;
+    }
+
+    public void setEduTeacherName(String eduTeacherName) {
+        this.eduTeacherName = eduTeacherName;
+    }
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
+    public Integer getGender() {
+        return gender;
+    }
+
+    public void setGender(Integer gender) {
+        this.gender = gender;
+    }
+
+    public String getParentName() {
+        return parentName;
+    }
+
+    public void setParentName(String parentName) {
+        this.parentName = parentName;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    public BigDecimal getNoPaymentAmount() {
+        return noPaymentAmount;
+    }
+
+    public void setNoPaymentAmount(BigDecimal noPaymentAmount) {
+        this.noPaymentAmount = noPaymentAmount;
+    }
+}

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/ArrearageStudentsQueryInfo.java

@@ -0,0 +1,20 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.common.page.QueryInfo;
+
+/**
+ * @Author Joburgess
+ * @Date 2021/2/3 0003
+ */
+public class ArrearageStudentsQueryInfo extends QueryInfo {
+
+    private String organIds;
+
+    public String getOrganIds() {
+        return organIds;
+    }
+
+    public void setOrganIds(String organIds) {
+        this.organIds = organIds;
+    }
+}

+ 7 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupPaymentCalenderDetailService.java

@@ -5,10 +5,14 @@ import java.util.List;
 import java.util.Set;
 
 import com.ym.mec.biz.dal.dto.FeeStudentDto;
+import com.ym.mec.biz.dal.dto.MusicArrearageStudentDto;
 import com.ym.mec.biz.dal.dto.SimpleUserDto;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderDetail;
 import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderStudentDetail;
+import com.ym.mec.biz.dal.page.ArrearageStudentsQueryInfo;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.BaseService;
 
 public interface MusicGroupPaymentCalenderDetailService extends BaseService<Long, MusicGroupPaymentCalenderDetail> {
@@ -80,4 +84,6 @@ public interface MusicGroupPaymentCalenderDetailService extends BaseService<Long
      * @param musicGroupPaymentCalenderDetailIds
      */
     void batchDel(String musicGroupPaymentCalenderDetailIds);
-}
+
+    PageInfo<MusicArrearageStudentDto> queryArrearageStudents(ArrearageStudentsQueryInfo queryInfo);
+}

+ 0 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/IndexBaseMonthDataServiceImpl.java

@@ -373,7 +373,6 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 			two.setDesc(IndexErrorType.STUDENT_INFO.getMsg());
 			List<IndexErrInfoDto> twoChild = new ArrayList<>();
 
-
 			twoChild.add(new IndexErrInfoDto(IndexErrorType.STUDENT_NOT_PAYMENT, IndexErrorType.STUDENT_NOT_PAYMENT.getMsg(), indexBaseMonthDataDao.countNoPaymentStudentNum(organIds), indexBaseMonthDataDao.getNoPaymentMusicGroup(organIds)));
 			List<Long> quitGroupNum = indexBaseMonthDataDao.queryApplyForQuitGroupNum(organIds);
 			twoChild.add(new IndexErrInfoDto(IndexErrorType.STUDENT_APPLY_FOR_QUIT_MUSIC_GROUP, IndexErrorType.STUDENT_APPLY_FOR_QUIT_MUSIC_GROUP.getMsg(), quitGroupNum.size(),  quitGroupNum));

+ 33 - 10
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderDetailServiceImpl.java

@@ -5,20 +5,17 @@ import static com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PaymentCalende
 import static com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus.NON_PAYMENT;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
+import java.util.*;
 import java.util.stream.Collectors;
 
+import com.ym.mec.biz.dal.dto.MusicArrearageStudentDto;
 import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.page.ArrearageStudentsQueryInfo;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -558,4 +555,30 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 		musicGroupPaymentCalenderDetailDao.batchDel(musicGroupPaymentCalenderDetailIds);
 		musicGroupPaymentStudentCourseDetailDao.deleteByMusicGroupPaymentCalenderDetailId(musicGroupPaymentCalenderDetailIdList);
 	}
-}
+
+	@Override
+	public PageInfo<MusicArrearageStudentDto> queryArrearageStudents(ArrearageStudentsQueryInfo queryInfo) {
+		PageInfo<MusicArrearageStudentDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+		Map<String, Object> params = new HashMap<>();
+		MapUtil.populateMap(params, queryInfo);
+
+		Set<Integer> organIds = null;
+		if(StringUtils.isNotBlank(queryInfo.getOrganIds())){
+			organIds = Arrays.stream(queryInfo.getOrganIds().split(",")).map(Integer::new).collect(Collectors.toSet());
+		}
+		params.put("organIds", organIds);
+
+		List<MusicArrearageStudentDto> dataList = null;
+		int count = musicGroupPaymentCalenderDetailDao.countArrearageStudents(params);
+		if (count > 0) {
+			pageInfo.setTotal(count);
+			params.put("offset", pageInfo.getOffset());
+			dataList = musicGroupPaymentCalenderDetailDao.queryArrearageStudents(params);
+		}
+		if (count == 0) {
+			dataList = new ArrayList<>();
+		}
+		pageInfo.setRows(dataList);
+		return pageInfo;
+	}
+}

+ 1 - 1
mec-biz/src/main/resources/config/mybatis/IndexBaseMonthDataMapper.xml

@@ -508,7 +508,7 @@
 
 	<select id="countNoPaymentStudentNum" resultType="int">
 		SELECT
-			COUNT(DISTINCT mgpcd.user_id_)
+			COUNT(DISTINCT mgpc.music_group_id_,mgpcd.user_id_)
 		FROM
 		music_group_payment_calender_detail mgpcd
 		LEFT JOIN music_group_payment_calender mgpc ON mgpcd.music_group_payment_calender_id_ = mgpc.id_

+ 71 - 1
mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentCalenderDetailMapper.xml

@@ -406,7 +406,77 @@
 		GROUP BY mgpcd.user_id_  HAVING SUM(mgpcd.expect_amount_) > 0
 	</select>
 
-	<update id="updateNoPaymentAndZeroPaymentStatus">
+	<resultMap id="MusicArrearageStudentDto" type="com.ym.mec.biz.dal.dto.MusicArrearageStudentDto">
+		<result property="userId" column="user_id_"/>
+		<result property="studentName" column="student_name_"/>
+		<result property="organName" column="organ_name_"/>
+		<result property="cooperationName" column="cooperation_name_"/>
+		<result property="musicGroupId" column="music_group_id_"/>
+		<result property="musicGroupName" column="music_group_name_"/>
+		<result property="eduTeacherName" column="edu_teacher_name_"/>
+		<result property="subjectName" column="subject_name_"/>
+		<result property="gender" column="gender_"/>
+		<result property="parentName" column="parent_name_"/>
+		<result property="phone" column="phone_"/>
+		<result property="noPaymentAmount" column="no_payment_amount_"/>
+	</resultMap>
+
+	<sql id="queryArrearageStudentsCondition">
+		<where>
+			mg.status_ = 'PROGRESS'
+			AND DATE_FORMAT( NOW(), '%Y-%m-%d' ) >= DATE_FORMAT( mgpc.payment_valid_start_date_, '%Y-%m-%d' )
+			AND mgpcd.payment_status_ = 'NON_PAYMENT'
+			AND mgpcd.expect_amount_ > 0
+			<if test="organIds!=null and organIds.size()>0">
+				AND mg.organ_id_ IN
+				<foreach collection="organIds" item="organId" open="(" close=")" separator=",">
+					#{organId}
+				</foreach>
+			</if>
+		</where>
+	</sql>
+
+    <select id="queryArrearageStudents" resultMap="MusicArrearageStudentDto">
+		SELECT
+			mgpcd.user_id_,
+			SUM( mgpcd.expect_amount_ ) no_payment_amount_,
+			su.username_ student_name_,
+			organ.name_ organ_name_,
+			co.name_ cooperation_name_,
+		    mgpc.music_group_id_,
+			mg.name_ music_group_name_,
+			edu.real_name_ edu_teacher_name_,
+			MAX( sub.name_ ) subject_name_,
+			su.gender_ gender_,
+			su.real_name_ parent_name_,
+			su.phone_ phone_
+		FROM
+			music_group_payment_calender_detail mgpcd
+			LEFT JOIN music_group_payment_calender mgpc ON mgpcd.music_group_payment_calender_id_ = mgpc.id_
+			LEFT JOIN music_group mg ON mgpc.music_group_id_ = mg.id_
+			LEFT JOIN student_registration sr ON sr.music_group_id_ = mgpc.music_group_id_
+			AND mgpcd.user_id_ = sr.user_id_
+			LEFT JOIN sys_user su ON mgpcd.user_id_ = su.id_
+			LEFT JOIN sys_user edu ON edu.id_ = mg.educational_teacher_id_
+			LEFT JOIN organization organ ON organ.id_ = mg.organ_id_
+			LEFT JOIN `subject` sub ON sr.actual_subject_id_ = sub.id_
+			LEFT JOIN cooperation_organ co ON mg.school_id_ = co.id_
+		<include refid="queryArrearageStudentsCondition"/>
+		GROUP BY
+			mgpc.music_group_id_,mgpcd.user_id_;
+	</select>
+
+	<select id="countArrearageStudents" resultType="int">
+		SELECT
+			COUNT(DISTINCT mgpc.music_group_id_,mgpcd.user_id_)
+		FROM
+			music_group_payment_calender_detail mgpcd
+			LEFT JOIN music_group_payment_calender mgpc ON mgpcd.music_group_payment_calender_id_ = mgpc.id_
+			LEFT JOIN music_group mg ON mgpc.music_group_id_ = mg.id_
+		<include refid="queryArrearageStudentsCondition"/>
+	</select>
+
+    <update id="updateNoPaymentAndZeroPaymentStatus">
 		UPDATE music_group_payment_calender_detail SET payment_status_ = 'PAID_COMPLETED',actual_amount_ = 0,update_time_ = NOW()
 		WHERE music_group_payment_calender_id_ = #{calenderId} AND expect_amount_ = 0 AND payment_status_ = 'NON_PAYMENT'
 	</update>

+ 42 - 0
mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupPaymentCalenderDetailController.java

@@ -1,9 +1,20 @@
 package com.ym.mec.web.controller;
 
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.EmployeeDao;
+import com.ym.mec.biz.dal.dto.MusicArrearageStudentDto;
+import com.ym.mec.biz.dal.entity.Employee;
+import com.ym.mec.biz.dal.page.ArrearageStudentsQueryInfo;
+import com.ym.mec.biz.service.EmployeeService;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.QueryInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
 import java.math.BigDecimal;
+import java.util.Arrays;
+import java.util.List;
 
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -28,6 +39,12 @@ public class MusicGroupPaymentCalenderDetailController extends BaseController {
     @Autowired
     private MusicGroupPaymentCalenderDetailService musicGroupPaymentCalenderDetailService;
 
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @Autowired
+    private EmployeeService employeeService;
+
     @ApiOperation(value = "分页查询乐团缴费明细列表")
     @GetMapping("/queryPage")
     @PreAuthorize("@pcs.hasPermissions('musicGroupPaymentCalenderDetail/queryPage')")
@@ -86,4 +103,29 @@ public class MusicGroupPaymentCalenderDetailController extends BaseController {
         succeed.setMsg(musicGroupPaymentCalenderDetailService.openPayment(ids));
         return succeed;
     }
+
+
+    @ApiOperation(value = "未缴费学员列表")
+    @GetMapping("/queryArrearageStudents")
+    @PreAuthorize("@pcs.hasPermissions('musicGroupPaymentCalenderDetail/queryArrearageStudents')")
+    public HttpResponseResult<PageInfo<MusicArrearageStudentDto>> queryArrearageStudents(ArrearageStudentsQueryInfo queryInfo){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        if (!sysUser.getIsSuperAdmin()) {
+            Employee employee = employeeService.get(sysUser.getId());
+            if (StringUtils.isBlank(queryInfo.getOrganIds())) {
+                queryInfo.setOrganIds(employee.getOrganIdList());
+            }else if(StringUtils.isEmpty(employee.getOrganIdList())){
+                return failed("用户所在分部异常");
+            }else {
+                List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
+                if(!list.containsAll(Arrays.asList(queryInfo.getOrganIds().split(",")))){
+                    return failed("非法请求");
+                }
+            }
+        }
+        return succeed(musicGroupPaymentCalenderDetailService.queryArrearageStudents(queryInfo));
+    }
 }