jinlin
2025-03-18 d30e385951ce03335a5023f0775fd144da3c0b88
src/main/java/com/example/server/progressTrack/service/DjJdgzTrackRecordService.java
@@ -7,17 +7,26 @@
import com.example.server.progressTrack.Dto.StatistReportsDto;
import com.example.server.progressTrack.dao.DjJdgzTrackRecordDao;
import com.example.server.progressTrack.model.DjJdgzNetworkLevel1;
import com.example.server.progressTrack.model.DjJdgzNetworkLevel3;
import com.example.server.progressTrack.model.DjJdgzNetworkLevel3List;
import com.example.server.progressTrack.model.DjJdgzTrackRecord;
import com.example.server.teamGroup.service.SysTeamGroupClassService;
import com.example.server.user.service.UserService;
import com.example.server.utils.FileUtils;
import com.example.server.utils.ImportUtil;
import com.example.server.utils.TreeFieldUtils;
import com.example.server.utils.UUIDUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
@@ -41,12 +50,14 @@
    @Autowired
    private DjJdgzNetworkLevel3ListService djJdgzNetworkLevel3ListService;
    @Autowired
    private DjJdgzNetworkLevel3Service djJdgzNetworkLevel3Service;
    @Autowired
    private UserService sysUserService;
    @Autowired
    private SysTeamGroupClassService sysTeamGroupClassService;
    public List<DjJdgzTrackRecord> getList(Long level1NetworkId, Integer status) {
    public List<DjJdgzTrackRecord> getList(Long level1NetworkId, Long deptId, Long teamId, Long cabinId, String type, Integer status, String name) {
        Long userId = null;
       /* Map adminRole = sysUserService.adminRole();
        Object isTyRole = adminRole.get("isTyRole");
@@ -54,7 +65,7 @@
        if (isTyRole.equals(true) || isYwzRole.equals(true)) {
            userId =  UserContext.getUser().getId();
        }*/
        List<DjJdgzTrackRecord> list = baseDao.getList(level1NetworkId, status, userId);
        List<DjJdgzTrackRecord> list = baseDao.getList(level1NetworkId,deptId,teamId,cabinId,type, status, name);
        /*if (list != null && list.size() > 0) {
            sysOssService.setListOsses(list, "ProjectProgressFileUpload");
        }*/
@@ -205,7 +216,7 @@
    public void exportExcel(String filePath, String teamgroupId, Long level1NetworkId,
                            Long level3NetworkId, Long level3NodeId, Integer status, Date beginDate,
                            Date endDate, Integer istq) {
                            Date endDate, Integer istq, List<ExcelColumnDto> columnDto) {
        List<ExprotExcelDto> dtos = new ArrayList<>();
   /*     Map<String, String> keywordMap = dailyPlanService.getReplacement();
        String keywordT = keywordMap.get("ting");*/
@@ -225,26 +236,6 @@
        ExprotExcelDto dto = new ExprotExcelDto();
        dto.setSheetName("跟踪记录明细");
        List<ExcelColumnDto> columnDto = new ArrayList<>();
        columnDto.add(new ExcelColumnDto("一级节点", "Level1NodeName", 20, HorizontalAlignment.LEFT));
        columnDto.add(new ExcelColumnDto("二级节点", "Level2NodeName", 20, HorizontalAlignment.LEFT));
        columnDto.add(new ExcelColumnDto("项目名称", "Level3NetworkName", 20, HorizontalAlignment.LEFT));
        columnDto.add(new ExcelColumnDto("当前节点", "Level3NodeName", 20, HorizontalAlignment.LEFT));
        columnDto.add(new ExcelColumnDto("专业", "TeamGroupName", 20, HorizontalAlignment.CENTER));
        columnDto.add(new ExcelColumnDto("总承修单位及负责人", "GeneralRepair", 25, HorizontalAlignment.LEFT));
        columnDto.add(new ExcelColumnDto("分承修单位及负责人", "Repair", 25, HorizontalAlignment.LEFT));
        columnDto.add(new ExcelColumnDto("跟踪方式", "trackMethodStr", 10, HorizontalAlignment.CENTER));
        columnDto.add(new ExcelColumnDto("助修人", "TrackPerson", 25, HorizontalAlignment.LEFT));
        columnDto.add(new ExcelColumnDto("厂方", "TrackedPerson", 25, HorizontalAlignment.LEFT));
        columnDto.add(new ExcelColumnDto("跟踪地点", "TrackLocation", 10, HorizontalAlignment.LEFT));
        columnDto.add(new ExcelColumnDto("节点进展", "status", 10, HorizontalAlignment.CENTER));
        columnDto.add(new ExcelColumnDto("脱期风险", "hasDelayRiskStr", 10, HorizontalAlignment.CENTER));
        columnDto.add(new ExcelColumnDto("预计完成时间", "EstimatedCompletionTime", 15, HorizontalAlignment.CENTER));
        columnDto.add(new ExcelColumnDto("存在问题", "Problem", 20, HorizontalAlignment.LEFT));
        columnDto.add(new ExcelColumnDto("后续计划", "FollowupPlan", 20, HorizontalAlignment.LEFT));
        columnDto.add(new ExcelColumnDto("备注", "Remark", 20, HorizontalAlignment.LEFT));
        columnDto.add(new ExcelColumnDto("填写时间", "UpdateDate", 15, HorizontalAlignment.CENTER));
        List<DjJdgzTrackRecord> list = baseDao.getdata(teamgroupId, level1NetworkId, level3NetworkId, level3NodeId, status, beginDate, endDate, istq);
@@ -304,6 +295,240 @@
    }
    public List<DjJdgzTrackRecord> getListByImport(Long level1Id, Long level2Id, Long level2NodeId, String selectedIds) {
        return baseDao.getListByImport(level1Id,level2Id,level2NodeId,selectedIds);
        return baseDao.getListByImport(level1Id, level2Id, level2NodeId, selectedIds);
    }
    public String importDiagramFromExcel(String path) {
        String result = "true";
        Integer sum = 0; // 总共的条数
        Integer suc = 0; // 成功的条数
        Integer err = 0; // 失败的条数
        Map<String, Object> errMap = new HashMap<>();
        MultipartFile mutFile = null;
        try {
            mutFile = FileUtils.convertFileToMultipartFile(path);
        } catch (IOException e) {
            e.printStackTrace();
        }
        String sheetName = null;
        int row1 = 0;
        try {
            // 获取导入文件的后缀名
            String fileName = mutFile.getOriginalFilename();
            Workbook workbook = null;
            //解决excel版本问题
            if (fileName != null && fileName.endsWith(".xls")) {
                workbook = new HSSFWorkbook(mutFile.getInputStream());
            } else if (fileName != null && fileName.endsWith(".xlsx")) {
                workbook = new XSSFWorkbook(mutFile.getInputStream());
            }
            assert workbook != null; //断言如果[boolean表达式]为true,则程序继续执行。 如果为false,则程序抛出AssertionError,并终止执行。
            Sheet sheet = workbook.getSheetAt(0);
            int num = sheet.getLastRowNum(); // 一共有多少行
            sheetName = sheet.getSheetName(); //获取当前sheet名称
            sum = sum + num;
            Map<String, Integer> trackMethodMap = new HashMap<>();
            trackMethodMap.put("线下", 0);
            trackMethodMap.put("电话", 1);
            Map<String, Integer> statusMap = new HashMap<>();
            statusMap.put("进行中", 0);
            statusMap.put("已完成", 1);
            Map<String, Integer> hasDelayRiskMap = new HashMap<>();
            hasDelayRiskMap.put("有", 1);
            hasDelayRiskMap.put("无", 0);
            for (int j = 2; j <= num; j++) {
                int sort = 0;
                DjJdgzTrackRecord data = new DjJdgzTrackRecord();
                boolean isErr = false;
                row1 = j + 1;
                String pattern = "yyyy-MM-dd";
                Row row = sheet.getRow(j);
                String idStr = ImportUtil.getCellValue(row, 0, pattern);
                String dataDate = ImportUtil.getCellValue(row, 1, pattern);
                String name = ImportUtil.getCellValue(row, 2, pattern);
                String progressName = ImportUtil.getCellValue(row, 3, pattern);
                String trackMethodStr = ImportUtil.getCellValue(row, 4, pattern);
                String trackLocationStr = ImportUtil.getCellValue(row, 5, pattern);
                String currentStatusStr = ImportUtil.getCellValue(row, 6, pattern);
                String hasDelayRiskStr = ImportUtil.getCellValue(row, 7, pattern);
                String estimatedCompletionTimeStr = ImportUtil.getCellValue(row, 8, pattern);
                String problemStr = ImportUtil.getCellValue(row, 9, pattern);
                String followupPlanStr = ImportUtil.getCellValue(row, 10, pattern);
                String remarkStr = ImportUtil.getCellValue(row, 11, pattern);
                String trackPersonStr = ImportUtil.getCellValue(row, 12, pattern);
                String trackPersonContact = ImportUtil.getCellValue(row, 13, pattern);
                String trackPersonUnit = ImportUtil.getCellValue(row, 14, pattern);
                String trackedPerson = ImportUtil.getCellValue(row, 15, pattern);
                String trackedPersonContact = ImportUtil.getCellValue(row, 16, pattern);
                String trackedPersonUnit = ImportUtil.getCellValue(row, 17, pattern);
                String generalRepairUnit = ImportUtil.getCellValue(row, 18, pattern);
                String generalRepairUnitDirector = ImportUtil.getCellValue(row, 19, pattern);
                String generalRepairUnitContact = ImportUtil.getCellValue(row, 20, pattern);
                String repairUnit = ImportUtil.getCellValue(row, 21, pattern);
                String repairUnitDirector = ImportUtil.getCellValue(row, 22, pattern);
                String repairUnitContact = ImportUtil.getCellValue(row, 23, pattern);
                DjJdgzNetworkLevel3 level3 = djJdgzNetworkLevel3Service.get(Long.parseLong(idStr));
                Long level1NetworkId = level3.getLevel1NetworkId();
                Long id = UUIDUtil.generateId();
                if (StringUtils.isEmpty(dataDate)) {
                    result = "第" + j + "行" + "录入时间不能为空";
                    isErr = true;
                    continue;
                } else {
                    int weekNo = this.getWeekNo(level1NetworkId);
                    data.setWeekNo(weekNo);
                    data.setLevel1NetworkId(level1NetworkId);
                    data.setLevel3NetworkId(level3.getId());
                }
                if (StringUtils.isEmpty(name)) {
                    result = "第" + j + "行" + "设备名称不能为空";
                    isErr = true;
                    continue;
                } else {
                    data.setId(id);
                    data.setLevel3NetworkName(name);
                }
                if (StringUtils.isEmpty(progressName)) {
                    result = "第" + j + "行" + "节点名称不能为空";
                    isErr = true;
                    continue;
                } else {
                    List<DjJdgzNetworkLevel3List> list = djJdgzNetworkLevel3ListService.getList(level3.getId());
                    for (DjJdgzNetworkLevel3List item : list) {
                        if(item.getProcessName().equals(progressName)){
                            data.setLevel3NodeId(item.getId());
                            data.setEstimatedCompletionTime(item.getRequiredCompletionTime());
                            break;
                        }
                    }
                    data.setProcessName(progressName);
                }
                if (StringUtils.isEmpty(trackMethodStr)) {
                    data.setTrackMethod(0);
                } else {
                    data.setTrackMethod(trackMethodMap.get(trackMethodStr));
                }
                if (StringUtils.isNotBlank(trackLocationStr)) {
                    data.setTrackLocation(trackLocationStr);
                }
                if (StringUtils.isEmpty(currentStatusStr)) {
                    data.setCurrentStatus(0);
                } else {
                    data.setCurrentStatus(statusMap.get(currentStatusStr));
                }
                if (StringUtils.isEmpty(hasDelayRiskStr)) {
                    data.setHasDelayRisk(0);
                } else {
                    data.setHasDelayRisk(hasDelayRiskMap.get(hasDelayRiskStr));
                }
                if (StringUtils.isNotBlank(estimatedCompletionTimeStr)) {
                    if (estimatedCompletionTimeStr.matches("[0-9/]+")) {
                        estimatedCompletionTimeStr = estimatedCompletionTimeStr.replace("/", "-");
                        data.setEstimatedCompletionTime(estimatedCompletionTimeStr);
                    } else if (estimatedCompletionTimeStr.matches("[0-9.]+")) {
                        estimatedCompletionTimeStr = estimatedCompletionTimeStr.replace(".", "-");
                        data.setEstimatedCompletionTime(estimatedCompletionTimeStr);
                    } else if (estimatedCompletionTimeStr.matches("[0-9-]+")) {
                        data.setEstimatedCompletionTime(estimatedCompletionTimeStr);
                    } else {
                        result = "第" + j + "行" + "第" + 1 + "个" + "预计完成时间日期格式不规范";
                        isErr = true;
                    }
                }
                if (StringUtils.isNotBlank(problemStr)) {
                    data.setProblem(problemStr);
                }
                if (StringUtils.isNotBlank(followupPlanStr)) {
                    data.setFollowupPlan(followupPlanStr);
                }
                if (StringUtils.isNotBlank(remarkStr)) {
                    data.setRemark(remarkStr);
                }
                if (StringUtils.isNotBlank(trackPersonStr)) {
                    data.setTrackPerson(trackPersonStr);
                }
                if (StringUtils.isNotBlank(trackPersonContact)) {
                    data.setTrackPersonContact(trackPersonContact);
                }
                if (StringUtils.isNotBlank(trackPersonUnit)) {
                    data.setTrackPersonUnit(trackPersonUnit);
                }
                if (StringUtils.isNotBlank(trackedPerson)) {
                    data.setTrackPerson(trackPersonStr);
                }
                if (StringUtils.isNotBlank(trackedPersonContact)) {
                    data.setTrackPersonContact(trackPersonContact);
                }
                if (StringUtils.isNotBlank(trackedPersonUnit)) {
                    data.setTrackPersonUnit(trackPersonUnit);
                }
                if (StringUtils.isNotBlank(generalRepairUnit)) {
                    data.setGeneralRepairUnit(generalRepairUnit);
                }
                if (StringUtils.isNotBlank(generalRepairUnitContact)) {
                    data.setGeneralRepairUnitContact(generalRepairUnitContact);
                }
                if (StringUtils.isNotBlank(generalRepairUnitDirector)) {
                    data.setGeneralRepairUnitDirector(generalRepairUnitDirector);
                }
                if (StringUtils.isNotBlank(generalRepairUnit)) {
                    data.setRepairUnit(repairUnit);
                }
                if (StringUtils.isNotBlank(generalRepairUnit)) {
                    data.setRepairUnitContact(repairUnitContact);
                }
                if (StringUtils.isNotBlank(generalRepairUnit)) {
                    data.setRepairUnitDirector(repairUnitDirector);
                }
                if (!isErr) {
                    data.setIsUpdate(false);
                    this.save(data);
                }
                if (isErr) {
                    err++;
                    continue;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            result = "导入" + row1 + "行数据时检测到异常,中断导入操作。";
        }
        suc = sum - err;
        return result;
    }
    public void retract(Long id) {
        baseDao.retract(id);
    }
}