update 企业来款统计-分类统计 分页

This commit is contained in:
lijiarao
2024-07-22 11:38:52 +08:00
parent 26908c2cee
commit 2b4b99dd3e
6 changed files with 88 additions and 26 deletions
@@ -33,4 +33,6 @@ public interface PayCompanyManagementMapper extends BaseMapper<PayCompanyManagem
Integer checkMemberCompanyName(@Param("memberId") String memberId, @Param("companyName") String companyName); Integer checkMemberCompanyName(@Param("memberId") String memberId, @Param("companyName") String companyName);
IPage<PayCompanyManagement> pageSafetyCenter(Page<PayCompanyManagement> page, @Param(Constants.WRAPPER) QueryWrapper<PayCompanyManagement> queryWrapper); IPage<PayCompanyManagement> pageSafetyCenter(Page<PayCompanyManagement> page, @Param(Constants.WRAPPER) QueryWrapper<PayCompanyManagement> queryWrapper);
Page<PayCompanyManagement> pageHaveMoney(Page<PayCompanyManagement> page, @Param("chargeCompanyIds") List<String> chargeCompanyIds);
} }
@@ -46,4 +46,13 @@
left join pay_functional_safety_center_subitem pfscs on pcm.id = pfscs.company_id left join pay_functional_safety_center_subitem pfscs on pcm.id = pfscs.company_id
${ew.customSqlSegment} ${ew.customSqlSegment}
</select> </select>
<select id="pageHaveMoney" resultType="com.jero.company.entity.PayCompanyManagement">
select distinct chargeCompanyId as id from v_statistical
<where>
<foreach item="item" index="index" collection="chargeCompanyIds" open="chargeCompanyId in (" separator="," close=")">
#{item}
</foreach>
</where>
</select>
</mapper> </mapper>
@@ -127,4 +127,5 @@ public interface IPayCompanyManagementService extends IService<PayCompanyManagem
IPage<PayCompanyManagement> pageSafetyCenter(Page<PayCompanyManagement> page, QueryWrapper<PayCompanyManagement> queryWrapper); IPage<PayCompanyManagement> pageSafetyCenter(Page<PayCompanyManagement> page, QueryWrapper<PayCompanyManagement> queryWrapper);
Page<PayCompanyManagement> pageHaveMoney(Page<PayCompanyManagement> page, List<String> chargeCompanyIds);
} }
@@ -715,6 +715,11 @@ public class PayCompanyManagementServiceImpl extends ServiceImpl<PayCompanyManag
return payCompanyManagementMapper.pageSafetyCenter(page, queryWrapper); return payCompanyManagementMapper.pageSafetyCenter(page, queryWrapper);
} }
@Override
public Page<PayCompanyManagement> pageHaveMoney(Page<PayCompanyManagement> page, List<String> chargeCompanyIds) {
return payCompanyManagementMapper.pageHaveMoney(page, chargeCompanyIds);
}
/** /**
* 校验企业名称和信用代码是否匹配 * 校验企业名称和信用代码是否匹配
* @param payCompanyManagement * @param payCompanyManagement
@@ -2713,7 +2713,7 @@
#{item} #{item}
</foreach> </foreach>
</if> </if>
<if test="companyComeMoneySearch.chargeCompanyId != null and companyComeMoneySearch.chargeCompanyId != ''"> <if test="companyComeMoneySearch.chargeCompanyIds != null and companyComeMoneySearch.chargeCompanyIds != ''">
<foreach item="item" index="index" collection="companyComeMoneySearch.chargeCompanyIds" <foreach item="item" index="index" collection="companyComeMoneySearch.chargeCompanyIds"
open="AND chargeCompanyId in (" separator="," close=")"> open="AND chargeCompanyId in (" separator="," close=")">
#{item} #{item}
@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollStreamUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.api.vo.Result; import com.jero.common.api.vo.Result;
@@ -28,7 +29,9 @@ import org.apache.poi.ss.usermodel.Workbook;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.jeecgframework.poi.excel.ExcelExportUtil; import org.jeecgframework.poi.excel.ExcelExportUtil;
import org.jeecgframework.poi.excel.entity.TemplateExportParams; import org.jeecgframework.poi.excel.entity.TemplateExportParams;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
@@ -238,15 +241,20 @@ public class CompanyComeMoneyStatisticsController {
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
String chargeCompanyId = companyComeMoneySearch.getChargeCompanyId(); String chargeCompanyId = companyComeMoneySearch.getChargeCompanyId();
List<String> chargeCompanyIds; LambdaQueryWrapper<PayCompanyManagement> wrapper = new LambdaQueryWrapper<>();
List<String> chargeCompanyIds = new ArrayList<>();
CompanyComeMoneySearch allSearch = new CompanyComeMoneySearch();
if (StringUtils.isNotBlank(chargeCompanyId)){ if (StringUtils.isNotBlank(chargeCompanyId)){
chargeCompanyIds = StrUtil.split(chargeCompanyId, ','); chargeCompanyIds = StrUtil.split(chargeCompanyId, ',');
companyComeMoneySearch.setChargeCompanyIds(chargeCompanyIds); allSearch.setChargeCompanyIds(chargeCompanyIds);
}else { wrapper.in(PayCompanyManagement::getId,chargeCompanyIds);
List<PayCompanyManagement> list = payCompanyManagementService.list();
chargeCompanyIds = list.stream().map(PayCompanyManagement::getId).collect(Collectors.toList());
companyComeMoneySearch.setChargeCompanyIds(chargeCompanyIds);
} }
//获取分页后需要统计的企业
Page<PayCompanyManagement> page = new Page<>(pageNo, pageSize);
Page<PayCompanyManagement> companyManagementPage = payCompanyManagementService.pageHaveMoney(page,chargeCompanyIds);
chargeCompanyIds = companyManagementPage.getRecords().stream().map(PayCompanyManagement::getId).collect(Collectors.toList());
companyComeMoneySearch.setChargeCompanyIds(chargeCompanyIds);
String year_begin = companyComeMoneySearch.getYear_begin(); String year_begin = companyComeMoneySearch.getYear_begin();
String year_end = companyComeMoneySearch.getYear_end(); String year_end = companyComeMoneySearch.getYear_end();
int integer1 = Integer.parseInt(year_begin); int integer1 = Integer.parseInt(year_begin);
@@ -254,14 +262,21 @@ public class CompanyComeMoneyStatisticsController {
int i = integer2 - integer1; int i = integer2 - integer1;
List<String> years = new LinkedList<>(); List<String> years = new LinkedList<>();
years.add(year_begin); years.add(year_begin);
for (int i1 = 0; i1 < i; i1++) { for (int i1 = 1; i1 <= i; i1++) {
years.add(String.valueOf(integer1+i1)); years.add(String.valueOf(integer1+i1));
} }
companyComeMoneySearch.setYears(years); companyComeMoneySearch.setYears(years);
allSearch.setYears(years);
//获取当前分页数据
List<CompanyComeMoneyClassificationList> list = payWorkingGroupService.queryPageListForCompanyClassification(companyComeMoneySearch);
//获取总金额
List<CompanyComeMoneyClassificationList> allMoneyList = payWorkingGroupService.queryPageListForCompanyClassification(allSearch);
//拼接返回值map
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
//获取表头 //获取表头
List<DictModel> dictModels = sysBaseAPI.queryDictItemsByCode("payment_charge_use"); List<DictModel> dictModels = sysBaseAPI.queryDictItemsByCode("payment_charge_use");
List<Map<String, String>> titleList = new ArrayList<>(); List<Map<String, String>> titleList = new ArrayList<>();
//总金额map
Map<String, String> allMap = new HashMap<>(); Map<String, String> allMap = new HashMap<>();
BigDecimal zero = new BigDecimal("0.00"); BigDecimal zero = new BigDecimal("0.00");
for (String s : years) { for (String s : years) {
@@ -283,8 +298,7 @@ public class CompanyComeMoneyStatisticsController {
} }
} }
map.put("titleList", titleList); map.put("titleList", titleList);
//获取数据 //统计金额
List<CompanyComeMoneyClassificationList> list = payWorkingGroupService.queryPageListForCompanyClassification(companyComeMoneySearch);
List<Map<String, String>> valList = new ArrayList<>(); List<Map<String, String>> valList = new ArrayList<>();
//先按企业id分组 //先按企业id分组
Map<String, List<CompanyComeMoneyClassificationList>> companyIdKeyMap = CollStreamUtil.groupByKey(list, CompanyComeMoneyClassificationList::getCompanyId); Map<String, List<CompanyComeMoneyClassificationList>> companyIdKeyMap = CollStreamUtil.groupByKey(list, CompanyComeMoneyClassificationList::getCompanyId);
@@ -292,7 +306,7 @@ public class CompanyComeMoneyStatisticsController {
Map<String, String> lm = new HashMap<>(); Map<String, String> lm = new HashMap<>();
//获取单一企业数据 //获取单一企业数据
List<CompanyComeMoneyClassificationList> companyDateList = companyIdKeyMap.get(companyId); List<CompanyComeMoneyClassificationList> companyDateList = companyIdKeyMap.get(companyId);
if (companyDateList.isEmpty()) { if (CollectionUtil.isEmpty(companyDateList)) {
continue; continue;
}else { }else {
String companyName = companyDateList.get(0).getCompanyName(); String companyName = companyDateList.get(0).getCompanyName();
@@ -311,9 +325,6 @@ public class CompanyComeMoneyStatisticsController {
} }
} }
lm.put(yearKey, bigDecimal.toString()); lm.put(yearKey, bigDecimal.toString());
String allStr = allMap.get(yearKey);
BigDecimal all = new BigDecimal(allStr).add(bigDecimal);
allMap.put(yearKey,all.toString());
} }
for (String yearKey : years) { for (String yearKey : years) {
//获得单一年数据 //获得单一年数据
@@ -331,15 +342,51 @@ public class CompanyComeMoneyStatisticsController {
} }
String key = yearKey + "_" + value; String key = yearKey + "_" + value;
lm.put(key, bigDecimal.toString()); lm.put(key, bigDecimal.toString());
String allStr = allMap.get(key);
BigDecimal all = new BigDecimal(allStr).add(bigDecimal);
allMap.put(key,all.toString());
} }
} }
valList.add(lm); valList.add(lm);
} }
map.put("valList", valList); map.put("valList", valList);
//存入总金额
//按年份分组
Map<String, List<CompanyComeMoneyClassificationList>> yearKeyMap = CollStreamUtil.groupByKey(allMoneyList, CompanyComeMoneyClassificationList::getYear);
for (String yearKey : years) {
//获得单一年数据
List<CompanyComeMoneyClassificationList> dataList = yearKeyMap.get(yearKey);
BigDecimal bigDecimal = new BigDecimal("0.00");
if (dataList != null){
for (CompanyComeMoneyClassificationList list1 : dataList) {
String allMoney = list1.getAllMoney();
bigDecimal = bigDecimal.add(new BigDecimal(allMoney));
}
}
String allStr = allMap.get(yearKey);
BigDecimal all = new BigDecimal(allStr).add(bigDecimal);
allMap.put(yearKey,all.toString());
}
for (String yearKey : years) {
//获得单一年数据
List<CompanyComeMoneyClassificationList> dataList = yearKeyMap.get(yearKey);
for (DictModel dictModel : dictModels) {
BigDecimal bigDecimal = new BigDecimal("0.00");
String value = dictModel.getValue();
if (dataList != null){
for (CompanyComeMoneyClassificationList list2 : dataList) {
if (list2.getChargeUse().equals(value)) {
String allMoney = list2.getAllMoney();
bigDecimal = bigDecimal.add(new BigDecimal(allMoney));
}
}
}
String key = yearKey + "_" + value;
String allStr = allMap.get(key);
BigDecimal all = new BigDecimal(allStr).add(bigDecimal);
allMap.put(key,all.toString());
}
}
map.put("allMap", allMap); map.put("allMap", allMap);
map.put("page", page.setRecords(null));
return Result.OK(map); return Result.OK(map);
}/** }/**
@@ -353,14 +400,11 @@ public class CompanyComeMoneyStatisticsController {
public void classificationExcel(CompanyComeMoneySearch companyComeMoneySearch, public void classificationExcel(CompanyComeMoneySearch companyComeMoneySearch,
HttpServletResponse response) { HttpServletResponse response) {
String chargeCompanyId = companyComeMoneySearch.getChargeCompanyId(); String chargeCompanyId = companyComeMoneySearch.getChargeCompanyId();
List<String> chargeCompanyIds; List<String> chargeCompanyIds = new ArrayList<>();
CompanyComeMoneySearch allSearch = new CompanyComeMoneySearch();
if (StringUtils.isNotBlank(chargeCompanyId)){ if (StringUtils.isNotBlank(chargeCompanyId)){
chargeCompanyIds = StrUtil.split(chargeCompanyId, ','); chargeCompanyIds = StrUtil.split(chargeCompanyId, ',');
companyComeMoneySearch.setChargeCompanyIds(chargeCompanyIds); allSearch.setChargeCompanyIds(chargeCompanyIds);
}else {
List<PayCompanyManagement> list = payCompanyManagementService.list();
chargeCompanyIds = list.stream().map(PayCompanyManagement::getId).collect(Collectors.toList());
companyComeMoneySearch.setChargeCompanyIds(chargeCompanyIds);
} }
String year_begin = companyComeMoneySearch.getYear_begin(); String year_begin = companyComeMoneySearch.getYear_begin();
@@ -370,10 +414,11 @@ public class CompanyComeMoneyStatisticsController {
int i = integer2 - integer1; int i = integer2 - integer1;
List<String> years = new LinkedList<>(); List<String> years = new LinkedList<>();
years.add(year_begin); years.add(year_begin);
for (int i1 = 0; i1 < i; i1++) { for (int i1 = 1; i1 <= i; i1++) {
years.add(String.valueOf(integer1+i1)); years.add(String.valueOf(integer1+i1));
} }
companyComeMoneySearch.setYears(years); companyComeMoneySearch.setYears(years);
allSearch.setYears(years);
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
//获取表头 //获取表头
List<DictModel> dictModels = sysBaseAPI.queryDictItemsByCode("payment_charge_use"); List<DictModel> dictModels = sysBaseAPI.queryDictItemsByCode("payment_charge_use");
@@ -397,7 +442,7 @@ public class CompanyComeMoneyStatisticsController {
} }
map.put("titleList", titleList); map.put("titleList", titleList);
//获取数据 //获取数据
List<CompanyComeMoneyClassificationList> list = payWorkingGroupService.queryPageListForCompanyClassification(companyComeMoneySearch); List<CompanyComeMoneyClassificationList> list = payWorkingGroupService.queryPageListForCompanyClassification(allSearch);
List<Map<String, String>> valList = new ArrayList<>(); List<Map<String, String>> valList = new ArrayList<>();
//先按企业id分组 //先按企业id分组
Map<String, List<CompanyComeMoneyClassificationList>> companyIdKeyMap = CollStreamUtil.groupByKey(list, CompanyComeMoneyClassificationList::getCompanyId); Map<String, List<CompanyComeMoneyClassificationList>> companyIdKeyMap = CollStreamUtil.groupByKey(list, CompanyComeMoneyClassificationList::getCompanyId);
@@ -458,7 +503,7 @@ public class CompanyComeMoneyStatisticsController {
response.setContentType("application/x-download"); response.setContentType("application/x-download");
response.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition", response.setHeader("Content-Disposition",
"attachment;filename=".concat(String.valueOf(URLEncoder.encode("征集问题.xls", "UTF-8")))); "attachment;filename=".concat(String.valueOf(URLEncoder.encode("企业来款分类统计.xlsx", "UTF-8"))));
ServletOutputStream outputStream = response.getOutputStream(); ServletOutputStream outputStream = response.getOutputStream();
workbook.write(outputStream); workbook.write(outputStream);
workbook.close(); workbook.close();