| | |
| | | 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 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.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static com.ltkj.framework.datasource.DynamicDataSourceContextHolder.log; |
| | |
| | | @Resource |
| | | private ITjTeamSelectRecordService selectRecordService; |
| | | @Resource |
| | | private ITjPackageService packageService; |
| | | @Resource |
| | | private IDictCompService compService; |
| | | @Resource |
| | | private ITjReservationService reservationService; |
| | |
| | | @Resource |
| | | private ITjCustomerService customerService; |
| | | @Resource |
| | | private ITjDwDeptService dwDeptService; |
| | | @Resource |
| | | private ITjDwGroupingService dwGroupingService; |
| | | @Resource |
| | | private ITjOrderRemarkService remarkService; |
| | | @Resource |
| | | private ITjFlowingWaterService tjFlowingWaterService; |
| | | @Resource |
| | | private ITbTransitionService transitionService; |
| | | /** |
| | | * 团体体检收费接口 |
| | | */ |
| | | @PostMapping |
| | | @ApiOperation(value = "团体体检收费接口") |
| | | public AjaxResult add(@RequestBody TjCompPayInfo compPayInfo) { |
| | | if (null==compPayInfo) { |
| | | return AjaxResult.error(); |
| | | @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); |
| | | } |
| | | compPayInfo.setPayee(String.valueOf(SecurityUtils.getLoginUser().getUser().getNickName())); |
| | | TjCompPay tjCompPay =compPayService.getById(compPayInfo.getTjCompPayId()); |
| | | BigDecimal paidIn = tjCompPay.getPaidIn(); |
| | | paidIn =paidIn.add(compPayInfo.getTransactionAmount()); |
| | | if(paidIn.compareTo(tjCompPay.getCopeWith())>0 || tjCompPay.getDifference().compareTo(BigDecimal.valueOf(0))==0){ |
| | | return AjaxResult.error("暂无收费需求"); |
| | | } |
| | | if (getAjaxResult(compPayInfo, tjCompPay)) return AjaxResult.success("收费成功"); |
| | | return AjaxResult.error("操作失败"); |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | @PostMapping("/refund") |
| | | @ApiOperation(value = "团体体检退费接口") |
| | | public AjaxResult refund(@RequestBody TjCompPayInfo compPayInfo) { |
| | | if (null==compPayInfo) { |
| | | return AjaxResult.error(); |
| | | } |
| | | compPayInfo.setPayee(String.valueOf(SecurityUtils.getLoginUser().getUser().getNickName())); |
| | | TjCompPay tjCompPay =compPayService.getById(compPayInfo.getTjCompPayId()); |
| | | BigDecimal paidIn = tjCompPay.getPaidIn(); |
| | | paidIn =paidIn.add(compPayInfo.getTransactionAmount()); |
| | | //判断实付金额和交易金额的数值 |
| | | if(paidIn.compareTo(BigDecimal.valueOf(0.00))==0 || compPayInfo.getTransactionAmount().compareTo(tjCompPay.getPaidIn())>0 ){ |
| | | return AjaxResult.error("暂无退费需求"); |
| | | } |
| | | compPayInfo.setTransactionAmount(BigDecimal.valueOf(0.00).subtract(compPayInfo.getTransactionAmount())); |
| | | compPayInfo.setPaymentMethod(3L); |
| | | if (getAjaxResult(compPayInfo, tjCompPay)) return AjaxResult.success("退费成功"); |
| | | return AjaxResult.error("操作失败"); |
| | | } |
| | | |
| | | private boolean getAjaxResult(@RequestBody TjCompPayInfo compPayInfo, TjCompPay tjCompPay) { |
| | | if(payInfoService.saveOrUpdate(compPayInfo)){ |
| | | LambdaQueryWrapper<TjCompPayInfo> wq=new LambdaQueryWrapper<>(); |
| | | wq.eq(TjCompPayInfo::getTjCompPayId,tjCompPay.getId()); |
| | | List<TjCompPayInfo> list = payInfoService.list(wq); |
| | | BigDecimal bigDecimal=new BigDecimal("0.00"); |
| | | if(null !=list && !list.isEmpty()){ |
| | | for (TjCompPayInfo payInfo : list) { |
| | | bigDecimal=bigDecimal.add(payInfo.getTransactionAmount()); |
| | | @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("操作成功"); |
| | | } |
| | | } |
| | | tjCompPay.setCreateBy(String.valueOf(SecurityUtils.getLoginUser().getUserId())); |
| | | if(bigDecimal.compareTo(BigDecimal.valueOf(0.00))>= 0){ |
| | | tjCompPay.setPaidIn(bigDecimal); |
| | | }else { |
| | | tjCompPay.setPaidIn(BigDecimal.valueOf(0.00)); |
| | | } |
| | | tjCompPay.setDifference(tjCompPay.getCopeWith().subtract(bigDecimal)); |
| | | compPayService.updateById(tjCompPay); |
| | | LambdaQueryWrapper<TjTeamSelectRecord>wq0=new LambdaQueryWrapper<>(); |
| | | wq0.eq(TjTeamSelectRecord::getTeamNo,tjCompPay.getTeamNo()); |
| | | wq0.eq(TjTeamSelectRecord::getCompId,tjCompPay.getCompId()); |
| | | TjTeamSelectRecord record = selectRecordService.getOne(wq0); |
| | | record.setTransactionAmount(tjCompPay.getPaidIn()); |
| | | selectRecordService.updateById(record); |
| | | return true; |
| | | return AjaxResult.error("操作失败"); |
| | | } catch (Exception e) { |
| | | log.error("操作失败", e); |
| | | throw new RuntimeException(e); |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | |
| | | wq.eq(TjTeamSelectRecord::getPacId, entry.getKey()); |
| | | wq.eq(TjTeamSelectRecord::getCompId,compId); |
| | | TjTeamSelectRecord recordServiceOne = selectRecordService.getOne(wq); |
| | | if (null != recordServiceOne) { |
| | | recordServiceOne.setPacId(entry.getKey()); |
| | | recordServiceOne.setCompId(compId); |
| | | recordServiceOne.setTeamNo(entry.getValue().get(0).getTeamNo()); |
| | | recordServiceOne.setTransactionAmount(new BigDecimal("0.00")); |
| | | recordServiceOne.setCount(entry.getValue().size()); |
| | | recordServiceOne.setDifference(compPay); |
| | | selectRecordService.updateById(recordServiceOne); |
| | | } else { |
| | | 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); |
| | |
| | | if(null !=compId){ |
| | | wq0.eq(TjTeamSelectRecord::getCompId,compId); |
| | | } |
| | | wq0.ne(TjTeamSelectRecord::getDifference,0); |
| | | List<TjTeamSelectRecord> selectRecordList = selectRecordService.list(wq0); |
| | | if(null !=selectRecordList && !selectRecordList.isEmpty()){ |
| | | for(TjTeamSelectRecord selectRecord : selectRecordList){ |
| | | TjDwGrouping dwGrouping = dwGroupingService.getById(selectRecord.getPacId()); |
| | | 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()); |
| | | TjCompPay compPay = compPayService.getOne(wq1); |
| | | if (null !=compPay) { |
| | | LambdaQueryWrapper<TjCompPayInfo>wq=new LambdaQueryWrapper<>(); |
| | | wq.eq(TjCompPayInfo::getTjCompPayId,compPay.getId()); |
| | | selectRecord.setPayInfoList(payInfoService.list(wq)); |
| | | selectRecord.setCopeWith(selectRecord.getDifference()); |
| | | selectRecord.setDifference(selectRecord.getDifference()); |
| | | selectRecord.setPayer(compService.getById(compPay.getCompId()).getContactPerson()); |
| | | selectRecord.setSjCount(orderService.count(new LambdaQueryWrapper<TjOrder>().eq(TjOrder::getTeamNo,compPay.getTeamNo()))); |
| | | TjCompPayInfo payInfo = new TjCompPayInfo(); |
| | | payInfo.setTjCompPayId(compPay.getId()); |
| | | selectRecord.setPayInfo(payInfo); |
| | | 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); |
| | | } |
| | | } |
| | | } |
| | |
| | | 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.getOne(new LambdaQueryWrapper<TjCustomer>().eq(TjCustomer::getCusIdcard, reservation.getIdCard())); |
| | | 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) { |
| | | int sfwc = remarkService.panduaniswancheng(tjOrder.getTjNumber()); |
| | | if (sfwc==0) { |
| | | vo.setTjStatus("已完成"); |
| | | vo.setTjTime(tjOrder.getCreateTime()); |
| | | } else { |
| | | vo.setTjStatus("在 检"); |
| | | 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); |
| | | } |
| | | 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); |
| | |
| | | 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); |
| | | } |
| | | } |
| | | } |