|
@@ -1,14 +1,18 @@
|
|
package com.dayou.service.impl;
|
|
package com.dayou.service.impl;
|
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
+import com.dayou.common.BaseEntity;
|
|
import com.dayou.dto.FinanceFineSelectDTO;
|
|
import com.dayou.dto.FinanceFineSelectDTO;
|
|
import com.dayou.dto.SimplePostModel;
|
|
import com.dayou.dto.SimplePostModel;
|
|
import com.dayou.entity.FinanceFine;
|
|
import com.dayou.entity.FinanceFine;
|
|
-import com.dayou.exception.BusinessException;
|
|
|
|
|
|
+import com.dayou.entity.FinanceFineRefund;
|
|
import com.dayou.exception.ErrorCode;
|
|
import com.dayou.exception.ErrorCode;
|
|
import com.dayou.mapper.FinanceFineMapper;
|
|
import com.dayou.mapper.FinanceFineMapper;
|
|
|
|
+import com.dayou.service.IFinanceFineRefundService;
|
|
import com.dayou.service.IFinanceFineService;
|
|
import com.dayou.service.IFinanceFineService;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
+import com.dayou.utils.DateUtils;
|
|
import com.dayou.utils.LoginContext;
|
|
import com.dayou.utils.LoginContext;
|
|
import com.dayou.vo.CompileFineAssetsOrder;
|
|
import com.dayou.vo.CompileFineAssetsOrder;
|
|
import com.dayou.vo.CompileFineMajorOrder;
|
|
import com.dayou.vo.CompileFineMajorOrder;
|
|
@@ -16,12 +20,11 @@ import com.dayou.vo.FinanceFineVO;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
|
+import java.util.Date;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
-import java.util.Objects;
|
|
|
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
@@ -39,6 +42,9 @@ public class FinanceFineServiceImpl extends ServiceImpl<FinanceFineMapper, Finan
|
|
@Autowired
|
|
@Autowired
|
|
private FinanceFineMapper financeFineMapper;
|
|
private FinanceFineMapper financeFineMapper;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private IFinanceFineRefundService financeFineRefundService;
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 分页查询超期罚款
|
|
* 分页查询超期罚款
|
|
*
|
|
*
|
|
@@ -75,23 +81,33 @@ public class FinanceFineServiceImpl extends ServiceImpl<FinanceFineMapper, Finan
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * 确认罚款金额
|
|
|
|
|
|
+ * 取消确认罚款金额
|
|
*
|
|
*
|
|
* @return Boolean
|
|
* @return Boolean
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
- public Boolean confirmFineAmount(Long id) {
|
|
|
|
- return financeFineMapper.confirmFineAmount(id);
|
|
|
|
|
|
+ public Boolean cancelFineAmount(Long id) {
|
|
|
|
+ // 判断罚款记录是否已产生退款记录
|
|
|
|
+ int refundCount = financeFineRefundService.count(new LambdaQueryWrapper<FinanceFineRefund>().eq(FinanceFineRefund::getFineId, id).eq(BaseEntity::getDeleted, 0));
|
|
|
|
+ if (refundCount > 0) {
|
|
|
|
+ ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR,"当前罚款记录已产生相应退款记录, 不可取消罚款!");
|
|
|
|
+ }
|
|
|
|
+ return financeFineMapper.cancelFineAmount(id);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * 批量确认罚款金额
|
|
|
|
|
|
+ * 批量取消确认罚款金额
|
|
* @return Boolean
|
|
* @return Boolean
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
- public Boolean batchConfirmFineAmount(List<Long> ids) {
|
|
|
|
|
|
+ public Boolean batchCancelFineAmount(List<Long> ids) {
|
|
|
|
+ // 判断罚款记录是否已产生退款记录
|
|
|
|
+ int refundCount = financeFineRefundService.count(new LambdaQueryWrapper<FinanceFineRefund>().in(FinanceFineRefund::getFineId, ids).eq(BaseEntity::getDeleted, 0));
|
|
|
|
+ if (refundCount > 0) {
|
|
|
|
+ ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR,"当前罚款记录已产生相应退款记录, 不可取消罚款!");
|
|
|
|
+ }
|
|
if (!ids.isEmpty()) {
|
|
if (!ids.isEmpty()) {
|
|
- return financeFineMapper.batchConfirmFineAmount(ids);
|
|
|
|
|
|
+ return financeFineMapper.batchCancelFineAmount(ids);
|
|
}else {
|
|
}else {
|
|
ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR,"未选择罚款记录!");
|
|
ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR,"未选择罚款记录!");
|
|
}
|
|
}
|
|
@@ -111,6 +127,15 @@ public class FinanceFineServiceImpl extends ServiceImpl<FinanceFineMapper, Finan
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public Boolean update(FinanceFine financeFine) {
|
|
public Boolean update(FinanceFine financeFine) {
|
|
|
|
+ // 判断罚款记录是否已产生退款记录
|
|
|
|
+ int refundCount = financeFineRefundService.count(new LambdaQueryWrapper<FinanceFineRefund>().eq(FinanceFineRefund::getFineId, financeFine.getId()).eq(BaseEntity::getDeleted, 0));
|
|
|
|
+ if (refundCount > 0) {
|
|
|
|
+ ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR,"当前罚款记录已产生相应退款记录, 不可修改罚款信息!");
|
|
|
|
+ }
|
|
|
|
+ // 已确认的罚款记录修改罚款金额时同步修改实际罚款金额
|
|
|
|
+ if (ObjectUtil.isNotNull(financeFine.getFineAmount()) && financeFine.getStatus()) {
|
|
|
|
+ financeFine.setRealFineAmount(financeFine.getFineAmount());
|
|
|
|
+ }
|
|
return this.updateById(financeFine);
|
|
return this.updateById(financeFine);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -121,7 +146,7 @@ public class FinanceFineServiceImpl extends ServiceImpl<FinanceFineMapper, Finan
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * 统计财务收款预警中超过90天的订单或产品新增到罚款表
|
|
|
|
|
|
+ * 统计财务收款预警中超过270天的订单或产品新增到罚款表
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@@ -166,6 +191,9 @@ public class FinanceFineServiceImpl extends ServiceImpl<FinanceFineMapper, Finan
|
|
financeFine.setOrderFundId(assetsOrder.getOrderFundId());
|
|
financeFine.setOrderFundId(assetsOrder.getOrderFundId());
|
|
financeFine.setProductionFundId(assetsOrder.getProductionFundId());
|
|
financeFine.setProductionFundId(assetsOrder.getProductionFundId());
|
|
financeFine.setFineAmount(fineAmount);
|
|
financeFine.setFineAmount(fineAmount);
|
|
|
|
+ // 2025-05-23日,修改数据库确认字段默认为已确认,所以新增日期就是确认罚款日期,且实际罚款金额直接设置为罚款金额
|
|
|
|
+ financeFine.setConfirmDate(DateUtils.dateToLocalDateTime(new Date()));
|
|
|
|
+ financeFine.setRealFineAmount(fineAmount);
|
|
financeFineList.add(financeFine);
|
|
financeFineList.add(financeFine);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -175,6 +203,9 @@ public class FinanceFineServiceImpl extends ServiceImpl<FinanceFineMapper, Finan
|
|
FinanceFine financeFine = new FinanceFine();
|
|
FinanceFine financeFine = new FinanceFine();
|
|
financeFine.setOrderFundId(orderFundId);
|
|
financeFine.setOrderFundId(orderFundId);
|
|
financeFine.setFineAmount(BigDecimal.valueOf(50));
|
|
financeFine.setFineAmount(BigDecimal.valueOf(50));
|
|
|
|
+ // 2025-05-23日,修改数据库确认字段默认为已确认,所以新增日期就是确认罚款日期,且实际罚款金额直接设置为罚款金额
|
|
|
|
+ financeFine.setConfirmDate(DateUtils.dateToLocalDateTime(new Date()));
|
|
|
|
+ financeFine.setRealFineAmount(BigDecimal.valueOf(50));
|
|
financeFineList.add(financeFine);
|
|
financeFineList.add(financeFine);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -212,6 +243,9 @@ public class FinanceFineServiceImpl extends ServiceImpl<FinanceFineMapper, Finan
|
|
financeFine.setOrderFundId(majorOrder.getOrderFundId());
|
|
financeFine.setOrderFundId(majorOrder.getOrderFundId());
|
|
financeFine.setProductionFundId(majorOrder.getProductionFundId());
|
|
financeFine.setProductionFundId(majorOrder.getProductionFundId());
|
|
financeFine.setFineAmount(fineAmount);
|
|
financeFine.setFineAmount(fineAmount);
|
|
|
|
+ // 2025-05-23日,修改数据库确认字段默认为已确认,所以新增日期就是确认罚款日期,且实际罚款金额直接设置为罚款金额
|
|
|
|
+ financeFine.setConfirmDate(DateUtils.dateToLocalDateTime(new Date()));
|
|
|
|
+ financeFine.setRealFineAmount(fineAmount);
|
|
financeFineList.add(financeFine);
|
|
financeFineList.add(financeFine);
|
|
}
|
|
}
|
|
|
|
|