package com.yeejoin.amos.boot.module.jg.biz.service;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.module.ymt.api.entity.PageParam;
import com.yeejoin.amos.feign.systemctl.model.DictionarieValueModel;
import org.springframework.web.multipart.MultipartFile;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 注册登记信息表接口类
 *
 * @author system_generator
 * @date 2023-08-17
 */
public interface IIdxBizJgRegisterInfoService {

    ResponseModel equipmentRegisterSubmit(Map<String, Object> paramMap);

    boolean batchDeleteByRecord(Map<String,Object> map);

    Map<String, Map<String, Object>> getEquipmentRegisterByRecord(String record, String isCopy);

    Page<JSONObject> queryForEquipmentRegisterPage(JSONObject jsonObject);

    Page<JSONObject> queryForEquipmentRegisterPageHistory(JSONObject jsonObject);

    Map<String, Object> getDetailByRecord(String record);

    Map<String, Object> getDetailFieldCamelCaseByRecord(String record);

    List<DictionarieValueModel> equCategoryListByCompanyType(ReginParams selectedOrgInfo, String equList,String businessScenarios,String dataSource, String type);

    Page<JSONObject> queryForUnitEquipmentPage(JSONObject jsonObject);

    Page<JSONObject> queryEquipCanUsedByVesselPage(JSONObject jsonObject);

    Page<JSONObject> queryEquipCanUsedByVesselPageHistory(JSONObject jsonObject);

    Object importPressureVesselData(Map<String, Object> paramMap, MultipartFile multipartFile);

    Object importPressureData(MultipartFile multipartFile) throws Exception;

    Object savePressureVesselData(Map<String, Object> paramMap);

    Object getProjectContraption(String uscUnitCreditCode, String useUnitCreditCode);

    Boolean esSynchronousProjectContraption();

    /**
     * 查询单位下工程装置信息
     *
     * @param useUnitCreditCode 单位统一信用代码
     * @return 查询单位下工程装置信息
     */
    List<Map<String, Object>> getProjectContraptionList(String useUnitCreditCode);

    Page<Map<String, Object>> getElevatorInfo(String equCode, Date startTime, Date endTime, PageParam pageParam);

    List<Map<String, Object>> getCylinderStationInfo();

    List<Map<String, Object>> getVehicleCylinderInfo(String useCode);

    IPage<Map<String, Object>> getCylinderInfo(String equCode, Date startTime, Date endTime, PageParam pageParam);

    void initUserExpirationReminderOnce();

    void inspectionExpirationReminderOnce();

    void initEnterpriseLicenseExpirationOnce();
}
