| 
					
				 | 
			
			
				@@ -2,6 +2,8 @@ package com.xunmei.core.letter.service.impl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.hutool.core.date.DateUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import cn.hutool.core.util.ObjectUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.alibaba.excel.EasyExcel; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.alibaba.fastjson2.JSON; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -13,6 +15,7 @@ import com.xunmei.common.core.constant.CacheConstants; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.xunmei.common.core.constant.DictConstants; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.xunmei.common.core.constant.ErrorMsgConstants; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.xunmei.common.core.constant.SecurityConstants; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingTaskReportVo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.xunmei.common.core.domain.letter.domain.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.xunmei.common.core.domain.letter.dto.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.xunmei.common.core.domain.letter.vo.*; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -21,12 +24,18 @@ import com.xunmei.common.core.domain.panel.enums.PanelTypeEnums; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.xunmei.common.core.domain.panel.vo.PanelListVo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.xunmei.common.core.domain.panel.vo.WebPanelResult; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.xunmei.common.core.enums.OrgTypeEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.xunmei.common.core.exception.SystemException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.xunmei.common.core.util.BeanHelper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.xunmei.common.core.utils.DateUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.xunmei.common.core.utils.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.xunmei.common.core.web.page.TableDataInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.xunmei.common.redis.utils.RedisUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.xunmei.common.security.utils.DictUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.xunmei.common.security.utils.SecurityUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.xunmei.core.edu.service.impl.ValueCellWriteHandler; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.xunmei.core.letter.export.CoreIntroduceLetterOutInRequestExcelVo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.xunmei.core.letter.export.IntroduceLetterOutInRequestMergeHandler; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.xunmei.core.letter.export.MultiImageWriteHandler; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.xunmei.core.letter.mapper.CoreIntroduceLetterOutInRequestMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.xunmei.core.letter.mapper.CoreIntroduceLetterMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.xunmei.core.letter.mapper.CoreIntroduceLetterOutInRequestUserMapper; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -34,6 +43,7 @@ import com.xunmei.core.letter.mapper.CoreOutInRecordMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.xunmei.core.letter.service.ICoreIntroduceLetterOutInHistoryUserService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.xunmei.core.letter.service.ICoreIntroduceLetterOutInRequestUserService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.xunmei.core.letter.service.ICoreIntroduceLetterService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.xunmei.system.api.RemoteFileService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.xunmei.system.api.RemoteOrgService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.xunmei.system.api.RemoteRoleService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.xunmei.system.api.RemoteUserService; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -48,6 +58,8 @@ import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.transaction.annotation.Transactional; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import javax.annotation.Resource; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.servlet.http.HttpServletResponse; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.net.URLEncoder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.stream.Collectors; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -82,6 +94,9 @@ public class CoreIntroduceLetterServiceImpl extends ServiceImpl<CoreIntroduceLet 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private RemoteRoleService roleService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private RemoteUserService userService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private RemoteFileService fileService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private RemoteOrgService orgService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -227,6 +242,168 @@ public class CoreIntroduceLetterServiceImpl extends ServiceImpl<CoreIntroduceLet 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public TableDataInfo<CoreIntroduceLetterOutInRequestVo> selectWebOntInRequestListPage(CoreOutInRequestDto requestDto) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Page<CoreIntroduceLetterOutInRequestVo> page; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //分页 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (requestDto.getPageNum() != null && requestDto.getPageSize() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            page = new Page<>(requestDto.getPageNum(), requestDto.getPageSize()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            page = new Page<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (ObjectUtil.isNotEmpty(requestDto.getRange())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            requestDto.setStartTime(DateUtil.beginOfDay(requestDto.getRange()[0])); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            requestDto.setEndTime(DateUtil.endOfDay(requestDto.getRange()[1])); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (Boolean.TRUE.equals(requestDto.getCheckSub())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            SysOrg org = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgById(requestDto.getOrgId(), SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            requestDto.setOrgPath(org.getPath()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //获取数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        page = coreIntroduceLetterMapper.selectWebOutInRequestPageList(page, requestDto); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (CollectionUtils.isNotEmpty(page.getRecords())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //获取人员信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            final LambdaQueryWrapper<CoreIntroduceLetterOutInRequestUser> oqw = new LambdaQueryWrapper<CoreIntroduceLetterOutInRequestUser>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            oqw.in(CoreIntroduceLetterOutInRequestUser::getOutInRequestId, page.getRecords().stream().map(x->x.getId()).collect(Collectors.toList())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<CoreIntroduceLetterOutInRequestUser> userList =  outInRequestUserMapper.selectList(oqw); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Map<Long, List<CoreIntroduceLetterOutInRequestUser>> userListMap = userList.stream().collect(Collectors.groupingBy(CoreIntroduceLetterOutInRequestUser::getOutInRequestId)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            page.getRecords().stream().forEach(vo -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                vo.setLetterFile(ObjectUtil.isNotEmpty(vo.getLetterFileStr()) ? JSON.parseArray(vo.getLetterFileStr(), String.class) : null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (CollectionUtils.isNotEmpty(userListMap) && userListMap.containsKey(vo.getId())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    vo.setUserInfos(userListMap.get(vo.getId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    List<String> names = userListMap.get(vo.getId()).stream().map(CoreIntroduceLetterOutInRequestUser::getUserName).filter(name -> name != null && !name.trim().isEmpty()).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if(names.size()>0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if(names.size() ==vo.getUserInfos().size()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            vo.setUserNames(names.stream().collect(Collectors.joining(","))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        else if  (names.size()>0 && names.size()<vo.getUserInfos().size()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            vo.setUserNames(names.stream().collect(Collectors.joining(",")) + " 等"+vo.getUserInfos().size()+"人"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        vo.setUserNames("待登记后显示"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //抓换为TableDataInfo适配前端 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return TableDataInfo.build(page); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void webExportOntInRequestExcel(CoreOutInRequestDto requestDto, HttpServletResponse response) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (ObjectUtil.isNotEmpty(requestDto.getRange())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            requestDto.setStartTime(DateUtil.beginOfDay(requestDto.getRange()[0])); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            requestDto.setEndTime(DateUtil.endOfDay(requestDto.getRange()[1])); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (Boolean.TRUE.equals(requestDto.getCheckSub())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            SysOrg org = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgById(requestDto.getOrgId(), SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            requestDto.setOrgPath(org.getPath()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        final List<CoreIntroduceLetterOutInRequestExcelVo> list = coreIntroduceLetterMapper.selectWebOutInRequestExportList(requestDto); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (ObjectUtil.isEmpty(list)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw new SystemException("未获取到数据"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String prefixPath = RemoteCallHandlerExecutor.executeRemoteCall(() -> fileService.getLocalPathPrefix(), ErrorMsgConstants.QUERY_FILE_PATH_ERROR).getData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String staticsPath = RemoteCallHandlerExecutor.executeRemoteCall(() -> fileService.getStaticPathPrefix(), ErrorMsgConstants.QUERY_FILE_PATH_ERROR).getData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (int i = 0; i < list.size(); i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            CoreIntroduceLetterOutInRequestExcelVo outInRequestVo = list.get(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            outInRequestVo.setNo(i + 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 处理签名图片 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            if (ObjectUtil.isNotEmpty(outInRequestVo.getCheckSign())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                outInRequestVo.setCheckSign(getFileRealPath(outInRequestVo.getCheckSign(), prefixPath, staticsPath)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            // 处理签名图片 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            if (ObjectUtil.isNotEmpty(outInRequestVo.getApproveSignImg())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                outInRequestVo.setApproveSignImg(getFileRealPath(outInRequestVo.getApproveSignImg(), prefixPath, staticsPath)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 处理证件照片(逗号分隔) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (ObjectUtil.isNotEmpty(outInRequestVo.getImgFileStr())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                outInRequestVo.setImgFileList(getFileRealPath(Arrays.asList(outInRequestVo.getImgFileStr().split(",")), prefixPath, staticsPath)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 处理介绍信文件(JSON 数组) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (ObjectUtil.isNotEmpty(outInRequestVo.getLetterFileStr())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                final List<String> letterFileList = JSON.parseArray(outInRequestVo.getLetterFileStr(), String.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<String> strings = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (String json : letterFileList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    final Map map = JSON.parseObject(json, Map.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    final String url = (String) map.get("imgPath"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (ObjectUtil.isNotEmpty(url)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        strings.add(url); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        strings.add((String) map.get("url")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                outInRequestVo.setLetterFile(getFileRealPath(strings, prefixPath, staticsPath)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String baseHeaderName = "出入情况表"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 设置响应头 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(baseHeaderName, "utf-8")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            response.setContentType("application/octet-stream;charset=UTF-8"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            response.setCharacterEncoding("utf-8"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String header = baseHeaderName + "(" + DateUtil.format(requestDto.getStartTime(), "yyyy-MM-dd") + "至" + DateUtil.format(requestDto.getEndTime(), "yyyy-MM-dd") + ")"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 数据导出 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EasyExcel.write(response.getOutputStream(), CoreIntroduceLetterOutInRequestExcelVo.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .registerWriteHandler(new IntroduceLetterOutInRequestMergeHandler(list)) // 注册合并处理器 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .registerWriteHandler(new MultiImageWriteHandler(0,"checkSign","checkSign",list)) // 注册图片处理器 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .registerWriteHandler(new ValueCellWriteHandler(header)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .sheet(baseHeaderName).doWrite(list); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 重置response 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            response.reset(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            response.setContentType("application/json"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            response.setCharacterEncoding("utf-8"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private List<String> getFileRealPath(List<String> fileList, String prefixPath, String staticsPath) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<String> list = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (ObjectUtil.isEmpty(fileList)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return list; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (String path : fileList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (path.contains(staticsPath)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //删除 /statics 前缀路径 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                path = path.replace(staticsPath, StringUtil.EMPTY_STRING); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            list.add(prefixPath + path); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return list; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private String getFileRealPath(String file, String prefixPath, String staticsPath) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (ObjectUtil.isEmpty(file)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return StringUtil.EMPTY_STRING; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (file.contains(staticsPath)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //删除 /statics 前缀路径 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            file = file.replace(staticsPath, StringUtil.EMPTY_STRING); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return prefixPath + file; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public List<CoreIntroduceLetterCheckLogVo> auditAllList(Long id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return coreIntroduceLetterMapper.auditAllList(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -547,9 +724,27 @@ public class CoreIntroduceLetterServiceImpl extends ServiceImpl<CoreIntroduceLet 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public void updateCoreIntroduceLetterStatus(CoreIntroduceLetterUpdateStatusDto letterDto) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         CoreIntroduceLetter coreIntroduceLetter = coreIntroduceLetterMapper.selectById(letterDto.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         coreIntroduceLetter.setStatus(letterDto.getStatus()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //下发时 出入人员进入 创建机构历史人员库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (ObjectUtil.equal(letterDto.getStatus(), 1)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            CoreIntroduceLetterInfoVo coreIntroduceLetterVo = coreIntroduceLetterMapper.selectOneById(letterDto.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<CoreIntroduceLetterInfoVo> list = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            list.add(coreIntroduceLetterVo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<CoreIntroduceLetterUserAddDto> letterUserList = coreIntroduceLetterMapper.findUserList(list); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            letterUserList =letterUserList.stream().filter(item -> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    ObjectUtil.isNotEmpty(item.getUserName()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    && ObjectUtil.isNotEmpty(item.getCompanyName()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    && ObjectUtil.isNotEmpty(item.getIdCard()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //进入 历史人员库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            outInHistoryUserService.batchInboundOutInHistory(letterUserList,coreIntroduceLetter.getOrgId(),null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         coreIntroduceLetterMapper.updateById(coreIntroduceLetter); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |