guoshilong
2024-03-25 a6e044780082d6a6507f64edb9a5242b779fb6ee
项目填报导入接口
10 files modified
2 files added
240 ■■■■■ changed files
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/controller/TbProjectController.java 24 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/excel/TbProjectExcel.java 40 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/excel/TbProjectImporter.java 40 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.java 3 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/AttResBaseMapper.xml 8 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/TbProjectMapper.java 2 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/mapper/TbProjectMapper.xml 15 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/IAttResBaseService.java 1 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/ITbProjectService.java 3 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/AttResBaseServiceImpl.java 6 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/TbProjectServiceImpl.java 66 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/util/CalculateUtils.java 32 ●●●●● patch | view | raw | blame | history
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();
    }
}