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.bean.BeanUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.extra.pinyin.PinyinUtil; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.ltkj.common.annotation.RepeatSubmit; import com.ltkj.common.core.domain.entity.SysDept; 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.ISysConfigService; import com.ltkj.system.service.ISysDeptService; import com.ltkj.system.service.ISysUserService; import com.ltkj.web.wxUtils.HttpClientUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import jodd.util.StringUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; 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; @Autowired private ISysConfigService configService; @Autowired private ISysDeptService sysDeptService; @Autowired private TjFlowingWaterHisService tjFlowingWaterHisService; @Autowired private ITjSamplingService tjSamplingService; @Autowired private TjOrderController tjOrderController; @Autowired private ITbTransitionService tbTransitionService; /** * 查询该体检号对应的订单流水列表 */ @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.isEmpty()) { 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 @RepeatSubmit 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()); if (order.getPrintLastTime() != null) { return AjaxResult.error("该人员报告已打印,不可补录项目!"); } TjCustomer customer = customerService.getById(order.getUserId()); if (null != tjFlowingWater.getTjProIds() && tjFlowingWater.getTjProIds().length > 0) { tjFlowingWater.setWaterId(PinyinUtil.getFirstLetter(customer.getCusName(), "").toUpperCase() + SecurityUtils.getUsername() + DateUtil.format(new Date(), "yyMMddHHmmssSSS")); tjFlowingWater.setIsAddition("Y"); if (tjFlowingWater.getPayStasus().toString().equals("0")) { tjFlowingWater.setPayStasus(0L); tjFlowingWater.setZfgf(tjFlowingWater.getPayStasus().toString()); } else { tjFlowingWater.setPayStasus(1L); } tjFlowingWater.setZfgf(tjFlowingWater.getPayStasus().toString()); if (tjFlowingWaterService.save(tjFlowingWater)) { Date dates = new Date(); String jxbz = DateUtil.format(dates, "yyyyMMddHHmmss") + order.getOrderId(); //异步单项收费明细 Boolean b = asyncService.iundividualCharges(tjFlowingWater, order, customer, sysUser, jxbz); if (!b) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return AjaxResult.error(); } if (tjFlowingWater.getPayStasus().equals(1L)) { detailService.updateTjOrderDetailsFlowingWaterIdByJxbz(order.getOrderId().toString(), jxbz, tjFlowingWater.getTjSerialNumber().toString()); remarkService.updateTjOrderRemarkSfbzByJxbz(order.getOrderId().toString(), jxbz, tjFlowingWater.getTjSerialNumber().toString()); } else { String s = configService.selectConfigByKey("is_request_common_his_api"); if (null != s && s.equals("Y")) { String apiUrl = configService.selectConfigByKey("common_api_url"); String hospbm = configService.selectConfigByKey("common_api_service_hospbm"); HashMap map = new HashMap<>(); map.put("pationId", customer.getPationId()); map.put("cardId", customer.getHisJzkh()); map.put("tjNum", tjFlowingWater.getTjSerialNumber()); map.put("kaiDanKs", "7805"); // 收费标志 1待售费 2待退费 map.put("shouTuiStatus", "1"); JSONArray array = JSONUtil.createArray(); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(TbTransition::getTjNum, order.getTjNumber()); wrapper.eq(TbTransition::getCusId, customer.getCusIdcard()); wrapper.eq(TbTransition::getCardId, customer.getCardId()); wrapper.eq(TbTransition::getJxbz, jxbz); wrapper.isNotNull(TbTransition::getNowPrice); wrapper.gt(TbTransition::getNowPrice, 0); List list = transitionService.list(wrapper); for (TbTransition transition : list) { LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); wrapper1.eq(TjProject::getProId, transition.getProId()); TjProject project = projectService.getOne(wrapper1); LambdaQueryWrapper wrapper2 = new LambdaQueryWrapper<>(); wrapper2.eq(SysDept::getDeptId, project.getDeptId()); SysDept dept = sysDeptService.getOne(wrapper2); JSONObject obj = JSONUtil.createObj(); BigDecimal danjia = transition.getNowPrice(); Integer sl = project.getSl(); BigDecimal allPrice = danjia.multiply(new BigDecimal(sl)); obj.putOpt("danJia", danjia); obj.putOpt("jieSuanJe", allPrice); obj.putOpt("shuliang", sl); obj.putOpt("zhiXingKs", dept.getDeptId()); obj.putOpt("zhiXingKsMc", dept.getDeptName()); obj.putOpt("shouFeiXmId", project.getHisXmbm()); obj.putOpt("shouFeiXmMc", project.getHisXmmc()); // obj.putOpt("zhiXingKs","7805"); // obj.putOpt("zhiXingKsMc","体检科"); // obj.putOpt("shouFeiXmId","4735346"); // obj.putOpt("shouFeiXmMc","体检费"); array.add(obj); } map.put("feiYongInfoList", array); String post = HttpClientUtils.sendPost(apiUrl + "/api/his/" + hospbm + "/creatCostInfo", map); JSONObject object = JSONUtil.parseObj(post); if (object.getInt("code") == 200) { JSONObject data = object.getJSONObject("data"); tjFlowingWater.setHisWaterId(data.getStr("feiYongId")); JSONArray mxList = data.getJSONArray("mxList"); if (mxList != null && mxList.size() > 0) { List his = mxList.toList(TjFlowingWaterHis.class); tjFlowingWaterHisService.saveBatch(his); } tjFlowingWaterService.updateById(tjFlowingWater); } else { return AjaxResult.error(); } } } Map map = new HashMap<>(); map.put("waterId", tjFlowingWater.getWaterId()); map.put("mobanId", reportService.getMoBanIds()); tjFlowingWaterService.getTjBlCall(order.getTjNumber()); 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); // } detailService.updateTjOrderDetailsFlowingWaterIdByJxbzisnull(String.valueOf(order.getOrderId()), String.valueOf(tjFlowingWater.getTjSerialNumber())); remarkService.updateTjOrderRemarkSfbzByJxbzisnull(order.getOrderId().toString(), tjFlowingWater.getTjSerialNumber().toString()); LambdaQueryWrapper wq3 = new LambdaQueryWrapper<>(); wq3.eq(TjOrderDetail::getOrderId, tjFlowingWater.getOrderId()); wq3.isNotNull(TjOrderDetail::getFlowingWaterId); List detailList = detailService.list(wq3); if (null != detailList && !detailList.isEmpty()) { 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.isEmpty()) { // extracted(order, list2, tbTransitionList); //异步添加收费明细 asyncService.collectFees(order, list2, tbTransitionList, sysUser, tjFlowingWater.getDiscount()); Map map = new HashMap<>(); map.put("waterId", tjFlowingWater.getWaterId()); map.put("mobanId", reportService.getMoBanIds()); return AjaxResult.success("收费成功", map); } } return AjaxResult.success("该用户已收费不可重复收费"); } return AjaxResult.error(); } @PutMapping("supper") @ApiOperation(value = "体检点击强制收费按钮接口") @Transactional @RepeatSubmit public AjaxResult supperEdit(@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()); if (order.getPrintLastTime() != null) { return AjaxResult.error("该人员报告已打印,不可补录项目!"); } TjCustomer customer = customerService.getById(order.getUserId()); if (null != tjFlowingWater.getTjProIds() && tjFlowingWater.getTjProIds().length > 0) { tjFlowingWater.setWaterId(PinyinUtil.getFirstLetter(customer.getCusName(), "").toUpperCase() + SecurityUtils.getUsername() + DateUtil.format(new Date(), "yyMMddHHmmssSSS")); tjFlowingWater.setIsAddition("Y"); if (tjFlowingWaterService.save(tjFlowingWater)) { Date dates = new Date(); String jxbz = DateUtil.format(dates, "yyyyMMddHHmmss") + order.getOrderId(); //异步单项收费明细 Boolean b = asyncService.iundividualCharges(tjFlowingWater, order, customer, sysUser, jxbz); if (!b) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return AjaxResult.error(); } Map map = new HashMap<>(); map.put("waterId", tjFlowingWater.getWaterId()); map.put("mobanId", reportService.getMoBanIds()); return AjaxResult.success("收费成功", map); } } // if (flowingWater.getPayStasus() == 1) { // return AjaxResult.success("该订单已付款 无须再付"); // } String s = configService.selectConfigByKey("is_request_common_his_api"); // if (null != s && s.equals("Y") && order.getTjType().equals("2") && StrUtil.isNotBlank(tjFlowingWater.getHisWaterId())) { tjFlowingWater.setPayStasus(1L); tjFlowingWater.setCopeWith(null); tjFlowingWater.setPaidIn(null); // } 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); // } if (StrUtil.isBlank(flowingWater.getJxbz())) { detailService.updateTjOrderDetailsFlowingWaterIdByJxbzisnull(String.valueOf(order.getOrderId()), String.valueOf(tjFlowingWater.getTjSerialNumber())); remarkService.updateTjOrderRemarkSfbzByJxbzisnull(order.getOrderId().toString(), tjFlowingWater.getTjSerialNumber().toString()); } else { detailService.updateTjOrderDetailsFlowingWaterIdByJxbz(String.valueOf(order.getOrderId()), flowingWater.getJxbz(), String.valueOf(tjFlowingWater.getTjSerialNumber())); remarkService.updateTjOrderRemarkSfbzByJxbz(order.getOrderId().toString(), flowingWater.getJxbz(), tjFlowingWater.getTjSerialNumber().toString()); } LambdaQueryWrapper wq3 = new LambdaQueryWrapper<>(); wq3.eq(TjOrderDetail::getOrderId, tjFlowingWater.getOrderId()); wq3.isNotNull(TjOrderDetail::getFlowingWaterId); List detailList = detailService.list(wq3); if (null != detailList && !detailList.isEmpty()) { 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.isEmpty()) { // extracted(order, list2, tbTransitionList); //异步添加收费明细 // asyncService.collectFees(order, list2, tbTransitionList, sysUser, tjFlowingWater.getDiscount()); Map map = new HashMap<>(); map.put("waterId", tjFlowingWater.getWaterId()); map.put("mobanId", reportService.getMoBanIds()); SysUser user = null; if (flowingWater.getCreateId() != null) user = userService.getById(flowingWater.getCreateId()); else user = userService.getById(1L); TjOrder tjOrder = orderService.getById(flowingWater.getOrderId()); List detailList1 = detailService.getCaiYangDengJi(flowingWater.getOrderId()); tjOrderController.addCaiYangDengJi(detailList1, !detailList1.isEmpty(), tjOrder, user, null); return AjaxResult.success("收费成功", map); } } return AjaxResult.success("该用户已收费不可重复收费"); } return AjaxResult.error(); } @PutMapping("refund") @ApiOperation(value = "体检点击强制退费按钮接口") @Transactional @RepeatSubmit public AjaxResult refundEdit(@RequestBody String json) { JSONObject parseObj = JSONUtil.parseObj(json); String tjSerialNumber = parseObj.getStr("tjSerialNumber"); TjFlowingWater tjFlowingWater = tjFlowingWaterService.getById(tjSerialNumber); Long orderId = tjFlowingWater.getOrderId(); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(TjOrderRemark::getSfbz, tjSerialNumber); List list = remarkService.list(wrapper); if (list.isEmpty()) { return AjaxResult.error("该人员没有已收费项目"); } String tjNumber = list.get(0).getTjNumber(); List proIds = list.stream().map(TjOrderRemark::getProId).collect(Collectors.toList()); LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); wrapper1.eq(TjSampling::getTjNum, tjNumber); wrapper1.in(TjSampling::getProId, proIds); wrapper1.eq(TjSampling::getIsSignFor, "0"); List samplings = tjSamplingService.list(wrapper1); if (!samplings.isEmpty()) return AjaxResult.error("该人员此单中存在已做的化验项目,不可退费"); if (StrUtil.isBlank(tjFlowingWater.getJxbz())) { LambdaUpdateWrapper wrapper2 = new LambdaUpdateWrapper<>(); wrapper2.set(TjOrderDetail::getFlowingWaterId, null) .set(TjOrderDetail::getUpdateTime, new Date()) .eq(TjOrderDetail::getOrderId, orderId) .isNull(TjOrderDetail::getJxbz); detailService.update(wrapper2); LambdaUpdateWrapper wrapper3 = new LambdaUpdateWrapper<>(); // wrapper3 } else { // detailService.updateTjOrderDetailsFlowingWaterIdByJxbz(String.valueOf(order.getOrderId()), flowingWater.getJxbz(), String.valueOf(tjFlowingWater.getTjSerialNumber())); // remarkService.updateTjOrderRemarkSfbzByJxbz(order.getOrderId().toString(), flowingWater.getJxbz(), tjFlowingWater.getTjSerialNumber().toString()); } return AjaxResult.success(); } /** * 删除体检流水 */ // @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.like(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(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 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(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 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("/findTjRefundListByNameAndTjNumAndPhone2") @ApiOperation(value = "体检(退费)页面查询接口") public AjaxResult findTjRefundListByNameAndTjNumAndPhone2(@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.like(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 wrapper = new LambdaQueryWrapper<>(); wrapper.eq(TjFlowingWater::getOrderId, order.getOrderId()); wrapper.eq(TjFlowingWater::getPayStasus, 1L); List list = tjFlowingWaterService.list(wrapper); for (TjFlowingWater water : list) { 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()); tjRefundVo.setTotalAmount(water.getPaidIn()); tjRefundVo.setTjFlowingWater(water); 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 wrapper = new LambdaQueryWrapper<>(); wrapper.eq(TjFlowingWater::getOrderId, order.getOrderId()); wrapper.eq(TjFlowingWater::getPayStasus, 1L); List list = tjFlowingWaterService.list(wrapper); TjCustomer customer = customerService.getById(order.getUserId()); for (TjFlowingWater water : list) { 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()); tjRefundVo.setTotalAmount(water.getPaidIn()); tjRefundVo.setTjFlowingWater(water); 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.isEmpty()) { 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.isEmpty()) { for (TjOrder order : tjOrders) { LambdaQueryWrapper wq2 = new LambdaQueryWrapper<>(); wq2.eq(TjOrderDetail::getOrderId, order.getOrderId()); List detailList = detailService.list(wq2); if (null != detailList && !detailList.isEmpty()) { 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 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); } } } } 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.isEmpty()) { 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.isEmpty()) { 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() .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("/findTjCollectFeesByNameAndTjNumAndPhoneN") @ApiOperation(value = "体检(收费)页面查询接口") public AjaxResult findTjCollectFeesByNameAndTjNumAndPhoneNew(@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.isEmpty()) { LambdaQueryWrapper wq1 = new LambdaQueryWrapper<>(); wq1.in(TjOrder::getUserId, customerList.stream().map(TjCustomer::getCusId).collect(Collectors.toList())); List tjOrders = orderService.list(wq1); if (null != tjOrders && !tjOrders.isEmpty()) { for (TjOrder order : tjOrders) { LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.eq(TjFlowingWater::getOrderId, order.getOrderId()); List list = tjFlowingWaterService.list(wq); for (TjFlowingWater water : list) { TjCustomer customer = customerService.getById(order.getUserId()); TjCollectFeesVo tjRefundVo = new TjCollectFeesVo(); tjRefundVo.setTjType(order.getTjType()); tjRefundVo.setTjCusId(String.valueOf(customer.getCusId())); tjRefundVo.setTjName(customer.getCusName()); tjRefundVo.setTjPhone(customer.getCusPhone()); tjRefundVo.setSex(String.valueOf(customer.getCusSex())); tjRefundVo.setIdCard(customer.getCusIdcard()); tjRefundVo.setTjComp(order.getFirmName()); tjRefundVo.setTjFlowingWater(water); 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); List orderList = orderService.list(wq1); if (null != orderList && !orderList.isEmpty()) { for (TjOrder order : orderList) { LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.eq(TjFlowingWater::getOrderId, order.getOrderId()); List list = tjFlowingWaterService.list(wq); for (TjFlowingWater water : list) { TjCustomer customer = customerService.getById(order.getUserId()); TjCollectFeesVo tjRefundVo = new TjCollectFeesVo(); tjRefundVo.setTjType(order.getTjType()); tjRefundVo.setTjCusId(String.valueOf(customer.getCusId())); tjRefundVo.setTjName(customer.getCusName()); tjRefundVo.setTjPhone(customer.getCusPhone()); tjRefundVo.setSex(String.valueOf(customer.getCusSex())); tjRefundVo.setIdCard(customer.getCusIdcard()); tjRefundVo.setTjComp(order.getFirmName()); tjRefundVo.setTjFlowingWater(water); tjRefundVo.setTjNumber(order.getTjNumber()); tjRefundVo.setTjOrderId(String.valueOf(order.getOrderId())); // TjCollectFeesVo vo = BeanUtil.copyProperties(tjRefundVo, TjCollectFeesVo.class); 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); } String pacId = transitionService.selectPacIdByTbTransitionTjNumAndProId(order.getTjNumber(), order.getCardId()); String s = tjFlowingWaterService.getDiscount(OrderId); if (null != tjProjectList && !tjProjectList.isEmpty()) { for (TjProject project : tjProjectList) { if (project.getProParentId() == 0) { if (null != pacId) { TjPackageProject pp = tjPackageProjectService.getOne(new LambdaQueryWrapper().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 list = tjFlowingWaterService.list(new LambdaQueryWrapper() .eq(TjFlowingWater::getOrderId, order) .eq(TjFlowingWater::getPayStasus, 2)); if (null != list && !list.isEmpty()) { List projectList = projectService.getTjProListByPacIdAndDeptId(pacId); if (null != projectList && !projectList.isEmpty()) { 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("/findTjChargedButNotChargedByTjNumN") @ApiOperation(value = "体检已收费未收费信息查询接口") public AjaxResult findTjChargedButNotChargedByTjNumN(@RequestParam @ApiParam(value = "0未缴费1已缴费") Integer type, @RequestParam @ApiParam(value = "体检号") String OrderId, @RequestParam String tjSerialNumber) { if (StringUtil.isNotBlank(OrderId)) { TjOrder order = orderService.getById(OrderId); if (null != order) { List tjProjectList = new ArrayList<>(); List remarkList = null; LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(TjFlowingWater::getTjSerialNumber, tjSerialNumber); // wrapper.eq(TjFlowingWater::getPayStasus,type); TjFlowingWater water = tjFlowingWaterService.getOne(wrapper); if (water == null) return AjaxResult.success(tjProjectList); if (type == 0) { if (StrUtil.isBlank(water.getJxbz())) // tjProjectList = detailService.selectTjOrderDetailListByFlowingWaterIdIsNullAndJxbzIsNull(OrderId); remarkList = remarkService.shoufeiyemianweishoufei(order.getTjNumber(), null); // else tjProjectList = detailService.selectTjOrderDetailListByFlowingWaterIdIsNullN(OrderId,water.getJxbz()); else remarkList = remarkService.shoufeiyemianweishoufei(order.getTjNumber(), water.getJxbz()); } else { if (StrUtil.isBlank(water.getJxbz())) // tjProjectList = detailService.selectTjOrderDetailListByFlowingWaterIdIsNotNullAndJxbzIsNull(OrderId); remarkList = remarkService.shoufeiyemianyishoufei(order.getTjNumber(), null); // else tjProjectList = detailService.selectTjOrderDetailListByFlowingWaterIdIsNotNullN(OrderId,water.getJxbz()); else remarkList = remarkService.shoufeiyemianyishoufei(order.getTjNumber(), water.getJxbz()); } // String pacId = transitionService.selectPacIdByTbTransitionTjNumAndProId(order.getTjNumber(),order.getCardId()); // String s = tjFlowingWaterService.getDiscount(OrderId); /* if (null != tjProjectList && !tjProjectList.isEmpty()) { for (TjProject project : tjProjectList) { if (project.getProParentId() == 0) { if (null != pacId) { TjPackageProject pp = tjPackageProjectService.getOne(new LambdaQueryWrapper().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()); project.setProOrdPrice(project.getProPrice().multiply(new BigDecimal(s))); } } else { project.setProPrice(project.getProPrice()); project.setProOrdPrice(project.getProPrice().multiply(new BigDecimal(s))); } } } List list = tjFlowingWaterService.list(new LambdaQueryWrapper() .eq(TjFlowingWater::getOrderId, order) .eq(TjFlowingWater::getPayStasus, 2)); if (null != list && !list.isEmpty()) { List projectList = projectService.getTjProListByPacIdAndDeptId(pacId); if(null !=projectList && !projectList.isEmpty()){ for (TjProject project : projectList) { project.setProOrdPrice(tjPackageProjectService.getPacProPriceByPacIdAndPro(project.getProId(),pacId) .multiply(new BigDecimal(s))); tjProjectList.add(project); } } } } */ if (!remarkList.isEmpty()) { for (TjOrderRemark remark : remarkList) { TjProject tjProject = projectService.getById(remark.getProId()); BigDecimal newdecimal = transitionService.getTbTransitionNewPriceByTjNumAndParentId(remark.getTjNumber(), remark.getProId().toString()); BigDecimal orddecimal = transitionService.getTbTransitionOrdPriceByTjNumAndParentId(remark.getTjNumber(), remark.getProId().toString()); tjProject.setProOrdPrice(orddecimal); tjProject.setProPrice(newdecimal); tjProjectList.add(tjProject); } } 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); String pacId = transitionService.selectPacIdByTbTransitionTjNumAndProId(tjOrder.getTjNumber(), tjOrder.getCardId()); if (null != detailList && !detailList.isEmpty()) { 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()); // } String s = tjFlowingWaterService.getDiscount(orderId); TjRefundProInfoVo proInfoVo = new TjRefundProInfoVo(); if (null != pacId) { TjPackageProject pp = tjPackageProjectService.getOne(new LambdaQueryWrapper().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()); // TjFlowingWater water = tjFlowingWaterService.getById(detail.getFlowingWaterId()); // String tollCollectorId = water.getTollCollectorId(); // SysUser user = userService.getById(tollCollectorId); // proInfoVo.setTollCollector(user.getNickName()); proInfoVo.setProName(project.getProName()); proInfoVo.setProId(String.valueOf(project.getProId())); tjRefundProInfoVoList.add(proInfoVo); } } return AjaxResult.success(tjRefundProInfoVoList); } } return AjaxResult.success("体检已全部完成或已失效"); } /** * 体检退费项目查询接口 */ @GetMapping("/getTjRefundProInfoVoList2") @ApiOperation(value = "体检退费项目详情查询接口") @Transactional public AjaxResult getTjRefundProInfoVoList2(@RequestParam @ApiParam(value = "体检订单id") String orderId) { TjOrder tjOrder = orderService.getById(orderId); if (null == tjOrder) return AjaxResult.error("该体检记录不存在"); if (tjOrder.getCheckStatus() == 0 && tjOrder.getReportTime() == null) { List tjRefundProInfoVoList = new ArrayList<>(); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(TjFlowingWater::getOrderId, tjOrder.getOrderId()); wrapper.eq(TjFlowingWater::getPayStasus, 1L); List list = tjFlowingWaterService.list(wrapper); if (list.isEmpty()) return AjaxResult.error("没有收费项目"); for (TjFlowingWater water : list) { LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); wrapper1.eq(TjOrderRemark::getTjNumber, tjOrder.getTjNumber()); if (StrUtil.isNotBlank(water.getJxbz())) wrapper1.eq(TjOrderRemark::getJxbz, water.getJxbz()); else wrapper1.isNull(TjOrderRemark::getJxbz); wrapper1.isNotNull(TjOrderRemark::getSfbz); List list1 = remarkService.list(wrapper1); for (TjOrderRemark remark : list1) { TjProject project = projectService.getById(remark.getProId()); QueryWrapper wrapper2 = new QueryWrapper<>(); wrapper2.select("sum(now_price) as now_price"); wrapper2.eq("tj_num", remark.getTjNumber()); wrapper2.eq("parent_pro_id", remark.getProId()); wrapper2.groupBy("parent_pro_id"); TbTransition transition = tbTransitionService.getOne(wrapper2); TjRefundProInfoVo proInfoVo = new TjRefundProInfoVo(); proInfoVo.setNetReceipts(transition.getNowPrice()); proInfoVo.setPrice(project.getProPrice()); proInfoVo.setCollectFeesTime(water.getUpdateTime()); proInfoVo.setProName(project.getProName()); proInfoVo.setProId(String.valueOf(project.getProId())); tjRefundProInfoVoList.add(proInfoVo); } } if (!tjRefundProInfoVoList.isEmpty()) 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 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); } } } LambdaQueryWrapper wqz = 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()); Map map = new HashMap<>(); map.put("waterId", tjFlowingWater.getWaterId()); map.put("mobanId", reportService.getMoBanId()); return AjaxResult.success("退费成功", map); } return AjaxResult.error(); } /** * 体检退费接口 */ @PostMapping("/tjRefund2") @ApiOperation(value = "体检退费按钮接口") @Transactional public AjaxResult tjRefund2(@RequestBody @ApiParam(value = "流水对象") TjFlowingWater tjFlowingWater) { if (null == tjFlowingWater.getRefundPros() || tjFlowingWater.getRefundPros().size() == 0) return AjaxResult.error("请选择退费项目"); TjOrder order = orderService.getById(tjFlowingWater.getOrderId()); List refundPros = tjFlowingWater.getRefundPros(); List proIds = refundPros.stream().map(TjProject::getProId).collect(Collectors.toList()); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.in(TjSampling::getProId, proIds); wrapper.eq(TjSampling::getTjNum, order.getTjNumber()); wrapper.eq(TjSampling::getIsSignFor, "0"); List list1 = tjSamplingService.list(wrapper); if (!list1.isEmpty()) 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()); tjFlowingWater.setTjSerialNumber(IdUtil.getSnowflake().nextId()); if (tjFlowingWaterService.save(tjFlowingWater)) { 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.isEmpty()) { 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); } } } LambdaUpdateWrapper wqz = new LambdaUpdateWrapper<>(); wqz.eq(TjOrderRemark::getTjNumber, order.getTjNumber()); wqz.eq(TjOrderRemark::getProId, refundPro.getProId()); wqz.set(TjOrderRemark::getSfbz, null); remarkService.update(wqz); } asyncService.tjRefund(refundPros, order.getTjNumber()); Map map = new HashMap<>(); map.put("waterId", tjFlowingWater.getWaterId()); map.put("mobanId", reportService.getMoBanId()); return AjaxResult.success("退费成功", map); } return AjaxResult.error(); } @GetMapping("/gettuantijiesuanrenyuan") @ApiOperation(value = "获取团体结算人员") public AjaxResult gettuantijiesuanrenyuan(@RequestParam(required = false) @ApiParam("单位ID") String dwId, @RequestParam(required = false) @ApiParam("登记开始时间") String djkssj, @RequestParam(required = false) @ApiParam("登记结束时间") String djjssj, @RequestParam(required = false) @ApiParam("结算开始时间") String jskssj, @RequestParam(required = false) @ApiParam("结算结束时间") String jsjssj, @RequestParam(required = false) @ApiParam("体检号") String tjh, @RequestParam(required = false) @ApiParam("结算人id") String jsrid, @ApiParam(value = "显示条数(默认10)") @RequestParam(defaultValue = "10") Integer pageSize, @ApiParam(value = "页码数(默认1)") @RequestParam(defaultValue = "1") Integer page) { if (StringUtil.isNotBlank(dwId)) dwId = ""; if (StringUtil.isNotBlank(djkssj)) djkssj = ""; if (StringUtil.isNotBlank(djjssj)) djjssj = ""; if (StringUtil.isNotBlank(jskssj)) jskssj = ""; if (StringUtil.isNotBlank(jsjssj)) jsjssj = ""; if (StringUtil.isNotBlank(tjh)) tjh = ""; if (StringUtil.isNotBlank(jsrid)) jsrid = ""; return AjaxResult.success(tjFlowingWaterService.gettuantijiesuanrenyuan(page, pageSize,dwId,djkssj, djjssj, jskssj, jsjssj, tjh, jsrid)); } @PostMapping("/tuantijiesuan") @ApiOperation(value = "团体结算") public AjaxResult tuantijiesuan(@RequestParam(required = false) @ApiParam("单位ID") List dwId) { return AjaxResult.success(); } }