123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481 |
- package com.tofly.dyrq.custom.service.impl;
- import com.alibaba.fastjson.JSONArray;
- import com.baomidou.mybatisplus.core.metadata.IPage;
- import com.baomidou.mybatisplus.core.toolkit.IdWorker;
- import com.baomidou.mybatisplus.core.toolkit.Wrappers;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonIntegerFormatVisitor;
- import com.tofly.common.core.constant.SecurityConstants;
- import com.tofly.common.core.entity.ResultRespone;
- import com.tofly.common.core.util.Date8Util;
- import com.tofly.common.core.util.DateUtil;
- import com.tofly.common.core.util.FtpUtil;
- import com.tofly.common.core.util.StringUtil;
- import com.tofly.common.mapper.ToflyCodeCommonMapper;
- import com.tofly.common.oauth.exception.ToflyDeniedException;
- import com.tofly.common.oauth.util.SecurityUtils;
- import com.tofly.dyrq.custom.entity.*;
- import com.tofly.dyrq.custom.mapper.CustomMaintenanceMapper;
- import com.tofly.dyrq.custom.service.BaseInfoService;
- import com.tofly.dyrq.custom.service.CustomMaintenanceService;
- import com.tofly.dyrq.custom.service.CustomPointService;
- import com.tofly.dyrq.custom.service.GisAboutService;
- import com.tofly.dyrq.entity.*;
- import com.tofly.dyrq.config.FilePathBean;
- import com.tofly.dyrq.service.*;
- import lombok.AllArgsConstructor;
- import org.apache.commons.lang.StringUtils;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import org.springframework.util.MultiValueMap;
- import org.springframework.web.multipart.MultipartFile;
- import org.springframework.web.multipart.MultipartHttpServletRequest;
- import javax.servlet.http.HttpServletRequest;
- import java.util.*;
- import java.util.concurrent.ExecutorService;
- import java.util.concurrent.Executors;
- import java.util.stream.Collectors;
- @AllArgsConstructor
- @Service
- public class CustomMaintenanceServiceImpl implements CustomMaintenanceService {
- private final MaintenanceService maintenanceService;
- private final MaintenanceContentService maintenanceContentService;
- private final MaintenanceDeviceService maintenanceDeviceService;
- private final MaintenanceMenuService maintenanceMenuService;
- private final MaintenanceDeviceConService maintenanceDeviceConService;
- private final MaintenanceFileService maintenanceFileService;
- private final MaintenanceDeviceFileService maintenanceDeviceFileService;
- private final FilePathBean filePathBean;
- private final CustomMaintenanceMapper customMaintenanceMapper;
- private final ToflyCodeCommonMapper toflyCodeCommonMapper;
- private final BaseInfoService baseInfoService;
- private final PlanPointTempService planPointTempService;
- private final SysDeviceTypeService sysDeviceTypeService;
- private final GisAboutService gisAboutService;
- private final CustomPointService customPointService;
- @Override
- public IPage getMaintenancePage(Page page, MaintenanceSearch maintenanceSearch) {
- return page.setRecords(customMaintenanceMapper.getMaintenancePage(page, maintenanceSearch));
-
- }
- @Transactional
- @Override
- public Boolean addMaintenance(HttpServletRequest request, AddMaintenance addMaintenance) {
- Long childPlanId = addMaintenance.getChildPlanId();
- Long pointId = addMaintenance.getPlanTempPointId();
-
- Date now = Date8Util.getCurrentDate();
-
- planPointTempService.update(Wrappers.<PlanPointTemp>lambdaUpdate()
- .eq(PlanPointTemp::getChildPlanId, childPlanId)
- .eq(PlanPointTemp::getPointId, pointId)
- .set(PlanPointTemp::getIsover, "1")
- .set(PlanPointTemp::getState, "1")
- .set(PlanPointTemp::getOverDate, now)
- .set(PlanPointTemp::getCheckState, '1')
- .set(PlanPointTemp::getCheckDate, now));
-
- maintenanceService.save(addMaintenance);
- Long recordId = addMaintenance.getId();
- if (addMaintenance.getContent() == null || addMaintenance.getContent().size() == 0) {
- throw new ToflyDeniedException("检查内容不能为空");
- }
-
- addMaintenance.getContent().forEach(content -> {
- if (content.getParentId() == null) {
- throw new ToflyDeniedException("检查设施不能为空");
- }
-
- MaintenanceContent maintenanceContent = new MaintenanceContent();
- maintenanceContent.setRecordId(recordId);
- maintenanceContent.setMenuId(content.getParentId());
- maintenanceContent.setNote(content.getNote());
- maintenanceContentService.save(maintenanceContent);
-
- if (StringUtil.isNotEmpty(content.getMenuIds())) {
- for (Long id : content.getMenuIds()) {
- MaintenanceContent maintenanceContent2 = new MaintenanceContent();
- maintenanceContent2.setRecordId(recordId);
- maintenanceContent2.setMenuId(Long.valueOf(id));
- maintenanceContentService.save(maintenanceContent2);
- }
- }
- });
-
-
- MultiValueMap<String, MultipartFile> multiFileMap = ((MultipartHttpServletRequest) request).getMultiFileMap();
- multiFileMap.forEach((k, v) -> {
-
- v.forEach(file -> {
- String fileName = file.getOriginalFilename();
- String filePath = filePathBean.getMaintenance() + IdWorker.getIdStr() + file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
- boolean b = FtpUtil.uploadFile2Ftp(file, filePath);
- if (b) {
- MaintenanceFile maintenanceFile = new MaintenanceFile();
- maintenanceFile.setFilePath(filePath);
- maintenanceFile.setFileName(fileName);
- maintenanceFile.setMaintenanceId(addMaintenance.getId());
- maintenanceFileService.save(maintenanceFile);
- }
- });
- });
-
- ExecutorService executorService = Executors.newSingleThreadExecutor();
- executorService.execute(new Runnable() {
- @Override
- public void run() {
- customPointService.percentUpdate(childPlanId.toString());
- }
- });
- return true;
- }
- @Override
- @Transactional
- public Boolean putMaintenance(HttpServletRequest request, AddMaintenance addMaintenance) {
-
- maintenanceService.updateById(addMaintenance);
-
- Long recordId = addMaintenance.getId();
- maintenanceContentService.remove(Wrappers.<MaintenanceContent>lambdaQuery().eq(MaintenanceContent::getRecordId, recordId));
-
- if(addMaintenance.getContent() != null) {
- addMaintenance.getContent().forEach(content -> {
-
- MaintenanceContent maintenanceContent = new MaintenanceContent();
- maintenanceContent.setRecordId(recordId);
- maintenanceContent.setMenuId(content.getParentId());
- maintenanceContent.setNote(content.getNote());
- maintenanceContentService.save(maintenanceContent);
-
- content.getMenuIds().forEach(id -> {
- MaintenanceContent maintenanceContent2 = new MaintenanceContent();
- maintenanceContent2.setRecordId(recordId);
- maintenanceContent2.setMenuId((Long) id);
- maintenanceContentService.save(maintenanceContent2);
- });
- });
- }
-
- List<MaintenanceFile> files = maintenanceFileService.list(Wrappers.<MaintenanceFile>lambdaQuery().eq(MaintenanceFile::getMaintenanceId, recordId));
- files.forEach(file -> {
- Boolean b = FtpUtil.deleteFile(file.getFilePath());
- });
-
- maintenanceFileService.remove(Wrappers.<MaintenanceFile>lambdaQuery().eq(MaintenanceFile::getMaintenanceId, recordId));
-
- MultiValueMap<String, MultipartFile> multiFileMap = ((MultipartHttpServletRequest) request).getMultiFileMap();
- multiFileMap.forEach((k, v) -> {
-
- v.forEach(file -> {
- String fileName = file.getOriginalFilename();
- String filePath = filePathBean.getMaintenance() + IdWorker.getIdStr() + file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
- boolean b = FtpUtil.uploadFile2Ftp(file, filePath);
- if (b) {
- MaintenanceFile maintenanceFile = new MaintenanceFile();
- maintenanceFile.setFilePath(filePath);
- maintenanceFile.setFileName(fileName);
- maintenanceFile.setMaintenanceId(addMaintenance.getId());
- maintenanceFileService.save(maintenanceFile);
- }
- });
- });
- return true;
- }
- @Override
- public IPage getMaintenanceDevicePage(Page page, MaintenanceDeviceSearch maintenanceDeviceSearch) {
- return page.setRecords(customMaintenanceMapper.getMaintenanceDevicePage(page, maintenanceDeviceSearch));
- }
- @Transactional
- @Override
- public Boolean addMaintenanceDevice(HttpServletRequest request, AddMaintenanceDevice addMaintenanceDevice) {
- Long childPlanId = addMaintenanceDevice.getChildPlanId();
- Long pointId = addMaintenanceDevice.getPlanTempPointId();
-
-
- Date now = Date8Util.getCurrentDate();
-
- planPointTempService.update(Wrappers.<PlanPointTemp>lambdaUpdate()
- .eq(PlanPointTemp::getChildPlanId, childPlanId)
- .eq(PlanPointTemp::getPointId, pointId)
- .set(PlanPointTemp::getIsover, "1")
- .set(PlanPointTemp::getState, "1")
- .set(PlanPointTemp::getOverDate, now)
- .set(PlanPointTemp::getCheckState, '1')
- .set(PlanPointTemp::getCheckDate, now));
-
- Map param = new HashMap();
- param.put("ckey", "pipe1");
- ResultRespone resultRespone = baseInfoService.getSourcePage(param);
- if (resultRespone.getCode() != 1) {
- throw new ToflyDeniedException("gis服务地址获取失败");
- }
-
- SysDeviceType sysDeviceType = sysDeviceTypeService.getOne(Wrappers.<SysDeviceType>lambdaQuery()
- .select(SysDeviceType::getContactLayerId)
- .apply("point_type_id =\n" +
- "(select device_type_id from TF_plan_point_temp pt where pt.child_plan_id ={0} and pt.point_id = {1} )"
- , childPlanId, pointId));
- String layerId = sysDeviceType.getContactLayerId();
- Map result = (Map) resultRespone.getResult();
- List<Map> records = (List) result.get("records");
- String gisUrl = "";
- if (records != null && records.size() > 0) {
- gisUrl = records.get(0).get("cval").toString() + "/" + layerId + "/query";
- }
-
- ExcelParam excelParam = new ExcelParam();
- excelParam.setGeometry("1");
- excelParam.setObjectids(pointId.toString());
- excelParam.setLayerurl(gisUrl);
- excelParam.setOutfields("SID,OBJECTID,CODE,GASDATE,FINISHDATE,MATERIAL,SPEC,DIAMETER");
- JSONArray geo = gisAboutService.exceloutList(excelParam);
-
- if(geo.size() >0){
- String material = geo.getJSONObject(0).getJSONObject("attributes").getString("MATERIAL");
- Integer dimameter = geo.getJSONObject(0).getJSONObject("attributes").getInteger("DIAMETER");
- String type = geo.getJSONObject(0).getJSONObject("attributes").getString("SPEC");
- addMaintenanceDevice.setType(type);
- addMaintenanceDevice.setTechParam("材质:" + (material == null ? "无" : material) + " 管径:" + (dimameter == null ? "无" : dimameter.toString()));
- Date gasDate = geo.getJSONObject(0).getJSONObject("attributes").getDate("GASDATE");
- Integer differentYear = null;
- if (gasDate != null) {
- differentYear = getDifferentYear(gasDate);
- }
- addMaintenanceDevice.setUsedYears(differentYear == null ? null : differentYear.shortValue());
- }
-
- addMaintenanceDevice.setMaintainUser(SecurityUtils.getUserId());
- addMaintenanceDevice.setMaintainDate(Date8Util.getCurrentDate());
- addMaintenanceDevice.setSecurity("严格按照相关要求和部门《燃气管网附属设备设施维护保养制度》执行");
- maintenanceDeviceService.save(addMaintenanceDevice);
- Long recordId = addMaintenanceDevice.getId();
-
- if(addMaintenanceDevice.getContent() != null) {
- addMaintenanceDevice.getContent().stream().forEach(content -> {
- MaintenanceDeviceCon maintenanceDeviceCon = new MaintenanceDeviceCon();
- maintenanceDeviceCon.setDeviceRecordId(recordId);
- maintenanceDeviceCon.setTypeId(content);
- maintenanceDeviceConService.save(maintenanceDeviceCon);
- });
- }
-
- MultiValueMap<String, MultipartFile> multiFileMap = ((MultipartHttpServletRequest) request).getMultiFileMap();
- multiFileMap.forEach((k, v) -> {
-
- v.forEach(file -> {
- String fileName = file.getOriginalFilename();
- String filePath = filePathBean.getMaintenanceDevice() + IdWorker.getIdStr() + file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
- boolean b = FtpUtil.uploadFile2Ftp(file, filePath);
- if (b) {
- MaintenanceDeviceFile maintenanceDeviceFile = new MaintenanceDeviceFile();
- maintenanceDeviceFile.setFilePath(filePath);
- maintenanceDeviceFile.setFileName(fileName);
- maintenanceDeviceFile.setMaintenanceDeviceId(addMaintenanceDevice.getId());
- maintenanceDeviceFileService.save(maintenanceDeviceFile);
- }
- });
- });
-
-
- ExecutorService executorService = Executors.newSingleThreadExecutor();
- executorService.execute(new Runnable() {
- @Override
- public void run() {
- customPointService.percentUpdate(childPlanId.toString());
- }
- });
- return true;
- }
- @Override
- public Boolean putMaintenanceDevice(HttpServletRequest request, AddMaintenanceDevice addMaintenanceDevice) {
-
- maintenanceDeviceService.updateById(addMaintenanceDevice);
-
- Long recordId = addMaintenanceDevice.getId();
- maintenanceDeviceConService.remove(Wrappers.<MaintenanceDeviceCon>lambdaQuery().eq(MaintenanceDeviceCon::getDeviceRecordId, recordId));
-
- if (addMaintenanceDevice.getContent() != null){
- addMaintenanceDevice.getContent().forEach(content -> {
- MaintenanceDeviceCon maintenanceDeviceCon = new MaintenanceDeviceCon();
- maintenanceDeviceCon.setDeviceRecordId(recordId);
- maintenanceDeviceCon.setTypeId(content);
- maintenanceDeviceConService.save(maintenanceDeviceCon);
- });
- }
-
- List<MaintenanceDeviceFile> files = maintenanceDeviceFileService.list(Wrappers.<MaintenanceDeviceFile>lambdaQuery().eq(MaintenanceDeviceFile::getMaintenanceDeviceId, recordId));
- files.forEach(file -> {
- Boolean b = FtpUtil.deleteFile(file.getFilePath());
- });
-
- maintenanceDeviceFileService.remove(Wrappers.<MaintenanceDeviceFile>lambdaQuery().eq(MaintenanceDeviceFile::getMaintenanceDeviceId, recordId));
-
- MultiValueMap<String, MultipartFile> multiFileMap = ((MultipartHttpServletRequest) request).getMultiFileMap();
- multiFileMap.forEach((k, v) -> {
-
- v.forEach(file -> {
- String fileName = file.getOriginalFilename();
- String filePath = filePathBean.getMaintenanceDevice() + IdWorker.getIdStr() + file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
- boolean b = FtpUtil.uploadFile2Ftp(file, filePath);
- if (b) {
- MaintenanceDeviceFile maintenanceDeviceFile = new MaintenanceDeviceFile();
- maintenanceDeviceFile.setFilePath(filePath);
- maintenanceDeviceFile.setFileName(fileName);
- maintenanceDeviceFile.setMaintenanceDeviceId(addMaintenanceDevice.getId());
- maintenanceDeviceFileService.save(maintenanceDeviceFile);
- }
- });
- });
- return true;
- }
- private int getDifferentYear(Date before) {
- Calendar calendar1 = Calendar.getInstance();
- calendar1.setTime(before);
- Calendar calendar2 = Calendar.getInstance();
- return calendar2.get(Calendar.YEAR) - calendar1.get(Calendar.YEAR);
- }
- private int getDifferentMonth(Date before) {
- Calendar calendar1 = Calendar.getInstance();
- calendar1.setTime(before);
- Calendar calendar2 = Calendar.getInstance();
- return calendar2.get(Calendar.MONTH) - calendar1.get(Calendar.MONTH);
- }
- }
|