skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/controller/TbProjectController.java
@@ -1,19 +1,26 @@ package cn.gistack.sm.sjztmd.controller; import cn.gistack.sm.sjztmd.dto.TbProjectDTO; import cn.gistack.sm.sjztmd.excel.TbProjectExcel; import cn.gistack.sm.sjztmd.excel.TbProjectImporter; import cn.gistack.sm.sjztmd.service.ITbProjectService; import cn.gistack.sm.sjztmd.statisticsVO.StatisticsParams; import cn.gistack.sm.sjztmd.statisticsVO.StatisticsTableProject; import cn.gistack.sm.sjztmd.vo.TbProjectVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.List; @Slf4j @@ -47,6 +54,23 @@ return R.data(list); } /** * 导入模板 */ @GetMapping("export-template") public void exportUser(HttpServletResponse response) { List<TbProjectExcel> list = new ArrayList<>(); ExcelUtil.export(response, "用户数据模板", "用户数据表", list, TbProjectExcel.class); } /** * 导入用户 */ @PostMapping("import-tb-project") public R importUser(MultipartFile file, Integer isCovered) { TbProjectImporter userImporter = new TbProjectImporter(tbProjectService, isCovered == 1); ExcelUtil.save(file, userImporter, TbProjectExcel.class); return R.success("操作成功"); } } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/excel/TbProjectExcel.java
New file @@ -0,0 +1,40 @@ package cn.gistack.sm.sjztmd.excel; import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.alibaba.excel.annotation.write.style.ContentRowHeight; import com.alibaba.excel.annotation.write.style.HeadRowHeight; import lombok.Data; import java.io.Serializable; @Data @ColumnWidth(25) @HeadRowHeight(20) @ContentRowHeight(18) public class TbProjectExcel implements Serializable { private static final long serialVersionUID = 1L; @ColumnWidth(15) @ExcelProperty("地市") private String cityName; @ExcelIgnore @ExcelProperty("县市区") private String countyName; @ExcelIgnore @ExcelProperty("中央投资") private Double centerFund; @ExcelIgnore @ExcelProperty("地方投资") private Double localFund; @ExcelIgnore @ExcelProperty("填报年份") private String tbYear; } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/excel/TbProjectImporter.java
New file @@ -0,0 +1,40 @@ /* * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: Chill 庄骞 (smallchill@163.com) */ package cn.gistack.sm.sjztmd.excel; import cn.gistack.sm.sjztmd.service.ITbProjectService; import lombok.RequiredArgsConstructor; import org.springblade.core.excel.support.ExcelImporter; import java.util.List; /** * 用户数据导入类 * * @author Chill */ @RequiredArgsConstructor public class TbProjectImporter implements ExcelImporter<TbProjectExcel> { private final ITbProjectService service; private final Boolean isCovered; @Override public void save(List<TbProjectExcel> data) { service.importUser(data, isCovered); } } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.java
@@ -1,6 +1,7 @@ package cn.gistack.sm.sjztmd.mapper; import cn.gistack.sm.sjztmd.dto.AttResBaseUserDTO; import cn.gistack.sm.sjztmd.entity.AttAdBase; import cn.gistack.sm.sjztmd.entity.AttResBase; import cn.gistack.sm.sjztmd.vo.AttResAdVO; import cn.gistack.sm.sjztmd.vo.AttResBaseGeneralInvestigationVO; @@ -81,4 +82,6 @@ Integer getWaterCountByResNameAndCountyName(@Param("resName") String resName,@Param("countyCode") String countyCode); AttResAdVO getResAd(@Param("resId") String resId); AttAdBase getYwxtResInfo(@Param("cityName") String cityName,@Param("countyName") String countyName); } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.xml
@@ -346,6 +346,14 @@ where arb."guid" = #{resId} </select> <select id="getYwxtResInfo" resultType="cn.gistack.sm.sjztmd.entity.AttAdBase"> SELECT * FROM YWXT."att_ad_base" aab where aab."p_ad_name" = #{cityName} and aab."ad_name" = #{countyName} </select> </mapper> skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/TbProjectMapper.java
@@ -17,4 +17,6 @@ TbProjectDTO getDetail(@Param("id") String id); List<StatisticsTableProject> getStatisticsTable(@Param("params") StatisticsParams statisticsParams); TbProject getTbProjectInfo(@Param("params") TbProject params); } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/TbProjectMapper.xml
@@ -251,4 +251,19 @@ AND aab."p_ad_code" = #{params.adCode} </if> </select> <select id="getTbProjectInfo" resultType="cn.gistack.sm.sjztmd.entity.TbProject"> SELECT * FROM SJZT_MD."tb_project" where 1=1 <if test="params.cityCode != null and params.cityCode !=''"> and "city_code" = #{params.cityCode} </if> <if test="params.countyCode != null and params.countyCode !=''"> and "county_code" = #{params.countyCode} </if> <if test="params.tbYear != null and params.tbYear !=''"> and "tb_year" = #{params.tbYear} </if> </select> </mapper> skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/IAttResBaseService.java
@@ -71,4 +71,5 @@ */ AttResAdVO getResAd(String resId); AttAdBase getYwxtResInfo(String cityName, String countyName); } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/ITbProjectService.java
@@ -2,6 +2,7 @@ import cn.gistack.sm.sjztmd.dto.TbProjectDTO; import cn.gistack.sm.sjztmd.entity.TbProject; import cn.gistack.sm.sjztmd.excel.TbProjectExcel; import cn.gistack.sm.sjztmd.statisticsVO.StatisticsParams; import cn.gistack.sm.sjztmd.statisticsVO.StatisticsTableProject; import cn.gistack.sm.sjztmd.vo.TbProjectVO; @@ -18,4 +19,6 @@ TbProjectDTO getDetail(String id); List<StatisticsTableProject> getStatisticsTable(StatisticsParams statisticsParams); void importUser(List<TbProjectExcel> data, Boolean isCovered); } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/AttResBaseServiceImpl.java
@@ -2,6 +2,7 @@ import cn.gistack.sm.intelligentCall.mapper.CallTaskMapper; import cn.gistack.sm.sjztmd.dto.AttResBaseUserDTO; import cn.gistack.sm.sjztmd.entity.AttAdBase; import cn.gistack.sm.sjztmd.entity.AttResBase; import cn.gistack.sm.sjztmd.entity.RelResLabel; import cn.gistack.sm.sjztmd.mapper.AttResBaseMapper; @@ -142,4 +143,9 @@ public AttResAdVO getResAd(String resId) { return baseMapper.getResAd(resId); } @Override public AttAdBase getYwxtResInfo(String cityName, String countyName) { return baseMapper.getYwxtResInfo(cityName,countyName); } } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/TbProjectServiceImpl.java
@@ -1,13 +1,17 @@ package cn.gistack.sm.sjztmd.service.impl; import cn.gistack.sm.sjztmd.dto.TbProjectDTO; import cn.gistack.sm.sjztmd.entity.AttAdBase; import cn.gistack.sm.sjztmd.entity.TbProject; import cn.gistack.sm.sjztmd.entity.TbProjectSchedule; import cn.gistack.sm.sjztmd.excel.TbProjectExcel; import cn.gistack.sm.sjztmd.mapper.TbProjectMapper; import cn.gistack.sm.sjztmd.service.IAttResBaseService; import cn.gistack.sm.sjztmd.service.ITbProjectScheduleService; import cn.gistack.sm.sjztmd.service.ITbProjectService; import cn.gistack.sm.sjztmd.statisticsVO.StatisticsParams; import cn.gistack.sm.sjztmd.statisticsVO.StatisticsTableProject; import cn.gistack.sm.sjztmd.util.CalculateUtils; import cn.gistack.sm.sjztmd.vo.TbProjectVO; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -19,6 +23,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.Arrays; import java.util.List; @@ -29,6 +34,7 @@ public class TbProjectServiceImpl extends ServiceImpl<TbProjectMapper, TbProject> implements ITbProjectService { private final ITbProjectScheduleService tbProjectScheduleService; private final IAttResBaseService attResBaseService; @Override public Object getList(TbProjectVO tbProjectVO, IPage<TbProjectVO> page) { @@ -84,4 +90,64 @@ public List<StatisticsTableProject> getStatisticsTable(StatisticsParams statisticsParams) { return baseMapper.getStatisticsTable(statisticsParams); } @Override public void importUser(List<TbProjectExcel> data, Boolean isCovered) { data.forEach(tbProjectExcel -> { String cityName = tbProjectExcel.getCityName(); String countyName = tbProjectExcel.getCountyName(); AttAdBase attAdBase = attResBaseService.getYwxtResInfo(cityName,countyName); TbProject params = new TbProject(); params.setCityCode(attAdBase.getPAdCode()); params.setCountyCode(attAdBase.getAdCode()); params.setTbYear(tbProjectExcel.getTbYear()); TbProject tbProject = baseMapper.getTbProjectInfo(params); if (tbProject != null){ //有这条数据,更新 //更新中央资金 BigDecimal oldCenterFund = new BigDecimal(tbProject.getCenterFund()); BigDecimal newCenterFund = new BigDecimal(tbProjectExcel.getCenterFund()); tbProject.setCenterFund(CalculateUtils.add(oldCenterFund,newCenterFund)); //更新地方资金 BigDecimal oldLocalFund = new BigDecimal(tbProject.getCenterFund()); BigDecimal newLocalFund = new BigDecimal(tbProjectExcel.getCenterFund()); tbProject.setLocalFund(CalculateUtils.add(oldLocalFund,newLocalFund)); //更新修改人,修改时间 tbProject.setUpdateUser(AuthUtil.getUserId().toString()); tbProject.setUpdateTime(DateUtil.now()); updateById(tbProject); }else { //无数据,新增 TbProject save = new TbProject(); save.setUpdateUser(AuthUtil.getUserId().toString()); save.setCreateUser(AuthUtil.getUserId().toString()); save.setCreateTime(DateUtil.now()); save.setUpdateTime(DateUtil.now()); save.setCityName(attAdBase.getPAdName()); save.setCityCode(attAdBase.getPAdCode()); save.setCountyName(attAdBase.getAdName()); save.setCountyCode(attAdBase.getAdCode()); save.setCenterFund(tbProjectExcel.getCenterFund()); save.setLocalFund(tbProjectExcel.getLocalFund()); save.setTbYear(tbProjectExcel.getTbYear()); save(save); } }); } } skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/util/CalculateUtils.java
@@ -16,4 +16,36 @@ String format = df.format(divide); return format; } // 加法 public static Double add(BigDecimal a, BigDecimal b) { BigDecimal add = a.add(b); return add.doubleValue() ; } // 减法 public static Double subtract(BigDecimal a, BigDecimal b) { BigDecimal subtract = a.subtract(b); return subtract.doubleValue(); } // 乘法 public static Double multiply(BigDecimal a, BigDecimal b) { BigDecimal multiply = a.multiply(b); return multiply.doubleValue(); } // 除法 public static Double divide(BigDecimal a, BigDecimal b) { // 防止除以0 if (b.compareTo(BigDecimal.ZERO) == 0) { throw new ArithmeticException("Division by zero"); } BigDecimal divide = a.divide(b); return divide.doubleValue(); } }