|
|
@@ -9,6 +9,7 @@ import com.ydtech.modules.fnc.entity.InsuranceHandlingSettlementMonthEntity;
|
|
|
import com.ydtech.modules.fnc.service.InsPlyIncomeService;
|
|
|
import com.ydtech.modules.fnc.service.InsuranceHandlingSettlementMonthService;
|
|
|
import com.ydtech.modules.fnc.vo.InsuranceHandlingSettlementMonthVo;
|
|
|
+import com.ydtech.utils.StringUtils;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
@@ -17,9 +18,9 @@ import org.springframework.util.CollectionUtils;
|
|
|
import org.springframework.util.ObjectUtils;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
-import java.util.Comparator;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.text.ParseException;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.*;
|
|
|
import java.util.function.BinaryOperator;
|
|
|
import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
@@ -40,45 +41,57 @@ public class InsuranceHandlingSettlementMonthServiceImpl extends ServiceImpl<Ins
|
|
|
|
|
|
@Override
|
|
|
public List<InsuranceHandlingSettlementMonthDto> queryList(InsuranceHandlingSettlementMonthVo insuranceHandlingSettlementMonthVo) {
|
|
|
- List<InsuranceHandlingSettlementMonthDto> incomeList = insPlyIncomeService.getInvociAmount(insuranceHandlingSettlementMonthVo);
|
|
|
List<InsuranceHandlingSettlementMonthDto> resultList = baseMapper.queryList(insuranceHandlingSettlementMonthVo);
|
|
|
- if (!resultList.isEmpty()) {
|
|
|
- Map<String, InsuranceHandlingSettlementMonthDto> latestByTaskId = resultList.stream()
|
|
|
+ if (resultList.size() > 0) {
|
|
|
+ return resultList;
|
|
|
+ } else {
|
|
|
+ List<InsuranceHandlingSettlementMonthDto> invociAmount = insPlyIncomeService.getInvociAmount(insuranceHandlingSettlementMonthVo);
|
|
|
+
|
|
|
+ Map<String, InsuranceHandlingSettlementMonthDto> latestByTaskId = invociAmount.stream()
|
|
|
.collect(Collectors.toMap(
|
|
|
InsuranceHandlingSettlementMonthDto::getIncomeSigningTime, // 用于生成Map的键
|
|
|
Function.identity(),// 值是Stream中的元素本身
|
|
|
// 如果两个元素有相同的key(即相同的taskId),则选择createTime更晚的那个
|
|
|
BinaryOperator.maxBy(Comparator.comparing(InsuranceHandlingSettlementMonthDto::getCreateTime))
|
|
|
));
|
|
|
+ for (InsuranceHandlingSettlementMonthDto item : invociAmount) {
|
|
|
+ if (item.getTotalAmount() != null && item.getTotalAmount().compareTo(BigDecimal.ZERO) < 0) {
|
|
|
+ String formattedDateString = formatDateMinusOneMonth(item.getIncomeSigningTime());
|
|
|
+ if (StringUtils.isNotEmpty(formattedDateString)) {
|
|
|
+ InsuranceHandlingSettlementMonthDto insuranceHandlingSettlementMonthDto = latestByTaskId.get(formattedDateString);
|
|
|
+ insuranceHandlingSettlementMonthDto.setTotalAmount(insuranceHandlingSettlementMonthDto.getTotalAmount().add(item.getTotalAmount()));
|
|
|
+ latestByTaskId.remove(item.getIncomeSigningTime());
|
|
|
+ latestByTaskId.put(formattedDateString, insuranceHandlingSettlementMonthDto);
|
|
|
|
|
|
- for (InsuranceHandlingSettlementMonthDto incomeItem : incomeList){
|
|
|
- String incomeSigningTime = incomeItem.getIncomeSigningTime();
|
|
|
- InsuranceHandlingSettlementMonthDto insuranceHandlingSettlementMonthDto = latestByTaskId.get(incomeSigningTime);
|
|
|
- if(ObjectUtils.isEmpty(insuranceHandlingSettlementMonthDto)){
|
|
|
- incomeItem.setRemainingAmount(incomeItem.getTotalAmount());
|
|
|
- incomeItem.setTotalAmount(incomeItem.getTotalAmount());
|
|
|
- }else {
|
|
|
- incomeItem.setRemainingAmount(insuranceHandlingSettlementMonthDto.getRemainingAmount());
|
|
|
- incomeItem.setTotalAmount(insuranceHandlingSettlementMonthDto.getTotalAmount());
|
|
|
- }
|
|
|
- incomeItem.setCreateTime(null);
|
|
|
-
|
|
|
- if( incomeItem.getSettlementAmount() ==null || incomeItem.getSettlementAmount().compareTo(BigDecimal.ZERO)==0){
|
|
|
- incomeItem.setSettlementAmount(new BigDecimal("0.00"));
|
|
|
-
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- }else {
|
|
|
- for (InsuranceHandlingSettlementMonthDto incomeItem : incomeList){
|
|
|
- incomeItem.setRemainingAmount(incomeItem.getTotalAmount());
|
|
|
+ List<InsuranceHandlingSettlementMonthDto> list = new ArrayList<>(latestByTaskId.values());
|
|
|
+ list.stream().forEach(item -> {
|
|
|
+ if (item.getRemainingAmount() == null || item.getRemainingAmount().compareTo(BigDecimal.ZERO) == 0) {
|
|
|
+ item.setRemainingAmount(item.getTotalAmount());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- if( incomeItem.getSettlementAmount() ==null || incomeItem.getSettlementAmount().compareTo(BigDecimal.ZERO)==0){
|
|
|
- incomeItem.setSettlementAmount(new BigDecimal("0.00"));
|
|
|
+ public static String formatDateMinusOneMonth(String originalDateString) {
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
|
|
|
+ try {
|
|
|
+ Date date = sdf.parse(originalDateString);
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
+ calendar.setTime(date);
|
|
|
+ calendar.add(Calendar.MONTH, -1); // 月份减一
|
|
|
|
|
|
- }
|
|
|
- }
|
|
|
+ // 注意:如果原始月份是1月,这里将变成12月,而不是0或1
|
|
|
+ // 如果你需要特别处理这种情况(比如保持为1月或循环到前一年的12月),你需要添加逻辑来检查
|
|
|
+
|
|
|
+ return sdf.format(calendar.getTime());
|
|
|
+ } catch (ParseException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return null; // 或者返回原始字符串,或者抛出一个自定义异常
|
|
|
}
|
|
|
- return incomeList;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -92,4 +105,10 @@ public class InsuranceHandlingSettlementMonthServiceImpl extends ServiceImpl<Ins
|
|
|
baseMapper.insert(insuranceHandlingSettlementMonthVo);
|
|
|
return HttpResult.ok("结算成功");
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<InsuranceHandlingSettlementMonthDto> getQueryLists(InsuranceHandlingSettlementMonthVo insuranceHandlingSettlementMonthVo) {
|
|
|
+ List<InsuranceHandlingSettlementMonthDto> resultList = baseMapper.queryList(insuranceHandlingSettlementMonthVo);
|
|
|
+ return resultList;
|
|
|
+ }
|
|
|
}
|