package com.gkhy.safePlatform.targetDuty.service.impl; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gkhy.safePlatform.commons.co.ContextCacheUser; import com.gkhy.safePlatform.targetDuty.entity.ExamineItem; import com.gkhy.safePlatform.targetDuty.entity.TargetDivideDetail; import com.gkhy.safePlatform.targetDuty.enums.TargetDutyResultCodes; import com.gkhy.safePlatform.targetDuty.excepiton.TargetDutyException; import com.gkhy.safePlatform.targetDuty.model.dto.resp.ListCheckDataDto; import com.gkhy.safePlatform.targetDuty.model.dto.resp.TargetApproveDivideDetailDto; import com.gkhy.safePlatform.targetDuty.model.dto.resp.WorkApproveRelateDesc; import com.gkhy.safePlatform.targetDuty.repository.TargetDivideDetailRepository; import com.gkhy.safePlatform.targetDuty.repository.TargetDutyWorkApproveRepository; import com.gkhy.safePlatform.targetDuty.entity.TargetDutyWorkApprove; import com.gkhy.safePlatform.targetDuty.service.CommonService; import com.gkhy.safePlatform.targetDuty.service.TargetDutyWorkApproveService; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.beans.factory.annotation.Autowired; import com.gkhy.safePlatform.commons.enums.ResultCodes; import com.gkhy.safePlatform.commons.query.PageQuery; import com.gkhy.safePlatform.commons.vo.ResultVO; import com.gkhy.safePlatform.commons.vo.SearchResultVO; import com.gkhy.safePlatform.targetDuty.model.dto.req.TargetDutyWorkApproveQueryCriteria; import com.gkhy.safePlatform.targetDuty.model.dto.resp.TargetDutyWorkApproveDto; import com.gkhy.safePlatform.targetDuty.utils.QueryHelpPlus; import com.gkhy.safePlatform.commons.utils.BeanCopyUtils; import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.io.Serializable; import java.sql.Timestamp; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; /** * 目标责任管理工作流审批表(TargetDutyWorkApprove)表服务实现类 * * @author xurui * @since 2022-08-11 10:13:37 */ @Service("targetDutyWorkApproveService") public class TargetDutyWorkApproveServiceImpl extends ServiceImpl implements TargetDutyWorkApproveService { @Autowired private TargetDutyWorkApproveRepository targetDutyWorkApproveRepository; @Resource private CommonService commonService; @Autowired private TargetDivideDetailRepository targetDivideDetailRepository; @Override public ResultVO queryAll(PageQuery pageQuery) { Long pageIndex = pageQuery.getPageIndex(); Long pageSize = pageQuery.getPageSize(); IPage page = new Page<>(pageIndex, pageSize); QueryWrapper queryWrapper = QueryHelpPlus.getPredicate(TargetDutyWorkApprove.class, pageQuery.getSearchParams()); queryWrapper.eq("del_flag","0"); page = baseMapper.selectPage(page,queryWrapper); List respList = BeanCopyUtils.copyBeanList(page.getRecords(), TargetDutyWorkApproveDto.class); return new SearchResultVO<>( true, pageIndex, pageSize,page.getPages(), page.getTotal(), respList, ResultCodes.OK ); } @Override public List queryAll(TargetDutyWorkApproveQueryCriteria criteria) { return baseMapper.selectList(QueryHelpPlus.getPredicate(TargetDutyWorkApprove.class, criteria)); } @Override public void updateInfo(ContextCacheUser currentUser, TargetDutyWorkApprove targetDutyWorkApprove) { Date nowDate = new Date(); Long uid = currentUser.getUid(); String uName = currentUser.getRealName(); //新增下级审批记录 TargetDutyWorkApprove addInfo = new TargetDutyWorkApprove(); if (targetDutyWorkApprove.getApproveStatus() == 2){ BeanUtils.copyProperties(targetDutyWorkApprove, addInfo); addInfo.setId(null); addInfo.setDelFlag(0); addInfo.setCreateUid(uid); addInfo.setGmtCreate(new Timestamp(nowDate.getTime())); addInfo.setSubmitPersonId(uid); addInfo.setSubmitPersonName(uName); addInfo.setApproveResult(null); addInfo.setApproveMemo(null); addInfo.setSort(addInfo.getSort()+1); targetDutyWorkApproveRepository.insert(addInfo); } // 更新原审批记录 TargetDutyWorkApprove updateInfo = new TargetDutyWorkApprove(); updateInfo.setId(targetDutyWorkApprove.getId()); updateInfo.setUpdateUid(uid); updateInfo.setGmtModitify(new Timestamp(nowDate.getTime())); updateInfo.setApproveStatus(targetDutyWorkApprove.getApproveStatus()); updateInfo.setApproveResult(targetDutyWorkApprove.getApproveResult()); updateInfo.setApproveMemo(targetDutyWorkApprove.getApproveMemo()); updateInfo.setChildId(addInfo.getId()); targetDutyWorkApproveRepository.updateById(updateInfo); } @Override public void addInfo(ContextCacheUser currentUser, TargetDutyWorkApprove targetDutyWorkApprove) { // 业务类型 if (targetDutyWorkApprove.getRelateType()==null){ throw new TargetDutyException(TargetDutyResultCodes.APPROVE_RELATE_ID_NULL); } // 业务主表id if (targetDutyWorkApprove.getRelateId()==null){ throw new TargetDutyException(TargetDutyResultCodes.APPROVE_RELATE_TYPE_NULL); } // 关联业务json if (!StringUtils.hasText(targetDutyWorkApprove.getRelateDesc())){ throw new TargetDutyException("参数错误"); } // 审批人 if (targetDutyWorkApprove.getApprovePersonId()==null){ throw new TargetDutyException(TargetDutyResultCodes.APPROVE_PERSON_NULL); } // 审批状态 if (targetDutyWorkApprove.getApproveStatus()==null){ throw new TargetDutyException(TargetDutyResultCodes.APPROVE_STATUS_NULL); } Date nowDate = new Date(); Long uid = currentUser.getUid(); String uName = currentUser.getRealName(); //1.新增应急审批 TargetDutyWorkApprove info = new TargetDutyWorkApprove(); BeanUtils.copyProperties(targetDutyWorkApprove, info); info.setDelFlag(0); info.setCreateUid(uid); info.setGmtCreate(new Timestamp(nowDate.getTime())); info.setSubmitPersonId(uid); info.setSubmitPersonName(uName); info.setSort(1); targetDutyWorkApproveRepository.insert(info); } @Override public ResultVO listCheckData(PageQuery pageQuery) { Long pageIndex = pageQuery.getPageIndex(); Long pageSize = pageQuery.getPageSize(); IPage page = new Page<>(pageIndex, pageSize); page = targetDutyWorkApproveRepository.listCheckData(page,pageQuery.getSearchParams().getRelateId()); List respList = page.getRecords(); // --------------------------- 获取部门信息----------------------- //收集所用到的部门ID Set collectDepIdSet = new HashSet(); respList.forEach(f->{ collectDepIdSet.add(f.getDutyDepartmentId()); collectDepIdSet.add(f.getMakerDepartmentId()); }); //获取部门名集合 Map depNameMap = commonService.getDepName(collectDepIdSet); respList.forEach(f->{ f.setDutyDepartmentName(depNameMap.get(f.getDutyDepartmentId())); f.setMakerDepartmentName(depNameMap.get(f.getMakerDepartmentId())); }); return new SearchResultVO<>( true, pageIndex, pageSize,page.getPages(), page.getTotal(), respList, ResultCodes.OK ); } @Override public TargetDutyWorkApproveDto selectOne(Serializable id) { TargetDutyWorkApprove targetDutyWorkApprove = this.getById(id); if(targetDutyWorkApprove == null){ return new TargetDutyWorkApproveDto(); } TargetDutyWorkApproveDto dto = BeanCopyUtils.copyBean(targetDutyWorkApprove, TargetDutyWorkApproveDto.class); List relateDescList = JSONObject.parseArray(targetDutyWorkApprove.getRelateDesc(),WorkApproveRelateDesc.class); Map relateDescMap = relateDescList.stream() .collect(Collectors.toMap(WorkApproveRelateDesc::getId, Function.identity(),(k1, k2)->k1)); // List dList = targetDivideDetailRepository.selectBatchIds(relateDescMap.keySet()); List divideDetailList = BeanCopyUtils.copyBeanList(dList, TargetApproveDivideDetailDto.class); divideDetailList.forEach(f->{ WorkApproveRelateDesc relateDesc = relateDescMap.get(f.getId()); if(relateDesc != null){ f.setPersonId(relateDesc.getPersonId()); f.setPersonName(relateDesc.getPersonName()); f.setCommitValue(relateDesc.getValue()); } }); // --------------------------- 获取部门信息----------------------- //收集所用到的部门ID Set collectDepIdSet = new HashSet(); divideDetailList.forEach(f->{ collectDepIdSet.add(f.getDutyDepartmentId()); collectDepIdSet.add(f.getMakerDepartmentId()); }); //获取部门名集合 Map depNameMap = commonService.getDepName(collectDepIdSet); divideDetailList.forEach(f->{ f.setDutyDepartmentName(depNameMap.get(f.getDutyDepartmentId())); f.setMakerDepartmentName(depNameMap.get(f.getMakerDepartmentId())); }); dto.setTargetDivideDetailList(divideDetailList); return dto; } }