package com.doumee.service.business.impl;
|
|
import cn.emay.sdk.util.StringUtil;
|
import com.alibaba.nacos.shaded.org.checkerframework.checker.units.qual.A;
|
import com.doumee.biz.system.SystemDictDataBiz;
|
import com.doumee.core.constants.ResponseStatus;
|
import com.doumee.core.exception.BusinessException;
|
import com.doumee.core.model.LoginUserInfo;
|
import com.doumee.core.model.PageData;
|
import com.doumee.core.model.PageWrap;
|
import com.doumee.core.utils.Constants;
|
import com.doumee.core.utils.DateUtil;
|
import com.doumee.core.utils.Utils;
|
import com.doumee.dao.business.ApproveTemplMapper;
|
import com.doumee.dao.business.MemberMapper;
|
import com.doumee.dao.business.PlatformBooksMapper;
|
import com.doumee.dao.business.PlatformReasonMapper;
|
import com.doumee.dao.business.join.ApproveJoinMapper;
|
import com.doumee.dao.business.model.*;
|
import com.doumee.dao.business.vo.ApproveDataVO;
|
import com.doumee.dao.web.reqeust.ConfirmTaskDTO;
|
import com.doumee.dao.web.reqeust.PlatformBooksApplyDTO;
|
import com.doumee.dao.web.reqeust.PlatformBooksCheckNumDTO;
|
import com.doumee.dao.web.reqeust.RevokeDTO;
|
import com.doumee.service.business.ApproveService;
|
import com.doumee.service.business.PlatformBooksService;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import org.apache.commons.lang3.StringUtils;
|
import org.apache.tomcat.util.bcel.Const;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.util.CollectionUtils;
|
|
import java.math.BigDecimal;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Objects;
|
|
/**
|
* 月台入园预约信息表Service实现
|
* @author 江蹄蹄
|
* @date 2024/06/28 10:03
|
*/
|
@Service
|
public class PlatformBooksServiceImpl implements PlatformBooksService {
|
|
@Autowired
|
private PlatformBooksMapper platformBooksMapper;
|
|
@Autowired
|
private ApproveTemplMapper approveTemplMapper;
|
|
@Autowired
|
private PlatformReasonMapper platformReasonMapper;
|
|
@Autowired
|
private SystemDictDataBiz systemDictDataBiz;
|
|
@Autowired
|
private ApproveService approveService;
|
|
@Autowired
|
private MemberMapper memberMapper;
|
|
@Autowired
|
private ApproveJoinMapper approveJoinMapper;
|
|
|
@Override
|
public Integer create(PlatformBooks platformBooks) {
|
|
|
platformBooksMapper.insert(platformBooks);
|
return platformBooks.getId();
|
}
|
|
@Override
|
public void deleteById(Integer id) {
|
platformBooksMapper.deleteById(id);
|
}
|
|
@Override
|
public void delete(PlatformBooks platformBooks) {
|
UpdateWrapper<PlatformBooks> deleteWrapper = new UpdateWrapper<>(platformBooks);
|
platformBooksMapper.delete(deleteWrapper);
|
}
|
|
@Override
|
public void deleteByIdInBatch(List<Integer> ids) {
|
if (CollectionUtils.isEmpty(ids)) {
|
return;
|
}
|
platformBooksMapper.deleteBatchIds(ids);
|
}
|
|
@Override
|
public void updateById(PlatformBooks platformBooks) {
|
platformBooksMapper.updateById(platformBooks);
|
}
|
|
@Override
|
public void updateByIdInBatch(List<PlatformBooks> platformBookss) {
|
if (CollectionUtils.isEmpty(platformBookss)) {
|
return;
|
}
|
for (PlatformBooks platformBooks: platformBookss) {
|
this.updateById(platformBooks);
|
}
|
}
|
|
@Override
|
public PlatformBooks findById(Integer id) {
|
return platformBooksMapper.selectById(id);
|
}
|
|
@Override
|
public PlatformBooks findOne(PlatformBooks platformBooks) {
|
QueryWrapper<PlatformBooks> wrapper = new QueryWrapper<>(platformBooks);
|
return platformBooksMapper.selectOne(wrapper);
|
}
|
|
@Override
|
public List<PlatformBooks> findList(PlatformBooks platformBooks) {
|
QueryWrapper<PlatformBooks> wrapper = new QueryWrapper<>(platformBooks);
|
return platformBooksMapper.selectList(wrapper);
|
}
|
|
@Override
|
public PageData<PlatformBooks> findPage(PageWrap<PlatformBooks> pageWrap) {
|
IPage<PlatformBooks> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
|
QueryWrapper<PlatformBooks> queryWrapper = new QueryWrapper<>();
|
Utils.MP.blankToNull(pageWrap.getModel());
|
queryWrapper.lambda()
|
.eq(pageWrap.getModel().getId() != null, PlatformBooks::getId, pageWrap.getModel().getId())
|
.eq(pageWrap.getModel().getCreator() != null, PlatformBooks::getCreator, pageWrap.getModel().getCreator())
|
.ge(pageWrap.getModel().getCreateDate() != null, PlatformBooks::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()))
|
.le(pageWrap.getModel().getCreateDate() != null, PlatformBooks::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()))
|
.eq(pageWrap.getModel().getEditor() != null, PlatformBooks::getEditor, pageWrap.getModel().getEditor())
|
.ge(pageWrap.getModel().getEditDate() != null, PlatformBooks::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()))
|
.le(pageWrap.getModel().getEditDate() != null, PlatformBooks::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()))
|
.eq(pageWrap.getModel().getIsdeleted() != null, PlatformBooks::getIsdeleted, pageWrap.getModel().getIsdeleted())
|
.eq(pageWrap.getModel().getName() != null, PlatformBooks::getName, pageWrap.getModel().getName())
|
.eq(pageWrap.getModel().getRemark() != null, PlatformBooks::getRemark, pageWrap.getModel().getRemark())
|
.eq(pageWrap.getModel().getStatus() != null, PlatformBooks::getStatus, pageWrap.getModel().getStatus())
|
.eq(pageWrap.getModel().getContractNum() != null, PlatformBooks::getContractNum, pageWrap.getModel().getContractNum())
|
.ge(pageWrap.getModel().getArriveDate() != null, PlatformBooks::getArriveDate, Utils.Date.getStart(pageWrap.getModel().getArriveDate()))
|
.le(pageWrap.getModel().getArriveDate() != null, PlatformBooks::getArriveDate, Utils.Date.getEnd(pageWrap.getModel().getArriveDate()))
|
.eq(pageWrap.getModel().getInType() != null, PlatformBooks::getInType, pageWrap.getModel().getInType())
|
.eq(pageWrap.getModel().getTotalNum() != null, PlatformBooks::getTotalNum, pageWrap.getModel().getTotalNum())
|
.eq(pageWrap.getModel().getCarCodeFront() != null, PlatformBooks::getCarCodeFront, pageWrap.getModel().getCarCodeFront())
|
.eq(pageWrap.getModel().getCarCodeBack() != null, PlatformBooks::getCarCodeBack, pageWrap.getModel().getCarCodeBack())
|
.eq(pageWrap.getModel().getDriverId() != null, PlatformBooks::getDriverId, pageWrap.getModel().getDriverId())
|
.eq(pageWrap.getModel().getDriverName() != null, PlatformBooks::getDriverName, pageWrap.getModel().getDriverName())
|
.eq(pageWrap.getModel().getPlateNum() != null, PlatformBooks::getPlateNum, pageWrap.getModel().getPlateNum())
|
.eq(pageWrap.getModel().getDriverPhone() != null, PlatformBooks::getDriverPhone, pageWrap.getModel().getDriverPhone())
|
.ge(pageWrap.getModel().getQueryDate() != null, PlatformBooks::getCreateDate, pageWrap.getModel().getQueryDate())
|
.orderByDesc(PlatformBooks::getCreateDate)
|
;
|
return PageData.from(platformBooksMapper.selectPage(page, queryWrapper));
|
}
|
|
@Override
|
public long count(PlatformBooks platformBooks) {
|
QueryWrapper<PlatformBooks> wrapper = new QueryWrapper<>(platformBooks);
|
return platformBooksMapper.selectCount(wrapper);
|
}
|
|
|
@Override
|
public BigDecimal checkNum(PlatformBooksCheckNumDTO platformBooksCheckNumDTO){
|
if(Objects.isNull(platformBooksCheckNumDTO)
|
|| Objects.isNull(platformBooksCheckNumDTO.getTotalNum())
|
|| Objects.isNull(platformBooksCheckNumDTO.getReasonId())
|
|| Objects.isNull(platformBooksCheckNumDTO.getArriveDate())){
|
return BigDecimal.ZERO;
|
}
|
//查询每日配置的总预约量
|
PlatformReason platformReason = platformReasonMapper.selectById(platformBooksCheckNumDTO.getReasonId());
|
if(Objects.isNull(platformReason)|| !Constants.equalsInteger(platformReason.getIsdeleted(),Constants.ZERO)){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"入园原因信息异常,请刷新重试");
|
}
|
List<PlatformBooks> platformBooksList = platformBooksMapper.selectList(new QueryWrapper<PlatformBooks>().lambda()
|
.eq(PlatformBooks::getReasonId,platformBooksCheckNumDTO.getReasonId())
|
.ne(PlatformBooks::getStatus,Constants.THREE)
|
.like(PlatformBooks::getCreateDate, DateUtil.getDate(platformBooksCheckNumDTO.getArriveDate(),"yyyy-MM-dd"))
|
);
|
if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformBooksList)){
|
BigDecimal countNum = platformBooksList.stream().map(m->m.getTotalNum()).reduce(BigDecimal.ZERO,BigDecimal::add);
|
if(countNum.compareTo(platformReason.getLimitNum())>=Constants.ZERO){
|
return BigDecimal.ZERO;
|
}
|
return platformReason.getLimitNum().subtract(countNum);
|
}
|
return platformReason.getLimitNum();
|
}
|
|
|
@Override
|
@Transactional(rollbackFor = {BusinessException.class,Exception.class})
|
public Integer apply(PlatformBooksApplyDTO platformBooksApplyDTO){
|
if(Objects.isNull(platformBooksApplyDTO)
|
|| StringUtils.isBlank(platformBooksApplyDTO.getContractNum())
|
|| Objects.isNull(platformBooksApplyDTO.getArriveDate())
|
|| Objects.isNull(platformBooksApplyDTO.getInType())
|
|| Objects.isNull(platformBooksApplyDTO.getTotalNum())
|
|| StringUtils.isBlank(platformBooksApplyDTO.getCarCodeFront())
|
|| StringUtils.isBlank(platformBooksApplyDTO.getCarCodeBack())
|
|| Objects.isNull(platformBooksApplyDTO.getDriverId())
|
|| StringUtils.isBlank(platformBooksApplyDTO.getDriverPhone())
|
|| StringUtils.isBlank(platformBooksApplyDTO.getDriverName())
|
|| StringUtils.isBlank(platformBooksApplyDTO.getTransportImg())
|
|| Objects.isNull(platformBooksApplyDTO.getReasonId())
|
|| StringUtils.isBlank(platformBooksApplyDTO.getInReason())
|
){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST);
|
}
|
PlatformReason platformReason = platformReasonMapper.selectById(platformBooksApplyDTO.getReasonId());
|
if(Objects.isNull(platformReason)|| !Constants.equalsInteger(platformReason.getIsdeleted(),Constants.ZERO)){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"入园原因信息异常,请刷新重试");
|
}
|
ApproveTempl approveTempl = approveTemplMapper.selectById(platformReason.getId());
|
if(Objects.isNull(approveTempl)){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未配置审批流,请联系管理员");
|
}
|
if(!Constants.equalsInteger(approveTempl.getIsdeleted(),Constants.ZERO)){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"审批流已停用,请联系管理员");
|
}
|
PlatformBooks platformBooks = new PlatformBooks();
|
BeanUtils.copyProperties(platformBooksApplyDTO,platformBooks);
|
platformBooks.setCreateDate(new Date());
|
platformBooks.setIsdeleted(Constants.ZERO);
|
platformBooks.setStatus(Constants.ZERO);
|
platformBooks.setDriverId(platformBooksApplyDTO.getUserId());
|
platformBooksMapper.insert(platformBooks);
|
|
//创建审批流信息
|
approveService.createApproveForPlatfrom(platformReason.getApproveTemplId(),platformBooks.getId(),platformBooks.getDriverId());
|
return platformBooks.getId();
|
}
|
|
|
|
@Override
|
@Transactional(rollbackFor = {BusinessException.class,Exception.class})
|
public Integer edit(PlatformBooksApplyDTO platformBooksApplyDTO){
|
if(Objects.isNull(platformBooksApplyDTO)
|
|| Objects.isNull(platformBooksApplyDTO.getId())
|
|| StringUtils.isBlank(platformBooksApplyDTO.getContractNum())
|
|| Objects.isNull(platformBooksApplyDTO.getArriveDate())
|
|| Objects.isNull(platformBooksApplyDTO.getInType())
|
|| Objects.isNull(platformBooksApplyDTO.getTotalNum())
|
|| StringUtils.isBlank(platformBooksApplyDTO.getCarCodeFront())
|
|| StringUtils.isBlank(platformBooksApplyDTO.getCarCodeBack())
|
|| Objects.isNull(platformBooksApplyDTO.getDriverId())
|
|| StringUtils.isBlank(platformBooksApplyDTO.getDriverPhone())
|
|| StringUtils.isBlank(platformBooksApplyDTO.getDriverName())
|
|| StringUtils.isBlank(platformBooksApplyDTO.getTransportImg())
|
){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST);
|
}
|
PlatformBooks platformBooks = platformBooksMapper.selectById(platformBooksApplyDTO.getId());
|
if(Objects.isNull(platformBooks)){
|
throw new BusinessException(ResponseStatus.DATA_EMPTY);
|
}
|
if(!Constants.equalsInteger(platformBooks.getStatus(),Constants.ZERO)){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"业务状态已流转");
|
}
|
BeanUtils.copyProperties(platformBooksApplyDTO,platformBooks);
|
platformBooks.setEditDate(new Date());
|
platformBooks.setReasonId(null);
|
platformBooks.setInReason(null);
|
platformBooksMapper.updateById(platformBooks);
|
return platformBooks.getId();
|
}
|
|
|
|
@Override
|
public PlatformBooks getDetail(Integer id,Integer memberId){
|
PlatformBooks model = platformBooksMapper.selectById(id);
|
if(Objects.isNull(model)){
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到预约记录");
|
}
|
String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +
|
systemDictDataBiz.queryByCode(Constants.FTP,Constants.PLATFORM).getCode();
|
model.setPrefixUrl(prefixUrl);
|
|
ApproveDataVO approveDataVO = approveService.arrangeApprovedData(id,
|
6,
|
memberId);
|
model.setApproveDateVO(approveDataVO);
|
List<Approve> approveList = approveDataVO.getApproveList();
|
if(Constants.equalsInteger(model.getStatus(),Constants.FOUR)){
|
String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()
|
+systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode();
|
Member member = memberMapper.selectById(model.getDriverId());
|
|
Approve approve = new Approve();
|
approve.setApproveType(Constants.ZERO);
|
approve.setCreateDate(model.getCancelTime());
|
approve.setTitle("撤销人");
|
approve.setStatusInfo("已撤销");
|
approve.setStatus(Constants.FOUR);
|
approve.setType(Constants.ZERO);
|
if(member!=null) {
|
approve.setMemberName(member.getName());
|
if (StringUtils.isNotBlank(member.getFaceImg())) {
|
approve.setFaceImg(path + member.getFaceImg());
|
}
|
}
|
approve.setCheckInfo(model.getCancelInfo());
|
approve.setCheckDate(model.getCancelTime());
|
approveList.add(approve);
|
}
|
return model;
|
}
|
|
|
|
@Override
|
public void revoke(RevokeDTO revokeDTO, LoginUserInfo loginUserInfo){
|
if(Objects.isNull(revokeDTO)
|
|| Objects.isNull(revokeDTO.getId())
|
|| StringUtils.isBlank(revokeDTO.getInfo())
|
){
|
throw new BusinessException(ResponseStatus.BAD_REQUEST);
|
}
|
PlatformBooks model = platformBooksMapper.selectById(revokeDTO.getId());
|
if(Objects.isNull(model)){
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到预约记录");
|
}
|
if(!(Constants.equalsInteger(model.getStatus(),Constants.ZERO)||Constants.equalsInteger(model.getStatus(),Constants.ONE))){
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"业务状态已流转,无法进行该操作");
|
}
|
model.setCancelUser(loginUserInfo.getId());
|
model.setCancelInfo(revokeDTO.getInfo());
|
model.setCancelTime(new Date());
|
model.setStatus(Constants.FOUR);
|
platformBooksMapper.updateById(model);
|
//处理审批记录
|
approveJoinMapper.update(null,new UpdateWrapper<Approve>()
|
.lambda()
|
.set(Approve::getIsdeleted,Constants.ONE)
|
.set(Approve::getStatus,Constants.FOUR)
|
.set(Approve::getCheckInfo,"物流车预约申请取消")
|
.in(Approve::getStatus,Constants.ZERO,Constants.ONE)
|
.eq(Approve::getObjType,Constants.approveObjectType.logisticsCarUse)
|
.eq(Approve::getObjId,revokeDTO.getId())
|
);
|
}
|
|
|
}
|