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.utils.SecurityUtils;
|
import com.ltkj.framework.config.MatchUtils;
|
import com.ltkj.hosp.domain.*;
|
import com.ltkj.hosp.service.*;
|
import com.ltkj.hosp.vodomain.TeamTjPeopleVo;
|
import com.mysql.cj.util.StringUtils;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiParam;
|
import jodd.util.StringUtil;
|
import org.aspectj.weaver.AjAttribute;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.web.bind.annotation.*;
|
import com.ltkj.common.core.controller.BaseController;
|
import oshi.hardware.platform.mac.MacUsbDevice;
|
|
import javax.annotation.Resource;
|
import java.lang.annotation.ElementType;
|
import java.math.BigDecimal;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
import static com.ltkj.framework.datasource.DynamicDataSourceContextHolder.log;
|
|
/**
|
* 体检单位缴费主Controller
|
*
|
* @author ltkj
|
* @date 2023-03-14
|
*/
|
@RestController
|
@RequestMapping("/team/pay")
|
@Api(tags = "团体体检收费管理")
|
public class TjCompPayController extends BaseController {
|
@Resource
|
private ITjCompPayService compPayService;
|
@Resource
|
private ITjCompPayInfoService payInfoService;
|
@Resource
|
private ITjTeamSelectRecordService selectRecordService;
|
@Resource
|
private IDictCompService compService;
|
@Resource
|
private ITjReservationService reservationService;
|
@Resource
|
private ITjOrderService orderService;
|
@Resource
|
private ITjCustomerService customerService;
|
@Resource
|
private ITjDwGroupingService dwGroupingService;
|
@Resource
|
private ITjOrderRemarkService remarkService;
|
@Resource
|
private ITjFlowingWaterService tjFlowingWaterService;
|
@Resource
|
private ITbTransitionService transitionService;
|
/**
|
* 团体体检收费接口
|
*/
|
@PostMapping
|
@ApiOperation(value = "团体体检收费接口")
|
@Transactional
|
public AjaxResult add(@RequestBody TjCompPay compPay) {
|
try {
|
if (null==compPay.getTjhs() || compPay.getTjhs().isEmpty()) {
|
return AjaxResult.error("请选择结账人员!");
|
}
|
Date date = DateUtil.date();
|
String s = String.valueOf(SecurityUtils.getLoginUser().getUser().getNickName());
|
compPay.setPayee(s);
|
compPay.setSerialNumber("TT"+SecurityUtils.getUsername() + DateUtil.format(date, "yyMMddHHmmssSSS"));
|
compPay.setInvoiceNo("FP" + DateUtil.format(date, "yyMMddHHmmssSSS"));
|
if(compPayService.save(compPay)){
|
for (String tjh : compPay.getTjhs()) {
|
TjOrder tjOrder = orderService.getOrderByTjNum(tjh);
|
if(null != tjOrder){
|
TjFlowingWater water = tjFlowingWaterService.getOne(new LambdaQueryWrapper<TjFlowingWater>()
|
.eq(TjFlowingWater::getOrderId, tjOrder.getOrderId()).eq(TjFlowingWater::getIsAddition, "N"));
|
if(null != water){
|
TjCompPayInfo payInfo = new TjCompPayInfo();
|
payInfo.setTjh(tjh);
|
payInfo.setTjCompPayId(compPay.getId());
|
payInfo.setTransactionAmount(water.getPaidIn());
|
payInfo.setPaymentMethod(compPay.getPaymentMethod());
|
payInfo.setCardNo(compPay.getCardNo());
|
payInfo.setPayer(compPay.getPayer());
|
payInfo.setPayee(compPay.getPayee());
|
payInfoService.save(payInfo);
|
water.setSfjs("1");
|
water.setJsdh(compPay.getSerialNumber());
|
water.setJsrq(DateUtil.date());
|
water.setJsrxm(s);
|
water.setJsrdm(SecurityUtils.getLoginUser().getUser().getUserId().toString());
|
tjFlowingWaterService.updateById(water);
|
}
|
}
|
|
}
|
return AjaxResult.success("收费成功");
|
}
|
return AjaxResult.error("操作失败");
|
} catch (Exception e) {
|
log.error("收费异常", e);
|
throw new RuntimeException(e);
|
}
|
}
|
|
/**
|
* 团体体检退费接口
|
*/
|
@PostMapping("/refund")
|
@ApiOperation(value = "团体体检退费接口")
|
@Transactional
|
public AjaxResult refund(@RequestBody TjCompPay compPay) {
|
try {
|
if(null !=compPay){
|
if (compPayService.removeById(compPay)) {
|
LambdaQueryWrapper<TjCompPayInfo>wq=new LambdaQueryWrapper<>();
|
wq.eq(TjCompPayInfo::getTjCompPayId,compPay.getId());
|
payInfoService.remove(wq);
|
LambdaQueryWrapper<TjFlowingWater> waterLambdaQueryWrappe=new LambdaQueryWrapper<>();
|
waterLambdaQueryWrappe.eq(TjFlowingWater::getJsdh,compPay.getSerialNumber());
|
List<TjFlowingWater> waterList = tjFlowingWaterService.list(waterLambdaQueryWrappe);
|
if(null != waterList && !waterList.isEmpty()){
|
for (TjFlowingWater water : waterList) {
|
water.setSfjs("0");
|
water.setJsdh(null);
|
water.setJsrq(null);
|
water.setJsrxm(null);
|
water.setJsrdm(null);
|
tjFlowingWaterService.updateById(water);
|
}
|
}
|
return AjaxResult.success("操作成功");
|
}
|
}
|
return AjaxResult.error("操作失败");
|
} catch (Exception e) {
|
log.error("操作失败", e);
|
throw new RuntimeException(e);
|
}
|
}
|
|
/**
|
* 所有公司体检收费数据查询接口
|
*/
|
@GetMapping
|
@ApiOperation(value = "所有公司体检收费数据查询接口")
|
public AjaxResult list(@RequestParam(required = false) @ApiParam(value = "单位id") String compId) {
|
|
List<TjReservation> rightList = reservationService.list(new LambdaQueryWrapper<TjReservation>().eq(TjReservation::getCompanyId, compId));
|
|
Map<String, List<TjReservation>> collect = rightList.stream().collect(Collectors.groupingBy(TjReservation::getPacId));
|
|
if (!collect.isEmpty()) {
|
for (Map.Entry<String, List<TjReservation>> entry : collect.entrySet()) {
|
BigDecimal compPay = new BigDecimal("0.00");
|
for (TjReservation reservation : entry.getValue()) {
|
TjDwGrouping dwGrouping = dwGroupingService.getById(reservation.getGroupingId());
|
compPay = compPay.add(dwGrouping.getYsPrice());
|
}
|
LambdaQueryWrapper<TjTeamSelectRecord> wq = new LambdaQueryWrapper<>();
|
wq.eq(TjTeamSelectRecord::getTeamNo, entry.getValue().get(0).getTeamNo());
|
wq.eq(TjTeamSelectRecord::getPacId, entry.getKey());
|
wq.eq(TjTeamSelectRecord::getCompId,compId);
|
TjTeamSelectRecord recordServiceOne = selectRecordService.getOne(wq);
|
if (null == recordServiceOne) {
|
TjTeamSelectRecord selectRecord = new TjTeamSelectRecord();
|
selectRecord.setCompId(compId);
|
selectRecord.setPacId(entry.getKey());
|
selectRecord.setTeamNo(entry.getValue().get(0).getTeamNo());
|
selectRecord.setTransactionAmount(new BigDecimal("0.00"));
|
selectRecord.setCopeWith(compPay);
|
selectRecord.setCount(entry.getValue().size());
|
selectRecord.setDifference(compPay);
|
selectRecordService.save(selectRecord);
|
}
|
}
|
}
|
|
LambdaQueryWrapper<TjTeamSelectRecord>wq0=new LambdaQueryWrapper<>();
|
if(null !=compId){
|
wq0.eq(TjTeamSelectRecord::getCompId,compId);
|
}
|
List<TjTeamSelectRecord> selectRecordList = selectRecordService.list(wq0);
|
if(null !=selectRecordList && !selectRecordList.isEmpty()){
|
for(TjTeamSelectRecord selectRecord : selectRecordList){
|
selectRecord.setSjCount(orderService.count(new LambdaQueryWrapper<TjOrder>()
|
.eq(TjOrder::getTeamNo,selectRecord.getTeamNo()).eq(TjOrder::getPacId,selectRecord.getPacId())));
|
|
TjDwGrouping dwGrouping = dwGroupingService.getById(selectRecord.getPacId());
|
if(null !=dwGrouping){
|
selectRecord.setPacName(dwGrouping.getGroupingName());
|
selectRecord.setSigningPrice(dwGrouping.getSigningPrice());
|
}
|
LambdaQueryWrapper<TjCompPay>wq1=new LambdaQueryWrapper<>();
|
wq1.eq(TjCompPay::getCompId,compId);
|
wq1.eq(TjCompPay::getTeamNo,selectRecord.getTeamNo());
|
wq1.eq(TjCompPay::getPacId,selectRecord.getPacId());
|
List<TjCompPay> compPay = compPayService.list(wq1);
|
BigDecimal sumZje = compPayService.sumZje(compId,selectRecord.getTeamNo(),selectRecord.getPacId());
|
List<String> SerialNumbers = compPayService.serialNumbers(compId,selectRecord.getTeamNo(),selectRecord.getPacId());
|
if (null !=compPay && !compPay.isEmpty()) {
|
selectRecord.setTransactionAmount(sumZje);
|
selectRecord.setDifference(selectRecord.getCopeWith().subtract(sumZje));
|
selectRecord.setYjsrs(tjFlowingWaterService.count(new LambdaQueryWrapper<TjFlowingWater>()
|
.in(TjFlowingWater::getJsdh,SerialNumbers)));
|
}else {
|
selectRecord.setYjsrs(0);
|
}
|
}
|
}
|
return AjaxResult.success(selectRecordList);
|
}
|
|
|
|
/**
|
* 所有公司体检收费数据查询接口
|
*/
|
@GetMapping("/getTeamTjPeopleList")
|
@ApiOperation(value = "根据团队体检编号团队人员体检情况查询")
|
public AjaxResult getTeamTjPeopleList(@RequestParam @ApiParam(value = "团队编号") String teamNo,
|
@RequestParam(required = false) @ApiParam(value = "单位id") String pacId) {
|
|
try {
|
Map<String,Object> map=new HashMap<>();
|
LambdaQueryWrapper<TjReservation> wrapper = new LambdaQueryWrapper<>();
|
wrapper.eq(TjReservation::getTeamNo, teamNo);
|
if(StringUtil.isNotBlank(pacId))wrapper.eq(TjReservation::getPacId, pacId);
|
List<TjReservation> reservationList = reservationService.list(wrapper);
|
if (null != reservationList && !reservationList.isEmpty()) {
|
List<TeamTjPeopleVo> syList = new ArrayList<>();
|
List<TeamTjPeopleVo> yjwjzList = new ArrayList<>();
|
List<TeamTjPeopleVo> wjList = new ArrayList<>();
|
for (TjReservation reservation : reservationList) {
|
TeamTjPeopleVo vo = new TeamTjPeopleVo();
|
vo.setName(reservation.getName());
|
vo.setXb(reservation.getSex().toString());
|
vo.setDh(reservation.getPhoe());
|
TjCustomer customer = null;
|
try {
|
customer = customerService.getTjCustomerByCusIdCard( reservation.getIdCard());
|
} catch (Exception e) {
|
log.error("根据团队编号查询团队预约信息异常"+reservation.getIdCard());
|
throw new RuntimeException(e);
|
}
|
if (null != customer) {
|
TjOrder tjOrder = orderService.getOne(new LambdaQueryWrapper<TjOrder>().eq(TjOrder::getUserId, customer.getCusId()).eq(TjOrder::getTeamNo, teamNo));
|
if (null != tjOrder) {
|
TjFlowingWater water = tjFlowingWaterService.getOne(new LambdaQueryWrapper<TjFlowingWater>()
|
.eq(TjFlowingWater::getOrderId, tjOrder.getOrderId()).eq(TjFlowingWater::getIsAddition, "N"));
|
if(null != water && water.getSfjs().equals("0") && water.getJsrq() ==null){
|
vo.setTjh(tjOrder.getTjNumber());
|
int sfwc = remarkService.panduaniswancheng(tjOrder.getTjNumber());
|
if (sfwc==0) {
|
vo.setTjStatus("已完成");
|
vo.setTjTime(DateUtil.format(tjOrder.getCreateTime(),"yyyy-MM-dd"));
|
vo.setTjf(water.getPaidIn());
|
} else {
|
vo.setTjTime(DateUtil.format(tjOrder.getCreateTime(),"yyyy-MM-dd"));
|
vo.setTjf(water.getPaidIn());
|
vo.setTjStatus("在 检");
|
}
|
yjwjzList.add(vo);
|
}
|
} else {
|
vo.setTjStatus("未 检");
|
vo.setTjf(transitionService.sumNowPrice(reservation.getIdCard()));
|
wjList.add(vo);
|
}
|
}else {
|
vo.setTjStatus("未 检");
|
vo.setTjf(transitionService.sumNowPrice(reservation.getIdCard()));
|
wjList.add(vo);
|
}
|
syList.add(vo);
|
|
}
|
map.put("syList",syList);
|
map.put("yjwjzList",yjwjzList);
|
map.put("wjList",wjList);
|
return AjaxResult.success(map);
|
}
|
return AjaxResult.success(null);
|
} catch (Exception e) {
|
log.error("查询团队体检人员信息异常");
|
throw new RuntimeException(e);
|
}
|
}
|
|
|
|
@GetMapping("/getTjCompPay")
|
@ApiOperation(value = "根据团队体检编号和套餐id获取结账信息")
|
public AjaxResult getTjCompPay(@RequestParam @ApiParam(value = "团队编号") String teamNo,
|
@RequestParam(required = false) @ApiParam(value = "单位id") String pacId) {
|
|
try {
|
LambdaQueryWrapper<TjCompPay> wq = new LambdaQueryWrapper<>();
|
wq.eq(TjCompPay::getTeamNo, teamNo);
|
wq.eq(TjCompPay::getCompId, pacId);
|
List<TjCompPay> tjCompPays = compPayService.list(wq);
|
if(null !=tjCompPays && !tjCompPays.isEmpty()){
|
for (TjCompPay pay : tjCompPays) {
|
LambdaQueryWrapper<TjCompPayInfo> wqInfo = new LambdaQueryWrapper<>();
|
wqInfo.eq(TjCompPayInfo::getTjCompPayId, pay.getId());
|
List<TjCompPayInfo> payInfos = payInfoService.list(wqInfo);
|
pay.setPayInfo(payInfos);
|
}
|
}
|
return AjaxResult.success(tjCompPays);
|
} catch (Exception e) {
|
log.error("查询团队体检人员信息异常");
|
throw new RuntimeException(e);
|
}
|
}
|
}
|