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("/getNewDateList") @ApiOperation(value = "获取服务器当时间段") public AjaxResult getNewDateList() { Date date = DateUtil.parse(DateUtil.format(DateUtil.date(),"yyyy-MM-dd"),"yyyy-MM-dd"); 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 waterList =null; List collect =null; TjCustomer one =null; Date date=new Date(); LambdaQueryWrapper wq1 = new LambdaQueryWrapper<>(); if(null !=phone || null !=name){ LambdaQueryWrapper 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().eq(TjProject::getProName, "体检项目") .eq(TjProject::getProId, 1712272744924446722L)); if (null != project) { return AjaxResult.success(project.getProPrice()); } return AjaxResult.success("没找到对应项目 请自定义费用"); } /** * 体检签到登记接口 */ @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 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.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().eq(TjFlowingWater::getWaterId, water.getWaterId())); LambdaQueryWrapper 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("已退费"); tjFlowingWater.setPayType(flowingWater.getPayType()); if (flowingWaterService.save(tjFlowingWater)) { flowingWater.setRemarks("已退费"); flowingWaterService.updateById(flowingWater); TjOrder order = orderService.getById(tjFlowingWater.getOrderId()); LambdaQueryWrapper wq1 = new LambdaQueryWrapper<>(); wq1.eq(TjOrderDetail::getOrderId, tjFlowingWater.getOrderId()); wq1.isNotNull(TjOrderDetail::getFlowingWaterId); List list = detailService.list(wq1); if (null != list && list.size() > 0) { for (TjOrderDetail orderDetail : list) { orderDetail.setFlowingWaterId(null); detailService.updateById(orderDetail); LambdaQueryWrapper wqq = new LambdaQueryWrapper<>(); wqq.eq(TjChargingStandard::getTjNum, order.getTjNumber()); wqq.eq(TjChargingStandard::getProId, orderDetail.getProId()); chargingStandardService.remove(wqq); } } return AjaxResult.success("退费成功"); } return AjaxResult.error(); } }