package cn.timer.api.controller.spmk.service; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import cn.hutool.json.JSONObject; import cn.timer.api.bean.spmk.*; import cn.timer.api.dao.spmk.*; import cn.timer.api.dto.spmk.FlowChildren; import cn.timer.api.dto.spmk.Router; import com.alibaba.fastjson.JSON; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.lang.Console; import cn.hutool.core.util.ObjectUtil; import cn.timer.api.config.annotation.UserBean; import cn.timer.api.controller.zzgl.service.ZzglBmgwMService; import cn.timer.api.dto.spmk.SpmkApproveDetailDto; @Service public class SpmkServiceImpl implements SpmkService{ @Autowired private ZzglBmgwMService zzglBmgwMService; @Autowired private SpmkApproveDetailMapper spmkApproveDetailMapper; @Autowired private SpmkApprovalGMapper spmkApprovalGMapper; @Autowired private SpmkApproveExecuteRecordMapper spmkApproveExecuteRecordMapper; @Autowired private SpmkApproveDetailSummaryMapper spmkApproveDetailSummaryMapper; @Autowired private SpmkApproveDetailDraftsMapper spmkApproveDetailDraftsMapper; @Autowired private SpmkApproveDraftsMapper spmkApproveDraftsMapper; private static com.alibaba.fastjson.JSONObject jsonObject = new com.alibaba.fastjson.JSONObject(); /** * 根据orgCode查数据库 审批模板 生成 自定义模板 * orgCode 企业id */ @Override public boolean createCustomApproval(Integer orgCode) { // TODO Auto-generated method stub List<SpmkApprovalTemplateG> listAtg = SpmkApprovalTemplateG.builder().build() .selectList(new QueryWrapper<SpmkApprovalTemplateG>().lambda().orderByAsc(SpmkApprovalTemplateG::getId)); List<SpmkApprovalG> listAG = new ArrayList<SpmkApprovalG>(listAtg.size()); for (SpmkApprovalTemplateG spmkApprovalTemplateG : listAtg) { SpmkApprovalG saG = SpmkApprovalG.builder().build(); BeanUtil.copyProperties(spmkApprovalTemplateG, saG, "id","update_time"); saG.setOrgCode(orgCode); listAG.add(saG); } Console.log(listAG); SpmkCustomApproval sca = SpmkCustomApproval.builder().build(); List<SpmkApprovalTemplate> listAt = new ArrayList<SpmkApprovalTemplate>(); for (int i = 0,n = listAG.size(); i < n; i++) { boolean b = listAG.get(i).insert(); if (b) { listAt = SpmkApprovalTemplate.builder().build().selectList(new QueryWrapper<SpmkApprovalTemplate>() .lambda() .eq(SpmkApprovalTemplate::getApprovalTemplateGId, listAtg.get(i).getId()).eq(SpmkApprovalTemplate::getIsOpen, '1').orderByAsc(SpmkApprovalTemplate::getId)); for (SpmkApprovalTemplate spmkApprovalTemplate : listAt) { BeanUtil.copyProperties(spmkApprovalTemplate, sca, "id","approval_template_g_id","update_time","create_time"); sca.setOrgCode(orgCode); sca.setApprovalGId(listAG.get(i).getId()); sca.setIsAllvisible(1); sca.insert(); } } } return true; } /** * 根据审批汇总id 获取 审批详情 * @param asId * @param empNum * @return */ @Override public SpmkApproveDetailDto selectApproveDetailByAsId(Integer asId,Integer empNum) { // TODO Auto-generated method stub //SpmkApproveDetail ad = spmkApproveDetailMapper.selectOne(new QueryWrapper<SpmkApproveDetail>().lambda().eq(SpmkApproveDetail::getApproveSummaryId, asId)); //审批详情 SpmkApproveDetailSummary ad = spmkApproveDetailSummaryMapper.selectOne(new QueryWrapper<SpmkApproveDetailSummary>().lambda().eq(SpmkApproveDetailSummary::getApproveSummaryId, asId)); //审批汇总 SpmkApproveSummary sum = null; if(ad != null) { sum = SpmkApproveSummary.builder().build().selectOne(new QueryWrapper<SpmkApproveSummary>().lambda().select(SpmkApproveSummary::getId,SpmkApproveSummary::getEmpNum,SpmkApproveSummary::getSts,SpmkApproveSummary::getCreateTime,SpmkApproveSummary::getDigest) .eq(SpmkApproveSummary::getId, ad.getApproveSummaryId())); } SpmkApproveDetailDto adD = SpmkApproveDetailDto.builder().build(); if (ad == null) { return null; } //审批操作记录 List<SpmkApproveExecuteRecord> listAer = spmkApproveExecuteRecordMapper.selectListByAsId(asId); BeanUtil.copyProperties(ad, adD, "requestData","froms","router","flowChildren","spmkApproveExecuteRecord"); if(ad.getRequestData() !=null) { adD.setRequestData(jsonObject.parseObject(ad.getRequestData(), JSONObject.class)); } if(ad.getFroms()!=null) { adD.setFroms(jsonObject.parseArray(ad.getFroms(), JSONObject.class)); } if(ad.getFlowChildren() !=null) { adD.setRouter(jsonObject.parseObject(ad.getRouter(), Router.class)); } if(ad.getFlowChildren()!=null) { adD.setFlowChildren(jsonObject.parseArray(ad.getFlowChildren(), FlowChildren.class)); } adD.setApproveExecuteRecord(listAer); /*** 标记 执行人 阅读 ***/ if(!CollectionUtils.isEmpty(listAer)){ this.updateSpmkExecutorReadStatus(listAer,empNum); } /*** 标记执行人阅读 结束***/ if(sum != null) { adD.setEmpNum(sum.getEmpNum()); adD.setSts(sum.getSts()); adD.setLaunchTime(sum.getCreateTime()); adD.setDigest(sum.getDigest()); SpmkExecutor exe= null; SpmkApproveExecuteRecord exere = SpmkApproveExecuteRecord.builder().build() .selectOne(new QueryWrapper<SpmkApproveExecuteRecord>().lambda().select(SpmkApproveExecuteRecord::getId).eq(SpmkApproveExecuteRecord::getApproveSummaryId , sum.getId()) .eq(SpmkApproveExecuteRecord::getSts, 1)); if(exere != null) { exe = SpmkExecutor.builder().build().selectOne(new QueryWrapper<SpmkExecutor>().lambda().eq(SpmkExecutor::getApproveExecuteRecordId, exere.getId()).orderByDesc(SpmkExecutor::getId)); } if(exe != null) { adD.setExecuteEmpNum(exe.getEmpNum()); adD.setExecuteSts(exe.getSts()); adD.setExeid(exe.getId()); adD.setExereid(exere.getId()); } } return adD; } //草稿箱用 public SpmkApproveDetailDto selectDraftsDetailByAsId(Integer asId) { // TODO Auto-generated method stub //SpmkApproveDetail ad = spmkApproveDetailMapper.selectOne(new QueryWrapper<SpmkApproveDetail>().lambda().eq(SpmkApproveDetail::getApproveSummaryId, asId)); SpmkApproveDetailDrafts ad = spmkApproveDetailDraftsMapper.selectOne(new QueryWrapper<SpmkApproveDetailDrafts>().lambda().eq(SpmkApproveDetailDrafts::getApproveSummaryId, asId)); SpmkApproveDrafts sum = null; if(ad != null) { sum = SpmkApproveDrafts.builder().build().selectOne(new QueryWrapper<SpmkApproveDrafts>().lambda().select(SpmkApproveDrafts::getId,SpmkApproveDrafts::getEmpNum,SpmkApproveDrafts::getSts,SpmkApproveDrafts::getCreateTime,SpmkApproveDrafts::getDigest) .eq(SpmkApproveDrafts::getId, ad.getApproveSummaryId())); } SpmkApproveDetailDto adD = SpmkApproveDetailDto.builder().build(); if (ad == null) { return null; } //审批操作记录 // List<SpmkApproveExecuteRecord> listAer = spmkApproveExecuteRecordMapper.selectListByAsId(asId); BeanUtil.copyProperties(ad, adD, "requestData","froms","router","flowChildren","spmkApproveExecuteRecord"); if(ad.getRequestData() !=null) { adD.setRequestData(jsonObject.parseObject(ad.getRequestData(), JSONObject.class)); } if(ad.getFroms()!=null) { adD.setFroms(jsonObject.parseArray(ad.getFroms(), JSONObject.class)); } if(ad.getFlowChildren() !=null) { adD.setRouter(jsonObject.parseObject(ad.getRouter(), Router.class)); } if(ad.getFlowChildren()!=null) { adD.setFlowChildren(jsonObject.parseArray(ad.getFlowChildren(), FlowChildren.class)); } // adD.setApproveExecuteRecord(listAer); if(sum != null) { adD.setEmpNum(sum.getEmpNum()); adD.setSts(sum.getSts()); adD.setLaunchTime(sum.getCreateTime()); adD.setDigest(sum.getDigest()); SpmkExecutor exe= null; SpmkApproveExecuteRecord exere = SpmkApproveExecuteRecord.builder().build() .selectOne(new QueryWrapper<SpmkApproveExecuteRecord>().lambda().select(SpmkApproveExecuteRecord::getId).eq(SpmkApproveExecuteRecord::getApproveSummaryId , sum.getId()) .eq(SpmkApproveExecuteRecord::getSts, 1)); if(exere != null) { exe = SpmkExecutor.builder().build().selectOne(new QueryWrapper<SpmkExecutor>().lambda().eq(SpmkExecutor::getApproveExecuteRecordId, exere.getId()).orderByDesc(SpmkExecutor::getId)); } if(exe != null) { adD.setExecuteEmpNum(exe.getEmpNum()); adD.setExecuteSts(exe.getSts()); adD.setExeid(exe.getId()); adD.setExereid(exere.getId()); } } return adD; } @Override public List<SpmkApprovalG> selectListAg(UserBean userBean) { // TODO Auto-generated method stub List<Integer> depts = zzglBmgwMService.empNumupGetDepts(userBean.getOrgCode(), userBean.getEmpNum()); return spmkApprovalGMapper.selectListAgInCa(userBean.getOrgCode(), userBean.getEmpNum(), depts); } /** * 审核汇总详情数据转换 * @param */ @Override public String addApproveDetail() { QueryWrapper queryWrapper = new QueryWrapper<SpmkApproveDetail>().select("id,approve_summary_id", "name", "department_name", "request_data", "froms", "router", "flow_children"); List<SpmkApproveDetail> spmkApproveDetails = spmkApproveDetailMapper.selectList(queryWrapper); spmkApproveDetails.forEach(t -> { SpmkApproveDetailSummary spmkApproveDetailSummary = new SpmkApproveDetailSummary(); spmkApproveDetailSummary.setApproveSummaryId(t.getApproveSummaryId()); spmkApproveDetailSummary.setDepartmentName(t.getDepartmentName()); spmkApproveDetailSummary.setName(t.getName()); try { Object deserialize2 = ObjectUtil.deserialize(t.getFlowChildren()); String flowChidren = JSON.toJSONString(deserialize2); spmkApproveDetailSummary.setFlowChildren(flowChidren); } catch (Exception e) { e.printStackTrace(); } finally { try { Object deserialize1 = ObjectUtil.deserialize(t.getFroms()); String froms = JSON.toJSONString(deserialize1); spmkApproveDetailSummary.setFroms(froms); } catch (Exception e) { e.printStackTrace(); } finally { try { Object deserialize = ObjectUtil.deserialize(t.getRequestData()); String s = JSON.toJSONString(deserialize); spmkApproveDetailSummary.setRequestData(s); } catch (Exception e) { e.printStackTrace(); } finally { try { Router router = ObjectUtil.deserialize(t.getRouter()); String s = JSON.toJSONString(router); spmkApproveDetailSummary.setRouter(s); } catch (Exception e) { e.printStackTrace(); } finally { spmkApproveDetailSummary.insertOrUpdate(); } } } } }); return "成功"; } /** * 标记 执行人 阅读 * @param listAer * @param empNum */ private void updateSpmkExecutorReadStatus(List<SpmkApproveExecuteRecord> listAer, Integer empNum){ for (SpmkApproveExecuteRecord entity:listAer ) { if(!CollectionUtils.isEmpty(entity.getSpmkExecutors())){ for (SpmkExecutor se:entity.getSpmkExecutors()) { if(empNum.equals(se.getEmpNum()) && 0 == se.getReadStatus()){ SpmkExecutor.builder().id(se.getId()).readStatus(1).build().updateById(); } } } } } }