package com.ltkj.web.controller.system;
|
|
|
import cn.hutool.core.date.DateUtil;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.ltkj.common.core.domain.AjaxResult;
|
import com.ltkj.common.core.domain.entity.SysUser;
|
import com.ltkj.common.utils.SecurityUtils;
|
import com.ltkj.framework.config.UserHoder;
|
import com.ltkj.hosp.domain.*;
|
import com.ltkj.hosp.service.*;
|
import com.ltkj.hosp.vodomain.NewFlowingWaterVo;
|
import com.ltkj.mall.mallOrderUtils.TjConstants;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiParam;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.web.bind.annotation.*;
|
|
import javax.annotation.Resource;
|
import java.math.BigDecimal;
|
import java.text.SimpleDateFormat;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
/**
|
* @Company: 西安路泰科技有限公司
|
* @Author: zjh
|
* @Date: 2023/10/12 08:42
|
*/
|
|
|
@RestController
|
@RequestMapping("/hosp/new/water")
|
@Api(tags = "PC端 体检 新 登记收费功能接口")
|
public class TjNewFlowingWaterController {
|
@Resource
|
private ITjFlowingWaterService flowingWaterService;
|
@Resource
|
private ITjOrderService orderService;
|
@Resource
|
private ITjOrderDetailService detailService;
|
@Resource
|
private ITjTollCollectorService collectorService;
|
@Resource
|
private ITjTollCollectorDetailService collectorDetailService;
|
@Resource
|
private ITjCustomerService customerService;
|
@Resource
|
private ITjProjectService projectService;
|
@Resource
|
private ITjChargingStandardService chargingStandardService;
|
@Resource
|
private ITjOrderRemarkService remarkService;
|
|
|
|
@GetMapping("/getNewDate")
|
@ApiOperation(value = "获取服务器当前时间")
|
public AjaxResult getNewDate() {
|
|
Date date = DateUtil.parse(DateUtil.format(DateUtil.date(),"yyyy-MM-dd HH:mm:ss"),"yyyy-MM-dd HH:mm:ss");
|
return AjaxResult.success(date);
|
}
|
|
|
|
|
@GetMapping("/getFlowingWaterList")
|
@ApiOperation(value = "获取体检收费记录接口")
|
public AjaxResult getFlowingWaterList(@RequestParam(required = false) @ApiParam(value = "体检号") String phone,
|
@RequestParam(required = false) @ApiParam(value = "体检人姓名") String name,
|
@RequestParam(defaultValue = "1") @ApiParam(value = "收费1 退费2 4退费员页面") Long type) {
|
List<TjFlowingWater> waterList =null;
|
List<Long> collect =null;
|
TjCustomer one =null;
|
|
Date date=new Date();
|
LambdaQueryWrapper<TjFlowingWater> wq1 = new LambdaQueryWrapper<>();
|
if(null !=phone || null !=name){
|
LambdaQueryWrapper<TjCustomer> wq = new LambdaQueryWrapper<>();
|
if(null !=name){
|
wq.like(TjCustomer::getCusName,name);
|
}
|
if (null != phone) {
|
wq.eq(TjCustomer::getCusPhone, phone);
|
}
|
one = customerService.getOne(wq);
|
}
|
|
if (null != one) {
|
collect = orderService.getOrderList(one.getCusId()).stream().map(TjOrder::getOrderId).collect(Collectors.toList());
|
}
|
if(null !=collect){
|
wq1.in(TjFlowingWater::getOrderId, collect);
|
}
|
wq1.between(TjFlowingWater::getCreateTime,DateUtil.beginOfDay(date),DateUtil.endOfDay(date));
|
if(type==1){
|
wq1.eq(TjFlowingWater::getPayStasus,type);
|
wq1.eq(TjFlowingWater::getTollCollectorId, UserHoder.getLoginUser().getUserId());
|
}else if(type==4){
|
wq1.eq(TjFlowingWater::getPayStasus,1);
|
}else {
|
wq1.eq(TjFlowingWater::getPayStasus,type);
|
}
|
|
waterList = flowingWaterService.list(wq1);
|
|
if(null !=waterList && waterList.size()>0){
|
for (TjFlowingWater flowingWater : waterList) {
|
TjOrder order = orderService.getById(flowingWater.getOrderId());
|
if (null != order) {
|
if (null != customerService.getById(order.getUserId())) {
|
flowingWater.setCustomer(customerService.getById(order.getUserId()));
|
flowingWater.setTjNumber(order.getTjNumber());
|
flowingWater.setTjProName(flowingWaterService.getproNameByOrderId(order.getTjNumber()));
|
}
|
}
|
}
|
}
|
return AjaxResult.success(waterList);
|
}
|
|
|
|
|
@GetMapping("/getTjPrice")
|
@ApiOperation(value = "获取体检费用")
|
public AjaxResult getTjPrice() {
|
TjProject project = projectService.getOne(new LambdaQueryWrapper<TjProject>().eq(TjProject::getProName, "体检项目")
|
.eq(TjProject::getProId, 1712272744924446722L));
|
if (null != project) {
|
return AjaxResult.success(project.getProPrice());
|
}
|
return AjaxResult.error("没找到对应项目 请自定义费用");
|
}
|
|
|
/**
|
* 体检签到登记接口
|
*/
|
@PostMapping("/addOrderAndDetail")
|
@ApiOperation(value = "体检收费接口")
|
@Transactional
|
public AjaxResult addOrderAndDetail(@RequestBody NewFlowingWaterVo vo) {
|
SysUser user = SecurityUtils.getLoginUser().getUser();
|
|
// if (!MatchUtils.isMobileNO(vo.getPhone())) {
|
// return AjaxResult.error("手机号格式有误!");
|
// }
|
TjCustomer customer = new TjCustomer();
|
if(null !=vo.getPhone())customer.setCusPhone(vo.getPhone());
|
customer.setCusName(vo.getName());
|
customer.setCusBrithday(new Date());
|
customer.setCusSex(0L);
|
customerService.save(customer);
|
Date date=new Date();
|
TjOrder tjOrder = new TjOrder();
|
tjOrder.setUserId(customer.getCusId());
|
tjOrder.setTjType("2");
|
//生成体检号
|
String tjNumber = (SecurityUtils.getUsername() + new SimpleDateFormat("yyMMddHHmmss").format(date));
|
tjOrder.setTjNumber(tjNumber);
|
tjOrder.setFirmId("0");
|
tjOrder.setStatus(TjConstants.TJ_BEGIN);
|
tjOrder.setFinishTime(date);
|
tjOrder.setReportTime(date);
|
if (orderService.save(tjOrder)) {
|
|
LambdaQueryWrapper<TjFlowingWater> wq = new LambdaQueryWrapper<>();
|
wq.eq(TjFlowingWater::getOrderId,tjOrder.getOrderId());
|
wq.eq(TjFlowingWater::getPayStasus,1L);
|
if(null !=flowingWaterService.getOne(wq)){
|
return AjaxResult.error("该订单已缴费!");
|
}
|
|
TjOrderDetail detail = new TjOrderDetail();
|
detail.setOrderId(tjOrder.getOrderId());
|
if(null==vo.getTjPro()){
|
detail.setProId(1712272744924446722L);
|
}else {
|
detail.setProId(vo.getTjPro());
|
}
|
detail.setProId(vo.getTjPro());
|
detail.setProType("0");
|
detailService.save(detail);
|
|
remarkService.saveTjOrderRemarkByOrderId(tjOrder.getTjNumber(), user.getNickName(), String.valueOf(user.getUserId()), String.valueOf(tjOrder.getOrderId()));
|
|
TjFlowingWater tjFlowingWater = new TjFlowingWater();
|
tjFlowingWater.setOrderId(tjOrder.getOrderId());
|
tjFlowingWater.setPayType(Long.valueOf(vo.getType()));
|
tjFlowingWater.setCopeWith(vo.getYs());
|
tjFlowingWater.setPaidIn(vo.getSs());
|
tjFlowingWater.setDiscount(vo.getZk());
|
tjFlowingWater.setPayStasus(1L);
|
String s1 = SecurityUtils.getUsername() + new SimpleDateFormat("yyMMddHHmmssSSS").format(date);
|
tjFlowingWater.setWaterId(s1);
|
tjFlowingWater.setRemarks("已收费");
|
tjFlowingWater.setTollCollectorId(String.valueOf(SecurityUtils.getLoginUser().getUserId()));
|
if (flowingWaterService.save(tjFlowingWater)) {
|
tjOrder.setTjSerialNumber(String.valueOf(tjFlowingWater.getTjSerialNumber()));
|
orderService.updateById(tjOrder);
|
detail.setFlowingWaterId(tjFlowingWater.getWaterId());
|
detailService.updateById(detail);
|
TjChargingStandard tjChargingStandard = new TjChargingStandard();
|
tjChargingStandard.setTjNum(tjOrder.getTjNumber());
|
if(null==vo.getTjPro()){
|
tjChargingStandard.setProId(1712272744924446722L);
|
}else {
|
tjChargingStandard.setProId(vo.getTjPro());
|
}
|
tjChargingStandard.setProId(vo.getTjPro());
|
tjChargingStandard.setPrice(vo.getSs());
|
if(null==vo.getTjProName()){
|
tjChargingStandard.setProName("体检项目");
|
}else {
|
tjChargingStandard.setProName(vo.getTjProName());
|
}
|
tjChargingStandard.setCount(Long.valueOf(vo.getNumber()));
|
chargingStandardService.save(tjChargingStandard);
|
}
|
return AjaxResult.success(tjNumber);
|
}
|
return AjaxResult.error();
|
}
|
|
|
/**
|
* 体检退费接口
|
*/
|
@PostMapping("/tjRefund")
|
@ApiOperation(value = "体检退费按钮接口")
|
public AjaxResult tjRefund(@RequestBody @ApiParam(value = "流水对象") TjFlowingWater water) {
|
TjFlowingWater flowingWater = flowingWaterService.getOne(new LambdaQueryWrapper<TjFlowingWater>().eq(TjFlowingWater::getWaterId, water.getWaterId()));
|
|
LambdaQueryWrapper<TjFlowingWater> wq = new LambdaQueryWrapper<>();
|
wq.eq(TjFlowingWater::getOrderId,flowingWater.getOrderId());
|
wq.eq(TjFlowingWater::getPayStasus,2L);
|
if(null !=flowingWaterService.getOne(wq)){
|
return AjaxResult.error("该订单已退费 不可重复退费!");
|
}
|
TjFlowingWater tjFlowingWater=new TjFlowingWater();
|
tjFlowingWater.setOrderId(flowingWater.getOrderId());
|
tjFlowingWater.setWaterId(SecurityUtils.getUsername() + DateUtil.format(new Date(), "yyMMddHHmmssSSS"));
|
tjFlowingWater.setTollCollectorId(String.valueOf(SecurityUtils.getLoginUser().getUserId()));
|
tjFlowingWater.setRefundPersonId(String.valueOf(SecurityUtils.getLoginUser().getUserId()));
|
tjFlowingWater.setRefundTime(new Date());
|
tjFlowingWater.setRefundPrice(flowingWater.getPaidIn());
|
tjFlowingWater.setIsAddition("N");
|
tjFlowingWater.setPayStasus(2L);
|
tjFlowingWater.setPaidIn(BigDecimal.valueOf(0.00).subtract(tjFlowingWater.getRefundPrice()));
|
tjFlowingWater.setCopeWith(flowingWater.getCopeWith());
|
tjFlowingWater.setRemarks("已退费");
|
if (flowingWaterService.save(tjFlowingWater)) {
|
flowingWater.setRemarks("已退费");
|
flowingWaterService.updateById(flowingWater);
|
TjOrder order = orderService.getById(tjFlowingWater.getOrderId());
|
LambdaQueryWrapper<TjOrderDetail> wq1 = new LambdaQueryWrapper<>();
|
wq1.eq(TjOrderDetail::getOrderId, tjFlowingWater.getOrderId());
|
wq1.isNotNull(TjOrderDetail::getFlowingWaterId);
|
List<TjOrderDetail> list = detailService.list(wq1);
|
if (null != list && list.size() > 0) {
|
for (TjOrderDetail orderDetail : list) {
|
orderDetail.setFlowingWaterId(null);
|
detailService.updateById(orderDetail);
|
LambdaQueryWrapper<TjChargingStandard> wqq = new LambdaQueryWrapper<>();
|
wqq.eq(TjChargingStandard::getTjNum, order.getTjNumber());
|
wqq.eq(TjChargingStandard::getProId, orderDetail.getProId());
|
chargingStandardService.remove(wqq);
|
}
|
}
|
return AjaxResult.success("退费成功");
|
}
|
return AjaxResult.error();
|
}
|
}
|