无关风月
2025-01-10 2c258c39133435fa0e6e6da85d503982fd5a967d
optometrist/src/main/java/com/jilongda/optometrist/controller/TOptometristController.java
@@ -2,22 +2,29 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.jilongda.common.basic.ApiResult;
import com.jilongda.common.basic.PageInfo;
import com.jilongda.optometrist.authority.model.SecUser;
import com.jilongda.optometrist.authority.service.SecUserService;
import com.jilongda.optometrist.model.TOptometrist;
import com.jilongda.optometrist.model.*;
import com.jilongda.optometrist.query.TOptometristQuery;
import com.jilongda.optometrist.query.TOptometryQuery;
import com.jilongda.optometrist.query.TicketQuery;
import com.jilongda.optometrist.service.TLineUpService;
import com.jilongda.optometrist.service.TOptometristService;
import com.jilongda.optometrist.service.*;
import com.jilongda.optometrist.utils.LoginInfoUtil;
import com.jilongda.optometrist.vo.TOptometristVO;
import com.jilongda.optometrist.vo.*;
import com.sun.org.apache.bcel.internal.generic.NEW;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
@@ -40,41 +47,227 @@
    private LoginInfoUtil loginInfoUtil;
    @Autowired
    private SecUserService secUserService;
//    @ApiOperation(value = "首页")
//    @PostMapping(value = "/pageList")
//    public ApiResult<TOptometristVO> pageList() {
//        Long userId = loginInfoUtil.getUserId();
//
//        return ApiResult.success();
//    }
    @ApiOperation(value = "通过门店id查询验光师列表")
    @PostMapping(value = "/queryListByStoreId")
    public ApiResult<List<TOptometrist>> queryListByStoreId(@RequestParam Integer storeId) {
        List<TOptometrist> optometristVOPageInfo = optometristService.list(Wrappers.lambdaQuery(TOptometrist.class)
                .eq(TOptometrist::getStoreId,storeId));
        return ApiResult.success(optometristVOPageInfo);
    @Autowired
    private TStoreService storeService;
    @Autowired
    private TOptometryService optometryService;
    @Autowired
    private TAppUserService appUserService;
    @Autowired
    private TOrderService orderService;
    @Autowired
    private TOptometryDetailService optometryDetailService;
    @ApiOperation(value = "获取验光单分页列表",tags = "验光单")
    @PostMapping(value = "/pageList")
    public ApiResult<PageInfo<TOptometryVO>> pageList(@RequestBody TOptometryQuery query) {
        String startTime = null;
        String endTime = null;
        if (StringUtils.hasLength(query.getTime())){
            startTime = query.getTime()+" 00:00:00";
            endTime = query.getTime()+" 23:59:59";
        }
        query.setStartTime(startTime);
        query.setEndTime(endTime);
        PageInfo<TOptometryVO> tOptometryVOPageInfo = optometristService.pageList(query);
        return ApiResult.success(tOptometryVOPageInfo);
    }
    @ApiOperation(value = "验光记录详情")
    @GetMapping(value = "/detail")
    public ApiResult<TDetailVO> detail(Integer id) {
        TOptometry one = optometryService.getById(id);
        TAppUser byId = appUserService.getById(one.getUserId());
        TDetailVO tDetailVO = new TDetailVO();
        tDetailVO.setName(byId.getName());
        tDetailVO.setPhone(byId.getPhone());
        tDetailVO.setAvatar(byId.getAvatar());
        tDetailVO.setRealName(one.getRealName());
        tDetailVO.setAge(one.getAge());
        tDetailVO.setGender(one.getGender());
        // 查询消费次数,验光次数
        long l = optometryService.count(Wrappers.<TOptometry>lambdaQuery()
                .eq(TOptometry::getUserId, byId.getId())
                .eq(TOptometry::getStatus,3));
        tDetailVO.setOptometryCount((int) l);
        long count = orderService.count(Wrappers.<TOrder>lambdaQuery()
                .eq(TOrder::getUserId, byId.getId()));
        tDetailVO.setSaleCount((int) count);
        TOptometrist byId1 = optometristService.getById(one.getOptometristId());
        tDetailVO.setOptometristName(byId1.getName());
        TStore byId2 = storeService.getById(one.getStoreId());
        tDetailVO.setStoreName(byId2.getName());
        List<TOptometryDetail> list = optometryDetailService.lambdaQuery().eq(TOptometryDetail::getOptometryId, one.getId()).list();
        tDetailVO.setOptometryDetailVOS(list);
        tDetailVO.setCreateTime(one.getCreateTime());
        return ApiResult.success(tDetailVO);
    }
    @ApiOperation(value = "验光师添加")
    public static void main(String[] args) {
//        LocalDateTime now = LocalDateTime.now();
//        // 获取凌晨00:00:00和23:59:59
//        LocalDateTime startTime = now.withHour(0).withMinute(0).withSecond(0);
//        LocalDateTime endTime = now.withHour(23).withMinute(59).withSecond(59);
//        System.err.println(startTime);
//        System.err.println(endTime);
    }
    @ApiOperation(value = "首页")
    @PostMapping(value = "/index")
    public ApiResult<TOptometristVO> index() {
        TOptometristVO tOptometristVO = new TOptometristVO();
        Integer userId = loginInfoUtil.getUserId();
        TOptometrist optometrist = optometristService.getById(userId);
        TStore store = storeService.getById(optometrist.getStoreId());
        tOptometristVO.setStoreName(store.getName());
        tOptometristVO.setName(optometrist.getName());
        tOptometristVO.setPhone(optometrist.getPhone());
        LocalDateTime nowTime = LocalDateTime.now();
        // 获取凌晨00:00:00和23:59:59
        LocalDateTime startTime = nowTime.withHour(0).withMinute(0).withSecond(0);
        LocalDateTime endTime = nowTime.withHour(23).withMinute(59).withSecond(59);
        int size = optometryService.lambdaQuery().eq(TOptometry::getStoreId, optometrist.getId())
                .between(TOptometry::getCreateTime, startTime, endTime)
                .eq(TOptometry::getStatus, 3).list().size();
        tOptometristVO.setOptometryCount(size);
        // 查询今日的排号列表
        List<TLineUp> list = tLineUpService.lambdaQuery().eq(TLineUp::getStoreId, optometrist.getStoreId())
                .ne(TLineUp::getStatus, 3)
                .ne(TLineUp::getStatus, 5)
                .orderByAsc(TLineUp::getCode)
                .list();
        for (TLineUp tLineUp : list) {
            LocalDateTime now = LocalDateTime.now();
            LocalDateTime createTime = tLineUp.getCreateTime();
            long minutesDifference = createTime.until(now, java.time.temporal.ChronoUnit.MINUTES);
            if (minutesDifference < 0) {
                minutesDifference = 0;
            }
            tLineUp.setWaitTime((int) minutesDifference);
        }
        tOptometristVO.setList(list);
        return ApiResult.success(tOptometristVO);
    }
    @ApiOperation(value = "预约详情")
    @GetMapping(value = "/getLineUpDetail")
    public ApiResult<TLineUpDetailVO> getLineUpDetail(Integer id) {
        TLineUpDetailVO tLineUpDetailVO = new TLineUpDetailVO();
        TLineUp byId = tLineUpService.getById(id);
        BeanUtils.copyProperties(byId, tLineUpDetailVO);
        LocalDateTime now = LocalDateTime.now();
        LocalDateTime createTime = byId.getCreateTime();
        long minutesDifference = createTime.until(now, java.time.temporal.ChronoUnit.MINUTES);
        if (minutesDifference < 0) {
            minutesDifference = 0;
        }
        tLineUpDetailVO.setWaitTime((int) minutesDifference);
        if (byId.getUserId()!=null){
            TAppUser byId1 = appUserService.getById(byId.getUserId());
            if (byId1!=null){
                tLineUpDetailVO.setName(byId1.getName());
                tLineUpDetailVO.setPhone(byId1.getPhone());
                tLineUpDetailVO.setAvatar(byId1.getAvatar());
            }
            // 查询消费次数,验光次数
            long l = optometryService.count(Wrappers.<TOptometry>lambdaQuery()
                    .eq(TOptometry::getUserId, byId.getUserId())
                    .eq(TOptometry::getStatus,3));
            tLineUpDetailVO.setOptometryCount((int) l);
            long count = orderService.count(Wrappers.<TOrder>lambdaQuery()
                    .eq(TOrder::getUserId, byId.getUserId()));
            tLineUpDetailVO.setSaleCount((int) count);
        }
        return ApiResult.success(tLineUpDetailVO);
    }
    @ApiOperation(value = "开始验光")
    @GetMapping(value = "/startOptometry")
    public ApiResult startOptometry(Integer id) {
        Integer userId = loginInfoUtil.getUserId();
        List<TLineUp> list = tLineUpService.lambdaQuery().eq(TLineUp::getStatus, 2)
                .eq(TLineUp::getOptometristId, userId).list();
        if (!list.isEmpty()){
            return ApiResult.failed("当前还有未结束的验光单");
        }
        TLineUp lineUp = tLineUpService.getById(id);
        // 获取今天凌晨00:00:00和今日23:59:59
        Date start = new Date();
        start.setHours(0);
        start.setMinutes(0);
        start.setSeconds(0);
        Date end = new Date();
        end.setHours(23);
        end.setMinutes(59);
        end.setSeconds(59);
        List<TLineUp> lineUps = tLineUpService.lambdaQuery().eq(TLineUp::getStoreId, lineUp.getStoreId())
                .between(TLineUp::getCreateTime, start, end).list();
        for (TLineUp up : lineUps) {
            if (Integer.parseInt(up.getCode())<Integer.parseInt(lineUp.getCode())){
                up.setStatus(4);
            }
        }
        tLineUpService.updateBatchById(lineUps);
        lineUp.setStatus(2);
        lineUp.setOptometristId(userId);
        tLineUpService.updateById(lineUp);
        return ApiResult.success();
    }
    @ApiOperation(value = "取消排号")
    @GetMapping(value = "/cancelLineUp")
    public ApiResult cancelLineUp(Integer id) {
        TLineUp lineUp = tLineUpService.getById(id);
        lineUp.setStatus(5);
        tLineUpService.updateById(lineUp);
        TOptometry one = optometryService.lambdaQuery().eq(TOptometry::getLineUpId, lineUp.getId()).one();
        if (one!=null){
            one.setStatus(5);
            optometryService.updateById(one);
        }
        return ApiResult.success();
    }
    @ApiOperation(value = "填写验光信息完成")
    @PostMapping(value = "/add")
    public ApiResult<String> add(@RequestBody TOptometrist dto) {
        optometristService.save(dto);
    public ApiResult<String> add(@RequestBody TAddOptometryVO dto) {
        TLineUp byId = tLineUpService.getById(dto.getId());
        TAppUser byId1 = appUserService.getById(byId.getUserId());
        TOptometry tOptometry = new TOptometry();
        tOptometry.setUserId(byId.getUserId());
        tOptometry.setAge(byId.getAge());
        tOptometry.setGender(byId.getGender());
        if (byId1!=null){
            tOptometry.setPhone(byId1.getPhone());
        }
        tOptometry.setLineUpId(dto.getId());
        Integer userId = loginInfoUtil.getUserId();
        TOptometrist byId2 = optometristService.getById(userId);
        tOptometry.setRealName(byId.getUserName());
        tOptometry.setLineUpId(dto.getId());
        tOptometry.setOptometristId(userId);
        tOptometry.setStoreId(byId2.getStoreId());
        tOptometry.setStatus(3);
        optometryService.save(tOptometry);
        List<TOptometryDetail> tOptometryDetails = new ArrayList<>();
        for (TOptometryDetailVO optometryDetailVO : dto.getOptometryDetailVOS()) {
            TOptometryDetail tOptometryDetail = new TOptometryDetail();
            tOptometryDetail.setType(optometryDetailVO.getType());
            tOptometryDetail.setOptometryId(tOptometry.getId());
            tOptometryDetail.setBallMirror(optometryDetailVO.getBallMirror());
            tOptometryDetail.setColumnMirror(optometryDetailVO.getColumnMirror());
            tOptometryDetail.setAxis(optometryDetailVO.getAxis());
            tOptometryDetail.setAddS(optometryDetailVO.getAddS());
            tOptometryDetail.setPupilHeight(optometryDetailVO.getPupilHeight());
            tOptometryDetail.setPupilDistance(optometryDetailVO.getPupilDistance());
            tOptometryDetail.setCorrect(optometryDetailVO.getCorrect());
            tOptometryDetail.setStoreId(byId2.getStoreId());
            tOptometryDetail.setStatus(optometryDetailVO.getStatus());
            tOptometryDetails.add(tOptometryDetail);
        }
        optometryDetailService.saveBatch(tOptometryDetails);
        // 验光完成
        byId.setStatus(3);
        tLineUpService.updateById(byId);
        return ApiResult.success();
    }
    @ApiOperation(value = "验光师编辑")
    @PostMapping(value = "/update")
    public ApiResult<String> update(@RequestBody TOptometrist dto) {
        optometristService.updateById(dto);
        return ApiResult.success();
    }
    @ApiOperation(value = "验光师上下架")
    @GetMapping(value = "/upAndDown")
    public ApiResult<Boolean> upAndDown(@RequestParam Integer id,
                                        @RequestParam Integer status) {
        return ApiResult.success(optometristService.upAndDown(id,status));
    }
}