JAVA全系列 教程
3762个小节阅读:7094.3k
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
xxxxxxxxxx
{
"orderBackfeeDto": {
"backAmount": 5,
"chId": "CH1463686948676829184",
"regId": "GH1463681727015813120",
"patientName": "唐太宗"
},
"orderBackfeeItemDtoList": [{
"itemId": "ITEM1463771832669831168",
"coId": "CO1463771831843553280",
"itemName": "血常规",
"itemPrice": 5,
"itemNum": 1,
"itemType": "1",
"itemAmount": 5
}]
}
返回JSON数据
名称 | 类型 | 其他信息 |
---|---|---|
code | int | |
msg | String | |
data | String |
创建OrderBackfeeFormDto、OrderBackfeeItemDto
xxxxxxxxxx
package com.bjsxt.dto;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotEmpty;
import java.util.List;
value="com-bjsxt-dto-OrderBackfeeFormDto") (
callSuper=true) (
public class OrderBackfeeFormDto extends BaseDto {
//主订单
private OrderBackfeeDto orderBackfeeDto;
//订单详情
message = "退费订单详情不能为空") (
private List<OrderBackfeeItemDto> orderBackfeeItemDtoList;
}
xxxxxxxxxx
package com.bjsxt.dto;
import ...
/**
* 退费订单详情表
*/
value="com-bjsxt-dto-OrderBackfeeItemDto") (
callSuper=true) (
public class OrderBackfeeItemDto extends BaseEntity {
/**
* 详情ID和his_care_order_*表里面的ID一样
*/
message = "详情ID不能为空") (
value="详情ID和his_care_order_*表里面的ID一样") (
private String itemId;
/**
* 处方ID【备用】
*/
message = "处方ID不能为空") (
value="处方ID【备用】") (
private String coId;
/**
* 项目名称
*/
message = "项目名称不能为空") (
value="项目名称") (
private String itemName;
/**
* 项目价格
*/
message = "项目价格不能为空") (
value="项目价格") (
private BigDecimal itemPrice;
/**
* 项目数量
*/
message = "项目数量不能为空") (
value="项目数量") (
private Long itemNum;
/**
* 小计
*/
message = "项目总金额不能为空") (
value="小计") (
private Long itemAmount;
/**
* 订单ID his_oder_backfee主键
*/
value="订单ID his_oder_backfee主键") (
private String backId;
/**
* 项目类型0药品 还是1检查项
*/
message = "项目类型不能为空") (
value="项目类型0药品 还是1检查项") (
private String itemType;
/**
* 状态,0未支付,1已支付,2,已退费 3,已完成 字典表 his_order_details_status
*/
value="状态,0未支付,1已支付,2,已退费 3,已完成 字典表 his_order_details_status") (
private String status;
}
创建OrderBackfeeMapper
xxxxxxxxxx
package com.bjsxt.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.bjsxt.domain.OrderBackfee;
public interface OrderBackfeeMapper extends BaseMapper<OrderBackfee> {
}
创建OrderBackfeeMapper.xml
xxxxxxxxxx
<mapper namespace="com.bjsxt.mapper.OrderBackfeeMapper">
<resultMap id="BaseResultMap" type="com.bjsxt.domain.OrderBackfee">
<!--@mbg.generated-->
<!--@Table his_order_backfee-->
<id column="back_id" jdbcType="VARCHAR" property="backId" />
<result column="back_amount" jdbcType="DECIMAL" property="backAmount" />
<result column="ch_id" jdbcType="VARCHAR" property="chId" />
<result column="reg_id" jdbcType="VARCHAR" property="regId" />
<result column="patient_name" jdbcType="VARCHAR" property="patientName" />
<result column="back_status" jdbcType="CHAR" property="backStatus" />
<result column="back_type" jdbcType="CHAR" property="backType" />
<result column="order_id" jdbcType="VARCHAR" property="orderId" />
<result column="back_platform_id" jdbcType="VARCHAR" property="backPlatformId" />
<result column="back_time" jdbcType="TIMESTAMP" property="backTime" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
<result column="create_by" jdbcType="VARCHAR" property="createBy" />
<result column="update_by" jdbcType="VARCHAR" property="updateBy" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
back_id, back_amount, ch_id, reg_id, patient_name, back_status, back_type, order_id,
back_platform_id, back_time, create_time, update_time, create_by, update_by
</sql>
</mapper>
在OrderChageService中增加查询
xxxxxxxxxx
public OrderChargeItem queryOrderChargeItemByItemId(String itemId) {
return this.orderChargeItemMapper.selectById(itemId);
}
创建OrderBackfeeService
xxxxxxxxxx
package com.bjsxt.service;
import com.bjsxt.domain.OrderBackfeeItem;
import com.bjsxt.dto.OrderBackfeeDto;
import com.bjsxt.dto.OrderBackfeeFormDto;
import com.bjsxt.vo.DataGridView;
import java.util.List;
/**
*
* 退费接口
*/
public interface OrderBackfeeService {
/**
* 保存退费单
* @param orderBackfeeFormDto
*/
void saveOrderAndItems(OrderBackfeeFormDto orderBackfeeFormDto);
/**
* 退费成功之后更改状态
* @param backId
* @param backPlatformId
* @param backType 退费类型
*/
void backSuccess(String backId, String backPlatformId, String backType);
}
创建OrderBackfeeServiceImpl
xxxxxxxxxx
package com.bjsxt.service.impl;
import ...
/**
*
* 退费接口实现类
*/
methods = { (name = "saveOrderAndItems",retries = 1), (
name = "backSuccess",retries = 1)}) (
public class OrderBackfeeServiceImpl implements OrderBackfeeService {
private OrderBackfeeMapper orderBackfeeMapper;
private OrderBackfeeItemMapper orderBackfeeItemMapper;
private OrderChargeMapper orderChargeMapper;
private OrderChargeItemMapper orderChargeItemMapper;
private CareOrderItemMapper careOrderItemMapper;
public void saveOrderAndItems(OrderBackfeeFormDto orderBackfeeFormDto) {
OrderBackfeeDto orderBackfeeDto = orderBackfeeFormDto.getOrderBackfeeDto();
List<OrderBackfeeItemDto> orderBackfeeItemDtoList = orderBackfeeFormDto.getOrderBackfeeItemDtoList();
OrderBackfee orderBackfee=new OrderBackfee();
BeanUtil.copyProperties(orderBackfeeDto,orderBackfee);
orderBackfee.setBackStatus(Constants.ORDER_STATUS_0);
orderBackfee.setCreateTime(DateUtil.date());
orderBackfee.setCreateBy(orderBackfeeFormDto.getSimpleUser().getUserName());
int i=this.orderBackfeeMapper.insert(orderBackfee);
//保存详情
for (OrderBackfeeItemDto orderBackfeeItemDto : orderBackfeeItemDtoList) {
OrderBackfeeItem orderBackfeeItem=new OrderBackfeeItem();
BeanUtil.copyProperties(orderBackfeeItemDto,orderBackfeeItem);
//订单关联退费订单ID
orderBackfeeItem.setBackId(orderBackfeeDto.getBackId());
orderBackfeeItem.setStatus(Constants.ORDER_DETAILS_STATUS_0);
this.orderBackfeeItemMapper.insert(orderBackfeeItem);
}
}
public void backSuccess(String backId, String backPlatformId, String backType) {
//根据退费订单ID查询退费订单
OrderBackfee orderBackfee = this.orderBackfeeMapper.selectById(backId);
//设置平台交易编号
orderBackfee.setBackPlatformId(backPlatformId);
//设置退费类型
orderBackfee.setBackType(backType);
//设置退费时间
orderBackfee.setBackTime(DateUtil.date());
//修改订单状态
orderBackfee.setBackStatus(Constants.ORDER_BACKFEE_STATUS_1);//已退费
//更新订单状态
this.orderBackfeeMapper.updateById(orderBackfee);
//根据退费订单号查询退费订单详情
QueryWrapper<OrderBackfeeItem> qw=new QueryWrapper<>();
qw.eq(OrderBackfeeItem.COL_BACK_ID,backId);
List<OrderBackfeeItem> orderBackfeeItems = this.orderBackfeeItemMapper.selectList(qw);
List<String> allItemIds=new ArrayList<>();
for (OrderBackfeeItem orderBackfeeItem : orderBackfeeItems) {
allItemIds.add(orderBackfeeItem.getItemId());
}
//更新退费单的详情状态
OrderBackfeeItem orderBackItemObj=new OrderBackfeeItem();
orderBackItemObj.setStatus(Constants.ORDER_DETAILS_STATUS_2);//已退费
QueryWrapper<OrderBackfeeItem> orderBackItemQw=new QueryWrapper<>();
orderBackItemQw.in(OrderBackfeeItem.COL_ITEM_ID,allItemIds);
this.orderBackfeeItemMapper.update(orderBackItemObj,orderBackItemQw);
//更新收费详情的状态
OrderChargeItem orderItemObj=new OrderChargeItem();
orderItemObj.setStatus(Constants.ORDER_DETAILS_STATUS_2);//已退费
QueryWrapper<OrderChargeItem> orderItemQw=new QueryWrapper<>();
orderItemQw.in(OrderChargeItem.COL_ITEM_ID,allItemIds);
this.orderChargeItemMapper.update(orderItemObj,orderItemQw);
//更新处方详情的状态
CareOrderItem careItemObj=new CareOrderItem();
careItemObj.setStatus(Constants.ORDER_DETAILS_STATUS_2);//已退费
QueryWrapper<CareOrderItem> careItemQw=new QueryWrapper<>();
careItemQw.in(CareOrderItem.COL_ITEM_ID,allItemIds);
this.careOrderItemMapper.update(careItemObj,careItemQw);
}
}
创建OrderBackfeeController,增加创建退费单方法(现金)
xxxxxxxxxx
/**
* 创建现金退费订单
*/
"createOrderBackfeeWithCash") (
public AjaxResult createOrderBackfeeWithCash( OrderBackfeeFormDto orderBackfeeFormDto){
//保存订单
orderBackfeeFormDto.getOrderBackfeeDto().setBackType(Constants.PAY_TYPE_0);
orderBackfeeFormDto.setSimpleUser(ShiroSecurityUtils.getCurrentSimpleUser());
//生成退费单号
String backId= IdGeneratorSnowflake.generatorIdWithProfix(Constants.ID_PROFIX_ODB);
orderBackfeeFormDto.getOrderBackfeeDto().setBackId(backId);
//找到当前退费单之前的收费单的ID
String itemId = orderBackfeeFormDto.getOrderBackfeeItemDtoList().get(0).getItemId();
OrderChargeItem orderChargeItem=this.orderChargeService.queryOrderChargeItemByItemId(itemId);
orderBackfeeFormDto.getOrderBackfeeDto().setOrderId(orderChargeItem.getOrderId());
this.orderBackfeeService.saveOrderAndItems(orderBackfeeFormDto);
//因为是现金退费,所以直接更新详情状态
this.orderBackfeeService.backSuccess(backId,null,Constants.PAY_TYPE_0);
return AjaxResult.success("创建现在退费订单成功");
}
创建现金退费订单/doctor/backfee/createOrderBackfeeWithCash