郑永安
2023-06-19 7a6abd05683528032687c75e80e0bd2030a3e46c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
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.WorkHoistingPrintService;
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("WorkHoistingPrintService")
public class WorkHoistingPrintServiceImpl implements WorkHoistingPrintService {
    @Autowired
    private WorkApprovalUnitInfoService workApprovalUnitInfoService;
    @Autowired
    private WorkApprovalStepInfoService workApprovalStepInfoService;
    @Autowired
    private WorkApprovalFilledItemInfoService workApprovalFilledItemInfoService;
    @Autowired
    private WorkApprovalItemInfoService workApprovalItemInfoService;
    @Autowired
    private WorkApprovalItemMeasureInfoService workApprovalItemMeasureInfoService;
    @Autowired
    private WorkHoistingInfoService workHoistingInfoService;
    @Autowired
    private WorkApplyOperatorInfoService workApplyOperatorInfoService;
 
 
    public Map<String,Object> workHoistingPrint(WorkApplyInfo workApplyInfo,WorkInfo workInfo){
 
        //获取层级
        List<WorkApprovalStepInfo> workApprovalStepInfoList = workApprovalStepInfoService.listApprovalRuleStepByWorkApplyId(workApplyInfo.getId());
        //审批单元
        List<WorkApprovalUnitInfo> workApprovalUnitInfoList = workApprovalUnitInfoService.listApprovalRuleUnitByWorkApplyId(workApplyInfo.getId());
        //获取审批项
        List<WorkApprovalItemInfo> workApprovalItemInfoList = workApprovalItemInfoService.listWorkApprovalItemByWorkApplyId(workApplyInfo.getId());
        //获取审批项填报
        List<WorkApprovalFilledItemInfo> workApprovalFilledItemInfoList = workApprovalFilledItemInfoService.listApprovalFilledItemInfoByWorkApplyId(workApplyInfo.getId());
        //获取安全措施项
        List<WorkApprovalItemMeasureInfo> workApprovalItemMeasureInfoList = workApprovalItemMeasureInfoService.listWorkApprovalItemMeasureByWorkApplyId(workApplyInfo.getId());
        //吊装作业
        WorkHoistingInfo workHoistingInfo = workHoistingInfoService.getById(workApplyInfo.getWorkDetailId());
        //获取作业人
        List<WorkApplyOperatorInfo> workApplyOperatorInfoList = workApplyOperatorInfoService.listWorkOperatorByWorkApplyId(workApplyInfo.getId());
 
        //基础数据
        Map<String,String> baseDataMap=new HashMap<>();
        baseDataMap.put("workLocation",workApplyInfo.getWorkLocation());
        baseDataMap.put("hoistingToolName",workHoistingInfo.getHoistingToolName());
        baseDataMap.put("operatorNames",WorkPrintShiftUtil.shiftOperators(workApplyOperatorInfoList));
        baseDataMap.put("workCode",workApplyInfo.getWorkPermitNo());
        baseDataMap.put("operatorNames",WorkPrintShiftUtil.shiftOperators(workApplyOperatorInfoList));
        baseDataMap.put("weightMass",String.valueOf(workHoistingInfo.getWeightMass() == null ? 0.0 : workHoistingInfo.getWeightMass()) + "t");
        baseDataMap.put("workTime","自"+ WorkPrintShiftUtil.shiftTime(workApplyInfo.getExpStartTime())+"至"+WorkPrintShiftUtil.shiftTime(workApplyInfo.getExpEndTime())+"止");
        baseDataMap.put("workContent",workApplyInfo.getWorkContent());
        baseDataMap.put("harm",workApplyInfo.getHazardIdentification());
 
        //安全措施数据
        List<Map<String, String>> meList = new ArrayList<>();
        //普通人员数据
        List<Map<String, String>> apList = new ArrayList<>();
        //遍历层级
        for (WorkApprovalStepInfo stepInfo : workApprovalStepInfoList) {
 
            //监护人层级 || 普通人员审核层级
            if(!stepInfo.getPersonType().equals(ApprovalStepPersonTypeEnum.TYPE_ANALYST.getType())){
                //获取审批人
                List<WorkApprovalUnitInfo> 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<WorkApprovalItemInfo> itemList = workApprovalItemInfoList
                            .stream()
                            .filter(item -> item.getStepId().equals(stepInfo.getId()))
                            .collect(Collectors.toList());
                    //遍历审批项
                    for (WorkApprovalItemInfo itemInfo : itemList) {
                        //获取该审批对应措施
                        List<WorkApprovalItemMeasureInfo> 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<WorkApprovalFilledItemInfo> fillItemList = workApprovalFilledItemInfoList
                                .stream()
                                .filter(fillItem -> fillItem.getItemId().equals(itemInfo.getId()))
                                .collect(Collectors.toList());
 
                        //遍历审批人 获取审批数据 填充
                        for(WorkApprovalUnitInfo unitInfo: approvalUnitList) {
                            String measureContext = workApprovalItemMeasureInfo.getContext();
                            //获取审批人填写的审批数据
                            List<WorkApprovalFilledItemInfo> 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<String,String> 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<String,String> 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<String,String> 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<String,String> 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/workHoisting.docx";
        String filePath = "/pdfHtmlTemplate/workHoisting.html";
        if(StringUtils.isBlank(filePath)){
            throw new BusinessException("200","模板不存在!");
        }
 
        //综合数据
        Map<String,Object> 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());
 
        // 模板文件输入输出地址
//            String outPath = "F:/test/workHoisting示例文档.docx";
//            WorkExportUtil workExportUtil = new WorkExportUtil();
//            workExportUtil.setTempLocalPath(filePath);    //设置模板的路径
//            workExportUtil.init();            //初始化工具类
//            workExportUtil.export(dataMap);   //写入相关数据
//            workExportUtil.generate(outPath);   //导出到目标文档
 
        return dataMap;
    }
}