package com.gk.hotwork.specialWork.service.impl; import com.gk.hotwork.Domain.Enum.ResultCodes; import com.gk.hotwork.Domain.Exception.BusinessException; import com.gk.hotwork.Domain.Utils.StringUtils; import com.gk.hotwork.Domain.Vo.ResultVO; import com.gk.hotwork.Domain.dto.DepInfoRPCRespDTO; import com.gk.hotwork.Service.Middle.AccountDepartmentService; import com.gk.hotwork.specialWork.entity.*; import com.gk.hotwork.specialWork.enums.*; import com.gk.hotwork.specialWork.service.WorkBrokenCircuitPrintService; import com.gk.hotwork.specialWork.service.WorkTemporaryPowerPrintService; import com.gk.hotwork.specialWork.service.baseService.*; import com.gk.hotwork.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("WorkTemporaryPowerPrintService") public class WorkTemporaryPowerPrintServiceImpl implements WorkTemporaryPowerPrintService { @Autowired private WorkApprovalUnitInfoService workApprovalUnitInfoService; @Autowired private WorkApprovalStepInfoService workApprovalStepInfoService; @Autowired private WorkApprovalFilledItemInfoService workApprovalFilledItemInfoService; @Autowired private WorkApprovalItemInfoService workApprovalItemInfoService; @Autowired private WorkApprovalItemMeasureInfoService workApprovalItemMeasureInfoService; @Autowired private WorkTemporaryPowerInfoService workTemporaryPowerInfoService; @Autowired private WorkApplyOperatorInfoService workApplyOperatorInfoService; public Map workTemporaryPowerPrint(HttpServletResponse response, WorkApplyInfo workApplyInfo){ //获取层级 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()); //临时用电作业 WorkTemporaryPowerInfo workTemporaryPowerInfo = workTemporaryPowerInfoService.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("workTime","自"+ WorkPrintShiftUtil.shiftTime(workApplyInfo.getExpStartTime())+"至"+WorkPrintShiftUtil.shiftTime(workApplyInfo.getExpEndTime())+"止"); baseDataMap.put("workLocation",workApplyInfo.getWorkLocation()); baseDataMap.put("powerAccessPoint",workTemporaryPowerInfo.getPowerAccessPoint()); baseDataMap.put("workVoltage",workTemporaryPowerInfo.getWorkingVoltage()+"V"); baseDataMap.put("equipmentAndPower",workTemporaryPowerInfo.getEquipmentAndPower()); baseDataMap.put("operatorNames",workApplyInfo.getOperatorUnames()); baseDataMap.put("harm",workApplyInfo.getHazardIdentification()); //分析数据 List> anList = new ArrayList<>(); //获取分析人层级数据 List analystStepList = workApprovalStepInfoList .stream() .filter(step -> step.getType().equals(ApprovalStepTypeEnum.TYPE_ANALYST.getType())) .collect(Collectors.toList()); if(analystStepList.size()>0){ //获取参与审核分析人 List analysUnitList = workApprovalUnitInfoList .stream() .filter(unit -> unit.getStepId().equals(analystStepList.get(0).getId()) && unit.getResult().equals(WorkApprovalUnitResultEnum.RESULT_SUCCESS.getResult())) .collect(Collectors.toList()); WorkApprovalUnitInfo unitInfo = new WorkApprovalUnitInfo(); if(analysUnitList.size()>0){ unitInfo = analysUnitList.get(0); } //获取审批项 List analystItemList = workApprovalItemInfoList .stream() .filter(item -> item.getStepId().equals(analystStepList.get(0).getId())) .collect(Collectors.toList()); //填入数据 for (WorkApprovalItemInfo itemInfo : analystItemList) { //获取审批项填入对应数据 List fillList = workApprovalFilledItemInfoList .stream() .filter(fillItem -> fillItem.getItemId().equals(itemInfo.getId())) .collect(Collectors.toList()); WorkApprovalFilledItemInfo workApprovalFilledItemInfo = new WorkApprovalFilledItemInfo(); if(fillList.size()>0){ workApprovalFilledItemInfo = fillList.get(0); } Map map = new HashMap<>(); map.put("anaAddress", workApprovalFilledItemInfo.getAnalysisLocation()); map.put("anaItemName", itemInfo.getItemName()); map.put("anaData", workApprovalFilledItemInfo.getVal().toString()+"%"); map.put("anaResult", WorkApprovalUnitResultEnum.parse(unitInfo.getResult()).getDesc()); map.put("anaUname", unitInfo.getApprovalUname()); map.put("anaTime", WorkPrintShiftUtil.shiftTime(unitInfo.getApprovalActualTime())); anList.add(map); } } //安全措施数据 List> meList = new ArrayList<>(); //遍历层级 获取安全措施层级 for (WorkApprovalStepInfo stepInfo : workApprovalStepInfoList) { if(!ApprovalStepTypeEnum.TYPE_ANALYST.getType().equals(stepInfo.getType())){//非分析人审批人 //过滤审批项 List itemList = workApprovalItemInfoList .stream() .filter(item -> item.getStepId().equals(stepInfo.getId())) .collect(Collectors.toList()); if(itemList.size()>0 ){ if(null != itemList.get(0).getMeasureId()){//措施id不为空则为安全措施项 //定义序号变量 int index = 1; //获取该层审批人 List itemUnitList = workApprovalUnitInfoList .stream() .filter(unit -> unit.getStepId().equals(stepInfo.getId()) && unit.getResult().equals(WorkApprovalUnitResultEnum.RESULT_SUCCESS.getResult())) .collect(Collectors.toList()); //选择类型使用 //审批人审批结果 String approvalResult = ""; //生成审批人字符串 /* StringBuffer stringBuffer = new StringBuffer(); for (WorkApprovalUnitInfo unitInfo : itemUnitList) { stringBuffer.append(unitInfo.getApprovalUname()).append(","); if(StringUtils.isBlank(approvalResult)){ //赋值 approvalResult = WorkApprovalUnitResultEnum.parse(unitInfo.getResult()).getDesc(); } } stringBuffer.deleteCharAt(stringBuffer.toString().length()-1);*/ //遍历审批项 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: itemUnitList) { 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", WorkApprovalUnitResultEnum.parse(unitInfo.getResult()).getDesc()); 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{ map.put("mResult", WorkApprovalUnitResultEnum.parse(unitInfo.getResult()).getDesc()); } meList.add(map); index++; } } } } } } } //审批层数据 List> apList = new ArrayList<>(); //排序 workApprovalStepInfoList.sort(Comparator.comparing(WorkApprovalStepInfo::getStepSerial)); //遍历层级 for (WorkApprovalStepInfo stepInfo: workApprovalStepInfoList) { if(!ApprovalStepTypeEnum.TYPE_ANALYST.getType().equals(stepInfo.getType())){//非分析人审批人 //获取该层审批项 List itemList = workApprovalItemInfoList .stream() .filter(item -> item.getStepId().equals(stepInfo.getId())) .collect(Collectors.toList()); //获取审批人 List approvalUnitList = workApprovalUnitInfoList .stream() .filter(unit -> unit.getStepId().equals(stepInfo.getId()) && unit.getResult().equals(WorkApprovalUnitResultEnum.RESULT_SUCCESS.getResult())) .collect(Collectors.toList()); if(itemList.size() == 0){//无审批项 //遍历审批人 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); } } } } // 模板文件输入输出地址 String filePath = "/docxTemplate/workTemporaryPower.docx"; 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("analysis",anList); dataMap.put("text",workApplyInfo.getWorkPermitNo()); dataMap.put("filePath",filePath); dataMap.put("fileName",WorkTypeEnum.parse(workApplyInfo.getWorkType()).getName()); dataMap.put("workCode",workApplyInfo.getWorkPermitNo()); // 模板文件输入输出地址 // String outPath = "F:/test/workTemporaryPower示例文档.docx"; // WorkExportUtil workExportUtil = new WorkExportUtil(); // workExportUtil.setTempLocalPath(filePath); //设置模板的路径 // workExportUtil.init(); //初始化工具类 // workExportUtil.export(dataMap); //写入相关数据 // workExportUtil.generate(outPath); //导出到目标文档 return dataMap; } }