This commit is contained in:
LiJianZhao 2025-05-19 10:39:11 +08:00
parent 054438085f
commit 267d035e6b
10 changed files with 221 additions and 17 deletions

View File

@ -6,10 +6,13 @@ import com.syjiaer.clinic.server.common.api.input.IM2601;
import com.syjiaer.clinic.server.common.api.input.IM3201;
import com.syjiaer.clinic.server.common.api.output.OM3201;
import com.syjiaer.clinic.server.common.util.DateUtil;
import com.syjiaer.clinic.server.common.vo.Page;
import com.syjiaer.clinic.server.common.vo.Result;
import com.syjiaer.clinic.server.controller.BaseController;
import com.syjiaer.clinic.server.entity.charge.ChargeSocialPayLog;
import com.syjiaer.clinic.server.entity.social.SocialReconciliationLog;
import com.syjiaer.clinic.server.entity.social.dto.ReconciliationItemDto;
import com.syjiaer.clinic.server.entity.social.dto.ReconciliationLogQuery;
import com.syjiaer.clinic.server.entity.social.vo.ReconciliationDetailVo;
import com.syjiaer.clinic.server.entity.social.vo.ReconciliationItemVo;
import com.syjiaer.clinic.server.service.social.SocialReconciliationService;
@ -51,7 +54,14 @@ public class SocialReconciliationController extends BaseController {
return success( socialReconciliationService.getList(beginTime,endTime));
}
/**
* 对账历史记录
*/
@RequestMapping("/pageHistory")
public Result<Page<SocialReconciliationLog>> pageHistory(){
ReconciliationLogQuery query = parmsUtil.getObject("data", ReconciliationLogQuery.class);
return success(socialReconciliationService.pageLogs(query));
}
/**
* 对总账
*/
@ -78,7 +88,6 @@ public class SocialReconciliationController extends BaseController {
*/
@RequestMapping("/testDetailDo")
public Result<List<ReconciliationDetailVo>> testDetailDo(){
return success(socialReconciliationService.testDetailDo());
}

View File

@ -2,6 +2,7 @@ package com.syjiaer.clinic.server.controller.statistics;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.syjiaer.clinic.server.common.util.DateUtil;
import com.syjiaer.clinic.server.common.vo.Page;
import com.syjiaer.clinic.server.common.vo.Result;
import com.syjiaer.clinic.server.controller.BaseController;
import com.syjiaer.clinic.server.entity.goods.Goods;
@ -41,18 +42,22 @@ public class StatisticsController extends BaseController {
@RequestMapping("numberEarlyWarning")
public Result<List<Goods>> numberEarlyWarning() {
public Result<Page<Goods>> numberEarlyWarning() {
Integer pageNum = parmsUtil.getInteger("pageNum", "pageNum为空");
Integer pageSize = parmsUtil.getInteger("pageSize", "pageSize为空");
QueryWrapper<Goods> goodsQuery = new QueryWrapper<>();
goodsQuery.apply("inventory_whole_number <= inventory_warn_number");
goodsQuery.orderByAsc("inventory_whole_number","type");
goodsQuery.last("limit 20");
List<Goods> list = goodsService.list(goodsQuery);
return success(list);
goodsQuery.last("limit 100");
Page<Goods> page = goodsService.page(goodsQuery, pageNum, pageSize);
return success(page);
}
@RequestMapping("expiryDateWarning")
public Result<List<Map<String, Object>>> expiryDateWarning() {
List<Map<String, Object>> maps = inventoryService.expiryDateWarning();
public Result<Page<Map<String, Object>>> expiryDateWarning() {
Integer pageNum = parmsUtil.getInteger("pageNum", "pageNum为空");
Integer pageSize = parmsUtil.getInteger("pageSize", "pageSize为空");
Page<Map<String, Object>> maps = inventoryService.expiryDateWarning(pageSize,pageNum);
return success(maps);
}

View File

@ -0,0 +1,75 @@
package com.syjiaer.clinic.server.entity.social;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
/**
* <p>
*
* </p>
*
* @author NiuZiYuan
* @since 2025-05-19
*/
@Getter
@Setter
@ToString
@Accessors(chain = true)
@TableName("social_reconciliation_log")
@ApiModel(value = "SocialReconciliationLog对象", description = "")
public class SocialReconciliationLog implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("自增id")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty("清算类别")
private String reconciliationType;
@ApiModelProperty("险种类型")
private String insuranceType;
@ApiModelProperty("经办机构")
private String handlingInstitution;
@ApiModelProperty("医疗费总额")
private BigDecimal totalMedicalCost;
@ApiModelProperty("基金支付总额")
private BigDecimal totalFundPayment;
@ApiModelProperty("个人支付总额")
private BigDecimal totalPersonalAccountPayment;
@ApiModelProperty("结算笔数")
private Integer settlementCount;
@ApiModelProperty("对账结果")
private String reconciliationResult;
@ApiModelProperty("对账描述")
private String resultDesc;
@ApiModelProperty("开始时间")
private LocalDateTime beginTime;
@ApiModelProperty("结束时间")
private LocalDateTime endTime;
@ApiModelProperty("记录创建时间")
private LocalDateTime createTime;
@ApiModelProperty("对账返回结算经办机构")
private String resultOptins;
}

View File

@ -0,0 +1,16 @@
package com.syjiaer.clinic.server.entity.social.dto;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class ReconciliationLogQuery {
private Integer pageNum;
private Integer pageSize;
private LocalDateTime beginTime;
private LocalDateTime endTime;
private String reconciliationType;
private String insuranceType;
private String handlingInstitution;
}

View File

@ -1,7 +1,9 @@
package com.syjiaer.clinic.server.mapper.inventory;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.syjiaer.clinic.server.entity.inventory.Inventory;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@ -20,7 +22,12 @@ public interface InventoryMapper extends BaseMapper<Inventory> {
@Select("SELECT" +
" inventory.*,goods.expiry_warn_days,goods.unit_price,EXTRACT(EPOCH FROM AGE(expiry_date, CURRENT_DATE)) / 86400 AS remaining_days" +
" FROM inventory LEFT JOIN goods ON inventory.good_id = goods.id" +
" WHERE CURRENT_DATE + INTERVAL '1 day' * goods.expiry_warn_days >= inventory.expiry_date AND inventory.whole_number !=0 ORDER BY inventory.expiry_date ASC LIMIT 20 ")
List<Map<String, Object>> selectExpiryWarn();
" WHERE CURRENT_DATE + INTERVAL '1 day' * goods.expiry_warn_days >= inventory.expiry_date AND inventory.whole_number !=0 ORDER BY inventory.expiry_date ASC LIMIT #{limit} offset #{offset} ")
List<Map<String, Object>> selectExpiryWarn(@Param("limit") Integer limit, @Param("offset") Integer offset);
@Select("SELECT" +
"count(1)" +
" FROM inventory LEFT JOIN goods ON inventory.good_id = goods.id" +
" WHERE CURRENT_DATE + INTERVAL '1 day' * goods.expiry_warn_days >= inventory.expiry_date AND inventory.whole_number !=0")
Long countExpiryWarn();
}

View File

@ -0,0 +1,18 @@
package com.syjiaer.clinic.server.mapper.social;
import com.syjiaer.clinic.server.entity.social.SocialReconciliationLog;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* Mapper 接口
* </p>
*
* @author NiuZiYuan
* @since 2025-05-19
*/
public interface SocialReconciliationLogMapper extends BaseMapper<SocialReconciliationLog> {
}

View File

@ -26,6 +26,7 @@ import com.syjiaer.clinic.server.entity.social.vo.SocialDirectoryView;
import com.syjiaer.clinic.server.mapper.goods.GoodsMapper;
import com.syjiaer.clinic.server.mapper.inventory.InventoryMapper;
import com.syjiaer.clinic.server.mapper.social.SocialDirectoryUpinfoMapper;
import com.syjiaer.clinic.server.service.BaseService;
import com.syjiaer.clinic.server.service.social.SocialDirectoryService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -39,7 +40,7 @@ import java.util.Arrays;
import java.util.List;
@Service
public class GoodsService {
public class GoodsService extends BaseService {
@Autowired
private GoodsMapper goodsMapper;
@Autowired
@ -445,6 +446,9 @@ public class GoodsService {
public List<Goods> list(QueryWrapper<Goods> goodsQuery) {
return goodsMapper.selectList(goodsQuery);
}
public Page<Goods> page(QueryWrapper<Goods> goodsQuery,Integer pageNum,Integer pageSize) {
return pageHelper(pageNum, pageSize, goodsQuery, goodsMapper);
}
public void updateNumAddOne(List<Integer> ids) {

View File

@ -8,6 +8,7 @@ import com.syjiaer.clinic.server.common.enums.InventoryTypeEnum;
import com.syjiaer.clinic.server.common.enums.Type;
import com.syjiaer.clinic.server.common.enums.UploadStatusEnum;
import com.syjiaer.clinic.server.common.exception.MessageException;
import com.syjiaer.clinic.server.common.vo.Page;
import com.syjiaer.clinic.server.entity.goods.Goods;
import com.syjiaer.clinic.server.entity.inventory.Inventory;
import com.syjiaer.clinic.server.entity.inventory.InventoryLog;
@ -252,9 +253,17 @@ public class InventoryService extends BaseService {
* 查询即将过期的库存
* @return
*/
public List<Map<String, Object>> expiryDateWarning() {
List<Map<String, Object>> maps = inventoryMapper.selectExpiryWarn();
return maps;
public Page<Map<String, Object>> expiryDateWarning(Integer pageSize, Integer pageNum) {
Integer limit = pageSize;
Integer offset = (pageNum - 1) * pageSize;
Long totalCount = inventoryMapper.countExpiryWarn();
int totalPage= (int) (totalCount % pageSize == 0 ? totalCount / pageSize : totalCount / pageSize + 1);
List<Map<String, Object>> maps = inventoryMapper.selectExpiryWarn(limit, offset);
Page<Map<String, Object>> page = new Page<>();
page.setList(maps);
page.setTotal_page(totalPage);
page.setTotal_count(totalCount);
return page;
}

View File

@ -9,19 +9,25 @@ import com.syjiaer.clinic.server.common.api.output.OM3202;
import com.syjiaer.clinic.server.common.api.output.OM9101;
import com.syjiaer.clinic.server.common.api.request.SocialRequest;
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.FileUtil;
import com.syjiaer.clinic.server.common.util.HttpUtil;
import com.syjiaer.clinic.server.common.vo.Page;
import com.syjiaer.clinic.server.entity.charge.ChargeOrder;
import com.syjiaer.clinic.server.entity.charge.ChargeSocialPayLog;
import com.syjiaer.clinic.server.entity.social.SocialReconciliationLog;
import com.syjiaer.clinic.server.entity.social.dto.ReconciliationItemDto;
import com.syjiaer.clinic.server.entity.social.dto.ReconciliationLogQuery;
import com.syjiaer.clinic.server.entity.social.vo.ReconciliationDetailVo;
import com.syjiaer.clinic.server.entity.social.vo.ReconciliationItemVo;
import com.syjiaer.clinic.server.mapper.charge.ChargeOrderMapper;
import com.syjiaer.clinic.server.mapper.charge.ChargeSocialPayLogMapper;
import com.syjiaer.clinic.server.mapper.social.SocialReconciliationLogMapper;
import com.syjiaer.clinic.server.service.BaseService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -41,6 +47,8 @@ public class SocialReconciliationService extends BaseService {
@Autowired
private ChargeSocialPayLogMapper chargeSocialPayLogMapper;
@Autowired
private SocialReconciliationLogMapper socialReconciliationLogMapper;
@Autowired
private ChargeOrderMapper chargeOrderMapper;
@Autowired
private SocialRequest socialRequest;
@ -107,7 +115,26 @@ public class SocialReconciliationService extends BaseService {
inData.setAcct_pay(dto.getTotalPersonalAccountPayment());
inData.setFixmedins_setl_cnt(new BigDecimal(dto.getSettlementCount()));
im3201.setData(inData);
return socialRequest.call3201(im3201);
OM3201 om3201 = socialRequest.call3201(im3201);
recordTotalReconciliationLog(dto, om3201);
return om3201;
}
/**
* 记录对总账记录
*
* @param dto
* @param om3201
*/
public void recordTotalReconciliationLog(ReconciliationItemDto dto, OM3201 om3201) {
SocialReconciliationLog log = new SocialReconciliationLog();
BeanUtils.copyProperties(dto, log);
log.setReconciliationResult(om3201.getStmtinfo().getStmt_rslt());
log.setResultDesc(om3201.getStmtinfo().getStmt_rslt_dscr());
log.setResultOptins(om3201.getStmtinfo().getSetl_optins());
log.setCreateTime(LocalDateTime.now());
socialReconciliationLogMapper.insert(log);
}
/**
@ -246,4 +273,33 @@ public class SocialReconciliationService extends BaseService {
public void reversal(IM2601 im2601) {
socialRequest.call2601(im2601);
}
/**
* 分页查询对账记录
*
* @param query
* @return
*/
public Page<SocialReconciliationLog> pageLogs(ReconciliationLogQuery query) {
if (query == null) {
query = new ReconciliationLogQuery();
}
QueryWrapper<SocialReconciliationLog> queryWrapper = new QueryWrapper<>();
if (query.getPageNum() == null || query.getPageNum() <= 0) {
query.setPageNum(1);
}
if (query.getPageSize() == null || query.getPageSize() <= 0) {
query.setPageSize(Constants.DetailPageSize);
}
if (query.getReconciliationType() != null) {
queryWrapper.eq("reconciliation_type", query.getReconciliationType());
}
if (query.getInsuranceType() != null) {
queryWrapper.eq("insurance_type", query.getInsuranceType());
}
if (query.getHandlingInstitution() != null) {
queryWrapper.eq("handling_institution", query.getHandlingInstitution());
}
return pageHelper(query.getPageNum(), query.getPageSize(), queryWrapper, socialReconciliationLogMapper);
}
}

View File

@ -0,0 +1,5 @@
<?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="com.syjiaer.clinic.server.mapper.social.SocialReconciliationLogMapper">
</mapper>