package com.yiboshi.science.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yiboshi.arch.exception.BusinessException; import com.yiboshi.science.base.BaseServiceImpl; import com.yiboshi.science.base.Pagination; import com.yiboshi.science.dao.ComProjectCheckDAO; import com.yiboshi.science.entity.*; import com.yiboshi.science.enumeration.CommonEnum; import com.yiboshi.science.param.dto.ComProjectAuditNoteDTO; import com.yiboshi.science.param.dto.ComProjectCheckDTO; import com.yiboshi.science.param.dto.DataStatisticsDTO; import com.yiboshi.science.param.query.ComProjectCheckQueryVO; import com.yiboshi.science.service.*; import com.yiboshi.science.utils.CreateCodeUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; /** * 中期考核表 Service 实现类 * * @author lkl * @version 2021-08-26 */ @Service public class ComProjectCheckServiceImpl extends BaseServiceImpl<ComProjectCheckDAO, ComProjectCheckQueryVO, ComProjectCheckDTO, ComProjectCheck> implements ComProjectCheckService { @Autowired private ComProjectCheckDAO comProjectCheckDAO; @Autowired private ComProjectResultsService comProjectResultsService; @Autowired private ComProjectAuditService comProjectAuditService; @Autowired private ComProjectTaskService ComProjectTaskService; @Autowired private ComYearService comYearService; @Autowired private ComProjectService comProjectService; @Autowired private CreateCodeUtil createCodeUtil; @Autowired private ComPersonService comPersonService; @Autowired private ComUnitService comUnitService; @Autowired private ComProjectAuditNoteService comProjectAuditNoteService; @Override protected void setCriteriaForQuery(ComProjectCheckQueryVO vo, QueryWrapper<ComProjectCheckQueryVO> criteria) { if (Objects.nonNull(vo.getCheckYear())) { criteria.eq("check_year", vo.getCheckYear()); } if (Objects.nonNull(vo.getProjId())) { criteria.eq("proj_id", vo.getProjId()); } if (Objects.nonNull(vo.getOtherResults())) { criteria.eq("other_results", vo.getOtherResults()); } if (Objects.nonNull(vo.getWorkProgress())) { criteria.eq("work_progress", vo.getWorkProgress()); } if (Objects.nonNull(vo.getApplyMoney())) { criteria.eq("apply_money", vo.getApplyMoney()); } if (Objects.nonNull(vo.getUsingMoney())) { criteria.eq("using_money", vo.getUsingMoney()); } if (Objects.nonNull(vo.getSurplusMoney())) { criteria.eq("surplus_money", vo.getSurplusMoney()); } if (Objects.nonNull(vo.getMoneyInstructions())) { criteria.eq("money_instructions", vo.getMoneyInstructions()); } if (Objects.nonNull(vo.getCheckState())) { switch (vo.getCheckState()) { case 1://未上报任务书 criteria.eq("check_state", CommonEnum.checkState.noSubmit.getCode()); break; case 2://返回修改任务书 criteria.ne("check_state", CommonEnum.checkState.noSubmit.getCode()); break; default: criteria.eq("check_state", vo.getCheckState()); break; } } if (Objects.nonNull(vo.getProjName())) { criteria.like("proj_name", vo.getProjName()); } if (Objects.nonNull(vo.getProjNo())) { criteria.like("proj_no", vo.getProjNo()); } if (Objects.nonNull(vo.getAppUnitName())) { criteria.like("unit_name", vo.getAppUnitName()); } if (Objects.nonNull(vo.getAppPersonName())) { criteria.like("person_name", vo.getAppPersonName()); } } @Override public Pagination<ComProjectCheckDTO> getListByPage(ComProjectCheckQueryVO vo) { QueryWrapper criteria = new QueryWrapper(); setCriteriaForQuery(vo, criteria); // long total = this.count(criteria); Page<ComProjectCheckQueryVO> page = new Page<>(vo.getPageIndex(), vo.getPageSize()); List<ComProjectCheckDTO> dtoList = comProjectCheckDAO.getListByPage(page, criteria).getRecords(); return new Pagination<>(dtoList, page.getTotal(), vo.getPageSize()); } @Override public void updateState(String id, Integer state) { ComProjectCheck comProjectCheck = new ComProjectCheck(); comProjectCheck.setId(id); comProjectCheck.setCheckState(state); this.update(comProjectCheck); } public ComProjectCheckDTO getCheckInfoById(String id) { ComProjectCheckDTO comProjectCheckDTO = this.dtoById(id); if (null == comProjectCheckDTO) throw new BusinessException("中期考核表不存在"); ComProject comProject = comProjectService.entityById(comProjectCheckDTO.getProjId()); ComPerson comPerson = comPersonService.entityById(comProject.getAppPersonId()); ComUnit comUnit = comUnitService.entityById(comProject.getAppUnitId()); comProjectCheckDTO.setProjName(comProject.getProjName()); comProjectCheckDTO.setProjNo(comProject.getProjNo()); comProjectCheckDTO.setStartDate(comProject.getStartDate()); comProjectCheckDTO.setEndDate(comProject.getEndDate()); comProjectCheckDTO.setAppPersonName(comPerson.getPersonName()); comProjectCheckDTO.setAppUnitName(comUnit.getUnitName()); List<String> results = comProjectResultsService.getArrayByObjectId(comProjectCheckDTO.getId()); if (results.size() == 0) // results = comProjectResultsService.getList(); comProjectCheckDTO.setResults(results); //审核记录列表 List<ComProjectAuditNoteDTO> auditList = comProjectAuditNoteService.getListByObjectId(comProjectCheckDTO.getId()); comProjectCheckDTO.setAuditList(auditList); return comProjectCheckDTO; } @Transactional public String saveAndReport(ComProjectCheckDTO comProjectCheckDTO, String unitId, String treeCode) { ComProjectCheck model = this.entityById(comProjectCheckDTO.getId()); if (null == model) throw new BusinessException("中期考核表不存在或已上报"); if (!model.getCheckState().equals(CommonEnum.checkState.noSubmit.getCode()) && !model.getCheckState().equals(CommonEnum.checkState.returnModify.getCode())) throw new BusinessException("中期考核表不存在或已上报"); ComProjectCheck comProjectCheck = convert2Entity(comProjectCheckDTO); comProjectResultsService.insertList(comProjectCheckDTO.getResults(), comProjectCheck.getId()); comProjectAuditService.report(comProjectCheckDTO.getCheckYear(), comProjectCheckDTO.getId(), 3, unitId, treeCode); comProjectCheck.setCheckState(CommonEnum.checkState.review.getCode()); return this.update(comProjectCheck); } @Transactional @Override public String save(ComProjectCheckDTO comProjectCheckDTO) { ComProjectCheck comProjectCheck = convert2Entity(comProjectCheckDTO); comProjectResultsService.insertList(comProjectCheckDTO.getResults(), comProjectCheck.getId()); return this.update(comProjectCheck); } @Override public void audit(ComProjectAudit comProjectAudit, String unitId, String treeCode) { // false 报上级或返回下一级 true报到最高级或返回个人 int state = 0; // int state = comProjectAuditService.audit(comProjectAudit, treeCode,null); ComProjectCheck comProjectCheck = new ComProjectCheck(); comProjectCheck.setId(comProjectAudit.getAuditObjectId()); if (comProjectAudit.getAuditResult().equals(CommonEnum.auditResult.pass.getCode())) { if (state==0) { comProjectCheck.setCheckState(CommonEnum.checkState.pass.getCode()); } } else if (comProjectAudit.getAuditResult().equals(CommonEnum.auditResult.returnModify.getCode())) { if (state==0) comProjectCheck.setCheckState(CommonEnum.checkState.returnModify.getCode()); } else { comProjectCheck.setCheckState(CommonEnum.checkState.failed.getCode()); } if (null != comProjectCheck.getCheckState()) this.update(comProjectCheck); } @Override public void insertCheckListByTestId(String testId) { ComProjectTask test = ComProjectTaskService.entityById(testId); if (null == test) return; String checkYear = comYearService.getCheckYear(test.getReportYear()); if (checkYear.equals("")) return; String[] arr = checkYear.split(","); ComProjectCheck model = new ComProjectCheck(); model.setProjId(test.getProjId()); List<ComProjectCheck> list = this.entityList(model); for (int i = 0; i < arr.length; i++) { if (createCodeUtil.ParseInt(arr[i])) { Integer year = Integer.parseInt(arr[i]); if (null != list && list.size() > 0) { if (list.stream().filter(e -> e.getCheckYear().equals(year)).collect(Collectors.toList()).size() == 0) { ComProjectCheck check = new ComProjectCheck(); check.setProjId(test.getProjId()); check.setCheckState(CommonEnum.checkState.noSubmit.getCode()); check.setCheckYear(year); this.save(check); } } else { ComProjectCheck check = new ComProjectCheck(); check.setProjId(test.getProjId()); check.setCheckState(CommonEnum.checkState.noSubmit.getCode()); check.setCheckYear(year); this.save(check); } } } } @Override public DataStatisticsDTO getCount(ComProjectCheckQueryVO e) { QueryWrapper criteria = new QueryWrapper(); setCriteriaForQuery(e, criteria); return comProjectCheckDAO.getCount(criteria); } }