package com.jilongda.optometrist.controller; import com.baomidou.mybatisplus.core.toolkit.Wrappers; 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.*; import com.jilongda.optometrist.query.TOptometristQuery; import com.jilongda.optometrist.query.TOptometryQuery; import com.jilongda.optometrist.query.TicketQuery; import com.jilongda.optometrist.service.*; import com.jilongda.optometrist.utils.LoginInfoUtil; 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.List; /** *

* 验光师表 前端控制器 *

* * @author 无关风月 * @since 2024-12-09 */ @Api(tags = "验光师相关接口") @RestController @RequestMapping("/t-optometrist") public class TOptometristController { @Autowired private TOptometristService optometristService; @Autowired private TLineUpService tLineUpService; @Autowired private LoginInfoUtil loginInfoUtil; @Autowired private SecUserService secUserService; @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> 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 tOptometryVOPageInfo = optometristService.pageList(query); return ApiResult.success(tOptometryVOPageInfo); } @ApiOperation(value = "验光记录详情") @GetMapping(value = "/detail") public ApiResult 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.lambdaQuery() .eq(TOptometry::getUserId, byId.getId()) .eq(TOptometry::getStatus,3)); tDetailVO.setOptometryCount((int) l); long count = orderService.count(Wrappers.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 list = optometryDetailService.lambdaQuery().eq(TOptometryDetail::getOptometryId, one.getId()).list(); tDetailVO.setOptometryDetailVOS(list); tDetailVO.setCreateTime(one.getCreateTime()); return ApiResult.success(tDetailVO); } @ApiOperation(value = "首页") @PostMapping(value = "/index") public ApiResult index() { TOptometristVO tOptometristVO = new TOptometristVO(); Integer userId = loginInfoUtil.getUserId(); TOptometrist byId = optometristService.getById(userId); TStore byId1 = storeService.getById(byId.getStoreId()); tOptometristVO.setStoreName(byId1.getName()); tOptometristVO.setName(byId.getName()); tOptometristVO.setPhone(byId.getPhone()); int size = optometryService.lambdaQuery().eq(TOptometry::getOptometristId, userId) .eq(TOptometry::getStatus, 3).list().size(); tOptometristVO.setOptometryCount(size); // 查询今日的排号列表 List list = tLineUpService.lambdaQuery().eq(TLineUp::getStoreId, byId.getStoreId()) .ne(TLineUp::getStatus, 3) .ne(TLineUp::getStatus, 5).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 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.lambdaQuery() .eq(TOptometry::getUserId, byId.getUserId()) .eq(TOptometry::getStatus,3)); tLineUpDetailVO.setOptometryCount((int) l); long count = orderService.count(Wrappers.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 list = tLineUpService.lambdaQuery().eq(TLineUp::getStatus, 2) .eq(TLineUp::getOptometristId, userId).list(); if (!list.isEmpty())return ApiResult.failed("当前还有未结束的验光单"); TLineUp lineUp = tLineUpService.getById(id); lineUp.setStatus(2); 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 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 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(); } }