This commit is contained in:
LiJianZhao 2025-04-22 16:52:24 +08:00
parent a809dc864d
commit 1cf9a204d1
29 changed files with 840 additions and 15 deletions

View File

@ -109,6 +109,10 @@
<artifactId>commons-beanutils</artifactId> <artifactId>commons-beanutils</artifactId>
<version>1.9.4</version> <!-- 或者更高版本 --> <version>1.9.4</version> <!-- 或者更高版本 -->
</dependency> </dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
</dependencies> </dependencies>
<build> <build>

View File

@ -9,10 +9,12 @@ import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.net.http.HttpResponse;
@Component // 将当前类交给spring管理 @Component // 将当前类交给spring管理
@Aspect // 声明这是一个AOP类 @Aspect // 声明这是一个AOP类
public class ControllerAspect { 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() { public void controllerPointcut() {
} }
@ -22,18 +24,17 @@ public class ControllerAspect {
Object result = joinPoint.proceed(); Object result = joinPoint.proceed();
return result; return result;
} catch (MessageException e) { } catch (MessageException e) {
Result<Object> result = new Result<Object>(); Result<Object> result = new Result<>();
result.setMessage(e.getMessage()); result.setMessage(e.getMessage());
result.setData(null); result.setData(null);
result.setCode(101); result.setCode(101);
return result; return result;
} catch (VerifyException e) { } catch (VerifyException e) {
Result<Object> result = new Result<Object>(); Result<Object> result = new Result<>();
result.setMessage(e.getMessage()); result.setMessage(e.getMessage());
result.setData(null); result.setData(null);
result.setCode(301); result.setCode(301);
return result; return result;
} }
} }
} }

View File

@ -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;
}
}

View File

@ -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);
}
}

View File

@ -4,16 +4,19 @@ import org.springframework.stereotype.Component;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.Random;
import java.util.UUID; import java.util.UUID;
@Component @Component
public class StringUtil { public class StringUtil {
public String generateRandomId() { public static String generateRandomId() {
return UUID.randomUUID().toString(); return UUID.randomUUID().toString();
} }
public String getCode(String tag) { public static String getCode(String tag) {
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
Random random = new Random();
int randomNumber = random.nextInt(1000) ;
// 定义日期时间格式 // 定义日期时间格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS");
@ -22,7 +25,7 @@ public class StringUtil {
String formattedDateTime = now.format(formatter); String formattedDateTime = now.format(formatter);
String code = tag+formattedDateTime; String code = tag+formattedDateTime+randomNumber;
return code; return code;
} }
} }

View File

@ -1,4 +1,28 @@
package com.syjiaer.clinic.server.controller.charge; 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));
}
} }

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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> {
}

View File

@ -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> {
}

View File

@ -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> {
}

View File

@ -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> {
}

View File

@ -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> {
}

View File

@ -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;
}
}

View File

@ -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.medical.MedicalRecordMapper;
import com.syjiaer.clinic.server.mapper.patient.PatientRegistrationMapper; import com.syjiaer.clinic.server.mapper.patient.PatientRegistrationMapper;
import com.syjiaer.clinic.server.service.BaseService; import com.syjiaer.clinic.server.service.BaseService;
import com.syjiaer.clinic.server.service.charge.ChargeService;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -39,6 +40,8 @@ public class MedicalRecordService extends BaseService {
private ItemMapper itemMapper; private ItemMapper itemMapper;
@Autowired @Autowired
private GoodsMapper goodsMapper; private GoodsMapper goodsMapper;
@Autowired
private ChargeService chargeService;
/* /*
* 保存 * 保存
@ -63,7 +66,7 @@ public class MedicalRecordService extends BaseService {
BeanUtils.copyProperties(saveDto, medicalRecord); BeanUtils.copyProperties(saveDto, medicalRecord);
medicalRecord.setDockerId(managerUser.getId()); medicalRecord.setDockerId(managerUser.getId());
medicalRecord.setDockerName(managerUser.getName()); medicalRecord.setDockerName(managerUser.getName());
medicalRecordMapper.insert(medicalRecord); medicalRecordMapper.insertOrUpdate(medicalRecord);
Integer medicalRecordId = medicalRecord.getId(); Integer medicalRecordId = medicalRecord.getId();
List<MedicalRecordDetail> detailList = new ArrayList<>(); List<MedicalRecordDetail> detailList = new ArrayList<>();
@ -94,7 +97,12 @@ public class MedicalRecordService extends BaseService {
detailList.add(detail); detailList.add(detail);
} }
medicalRecordDetailMapper.insert(detailList); medicalRecordDetailMapper.insertOrUpdate(detailList);
//添加收费单
saveDto.setId(medicalRecordId);
chargeService.save(saveDto);

View File

@ -38,7 +38,7 @@ public class OrganizationMemberService extends BaseService {
if (tel != null && !tel.isEmpty()) { if (tel != null && !tel.isEmpty()) {
queryWrapper.eq("tel", tel); queryWrapper.eq("tel", tel);
} }
queryWrapper.eq("del_flag", 0); queryWrapper.eq("del_flag", false);
Page<OrganizationMember> pageResult = pageHelper(pageNum, pageSize, queryWrapper, organizationMemberMapper); Page<OrganizationMember> pageResult = pageHelper(pageNum, pageSize, queryWrapper, organizationMemberMapper);
return pageResult; return pageResult;
} }

View File

@ -1,6 +1,10 @@
spring: spring:
application: application:
name: server name: server
data:
redis:
host: 127.0.0.1
port: 6379
datasource: datasource:
driver-class-name: org.postgresql.Driver driver-class-name: org.postgresql.Driver
url: jdbc:postgresql://dev.jizhiweb.cn:15321/syjiaer_clinic url: jdbc:postgresql://dev.jizhiweb.cn:15321/syjiaer_clinic

View File

@ -1,3 +0,0 @@
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

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.charge.ChargeGoodsListMapper">
</mapper>

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.charge.ChargeInventoryLogMapper">
</mapper>

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.charge.ChargeLogMapper">
</mapper>

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.charge.ChargeOrderListMapper">
</mapper>

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.charge.ChargeOrderMapper">
</mapper>

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.charge.ChargeServiceListMapper">
</mapper>