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 cn.hutool.extra.pinyin.PinyinUtil;
|
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;
|
@Resource
|
private ITjPackageProjectService tjPackageProjectService;
|
|
/**
|
* 查询该体检号对应的订单流水列表
|
*/
|
@GetMapping("/flowingWaterByTjNumber/{TjNumber}")
|
@ApiOperation(value = "查询该体检号对应的订单流水列表")
|
public AjaxResult FlowingWaterByTjNumber(@ApiParam(value = "体检号") @PathVariable("TjNumber") String TjNumber) {
|
Map<String, Object> map = new HashMap<>();
|
LambdaQueryWrapper<TjOrder> wq1 = new LambdaQueryWrapper<>();
|
wq1.eq(TjOrder::getTjNumber, TjNumber);
|
TjOrder one = orderService.getOne(wq1);
|
if (one != null) {
|
LambdaQueryWrapper<TjFlowingWater> wq2 = new LambdaQueryWrapper<>();
|
wq2.eq(TjFlowingWater::getOrderId, one.getOrderId());
|
List<TjFlowingWater> list = tjFlowingWaterService.list(wq2);
|
map.put("water", list);
|
}
|
LambdaQueryWrapper<TjChargingStandard> wq3 = new LambdaQueryWrapper<>();
|
wq3.eq(TjChargingStandard::getTjNum, TjNumber);
|
List<TjChargingStandard> 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<TjFlowingWater> 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<TjFlowingWater> wq = new LambdaQueryWrapper<>();
|
wq.eq(TjFlowingWater::getPayStasus, 2);
|
List<TjFlowingWater> list = tjFlowingWaterService.list(wq);
|
if (null != list) {
|
Map<String, Object> 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<TjFlowingWater> list = tjFlowingWaterService.selectTjFlowingWaterList(tjFlowingWater);
|
ExcelUtil<TjFlowingWater> util = new ExcelUtil<TjFlowingWater>(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(PinyinUtil.getFirstLetter(customer.getCusName(), "").toUpperCase() + DateUtil.format(new Date(), "yyMMddHHmmssSSS"));
|
tjFlowingWater.setIsAddition("Y");
|
if (tjFlowingWaterService.save(tjFlowingWater)) {
|
//异步单项收费明细
|
asyncService.iundividualCharges(tjFlowingWater, order, customer, sysUser);
|
//extracted(tjFlowingWater, order, customer);
|
Map<String, Object> map = 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<TjOrderDetail> wq2 = new LambdaQueryWrapper<>();
|
wq2.eq(TjOrderDetail::getOrderId, tjFlowingWater.getOrderId());
|
wq2.isNull(TjOrderDetail::getFlowingWaterId);
|
List<TjConsumables> list2 = new ArrayList<>();
|
for (TjOrderDetail tjOrderDetail : detailService.list(wq2)) {
|
tjOrderDetail.setFlowingWaterId(String.valueOf(tjFlowingWater.getTjSerialNumber()));
|
detailService.updateById(tjOrderDetail);
|
}
|
LambdaQueryWrapper<TjOrderDetail> wq3 = new LambdaQueryWrapper<>();
|
wq3.eq(TjOrderDetail::getOrderId, tjFlowingWater.getOrderId());
|
wq3.isNotNull(TjOrderDetail::getFlowingWaterId);
|
List<TjOrderDetail> detailList = detailService.list(wq3);
|
if (null != detailList && detailList.size() > 0) {
|
LambdaQueryWrapper<TbTransition> wqq = new LambdaQueryWrapper<>();
|
wqq.eq(TbTransition::getCusId, customer.getCusIdcard());
|
wqq.in(TbTransition::getProId, detailList.stream().map(TjOrderDetail::getProId).collect(Collectors.toList()));
|
List<TbTransition> tbTransitionList = transitionService.list(wqq);
|
if (null != tbTransitionList && tbTransitionList.size() > 0) {
|
// extracted(order, list2, tbTransitionList);
|
//异步添加收费明细
|
asyncService.collectFees(order, list2, tbTransitionList, sysUser, tjFlowingWater.getDiscount());
|
Map<String, Object> map = new HashMap<>();
|
map.put("waterId", tjFlowingWater.getWaterId());
|
map.put("mobanId", reportService.getMoBanIds());
|
return AjaxResult.success("收费成功", map);
|
}
|
}
|
return AjaxResult.success("该用户已收费不可重复收费");
|
}
|
return AjaxResult.error();
|
}
|
|
|
/**
|
* 删除体检流水
|
*/
|
// @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<TjCustomer> wq0 = new LambdaQueryWrapper<>();
|
wq0.eq(TjCustomer::getCusName, tjName)
|
.or()
|
.eq(TjCustomer::getCusPhone, tjPhone);
|
List<TjCustomer> customerList = customerService.list(wq0);
|
if (null != customerList && customerList.size() > 0) {
|
List<TjRefundVo> tjRefundVoList = new ArrayList<>();
|
for (TjCustomer customer : customerList) {
|
LambdaQueryWrapper<TjOrder> wq1 = new LambdaQueryWrapper<>();
|
wq1.eq(TjOrder::getUserId, customer.getCusId());
|
wq1.eq(TjOrder::getCheckStatus, 0);
|
wq1.orderByDesc(TjOrder::getCreateTime);
|
List<TjOrder> tjOrders = orderService.list(wq1);
|
TjOrder order = null;
|
if (null != tjOrders && tjOrders.size() > 0) {
|
order = tjOrders.get(0);
|
}
|
if (null == order) {
|
continue;
|
}
|
|
LambdaQueryWrapper<TjOrderDetail> wq2 = new LambdaQueryWrapper<>();
|
wq2.eq(TjOrderDetail::getOrderId, order.getOrderId());
|
wq2.isNotNull(TjOrderDetail::getFlowingWaterId);
|
List<TjOrderDetail> detailList = detailService.list(wq2);
|
if (null != detailList && detailList.size() > 0) {
|
TjRefundVo tjRefundVo = new TjRefundVo();
|
tjRefundVo.setTjName(customer.getCusName());
|
tjRefundVo.setTjPhone(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<TjFlowingWater> list = tjFlowingWaterService.list(new LambdaQueryWrapper<TjFlowingWater>().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<TjOrder> wq1 = new LambdaQueryWrapper<>();
|
wq1.likeLeft(TjOrder::getTjNumber, tjNum);
|
wq1.eq(TjOrder::getCheckStatus, 0);
|
List<TjOrder> orderList = orderService.list(wq1);
|
if (null != orderList && orderList.size() > 0) {
|
List<TjRefundVo> tjRefundVoList = new ArrayList<>();
|
for (TjOrder order : orderList) {
|
LambdaQueryWrapper<TjOrderDetail> wq2 = new LambdaQueryWrapper<>();
|
wq2.eq(TjOrderDetail::getOrderId, order.getOrderId());
|
wq2.isNotNull(TjOrderDetail::getFlowingWaterId);
|
List<TjOrderDetail> 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(customer.getCusName());
|
tjRefundVo.setTjPhone(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<TjFlowingWater> list = tjFlowingWaterService.list(new LambdaQueryWrapper<TjFlowingWater>().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<TjCollectFeesVo> tjCollectFeesVoList = new ArrayList<>();
|
if (null != tjName || null != tjPhone) {
|
LambdaQueryWrapper<TjCustomer> wq0 = new LambdaQueryWrapper<>();
|
wq0.like(TjCustomer::getCusName, tjName)
|
.or()
|
.like(TjCustomer::getCusPhone, tjPhone);
|
List<TjCustomer> customerList = customerService.list(wq0);
|
if (null != customerList && customerList.size() > 0) {
|
for (TjCustomer customer : customerList) {
|
LambdaQueryWrapper<TjOrder> wq1 = new LambdaQueryWrapper<>();
|
wq1.eq(TjOrder::getUserId, customer.getCusId());
|
wq1.eq(TjOrder::getCheckStatus, 0);
|
wq1.orderByDesc(TjOrder::getCreateTime);
|
List<TjOrder> tjOrders = orderService.list(wq1);
|
if (null != tjOrders && tjOrders.size() > 0) {
|
for (TjOrder order : tjOrders) {
|
LambdaQueryWrapper<TjOrderDetail> wq2 = new LambdaQueryWrapper<>();
|
wq2.eq(TjOrderDetail::getOrderId, order.getOrderId());
|
List<TjOrderDetail> 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()));
|
if (null != customer.getCusIdcard()) tjRefundVo.setIdCard(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<TjFlowingWater> 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<TjOrderDetail> wq2 = new LambdaQueryWrapper<>();
|
// wq2.eq(TjOrderDetail::getOrderId, order.getOrderId());
|
// List<TjOrderDetail> 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<TjFlowingWater> 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<TjOrder> wq1 = new LambdaQueryWrapper<>();
|
wq1.likeLeft(TjOrder::getTjNumber, tjNum);
|
// wq1.eq(TjOrder::getCheckStatus, 0);
|
List<TjOrder> orderList = orderService.list(wq1);
|
if (null != orderList && orderList.size() > 0) {
|
for (TjOrder order : orderList) {
|
LambdaQueryWrapper<TjOrderDetail> wq2 = new LambdaQueryWrapper<>();
|
wq2.eq(TjOrderDetail::getOrderId, order.getOrderId());
|
//wq2.isNull(TjOrderDetail::getFlowingWaterId);
|
List<TjOrderDetail> 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(customer.getCusName());
|
tjRefundVo.setTjPhone(customer.getCusPhone());
|
tjRefundVo.setSex(String.valueOf(customer.getCusSex()));
|
tjRefundVo.setIdCard(customer.getCusIdcard());
|
if (null != order.getFirmId()) {
|
DictComp byId = compService.getById(order.getFirmId());
|
if (null != byId) {
|
tjRefundVo.setTjComp(byId.getCnName());
|
}
|
}
|
if (null != order.getTjType()) tjRefundVo.setTjType(order.getTjType());
|
TjFlowingWater one = tjFlowingWaterService.getOne(new LambdaQueryWrapper<TjFlowingWater>()
|
.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<TjProject> tjProjectList = null;
|
if (type == 0) {
|
tjProjectList = detailService.selectTjOrderDetailListByFlowingWaterIdIsNull(OrderId);
|
} else {
|
tjProjectList = detailService.selectTjOrderDetailListByFlowingWaterIdIsNotNull(OrderId);
|
}
|
String pacId = transitionService.selectPacIdByTbTransitionTjNumAndProId(order.getTjNumber(),order.getCardId());
|
String s = tjFlowingWaterService.getDiscount(OrderId);
|
if (null != tjProjectList && tjProjectList.size() > 0) {
|
for (TjProject project : tjProjectList) {
|
if (project.getProParentId() == 0) {
|
/* //LambdaQueryWrapper<TbTransition> wqq1 = new LambdaQueryWrapper<>();
|
// wqq1.eq(TbTransition::getCusId, customerService.getById(order.getUserId()).getCusIdcard());
|
// wqq1.eq(TbTransition::getParentProId, project.getProId());
|
// List<TbTransition> 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);
|
BigDecimal decimal = transitionService.getTbTransitionPriceAndOrdPrice(customerService.getById(order.getUserId()).getCusIdcard(),
|
project.getProId());
|
String s = tjFlowingWaterService.getDiscount(OrderId);
|
if(null !=decimal){
|
// project.setProPrice(decimal.setScale(2));
|
project.setProPrice(decimal);
|
// project.setProOrdPrice(decimal.multiply(new BigDecimal(s)).setScale(2));
|
project.setProOrdPrice(decimal);
|
}else {
|
BigDecimal decimal1 = transitionService.getTbTransitionDxPriceAndOrdPrice(String.valueOf(order.getUserId()),project.getProId());
|
if(null !=decimal1){
|
project.setProPrice(decimal1.setScale(2));
|
project.setProOrdPrice(decimal1.multiply(new BigDecimal(s)).setScale(2));
|
}else {
|
project.setProPrice(new BigDecimal("0.00").setScale(2));
|
project.setProOrdPrice(new BigDecimal("0.00").setScale(2));
|
}
|
}*/
|
if (null != pacId) {
|
TjPackageProject pp = tjPackageProjectService.getOne(new LambdaQueryWrapper<TjPackageProject>().eq(TjPackageProject::getPacId, pacId)
|
.eq(TjPackageProject::getProId, String.valueOf(project.getProId())));
|
if (null != pp) {
|
project.setProPrice(pp.getPriceNow());
|
project.setProOrdPrice(pp.getPriceNow().multiply(new BigDecimal(s)));
|
} else {
|
project.setProPrice(project.getProPrice().setScale(2));
|
project.setProOrdPrice(project.getProPrice().multiply(new BigDecimal(s)).setScale(2));
|
}
|
} else {
|
project.setProPrice(project.getProPrice().setScale(2));
|
project.setProOrdPrice(project.getProPrice().multiply(new BigDecimal(s)).setScale(2));
|
}
|
}
|
}
|
|
List<TjFlowingWater> list = tjFlowingWaterService.list(new LambdaQueryWrapper<TjFlowingWater>()
|
.eq(TjFlowingWater::getOrderId, order)
|
.eq(TjFlowingWater::getPayStasus, 2));
|
if (null != list && list.size() > 0) {
|
List<TjProject> projectList = projectService.getTjProListByPacIdAndDeptId(pacId);
|
if(null !=projectList && projectList.size()>0){
|
for (TjProject project : projectList) {
|
project.setProOrdPrice(tjPackageProjectService.getPacProPriceByPacIdAndPro(project.getProId(),pacId)
|
.multiply(new BigDecimal(s)).setScale(2));
|
tjProjectList.add(project);
|
}
|
}
|
|
}
|
}
|
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<TjOrderDetail> 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<TjOrderDetail> detailList = detailService.list(wq);
|
String pacId = transitionService.selectPacIdByTbTransitionTjNumAndProId(tjOrder.getTjNumber(),tjOrder.getCardId());
|
if (null != detailList && detailList.size() > 0) {
|
List<TjRefundProInfoVo> tjRefundProInfoVoList = new ArrayList<>();
|
for (TjOrderDetail detail : detailList) {
|
TjProject project = projectService.getById(detail.getProId());
|
if (project.getProParentId() == 0) {
|
// LambdaQueryWrapper<TbTransition> wqq1 = new LambdaQueryWrapper<>();
|
// wqq1.eq(TbTransition::getCusId, customer.getCusIdcard());
|
// wqq1.eq(TbTransition::getParentProId, project.getProId());
|
// List<TbTransition> 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());
|
// }
|
String s = tjFlowingWaterService.getDiscount(orderId);
|
TjRefundProInfoVo proInfoVo = new TjRefundProInfoVo();
|
|
if (null != pacId) {
|
TjPackageProject pp = tjPackageProjectService.getOne(new LambdaQueryWrapper<TjPackageProject>().eq(TjPackageProject::getPacId, pacId)
|
.eq(TjPackageProject::getProId, String.valueOf(project.getProId())));
|
if (null != pp) {
|
proInfoVo.setNetReceipts(pp.getPriceNow().multiply(new BigDecimal(s)));
|
proInfoVo.setPrice(pp.getPriceNow());
|
} else {
|
proInfoVo.setNetReceipts(project.getProPrice().multiply(new BigDecimal(s)));
|
proInfoVo.setPrice(project.getProPrice());
|
}
|
} else {
|
proInfoVo.setNetReceipts(project.getProPrice().multiply(new BigDecimal(s)));
|
proInfoVo.setPrice(project.getProPrice());
|
}
|
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()));
|
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("TF" + 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<TjProject> wq = new LambdaQueryWrapper<>();
|
wq.eq(TjProject::getProParentId, refundPro.getProId());
|
List<Long> collect = projectService.list(wq).stream().map(TjProject::getProId).collect(Collectors.toList());
|
LambdaQueryWrapper<TjOrderDetail> wq1 = new LambdaQueryWrapper<>();
|
wq1.in(TjOrderDetail::getProId, collect);
|
wq1.eq(TjOrderDetail::getOrderId, tjFlowingWater.getOrderId());
|
wq1.isNotNull(TjOrderDetail::getFlowingWaterId);
|
wq1.eq(TjOrderDetail::getTjStatus, 0);
|
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);
|
}
|
}
|
LambdaQueryWrapper<TjOrderDetail> 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<TjProConsumables> wqqq = new LambdaQueryWrapper<>();
|
wqqq.eq(TjProConsumables::getProId, detail.getProId());
|
List<TjProConsumables> proConsumables = proConsumablesService.list(wqqq);
|
List<TjConsumables> 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<TjConsumables> collectw = list2.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(TjConsumables::getId))), ArrayList::new));
|
for (TjConsumables tjConsumables : collectw) {
|
LambdaQueryWrapper<TjChargingStandard> wqq = new LambdaQueryWrapper<>();
|
wqq.eq(TjChargingStandard::getTjNum, order.getTjNumber());
|
wqq.eq(TjChargingStandard::getConsumablesId, tjConsumables.getId());
|
chargingStandardService.remove(wqq);
|
}
|
}
|
}
|
LambdaQueryWrapper<TjOrderRemark> wqz = new LambdaQueryWrapper<>();
|
wqz.eq(TjOrderRemark::getTjNumber, order.getTjNumber());
|
wqz.eq(TjOrderRemark::getProId, refundPro.getProId());
|
remarkService.remove(wqz);
|
}
|
List<TjProject> refundPros = tjFlowingWater.getRefundPros();
|
asyncService.tjRefund(refundPros, order.getTjNumber());
|
Map<String, Object> map = new HashMap<>();
|
map.put("waterId", tjFlowingWater.getWaterId());
|
map.put("mobanId", reportService.getMoBanId());
|
return AjaxResult.success("退费成功", map);
|
}
|
return AjaxResult.error();
|
}
|
}
|