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.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.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 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; /** * 查询该体检号对应的订单流水列表 */ @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.getFinishTime() !=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(); } String s = configService.selectConfigByKey("is_request_common_his_api"); if (null != s && s.equals("Y") && order.getTjType().equals("2")) { 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::getOrdPrice); wrapper.gt(TbTransition::getOrdPrice,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.getOrdPrice(); 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(); } } // if(!b){ // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); // } //extracted(tjFlowingWater, order, customer); 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("该订单已付款 无须再付"); } 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(); } /** * 删除体检流水 */ // @PreAuthorize("@ss.hasPermi('hosp:water:remove')") @Log(title = "体检流水", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable String[] ids) { return toAjax(tjFlowingWaterService.deleteTjFlowingWaterByIds(ids)); } /** * 体检(退费)页面查询接口 */ @GetMapping("/findTjRefundListByNameAndTjNumAndPhone") @ApiOperation(value = "体检(退费)页面查询接口") public AjaxResult findTjRefundListByNameAndTjNumAndPhone(@RequestParam(required = false) @ApiParam(value = "体检号") String tjNum, @RequestParam(required = false) @ApiParam(value = "体检人姓名") String tjName, @RequestParam(required = false) @ApiParam(value = "体检人手机号") String tjPhone) { if (null != tjName || null != tjPhone) { LambdaQueryWrapper wq0 = new LambdaQueryWrapper<>(); wq0.eq(TjCustomer::getCusName, tjName) .or() .eq(TjCustomer::getCusPhone, tjPhone); List customerList = customerService.list(wq0); if (null != customerList && customerList.size() > 0) { List tjRefundVoList = new ArrayList<>(); for (TjCustomer customer : customerList) { LambdaQueryWrapper wq1 = new LambdaQueryWrapper<>(); wq1.eq(TjOrder::getUserId, customer.getCusId()); wq1.eq(TjOrder::getCheckStatus, 0); wq1.orderByDesc(TjOrder::getCreateTime); List tjOrders = orderService.list(wq1); TjOrder order = null; if (null != tjOrders && tjOrders.size() > 0) { order = tjOrders.get(0); } if (null == order) { continue; } LambdaQueryWrapper wq2 = new LambdaQueryWrapper<>(); wq2.eq(TjOrderDetail::getOrderId, order.getOrderId()); wq2.isNotNull(TjOrderDetail::getFlowingWaterId); List detailList = detailService.list(wq2); if (null != detailList && detailList.size() > 0) { TjRefundVo tjRefundVo = new TjRefundVo(); tjRefundVo.setTjName(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("/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())); // wq1.eq(TjOrder::getCheckStatus, 0); wq1.isNotNull(TjOrder::getReportTime); wq1.orderByDesc(TjOrder::getCreateTime); List tjOrders = orderService.list(wq1); if (null != tjOrders && !tjOrders.isEmpty()) { for (TjOrder order : tjOrders) { TjCustomer customer = customerService.getById(order.getUserId()); 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); List list = tjFlowingWaterService.list(wq); for (TjFlowingWater water : list) { tjRefundVo.setTjFlowingWater(water); tjRefundVo.setTjNumber(order.getTjNumber()); tjRefundVo.setTjOrderId(String.valueOf(order.getOrderId())); TjCollectFeesVo vo = BeanUtil.copyProperties(tjRefundVo, TjCollectFeesVo.class); tjCollectFeesVoList.add(vo); } } } } 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("/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 (null != OrderId) { TjOrder order = orderService.getById(OrderId); if (null != order) { List tjProjectList = null; TjFlowingWater water = tjFlowingWaterService.getById(tjSerialNumber); if (type == 0) { if (StrUtil.isBlank(water.getJxbz())) tjProjectList = detailService.selectTjOrderDetailListByFlowingWaterIdIsNullAndJxbzIsNull(OrderId); else tjProjectList = detailService.selectTjOrderDetailListByFlowingWaterIdIsNullN(OrderId,water.getJxbz()); } else { if (StrUtil.isBlank(water.getJxbz())) tjProjectList = detailService.selectTjOrderDetailListByFlowingWaterIdIsNotNullAndJxbzIsNull(OrderId); else tjProjectList = detailService.selectTjOrderDetailListByFlowingWaterIdIsNotNullN(OrderId,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().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("/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.size() > 0) { List tjRefundProInfoVoList = new ArrayList<>(); for (TjOrderDetail detail : detailList) { TjProject project = projectService.getById(detail.getProId()); if (project.getProParentId() == 0) { // LambdaQueryWrapper wqq1 = new LambdaQueryWrapper<>(); // wqq1.eq(TbTransition::getCusId, customer.getCusIdcard()); // wqq1.eq(TbTransition::getParentProId, project.getProId()); // List tbTransitionList = transitionService.list(wqq1); // BigDecimal bigDecimal = new BigDecimal("0.00"); // BigDecimal bigDecimal1 = new BigDecimal("0.00"); // for (TbTransition transition : tbTransitionList) { // bigDecimal = bigDecimal.add(transition.getNowPrice()); // bigDecimal1 = bigDecimal1.add(transition.getOrdPrice()); // } 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()); 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 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(); } }