fix 82894 会员统计--单位分类统计--同一个单位在不同年份的分类不同时,按最新一年的算
This commit is contained in:
+2
@@ -59,4 +59,6 @@ public interface TbMemberProjectSubitemMapper extends BaseMapper<TbMemberProject
|
||||
TbMemberProjectSubitem getLastByCompanyId(@Param("companyId") String companyId);
|
||||
|
||||
IPage<TbMemberProjectSubitem> pageAllMemberName(Page<TbMemberProjectSubitem> page);
|
||||
|
||||
List<TbMemberProjectSubitem> getAllYearInfoByCompanyId(@Param("companyId") String companyId);
|
||||
}
|
||||
|
||||
+24
-14
@@ -113,25 +113,26 @@
|
||||
</select>
|
||||
|
||||
<select id="getAllTakeEffect" resultMap="TbMemberProjectSubitemResultMap">
|
||||
SELECT t1.*
|
||||
FROM tb_member_project_subitem t1
|
||||
INNER JOIN (
|
||||
SELECT max(invalidation_date), id
|
||||
FROM tb_member_project_subitem
|
||||
where current_date BETWEEN effective_date and invalidation_date
|
||||
SELECT *
|
||||
from (SELECT tmps.*
|
||||
FROM tb_member_project_subitem tmps
|
||||
left join tb_member_project tmp on tmps.project_id = tmp.id
|
||||
where current_date BETWEEN effective_date and invalidation_date
|
||||
and member_nature is not null
|
||||
GROUP BY company_id) AS t2 ON t2.id = t1.id
|
||||
order by tmp.year desc) t1
|
||||
group by t1.company_id
|
||||
</select>
|
||||
|
||||
<select id="pieChartPage" resultMap="TbMemberProjectSubitemResultMap">
|
||||
SELECT t1.*
|
||||
FROM tb_member_project_subitem t1
|
||||
INNER JOIN (
|
||||
SELECT max(invalidation_date), id
|
||||
FROM tb_member_project_subitem
|
||||
where invalidation_date >= current_date
|
||||
GROUP BY company_id) AS t2 ON t2.id = t1.id
|
||||
select * from (SELECT * from (SELECT tmps.*
|
||||
FROM tb_member_project_subitem tmps
|
||||
left join tb_member_project tmp on tmps.project_id = tmp.id
|
||||
where current_date BETWEEN effective_date and invalidation_date
|
||||
and member_nature is not null
|
||||
order by tmp.year desc) t1
|
||||
group by t1.company_id) t2
|
||||
${ew.customSqlSegment}
|
||||
|
||||
</select>
|
||||
|
||||
<select id="queryPageListCompany" resultMap="TbMemberProjectSubitemResultMap">
|
||||
@@ -159,4 +160,13 @@
|
||||
and member_nature is not null
|
||||
GROUP BY company_id) AS t2 ON t2.id = t1.id
|
||||
</select>
|
||||
|
||||
<select id="getAllYearInfoByCompanyId" resultMap="TbMemberProjectSubitemResultMap">
|
||||
select tmps.*,tmp.year
|
||||
from tb_member_project_subitem tmps
|
||||
LEFT JOIN tb_member_project tmp on tmp.id = tmps.project_id
|
||||
<where>
|
||||
tmps.company_id = #{companyId}
|
||||
</where>
|
||||
</select>
|
||||
</mapper>
|
||||
+21
-3
@@ -566,6 +566,24 @@ public class ITbMemberProjectSubitemService extends ServiceImpl<TbMemberProjectS
|
||||
return projectSubitem;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得最新的年份的数据,没有的话会返回null
|
||||
* @param companyId
|
||||
* @return
|
||||
*/
|
||||
public TbMemberProjectSubitem getLatestYearInfo(String companyId){
|
||||
//获得所有生效数据
|
||||
List<TbMemberProjectSubitem> allByCompanyId = tbMemberProjectSubitemMapper.getAllYearInfoByCompanyId(companyId);
|
||||
//获取list中年份最大的数据
|
||||
Optional<TbMemberProjectSubitem> max = allByCompanyId.stream().max(Comparator.comparing(TbMemberProjectSubitem::getYear));
|
||||
//没有的话会返回null
|
||||
TbMemberProjectSubitem projectSubitem = max.orElse(null);
|
||||
if(projectSubitem!=null){
|
||||
processData(projectSubitem);
|
||||
}
|
||||
return projectSubitem;
|
||||
}
|
||||
|
||||
public void editMemberBenefits(EditMemberBenefitsVO editMemberBenefitsVO) {
|
||||
String id = editMemberBenefitsVO.getId();
|
||||
Date effectiveDate = editMemberBenefitsVO.getEffectiveDate();
|
||||
@@ -574,9 +592,9 @@ public class ITbMemberProjectSubitemService extends ServiceImpl<TbMemberProjectS
|
||||
TbMemberProjectSubitem memberProjectSubitem = getById(id);
|
||||
String companyId = memberProjectSubitem.getCompanyId();
|
||||
//获得有效数据
|
||||
TbMemberProjectSubitem takeEffectInfo = getTakeEffectInfo(companyId);
|
||||
if (takeEffectInfo == null || !Objects.equals(takeEffectInfo.getId(),id)){
|
||||
throw new JeroBootException("只能修改最新生效会员数据");
|
||||
TbMemberProjectSubitem latestYearInfo = getLatestYearInfo(companyId);
|
||||
if (latestYearInfo == null || !Objects.equals(latestYearInfo.getId(),id)){
|
||||
throw new JeroBootException("只能修改最新年份会员数据");
|
||||
}
|
||||
LambdaUpdateWrapper<TbMemberProjectSubitem> updateWrapper = new LambdaUpdateWrapper<>();
|
||||
updateWrapper.eq(TbMemberProjectSubitem::getId,id)
|
||||
|
||||
Reference in New Issue
Block a user