package com.migao.service.impl; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.migao.config.constant.ExamineStatus; import com.migao.config.constant.FinancesStatus; import com.migao.config.constant.ProjectStatus; import com.migao.config.constant.PurchasingStage; import com.migao.config.response.PageBean; import com.migao.config.response.ResponseBean; import com.migao.config.response.ResponseBuilder; import com.migao.entity.po.Project; import com.migao.entity.po.ProjectDemand; import com.migao.entity.po.ProjectFile; import com.migao.entity.po.PurchasingApproval; import com.migao.entity.vo.req.ProjectPageQueryReq; import com.migao.entity.vo.req.PurchasingApprovalPageQueryReq; import com.migao.entity.vo.res.ProjectQueryRes; import com.migao.entity.vo.res.PurchasingApprovalQueryRes; import com.migao.mapper.ProjectDemandMapper; import com.migao.mapper.ProjectFileMapper; import com.migao.mapper.ProjectMapper; import com.migao.mapper.PurchasingApprovalMapper; import com.migao.service.ProjectService; import com.migao.service.PurchasingApprovalService; import com.migao.util.EntityUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; /** * @author dingsong */ @Slf4j @Service @Transactional(rollbackFor = {Exception.class}) public class PurchasingApprovalServiceImpl extends ServiceImpl implements PurchasingApprovalService { @Resource private ProjectMapper projectMapper; @Resource private PurchasingApprovalMapper purchasingApprovalMapper; @Resource private ProjectDemandMapper projectDemandMapper; @Resource private ProjectFileMapper projectFileMapper; @Override public ResponseBean> pageQuery(PurchasingApprovalPageQueryReq purchasingApprovalPageQueryReq) { Integer page = purchasingApprovalPageQueryReq.getPage(); page = page == null ? 1 : page <= 0 ? 1 : page; Integer size = purchasingApprovalPageQueryReq.getSize(); size = size == null ? 10 : size <= 0 ? 10 : size; LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); if (purchasingApprovalPageQueryReq.getCreateTime() != null) { } if (StringUtils.isNotBlank(purchasingApprovalPageQueryReq.getName())) { queryWrapper.eq(Project::getCreateTime, purchasingApprovalPageQueryReq.getCreateTime()); } if (StringUtils.isNotBlank(purchasingApprovalPageQueryReq.getOrderStatus())) { queryWrapper.eq(Project::getOrderStatus, purchasingApprovalPageQueryReq.getOrderStatus()); } queryWrapper.ne(Project::getParentId, 0); //查询子项目并且采购状态是待提报 queryWrapper.eq(Project::getPurchaseStatus, ProjectStatus.TO_BE_REPORTED); Page all = projectMapper.selectPage(new Page<>(page, size), queryWrapper); return ResponseBuilder.ok( all, element -> { ProjectQueryRes projectQueryRes = ProjectQueryRes .builder() .id(element.getId()) .capital(String.valueOf(element.getCapital())) .content(element.getContent()) .cost(String.valueOf(element.getCost())) .createTime(element.getCreateTime()) .level(element.getLevel()) .name(element.getName()) .progress(element.getProgress()) .projectClassify(element.getProjectClassify()) .specialtyClassify(element.getSpecialtyClassify()) .total(String.valueOf(element.getTotal())) .totalInvestment(String.valueOf(element.getTotalInvestment())) .twoClassify(element.getTwoClassify()) .unit(element.getUnit()) .orderStatus(String.valueOf(element.getOrderStatus())) .reserveStatus(String.valueOf(element.getReserveStatus())) .build(); return projectQueryRes; } ); } @Override public ResponseBean submit(Integer projectId, List demandIdList) { Project project = projectMapper.selectById(projectId); if (project == null) { return ResponseBuilder.fail("项目不存在"); } //绑定项目和需求 for (Integer id : demandIdList) { ProjectDemand projectDemand = new ProjectDemand(); projectDemand.setProjectrId(projectId); projectDemand.setDemandId(id); projectDemandMapper.insert(projectDemand); } //更新项目状态 project.setPurchaseStatus(ProjectStatus.TO_APPROVAL.getName()); projectMapper.updateById(project); //新增采购记录 PurchasingApproval purchasingApproval=new PurchasingApproval(); purchasingApproval.setDeleted(0); purchasingApproval.setProjectId(projectId); purchasingApproval.setStatus(ProjectStatus.TO_BE_REPORTED.getName()); purchasingApproval.setStage(PurchasingStage.SUBMIT.getName()); purchasingApprovalMapper.insert(purchasingApproval); return ResponseBuilder.ok(); } @Override public ResponseBean approve(Integer id,ExamineStatus status) { Project project = projectMapper.selectById(id); if (project == null) { ResponseBuilder.fail("项目不存在"); } if (status.equals(FinancesStatus.PASS)) { project.setPurchaseStatus(ProjectStatus.APPROVE.getName()); projectMapper.updateById(project); //新增采购记录 PurchasingApproval purchasingApproval=new PurchasingApproval(); purchasingApproval.setDeleted(0); purchasingApproval.setProjectId(id); purchasingApproval.setStatus(ProjectStatus.TO_APPROVAL.getName()); purchasingApproval.setStage(PurchasingStage.EXAMINE.getName()); purchasingApprovalMapper.insert(purchasingApproval); }else { project.setPurchaseStatus(ProjectStatus.TO_BE_REPORTED.getName()); projectMapper.updateById(project); } return ResponseBuilder.ok(); } @Override public ResponseBean transmit(Integer projectId, String email, String company) { Project project = projectMapper.selectById(projectId); if (project == null) { ResponseBuilder.fail("项目不存在"); } project.setPurchaseStatus(ProjectStatus.HAS_ORDERED.getName()); projectMapper.updateById(project); PurchasingApproval purchasingApproval = PurchasingApproval.builder() .deleted(0) .projectId(projectId) .email(email) .company(company) .status(ProjectStatus.HAS_ORDERED.getName()) .build(); purchasingApprovalMapper.insert(purchasingApproval); return ResponseBuilder.ok(); } @Override public ResponseBean contractEntry(Integer projectId, Integer fileId) { ProjectFile projectFile= ProjectFile.builder() .projectId(projectId) .fileId(fileId) .build(); projectFileMapper.insert(projectFile); //新增采购记录 PurchasingApproval purchasingApproval=new PurchasingApproval(); purchasingApproval.setDeleted(0); purchasingApproval.setProjectId(projectId); purchasingApproval.setStatus(ProjectStatus.CONTRACT_ENTRY.getName()); purchasingApproval.setStage(ProjectStatus.CONTRACT_ENTRY.getName()); purchasingApprovalMapper.insert(purchasingApproval); return ResponseBuilder.ok(); } @Override public ResponseBean> findById(Integer id) { LambdaQueryWrapper queryWrapper=new LambdaQueryWrapper<>(); queryWrapper.eq(PurchasingApproval::getProjectId,id); List all = purchasingApprovalMapper.selectList(queryWrapper); List list=new ArrayList<>(); for (PurchasingApproval approval : all) { PurchasingApprovalQueryRes res = EntityUtils.copyProperties(approval, PurchasingApprovalQueryRes.class); list.add(res); } return ResponseBuilder.ok(list); } }