package com.zksy.controller.property;

import cn.hutool.core.date.DateTime;
import com.zksy.property.domain.AAssetManagement;
import com.zksy.property.domain.AInnovation;
import com.zksy.property.service.AAssetManagementService;
import com.zksy.property.service.AInnovationService;
import com.zksy.utils.AjaxResult;
import com.zksy.utils.ExcelExportUtil;
import com.zksy.utils.ExcelImportUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Arrays;

import static com.zksy.utils.util.generateAssetNumber;

/**
 * @author Administrator
 * @version 1.0
 * @project enterprise-assets-service
 * @description 资产信息管理控制层
 * @date 2025/6/24 14:33:13
 */
@RestController
@RequestMapping("/aassetManagement")
@Api(tags = "资产信息管理信息",description = "资产信息管理信息desc")
public class AAssetManagementController {
    @Autowired
    private AAssetManagementService service;
    @GetMapping("/findByPage")
    @ApiOperation(value = "资产信息管理信息查询分页")
    public AjaxResult findByPage(long pageNum, long pageSize, String assetCode,String assetName,String assetType){
        return AjaxResult.success(service.findByPage(pageNum, pageSize, assetCode,assetName,assetType));
    }
    @GetMapping("/getAAssetManagementList")
    @ApiOperation(value = "资产信息管理信息查询")
    public AjaxResult getAAssetManagementList(String assetCode,String assetName,String assetType){
        return AjaxResult.success(service.getAAssetManagementList(assetCode,assetName,assetType));
    }
    @GetMapping("/getById/{id}")
    @ApiOperation(value = "根据Id查询资产信息管理信息")
    public AjaxResult getById(@PathVariable String id){
        return AjaxResult.success(service.getById(id));
    }
    @PostMapping("/save")
    @ApiOperation(value = "资产信息管理信息保存")
    public AjaxResult save(@RequestBody AAssetManagement aassetManagement) {
        if("公租房".equals(aassetManagement.getAssetType())){
            aassetManagement.setAssetCode("GZF"+ generateAssetNumber());
        }else if("厂房".equals(aassetManagement.getAssetType())){
            aassetManagement.setAssetCode("CF"+ generateAssetNumber());
        }else {
            aassetManagement.setAssetCode("QT"+ generateAssetNumber());
        }
        return service.save(aassetManagement) ? AjaxResult.success(aassetManagement) : AjaxResult.error("保存失败");
    }
    @PostMapping("/update")
    @ApiOperation(value = "资产信息管理信息修改")
    public AjaxResult update(@RequestBody AAssetManagement aassetManagement) {
        aassetManagement.setUpdateTime(LocalDateTime.now());
        return service.updateById(aassetManagement) ? AjaxResult.success(aassetManagement) : AjaxResult.error("修改失败");
    }
    @PostMapping("/deleteBatch")
    @ApiOperation(value = "资产信息管理信息删除")
    public AjaxResult delete(@RequestBody String[] ids) {
        return service.removeBatchByIds(Arrays.asList(ids)) ? AjaxResult.success("删除成功") : AjaxResult.error("删除失败");
    }
    @PostMapping("/importData")
    @ApiOperation(value = "导入数据")
    public AjaxResult importData(MultipartFile file) {
        return AjaxResult.success(service.saveOrUpdateBatch(ExcelImportUtil.importExcel(file, AAssetManagement.class)));
    }
    @GetMapping("/exportData")
    @ApiOperation(value = "导出数据")
    public void exportData(HttpServletResponse response,String assetCode,String assetName,String assetType) {
        ExcelExportUtil.exportExcel(response,service.getAAssetManagementList(assetCode,assetName,assetType), AAssetManagement.class, "资产信息管理信息","资产信息管理信息");
    }

}
