dev
This commit is contained in:
parent
054438085f
commit
267d035e6b
|
|
@ -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());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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> {
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
Loading…
Reference in New Issue