无关风月
7 天以前 884dd94c6b0bfbc48c12f280a65204aa65885d84
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/AssetHouseInspectionItemController.java
@@ -1,16 +1,25 @@
package com.ruoyi.web.controller.api;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.entity.TDept;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.WebUtils;
import com.ruoyi.framework.web.service.TokenService;
import com.ruoyi.system.dto.AddAssetHouseInspection;
import com.ruoyi.system.dto.AddAssetRepairRequestDTO;
import com.ruoyi.system.export.AssetHouseInspectionImport;
import com.ruoyi.system.model.*;
import com.ruoyi.system.query.AssetHouseInspectionRecordListQuery;
import com.ruoyi.system.query.AssetRepairRequestListQuery;
@@ -20,15 +29,29 @@
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import io.swagger.models.auth.In;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.Workbook;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
@@ -42,6 +65,7 @@
@RestController
@RequestMapping("/asset-house-inspection-item")
@Api(tags = {"房屋巡检"})
@Slf4j
public class AssetHouseInspectionItemController {
    @Autowired
    private TokenService tokenService;
@@ -52,13 +76,17 @@
    @Autowired
    private AssetMainService assetMainService;
    @Autowired
    private AssetTypeService assetTypeService;
    @Autowired
    private AssetHouseInspectionItemService assetHouseInspectionItemService;
    @Autowired
    private AssetHouseInspectionDetailService assetHouseInspectionDetailService;
    @Autowired
    private AssetHouseInspectionRecordService assetHouseInspectionRecordService;
    @Autowired
    private AssetPropertyExtService assetPropertyExtService;
    @ApiOperation("房屋巡检不分页列表")
    @ApiOperation("房屋巡检分页列表")
    @PostMapping("/listAll")
    public R<PageInfo<AssetHouseInspectionVO>> listAll(@RequestBody AssetHouseInspectionRecordListQuery query) {
        String deptId = tokenService.getLoginUser().getDeptId();
@@ -86,7 +114,30 @@
        PageInfo<AssetHouseInspectionVO> res = assetHouseInspectionRecordService.pageList(query);
        return R.ok(res);
    }
    @ApiOperation(value = "查询资产列表")
    @PostMapping(value = "/listAssetMain")
    public R<List<AssetMain>> listAssetMain() {
        String deptId = tokenService.getLoginUser().getDeptId();
        TDept dept = deptService.getById(tokenService.getLoginUser().getDeptId());
        List<Integer> deptIds = deptService.getAllSubDeptIds(deptId);
        AssetType assetType = assetTypeService.lambdaQuery().like(AssetType::getTypeName, "不动").
                last("limit 1").one();
        if (dept.getDeptName().contains("资产管理")){
            List<AssetMain> list = assetMainService.lambdaQuery()
                    .eq(AssetMain::getAssetTypeId, assetType.getId())
                    .list();
            return R.ok(list);
        }else{
            if (deptIds.isEmpty()){
                return R.ok(new ArrayList<>());
            }else{
                List<AssetMain> list = assetMainService.lambdaQuery()
                        .eq(AssetMain::getAssetTypeId, assetType.getId())
                        .in(AssetMain::getOwnershipDeptId, deptIds).list();
                return R.ok(list);
            }
        }
    }
    @ApiOperation(value = "巡检子项树状结构")
    @PostMapping(value = "/listItem")
    public R<List<AssetHouseInspectionItem>> listItem() {
@@ -128,13 +179,22 @@
    @PostMapping(value = "/add")
    @Transactional
    public R add(@RequestBody AddAssetHouseInspection dto) {
        AssetMain assetMain = assetMainService.getById(dto.getAssetMainId());
        AssetPropertyExt assetPropertyExt = assetPropertyExtService.lambdaQuery().eq(AssetPropertyExt::getAssetMainId, assetMain.getId())
                .last("limit 1").one();
        dto.setAssetCode(assetMain.getAssetCode());
        dto.setAssetName(assetMain.getAssetName());
        dto.setRoomNumber(assetPropertyExt.getRoomNumber());
        dto.setInspectionDate(LocalDate.now());
        int userId = tokenService.getLoginUser().getUserId().intValue();
        dto.setInspectionId(userId);
        assetHouseInspectionRecordService.save(dto);
        StringBuilder houseCloseStatus = new StringBuilder();
        StringBuilder waterElectronicGasCloseStatus = new StringBuilder();
        StringBuilder innerStatus = new StringBuilder();
        for (AssetHouseInspectionDetail assetHouseInspectionDetail : dto.getList()) {
            assetHouseInspectionDetail.setInspectionRecordId(dto.getId());
            if (assetHouseInspectionDetail.getInspectionResult()) {
            if (!assetHouseInspectionDetail.getInspectionResult()) {
                if (assetHouseInspectionDetail.getSubItemName().contains("门窗")) {
                    houseCloseStatus.append(assetHouseInspectionDetail.getRemark());
                } else if (assetHouseInspectionDetail.getSubItemName().contains("电表")) {
@@ -154,32 +214,276 @@
                }
            }
        }
        if (StringUtils.hasLength(waterElectronicGasCloseStatus)){
        if (StringUtils.hasLength(waterElectronicGasCloseStatus)) {
            waterElectronicGasCloseStatus.deleteCharAt(waterElectronicGasCloseStatus.length() - 1);
        }
        if (StringUtils.hasLength(innerStatus)){
        if (StringUtils.hasLength(innerStatus)) {
            innerStatus.deleteCharAt(innerStatus.length() - 1);
        }
        if (StringUtils.hasLength(houseCloseStatus)){
        if (StringUtils.hasLength(houseCloseStatus)) {
            dto.setHouseCloseStatus(houseCloseStatus.toString());
        }else{
            dto.setInnerStatus("正常");
        } else {
            dto.setHouseCloseStatus("正常");
        }
        if (StringUtils.hasLength(waterElectronicGasCloseStatus)){
        if (StringUtils.hasLength(waterElectronicGasCloseStatus)) {
            dto.setWaterElectronicGasCloseStatus(waterElectronicGasCloseStatus.toString());
        }else{
            dto.setInnerStatus("正常");
        } else {
            dto.setWaterElectronicGasCloseStatus("正常");
        }
        if (StringUtils.hasLength(innerStatus)){
        if (StringUtils.hasLength(innerStatus)) {
            dto.setInnerStatus(innerStatus.toString());
        }else{
        } else {
            dto.setInnerStatus("正常");
        }
        assetHouseInspectionRecordService.updateById(dto);
        assetHouseInspectionDetailService.saveBatch(dto.getList());
        return R.ok();
    }
    @ApiOperation(value = "房屋巡检导入模板下载")
    @GetMapping("/import-template")
    public void importTemplate() {
        List<AssetHouseInspectionImport> assetHouseInspectionImports = new ArrayList<>();
        AssetHouseInspectionImport temp = new AssetHouseInspectionImport();
        assetHouseInspectionImports.add(temp);
        Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), AssetHouseInspectionImport.class, assetHouseInspectionImports);
        HttpServletResponse response = WebUtils.response();
        ServletOutputStream outputStream = null;
        try {
            String fileName = URLEncoder.encode("房屋巡检导入模板.xls", "utf-8");
            response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
            response.setHeader("content-Type", "application/vnd.ms-excel");
            response.setHeader("Pragma", "no-cache");
            response.setHeader("Cache-Control", "no-cache");
            outputStream = response.getOutputStream();
            workbook.write(outputStream);
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("房屋巡检导入模板下载失败!");
        } finally {
            try {
                outputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    @Log(title = "房屋巡检导入", businessType = BusinessType.INSERT)
    @ApiOperation(value = "房屋巡检导入")
    @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
    @PostMapping("/import")
    public R<String> importLocation(@RequestPart("file") MultipartFile file) {
        Map<String, AssetMain> assetMainMap = assetMainService.list().stream().collect(Collectors.toMap(AssetMain::getAssetCode, assetMain -> assetMain));
        Map<String, SysUser> sysUserMap = sysUserService.selectAllList().stream().collect(Collectors.toMap(SysUser::getNickName, sysUser -> sysUser));
        Map<Integer, AssetPropertyExt> assetPropertyExtMap = assetPropertyExtService.list().stream().collect(Collectors.toMap(AssetPropertyExt::getAssetMainId, assetPropertyExt -> assetPropertyExt));
        List<AssetHouseInspectionItem> allItems = assetHouseInspectionItemService.list(
                new LambdaQueryWrapper<AssetHouseInspectionItem>()
                        .eq(AssetHouseInspectionItem::getDisabled, 0)
        );
        List<AssetHouseInspectionDetail> assetHouseInspectionDetails = new ArrayList<>();
        ImportParams params = new ImportParams();
        params.setHeadRows(1); //表头行数
        InputStream inputStream = null;
        List<AssetHouseInspectionImport> assetHouseInspectionImports;
        try {
            inputStream = file.getInputStream();
            assetHouseInspectionImports = ExcelImportUtil.importExcel(inputStream,
                    AssetHouseInspectionImport.class, params);
        } catch (Exception e) {
            e.printStackTrace();
            log.error("房屋巡检导入失败:{}", e.getMessage());
            throw new ServiceException("房屋巡检导入失败!");
        } finally {
            try {
                inputStream.close();
            } catch (IOException e) {
                throw new ServiceException(e.getMessage());
            }
        }
        if (CollectionUtils.isEmpty(assetHouseInspectionImports)) {
            throw new ServiceException("房屋巡检数据为空!");
        }
        JSONObject result = new JSONObject();
        for (AssetHouseInspectionImport assetHouseInspectionImport : assetHouseInspectionImports) {
            AssetHouseInspectionRecord assetHouseInspectionRecord = new AssetHouseInspectionRecord();
            AssetMain assetMain = assetMainMap.get(assetHouseInspectionImport.getAssetCode());
            if (assetMain==null){
                result.append("根据资产编码:[", assetHouseInspectionImport.getAssetCode()+"]未查询到资产");
                continue;
            }
            assetHouseInspectionRecord.setAssetMainId(assetMain.getId());
            SysUser sysUser = sysUserMap.get(assetHouseInspectionImport.getNickName());
            if (sysUser==null){
                result.append("根据巡检人名称:[", assetHouseInspectionImport.getNickName()+"]未查询到巡检人");
                continue;
            }
            assetHouseInspectionRecord.setInspectionId(sysUser.getUserId().intValue());
            assetHouseInspectionRecord.setAssetCode(assetMain.getAssetCode());
            assetHouseInspectionRecord.setAssetName(assetMain.getAssetName());
            AssetPropertyExt assetPropertyExt = assetPropertyExtMap.get(assetMain.getId());
            if (assetPropertyExt!=null){
                assetHouseInspectionRecord.setRoomNumber(assetPropertyExt.getRoomNumber());
            }
            if (StringUtils.hasLength(assetHouseInspectionImport.getInspectionDate())){
                LocalDate parse = LocalDate.parse(assetHouseInspectionImport.getInspectionDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd"));
                assetHouseInspectionRecord.setInspectionDate(parse);
            }else{
                result.append("未填写巡检日期:[", "未填写巡检日期"+"]");
                continue;
            }
            assetHouseInspectionRecord.setHouseCloseStatus(assetHouseInspectionImport.getHouseCloseStatus());
            AssetHouseInspectionDetail assetHouseInspectionDetail = new AssetHouseInspectionDetail();
            assetHouseInspectionDetail.setInspectionItemId(1);
            assetHouseInspectionDetail.setItemName("房屋关闭情况");
            assetHouseInspectionDetail.setSubItemId(2);
            assetHouseInspectionDetail.setSubItemName("门窗关闭情况");
            assetHouseInspectionDetail.setRemark(assetHouseInspectionImport.getHouseCloseStatus());
            if (assetHouseInspectionImport.getHouseCloseStatus().equals("正常")){
                assetHouseInspectionDetail.setInspectionResult(true);
            }else{
                assetHouseInspectionDetail.setInspectionResult(false);
            }
            assetHouseInspectionDetails.add(assetHouseInspectionDetail);
            String waterStatus1 = assetHouseInspectionImport.getWaterStatus1();
            String waterStatus2 = assetHouseInspectionImport.getWaterStatus2();
            String waterStatus3 = assetHouseInspectionImport.getWaterStatus3();
            assetHouseInspectionRecord.setWaterElectronicGasCloseStatus("正常");
            AssetHouseInspectionDetail assetHouseInspectionDetailWatter1 = new AssetHouseInspectionDetail();
            assetHouseInspectionDetailWatter1.setInspectionItemId(3);
            assetHouseInspectionDetailWatter1.setItemName("水电气表关闭情况");
            assetHouseInspectionDetailWatter1.setSubItemId(4);
            assetHouseInspectionDetailWatter1.setSubItemName("水表关闭情况");
            assetHouseInspectionDetailWatter1.setRemark(assetHouseInspectionImport.getWaterStatus1());
            assetHouseInspectionDetails.add(assetHouseInspectionDetailWatter1);
            AssetHouseInspectionDetail assetHouseInspectionDetailWatter2 = new AssetHouseInspectionDetail();
            assetHouseInspectionDetailWatter2.setInspectionItemId(3);
            assetHouseInspectionDetailWatter2.setItemName("水电气表关闭情况");
            assetHouseInspectionDetailWatter2.setSubItemId(5);
            assetHouseInspectionDetailWatter2.setSubItemName("气表关闭情况");
            assetHouseInspectionDetailWatter2.setRemark(assetHouseInspectionImport.getWaterStatus2());
            assetHouseInspectionDetails.add(assetHouseInspectionDetailWatter2);
            AssetHouseInspectionDetail assetHouseInspectionDetailWatter3 = new AssetHouseInspectionDetail();
            assetHouseInspectionDetailWatter3.setInspectionItemId(3);
            assetHouseInspectionDetailWatter3.setItemName("水电气表关闭情况");
            assetHouseInspectionDetailWatter3.setSubItemId(6);
            assetHouseInspectionDetailWatter3.setSubItemName("电表关闭情况");
            assetHouseInspectionDetailWatter3.setRemark(assetHouseInspectionImport.getWaterStatus3());
            assetHouseInspectionDetails.add(assetHouseInspectionDetailWatter3);
            if (waterStatus1.equals("正常")&&waterStatus2.equals("正常")&&waterStatus3.equals("正常")){
                assetHouseInspectionDetailWatter2.setInspectionResult(true);
                assetHouseInspectionDetailWatter3.setInspectionResult(true);
            }else{
                    StringBuilder stringBuilder = new StringBuilder();
                    if (!waterStatus1.equals("正常")){
                        stringBuilder.append(waterStatus1).append("|");
                        assetHouseInspectionDetailWatter1.setInspectionResult(false);
                    }else{
                        assetHouseInspectionDetailWatter1.setInspectionResult(true);
                    }
                    if (!waterStatus2.equals("正常")){
                        stringBuilder.append(waterStatus2).append("|");
                        assetHouseInspectionDetailWatter2.setInspectionResult(false);
                    }else{
                        assetHouseInspectionDetailWatter2.setInspectionResult(true);
                    }
                    if (!waterStatus3.equals("正常")){
                        stringBuilder.append(waterStatus3).append("|");
                        assetHouseInspectionDetailWatter3.setInspectionResult(false);
                    }else{
                        assetHouseInspectionDetailWatter3.setInspectionResult(true);
                    }
                    if (stringBuilder.length()>0){
                        stringBuilder.deleteCharAt(stringBuilder.length()-1);
                    }
                    assetHouseInspectionRecord.setInnerStatus(stringBuilder.toString());
            }
            String innerStatus1 = assetHouseInspectionImport.getInnerStatus1();
            String innerStatus2 = assetHouseInspectionImport.getInnerStatus2();
            String innerStatus3 = assetHouseInspectionImport.getInnerStatus3();
            String innerStatus4 = assetHouseInspectionImport.getInnerStatus4();
            AssetHouseInspectionDetail assetHouseInspectionDetailInner1 = new AssetHouseInspectionDetail();
            assetHouseInspectionDetailInner1.setInspectionItemId(7);
            assetHouseInspectionDetailInner1.setItemName("房屋内部情况");
            assetHouseInspectionDetailInner1.setSubItemId(8);
            assetHouseInspectionDetailInner1.setSubItemName("墙壁漏水情况");
            assetHouseInspectionDetailInner1.setRemark(assetHouseInspectionImport.getWaterStatus1());
            assetHouseInspectionDetails.add(assetHouseInspectionDetailInner1);
            AssetHouseInspectionDetail assetHouseInspectionDetailInner2 = new AssetHouseInspectionDetail();
            assetHouseInspectionDetailInner2.setInspectionItemId(7);
            assetHouseInspectionDetailInner2.setItemName("房屋内部情况");
            assetHouseInspectionDetailInner2.setSubItemId(9);
            assetHouseInspectionDetailInner2.setSubItemName("设备损坏情况");
            assetHouseInspectionDetailInner2.setRemark(assetHouseInspectionImport.getWaterStatus2());
            assetHouseInspectionDetails.add(assetHouseInspectionDetailInner2);
            AssetHouseInspectionDetail assetHouseInspectionDetailInner3 = new AssetHouseInspectionDetail();
            assetHouseInspectionDetailInner3.setInspectionItemId(7);
            assetHouseInspectionDetailInner3.setItemName("房屋内部情况");
            assetHouseInspectionDetailInner3.setSubItemId(10);
            assetHouseInspectionDetailInner3.setSubItemName("墙壁掉灰情况");
            assetHouseInspectionDetailInner3.setRemark(assetHouseInspectionImport.getWaterStatus3());
            assetHouseInspectionDetails.add(assetHouseInspectionDetailInner3);
            AssetHouseInspectionDetail assetHouseInspectionDetailInner4 = new AssetHouseInspectionDetail();
            assetHouseInspectionDetailInner4.setInspectionItemId(7);
            assetHouseInspectionDetailInner4.setItemName("房屋内部情况");
            assetHouseInspectionDetailInner4.setSubItemId(11);
            assetHouseInspectionDetailInner4.setSubItemName("地瓷砖开裂情况");
            assetHouseInspectionDetailInner4.setRemark(assetHouseInspectionImport.getWaterStatus3());
            assetHouseInspectionDetails.add(assetHouseInspectionDetailInner4);
            if (innerStatus1.equals("正常")&&innerStatus2.equals("正常")&&innerStatus3.equals("正常")&&innerStatus4.equals("正常")){
                assetHouseInspectionRecord.setInnerStatus("正常");
            }else{
                StringBuilder stringBuilder = new StringBuilder();
                if (!innerStatus1.equals("正常")){
                    stringBuilder.append(innerStatus1).append("|");
                    assetHouseInspectionDetailInner1.setInspectionResult(false);
                }else{
                    assetHouseInspectionDetailInner1.setInspectionResult(true);
                }
                if (!innerStatus2.equals("正常")){
                    stringBuilder.append(innerStatus2).append("|");
                    assetHouseInspectionDetailInner1.setInspectionResult(false);
                }else{
                    assetHouseInspectionDetailInner1.setInspectionResult(true);
                }
                if (!innerStatus3.equals("正常")){
                    stringBuilder.append(innerStatus3).append("|");
                    assetHouseInspectionDetailInner1.setInspectionResult(false);
                }else{
                    assetHouseInspectionDetailInner1.setInspectionResult(true);
                }
                if (!innerStatus4.equals("正常")){
                    stringBuilder.append(innerStatus4).append("|");
                    assetHouseInspectionDetailInner1.setInspectionResult(false);
                }else{
                    assetHouseInspectionDetailInner1.setInspectionResult(true);
                }
                if (stringBuilder.length()>0){
                    stringBuilder.deleteCharAt(stringBuilder.length()-1);
                }
                assetHouseInspectionRecord.setInnerStatus(stringBuilder.toString());
            }
            assetHouseInspectionRecord.setRemarks(assetHouseInspectionImport.getRemark());
            assetHouseInspectionRecordService.save(assetHouseInspectionRecord);
            assetHouseInspectionDetails.add(assetHouseInspectionDetail);
            for (AssetHouseInspectionDetail houseInspectionDetail : assetHouseInspectionDetails) {
                houseInspectionDetail.setInspectionRecordId(assetHouseInspectionRecord.getId());
            }
            assetHouseInspectionDetailService.saveBatch(assetHouseInspectionDetails);
        }
        return R.ok();
    }
    @Log(title = "房屋巡检-删除", businessType = BusinessType.DELETE)
    @ApiOperation(value = "房屋巡检-删除")
    @DeleteMapping(value = "/delete")