zjh
2023-12-18 d4b226bc63f56b7039deea20c0e1e120eb302e19
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjOrderController.java
@@ -4,6 +4,7 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.time.OffsetTime;
import java.util.*;
import java.util.List;
import java.util.stream.Collectors;
@@ -23,11 +24,18 @@
import com.ltkj.common.core.domain.entity.SysDept;
import com.ltkj.common.core.domain.entity.SysUser;
import com.ltkj.common.core.redis.RedisCache;
import com.ltkj.common.enums.DataSourceType;
import com.ltkj.common.utils.SecurityUtils;
import com.ltkj.framework.config.MatchUtils;
import com.ltkj.framework.config.UserHoder;
import com.ltkj.framework.datasource.DynamicDataSourceContextHolder;
import com.ltkj.hosp.domain.*;
import com.ltkj.hosp.mapper.TestMapper;
import com.ltkj.hosp.service.*;
import com.ltkj.hosp.sqlDomain.LtkjMiddleDetail;
import com.ltkj.hosp.sqlDomain.LtkjMiddleHead;
import com.ltkj.hosp.vodomain.BingZhongVO;
import com.ltkj.hosp.vodomain.HistoryTjOrder;
import com.ltkj.hosp.vodomain.QjDomainVo;
import com.ltkj.mall.domain.MallCheckLog;
import com.ltkj.mall.domain.MallOrder;
@@ -63,7 +71,7 @@
 */
@RestController
@RequestMapping("/hosp/order")
@Api(tags = "体检记录接口")
@Api(tags = "PC端 ----体检记录接口")
@Slf4j
public class TjOrderController extends BaseController {
    @Resource
@@ -92,8 +100,6 @@
    private String value;
    @Resource
    private ITjOrderRemarkService remarkService;
    @Resource
    private ITjTeamSelectRecordService selectRecordService;
    @Resource
    private TjAsyncService asyncService;
    @Resource
@@ -131,6 +137,18 @@
    @Autowired
    private ITjAskMedicalHistoryService tjAskMedicalHistoryService;
    @Autowired
    private ITjReportGetAddressService tjReportGetAddressService;
    @Resource
    private TestMapper testMapper;
    @Resource
    private LtkjMiddleDetailService middleDetailService;
    @Resource
    private LtkjMiddleHeadService headService;
    /**
@@ -432,6 +450,7 @@
                    LambdaQueryWrapper<TjOrder> wq = new LambdaQueryWrapper<>();
                    wq.isNotNull(TjOrder::getReportTime);
                    wq.eq(TjOrder::getUserId, customer.getCusId());
                    wq.eq(TjOrder::getHeshouStatus, 1); //核收状态为1才能打印
                    list.addAll(tjOrderService.list(wq));
                }
                List<TjOrder> collect = null;
@@ -483,6 +502,7 @@
        Page<TjOrder> page1 = new Page<>(pageNum, pageSize);
        LambdaQueryWrapper<TjOrder> wq = new LambdaQueryWrapper<>();
        wq.isNotNull(TjOrder::getReportTime);
        wq.eq(TjOrder::getHeshouStatus, 1);  //核收状态为1才能打印
        if (null != bgbeginTime && null != bgendTime) {
            wq.between(TjOrder::getCreateTime, DateUtil.beginOfDay(bgbeginTime), DateUtil.endOfDay(bgendTime));
        }
@@ -771,7 +791,7 @@
     */
    @PostMapping
    @ApiOperation(value = "体检签到登记接口")
    @Transactional
    //@Transactional  (切换数据库出错,所以注释)
    public AjaxResult addOrderAndDetail(@RequestBody TjOrder tjOrder) throws Exception {
        Long userId = Long.valueOf(SecurityUtils.getLoginUser().getUserId());
        SysUser sysUser = userService.getById(userId);
@@ -841,11 +861,18 @@
        if (null == tjOrder.getPacId() && null != transitionService.getTbTransitionPacIdByCusIdAndPac(String.valueOf(tjOrder.getUserId()))) {
            tjOrder.setPacId(transitionService.getTbTransitionPacIdByCusIdAndPac(String.valueOf(tjOrder.getUserId())));
        }
        //判断小程序上预约是否付钱
        if (null != mallOrder) tjOrder.setMallOrderId(String.valueOf(mallOrder.getId()));
        tjOrder.setStatus(TjConstants.TJ_BEGIN);
        if (tjOrderService.save(tjOrder)) {
            //保存收货地址
            if ("2".equals(tjOrder.getGetType())){
                final TjReportGetAddress address = tjOrder.getAddAddress();
                if (address!=null){
                    address.setTjNumber(tjNumber);
                    tjReportGetAddressService.save(address);
                }
            }
            Long cusNumber = tjCustomer.getCusNumber();
            cusNumber += 1;
            tjCustomer.setCusNumber(cusNumber);
@@ -857,6 +884,41 @@
                    tjFlowingWater.setPayStasus(3L);
                }
            }
            //调用SQL server拿取收费情况
            //根据配置调取存储过程 将临时表数据存入预约表2023.12.12
            final String getInfoFromSqlData = configService.selectConfigByKey("getInfoFromSqlData");
            if ("Y".equals(getInfoFromSqlData)){
                //查询是否his已收费  若收费则将流水表收费状态改成已收费
                LambdaQueryWrapper<LtkjMiddleHead> middleHeadLambdaQueryWrapper =new LambdaQueryWrapper<>();
                middleHeadLambdaQueryWrapper.eq(LtkjMiddleHead::getPatId,tjCustomer.getCusIdcard());
                middleHeadLambdaQueryWrapper.eq(LtkjMiddleHead::getIsCanceled,"N");
                middleHeadLambdaQueryWrapper.eq(LtkjMiddleHead::getIsChg,"Y");
                LtkjMiddleHead middleHead = headService.getOne(middleHeadLambdaQueryWrapper);
                if(null !=middleHead){
                    tjFlowingWater.setPayStasus(1L);
                }
                List<LtkjMiddleHead> one = testMapper.saveMiddleHeadByPatId(tjCustomer.getCusIdcard());
                if (one!=null){
                    for (LtkjMiddleHead ltkjMiddleHead : one) {
                        DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
                        headService.save(ltkjMiddleHead);
                        DynamicDataSourceContextHolder.clearDataSourceType();
                        List<LtkjMiddleDetail> detailList = testMapper.getMiddleDetailByHeadId(ltkjMiddleHead.getFeadId());
                        if (detailList!=null){
                            for (LtkjMiddleDetail ltkjMiddleDetail : detailList) {
                                DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
                                middleDetailService.save(ltkjMiddleDetail);
                                DynamicDataSourceContextHolder.clearDataSourceType();
                            }
                        }
                    }
                }
            }
            tjFlowingWater.setOrderId(tjOrder.getOrderId());
            Date date1 = new Date(System.currentTimeMillis());
            String s1 = SecurityUtils.getUsername() + new SimpleDateFormat("yyMMddHHmmssSSS").format(date1);
@@ -904,6 +966,30 @@
//                asyncService.newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
                newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
            }
            //调用SQL server拿取收费情况
            //根据配置调取存储过程 将临时表数据存入预约表2023.12.12
//            final String getInfoFromSqlData = configService.selectConfigByKey("getInfoFromSqlData");
//            if ("Y".equals(getInfoFromSqlData)){
//                List<LtkjMiddleHead> one = testMapper.saveMiddleHeadByPatId(tjCustomer.getCusIdcard());
//                if (one!=null){
//                    for (LtkjMiddleHead ltkjMiddleHead : one) {
//                        DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
//                        headService.save(ltkjMiddleHead);
//                        DynamicDataSourceContextHolder.clearDataSourceType();
//                        List<LtkjMiddleDetail> detailList = testMapper.getMiddleDetailByHeadId(ltkjMiddleHead.getFeadId());
//                        if (detailList!=null){
//                            for (LtkjMiddleDetail ltkjMiddleDetail : detailList) {
//                                DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
//                                middleDetailService.save(ltkjMiddleDetail);
//                                DynamicDataSourceContextHolder.clearDataSourceType();
//                            }
//                        }
//                    }
//
//                }
//            }
            return AjaxResult.success(tjNumber);
        }
        return AjaxResult.error();
@@ -1615,4 +1701,102 @@
        System.out.println("这段代码时间" + (System.currentTimeMillis() - l));
    }
    @PostMapping("/heXiaoByIds/{orderIds}")
    @ApiOperation(value = "核收报告——————总检审核通过后可以核销,核收后才能打印")
    @Transactional
    public AjaxResult heXiaoByIds(@PathVariable String[] orderIds) {
        for (String orderId : orderIds) {
            final TjOrder byId = tjOrderService.getById(orderId);
            byId.setHeshouStatus(1);
            byId.setHeshouDoctor(UserHoder.getLoginUser().getUserId());
            byId.setHeshouTime(new DateTime());
            final boolean b = tjOrderService.updateById(byId);
            if (!b){
                return AjaxResult.error("核收失败");
            }
        }
        return AjaxResult.success("核收成功");
    }
    @GetMapping("/getHistryTjOrderByCusIdCard")
    @ApiOperation(value = "根据身份证号查看历史体检记录")
    @Transactional
    public AjaxResult getHistryTjOrderByCusIdCard(@RequestParam String cusIdCard) {
        TjCustomer tjCustomer = tjCustomerService.getTjCustomerByCusIdCard(cusIdCard);
        List<HistoryTjOrder> list=new ArrayList<>();
        if(null !=tjCustomer){
            List<TjOrder> orderList = tjOrderService.getTjOrderListByCusId(tjCustomer.getCusId());
            for (TjOrder order : orderList) {
                HistoryTjOrder historyTjOrder=new HistoryTjOrder();
                historyTjOrder.setUserName(tjCustomer.getCusName());
                historyTjOrder.setTjNum(order.getTjNumber());
                historyTjOrder.setTjTime(order.getCreateTime());
                historyTjOrder.setTjProName(tjOrderService.getHistoryTjOrderProByTjNum(order.getTjNumber()));
                list.add(historyTjOrder);
            }
        }
        return AjaxResult.success(list);
    }
    @GetMapping("/getHistryTjOrderProByCusIdCard")
    @ApiOperation(value = "根据身份证号查看历史体检项目记录")
    @Transactional
    public AjaxResult getHistryTjOrderProByCusIdCard(@RequestParam String cusIdCard) {
        TjCustomer tjCustomer = tjCustomerService.getTjCustomerByCusIdCard(cusIdCard);
        if(null !=tjCustomer){
            TjOrder order= tjOrderService.getLastTjOrderListByCusId(tjCustomer.getCusId());
            if(null !=order){
                List<Map<String, Object>> list = new ArrayList<>();
                if(order.getPacId().equals("o")){
                    List<Long> longList = remarkService.getTjProIdsByTjNum(order.getTjNumber());
                    for (Long aLong : longList) {
                        Map<String, Object> map = new HashMap<>();
                        map.put("pacName", "单项");
                        map.put("proId",aLong);
                        map.put("pacId",null);
                        map.put("parentName", projectService.getById(aLong).getProName());
                        map.put("list",projectService.getTjProjectListBySoneId(String.valueOf(aLong)));
                        BigDecimal proPrice = projectService.getById(aLong).getProPrice();
                        map.put("ordPrice", proPrice);
                        map.put("nowPrice", proPrice);
                        list.add(map);
                    }
                }
                if(!order.getPacId().equals("o")){
                    List<Long> longList = remarkService.getTjProIdsByTjNumAndPacIc(order.getTjNumber(),order.getPacId());
                    TjPackage aPackage = tjPackageService.getById(order.getPacId());
                    for (Long aLong : longList) {
                        Map<String, Object> map = new HashMap<>();
                        map.put("pacName",aPackage.getPacName());
                        map.put("pacId",String.valueOf(aPackage.getPacId()));
                        map.put("parentName", projectService.getById(aLong).getProName());
                        map.put("list",projectService.getTjProjectListBySoneId(String.valueOf(aLong)));
                        BigDecimal proPrice = projectService.getById(aLong).getProPrice();
                        map.put("ordPrice", proPrice);
                        map.put("nowPrice",tjPackageProjectService.getPacProPriceByPacIdAndPro(aLong,order.getPacId()));
                        list.add(map);
                    }
                    List<Long> longList1 = remarkService.getTjProIdsByTjNumAndPacIc(order.getTjNumber(),order.getPacId());
                    for (Long aLong : longList1) {
                        Map<String, Object> map = new HashMap<>();
                        map.put("pacName", "单项");
                        map.put("proId",aLong);
                        map.put("pacId",null);
                        map.put("parentName", projectService.getById(aLong).getProName());
                        map.put("list",projectService.getTjProjectListBySoneId(String.valueOf(aLong)));
                        BigDecimal proPrice = projectService.getById(aLong).getProPrice();
                        map.put("ordPrice", proPrice);
                        map.put("nowPrice", proPrice);
                        list.add(map);
                    }
                }
                return AjaxResult.success(list);
            }
        }
        return AjaxResult.success("暂无历史记录");
    }
}