From 0b193b98347b5563e59492d8f57eba8f67af6d23 Mon Sep 17 00:00:00 2001 From: liusheng <337615773@qq.com> Date: 星期二, 27 六月 2023 11:35:54 +0800 Subject: [PATCH] 新增题目 --- smartor/src/main/java/com/smartor/service/impl/PatArchiveServiceImpl.java | 424 ++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 358 insertions(+), 66 deletions(-) diff --git a/smartor/src/main/java/com/smartor/service/impl/PatArchiveServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/PatArchiveServiceImpl.java index 59996fc..55eb072 100644 --- a/smartor/src/main/java/com/smartor/service/impl/PatArchiveServiceImpl.java +++ b/smartor/src/main/java/com/smartor/service/impl/PatArchiveServiceImpl.java @@ -1,134 +1,426 @@ package com.smartor.service.impl; -import java.util.List; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.utils.DateUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import java.util.ArrayList; +import com.ruoyi.common.utils.DtoConversionUtils; import com.ruoyi.common.utils.StringUtils; -import org.springframework.transaction.annotation.Transactional; -import com.smartor.domain.PatMedOuthosp; +import com.smartor.domain.*; +import com.smartor.mapper.BaseTagMapper; +import com.smartor.mapper.PatArchivetagMapper; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.ObjectUtils; +import org.apache.poi.hssf.usermodel.HSSFDateUtil; +import org.apache.poi.ss.formula.functions.Now; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.parameters.P; +import org.springframework.stereotype.Service; import com.smartor.mapper.PatArchiveMapper; -import com.smartor.domain.PatArchive; import com.smartor.service.IPatArchiveService; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; /** * 鎮h�呮。妗圫ervice涓氬姟灞傚鐞� - * - * @author ruoyi - * @date 2023-02-22 + * + * @author smartor + * @date 2023-03-04 */ @Service -public class PatArchiveServiceImpl implements IPatArchiveService -{ +public class PatArchiveServiceImpl implements IPatArchiveService { @Autowired private PatArchiveMapper patArchiveMapper; + @Autowired + private BaseTagMapper baseTagMapper; + + @Autowired + private PatArchivetagMapper patArchivetagMapper; + + /** * 鏌ヨ鎮h�呮。妗� - * - * @param PatID 鎮h�呮。妗堜富閿� + * + * @param patid 鎮h�呮。妗堜富閿� * @return 鎮h�呮。妗� */ @Override - public PatArchive selectPatArchiveByPatID(Long PatID) - { - return patArchiveMapper.selectPatArchiveByPatID(PatID); + public PatArchive selectPatArchiveByPatid(Long patid) { + return patArchiveMapper.selectPatArchiveByPatid(patid); } /** * 鏌ヨ鎮h�呮。妗堝垪琛� - * + * * @param patArchive 鎮h�呮。妗� * @return 鎮h�呮。妗� */ @Override - public List<PatArchive> selectPatArchiveList(PatArchive patArchive) - { + public List<PatArchive> selectPatArchiveList(PatArchive patArchive) { return patArchiveMapper.selectPatArchiveList(patArchive); } /** * 鏂板鎮h�呮。妗� - * + * * @param patArchive 鎮h�呮。妗� * @return 缁撴灉 */ - @Transactional @Override - public int insertPatArchive(PatArchive patArchive) - { + public int insertPatArchive(PatArchive patArchive) { patArchive.setCreateTime(DateUtils.getNowDate()); - int rows = patArchiveMapper.insertPatArchive(patArchive); - insertPatMedOuthosp(patArchive); - return rows; + return patArchiveMapper.insertPatArchive(patArchive); } /** * 淇敼鎮h�呮。妗� - * + * * @param patArchive 鎮h�呮。妗� * @return 缁撴灉 */ - @Transactional @Override - public int updatePatArchive(PatArchive patArchive) - { + public int updatePatArchive(PatArchive patArchive) { patArchive.setUpdateTime(DateUtils.getNowDate()); - patArchiveMapper.deletePatMedOuthospByPatID(patArchive.getPatID()); - insertPatMedOuthosp(patArchive); return patArchiveMapper.updatePatArchive(patArchive); } /** * 鎵归噺鍒犻櫎鎮h�呮。妗� - * - * @param PatIDs 闇�瑕佸垹闄ょ殑鎮h�呮。妗堜富閿� + * + * @param patids 闇�瑕佸垹闄ょ殑鎮h�呮。妗堜富閿� * @return 缁撴灉 */ - @Transactional @Override - public int deletePatArchiveByPatIDs(Long[] PatIDs) - { - patArchiveMapper.deletePatMedOuthospByPatIDs(PatIDs); - return patArchiveMapper.deletePatArchiveByPatIDs(PatIDs); + public int deletePatArchiveByPatids(Long[] patids) { + return patArchiveMapper.deletePatArchiveByPatids(patids); } /** * 鍒犻櫎鎮h�呮。妗堜俊鎭� - * - * @param PatID 鎮h�呮。妗堜富閿� + * + * @param patid 鎮h�呮。妗堜富閿� * @return 缁撴灉 */ - @Transactional @Override - public int deletePatArchiveByPatID(Long PatID) - { - patArchiveMapper.deletePatMedOuthospByPatID(PatID); - return patArchiveMapper.deletePatArchiveByPatID(PatID); + public int deletePatArchiveByPatid(Long patid) { + return patArchiveMapper.deletePatArchiveByPatid(patid); } - /** - * 鏂板鎮h�呴棬璇婅褰曚俊鎭� - * - * @param patArchive 鎮h�呮。妗堝璞� - */ - public void insertPatMedOuthosp(PatArchive patArchive) - { - List<PatMedOuthosp> patMedOuthospList = patArchive.getPatMedOuthospList(); - Long PatID = patArchive.getPatID(); - if (StringUtils.isNotNull(patMedOuthospList)) - { - List<PatMedOuthosp> list = new ArrayList<PatMedOuthosp>(); - for (PatMedOuthosp patMedOuthosp : patMedOuthospList) - { - patMedOuthosp.setPatID(PatID); - list.add(patMedOuthosp); + @Override + @Transactional + public PatUpInfoVO importFilehandle(SysUser user, String tags, MultipartFile file) { + PatUpInfoVO patUpInfoVO = new PatUpInfoVO(); + Integer successNum = 0; + Integer failNum = 0; + + List<PatArchive> errorpatArchiveList = new ArrayList<>(); + try { + Workbook workbook = new XSSFWorkbook(file.getInputStream()); + Sheet sheet = workbook.getSheetAt(0); + + for (int i = sheet.getFirstRowNum() + 1; i < sheet.getLastRowNum(); i++) { + Row row = sheet.getRow(i); + //濡傛灉琛屼负绌猴紝杩涜涓嬩竴娆″惊鐜� + if (ObjectUtils.isEmpty(row)) { + continue; + } + PatArchive patArchive = new PatArchive(); + if (ObjectUtils.isEmpty(row.getCell(3)) || StringUtils.isEmpty(row.getCell(3).toString())) { + addRemark("韬唤璇佸彿涓虹┖", patArchive); + } else { + patArchive.setIccardno(row.getCell(3).toString()); + //鏍规嵁韬唤璇侊紝鍏堝幓鎮h�呯鐞嗚〃閲岀湅鐪嬫湁娌℃湁杩欎釜浜�,濡傛灉鏈夎繖涓汉锛屼篃涓嶉渶瑕佹彃鍏ユ偅鑰呰〃 + List<PatArchive> patArchiveList1 = patArchiveMapper.selectPatArchiveList(patArchive); + if (patArchiveList1.size() > 0) { + patArchive.setRemark("璇ユ偅鑰呭凡瀛樺湪"); + } + } + + //鍒ゆ柇濮撳悕鏄惁涓虹┖ + if (Objects.isNull(row.getCell(0)) || StringUtils.isEmpty(row.getCell(0).toString())) { + addRemark("濮撳悕涓虹┖", patArchive); + } else { + patArchive.setName(row.getCell(0).toString()); + } + + //鍒ゆ柇鎬у埆鏄惁涓虹┖ + + if (ObjectUtils.isEmpty(row.getCell(1)) || StringUtils.isEmpty(row.getCell(1).toString())) { + addRemark("鎬у埆涓虹┖", patArchive); + } else { + patArchive.setSex(row.getCell(1).toString().equals("鐢�") ? 1L : 2L); + } + + //鍒ゆ柇璇佷欢绫诲瀷鏄惁涓虹┖ + if (ObjectUtils.isEmpty(row.getCell(2)) || StringUtils.isEmpty(row.getCell(2).toString())) { + addRemark("璇佷欢绫诲瀷涓虹┖", patArchive); + } else { + patArchive.setIccardtype(row.getCell(2).toString()); + } + + //鍒ゆ柇鍑虹敓鏃ユ湡鏄惁涓虹┖ + if (ObjectUtils.isEmpty(row.getCell(4)) || StringUtils.isEmpty(row.getCell(4).toString())) { + addRemark("鍑虹敓鏃ユ湡涓虹┖", patArchive); + } else { + //鏍煎紡杞崲锛岃浆鎴愭棩鏈� + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd"); + Date javaDate = new Date(); + if (row.getCell(4).getCellType().toString().equals("NUMERIC")) { + javaDate = HSSFDateUtil.getJavaDate(row.getCell(4).getNumericCellValue()); + } else { + javaDate = new Date(row.getCell(4).toString()); + } + dateFormat.format(javaDate); + patArchive.setBirthdate(javaDate); + } + + //鍒ゆ柇鏈汉鑱旂郴鏄惁涓虹┖锛屽拰闀垮害鏄惁姝g‘ + if (ObjectUtils.isEmpty(row.getCell(5)) || StringUtils.isEmpty(row.getCell(5).toString())) { + addRemark("鏈汉鑱旂郴鐢佃瘽涓虹┖", patArchive); + } else { + //鏍煎紡杞崲锛岃浆鎴愭枃鏈� + if (row.getCell(5).getCellType().toString().equals("NUMERIC")) { + String cellData = String.valueOf((long) row.getCell(5).getNumericCellValue()); + patArchive.setTelcode(cellData); + } else { + DataFormatter dataFormatter = new DataFormatter(); + String cellValue = dataFormatter.formatCellValue(row.getCell(5)); + patArchive.setTelcode(cellValue); + } + } + + //鍒ゆ柇浜插睘鑱旂郴鏂瑰紡鏄惁涓虹┖锛岄暱搴︽槸鍚︽纭� + if (ObjectUtils.isEmpty(row.getCell(6)) || StringUtils.isEmpty(row.getCell(6).toString())) { + addRemark("浜插睘鑱旂郴鏂瑰紡涓虹┖", patArchive); + } else { + //鏍煎紡杞崲锛岃浆鎴愭枃鏈� + if (row.getCell(6).getCellType().toString().equals("NUMERIC")) { + String cellData = String.valueOf((long) row.getCell(6).getNumericCellValue()); + patArchive.setRelativetelcode(cellData); + } else { + DataFormatter dataFormatter = new DataFormatter(); + String cellValue = dataFormatter.formatCellValue(row.getCell(6)); + patArchive.setRelativetelcode(cellValue); + } + } + + //鎮i兘鏍囩鏄惁涓虹┖ + if (ObjectUtils.isEmpty(row.getCell(7)) || StringUtils.isEmpty(row.getCell(7).toString())) { + if (StringUtils.isEmpty(tags)) { + addRemark("鎮h�呮爣绛句负绌�", patArchive); + } else { + patArchive.setTag(tags); + + } + } else { + if (StringUtils.isNotEmpty(tags)) { + patArchive.setTag(row.getCell(7).toString() + "," + tags); + } else { + patArchive.setTag(row.getCell(7).toString()); + } + } + + //鍒ゆ柇澶囨敞鏄惁涓虹┖ + if (!StringUtils.isEmpty(patArchive.getRemark())) { + //濡傛灉澶囨敞瀛楁涓嶄负绌猴紝璇存湁璇ユ偅鑰呭~鍐欐湁闂 + errorpatArchiveList.add(patArchive); + failNum = failNum + 1; + continue; + } + + //寰�鎮h�呰〃閲屾柊澧�,骞惰幏鍙栧埌鏂板ID + patArchiveMapper.insertPatArchive(patArchive); + + //鏍规嵁鏍囩鍚嶆煡璇㈠嚭鏍囩淇℃伅 + String s = patArchive.getTag(); + String[] split = s.split(","); + for (String tagName : split) { + BaseTag baseTag = new BaseTag(); + baseTag.setTagname(tagName); + List<BaseTag> baseTags = baseTagMapper.selectBaseTagList(baseTag); + + //濡傛灉璇ユ爣绛句负绌猴紝鐜版爣绛剧鐞嗘病鏈夊嚭鐜拌繃鐨勬柊鏍囩鏃讹紝鑷姩灏嗘爣绛炬坊鍔犲埌"鏍囩绠$悊"鏈垎绫烩�滀腑銆傜紪杈戜汉涓哄鍏ヨ处鍙� + if (CollectionUtils.isEmpty(baseTags)) { + baseTag = new BaseTag(); + baseTag.setTagcategoryid(1L); + baseTag.setTagname(tagName); + baseTag.setOrgid(user.getDeptId().toString()); + baseTag.setDelFlag("0"); + baseTag.setCreateBy(user.getUserName()); + baseTag.setCreateTime(new Date()); + baseTag.setCreateBy(user.getUserName()); + baseTag.setCreateTime(new Date()); + baseTagMapper.insertBaseTag(baseTag); + } else { + baseTag = baseTags.get(0); + } + + // 鏂板鎮h�呮。妗堟爣绛� + PatArchivetag patArchivetag = DtoConversionUtils.sourceToTarget(baseTag, PatArchivetag.class); + patArchivetag.setUpdateBy(user.getUserName()); + patArchivetag.setCreateTime(new Date()); + patArchivetag.setPatid(patArchive.getPatid()); + patArchivetagMapper.insertPatArchivetag(patArchivetag); + } + successNum = successNum + 1; } - if (list.size() > 0) - { - patArchiveMapper.batchPatMedOuthosp(list); + + } catch (Exception e) { + e.printStackTrace(); + } + + patUpInfoVO.setFailNum(failNum); + patUpInfoVO.setSuccessNum(successNum); + patUpInfoVO.setPatArchiveList(errorpatArchiveList); + return patUpInfoVO; + } + + @Override + public String exportErrPatInfo(List<PatArchive> patArchiveList) { + // 鍒涘缓宸ヤ綔绨垮拰宸ヤ綔琛� + Workbook workbook = new XSSFWorkbook(); + Sheet sheet = workbook.createSheet("Sheet1"); + // 鍒涘缓琛屽拰鍗曞厓鏍硷紝骞惰缃崟鍏冩牸鐨勫�� + Row row = sheet.createRow(0); + getdata(row, null, true); + + for (int i = 0; i < patArchiveList.size(); i++) { + row = sheet.createRow(i + 1); + getdata(row, patArchiveList.get(i), false); + } + // 淇濆瓨宸ヤ綔绨垮埌鏂囦欢 + FileOutputStream outputStream = null; + try { + outputStream = new FileOutputStream("鎮h�呴敊璇俊鎭�.xlsx"); + workbook.write(outputStream); + outputStream.close(); + workbook.close(); + } catch (Exception e) { + e.printStackTrace(); + return "瀵煎嚭澶辫触"; + } + return "瀵煎嚭鎴愬姛"; + } + + @Override + public List<PatArchive> patInfoByContion(PatArchiveReq patArchive) { + List<PatArchive> patArchives = new ArrayList<>(); + + //鏍规嵁鏉′欢鑾峰彇鎮h�呬俊鎭� + List<PatArchive> patArchiveList = patArchiveMapper.patInfoByContion(patArchive); + //鏍规嵁鎮h�匢D杩涜鍒嗙粍 + Map<Long, List<PatArchive>> listMap = patArchiveList.stream().collect(Collectors.groupingBy(PatArchive::getPatid)); + + //瀵规暟鎹繘琛屽皝瑁� + for (List<PatArchive> list : listMap.values()) { + PatArchive patArchive1 = new PatArchive(); + List<String> stringList = new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + if (i == 0) { + patArchive1 = DtoConversionUtils.sourceToTarget(list.get(0), PatArchive.class); + //灏嗘爣绛剧疆绌�,涓嶇┖涔熸病鏈夐棶棰� + patArchive1.setTag(""); + } + //灏嗘煡鍑虹殑tag锛屾斁鍒皃atArchive1閲岀殑TagList涓� + stringList.add(list.get(i).getTag()); + } + patArchive1.setTagList(stringList); + patArchives.add(patArchive1); + } + + return patArchives; + } + + @Override + public List<PatArchivetagAndPatientInfo> patTagByContion(List<Long> tagids) { + List<PatArchivetagAndPatientInfo> patArchivetagAndPatientInfos = new ArrayList<>(); + if (tagids.size() > 0) { + for (int i = 0; i < tagids.size(); i++) { + PatArchivetag patArchivetag = new PatArchivetag(); + patArchivetag.setTagid(tagids.get(i)); + //鑾峰彇鎮h�卲atid + List<PatArchivetag> patArchivetags1 = patArchivetagMapper.selectPatArchivetagAndBaseTagList(patArchivetag); + for (int j = 0; j < patArchivetags1.size(); j++) { + PatArchivetagAndPatientInfo patArchivetagAndPatientInfo = DtoConversionUtils.sourceToTarget(patArchivetags1.get(j), PatArchivetagAndPatientInfo.class); + PatArchive patArchive = new PatArchive(); + patArchive.setPatid(patArchivetagAndPatientInfo.getPatid()); + List<PatArchive> patArchiveList = patArchiveMapper.selectPatArchiveList(patArchive); + patArchivetagAndPatientInfo.setPatNum(patArchiveList.size()); + // patArchivetagAndPatientInfo.setPatArchives(patArchiveList); + patArchivetagAndPatientInfos.add(patArchivetagAndPatientInfo); + } + } + } else { + PatArchivetag patArchivetag = new PatArchivetag(); + //鑾峰彇鎮h�卲atid + List<PatArchivetag> patArchivetags1 = patArchivetagMapper.selectPatArchivetagAndBaseTagList(patArchivetag); + for (int j = 0; j < patArchivetags1.size(); j++) { + PatArchivetagAndPatientInfo patArchivetagAndPatientInfo = DtoConversionUtils.sourceToTarget(patArchivetags1.get(j), PatArchivetagAndPatientInfo.class); + PatArchive patArchive = new PatArchive(); + patArchive.setPatid(patArchivetagAndPatientInfo.getPatid()); + List<PatArchive> patArchiveList = patArchiveMapper.selectPatArchiveList(patArchive); + // patArchivetagAndPatientInfo.setPatArchives(patArchiveList); + patArchivetagAndPatientInfo.setPatNum(patArchiveList.size()); + patArchivetagAndPatientInfos.add(patArchivetagAndPatientInfo); } } + return patArchivetagAndPatientInfos; } + + @Override + public List<PatArchivetagAndPatientInfo> patInfoByTag(List<Long> tagids) { + + + + + + return null; + } + + private void getdata(Row row, PatArchive patArchive, Boolean head) { + if (head) { + row.createCell(0).setCellValue("濮撳悕"); + row.createCell(1).setCellValue("鎬у埆"); + row.createCell(2).setCellValue("璇佷欢绫诲瀷"); + row.createCell(3).setCellValue("璇佷欢鍙风爜"); + row.createCell(4).setCellValue("鍑虹敓鏃ユ湡"); + row.createCell(5).setCellValue("鏈汉鑱旂郴鏂瑰紡"); + row.createCell(6).setCellValue("浜插睘鑱旂郴鏂瑰紡"); + row.createCell(7).setCellValue("鎮h�呮爣绛�"); + row.createCell(8).setCellValue("閿欒鍘熷洜"); + } else { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd"); + row.createCell(0).setCellValue(patArchive.getName()); + row.createCell(1).setCellValue(patArchive.getSex() == 1 ? "鐢�" : "濂�"); + row.createCell(2).setCellValue(patArchive.getIccardtype()); + row.createCell(3).setCellValue(patArchive.getIccardno()); + if (ObjectUtils.isNotEmpty(patArchive.getBirthdate())) { + row.createCell(4).setCellValue(simpleDateFormat.format(patArchive.getBirthdate()).toString()); + } + row.createCell(5).setCellValue(patArchive.getTelcode()); + row.createCell(6).setCellValue(patArchive.getRelativetelcode()); + row.createCell(7).setCellValue(patArchive.getTag()); + row.createCell(8).setCellValue(patArchive.getRemark()); + + + } + + } + + public void addRemark(String info, PatArchive patArchive) { + if (StringUtils.isNotEmpty(patArchive.getRemark()) == true) { + patArchive.setRemark(patArchive.getRemark() + "," + info); + } else { + patArchive.setRemark(info); + } + } + } + -- Gitblit v1.9.3