dev
This commit is contained in:
parent
a809dc864d
commit
1cf9a204d1
4
pom.xml
4
pom.xml
|
|
@ -109,6 +109,10 @@
|
|||
<artifactId>commons-beanutils</artifactId>
|
||||
<version>1.9.4</version> <!-- 或者更高版本 -->
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-data-redis</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
|
|
|||
|
|
@ -9,10 +9,12 @@ import org.aspectj.lang.annotation.Aspect;
|
|||
import org.aspectj.lang.annotation.Pointcut;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.net.http.HttpResponse;
|
||||
|
||||
@Component // 将当前类交给spring管理
|
||||
@Aspect // 声明这是一个AOP类
|
||||
public class ControllerAspect {
|
||||
@Pointcut("execution(public * *(..)) && within(com.syjiaer.pharmacy.server.modules.*.controller.*+) && within(com.syjiaer.clinic.server.modules.base.controller.BaseController+)")
|
||||
@Pointcut("execution(public * *(..)) && within(com.syjiaer.clinic.server.controller.*+) && within(com.syjiaer.clinic.server.controller.BaseController+)")
|
||||
public void controllerPointcut() {
|
||||
}
|
||||
|
||||
|
|
@ -22,18 +24,17 @@ public class ControllerAspect {
|
|||
Object result = joinPoint.proceed();
|
||||
return result;
|
||||
} catch (MessageException e) {
|
||||
Result<Object> result = new Result<Object>();
|
||||
Result<Object> result = new Result<>();
|
||||
result.setMessage(e.getMessage());
|
||||
result.setData(null);
|
||||
result.setCode(101);
|
||||
return result;
|
||||
} catch (VerifyException e) {
|
||||
Result<Object> result = new Result<Object>();
|
||||
Result<Object> result = new Result<>();
|
||||
result.setMessage(e.getMessage());
|
||||
result.setData(null);
|
||||
result.setCode(301);
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
package com.syjiaer.clinic.server.common.config;
|
||||
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.data.redis.connection.RedisConnectionFactory;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
|
||||
import org.springframework.data.redis.serializer.StringRedisSerializer;
|
||||
|
||||
@Configuration
|
||||
public class RedisConfig {
|
||||
|
||||
|
||||
@Bean
|
||||
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
|
||||
RedisTemplate<String, Object> template = new RedisTemplate<>();
|
||||
template.setConnectionFactory(connectionFactory);
|
||||
template.setKeySerializer(new StringRedisSerializer());
|
||||
template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
|
||||
return template;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
package com.syjiaer.clinic.server.common.util;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@Component
|
||||
public class CacheUtil {
|
||||
@Autowired
|
||||
private RedisTemplate<String, Object> redisTemplate;
|
||||
|
||||
public void save(String key, Object value,Integer seconds) {
|
||||
redisTemplate.opsForValue().set(key, value,seconds, TimeUnit.SECONDS);
|
||||
}
|
||||
|
||||
public Object get(String key) {
|
||||
return redisTemplate.opsForValue().get(key);
|
||||
}
|
||||
|
||||
public void delete(String key) {
|
||||
redisTemplate.delete(key);
|
||||
}
|
||||
|
||||
public Boolean hasKey(String key) {
|
||||
return redisTemplate.hasKey(key);
|
||||
}
|
||||
}
|
||||
|
|
@ -4,16 +4,19 @@ import org.springframework.stereotype.Component;
|
|||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Random;
|
||||
import java.util.UUID;
|
||||
|
||||
@Component
|
||||
public class StringUtil {
|
||||
public String generateRandomId() {
|
||||
public static String generateRandomId() {
|
||||
return UUID.randomUUID().toString();
|
||||
}
|
||||
|
||||
public String getCode(String tag) {
|
||||
public static String getCode(String tag) {
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
Random random = new Random();
|
||||
int randomNumber = random.nextInt(1000) ;
|
||||
|
||||
// 定义日期时间格式
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS");
|
||||
|
|
@ -22,7 +25,7 @@ public class StringUtil {
|
|||
String formattedDateTime = now.format(formatter);
|
||||
|
||||
|
||||
String code = tag+formattedDateTime;
|
||||
String code = tag+formattedDateTime+randomNumber;
|
||||
return code;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,28 @@
|
|||
package com.syjiaer.clinic.server.controller.charge;
|
||||
|
||||
public class ChargeController {
|
||||
import com.syjiaer.clinic.server.common.exception.MessageException;
|
||||
import com.syjiaer.clinic.server.common.util.CacheUtil;
|
||||
import com.syjiaer.clinic.server.common.vo.Result;
|
||||
import com.syjiaer.clinic.server.controller.BaseController;
|
||||
import com.syjiaer.clinic.server.entity.charge.dto.ChargeQuery;
|
||||
import com.syjiaer.clinic.server.service.charge.ChargeService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/charge")
|
||||
public class ChargeController extends BaseController {
|
||||
@Autowired
|
||||
private ChargeService chargeService;
|
||||
@RequestMapping("/save")
|
||||
public Result<Object> save() {
|
||||
return success();
|
||||
}
|
||||
|
||||
@RequestMapping("/list")
|
||||
public Result<Object> list() {
|
||||
ChargeQuery chargeQuery = parmsUtil.getObject("query", ChargeQuery.class);
|
||||
return success(chargeService.pageList(chargeQuery));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,82 @@
|
|||
package com.syjiaer.clinic.server.entity.charge;
|
||||
|
||||
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.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
import lombok.experimental.Accessors;
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
* </p>
|
||||
*
|
||||
* @author NiuZiYuan
|
||||
* @since 2025-04-22
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
@Accessors(chain = true)
|
||||
@TableName("charge_goods_list")
|
||||
@ApiModel(value = "ChargeGoodsList对象", description = "")
|
||||
public class ChargeGoodsList implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("自增主键")
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Integer id;
|
||||
|
||||
@ApiModelProperty("外键")
|
||||
private String chargeOrderCode;
|
||||
|
||||
@ApiModelProperty("商品ID 冗余字段")
|
||||
private Integer goodsId;
|
||||
|
||||
@ApiModelProperty("原始单价")
|
||||
private BigDecimal preUnitPrice;
|
||||
|
||||
@ApiModelProperty("实际单价")
|
||||
private BigDecimal unitPrice;
|
||||
|
||||
@ApiModelProperty("销售数量")
|
||||
private Integer number;
|
||||
|
||||
@ApiModelProperty("小计价格")
|
||||
private BigDecimal subTotalPrice;
|
||||
|
||||
@ApiModelProperty("拆零标志 0否 1是")
|
||||
private Boolean trdnFlag;
|
||||
|
||||
@ApiModelProperty("追溯码")
|
||||
private String traceabilityCode;
|
||||
|
||||
@ApiModelProperty("单位")
|
||||
private String unit;
|
||||
|
||||
@ApiModelProperty("商品名称 冗余字段")
|
||||
private String goodsName;
|
||||
|
||||
@ApiModelProperty("流水号")
|
||||
private String feedetlSn;
|
||||
|
||||
@ApiModelProperty("创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@ApiModelProperty("商品类型")
|
||||
private Integer goodsType;
|
||||
|
||||
@ApiModelProperty("成本")
|
||||
private BigDecimal cost;
|
||||
|
||||
@ApiModelProperty("日期")
|
||||
private LocalDate createDate;
|
||||
}
|
||||
|
|
@ -0,0 +1,77 @@
|
|||
package com.syjiaer.clinic.server.entity.charge;
|
||||
|
||||
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.time.LocalDateTime;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
import lombok.experimental.Accessors;
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
* </p>
|
||||
*
|
||||
* @author NiuZiYuan
|
||||
* @since 2025-04-22
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
@Accessors(chain = true)
|
||||
@TableName("charge_inventory_log")
|
||||
@ApiModel(value = "ChargeInventoryLog对象", description = "")
|
||||
public class ChargeInventoryLog implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("自增主键")
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Integer id;
|
||||
|
||||
@ApiModelProperty("外键")
|
||||
private String chargeOrderCode;
|
||||
|
||||
@ApiModelProperty("商品ID 冗余字段")
|
||||
private Integer goodsId;
|
||||
|
||||
@ApiModelProperty("库存ID")
|
||||
private Integer inventoryId;
|
||||
|
||||
@ApiModelProperty("销售数量")
|
||||
private Integer number;
|
||||
|
||||
@ApiModelProperty("拆零标志 0否 1是")
|
||||
private Boolean trdnFlag;
|
||||
|
||||
@ApiModelProperty("单位")
|
||||
private String unit;
|
||||
|
||||
@ApiModelProperty("商品名称 冗余字段")
|
||||
private String goodsName;
|
||||
|
||||
@ApiModelProperty("流水号")
|
||||
private String feedetlSn;
|
||||
|
||||
@ApiModelProperty("创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@ApiModelProperty("商品类型")
|
||||
private Integer goodsType;
|
||||
|
||||
@ApiModelProperty("上报状态")
|
||||
private Integer uploadStatus;
|
||||
|
||||
@ApiModelProperty("上报消息")
|
||||
private String uploadMessage;
|
||||
|
||||
@ApiModelProperty("上报时间")
|
||||
private LocalDateTime uploadDatetime;
|
||||
|
||||
@ApiModelProperty("0未完成 1销售 2退货")
|
||||
private Integer type;
|
||||
}
|
||||
|
|
@ -0,0 +1,78 @@
|
|||
package com.syjiaer.clinic.server.entity.charge;
|
||||
|
||||
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-04-22
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
@Accessors(chain = true)
|
||||
@TableName("charge_log")
|
||||
@ApiModel(value = "ChargeLog对象", description = "")
|
||||
public class ChargeLog implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("id")
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Integer id;
|
||||
|
||||
@ApiModelProperty("顾客姓名")
|
||||
private String customer;
|
||||
|
||||
@ApiModelProperty("来源")
|
||||
private Integer source;
|
||||
|
||||
@ApiModelProperty("0退费 1收费")
|
||||
private Integer type;
|
||||
|
||||
@ApiModelProperty("原价")
|
||||
private BigDecimal originalPrice;
|
||||
|
||||
@ApiModelProperty("优惠金额")
|
||||
private BigDecimal discount;
|
||||
|
||||
@ApiModelProperty("应收")
|
||||
private BigDecimal receivable;
|
||||
|
||||
@ApiModelProperty("实收")
|
||||
private BigDecimal netReceipts;
|
||||
|
||||
@ApiModelProperty("支付方式")
|
||||
private Integer payType;
|
||||
|
||||
@ApiModelProperty("销售人")
|
||||
private String salePersonName;
|
||||
|
||||
@ApiModelProperty("销售人id")
|
||||
private Integer salePersonId;
|
||||
|
||||
@ApiModelProperty("医师id")
|
||||
private Integer dockerId;
|
||||
|
||||
@ApiModelProperty("医师名称")
|
||||
private String dockerName;
|
||||
|
||||
@ApiModelProperty("收费时间")
|
||||
private LocalDateTime chargeTime;
|
||||
|
||||
@ApiModelProperty("收费项目 code 零售单code或其他表code")
|
||||
private String projectCode;
|
||||
}
|
||||
|
|
@ -0,0 +1,75 @@
|
|||
package com.syjiaer.clinic.server.entity.charge;
|
||||
|
||||
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-04-22
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
@Accessors(chain = true)
|
||||
@TableName("charge_order")
|
||||
@ApiModel(value = "ChargeOrder对象", description = "")
|
||||
public class ChargeOrder implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("自增主键")
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Integer id;
|
||||
|
||||
@ApiModelProperty("业务主键")
|
||||
private String code;
|
||||
|
||||
@ApiModelProperty("管理员ID")
|
||||
private Integer managerUserId;
|
||||
|
||||
@ApiModelProperty("打折前总价")
|
||||
private BigDecimal preTotalPrice;
|
||||
|
||||
@ApiModelProperty("打折后总价")
|
||||
private BigDecimal totalPrice;
|
||||
|
||||
@ApiModelProperty("创建时间")
|
||||
private LocalDateTime createDatetime;
|
||||
|
||||
@ApiModelProperty("状态值 0未完成 1已完成 2已取消 3已退款")
|
||||
private Integer status;
|
||||
|
||||
@ApiModelProperty("1医保 2微信支付 3支付宝支付 4现金支付 5其他")
|
||||
private Integer payType;
|
||||
|
||||
@ApiModelProperty("支付时间")
|
||||
private LocalDateTime payTime;
|
||||
|
||||
@ApiModelProperty("患者id")
|
||||
private Integer patientId;
|
||||
|
||||
@ApiModelProperty("医保用户id")
|
||||
private Integer socialUserId;
|
||||
|
||||
@ApiModelProperty("销售人id")
|
||||
private Integer salePersonId;
|
||||
|
||||
@ApiModelProperty("病例id")
|
||||
private Integer medicalRecordId;
|
||||
|
||||
@ApiModelProperty("患者姓名")
|
||||
private String patientName;
|
||||
}
|
||||
|
|
@ -0,0 +1,73 @@
|
|||
package com.syjiaer.clinic.server.entity.charge;
|
||||
|
||||
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.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
import lombok.experimental.Accessors;
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
* </p>
|
||||
*
|
||||
* @author NiuZiYuan
|
||||
* @since 2025-04-22
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
@Accessors(chain = true)
|
||||
@TableName("charge_service_list")
|
||||
@ApiModel(value = "ChargeServiceList对象", description = "")
|
||||
public class ChargeServiceList implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("自增主键")
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Integer id;
|
||||
|
||||
@ApiModelProperty("外键")
|
||||
private String chargeOrderCode;
|
||||
|
||||
@ApiModelProperty("服务ID ")
|
||||
private Integer serviceId;
|
||||
|
||||
@ApiModelProperty("原始单价")
|
||||
private BigDecimal preUnitPrice;
|
||||
|
||||
@ApiModelProperty("实际单价")
|
||||
private BigDecimal unitPrice;
|
||||
|
||||
@ApiModelProperty("销售数量")
|
||||
private Integer number;
|
||||
|
||||
@ApiModelProperty("小计价格")
|
||||
private BigDecimal subTotalPrice;
|
||||
|
||||
@ApiModelProperty("单位")
|
||||
private String unit;
|
||||
|
||||
@ApiModelProperty("商品名称 冗余字段")
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty("流水号")
|
||||
private String feedetlSn;
|
||||
|
||||
@ApiModelProperty("创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@ApiModelProperty("成本")
|
||||
private BigDecimal cost;
|
||||
|
||||
@ApiModelProperty("日期")
|
||||
private LocalDate createDate;
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
package com.syjiaer.clinic.server.entity.charge.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
@Data
|
||||
public class ChargeQuery {
|
||||
private String patientName;
|
||||
private Integer pageNum;
|
||||
private Integer pageSize;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
package com.syjiaer.clinic.server.entity.charge.vo;
|
||||
|
||||
import com.syjiaer.clinic.server.entity.charge.ChargeGoodsList;
|
||||
import com.syjiaer.clinic.server.entity.charge.ChargeServiceList;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
@Data
|
||||
public class ChargeDetailVo {
|
||||
@ApiModelProperty("自增主键")
|
||||
private Integer id;
|
||||
|
||||
@ApiModelProperty("业务主键")
|
||||
private String code;
|
||||
|
||||
@ApiModelProperty("管理员ID")
|
||||
private Integer managerUserId;
|
||||
|
||||
@ApiModelProperty("打折前总价")
|
||||
private BigDecimal preTotalPrice;
|
||||
|
||||
@ApiModelProperty("打折后总价")
|
||||
private BigDecimal totalPrice;
|
||||
|
||||
@ApiModelProperty("创建时间")
|
||||
private LocalDateTime createDatetime;
|
||||
|
||||
@ApiModelProperty("状态值 0未完成 1已完成 2已取消 3已退款")
|
||||
private Integer status;
|
||||
|
||||
@ApiModelProperty("1医保 2微信支付 3支付宝支付 4现金支付 5其他")
|
||||
private Integer payType;
|
||||
|
||||
@ApiModelProperty("支付时间")
|
||||
private LocalDateTime payTime;
|
||||
|
||||
@ApiModelProperty("患者id")
|
||||
private Integer patientId;
|
||||
|
||||
@ApiModelProperty("医保用户id")
|
||||
private Integer socialUserId;
|
||||
|
||||
@ApiModelProperty("销售人id")
|
||||
private Integer salePersonId;
|
||||
|
||||
@ApiModelProperty("病例id")
|
||||
private Integer medicalRecordId;
|
||||
|
||||
@ApiModelProperty("患者姓名")
|
||||
private String patientName;
|
||||
|
||||
@ApiModelProperty("诊疗服务")
|
||||
private List<ChargeServiceList> serviceDetail;
|
||||
@ApiModelProperty("药品耗材")
|
||||
private List<ChargeGoodsList> goodsDetail;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
package com.syjiaer.clinic.server.mapper.charge;
|
||||
|
||||
import com.syjiaer.clinic.server.entity.charge.ChargeGoodsList;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author NiuZiYuan
|
||||
* @since 2025-04-22
|
||||
*/
|
||||
public interface ChargeGoodsListMapper extends BaseMapper<ChargeGoodsList> {
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
package com.syjiaer.clinic.server.mapper.charge;
|
||||
|
||||
import com.syjiaer.clinic.server.entity.charge.ChargeInventoryLog;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author NiuZiYuan
|
||||
* @since 2025-04-22
|
||||
*/
|
||||
public interface ChargeInventoryLogMapper extends BaseMapper<ChargeInventoryLog> {
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
package com.syjiaer.clinic.server.mapper.charge;
|
||||
|
||||
import com.syjiaer.clinic.server.entity.charge.ChargeLog;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author NiuZiYuan
|
||||
* @since 2025-04-22
|
||||
*/
|
||||
public interface ChargeLogMapper extends BaseMapper<ChargeLog> {
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
package com.syjiaer.clinic.server.mapper.charge;
|
||||
|
||||
import com.syjiaer.clinic.server.entity.charge.ChargeOrder;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author NiuZiYuan
|
||||
* @since 2025-04-22
|
||||
*/
|
||||
public interface ChargeOrderMapper extends BaseMapper<ChargeOrder> {
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
package com.syjiaer.clinic.server.mapper.charge;
|
||||
|
||||
import com.syjiaer.clinic.server.entity.charge.ChargeServiceList;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author NiuZiYuan
|
||||
* @since 2025-04-22
|
||||
*/
|
||||
public interface ChargeServiceListMapper extends BaseMapper<ChargeServiceList> {
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,156 @@
|
|||
package com.syjiaer.clinic.server.service.charge;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.syjiaer.clinic.server.common.constants.Constants;
|
||||
import com.syjiaer.clinic.server.common.enums.RetailOrderStatusEnum;
|
||||
import com.syjiaer.clinic.server.common.util.StringUtil;
|
||||
import com.syjiaer.clinic.server.common.vo.Page;
|
||||
import com.syjiaer.clinic.server.entity.charge.ChargeGoodsList;
|
||||
import com.syjiaer.clinic.server.entity.charge.ChargeOrder;
|
||||
import com.syjiaer.clinic.server.entity.charge.ChargeServiceList;
|
||||
import com.syjiaer.clinic.server.entity.charge.dto.ChargeQuery;
|
||||
import com.syjiaer.clinic.server.entity.charge.vo.ChargeDetailVo;
|
||||
import com.syjiaer.clinic.server.entity.goods.Goods;
|
||||
import com.syjiaer.clinic.server.entity.item.Item;
|
||||
import com.syjiaer.clinic.server.entity.manager.ManagerUser;
|
||||
import com.syjiaer.clinic.server.entity.medical.dto.GoodsRetailDto;
|
||||
import com.syjiaer.clinic.server.entity.medical.dto.MedicalRecordSaveDto;
|
||||
import com.syjiaer.clinic.server.mapper.charge.ChargeGoodsListMapper;
|
||||
import com.syjiaer.clinic.server.mapper.charge.ChargeOrderMapper;
|
||||
import com.syjiaer.clinic.server.mapper.charge.ChargeServiceListMapper;
|
||||
import com.syjiaer.clinic.server.mapper.goods.GoodsMapper;
|
||||
import com.syjiaer.clinic.server.service.BaseService;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class ChargeService extends BaseService {
|
||||
@Autowired
|
||||
private ChargeOrderMapper chargeOrderMapper;
|
||||
@Autowired
|
||||
private ChargeServiceListMapper chargeServiceListMapper;
|
||||
@Autowired
|
||||
private ChargeGoodsListMapper chargeGoodsListMapper;
|
||||
@Autowired
|
||||
private GoodsMapper goodsMapper;
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void save(MedicalRecordSaveDto medicalRecordSaveDto){
|
||||
ChargeOrder dbOrder = chargeOrderMapper.selectById(medicalRecordSaveDto.getId());
|
||||
if (dbOrder != null){
|
||||
//清除已有的订单
|
||||
chargeServiceListMapper.delete(new QueryWrapper<ChargeServiceList>().eq("charge_order_code", dbOrder.getCode()));
|
||||
chargeGoodsListMapper.delete(new QueryWrapper<ChargeGoodsList>().eq("charge_order_code", dbOrder.getCode()));
|
||||
chargeOrderMapper.deleteById(dbOrder.getId());
|
||||
}
|
||||
|
||||
ManagerUser user = getManagerUser();
|
||||
String code = StringUtil.getCode("CO");
|
||||
LocalDate nowLocalDate = LocalDate.now();
|
||||
LocalDateTime nowLocalDateTime = LocalDateTime.now();
|
||||
BigDecimal preTotalPrice = BigDecimal.ZERO;
|
||||
BigDecimal totalPrice = BigDecimal.ZERO;
|
||||
List<ChargeServiceList> chargeServiceLists = new ArrayList<>();
|
||||
for (Item item : medicalRecordSaveDto.getItemList()){
|
||||
ChargeServiceList itemList = new ChargeServiceList();
|
||||
String fsn = StringUtil.getCode("FSN");
|
||||
itemList.setChargeOrderCode(code);
|
||||
itemList.setServiceId(item.getId());
|
||||
|
||||
itemList.setPreUnitPrice(item.getUnitPrice());
|
||||
itemList.setUnitPrice(item.getUnitPrice());
|
||||
itemList.setNumber(1);
|
||||
BigDecimal subTotalPrice = item.getUnitPrice();
|
||||
itemList.setSubTotalPrice(item.getUnitPrice());
|
||||
itemList.setUnit(item.getUnit());
|
||||
itemList.setName(item.getItemName());
|
||||
itemList.setFeedetlSn(fsn);
|
||||
itemList.setCreateDate(nowLocalDate);
|
||||
itemList.setCreateTime(nowLocalDateTime);
|
||||
chargeServiceLists.add(itemList);
|
||||
preTotalPrice = preTotalPrice.add(item.getUnitPrice());
|
||||
totalPrice = totalPrice.add(item.getUnitPrice());
|
||||
}
|
||||
chargeServiceListMapper.insert(chargeServiceLists);
|
||||
|
||||
List<ChargeGoodsList> chargeGoodsLists = new ArrayList<>();
|
||||
for (GoodsRetailDto goodsRetailDto : medicalRecordSaveDto.getGoodsList()){
|
||||
ChargeGoodsList itemList = new ChargeGoodsList();
|
||||
Goods dbGoods = goodsMapper.selectById(goodsRetailDto.getId());
|
||||
if (dbGoods == null){
|
||||
throw new RuntimeException("商品不存在");
|
||||
}
|
||||
String fsn = StringUtil.getCode("FSN");
|
||||
itemList.setChargeOrderCode(code);
|
||||
itemList.setGoodsId(goodsRetailDto.getId());
|
||||
itemList.setPreUnitPrice(goodsRetailDto.getSelectedPrice());
|
||||
itemList.setUnitPrice(goodsRetailDto.getSelectedPrice());
|
||||
itemList.setNumber(goodsRetailDto.getSelectNum());
|
||||
BigDecimal subTotalPrice = goodsRetailDto.getSelectedPrice().multiply(BigDecimal.valueOf(goodsRetailDto.getSelectNum()));
|
||||
itemList.setSubTotalPrice(subTotalPrice);
|
||||
itemList.setTrdnFlag(true);
|
||||
if (dbGoods.getPackagingUnit().equals(goodsRetailDto.getSelectedUnit()) || dbGoods.getPackagingUnit().equals(dbGoods.getMinPackagingUnit())){
|
||||
itemList.setTrdnFlag(false);
|
||||
}
|
||||
itemList.setUnit(goodsRetailDto.getSelectedUnit());
|
||||
itemList.setGoodsName(dbGoods.getName());
|
||||
itemList.setFeedetlSn(fsn);
|
||||
itemList.setCreateDate(nowLocalDate);
|
||||
itemList.setCreateTime(nowLocalDateTime);
|
||||
chargeGoodsLists.add(itemList);
|
||||
preTotalPrice = preTotalPrice.add(subTotalPrice);
|
||||
totalPrice = totalPrice.add(subTotalPrice);
|
||||
}
|
||||
chargeGoodsListMapper.insert(chargeGoodsLists);
|
||||
ChargeOrder chargeOrder = new ChargeOrder();
|
||||
chargeOrder.setCode(code);
|
||||
chargeOrder.setManagerUserId(user.getId());
|
||||
chargeOrder.setPreTotalPrice(preTotalPrice);
|
||||
chargeOrder.setTotalPrice(totalPrice);
|
||||
chargeOrder.setCreateDatetime(nowLocalDateTime);
|
||||
chargeOrder.setStatus(RetailOrderStatusEnum.UNFINISHED.getCode());
|
||||
chargeOrder.setPatientId(medicalRecordSaveDto.getPatientId());
|
||||
chargeOrder.setSalePersonId(user.getId());
|
||||
chargeOrder.setMedicalRecordId(medicalRecordSaveDto.getId());
|
||||
chargeOrderMapper.insert(chargeOrder);
|
||||
|
||||
}
|
||||
|
||||
|
||||
public Page<ChargeDetailVo> pageList(ChargeQuery query) {
|
||||
QueryWrapper<ChargeOrder> queryWrapper = new QueryWrapper<>();
|
||||
if (query.getPageSize() == null || query.getPageSize() == 0){
|
||||
query.setPageSize(Constants.DetailPageSize);
|
||||
}
|
||||
if (query.getPageNum() == null || query.getPageNum() == 0){
|
||||
query.setPageNum(1);
|
||||
}
|
||||
if (query.getPatientName() != null){
|
||||
queryWrapper.like("patient_name",query.getPatientName());
|
||||
}
|
||||
Page<ChargeOrder> orderPage = pageHelper(query.getPageNum(), query.getPageSize(), queryWrapper, chargeOrderMapper, "create_datetime", false);
|
||||
List<ChargeDetailVo> voList = new ArrayList<>();
|
||||
for (ChargeOrder chargeOrder : orderPage.getList()){
|
||||
ChargeDetailVo detailVo = new ChargeDetailVo();
|
||||
BeanUtils.copyProperties(chargeOrder, detailVo);
|
||||
detailVo.setServiceDetail(chargeServiceListMapper.selectList(new QueryWrapper<ChargeServiceList>()
|
||||
.eq("charge_order_code", chargeOrder.getCode())));
|
||||
detailVo.setGoodsDetail(chargeGoodsListMapper.selectList(new QueryWrapper<ChargeGoodsList>()
|
||||
.eq("charge_order_code", chargeOrder.getCode())));
|
||||
voList.add(detailVo);
|
||||
}
|
||||
Page<ChargeDetailVo> resultPage = new Page<>();
|
||||
resultPage.setList(voList);
|
||||
resultPage.setTotal_page(orderPage.getTotal_page());
|
||||
resultPage.setTotal_count(orderPage.getTotal_count());
|
||||
return resultPage;
|
||||
}
|
||||
}
|
||||
|
|
@ -19,6 +19,7 @@ import com.syjiaer.clinic.server.mapper.medical.MedicalRecordDetailMapper;
|
|||
import com.syjiaer.clinic.server.mapper.medical.MedicalRecordMapper;
|
||||
import com.syjiaer.clinic.server.mapper.patient.PatientRegistrationMapper;
|
||||
import com.syjiaer.clinic.server.service.BaseService;
|
||||
import com.syjiaer.clinic.server.service.charge.ChargeService;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
|
@ -39,6 +40,8 @@ public class MedicalRecordService extends BaseService {
|
|||
private ItemMapper itemMapper;
|
||||
@Autowired
|
||||
private GoodsMapper goodsMapper;
|
||||
@Autowired
|
||||
private ChargeService chargeService;
|
||||
|
||||
/*
|
||||
* 保存
|
||||
|
|
@ -63,7 +66,7 @@ public class MedicalRecordService extends BaseService {
|
|||
BeanUtils.copyProperties(saveDto, medicalRecord);
|
||||
medicalRecord.setDockerId(managerUser.getId());
|
||||
medicalRecord.setDockerName(managerUser.getName());
|
||||
medicalRecordMapper.insert(medicalRecord);
|
||||
medicalRecordMapper.insertOrUpdate(medicalRecord);
|
||||
Integer medicalRecordId = medicalRecord.getId();
|
||||
List<MedicalRecordDetail> detailList = new ArrayList<>();
|
||||
|
||||
|
|
@ -94,7 +97,12 @@ public class MedicalRecordService extends BaseService {
|
|||
detailList.add(detail);
|
||||
}
|
||||
|
||||
medicalRecordDetailMapper.insert(detailList);
|
||||
medicalRecordDetailMapper.insertOrUpdate(detailList);
|
||||
|
||||
//添加收费单
|
||||
saveDto.setId(medicalRecordId);
|
||||
chargeService.save(saveDto);
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ public class OrganizationMemberService extends BaseService {
|
|||
if (tel != null && !tel.isEmpty()) {
|
||||
queryWrapper.eq("tel", tel);
|
||||
}
|
||||
queryWrapper.eq("del_flag", 0);
|
||||
queryWrapper.eq("del_flag", false);
|
||||
Page<OrganizationMember> pageResult = pageHelper(pageNum, pageSize, queryWrapper, organizationMemberMapper);
|
||||
return pageResult;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,10 @@
|
|||
spring:
|
||||
application:
|
||||
name: server
|
||||
data:
|
||||
redis:
|
||||
host: 127.0.0.1
|
||||
port: 6379
|
||||
datasource:
|
||||
driver-class-name: org.postgresql.Driver
|
||||
url: jdbc:postgresql://dev.jizhiweb.cn:15321/syjiaer_clinic
|
||||
|
|
|
|||
|
|
@ -1,3 +0,0 @@
|
|||
mybatis-plus:
|
||||
configuration:
|
||||
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
|
||||
|
|
@ -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.charge.ChargeGoodsListMapper">
|
||||
|
||||
</mapper>
|
||||
|
|
@ -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.charge.ChargeInventoryLogMapper">
|
||||
|
||||
</mapper>
|
||||
|
|
@ -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.charge.ChargeLogMapper">
|
||||
|
||||
</mapper>
|
||||
|
|
@ -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.charge.ChargeOrderListMapper">
|
||||
|
||||
</mapper>
|
||||
|
|
@ -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.charge.ChargeOrderMapper">
|
||||
|
||||
</mapper>
|
||||
|
|
@ -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.charge.ChargeServiceListMapper">
|
||||
|
||||
</mapper>
|
||||
Loading…
Reference in New Issue