From 267d035e6b17caad4f46f13965da7c20f5a6291c Mon Sep 17 00:00:00 2001 From: LiJianZhao Date: Mon, 19 May 2025 10:39:11 +0800 Subject: [PATCH] dev --- .../SocialReconciliationController.java | 13 +++- .../statistics/StatisticsController.java | 17 +++-- .../social/SocialReconciliationLog.java | 75 +++++++++++++++++++ .../social/dto/ReconciliationLogQuery.java | 16 ++++ .../mapper/inventory/InventoryMapper.java | 11 ++- .../social/SocialReconciliationLogMapper.java | 18 +++++ .../server/service/goods/GoodsService.java | 6 +- .../service/inventory/InventoryService.java | 15 +++- .../social/SocialReconciliationService.java | 62 ++++++++++++++- .../xml/SocialReconciliationLogMapper.xml | 5 ++ 10 files changed, 221 insertions(+), 17 deletions(-) create mode 100644 src/main/java/com/syjiaer/clinic/server/entity/social/SocialReconciliationLog.java create mode 100644 src/main/java/com/syjiaer/clinic/server/entity/social/dto/ReconciliationLogQuery.java create mode 100644 src/main/java/com/syjiaer/clinic/server/mapper/social/SocialReconciliationLogMapper.java create mode 100644 src/main/resources/xml/SocialReconciliationLogMapper.xml diff --git a/src/main/java/com/syjiaer/clinic/server/controller/social/SocialReconciliationController.java b/src/main/java/com/syjiaer/clinic/server/controller/social/SocialReconciliationController.java index f93bcf6..9de61a7 100644 --- a/src/main/java/com/syjiaer/clinic/server/controller/social/SocialReconciliationController.java +++ b/src/main/java/com/syjiaer/clinic/server/controller/social/SocialReconciliationController.java @@ -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> 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> testDetailDo(){ - return success(socialReconciliationService.testDetailDo()); } diff --git a/src/main/java/com/syjiaer/clinic/server/controller/statistics/StatisticsController.java b/src/main/java/com/syjiaer/clinic/server/controller/statistics/StatisticsController.java index d0b9638..194c58d 100644 --- a/src/main/java/com/syjiaer/clinic/server/controller/statistics/StatisticsController.java +++ b/src/main/java/com/syjiaer/clinic/server/controller/statistics/StatisticsController.java @@ -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> numberEarlyWarning() { + public Result> numberEarlyWarning() { + Integer pageNum = parmsUtil.getInteger("pageNum", "pageNum为空"); + Integer pageSize = parmsUtil.getInteger("pageSize", "pageSize为空"); QueryWrapper goodsQuery = new QueryWrapper<>(); goodsQuery.apply("inventory_whole_number <= inventory_warn_number"); goodsQuery.orderByAsc("inventory_whole_number","type"); - goodsQuery.last("limit 20"); - List list = goodsService.list(goodsQuery); - return success(list); + goodsQuery.last("limit 100"); + Page page = goodsService.page(goodsQuery, pageNum, pageSize); + return success(page); } @RequestMapping("expiryDateWarning") - public Result>> expiryDateWarning() { - List> maps = inventoryService.expiryDateWarning(); + public Result>> expiryDateWarning() { + Integer pageNum = parmsUtil.getInteger("pageNum", "pageNum为空"); + Integer pageSize = parmsUtil.getInteger("pageSize", "pageSize为空"); + Page> maps = inventoryService.expiryDateWarning(pageSize,pageNum); return success(maps); } diff --git a/src/main/java/com/syjiaer/clinic/server/entity/social/SocialReconciliationLog.java b/src/main/java/com/syjiaer/clinic/server/entity/social/SocialReconciliationLog.java new file mode 100644 index 0000000..e41f6f1 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/social/SocialReconciliationLog.java @@ -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; +/** + *

+ * + *

+ * + * @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; +} diff --git a/src/main/java/com/syjiaer/clinic/server/entity/social/dto/ReconciliationLogQuery.java b/src/main/java/com/syjiaer/clinic/server/entity/social/dto/ReconciliationLogQuery.java new file mode 100644 index 0000000..a0991c9 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/entity/social/dto/ReconciliationLogQuery.java @@ -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; +} diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryMapper.java index c59bde3..80f8dc7 100644 --- a/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryMapper.java +++ b/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryMapper.java @@ -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 { @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> 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> 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(); } diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/social/SocialReconciliationLogMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/social/SocialReconciliationLogMapper.java new file mode 100644 index 0000000..378450d --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/mapper/social/SocialReconciliationLogMapper.java @@ -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; + + +/** + *

+ * Mapper 接口 + *

+ * + * @author NiuZiYuan + * @since 2025-05-19 + */ +public interface SocialReconciliationLogMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/syjiaer/clinic/server/service/goods/GoodsService.java b/src/main/java/com/syjiaer/clinic/server/service/goods/GoodsService.java index 5ed6767..d52f21c 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/goods/GoodsService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/goods/GoodsService.java @@ -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 list(QueryWrapper goodsQuery) { return goodsMapper.selectList(goodsQuery); } + public Page page(QueryWrapper goodsQuery,Integer pageNum,Integer pageSize) { + return pageHelper(pageNum, pageSize, goodsQuery, goodsMapper); + } public void updateNumAddOne(List ids) { diff --git a/src/main/java/com/syjiaer/clinic/server/service/inventory/InventoryService.java b/src/main/java/com/syjiaer/clinic/server/service/inventory/InventoryService.java index 5c7b1dd..2687501 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/inventory/InventoryService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/inventory/InventoryService.java @@ -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> expiryDateWarning() { - List> maps = inventoryMapper.selectExpiryWarn(); - return maps; + public Page> 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> maps = inventoryMapper.selectExpiryWarn(limit, offset); + Page> page = new Page<>(); + page.setList(maps); + page.setTotal_page(totalPage); + page.setTotal_count(totalCount); + return page; } diff --git a/src/main/java/com/syjiaer/clinic/server/service/social/SocialReconciliationService.java b/src/main/java/com/syjiaer/clinic/server/service/social/SocialReconciliationService.java index fd781fd..d2e9045 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/social/SocialReconciliationService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/social/SocialReconciliationService.java @@ -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); + } /** @@ -141,7 +168,7 @@ public class SocialReconciliationService extends BaseService { FileWriter writer = new FileWriter(file); for (ChargeSocialPayLog log : logs) { String refd_setl_flag = "0"; - if (ChargeTypeEnum.REFUND.getChargeType().equals(log.getChargeType())){ + if (ChargeTypeEnum.REFUND.getChargeType().equals(log.getChargeType())) { refd_setl_flag = "1"; } QueryWrapper orderQuery = new QueryWrapper<>(); @@ -150,7 +177,7 @@ public class SocialReconciliationService extends BaseService { ChargeOrder dbOrder = chargeOrderMapper.selectOne(orderQuery); String line = log.getSetlId() + "\t" + log.getMdtrtId() + "\t" + log.getPsnNo() + "\t" + log.getMedfeeSumamt() + "\t" + log.getFundPaySumamt() + "\t" + log.getAcctPay() + "\t" - + refd_setl_flag+ "\n"; + + refd_setl_flag + "\n"; writer.write(line); } writer.flush(); @@ -246,4 +273,33 @@ public class SocialReconciliationService extends BaseService { public void reversal(IM2601 im2601) { socialRequest.call2601(im2601); } + + /** + * 分页查询对账记录 + * + * @param query + * @return + */ + public Page pageLogs(ReconciliationLogQuery query) { + if (query == null) { + query = new ReconciliationLogQuery(); + } + QueryWrapper 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); + } } diff --git a/src/main/resources/xml/SocialReconciliationLogMapper.xml b/src/main/resources/xml/SocialReconciliationLogMapper.xml new file mode 100644 index 0000000..347ad26 --- /dev/null +++ b/src/main/resources/xml/SocialReconciliationLogMapper.xml @@ -0,0 +1,5 @@ + + + + +