This commit is contained in:
LiJianZhao 2025-05-19 16:42:57 +08:00
parent 865a9cf4c0
commit 4cc45714df
4 changed files with 56 additions and 34 deletions

View File

@ -1,5 +1,6 @@
package com.syjiaer.clinic.server.common.task;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.syjiaer.clinic.server.common.util.CacheUtil;
import com.syjiaer.clinic.server.common.util.DateUtil;
import com.syjiaer.clinic.server.entity.social.dto.ReconciliationItemDto;
@ -22,35 +23,11 @@ public class SocialReconciliationManager {
private SocialReconciliationService socialReconciliationService;
@Autowired
private CacheUtil cacheUtil;
@Scheduled(cron = "0 0 8 1/1 * ?")
@Scheduled(cron = "0 0 10,16 * * ? ")
public void everyDayReconciliation() {
LocalDate localDate = cacheUtil.get("social:reconciliation:lastEveryDayReconciliationTime", LocalDate.class);
System.out.println(localDate);
cacheUtil.set("social:reconciliation:lastEveryDayReconciliationTime", LocalDate.now().plusDays(-1));
List<LocalDate> dateList = DateUtil.getDatesBetween(localDate, LocalDate.now());
for (LocalDate date : dateList) {
LocalDateTime beginTime = date.atStartOfDay();
LocalDateTime endTime = date.atTime(23, 59, 59);
List<ReconciliationItemVo> list = socialReconciliationService.getList(beginTime,endTime);
for (ReconciliationItemVo vo : list){
ReconciliationItemDto dto = new ReconciliationItemDto();
dto.setReconciliationType(vo.getReconciliationType());
dto.setInsuranceType(vo.getInsuranceType());
dto.setHandlingInstitution(vo.getHandlingInstitution());
dto.setTotalMedicalCost(vo.getTotalMedicalCost());
dto.setTotalFundPayment(vo.getTotalFundPayment());
dto.setTotalPersonalAccountPayment(vo.getTotalPersonalAccountPayment());
dto.setSettlementCount(vo.getSettlementCount());
dto.setBeginTime(beginTime);
dto.setEndTime(endTime);
try {
socialReconciliationService.totalDo(dto);
}catch (Exception e){
log.error("对账失败",e);
}
//最后一次自动对账时间
socialReconciliationService.auto();
}
}
}
}

View File

@ -69,7 +69,7 @@ public class SocialReconciliationController extends BaseController {
@RequestMapping("/totalDo")
public Result<OM3201> totalDo(){
ReconciliationItemDto dto = parmsUtil.getObject("data", ReconciliationItemDto.class);
return success( socialReconciliationService.totalDo(dto));
return success( socialReconciliationService.totalDo(dto,false));
}
/**
* 明细对账

View File

@ -12,6 +12,7 @@ import com.syjiaer.clinic.server.common.config.Config;
import com.syjiaer.clinic.server.common.constants.Constants;
import com.syjiaer.clinic.server.common.enums.ChargeTypeEnum;
import com.syjiaer.clinic.server.common.exception.MessageException;
import com.syjiaer.clinic.server.common.util.DateUtil;
import com.syjiaer.clinic.server.common.util.FileUtil;
import com.syjiaer.clinic.server.common.util.HttpUtil;
import com.syjiaer.clinic.server.common.vo.Page;
@ -35,6 +36,7 @@ import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.*;
@ -128,7 +130,7 @@ public class SocialReconciliationService extends BaseService {
* @param dto
* @return
*/
public OM3201 totalDo(ReconciliationItemDto dto) {
public OM3201 totalDo(ReconciliationItemDto dto,Boolean isRecordLog) {
IM3201 im3201 = new IM3201();
IM3201.Data inData = new IM3201.Data();
inData.setInsutype(dto.getInsuranceType());
@ -142,7 +144,9 @@ public class SocialReconciliationService extends BaseService {
inData.setFixmedins_setl_cnt(new BigDecimal(dto.getSettlementCount()));
im3201.setData(inData);
OM3201 om3201 = socialRequest.call3201(im3201);
recordTotalReconciliationLog(dto, om3201);
if (isRecordLog){
recordTotalReconciliationLog(dto, om3201);
}
return om3201;
}
@ -328,4 +332,45 @@ public class SocialReconciliationService extends BaseService {
}
return pageHelper(query.getPageNum(), query.getPageSize(), queryWrapper, socialReconciliationLogMapper);
}
/**
* 自动对账
*/
public void auto() {
//最后一次自动对账的时间
QueryWrapper<SocialReconciliationLog> queryWrapper = new QueryWrapper<>();
queryWrapper.orderByDesc("create_time");
queryWrapper.last("limit 1");
LocalDate lastTime = LocalDate.now();
SocialReconciliationLog socialReconciliationLog = socialReconciliationLogMapper.selectOne(queryWrapper);
if (socialReconciliationLog != null){
lastTime = socialReconciliationLog.getCreateTime().toLocalDate();
}
List<LocalDate> dateList = DateUtil.getDatesBetween(lastTime, LocalDate.now());
for (LocalDate date : dateList) {
LocalDateTime beginTime = date.atStartOfDay();
LocalDateTime endTime = date.atTime(23, 59, 59);
List<ReconciliationItemVo> list = getList(beginTime,endTime);
for (ReconciliationItemVo vo : list){
System.out.println(vo.toString());
ReconciliationItemDto dto = new ReconciliationItemDto();
dto.setReconciliationType(vo.getReconciliationType());
dto.setInsuranceType(vo.getInsuranceType());
dto.setHandlingInstitution(vo.getHandlingInstitution());
dto.setTotalMedicalCost(vo.getTotalMedicalCost());
dto.setTotalFundPayment(vo.getTotalFundPayment());
dto.setTotalPersonalAccountPayment(vo.getTotalPersonalAccountPayment());
dto.setSettlementCount(vo.getSettlementCount());
dto.setBeginTime(beginTime);
dto.setEndTime(endTime);
try {
totalDo(dto,true);
}catch (Exception e){
log.error("对账失败",e);
}
//
}
}
}
}

View File

@ -10,10 +10,10 @@ spring:
host: dev.jizhiweb.cn
port: 6379
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://dev.jizhiweb.cn:3306/syjiaer_clinic
username: root
password: i7L0BS91pADGuy7z
driver-class-name: org.postgresql.Driver
url: jdbc:postgresql://dev.jizhiweb.cn:15321/syjiaer_clinic
username: postgres
password: i7L0BS91pADGuy7z
config:
import: optional:classpath:developer-config.yml
server: