package com.ltkj.web.controller.system; import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ltkj.common.core.domain.entity.SysUser; import com.ltkj.common.utils.SecurityUtils; import com.ltkj.framework.config.MatchUtils; import com.ltkj.hosp.domain.*; import com.ltkj.hosp.service.*; import com.ltkj.hosp.vodomain.TjCollectFeesVo; import com.ltkj.hosp.vodomain.TjRefundProInfoVo; import com.ltkj.hosp.vodomain.TjRefundVo; import com.ltkj.system.service.ISysUserService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import com.ltkj.common.annotation.Log; import com.ltkj.common.core.controller.BaseController; import com.ltkj.common.core.domain.AjaxResult; import com.ltkj.common.enums.BusinessType; import com.ltkj.common.utils.poi.ExcelUtil; import com.ltkj.common.core.page.TableDataInfo; /** * 体检流水Controller * * @author ltkj * @date 2022-11-25 */ @RestController @RequestMapping("/hosp/water") @Api(tags = "体检流水接口") public class TjFlowingWaterController extends BaseController { @Resource private ITjFlowingWaterService tjFlowingWaterService; @Resource private ITjOrderService orderService; @Resource private ITjOrderDetailService detailService; @Resource private ITjChargingStandardService chargingStandardService; @Resource private ISysUserService userService; @Resource private ITjCustomerService customerService; @Resource private ITbTransitionService transitionService; @Resource private ITjProjectService projectService; @Resource private IDictCompService compService; @Resource private TjProConsumablesService proConsumablesService; @Resource private ITjConsumablesService consumablesService; @Resource private ITjOrderRemarkService remarkService; @Resource private TjAsyncService asyncService; @Resource private IJimuOnlineReportService reportService; /** * 查询该体检号对应的订单流水列表 */ @GetMapping("/flowingWaterByTjNumber/{TjNumber}") @ApiOperation(value = "查询该体检号对应的订单流水列表") public AjaxResult FlowingWaterByTjNumber(@ApiParam(value = "体检号") @PathVariable("TjNumber") String TjNumber) { Map map = new HashMap<>(); LambdaQueryWrapper wq1 = new LambdaQueryWrapper<>(); wq1.eq(TjOrder::getTjNumber, TjNumber); TjOrder one = orderService.getOne(wq1); if (one != null) { LambdaQueryWrapper wq2 = new LambdaQueryWrapper<>(); wq2.eq(TjFlowingWater::getOrderId, one.getOrderId()); List list = tjFlowingWaterService.list(wq2); map.put("water", list); } LambdaQueryWrapper wq3 = new LambdaQueryWrapper<>(); wq3.eq(TjChargingStandard::getTjNum,TjNumber); List list = chargingStandardService.list(wq3); if (null !=list && list.size()>0){ for (TjChargingStandard standard : list) { TjProject project = projectService.getById(standard.getProId()); if (null !=project && null!=project.getProCheckType()) { standard.setProCheckType(project.getProCheckType()); } } } map.put("charging", list); return AjaxResult.success(map); } /** * 查询体检流水列表 */ @PreAuthorize("@ss.hasPermi('hosp:water:list')") @GetMapping("/list") @ApiOperation(value = "查询体检流水列表") public TableDataInfo list(TjFlowingWater tjFlowingWater) { startPage(); List list = tjFlowingWaterService.selectTjFlowingWaterList(tjFlowingWater); if (null != list) { for (TjFlowingWater flowingWater : list) { if (null != userService.getById(flowingWater.getTollCollectorId())) { flowingWater.setTollCollectorName(userService.getById(flowingWater.getTollCollectorId()).getNickName()); } TjOrder order = orderService.getById(flowingWater.getOrderId()); if (null != order) { if (null != customerService.getById(order.getUserId())) { flowingWater.setCustomer(customerService.getById(order.getUserId())); } } flowingWater.setDiscount(flowingWater.getDiscount() + "%"); } } return getDataTable(list); } /** * 查询体检退费列表 */ @GetMapping("/getRefundList") @ApiOperation(value = "查询体检退费列表") public AjaxResult getRefundList() { LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.eq(TjFlowingWater::getPayStasus, 2); List list = tjFlowingWaterService.list(wq); if (null != list) { Map map = new HashMap<>(); BigDecimal bigDecimal = new BigDecimal("0.00"); for (TjFlowingWater flowingWater : list) { if (null != userService.getById(flowingWater.getTollCollectorId())) { flowingWater.setTollCollectorName(userService.getById(flowingWater.getTollCollectorId()).getNickName()); } TjOrder order = orderService.getById(flowingWater.getOrderId()); if (null != order) { if (null != customerService.getById(order.getUserId())) { flowingWater.setCustomer(customerService.getById(order.getUserId())); } } flowingWater.setDiscount(flowingWater.getDiscount() + "%"); bigDecimal = bigDecimal.add(flowingWater.getPaidIn()); } map.put("list", list); map.put("amountTo", bigDecimal); return AjaxResult.success(map); } return AjaxResult.success(list); } /** * 导出体检流水列表 */ //@PreAuthorize("@ss.hasPermi('hosp:water:export')") @Log(title = "体检流水", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, TjFlowingWater tjFlowingWater) { List list = tjFlowingWaterService.selectTjFlowingWaterList(tjFlowingWater); ExcelUtil util = new ExcelUtil(TjFlowingWater.class); util.exportExcel(response, list, "体检流水数据"); } /** * 获取体检流水详细信息 */ //@PreAuthorize("@ss.hasPermi('hosp:water:query')") @GetMapping(value = "/{id}") @ApiOperation(value = "获取体检流水列表") public AjaxResult getInfo(@PathVariable("id") String id) { TjFlowingWater flowingWater = tjFlowingWaterService.selectTjFlowingWaterById(id); if (null != flowingWater) { if (null != userService.getById(flowingWater.getTollCollectorId())) { flowingWater.setTollCollectorName(userService.getById(flowingWater.getTollCollectorId()).getNickName()); } return success(flowingWater); } return AjaxResult.error("暂无信息"); } /** * 体检点击收费按钮接口 */ @PutMapping @ApiOperation(value = "体检点击收费按钮接口") @Transactional public AjaxResult edit(@RequestBody TjFlowingWater tjFlowingWater) { Long userId = Long.valueOf(SecurityUtils.getLoginUser().getUserId()); SysUser sysUser = userService.getById(userId); TjFlowingWater flowingWater = tjFlowingWaterService.getById(tjFlowingWater.getTjSerialNumber()); tjFlowingWater.setTollCollectorId(String.valueOf(SecurityUtils.getLoginUser().getUserId())); tjFlowingWater.setPayStasus(1L); TjOrder order = orderService.getById(tjFlowingWater.getOrderId()); TjCustomer customer = customerService.getById(order.getUserId()); if (null != tjFlowingWater.getTjProIds() && tjFlowingWater.getTjProIds().length > 0) { tjFlowingWater.setWaterId(SecurityUtils.getUsername() + DateUtil.format(new Date(), "yyMMddHHmmssSSS")); tjFlowingWater.setIsAddition("Y"); if (tjFlowingWaterService.save(tjFlowingWater)) { //异步单项收费明细 asyncService.iundividualCharges(tjFlowingWater, order, customer,sysUser); //extracted(tjFlowingWater, order, customer); Mapmap=new HashMap<>(); map.put("waterId",tjFlowingWater.getWaterId()); map.put("mobanId",reportService.getMoBanIds()); return AjaxResult.success("收费成功",map); } } if(flowingWater.getPayStasus()==1){ return AjaxResult.success("该订单已付款 无须再付"); } if (tjFlowingWaterService.updateById(tjFlowingWater)){ LambdaQueryWrapper wq2 = new LambdaQueryWrapper<>(); wq2.eq(TjOrderDetail::getOrderId, tjFlowingWater.getOrderId()); wq2.isNull(TjOrderDetail::getFlowingWaterId); List list2 = new ArrayList<>(); for (TjOrderDetail tjOrderDetail : detailService.list(wq2)) { tjOrderDetail.setFlowingWaterId(String.valueOf(tjFlowingWater.getTjSerialNumber())); detailService.updateById(tjOrderDetail); } LambdaQueryWrapper wq3 = new LambdaQueryWrapper<>(); wq3.eq(TjOrderDetail::getOrderId, tjFlowingWater.getOrderId()); wq3.isNotNull(TjOrderDetail::getFlowingWaterId); List detailList = detailService.list(wq3); if (null != detailList && detailList.size() > 0) { LambdaQueryWrapper wqq = new LambdaQueryWrapper<>(); wqq.eq(TbTransition::getCusId, customer.getCusIdcard()); wqq.in(TbTransition::getProId, detailList.stream().map(TjOrderDetail::getProId).collect(Collectors.toList())); List tbTransitionList = transitionService.list(wqq); if(null != tbTransitionList && tbTransitionList.size() > 0){ // extracted(order, list2, tbTransitionList); //异步添加收费明细 asyncService.collectFees(order,list2,tbTransitionList,sysUser,tjFlowingWater.getDiscount()); Mapmap=new HashMap<>(); map.put("waterId",tjFlowingWater.getWaterId()); map.put("mobanId",reportService.getMoBanIds()); return AjaxResult.success("收费成功",map); } } return AjaxResult.success("该用户已收费不可重复收费"); } return AjaxResult.error(); } /* private void extracted(TjFlowingWater tjFlowingWater, TjOrder order, TjCustomer customer) { List list2 = new ArrayList<>(); String[] tjProIds = tjFlowingWater.getTjProIds(); for (String tjProId : tjProIds) { LambdaQueryWrapper wq0 = new LambdaQueryWrapper<>(); wq0.eq(TjProject::getProParentId, tjProId); List proIds = projectService.list(wq0).stream().map(TjProject::getProId).collect(Collectors.toList()); TjOrderDetail detail = new TjOrderDetail(); detail.setTjStatus(0L); detail.setOrderId(tjFlowingWater.getOrderId()); detail.setFlowingWaterId(String.valueOf(tjFlowingWater.getTjSerialNumber())); detail.setProId(Long.valueOf(tjProId)); detail.setIsAddition("Y"); detailService.save(detail); for (Long proId : proIds) { TjOrderDetail detail1 = new TjOrderDetail(); detail1.setTjStatus(0L); detail1.setOrderId(tjFlowingWater.getOrderId()); detail1.setFlowingWaterId(String.valueOf(tjFlowingWater.getTjSerialNumber())); detail1.setProId(proId); detail1.setIsAddition("Y"); detailService.save(detail1); } LambdaQueryWrapper wqq = new LambdaQueryWrapper<>(); wqq.eq(TbTransition::getCusId, customer.getCusIdcard()); wqq.in(TbTransition::getProId, proIds); List tbTransitionList = transitionService.list(wqq); if (null != tbTransitionList && tbTransitionList.size() > 0) { for (TbTransition transition : tbTransitionList) { TjProject tjProject = projectService.selectTjProjectByProId(transition.getProId()); //子项 if (null != tjProject) { TjChargingStandard tjChargingStandard = new TjChargingStandard(); tjChargingStandard.setTjNum(order.getTjNumber()); tjChargingStandard.setProId(transition.getProId()); tjChargingStandard.setPrice(transition.getNowPrice()); tjChargingStandard.setProName(tjProject.getProName()); chargingStandardService.save(tjChargingStandard); } } //父项 TjProject parentProject = projectService.getById(tjProId); if (null != parentProject) { LambdaQueryWrapper wqqq = new LambdaQueryWrapper<>(); wqqq.eq(TjProConsumables::getProId, parentProject.getProId()); List proConsumables = proConsumablesService.list(wqqq); if (null != proConsumables && proConsumables.size() > 0) { for (TjProConsumables tjProConsumables : proConsumables) { TjConsumables tjConsumables = consumablesService.selectTjConsumablesById(tjProConsumables.getConsumablesId()); list2.add(tjConsumables); } } } } } //父项耗材 ArrayList collect = list2.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(TjConsumables::getId))), ArrayList::new)); for (TjConsumables tjConsumables : collect) { TjChargingStandard tjChargingStandard = new TjChargingStandard(); tjChargingStandard.setTjNum(order.getTjNumber()); tjChargingStandard.setConsumablesId(tjConsumables.getId()); tjChargingStandard.setPrice(tjConsumables.getPrice()); tjChargingStandard.setProName(tjConsumables.getMakings()); tjChargingStandard.setConsumablesName(tjConsumables.getMakings()); tjChargingStandard.setCompany(tjConsumables.getSpecifications()); chargingStandardService.save(tjChargingStandard); } }*/ //备用添加收费明细 /*private void extracted(TjOrder order, List list2, List tbTransitionList) { for (TbTransition transition : tbTransitionList) { TjProject tjProject = projectService.selectTjProjectByProId(transition.getProId()); //子项 if (null != tjProject) { TjChargingStandard tjChargingStandard = new TjChargingStandard(); tjChargingStandard.setTjNum(order.getTjNumber()); tjChargingStandard.setProId(transition.getProId()); tjChargingStandard.setPrice(transition.getNowPrice()); tjChargingStandard.setProName(tjProject.getProName()); chargingStandardService.save(tjChargingStandard); } } //父项 ArrayList collect1 = tbTransitionList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(TbTransition::getParentProId))), ArrayList::new)); List parentProIds = collect1.stream().map(TbTransition::getParentProId).collect(Collectors.toList()); if (parentProIds.size() > 0) { for (Long parentProId : parentProIds) { TjProject parentProject = projectService.selectTjProjectByProId(parentProId); if (null != parentProject) { LambdaQueryWrapper wqqq = new LambdaQueryWrapper<>(); wqqq.eq(TjProConsumables::getProId, parentProject.getProId()); List proConsumables = proConsumablesService.list(wqqq); if (null != proConsumables && proConsumables.size() > 0) { for (TjProConsumables tjProConsumables : proConsumables) { TjConsumables tjConsumables = consumablesService.selectTjConsumablesById(tjProConsumables.getConsumablesId()); list2.add(tjConsumables); } } } } } ArrayList collect = list2.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(TjConsumables::getId))), ArrayList::new)); for (TjConsumables tjConsumables : collect) { TjChargingStandard tjChargingStandard = new TjChargingStandard(); tjChargingStandard.setTjNum(order.getTjNumber()); tjChargingStandard.setConsumablesId(tjConsumables.getId()); tjChargingStandard.setPrice(tjConsumables.getPrice()); tjChargingStandard.setProName(tjConsumables.getMakings()); tjChargingStandard.setConsumablesName(tjConsumables.getMakings()); tjChargingStandard.setCompany(tjConsumables.getSpecifications()); chargingStandardService.save(tjChargingStandard); } }*/ /** * 删除体检流水 */ @PreAuthorize("@ss.hasPermi('hosp:water:remove')") @Log(title = "体检流水", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable String[] ids) { return toAjax(tjFlowingWaterService.deleteTjFlowingWaterByIds(ids)); } /** * 体检(退费)页面查询接口 */ @GetMapping("/findTjRefundListByNameAndTjNumAndPhone") @ApiOperation(value = "体检(退费)页面查询接口") public AjaxResult findTjRefundListByNameAndTjNumAndPhone(@RequestParam(required = false) @ApiParam(value = "体检号") String tjNum, @RequestParam(required = false) @ApiParam(value = "体检人姓名") String tjName, @RequestParam(required = false) @ApiParam(value = "体检人手机号") String tjPhone) { if (null != tjName || null != tjPhone) { LambdaQueryWrapper wq0 = new LambdaQueryWrapper<>(); wq0.eq(TjCustomer::getCusName, tjName) .or() .eq(TjCustomer::getCusPhone, tjPhone); List customerList = customerService.list(wq0); if (null != customerList && customerList.size() > 0) { List tjRefundVoList = new ArrayList<>(); for (TjCustomer customer : customerList) { LambdaQueryWrapper wq1 = new LambdaQueryWrapper<>(); wq1.eq(TjOrder::getUserId, customer.getCusId()); wq1.eq(TjOrder::getCheckStatus, 0); wq1.orderByDesc(TjOrder::getCreateTime); List tjOrders = orderService.list(wq1); TjOrder order = null; if (null != tjOrders && tjOrders.size() > 0) { order = tjOrders.get(0); } if (null == order) { continue; } LambdaQueryWrapper wq2 = new LambdaQueryWrapper<>(); wq2.eq(TjOrderDetail::getOrderId, order.getOrderId()); wq2.isNotNull(TjOrderDetail::getFlowingWaterId); List detailList = detailService.list(wq2); if (null != detailList && detailList.size() > 0) { TjRefundVo tjRefundVo = new TjRefundVo(); tjRefundVo.setTjName(MatchUtils.hideCusName(customer.getCusName())); tjRefundVo.setTjPhone(MatchUtils.hidePhoneNum(customer.getCusPhone())); tjRefundVo.setTjNumber(order.getTjNumber()); tjRefundVo.setTjOrderId(String.valueOf(order.getOrderId())); if (null != order.getDictCompName()) tjRefundVo.setTjComp(order.getDictCompName()); if (null != order.getTjType()) tjRefundVo.setTjType(order.getTjType()); tjRefundVo.setRegisterTime(order.getCreateTime()); tjRefundVo.setDrawerTime(order.getCreateTime()); tjRefundVo.setReportTime(order.getReportTime()); List list = tjFlowingWaterService.list(new LambdaQueryWrapper().eq(TjFlowingWater::getOrderId, order.getOrderId())); if (null != list) { BigDecimal bigDecimal = new BigDecimal("0.00"); for (TjFlowingWater flowingWater : list) { // if (flowingWater.getIsAddition().equals("N")) { // tjRefundVo.setTjFlowingWater(flowingWater); // } bigDecimal = bigDecimal.add(flowingWater.getPaidIn()); } tjRefundVo.setTotalAmount(bigDecimal); } TjFlowingWater flowingWater = new TjFlowingWater(); flowingWater.setOrderId(order.getOrderId()); tjRefundVo.setTjFlowingWater(flowingWater); tjRefundVoList.add(tjRefundVo); } } return AjaxResult.success(tjRefundVoList); } return AjaxResult.error("该用户不存在"); } if (null != tjNum) { LambdaQueryWrapper wq1 = new LambdaQueryWrapper<>(); wq1.likeLeft(TjOrder::getTjNumber, tjNum); wq1.eq(TjOrder::getCheckStatus, 0); List orderList = orderService.list(wq1); if (null != orderList && orderList.size() > 0) { List tjRefundVoList = new ArrayList<>(); for (TjOrder order : orderList) { LambdaQueryWrapper wq2 = new LambdaQueryWrapper<>(); wq2.eq(TjOrderDetail::getOrderId, order.getOrderId()); wq2.isNotNull(TjOrderDetail::getFlowingWaterId); List detailList = detailService.list(wq2); if (null != detailList && detailList.size() > 0) { TjCustomer customer = customerService.getById(order.getUserId()); if (null != customer) { TjRefundVo tjRefundVo = new TjRefundVo(); tjRefundVo.setTjName(MatchUtils.hideCusName(customer.getCusName())); tjRefundVo.setTjPhone(MatchUtils.hidePhoneNum(customer.getCusPhone())); tjRefundVo.setTjNumber(order.getTjNumber()); tjRefundVo.setTjOrderId(String.valueOf(order.getOrderId())); if (null != order.getDictCompName()) tjRefundVo.setTjComp(order.getDictCompName()); if (null != order.getTjType()) tjRefundVo.setTjType(order.getTjType()); tjRefundVo.setRegisterTime(order.getCreateTime()); tjRefundVo.setDrawerTime(order.getCreateTime()); tjRefundVo.setReportTime(order.getReportTime()); List list = tjFlowingWaterService.list(new LambdaQueryWrapper().eq(TjFlowingWater::getOrderId, order.getOrderId())); if (null != list) { BigDecimal bigDecimal = new BigDecimal("0.00"); for (TjFlowingWater flowingWater : list) { // if (flowingWater.getIsAddition().equals("N")) { // tjRefundVo.setTjFlowingWater(flowingWater); // } bigDecimal = bigDecimal.add(flowingWater.getPaidIn()); } tjRefundVo.setTotalAmount(bigDecimal); } TjFlowingWater flowingWater = new TjFlowingWater(); flowingWater.setOrderId(order.getOrderId()); tjRefundVo.setTjFlowingWater(flowingWater); tjRefundVoList.add(tjRefundVo); } } } return AjaxResult.success(tjRefundVoList); } return AjaxResult.success("该用户不存在或已体检完成"); } return AjaxResult.error("请输入要查询条件"); } /** * 体检(收费)页面查询接口 */ @GetMapping("/findTjCollectFeesByNameAndTjNumAndPhone") @ApiOperation(value = "体检(收费)页面查询接口") public AjaxResult findTjCollectFeesByNameAndTjNumAndPhone(@RequestParam(required = false) @ApiParam(value = "体检号") String tjNum, @RequestParam(required = false) @ApiParam(value = "体检人姓名") String tjName, @RequestParam(required = false) @ApiParam(value = "体检人手机号") String tjPhone) { List tjCollectFeesVoList = new ArrayList<>(); if (null != tjName || null != tjPhone) { LambdaQueryWrapper wq0 = new LambdaQueryWrapper<>(); wq0.like(TjCustomer::getCusName, tjName) .or() .like(TjCustomer::getCusPhone, tjPhone); List customerList = customerService.list(wq0); if (null != customerList && customerList.size() > 0) { for (TjCustomer customer : customerList) { LambdaQueryWrapper wq1 = new LambdaQueryWrapper<>(); wq1.eq(TjOrder::getUserId, customer.getCusId()); wq1.eq(TjOrder::getCheckStatus, 0); wq1.orderByDesc(TjOrder::getCreateTime); List tjOrders = orderService.list(wq1); if (null != tjOrders && tjOrders.size() > 0) { for (TjOrder order : tjOrders) { LambdaQueryWrapper wq2 = new LambdaQueryWrapper<>(); wq2.eq(TjOrderDetail::getOrderId, order.getOrderId()); List detailList = detailService.list(wq2); if (null != detailList && detailList.size() > 0) { TjCollectFeesVo tjRefundVo = new TjCollectFeesVo(); tjRefundVo.setTjCusId(String.valueOf(customer.getCusId())); tjRefundVo.setTjName(MatchUtils.hideCusName(customer.getCusName())); tjRefundVo.setTjPhone(MatchUtils.hidePhoneNum(customer.getCusPhone())); tjRefundVo.setSex(String.valueOf(customer.getCusSex())); tjRefundVo.setIdCard(MatchUtils.hideIdCardNum(customer.getCusIdcard())); DictComp dictComp = compService.getById(order.getFirmId()); if(null !=dictComp){ tjRefundVo.setTjComp(dictComp.getCnName()); }else { tjRefundVo.setTjComp("无"); } if (null != order.getTjType()) tjRefundVo.setTjType(order.getTjType()); LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.eq(TjFlowingWater::getOrderId, order.getOrderId()); wq.eq(TjFlowingWater::getIsAddition, "N"); wq.ne(TjFlowingWater::getPayStasus, 2); TjFlowingWater one = tjFlowingWaterService.getOne(wq); // tjRefundVo.setPaidIn(String.valueOf(one.getPaidIn())); tjRefundVo.setTjFlowingWater(one); tjRefundVo.setTjNumber(order.getTjNumber()); tjRefundVo.setTjOrderId(String.valueOf(order.getOrderId())); tjCollectFeesVoList.add(tjRefundVo); } } } // TjOrder order = null; // if (null != tjOrders && tjOrders.size() > 0) { // order = tjOrders.get(0); // } // if (null == order) { // continue; // } // LambdaQueryWrapper wq2 = new LambdaQueryWrapper<>(); // wq2.eq(TjOrderDetail::getOrderId, order.getOrderId()); // List detailList = detailService.list(wq2); // if (null != detailList && detailList.size() > 0) { // TjCollectFeesVo tjRefundVo = new TjCollectFeesVo(); // tjRefundVo.setTjCusId(String.valueOf(customer.getCusId())); // tjRefundVo.setTjName(customer.getCusName()); // tjRefundVo.setTjPhone(customer.getCusPhone()); // tjRefundVo.setSex(String.valueOf(customer.getCusSex())); // tjRefundVo.setIdCard(customer.getCusIdcard()); // if (null != order.getDictCompName()) // tjRefundVo.setTjComp(compService.getById(order.getFirmId()) != null ? compService.getById(order.getFirmId()).getCnName() : null); // if (null != order.getTjType()) tjRefundVo.setTjType(order.getTjType()); // LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); // wq.eq(TjFlowingWater::getOrderId, order.getOrderId()); // wq.eq(TjFlowingWater::getIsAddition, "N"); // wq.eq(TjFlowingWater::getPayStasus, 0); // TjFlowingWater one = tjFlowingWaterService.getOne(wq); //// if (null == one) { //// return AjaxResult.success("不可重复收费"); //// } // tjRefundVo.setTjFlowingWater(one); // tjRefundVo.setTjNumber(order.getTjNumber()); // tjRefundVo.setTjOrderId(String.valueOf(order.getOrderId())); // tjCollectFeesVoList.add(tjRefundVo); // } } return AjaxResult.success(tjCollectFeesVoList); } return AjaxResult.error("该用户不存在"); } if (null != tjNum) { LambdaQueryWrapper wq1 = new LambdaQueryWrapper<>(); wq1.likeLeft(TjOrder::getTjNumber, tjNum); wq1.eq(TjOrder::getCheckStatus, 0); List orderList = orderService.list(wq1); if (null != orderList && orderList.size() > 0) { for (TjOrder order : orderList) { LambdaQueryWrapper wq2 = new LambdaQueryWrapper<>(); wq2.eq(TjOrderDetail::getOrderId, order.getOrderId()); //wq2.isNull(TjOrderDetail::getFlowingWaterId); List detailList = detailService.list(wq2); if (null != detailList && detailList.size() > 0) { TjCustomer customer = customerService.getById(order.getUserId()); if (null != customer) { TjCollectFeesVo tjRefundVo = new TjCollectFeesVo(); tjRefundVo.setTjCusId(String.valueOf(customer.getCusId())); tjRefundVo.setTjName(MatchUtils.hideCusName(customer.getCusName())); tjRefundVo.setTjPhone(MatchUtils.hidePhoneNum(customer.getCusPhone())); tjRefundVo.setSex(String.valueOf(customer.getCusSex())); tjRefundVo.setIdCard(MatchUtils.hideIdCardNum(customer.getCusIdcard())); if (null != order.getDictCompName()) tjRefundVo.setTjComp(compService.getById(order.getFirmId()) != null ? compService.getById(order.getFirmId()).getCnName() : null); if (null != order.getTjType()) tjRefundVo.setTjType(order.getTjType()); TjFlowingWater one = tjFlowingWaterService.getOne(new LambdaQueryWrapper() .eq(TjFlowingWater::getOrderId, order.getOrderId()) .eq(TjFlowingWater::getIsAddition, "N") .ne(TjFlowingWater::getPayStasus, 2) ); tjRefundVo.setTjFlowingWater(one); tjRefundVo.setTjNumber(order.getTjNumber()); tjRefundVo.setTjOrderId(String.valueOf(order.getOrderId())); tjCollectFeesVoList.add(tjRefundVo); } } } return AjaxResult.success(tjCollectFeesVoList); } return AjaxResult.success("该用户不存在或已体检完成"); } return AjaxResult.error("请输入要查询条件"); } /** * 体检已收费未收费信息查询接口 */ @GetMapping("/findTjChargedButNotChargedByTjNum") @ApiOperation(value = "体检已收费未收费信息查询接口") public AjaxResult findTjChargedButNotChargedByTjNum(@RequestParam @ApiParam(value = "0未缴费1已缴费") Integer type, @RequestParam @ApiParam(value = "体检号") String OrderId) { if (null != OrderId) { TjOrder order = orderService.getById(OrderId); if (null != order) { List tjProjectList = null; if (type == 0) { tjProjectList = detailService.selectTjOrderDetailListByFlowingWaterIdIsNull(OrderId); } else { tjProjectList = detailService.selectTjOrderDetailListByFlowingWaterIdIsNotNull(OrderId); } if (null != tjProjectList && tjProjectList.size() > 0) { for (TjProject project : tjProjectList) { if (project.getProParentId() == 0) { LambdaQueryWrapper wqq1 = new LambdaQueryWrapper<>(); wqq1.eq(TbTransition::getCusId, customerService.getById(order.getUserId()).getCusIdcard()); wqq1.eq(TbTransition::getParentProId, project.getProId()); List tbTransitionList = transitionService.list(wqq1); BigDecimal bigDecimal = new BigDecimal("0.00"); BigDecimal bigDecimal1 = new BigDecimal("0.00"); for (TbTransition transition : tbTransitionList) { bigDecimal = bigDecimal.add(transition.getNowPrice()); bigDecimal1=bigDecimal1.add(transition.getOrdPrice()); } project.setProPrice(bigDecimal.setScale(0,BigDecimal.ROUND_UP)); project.setProOrdPrice(bigDecimal1); } } } return AjaxResult.success(tjProjectList); } } return AjaxResult.error("暂时没有数据"); } /** * 体检退费项目查询接口 */ @GetMapping("/getTjRefundProInfoVoList") @ApiOperation(value = "体检退费项目详情查询接口") @Transactional public AjaxResult getTjRefundProInfoVoList(@RequestParam @ApiParam(value = "体检订单id") String orderId) { TjOrder tjOrder = orderService.getById(orderId); if (null == tjOrder) return AjaxResult.error("该体检记录不存在"); TjCustomer customer = customerService.getById(tjOrder.getUserId()); if (tjOrder.getCheckStatus() == 0 && tjOrder.getReportTime() == null) { LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.eq(TjOrderDetail::getOrderId, orderId); //wq.eq(TjOrderDetail::getTjStatus, 0); wq.ne(TjOrderDetail::getTjStatus,1); wq.ne(TjOrderDetail::getTjStatus,3); wq.isNotNull(TjOrderDetail::getFlowingWaterId); List detailList = detailService.list(wq); if (null != detailList && detailList.size() > 0) { List tjRefundProInfoVoList = new ArrayList<>(); for (TjOrderDetail detail : detailList) { TjProject project = projectService.getById(detail.getProId()); if (project.getProParentId() == 0) { LambdaQueryWrapper wqq1 = new LambdaQueryWrapper<>(); wqq1.eq(TbTransition::getCusId, customer.getCusIdcard()); wqq1.eq(TbTransition::getParentProId, project.getProId()); List tbTransitionList = transitionService.list(wqq1); BigDecimal bigDecimal = new BigDecimal("0.00"); BigDecimal bigDecimal1 = new BigDecimal("0.00"); for (TbTransition transition : tbTransitionList) { bigDecimal = bigDecimal.add(transition.getNowPrice()); bigDecimal1 = bigDecimal1.add(transition.getOrdPrice()); } TjRefundProInfoVo proInfoVo = new TjRefundProInfoVo(); // double discount = Double.parseDouble(tjFlowingWaterService.getById(detail.getFlowingWaterId()).getDiscount()); //BigDecimal decimal = BigDecimal.valueOf(discount).divide(BigDecimal.valueOf(100)); //proInfoVo.setNetReceipts(bigDecimal.multiply(decimal).setScale(2, BigDecimal.ROUND_DOWN)); proInfoVo.setNetReceipts(bigDecimal); proInfoVo.setCollectFeesTime(tjFlowingWaterService.getById(detail.getFlowingWaterId()).getUpdateTime()); proInfoVo.setTollCollector(userService.getById(tjFlowingWaterService.getById(detail.getFlowingWaterId()).getTollCollectorId()).getNickName()); proInfoVo.setProName(project.getProName()); proInfoVo.setProId(String.valueOf(project.getProId())); //proInfoVo.setPrice(project.getProPrice().setScale(2, BigDecimal.ROUND_DOWN)); proInfoVo.setPrice(bigDecimal1); tjRefundProInfoVoList.add(proInfoVo); } } return AjaxResult.success(tjRefundProInfoVoList); } } return AjaxResult.success("体检已全部完成或已失效"); } /** * 体检退费接口 */ @PostMapping("/tjRefund") @ApiOperation(value = "体检退费按钮接口") public AjaxResult tjRefund(@RequestBody @ApiParam(value = "流水对象") TjFlowingWater tjFlowingWater){ if(null == tjFlowingWater.getRefundPros()||tjFlowingWater.getRefundPros().size()==0) return AjaxResult.error("请选择退费项目"); tjFlowingWater.setTollCollectorId(String.valueOf(SecurityUtils.getLoginUser().getUserId())); tjFlowingWater.setRefundPersonId(String.valueOf(SecurityUtils.getLoginUser().getUserId())); tjFlowingWater.setRefundTime(new Date()); tjFlowingWater.setIsAddition("N"); tjFlowingWater.setPayStasus(2L); tjFlowingWater.setWaterId(SecurityUtils.getUsername() + DateUtil.format(new Date(), "yyMMddHHmmssSSS")); tjFlowingWater.setPaidIn(BigDecimal.valueOf(0.00).subtract(tjFlowingWater.getRefundPrice())); tjFlowingWater.setCopeWith(tjFlowingWater.getRefundPrice()); if (tjFlowingWaterService.save(tjFlowingWater)){ TjOrder order = orderService.getById(tjFlowingWater.getOrderId()); for (TjProject refundPro : tjFlowingWater.getRefundPros()) { LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.eq(TjProject::getProParentId, refundPro.getProId()); List collect = projectService.list(wq).stream().map(TjProject::getProId).collect(Collectors.toList()); LambdaQueryWrapper wq1 = new LambdaQueryWrapper<>(); wq1.in(TjOrderDetail::getProId, collect); wq1.eq(TjOrderDetail::getOrderId, tjFlowingWater.getOrderId()); wq1.isNotNull(TjOrderDetail::getFlowingWaterId); wq1.eq(TjOrderDetail::getTjStatus, 0); 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); } } LambdaQueryWrapper wq2 = new LambdaQueryWrapper<>(); wq2.eq(TjOrderDetail::getProId, refundPro.getProId()); wq2.eq(TjOrderDetail::getOrderId, tjFlowingWater.getOrderId()); wq2.isNotNull(TjOrderDetail::getFlowingWaterId); wq2.eq(TjOrderDetail::getTjStatus, 0); TjOrderDetail detail = detailService.getOne(wq2); if (null != detail) { detail.setFlowingWaterId(null); detailService.updateById(detail); LambdaQueryWrapper wqqq = new LambdaQueryWrapper<>(); wqqq.eq(TjProConsumables::getProId, detail.getProId()); List proConsumables = proConsumablesService.list(wqqq); List list2 = new ArrayList<>(); if (null != proConsumables && proConsumables.size() > 0) { for (TjProConsumables tjProConsumables : proConsumables) { TjConsumables tjConsumables = consumablesService.selectTjConsumablesById(tjProConsumables.getConsumablesId()); list2.add(tjConsumables); } } if (null != list && list.size() > 0) { ArrayList collectw = list2.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(TjConsumables::getId))), ArrayList::new)); for (TjConsumables tjConsumables : collectw) { LambdaQueryWrapper wqq = new LambdaQueryWrapper<>(); wqq.eq(TjChargingStandard::getTjNum, order.getTjNumber()); wqq.eq(TjChargingStandard::getConsumablesId, tjConsumables.getId()); chargingStandardService.remove(wqq); } } } LambdaQueryWrapperwqz=new LambdaQueryWrapper<>(); wqz.eq(TjOrderRemark::getTjNumber,order.getTjNumber()); wqz.eq(TjOrderRemark::getProId,refundPro.getProId()); remarkService.remove(wqz); } List refundPros = tjFlowingWater.getRefundPros(); asyncService.tjRefund(refundPros,order.getTjNumber()); Mapmap=new HashMap<>(); map.put("waterId",tjFlowingWater.getWaterId()); map.put("mobanId",reportService.getMoBanId()); return AjaxResult.success("退费成功",map); } return AjaxResult.error(); } }