导入清单:取暖费 后端++

This commit is contained in:
zhuangdashia 2025-08-18 12:54:09 +08:00
parent f5339d6237
commit dd220a3417
10 changed files with 942 additions and 0 deletions

View File

@ -0,0 +1,149 @@
package org.dromara.mps.controller;
import java.math.BigDecimal;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.ArrayList;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.http.MediaType;
import org.springframework.web.multipart.MultipartFile;
import org.dromara.common.excel.core.ExcelResult;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.mps.domain.vo.MpsImportHeatVo;
import org.dromara.mps.domain.bo.MpsImportHeatBo;
import org.dromara.mps.service.IMpsImportHeatService;
import org.dromara.mps.domain.vo.MpsImportHeatImportVo;
import org.dromara.mps.listener.MpsImportHeatImportListener;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 导入取暖费信息
*
* @author Lion Li
* @date 2025-08-15
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/mps/importHeat")
public class MpsImportHeatController extends BaseController {
private final IMpsImportHeatService mpsImportHeatService;
/**
* 查询取暖费信息列表
*/
@SaCheckPermission("mps:importHeat:list")
@GetMapping("/list")
public TableDataInfo<MpsImportHeatVo> list(MpsImportHeatBo bo, PageQuery pageQuery) {
return mpsImportHeatService.queryPageList(bo, pageQuery);
}
/**
* 导出导入取暖费信息列表
*/
@SaCheckPermission("mps:importHeat:export")
@Log(title = "导入取暖费信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(MpsImportHeatBo bo, HttpServletResponse response) {
List<MpsImportHeatVo> list = mpsImportHeatService.queryList(bo);
ExcelUtil.exportExcel(list, "导入取暖费信息", MpsImportHeatVo.class, response);
}
/**
* 获取导入模板
*/
@PostMapping("/importTemplate")
public void importTemplate(HttpServletResponse response) {
ExcelUtil.exportExcel(new ArrayList<>(), "导入取暖费信息", MpsImportHeatImportVo.class, response);
}
/**
* 导入数据
*
* @param file 导入文件
* @param updateSupport 是否更新已存在数据
*
*/
@Log(title = "导入取暖费信息", businessType = BusinessType.IMPORT)
@SaCheckPermission("mps:importHeat:import")
@PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R<Void> importData(@RequestPart("file") MultipartFile file,
boolean updateSupport,
@RequestParam @DateTimeFormat(pattern = "yyyy-MM") Date importMonth) throws Exception {
Calendar calendar = Calendar.getInstance();
calendar.setTime(importMonth);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
//把导入月份的旧数据删除
mpsImportHeatService.deleteDataByMonth(calendar.getTime());
ExcelResult<MpsImportHeatImportVo> result = ExcelUtil.importExcel(file.getInputStream(), MpsImportHeatImportVo.class, new MpsImportHeatImportListener(updateSupport, calendar.getTime()));
return R.ok(result.getAnalysis());
}
/**
* 获取取暖费信息详细信息
*
* @param id 主键
*/
@SaCheckPermission("mps:importHeat:query")
@GetMapping("/{id}")
public R<MpsImportHeatVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable BigDecimal id) {
return R.ok(mpsImportHeatService.queryById(id));
}
/**
* 新增取暖费信息
*/
@SaCheckPermission("mps:importHeat:add")
@Log(title = "导入取暖费信息", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody MpsImportHeatBo bo) {
return toAjax(mpsImportHeatService.insertByBo(bo));
}
/**
* 修改取暖费信息
*/
@SaCheckPermission("mps:importHeat:edit")
@Log(title = "导入取暖费信息", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody MpsImportHeatBo bo) {
return toAjax(mpsImportHeatService.updateByBo(bo));
}
/**
* 删除导入取暖费信息
*
* @param ids 主键串
*/
@SaCheckPermission("mps:importHeat:remove")
@Log(title = "导入取暖费信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable BigDecimal[] ids) {
return toAjax(mpsImportHeatService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,79 @@
package org.dromara.mps.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
* 导入取暖费信息对象 mps_import_heat
*
* @author Lion Li
* @date 2025-08-15
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("mps_import_heat")
public class MpsImportHeat extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id")
private Long id;
/**
* 用户编码
*/
private String userCode;
/**
* 用户地址
*/
private String userAddress;
/**
* 费用类别
*/
private String feeType;
/**
* 缴费金额
*/
private BigDecimal paymentAmount;
/**
* 加热器金额
*/
private BigDecimal heaterAmount;
/**
* 缴费日期
*/
private Date paymentDate;
/**
* 流水号
*/
private String transactionId;
/**
* 订单状态
*/
private String orderStatus;
/**
* 计价月份
*/
private Date importTime;
}

View File

@ -0,0 +1,80 @@
package org.dromara.mps.domain.bo;
import org.dromara.mps.domain.MpsImportHeat;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 导入取暖费信息业务对象 mps_import_heat
*
* @author Lion Li
* @date 2025-08-15
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = MpsImportHeat.class, reverseConvertGenerate = false)
public class MpsImportHeatBo extends BaseEntity {
/**
* 主键
*/
private Long id;
/**
* 用户编码
*/
@NotBlank(message = "用户编码不能为空", groups = { AddGroup.class })
private String userCode;
/**
* 用户地址
*/
private String userAddress;
/**
* 费用类别
*/
private String feeType;
/**
* 缴费金额
*/
private BigDecimal paymentAmount;
/**
* 加热器金额
*/
private BigDecimal heaterAmount;
/**
* 缴费日期
*/
private Date paymentDate;
/**
* 流水号
*/
private String transactionId;
/**
* 订单状态
*/
private String orderStatus;
/**
* 计价月份
*/
@NotNull(message = "计价月份不能为空", groups = { AddGroup.class })
private Date importTime;
}

View File

@ -0,0 +1,98 @@
package org.dromara.mps.domain.vo;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 导入取暖费信息视图对象 mps_import_heat
*
* 自行按照业务需要修改模板列
*
* @author Lion Li
* @date 2025-08-15
*/
@Data
@NoArgsConstructor
// @Accessors(chain = true) // 导入不允许使用 会找不到set方法
public class MpsImportHeatImportVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@ExcelProperty(value = "主键")
private Long id;
/**
* 用户编码
*/
@ExcelProperty(value = "用户编码")
private String userCode;
/**
* 用户地址
*/
@ExcelProperty(value = "用户地址")
private String userAddress;
/**
* 费用类别
*/
@ExcelProperty(value = "费用类别")
private String feeType;
/**
* 缴费金额
*/
@ExcelProperty(value = "缴费金额")
private BigDecimal paymentAmount;
/**
* 加热器金额
*/
@ExcelProperty(value = "加热器金额")
private BigDecimal heaterAmount;
/**
* 缴费日期
*/
@ExcelProperty(value = "缴费日期")
private Date paymentDate;
/**
* 流水号
*/
@ExcelProperty(value = "流水号")
private String transactionId;
/**
* 订单状态
*/
@ExcelProperty(value = "订单状态")
private String orderStatus;
/**
* 计价月份
*/
@ExcelProperty(value = "计价月份")
@DateTimeFormat(pattern = "yyyy-MM")
private Date importTime;
}

View File

@ -0,0 +1,95 @@
package org.dromara.mps.domain.vo;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.mps.domain.MpsImportHeat;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 导入取暖费信息视图对象 mps_import_heat
*
* @author Lion Li
* @date 2025-08-15
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = MpsImportHeat.class)
public class MpsImportHeatVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@ExcelProperty(value = "主键")
private Long id;
/**
* 用户编码
*/
@ExcelProperty(value = "用户编码")
private String userCode;
/**
* 用户地址
*/
@ExcelProperty(value = "用户地址")
private String userAddress;
/**
* 费用类别
*/
@ExcelProperty(value = "费用类别")
private String feeType;
/**
* 缴费金额
*/
@ExcelProperty(value = "缴费金额")
private BigDecimal paymentAmount;
/**
* 加热器金额
*/
@ExcelProperty(value = "加热器金额")
private BigDecimal heaterAmount;
/**
* 缴费日期
*/
@ExcelProperty(value = "缴费日期")
private Date paymentDate;
/**
* 流水号
*/
@ExcelProperty(value = "流水号")
private String transactionId;
/**
* 订单状态
*/
@ExcelProperty(value = "订单状态")
private String orderStatus;
/**
* 计价月份
*/
@ExcelProperty(value = "计价月份")
private Date importTime;
}

View File

@ -0,0 +1,140 @@
package org.dromara.mps.listener;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.http.HtmlUtil;
import cn.idev.excel.context.AnalysisContext;
import cn.idev.excel.event.AnalysisEventListener;
import jakarta.validation.ConstraintViolation;
import jakarta.validation.ConstraintViolationException;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.SpringUtils;
import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.ValidatorUtils;
import org.dromara.common.excel.core.ExcelListener;
import org.dromara.common.excel.core.ExcelResult;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.mps.domain.MpsImportHeat;
import org.dromara.mps.domain.bo.MpsImportHeatBo;
import org.dromara.mps.domain.vo.MpsImportHeatImportVo;
import org.dromara.mps.service.IMpsImportHeatService;
import cn.hutool.core.lang.Pair;
import java.time.LocalDate;
import java.util.*;
import java.util.stream.Collectors;
/**
* 自定义导入
*
* @author Lion Li
*/
@Slf4j
public class MpsImportHeatImportListener extends AnalysisEventListener<MpsImportHeatImportVo> implements ExcelListener<MpsImportHeatImportVo> {
private final IMpsImportHeatService mpsImportHeatService;
private final Boolean isUpdateSupport;
private final Long operUserId;
private int countN = 1;
private final Date importMonth;
// 存储所有解析成功的对象
private final Collection<MpsImportHeat> successList = new ArrayList<>();
//TODO 考虑展示数据还是行数,暂定行数
// 存储所有解析失败的对象及错误信息
//private final Collection<Pair<MpsImportHeatImportVo, String>> failureList = new ArrayList<>();
private final Collection<Pair<Integer, String>> failureList = new ArrayList<>();
public MpsImportHeatImportListener(Boolean isUpdateSupport, Date importMonth) {
this.mpsImportHeatService = SpringUtils.getBean(IMpsImportHeatService.class);
this.isUpdateSupport = isUpdateSupport;
this.operUserId = LoginHelper.getUserId();
this.importMonth = importMonth;
}
@Override
public void invoke(MpsImportHeatImportVo mpsImportHeatImportVo, AnalysisContext context) {
try {
countN++;
//TODO 自行实现验重逻辑
//MpsImportHeatVo mpsImportHeatVo1 = this.mpsImportHeatService.queryById(mpsImportHeatVo.getDataId());
// 1. 基本数据验证
ValidatorUtils.validate(mpsImportHeatImportVo);
// 2. 转换为业务对象
MpsImportHeat mpsImportHeat = BeanUtil.toBean(mpsImportHeatImportVo, MpsImportHeat.class);
mpsImportHeat.setImportTime(this.importMonth);
// 3. 添加到成功列表稍后批量处理
successList.add(mpsImportHeat);
} catch (Exception e) {
// 捕获并记录所有验证错误
String errorMsg = e.getMessage();
if (e instanceof ConstraintViolationException cvException) {
errorMsg = StreamUtils.join(cvException.getConstraintViolations(),
ConstraintViolation::getMessage, ", ");
}
failureList.add(Pair.of(countN, errorMsg));
log.error("数据验证失败: {}", errorMsg);
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
// 所有数据解析完成后执行批量操作
}
@Override
public ExcelResult<MpsImportHeatImportVo> getExcelResult() {
// 存在验证错误则直接返回错误
if (!failureList.isEmpty()) {
StringBuilder errorMsg = new StringBuilder("数据验证失败,共 ")
.append(failureList.size())
.append(" 条错误:<br/>");
failureList.forEach(pair ->
//errorMsg.append("\n行数据: ")
errorMsg.append("行数[")
.append(pair.getKey())
.append("],")
.append("错误:")
.append(pair.getValue())
.append("<br/>"));
throw new ServiceException(errorMsg.toString());
}
try {
// 执行事务性批量导入
mpsImportHeatService.batchInsertOrUpdate(successList, isUpdateSupport);
return createSuccessResult();
} catch (Exception e) {
// 事务回滚整体导入失败
log.error("批量导入失败", e);
throw new ServiceException("导入失败: " + e.getMessage());
}
}
private ExcelResult<MpsImportHeatImportVo> createSuccessResult() {
return new ExcelResult<>() {
@Override
public String getAnalysis() {
return "成功导入 " + successList.size() + " 条数据";
}
@Override
public List<MpsImportHeatImportVo> getList() {
return successList.stream()
.map(bo -> BeanUtil.toBean(bo, MpsImportHeatImportVo.class))
.collect(Collectors.toList());
}
@Override
public List<String> getErrorList() {
return Collections.emptyList();
}
};
}
}

View File

@ -0,0 +1,36 @@
package org.dromara.mps.mapper;
import org.dromara.mps.domain.MpsImportHeat;
import org.dromara.mps.domain.vo.MpsImportHeatVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.dromara.common.mybatis.annotation.DataColumn;
import org.dromara.common.mybatis.annotation.DataPermission;
/**
* 导入取暖费信息Mapper接口
*
* @author Lion Li
* @date 2025-08-15
*/
public interface MpsImportHeatMapper extends BaseMapperPlus<MpsImportHeat, MpsImportHeatVo> {
@DataPermission({
@DataColumn(key = "deptName", value = "create_dept"),
@DataColumn(key = "userName", value = "create_by")
})
default Page<MpsImportHeatVo> selectPageMpsImportHeatList(Page<MpsImportHeat> page, Wrapper<MpsImportHeat> queryWrapper) {
return this.selectVoPage(page, queryWrapper);
}
//@DataPermission({
// @DataColumn(key = "deptName", value = "create_dept"),
// @DataColumn(key = "userName", value = "create_by")
//})
// List<SysUserExportVo> selectMpsImportHeatExportList(@Param(Constants.WRAPPER) Wrapper<MpsImportHeat> queryWrapper);
}

View File

@ -0,0 +1,79 @@
package org.dromara.mps.service;
import org.dromara.mps.domain.MpsImportHeat;
import org.dromara.mps.domain.vo.MpsImportHeatVo;
import org.dromara.mps.domain.bo.MpsImportHeatBo;
import org.springframework.transaction.annotation.Transactional;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.Date;
import java.util.List;
/**
* 导入取暖费信息Service接口
*
* @author Lion Li
* @date 2025-08-15
*/
public interface IMpsImportHeatService {
//事务性批量处理
@Transactional(rollbackFor = Exception.class)
void batchInsertOrUpdate(Collection<MpsImportHeat> list, Boolean isUpdateSupport);
/**
* 查询导入取暖费信息
*
* @param id 主键
* @return 导入取暖费信息
*/
MpsImportHeatVo queryById(BigDecimal id);
/**
* 分页查询导入取暖费信息列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 导入取暖费信息分页列表
*/
TableDataInfo<MpsImportHeatVo> queryPageList(MpsImportHeatBo bo, PageQuery pageQuery);
/**
* 查询符合条件的导入取暖费信息列表
*
* @param bo 查询条件
* @return 导入取暖费信息列表
*/
List<MpsImportHeatVo> queryList(MpsImportHeatBo bo);
/**
* 新增导入取暖费信息
*
* @param bo 导入取暖费信息
* @return 是否新增成功
*/
Boolean insertByBo(MpsImportHeatBo bo);
/**
* 修改导入取暖费信息
*
* @param bo 导入取暖费信息
* @return 是否修改成功
*/
Boolean updateByBo(MpsImportHeatBo bo);
/**
* 校验并批量删除导入取暖费信息信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<BigDecimal> ids, Boolean isValid);
Boolean deleteDataByMonth(Date importMonth);
}

View File

@ -0,0 +1,179 @@
package org.dromara.mps.service.impl;
import cn.hutool.core.collection.CollUtil;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.dromara.mps.domain.bo.MpsImportHeatBo;
import org.dromara.mps.domain.vo.MpsImportHeatVo;
import org.dromara.mps.domain.MpsImportHeat;
import org.dromara.mps.mapper.MpsImportHeatMapper;
import org.dromara.mps.service.IMpsImportHeatService;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.*;
/**
* 导入取暖费信息Service业务层处理
*
* @author Lion Li
* @date 2025-08-15
*/
@Slf4j
@RequiredArgsConstructor
@Service
public class MpsImportHeatServiceImpl implements IMpsImportHeatService {
private final MpsImportHeatMapper baseMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public void batchInsertOrUpdate(Collection<MpsImportHeat> list, Boolean isUpdateSupport) {
if (CollUtil.isEmpty(list)) {
return;
}
// 业务校验可选,参照demo
//validateBusinessRules(list);
// 2. 批量插入/更新
if (isUpdateSupport) {
baseMapper.insertOrUpdateBatch(list);
} else {
baseMapper.insertBatch(list);
}
}
// 示例业务重复检查
/*private void validateBusinessRules(Collection<MpsImportHeatBo> list) {
Set<String> uniqueKeys = new HashSet<>();
for (MpsImportHeatBo bo : list) {
String key = bo.getCustAcctNo();
if (uniqueKeys.contains(key)) {
throw new ServiceException("重复的客户账号: " + key);
}
uniqueKeys.add(key);
}
} */
/**
* 查询导入取暖费信息
*
* @param id 主键
* @return 导入取暖费信息
*/
@Override
public MpsImportHeatVo queryById(BigDecimal id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询导入取暖费信息列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 导入取暖费信息分页列表
*/
@Override
public TableDataInfo<MpsImportHeatVo> queryPageList(MpsImportHeatBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<MpsImportHeat> lqw = buildQueryWrapper(bo);
Page<MpsImportHeatVo> result = baseMapper.selectPageMpsImportHeatList(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的导入取暖费信息列表
*
* @param bo 查询条件
* @return 导入取暖费信息列表
*/
@Override
public List<MpsImportHeatVo> queryList(MpsImportHeatBo bo) {
LambdaQueryWrapper<MpsImportHeat> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<MpsImportHeat> buildQueryWrapper(MpsImportHeatBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<MpsImportHeat> lqw = Wrappers.lambdaQuery();
lqw.orderByAsc(MpsImportHeat::getId);
lqw.eq(StringUtils.isNotBlank(bo.getUserCode()), MpsImportHeat::getUserCode, bo.getUserCode());
lqw.eq(StringUtils.isNotBlank(bo.getUserAddress()), MpsImportHeat::getUserAddress, bo.getUserAddress());
lqw.eq(StringUtils.isNotBlank(bo.getFeeType()), MpsImportHeat::getFeeType, bo.getFeeType());
lqw.eq(bo.getPaymentAmount() != null, MpsImportHeat::getPaymentAmount, bo.getPaymentAmount());
lqw.eq(bo.getHeaterAmount() != null, MpsImportHeat::getHeaterAmount, bo.getHeaterAmount());
lqw.eq(bo.getPaymentDate() != null, MpsImportHeat::getPaymentDate, bo.getPaymentDate());
lqw.eq(StringUtils.isNotBlank(bo.getTransactionId()), MpsImportHeat::getTransactionId, bo.getTransactionId());
lqw.eq(StringUtils.isNotBlank(bo.getOrderStatus()), MpsImportHeat::getOrderStatus, bo.getOrderStatus());
lqw.eq(bo.getImportTime() != null, MpsImportHeat::getImportTime, bo.getImportTime());
return lqw;
}
/**
* 新增导入取暖费信息
*
* @param bo 导入取暖费信息
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(MpsImportHeatBo bo) {
MpsImportHeat add = MapstructUtils.convert(bo, MpsImportHeat.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改导入取暖费信息
*
* @param bo 导入取暖费信息
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(MpsImportHeatBo bo) {
MpsImportHeat update = MapstructUtils.convert(bo, MpsImportHeat.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(MpsImportHeat entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除导入取暖费信息信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<BigDecimal> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
@Override
public Boolean deleteDataByMonth(Date importMonth) {
return baseMapper.delete(new LambdaQueryWrapper<MpsImportHeat>().eq(MpsImportHeat::getImportTime, importMonth))>0;
}
}

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.mps.mapper.MpsImportHeatMapper">
</mapper>