package com.gkhy.safePlatform.specialWork.service.impl; import com.gkhy.safePlatform.commons.exception.BusinessException; import com.gkhy.safePlatform.commons.utils.StringUtils; import com.gkhy.safePlatform.specialWork.entity.*; import com.gkhy.safePlatform.specialWork.enums.*; import com.gkhy.safePlatform.specialWork.service.WorkGroundBreakingPrintService; import com.gkhy.safePlatform.specialWork.service.baseService.*; import com.gkhy.safePlatform.specialWork.util.WorkPrintShiftUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletResponse; import java.util.*; import java.util.stream.Collectors; @Service("WorkGroundBreakingPrintService") public class WorkGroundBreakingPrintServiceImpl implements WorkGroundBreakingPrintService { @Autowired private WorkApprovalUnitInfoService workApprovalUnitInfoService; @Autowired private WorkApprovalStepInfoService workApprovalStepInfoService; @Autowired private WorkApprovalFilledItemInfoService workApprovalFilledItemInfoService; @Autowired private WorkApprovalItemInfoService workApprovalItemInfoService; @Autowired private WorkApprovalItemMeasureInfoService workApprovalItemMeasureInfoService; @Autowired private WorkGroundBreakingInfoService workGroundBreakingInfoService; @Autowired private WorkApplyOperatorInfoService workApplyOperatorInfoService; public Map workGroundBreakingPrint(WorkApplyInfo workApplyInfo,WorkInfo workInfo){ //获取层级 List workApprovalStepInfoList = workApprovalStepInfoService.listApprovalRuleStepByWorkApplyId(workApplyInfo.getId()); //审批单元 List workApprovalUnitInfoList = workApprovalUnitInfoService.listApprovalRuleUnitByWorkApplyId(workApplyInfo.getId()); //获取审批项 List workApprovalItemInfoList = workApprovalItemInfoService.listWorkApprovalItemByWorkApplyId(workApplyInfo.getId()); //获取审批项填报 List workApprovalFilledItemInfoList = workApprovalFilledItemInfoService.listApprovalFilledItemInfoByWorkApplyId(workApplyInfo.getId()); //获取安全措施项 List workApprovalItemMeasureInfoList = workApprovalItemMeasureInfoService.listWorkApprovalItemMeasureByWorkApplyId(workApplyInfo.getId()); //动土作业 WorkGroundBreakingInfo workGroundBreakingInfo = workGroundBreakingInfoService.getById(workApplyInfo.getWorkDetailId()); //获取作业人 //List workApplyOperatorInfoList = workApplyOperatorInfoService.listWorkOperatorByWorkApplyId(workApplyInfo.getId()); //基础数据 Map baseDataMap=new HashMap<>(); baseDataMap.put("applydepName",workApplyInfo.getDepName()); baseDataMap.put("applyUname",workApplyInfo.getApplyUname()); baseDataMap.put("workCode",workApplyInfo.getWorkPermitNo()); baseDataMap.put("workLocation",workApplyInfo.getWorkLocation()); baseDataMap.put("workTime","自"+ WorkPrintShiftUtil.shiftTime(workApplyInfo.getExpStartTime())+"至"+WorkPrintShiftUtil.shiftTime(workApplyInfo.getExpEndTime())+"止"); baseDataMap.put("workDepName",workGroundBreakingInfo.getOperationDepName()); baseDataMap.put("otherSpeicialWork",workGroundBreakingInfo.getOtherSpecialWork()); baseDataMap.put("workScm","作业范围:" + workGroundBreakingInfo.getGbScope() + " 作业内容:" + workApplyInfo.getWorkContent() + " 作业方式:" +workGroundBreakingInfo.getGbMethod()); //安全措施数据 List> meList = new ArrayList<>(); //普通人员数据 List> apList = new ArrayList<>(); //遍历层级 for (WorkApprovalStepInfo stepInfo : workApprovalStepInfoList) { //监护人层级 || 普通人员审核层级 if(!stepInfo.getPersonType().equals(ApprovalStepPersonTypeEnum.TYPE_ANALYST.getType())){ //获取审批人 List approvalUnitList = workApprovalUnitInfoList .stream() .filter(unit -> unit.getStepId().equals(stepInfo.getId()) && unit.getResult().equals(WorkApprovalUnitResultEnum.RESULT_SUCCESS.getResult())) .collect(Collectors.toList()); //审批项审批(一般是安全措施) if(stepInfo.getContainItem()){ //定义序号变量 int index = 1; //过滤审批项 List itemList = workApprovalItemInfoList .stream() .filter(item -> item.getStepId().equals(stepInfo.getId())) .collect(Collectors.toList()); //遍历审批项 for (WorkApprovalItemInfo itemInfo : itemList) { //获取该审批对应措施 List measureList = workApprovalItemMeasureInfoList .stream() .filter(measure -> measure.getId().equals(itemInfo.getMeasureId())) .collect(Collectors.toList()); WorkApprovalItemMeasureInfo workApprovalItemMeasureInfo = new WorkApprovalItemMeasureInfo(); if(measureList.size()>0){ workApprovalItemMeasureInfo = measureList.get(0); } //获取该审批项对应的审批数据 List fillItemList = workApprovalFilledItemInfoList .stream() .filter(fillItem -> fillItem.getItemId().equals(itemInfo.getId())) .collect(Collectors.toList()); //遍历审批人 获取审批数据 填充 for(WorkApprovalUnitInfo unitInfo: approvalUnitList) { String measureContext = workApprovalItemMeasureInfo.getContext(); //获取审批人填写的审批数据 List unitFillItemList = fillItemList .stream() .filter(fillItem -> fillItem.getUnitId().equals(unitInfo.getId())) .collect(Collectors.toList()); WorkApprovalFilledItemInfo workApprovalFilledItemInfo = new WorkApprovalFilledItemInfo(); if (unitFillItemList.size() > 0) { workApprovalFilledItemInfo = unitFillItemList.get(0); } //填空 if(RuleItemTypeEnum.parse(itemInfo.getType()).equals(RuleItemTypeEnum.FILL)){ if(measureContext.indexOf("_")>0){//存在,替换 measureContext = measureContext.replace("_",workApprovalFilledItemInfo.getMeasureText()); }else {//不存在,加载后面 measureContext = measureContext + workApprovalFilledItemInfo.getMeasureText(); } Map map = new HashMap<>(); map.put("index", String.valueOf(index)); map.put("measure", measureContext); map.put("mResult", "√"); map.put("mUname", unitInfo.getApprovalUname()); meList.add(map); index++; }else{//选项 Map map = new HashMap<>(); map.put("index", String.valueOf(index)); map.put("measure", workApprovalItemMeasureInfo.getContext()); map.put("mUname", unitInfo.getApprovalUname()); if(workApprovalFilledItemInfo.getMeasureVal().equals(WorkRuleMeasureOptEnum.UNINVOLVED.getType())){ map.put("mResult", WorkRuleMeasureOptEnum.parse(workApprovalFilledItemInfo.getMeasureVal()).getDesc()); }else{ if(workApprovalFilledItemInfo.getMeasureVal().equals(WorkRuleMeasureOptEnum.YES.getType())){ map.put("mResult", "√"); } if(workApprovalFilledItemInfo.getMeasureVal().equals(WorkRuleMeasureOptEnum.NO.getType())){ map.put("mResult", "×"); } } meList.add(map); index++; } } } } //简单审批 if(!stepInfo.getContainItem()){ //遍历审批人 for (WorkApprovalUnitInfo unitInfo : approvalUnitList) { Map map = new HashMap<>(); map.put("apprStepName", stepInfo.getStepName()); map.put("apprOpinion", unitInfo.getFillContent()); map.put("apprUname", unitInfo.getApprovalUname()); map.put("apResult", WorkApprovalStepResultEnum.parse(stepInfo.getApprovalResult()).getDesc()); map.put("apprSign", unitInfo.getApprovalUname()); map.put("apprTime",WorkPrintShiftUtil.shiftTime(unitInfo.getApprovalActualTime())); apList.add(map); } } } } //添加验收人 Map map = new HashMap<>(); map.put("apprStepName", "完工验收"); map.put("apprOpinion", workInfo.getWorkAcceptContent()); map.put("apprUname", workInfo.getAcceptUname()); map.put("apResult", WorkingAcceptStatusEnum.parse(workInfo.getWorkAcceptStatus()).getValue()); map.put("apprSign", workInfo.getAcceptUname()); map.put("apprTime",WorkPrintShiftUtil.shiftTime(workInfo.getWorkAcceptTime())); apList.add(map); // 模板文件输入输出地址 //String filePath = "/docxTemplate/workGroundBreaking.docx"; String filePath = "/pdfHtmlTemplate/workGroundBreaking.html"; if(StringUtils.isBlank(filePath)){ throw new BusinessException("200","模板不存在!"); } //综合数据 Map dataMap = new HashMap<>(); dataMap.put("baseData",baseDataMap); dataMap.put("approval",apList); dataMap.put("measure",meList); dataMap.put("text",workApplyInfo.getWorkPermitNo()); dataMap.put("filePath",filePath); dataMap.put("fileName",WorkTypeEnum.parse(workApplyInfo.getWorkType()).getName()); dataMap.put("workCode",workApplyInfo.getWorkPermitNo()); return dataMap; } }